@bamboocss/generator 1.30.0 → 1.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -152,7 +152,6 @@ function generateCssFn(ctx) {
152
152
  ${ctx.file.import("cloneStyles, createCssUncached, hypenateProperty, leafClass, memo, viewTransitionClassName, withoutSpace", "../helpers")}
153
153
  ${ctx.file.import("sortConditions, finalizeConditions", "./conditions")}
154
154
  ${ctx.file.import("classNameByProp", "./utilities")}
155
- ${ctx.file.reExport("mergeCss, assignCss, mergeCssUncached", "./merge-css")}
156
155
  ${ctx.file.import("mergeCss, mergeCssUncached, resolveShorthand", "./merge-css")}
157
156
 
158
157
  const context = {
@@ -228,9 +227,12 @@ function generateCssFn(ctx) {
228
227
  * Separating them costs about 402 B gzipped in a bundle that still calls `css()` at runtime,
229
228
  * because the two halves share every property name and each now spells the list. That is the
230
229
  * trade, and it is the right way round: a `css()` call surviving to runtime already costs
231
- * 1,684 B for the engine behind it, and `strict` exists to drive that count to zero.
230
+ * 1,684 B for the engine behind it, and `failOnUnfolded` exists to drive that count to zero.
232
231
  *
233
- * `css.mjs` re-exports the merge, so the authoring API is unchanged.
232
+ * Nothing here reaches the `styled-system/css` barrel. `css.raw(...)` is the authoring API
233
+ * for merging style objects, and it is `mergeCss` plus the defensive clone that makes a
234
+ * shared, memoized result safe to hand to a caller — so exporting the uncloned function
235
+ * beside it offered a footgun under a second name. `cva` imports it from here directly.
234
236
  */
235
237
  function generateMergeCssFn(ctx) {
236
238
  const { conditions, utility } = ctx;
@@ -244,8 +246,6 @@ function generateMergeCssFn(ctx) {
244
246
 
245
247
  /** Deep-merge style objects, resolving shorthands before merging. */
246
248
  export declare function mergeCss(...styles: SystemStyleObject[]): SystemStyleObject;
247
- /** Shallow-assign style objects, resolving shorthands first. */
248
- export declare function assignCss(...styles: SystemStyleObject[]): SystemStyleObject;
249
249
  /** \`mergeCss\` without the memo, for callers that already cache. */
250
250
  export declare function mergeCssUncached(...styles: SystemStyleObject[]): SystemStyleObject;
251
251
  /** Whether any utility declares a shorthand. */
@@ -280,7 +280,7 @@ function generateMergeCssFn(ctx) {
280
280
  utility: { hasShorthand, resolveShorthand },
281
281
  }
282
282
 
283
- export const { mergeCss, assignCss, mergeCssUncached } = createMergeCss(mergeContext)
283
+ export const { mergeCss, mergeCssUncached } = createMergeCss(mergeContext)
284
284
  `
285
285
  };
286
286
  }
@@ -611,7 +611,7 @@ function generateCx(ctx) {
611
611
  }
612
612
  //#endregion
613
613
  //#region src/artifacts/generated/helpers.mjs.json
614
- var content$8 = "//#region src/assert.ts\nfunction isObject(value) {\n return typeof value === \"object\" && value != null && !Array.isArray(value);\n}\nconst isObjectOrArray = (obj) => typeof obj === \"object\" && obj !== null;\n//#endregion\n//#region src/condition.ts\nconst isBaseCondition = (v) => v === \"base\";\nfunction filterBaseConditions(c) {\n return c.slice().filter((v) => !isBaseCondition(v));\n}\n//#endregion\n//#region src/hash.ts\nfunction toChar(code) {\n return String.fromCharCode(code + (code > 25 ? 39 : 97));\n}\nfunction toName(code) {\n let name = \"\";\n let x;\n for (x = Math.abs(code); x > 52; x = x / 52 | 0) name = toChar(x % 52) + name;\n return toChar(x % 52) + name;\n}\nfunction toPhash(h, x) {\n let i = x.length;\n while (i) h = h * 33 ^ x.charCodeAt(--i);\n return h;\n}\nfunction toHash(value) {\n return toName(toPhash(5381, value) >>> 0);\n}\n//#endregion\n//#region src/important.ts\nconst importantRegex = /\\s*!(important)?/i;\nconst whitespaceRegex = /\\s/;\n/**\n* Collapse every run of whitespace to a single space, which is what the class name is\n* built from. Exported because `leafClass` has to reproduce this exact pipeline, and a\n* second copy of it would be free to drift from the one `createCss` runs.\n*/\nfunction sanitize(value) {\n if (typeof value !== \"string\") return value;\n const collapsed = whitespaceRegex.test(value) ? value.replaceAll(/[\\n\\s]+/g, \" \") : value;\n return collapsed.includes(\"\\0\") ? collapsed.replaceAll(\"\\0\", \"\") : collapsed;\n}\nfunction isImportant(value) {\n if (typeof value !== \"string\") return false;\n return value.includes(\"!\") && importantRegex.test(value);\n}\nfunction withoutImportant(value) {\n if (typeof value !== \"string\") return value;\n if (!value.includes(\"!\")) return value.trim();\n return value.replace(importantRegex, \"\").trim();\n}\nfunction withoutSpace(str) {\n if (typeof str !== \"string\") return str;\n return str.includes(\" \") ? str.replaceAll(\" \", \"_\") : str;\n}\n//#endregion\n//#region src/memo.ts\n/**\n* Bounded argument memo used by the generated runtime (`css`, patterns, `cva`, recipes).\n*\n* Two regimes, picked per call:\n*\n* - Arguments that are flat (objects of primitives) take a cheap structural hash\n* and are confirmed with an exact comparison, so a hash collision can never\n* serve the wrong result. This is the shape `css({ ... })` has.\n* - Anything nested falls back to `JSON.stringify`, which V8 does faster than a\n* JS walk.\n*\n* The second point is the counter-intuitive one, and it has been measured rather\n* than assumed. Extending the structural hash to recurse — so nested styles could\n* take the fast path too — is *slower*, because it trades one native serialization\n* for two JS walks (hash, then the deep equality that confirms it). Over 10k\n* iterations per shape:\n*\n* shape stringify recursive hash + deep equal\n* flat 1.06ms 2.09ms\n* _hover 1.00ms 2.16ms\n* responsive 1.23ms 2.15ms\n* realistic 2.32ms 5.84ms\n* nested 3 deep 1.22ms 2.35ms\n*\n* So a nested `css()` call costing several times a flat one is not a defect here.\n* It is the floor for a value-keyed memo in JS, and the way to avoid it is to not\n* make the call — see the build-time fold in `@bamboocss/vite`.\n*\n* Both regimes key on *values*, never on object identity: mutating a style object\n* between calls changes its hash, so the next call misses and recomputes rather\n* than serving a stale class. Keying nested arguments on the identity of the inner\n* objects would skip serialization entirely, but it cannot detect a mutation, and\n* \"same object, different contents\" is exactly what a style object built per render\n* looks like.\n*\n* Both caches are bounded. An unbounded memo is a leak in any long-lived process\n* (SSR), where the set of distinct style objects grows without limit.\n*/\n/**\n* Distinct hashes held per memoized function before the cache rotates.\n*\n* This bounds *buckets*, not entries: a bucket keeps up to `MAX_BUCKET` colliding\n* argument lists, so the ceiling is `MAX_ENTRIES * MAX_BUCKET` live entries, and\n* twice that across both generations, since the previous one is retained until the\n* next rotation. Collisions are rare in practice, so the realistic figure is close\n* to `MAX_ENTRIES` — but the worst case is what matters when sizing a long-lived\n* process, so state it plainly.\n*\n* Rotation beats evicting the oldest key: single-key eviction is worst-case for a\n* working set that cycles, because it drops exactly the entry about to be needed.\n* Measured on a cycling set of 20k styles, one-at-a-time eviction cost ~719ns/op\n* against ~189ns unbounded, while rotation holds ~274ns. On realistic skewed\n* access rotation is at or below the unbounded cost.\n*/\nconst MAX_ENTRIES = 1e3;\n/** Entries kept per hash bucket, to bound the cost of a collision scan. */\nconst MAX_BUCKET = 8;\n/**\n* DJB2 over the arguments' own keys and primitive values.\n* Returns `null` for anything nested, which routes the call to the string key.\n*/\nconst flatHashOrNull = (args) => {\n let h = 5381;\n for (let a = 0; a < args.length; a++) {\n const obj = args[a];\n if (obj === null || typeof obj !== \"object\") {\n const t = typeof obj;\n if (t === \"string\") for (let i = 0; i < obj.length; i++) h = h * 33 ^ obj.charCodeAt(i);\n else if (t === \"number\") h = h * 33 ^ (obj | 0);\n else if (t === \"boolean\") h = h * 33 ^ (obj ? 991 : 997);\n else h = h * 33 ^ 3;\n continue;\n }\n if (Array.isArray(obj)) return null;\n const proto = Object.getPrototypeOf(obj);\n if (proto !== Object.prototype && proto !== null) return null;\n for (const k in obj) {\n const v = obj[k];\n const tv = typeof v;\n if (v !== null && tv === \"object\") return null;\n for (let i = 0; i < k.length; i++) h = h * 33 ^ k.charCodeAt(i);\n if (tv === \"string\") for (let i = 0; i < v.length; i++) h = h * 33 ^ v.charCodeAt(i);\n else if (tv === \"number\") h = h * 33 ^ (v | 0);\n else if (tv === \"boolean\") h = h * 33 ^ (v ? 991 : 997);\n else h = h * 33 ^ 2;\n }\n }\n return h >>> 0;\n};\n/**\n* Value snapshot of the arguments, taken once at insert.\n*\n* The cache must not hold the caller's objects: a style object can capture a much\n* larger graph, and keeping it alive until the cache rotates changes GC behaviour\n* for code that never asked to be cached. Only the flat path reaches here, so a\n* shallow copy contains primitives only and retains nothing.\n*\n* Comparing against a copy also removes the last way a mutation could be missed.\n* Were the caller's own object stored, `oa === ob` would short-circuit the value\n* comparison, and a mutation that happened to preserve the hash would return the\n* stale entry. Against a copy that check can only ever be true for equal\n* primitives.\n*/\nconst snapshotArgs = (args) => {\n const values = [];\n const counts = [];\n for (let i = 0; i < args.length; i++) {\n const o = args[i];\n if (o !== null && typeof o === \"object\") {\n const copy = Array.isArray(o) ? [] : {};\n let n = 0;\n for (const k in o) {\n copy[k] = o[k];\n n++;\n }\n values.push(copy);\n counts.push(n);\n } else {\n values.push(o);\n counts.push(0);\n }\n }\n return {\n values,\n counts\n };\n};\n/**\n* Exact match, so a `flatHashOrNull` collision is resolved rather than trusted.\n* `bCounts` is the cached side's key count; comparing against it avoids the\n* `Object.keys()` allocation this would otherwise make on every cache hit.\n*/\nconst flatArgsEqual = (a, b, bCounts) => {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n const oa = a[i];\n const ob = b[i];\n if (oa === ob) continue;\n if (oa === null || ob === null || typeof oa !== \"object\" || typeof ob !== \"object\") return false;\n if (Array.isArray(oa) !== Array.isArray(ob)) return false;\n let n = 0;\n for (const k in oa) {\n if (oa[k] !== ob[k]) return false;\n n++;\n }\n if (n !== bCounts[i]) return false;\n }\n return true;\n};\nconst memo = (fn) => {\n let buckets = /* @__PURE__ */ new Map();\n let priorBuckets = /* @__PURE__ */ new Map();\n let strings = /* @__PURE__ */ new Map();\n let priorStrings = /* @__PURE__ */ new Map();\n /**\n * One scalar argument, keyed directly.\n *\n * This is the shape of the hottest callers — `isCssProperty(prop)` runs per prop\n * per render — and a plain map lookup beats hashing, bucket scanning and\n * snapshotting for it. Distinct types stay distinct keys, so `1` and `'1'` do not\n * share an entry.\n */\n let scalars = /* @__PURE__ */ new Map();\n let priorScalars = /* @__PURE__ */ new Map();\n const scan = (bucket, args) => {\n if (bucket) for (let i = 0; i < bucket.length; i++) {\n const entry = bucket[i];\n if (flatArgsEqual(args, entry.values, entry.counts)) return entry;\n }\n };\n const get = (...args) => {\n if (args.length === 1) {\n const only = args[0];\n if (only === null || typeof only !== \"object\") {\n if (scalars.has(only)) return scalars.get(only);\n if (priorScalars.has(only)) {\n const promoted = priorScalars.get(only);\n scalars.set(only, promoted);\n return promoted;\n }\n const out = fn(only);\n scalars.set(only, out);\n if (scalars.size > MAX_ENTRIES) {\n priorScalars = scalars;\n scalars = /* @__PURE__ */ new Map();\n }\n return out;\n }\n }\n const hash = flatHashOrNull(args);\n if (hash !== null) {\n let bucket = buckets.get(hash);\n const hit = scan(bucket, args);\n if (hit) return hit.out;\n const priorHit = scan(priorBuckets.get(hash), args);\n if (priorHit) {\n if (!bucket) {\n bucket = [];\n buckets.set(hash, bucket);\n }\n bucket.push(priorHit);\n if (bucket.length > MAX_BUCKET) bucket.shift();\n return priorHit.out;\n }\n const snap = snapshotArgs(args);\n const out = fn(...args);\n if (!bucket) {\n bucket = [];\n buckets.set(hash, bucket);\n }\n bucket.push({\n values: snap.values,\n counts: snap.counts,\n out\n });\n if (bucket.length > MAX_BUCKET) bucket.shift();\n if (buckets.size > MAX_ENTRIES) {\n priorBuckets = buckets;\n buckets = /* @__PURE__ */ new Map();\n }\n return out;\n }\n const key = JSON.stringify(args);\n if (strings.has(key)) return strings.get(key);\n if (priorStrings.has(key)) {\n const promoted = priorStrings.get(key);\n strings.set(key, promoted);\n return promoted;\n }\n const out = fn(...args);\n strings.set(key, out);\n if (strings.size > MAX_ENTRIES) {\n priorStrings = strings;\n strings = /* @__PURE__ */ new Map();\n }\n return out;\n };\n return get;\n};\n//#endregion\n//#region src/merge-props.ts\nconst MERGE_OMIT = new Set([\n \"__proto__\",\n \"constructor\",\n \"prototype\"\n]);\nfunction mergeProps(...sources) {\n return sources.reduce((prev, obj) => {\n if (!obj) return prev;\n Object.keys(obj).forEach((key) => {\n if (MERGE_OMIT.has(key)) return;\n const prevValue = prev[key];\n const value = obj[key];\n if (isObject(prevValue) && isObject(value)) prev[key] = mergeProps(prevValue, value);\n else prev[key] = value;\n });\n return prev;\n }, {});\n}\n//#endregion\n//#region src/walk-object.ts\nconst isNotNullish = (element) => element != null;\nfunction walkObject(target, predicate, options = {}) {\n const { stop, getKey } = options;\n function inner(value, path = []) {\n if (isObjectOrArray(value)) {\n const result = {};\n for (const [prop, child] of Object.entries(value)) {\n const key = getKey?.(prop, child) ?? prop;\n const childPath = [...path, key];\n if (stop?.(value, childPath)) return predicate(value, path);\n const next = inner(child, childPath);\n if (isNotNullish(next)) result[key] = next;\n }\n return result;\n }\n return predicate(value, path);\n }\n return inner(target);\n}\nfunction mapObject(obj, fn) {\n if (Array.isArray(obj)) return obj.map((value) => fn(value));\n if (!isObject(obj)) return fn(obj);\n return walkObject(obj, (value) => fn(value));\n}\n//#endregion\n//#region src/normalize-style-object.ts\nfunction toResponsiveObject(values, breakpoints) {\n return values.reduce((acc, current, index) => {\n const key = breakpoints[index];\n if (current != null) acc[key] = current;\n return acc;\n }, {});\n}\n/**\n* Whether walking the object would only rebuild it.\n*\n* Normalizing does three things: it renames a shorthand to its longhand, expands a responsive\n* array into a breakpoint object, and drops nullish leaves. A flat object of plain values\n* written in longhand needs none of them, and that is most of what `css()` is handed — but it\n* still paid for a full rebuild plus a path array per key.\n*\n* Every clause has to be exact, since a false positive returns an object the walk would have\n* changed. Nullish is one of them: a leaf the walk removes must not survive, or a later merge\n* would see it override the value beneath it. The array check is another, and it is on the\n* container as well as the values — `stop` is handed the container, so an array arriving at\n* the top level becomes a breakpoint object rather than being walked into.\n*\n* `for...in` reads inherited keys the walk ignores, which is safe in the only direction it can\n* be wrong — an extra key can send this to the slow path, never past it.\n*\n* It does read every value, as `compactStyles` and the argument memo already do, so an\n* accessor prop is read once more than before. Style props are values by the time they get\n* here and reading one has no effect, but it is the reason this cannot be reordered to read\n* lazily.\n*/\nfunction needsNoNormalizing(styles, resolveShorthand) {\n if (Array.isArray(styles)) return false;\n for (const key in styles) {\n const value = styles[key];\n if (value == null || typeof value === \"object\") return false;\n if (resolveShorthand !== void 0 && resolveShorthand(key) !== key) return false;\n }\n return true;\n}\n/**\n* The result may be the argument itself rather than a fresh object, so callers have to treat\n* it as read-only. Every one of them does today: merging accumulates into its own object and\n* the two `raw()` helpers clone at the boundary.\n*/\nfunction normalizeStyleObject(styles, context, shorthand = true) {\n const { utility, conditions } = context;\n const { hasShorthand, resolveShorthand } = utility;\n if (needsNoNormalizing(styles, shorthand && hasShorthand ? resolveShorthand : void 0)) return styles;\n return walkObject(styles, (value) => {\n return Array.isArray(value) ? toResponsiveObject(value, conditions.breakpoints.keys) : value;\n }, {\n stop: (value) => Array.isArray(value),\n getKey: shorthand ? (prop) => hasShorthand ? resolveShorthand(prop) : prop : void 0\n });\n}\n//#endregion\n//#region src/classname.ts\nconst fallbackCondition = {\n shift: (v) => v,\n finalize: (v) => v,\n breakpoints: { keys: [] }\n};\n/**\n* Name a style object, without caching the answer.\n*\n* For callers already sitting behind a memo keyed on the same call. `css` is the one that\n* matters:\n*\n* css = memo((...styles) => cssFn(mergeCssUncached(...styles)))\n*\n* reaches `cssFn` only when its own cache missed, and the merged object it passes is a\n* deterministic function of those same arguments — so a second cache on it cannot hit.\n* Measured over 25k calls it served zero hits across every workload, including working sets\n* larger than `MAX_ENTRIES`, where both caches rotate in lockstep rather than one rescuing\n* the other. The same applies wherever `createCss` is called *inside* the memoized function,\n* as the generated recipe runtime does: a fresh cache built per call is used once.\n*\n* Use `createCss` instead when there is no such memo above — the vite fold reaches it\n* directly, once per folded call site, and the merge is many-to-one there, so it hits.\n*/\nfunction createCssUncached(context) {\n const { utility, hash, conditions: conds = fallbackCondition } = context;\n const { prefix } = utility;\n const formatClassName = prefix ? (str) => str ? `${prefix}-${str}` : prefix : (str) => str || \"\";\n const hashFn = (conditions, className) => {\n if (hash) {\n const baseArray = [...conds.finalize(conditions), className];\n return formatClassName(utility.toHash(baseArray, toHash));\n }\n const finalized = conds.finalize(conditions);\n if (finalized.length === 0) return formatClassName(className);\n return [...finalized, formatClassName(className)].join(\":\");\n };\n /** The class for one declaration. */\n const atomicName = (prop, value, conditions) => {\n const important = isImportant(value);\n const className = hashFn(conditions, utility.transform(prop, withoutImportant(sanitize(value))).className);\n return important ? `${className}!` : className;\n };\n return ({ base, ...styles } = {}) => {\n const normalizedObject = normalizeStyleObject(Object.assign(styles, base), context);\n const classNames = /* @__PURE__ */ new Set();\n walkObject(normalizedObject, (value, paths) => {\n if (value == null) return;\n const [prop, ...allConditions] = conds.shift(paths);\n classNames.add(atomicName(prop, value, filterBaseConditions(allConditions)));\n });\n return Array.from(classNames).join(\" \");\n };\n}\n/**\n* `createCssUncached`, cached.\n*\n* For callers that reach it directly and repeatedly with no memo of their own — the vite\n* fold builds one per build and shares it across every module. There the cache earns its\n* keep twice over: call sites repeat across a codebase, and the merge feeding it is\n* many-to-one, so `css({a}, {b})` and `css({a, b})` land on the same entry. Measured 2-35%\n* hits across the projects in this repo, and dropping it cost +187% on the fold.\n*/\nfunction createCss(context) {\n return memo(createCssUncached(context));\n}\n/**\n* Whether a style object carries anything `compact` would have kept.\n*\n* The question `compactStyles` asks is only ever \"is this empty once undefined values are\n* dropped\", but it used to answer it by building the compacted object and then a key array\n* for it, then throwing both away. `Object.keys` enumerates exactly what `compact`'s\n* `Object.entries` did — own, enumerable, string-keyed — so this is the same predicate\n* without the two allocations, and it stops at the first value that settles it.\n*/\nfunction hasDefinedValue(style) {\n const keys = Object.keys(style);\n for (let i = 0; i < keys.length; i++) if (style[keys[i]] !== void 0) return true;\n return false;\n}\nfunction compactStyles(...styles) {\n return styles.flat().filter((style) => isObject(style) && hasDefinedValue(style));\n}\nfunction createMergeCss(context) {\n function resolve(styles) {\n const allStyles = compactStyles(...styles);\n if (allStyles.length === 1) return allStyles;\n return allStyles.map((style) => normalizeStyleObject(style, context));\n }\n function mergeCss(...styles) {\n return mergeProps(...resolve(styles));\n }\n function assignCss(...styles) {\n return Object.assign({}, ...resolve(styles));\n }\n return {\n mergeCss: memo(mergeCss),\n assignCss,\n mergeCssUncached: mergeCss\n };\n}\n//#endregion\n//#region src/clone-styles.ts\nconst OMIT = new Set([\n \"__proto__\",\n \"constructor\",\n \"prototype\"\n]);\n/**\n* Independent copy of a style object, nested condition blocks included.\n*\n* Merged style objects are cached, so anything handed to user code has to be\n* copied first: a caller mutating what it received would otherwise change what\n* every later caller reads back. `css.raw()` and `cva.raw()` are those boundaries.\n*\n* Kept separate from `mergeProps` deliberately. Merging is on the hot path — it\n* runs on every `css()` cache miss and on every render of a pattern component\n* under `jsxStyleProps: 'minimal'` — and copying there charges every caller for a\n* guarantee only the two `raw()` helpers need. Measured on a realistic style\n* object (5 base properties, 4 condition blocks) that was roughly twice the cost\n* of merging alone.\n*/\nfunction cloneStyles(styles) {\n if (Array.isArray(styles)) return styles.map((value) => cloneStyles(value));\n if (!isObject(styles)) return styles;\n const out = {};\n for (const key of Object.keys(styles)) {\n if (OMIT.has(key)) continue;\n out[key] = cloneStyles(styles[key]);\n }\n return out;\n}\n//#endregion\n//#region src/compact.ts\nfunction compact(value) {\n return Object.fromEntries(Object.entries(value ?? {}).filter(([_, value]) => value !== void 0));\n}\n//#endregion\n//#region src/leaf-class.ts\n/**\n* The class a single dynamic style leaf resolves to, given the prefix its property and\n* condition path produce.\n*\n* ## Why this can exist at all\n*\n* `css()` builds a class from the value alone — `utility.transform` is string\n* construction over a static map, and nothing consults which rules were actually emitted.\n* So `css({ color: tone })` already returns `c_<tone>` for a value the extractor never\n* saw, with no CSS behind it. Reproducing that string here cannot be less correct than\n* the call it replaces; it just skips the object literal, the merge and the memo.\n*\n* ## Why it is not a template literal\n*\n* Three shapes do not reduce to `prefix + value`, and all three return `undefined` so the\n* caller runs `css()` instead:\n*\n* - An array is expanded to a responsive object by `normalizeStyleObject`, so it produces\n* one class per breakpoint rather than one class.\n* - An object is a condition block, walked into for the same reason.\n* - `null` and `undefined` are skipped by the walk entirely, which is an empty string\n* rather than a class — that one is answered here, since it needs no `css()` call.\n*\n* ## Why the character scan\n*\n* The remaining work — collapsing whitespace, stripping `!important`, turning spaces into\n* underscores — is three regexes, and paying them per call makes this *slower* than a\n* memo hit. Almost no token value contains whitespace or `!`, so one scan for the\n* characters that make any of it necessary sends the common value straight to a\n* concatenation. A false positive only costs the slow path, so the scan errs wide.\n*/\nfunction leafClass(prefix, value) {\n if (value == null) return \"\";\n const type = typeof value;\n if (type === \"number\" || type === \"boolean\") return `${prefix}${value}`;\n if (type !== \"string\") return void 0;\n const str = value;\n for (let index = 0; index < str.length; index++) {\n const code = str.charCodeAt(index);\n if (code <= 33 || code === 160 || code === 5760 || code >= 8192) return slowLeaf(prefix, str);\n }\n return `${prefix}${str}`;\n}\n/** The full pipeline `createCss` runs, for a value that needs it. */\nfunction slowLeaf(prefix, value) {\n const important = isImportant(value);\n const className = `${prefix}${withoutSpace(withoutImportant(sanitize(value)))}`;\n return important ? `${className}!` : className;\n}\n//#endregion\n//#region src/hypenate-property.ts\nconst wordRegex = /([A-Z])/g;\nconst msRegex = /^ms-/;\nconst hypenateProperty = memo((property) => {\n if (property.startsWith(\"--\")) return property;\n return property.replace(wordRegex, \"-$1\").replace(msRegex, \"-ms-\").toLowerCase();\n});\n//#endregion\n//#region src/recipe-identity.ts\n/**\n* The fields that decide what CSS a recipe produces. Anything else is metadata.\n*\n* `slots` and `scopeRoots` count. They do not change a declaration, but they change the\n* *shape* of what is emitted — which slots exist, and whether a slot's variants become\n* `@scope` rules or a class of its own. Two `sva`s differing only in `scopeRoots` hashed to\n* one name, and since an inline recipe is registered once, whichever was extracted first\n* decided the emission for both; the other's runtime then asked for classes no rule\n* existed under. \"Same styles, different DOM topology\" is exactly what `scopeRoots` is for,\n* so it is the collision most likely to happen.\n*/\nconst STYLE_FIELDS = [\n \"base\",\n \"variants\",\n \"compoundVariants\",\n \"defaultVariants\",\n \"slots\",\n \"scopeRoots\"\n];\n/**\n* A serialization that depends on the config's *content* and not on how it was written.\n*\n* Object keys are sorted, so reordering two variants in the source does not rename every\n* class the recipe emits. Arrays keep their order, because `compoundVariants` is precedence\n* ordered and two orderings are two different recipes.\n*\n* A function serializes to `null` rather than to its source. `JSON.stringify` already drops\n* them, and stringifying instead would key the name on whether the bundle was minified —\n* the same build-dependent divergence that `cx` was changed to avoid. Nothing that survives\n* static extraction is a function, so there is no real config this loses information about.\n*/\n/**\n* Runs of whitespace inside a declaration value, collapsed to one space.\n*\n* The build never sees the value as written. `maybe-box-node` reads every string literal\n* through `trimWhitespace`, so `'calc(100vh - 16px)'` is `'calc(100vh - 16px)'` by the time\n* a recipe config reaches the encoder — the two produce identical CSS, and the stylesheet\n* emits one rule for both.\n*\n* The browser holds the config as authored. Without this, the two sides hashed different\n* objects and derived different names, so the element asked for a class the stylesheet did\n* not carry and rendered with *none* of the recipe's styles. Silent, and invisible to a\n* dead-rule check: the extra name leaves no unused rule behind, because the collapsed config\n* is byte-identical to one that was already emitted.\n*\n* The regex is `trimWhitespace`'s, deliberately. A second spelling of \"the same value\" is a\n* second thing to keep in agreement, which is the defect this is fixing.\n*/\nconst collapseWhitespace = (value) => value.replaceAll(/\\s+/g, \" \");\nconst stable = (value) => {\n if (typeof value === \"string\") return JSON.stringify(collapseWhitespace(value));\n if (value === null || typeof value !== \"object\") return JSON.stringify(value) ?? \"null\";\n if (Array.isArray(value)) return `[${value.map(stable).join(\",\")}]`;\n const source = value;\n return `{${Object.keys(source).sort().filter((key) => source[key] !== void 0 && source[key] !== null).map((key) => `${JSON.stringify(key)}:${stable(source[key])}`).join(\",\")}}`;\n};\n/**\n* The name an inline `cva`/`sva` emits its classes under — `button--size_sm`, where this\n* returns the `button`.\n*\n* A config recipe gets its name from the key it is declared under. An inline one has no\n* such key, and the two places that need the name never meet: the build derives it while\n* emitting the stylesheet, the runtime derives it again in the browser. So it has to come\n* from something both of them see, which leaves the config object itself.\n*\n* Deriving it from the *binding* — `const button = cva(...)` — was the obvious alternative\n* and does not work. Only the build can see that binding; handing it to the runtime means\n* rewriting the call, and then a pipeline without that transform names classes differently\n* from one with it. An optional `className` gets the same readable output with none of\n* that, because it travels inside the config to both sides.\n*\n* `className` is the field a config recipe already names itself with, and it means the same\n* thing here — the prefix every class the recipe emits is built from. An inline recipe that\n* declares one is indistinguishable in the stylesheet from a recipe declared in config.\n*/\nconst getRecipeIdentity = (config, prefix = \"cva\") => {\n const declared = config?.className;\n if (typeof declared === \"string\" && declared) return declared;\n const styles = {};\n for (const field of STYLE_FIELDS) {\n const value = config?.[field];\n if (value !== void 0) styles[field] = value;\n }\n return `${prefix}_${toHash(stable(styles))}`;\n};\n/**\n* The classes a recipe puts on an element: its own, plus one per selected variant.\n*\n* Lives here rather than in the generated `cva` because the build has to be able to check\n* it. `checkNamingAgreement` derives class names both ways and compares them, and it can\n* only do that against the code the browser actually runs — a second implementation written\n* to match would agree with itself and prove nothing.\n*\n* Compound variants are absent by design. Their rule selects on the variant classes already\n* in this list, so it applies without a class of its own.\n*/\nconst getRecipeClassNames = (name, variants, selection, separator = \"_\", format = (className) => className) => {\n let result = format(name);\n for (const variant of Object.keys(variants ?? {})) {\n const value = selection[variant];\n if (value == null) continue;\n const declared = variants?.[variant];\n if (!declared || !Object.hasOwn(declared, value) || declared[value] == null) continue;\n result += ` ${format(`${name}--${variant}${separator}${withoutSpace(value)}`)}`;\n }\n return result;\n};\n//#endregion\n//#region src/is-css-function.ts\nconst fnRegExp = new RegExp(`^(${[\n \"min\",\n \"max\",\n \"clamp\",\n \"calc\"\n].join(\"|\")})\\\\(.*\\\\)`);\nconst isCssFunction = (v) => typeof v === \"string\" && fnRegExp.test(v);\n//#endregion\n//#region src/is-css-unit.ts\nconst lengthUnitsPattern = `(?:${\"cm,mm,Q,in,pc,pt,px,em,ex,ch,rem,lh,rlh,vw,vh,vmin,vmax,vb,vi,svw,svh,lvw,lvh,dvw,dvh,cqw,cqh,cqi,cqb,cqmin,cqmax,%\".split(\",\").join(\"|\")})`;\nconst lengthRegExp = new RegExp(`^[+-]?[0-9]*.?[0-9]+(?:[eE][+-]?[0-9]+)?${lengthUnitsPattern}$`);\nconst isCssUnit = (v) => typeof v === \"string\" && lengthRegExp.test(v);\n//#endregion\n//#region src/is-css-var.ts\nconst isCssVar = (v) => typeof v === \"string\" && /^var\\(--.+\\)$/.test(v);\n//#endregion\n//#region src/pattern-fns.ts\nconst patternFns = {\n map: mapObject,\n isCssFunction,\n isCssVar,\n isCssUnit\n};\nconst getPatternStyles = (pattern, styles) => {\n if (!pattern?.defaultValues) return styles;\n const defaults = typeof pattern.defaultValues === \"function\" ? pattern.defaultValues(styles) : pattern.defaultValues;\n return Object.assign({}, defaults, compact(styles));\n};\n//#endregion\n//#region src/slot.ts\nconst getSlotRecipes = (recipe = {}) => {\n const init = (slot) => ({\n className: [recipe.className, slot].filter(Boolean).join(\"__\"),\n base: recipe.base?.[slot] ?? {},\n variants: {},\n defaultVariants: recipe.defaultVariants ?? {},\n compoundVariants: recipe.compoundVariants ? getSlotCompoundVariant(recipe.compoundVariants, slot) : []\n });\n const recipeParts = (recipe.slots ?? []).map((slot) => [slot, init(slot)]);\n for (const [variantsKey, variantsSpec] of Object.entries(recipe.variants ?? {})) for (const [variantKey, variantSpec] of Object.entries(variantsSpec)) recipeParts.forEach(([slot, slotRecipe]) => {\n slotRecipe.variants[variantsKey] ??= {};\n slotRecipe.variants[variantsKey][variantKey] = variantSpec[slot] ?? {};\n });\n return Object.fromEntries(recipeParts);\n};\nconst getSlotCompoundVariant = (compoundVariants, slotName) => compoundVariants.filter((compoundVariant) => compoundVariant?.css?.[slotName]).map((compoundVariant) => ({\n ...compoundVariant,\n css: compoundVariant.css[slotName]\n}));\n//#endregion\n//#region src/split-props.ts\n/**\n* Move one key into a bucket, keeping whatever about it is observable.\n*\n* Shared by both paths below so there is one implementation of the descriptor rules rather\n* than two to keep in step. The rules themselves are documented on `splitProps`.\n*/\nconst copyKey = (props, target, key) => {\n const descriptor = Object.getOwnPropertyDescriptor(props, key);\n if (!descriptor) return false;\n if (\"get\" in descriptor || \"set\" in descriptor || !descriptor.enumerable || key === \"__proto__\") Object.defineProperty(target, key, descriptor);\n else target[key] = descriptor.value;\n return true;\n};\n/**\n* One array group, which is what every call site in this project passes — a recipe's\n* `variantKeys`.\n*\n* The general path below is built for several groups that may be predicates, and pays for\n* that shape on every call: a closure per group, a `map` and a `concat` to assemble the\n* result, and a branch per group to tell an array from a predicate. None of it is reachable\n* with one array group.\n*\n* What it does *not* skip is the part that looks skippable. `own` stays, because membership\n* has to be answered from `ownKeys` rather than by asking the object: on a proxy — which is\n* what Solid's `mergeProps` hands over — every question is a trap, and a recipe naming eight\n* variants would otherwise fire eight traps to learn what one `ownKeys` already said. And\n* the two passes stay separate, because the group bucket is in *group* order while the rest\n* bucket is in *props* order, and that ordering reaches the emitted CSS.\n*/\nconst splitOneGroup = (props, allKeys, group) => {\n const own = new Set(allKeys);\n const taken = /* @__PURE__ */ new Set();\n const picked = {};\n for (let i = 0; i < group.length; i++) {\n const key = group[i];\n if (taken.has(key) || !own.has(key)) continue;\n if (copyKey(props, picked, key)) taken.add(key);\n }\n const rest = {};\n for (let i = 0; i < allKeys.length; i++) {\n const key = allKeys[i];\n if (taken.has(key)) continue;\n copyKey(props, rest, key);\n }\n return [picked, rest];\n};\n/**\n* Deal a props object into one bucket per key group, plus a final bucket for the rest.\n* A key goes to the first group that claims it.\n*\n* ## Why the descriptor is read per key rather than in bulk\n*\n* This used to call `Object.getOwnPropertyDescriptors` for the whole object and\n* `defineProperty` for every key it moved. Copying plain values instead is 2.4–2.9x faster\n* on the shapes that allow it, but it is only correct where props are data — and they are\n* not always. Solid compiles props to accessors, so reading one eagerly runs whatever it\n* wraps: splitting a component's props would construct its children before the surrounding\n* provider exists.\n*\n* So the descriptor is fetched per key, and the value path is taken only when it changes\n* nothing observable. An accessor keeps its laziness, a non-enumerable key keeps its\n* invisibility, and `__proto__` is defined rather than assigned so it stays an own\n* property instead of reaching the prototype setter.\n*\n* The one thing the value path drops is `writable`/`configurable`, so a bucket key taken\n* from frozen props is writable where it used to be frozen. Nothing here relies on that,\n* and preserving it would mean `defineProperty` on the common path — the cost this exists\n* to avoid. Keys that take the descriptor path keep theirs, so a bucket can be\n* inconsistent in that one respect.\n*\n* Key order within a bucket is preserved exactly. It is not cosmetic: `cva` merges\n* variant props in iteration order, and the parser reads the rest bucket as the style\n* props it encodes, so order reaches the emitted CSS.\n*/\nfunction splitProps(props, ...keys) {\n const allKeys = Object.getOwnPropertyNames(props);\n if (keys.length === 1 && Array.isArray(keys[0])) return splitOneGroup(props, allKeys, keys[0]);\n const own = new Set(allKeys);\n const taken = /* @__PURE__ */ new Set();\n const split = (group) => {\n const clone = {};\n for (let i = 0; i < group.length; i++) {\n const key = group[i];\n if (taken.has(key) || !own.has(key)) continue;\n if (copyKey(props, clone, key)) taken.add(key);\n }\n return clone;\n };\n /**\n * The predicate is called with the key alone.\n *\n * Handing it to `filter` passes `(key, index, allKeys)`. A one-parameter predicate cannot\n * see the extras, but a memoized one reads its whole argument list — and the predicates\n * that arrive here are memoized, `isCssProperty` among them. So the memo hashed the entire\n * key array once per prop, and keyed its cache on it: two elements with different prop sets\n * shared no entry even for the same prop name.\n *\n * Worth ~9.7x on that path, and nothing at all on a plain predicate — which is why the\n * bench below it needs a memoized case to see this at all.\n *\n * A loop rather than `filter((k) => key(k))` because the wrapper allocates a closure per\n * group. The two measure the same to within noise; the loop just does not need one.\n */\n const matching = (predicate) => {\n const group = [];\n for (let i = 0; i < allKeys.length; i++) {\n const key = allKeys[i];\n if (predicate(key)) group.push(key);\n }\n return group;\n };\n return keys.map((key) => split(Array.isArray(key) ? key : matching(key))).concat(split(allKeys));\n}\n//#endregion\n//#region src/uniq.ts\nconst uniq = (...items) => {\n const set = items.reduce((acc, currItems) => {\n if (currItems) currItems.forEach((item) => acc.add(item));\n return acc;\n }, /* @__PURE__ */ new Set([]));\n return Array.from(set);\n};\n//#endregion\n//#region src/view-transition.ts\n/**\n* The slots a `viewTransition()` bag accepts, in the order they are emitted.\n*\n* Anything else in the options object is ignored — including by the hash, so adding a\n* comment key or spreading an unrelated object does not fork the class name.\n*/\nconst viewTransitionSlots = [\n \"group\",\n \"imagePair\",\n \"old\",\n \"new\"\n];\n/**\n* Serialize a value with object keys sorted, so two style objects that differ only in\n* authoring order hash to the same class.\n*\n* Values JSON has no encoding for (`undefined`, functions, symbols) serialize as `null`\n* rather than being dropped. Nothing reaches here holding one — `filterSlots` removes\n* nullish slots, and the extractor drops nullish leaves — so this is only a floor: it\n* keeps a hole in an array from shifting the elements after it.\n*\n* Not exported. The name promises a general-purpose stable serializer, and this is not\n* one; `viewTransitionClassName` is the whole reason it exists.\n*/\nfunction stableStringify(value) {\n if (value === null) return \"null\";\n const type = typeof value;\n if (type === \"boolean\") return value ? \"true\" : \"false\";\n if (type === \"number\") return Number.isFinite(value) ? String(value) : \"null\";\n if (type === \"string\") return JSON.stringify(value);\n if (Array.isArray(value)) {\n let out = \"[\";\n for (let index = 0; index < value.length; index++) {\n if (index) out += \",\";\n out += stableStringify(value[index]);\n }\n return out + \"]\";\n }\n if (type === \"object\") {\n const keys = Object.keys(value).sort();\n let out = \"{\";\n for (let index = 0; index < keys.length; index++) {\n if (index) out += \",\";\n const key = keys[index];\n out += JSON.stringify(key) + \":\" + stableStringify(value[key]);\n }\n return out + \"}\";\n }\n return \"null\";\n}\n/**\n* Keep the four known slots, dropping any that is nullish.\n*\n* Both halves of the contract have to agree on what an empty slot is, and only one of\n* them gets a choice. The extractor evaluates the source, and a nullish property is gone\n* from what it hands over — `{ new: undefined }` and `{}` reach the build identically.\n* So absent, `undefined` and `null` collapse here too, and `new: enabled ? {…} : null`\n* hashes to the bag it actually styles.\n*/\nfunction filterSlots(options) {\n const filtered = {};\n if (!options || typeof options !== \"object\") return filtered;\n for (const slot of viewTransitionSlots) {\n const value = options[slot];\n if (value != null) filtered[slot] = value;\n }\n return filtered;\n}\n/**\n* The class a `viewTransition()` call resolves to.\n*\n* This is the whole contract between the build and the runtime: the extractor hashes the\n* options it found in the source, the generated `viewTransition()` hashes the options it\n* is called with, and the CSS only reaches the element if the two agree. They agree by\n* construction — both call this function — but only over what the extractor can see. A\n* value it cannot resolve statically is absent from its side and present on the runtime's,\n* which is why a bag has to be a static object literal to be styled at all.\n*\n* The class is used twice, as the `view-transition-class` value and as the argument to\n* `::view-transition-*(.cls)`, so the prefix applies to both.\n*/\nfunction viewTransitionClassName(options, prefix = \"\") {\n const base = \"vt_\" + toHash(stableStringify(filterSlots(options)));\n return prefix ? prefix + \"-\" + base : base;\n}\n//#endregion\nexport { cloneStyles, compact, createCss, createCssUncached, createMergeCss, filterBaseConditions, getPatternStyles, getRecipeClassNames, getRecipeIdentity, getSlotCompoundVariant, getSlotRecipes, hypenateProperty, isBaseCondition, isObject, leafClass, mapObject, memo, mergeProps, patternFns, splitProps, toHash, uniq, viewTransitionClassName, walkObject, withoutSpace };\n";
614
+ var content$8 = "//#region src/assert.ts\nfunction isObject(value) {\n return typeof value === \"object\" && value != null && !Array.isArray(value);\n}\nconst isObjectOrArray = (obj) => typeof obj === \"object\" && obj !== null;\n//#endregion\n//#region src/condition.ts\nconst isBaseCondition = (v) => v === \"base\";\nfunction filterBaseConditions(c) {\n return c.slice().filter((v) => !isBaseCondition(v));\n}\n//#endregion\n//#region src/hash.ts\nfunction toChar(code) {\n return String.fromCharCode(code + (code > 25 ? 39 : 97));\n}\nfunction toName(code) {\n let name = \"\";\n let x;\n for (x = Math.abs(code); x > 52; x = x / 52 | 0) name = toChar(x % 52) + name;\n return toChar(x % 52) + name;\n}\nfunction toPhash(h, x) {\n let i = x.length;\n while (i) h = h * 33 ^ x.charCodeAt(--i);\n return h;\n}\nfunction toHash(value) {\n return toName(toPhash(5381, value) >>> 0);\n}\n//#endregion\n//#region src/important.ts\nconst importantRegex = /\\s*!(important)?/i;\nconst whitespaceRegex = /\\s/;\n/**\n* Collapse every run of whitespace to a single space, which is what the class name is\n* built from. Exported because `leafClass` has to reproduce this exact pipeline, and a\n* second copy of it would be free to drift from the one `createCss` runs.\n*/\nfunction sanitize(value) {\n if (typeof value !== \"string\") return value;\n const collapsed = whitespaceRegex.test(value) ? value.replaceAll(/[\\n\\s]+/g, \" \") : value;\n return collapsed.includes(\"\\0\") ? collapsed.replaceAll(\"\\0\", \"\") : collapsed;\n}\nfunction isImportant(value) {\n if (typeof value !== \"string\") return false;\n return value.includes(\"!\") && importantRegex.test(value);\n}\nfunction withoutImportant(value) {\n if (typeof value !== \"string\") return value;\n if (!value.includes(\"!\")) return value.trim();\n return value.replace(importantRegex, \"\").trim();\n}\nfunction withoutSpace(str) {\n if (typeof str !== \"string\") return str;\n return str.includes(\" \") ? str.replaceAll(\" \", \"_\") : str;\n}\n//#endregion\n//#region src/memo.ts\n/**\n* Bounded argument memo used by the generated runtime (`css`, patterns, `cva`, recipes).\n*\n* Two regimes, picked per call:\n*\n* - Arguments that are flat (objects of primitives) take a cheap structural hash\n* and are confirmed with an exact comparison, so a hash collision can never\n* serve the wrong result. This is the shape `css({ ... })` has.\n* - Anything nested falls back to `JSON.stringify`, which V8 does faster than a\n* JS walk.\n*\n* The second point is the counter-intuitive one, and it has been measured rather\n* than assumed. Extending the structural hash to recurse — so nested styles could\n* take the fast path too — is *slower*, because it trades one native serialization\n* for two JS walks (hash, then the deep equality that confirms it). Over 10k\n* iterations per shape:\n*\n* shape stringify recursive hash + deep equal\n* flat 1.06ms 2.09ms\n* _hover 1.00ms 2.16ms\n* responsive 1.23ms 2.15ms\n* realistic 2.32ms 5.84ms\n* nested 3 deep 1.22ms 2.35ms\n*\n* So a nested `css()` call costing several times a flat one is not a defect here.\n* It is the floor for a value-keyed memo in JS, and the way to avoid it is to not\n* make the call — see the build-time fold in `@bamboocss/vite`.\n*\n* Both regimes key on *values*, never on object identity: mutating a style object\n* between calls changes its hash, so the next call misses and recomputes rather\n* than serving a stale class. Keying nested arguments on the identity of the inner\n* objects would skip serialization entirely, but it cannot detect a mutation, and\n* \"same object, different contents\" is exactly what a style object built per render\n* looks like.\n*\n* Both caches are bounded. An unbounded memo is a leak in any long-lived process\n* (SSR), where the set of distinct style objects grows without limit.\n*/\n/**\n* Distinct hashes held per memoized function before the cache rotates.\n*\n* This bounds *buckets*, not entries: a bucket keeps up to `MAX_BUCKET` colliding\n* argument lists, so the ceiling is `MAX_ENTRIES * MAX_BUCKET` live entries, and\n* twice that across both generations, since the previous one is retained until the\n* next rotation. Collisions are rare in practice, so the realistic figure is close\n* to `MAX_ENTRIES` — but the worst case is what matters when sizing a long-lived\n* process, so state it plainly.\n*\n* Rotation beats evicting the oldest key: single-key eviction is worst-case for a\n* working set that cycles, because it drops exactly the entry about to be needed.\n* Measured on a cycling set of 20k styles, one-at-a-time eviction cost ~719ns/op\n* against ~189ns unbounded, while rotation holds ~274ns. On realistic skewed\n* access rotation is at or below the unbounded cost.\n*/\nconst MAX_ENTRIES = 1e3;\n/** Entries kept per hash bucket, to bound the cost of a collision scan. */\nconst MAX_BUCKET = 8;\n/**\n* DJB2 over the arguments' own keys and primitive values.\n* Returns `null` for anything nested, which routes the call to the string key.\n*/\nconst flatHashOrNull = (args) => {\n let h = 5381;\n for (let a = 0; a < args.length; a++) {\n const obj = args[a];\n if (obj === null || typeof obj !== \"object\") {\n const t = typeof obj;\n if (t === \"string\") for (let i = 0; i < obj.length; i++) h = h * 33 ^ obj.charCodeAt(i);\n else if (t === \"number\") h = h * 33 ^ (obj | 0);\n else if (t === \"boolean\") h = h * 33 ^ (obj ? 991 : 997);\n else h = h * 33 ^ 3;\n continue;\n }\n if (Array.isArray(obj)) return null;\n const proto = Object.getPrototypeOf(obj);\n if (proto !== Object.prototype && proto !== null) return null;\n for (const k in obj) {\n const v = obj[k];\n const tv = typeof v;\n if (v !== null && tv === \"object\") return null;\n for (let i = 0; i < k.length; i++) h = h * 33 ^ k.charCodeAt(i);\n if (tv === \"string\") for (let i = 0; i < v.length; i++) h = h * 33 ^ v.charCodeAt(i);\n else if (tv === \"number\") h = h * 33 ^ (v | 0);\n else if (tv === \"boolean\") h = h * 33 ^ (v ? 991 : 997);\n else h = h * 33 ^ 2;\n }\n }\n return h >>> 0;\n};\n/**\n* Value snapshot of the arguments, taken once at insert.\n*\n* The cache must not hold the caller's objects: a style object can capture a much\n* larger graph, and keeping it alive until the cache rotates changes GC behaviour\n* for code that never asked to be cached. Only the flat path reaches here, so a\n* shallow copy contains primitives only and retains nothing.\n*\n* Comparing against a copy also removes the last way a mutation could be missed.\n* Were the caller's own object stored, `oa === ob` would short-circuit the value\n* comparison, and a mutation that happened to preserve the hash would return the\n* stale entry. Against a copy that check can only ever be true for equal\n* primitives.\n*/\nconst snapshotArgs = (args) => {\n const values = [];\n const counts = [];\n for (let i = 0; i < args.length; i++) {\n const o = args[i];\n if (o !== null && typeof o === \"object\") {\n const copy = Array.isArray(o) ? [] : {};\n let n = 0;\n for (const k in o) {\n copy[k] = o[k];\n n++;\n }\n values.push(copy);\n counts.push(n);\n } else {\n values.push(o);\n counts.push(0);\n }\n }\n return {\n values,\n counts\n };\n};\n/**\n* Exact match, so a `flatHashOrNull` collision is resolved rather than trusted.\n* `bCounts` is the cached side's key count; comparing against it avoids the\n* `Object.keys()` allocation this would otherwise make on every cache hit.\n*/\nconst flatArgsEqual = (a, b, bCounts) => {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n const oa = a[i];\n const ob = b[i];\n if (oa === ob) continue;\n if (oa === null || ob === null || typeof oa !== \"object\" || typeof ob !== \"object\") return false;\n if (Array.isArray(oa) !== Array.isArray(ob)) return false;\n let n = 0;\n for (const k in oa) {\n if (oa[k] !== ob[k]) return false;\n n++;\n }\n if (n !== bCounts[i]) return false;\n }\n return true;\n};\nconst memo = (fn) => {\n let buckets = /* @__PURE__ */ new Map();\n let priorBuckets = /* @__PURE__ */ new Map();\n let strings = /* @__PURE__ */ new Map();\n let priorStrings = /* @__PURE__ */ new Map();\n /**\n * One scalar argument, keyed directly.\n *\n * This is the shape of the hottest callers — `isCssProperty(prop)` runs per prop\n * per render — and a plain map lookup beats hashing, bucket scanning and\n * snapshotting for it. Distinct types stay distinct keys, so `1` and `'1'` do not\n * share an entry.\n */\n let scalars = /* @__PURE__ */ new Map();\n let priorScalars = /* @__PURE__ */ new Map();\n const scan = (bucket, args) => {\n if (bucket) for (let i = 0; i < bucket.length; i++) {\n const entry = bucket[i];\n if (flatArgsEqual(args, entry.values, entry.counts)) return entry;\n }\n };\n const get = (...args) => {\n if (args.length === 1) {\n const only = args[0];\n if (only === null || typeof only !== \"object\") {\n if (scalars.has(only)) return scalars.get(only);\n if (priorScalars.has(only)) {\n const promoted = priorScalars.get(only);\n scalars.set(only, promoted);\n return promoted;\n }\n const out = fn(only);\n scalars.set(only, out);\n if (scalars.size > MAX_ENTRIES) {\n priorScalars = scalars;\n scalars = /* @__PURE__ */ new Map();\n }\n return out;\n }\n }\n const hash = flatHashOrNull(args);\n if (hash !== null) {\n let bucket = buckets.get(hash);\n const hit = scan(bucket, args);\n if (hit) return hit.out;\n const priorHit = scan(priorBuckets.get(hash), args);\n if (priorHit) {\n if (!bucket) {\n bucket = [];\n buckets.set(hash, bucket);\n }\n bucket.push(priorHit);\n if (bucket.length > MAX_BUCKET) bucket.shift();\n return priorHit.out;\n }\n const snap = snapshotArgs(args);\n const out = fn(...args);\n if (!bucket) {\n bucket = [];\n buckets.set(hash, bucket);\n }\n bucket.push({\n values: snap.values,\n counts: snap.counts,\n out\n });\n if (bucket.length > MAX_BUCKET) bucket.shift();\n if (buckets.size > MAX_ENTRIES) {\n priorBuckets = buckets;\n buckets = /* @__PURE__ */ new Map();\n }\n return out;\n }\n const key = JSON.stringify(args);\n if (strings.has(key)) return strings.get(key);\n if (priorStrings.has(key)) {\n const promoted = priorStrings.get(key);\n strings.set(key, promoted);\n return promoted;\n }\n const out = fn(...args);\n strings.set(key, out);\n if (strings.size > MAX_ENTRIES) {\n priorStrings = strings;\n strings = /* @__PURE__ */ new Map();\n }\n return out;\n };\n return get;\n};\n//#endregion\n//#region src/merge-props.ts\nconst MERGE_OMIT = new Set([\n \"__proto__\",\n \"constructor\",\n \"prototype\"\n]);\nfunction mergeProps(...sources) {\n return sources.reduce((prev, obj) => {\n if (!obj) return prev;\n Object.keys(obj).forEach((key) => {\n if (MERGE_OMIT.has(key)) return;\n const prevValue = prev[key];\n const value = obj[key];\n if (isObject(prevValue) && isObject(value)) prev[key] = mergeProps(prevValue, value);\n else prev[key] = value;\n });\n return prev;\n }, {});\n}\n//#endregion\n//#region src/walk-object.ts\nconst isNotNullish = (element) => element != null;\nfunction walkObject(target, predicate, options = {}) {\n const { stop, getKey } = options;\n function inner(value, path = []) {\n if (isObjectOrArray(value)) {\n const result = {};\n for (const [prop, child] of Object.entries(value)) {\n const key = getKey?.(prop, child) ?? prop;\n const childPath = [...path, key];\n if (stop?.(value, childPath)) return predicate(value, path);\n const next = inner(child, childPath);\n if (isNotNullish(next)) result[key] = next;\n }\n return result;\n }\n return predicate(value, path);\n }\n return inner(target);\n}\nfunction mapObject(obj, fn) {\n if (Array.isArray(obj)) return obj.map((value) => fn(value));\n if (!isObject(obj)) return fn(obj);\n return walkObject(obj, (value) => fn(value));\n}\n//#endregion\n//#region src/normalize-style-object.ts\nfunction toResponsiveObject(values, breakpoints) {\n return values.reduce((acc, current, index) => {\n const key = breakpoints[index];\n if (current != null) acc[key] = current;\n return acc;\n }, {});\n}\n/**\n* Whether walking the object would only rebuild it.\n*\n* Normalizing does three things: it renames a shorthand to its longhand, expands a responsive\n* array into a breakpoint object, and drops nullish leaves. A flat object of plain values\n* written in longhand needs none of them, and that is most of what `css()` is handed — but it\n* still paid for a full rebuild plus a path array per key.\n*\n* Every clause has to be exact, since a false positive returns an object the walk would have\n* changed. Nullish is one of them: a leaf the walk removes must not survive, or a later merge\n* would see it override the value beneath it. The array check is another, and it is on the\n* container as well as the values — `stop` is handed the container, so an array arriving at\n* the top level becomes a breakpoint object rather than being walked into.\n*\n* `for...in` reads inherited keys the walk ignores, which is safe in the only direction it can\n* be wrong — an extra key can send this to the slow path, never past it.\n*\n* It does read every value, as `compactStyles` and the argument memo already do, so an\n* accessor prop is read once more than before. Style props are values by the time they get\n* here and reading one has no effect, but it is the reason this cannot be reordered to read\n* lazily.\n*/\nfunction needsNoNormalizing(styles, resolveShorthand) {\n if (Array.isArray(styles)) return false;\n for (const key in styles) {\n const value = styles[key];\n if (value == null || typeof value === \"object\") return false;\n if (resolveShorthand !== void 0 && resolveShorthand(key) !== key) return false;\n }\n return true;\n}\n/**\n* The result may be the argument itself rather than a fresh object, so callers have to treat\n* it as read-only. Every one of them does today: merging accumulates into its own object and\n* the two `raw()` helpers clone at the boundary.\n*/\nfunction normalizeStyleObject(styles, context, shorthand = true) {\n const { utility, conditions } = context;\n const { hasShorthand, resolveShorthand } = utility;\n if (needsNoNormalizing(styles, shorthand && hasShorthand ? resolveShorthand : void 0)) return styles;\n return walkObject(styles, (value) => {\n return Array.isArray(value) ? toResponsiveObject(value, conditions.breakpoints.keys) : value;\n }, {\n stop: (value) => Array.isArray(value),\n getKey: shorthand ? (prop) => hasShorthand ? resolveShorthand(prop) : prop : void 0\n });\n}\n//#endregion\n//#region src/classname.ts\nconst fallbackCondition = {\n shift: (v) => v,\n finalize: (v) => v,\n breakpoints: { keys: [] }\n};\n/**\n* Name a style object, without caching the answer.\n*\n* For callers already sitting behind a memo keyed on the same call. `css` is the one that\n* matters:\n*\n* css = memo((...styles) => cssFn(mergeCssUncached(...styles)))\n*\n* reaches `cssFn` only when its own cache missed, and the merged object it passes is a\n* deterministic function of those same arguments — so a second cache on it cannot hit.\n* Measured over 25k calls it served zero hits across every workload, including working sets\n* larger than `MAX_ENTRIES`, where both caches rotate in lockstep rather than one rescuing\n* the other. The same applies wherever `createCss` is called *inside* the memoized function,\n* as the generated recipe runtime does: a fresh cache built per call is used once.\n*\n* Use `createCss` instead when there is no such memo above — the vite fold reaches it\n* directly, once per folded call site, and the merge is many-to-one there, so it hits.\n*/\nfunction createCssUncached(context) {\n const { utility, hash, conditions: conds = fallbackCondition } = context;\n const { prefix } = utility;\n const formatClassName = prefix ? (str) => str ? `${prefix}-${str}` : prefix : (str) => str || \"\";\n const hashFn = (conditions, className) => {\n if (hash) {\n const baseArray = [...conds.finalize(conditions), className];\n return formatClassName(utility.toHash(baseArray, toHash));\n }\n const finalized = conds.finalize(conditions);\n if (finalized.length === 0) return formatClassName(className);\n return [...finalized, formatClassName(className)].join(\":\");\n };\n /** The class for one declaration. */\n const atomicName = (prop, value, conditions) => {\n const important = isImportant(value);\n const className = hashFn(conditions, utility.transform(prop, withoutImportant(sanitize(value))).className);\n return important ? `${className}!` : className;\n };\n return ({ base, ...styles } = {}) => {\n const normalizedObject = normalizeStyleObject(Object.assign(styles, base), context);\n const classNames = /* @__PURE__ */ new Set();\n walkObject(normalizedObject, (value, paths) => {\n if (value == null) return;\n const [prop, ...allConditions] = conds.shift(paths);\n classNames.add(atomicName(prop, value, filterBaseConditions(allConditions)));\n });\n return Array.from(classNames).join(\" \");\n };\n}\n/**\n* `createCssUncached`, cached.\n*\n* For callers that reach it directly and repeatedly with no memo of their own — the vite\n* fold builds one per build and shares it across every module. There the cache earns its\n* keep twice over: call sites repeat across a codebase, and the merge feeding it is\n* many-to-one, so `css({a}, {b})` and `css({a, b})` land on the same entry. Measured 2-35%\n* hits across the projects in this repo, and dropping it cost +187% on the fold.\n*/\nfunction createCss(context) {\n return memo(createCssUncached(context));\n}\n/**\n* Whether a style object carries anything `compact` would have kept.\n*\n* The question `compactStyles` asks is only ever \"is this empty once undefined values are\n* dropped\", but it used to answer it by building the compacted object and then a key array\n* for it, then throwing both away. `Object.keys` enumerates exactly what `compact`'s\n* `Object.entries` did — own, enumerable, string-keyed — so this is the same predicate\n* without the two allocations, and it stops at the first value that settles it.\n*/\nfunction hasDefinedValue(style) {\n const keys = Object.keys(style);\n for (let i = 0; i < keys.length; i++) if (style[keys[i]] !== void 0) return true;\n return false;\n}\nfunction compactStyles(...styles) {\n return styles.flat().filter((style) => isObject(style) && hasDefinedValue(style));\n}\nfunction createMergeCss(context) {\n function resolve(styles) {\n const allStyles = compactStyles(...styles);\n if (allStyles.length === 1) return allStyles;\n return allStyles.map((style) => normalizeStyleObject(style, context));\n }\n function mergeCss(...styles) {\n return mergeProps(...resolve(styles));\n }\n return {\n mergeCss: memo(mergeCss),\n mergeCssUncached: mergeCss\n };\n}\n//#endregion\n//#region src/clone-styles.ts\nconst OMIT = new Set([\n \"__proto__\",\n \"constructor\",\n \"prototype\"\n]);\n/**\n* Independent copy of a style object, nested condition blocks included.\n*\n* Merged style objects are cached, so anything handed to user code has to be\n* copied first: a caller mutating what it received would otherwise change what\n* every later caller reads back. `css.raw()` and `cva.raw()` are those boundaries.\n*\n* Kept separate from `mergeProps` deliberately. Merging is on the hot path — it\n* runs on every `css()` cache miss and on every render of a pattern component\n* under `jsxStyleProps: 'minimal'` — and copying there charges every caller for a\n* guarantee only the two `raw()` helpers need. Measured on a realistic style\n* object (5 base properties, 4 condition blocks) that was roughly twice the cost\n* of merging alone.\n*/\nfunction cloneStyles(styles) {\n if (Array.isArray(styles)) return styles.map((value) => cloneStyles(value));\n if (!isObject(styles)) return styles;\n const out = {};\n for (const key of Object.keys(styles)) {\n if (OMIT.has(key)) continue;\n out[key] = cloneStyles(styles[key]);\n }\n return out;\n}\n//#endregion\n//#region src/compact.ts\nfunction compact(value) {\n return Object.fromEntries(Object.entries(value ?? {}).filter(([_, value]) => value !== void 0));\n}\n//#endregion\n//#region src/leaf-class.ts\n/**\n* The class a single dynamic style leaf resolves to, given the prefix its property and\n* condition path produce.\n*\n* ## Why this can exist at all\n*\n* `css()` builds a class from the value alone — `utility.transform` is string\n* construction over a static map, and nothing consults which rules were actually emitted.\n* So `css({ color: tone })` already returns `c_<tone>` for a value the extractor never\n* saw, with no CSS behind it. Reproducing that string here cannot be less correct than\n* the call it replaces; it just skips the object literal, the merge and the memo.\n*\n* ## Why it is not a template literal\n*\n* Three shapes do not reduce to `prefix + value`, and all three return `undefined` so the\n* caller runs `css()` instead:\n*\n* - An array is expanded to a responsive object by `normalizeStyleObject`, so it produces\n* one class per breakpoint rather than one class.\n* - An object is a condition block, walked into for the same reason.\n* - `null` and `undefined` are skipped by the walk entirely, which is an empty string\n* rather than a class — that one is answered here, since it needs no `css()` call.\n*\n* ## Why the character scan\n*\n* The remaining work — collapsing whitespace, stripping `!important`, turning spaces into\n* underscores — is three regexes, and paying them per call makes this *slower* than a\n* memo hit. Almost no token value contains whitespace or `!`, so one scan for the\n* characters that make any of it necessary sends the common value straight to a\n* concatenation. A false positive only costs the slow path, so the scan errs wide.\n*/\nfunction leafClass(prefix, value) {\n if (value == null) return \"\";\n const type = typeof value;\n if (type === \"number\" || type === \"boolean\") return `${prefix}${value}`;\n if (type !== \"string\") return void 0;\n const str = value;\n for (let index = 0; index < str.length; index++) {\n const code = str.charCodeAt(index);\n if (code <= 33 || code === 160 || code === 5760 || code >= 8192) return slowLeaf(prefix, str);\n }\n return `${prefix}${str}`;\n}\n/** The full pipeline `createCss` runs, for a value that needs it. */\nfunction slowLeaf(prefix, value) {\n const important = isImportant(value);\n const className = `${prefix}${withoutSpace(withoutImportant(sanitize(value)))}`;\n return important ? `${className}!` : className;\n}\n//#endregion\n//#region src/hypenate-property.ts\nconst wordRegex = /([A-Z])/g;\nconst msRegex = /^ms-/;\nconst hypenateProperty = memo((property) => {\n if (property.startsWith(\"--\")) return property;\n return property.replace(wordRegex, \"-$1\").replace(msRegex, \"-ms-\").toLowerCase();\n});\n//#endregion\n//#region src/recipe-identity.ts\n/**\n* The fields that decide what CSS a recipe produces. Anything else is metadata.\n*\n* `slots` and `scopeRoots` count. They do not change a declaration, but they change the\n* *shape* of what is emitted — which slots exist, and whether a slot's variants become\n* `@scope` rules or a class of its own. Two `sva`s differing only in `scopeRoots` hashed to\n* one name, and since an inline recipe is registered once, whichever was extracted first\n* decided the emission for both; the other's runtime then asked for classes no rule\n* existed under. \"Same styles, different DOM topology\" is exactly what `scopeRoots` is for,\n* so it is the collision most likely to happen.\n*/\nconst STYLE_FIELDS = [\n \"base\",\n \"variants\",\n \"compoundVariants\",\n \"defaultVariants\",\n \"slots\",\n \"scopeRoots\"\n];\n/**\n* A serialization that depends on the config's *content* and not on how it was written.\n*\n* Object keys are sorted, so reordering two variants in the source does not rename every\n* class the recipe emits. Arrays keep their order, because `compoundVariants` is precedence\n* ordered and two orderings are two different recipes.\n*\n* A function serializes to `null` rather than to its source. `JSON.stringify` already drops\n* them, and stringifying instead would key the name on whether the bundle was minified —\n* the same build-dependent divergence that `cx` was changed to avoid. Nothing that survives\n* static extraction is a function, so there is no real config this loses information about.\n*/\n/**\n* Runs of whitespace inside a declaration value, collapsed to one space.\n*\n* The build never sees the value as written. `maybe-box-node` reads every string literal\n* through `trimWhitespace`, so `'calc(100vh - 16px)'` is `'calc(100vh - 16px)'` by the time\n* a recipe config reaches the encoder — the two produce identical CSS, and the stylesheet\n* emits one rule for both.\n*\n* The browser holds the config as authored. Without this, the two sides hashed different\n* objects and derived different names, so the element asked for a class the stylesheet did\n* not carry and rendered with *none* of the recipe's styles. Silent, and invisible to a\n* dead-rule check: the extra name leaves no unused rule behind, because the collapsed config\n* is byte-identical to one that was already emitted.\n*\n* The regex is `trimWhitespace`'s, deliberately. A second spelling of \"the same value\" is a\n* second thing to keep in agreement, which is the defect this is fixing.\n*/\nconst collapseWhitespace = (value) => value.replaceAll(/\\s+/g, \" \");\nconst stable = (value) => {\n if (typeof value === \"string\") return JSON.stringify(collapseWhitespace(value));\n if (value === null || typeof value !== \"object\") return JSON.stringify(value) ?? \"null\";\n if (Array.isArray(value)) return `[${value.map(stable).join(\",\")}]`;\n const source = value;\n return `{${Object.keys(source).sort().filter((key) => source[key] !== void 0 && source[key] !== null).map((key) => `${JSON.stringify(key)}:${stable(source[key])}`).join(\",\")}}`;\n};\n/**\n* The name an inline `cva`/`sva` emits its classes under — `button--size_sm`, where this\n* returns the `button`.\n*\n* A config recipe gets its name from the key it is declared under. An inline one has no\n* such key, and the two places that need the name never meet: the build derives it while\n* emitting the stylesheet, the runtime derives it again in the browser. So it has to come\n* from something both of them see, which leaves the config object itself.\n*\n* Deriving it from the *binding* — `const button = cva(...)` — was the obvious alternative\n* and does not work. Only the build can see that binding; handing it to the runtime means\n* rewriting the call, and then a pipeline without that transform names classes differently\n* from one with it. An optional `className` gets the same readable output with none of\n* that, because it travels inside the config to both sides.\n*\n* `className` is the field a config recipe already names itself with, and it means the same\n* thing here — the prefix every class the recipe emits is built from. An inline recipe that\n* declares one is indistinguishable in the stylesheet from a recipe declared in config.\n*/\nconst getRecipeIdentity = (config, prefix = \"cva\") => {\n const declared = config?.className;\n if (typeof declared === \"string\" && declared) return declared;\n const styles = {};\n for (const field of STYLE_FIELDS) {\n const value = config?.[field];\n if (value !== void 0) styles[field] = value;\n }\n return `${prefix}_${toHash(stable(styles))}`;\n};\n/**\n* The classes a recipe puts on an element: its own, plus one per selected variant.\n*\n* Lives here rather than in the generated `cva` because the build has to be able to check\n* it. `checkNamingAgreement` derives class names both ways and compares them, and it can\n* only do that against the code the browser actually runs — a second implementation written\n* to match would agree with itself and prove nothing.\n*\n* Compound variants are absent by design. Their rule selects on the variant classes already\n* in this list, so it applies without a class of its own.\n*/\nconst getRecipeClassNames = (name, variants, selection, separator = \"_\", format = (className) => className) => {\n let result = format(name);\n for (const variant of Object.keys(variants ?? {})) {\n const value = selection[variant];\n if (value == null) continue;\n const declared = variants?.[variant];\n if (!declared || !Object.hasOwn(declared, value) || declared[value] == null) continue;\n result += ` ${format(`${name}--${variant}${separator}${withoutSpace(value)}`)}`;\n }\n return result;\n};\n//#endregion\n//#region src/is-css-function.ts\nconst fnRegExp = new RegExp(`^(${[\n \"min\",\n \"max\",\n \"clamp\",\n \"calc\"\n].join(\"|\")})\\\\(.*\\\\)`);\nconst isCssFunction = (v) => typeof v === \"string\" && fnRegExp.test(v);\n//#endregion\n//#region src/is-css-unit.ts\nconst lengthUnitsPattern = `(?:${\"cm,mm,Q,in,pc,pt,px,em,ex,ch,rem,lh,rlh,vw,vh,vmin,vmax,vb,vi,svw,svh,lvw,lvh,dvw,dvh,cqw,cqh,cqi,cqb,cqmin,cqmax,%\".split(\",\").join(\"|\")})`;\nconst lengthRegExp = new RegExp(`^[+-]?[0-9]*.?[0-9]+(?:[eE][+-]?[0-9]+)?${lengthUnitsPattern}$`);\nconst isCssUnit = (v) => typeof v === \"string\" && lengthRegExp.test(v);\n//#endregion\n//#region src/is-css-var.ts\nconst isCssVar = (v) => typeof v === \"string\" && /^var\\(--.+\\)$/.test(v);\n//#endregion\n//#region src/pattern-fns.ts\nconst createPatternFns = (token) => ({\n map: mapObject,\n isCssFunction,\n isCssVar,\n isCssUnit,\n token\n});\nconst getPatternStyles = (pattern, styles) => {\n if (!pattern?.defaultValues) return styles;\n const defaults = typeof pattern.defaultValues === \"function\" ? pattern.defaultValues(styles) : pattern.defaultValues;\n return Object.assign({}, defaults, compact(styles));\n};\n//#endregion\n//#region src/slot.ts\nconst getSlotRecipes = (recipe = {}) => {\n const init = (slot) => ({\n className: [recipe.className, slot].filter(Boolean).join(\"__\"),\n base: recipe.base?.[slot] ?? {},\n variants: {},\n defaultVariants: recipe.defaultVariants ?? {},\n compoundVariants: recipe.compoundVariants ? getSlotCompoundVariant(recipe.compoundVariants, slot) : []\n });\n const recipeParts = (recipe.slots ?? []).map((slot) => [slot, init(slot)]);\n for (const [variantsKey, variantsSpec] of Object.entries(recipe.variants ?? {})) for (const [variantKey, variantSpec] of Object.entries(variantsSpec)) recipeParts.forEach(([slot, slotRecipe]) => {\n slotRecipe.variants[variantsKey] ??= {};\n slotRecipe.variants[variantsKey][variantKey] = variantSpec[slot] ?? {};\n });\n return Object.fromEntries(recipeParts);\n};\nconst getSlotCompoundVariant = (compoundVariants, slotName) => compoundVariants.filter((compoundVariant) => compoundVariant?.css?.[slotName]).map((compoundVariant) => ({\n ...compoundVariant,\n css: compoundVariant.css[slotName]\n}));\n//#endregion\n//#region src/split-props.ts\n/**\n* Move one key into a bucket, keeping whatever about it is observable.\n*\n* Shared by both paths below so there is one implementation of the descriptor rules rather\n* than two to keep in step. The rules themselves are documented on `splitProps`.\n*/\nconst copyKey = (props, target, key) => {\n const descriptor = Object.getOwnPropertyDescriptor(props, key);\n if (!descriptor) return false;\n if (\"get\" in descriptor || \"set\" in descriptor || !descriptor.enumerable || key === \"__proto__\") Object.defineProperty(target, key, descriptor);\n else target[key] = descriptor.value;\n return true;\n};\n/**\n* One array group, which is what every call site in this project passes — a recipe's\n* `variantKeys`.\n*\n* The general path below is built for several groups that may be predicates, and pays for\n* that shape on every call: a closure per group, a `map` and a `concat` to assemble the\n* result, and a branch per group to tell an array from a predicate. None of it is reachable\n* with one array group.\n*\n* What it does *not* skip is the part that looks skippable. `own` stays, because membership\n* has to be answered from `ownKeys` rather than by asking the object: on a proxy — which is\n* what Solid's `mergeProps` hands over — every question is a trap, and a recipe naming eight\n* variants would otherwise fire eight traps to learn what one `ownKeys` already said. And\n* the two passes stay separate, because the group bucket is in *group* order while the rest\n* bucket is in *props* order, and that ordering reaches the emitted CSS.\n*/\nconst splitOneGroup = (props, allKeys, group) => {\n const own = new Set(allKeys);\n const taken = /* @__PURE__ */ new Set();\n const picked = {};\n for (let i = 0; i < group.length; i++) {\n const key = group[i];\n if (taken.has(key) || !own.has(key)) continue;\n if (copyKey(props, picked, key)) taken.add(key);\n }\n const rest = {};\n for (let i = 0; i < allKeys.length; i++) {\n const key = allKeys[i];\n if (taken.has(key)) continue;\n copyKey(props, rest, key);\n }\n return [picked, rest];\n};\n/**\n* Deal a props object into one bucket per key group, plus a final bucket for the rest.\n* A key goes to the first group that claims it.\n*\n* ## Why the descriptor is read per key rather than in bulk\n*\n* This used to call `Object.getOwnPropertyDescriptors` for the whole object and\n* `defineProperty` for every key it moved. Copying plain values instead is 2.4–2.9x faster\n* on the shapes that allow it, but it is only correct where props are data — and they are\n* not always. Solid compiles props to accessors, so reading one eagerly runs whatever it\n* wraps: splitting a component's props would construct its children before the surrounding\n* provider exists.\n*\n* So the descriptor is fetched per key, and the value path is taken only when it changes\n* nothing observable. An accessor keeps its laziness, a non-enumerable key keeps its\n* invisibility, and `__proto__` is defined rather than assigned so it stays an own\n* property instead of reaching the prototype setter.\n*\n* The one thing the value path drops is `writable`/`configurable`, so a bucket key taken\n* from frozen props is writable where it used to be frozen. Nothing here relies on that,\n* and preserving it would mean `defineProperty` on the common path — the cost this exists\n* to avoid. Keys that take the descriptor path keep theirs, so a bucket can be\n* inconsistent in that one respect.\n*\n* Key order within a bucket is preserved exactly. It is not cosmetic: `cva` merges\n* variant props in iteration order, and the parser reads the rest bucket as the style\n* props it encodes, so order reaches the emitted CSS.\n*/\nfunction splitProps(props, ...keys) {\n const allKeys = Object.getOwnPropertyNames(props);\n if (keys.length === 1 && Array.isArray(keys[0])) return splitOneGroup(props, allKeys, keys[0]);\n const own = new Set(allKeys);\n const taken = /* @__PURE__ */ new Set();\n const split = (group) => {\n const clone = {};\n for (let i = 0; i < group.length; i++) {\n const key = group[i];\n if (taken.has(key) || !own.has(key)) continue;\n if (copyKey(props, clone, key)) taken.add(key);\n }\n return clone;\n };\n /**\n * The predicate is called with the key alone.\n *\n * Handing it to `filter` passes `(key, index, allKeys)`. A one-parameter predicate cannot\n * see the extras, but a memoized one reads its whole argument list — and the predicates\n * that arrive here are memoized, `isCssProperty` among them. So the memo hashed the entire\n * key array once per prop, and keyed its cache on it: two elements with different prop sets\n * shared no entry even for the same prop name.\n *\n * Worth ~9.7x on that path, and nothing at all on a plain predicate — which is why the\n * bench below it needs a memoized case to see this at all.\n *\n * A loop rather than `filter((k) => key(k))` because the wrapper allocates a closure per\n * group. The two measure the same to within noise; the loop just does not need one.\n */\n const matching = (predicate) => {\n const group = [];\n for (let i = 0; i < allKeys.length; i++) {\n const key = allKeys[i];\n if (predicate(key)) group.push(key);\n }\n return group;\n };\n return keys.map((key) => split(Array.isArray(key) ? key : matching(key))).concat(split(allKeys));\n}\n//#endregion\n//#region src/uniq.ts\nconst uniq = (...items) => {\n const set = items.reduce((acc, currItems) => {\n if (currItems) currItems.forEach((item) => acc.add(item));\n return acc;\n }, /* @__PURE__ */ new Set([]));\n return Array.from(set);\n};\n//#endregion\n//#region src/view-transition.ts\n/**\n* The slots a `viewTransition()` bag accepts, in the order they are emitted.\n*\n* Anything else in the options object is ignored — including by the hash, so adding a\n* comment key or spreading an unrelated object does not fork the class name.\n*/\nconst viewTransitionSlots = [\n \"group\",\n \"imagePair\",\n \"old\",\n \"new\"\n];\n/**\n* Serialize a value with object keys sorted, so two style objects that differ only in\n* authoring order hash to the same class.\n*\n* Values JSON has no encoding for (`undefined`, functions, symbols) serialize as `null`\n* rather than being dropped. Nothing reaches here holding one — `filterSlots` removes\n* nullish slots, and the extractor drops nullish leaves — so this is only a floor: it\n* keeps a hole in an array from shifting the elements after it.\n*\n* Not exported. The name promises a general-purpose stable serializer, and this is not\n* one; `viewTransitionClassName` is the whole reason it exists.\n*/\nfunction stableStringify(value) {\n if (value === null) return \"null\";\n const type = typeof value;\n if (type === \"boolean\") return value ? \"true\" : \"false\";\n if (type === \"number\") return Number.isFinite(value) ? String(value) : \"null\";\n if (type === \"string\") return JSON.stringify(value);\n if (Array.isArray(value)) {\n let out = \"[\";\n for (let index = 0; index < value.length; index++) {\n if (index) out += \",\";\n out += stableStringify(value[index]);\n }\n return out + \"]\";\n }\n if (type === \"object\") {\n const keys = Object.keys(value).sort();\n let out = \"{\";\n for (let index = 0; index < keys.length; index++) {\n if (index) out += \",\";\n const key = keys[index];\n out += JSON.stringify(key) + \":\" + stableStringify(value[key]);\n }\n return out + \"}\";\n }\n return \"null\";\n}\n/**\n* Keep the four known slots, dropping any that is nullish.\n*\n* Both halves of the contract have to agree on what an empty slot is, and only one of\n* them gets a choice. The extractor evaluates the source, and a nullish property is gone\n* from what it hands over — `{ new: undefined }` and `{}` reach the build identically.\n* So absent, `undefined` and `null` collapse here too, and `new: enabled ? {…} : null`\n* hashes to the bag it actually styles.\n*/\nfunction filterSlots(options) {\n const filtered = {};\n if (!options || typeof options !== \"object\") return filtered;\n for (const slot of viewTransitionSlots) {\n const value = options[slot];\n if (value != null) filtered[slot] = value;\n }\n return filtered;\n}\n/**\n* The class a `viewTransition()` call resolves to.\n*\n* This is the whole contract between the build and the runtime: the extractor hashes the\n* options it found in the source, the generated `viewTransition()` hashes the options it\n* is called with, and the CSS only reaches the element if the two agree. They agree by\n* construction — both call this function — but only over what the extractor can see. A\n* value it cannot resolve statically is absent from its side and present on the runtime's,\n* which is why a bag has to be a static object literal to be styled at all.\n*\n* The class is used twice, as the `view-transition-class` value and as the argument to\n* `::view-transition-*(.cls)`, so the prefix applies to both.\n*/\nfunction viewTransitionClassName(options, prefix = \"\") {\n const base = \"vt_\" + toHash(stableStringify(filterSlots(options)));\n return prefix ? prefix + \"-\" + base : base;\n}\n//#endregion\nexport { cloneStyles, compact, createCss, createCssUncached, createMergeCss, createPatternFns, filterBaseConditions, getPatternStyles, getRecipeClassNames, getRecipeIdentity, getSlotCompoundVariant, getSlotRecipes, hypenateProperty, isBaseCondition, isObject, leafClass, mapObject, memo, mergeProps, splitProps, toHash, uniq, viewTransitionClassName, walkObject, withoutSpace };\n";
615
615
  //#endregion
616
616
  //#region src/artifacts/js/helpers.ts
617
617
  function generateHelpers() {
@@ -665,10 +665,65 @@ function generatePackageJson(ctx) {
665
665
  name: toPackageName(ctx.config.outdir),
666
666
  type: "module",
667
667
  private: true,
668
- sideEffects: ["*.css", "**/*.css"]
668
+ sideEffects: ["*.css", "**/*.css"],
669
+ exports: generatePackageExports(ctx)
669
670
  }, null, 2) + "\n" };
670
671
  }
671
672
  /**
673
+ * The entry points this output offers, and — where it is resolved as a package — the only
674
+ * paths into it.
675
+ *
676
+ * Two things this buys, and one it does not.
677
+ *
678
+ * It makes the entry points resolve under `node16`/`nodenext`. Without a map, those modes do
679
+ * no directory-index lookup, so `styled-system/tokens` does not resolve at all and the
680
+ * artifact has to be spelled `styled-system/tokens/index.mjs` — a workaround
681
+ * `token-references.ts` still has to recognise because people write it. Declaring `./tokens`
682
+ * is what makes the ordinary spelling work.
683
+ *
684
+ * It states the boundary. `css/merge-css`, `css/utilities`, `tokens/tokens` and `helpers`
685
+ * exist to be imported by the modules beside them, not by an app; a relative import inside
686
+ * the package is unaffected by this map, an external one now fails.
687
+ *
688
+ * What it does not do is enforce that against the common setup. The generated directory
689
+ * usually lives in the project and is reached through a `paths` alias —
690
+ * `"styled-system/*": ["./styled-system/*"]` — and a `paths` mapping resolves straight to the
691
+ * filesystem, so no `exports` map is consulted. There is nothing this file can do about that;
692
+ * the enforcement lands where the output is consumed as a real package, which is the
693
+ * component-library layout `emit-pkg` produces.
694
+ *
695
+ * `./types` carries no runtime target because the directory holds only declarations. A type
696
+ * import resolves; a value import fails, which is the truth about it.
697
+ */
698
+ function generatePackageExports(ctx, base) {
699
+ const path = (...parts) => [
700
+ ".",
701
+ base,
702
+ ...parts
703
+ ].filter(Boolean).join("/");
704
+ const entry = (dir) => ({
705
+ types: path(ctx.file.extDts(`${dir}/index`)),
706
+ default: path(ctx.file.ext(`${dir}/index`))
707
+ });
708
+ const exports = {};
709
+ const add = (dir) => {
710
+ const target = entry(dir);
711
+ exports[`./${dir}`] = target;
712
+ exports[`./${ctx.file.ext(`${dir}/index`)}`] = target;
713
+ };
714
+ add("css");
715
+ add("tokens");
716
+ if (!ctx.patterns.isEmpty()) add("patterns");
717
+ if (!ctx.recipes.isEmpty()) add("recipes");
718
+ if (ctx.config.theme?.variants) add("themes");
719
+ exports["./types"] = { types: path(ctx.file.extDts("types/index")) };
720
+ exports["./styles.css"] = path("styles.css");
721
+ exports["./styles/*"] = path("styles/*");
722
+ exports["./specs/*"] = path("specs/*");
723
+ exports["./package.json"] = path("package.json");
724
+ return exports;
725
+ }
726
+ /**
672
727
  * `outdir` is a path, npm names are not: it may be nested (`src/styled-system`), and
673
728
  * npm rejects uppercase, a leading dot or underscore, and anything outside its
674
729
  * url-safe set. Path segments are joined rather than dropped so that nested outputs
@@ -683,12 +738,12 @@ function generatePattern(ctx, filters) {
683
738
  if (ctx.patterns.isEmpty()) return;
684
739
  return ctx.patterns.filterDetails(filters).map((pattern) => {
685
740
  const { baseName, config, dashName, upperName, styleFnName, blocklistType } = pattern;
686
- const { properties, transform, strict, description, defaultValues, deprecated } = config;
741
+ const { properties, transform, cssProps, description, defaultValues, deprecated } = config;
687
742
  const patternConfigFn = stringify$1(compact({
688
743
  transform,
689
744
  defaultValues
690
745
  })) ?? "";
691
- const helperImports = ["getPatternStyles, patternFns, memo"];
746
+ const helperImports = ["getPatternStyles, createPatternFns, memo"];
692
747
  if (patternConfigFn.includes("__spreadValues")) helperImports.push("__spreadValues");
693
748
  if (patternConfigFn.includes("__objRest")) helperImports.push("__objRest");
694
749
  return {
@@ -707,18 +762,8 @@ function generatePattern(ctx, filters) {
707
762
  }).join("\n ")}
708
763
  }
709
764
 
710
- ${strict ? outdent`
711
- interface ${upperName}Styles extends ${upperName}Properties {}
712
-
713
- interface ${upperName}PatternFn {
714
- (styles?: ${upperName}Styles): string
715
- raw: (styles?: ${upperName}Styles) => SystemStyleObject
716
- }
717
-
718
- ${ctx.file.jsDocComment(description, { deprecated })}
719
- export declare const ${baseName}: ${upperName}PatternFn;
720
- ` : outdent`
721
- interface ${upperName}Styles extends ${upperName}Properties, DistributiveOmit<SystemStyleObject, keyof ${upperName}Properties ${blocklistType}> {}
765
+ ${outdent`
766
+ interface ${upperName}Styles extends ${upperName}Properties${cssProps === "none" ? "" : `, DistributiveOmit<SystemStyleObject, keyof ${upperName}Properties ${blocklistType}>`} {}
722
767
 
723
768
  interface ${upperName}PatternFn {
724
769
  (styles?: ${upperName}Styles): string
@@ -733,12 +778,23 @@ function generatePattern(ctx, filters) {
733
778
  js: outdent`
734
779
  ${ctx.file.import(helperImports.join(", "), "../helpers")}
735
780
  ${ctx.file.import("css", "../css/index")}
781
+ ${ctx.file.import("token", "../tokens/index")}
782
+
783
+ /**
784
+ * The transform's token lookup, answered by the generated tokens artifact.
785
+ *
786
+ * Read from there rather than from a copy emitted here, so the browser cannot disagree with
787
+ * the build about a token's variable name — both come from the same generated source. The
788
+ * artifact is shared with any other \`token()\` use in the app, so it is deduped rather than
789
+ * paid twice.
790
+ */
791
+ const patternHelpers = /* @__PURE__ */ createPatternFns((path, fallback) => token(path) ?? fallback)
736
792
 
737
793
  const ${baseName}Config = ${patternConfigFn.replace(`{transform`, `{\ntransform`).replace(`,defaultValues`, `,\ndefaultValues`)}
738
794
 
739
795
  export const ${styleFnName} = (styles = {}) => {
740
796
  const _styles = getPatternStyles(${baseName}Config, styles)
741
- return ${baseName}Config.transform(_styles, patternFns)
797
+ return ${baseName}Config.transform(_styles, patternHelpers)
742
798
  }
743
799
 
744
800
  export const ${baseName} = /* @__PURE__ */ memo((styles) => css(${styleFnName}(styles)))
@@ -812,7 +868,7 @@ function generateCreateRecipe(ctx) {
812
868
  ${ctx.file.import("finalizeConditions, sortConditions", "../css/conditions")}
813
869
  ${ctx.file.import("assertCompoundVariant, getCompoundVariantCss", "../css/cva")}
814
870
  ${ctx.file.import("cx", "../css/cx")}
815
- ${ctx.file.import("compact, createCssUncached, splitProps, toHash, uniq, withoutSpace", "../helpers")}
871
+ ${ctx.file.import("compact, createCssUncached, getRecipeClassNames, splitProps, toHash, uniq, withoutSpace", "../helpers")}
816
872
 
817
873
  /**
818
874
  * What \`createCss\` does to a class name: prefix it, and hash it when \`hash.className\`
@@ -827,6 +883,37 @@ function generateCreateRecipe(ctx) {
827
883
  export const formatRecipeClass = ${hash.className ? `(className) => withPrefix((${utility.toHash})([className], toHash))` : `withPrefix`}
828
884
 
829
885
  export const createRecipe = (name, defaultVariants, compoundVariants, variantMap) => {
886
+ /**
887
+ * \`variantMap\` as \`getRecipeClassNames\` wants it — value *keys* rather than a list.
888
+ *
889
+ * Built once per recipe at module init. The lookup needs \`Object.hasOwn\`, and an array
890
+ * answers that for its indices rather than its contents, so a list cannot be passed
891
+ * straight through.
892
+ */
893
+ const variantValues = variantMap
894
+ ? Object.fromEntries(
895
+ Object.entries(variantMap).map(([variant, values]) => [
896
+ variant,
897
+ Object.fromEntries(values.map((value) => [value, true])),
898
+ ]),
899
+ )
900
+ : undefined
901
+
902
+ /**
903
+ * Whether every selected value is a plain scalar, and so nameable without \`createCss\`.
904
+ *
905
+ * \`typeof value === 'object'\` covers a conditional value like \`{ base: 'sm', md: 'lg' }\`,
906
+ * whose classes carry condition prefixes only \`createCss\` can build. It also catches
907
+ * \`null\`, which \`compact\` keeps — that goes to the path below and comes out as it did
908
+ * before, since \`createCss\` names no class for a null value either.
909
+ */
910
+ const isScalarSelection = (declared) => {
911
+ for (const key in declared) {
912
+ if (typeof declared[key] === 'object') return false
913
+ }
914
+ return true
915
+ }
916
+
830
917
  const getVariantProps = (variants) => {
831
918
  return {
832
919
  [name]: '__ignore__',
@@ -836,6 +923,19 @@ function generateCreateRecipe(ctx) {
836
923
  };
837
924
 
838
925
  const recipeFn = (variants) => {
926
+ const declaredProps = getVariantProps(variants)
927
+
928
+ // A scalar selection names its classes by lookup: the recipe's own class plus one per
929
+ // selected variant, which is all \`createCss\` was deriving here. Measured at 4.1x the
930
+ // \`createCss\` path on a three-variant recipe. The gain is on a \`memo\` miss — the first
931
+ // call for each variant combination — since a hit never reaches this at all.
932
+ //
933
+ // Compound variants stay absent, as they are on the path below: their rule selects on the
934
+ // variant classes already named, so it applies without one of its own.
935
+ if (variantValues && isScalarSelection(declaredProps)) {
936
+ return getRecipeClassNames(name, variantValues, declaredProps, '${utility.separator}', formatRecipeClass)
937
+ }
938
+
839
939
  const transform = (prop, value) => {
840
940
  assertCompoundVariant(name, compoundVariants, variants, prop)
841
941
 
@@ -872,7 +972,7 @@ function generateCreateRecipe(ctx) {
872
972
  //
873
973
  // Filtered here rather than in \`getVariantProps\`, which is public and is what compound
874
974
  // variants are matched against.
875
- const declared = getVariantProps(variants)
975
+ const declared = declaredProps
876
976
  const recipeStyles = variantMap
877
977
  ? Object.fromEntries(
878
978
  Object.entries(declared).filter(([prop, value]) => {
@@ -1425,7 +1525,7 @@ function generateTokenJs(ctx) {
1425
1525
  }
1426
1526
  //#endregion
1427
1527
  //#region src/artifacts/generated/composition.d.ts.json
1428
- var content$7 = "import type { CompositionStyleObject } from './system-types'\n\ninterface Token<T> {\n value: T\n description?: string\n}\n\ninterface Recursive<T> {\n [key: string]: Recursive<T> | T\n}\n\n/* -----------------------------------------------------------------------------\n * Text styles\n * -----------------------------------------------------------------------------*/\n\ntype TextStyleProperty =\n | 'color'\n | 'direction'\n | 'font'\n | 'fontFamily'\n | 'fontFeatureSettings'\n | 'fontKerning'\n | 'fontLanguageOverride'\n | 'fontOpticalSizing'\n | 'fontPalette'\n | 'fontSize'\n | 'fontSizeAdjust'\n | 'fontStretch'\n | 'fontStyle'\n | 'fontSynthesis'\n | 'fontVariant'\n | 'fontVariantAlternates'\n | 'fontVariantCaps'\n | 'fontVariantLigatures'\n | 'fontVariantNumeric'\n | 'fontVariantPosition'\n | 'fontVariationSettings'\n | 'fontWeight'\n | 'hangingPunctuation'\n | 'hypens'\n | 'hyphenateCharacter'\n | 'hyphenateLimitChars'\n | 'letterSpacing'\n | 'lineBreak'\n | 'lineHeight'\n | 'quotes'\n | 'overflowWrap'\n | 'tabSize'\n | 'textAlign'\n | 'textAlignLast'\n | 'textBox'\n | 'textBoxEdge'\n | 'textBoxTrim'\n | 'textCombineUpright'\n | 'textDecoration'\n | 'textDecorationColor'\n | 'textDecorationLine'\n | 'textDecorationSkip'\n | 'textDecorationSkipBox'\n | 'textDecorationSkipInk'\n | 'textDecorationSkipInset'\n | 'textDecorationStyle'\n | 'textDecorationThickness'\n | 'textEmphasis'\n | 'textEmphasisColor'\n | 'textEmphasisPosition'\n | 'textEmphasisStyle'\n | 'textIndent'\n | 'textJustify'\n | 'textOrientation'\n | 'textOverflow'\n | 'textRendering'\n | 'textShadow'\n | 'textStroke'\n | 'textStrokeColor'\n | 'textStrokeWidth'\n | 'textTransform'\n | 'textUnderlineOffset'\n | 'textUnderlinePosition'\n | 'textWrap'\n | 'textWrapMode'\n | 'textWrapStyle'\n | 'unicodeBidi'\n | 'verticalAlign'\n | 'whiteSpace'\n | 'wordBreak'\n | 'wordSpacing'\n | 'writingMode'\n\nexport type TextStyle = CompositionStyleObject<TextStyleProperty>\n\nexport type TextStyles = Recursive<Token<TextStyle>>\n\n/* -----------------------------------------------------------------------------\n * Layer styles\n * -----------------------------------------------------------------------------*/\n\ntype LogicalPlacement = 'Inline' | 'Block' | 'InlineStart' | 'InlineEnd' | 'BlockStart' | 'BlockEnd'\n\ntype PhysicalPlacement = 'Top' | 'Right' | 'Bottom' | 'Left'\n\ntype Placement = PhysicalPlacement | LogicalPlacement\n\ntype Radius =\n | `Top${'Right' | 'Left'}`\n | `Bottom${'Right' | 'Left'}`\n | `Start${'Start' | 'End'}`\n | `End${'Start' | 'End'}`\n\ntype LayerStyleProperty =\n | 'aspectRatio'\n | 'background'\n | 'backgroundColor'\n | 'backgroundImage'\n | 'border'\n | 'borderColor'\n | 'borderImage'\n | 'borderImageOutset'\n | 'borderImageRepeat'\n | 'borderImageSlice'\n | 'borderImageSource'\n | 'borderImageWidth'\n | 'borderRadius'\n | 'borderStyle'\n | 'borderWidth'\n | `border${Placement}`\n | `border${Placement}Color`\n | `border${Placement}Style`\n | `border${Placement}Width`\n | 'borderRadius'\n | `border${Radius}Radius`\n | 'boxShadow'\n | 'boxShadowColor'\n | 'clipPath'\n | 'color'\n | 'contain'\n | 'content'\n | 'contentVisibility'\n | 'cursor'\n | 'display'\n | 'filter'\n | 'backdropFilter'\n | 'height'\n | 'width'\n | 'minHeight'\n | 'minWidth'\n | 'maxHeight'\n | 'maxWidth'\n | `margin${Placement}`\n | 'inset'\n | `inset${LogicalPlacement}`\n | Lowercase<PhysicalPlacement>\n | 'isolation'\n | 'mask'\n | 'maskClip'\n | 'maskComposite'\n | 'maskImage'\n | 'maskMode'\n | 'maskOrigin'\n | 'maskPosition'\n | 'maskRepeat'\n | 'maskSize'\n | 'mixBlendMode'\n | 'objectFit'\n | 'objectPosition'\n | 'opacity'\n | 'outline'\n | 'outlineColor'\n | 'outlineOffset'\n | 'outlineStyle'\n | 'outlineWidth'\n | 'overflow'\n | 'overflowX'\n | 'overflowY'\n | 'padding'\n | `padding${Placement}`\n | 'pointerEvents'\n | 'position'\n | 'resize'\n | 'transform'\n | 'transition'\n | 'visibility'\n | 'willChange'\n | 'zIndex'\n | 'backgroundBlendMode'\n | 'backgroundAttachment'\n | 'backgroundClip'\n | 'backgroundOrigin'\n | 'backgroundPosition'\n | 'backgroundRepeat'\n | 'backgroundSize'\n\nexport type LayerStyle = CompositionStyleObject<LayerStyleProperty>\n\nexport type LayerStyles = Recursive<Token<LayerStyle>>\n\n/* -----------------------------------------------------------------------------\n * Motion styles\n * -----------------------------------------------------------------------------*/\n\ntype AnimationStyleProperty =\n | 'animation'\n | 'animationComposition'\n | 'animationDelay'\n | 'animationDirection'\n | 'animationDuration'\n | 'animationFillMode'\n | 'animationIterationCount'\n | 'animationName'\n | 'animationPlayState'\n | 'animationTimingFunction'\n | 'animationRange'\n | 'animationRangeStart'\n | 'animationRangeEnd'\n | 'animationTimeline'\n | 'transformOrigin'\n\nexport type AnimationStyle = CompositionStyleObject<AnimationStyleProperty>\n\nexport type AnimationStyles = Recursive<Token<AnimationStyle>>\n\nexport interface CompositionStyles {\n textStyles: TextStyles\n layerStyles: LayerStyles\n animationStyles: AnimationStyles\n}\n";
1528
+ var content$7 = "import type { CompositionStyleObject } from './system-types'\n\ninterface Token<T> {\n value: T\n description?: string\n}\n\ninterface Recursive<T> {\n [key: string]: Recursive<T> | T\n}\n\n/* -----------------------------------------------------------------------------\n * Text styles\n * -----------------------------------------------------------------------------*/\n\ntype TextStyleProperty =\n | 'color'\n | 'direction'\n | 'font'\n | 'fontFamily'\n | 'fontFeatureSettings'\n | 'fontKerning'\n | 'fontLanguageOverride'\n | 'fontOpticalSizing'\n | 'fontPalette'\n | 'fontSize'\n | 'fontSizeAdjust'\n | 'fontStretch'\n | 'fontStyle'\n | 'fontSynthesis'\n | 'fontVariant'\n | 'fontVariantAlternates'\n | 'fontVariantCaps'\n | 'fontVariantLigatures'\n | 'fontVariantNumeric'\n | 'fontVariantPosition'\n | 'fontVariationSettings'\n | 'fontWeight'\n | 'hangingPunctuation'\n | 'hyphens'\n | 'hyphenateCharacter'\n | 'hyphenateLimitChars'\n | 'letterSpacing'\n | 'lineBreak'\n | 'lineHeight'\n | 'quotes'\n | 'overflowWrap'\n | 'tabSize'\n | 'textAlign'\n | 'textAlignLast'\n | 'textBox'\n | 'textBoxEdge'\n | 'textBoxTrim'\n | 'textCombineUpright'\n | 'textDecoration'\n | 'textDecorationColor'\n | 'textDecorationLine'\n | 'textDecorationSkip'\n | 'textDecorationSkipBox'\n | 'textDecorationSkipInk'\n | 'textDecorationSkipInset'\n | 'textDecorationStyle'\n | 'textDecorationThickness'\n | 'textEmphasis'\n | 'textEmphasisColor'\n | 'textEmphasisPosition'\n | 'textEmphasisStyle'\n | 'textIndent'\n | 'textJustify'\n | 'textOrientation'\n | 'textOverflow'\n | 'textRendering'\n | 'textShadow'\n | 'textStroke'\n | 'textStrokeColor'\n | 'textStrokeWidth'\n | 'textTransform'\n | 'textUnderlineOffset'\n | 'textUnderlinePosition'\n | 'textWrap'\n | 'textWrapMode'\n | 'textWrapStyle'\n | 'unicodeBidi'\n | 'verticalAlign'\n | 'whiteSpace'\n | 'wordBreak'\n | 'wordSpacing'\n | 'writingMode'\n\nexport type TextStyle = CompositionStyleObject<TextStyleProperty>\n\nexport type TextStyles = Recursive<Token<TextStyle>>\n\n/* -----------------------------------------------------------------------------\n * Layer styles\n * -----------------------------------------------------------------------------*/\n\ntype LogicalPlacement = 'Inline' | 'Block' | 'InlineStart' | 'InlineEnd' | 'BlockStart' | 'BlockEnd'\n\ntype PhysicalPlacement = 'Top' | 'Right' | 'Bottom' | 'Left'\n\ntype Placement = PhysicalPlacement | LogicalPlacement\n\ntype Radius =\n | `Top${'Right' | 'Left'}`\n | `Bottom${'Right' | 'Left'}`\n | `Start${'Start' | 'End'}`\n | `End${'Start' | 'End'}`\n\ntype LayerStyleProperty =\n | 'aspectRatio'\n | 'background'\n | 'backgroundColor'\n | 'backgroundImage'\n | 'border'\n | 'borderColor'\n | 'borderImage'\n | 'borderImageOutset'\n | 'borderImageRepeat'\n | 'borderImageSlice'\n | 'borderImageSource'\n | 'borderImageWidth'\n | 'borderRadius'\n | 'borderStyle'\n | 'borderWidth'\n | `border${Placement}`\n | `border${Placement}Color`\n | `border${Placement}Style`\n | `border${Placement}Width`\n | 'borderRadius'\n | `border${Radius}Radius`\n | 'boxShadow'\n | 'boxShadowColor'\n | 'clipPath'\n | 'color'\n | 'contain'\n | 'content'\n | 'contentVisibility'\n | 'cursor'\n | 'display'\n | 'filter'\n | 'backdropFilter'\n | 'height'\n | 'width'\n | 'minHeight'\n | 'minWidth'\n | 'maxHeight'\n | 'maxWidth'\n | `margin${Placement}`\n | 'inset'\n | `inset${LogicalPlacement}`\n | Lowercase<PhysicalPlacement>\n | 'isolation'\n | 'mask'\n | 'maskClip'\n | 'maskComposite'\n | 'maskImage'\n | 'maskMode'\n | 'maskOrigin'\n | 'maskPosition'\n | 'maskRepeat'\n | 'maskSize'\n | 'mixBlendMode'\n | 'objectFit'\n | 'objectPosition'\n | 'opacity'\n | 'outline'\n | 'outlineColor'\n | 'outlineOffset'\n | 'outlineStyle'\n | 'outlineWidth'\n | 'overflow'\n | 'overflowX'\n | 'overflowY'\n | 'padding'\n | `padding${Placement}`\n | 'pointerEvents'\n | 'position'\n | 'resize'\n | 'transform'\n | 'transition'\n | 'visibility'\n | 'willChange'\n | 'zIndex'\n | 'backgroundBlendMode'\n | 'backgroundAttachment'\n | 'backgroundClip'\n | 'backgroundOrigin'\n | 'backgroundPosition'\n | 'backgroundRepeat'\n | 'backgroundSize'\n\nexport type LayerStyle = CompositionStyleObject<LayerStyleProperty>\n\nexport type LayerStyles = Recursive<Token<LayerStyle>>\n\n/* -----------------------------------------------------------------------------\n * Motion styles\n * -----------------------------------------------------------------------------*/\n\ntype AnimationStyleProperty =\n | 'animation'\n | 'animationComposition'\n | 'animationDelay'\n | 'animationDirection'\n | 'animationDuration'\n | 'animationFillMode'\n | 'animationIterationCount'\n | 'animationName'\n | 'animationPlayState'\n | 'animationTimingFunction'\n | 'animationRange'\n | 'animationRangeStart'\n | 'animationRangeEnd'\n | 'animationTimeline'\n | 'transformOrigin'\n\nexport type AnimationStyle = CompositionStyleObject<AnimationStyleProperty>\n\nexport type AnimationStyles = Recursive<Token<AnimationStyle>>\n\nexport interface CompositionStyles {\n textStyles: TextStyles\n layerStyles: LayerStyles\n animationStyles: AnimationStyles\n}\n";
1429
1529
  //#endregion
1430
1530
  //#region src/artifacts/generated/csstype.d.ts.json
1431
1531
  var content$6 = "export {};\n\nexport type PropertyValue<TValue> =\n TValue extends Array<infer AValue> ? Array<AValue extends infer TUnpacked & {} ? TUnpacked : AValue> : TValue extends infer TUnpacked & {} ? TUnpacked : TValue;\n\nexport type Fallback<T> = { [P in keyof T]: T[P] | readonly NonNullable<T[P]>[] };\n\nexport interface StandardLonghandProperties<TLength = (string & {}) | 0, TTime = string & {}> {\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | <color>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **93** | **92** | **15.4** | **93** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/accent-color\n */\n accentColor?: Property.AccentColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **29** | **28** | **9** | **12** | **11** |\n * | 21 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/align-content\n */\n alignContent?: Property.AlignContent | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ] | anchor-center`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **29** | **20** | **9** | **12** | **11** |\n * | 21 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/align-items\n */\n alignItems?: Property.AlignItems | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position> | anchor-center`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **29** | **20** | **9** | **12** | **10** |\n * | 21 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/align-self\n */\n alignSelf?: Property.AlignSelf | undefined;\n /**\n * **Syntax**: `[ normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position> ]#`\n *\n * **Initial value**: `normal`\n */\n alignTracks?: Property.AlignTracks | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `baseline | alphabetic | ideographic | middle | central | mathematical | text-before-edge | text-after-edge`\n *\n * **Initial value**: `baseline`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **1** | No | **5.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/alignment-baseline\n */\n alignmentBaseline?: Property.AlignmentBaseline | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | <dashed-ident>#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :---------: | :----: | :-----: | :-: |\n * | **125** | **preview** | **26** | **125** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/anchor-name\n */\n anchorName?: Property.AnchorName | undefined;\n /**\n * **Syntax**: `none | all | <dashed-ident>#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :---------: | :----: | :-----: | :-: |\n * | **131** | **preview** | **26** | **131** | No |\n */\n anchorScope?: Property.AnchorScope | undefined;\n /**\n * Since July 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<single-animation-composition>#`\n *\n * **Initial value**: `replace`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **112** | **115** | **16** | **112** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-composition\n */\n animationComposition?: Property.AnimationComposition | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-delay\n */\n animationDelay?: Property.AnimationDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-direction>#`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-direction\n */\n animationDirection?: Property.AnimationDirection | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ auto | <time [0s,∞]> ]#`\n *\n * **Initial value**: `0s`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-duration\n */\n animationDuration?: Property.AnimationDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-fill-mode>#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 5 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-fill-mode\n */\n animationFillMode?: Property.AnimationFillMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-iteration-count>#`\n *\n * **Initial value**: `1`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-iteration-count\n */\n animationIterationCount?: Property.AnimationIterationCount | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ none | <keyframes-name> ]#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-name\n */\n animationName?: Property.AnimationName | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-play-state>#`\n *\n * **Initial value**: `running`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-play-state\n */\n animationPlayState?: Property.AnimationPlayState | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-range-end\n */\n animationRangeEnd?: Property.AnimationRangeEnd<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-range-start\n */\n animationRangeStart?: Property.AnimationRangeStart<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<single-animation-timeline>#`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-timeline\n */\n animationTimeline?: Property.AnimationTimeline | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-timing-function\n */\n animationTimingFunction?: Property.AnimationTimingFunction | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | auto | <compat-auto> | <compat-special>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :------: | :-: |\n * | **84** | **80** | **15.4** | **84** | No |\n * | 1 _-x-_ | 1 _-x-_ | 3 _-x-_ | 12 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/appearance\n */\n appearance?: Property.Appearance | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `auto || <ratio>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **88** | **89** | **15** | **88** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/aspect-ratio\n */\n aspectRatio?: Property.AspectRatio | undefined;\n /**\n * Since September 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `none | <filter-value-list>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **76** | **103** | **18** | **79** | No |\n * | | | 9 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/backdrop-filter\n */\n backdropFilter?: Property.BackdropFilter | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `visible | hidden`\n *\n * **Initial value**: `visible`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :------: | :-------: | :----: | :----: |\n * | **36** | **16** | **15.4** | **12** | **10** |\n * | 12 _-x-_ | 10 _-x-_ | 5.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/backface-visibility\n */\n backfaceVisibility?: Property.BackfaceVisibility | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<attachment>#`\n *\n * **Initial value**: `scroll`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-attachment\n */\n backgroundAttachment?: Property.BackgroundAttachment | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<blend-mode>#`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **35** | **30** | **8** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-blend-mode\n */\n backgroundBlendMode?: Property.BackgroundBlendMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-clip>#`\n *\n * **Initial value**: `border-box`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **4** | **5** | **12** | **9** |\n * | | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-clip\n */\n backgroundClip?: Property.BackgroundClip | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `transparent`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-color\n */\n backgroundColor?: Property.BackgroundColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-image>#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-image\n */\n backgroundImage?: Property.BackgroundImage | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<visual-box>#`\n *\n * **Initial value**: `padding-box`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **4** | **3** | **12** | **9** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-origin\n */\n backgroundOrigin?: Property.BackgroundOrigin | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.\n *\n * **Syntax**: `[ center | [ [ left | right | x-start | x-end ]? <length-percentage>? ]! ]#`\n *\n * **Initial value**: `0%`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **49** | **1** | **12** | **6** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-position-x\n */\n backgroundPositionX?: Property.BackgroundPositionX<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.\n *\n * **Syntax**: `[ center | [ [ top | bottom | y-start | y-end ]? <length-percentage>? ]! ]#`\n *\n * **Initial value**: `0%`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **49** | **1** | **12** | **6** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-position-y\n */\n backgroundPositionY?: Property.BackgroundPositionY<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<repeat-style>#`\n *\n * **Initial value**: `repeat`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-repeat\n */\n backgroundRepeat?: Property.BackgroundRepeat | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-size>#`\n *\n * **Initial value**: `auto auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :---: |\n * | **3** | **4** | **5** | **12** | **9** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-size\n */\n backgroundSize?: Property.BackgroundSize<TLength> | undefined;\n /**\n * **Syntax**: `<length-percentage> | sub | super | baseline`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **1** | No | **4** | **79** | No |\n */\n baselineShift?: Property.BaselineShift<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'width'>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :--------------------------: | :-----: | :----------------------------: | :----: | :-: |\n * | **57** | **41** | **12.1** | **79** | No |\n * | 8 _(-webkit-logical-height)_ | | 5.1 _(-webkit-logical-height)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/block-size\n */\n blockSize?: Property.BlockSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-color'>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-end-color\n */\n borderBlockEndColor?: Property.BorderBlockEndColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-style'>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-end-style\n */\n borderBlockEndStyle?: Property.BorderBlockEndStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-end-width\n */\n borderBlockEndWidth?: Property.BorderBlockEndWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-color'>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-start-color\n */\n borderBlockStartColor?: Property.BorderBlockStartColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-style'>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-start-style\n */\n borderBlockStartStyle?: Property.BorderBlockStartStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-start-width\n */\n borderBlockStartWidth?: Property.BorderBlockStartWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'border-top-color'>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-bottom-color\n */\n borderBottomColor?: Property.BorderBottomColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :---: |\n * | **4** | **4** | **5** | **12** | **9** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-bottom-left-radius\n */\n borderBottomLeftRadius?: Property.BorderBottomLeftRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :---: |\n * | **4** | **4** | **5** | **12** | **9** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-bottom-right-radius\n */\n borderBottomRightRadius?: Property.BorderBottomRightRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-style>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-bottom-style\n */\n borderBottomStyle?: Property.BorderBottomStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-bottom-width\n */\n borderBottomWidth?: Property.BorderBottomWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `separate | collapse`\n *\n * **Initial value**: `separate`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **1** | **1.1** | **12** | **5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-collapse\n */\n borderCollapse?: Property.BorderCollapse | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<'border-top-left-radius'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **89** | **66** | **15** | **89** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-end-end-radius\n */\n borderEndEndRadius?: Property.BorderEndEndRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<'border-top-left-radius'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **89** | **66** | **15** | **89** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-end-start-radius\n */\n borderEndStartRadius?: Property.BorderEndStartRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ <length [0,∞]> | <number [0,∞]> ]{1,4} `\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **15** | **15** | **6** | **12** | **11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-image-outset\n */\n borderImageOutset?: Property.BorderImageOutset<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2016.\n *\n * **Syntax**: `[ stretch | repeat | round | space ]{1,2}`\n *\n * **Initial value**: `stretch`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **15** | **15** | **6** | **12** | **11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-image-repeat\n */\n borderImageRepeat?: Property.BorderImageRepeat | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ <number [0,∞]> | <percentage [0,∞]> ]{1,4} && fill?`\n *\n * **Initial value**: `100%`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **15** | **15** | **6** | **12** | **11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-image-slice\n */\n borderImageSlice?: Property.BorderImageSlice | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | <image>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **15** | **15** | **6** | **12** | **11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-image-source\n */\n borderImageSource?: Property.BorderImageSource | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ <length-percentage [0,∞]> | <number [0,∞]> | auto ]{1,4}`\n *\n * **Initial value**: `1`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **16** | **13** | **6** | **12** | **11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-image-width\n */\n borderImageWidth?: Property.BorderImageWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-color'>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-------------------------: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | | 3 _(-moz-border-end-color)_ | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-end-color\n */\n borderInlineEndColor?: Property.BorderInlineEndColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-style'>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-------------------------: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | | 3 _(-moz-border-end-style)_ | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-end-style\n */\n borderInlineEndStyle?: Property.BorderInlineEndStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-------------------------: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | | 3 _(-moz-border-end-width)_ | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-end-width\n */\n borderInlineEndWidth?: Property.BorderInlineEndWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-color'>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :---------------------------: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | | 3 _(-moz-border-start-color)_ | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-start-color\n */\n borderInlineStartColor?: Property.BorderInlineStartColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-style'>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :---------------------------: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | | 3 _(-moz-border-start-style)_ | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-start-style\n */\n borderInlineStartStyle?: Property.BorderInlineStartStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-start-width\n */\n borderInlineStartWidth?: Property.BorderInlineStartWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-left-color\n */\n borderLeftColor?: Property.BorderLeftColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-style>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-left-style\n */\n borderLeftStyle?: Property.BorderLeftStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-left-width\n */\n borderLeftWidth?: Property.BorderLeftWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-right-color\n */\n borderRightColor?: Property.BorderRightColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-style>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-right-style\n */\n borderRightStyle?: Property.BorderRightStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-right-width\n */\n borderRightWidth?: Property.BorderRightWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length>{1,2}`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-spacing\n */\n borderSpacing?: Property.BorderSpacing<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<'border-top-left-radius'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **89** | **66** | **15** | **89** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-start-end-radius\n */\n borderStartEndRadius?: Property.BorderStartEndRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<'border-top-left-radius'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **89** | **66** | **15** | **89** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-start-start-radius\n */\n borderStartStartRadius?: Property.BorderStartStartRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-top-color\n */\n borderTopColor?: Property.BorderTopColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :---: |\n * | **4** | **4** | **5** | **12** | **9** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-top-left-radius\n */\n borderTopLeftRadius?: Property.BorderTopLeftRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :---: |\n * | **4** | **4** | **5** | **12** | **9** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-top-right-radius\n */\n borderTopRightRadius?: Property.BorderTopRightRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-style>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-top-style\n */\n borderTopStyle?: Property.BorderTopStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-top-width\n */\n borderTopWidth?: Property.BorderTopWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <length-percentage> | <anchor()> | <anchor-size()>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/bottom\n */\n bottom?: Property.Bottom<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `slice | clone`\n *\n * **Initial value**: `slice`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :---------: | :------: | :-: |\n * | **130** | **32** | **7** _-x-_ | **130** | No |\n * | 22 _-x-_ | | | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/box-decoration-break\n */\n boxDecorationBreak?: Property.BoxDecorationBreak | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | <shadow>#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :---: |\n * | **10** | **4** | **5.1** | **12** | **9** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/box-shadow\n */\n boxShadow?: Property.BoxShadow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `content-box | border-box`\n *\n * **Initial value**: `content-box`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :---: |\n * | **10** | **29** | **5.1** | **12** | **8** |\n * | 1 _-x-_ | 1 _-x-_ | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/box-sizing\n */\n boxSizing?: Property.BoxSizing | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2019.\n *\n * **Syntax**: `auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **50** | **65** | **10** | **12** | **10** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/break-after\n */\n breakAfter?: Property.BreakAfter | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2019.\n *\n * **Syntax**: `auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **50** | **65** | **10** | **12** | **10** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/break-before\n */\n breakBefore?: Property.BreakBefore | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2019.\n *\n * **Syntax**: `auto | avoid | avoid-page | avoid-column | avoid-region`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **50** | **65** | **10** | **12** | **10** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/break-inside\n */\n breakInside?: Property.BreakInside | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `top | bottom`\n *\n * **Initial value**: `top`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/caption-side\n */\n captionSide?: Property.CaptionSide | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | <color>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **53** | **11.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/caret-color\n */\n caretColor?: Property.CaretColor | undefined;\n /**\n * **Syntax**: `auto | bar | block | underscore`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :--: | :-: |\n * | No | No | No | No | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/caret-shape\n */\n caretShape?: Property.CaretShape | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | left | right | both | inline-start | inline-end`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/clear\n */\n clear?: Property.Clear | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<clip-source> | [ <basic-shape> || <geometry-box> ] | none`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **55** | **3.5** | **9.1** | **79** | **10** |\n * | 23 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/clip-path\n */\n clipPath?: Property.ClipPath | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `nonzero | evenodd`\n *\n * **Initial value**: `nonzero`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :----: | :-: |\n * | **≤15** | **3.5** | **≤5** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/clip-rule\n */\n clipRule?: Property.ClipRule | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `canvastext`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/color\n */\n color?: Property.Color | undefined;\n /**\n * Since May 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `economy | exact`\n *\n * **Initial value**: `economy`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----------------: | :------: | :------: | :-: |\n * | **136** | **97** | **15.4** | **136** | No |\n * | 17 _-x-_ | 48 _(color-adjust)_ | 6 _-x-_ | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/print-color-adjust\n */\n colorAdjust?: Property.PrintColorAdjust | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | sRGB | linearRGB`\n *\n * **Initial value**: `linearRGB`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **1** | **3** | **3** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/color-interpolation-filters\n */\n colorInterpolationFilters?: Property.ColorInterpolationFilters | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2022.\n *\n * **Syntax**: `normal | [ light | dark | <custom-ident> ]+ && only?`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **81** | **96** | **13** | **81** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/color-scheme\n */\n colorScheme?: Property.ColorScheme | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<integer> | auto`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **50** | **52** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-count\n */\n columnCount?: Property.ColumnCount | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `auto | balance`\n *\n * **Initial value**: `balance`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :----: |\n * | **50** | **52** | **9** | **12** | **10** |\n * | | | 8 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-fill\n */\n columnFill?: Property.ColumnFill | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | <length-percentage>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **1** | **1.5** | **3** | **12** | **10** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-gap\n */\n columnGap?: Property.ColumnGap<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **50** | **52** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-rule-color\n */\n columnRuleColor?: Property.ColumnRuleColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'border-style'>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **50** | **52** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-rule-style\n */\n columnRuleStyle?: Property.ColumnRuleStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'border-width'>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **50** | **52** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-rule-width\n */\n columnRuleWidth?: Property.ColumnRuleWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `none | all`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :----: | :----: |\n * | **50** | **71** | **9** | **12** | **10** |\n * | 6 _-x-_ | | 5.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-span\n */\n columnSpan?: Property.ColumnSpan | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since November 2016.\n *\n * **Syntax**: `<length> | auto`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **50** | **50** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-width\n */\n columnWidth?: Property.ColumnWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | strict | content | [ [ size || inline-size ] || layout || style || paint ]`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **52** | **69** | **15.4** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/contain\n */\n contain?: Property.Contain | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto? [ none | <length> ]`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **95** | **107** | **17** | **95** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/contain-intrinsic-block-size\n */\n containIntrinsicBlockSize?: Property.ContainIntrinsicBlockSize<TLength> | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto? [ none | <length> ]`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **95** | **107** | **17** | **95** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/contain-intrinsic-height\n */\n containIntrinsicHeight?: Property.ContainIntrinsicHeight<TLength> | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto? [ none | <length> ]`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **95** | **107** | **17** | **95** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/contain-intrinsic-inline-size\n */\n containIntrinsicInlineSize?: Property.ContainIntrinsicInlineSize<TLength> | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto? [ none | <length> ]`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **95** | **107** | **17** | **95** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/contain-intrinsic-width\n */\n containIntrinsicWidth?: Property.ContainIntrinsicWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since February 2023.\n *\n * **Syntax**: `none | <custom-ident>+`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **105** | **110** | **16** | **105** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/container-name\n */\n containerName?: Property.ContainerName | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since February 2023.\n *\n * **Syntax**: `normal | [ [ size | inline-size ] || scroll-state ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **105** | **110** | **16** | **105** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/container-type\n */\n containerType?: Property.ContainerType | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | none | [ <content-replacement> | <content-list> ] [ / [ <string> | <counter> | <attr()> ]+ ]?`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/content\n */\n content?: Property.Content | undefined;\n /**\n * Since September 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `visible | auto | hidden`\n *\n * **Initial value**: `visible`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **85** | **125** | **18** | **85** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/content-visibility\n */\n contentVisibility?: Property.ContentVisibility | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ <counter-name> <integer>? ]+ | none`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **2** | **1** | **3** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/counter-increment\n */\n counterIncrement?: Property.CounterIncrement | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ <counter-name> <integer>? | <reversed-counter-name> <integer>? ]+ | none`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **2** | **1** | **3** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/counter-reset\n */\n counterReset?: Property.CounterReset | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `[ <counter-name> <integer>? ]+ | none`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **85** | **68** | **17.2** | **85** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/counter-set\n */\n counterSet?: Property.CounterSet | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since December 2021.\n *\n * **Syntax**: `[ [ <url> [ <x> <y> ]? , ]* <cursor-predefined> ]`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **1** | **1.2** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/cursor\n */\n cursor?: Property.Cursor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `<length> | <percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **43** | **69** | **9** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/cx\n */\n cx?: Property.Cx<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `<length> | <percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **43** | **69** | **9** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/cy\n */\n cy?: Property.Cy<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | path(<string>)`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **52** | **97** | No | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/d\n */\n d?: Property.D | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `ltr | rtl`\n *\n * **Initial value**: `ltr`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **2** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/direction\n */\n direction?: Property.Direction | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>`\n *\n * **Initial value**: `inline`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/display\n */\n display?: Property.Display | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | text-bottom | alphabetic | ideographic | middle | central | mathematical | hanging | text-top`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **1** | **1** | **4** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/dominant-baseline\n */\n dominantBaseline?: Property.DominantBaseline | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `show | hide`\n *\n * **Initial value**: `show`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **1** | **1.2** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/empty-cells\n */\n emptyCells?: Property.EmptyCells | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `content | fixed`\n *\n * **Initial value**: `fixed`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :---------: | :-----: | :-: |\n * | **123** | No | **preview** | **123** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/field-sizing\n */\n fieldSizing?: Property.FieldSizing | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<paint>`\n *\n * **Initial value**: `black`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/fill\n */\n fill?: Property.Fill | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<'opacity'>`\n *\n * **Initial value**: `1`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/fill-opacity\n */\n fillOpacity?: Property.FillOpacity | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `nonzero | evenodd`\n *\n * **Initial value**: `nonzero`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/fill-rule\n */\n fillRule?: Property.FillRule | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.\n *\n * **Syntax**: `none | <filter-value-list>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :-: |\n * | **53** | **35** | **9.1** | **12** | No |\n * | 18 _-x-_ | | 6 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/filter\n */\n filter?: Property.Filter | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `content | <'width'>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **29** | **22** | **9** | **12** | **11** |\n * | 22 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flex-basis\n */\n flexBasis?: Property.FlexBasis<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `row | row-reverse | column | column-reverse`\n *\n * **Initial value**: `row`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :------: |\n * | **29** | **22** | **9** | **12** | **11** |\n * | 21 _-x-_ | | 7 _-x-_ | | 10 _-x-_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flex-direction\n */\n flexDirection?: Property.FlexDirection | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----------------------: |\n * | **29** | **20** | **9** | **12** | **11** |\n * | 22 _-x-_ | | 7 _-x-_ | | 10 _(-ms-flex-positive)_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flex-grow\n */\n flexGrow?: Property.FlexGrow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `1`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **29** | **20** | **9** | **12** | **10** |\n * | 22 _-x-_ | | 8 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flex-shrink\n */\n flexShrink?: Property.FlexShrink | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `nowrap | wrap | wrap-reverse`\n *\n * **Initial value**: `nowrap`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **29** | **28** | **9** | **12** | **11** |\n * | 21 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flex-wrap\n */\n flexWrap?: Property.FlexWrap | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `left | right | none | inline-start | inline-end`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/float\n */\n float?: Property.Float | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `black`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **5** | **3** | **6** | **12** | **≤11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flood-color\n */\n floodColor?: Property.FloodColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'opacity'>`\n *\n * **Initial value**: `black`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **5** | **3** | **6** | **12** | **≤11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flood-opacity\n */\n floodOpacity?: Property.FloodOpacity | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ <family-name> | <generic-family> ]#`\n *\n * **Initial value**: depends on user agent\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-family\n */\n fontFamily?: Property.FontFamily | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `normal | <feature-tag-value>#`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :------: | :-----: | :----: | :----: |\n * | **48** | **34** | **9.1** | **15** | **10** |\n * | 16 _-x-_ | 15 _-x-_ | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-feature-settings\n */\n fontFeatureSettings?: Property.FontFeatureSettings | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | normal | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **33** | **32** | **9** | **79** | No |\n * | | | 6 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-kerning\n */\n fontKerning?: Property.FontKerning | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | <string>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **143** | **34** | No | **143** | No |\n * | | 4 _-x-_ | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-language-override\n */\n fontLanguageOverride?: Property.FontLanguageOverride | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2020.\n *\n * **Syntax**: `auto | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **79** | **62** | **13.1** | **17** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-optical-sizing\n */\n fontOpticalSizing?: Property.FontOpticalSizing | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since November 2022.\n *\n * **Syntax**: `normal | light | dark | <palette-identifier> | <palette-mix()>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **101** | **107** | **15.4** | **101** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-palette\n */\n fontPalette?: Property.FontPalette | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<absolute-size> | <relative-size> | <length-percentage [0,∞]> | math`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-size\n */\n fontSize?: Property.FontSize<TLength> | undefined;\n /**\n * Since July 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number> ]`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **127** | **3** | **16.4** | **127** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-size-adjust\n */\n fontSizeAdjust?: Property.FontSizeAdjust | undefined;\n /**\n * The **`font-smooth`** CSS property controls the application of anti-aliasing when fonts are rendered.\n *\n * **Syntax**: `auto | never | always | <absolute-size> | <length>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------------------------------: | :--------------------------------: | :------------------------------: | :-------------------------------: | :-: |\n * | **5** _(-webkit-font-smoothing)_ | **25** _(-moz-osx-font-smoothing)_ | **4** _(-webkit-font-smoothing)_ | **79** _(-webkit-font-smoothing)_ | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-smooth\n */\n fontSmooth?: Property.FontSmooth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | italic | oblique <angle>?`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-style\n */\n fontStyle?: Property.FontStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2022.\n *\n * **Syntax**: `none | [ weight || style || small-caps || position]`\n *\n * **Initial value**: `weight style small-caps position `\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **97** | **34** | **9** | **97** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-synthesis\n */\n fontSynthesis?: Property.FontSynthesis | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | none`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :--: | :-: |\n * | No | **118** | No | No | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-synthesis-position\n */\n fontSynthesisPosition?: Property.FontSynthesisPosition | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.\n *\n * **Syntax**: `auto | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **97** | **111** | **16.4** | **97** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-synthesis-small-caps\n */\n fontSynthesisSmallCaps?: Property.FontSynthesisSmallCaps | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.\n *\n * **Syntax**: `auto | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **97** | **111** | **16.4** | **97** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-synthesis-style\n */\n fontSynthesisStyle?: Property.FontSynthesisStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.\n *\n * **Syntax**: `auto | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **97** | **111** | **16.4** | **97** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-synthesis-weight\n */\n fontSynthesisWeight?: Property.FontSynthesisWeight | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> || stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero || <east-asian-variant-values> || <east-asian-width-values> || ruby ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variant\n */\n fontVariant?: Property.FontVariant | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.\n *\n * **Syntax**: `normal | [ stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :-----: | :-: |\n * | **111** | **34** | **9.1** | **111** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variant-alternates\n */\n fontVariantAlternates?: Property.FontVariantAlternates | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **52** | **34** | **9.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variant-caps\n */\n fontVariantCaps?: Property.FontVariantCaps | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **63** | **34** | **9.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variant-east-asian\n */\n fontVariantEastAsian?: Property.FontVariantEastAsian | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | text | emoji | unicode`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **131** | **141** | No | **131** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variant-emoji\n */\n fontVariantEmoji?: Property.FontVariantEmoji | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :-: |\n * | **34** | **34** | **9.1** | **79** | No |\n * | 31 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variant-ligatures\n */\n fontVariantLigatures?: Property.FontVariantLigatures | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **52** | **34** | **9.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variant-numeric\n */\n fontVariantNumeric?: Property.FontVariantNumeric | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | sub | super`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :--: | :-: |\n * | No | **34** | **9.1** | No | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variant-position\n */\n fontVariantPosition?: Property.FontVariantPosition | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2018.\n *\n * **Syntax**: `normal | [ <string> <number> ]#`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **62** | **62** | **11** | **17** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variation-settings\n */\n fontVariationSettings?: Property.FontVariationSettings | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<font-weight-absolute> | bolder | lighter`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **2** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-weight\n */\n fontWeight?: Property.FontWeight | undefined;\n /**\n * **Syntax**: `normal | <percentage [0,∞]> | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :--: | :-: |\n * | No | No | **18.4** | No | No |\n */\n fontWidth?: Property.FontWidth | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | none | preserve-parent-color`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----------------------------: | :---------------------------------: |\n * | **89** | **113** | No | **79** | **10** _(-ms-high-contrast-adjust)_ |\n * | | | | 12 _(-ms-high-contrast-adjust)_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/forced-color-adjust\n */\n forcedColorAdjust?: Property.ForcedColorAdjust | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `<track-size>+`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-------------------------: |\n * | **57** | **70** | **10.1** | **16** | **10** _(-ms-grid-columns)_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-auto-columns\n */\n gridAutoColumns?: Property.GridAutoColumns<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `[ row | column ] || dense`\n *\n * **Initial value**: `row`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-auto-flow\n */\n gridAutoFlow?: Property.GridAutoFlow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `<track-size>+`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :----------------------: |\n * | **57** | **70** | **10.1** | **16** | **10** _(-ms-grid-rows)_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-auto-rows\n */\n gridAutoRows?: Property.GridAutoRows<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<grid-line>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-column-end\n */\n gridColumnEnd?: Property.GridColumnEnd | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<grid-line>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-column-start\n */\n gridColumnStart?: Property.GridColumnStart | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<grid-line>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-row-end\n */\n gridRowEnd?: Property.GridRowEnd | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<grid-line>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-row-start\n */\n gridRowStart?: Property.GridRowStart | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `none | <string>+`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-template-areas\n */\n gridTemplateAreas?: Property.GridTemplateAreas | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `none | <track-list> | <auto-track-list> | subgrid <line-name-list>?`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-------------------------: |\n * | **57** | **52** | **10.1** | **16** | **10** _(-ms-grid-columns)_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-template-columns\n */\n gridTemplateColumns?: Property.GridTemplateColumns<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `none | <track-list> | <auto-track-list> | subgrid <line-name-list>?`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :----------------------: |\n * | **57** | **52** | **10.1** | **16** | **10** _(-ms-grid-rows)_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-template-rows\n */\n gridTemplateRows?: Property.GridTemplateRows<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | [ first || [ force-end | allow-end ] || last ]`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :--: | :-: |\n * | No | No | **10** | No | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/hanging-punctuation\n */\n hangingPunctuation?: Property.HangingPunctuation | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <length-percentage [0,∞]> | min-content | max-content | fit-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/height\n */\n height?: Property.Height<TLength> | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto | <string>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :------: | :-: |\n * | **106** | **98** | **17** | **106** | No |\n * | 6 _-x-_ | | 5.1 _-x-_ | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/hyphenate-character\n */\n hyphenateCharacter?: Property.HyphenateCharacter | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ auto | <integer> ]{1,3}`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **109** | **137** | No | **109** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/hyphenate-limit-chars\n */\n hyphenateLimitChars?: Property.HyphenateLimitChars | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `none | manual | auto`\n *\n * **Initial value**: `manual`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-------: | :----: | :----------: |\n * | **55** | **43** | **17** | **79** | **10** _-x-_ |\n * | 13 _-x-_ | 6 _-x-_ | 5.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/hyphens\n */\n hyphens?: Property.Hyphens | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2020.\n *\n * **Syntax**: `from-image | <angle> | [ <angle>? flip ]`\n *\n * **Initial value**: `from-image`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **81** | **26** | **13.1** | **81** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/image-orientation\n */\n imageOrientation?: Property.ImageOrientation | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | crisp-edges | pixelated | smooth`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **13** | **3.6** | **6** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/image-rendering\n */\n imageRendering?: Property.ImageRendering | undefined;\n /**\n * The **`image-resolution`** CSS property specifies the intrinsic resolution of all raster images used in or on the element. It affects content images such as replaced elements and generated content, and decorative images such as `background-image` images.\n *\n * **Syntax**: `[ from-image || <resolution> ] && snap?`\n *\n * **Initial value**: `1dppx`\n */\n imageResolution?: Property.ImageResolution | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | [ <number> <integer>? ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :---------: | :-----: | :-: |\n * | **110** | No | **9** _-x-_ | **110** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/initial-letter\n */\n initialLetter?: Property.InitialLetter | undefined;\n /**\n * **Syntax**: `[ auto | alphabetic | hanging | ideographic ]`\n *\n * **Initial value**: `auto`\n */\n initialLetterAlign?: Property.InitialLetterAlign | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'width'>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-------------------------: | :-----: | :---------------------------: | :----: | :-: |\n * | **57** | **41** | **12.1** | **79** | No |\n * | 8 _(-webkit-logical-width)_ | | 5.1 _(-webkit-logical-width)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/inline-size\n */\n inlineSize?: Property.InlineSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **63** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/inset-block-end\n */\n insetBlockEnd?: Property.InsetBlockEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **63** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/inset-block-start\n */\n insetBlockStart?: Property.InsetBlockStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **63** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/inset-inline-end\n */\n insetInlineEnd?: Property.InsetInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **63** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/inset-inline-start\n */\n insetInlineStart?: Property.InsetInlineStart<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `numeric-only | allow-keywords`\n *\n * **Initial value**: `numeric-only`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **129** | No | No | **129** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/interpolate-size\n */\n interpolateSize?: Property.InterpolateSize | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | isolate`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **41** | **36** | **8** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/isolation\n */\n isolation?: Property.Isolation | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **29** | **20** | **9** | **12** | **11** |\n * | 21 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/justify-content\n */\n justifyContent?: Property.JustifyContent | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2016.\n *\n * **Syntax**: `normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ] | anchor-center`\n *\n * **Initial value**: `legacy`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **52** | **20** | **9** | **12** | **11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/justify-items\n */\n justifyItems?: Property.JustifyItems | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `auto | normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | anchor-center`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :----: |\n * | **57** | **45** | **10.1** | **16** | **10** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/justify-self\n */\n justifySelf?: Property.JustifySelf | undefined;\n /**\n * **Syntax**: `[ normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ] ]#`\n *\n * **Initial value**: `normal`\n */\n justifyTracks?: Property.JustifyTracks | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <length-percentage> | <anchor()> | <anchor-size()>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/left\n */\n left?: Property.Left<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | <length>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/letter-spacing\n */\n letterSpacing?: Property.LetterSpacing<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `white`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **5** | **3** | **6** | **12** | **≤11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/lighting-color\n */\n lightingColor?: Property.LightingColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `auto | loose | normal | strict | anywhere`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :-----: |\n * | **58** | **69** | **11** | **14** | **5.5** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/line-break\n */\n lineBreak?: Property.LineBreak | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | <number> | <length> | <percentage>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/line-height\n */\n lineHeight?: Property.LineHeight<TLength> | undefined;\n /**\n * The **`line-height-step`** CSS property sets the step unit for line box heights. When the property is set, line box heights are rounded up to the closest multiple of the unit.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n */\n lineHeightStep?: Property.LineHeightStep<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<image> | none`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/list-style-image\n */\n listStyleImage?: Property.ListStyleImage | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `inside | outside`\n *\n * **Initial value**: `outside`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/list-style-position\n */\n listStylePosition?: Property.ListStylePosition | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<counter-style> | <string> | none`\n *\n * **Initial value**: `disc`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/list-style-type\n */\n listStyleType?: Property.ListStyleType | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'margin-top'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-block-end\n */\n marginBlockEnd?: Property.MarginBlockEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'margin-top'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-block-start\n */\n marginBlockStart?: Property.MarginBlockStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage> | auto | <anchor-size()>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-bottom\n */\n marginBottom?: Property.MarginBottom<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'margin-top'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----------------------: | :-------------------: | :----------------------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | 2 _(-webkit-margin-end)_ | 3 _(-moz-margin-end)_ | 3 _(-webkit-margin-end)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-inline-end\n */\n marginInlineEnd?: Property.MarginInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'margin-top'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------------------------: | :---------------------: | :------------------------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | 2 _(-webkit-margin-start)_ | 3 _(-moz-margin-start)_ | 3 _(-webkit-margin-start)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-inline-start\n */\n marginInlineStart?: Property.MarginInlineStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage> | auto | <anchor-size()>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-left\n */\n marginLeft?: Property.MarginLeft<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage> | auto | <anchor-size()>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-right\n */\n marginRight?: Property.MarginRight<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage> | auto | <anchor-size()>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-top\n */\n marginTop?: Property.MarginTop<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | in-flow | all`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :--: | :-: |\n * | No | No | **16.4** | No | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-trim\n */\n marginTrim?: Property.MarginTrim | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `none | <url>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/marker\n */\n marker?: Property.Marker | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `none | <url>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/marker-end\n */\n markerEnd?: Property.MarkerEnd | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `none | <url>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/marker-mid\n */\n markerMid?: Property.MarkerMid | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `none | <url>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/marker-start\n */\n markerStart?: Property.MarkerStart | undefined;\n /**\n * The **`mask-border-mode`** CSS property specifies the blending mode used in a mask border.\n *\n * **Syntax**: `luminance | alpha`\n *\n * **Initial value**: `alpha`\n */\n maskBorderMode?: Property.MaskBorderMode | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ <length> | <number> ]{1,4}`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-------------------------------------: | :-----: | :-----------------------------------: | :--------------------------------------: | :-: |\n * | **1** _(-webkit-mask-box-image-outset)_ | No | **17.2** | **79** _(-webkit-mask-box-image-outset)_ | No |\n * | | | 3.1 _(-webkit-mask-box-image-outset)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-border-outset\n */\n maskBorderOutset?: Property.MaskBorderOutset<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ stretch | repeat | round | space ]{1,2}`\n *\n * **Initial value**: `stretch`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-------------------------------------: | :-----: | :-----------------------------------: | :--------------------------------------: | :-: |\n * | **1** _(-webkit-mask-box-image-repeat)_ | No | **17.2** | **79** _(-webkit-mask-box-image-repeat)_ | No |\n * | | | 3.1 _(-webkit-mask-box-image-repeat)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-border-repeat\n */\n maskBorderRepeat?: Property.MaskBorderRepeat | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<number-percentage>{1,4} fill?`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------------------------------------: | :-----: | :----------------------------------: | :-------------------------------------: | :-: |\n * | **1** _(-webkit-mask-box-image-slice)_ | No | **17.2** | **79** _(-webkit-mask-box-image-slice)_ | No |\n * | | | 3.1 _(-webkit-mask-box-image-slice)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-border-slice\n */\n maskBorderSlice?: Property.MaskBorderSlice | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | <image>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-------------------------------------: | :-----: | :-----------------------------------: | :--------------------------------------: | :-: |\n * | **1** _(-webkit-mask-box-image-source)_ | No | **17.2** | **79** _(-webkit-mask-box-image-source)_ | No |\n * | | | 3.1 _(-webkit-mask-box-image-source)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-border-source\n */\n maskBorderSource?: Property.MaskBorderSource | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ <length-percentage> | <number> | auto ]{1,4}`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------------------------------------: | :-----: | :----------------------------------: | :-------------------------------------: | :-: |\n * | **1** _(-webkit-mask-box-image-width)_ | No | **17.2** | **79** _(-webkit-mask-box-image-width)_ | No |\n * | | | 3.1 _(-webkit-mask-box-image-width)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-border-width\n */\n maskBorderWidth?: Property.MaskBorderWidth<TLength> | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `[ <coord-box> | no-clip ]#`\n *\n * **Initial value**: `border-box`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :------: | :-: |\n * | **120** | **53** | **15.4** | **120** | No |\n * | 1 _-x-_ | | 4 _-x-_ | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-clip\n */\n maskClip?: Property.MaskClip | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<compositing-operator>#`\n *\n * **Initial value**: `add`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :---: | :-: |\n * | **120** | **53** | **15.4** | 18-79 | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-composite\n */\n maskComposite?: Property.MaskComposite | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<mask-reference>#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :---: | :-: |\n * | **120** | **53** | **15.4** | 16-79 | No |\n * | 1 _-x-_ | | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-image\n */\n maskImage?: Property.MaskImage | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<masking-mode>#`\n *\n * **Initial value**: `match-source`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **120** | **53** | **15.4** | **120** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-mode\n */\n maskMode?: Property.MaskMode | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<coord-box>#`\n *\n * **Initial value**: `border-box`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :------: | :-: |\n * | **120** | **53** | **15.4** | **120** | No |\n * | 1 _-x-_ | | 4 _-x-_ | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-origin\n */\n maskOrigin?: Property.MaskOrigin | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<position>#`\n *\n * **Initial value**: `0% 0%`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :---: | :-: |\n * | **120** | **53** | **15.4** | 18-79 | No |\n * | 1 _-x-_ | | 3.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-position\n */\n maskPosition?: Property.MaskPosition<TLength> | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<repeat-style>#`\n *\n * **Initial value**: `repeat`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :---: | :-: |\n * | **120** | **53** | **15.4** | 18-79 | No |\n * | 1 _-x-_ | | 3.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-repeat\n */\n maskRepeat?: Property.MaskRepeat | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<bg-size>#`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :---: | :-: |\n * | **120** | **53** | **15.4** | 18-79 | No |\n * | 4 _-x-_ | | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-size\n */\n maskSize?: Property.MaskSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `luminance | alpha`\n *\n * **Initial value**: `luminance`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **24** | **35** | **7** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-type\n */\n maskType?: Property.MaskType | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `[ pack | next ] || [ definite-first | ordered ]`\n *\n * **Initial value**: `pack`\n */\n masonryAutoFlow?: Property.MasonryAutoFlow | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto-add | add(<integer>) | <integer>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **109** | **117** | No | **109** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/math-depth\n */\n mathDepth?: Property.MathDepth | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | compact`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **109** | No | No | **109** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/math-shift\n */\n mathShift?: Property.MathShift | undefined;\n /**\n * Since August 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `normal | compact`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **109** | **117** | **14.1** | **109** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/math-style\n */\n mathStyle?: Property.MathStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'max-width'>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/max-block-size\n */\n maxBlockSize?: Property.MaxBlockSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | <length-percentage [0,∞]> | min-content | max-content | fit-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **1** | **1.3** | **12** | **7** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/max-height\n */\n maxHeight?: Property.MaxHeight<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'max-width'>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :--------: | :----: | :-: |\n * | **57** | **41** | **12.1** | **79** | No |\n * | | | 10.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/max-inline-size\n */\n maxInlineSize?: Property.MaxInlineSize<TLength> | undefined;\n /**\n * **Syntax**: `none | <integer>`\n *\n * **Initial value**: `none`\n */\n maxLines?: Property.MaxLines | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | <length-percentage [0,∞]> | min-content | max-content | fit-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **7** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/max-width\n */\n maxWidth?: Property.MaxWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'min-width'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/min-block-size\n */\n minBlockSize?: Property.MinBlockSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <length-percentage [0,∞]> | min-content | max-content | fit-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **3** | **1.3** | **12** | **7** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/min-height\n */\n minHeight?: Property.MinHeight<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'min-width'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/min-inline-size\n */\n minInlineSize?: Property.MinInlineSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <length-percentage [0,∞]> | min-content | max-content | fit-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **7** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/min-width\n */\n minWidth?: Property.MinWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<blend-mode> | plus-darker | plus-lighter`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **41** | **32** | **8** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mix-blend-mode\n */\n mixBlendMode?: Property.MixBlendMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `<length-percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :--------------------: | :-----: | :----: | :----: | :-: |\n * | **55** | **72** | **16** | **79** | No |\n * | 46 _(motion-distance)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-distance\n */\n motionDistance?: Property.OffsetDistance<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | <offset-path> || <coord-box>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----------------: | :-----: | :------: | :----: | :-: |\n * | **55** | **72** | **15.4** | **79** | No |\n * | 46 _(motion-path)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-path\n */\n motionPath?: Property.OffsetPath | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `[ auto | reverse ] || <angle>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :--------------------: | :-----: | :----: | :----: | :-: |\n * | **56** | **72** | **16** | **79** | No |\n * | 46 _(motion-rotation)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-rotate\n */\n motionRotation?: Property.OffsetRotate | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `fill | contain | cover | none | scale-down`\n *\n * **Initial value**: `fill`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **32** | **36** | **10** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/object-fit\n */\n objectFit?: Property.ObjectFit | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<position>`\n *\n * **Initial value**: `50% 50%`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **32** | **36** | **10** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/object-position\n */\n objectPosition?: Property.ObjectPosition<TLength> | undefined;\n /**\n * **Syntax**: `none | <basic-shape-rect>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **104** | No | No | **104** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/object-view-box\n */\n objectViewBox?: Property.ObjectViewBox | undefined;\n /**\n * Since August 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto | <position>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **116** | **72** | **16** | **116** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-anchor\n */\n offsetAnchor?: Property.OffsetAnchor<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `<length-percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :--------------------: | :-----: | :----: | :----: | :-: |\n * | **55** | **72** | **16** | **79** | No |\n * | 46 _(motion-distance)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-distance\n */\n offsetDistance?: Property.OffsetDistance<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | <offset-path> || <coord-box>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----------------: | :-----: | :------: | :----: | :-: |\n * | **55** | **72** | **15.4** | **79** | No |\n * | 46 _(motion-path)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-path\n */\n offsetPath?: Property.OffsetPath | undefined;\n /**\n * Since January 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `normal | auto | <position>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **116** | **122** | **16** | **116** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-position\n */\n offsetPosition?: Property.OffsetPosition<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `[ auto | reverse ] || <angle>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :--------------------: | :-----: | :----: | :----: | :-: |\n * | **56** | **72** | **16** | **79** | No |\n * | 46 _(motion-rotation)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-rotate\n */\n offsetRotate?: Property.OffsetRotate | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `[ auto | reverse ] || <angle>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :--------------------: | :-----: | :----: | :----: | :-: |\n * | **56** | **72** | **16** | **79** | No |\n * | 46 _(motion-rotation)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-rotate\n */\n offsetRotation?: Property.OffsetRotate | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<opacity-value>`\n *\n * **Initial value**: `1`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **2** | **12** | **9** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/opacity\n */\n opacity?: Property.Opacity | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :------: |\n * | **29** | **20** | **9** | **12** | **11** |\n * | 21 _-x-_ | | 7 _-x-_ | | 10 _-x-_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/order\n */\n order?: Property.Order | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `2`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **25** | No | **1.3** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/orphans\n */\n orphans?: Property.Orphans | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <color>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **1.5** | **1.2** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/outline-color\n */\n outlineColor?: Property.OutlineColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **1** | **1.5** | **1.2** | **15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/outline-offset\n */\n outlineOffset?: Property.OutlineOffset<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <outline-line-style>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **1.5** | **1.2** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/outline-style\n */\n outlineStyle?: Property.OutlineStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **1.5** | **1.2** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/outline-width\n */\n outlineWidth?: Property.OutlineWidth<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :---------: | :----: | :-: |\n * | **56** | **66** | **preview** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overflow-anchor\n */\n overflowAnchor?: Property.OverflowAnchor | undefined;\n /**\n * Since September 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `visible | hidden | clip | scroll | auto`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **135** | **69** | **26** | **135** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overflow-block\n */\n overflowBlock?: Property.OverflowBlock | undefined;\n /**\n * **Syntax**: `padding-box | content-box`\n *\n * **Initial value**: `padding-box`\n */\n overflowClipBox?: Property.OverflowClipBox | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<visual-box> || <length [0,∞]>`\n *\n * **Initial value**: `0px`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **90** | **102** | No | **90** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overflow-clip-margin\n */\n overflowClipMargin?: Property.OverflowClipMargin<TLength> | undefined;\n /**\n * Since September 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `visible | hidden | clip | scroll | auto`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **135** | **69** | **26** | **135** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overflow-inline\n */\n overflowInline?: Property.OverflowInline | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2018.\n *\n * **Syntax**: `normal | break-word | anywhere`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-------------: | :---------------: | :-------------: | :--------------: | :-------------------: |\n * | **23** | **49** | **7** | **18** | **5.5** _(word-wrap)_ |\n * | 1 _(word-wrap)_ | 3.5 _(word-wrap)_ | 1 _(word-wrap)_ | 12 _(word-wrap)_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overflow-wrap\n */\n overflowWrap?: Property.OverflowWrap | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `visible | hidden | clip | scroll | auto`\n *\n * **Initial value**: `visible`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **3.5** | **3** | **12** | **5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overflow-x\n */\n overflowX?: Property.OverflowX | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `visible | hidden | clip | scroll | auto`\n *\n * **Initial value**: `visible`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **3.5** | **3** | **12** | **5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overflow-y\n */\n overflowY?: Property.OverflowY | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | auto`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **117** | No | No | **117** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overlay\n */\n overlay?: Property.Overlay | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `contain | none | auto`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **77** | **73** | **16** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overscroll-behavior-block\n */\n overscrollBehaviorBlock?: Property.OverscrollBehaviorBlock | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `contain | none | auto`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **77** | **73** | **16** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overscroll-behavior-inline\n */\n overscrollBehaviorInline?: Property.OverscrollBehaviorInline | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `contain | none | auto`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **63** | **59** | **16** | **18** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overscroll-behavior-x\n */\n overscrollBehaviorX?: Property.OverscrollBehaviorX | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `contain | none | auto`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **63** | **59** | **16** | **18** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overscroll-behavior-y\n */\n overscrollBehaviorY?: Property.OverscrollBehaviorY | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'padding-top'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-block-end\n */\n paddingBlockEnd?: Property.PaddingBlockEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'padding-top'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-block-start\n */\n paddingBlockStart?: Property.PaddingBlockStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-bottom\n */\n paddingBottom?: Property.PaddingBottom<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'padding-top'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----------------------: | :--------------------: | :-----------------------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | 2 _(-webkit-padding-end)_ | 3 _(-moz-padding-end)_ | 3 _(-webkit-padding-end)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-inline-end\n */\n paddingInlineEnd?: Property.PaddingInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'padding-top'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-------------------------: | :----------------------: | :-------------------------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | 2 _(-webkit-padding-start)_ | 3 _(-moz-padding-start)_ | 3 _(-webkit-padding-start)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-inline-start\n */\n paddingInlineStart?: Property.PaddingInlineStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-left\n */\n paddingLeft?: Property.PaddingLeft<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-right\n */\n paddingRight?: Property.PaddingRight<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-top\n */\n paddingTop?: Property.PaddingTop<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since February 2023.\n *\n * **Syntax**: `auto | <custom-ident>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **85** | **110** | **1** | **85** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/page\n */\n page?: Property.Page | undefined;\n /**\n * Since March 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `normal | [ fill || stroke || markers ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **123** | **60** | **11** | **123** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/paint-order\n */\n paintOrder?: Property.PaintOrder | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <length>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :------: | :-----: | :----: | :----: |\n * | **36** | **16** | **9** | **12** | **10** |\n * | 12 _-x-_ | 10 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/perspective\n */\n perspective?: Property.Perspective<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<position>`\n *\n * **Initial value**: `50% 50%`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :------: | :-----: | :----: | :----: |\n * | **36** | **16** | **9** | **12** | **10** |\n * | 12 _-x-_ | 10 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/perspective-origin\n */\n perspectiveOrigin?: Property.PerspectiveOrigin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **1** | **1.5** | **4** | **12** | **11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/pointer-events\n */\n pointerEvents?: Property.PointerEvents | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `static | relative | absolute | sticky | fixed`\n *\n * **Initial value**: `static`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/position\n */\n position?: Property.Position | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | <anchor-name>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :---------: | :----: | :-----: | :-: |\n * | **125** | **preview** | **26** | **125** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/position-anchor\n */\n positionAnchor?: Property.PositionAnchor | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | <position-area>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :---------: | :----: | :-----: | :-: |\n * | **129** | **preview** | **26** | **129** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/position-area\n */\n positionArea?: Property.PositionArea | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | [ [<dashed-ident> || <try-tactic>] | <'position-area'> ]#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :---------: | :----: | :-----: | :-: |\n * | **128** | **preview** | **26** | **128** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/position-try-fallbacks\n */\n positionTryFallbacks?: Property.PositionTryFallbacks | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | <try-size>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **125** | No | **26** | **125** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/position-try-order\n */\n positionTryOrder?: Property.PositionTryOrder | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `always | [ anchors-valid || anchors-visible || no-overflow ]`\n *\n * **Initial value**: `anchors-visible`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :---------: | :----: | :-----: | :-: |\n * | **125** | **preview** | No | **125** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/position-visibility\n */\n positionVisibility?: Property.PositionVisibility | undefined;\n /**\n * Since May 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `economy | exact`\n *\n * **Initial value**: `economy`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----------------: | :------: | :------: | :-: |\n * | **136** | **97** | **15.4** | **136** | No |\n * | 17 _-x-_ | 48 _(color-adjust)_ | 6 _-x-_ | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/print-color-adjust\n */\n printColorAdjust?: Property.PrintColorAdjust | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | auto | [ <string> <string> ]+`\n *\n * **Initial value**: depends on user agent\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **11** | **1.5** | **9** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/quotes\n */\n quotes?: Property.Quotes | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `<length> | <percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **43** | **69** | **9** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/r\n */\n r?: Property.R<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | both | horizontal | vertical | block | inline`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **1** | **4** | **3** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/resize\n */\n resize?: Property.Resize | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <length-percentage> | <anchor()> | <anchor-size()>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/right\n */\n right?: Property.Right<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2022.\n *\n * **Syntax**: `none | <angle> | [ x | y | z | <number>{3} ] && <angle>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **104** | **72** | **14.1** | **104** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/rotate\n */\n rotate?: Property.Rotate | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `normal | <length-percentage>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **47** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/row-gap\n */\n rowGap?: Property.RowGap<TLength> | undefined;\n /**\n * Since December 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `start | center | space-between | space-around`\n *\n * **Initial value**: `space-around`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **128** | **38** | **18.2** | **128** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/ruby-align\n */\n rubyAlign?: Property.RubyAlign | undefined;\n /**\n * **Syntax**: `separate | collapse | auto`\n *\n * **Initial value**: `separate`\n */\n rubyMerge?: Property.RubyMerge | undefined;\n /**\n * **Syntax**: `auto | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :--: | :-: |\n * | No | No | **18.2** | No | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/ruby-overhang\n */\n rubyOverhang?: Property.RubyOverhang | undefined;\n /**\n * Since December 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `[ alternate || [ over | under ] ] | inter-character`\n *\n * **Initial value**: `alternate`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :---: | :-: |\n * | **84** | **38** | **18.2** | 12-79 | No |\n * | 1 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/ruby-position\n */\n rubyPosition?: Property.RubyPosition | undefined;\n /**\n * Since March 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<length> | <percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **43** | **69** | **17.4** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/rx\n */\n rx?: Property.Rx<TLength> | undefined;\n /**\n * Since March 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<length> | <percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **43** | **69** | **17.4** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/ry\n */\n ry?: Property.Ry<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2022.\n *\n * **Syntax**: `none | [ <number> | <percentage> ]{1,3}`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **104** | **72** | **14.1** | **104** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scale\n */\n scale?: Property.Scale | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `auto | smooth`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **61** | **36** | **15.4** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-behavior\n */\n scrollBehavior?: Property.ScrollBehavior | undefined;\n /**\n * **Syntax**: `none | nearest`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **133** | No | No | **133** | No |\n */\n scrollInitialTarget?: Property.ScrollInitialTarget | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-block-end\n */\n scrollMarginBlockEnd?: Property.ScrollMarginBlockEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-block-start\n */\n scrollMarginBlockStart?: Property.ScrollMarginBlockStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------------------------------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin-bottom)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-bottom\n */\n scrollMarginBottom?: Property.ScrollMarginBottom<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-inline-end\n */\n scrollMarginInlineEnd?: Property.ScrollMarginInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-inline-start\n */\n scrollMarginInlineStart?: Property.ScrollMarginInlineStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----------------------------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin-left)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-left\n */\n scrollMarginLeft?: Property.ScrollMarginLeft<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----------------------------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin-right)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-right\n */\n scrollMarginRight?: Property.ScrollMarginRight<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :---------------------------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin-top)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-top\n */\n scrollMarginTop?: Property.ScrollMarginTop<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `auto | <length-percentage>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-block-end\n */\n scrollPaddingBlockEnd?: Property.ScrollPaddingBlockEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `auto | <length-percentage>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-block-start\n */\n scrollPaddingBlockStart?: Property.ScrollPaddingBlockStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `auto | <length-percentage>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-bottom\n */\n scrollPaddingBottom?: Property.ScrollPaddingBottom<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `auto | <length-percentage>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-inline-end\n */\n scrollPaddingInlineEnd?: Property.ScrollPaddingInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `auto | <length-percentage>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-inline-start\n */\n scrollPaddingInlineStart?: Property.ScrollPaddingInlineStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `auto | <length-percentage>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-left\n */\n scrollPaddingLeft?: Property.ScrollPaddingLeft<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `auto | <length-percentage>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-right\n */\n scrollPaddingRight?: Property.ScrollPaddingRight<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `auto | <length-percentage>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-top\n */\n scrollPaddingTop?: Property.ScrollPaddingTop<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `[ none | start | end | center ]{1,2}`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **11** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-snap-align\n */\n scrollSnapAlign?: Property.ScrollSnapAlign | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------------------------------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin-bottom)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-bottom\n */\n scrollSnapMarginBottom?: Property.ScrollMarginBottom<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----------------------------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin-left)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-left\n */\n scrollSnapMarginLeft?: Property.ScrollMarginLeft<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----------------------------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin-right)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-right\n */\n scrollSnapMarginRight?: Property.ScrollMarginRight<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :---------------------------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin-top)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-top\n */\n scrollSnapMarginTop?: Property.ScrollMarginTop<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2022.\n *\n * **Syntax**: `normal | always`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **75** | **103** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-snap-stop\n */\n scrollSnapStop?: Property.ScrollSnapStop | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2022.\n *\n * **Syntax**: `none | [ x | y | block | inline | both ] [ mandatory | proximity ]?`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :----------: |\n * | **69** | 39-68 | **11** | **79** | **10** _-x-_ |\n * | | | 9 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-snap-type\n */\n scrollSnapType?: Property.ScrollSnapType | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ block | inline | x | y ]#`\n *\n * **Initial value**: `block`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-timeline-axis\n */\n scrollTimelineAxis?: Property.ScrollTimelineAxis | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ none | <dashed-ident> ]#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-timeline-name\n */\n scrollTimelineName?: Property.ScrollTimelineName | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | <color>{2}`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **121** | **64** | No | **121** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scrollbar-color\n */\n scrollbarColor?: Property.ScrollbarColor | undefined;\n /**\n * Since December 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto | stable && both-edges?`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **94** | **97** | **18.2** | **94** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scrollbar-gutter\n */\n scrollbarGutter?: Property.ScrollbarGutter | undefined;\n /**\n * Since December 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto | thin | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **121** | **64** | **18.2** | **121** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scrollbar-width\n */\n scrollbarWidth?: Property.ScrollbarWidth | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<opacity-value>`\n *\n * **Initial value**: `0.0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **37** | **62** | **10.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/shape-image-threshold\n */\n shapeImageThreshold?: Property.ShapeImageThreshold | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<length-percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **37** | **62** | **10.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/shape-margin\n */\n shapeMargin?: Property.ShapeMargin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `none | [ <shape-box> || <basic-shape> ] | <image>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **37** | **62** | **10.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/shape-outside\n */\n shapeOutside?: Property.ShapeOutside | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | optimizeSpeed | crispEdges | geometricPrecision`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **1** | **3** | **4** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/shape-rendering\n */\n shapeRendering?: Property.ShapeRendering | undefined;\n /**\n * **Syntax**: `normal | spell-out || digits || [ literal-punctuation | no-punctuation ]`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :--: | :-: |\n * | No | No | **11.1** | No | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/speak-as\n */\n speakAs?: Property.SpeakAs | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<'color'>`\n *\n * **Initial value**: `black`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stop-color\n */\n stopColor?: Property.StopColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<'opacity'>`\n *\n * **Initial value**: `black`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stop-opacity\n */\n stopOpacity?: Property.StopOpacity | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<paint>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1.5** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stroke\n */\n stroke?: Property.Stroke | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: `transparent`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :--: | :-: |\n * | No | No | **11.1** | No | No |\n */\n strokeColor?: Property.StrokeColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `none | <dasharray>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1.5** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stroke-dasharray\n */\n strokeDasharray?: Property.StrokeDasharray<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<length-percentage> | <number>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1.5** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stroke-dashoffset\n */\n strokeDashoffset?: Property.StrokeDashoffset<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `butt | round | square`\n *\n * **Initial value**: `butt`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1.5** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stroke-linecap\n */\n strokeLinecap?: Property.StrokeLinecap | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `miter | miter-clip | round | bevel | arcs`\n *\n * **Initial value**: `miter`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1.5** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stroke-linejoin\n */\n strokeLinejoin?: Property.StrokeLinejoin | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `4`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1.5** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stroke-miterlimit\n */\n strokeMiterlimit?: Property.StrokeMiterlimit | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<'opacity'>`\n *\n * **Initial value**: `1`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1.5** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stroke-opacity\n */\n strokeOpacity?: Property.StrokeOpacity | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<length-percentage> | <number>`\n *\n * **Initial value**: `1px`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1.5** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stroke-width\n */\n strokeWidth?: Property.StrokeWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2021.\n *\n * **Syntax**: `<integer> | <length>`\n *\n * **Initial value**: `8`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **21** | **91** | **7** | **79** | No |\n * | | 4 _-x-_ | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/tab-size\n */\n tabSize?: Property.TabSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | fixed`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **14** | **1** | **1** | **12** | **5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/table-layout\n */\n tableLayout?: Property.TableLayout | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `start | end | left | right | center | justify | match-parent`\n *\n * **Initial value**: `start`, or a nameless value that acts as `left` if _direction_ is `ltr`, `right` if _direction_ is `rtl` if `start` is not supported by the browser.\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-align\n */\n textAlign?: Property.TextAlign | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `auto | start | end | left | right | center | justify`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **47** | **49** | **16** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-align-last\n */\n textAlignLast?: Property.TextAlignLast | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2016.\n *\n * **Syntax**: `start | middle | end`\n *\n * **Initial value**: `start`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤14** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-anchor\n */\n textAnchor?: Property.TextAnchor | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | <autospace> | auto`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **140** | **145** | **18.4** | **140** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-autospace\n */\n textAutospace?: Property.TextAutospace | undefined;\n /**\n * **Syntax**: `normal | <'text-box-trim'> || <'text-box-edge'>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **133** | No | **18.2** | **133** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-box\n */\n textBox?: Property.TextBox | undefined;\n /**\n * **Syntax**: `auto | <text-edge>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **133** | No | **18.2** | **133** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-box-edge\n */\n textBoxEdge?: Property.TextBoxEdge | undefined;\n /**\n * **Syntax**: `none | trim-start | trim-end | trim-both`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **133** | No | **18.2** | **133** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-box-trim\n */\n textBoxTrim?: Property.TextBoxTrim | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | all | [ digits <integer>? ]`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------------------------: | :-----: | :--------------------------: | :----: | :------------------------------------: |\n * | **48** | **48** | **15.4** | **79** | **11** _(-ms-text-combine-horizontal)_ |\n * | 9 _(-webkit-text-combine)_ | | 5.1 _(-webkit-text-combine)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-combine-upright\n */\n textCombineUpright?: Property.TextCombineUpright | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **36** | **12.1** | **79** | No |\n * | | | 8 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-decoration-color\n */\n textDecorationColor?: Property.TextDecorationColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **36** | **12.1** | **79** | No |\n * | | | 8 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-decoration-line\n */\n textDecorationLine?: Property.TextDecorationLine | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]`\n *\n * **Initial value**: `objects`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :--: | :-: |\n * | 57-64 | No | **12.1** | No | No |\n * | | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-decoration-skip\n */\n textDecorationSkip?: Property.TextDecorationSkip | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `auto | all | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **64** | **70** | **15.4** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-decoration-skip-ink\n */\n textDecorationSkipInk?: Property.TextDecorationSkipInk | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `solid | double | dotted | dashed | wavy`\n *\n * **Initial value**: `solid`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **36** | **12.1** | **79** | No |\n * | | | 8 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-decoration-style\n */\n textDecorationStyle?: Property.TextDecorationStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2021.\n *\n * **Syntax**: `auto | from-font | <length> | <percentage> `\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **89** | **70** | **12.1** | **89** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-decoration-thickness\n */\n textDecorationThickness?: Property.TextDecorationThickness<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :----: | :------: | :-: |\n * | **99** | **46** | **7** | **99** | No |\n * | 25 _-x-_ | | | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-emphasis-color\n */\n textEmphasisColor?: Property.TextEmphasisColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `auto | [ over | under ] && [ right | left ]?`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :----: | :------: | :-: |\n * | **99** | **46** | **7** | **99** | No |\n * | 25 _-x-_ | | | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-emphasis-position\n */\n textEmphasisPosition?: Property.TextEmphasisPosition | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :----: | :------: | :-: |\n * | **99** | **46** | **7** | **99** | No |\n * | 25 _-x-_ | | | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-emphasis-style\n */\n textEmphasisStyle?: Property.TextEmphasisStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage> && hanging? && each-line?`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-indent\n */\n textIndent?: Property.TextIndent<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | inter-character | inter-word | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :---: | :----: |\n * | No | **55** | No | 12-79 | **11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-justify\n */\n textJustify?: Property.TextJustify | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2020.\n *\n * **Syntax**: `mixed | upright | sideways`\n *\n * **Initial value**: `mixed`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-------: | :----: | :-: |\n * | **48** | **41** | **14** | **79** | No |\n * | 12 _-x-_ | | 5.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-orientation\n */\n textOrientation?: Property.TextOrientation | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ clip | ellipsis | <string> ]{1,2}`\n *\n * **Initial value**: `clip`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **7** | **1.3** | **12** | **6** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-overflow\n */\n textOverflow?: Property.TextOverflow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | optimizeSpeed | optimizeLegibility | geometricPrecision`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **4** | **1** | **5** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-rendering\n */\n textRendering?: Property.TextRendering | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | <shadow-t>#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :----: |\n * | **2** | **3.5** | **1.1** | **12** | **10** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-shadow\n */\n textShadow?: Property.TextShadow | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | auto | <percentage>`\n *\n * **Initial value**: `auto` for smartphone browsers supporting inflation, `none` in other cases (and then not modifiable).\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **54** | No | No | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-size-adjust\n */\n textSizeAdjust?: Property.TextSizeAdjust | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `space-all | normal | space-first | trim-start`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **123** | No | No | **123** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-spacing-trim\n */\n textSpacingTrim?: Property.TextSpacingTrim | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | [ capitalize | uppercase | lowercase ] || full-width || full-size-kana | math-auto`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-transform\n */\n textTransform?: Property.TextTransform | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since November 2020.\n *\n * **Syntax**: `auto | <length> | <percentage> `\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **70** | **12.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-underline-offset\n */\n textUnderlineOffset?: Property.TextUnderlineOffset<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `auto | from-font | [ under || [ left | right ] ]`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :---: |\n * | **33** | **74** | **12.1** | **12** | **6** |\n * | | | 9 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-underline-position\n */\n textUnderlinePosition?: Property.TextUnderlinePosition | undefined;\n /**\n * Since October 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `wrap | nowrap`\n *\n * **Initial value**: `wrap`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **130** | **124** | **17.4** | **130** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-wrap-mode\n */\n textWrapMode?: Property.TextWrapMode | undefined;\n /**\n * Since October 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto | balance | stable | pretty`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **130** | **124** | **17.5** | **130** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-wrap-style\n */\n textWrapStyle?: Property.TextWrapStyle | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | <dashed-ident>#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **116** | No | **26** | **116** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/timeline-scope\n */\n timelineScope?: Property.TimelineScope | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <length-percentage> | <anchor()> | <anchor-size()>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/top\n */\n top?: Property.Top<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2019.\n *\n * **Syntax**: `auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :------: |\n * | **36** | **52** | **13** | **12** | **11** |\n * | | | | | 10 _-x-_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/touch-action\n */\n touchAction?: Property.TouchAction | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <transform-list>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-------: | :-------: | :----: | :-----: |\n * | **36** | **16** | **9** | **12** | **10** |\n * | 1 _-x-_ | 3.5 _-x-_ | 3.1 _-x-_ | | 9 _-x-_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transform\n */\n transform?: Property.Transform | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `content-box | border-box | fill-box | stroke-box | view-box`\n *\n * **Initial value**: `view-box`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **64** | **55** | **11** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transform-box\n */\n transformBox?: Property.TransformBox | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?`\n *\n * **Initial value**: `50% 50% 0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-------: | :-----: | :----: | :-----: |\n * | **36** | **16** | **9** | **12** | **10** |\n * | 1 _-x-_ | 3.5 _-x-_ | 2 _-x-_ | | 9 _-x-_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transform-origin\n */\n transformOrigin?: Property.TransformOrigin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `flat | preserve-3d`\n *\n * **Initial value**: `flat`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :------: | :-----: | :----: | :-: |\n * | **36** | **16** | **9** | **12** | No |\n * | 12 _-x-_ | 10 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transform-style\n */\n transformStyle?: Property.TransformStyle | undefined;\n /**\n * Since August 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<transition-behavior-value>#`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **117** | **129** | **17.4** | **117** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transition-behavior\n */\n transitionBehavior?: Property.TransitionBehavior | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **26** | **16** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transition-delay\n */\n transitionDelay?: Property.TransitionDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :----: | :----: |\n * | **26** | **16** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transition-duration\n */\n transitionDuration?: Property.TransitionDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <single-transition-property>#`\n *\n * **Initial value**: all\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :----: | :----: |\n * | **26** | **16** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transition-property\n */\n transitionProperty?: Property.TransitionProperty | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :----: | :----: |\n * | **26** | **16** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transition-timing-function\n */\n transitionTimingFunction?: Property.TransitionTimingFunction | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2022.\n *\n * **Syntax**: `none | <length-percentage> [ <length-percentage> <length>? ]?`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **104** | **72** | **14.1** | **104** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/translate\n */\n translate?: Property.Translate<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | embed | isolate | bidi-override | isolate-override | plaintext`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-----: |\n * | **2** | **1** | **1.3** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/unicode-bidi\n */\n unicodeBidi?: Property.UnicodeBidi | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | text | none | all`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :---------: | :------: | :----------: |\n * | **54** | **69** | **3** _-x-_ | **79** | **10** _-x-_ |\n * | 1 _-x-_ | 1 _-x-_ | | 12 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/user-select\n */\n userSelect?: Property.UserSelect | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `none | non-scaling-stroke | non-scaling-size | non-rotation | fixed-position`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **6** | **15** | **5.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/vector-effect\n */\n vectorEffect?: Property.VectorEffect | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `baseline | sub | super | text-top | text-bottom | middle | top | bottom | <percentage> | <length>`\n *\n * **Initial value**: `baseline`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/vertical-align\n */\n verticalAlign?: Property.VerticalAlign<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ block | inline | x | y ]#`\n *\n * **Initial value**: `block`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/view-timeline-axis\n */\n viewTimelineAxis?: Property.ViewTimelineAxis | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ [ auto | <length-percentage> ]{1,2} ]#`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/view-timeline-inset\n */\n viewTimelineInset?: Property.ViewTimelineInset<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ none | <dashed-ident> ]#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/view-timeline-name\n */\n viewTimelineName?: Property.ViewTimelineName | undefined;\n /**\n * **Syntax**: `none | <custom-ident>+`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **125** | **144** | **18.2** | **125** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/view-transition-class\n */\n viewTransitionClass?: Property.ViewTransitionClass | undefined;\n /**\n * Since October 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `none | <custom-ident> | match-element`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **111** | **144** | **18** | **111** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/view-transition-name\n */\n viewTransitionName?: Property.ViewTransitionName | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `visible | hidden | collapse`\n *\n * **Initial value**: `visible`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/visibility\n */\n visibility?: Property.Visibility | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | pre | pre-wrap | pre-line | <'white-space-collapse'> || <'text-wrap-mode'>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/white-space\n */\n whiteSpace?: Property.WhiteSpace | undefined;\n /**\n * Since March 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `collapse | preserve | preserve-breaks | preserve-spaces | break-spaces`\n *\n * **Initial value**: `collapse`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **114** | **124** | **17.4** | **114** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/white-space-collapse\n */\n whiteSpaceCollapse?: Property.WhiteSpaceCollapse | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `2`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **25** | No | **1.3** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/widows\n */\n widows?: Property.Widows | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <length-percentage [0,∞]> | min-content | max-content | fit-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/width\n */\n width?: Property.Width<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | <animateable-feature>#`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **36** | **36** | **9.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/will-change\n */\n willChange?: Property.WillChange | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | break-all | keep-all | break-word | auto-phrase`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **15** | **3** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/word-break\n */\n wordBreak?: Property.WordBreak | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | <length>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **6** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/word-spacing\n */\n wordSpacing?: Property.WordSpacing<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2018.\n *\n * **Syntax**: `normal | break-word`\n *\n * **Initial value**: `normal`\n */\n wordWrap?: Property.WordWrap | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr`\n *\n * **Initial value**: `horizontal-tb`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :----: | :---: |\n * | **48** | **41** | **10.1** | **12** | **9** |\n * | 8 _-x-_ | | 5.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/writing-mode\n */\n writingMode?: Property.WritingMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `<length> | <percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **42** | **69** | **9** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/x\n */\n x?: Property.X<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `<length> | <percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **42** | **69** | **9** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/y\n */\n y?: Property.Y<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <integer>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/z-index\n */\n zIndex?: Property.ZIndex | undefined;\n /**\n * Since May 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `normal | reset | <number [0,∞]> || <percentage [0,∞]>`\n *\n * **Initial value**: `1`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-----: |\n * | **1** | **126** | **3.1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/zoom\n */\n zoom?: Property.Zoom | undefined;\n}\n\nexport interface StandardShorthandProperties<TLength = (string & {}) | 0, TTime = string & {}> {\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `initial | inherit | unset | revert | revert-layer`\n *\n * **Initial value**: There is no practical initial value for it.\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **37** | **27** | **9.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/all\n */\n all?: Property.All | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation>#`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation\n */\n animation?: Property.Animation<TTime> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ <'animation-range-start'> <'animation-range-end'>? ]#`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-range\n */\n animationRange?: Property.AnimationRange<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-layer>#? , <final-bg-layer>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background\n */\n background?: Property.Background<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-position>#`\n *\n * **Initial value**: `0% 0%`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-position\n */\n backgroundPosition?: Property.BackgroundPosition<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width> || <line-style> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border\n */\n border?: Property.Border<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'border-block-start'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block\n */\n borderBlock?: Property.BorderBlock<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'border-top-color'>{1,2}`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-color\n */\n borderBlockColor?: Property.BorderBlockColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-end\n */\n borderBlockEnd?: Property.BorderBlockEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-start\n */\n borderBlockStart?: Property.BorderBlockStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'border-top-style'>{1,2}`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-style\n */\n borderBlockStyle?: Property.BorderBlockStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'border-top-width'>{1,2}`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-width\n */\n borderBlockWidth?: Property.BorderBlockWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width> || <line-style> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-bottom\n */\n borderBottom?: Property.BorderBottom<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<color>{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-color\n */\n borderColor?: Property.BorderColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-------: | :-----: | :----: | :----: |\n * | **16** | **15** | **6** | **12** | **11** |\n * | 7 _-x-_ | 3.5 _-x-_ | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-image\n */\n borderImage?: Property.BorderImage | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'border-block-start'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline\n */\n borderInline?: Property.BorderInline<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'border-top-color'>{1,2}`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-color\n */\n borderInlineColor?: Property.BorderInlineColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-end\n */\n borderInlineEnd?: Property.BorderInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-start\n */\n borderInlineStart?: Property.BorderInlineStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'border-top-style'>{1,2}`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-style\n */\n borderInlineStyle?: Property.BorderInlineStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'border-top-width'>{1,2}`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-width\n */\n borderInlineWidth?: Property.BorderInlineWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width> || <line-style> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-left\n */\n borderLeft?: Property.BorderLeft<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,4} [ / <length-percentage [0,∞]>{1,4} ]?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :---: |\n * | **4** | **4** | **5** | **12** | **9** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-radius\n */\n borderRadius?: Property.BorderRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width> || <line-style> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-right\n */\n borderRight?: Property.BorderRight<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-style>{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-style\n */\n borderStyle?: Property.BorderStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width> || <line-style> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-top\n */\n borderTop?: Property.BorderTop<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width>{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-width\n */\n borderWidth?: Property.BorderWidth<TLength> | undefined;\n /** **Syntax**: `<'caret-color'> || <'caret-shape'>` */\n caret?: Property.Caret | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **50** | **52** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-rule\n */\n columnRule?: Property.ColumnRule<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'column-width'> || <'column-count'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :----: |\n * | **50** | **52** | **9** | **12** | **10** |\n * | | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/columns\n */\n columns?: Property.Columns<TLength> | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `[ auto? [ none | <length> ] ]{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **83** | **107** | **17** | **83** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/contain-intrinsic-size\n */\n containIntrinsicSize?: Property.ContainIntrinsicSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since February 2023.\n *\n * **Syntax**: `<'container-name'> [ / <'container-type'> ]?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **105** | **110** | **16** | **105** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/container\n */\n container?: Property.Container | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :------: |\n * | **29** | **22** | **9** | **12** | **11** |\n * | 21 _-x-_ | | 7 _-x-_ | | 10 _-x-_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flex\n */\n flex?: Property.Flex<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<'flex-direction'> || <'flex-wrap'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **29** | **28** | **9** | **12** | **11** |\n * | 21 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flex-flow\n */\n flexFlow?: Property.FlexFlow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ [ <'font-style'> || <font-variant-css2> || <'font-weight'> || <font-width-css3> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'># ] | <system-family-name>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font\n */\n font?: Property.Font | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<'row-gap'> <'column-gap'>?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/gap\n */\n gap?: Property.Gap<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<'grid-template'> | <'grid-template-rows'> / [ auto-flow && dense? ] <'grid-auto-columns'>? | [ auto-flow && dense? ] <'grid-auto-rows'>? / <'grid-template-columns'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid\n */\n grid?: Property.Grid | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<grid-line> [ / <grid-line> ]{0,3}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-area\n */\n gridArea?: Property.GridArea | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<grid-line> [ / <grid-line> ]?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-column\n */\n gridColumn?: Property.GridColumn | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<grid-line> [ / <grid-line> ]?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-row\n */\n gridRow?: Property.GridRow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `none | [ <'grid-template-rows'> / <'grid-template-columns'> ] | [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-template\n */\n gridTemplate?: Property.GridTemplate | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/inset\n */\n inset?: Property.Inset<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **63** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/inset-block\n */\n insetBlock?: Property.InsetBlock<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **63** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/inset-inline\n */\n insetInline?: Property.InsetInline<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | <integer>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :---------: | :----------: | :-------: | :----------: | :-: |\n * | **6** _-x-_ | **68** _-x-_ | 18.2-18.4 | **17** _-x-_ | No |\n * | | | 5 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/line-clamp\n */\n lineClamp?: Property.LineClamp | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'list-style-type'> || <'list-style-position'> || <'list-style-image'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/list-style\n */\n listStyle?: Property.ListStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'margin-top'>{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin\n */\n margin?: Property.Margin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'margin-top'>{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-block\n */\n marginBlock?: Property.MarginBlock<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'margin-top'>{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-inline\n */\n marginInline?: Property.MarginInline<TLength> | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<mask-layer>#`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :---: | :-: |\n * | **120** | **53** | **15.4** | 12-79 | No |\n * | 1 _-x-_ | | 3.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask\n */\n mask?: Property.Mask<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------------------------------: | :-----: | :----------------------------: | :-------------------------------: | :-: |\n * | **1** _(-webkit-mask-box-image)_ | No | **17.2** | **79** _(-webkit-mask-box-image)_ | No |\n * | | | 3.1 _(-webkit-mask-box-image)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-border\n */\n maskBorder?: Property.MaskBorder | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----------: | :-----: | :----: | :----: | :-: |\n * | **55** | **72** | **16** | **79** | No |\n * | 46 _(motion)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset\n */\n motion?: Property.Offset<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----------: | :-----: | :----: | :----: | :-: |\n * | **55** | **72** | **16** | **79** | No |\n * | 46 _(motion)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset\n */\n offset?: Property.Offset<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.\n *\n * **Syntax**: `<'outline-width'> || <'outline-style'> || <'outline-color'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :---: |\n * | **94** | **88** | **16.4** | **94** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/outline\n */\n outline?: Property.Outline<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ visible | hidden | clip | scroll | auto ]{1,2}`\n *\n * **Initial value**: `visible`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overflow\n */\n overflow?: Property.Overflow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `[ contain | none | auto ]{1,2}`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **63** | **59** | **16** | **18** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overscroll-behavior\n */\n overscrollBehavior?: Property.OverscrollBehavior | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'padding-top'>{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding\n */\n padding?: Property.Padding<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'padding-top'>{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-block\n */\n paddingBlock?: Property.PaddingBlock<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'padding-top'>{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-inline\n */\n paddingInline?: Property.PaddingInline<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'align-content'> <'justify-content'>?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **59** | **45** | **9** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/place-content\n */\n placeContent?: Property.PlaceContent | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'align-items'> <'justify-items'>?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **59** | **45** | **11** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/place-items\n */\n placeItems?: Property.PlaceItems | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'align-self'> <'justify-self'>?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **59** | **45** | **11** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/place-self\n */\n placeSelf?: Property.PlaceSelf | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<'position-try-order'>? <'position-try-fallbacks'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :---------: | :----: | :-----: | :-: |\n * | **125** | **preview** | **26** | **125** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/position-try\n */\n positionTry?: Property.PositionTry | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2021.\n *\n * **Syntax**: `<length>{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----------------------: | :----: | :-: |\n * | **69** | **90** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin\n */\n scrollMargin?: Property.ScrollMargin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<length>{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-block\n */\n scrollMarginBlock?: Property.ScrollMarginBlock<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<length>{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-inline\n */\n scrollMarginInline?: Property.ScrollMarginInline<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `[ auto | <length-percentage> ]{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding\n */\n scrollPadding?: Property.ScrollPadding<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `[ auto | <length-percentage> ]{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-block\n */\n scrollPaddingBlock?: Property.ScrollPaddingBlock<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `[ auto | <length-percentage> ]{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-inline\n */\n scrollPaddingInline?: Property.ScrollPaddingInline<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2021.\n *\n * **Syntax**: `<length>{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----------------------: | :----: | :-: |\n * | **69** | 68-90 | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin\n */\n scrollSnapMargin?: Property.ScrollMargin<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ <'scroll-timeline-name'> <'scroll-timeline-axis'>? ]#`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-timeline\n */\n scrollTimeline?: Property.ScrollTimeline | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'text-decoration-line'> || <'text-decoration-style'> || <'text-decoration-color'> || <'text-decoration-thickness'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-decoration\n */\n textDecoration?: Property.TextDecoration<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `<'text-emphasis-style'> || <'text-emphasis-color'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :----: | :------: | :-: |\n * | **99** | **46** | **7** | **99** | No |\n * | 25 _-x-_ | | | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-emphasis\n */\n textEmphasis?: Property.TextEmphasis | undefined;\n /**\n * Since March 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<'text-wrap-mode'> || <'text-wrap-style'>`\n *\n * **Initial value**: `wrap`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **114** | **121** | **17.4** | **114** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-wrap\n */\n textWrap?: Property.TextWrap | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-transition>#`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :----: | :----: |\n * | **26** | **16** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transition\n */\n transition?: Property.Transition<TTime> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ <'view-timeline-name'> [ <'view-timeline-axis'> || <'view-timeline-inset'> ]? ]#`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/view-timeline\n */\n viewTimeline?: Property.ViewTimeline | undefined;\n}\n\nexport interface StandardProperties<TLength = (string & {}) | 0, TTime = string & {}>\n extends StandardLonghandProperties<TLength, TTime>,\n StandardShorthandProperties<TLength, TTime> {}\n\nexport interface VendorLonghandProperties<TLength = (string & {}) | 0, TTime = string & {}> {\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n */\n MozAnimationDelay?: Property.AnimationDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-direction>#`\n *\n * **Initial value**: `normal`\n */\n MozAnimationDirection?: Property.AnimationDirection | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ auto | <time [0s,∞]> ]#`\n *\n * **Initial value**: `0s`\n */\n MozAnimationDuration?: Property.AnimationDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-fill-mode>#`\n *\n * **Initial value**: `none`\n */\n MozAnimationFillMode?: Property.AnimationFillMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-iteration-count>#`\n *\n * **Initial value**: `1`\n */\n MozAnimationIterationCount?: Property.AnimationIterationCount | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ none | <keyframes-name> ]#`\n *\n * **Initial value**: `none`\n */\n MozAnimationName?: Property.AnimationName | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-play-state>#`\n *\n * **Initial value**: `running`\n */\n MozAnimationPlayState?: Property.AnimationPlayState | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n */\n MozAnimationTimingFunction?: Property.AnimationTimingFunction | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | button | button-arrow-down | button-arrow-next | button-arrow-previous | button-arrow-up | button-bevel | button-focus | caret | checkbox | checkbox-container | checkbox-label | checkmenuitem | dualbutton | groupbox | listbox | listitem | menuarrow | menubar | menucheckbox | menuimage | menuitem | menuitemtext | menulist | menulist-button | menulist-text | menulist-textfield | menupopup | menuradio | menuseparator | meterbar | meterchunk | progressbar | progressbar-vertical | progresschunk | progresschunk-vertical | radio | radio-container | radio-label | radiomenuitem | range | range-thumb | resizer | resizerpanel | scale-horizontal | scalethumbend | scalethumb-horizontal | scalethumbstart | scalethumbtick | scalethumb-vertical | scale-vertical | scrollbarbutton-down | scrollbarbutton-left | scrollbarbutton-right | scrollbarbutton-up | scrollbarthumb-horizontal | scrollbarthumb-vertical | scrollbartrack-horizontal | scrollbartrack-vertical | searchfield | separator | sheet | spinner | spinner-downbutton | spinner-textfield | spinner-upbutton | splitter | statusbar | statusbarpanel | tab | tabpanel | tabpanels | tab-scroll-arrow-back | tab-scroll-arrow-forward | textfield | textfield-multiline | toolbar | toolbarbutton | toolbarbutton-dropdown | toolbargripper | toolbox | tooltip | treeheader | treeheadercell | treeheadersortarrow | treeitem | treeline | treetwisty | treetwistyopen | treeview | -moz-mac-unified-toolbar | -moz-win-borderless-glass | -moz-win-browsertabbar-toolbox | -moz-win-communicationstext | -moz-win-communications-toolbox | -moz-win-exclude-glass | -moz-win-glass | -moz-win-mediatext | -moz-win-media-toolbox | -moz-window-button-box | -moz-window-button-box-maximized | -moz-window-button-close | -moz-window-button-maximize | -moz-window-button-minimize | -moz-window-button-restore | -moz-window-frame-bottom | -moz-window-frame-left | -moz-window-frame-right | -moz-window-titlebar | -moz-window-titlebar-maximized`\n *\n * **Initial value**: `none` (but this value is overridden in the user agent CSS)\n */\n MozAppearance?: Property.MozAppearance | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `visible | hidden`\n *\n * **Initial value**: `visible`\n */\n MozBackfaceVisibility?: Property.BackfaceVisibility | undefined;\n /**\n * **Syntax**: `<url> | none`\n *\n * **Initial value**: `none`\n */\n MozBinding?: Property.MozBinding | undefined;\n /**\n * **Syntax**: `<color>+ | none`\n *\n * **Initial value**: `none`\n */\n MozBorderBottomColors?: Property.MozBorderBottomColors | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-color'>`\n *\n * **Initial value**: `currentcolor`\n */\n MozBorderEndColor?: Property.BorderInlineEndColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-style'>`\n *\n * **Initial value**: `none`\n */\n MozBorderEndStyle?: Property.BorderInlineEndStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'>`\n *\n * **Initial value**: `medium`\n */\n MozBorderEndWidth?: Property.BorderInlineEndWidth<TLength> | undefined;\n /**\n * **Syntax**: `<color>+ | none`\n *\n * **Initial value**: `none`\n */\n MozBorderLeftColors?: Property.MozBorderLeftColors | undefined;\n /**\n * **Syntax**: `<color>+ | none`\n *\n * **Initial value**: `none`\n */\n MozBorderRightColors?: Property.MozBorderRightColors | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-color'>`\n *\n * **Initial value**: `currentcolor`\n */\n MozBorderStartColor?: Property.BorderInlineStartColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-style'>`\n *\n * **Initial value**: `none`\n */\n MozBorderStartStyle?: Property.BorderInlineStartStyle | undefined;\n /**\n * **Syntax**: `<color>+ | none`\n *\n * **Initial value**: `none`\n */\n MozBorderTopColors?: Property.MozBorderTopColors | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `content-box | border-box`\n *\n * **Initial value**: `content-box`\n */\n MozBoxSizing?: Property.BoxSizing | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n */\n MozColumnRuleColor?: Property.ColumnRuleColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'border-style'>`\n *\n * **Initial value**: `none`\n */\n MozColumnRuleStyle?: Property.ColumnRuleStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'border-width'>`\n *\n * **Initial value**: `medium`\n */\n MozColumnRuleWidth?: Property.ColumnRuleWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since November 2016.\n *\n * **Syntax**: `<length> | auto`\n *\n * **Initial value**: `auto`\n */\n MozColumnWidth?: Property.ColumnWidth<TLength> | undefined;\n /**\n * **Syntax**: `none | [ fill | fill-opacity | stroke | stroke-opacity ]#`\n *\n * **Initial value**: `none`\n */\n MozContextProperties?: Property.MozContextProperties | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `normal | <feature-tag-value>#`\n *\n * **Initial value**: `normal`\n */\n MozFontFeatureSettings?: Property.FontFeatureSettings | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | <string>`\n *\n * **Initial value**: `normal`\n */\n MozFontLanguageOverride?: Property.FontLanguageOverride | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `none | manual | auto`\n *\n * **Initial value**: `manual`\n */\n MozHyphens?: Property.Hyphens | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'margin-top'>`\n *\n * **Initial value**: `0`\n */\n MozMarginEnd?: Property.MarginInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'margin-top'>`\n *\n * **Initial value**: `0`\n */\n MozMarginStart?: Property.MarginInlineStart<TLength> | undefined;\n /**\n * The **`-moz-orient`** CSS property specifies the orientation of the element to which it's applied.\n *\n * **Syntax**: `inline | block | horizontal | vertical`\n *\n * **Initial value**: `inline`\n */\n MozOrient?: Property.MozOrient | undefined;\n /**\n * The **`font-smooth`** CSS property controls the application of anti-aliasing when fonts are rendered.\n *\n * **Syntax**: `auto | never | always | <absolute-size> | <length>`\n *\n * **Initial value**: `auto`\n */\n MozOsxFontSmoothing?: Property.FontSmooth<TLength> | undefined;\n /**\n * **Syntax**: `<outline-radius>`\n *\n * **Initial value**: `0`\n */\n MozOutlineRadiusBottomleft?: Property.MozOutlineRadiusBottomleft<TLength> | undefined;\n /**\n * **Syntax**: `<outline-radius>`\n *\n * **Initial value**: `0`\n */\n MozOutlineRadiusBottomright?: Property.MozOutlineRadiusBottomright<TLength> | undefined;\n /**\n * **Syntax**: `<outline-radius>`\n *\n * **Initial value**: `0`\n */\n MozOutlineRadiusTopleft?: Property.MozOutlineRadiusTopleft<TLength> | undefined;\n /**\n * **Syntax**: `<outline-radius>`\n *\n * **Initial value**: `0`\n */\n MozOutlineRadiusTopright?: Property.MozOutlineRadiusTopright<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'padding-top'>`\n *\n * **Initial value**: `0`\n */\n MozPaddingEnd?: Property.PaddingInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'padding-top'>`\n *\n * **Initial value**: `0`\n */\n MozPaddingStart?: Property.PaddingInlineStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <length>`\n *\n * **Initial value**: `none`\n */\n MozPerspective?: Property.Perspective<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<position>`\n *\n * **Initial value**: `50% 50%`\n */\n MozPerspectiveOrigin?: Property.PerspectiveOrigin<TLength> | undefined;\n /**\n * **Syntax**: `ignore | stretch-to-fit`\n *\n * **Initial value**: `stretch-to-fit`\n */\n MozStackSizing?: Property.MozStackSizing | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2021.\n *\n * **Syntax**: `<integer> | <length>`\n *\n * **Initial value**: `8`\n */\n MozTabSize?: Property.TabSize<TLength> | undefined;\n /**\n * **Syntax**: `none | blink`\n *\n * **Initial value**: `none`\n */\n MozTextBlink?: Property.MozTextBlink | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | auto | <percentage>`\n *\n * **Initial value**: `auto` for smartphone browsers supporting inflation, `none` in other cases (and then not modifiable).\n */\n MozTextSizeAdjust?: Property.TextSizeAdjust | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <transform-list>`\n *\n * **Initial value**: `none`\n */\n MozTransform?: Property.Transform | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?`\n *\n * **Initial value**: `50% 50% 0`\n */\n MozTransformOrigin?: Property.TransformOrigin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `flat | preserve-3d`\n *\n * **Initial value**: `flat`\n */\n MozTransformStyle?: Property.TransformStyle | undefined;\n /**\n * The **`user-modify`** property has no effect in Firefox. It was originally planned to determine whether or not the content of an element can be edited by a user.\n *\n * **Syntax**: `read-only | read-write | write-only`\n *\n * **Initial value**: `read-only`\n */\n MozUserModify?: Property.MozUserModify | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | text | none | all`\n *\n * **Initial value**: `auto`\n */\n MozUserSelect?: Property.UserSelect | undefined;\n /**\n * **Syntax**: `drag | no-drag`\n *\n * **Initial value**: `drag`\n */\n MozWindowDragging?: Property.MozWindowDragging | undefined;\n /**\n * **Syntax**: `default | menu | tooltip | sheet | none`\n *\n * **Initial value**: `default`\n */\n MozWindowShadow?: Property.MozWindowShadow | undefined;\n /**\n * **Syntax**: `false | true`\n *\n * **Initial value**: `false`\n */\n msAccelerator?: Property.MsAccelerator | undefined;\n /**\n * **Syntax**: `tb | rl | bt | lr`\n *\n * **Initial value**: `tb`\n */\n msBlockProgression?: Property.MsBlockProgression | undefined;\n /**\n * **Syntax**: `none | chained`\n *\n * **Initial value**: `none`\n */\n msContentZoomChaining?: Property.MsContentZoomChaining | undefined;\n /**\n * **Syntax**: `<percentage>`\n *\n * **Initial value**: `400%`\n */\n msContentZoomLimitMax?: Property.MsContentZoomLimitMax | undefined;\n /**\n * **Syntax**: `<percentage>`\n *\n * **Initial value**: `100%`\n */\n msContentZoomLimitMin?: Property.MsContentZoomLimitMin | undefined;\n /**\n * **Syntax**: `snapInterval( <percentage>, <percentage> ) | snapList( <percentage># )`\n *\n * **Initial value**: `snapInterval(0%, 100%)`\n */\n msContentZoomSnapPoints?: Property.MsContentZoomSnapPoints | undefined;\n /**\n * **Syntax**: `none | proximity | mandatory`\n *\n * **Initial value**: `none`\n */\n msContentZoomSnapType?: Property.MsContentZoomSnapType | undefined;\n /**\n * **Syntax**: `none | zoom`\n *\n * **Initial value**: zoom for the top level element, none for all other elements\n */\n msContentZooming?: Property.MsContentZooming | undefined;\n /**\n * **Syntax**: `<string>`\n *\n * **Initial value**: \"\" (the empty string)\n */\n msFilter?: Property.MsFilter | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `row | row-reverse | column | column-reverse`\n *\n * **Initial value**: `row`\n */\n msFlexDirection?: Property.FlexDirection | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `0`\n */\n msFlexPositive?: Property.FlexGrow | undefined;\n /**\n * **Syntax**: `[ none | <custom-ident> ]#`\n *\n * **Initial value**: `none`\n */\n msFlowFrom?: Property.MsFlowFrom | undefined;\n /**\n * **Syntax**: `[ none | <custom-ident> ]#`\n *\n * **Initial value**: `none`\n */\n msFlowInto?: Property.MsFlowInto | undefined;\n /**\n * **Syntax**: `none | <track-list> | <auto-track-list>`\n *\n * **Initial value**: `none`\n */\n msGridColumns?: Property.MsGridColumns<TLength> | undefined;\n /**\n * **Syntax**: `none | <track-list> | <auto-track-list>`\n *\n * **Initial value**: `none`\n */\n msGridRows?: Property.MsGridRows<TLength> | undefined;\n /**\n * **Syntax**: `auto | none`\n *\n * **Initial value**: `auto`\n */\n msHighContrastAdjust?: Property.MsHighContrastAdjust | undefined;\n /**\n * **Syntax**: `auto | <integer>{1,3}`\n *\n * **Initial value**: `auto`\n */\n msHyphenateLimitChars?: Property.MsHyphenateLimitChars | undefined;\n /**\n * **Syntax**: `no-limit | <integer>`\n *\n * **Initial value**: `no-limit`\n */\n msHyphenateLimitLines?: Property.MsHyphenateLimitLines | undefined;\n /**\n * **Syntax**: `<percentage> | <length>`\n *\n * **Initial value**: `0`\n */\n msHyphenateLimitZone?: Property.MsHyphenateLimitZone<TLength> | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `none | manual | auto`\n *\n * **Initial value**: `manual`\n */\n msHyphens?: Property.Hyphens | undefined;\n /**\n * **Syntax**: `auto | after`\n *\n * **Initial value**: `auto`\n */\n msImeAlign?: Property.MsImeAlign | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `auto | loose | normal | strict | anywhere`\n *\n * **Initial value**: `auto`\n */\n msLineBreak?: Property.LineBreak | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `0`\n */\n msOrder?: Property.Order | undefined;\n /**\n * **Syntax**: `auto | none | scrollbar | -ms-autohiding-scrollbar`\n *\n * **Initial value**: `auto`\n */\n msOverflowStyle?: Property.MsOverflowStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `visible | hidden | clip | scroll | auto`\n *\n * **Initial value**: `visible`\n */\n msOverflowX?: Property.OverflowX | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `visible | hidden | clip | scroll | auto`\n *\n * **Initial value**: `visible`\n */\n msOverflowY?: Property.OverflowY | undefined;\n /**\n * **Syntax**: `chained | none`\n *\n * **Initial value**: `chained`\n */\n msScrollChaining?: Property.MsScrollChaining | undefined;\n /**\n * **Syntax**: `auto | <length>`\n *\n * **Initial value**: `auto`\n */\n msScrollLimitXMax?: Property.MsScrollLimitXMax<TLength> | undefined;\n /**\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n */\n msScrollLimitXMin?: Property.MsScrollLimitXMin<TLength> | undefined;\n /**\n * **Syntax**: `auto | <length>`\n *\n * **Initial value**: `auto`\n */\n msScrollLimitYMax?: Property.MsScrollLimitYMax<TLength> | undefined;\n /**\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n */\n msScrollLimitYMin?: Property.MsScrollLimitYMin<TLength> | undefined;\n /**\n * **Syntax**: `none | railed`\n *\n * **Initial value**: `railed`\n */\n msScrollRails?: Property.MsScrollRails | undefined;\n /**\n * **Syntax**: `snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )`\n *\n * **Initial value**: `snapInterval(0px, 100%)`\n */\n msScrollSnapPointsX?: Property.MsScrollSnapPointsX | undefined;\n /**\n * **Syntax**: `snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )`\n *\n * **Initial value**: `snapInterval(0px, 100%)`\n */\n msScrollSnapPointsY?: Property.MsScrollSnapPointsY | undefined;\n /**\n * **Syntax**: `none | proximity | mandatory`\n *\n * **Initial value**: `none`\n */\n msScrollSnapType?: Property.MsScrollSnapType | undefined;\n /**\n * **Syntax**: `none | vertical-to-horizontal`\n *\n * **Initial value**: `none`\n */\n msScrollTranslation?: Property.MsScrollTranslation | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: depends on user agent\n */\n msScrollbar3dlightColor?: Property.MsScrollbar3dlightColor | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: `ButtonText`\n */\n msScrollbarArrowColor?: Property.MsScrollbarArrowColor | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: depends on user agent\n */\n msScrollbarBaseColor?: Property.MsScrollbarBaseColor | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: `ThreeDDarkShadow`\n */\n msScrollbarDarkshadowColor?: Property.MsScrollbarDarkshadowColor | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: `ThreeDFace`\n */\n msScrollbarFaceColor?: Property.MsScrollbarFaceColor | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: `ThreeDHighlight`\n */\n msScrollbarHighlightColor?: Property.MsScrollbarHighlightColor | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: `ThreeDDarkShadow`\n */\n msScrollbarShadowColor?: Property.MsScrollbarShadowColor | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: `Scrollbar`\n */\n msScrollbarTrackColor?: Property.MsScrollbarTrackColor | undefined;\n /**\n * **Syntax**: `none | ideograph-alpha | ideograph-numeric | ideograph-parenthesis | ideograph-space`\n *\n * **Initial value**: `none`\n */\n msTextAutospace?: Property.MsTextAutospace | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | all | [ digits <integer>? ]`\n *\n * **Initial value**: `none`\n */\n msTextCombineHorizontal?: Property.TextCombineUpright | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ clip | ellipsis | <string> ]{1,2}`\n *\n * **Initial value**: `clip`\n */\n msTextOverflow?: Property.TextOverflow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2019.\n *\n * **Syntax**: `auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation`\n *\n * **Initial value**: `auto`\n */\n msTouchAction?: Property.TouchAction | undefined;\n /**\n * **Syntax**: `grippers | none`\n *\n * **Initial value**: `grippers`\n */\n msTouchSelect?: Property.MsTouchSelect | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <transform-list>`\n *\n * **Initial value**: `none`\n */\n msTransform?: Property.Transform | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?`\n *\n * **Initial value**: `50% 50% 0`\n */\n msTransformOrigin?: Property.TransformOrigin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n */\n msTransitionDelay?: Property.TransitionDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n */\n msTransitionDuration?: Property.TransitionDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <single-transition-property>#`\n *\n * **Initial value**: all\n */\n msTransitionProperty?: Property.TransitionProperty | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n */\n msTransitionTimingFunction?: Property.TransitionTimingFunction | undefined;\n /**\n * **Syntax**: `none | element | text`\n *\n * **Initial value**: `text`\n */\n msUserSelect?: Property.MsUserSelect | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | break-all | keep-all | break-word | auto-phrase`\n *\n * **Initial value**: `normal`\n */\n msWordBreak?: Property.WordBreak | undefined;\n /**\n * **Syntax**: `auto | both | start | end | maximum | clear`\n *\n * **Initial value**: `auto`\n */\n msWrapFlow?: Property.MsWrapFlow | undefined;\n /**\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n */\n msWrapMargin?: Property.MsWrapMargin<TLength> | undefined;\n /**\n * **Syntax**: `wrap | none`\n *\n * **Initial value**: `wrap`\n */\n msWrapThrough?: Property.MsWrapThrough | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr`\n *\n * **Initial value**: `horizontal-tb`\n */\n msWritingMode?: Property.WritingMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>`\n *\n * **Initial value**: `normal`\n */\n WebkitAlignContent?: Property.AlignContent | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ] | anchor-center`\n *\n * **Initial value**: `normal`\n */\n WebkitAlignItems?: Property.AlignItems | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position> | anchor-center`\n *\n * **Initial value**: `auto`\n */\n WebkitAlignSelf?: Property.AlignSelf | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n */\n WebkitAnimationDelay?: Property.AnimationDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-direction>#`\n *\n * **Initial value**: `normal`\n */\n WebkitAnimationDirection?: Property.AnimationDirection | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ auto | <time [0s,∞]> ]#`\n *\n * **Initial value**: `0s`\n */\n WebkitAnimationDuration?: Property.AnimationDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-fill-mode>#`\n *\n * **Initial value**: `none`\n */\n WebkitAnimationFillMode?: Property.AnimationFillMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-iteration-count>#`\n *\n * **Initial value**: `1`\n */\n WebkitAnimationIterationCount?: Property.AnimationIterationCount | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ none | <keyframes-name> ]#`\n *\n * **Initial value**: `none`\n */\n WebkitAnimationName?: Property.AnimationName | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-play-state>#`\n *\n * **Initial value**: `running`\n */\n WebkitAnimationPlayState?: Property.AnimationPlayState | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n */\n WebkitAnimationTimingFunction?: Property.AnimationTimingFunction | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | button | button-bevel | caret | checkbox | default-button | inner-spin-button | listbox | listitem | media-controls-background | media-controls-fullscreen-background | media-current-time-display | media-enter-fullscreen-button | media-exit-fullscreen-button | media-fullscreen-button | media-mute-button | media-overlay-play-button | media-play-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-sliderthumb | menulist | menulist-button | menulist-text | menulist-textfield | meter | progress-bar | progress-bar-value | push-button | radio | searchfield | searchfield-cancel-button | searchfield-decoration | searchfield-results-button | searchfield-results-decoration | slider-horizontal | slider-vertical | sliderthumb-horizontal | sliderthumb-vertical | square-button | textarea | textfield | -apple-pay-button`\n *\n * **Initial value**: `none` (but this value is overridden in the user agent CSS)\n */\n WebkitAppearance?: Property.WebkitAppearance | undefined;\n /**\n * Since September 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `none | <filter-value-list>`\n *\n * **Initial value**: `none`\n */\n WebkitBackdropFilter?: Property.BackdropFilter | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `visible | hidden`\n *\n * **Initial value**: `visible`\n */\n WebkitBackfaceVisibility?: Property.BackfaceVisibility | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-clip>#`\n *\n * **Initial value**: `border-box`\n */\n WebkitBackgroundClip?: Property.BackgroundClip | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<visual-box>#`\n *\n * **Initial value**: `padding-box`\n */\n WebkitBackgroundOrigin?: Property.BackgroundOrigin | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-size>#`\n *\n * **Initial value**: `auto auto`\n */\n WebkitBackgroundSize?: Property.BackgroundSize<TLength> | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n */\n WebkitBorderBeforeColor?: Property.WebkitBorderBeforeColor | undefined;\n /**\n * **Syntax**: `<'border-style'>`\n *\n * **Initial value**: `none`\n */\n WebkitBorderBeforeStyle?: Property.WebkitBorderBeforeStyle | undefined;\n /**\n * **Syntax**: `<'border-width'>`\n *\n * **Initial value**: `medium`\n */\n WebkitBorderBeforeWidth?: Property.WebkitBorderBeforeWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n */\n WebkitBorderBottomLeftRadius?: Property.BorderBottomLeftRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n */\n WebkitBorderBottomRightRadius?: Property.BorderBottomRightRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ <number [0,∞]> | <percentage [0,∞]> ]{1,4} && fill?`\n *\n * **Initial value**: `100%`\n */\n WebkitBorderImageSlice?: Property.BorderImageSlice | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n */\n WebkitBorderTopLeftRadius?: Property.BorderTopLeftRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n */\n WebkitBorderTopRightRadius?: Property.BorderTopRightRadius<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `slice | clone`\n *\n * **Initial value**: `slice`\n */\n WebkitBoxDecorationBreak?: Property.BoxDecorationBreak | undefined;\n /**\n * The **`-webkit-box-reflect`** CSS property lets you reflect the content of an element in one specific direction.\n *\n * **Syntax**: `[ above | below | right | left ]? <length>? <image>?`\n *\n * **Initial value**: `none`\n */\n WebkitBoxReflect?: Property.WebkitBoxReflect<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | <shadow>#`\n *\n * **Initial value**: `none`\n */\n WebkitBoxShadow?: Property.BoxShadow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `content-box | border-box`\n *\n * **Initial value**: `content-box`\n */\n WebkitBoxSizing?: Property.BoxSizing | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<clip-source> | [ <basic-shape> || <geometry-box> ] | none`\n *\n * **Initial value**: `none`\n */\n WebkitClipPath?: Property.ClipPath | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<integer> | auto`\n *\n * **Initial value**: `auto`\n */\n WebkitColumnCount?: Property.ColumnCount | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `auto | balance`\n *\n * **Initial value**: `balance`\n */\n WebkitColumnFill?: Property.ColumnFill | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n */\n WebkitColumnRuleColor?: Property.ColumnRuleColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'border-style'>`\n *\n * **Initial value**: `none`\n */\n WebkitColumnRuleStyle?: Property.ColumnRuleStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'border-width'>`\n *\n * **Initial value**: `medium`\n */\n WebkitColumnRuleWidth?: Property.ColumnRuleWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `none | all`\n *\n * **Initial value**: `none`\n */\n WebkitColumnSpan?: Property.ColumnSpan | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since November 2016.\n *\n * **Syntax**: `<length> | auto`\n *\n * **Initial value**: `auto`\n */\n WebkitColumnWidth?: Property.ColumnWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.\n *\n * **Syntax**: `none | <filter-value-list>`\n *\n * **Initial value**: `none`\n */\n WebkitFilter?: Property.Filter | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `content | <'width'>`\n *\n * **Initial value**: `auto`\n */\n WebkitFlexBasis?: Property.FlexBasis<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `row | row-reverse | column | column-reverse`\n *\n * **Initial value**: `row`\n */\n WebkitFlexDirection?: Property.FlexDirection | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `0`\n */\n WebkitFlexGrow?: Property.FlexGrow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `1`\n */\n WebkitFlexShrink?: Property.FlexShrink | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `nowrap | wrap | wrap-reverse`\n *\n * **Initial value**: `nowrap`\n */\n WebkitFlexWrap?: Property.FlexWrap | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `normal | <feature-tag-value>#`\n *\n * **Initial value**: `normal`\n */\n WebkitFontFeatureSettings?: Property.FontFeatureSettings | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | normal | none`\n *\n * **Initial value**: `auto`\n */\n WebkitFontKerning?: Property.FontKerning | undefined;\n /**\n * The **`font-smooth`** CSS property controls the application of anti-aliasing when fonts are rendered.\n *\n * **Syntax**: `auto | never | always | <absolute-size> | <length>`\n *\n * **Initial value**: `auto`\n */\n WebkitFontSmoothing?: Property.FontSmooth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]`\n *\n * **Initial value**: `normal`\n */\n WebkitFontVariantLigatures?: Property.FontVariantLigatures | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto | <string>`\n *\n * **Initial value**: `auto`\n */\n WebkitHyphenateCharacter?: Property.HyphenateCharacter | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `none | manual | auto`\n *\n * **Initial value**: `manual`\n */\n WebkitHyphens?: Property.Hyphens | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | [ <number> <integer>? ]`\n *\n * **Initial value**: `normal`\n */\n WebkitInitialLetter?: Property.InitialLetter | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]`\n *\n * **Initial value**: `normal`\n */\n WebkitJustifyContent?: Property.JustifyContent | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `auto | loose | normal | strict | anywhere`\n *\n * **Initial value**: `auto`\n */\n WebkitLineBreak?: Property.LineBreak | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | <integer>`\n *\n * **Initial value**: `none`\n */\n WebkitLineClamp?: Property.WebkitLineClamp | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'width'>`\n *\n * **Initial value**: `auto`\n */\n WebkitLogicalHeight?: Property.BlockSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'width'>`\n *\n * **Initial value**: `auto`\n */\n WebkitLogicalWidth?: Property.InlineSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'margin-top'>`\n *\n * **Initial value**: `0`\n */\n WebkitMarginEnd?: Property.MarginInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'margin-top'>`\n *\n * **Initial value**: `0`\n */\n WebkitMarginStart?: Property.MarginInlineStart<TLength> | undefined;\n /**\n * **Syntax**: `<attachment>#`\n *\n * **Initial value**: `scroll`\n */\n WebkitMaskAttachment?: Property.WebkitMaskAttachment | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ <length> | <number> ]{1,4}`\n *\n * **Initial value**: `0`\n */\n WebkitMaskBoxImageOutset?: Property.MaskBorderOutset<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ stretch | repeat | round | space ]{1,2}`\n *\n * **Initial value**: `stretch`\n */\n WebkitMaskBoxImageRepeat?: Property.MaskBorderRepeat | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<number-percentage>{1,4} fill?`\n *\n * **Initial value**: `0`\n */\n WebkitMaskBoxImageSlice?: Property.MaskBorderSlice | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | <image>`\n *\n * **Initial value**: `none`\n */\n WebkitMaskBoxImageSource?: Property.MaskBorderSource | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ <length-percentage> | <number> | auto ]{1,4}`\n *\n * **Initial value**: `auto`\n */\n WebkitMaskBoxImageWidth?: Property.MaskBorderWidth<TLength> | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `[ <coord-box> | no-clip | border | padding | content | text ]#`\n *\n * **Initial value**: `border`\n */\n WebkitMaskClip?: Property.WebkitMaskClip | undefined;\n /**\n * The **`-webkit-mask-composite`** property specifies the manner in which multiple mask images applied to the same element are composited with one another. Mask images are composited in the opposite order that they are declared with the `-webkit-mask-image` property.\n *\n * **Syntax**: `<composite-style>#`\n *\n * **Initial value**: `source-over`\n */\n WebkitMaskComposite?: Property.WebkitMaskComposite | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<mask-reference>#`\n *\n * **Initial value**: `none`\n */\n WebkitMaskImage?: Property.WebkitMaskImage | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `[ <coord-box> | border | padding | content ]#`\n *\n * **Initial value**: `padding`\n */\n WebkitMaskOrigin?: Property.WebkitMaskOrigin | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<position>#`\n *\n * **Initial value**: `0% 0%`\n */\n WebkitMaskPosition?: Property.WebkitMaskPosition<TLength> | undefined;\n /**\n * The `-webkit-mask-position-x` CSS property sets the initial horizontal position of a mask image.\n *\n * **Syntax**: `[ <length-percentage> | left | center | right ]#`\n *\n * **Initial value**: `0%`\n */\n WebkitMaskPositionX?: Property.WebkitMaskPositionX<TLength> | undefined;\n /**\n * The `-webkit-mask-position-y` CSS property sets the initial vertical position of a mask image.\n *\n * **Syntax**: `[ <length-percentage> | top | center | bottom ]#`\n *\n * **Initial value**: `0%`\n */\n WebkitMaskPositionY?: Property.WebkitMaskPositionY<TLength> | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<repeat-style>#`\n *\n * **Initial value**: `repeat`\n */\n WebkitMaskRepeat?: Property.WebkitMaskRepeat | undefined;\n /**\n * The `-webkit-mask-repeat-x` property specifies whether and how a mask image is repeated (tiled) horizontally.\n *\n * **Syntax**: `repeat | no-repeat | space | round`\n *\n * **Initial value**: `repeat`\n */\n WebkitMaskRepeatX?: Property.WebkitMaskRepeatX | undefined;\n /**\n * The `-webkit-mask-repeat-y` property sets whether and how a mask image is repeated (tiled) vertically.\n *\n * **Syntax**: `repeat | no-repeat | space | round`\n *\n * **Initial value**: `repeat`\n */\n WebkitMaskRepeatY?: Property.WebkitMaskRepeatY | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<bg-size>#`\n *\n * **Initial value**: `auto auto`\n */\n WebkitMaskSize?: Property.WebkitMaskSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'max-width'>`\n *\n * **Initial value**: `none`\n */\n WebkitMaxInlineSize?: Property.MaxInlineSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `0`\n */\n WebkitOrder?: Property.Order | undefined;\n /**\n * **Syntax**: `auto | touch`\n *\n * **Initial value**: `auto`\n */\n WebkitOverflowScrolling?: Property.WebkitOverflowScrolling | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'padding-top'>`\n *\n * **Initial value**: `0`\n */\n WebkitPaddingEnd?: Property.PaddingInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'padding-top'>`\n *\n * **Initial value**: `0`\n */\n WebkitPaddingStart?: Property.PaddingInlineStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <length>`\n *\n * **Initial value**: `none`\n */\n WebkitPerspective?: Property.Perspective<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<position>`\n *\n * **Initial value**: `50% 50%`\n */\n WebkitPerspectiveOrigin?: Property.PerspectiveOrigin<TLength> | undefined;\n /**\n * Since May 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `economy | exact`\n *\n * **Initial value**: `economy`\n */\n WebkitPrintColorAdjust?: Property.PrintColorAdjust | undefined;\n /**\n * Since December 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `[ alternate || [ over | under ] ] | inter-character`\n *\n * **Initial value**: `alternate`\n */\n WebkitRubyPosition?: Property.RubyPosition | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2022.\n *\n * **Syntax**: `none | [ x | y | block | inline | both ] [ mandatory | proximity ]?`\n *\n * **Initial value**: `none`\n */\n WebkitScrollSnapType?: Property.ScrollSnapType | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<length-percentage>`\n *\n * **Initial value**: `0`\n */\n WebkitShapeMargin?: Property.ShapeMargin<TLength> | undefined;\n /**\n * **`-webkit-tap-highlight-color`** is a non-standard CSS property that sets the color of the highlight that appears over a link while it's being tapped. The highlighting indicates to the user that their tap is being successfully recognized, and indicates which element they're tapping on.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `black`\n */\n WebkitTapHighlightColor?: Property.WebkitTapHighlightColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | all | [ digits <integer>? ]`\n *\n * **Initial value**: `none`\n */\n WebkitTextCombine?: Property.TextCombineUpright | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n */\n WebkitTextDecorationColor?: Property.TextDecorationColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error`\n *\n * **Initial value**: `none`\n */\n WebkitTextDecorationLine?: Property.TextDecorationLine | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]`\n *\n * **Initial value**: `objects`\n */\n WebkitTextDecorationSkip?: Property.TextDecorationSkip | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `solid | double | dotted | dashed | wavy`\n *\n * **Initial value**: `solid`\n */\n WebkitTextDecorationStyle?: Property.TextDecorationStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n */\n WebkitTextEmphasisColor?: Property.TextEmphasisColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `auto | [ over | under ] && [ right | left ]?`\n *\n * **Initial value**: `auto`\n */\n WebkitTextEmphasisPosition?: Property.TextEmphasisPosition | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>`\n *\n * **Initial value**: `none`\n */\n WebkitTextEmphasisStyle?: Property.TextEmphasisStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n */\n WebkitTextFillColor?: Property.WebkitTextFillColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2020.\n *\n * **Syntax**: `mixed | upright | sideways`\n *\n * **Initial value**: `mixed`\n */\n WebkitTextOrientation?: Property.TextOrientation | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | auto | <percentage>`\n *\n * **Initial value**: `auto` for smartphone browsers supporting inflation, `none` in other cases (and then not modifiable).\n */\n WebkitTextSizeAdjust?: Property.TextSizeAdjust | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n */\n WebkitTextStrokeColor?: Property.WebkitTextStrokeColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n */\n WebkitTextStrokeWidth?: Property.WebkitTextStrokeWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `auto | from-font | [ under || [ left | right ] ]`\n *\n * **Initial value**: `auto`\n */\n WebkitTextUnderlinePosition?: Property.TextUnderlinePosition | undefined;\n /**\n * The `-webkit-touch-callout` CSS property controls the display of the default callout shown when you touch and hold a touch target.\n *\n * **Syntax**: `default | none`\n *\n * **Initial value**: `default`\n */\n WebkitTouchCallout?: Property.WebkitTouchCallout | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <transform-list>`\n *\n * **Initial value**: `none`\n */\n WebkitTransform?: Property.Transform | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?`\n *\n * **Initial value**: `50% 50% 0`\n */\n WebkitTransformOrigin?: Property.TransformOrigin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `flat | preserve-3d`\n *\n * **Initial value**: `flat`\n */\n WebkitTransformStyle?: Property.TransformStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n */\n WebkitTransitionDelay?: Property.TransitionDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n */\n WebkitTransitionDuration?: Property.TransitionDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <single-transition-property>#`\n *\n * **Initial value**: all\n */\n WebkitTransitionProperty?: Property.TransitionProperty | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n */\n WebkitTransitionTimingFunction?: Property.TransitionTimingFunction | undefined;\n /**\n * **Syntax**: `read-only | read-write | read-write-plaintext-only`\n *\n * **Initial value**: `read-only`\n */\n WebkitUserModify?: Property.WebkitUserModify | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | text | none | all`\n *\n * **Initial value**: `auto`\n */\n WebkitUserSelect?: Property.WebkitUserSelect | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr`\n *\n * **Initial value**: `horizontal-tb`\n */\n WebkitWritingMode?: Property.WritingMode | undefined;\n}\n\nexport interface VendorShorthandProperties<TLength = (string & {}) | 0, TTime = string & {}> {\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation>#`\n */\n MozAnimation?: Property.Animation<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>`\n */\n MozBorderImage?: Property.BorderImage | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>`\n */\n MozColumnRule?: Property.ColumnRule<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'column-width'> || <'column-count'>`\n */\n MozColumns?: Property.Columns<TLength> | undefined;\n /** **Syntax**: `<outline-radius>{1,4} [ / <outline-radius>{1,4} ]?` */\n MozOutlineRadius?: Property.MozOutlineRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-transition>#`\n */\n MozTransition?: Property.Transition<TTime> | undefined;\n /** **Syntax**: `<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>` */\n msContentZoomLimit?: Property.MsContentZoomLimit | undefined;\n /** **Syntax**: `<'-ms-content-zoom-snap-type'> || <'-ms-content-zoom-snap-points'>` */\n msContentZoomSnap?: Property.MsContentZoomSnap | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]`\n */\n msFlex?: Property.Flex<TLength> | undefined;\n /** **Syntax**: `<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>` */\n msScrollLimit?: Property.MsScrollLimit | undefined;\n /** **Syntax**: `<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>` */\n msScrollSnapX?: Property.MsScrollSnapX | undefined;\n /** **Syntax**: `<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>` */\n msScrollSnapY?: Property.MsScrollSnapY | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-transition>#`\n */\n msTransition?: Property.Transition<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation>#`\n */\n WebkitAnimation?: Property.Animation<TTime> | undefined;\n /**\n * The **`-webkit-border-before`** CSS property is a shorthand property for setting the individual logical block start border property values in a single place in the style sheet.\n *\n * **Syntax**: `<'border-width'> || <'border-style'> || <color>`\n */\n WebkitBorderBefore?: Property.WebkitBorderBefore<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>`\n */\n WebkitBorderImage?: Property.BorderImage | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,4} [ / <length-percentage [0,∞]>{1,4} ]?`\n */\n WebkitBorderRadius?: Property.BorderRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>`\n */\n WebkitColumnRule?: Property.ColumnRule<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'column-width'> || <'column-count'>`\n */\n WebkitColumns?: Property.Columns<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]`\n */\n WebkitFlex?: Property.Flex<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<'flex-direction'> || <'flex-wrap'>`\n */\n WebkitFlexFlow?: Property.FlexFlow | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `[ <mask-reference> || <position> [ / <bg-size> ]? || <repeat-style> || [ <visual-box> | border | padding | content | text ] || [ <visual-box> | border | padding | content ] ]#`\n */\n WebkitMask?: Property.WebkitMask<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>`\n */\n WebkitMaskBoxImage?: Property.MaskBorder | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `<'text-emphasis-style'> || <'text-emphasis-color'>`\n */\n WebkitTextEmphasis?: Property.TextEmphasis | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<length> || <color>`\n */\n WebkitTextStroke?: Property.WebkitTextStroke<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-transition>#`\n */\n WebkitTransition?: Property.Transition<TTime> | undefined;\n}\n\nexport interface VendorProperties<TLength = (string & {}) | 0, TTime = string & {}> extends VendorLonghandProperties<TLength, TTime>, VendorShorthandProperties<TLength, TTime> {}\n\nexport interface ObsoleteProperties<TLength = (string & {}) | 0, TTime = string & {}> {\n /**\n * The **`box-align`** CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box.\n *\n * **Syntax**: `start | center | end | baseline | stretch`\n *\n * **Initial value**: `stretch`\n *\n * @deprecated\n */\n boxAlign?: Property.BoxAlign | undefined;\n /**\n * The **`box-direction`** CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).\n *\n * **Syntax**: `normal | reverse | inherit`\n *\n * **Initial value**: `normal`\n *\n * @deprecated\n */\n boxDirection?: Property.BoxDirection | undefined;\n /**\n * The **`-moz-box-flex`** and **`-webkit-box-flex`** CSS properties specify how a `-moz-box` or `-webkit-box` grows to fill the box that contains it, in the direction of the containing box's layout.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n boxFlex?: Property.BoxFlex | undefined;\n /**\n * The **`box-flex-group`** CSS property assigns the flexbox's child elements to a flex group.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n boxFlexGroup?: Property.BoxFlexGroup | undefined;\n /**\n * The **`box-lines`** CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes).\n *\n * **Syntax**: `single | multiple`\n *\n * **Initial value**: `single`\n *\n * @deprecated\n */\n boxLines?: Property.BoxLines | undefined;\n /**\n * The **`box-ordinal-group`** CSS property assigns the flexbox's child elements to an ordinal group.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n boxOrdinalGroup?: Property.BoxOrdinalGroup | undefined;\n /**\n * The **`box-orient`** CSS property sets whether an element lays out its contents horizontally or vertically.\n *\n * **Syntax**: `horizontal | vertical | inline-axis | block-axis | inherit`\n *\n * **Initial value**: `inline-axis`\n *\n * @deprecated\n */\n boxOrient?: Property.BoxOrient | undefined;\n /**\n * The **`-moz-box-pack`** and **`-webkit-box-pack`** CSS properties specify how a `-moz-box` or `-webkit-box` packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box.\n *\n * **Syntax**: `start | center | end | justify`\n *\n * **Initial value**: `start`\n *\n * @deprecated\n */\n boxPack?: Property.BoxPack | undefined;\n /**\n * The **`clip`** CSS property defines a visible portion of an element. The `clip` property applies only to absolutely positioned elements — that is, elements with `position:absolute` or `position:fixed`.\n *\n * **Syntax**: `<shape> | auto`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n clip?: Property.Clip | undefined;\n /**\n * The **`font-stretch`** CSS property selects a normal, condensed, or expanded face from a font.\n *\n * **Syntax**: `<font-stretch-absolute>`\n *\n * **Initial value**: `normal`\n *\n * @deprecated\n */\n fontStretch?: Property.FontStretch | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage>`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n gridColumnGap?: Property.GridColumnGap<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<'grid-row-gap'> <'grid-column-gap'>?`\n *\n * @deprecated\n */\n gridGap?: Property.GridGap<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<length-percentage>`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n gridRowGap?: Property.GridRowGap<TLength> | undefined;\n /**\n * **Syntax**: `auto | normal | active | inactive | disabled`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n imeMode?: Property.ImeMode | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | <position-area>`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n insetArea?: Property.PositionArea | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>{1,2}`\n *\n * @deprecated\n */\n offsetBlock?: Property.InsetBlock<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n offsetBlockEnd?: Property.InsetBlockEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n offsetBlockStart?: Property.InsetBlockStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>{1,2}`\n *\n * @deprecated\n */\n offsetInline?: Property.InsetInline<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n offsetInlineEnd?: Property.InsetInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n offsetInlineStart?: Property.InsetInlineStart<TLength> | undefined;\n /**\n * The **`page-break-after`** CSS property adjusts page breaks _after_ the current element.\n *\n * **Syntax**: `auto | always | avoid | left | right | recto | verso`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n pageBreakAfter?: Property.PageBreakAfter | undefined;\n /**\n * The **`page-break-before`** CSS property adjusts page breaks _before_ the current element.\n *\n * **Syntax**: `auto | always | avoid | left | right | recto | verso`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n pageBreakBefore?: Property.PageBreakBefore | undefined;\n /**\n * The **`page-break-inside`** CSS property adjusts page breaks _inside_ the current element.\n *\n * **Syntax**: `auto | avoid`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n pageBreakInside?: Property.PageBreakInside | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | [ [<dashed-ident> || <try-tactic>] | <'position-area'> ]#`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n positionTryOptions?: Property.PositionTryFallbacks | undefined;\n /**\n * **Syntax**: `none | <position>#`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n scrollSnapCoordinate?: Property.ScrollSnapCoordinate<TLength> | undefined;\n /**\n * **Syntax**: `<position>`\n *\n * **Initial value**: `0px 0px`\n *\n * @deprecated\n */\n scrollSnapDestination?: Property.ScrollSnapDestination<TLength> | undefined;\n /**\n * **Syntax**: `none | repeat( <length-percentage> )`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n scrollSnapPointsX?: Property.ScrollSnapPointsX | undefined;\n /**\n * **Syntax**: `none | repeat( <length-percentage> )`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n scrollSnapPointsY?: Property.ScrollSnapPointsY | undefined;\n /**\n * **Syntax**: `none | mandatory | proximity`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n scrollSnapTypeX?: Property.ScrollSnapTypeX | undefined;\n /**\n * **Syntax**: `none | mandatory | proximity`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n scrollSnapTypeY?: Property.ScrollSnapTypeY | undefined;\n /**\n * The **`box-align`** CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box.\n *\n * **Syntax**: `start | center | end | baseline | stretch`\n *\n * **Initial value**: `stretch`\n *\n * @deprecated\n */\n KhtmlBoxAlign?: Property.BoxAlign | undefined;\n /**\n * The **`box-direction`** CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).\n *\n * **Syntax**: `normal | reverse | inherit`\n *\n * **Initial value**: `normal`\n *\n * @deprecated\n */\n KhtmlBoxDirection?: Property.BoxDirection | undefined;\n /**\n * The **`-moz-box-flex`** and **`-webkit-box-flex`** CSS properties specify how a `-moz-box` or `-webkit-box` grows to fill the box that contains it, in the direction of the containing box's layout.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n KhtmlBoxFlex?: Property.BoxFlex | undefined;\n /**\n * The **`box-flex-group`** CSS property assigns the flexbox's child elements to a flex group.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n KhtmlBoxFlexGroup?: Property.BoxFlexGroup | undefined;\n /**\n * The **`box-lines`** CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes).\n *\n * **Syntax**: `single | multiple`\n *\n * **Initial value**: `single`\n *\n * @deprecated\n */\n KhtmlBoxLines?: Property.BoxLines | undefined;\n /**\n * The **`box-ordinal-group`** CSS property assigns the flexbox's child elements to an ordinal group.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n KhtmlBoxOrdinalGroup?: Property.BoxOrdinalGroup | undefined;\n /**\n * The **`box-orient`** CSS property sets whether an element lays out its contents horizontally or vertically.\n *\n * **Syntax**: `horizontal | vertical | inline-axis | block-axis | inherit`\n *\n * **Initial value**: `inline-axis`\n *\n * @deprecated\n */\n KhtmlBoxOrient?: Property.BoxOrient | undefined;\n /**\n * The **`-moz-box-pack`** and **`-webkit-box-pack`** CSS properties specify how a `-moz-box` or `-webkit-box` packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box.\n *\n * **Syntax**: `start | center | end | justify`\n *\n * **Initial value**: `start`\n *\n * @deprecated\n */\n KhtmlBoxPack?: Property.BoxPack | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `auto | loose | normal | strict | anywhere`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n KhtmlLineBreak?: Property.LineBreak | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<opacity-value>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n KhtmlOpacity?: Property.Opacity | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | text | none | all`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n KhtmlUserSelect?: Property.UserSelect | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-clip>#`\n *\n * **Initial value**: `border-box`\n *\n * @deprecated\n */\n MozBackgroundClip?: Property.BackgroundClip | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<visual-box>#`\n *\n * **Initial value**: `padding-box`\n *\n * @deprecated\n */\n MozBackgroundOrigin?: Property.BackgroundOrigin | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-size>#`\n *\n * **Initial value**: `auto auto`\n *\n * @deprecated\n */\n MozBackgroundSize?: Property.BackgroundSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,4} [ / <length-percentage [0,∞]>{1,4} ]?`\n *\n * @deprecated\n */\n MozBorderRadius?: Property.BorderRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n MozBorderRadiusBottomleft?: Property.BorderBottomLeftRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n MozBorderRadiusBottomright?: Property.BorderBottomRightRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n MozBorderRadiusTopleft?: Property.BorderTopLeftRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n MozBorderRadiusTopright?: Property.BorderTopRightRadius<TLength> | undefined;\n /**\n * The **`box-align`** CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box.\n *\n * **Syntax**: `start | center | end | baseline | stretch`\n *\n * **Initial value**: `stretch`\n *\n * @deprecated\n */\n MozBoxAlign?: Property.BoxAlign | undefined;\n /**\n * The **`box-direction`** CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).\n *\n * **Syntax**: `normal | reverse | inherit`\n *\n * **Initial value**: `normal`\n *\n * @deprecated\n */\n MozBoxDirection?: Property.BoxDirection | undefined;\n /**\n * The **`-moz-box-flex`** and **`-webkit-box-flex`** CSS properties specify how a `-moz-box` or `-webkit-box` grows to fill the box that contains it, in the direction of the containing box's layout.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n MozBoxFlex?: Property.BoxFlex | undefined;\n /**\n * The **`box-ordinal-group`** CSS property assigns the flexbox's child elements to an ordinal group.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n MozBoxOrdinalGroup?: Property.BoxOrdinalGroup | undefined;\n /**\n * The **`box-orient`** CSS property sets whether an element lays out its contents horizontally or vertically.\n *\n * **Syntax**: `horizontal | vertical | inline-axis | block-axis | inherit`\n *\n * **Initial value**: `inline-axis`\n *\n * @deprecated\n */\n MozBoxOrient?: Property.BoxOrient | undefined;\n /**\n * The **`-moz-box-pack`** and **`-webkit-box-pack`** CSS properties specify how a `-moz-box` or `-webkit-box` packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box.\n *\n * **Syntax**: `start | center | end | justify`\n *\n * **Initial value**: `start`\n *\n * @deprecated\n */\n MozBoxPack?: Property.BoxPack | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | <shadow>#`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n MozBoxShadow?: Property.BoxShadow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<integer> | auto`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n MozColumnCount?: Property.ColumnCount | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `auto | balance`\n *\n * **Initial value**: `balance`\n *\n * @deprecated\n */\n MozColumnFill?: Property.ColumnFill | undefined;\n /**\n * The non-standard **`-moz-float-edge`** CSS property specifies whether the height and width properties of the element include the margin, border, or padding thickness.\n *\n * **Syntax**: `border-box | content-box | margin-box | padding-box`\n *\n * **Initial value**: `content-box`\n *\n * @deprecated\n */\n MozFloatEdge?: Property.MozFloatEdge | undefined;\n /**\n * The **`-moz-force-broken-image-icon`** extended CSS property can be used to force the broken image icon to be shown even when a broken image has an `alt` attribute.\n *\n * **Syntax**: `0 | 1`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n MozForceBrokenImageIcon?: Property.MozForceBrokenImageIcon | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<opacity-value>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n MozOpacity?: Property.Opacity | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.\n *\n * **Syntax**: `<'outline-width'> || <'outline-style'> || <'outline-color'>`\n *\n * @deprecated\n */\n MozOutline?: Property.Outline<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <color>`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n MozOutlineColor?: Property.OutlineColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <outline-line-style>`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n MozOutlineStyle?: Property.OutlineStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width>`\n *\n * **Initial value**: `medium`\n *\n * @deprecated\n */\n MozOutlineWidth?: Property.OutlineWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `auto | start | end | left | right | center | justify`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n MozTextAlignLast?: Property.TextAlignLast | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n *\n * @deprecated\n */\n MozTextDecorationColor?: Property.TextDecorationColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n MozTextDecorationLine?: Property.TextDecorationLine | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `solid | double | dotted | dashed | wavy`\n *\n * **Initial value**: `solid`\n *\n * @deprecated\n */\n MozTextDecorationStyle?: Property.TextDecorationStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n *\n * @deprecated\n */\n MozTransitionDelay?: Property.TransitionDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n *\n * @deprecated\n */\n MozTransitionDuration?: Property.TransitionDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <single-transition-property>#`\n *\n * **Initial value**: all\n *\n * @deprecated\n */\n MozTransitionProperty?: Property.TransitionProperty | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n *\n * @deprecated\n */\n MozTransitionTimingFunction?: Property.TransitionTimingFunction | undefined;\n /**\n * The **`-moz-user-focus`** CSS property is used to indicate whether an element can have the focus.\n *\n * **Syntax**: `ignore | normal | select-after | select-before | select-menu | select-same | select-all | none`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n MozUserFocus?: Property.MozUserFocus | undefined;\n /**\n * In Mozilla applications, **`-moz-user-input`** determines if an element will accept user input.\n *\n * **Syntax**: `auto | none | enabled | disabled`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n MozUserInput?: Property.MozUserInput | undefined;\n /**\n * **Syntax**: `auto | normal | active | inactive | disabled`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n msImeMode?: Property.ImeMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation>#`\n *\n * @deprecated\n */\n OAnimation?: Property.Animation<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n *\n * @deprecated\n */\n OAnimationDelay?: Property.AnimationDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-direction>#`\n *\n * **Initial value**: `normal`\n *\n * @deprecated\n */\n OAnimationDirection?: Property.AnimationDirection | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ auto | <time [0s,∞]> ]#`\n *\n * **Initial value**: `0s`\n *\n * @deprecated\n */\n OAnimationDuration?: Property.AnimationDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-fill-mode>#`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n OAnimationFillMode?: Property.AnimationFillMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-iteration-count>#`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n OAnimationIterationCount?: Property.AnimationIterationCount | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ none | <keyframes-name> ]#`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n OAnimationName?: Property.AnimationName | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-play-state>#`\n *\n * **Initial value**: `running`\n *\n * @deprecated\n */\n OAnimationPlayState?: Property.AnimationPlayState | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n *\n * @deprecated\n */\n OAnimationTimingFunction?: Property.AnimationTimingFunction | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-size>#`\n *\n * **Initial value**: `auto auto`\n *\n * @deprecated\n */\n OBackgroundSize?: Property.BackgroundSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>`\n *\n * @deprecated\n */\n OBorderImage?: Property.BorderImage | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `fill | contain | cover | none | scale-down`\n *\n * **Initial value**: `fill`\n *\n * @deprecated\n */\n OObjectFit?: Property.ObjectFit | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<position>`\n *\n * **Initial value**: `50% 50%`\n *\n * @deprecated\n */\n OObjectPosition?: Property.ObjectPosition<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2021.\n *\n * **Syntax**: `<integer> | <length>`\n *\n * **Initial value**: `8`\n *\n * @deprecated\n */\n OTabSize?: Property.TabSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ clip | ellipsis | <string> ]{1,2}`\n *\n * **Initial value**: `clip`\n *\n * @deprecated\n */\n OTextOverflow?: Property.TextOverflow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <transform-list>`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n OTransform?: Property.Transform | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?`\n *\n * **Initial value**: `50% 50% 0`\n *\n * @deprecated\n */\n OTransformOrigin?: Property.TransformOrigin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-transition>#`\n *\n * @deprecated\n */\n OTransition?: Property.Transition<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n *\n * @deprecated\n */\n OTransitionDelay?: Property.TransitionDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n *\n * @deprecated\n */\n OTransitionDuration?: Property.TransitionDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <single-transition-property>#`\n *\n * **Initial value**: all\n *\n * @deprecated\n */\n OTransitionProperty?: Property.TransitionProperty | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n *\n * @deprecated\n */\n OTransitionTimingFunction?: Property.TransitionTimingFunction | undefined;\n /**\n * The **`box-align`** CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box.\n *\n * **Syntax**: `start | center | end | baseline | stretch`\n *\n * **Initial value**: `stretch`\n *\n * @deprecated\n */\n WebkitBoxAlign?: Property.BoxAlign | undefined;\n /**\n * The **`box-direction`** CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).\n *\n * **Syntax**: `normal | reverse | inherit`\n *\n * **Initial value**: `normal`\n *\n * @deprecated\n */\n WebkitBoxDirection?: Property.BoxDirection | undefined;\n /**\n * The **`-moz-box-flex`** and **`-webkit-box-flex`** CSS properties specify how a `-moz-box` or `-webkit-box` grows to fill the box that contains it, in the direction of the containing box's layout.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n WebkitBoxFlex?: Property.BoxFlex | undefined;\n /**\n * The **`box-flex-group`** CSS property assigns the flexbox's child elements to a flex group.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n WebkitBoxFlexGroup?: Property.BoxFlexGroup | undefined;\n /**\n * The **`box-lines`** CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes).\n *\n * **Syntax**: `single | multiple`\n *\n * **Initial value**: `single`\n *\n * @deprecated\n */\n WebkitBoxLines?: Property.BoxLines | undefined;\n /**\n * The **`box-ordinal-group`** CSS property assigns the flexbox's child elements to an ordinal group.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n WebkitBoxOrdinalGroup?: Property.BoxOrdinalGroup | undefined;\n /**\n * The **`box-orient`** CSS property sets whether an element lays out its contents horizontally or vertically.\n *\n * **Syntax**: `horizontal | vertical | inline-axis | block-axis | inherit`\n *\n * **Initial value**: `inline-axis`\n *\n * @deprecated\n */\n WebkitBoxOrient?: Property.BoxOrient | undefined;\n /**\n * The **`-moz-box-pack`** and **`-webkit-box-pack`** CSS properties specify how a `-moz-box` or `-webkit-box` packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box.\n *\n * **Syntax**: `start | center | end | justify`\n *\n * **Initial value**: `start`\n *\n * @deprecated\n */\n WebkitBoxPack?: Property.BoxPack | undefined;\n}\n\nexport interface SvgProperties<TLength = (string & {}) | 0, TTime = string & {}> {\n alignmentBaseline?: Property.AlignmentBaseline | undefined;\n baselineShift?: Property.BaselineShift<TLength> | undefined;\n clip?: Property.Clip | undefined;\n clipPath?: Property.ClipPath | undefined;\n clipRule?: Property.ClipRule | undefined;\n color?: Property.Color | undefined;\n colorInterpolation?: Property.ColorInterpolation | undefined;\n colorRendering?: Property.ColorRendering | undefined;\n cursor?: Property.Cursor | undefined;\n direction?: Property.Direction | undefined;\n display?: Property.Display | undefined;\n dominantBaseline?: Property.DominantBaseline | undefined;\n fill?: Property.Fill | undefined;\n fillOpacity?: Property.FillOpacity | undefined;\n fillRule?: Property.FillRule | undefined;\n filter?: Property.Filter | undefined;\n floodColor?: Property.FloodColor | undefined;\n floodOpacity?: Property.FloodOpacity | undefined;\n font?: Property.Font | undefined;\n fontFamily?: Property.FontFamily | undefined;\n fontSize?: Property.FontSize<TLength> | undefined;\n fontSizeAdjust?: Property.FontSizeAdjust | undefined;\n fontStretch?: Property.FontStretch | undefined;\n fontStyle?: Property.FontStyle | undefined;\n fontVariant?: Property.FontVariant | undefined;\n fontWeight?: Property.FontWeight | undefined;\n glyphOrientationVertical?: Property.GlyphOrientationVertical | undefined;\n imageRendering?: Property.ImageRendering | undefined;\n letterSpacing?: Property.LetterSpacing<TLength> | undefined;\n lightingColor?: Property.LightingColor | undefined;\n lineHeight?: Property.LineHeight<TLength> | undefined;\n marker?: Property.Marker | undefined;\n markerEnd?: Property.MarkerEnd | undefined;\n markerMid?: Property.MarkerMid | undefined;\n markerStart?: Property.MarkerStart | undefined;\n mask?: Property.Mask<TLength> | undefined;\n opacity?: Property.Opacity | undefined;\n overflow?: Property.Overflow | undefined;\n paintOrder?: Property.PaintOrder | undefined;\n pointerEvents?: Property.PointerEvents | undefined;\n shapeRendering?: Property.ShapeRendering | undefined;\n stopColor?: Property.StopColor | undefined;\n stopOpacity?: Property.StopOpacity | undefined;\n stroke?: Property.Stroke | undefined;\n strokeDasharray?: Property.StrokeDasharray<TLength> | undefined;\n strokeDashoffset?: Property.StrokeDashoffset<TLength> | undefined;\n strokeLinecap?: Property.StrokeLinecap | undefined;\n strokeLinejoin?: Property.StrokeLinejoin | undefined;\n strokeMiterlimit?: Property.StrokeMiterlimit | undefined;\n strokeOpacity?: Property.StrokeOpacity | undefined;\n strokeWidth?: Property.StrokeWidth<TLength> | undefined;\n textAnchor?: Property.TextAnchor | undefined;\n textDecoration?: Property.TextDecoration<TLength> | undefined;\n textRendering?: Property.TextRendering | undefined;\n unicodeBidi?: Property.UnicodeBidi | undefined;\n vectorEffect?: Property.VectorEffect | undefined;\n visibility?: Property.Visibility | undefined;\n whiteSpace?: Property.WhiteSpace | undefined;\n wordSpacing?: Property.WordSpacing<TLength> | undefined;\n writingMode?: Property.WritingMode | undefined;\n}\n\nexport interface Properties<TLength = (string & {}) | 0, TTime = string & {}>\n extends StandardProperties<TLength, TTime>,\n VendorProperties<TLength, TTime>,\n ObsoleteProperties<TLength, TTime>,\n SvgProperties<TLength, TTime> {}\n\nexport interface StandardLonghandPropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}> {\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | <color>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **93** | **92** | **15.4** | **93** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/accent-color\n */\n \"accent-color\"?: Property.AccentColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **29** | **28** | **9** | **12** | **11** |\n * | 21 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/align-content\n */\n \"align-content\"?: Property.AlignContent | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ] | anchor-center`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **29** | **20** | **9** | **12** | **11** |\n * | 21 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/align-items\n */\n \"align-items\"?: Property.AlignItems | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position> | anchor-center`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **29** | **20** | **9** | **12** | **10** |\n * | 21 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/align-self\n */\n \"align-self\"?: Property.AlignSelf | undefined;\n /**\n * **Syntax**: `[ normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position> ]#`\n *\n * **Initial value**: `normal`\n */\n \"align-tracks\"?: Property.AlignTracks | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `baseline | alphabetic | ideographic | middle | central | mathematical | text-before-edge | text-after-edge`\n *\n * **Initial value**: `baseline`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **1** | No | **5.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/alignment-baseline\n */\n \"alignment-baseline\"?: Property.AlignmentBaseline | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | <dashed-ident>#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :---------: | :----: | :-----: | :-: |\n * | **125** | **preview** | **26** | **125** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/anchor-name\n */\n \"anchor-name\"?: Property.AnchorName | undefined;\n /**\n * **Syntax**: `none | all | <dashed-ident>#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :---------: | :----: | :-----: | :-: |\n * | **131** | **preview** | **26** | **131** | No |\n */\n \"anchor-scope\"?: Property.AnchorScope | undefined;\n /**\n * Since July 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<single-animation-composition>#`\n *\n * **Initial value**: `replace`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **112** | **115** | **16** | **112** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-composition\n */\n \"animation-composition\"?: Property.AnimationComposition | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-delay\n */\n \"animation-delay\"?: Property.AnimationDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-direction>#`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-direction\n */\n \"animation-direction\"?: Property.AnimationDirection | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ auto | <time [0s,∞]> ]#`\n *\n * **Initial value**: `0s`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-duration\n */\n \"animation-duration\"?: Property.AnimationDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-fill-mode>#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 5 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-fill-mode\n */\n \"animation-fill-mode\"?: Property.AnimationFillMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-iteration-count>#`\n *\n * **Initial value**: `1`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-iteration-count\n */\n \"animation-iteration-count\"?: Property.AnimationIterationCount | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ none | <keyframes-name> ]#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-name\n */\n \"animation-name\"?: Property.AnimationName | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-play-state>#`\n *\n * **Initial value**: `running`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-play-state\n */\n \"animation-play-state\"?: Property.AnimationPlayState | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-range-end\n */\n \"animation-range-end\"?: Property.AnimationRangeEnd<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ normal | <length-percentage> | <timeline-range-name> <length-percentage>? ]#`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-range-start\n */\n \"animation-range-start\"?: Property.AnimationRangeStart<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<single-animation-timeline>#`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-timeline\n */\n \"animation-timeline\"?: Property.AnimationTimeline | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-timing-function\n */\n \"animation-timing-function\"?: Property.AnimationTimingFunction | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | auto | <compat-auto> | <compat-special>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :------: | :-: |\n * | **84** | **80** | **15.4** | **84** | No |\n * | 1 _-x-_ | 1 _-x-_ | 3 _-x-_ | 12 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/appearance\n */\n appearance?: Property.Appearance | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `auto || <ratio>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **88** | **89** | **15** | **88** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/aspect-ratio\n */\n \"aspect-ratio\"?: Property.AspectRatio | undefined;\n /**\n * Since September 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `none | <filter-value-list>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **76** | **103** | **18** | **79** | No |\n * | | | 9 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/backdrop-filter\n */\n \"backdrop-filter\"?: Property.BackdropFilter | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `visible | hidden`\n *\n * **Initial value**: `visible`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :------: | :-------: | :----: | :----: |\n * | **36** | **16** | **15.4** | **12** | **10** |\n * | 12 _-x-_ | 10 _-x-_ | 5.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/backface-visibility\n */\n \"backface-visibility\"?: Property.BackfaceVisibility | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<attachment>#`\n *\n * **Initial value**: `scroll`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-attachment\n */\n \"background-attachment\"?: Property.BackgroundAttachment | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<blend-mode>#`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **35** | **30** | **8** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-blend-mode\n */\n \"background-blend-mode\"?: Property.BackgroundBlendMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-clip>#`\n *\n * **Initial value**: `border-box`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **4** | **5** | **12** | **9** |\n * | | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-clip\n */\n \"background-clip\"?: Property.BackgroundClip | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `transparent`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-color\n */\n \"background-color\"?: Property.BackgroundColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-image>#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-image\n */\n \"background-image\"?: Property.BackgroundImage | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<visual-box>#`\n *\n * **Initial value**: `padding-box`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **4** | **3** | **12** | **9** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-origin\n */\n \"background-origin\"?: Property.BackgroundOrigin | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.\n *\n * **Syntax**: `[ center | [ [ left | right | x-start | x-end ]? <length-percentage>? ]! ]#`\n *\n * **Initial value**: `0%`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **49** | **1** | **12** | **6** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-position-x\n */\n \"background-position-x\"?: Property.BackgroundPositionX<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.\n *\n * **Syntax**: `[ center | [ [ top | bottom | y-start | y-end ]? <length-percentage>? ]! ]#`\n *\n * **Initial value**: `0%`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **49** | **1** | **12** | **6** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-position-y\n */\n \"background-position-y\"?: Property.BackgroundPositionY<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<repeat-style>#`\n *\n * **Initial value**: `repeat`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-repeat\n */\n \"background-repeat\"?: Property.BackgroundRepeat | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-size>#`\n *\n * **Initial value**: `auto auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :---: |\n * | **3** | **4** | **5** | **12** | **9** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-size\n */\n \"background-size\"?: Property.BackgroundSize<TLength> | undefined;\n /**\n * **Syntax**: `<length-percentage> | sub | super | baseline`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **1** | No | **4** | **79** | No |\n */\n \"baseline-shift\"?: Property.BaselineShift<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'width'>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :--------------------------: | :-----: | :----------------------------: | :----: | :-: |\n * | **57** | **41** | **12.1** | **79** | No |\n * | 8 _(-webkit-logical-height)_ | | 5.1 _(-webkit-logical-height)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/block-size\n */\n \"block-size\"?: Property.BlockSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-color'>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-end-color\n */\n \"border-block-end-color\"?: Property.BorderBlockEndColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-style'>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-end-style\n */\n \"border-block-end-style\"?: Property.BorderBlockEndStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-end-width\n */\n \"border-block-end-width\"?: Property.BorderBlockEndWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-color'>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-start-color\n */\n \"border-block-start-color\"?: Property.BorderBlockStartColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-style'>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-start-style\n */\n \"border-block-start-style\"?: Property.BorderBlockStartStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-start-width\n */\n \"border-block-start-width\"?: Property.BorderBlockStartWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'border-top-color'>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-bottom-color\n */\n \"border-bottom-color\"?: Property.BorderBottomColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :---: |\n * | **4** | **4** | **5** | **12** | **9** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-bottom-left-radius\n */\n \"border-bottom-left-radius\"?: Property.BorderBottomLeftRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :---: |\n * | **4** | **4** | **5** | **12** | **9** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-bottom-right-radius\n */\n \"border-bottom-right-radius\"?: Property.BorderBottomRightRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-style>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-bottom-style\n */\n \"border-bottom-style\"?: Property.BorderBottomStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-bottom-width\n */\n \"border-bottom-width\"?: Property.BorderBottomWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `separate | collapse`\n *\n * **Initial value**: `separate`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **1** | **1.1** | **12** | **5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-collapse\n */\n \"border-collapse\"?: Property.BorderCollapse | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<'border-top-left-radius'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **89** | **66** | **15** | **89** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-end-end-radius\n */\n \"border-end-end-radius\"?: Property.BorderEndEndRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<'border-top-left-radius'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **89** | **66** | **15** | **89** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-end-start-radius\n */\n \"border-end-start-radius\"?: Property.BorderEndStartRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ <length [0,∞]> | <number [0,∞]> ]{1,4} `\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **15** | **15** | **6** | **12** | **11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-image-outset\n */\n \"border-image-outset\"?: Property.BorderImageOutset<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2016.\n *\n * **Syntax**: `[ stretch | repeat | round | space ]{1,2}`\n *\n * **Initial value**: `stretch`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **15** | **15** | **6** | **12** | **11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-image-repeat\n */\n \"border-image-repeat\"?: Property.BorderImageRepeat | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ <number [0,∞]> | <percentage [0,∞]> ]{1,4} && fill?`\n *\n * **Initial value**: `100%`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **15** | **15** | **6** | **12** | **11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-image-slice\n */\n \"border-image-slice\"?: Property.BorderImageSlice | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | <image>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **15** | **15** | **6** | **12** | **11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-image-source\n */\n \"border-image-source\"?: Property.BorderImageSource | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ <length-percentage [0,∞]> | <number [0,∞]> | auto ]{1,4}`\n *\n * **Initial value**: `1`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **16** | **13** | **6** | **12** | **11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-image-width\n */\n \"border-image-width\"?: Property.BorderImageWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-color'>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-------------------------: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | | 3 _(-moz-border-end-color)_ | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-end-color\n */\n \"border-inline-end-color\"?: Property.BorderInlineEndColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-style'>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-------------------------: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | | 3 _(-moz-border-end-style)_ | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-end-style\n */\n \"border-inline-end-style\"?: Property.BorderInlineEndStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-------------------------: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | | 3 _(-moz-border-end-width)_ | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-end-width\n */\n \"border-inline-end-width\"?: Property.BorderInlineEndWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-color'>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :---------------------------: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | | 3 _(-moz-border-start-color)_ | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-start-color\n */\n \"border-inline-start-color\"?: Property.BorderInlineStartColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-style'>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :---------------------------: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | | 3 _(-moz-border-start-style)_ | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-start-style\n */\n \"border-inline-start-style\"?: Property.BorderInlineStartStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-start-width\n */\n \"border-inline-start-width\"?: Property.BorderInlineStartWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-left-color\n */\n \"border-left-color\"?: Property.BorderLeftColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-style>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-left-style\n */\n \"border-left-style\"?: Property.BorderLeftStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-left-width\n */\n \"border-left-width\"?: Property.BorderLeftWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-right-color\n */\n \"border-right-color\"?: Property.BorderRightColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-style>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-right-style\n */\n \"border-right-style\"?: Property.BorderRightStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-right-width\n */\n \"border-right-width\"?: Property.BorderRightWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length>{1,2}`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-spacing\n */\n \"border-spacing\"?: Property.BorderSpacing<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<'border-top-left-radius'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **89** | **66** | **15** | **89** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-start-end-radius\n */\n \"border-start-end-radius\"?: Property.BorderStartEndRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<'border-top-left-radius'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **89** | **66** | **15** | **89** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-start-start-radius\n */\n \"border-start-start-radius\"?: Property.BorderStartStartRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-top-color\n */\n \"border-top-color\"?: Property.BorderTopColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :---: |\n * | **4** | **4** | **5** | **12** | **9** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-top-left-radius\n */\n \"border-top-left-radius\"?: Property.BorderTopLeftRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :---: |\n * | **4** | **4** | **5** | **12** | **9** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-top-right-radius\n */\n \"border-top-right-radius\"?: Property.BorderTopRightRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-style>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-top-style\n */\n \"border-top-style\"?: Property.BorderTopStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-top-width\n */\n \"border-top-width\"?: Property.BorderTopWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <length-percentage> | <anchor()> | <anchor-size()>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/bottom\n */\n bottom?: Property.Bottom<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `slice | clone`\n *\n * **Initial value**: `slice`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :---------: | :------: | :-: |\n * | **130** | **32** | **7** _-x-_ | **130** | No |\n * | 22 _-x-_ | | | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/box-decoration-break\n */\n \"box-decoration-break\"?: Property.BoxDecorationBreak | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | <shadow>#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :---: |\n * | **10** | **4** | **5.1** | **12** | **9** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/box-shadow\n */\n \"box-shadow\"?: Property.BoxShadow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `content-box | border-box`\n *\n * **Initial value**: `content-box`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :---: |\n * | **10** | **29** | **5.1** | **12** | **8** |\n * | 1 _-x-_ | 1 _-x-_ | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/box-sizing\n */\n \"box-sizing\"?: Property.BoxSizing | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2019.\n *\n * **Syntax**: `auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **50** | **65** | **10** | **12** | **10** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/break-after\n */\n \"break-after\"?: Property.BreakAfter | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2019.\n *\n * **Syntax**: `auto | avoid | always | all | avoid-page | page | left | right | recto | verso | avoid-column | column | avoid-region | region`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **50** | **65** | **10** | **12** | **10** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/break-before\n */\n \"break-before\"?: Property.BreakBefore | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2019.\n *\n * **Syntax**: `auto | avoid | avoid-page | avoid-column | avoid-region`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **50** | **65** | **10** | **12** | **10** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/break-inside\n */\n \"break-inside\"?: Property.BreakInside | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `top | bottom`\n *\n * **Initial value**: `top`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/caption-side\n */\n \"caption-side\"?: Property.CaptionSide | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | <color>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **53** | **11.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/caret-color\n */\n \"caret-color\"?: Property.CaretColor | undefined;\n /**\n * **Syntax**: `auto | bar | block | underscore`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :--: | :-: |\n * | No | No | No | No | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/caret-shape\n */\n \"caret-shape\"?: Property.CaretShape | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | left | right | both | inline-start | inline-end`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/clear\n */\n clear?: Property.Clear | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<clip-source> | [ <basic-shape> || <geometry-box> ] | none`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **55** | **3.5** | **9.1** | **79** | **10** |\n * | 23 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/clip-path\n */\n \"clip-path\"?: Property.ClipPath | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `nonzero | evenodd`\n *\n * **Initial value**: `nonzero`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :----: | :-: |\n * | **≤15** | **3.5** | **≤5** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/clip-rule\n */\n \"clip-rule\"?: Property.ClipRule | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `canvastext`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/color\n */\n color?: Property.Color | undefined;\n /**\n * Since May 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `economy | exact`\n *\n * **Initial value**: `economy`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----------------: | :------: | :------: | :-: |\n * | **136** | **97** | **15.4** | **136** | No |\n * | 17 _-x-_ | 48 _(color-adjust)_ | 6 _-x-_ | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/print-color-adjust\n */\n \"color-adjust\"?: Property.PrintColorAdjust | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | sRGB | linearRGB`\n *\n * **Initial value**: `linearRGB`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **1** | **3** | **3** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/color-interpolation-filters\n */\n \"color-interpolation-filters\"?: Property.ColorInterpolationFilters | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2022.\n *\n * **Syntax**: `normal | [ light | dark | <custom-ident> ]+ && only?`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **81** | **96** | **13** | **81** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/color-scheme\n */\n \"color-scheme\"?: Property.ColorScheme | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<integer> | auto`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **50** | **52** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-count\n */\n \"column-count\"?: Property.ColumnCount | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `auto | balance`\n *\n * **Initial value**: `balance`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :----: |\n * | **50** | **52** | **9** | **12** | **10** |\n * | | | 8 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-fill\n */\n \"column-fill\"?: Property.ColumnFill | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | <length-percentage>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **1** | **1.5** | **3** | **12** | **10** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-gap\n */\n \"column-gap\"?: Property.ColumnGap<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **50** | **52** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-rule-color\n */\n \"column-rule-color\"?: Property.ColumnRuleColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'border-style'>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **50** | **52** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-rule-style\n */\n \"column-rule-style\"?: Property.ColumnRuleStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'border-width'>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **50** | **52** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-rule-width\n */\n \"column-rule-width\"?: Property.ColumnRuleWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `none | all`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :----: | :----: |\n * | **50** | **71** | **9** | **12** | **10** |\n * | 6 _-x-_ | | 5.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-span\n */\n \"column-span\"?: Property.ColumnSpan | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since November 2016.\n *\n * **Syntax**: `<length> | auto`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **50** | **50** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-width\n */\n \"column-width\"?: Property.ColumnWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | strict | content | [ [ size || inline-size ] || layout || style || paint ]`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **52** | **69** | **15.4** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/contain\n */\n contain?: Property.Contain | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto? [ none | <length> ]`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **95** | **107** | **17** | **95** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/contain-intrinsic-block-size\n */\n \"contain-intrinsic-block-size\"?: Property.ContainIntrinsicBlockSize<TLength> | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto? [ none | <length> ]`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **95** | **107** | **17** | **95** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/contain-intrinsic-height\n */\n \"contain-intrinsic-height\"?: Property.ContainIntrinsicHeight<TLength> | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto? [ none | <length> ]`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **95** | **107** | **17** | **95** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/contain-intrinsic-inline-size\n */\n \"contain-intrinsic-inline-size\"?: Property.ContainIntrinsicInlineSize<TLength> | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto? [ none | <length> ]`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **95** | **107** | **17** | **95** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/contain-intrinsic-width\n */\n \"contain-intrinsic-width\"?: Property.ContainIntrinsicWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since February 2023.\n *\n * **Syntax**: `none | <custom-ident>+`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **105** | **110** | **16** | **105** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/container-name\n */\n \"container-name\"?: Property.ContainerName | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since February 2023.\n *\n * **Syntax**: `normal | [ [ size | inline-size ] || scroll-state ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **105** | **110** | **16** | **105** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/container-type\n */\n \"container-type\"?: Property.ContainerType | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | none | [ <content-replacement> | <content-list> ] [ / [ <string> | <counter> | <attr()> ]+ ]?`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/content\n */\n content?: Property.Content | undefined;\n /**\n * Since September 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `visible | auto | hidden`\n *\n * **Initial value**: `visible`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **85** | **125** | **18** | **85** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/content-visibility\n */\n \"content-visibility\"?: Property.ContentVisibility | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ <counter-name> <integer>? ]+ | none`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **2** | **1** | **3** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/counter-increment\n */\n \"counter-increment\"?: Property.CounterIncrement | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ <counter-name> <integer>? | <reversed-counter-name> <integer>? ]+ | none`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **2** | **1** | **3** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/counter-reset\n */\n \"counter-reset\"?: Property.CounterReset | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `[ <counter-name> <integer>? ]+ | none`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **85** | **68** | **17.2** | **85** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/counter-set\n */\n \"counter-set\"?: Property.CounterSet | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since December 2021.\n *\n * **Syntax**: `[ [ <url> [ <x> <y> ]? , ]* <cursor-predefined> ]`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **1** | **1.2** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/cursor\n */\n cursor?: Property.Cursor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `<length> | <percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **43** | **69** | **9** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/cx\n */\n cx?: Property.Cx<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `<length> | <percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **43** | **69** | **9** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/cy\n */\n cy?: Property.Cy<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | path(<string>)`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **52** | **97** | No | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/d\n */\n d?: Property.D | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `ltr | rtl`\n *\n * **Initial value**: `ltr`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **2** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/direction\n */\n direction?: Property.Direction | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>`\n *\n * **Initial value**: `inline`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/display\n */\n display?: Property.Display | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | text-bottom | alphabetic | ideographic | middle | central | mathematical | hanging | text-top`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **1** | **1** | **4** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/dominant-baseline\n */\n \"dominant-baseline\"?: Property.DominantBaseline | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `show | hide`\n *\n * **Initial value**: `show`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **1** | **1.2** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/empty-cells\n */\n \"empty-cells\"?: Property.EmptyCells | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `content | fixed`\n *\n * **Initial value**: `fixed`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :---------: | :-----: | :-: |\n * | **123** | No | **preview** | **123** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/field-sizing\n */\n \"field-sizing\"?: Property.FieldSizing | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<paint>`\n *\n * **Initial value**: `black`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/fill\n */\n fill?: Property.Fill | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<'opacity'>`\n *\n * **Initial value**: `1`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/fill-opacity\n */\n \"fill-opacity\"?: Property.FillOpacity | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `nonzero | evenodd`\n *\n * **Initial value**: `nonzero`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/fill-rule\n */\n \"fill-rule\"?: Property.FillRule | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.\n *\n * **Syntax**: `none | <filter-value-list>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :-: |\n * | **53** | **35** | **9.1** | **12** | No |\n * | 18 _-x-_ | | 6 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/filter\n */\n filter?: Property.Filter | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `content | <'width'>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **29** | **22** | **9** | **12** | **11** |\n * | 22 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flex-basis\n */\n \"flex-basis\"?: Property.FlexBasis<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `row | row-reverse | column | column-reverse`\n *\n * **Initial value**: `row`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :------: |\n * | **29** | **22** | **9** | **12** | **11** |\n * | 21 _-x-_ | | 7 _-x-_ | | 10 _-x-_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flex-direction\n */\n \"flex-direction\"?: Property.FlexDirection | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----------------------: |\n * | **29** | **20** | **9** | **12** | **11** |\n * | 22 _-x-_ | | 7 _-x-_ | | 10 _(-ms-flex-positive)_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flex-grow\n */\n \"flex-grow\"?: Property.FlexGrow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `1`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **29** | **20** | **9** | **12** | **10** |\n * | 22 _-x-_ | | 8 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flex-shrink\n */\n \"flex-shrink\"?: Property.FlexShrink | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `nowrap | wrap | wrap-reverse`\n *\n * **Initial value**: `nowrap`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **29** | **28** | **9** | **12** | **11** |\n * | 21 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flex-wrap\n */\n \"flex-wrap\"?: Property.FlexWrap | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `left | right | none | inline-start | inline-end`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/float\n */\n float?: Property.Float | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `black`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **5** | **3** | **6** | **12** | **≤11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flood-color\n */\n \"flood-color\"?: Property.FloodColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'opacity'>`\n *\n * **Initial value**: `black`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **5** | **3** | **6** | **12** | **≤11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flood-opacity\n */\n \"flood-opacity\"?: Property.FloodOpacity | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ <family-name> | <generic-family> ]#`\n *\n * **Initial value**: depends on user agent\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-family\n */\n \"font-family\"?: Property.FontFamily | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `normal | <feature-tag-value>#`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :------: | :-----: | :----: | :----: |\n * | **48** | **34** | **9.1** | **15** | **10** |\n * | 16 _-x-_ | 15 _-x-_ | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-feature-settings\n */\n \"font-feature-settings\"?: Property.FontFeatureSettings | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | normal | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **33** | **32** | **9** | **79** | No |\n * | | | 6 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-kerning\n */\n \"font-kerning\"?: Property.FontKerning | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | <string>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **143** | **34** | No | **143** | No |\n * | | 4 _-x-_ | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-language-override\n */\n \"font-language-override\"?: Property.FontLanguageOverride | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2020.\n *\n * **Syntax**: `auto | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **79** | **62** | **13.1** | **17** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-optical-sizing\n */\n \"font-optical-sizing\"?: Property.FontOpticalSizing | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since November 2022.\n *\n * **Syntax**: `normal | light | dark | <palette-identifier> | <palette-mix()>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **101** | **107** | **15.4** | **101** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-palette\n */\n \"font-palette\"?: Property.FontPalette | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<absolute-size> | <relative-size> | <length-percentage [0,∞]> | math`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-size\n */\n \"font-size\"?: Property.FontSize<TLength> | undefined;\n /**\n * Since July 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number> ]`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **127** | **3** | **16.4** | **127** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-size-adjust\n */\n \"font-size-adjust\"?: Property.FontSizeAdjust | undefined;\n /**\n * The **`font-smooth`** CSS property controls the application of anti-aliasing when fonts are rendered.\n *\n * **Syntax**: `auto | never | always | <absolute-size> | <length>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------------------------------: | :--------------------------------: | :------------------------------: | :-------------------------------: | :-: |\n * | **5** _(-webkit-font-smoothing)_ | **25** _(-moz-osx-font-smoothing)_ | **4** _(-webkit-font-smoothing)_ | **79** _(-webkit-font-smoothing)_ | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-smooth\n */\n \"font-smooth\"?: Property.FontSmooth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | italic | oblique <angle>?`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-style\n */\n \"font-style\"?: Property.FontStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2022.\n *\n * **Syntax**: `none | [ weight || style || small-caps || position]`\n *\n * **Initial value**: `weight style small-caps position `\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **97** | **34** | **9** | **97** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-synthesis\n */\n \"font-synthesis\"?: Property.FontSynthesis | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | none`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :--: | :-: |\n * | No | **118** | No | No | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-synthesis-position\n */\n \"font-synthesis-position\"?: Property.FontSynthesisPosition | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.\n *\n * **Syntax**: `auto | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **97** | **111** | **16.4** | **97** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-synthesis-small-caps\n */\n \"font-synthesis-small-caps\"?: Property.FontSynthesisSmallCaps | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.\n *\n * **Syntax**: `auto | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **97** | **111** | **16.4** | **97** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-synthesis-style\n */\n \"font-synthesis-style\"?: Property.FontSynthesisStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.\n *\n * **Syntax**: `auto | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **97** | **111** | **16.4** | **97** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-synthesis-weight\n */\n \"font-synthesis-weight\"?: Property.FontSynthesisWeight | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> || stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) || [ small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps ] || <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero || <east-asian-variant-values> || <east-asian-width-values> || ruby ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variant\n */\n \"font-variant\"?: Property.FontVariant | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.\n *\n * **Syntax**: `normal | [ stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :-----: | :-: |\n * | **111** | **34** | **9.1** | **111** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variant-alternates\n */\n \"font-variant-alternates\"?: Property.FontVariantAlternates | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `normal | small-caps | all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **52** | **34** | **9.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variant-caps\n */\n \"font-variant-caps\"?: Property.FontVariantCaps | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `normal | [ <east-asian-variant-values> || <east-asian-width-values> || ruby ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **63** | **34** | **9.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variant-east-asian\n */\n \"font-variant-east-asian\"?: Property.FontVariantEastAsian | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | text | emoji | unicode`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **131** | **141** | No | **131** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variant-emoji\n */\n \"font-variant-emoji\"?: Property.FontVariantEmoji | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :-: |\n * | **34** | **34** | **9.1** | **79** | No |\n * | 31 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variant-ligatures\n */\n \"font-variant-ligatures\"?: Property.FontVariantLigatures | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `normal | [ <numeric-figure-values> || <numeric-spacing-values> || <numeric-fraction-values> || ordinal || slashed-zero ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **52** | **34** | **9.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variant-numeric\n */\n \"font-variant-numeric\"?: Property.FontVariantNumeric | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | sub | super`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :--: | :-: |\n * | No | **34** | **9.1** | No | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variant-position\n */\n \"font-variant-position\"?: Property.FontVariantPosition | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2018.\n *\n * **Syntax**: `normal | [ <string> <number> ]#`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **62** | **62** | **11** | **17** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-variation-settings\n */\n \"font-variation-settings\"?: Property.FontVariationSettings | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<font-weight-absolute> | bolder | lighter`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **2** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font-weight\n */\n \"font-weight\"?: Property.FontWeight | undefined;\n /**\n * **Syntax**: `normal | <percentage [0,∞]> | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :--: | :-: |\n * | No | No | **18.4** | No | No |\n */\n \"font-width\"?: Property.FontWidth | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | none | preserve-parent-color`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----------------------------: | :---------------------------------: |\n * | **89** | **113** | No | **79** | **10** _(-ms-high-contrast-adjust)_ |\n * | | | | 12 _(-ms-high-contrast-adjust)_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/forced-color-adjust\n */\n \"forced-color-adjust\"?: Property.ForcedColorAdjust | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `<track-size>+`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-------------------------: |\n * | **57** | **70** | **10.1** | **16** | **10** _(-ms-grid-columns)_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-auto-columns\n */\n \"grid-auto-columns\"?: Property.GridAutoColumns<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `[ row | column ] || dense`\n *\n * **Initial value**: `row`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-auto-flow\n */\n \"grid-auto-flow\"?: Property.GridAutoFlow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `<track-size>+`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :----------------------: |\n * | **57** | **70** | **10.1** | **16** | **10** _(-ms-grid-rows)_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-auto-rows\n */\n \"grid-auto-rows\"?: Property.GridAutoRows<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<grid-line>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-column-end\n */\n \"grid-column-end\"?: Property.GridColumnEnd | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<grid-line>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-column-start\n */\n \"grid-column-start\"?: Property.GridColumnStart | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<grid-line>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-row-end\n */\n \"grid-row-end\"?: Property.GridRowEnd | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<grid-line>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-row-start\n */\n \"grid-row-start\"?: Property.GridRowStart | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `none | <string>+`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-template-areas\n */\n \"grid-template-areas\"?: Property.GridTemplateAreas | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `none | <track-list> | <auto-track-list> | subgrid <line-name-list>?`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-------------------------: |\n * | **57** | **52** | **10.1** | **16** | **10** _(-ms-grid-columns)_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-template-columns\n */\n \"grid-template-columns\"?: Property.GridTemplateColumns<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `none | <track-list> | <auto-track-list> | subgrid <line-name-list>?`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :----------------------: |\n * | **57** | **52** | **10.1** | **16** | **10** _(-ms-grid-rows)_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-template-rows\n */\n \"grid-template-rows\"?: Property.GridTemplateRows<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | [ first || [ force-end | allow-end ] || last ]`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :--: | :-: |\n * | No | No | **10** | No | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/hanging-punctuation\n */\n \"hanging-punctuation\"?: Property.HangingPunctuation | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <length-percentage [0,∞]> | min-content | max-content | fit-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/height\n */\n height?: Property.Height<TLength> | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto | <string>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :------: | :-: |\n * | **106** | **98** | **17** | **106** | No |\n * | 6 _-x-_ | | 5.1 _-x-_ | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/hyphenate-character\n */\n \"hyphenate-character\"?: Property.HyphenateCharacter | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ auto | <integer> ]{1,3}`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **109** | **137** | No | **109** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/hyphenate-limit-chars\n */\n \"hyphenate-limit-chars\"?: Property.HyphenateLimitChars | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `none | manual | auto`\n *\n * **Initial value**: `manual`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-------: | :----: | :----------: |\n * | **55** | **43** | **17** | **79** | **10** _-x-_ |\n * | 13 _-x-_ | 6 _-x-_ | 5.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/hyphens\n */\n hyphens?: Property.Hyphens | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2020.\n *\n * **Syntax**: `from-image | <angle> | [ <angle>? flip ]`\n *\n * **Initial value**: `from-image`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **81** | **26** | **13.1** | **81** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/image-orientation\n */\n \"image-orientation\"?: Property.ImageOrientation | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | crisp-edges | pixelated | smooth`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **13** | **3.6** | **6** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/image-rendering\n */\n \"image-rendering\"?: Property.ImageRendering | undefined;\n /**\n * The **`image-resolution`** CSS property specifies the intrinsic resolution of all raster images used in or on the element. It affects content images such as replaced elements and generated content, and decorative images such as `background-image` images.\n *\n * **Syntax**: `[ from-image || <resolution> ] && snap?`\n *\n * **Initial value**: `1dppx`\n */\n \"image-resolution\"?: Property.ImageResolution | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | [ <number> <integer>? ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :---------: | :-----: | :-: |\n * | **110** | No | **9** _-x-_ | **110** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/initial-letter\n */\n \"initial-letter\"?: Property.InitialLetter | undefined;\n /**\n * **Syntax**: `[ auto | alphabetic | hanging | ideographic ]`\n *\n * **Initial value**: `auto`\n */\n \"initial-letter-align\"?: Property.InitialLetterAlign | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'width'>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-------------------------: | :-----: | :---------------------------: | :----: | :-: |\n * | **57** | **41** | **12.1** | **79** | No |\n * | 8 _(-webkit-logical-width)_ | | 5.1 _(-webkit-logical-width)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/inline-size\n */\n \"inline-size\"?: Property.InlineSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **63** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/inset-block-end\n */\n \"inset-block-end\"?: Property.InsetBlockEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **63** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/inset-block-start\n */\n \"inset-block-start\"?: Property.InsetBlockStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **63** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/inset-inline-end\n */\n \"inset-inline-end\"?: Property.InsetInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **63** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/inset-inline-start\n */\n \"inset-inline-start\"?: Property.InsetInlineStart<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `numeric-only | allow-keywords`\n *\n * **Initial value**: `numeric-only`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **129** | No | No | **129** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/interpolate-size\n */\n \"interpolate-size\"?: Property.InterpolateSize | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | isolate`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **41** | **36** | **8** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/isolation\n */\n isolation?: Property.Isolation | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **29** | **20** | **9** | **12** | **11** |\n * | 21 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/justify-content\n */\n \"justify-content\"?: Property.JustifyContent | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2016.\n *\n * **Syntax**: `normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | legacy | legacy && [ left | right | center ] | anchor-center`\n *\n * **Initial value**: `legacy`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **52** | **20** | **9** | **12** | **11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/justify-items\n */\n \"justify-items\"?: Property.JustifyItems | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `auto | normal | stretch | <baseline-position> | <overflow-position>? [ <self-position> | left | right ] | anchor-center`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :----: |\n * | **57** | **45** | **10.1** | **16** | **10** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/justify-self\n */\n \"justify-self\"?: Property.JustifySelf | undefined;\n /**\n * **Syntax**: `[ normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ] ]#`\n *\n * **Initial value**: `normal`\n */\n \"justify-tracks\"?: Property.JustifyTracks | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <length-percentage> | <anchor()> | <anchor-size()>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/left\n */\n left?: Property.Left<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | <length>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/letter-spacing\n */\n \"letter-spacing\"?: Property.LetterSpacing<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `white`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **5** | **3** | **6** | **12** | **≤11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/lighting-color\n */\n \"lighting-color\"?: Property.LightingColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `auto | loose | normal | strict | anywhere`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :-----: |\n * | **58** | **69** | **11** | **14** | **5.5** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/line-break\n */\n \"line-break\"?: Property.LineBreak | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | <number> | <length> | <percentage>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/line-height\n */\n \"line-height\"?: Property.LineHeight<TLength> | undefined;\n /**\n * The **`line-height-step`** CSS property sets the step unit for line box heights. When the property is set, line box heights are rounded up to the closest multiple of the unit.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n */\n \"line-height-step\"?: Property.LineHeightStep<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<image> | none`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/list-style-image\n */\n \"list-style-image\"?: Property.ListStyleImage | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `inside | outside`\n *\n * **Initial value**: `outside`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/list-style-position\n */\n \"list-style-position\"?: Property.ListStylePosition | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<counter-style> | <string> | none`\n *\n * **Initial value**: `disc`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/list-style-type\n */\n \"list-style-type\"?: Property.ListStyleType | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'margin-top'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-block-end\n */\n \"margin-block-end\"?: Property.MarginBlockEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'margin-top'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-block-start\n */\n \"margin-block-start\"?: Property.MarginBlockStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage> | auto | <anchor-size()>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-bottom\n */\n \"margin-bottom\"?: Property.MarginBottom<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'margin-top'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----------------------: | :-------------------: | :----------------------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | 2 _(-webkit-margin-end)_ | 3 _(-moz-margin-end)_ | 3 _(-webkit-margin-end)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-inline-end\n */\n \"margin-inline-end\"?: Property.MarginInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'margin-top'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------------------------: | :---------------------: | :------------------------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | 2 _(-webkit-margin-start)_ | 3 _(-moz-margin-start)_ | 3 _(-webkit-margin-start)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-inline-start\n */\n \"margin-inline-start\"?: Property.MarginInlineStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage> | auto | <anchor-size()>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-left\n */\n \"margin-left\"?: Property.MarginLeft<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage> | auto | <anchor-size()>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-right\n */\n \"margin-right\"?: Property.MarginRight<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage> | auto | <anchor-size()>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-top\n */\n \"margin-top\"?: Property.MarginTop<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | in-flow | all`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :--: | :-: |\n * | No | No | **16.4** | No | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-trim\n */\n \"margin-trim\"?: Property.MarginTrim | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `none | <url>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/marker\n */\n marker?: Property.Marker | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `none | <url>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/marker-end\n */\n \"marker-end\"?: Property.MarkerEnd | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `none | <url>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/marker-mid\n */\n \"marker-mid\"?: Property.MarkerMid | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `none | <url>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/marker-start\n */\n \"marker-start\"?: Property.MarkerStart | undefined;\n /**\n * The **`mask-border-mode`** CSS property specifies the blending mode used in a mask border.\n *\n * **Syntax**: `luminance | alpha`\n *\n * **Initial value**: `alpha`\n */\n \"mask-border-mode\"?: Property.MaskBorderMode | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ <length> | <number> ]{1,4}`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-------------------------------------: | :-----: | :-----------------------------------: | :--------------------------------------: | :-: |\n * | **1** _(-webkit-mask-box-image-outset)_ | No | **17.2** | **79** _(-webkit-mask-box-image-outset)_ | No |\n * | | | 3.1 _(-webkit-mask-box-image-outset)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-border-outset\n */\n \"mask-border-outset\"?: Property.MaskBorderOutset<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ stretch | repeat | round | space ]{1,2}`\n *\n * **Initial value**: `stretch`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-------------------------------------: | :-----: | :-----------------------------------: | :--------------------------------------: | :-: |\n * | **1** _(-webkit-mask-box-image-repeat)_ | No | **17.2** | **79** _(-webkit-mask-box-image-repeat)_ | No |\n * | | | 3.1 _(-webkit-mask-box-image-repeat)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-border-repeat\n */\n \"mask-border-repeat\"?: Property.MaskBorderRepeat | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<number-percentage>{1,4} fill?`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------------------------------------: | :-----: | :----------------------------------: | :-------------------------------------: | :-: |\n * | **1** _(-webkit-mask-box-image-slice)_ | No | **17.2** | **79** _(-webkit-mask-box-image-slice)_ | No |\n * | | | 3.1 _(-webkit-mask-box-image-slice)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-border-slice\n */\n \"mask-border-slice\"?: Property.MaskBorderSlice | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | <image>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-------------------------------------: | :-----: | :-----------------------------------: | :--------------------------------------: | :-: |\n * | **1** _(-webkit-mask-box-image-source)_ | No | **17.2** | **79** _(-webkit-mask-box-image-source)_ | No |\n * | | | 3.1 _(-webkit-mask-box-image-source)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-border-source\n */\n \"mask-border-source\"?: Property.MaskBorderSource | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ <length-percentage> | <number> | auto ]{1,4}`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------------------------------------: | :-----: | :----------------------------------: | :-------------------------------------: | :-: |\n * | **1** _(-webkit-mask-box-image-width)_ | No | **17.2** | **79** _(-webkit-mask-box-image-width)_ | No |\n * | | | 3.1 _(-webkit-mask-box-image-width)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-border-width\n */\n \"mask-border-width\"?: Property.MaskBorderWidth<TLength> | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `[ <coord-box> | no-clip ]#`\n *\n * **Initial value**: `border-box`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :------: | :-: |\n * | **120** | **53** | **15.4** | **120** | No |\n * | 1 _-x-_ | | 4 _-x-_ | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-clip\n */\n \"mask-clip\"?: Property.MaskClip | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<compositing-operator>#`\n *\n * **Initial value**: `add`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :---: | :-: |\n * | **120** | **53** | **15.4** | 18-79 | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-composite\n */\n \"mask-composite\"?: Property.MaskComposite | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<mask-reference>#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :---: | :-: |\n * | **120** | **53** | **15.4** | 16-79 | No |\n * | 1 _-x-_ | | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-image\n */\n \"mask-image\"?: Property.MaskImage | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<masking-mode>#`\n *\n * **Initial value**: `match-source`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **120** | **53** | **15.4** | **120** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-mode\n */\n \"mask-mode\"?: Property.MaskMode | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<coord-box>#`\n *\n * **Initial value**: `border-box`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :------: | :-: |\n * | **120** | **53** | **15.4** | **120** | No |\n * | 1 _-x-_ | | 4 _-x-_ | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-origin\n */\n \"mask-origin\"?: Property.MaskOrigin | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<position>#`\n *\n * **Initial value**: `0% 0%`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :---: | :-: |\n * | **120** | **53** | **15.4** | 18-79 | No |\n * | 1 _-x-_ | | 3.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-position\n */\n \"mask-position\"?: Property.MaskPosition<TLength> | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<repeat-style>#`\n *\n * **Initial value**: `repeat`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :---: | :-: |\n * | **120** | **53** | **15.4** | 18-79 | No |\n * | 1 _-x-_ | | 3.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-repeat\n */\n \"mask-repeat\"?: Property.MaskRepeat | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<bg-size>#`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :---: | :-: |\n * | **120** | **53** | **15.4** | 18-79 | No |\n * | 4 _-x-_ | | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-size\n */\n \"mask-size\"?: Property.MaskSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `luminance | alpha`\n *\n * **Initial value**: `luminance`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **24** | **35** | **7** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-type\n */\n \"mask-type\"?: Property.MaskType | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `[ pack | next ] || [ definite-first | ordered ]`\n *\n * **Initial value**: `pack`\n */\n \"masonry-auto-flow\"?: Property.MasonryAutoFlow | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto-add | add(<integer>) | <integer>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **109** | **117** | No | **109** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/math-depth\n */\n \"math-depth\"?: Property.MathDepth | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | compact`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **109** | No | No | **109** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/math-shift\n */\n \"math-shift\"?: Property.MathShift | undefined;\n /**\n * Since August 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `normal | compact`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **109** | **117** | **14.1** | **109** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/math-style\n */\n \"math-style\"?: Property.MathStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'max-width'>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/max-block-size\n */\n \"max-block-size\"?: Property.MaxBlockSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | <length-percentage [0,∞]> | min-content | max-content | fit-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **1** | **1.3** | **12** | **7** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/max-height\n */\n \"max-height\"?: Property.MaxHeight<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'max-width'>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :--------: | :----: | :-: |\n * | **57** | **41** | **12.1** | **79** | No |\n * | | | 10.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/max-inline-size\n */\n \"max-inline-size\"?: Property.MaxInlineSize<TLength> | undefined;\n /**\n * **Syntax**: `none | <integer>`\n *\n * **Initial value**: `none`\n */\n \"max-lines\"?: Property.MaxLines | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | <length-percentage [0,∞]> | min-content | max-content | fit-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **7** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/max-width\n */\n \"max-width\"?: Property.MaxWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'min-width'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/min-block-size\n */\n \"min-block-size\"?: Property.MinBlockSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <length-percentage [0,∞]> | min-content | max-content | fit-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **3** | **1.3** | **12** | **7** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/min-height\n */\n \"min-height\"?: Property.MinHeight<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'min-width'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/min-inline-size\n */\n \"min-inline-size\"?: Property.MinInlineSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <length-percentage [0,∞]> | min-content | max-content | fit-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **7** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/min-width\n */\n \"min-width\"?: Property.MinWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<blend-mode> | plus-darker | plus-lighter`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **41** | **32** | **8** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mix-blend-mode\n */\n \"mix-blend-mode\"?: Property.MixBlendMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `<length-percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :--------------------: | :-----: | :----: | :----: | :-: |\n * | **55** | **72** | **16** | **79** | No |\n * | 46 _(motion-distance)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-distance\n */\n \"motion-distance\"?: Property.OffsetDistance<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | <offset-path> || <coord-box>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----------------: | :-----: | :------: | :----: | :-: |\n * | **55** | **72** | **15.4** | **79** | No |\n * | 46 _(motion-path)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-path\n */\n \"motion-path\"?: Property.OffsetPath | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `[ auto | reverse ] || <angle>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :--------------------: | :-----: | :----: | :----: | :-: |\n * | **56** | **72** | **16** | **79** | No |\n * | 46 _(motion-rotation)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-rotate\n */\n \"motion-rotation\"?: Property.OffsetRotate | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `fill | contain | cover | none | scale-down`\n *\n * **Initial value**: `fill`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **32** | **36** | **10** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/object-fit\n */\n \"object-fit\"?: Property.ObjectFit | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<position>`\n *\n * **Initial value**: `50% 50%`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **32** | **36** | **10** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/object-position\n */\n \"object-position\"?: Property.ObjectPosition<TLength> | undefined;\n /**\n * **Syntax**: `none | <basic-shape-rect>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **104** | No | No | **104** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/object-view-box\n */\n \"object-view-box\"?: Property.ObjectViewBox | undefined;\n /**\n * Since August 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto | <position>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **116** | **72** | **16** | **116** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-anchor\n */\n \"offset-anchor\"?: Property.OffsetAnchor<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `<length-percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :--------------------: | :-----: | :----: | :----: | :-: |\n * | **55** | **72** | **16** | **79** | No |\n * | 46 _(motion-distance)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-distance\n */\n \"offset-distance\"?: Property.OffsetDistance<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | <offset-path> || <coord-box>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----------------: | :-----: | :------: | :----: | :-: |\n * | **55** | **72** | **15.4** | **79** | No |\n * | 46 _(motion-path)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-path\n */\n \"offset-path\"?: Property.OffsetPath | undefined;\n /**\n * Since January 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `normal | auto | <position>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **116** | **122** | **16** | **116** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-position\n */\n \"offset-position\"?: Property.OffsetPosition<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `[ auto | reverse ] || <angle>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :--------------------: | :-----: | :----: | :----: | :-: |\n * | **56** | **72** | **16** | **79** | No |\n * | 46 _(motion-rotation)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-rotate\n */\n \"offset-rotate\"?: Property.OffsetRotate | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `[ auto | reverse ] || <angle>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :--------------------: | :-----: | :----: | :----: | :-: |\n * | **56** | **72** | **16** | **79** | No |\n * | 46 _(motion-rotation)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset-rotate\n */\n \"offset-rotation\"?: Property.OffsetRotate | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<opacity-value>`\n *\n * **Initial value**: `1`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **2** | **12** | **9** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/opacity\n */\n opacity?: Property.Opacity | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :------: |\n * | **29** | **20** | **9** | **12** | **11** |\n * | 21 _-x-_ | | 7 _-x-_ | | 10 _-x-_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/order\n */\n order?: Property.Order | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `2`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **25** | No | **1.3** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/orphans\n */\n orphans?: Property.Orphans | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <color>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **1.5** | **1.2** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/outline-color\n */\n \"outline-color\"?: Property.OutlineColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **1** | **1.5** | **1.2** | **15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/outline-offset\n */\n \"outline-offset\"?: Property.OutlineOffset<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <outline-line-style>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **1.5** | **1.2** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/outline-style\n */\n \"outline-style\"?: Property.OutlineStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width>`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **1.5** | **1.2** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/outline-width\n */\n \"outline-width\"?: Property.OutlineWidth<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :---------: | :----: | :-: |\n * | **56** | **66** | **preview** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overflow-anchor\n */\n \"overflow-anchor\"?: Property.OverflowAnchor | undefined;\n /**\n * Since September 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `visible | hidden | clip | scroll | auto`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **135** | **69** | **26** | **135** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overflow-block\n */\n \"overflow-block\"?: Property.OverflowBlock | undefined;\n /**\n * **Syntax**: `padding-box | content-box`\n *\n * **Initial value**: `padding-box`\n */\n \"overflow-clip-box\"?: Property.OverflowClipBox | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<visual-box> || <length [0,∞]>`\n *\n * **Initial value**: `0px`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **90** | **102** | No | **90** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overflow-clip-margin\n */\n \"overflow-clip-margin\"?: Property.OverflowClipMargin<TLength> | undefined;\n /**\n * Since September 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `visible | hidden | clip | scroll | auto`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **135** | **69** | **26** | **135** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overflow-inline\n */\n \"overflow-inline\"?: Property.OverflowInline | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2018.\n *\n * **Syntax**: `normal | break-word | anywhere`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-------------: | :---------------: | :-------------: | :--------------: | :-------------------: |\n * | **23** | **49** | **7** | **18** | **5.5** _(word-wrap)_ |\n * | 1 _(word-wrap)_ | 3.5 _(word-wrap)_ | 1 _(word-wrap)_ | 12 _(word-wrap)_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overflow-wrap\n */\n \"overflow-wrap\"?: Property.OverflowWrap | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `visible | hidden | clip | scroll | auto`\n *\n * **Initial value**: `visible`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **3.5** | **3** | **12** | **5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overflow-x\n */\n \"overflow-x\"?: Property.OverflowX | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `visible | hidden | clip | scroll | auto`\n *\n * **Initial value**: `visible`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **3.5** | **3** | **12** | **5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overflow-y\n */\n \"overflow-y\"?: Property.OverflowY | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | auto`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **117** | No | No | **117** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overlay\n */\n overlay?: Property.Overlay | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `contain | none | auto`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **77** | **73** | **16** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overscroll-behavior-block\n */\n \"overscroll-behavior-block\"?: Property.OverscrollBehaviorBlock | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `contain | none | auto`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **77** | **73** | **16** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overscroll-behavior-inline\n */\n \"overscroll-behavior-inline\"?: Property.OverscrollBehaviorInline | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `contain | none | auto`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **63** | **59** | **16** | **18** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overscroll-behavior-x\n */\n \"overscroll-behavior-x\"?: Property.OverscrollBehaviorX | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `contain | none | auto`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **63** | **59** | **16** | **18** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overscroll-behavior-y\n */\n \"overscroll-behavior-y\"?: Property.OverscrollBehaviorY | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'padding-top'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-block-end\n */\n \"padding-block-end\"?: Property.PaddingBlockEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'padding-top'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-block-start\n */\n \"padding-block-start\"?: Property.PaddingBlockStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-bottom\n */\n \"padding-bottom\"?: Property.PaddingBottom<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'padding-top'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----------------------: | :--------------------: | :-----------------------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | 2 _(-webkit-padding-end)_ | 3 _(-moz-padding-end)_ | 3 _(-webkit-padding-end)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-inline-end\n */\n \"padding-inline-end\"?: Property.PaddingInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'padding-top'>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-------------------------: | :----------------------: | :-------------------------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n * | 2 _(-webkit-padding-start)_ | 3 _(-moz-padding-start)_ | 3 _(-webkit-padding-start)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-inline-start\n */\n \"padding-inline-start\"?: Property.PaddingInlineStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-left\n */\n \"padding-left\"?: Property.PaddingLeft<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-right\n */\n \"padding-right\"?: Property.PaddingRight<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-top\n */\n \"padding-top\"?: Property.PaddingTop<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since February 2023.\n *\n * **Syntax**: `auto | <custom-ident>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **85** | **110** | **1** | **85** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/page\n */\n page?: Property.Page | undefined;\n /**\n * Since March 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `normal | [ fill || stroke || markers ]`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **123** | **60** | **11** | **123** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/paint-order\n */\n \"paint-order\"?: Property.PaintOrder | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <length>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :------: | :-----: | :----: | :----: |\n * | **36** | **16** | **9** | **12** | **10** |\n * | 12 _-x-_ | 10 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/perspective\n */\n perspective?: Property.Perspective<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<position>`\n *\n * **Initial value**: `50% 50%`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :------: | :-----: | :----: | :----: |\n * | **36** | **16** | **9** | **12** | **10** |\n * | 12 _-x-_ | 10 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/perspective-origin\n */\n \"perspective-origin\"?: Property.PerspectiveOrigin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :----: |\n * | **1** | **1.5** | **4** | **12** | **11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/pointer-events\n */\n \"pointer-events\"?: Property.PointerEvents | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `static | relative | absolute | sticky | fixed`\n *\n * **Initial value**: `static`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/position\n */\n position?: Property.Position | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | <anchor-name>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :---------: | :----: | :-----: | :-: |\n * | **125** | **preview** | **26** | **125** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/position-anchor\n */\n \"position-anchor\"?: Property.PositionAnchor | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | <position-area>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :---------: | :----: | :-----: | :-: |\n * | **129** | **preview** | **26** | **129** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/position-area\n */\n \"position-area\"?: Property.PositionArea | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | [ [<dashed-ident> || <try-tactic>] | <'position-area'> ]#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :---------: | :----: | :-----: | :-: |\n * | **128** | **preview** | **26** | **128** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/position-try-fallbacks\n */\n \"position-try-fallbacks\"?: Property.PositionTryFallbacks | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | <try-size>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **125** | No | **26** | **125** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/position-try-order\n */\n \"position-try-order\"?: Property.PositionTryOrder | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `always | [ anchors-valid || anchors-visible || no-overflow ]`\n *\n * **Initial value**: `anchors-visible`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :---------: | :----: | :-----: | :-: |\n * | **125** | **preview** | No | **125** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/position-visibility\n */\n \"position-visibility\"?: Property.PositionVisibility | undefined;\n /**\n * Since May 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `economy | exact`\n *\n * **Initial value**: `economy`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----------------: | :------: | :------: | :-: |\n * | **136** | **97** | **15.4** | **136** | No |\n * | 17 _-x-_ | 48 _(color-adjust)_ | 6 _-x-_ | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/print-color-adjust\n */\n \"print-color-adjust\"?: Property.PrintColorAdjust | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | auto | [ <string> <string> ]+`\n *\n * **Initial value**: depends on user agent\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **11** | **1.5** | **9** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/quotes\n */\n quotes?: Property.Quotes | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `<length> | <percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **43** | **69** | **9** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/r\n */\n r?: Property.R<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | both | horizontal | vertical | block | inline`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **1** | **4** | **3** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/resize\n */\n resize?: Property.Resize | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <length-percentage> | <anchor()> | <anchor-size()>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/right\n */\n right?: Property.Right<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2022.\n *\n * **Syntax**: `none | <angle> | [ x | y | z | <number>{3} ] && <angle>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **104** | **72** | **14.1** | **104** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/rotate\n */\n rotate?: Property.Rotate | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `normal | <length-percentage>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **47** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/row-gap\n */\n \"row-gap\"?: Property.RowGap<TLength> | undefined;\n /**\n * Since December 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `start | center | space-between | space-around`\n *\n * **Initial value**: `space-around`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **128** | **38** | **18.2** | **128** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/ruby-align\n */\n \"ruby-align\"?: Property.RubyAlign | undefined;\n /**\n * **Syntax**: `separate | collapse | auto`\n *\n * **Initial value**: `separate`\n */\n \"ruby-merge\"?: Property.RubyMerge | undefined;\n /**\n * **Syntax**: `auto | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :--: | :-: |\n * | No | No | **18.2** | No | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/ruby-overhang\n */\n \"ruby-overhang\"?: Property.RubyOverhang | undefined;\n /**\n * Since December 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `[ alternate || [ over | under ] ] | inter-character`\n *\n * **Initial value**: `alternate`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :---: | :-: |\n * | **84** | **38** | **18.2** | 12-79 | No |\n * | 1 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/ruby-position\n */\n \"ruby-position\"?: Property.RubyPosition | undefined;\n /**\n * Since March 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<length> | <percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **43** | **69** | **17.4** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/rx\n */\n rx?: Property.Rx<TLength> | undefined;\n /**\n * Since March 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<length> | <percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **43** | **69** | **17.4** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/ry\n */\n ry?: Property.Ry<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2022.\n *\n * **Syntax**: `none | [ <number> | <percentage> ]{1,3}`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **104** | **72** | **14.1** | **104** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scale\n */\n scale?: Property.Scale | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `auto | smooth`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **61** | **36** | **15.4** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-behavior\n */\n \"scroll-behavior\"?: Property.ScrollBehavior | undefined;\n /**\n * **Syntax**: `none | nearest`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **133** | No | No | **133** | No |\n */\n \"scroll-initial-target\"?: Property.ScrollInitialTarget | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-block-end\n */\n \"scroll-margin-block-end\"?: Property.ScrollMarginBlockEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-block-start\n */\n \"scroll-margin-block-start\"?: Property.ScrollMarginBlockStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------------------------------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin-bottom)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-bottom\n */\n \"scroll-margin-bottom\"?: Property.ScrollMarginBottom<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-inline-end\n */\n \"scroll-margin-inline-end\"?: Property.ScrollMarginInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-inline-start\n */\n \"scroll-margin-inline-start\"?: Property.ScrollMarginInlineStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----------------------------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin-left)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-left\n */\n \"scroll-margin-left\"?: Property.ScrollMarginLeft<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----------------------------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin-right)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-right\n */\n \"scroll-margin-right\"?: Property.ScrollMarginRight<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :---------------------------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin-top)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-top\n */\n \"scroll-margin-top\"?: Property.ScrollMarginTop<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `auto | <length-percentage>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-block-end\n */\n \"scroll-padding-block-end\"?: Property.ScrollPaddingBlockEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `auto | <length-percentage>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-block-start\n */\n \"scroll-padding-block-start\"?: Property.ScrollPaddingBlockStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `auto | <length-percentage>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-bottom\n */\n \"scroll-padding-bottom\"?: Property.ScrollPaddingBottom<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `auto | <length-percentage>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-inline-end\n */\n \"scroll-padding-inline-end\"?: Property.ScrollPaddingInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `auto | <length-percentage>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-inline-start\n */\n \"scroll-padding-inline-start\"?: Property.ScrollPaddingInlineStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `auto | <length-percentage>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-left\n */\n \"scroll-padding-left\"?: Property.ScrollPaddingLeft<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `auto | <length-percentage>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-right\n */\n \"scroll-padding-right\"?: Property.ScrollPaddingRight<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `auto | <length-percentage>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-top\n */\n \"scroll-padding-top\"?: Property.ScrollPaddingTop<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `[ none | start | end | center ]{1,2}`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **11** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-snap-align\n */\n \"scroll-snap-align\"?: Property.ScrollSnapAlign | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------------------------------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin-bottom)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-bottom\n */\n \"scroll-snap-margin-bottom\"?: Property.ScrollMarginBottom<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----------------------------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin-left)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-left\n */\n \"scroll-snap-margin-left\"?: Property.ScrollMarginLeft<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----------------------------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin-right)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-right\n */\n \"scroll-snap-margin-right\"?: Property.ScrollMarginRight<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :---------------------------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin-top)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-top\n */\n \"scroll-snap-margin-top\"?: Property.ScrollMarginTop<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2022.\n *\n * **Syntax**: `normal | always`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **75** | **103** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-snap-stop\n */\n \"scroll-snap-stop\"?: Property.ScrollSnapStop | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2022.\n *\n * **Syntax**: `none | [ x | y | block | inline | both ] [ mandatory | proximity ]?`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :----------: |\n * | **69** | 39-68 | **11** | **79** | **10** _-x-_ |\n * | | | 9 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-snap-type\n */\n \"scroll-snap-type\"?: Property.ScrollSnapType | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ block | inline | x | y ]#`\n *\n * **Initial value**: `block`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-timeline-axis\n */\n \"scroll-timeline-axis\"?: Property.ScrollTimelineAxis | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ none | <dashed-ident> ]#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-timeline-name\n */\n \"scroll-timeline-name\"?: Property.ScrollTimelineName | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | <color>{2}`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **121** | **64** | No | **121** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scrollbar-color\n */\n \"scrollbar-color\"?: Property.ScrollbarColor | undefined;\n /**\n * Since December 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto | stable && both-edges?`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **94** | **97** | **18.2** | **94** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scrollbar-gutter\n */\n \"scrollbar-gutter\"?: Property.ScrollbarGutter | undefined;\n /**\n * Since December 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto | thin | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **121** | **64** | **18.2** | **121** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scrollbar-width\n */\n \"scrollbar-width\"?: Property.ScrollbarWidth | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<opacity-value>`\n *\n * **Initial value**: `0.0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **37** | **62** | **10.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/shape-image-threshold\n */\n \"shape-image-threshold\"?: Property.ShapeImageThreshold | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<length-percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **37** | **62** | **10.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/shape-margin\n */\n \"shape-margin\"?: Property.ShapeMargin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `none | [ <shape-box> || <basic-shape> ] | <image>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **37** | **62** | **10.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/shape-outside\n */\n \"shape-outside\"?: Property.ShapeOutside | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | optimizeSpeed | crispEdges | geometricPrecision`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **1** | **3** | **4** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/shape-rendering\n */\n \"shape-rendering\"?: Property.ShapeRendering | undefined;\n /**\n * **Syntax**: `normal | spell-out || digits || [ literal-punctuation | no-punctuation ]`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :--: | :-: |\n * | No | No | **11.1** | No | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/speak-as\n */\n \"speak-as\"?: Property.SpeakAs | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<'color'>`\n *\n * **Initial value**: `black`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stop-color\n */\n \"stop-color\"?: Property.StopColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<'opacity'>`\n *\n * **Initial value**: `black`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stop-opacity\n */\n \"stop-opacity\"?: Property.StopOpacity | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<paint>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1.5** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stroke\n */\n stroke?: Property.Stroke | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: `transparent`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :--: | :-: |\n * | No | No | **11.1** | No | No |\n */\n \"stroke-color\"?: Property.StrokeColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `none | <dasharray>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1.5** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stroke-dasharray\n */\n \"stroke-dasharray\"?: Property.StrokeDasharray<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<length-percentage> | <number>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1.5** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stroke-dashoffset\n */\n \"stroke-dashoffset\"?: Property.StrokeDashoffset<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `butt | round | square`\n *\n * **Initial value**: `butt`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1.5** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stroke-linecap\n */\n \"stroke-linecap\"?: Property.StrokeLinecap | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `miter | miter-clip | round | bevel | arcs`\n *\n * **Initial value**: `miter`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1.5** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stroke-linejoin\n */\n \"stroke-linejoin\"?: Property.StrokeLinejoin | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `4`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1.5** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stroke-miterlimit\n */\n \"stroke-miterlimit\"?: Property.StrokeMiterlimit | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<'opacity'>`\n *\n * **Initial value**: `1`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1.5** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stroke-opacity\n */\n \"stroke-opacity\"?: Property.StrokeOpacity | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<length-percentage> | <number>`\n *\n * **Initial value**: `1px`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **1.5** | **4** | **≤15** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/stroke-width\n */\n \"stroke-width\"?: Property.StrokeWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2021.\n *\n * **Syntax**: `<integer> | <length>`\n *\n * **Initial value**: `8`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **21** | **91** | **7** | **79** | No |\n * | | 4 _-x-_ | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/tab-size\n */\n \"tab-size\"?: Property.TabSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | fixed`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **14** | **1** | **1** | **12** | **5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/table-layout\n */\n \"table-layout\"?: Property.TableLayout | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `start | end | left | right | center | justify | match-parent`\n *\n * **Initial value**: `start`, or a nameless value that acts as `left` if _direction_ is `ltr`, `right` if _direction_ is `rtl` if `start` is not supported by the browser.\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-align\n */\n \"text-align\"?: Property.TextAlign | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `auto | start | end | left | right | center | justify`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **47** | **49** | **16** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-align-last\n */\n \"text-align-last\"?: Property.TextAlignLast | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2016.\n *\n * **Syntax**: `start | middle | end`\n *\n * **Initial value**: `start`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :-----: | :-: |\n * | **1** | **3** | **4** | **≤14** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-anchor\n */\n \"text-anchor\"?: Property.TextAnchor | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | <autospace> | auto`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **140** | **145** | **18.4** | **140** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-autospace\n */\n \"text-autospace\"?: Property.TextAutospace | undefined;\n /**\n * **Syntax**: `normal | <'text-box-trim'> || <'text-box-edge'>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **133** | No | **18.2** | **133** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-box\n */\n \"text-box\"?: Property.TextBox | undefined;\n /**\n * **Syntax**: `auto | <text-edge>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **133** | No | **18.2** | **133** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-box-edge\n */\n \"text-box-edge\"?: Property.TextBoxEdge | undefined;\n /**\n * **Syntax**: `none | trim-start | trim-end | trim-both`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **133** | No | **18.2** | **133** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-box-trim\n */\n \"text-box-trim\"?: Property.TextBoxTrim | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | all | [ digits <integer>? ]`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------------------------: | :-----: | :--------------------------: | :----: | :------------------------------------: |\n * | **48** | **48** | **15.4** | **79** | **11** _(-ms-text-combine-horizontal)_ |\n * | 9 _(-webkit-text-combine)_ | | 5.1 _(-webkit-text-combine)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-combine-upright\n */\n \"text-combine-upright\"?: Property.TextCombineUpright | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **36** | **12.1** | **79** | No |\n * | | | 8 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-decoration-color\n */\n \"text-decoration-color\"?: Property.TextDecorationColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **36** | **12.1** | **79** | No |\n * | | | 8 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-decoration-line\n */\n \"text-decoration-line\"?: Property.TextDecorationLine | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]`\n *\n * **Initial value**: `objects`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :--: | :-: |\n * | 57-64 | No | **12.1** | No | No |\n * | | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-decoration-skip\n */\n \"text-decoration-skip\"?: Property.TextDecorationSkip | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `auto | all | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **64** | **70** | **15.4** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-decoration-skip-ink\n */\n \"text-decoration-skip-ink\"?: Property.TextDecorationSkipInk | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `solid | double | dotted | dashed | wavy`\n *\n * **Initial value**: `solid`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **36** | **12.1** | **79** | No |\n * | | | 8 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-decoration-style\n */\n \"text-decoration-style\"?: Property.TextDecorationStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2021.\n *\n * **Syntax**: `auto | from-font | <length> | <percentage> `\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **89** | **70** | **12.1** | **89** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-decoration-thickness\n */\n \"text-decoration-thickness\"?: Property.TextDecorationThickness<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :----: | :------: | :-: |\n * | **99** | **46** | **7** | **99** | No |\n * | 25 _-x-_ | | | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-emphasis-color\n */\n \"text-emphasis-color\"?: Property.TextEmphasisColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `auto | [ over | under ] && [ right | left ]?`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :----: | :------: | :-: |\n * | **99** | **46** | **7** | **99** | No |\n * | 25 _-x-_ | | | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-emphasis-position\n */\n \"text-emphasis-position\"?: Property.TextEmphasisPosition | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :----: | :------: | :-: |\n * | **99** | **46** | **7** | **99** | No |\n * | 25 _-x-_ | | | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-emphasis-style\n */\n \"text-emphasis-style\"?: Property.TextEmphasisStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage> && hanging? && each-line?`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-indent\n */\n \"text-indent\"?: Property.TextIndent<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | inter-character | inter-word | none`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :---: | :----: |\n * | No | **55** | No | 12-79 | **11** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-justify\n */\n \"text-justify\"?: Property.TextJustify | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2020.\n *\n * **Syntax**: `mixed | upright | sideways`\n *\n * **Initial value**: `mixed`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-------: | :----: | :-: |\n * | **48** | **41** | **14** | **79** | No |\n * | 12 _-x-_ | | 5.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-orientation\n */\n \"text-orientation\"?: Property.TextOrientation | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ clip | ellipsis | <string> ]{1,2}`\n *\n * **Initial value**: `clip`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **1** | **7** | **1.3** | **12** | **6** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-overflow\n */\n \"text-overflow\"?: Property.TextOverflow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | optimizeSpeed | optimizeLegibility | geometricPrecision`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **4** | **1** | **5** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-rendering\n */\n \"text-rendering\"?: Property.TextRendering | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | <shadow-t>#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :----: |\n * | **2** | **3.5** | **1.1** | **12** | **10** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-shadow\n */\n \"text-shadow\"?: Property.TextShadow | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | auto | <percentage>`\n *\n * **Initial value**: `auto` for smartphone browsers supporting inflation, `none` in other cases (and then not modifiable).\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **54** | No | No | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-size-adjust\n */\n \"text-size-adjust\"?: Property.TextSizeAdjust | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `space-all | normal | space-first | trim-start`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **123** | No | No | **123** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-spacing-trim\n */\n \"text-spacing-trim\"?: Property.TextSpacingTrim | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | [ capitalize | uppercase | lowercase ] || full-width || full-size-kana | math-auto`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-transform\n */\n \"text-transform\"?: Property.TextTransform | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since November 2020.\n *\n * **Syntax**: `auto | <length> | <percentage> `\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **70** | **12.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-underline-offset\n */\n \"text-underline-offset\"?: Property.TextUnderlineOffset<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `auto | from-font | [ under || [ left | right ] ]`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :---: |\n * | **33** | **74** | **12.1** | **12** | **6** |\n * | | | 9 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-underline-position\n */\n \"text-underline-position\"?: Property.TextUnderlinePosition | undefined;\n /**\n * Since October 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `wrap | nowrap`\n *\n * **Initial value**: `wrap`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **130** | **124** | **17.4** | **130** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-wrap-mode\n */\n \"text-wrap-mode\"?: Property.TextWrapMode | undefined;\n /**\n * Since October 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto | balance | stable | pretty`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **130** | **124** | **17.5** | **130** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-wrap-style\n */\n \"text-wrap-style\"?: Property.TextWrapStyle | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | <dashed-ident>#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **116** | No | **26** | **116** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/timeline-scope\n */\n \"timeline-scope\"?: Property.TimelineScope | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <length-percentage> | <anchor()> | <anchor-size()>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/top\n */\n top?: Property.Top<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2019.\n *\n * **Syntax**: `auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :------: |\n * | **36** | **52** | **13** | **12** | **11** |\n * | | | | | 10 _-x-_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/touch-action\n */\n \"touch-action\"?: Property.TouchAction | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <transform-list>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-------: | :-------: | :----: | :-----: |\n * | **36** | **16** | **9** | **12** | **10** |\n * | 1 _-x-_ | 3.5 _-x-_ | 3.1 _-x-_ | | 9 _-x-_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transform\n */\n transform?: Property.Transform | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `content-box | border-box | fill-box | stroke-box | view-box`\n *\n * **Initial value**: `view-box`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **64** | **55** | **11** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transform-box\n */\n \"transform-box\"?: Property.TransformBox | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?`\n *\n * **Initial value**: `50% 50% 0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-------: | :-----: | :----: | :-----: |\n * | **36** | **16** | **9** | **12** | **10** |\n * | 1 _-x-_ | 3.5 _-x-_ | 2 _-x-_ | | 9 _-x-_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transform-origin\n */\n \"transform-origin\"?: Property.TransformOrigin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `flat | preserve-3d`\n *\n * **Initial value**: `flat`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :------: | :-----: | :----: | :-: |\n * | **36** | **16** | **9** | **12** | No |\n * | 12 _-x-_ | 10 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transform-style\n */\n \"transform-style\"?: Property.TransformStyle | undefined;\n /**\n * Since August 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<transition-behavior-value>#`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **117** | **129** | **17.4** | **117** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transition-behavior\n */\n \"transition-behavior\"?: Property.TransitionBehavior | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **26** | **16** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transition-delay\n */\n \"transition-delay\"?: Property.TransitionDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :----: | :----: |\n * | **26** | **16** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transition-duration\n */\n \"transition-duration\"?: Property.TransitionDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <single-transition-property>#`\n *\n * **Initial value**: all\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :----: | :----: |\n * | **26** | **16** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transition-property\n */\n \"transition-property\"?: Property.TransitionProperty | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :----: | :----: |\n * | **26** | **16** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transition-timing-function\n */\n \"transition-timing-function\"?: Property.TransitionTimingFunction | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2022.\n *\n * **Syntax**: `none | <length-percentage> [ <length-percentage> <length>? ]?`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **104** | **72** | **14.1** | **104** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/translate\n */\n translate?: Property.Translate<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | embed | isolate | bidi-override | isolate-override | plaintext`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-----: |\n * | **2** | **1** | **1.3** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/unicode-bidi\n */\n \"unicode-bidi\"?: Property.UnicodeBidi | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | text | none | all`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :---------: | :------: | :----------: |\n * | **54** | **69** | **3** _-x-_ | **79** | **10** _-x-_ |\n * | 1 _-x-_ | 1 _-x-_ | | 12 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/user-select\n */\n \"user-select\"?: Property.UserSelect | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `none | non-scaling-stroke | non-scaling-size | non-rotation | fixed-position`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **6** | **15** | **5.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/vector-effect\n */\n \"vector-effect\"?: Property.VectorEffect | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `baseline | sub | super | text-top | text-bottom | middle | top | bottom | <percentage> | <length>`\n *\n * **Initial value**: `baseline`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/vertical-align\n */\n \"vertical-align\"?: Property.VerticalAlign<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ block | inline | x | y ]#`\n *\n * **Initial value**: `block`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/view-timeline-axis\n */\n \"view-timeline-axis\"?: Property.ViewTimelineAxis | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ [ auto | <length-percentage> ]{1,2} ]#`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/view-timeline-inset\n */\n \"view-timeline-inset\"?: Property.ViewTimelineInset<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ none | <dashed-ident> ]#`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/view-timeline-name\n */\n \"view-timeline-name\"?: Property.ViewTimelineName | undefined;\n /**\n * **Syntax**: `none | <custom-ident>+`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **125** | **144** | **18.2** | **125** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/view-transition-class\n */\n \"view-transition-class\"?: Property.ViewTransitionClass | undefined;\n /**\n * Since October 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `none | <custom-ident> | match-element`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **111** | **144** | **18** | **111** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/view-transition-name\n */\n \"view-transition-name\"?: Property.ViewTransitionName | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `visible | hidden | collapse`\n *\n * **Initial value**: `visible`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/visibility\n */\n visibility?: Property.Visibility | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | pre | pre-wrap | pre-line | <'white-space-collapse'> || <'text-wrap-mode'>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/white-space\n */\n \"white-space\"?: Property.WhiteSpace | undefined;\n /**\n * Since March 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `collapse | preserve | preserve-breaks | preserve-spaces | break-spaces`\n *\n * **Initial value**: `collapse`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **114** | **124** | **17.4** | **114** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/white-space-collapse\n */\n \"white-space-collapse\"?: Property.WhiteSpaceCollapse | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `2`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :---: |\n * | **25** | No | **1.3** | **12** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/widows\n */\n widows?: Property.Widows | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <length-percentage [0,∞]> | min-content | max-content | fit-content | fit-content(<length-percentage [0,∞]>) | <calc-size()> | <anchor-size()>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/width\n */\n width?: Property.Width<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | <animateable-feature>#`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **36** | **36** | **9.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/will-change\n */\n \"will-change\"?: Property.WillChange | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | break-all | keep-all | break-word | auto-phrase`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **15** | **3** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/word-break\n */\n \"word-break\"?: Property.WordBreak | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | <length>`\n *\n * **Initial value**: `normal`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **6** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/word-spacing\n */\n \"word-spacing\"?: Property.WordSpacing<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2018.\n *\n * **Syntax**: `normal | break-word`\n *\n * **Initial value**: `normal`\n */\n \"word-wrap\"?: Property.WordWrap | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr`\n *\n * **Initial value**: `horizontal-tb`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :----: | :---: |\n * | **48** | **41** | **10.1** | **12** | **9** |\n * | 8 _-x-_ | | 5.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/writing-mode\n */\n \"writing-mode\"?: Property.WritingMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `<length> | <percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **42** | **69** | **9** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/x\n */\n x?: Property.X<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `<length> | <percentage>`\n *\n * **Initial value**: `0`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **42** | **69** | **9** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/y\n */\n y?: Property.Y<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <integer>`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/z-index\n */\n \"z-index\"?: Property.ZIndex | undefined;\n /**\n * Since May 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `normal | reset | <number [0,∞]> || <percentage [0,∞]>`\n *\n * **Initial value**: `1`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-----: |\n * | **1** | **126** | **3.1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/zoom\n */\n zoom?: Property.Zoom | undefined;\n}\n\nexport interface StandardShorthandPropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}> {\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `initial | inherit | unset | revert | revert-layer`\n *\n * **Initial value**: There is no practical initial value for it.\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :-: |\n * | **37** | **27** | **9.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/all\n */\n all?: Property.All | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation>#`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **43** | **16** | **9** | **12** | **10** |\n * | 3 _-x-_ | 5 _-x-_ | 4 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation\n */\n animation?: Property.Animation<TTime> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ <'animation-range-start'> <'animation-range-end'>? ]#`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/animation-range\n */\n \"animation-range\"?: Property.AnimationRange<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-layer>#? , <final-bg-layer>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background\n */\n background?: Property.Background<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-position>#`\n *\n * **Initial value**: `0% 0%`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/background-position\n */\n \"background-position\"?: Property.BackgroundPosition<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width> || <line-style> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border\n */\n border?: Property.Border<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'border-block-start'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block\n */\n \"border-block\"?: Property.BorderBlock<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'border-top-color'>{1,2}`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-color\n */\n \"border-block-color\"?: Property.BorderBlockColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-end\n */\n \"border-block-end\"?: Property.BorderBlockEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-start\n */\n \"border-block-start\"?: Property.BorderBlockStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'border-top-style'>{1,2}`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-style\n */\n \"border-block-style\"?: Property.BorderBlockStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'border-top-width'>{1,2}`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-block-width\n */\n \"border-block-width\"?: Property.BorderBlockWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width> || <line-style> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-bottom\n */\n \"border-bottom\"?: Property.BorderBottom<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<color>{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-color\n */\n \"border-color\"?: Property.BorderColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-------: | :-----: | :----: | :----: |\n * | **16** | **15** | **6** | **12** | **11** |\n * | 7 _-x-_ | 3.5 _-x-_ | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-image\n */\n \"border-image\"?: Property.BorderImage | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'border-block-start'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline\n */\n \"border-inline\"?: Property.BorderInline<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'border-top-color'>{1,2}`\n *\n * **Initial value**: `currentcolor`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-color\n */\n \"border-inline-color\"?: Property.BorderInlineColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-end\n */\n \"border-inline-end\"?: Property.BorderInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'> || <'border-top-style'> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **41** | **12.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-start\n */\n \"border-inline-start\"?: Property.BorderInlineStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'border-top-style'>{1,2}`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-style\n */\n \"border-inline-style\"?: Property.BorderInlineStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'border-top-width'>{1,2}`\n *\n * **Initial value**: `medium`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-inline-width\n */\n \"border-inline-width\"?: Property.BorderInlineWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width> || <line-style> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-left\n */\n \"border-left\"?: Property.BorderLeft<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,4} [ / <length-percentage [0,∞]>{1,4} ]?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :---: |\n * | **4** | **4** | **5** | **12** | **9** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-radius\n */\n \"border-radius\"?: Property.BorderRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width> || <line-style> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-----: |\n * | **1** | **1** | **1** | **12** | **5.5** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-right\n */\n \"border-right\"?: Property.BorderRight<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-style>{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-style\n */\n \"border-style\"?: Property.BorderStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width> || <line-style> || <color>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-top\n */\n \"border-top\"?: Property.BorderTop<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width>{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/border-width\n */\n \"border-width\"?: Property.BorderWidth<TLength> | undefined;\n /** **Syntax**: `<'caret-color'> || <'caret-shape'>` */\n caret?: Property.Caret | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-----: | :----: | :----: |\n * | **50** | **52** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/column-rule\n */\n \"column-rule\"?: Property.ColumnRule<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'column-width'> || <'column-count'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----: | :----: | :----: |\n * | **50** | **52** | **9** | **12** | **10** |\n * | | | 3 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/columns\n */\n columns?: Property.Columns<TLength> | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `[ auto? [ none | <length> ] ]{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **83** | **107** | **17** | **83** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/contain-intrinsic-size\n */\n \"contain-intrinsic-size\"?: Property.ContainIntrinsicSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since February 2023.\n *\n * **Syntax**: `<'container-name'> [ / <'container-type'> ]?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **105** | **110** | **16** | **105** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/container\n */\n container?: Property.Container | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :------: |\n * | **29** | **22** | **9** | **12** | **11** |\n * | 21 _-x-_ | | 7 _-x-_ | | 10 _-x-_ |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flex\n */\n flex?: Property.Flex<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<'flex-direction'> || <'flex-wrap'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :-----: | :----: | :----: |\n * | **29** | **28** | **9** | **12** | **11** |\n * | 21 _-x-_ | | 7 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/flex-flow\n */\n \"flex-flow\"?: Property.FlexFlow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ [ <'font-style'> || <font-variant-css2> || <'font-weight'> || <font-width-css3> ]? <'font-size'> [ / <'line-height'> ]? <'font-family'># ] | <system-family-name>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/font\n */\n font?: Property.Font | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<'row-gap'> <'column-gap'>?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/gap\n */\n gap?: Property.Gap<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<'grid-template'> | <'grid-template-rows'> / [ auto-flow && dense? ] <'grid-auto-columns'>? | [ auto-flow && dense? ] <'grid-auto-rows'>? / <'grid-template-columns'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid\n */\n grid?: Property.Grid | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<grid-line> [ / <grid-line> ]{0,3}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-area\n */\n \"grid-area\"?: Property.GridArea | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<grid-line> [ / <grid-line> ]?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-column\n */\n \"grid-column\"?: Property.GridColumn | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<grid-line> [ / <grid-line> ]?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-row\n */\n \"grid-row\"?: Property.GridRow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `none | [ <'grid-template-rows'> / <'grid-template-columns'> ] | [ <line-names>? <string> <track-size>? <line-names>? ]+ [ / <explicit-track-list> ]?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **57** | **52** | **10.1** | **16** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/grid-template\n */\n \"grid-template\"?: Property.GridTemplate | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/inset\n */\n inset?: Property.Inset<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **63** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/inset-block\n */\n \"inset-block\"?: Property.InsetBlock<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **63** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/inset-inline\n */\n \"inset-inline\"?: Property.InsetInline<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | <integer>`\n *\n * **Initial value**: `none`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :---------: | :----------: | :-------: | :----------: | :-: |\n * | **6** _-x-_ | **68** _-x-_ | 18.2-18.4 | **17** _-x-_ | No |\n * | | | 5 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/line-clamp\n */\n \"line-clamp\"?: Property.LineClamp | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'list-style-type'> || <'list-style-position'> || <'list-style-image'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/list-style\n */\n \"list-style\"?: Property.ListStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'margin-top'>{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin\n */\n margin?: Property.Margin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'margin-top'>{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-block\n */\n \"margin-block\"?: Property.MarginBlock<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'margin-top'>{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/margin-inline\n */\n \"margin-inline\"?: Property.MarginInline<TLength> | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<mask-layer>#`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :---: | :-: |\n * | **120** | **53** | **15.4** | 12-79 | No |\n * | 1 _-x-_ | | 3.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask\n */\n mask?: Property.Mask<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------------------------------: | :-----: | :----------------------------: | :-------------------------------: | :-: |\n * | **1** _(-webkit-mask-box-image)_ | No | **17.2** | **79** _(-webkit-mask-box-image)_ | No |\n * | | | 3.1 _(-webkit-mask-box-image)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/mask-border\n */\n \"mask-border\"?: Property.MaskBorder | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----------: | :-----: | :----: | :----: | :-: |\n * | **55** | **72** | **16** | **79** | No |\n * | 46 _(motion)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset\n */\n motion?: Property.Offset<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `[ <'offset-position'>? [ <'offset-path'> [ <'offset-distance'> || <'offset-rotate'> ]? ]? ]! [ / <'offset-anchor'> ]?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----------: | :-----: | :----: | :----: | :-: |\n * | **55** | **72** | **16** | **79** | No |\n * | 46 _(motion)_ | | | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/offset\n */\n offset?: Property.Offset<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.\n *\n * **Syntax**: `<'outline-width'> || <'outline-style'> || <'outline-color'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :---: |\n * | **94** | **88** | **16.4** | **94** | **8** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/outline\n */\n outline?: Property.Outline<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ visible | hidden | clip | scroll | auto ]{1,2}`\n *\n * **Initial value**: `visible`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overflow\n */\n overflow?: Property.Overflow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `[ contain | none | auto ]{1,2}`\n *\n * **Initial value**: `auto`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **63** | **59** | **16** | **18** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/overscroll-behavior\n */\n \"overscroll-behavior\"?: Property.OverscrollBehavior | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'padding-top'>{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **4** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding\n */\n padding?: Property.Padding<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'padding-top'>{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-block\n */\n \"padding-block\"?: Property.PaddingBlock<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'padding-top'>{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **87** | **66** | **14.1** | **87** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/padding-inline\n */\n \"padding-inline\"?: Property.PaddingInline<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'align-content'> <'justify-content'>?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **59** | **45** | **9** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/place-content\n */\n \"place-content\"?: Property.PlaceContent | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'align-items'> <'justify-items'>?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **59** | **45** | **11** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/place-items\n */\n \"place-items\"?: Property.PlaceItems | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'align-self'> <'justify-self'>?`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **59** | **45** | **11** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/place-self\n */\n \"place-self\"?: Property.PlaceSelf | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<'position-try-order'>? <'position-try-fallbacks'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :---------: | :----: | :-----: | :-: |\n * | **125** | **preview** | **26** | **125** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/position-try\n */\n \"position-try\"?: Property.PositionTry | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2021.\n *\n * **Syntax**: `<length>{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----------------------: | :----: | :-: |\n * | **69** | **90** | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin\n */\n \"scroll-margin\"?: Property.ScrollMargin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<length>{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-block\n */\n \"scroll-margin-block\"?: Property.ScrollMarginBlock<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `<length>{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin-inline\n */\n \"scroll-margin-inline\"?: Property.ScrollMarginInline<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `[ auto | <length-percentage> ]{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :------: | :----: | :-: |\n * | **69** | **68** | **14.1** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding\n */\n \"scroll-padding\"?: Property.ScrollPadding<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `[ auto | <length-percentage> ]{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-block\n */\n \"scroll-padding-block\"?: Property.ScrollPaddingBlock<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.\n *\n * **Syntax**: `[ auto | <length-percentage> ]{1,2}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :-: |\n * | **69** | **68** | **15** | **79** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-padding-inline\n */\n \"scroll-padding-inline\"?: Property.ScrollPaddingInline<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2021.\n *\n * **Syntax**: `<length>{1,4}`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :-----------------------: | :----: | :-: |\n * | **69** | 68-90 | **14.1** | **79** | No |\n * | | | 11 _(scroll-snap-margin)_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-margin\n */\n \"scroll-snap-margin\"?: Property.ScrollMargin<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ <'scroll-timeline-name'> <'scroll-timeline-axis'>? ]#`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/scroll-timeline\n */\n \"scroll-timeline\"?: Property.ScrollTimeline | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'text-decoration-line'> || <'text-decoration-style'> || <'text-decoration-color'> || <'text-decoration-thickness'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :----: | :-----: | :----: | :----: | :---: |\n * | **1** | **1** | **1** | **12** | **3** |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-decoration\n */\n \"text-decoration\"?: Property.TextDecoration<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `<'text-emphasis-style'> || <'text-emphasis-color'>`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :------: | :-----: | :----: | :------: | :-: |\n * | **99** | **46** | **7** | **99** | No |\n * | 25 _-x-_ | | | 79 _-x-_ | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-emphasis\n */\n \"text-emphasis\"?: Property.TextEmphasis | undefined;\n /**\n * Since March 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<'text-wrap-mode'> || <'text-wrap-style'>`\n *\n * **Initial value**: `wrap`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :------: | :-----: | :-: |\n * | **114** | **121** | **17.4** | **114** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/text-wrap\n */\n \"text-wrap\"?: Property.TextWrap | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-transition>#`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :-------: | :----: | :----: |\n * | **26** | **16** | **9** | **12** | **10** |\n * | 1 _-x-_ | | 3.1 _-x-_ | | |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/transition\n */\n transition?: Property.Transition<TTime> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ <'view-timeline-name'> [ <'view-timeline-axis'> || <'view-timeline-inset'> ]? ]#`\n *\n * | Chrome | Firefox | Safari | Edge | IE |\n * | :-----: | :-----: | :----: | :-----: | :-: |\n * | **115** | No | **26** | **115** | No |\n *\n * @see https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/view-timeline\n */\n \"view-timeline\"?: Property.ViewTimeline | undefined;\n}\n\nexport interface StandardPropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}>\n extends StandardLonghandPropertiesHyphen<TLength, TTime>,\n StandardShorthandPropertiesHyphen<TLength, TTime> {}\n\nexport interface VendorLonghandPropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}> {\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n */\n \"-moz-animation-delay\"?: Property.AnimationDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-direction>#`\n *\n * **Initial value**: `normal`\n */\n \"-moz-animation-direction\"?: Property.AnimationDirection | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ auto | <time [0s,∞]> ]#`\n *\n * **Initial value**: `0s`\n */\n \"-moz-animation-duration\"?: Property.AnimationDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-fill-mode>#`\n *\n * **Initial value**: `none`\n */\n \"-moz-animation-fill-mode\"?: Property.AnimationFillMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-iteration-count>#`\n *\n * **Initial value**: `1`\n */\n \"-moz-animation-iteration-count\"?: Property.AnimationIterationCount | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ none | <keyframes-name> ]#`\n *\n * **Initial value**: `none`\n */\n \"-moz-animation-name\"?: Property.AnimationName | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-play-state>#`\n *\n * **Initial value**: `running`\n */\n \"-moz-animation-play-state\"?: Property.AnimationPlayState | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n */\n \"-moz-animation-timing-function\"?: Property.AnimationTimingFunction | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | button | button-arrow-down | button-arrow-next | button-arrow-previous | button-arrow-up | button-bevel | button-focus | caret | checkbox | checkbox-container | checkbox-label | checkmenuitem | dualbutton | groupbox | listbox | listitem | menuarrow | menubar | menucheckbox | menuimage | menuitem | menuitemtext | menulist | menulist-button | menulist-text | menulist-textfield | menupopup | menuradio | menuseparator | meterbar | meterchunk | progressbar | progressbar-vertical | progresschunk | progresschunk-vertical | radio | radio-container | radio-label | radiomenuitem | range | range-thumb | resizer | resizerpanel | scale-horizontal | scalethumbend | scalethumb-horizontal | scalethumbstart | scalethumbtick | scalethumb-vertical | scale-vertical | scrollbarbutton-down | scrollbarbutton-left | scrollbarbutton-right | scrollbarbutton-up | scrollbarthumb-horizontal | scrollbarthumb-vertical | scrollbartrack-horizontal | scrollbartrack-vertical | searchfield | separator | sheet | spinner | spinner-downbutton | spinner-textfield | spinner-upbutton | splitter | statusbar | statusbarpanel | tab | tabpanel | tabpanels | tab-scroll-arrow-back | tab-scroll-arrow-forward | textfield | textfield-multiline | toolbar | toolbarbutton | toolbarbutton-dropdown | toolbargripper | toolbox | tooltip | treeheader | treeheadercell | treeheadersortarrow | treeitem | treeline | treetwisty | treetwistyopen | treeview | -moz-mac-unified-toolbar | -moz-win-borderless-glass | -moz-win-browsertabbar-toolbox | -moz-win-communicationstext | -moz-win-communications-toolbox | -moz-win-exclude-glass | -moz-win-glass | -moz-win-mediatext | -moz-win-media-toolbox | -moz-window-button-box | -moz-window-button-box-maximized | -moz-window-button-close | -moz-window-button-maximize | -moz-window-button-minimize | -moz-window-button-restore | -moz-window-frame-bottom | -moz-window-frame-left | -moz-window-frame-right | -moz-window-titlebar | -moz-window-titlebar-maximized`\n *\n * **Initial value**: `none` (but this value is overridden in the user agent CSS)\n */\n \"-moz-appearance\"?: Property.MozAppearance | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `visible | hidden`\n *\n * **Initial value**: `visible`\n */\n \"-moz-backface-visibility\"?: Property.BackfaceVisibility | undefined;\n /**\n * **Syntax**: `<url> | none`\n *\n * **Initial value**: `none`\n */\n \"-moz-binding\"?: Property.MozBinding | undefined;\n /**\n * **Syntax**: `<color>+ | none`\n *\n * **Initial value**: `none`\n */\n \"-moz-border-bottom-colors\"?: Property.MozBorderBottomColors | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-color'>`\n *\n * **Initial value**: `currentcolor`\n */\n \"-moz-border-end-color\"?: Property.BorderInlineEndColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-style'>`\n *\n * **Initial value**: `none`\n */\n \"-moz-border-end-style\"?: Property.BorderInlineEndStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-width'>`\n *\n * **Initial value**: `medium`\n */\n \"-moz-border-end-width\"?: Property.BorderInlineEndWidth<TLength> | undefined;\n /**\n * **Syntax**: `<color>+ | none`\n *\n * **Initial value**: `none`\n */\n \"-moz-border-left-colors\"?: Property.MozBorderLeftColors | undefined;\n /**\n * **Syntax**: `<color>+ | none`\n *\n * **Initial value**: `none`\n */\n \"-moz-border-right-colors\"?: Property.MozBorderRightColors | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-color'>`\n *\n * **Initial value**: `currentcolor`\n */\n \"-moz-border-start-color\"?: Property.BorderInlineStartColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'border-top-style'>`\n *\n * **Initial value**: `none`\n */\n \"-moz-border-start-style\"?: Property.BorderInlineStartStyle | undefined;\n /**\n * **Syntax**: `<color>+ | none`\n *\n * **Initial value**: `none`\n */\n \"-moz-border-top-colors\"?: Property.MozBorderTopColors | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `content-box | border-box`\n *\n * **Initial value**: `content-box`\n */\n \"-moz-box-sizing\"?: Property.BoxSizing | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n */\n \"-moz-column-rule-color\"?: Property.ColumnRuleColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'border-style'>`\n *\n * **Initial value**: `none`\n */\n \"-moz-column-rule-style\"?: Property.ColumnRuleStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'border-width'>`\n *\n * **Initial value**: `medium`\n */\n \"-moz-column-rule-width\"?: Property.ColumnRuleWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since November 2016.\n *\n * **Syntax**: `<length> | auto`\n *\n * **Initial value**: `auto`\n */\n \"-moz-column-width\"?: Property.ColumnWidth<TLength> | undefined;\n /**\n * **Syntax**: `none | [ fill | fill-opacity | stroke | stroke-opacity ]#`\n *\n * **Initial value**: `none`\n */\n \"-moz-context-properties\"?: Property.MozContextProperties | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `normal | <feature-tag-value>#`\n *\n * **Initial value**: `normal`\n */\n \"-moz-font-feature-settings\"?: Property.FontFeatureSettings | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | <string>`\n *\n * **Initial value**: `normal`\n */\n \"-moz-font-language-override\"?: Property.FontLanguageOverride | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `none | manual | auto`\n *\n * **Initial value**: `manual`\n */\n \"-moz-hyphens\"?: Property.Hyphens | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'margin-top'>`\n *\n * **Initial value**: `0`\n */\n \"-moz-margin-end\"?: Property.MarginInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'margin-top'>`\n *\n * **Initial value**: `0`\n */\n \"-moz-margin-start\"?: Property.MarginInlineStart<TLength> | undefined;\n /**\n * The **`-moz-orient`** CSS property specifies the orientation of the element to which it's applied.\n *\n * **Syntax**: `inline | block | horizontal | vertical`\n *\n * **Initial value**: `inline`\n */\n \"-moz-orient\"?: Property.MozOrient | undefined;\n /**\n * The **`font-smooth`** CSS property controls the application of anti-aliasing when fonts are rendered.\n *\n * **Syntax**: `auto | never | always | <absolute-size> | <length>`\n *\n * **Initial value**: `auto`\n */\n \"-moz-osx-font-smoothing\"?: Property.FontSmooth<TLength> | undefined;\n /**\n * **Syntax**: `<outline-radius>`\n *\n * **Initial value**: `0`\n */\n \"-moz-outline-radius-bottomleft\"?: Property.MozOutlineRadiusBottomleft<TLength> | undefined;\n /**\n * **Syntax**: `<outline-radius>`\n *\n * **Initial value**: `0`\n */\n \"-moz-outline-radius-bottomright\"?: Property.MozOutlineRadiusBottomright<TLength> | undefined;\n /**\n * **Syntax**: `<outline-radius>`\n *\n * **Initial value**: `0`\n */\n \"-moz-outline-radius-topleft\"?: Property.MozOutlineRadiusTopleft<TLength> | undefined;\n /**\n * **Syntax**: `<outline-radius>`\n *\n * **Initial value**: `0`\n */\n \"-moz-outline-radius-topright\"?: Property.MozOutlineRadiusTopright<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'padding-top'>`\n *\n * **Initial value**: `0`\n */\n \"-moz-padding-end\"?: Property.PaddingInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'padding-top'>`\n *\n * **Initial value**: `0`\n */\n \"-moz-padding-start\"?: Property.PaddingInlineStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <length>`\n *\n * **Initial value**: `none`\n */\n \"-moz-perspective\"?: Property.Perspective<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<position>`\n *\n * **Initial value**: `50% 50%`\n */\n \"-moz-perspective-origin\"?: Property.PerspectiveOrigin<TLength> | undefined;\n /**\n * **Syntax**: `ignore | stretch-to-fit`\n *\n * **Initial value**: `stretch-to-fit`\n */\n \"-moz-stack-sizing\"?: Property.MozStackSizing | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2021.\n *\n * **Syntax**: `<integer> | <length>`\n *\n * **Initial value**: `8`\n */\n \"-moz-tab-size\"?: Property.TabSize<TLength> | undefined;\n /**\n * **Syntax**: `none | blink`\n *\n * **Initial value**: `none`\n */\n \"-moz-text-blink\"?: Property.MozTextBlink | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | auto | <percentage>`\n *\n * **Initial value**: `auto` for smartphone browsers supporting inflation, `none` in other cases (and then not modifiable).\n */\n \"-moz-text-size-adjust\"?: Property.TextSizeAdjust | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <transform-list>`\n *\n * **Initial value**: `none`\n */\n \"-moz-transform\"?: Property.Transform | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?`\n *\n * **Initial value**: `50% 50% 0`\n */\n \"-moz-transform-origin\"?: Property.TransformOrigin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `flat | preserve-3d`\n *\n * **Initial value**: `flat`\n */\n \"-moz-transform-style\"?: Property.TransformStyle | undefined;\n /**\n * The **`user-modify`** property has no effect in Firefox. It was originally planned to determine whether or not the content of an element can be edited by a user.\n *\n * **Syntax**: `read-only | read-write | write-only`\n *\n * **Initial value**: `read-only`\n */\n \"-moz-user-modify\"?: Property.MozUserModify | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | text | none | all`\n *\n * **Initial value**: `auto`\n */\n \"-moz-user-select\"?: Property.UserSelect | undefined;\n /**\n * **Syntax**: `drag | no-drag`\n *\n * **Initial value**: `drag`\n */\n \"-moz-window-dragging\"?: Property.MozWindowDragging | undefined;\n /**\n * **Syntax**: `default | menu | tooltip | sheet | none`\n *\n * **Initial value**: `default`\n */\n \"-moz-window-shadow\"?: Property.MozWindowShadow | undefined;\n /**\n * **Syntax**: `false | true`\n *\n * **Initial value**: `false`\n */\n \"-ms-accelerator\"?: Property.MsAccelerator | undefined;\n /**\n * **Syntax**: `tb | rl | bt | lr`\n *\n * **Initial value**: `tb`\n */\n \"-ms-block-progression\"?: Property.MsBlockProgression | undefined;\n /**\n * **Syntax**: `none | chained`\n *\n * **Initial value**: `none`\n */\n \"-ms-content-zoom-chaining\"?: Property.MsContentZoomChaining | undefined;\n /**\n * **Syntax**: `<percentage>`\n *\n * **Initial value**: `400%`\n */\n \"-ms-content-zoom-limit-max\"?: Property.MsContentZoomLimitMax | undefined;\n /**\n * **Syntax**: `<percentage>`\n *\n * **Initial value**: `100%`\n */\n \"-ms-content-zoom-limit-min\"?: Property.MsContentZoomLimitMin | undefined;\n /**\n * **Syntax**: `snapInterval( <percentage>, <percentage> ) | snapList( <percentage># )`\n *\n * **Initial value**: `snapInterval(0%, 100%)`\n */\n \"-ms-content-zoom-snap-points\"?: Property.MsContentZoomSnapPoints | undefined;\n /**\n * **Syntax**: `none | proximity | mandatory`\n *\n * **Initial value**: `none`\n */\n \"-ms-content-zoom-snap-type\"?: Property.MsContentZoomSnapType | undefined;\n /**\n * **Syntax**: `none | zoom`\n *\n * **Initial value**: zoom for the top level element, none for all other elements\n */\n \"-ms-content-zooming\"?: Property.MsContentZooming | undefined;\n /**\n * **Syntax**: `<string>`\n *\n * **Initial value**: \"\" (the empty string)\n */\n \"-ms-filter\"?: Property.MsFilter | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `row | row-reverse | column | column-reverse`\n *\n * **Initial value**: `row`\n */\n \"-ms-flex-direction\"?: Property.FlexDirection | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `0`\n */\n \"-ms-flex-positive\"?: Property.FlexGrow | undefined;\n /**\n * **Syntax**: `[ none | <custom-ident> ]#`\n *\n * **Initial value**: `none`\n */\n \"-ms-flow-from\"?: Property.MsFlowFrom | undefined;\n /**\n * **Syntax**: `[ none | <custom-ident> ]#`\n *\n * **Initial value**: `none`\n */\n \"-ms-flow-into\"?: Property.MsFlowInto | undefined;\n /**\n * **Syntax**: `none | <track-list> | <auto-track-list>`\n *\n * **Initial value**: `none`\n */\n \"-ms-grid-columns\"?: Property.MsGridColumns<TLength> | undefined;\n /**\n * **Syntax**: `none | <track-list> | <auto-track-list>`\n *\n * **Initial value**: `none`\n */\n \"-ms-grid-rows\"?: Property.MsGridRows<TLength> | undefined;\n /**\n * **Syntax**: `auto | none`\n *\n * **Initial value**: `auto`\n */\n \"-ms-high-contrast-adjust\"?: Property.MsHighContrastAdjust | undefined;\n /**\n * **Syntax**: `auto | <integer>{1,3}`\n *\n * **Initial value**: `auto`\n */\n \"-ms-hyphenate-limit-chars\"?: Property.MsHyphenateLimitChars | undefined;\n /**\n * **Syntax**: `no-limit | <integer>`\n *\n * **Initial value**: `no-limit`\n */\n \"-ms-hyphenate-limit-lines\"?: Property.MsHyphenateLimitLines | undefined;\n /**\n * **Syntax**: `<percentage> | <length>`\n *\n * **Initial value**: `0`\n */\n \"-ms-hyphenate-limit-zone\"?: Property.MsHyphenateLimitZone<TLength> | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `none | manual | auto`\n *\n * **Initial value**: `manual`\n */\n \"-ms-hyphens\"?: Property.Hyphens | undefined;\n /**\n * **Syntax**: `auto | after`\n *\n * **Initial value**: `auto`\n */\n \"-ms-ime-align\"?: Property.MsImeAlign | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `auto | loose | normal | strict | anywhere`\n *\n * **Initial value**: `auto`\n */\n \"-ms-line-break\"?: Property.LineBreak | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `0`\n */\n \"-ms-order\"?: Property.Order | undefined;\n /**\n * **Syntax**: `auto | none | scrollbar | -ms-autohiding-scrollbar`\n *\n * **Initial value**: `auto`\n */\n \"-ms-overflow-style\"?: Property.MsOverflowStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `visible | hidden | clip | scroll | auto`\n *\n * **Initial value**: `visible`\n */\n \"-ms-overflow-x\"?: Property.OverflowX | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `visible | hidden | clip | scroll | auto`\n *\n * **Initial value**: `visible`\n */\n \"-ms-overflow-y\"?: Property.OverflowY | undefined;\n /**\n * **Syntax**: `chained | none`\n *\n * **Initial value**: `chained`\n */\n \"-ms-scroll-chaining\"?: Property.MsScrollChaining | undefined;\n /**\n * **Syntax**: `auto | <length>`\n *\n * **Initial value**: `auto`\n */\n \"-ms-scroll-limit-x-max\"?: Property.MsScrollLimitXMax<TLength> | undefined;\n /**\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n */\n \"-ms-scroll-limit-x-min\"?: Property.MsScrollLimitXMin<TLength> | undefined;\n /**\n * **Syntax**: `auto | <length>`\n *\n * **Initial value**: `auto`\n */\n \"-ms-scroll-limit-y-max\"?: Property.MsScrollLimitYMax<TLength> | undefined;\n /**\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n */\n \"-ms-scroll-limit-y-min\"?: Property.MsScrollLimitYMin<TLength> | undefined;\n /**\n * **Syntax**: `none | railed`\n *\n * **Initial value**: `railed`\n */\n \"-ms-scroll-rails\"?: Property.MsScrollRails | undefined;\n /**\n * **Syntax**: `snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )`\n *\n * **Initial value**: `snapInterval(0px, 100%)`\n */\n \"-ms-scroll-snap-points-x\"?: Property.MsScrollSnapPointsX | undefined;\n /**\n * **Syntax**: `snapInterval( <length-percentage>, <length-percentage> ) | snapList( <length-percentage># )`\n *\n * **Initial value**: `snapInterval(0px, 100%)`\n */\n \"-ms-scroll-snap-points-y\"?: Property.MsScrollSnapPointsY | undefined;\n /**\n * **Syntax**: `none | proximity | mandatory`\n *\n * **Initial value**: `none`\n */\n \"-ms-scroll-snap-type\"?: Property.MsScrollSnapType | undefined;\n /**\n * **Syntax**: `none | vertical-to-horizontal`\n *\n * **Initial value**: `none`\n */\n \"-ms-scroll-translation\"?: Property.MsScrollTranslation | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: depends on user agent\n */\n \"-ms-scrollbar-3dlight-color\"?: Property.MsScrollbar3dlightColor | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: `ButtonText`\n */\n \"-ms-scrollbar-arrow-color\"?: Property.MsScrollbarArrowColor | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: depends on user agent\n */\n \"-ms-scrollbar-base-color\"?: Property.MsScrollbarBaseColor | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: `ThreeDDarkShadow`\n */\n \"-ms-scrollbar-darkshadow-color\"?: Property.MsScrollbarDarkshadowColor | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: `ThreeDFace`\n */\n \"-ms-scrollbar-face-color\"?: Property.MsScrollbarFaceColor | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: `ThreeDHighlight`\n */\n \"-ms-scrollbar-highlight-color\"?: Property.MsScrollbarHighlightColor | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: `ThreeDDarkShadow`\n */\n \"-ms-scrollbar-shadow-color\"?: Property.MsScrollbarShadowColor | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: `Scrollbar`\n */\n \"-ms-scrollbar-track-color\"?: Property.MsScrollbarTrackColor | undefined;\n /**\n * **Syntax**: `none | ideograph-alpha | ideograph-numeric | ideograph-parenthesis | ideograph-space`\n *\n * **Initial value**: `none`\n */\n \"-ms-text-autospace\"?: Property.MsTextAutospace | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | all | [ digits <integer>? ]`\n *\n * **Initial value**: `none`\n */\n \"-ms-text-combine-horizontal\"?: Property.TextCombineUpright | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ clip | ellipsis | <string> ]{1,2}`\n *\n * **Initial value**: `clip`\n */\n \"-ms-text-overflow\"?: Property.TextOverflow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2019.\n *\n * **Syntax**: `auto | none | [ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] | manipulation`\n *\n * **Initial value**: `auto`\n */\n \"-ms-touch-action\"?: Property.TouchAction | undefined;\n /**\n * **Syntax**: `grippers | none`\n *\n * **Initial value**: `grippers`\n */\n \"-ms-touch-select\"?: Property.MsTouchSelect | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <transform-list>`\n *\n * **Initial value**: `none`\n */\n \"-ms-transform\"?: Property.Transform | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?`\n *\n * **Initial value**: `50% 50% 0`\n */\n \"-ms-transform-origin\"?: Property.TransformOrigin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n */\n \"-ms-transition-delay\"?: Property.TransitionDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n */\n \"-ms-transition-duration\"?: Property.TransitionDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <single-transition-property>#`\n *\n * **Initial value**: all\n */\n \"-ms-transition-property\"?: Property.TransitionProperty | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n */\n \"-ms-transition-timing-function\"?: Property.TransitionTimingFunction | undefined;\n /**\n * **Syntax**: `none | element | text`\n *\n * **Initial value**: `text`\n */\n \"-ms-user-select\"?: Property.MsUserSelect | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `normal | break-all | keep-all | break-word | auto-phrase`\n *\n * **Initial value**: `normal`\n */\n \"-ms-word-break\"?: Property.WordBreak | undefined;\n /**\n * **Syntax**: `auto | both | start | end | maximum | clear`\n *\n * **Initial value**: `auto`\n */\n \"-ms-wrap-flow\"?: Property.MsWrapFlow | undefined;\n /**\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n */\n \"-ms-wrap-margin\"?: Property.MsWrapMargin<TLength> | undefined;\n /**\n * **Syntax**: `wrap | none`\n *\n * **Initial value**: `wrap`\n */\n \"-ms-wrap-through\"?: Property.MsWrapThrough | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr`\n *\n * **Initial value**: `horizontal-tb`\n */\n \"-ms-writing-mode\"?: Property.WritingMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `normal | <baseline-position> | <content-distribution> | <overflow-position>? <content-position>`\n *\n * **Initial value**: `normal`\n */\n \"-webkit-align-content\"?: Property.AlignContent | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `normal | stretch | <baseline-position> | [ <overflow-position>? <self-position> ] | anchor-center`\n *\n * **Initial value**: `normal`\n */\n \"-webkit-align-items\"?: Property.AlignItems | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `auto | normal | stretch | <baseline-position> | <overflow-position>? <self-position> | anchor-center`\n *\n * **Initial value**: `auto`\n */\n \"-webkit-align-self\"?: Property.AlignSelf | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n */\n \"-webkit-animation-delay\"?: Property.AnimationDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-direction>#`\n *\n * **Initial value**: `normal`\n */\n \"-webkit-animation-direction\"?: Property.AnimationDirection | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ auto | <time [0s,∞]> ]#`\n *\n * **Initial value**: `0s`\n */\n \"-webkit-animation-duration\"?: Property.AnimationDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-fill-mode>#`\n *\n * **Initial value**: `none`\n */\n \"-webkit-animation-fill-mode\"?: Property.AnimationFillMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-iteration-count>#`\n *\n * **Initial value**: `1`\n */\n \"-webkit-animation-iteration-count\"?: Property.AnimationIterationCount | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ none | <keyframes-name> ]#`\n *\n * **Initial value**: `none`\n */\n \"-webkit-animation-name\"?: Property.AnimationName | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-play-state>#`\n *\n * **Initial value**: `running`\n */\n \"-webkit-animation-play-state\"?: Property.AnimationPlayState | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n */\n \"-webkit-animation-timing-function\"?: Property.AnimationTimingFunction | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | button | button-bevel | caret | checkbox | default-button | inner-spin-button | listbox | listitem | media-controls-background | media-controls-fullscreen-background | media-current-time-display | media-enter-fullscreen-button | media-exit-fullscreen-button | media-fullscreen-button | media-mute-button | media-overlay-play-button | media-play-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-sliderthumb | menulist | menulist-button | menulist-text | menulist-textfield | meter | progress-bar | progress-bar-value | push-button | radio | searchfield | searchfield-cancel-button | searchfield-decoration | searchfield-results-button | searchfield-results-decoration | slider-horizontal | slider-vertical | sliderthumb-horizontal | sliderthumb-vertical | square-button | textarea | textfield | -apple-pay-button`\n *\n * **Initial value**: `none` (but this value is overridden in the user agent CSS)\n */\n \"-webkit-appearance\"?: Property.WebkitAppearance | undefined;\n /**\n * Since September 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `none | <filter-value-list>`\n *\n * **Initial value**: `none`\n */\n \"-webkit-backdrop-filter\"?: Property.BackdropFilter | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `visible | hidden`\n *\n * **Initial value**: `visible`\n */\n \"-webkit-backface-visibility\"?: Property.BackfaceVisibility | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-clip>#`\n *\n * **Initial value**: `border-box`\n */\n \"-webkit-background-clip\"?: Property.BackgroundClip | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<visual-box>#`\n *\n * **Initial value**: `padding-box`\n */\n \"-webkit-background-origin\"?: Property.BackgroundOrigin | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-size>#`\n *\n * **Initial value**: `auto auto`\n */\n \"-webkit-background-size\"?: Property.BackgroundSize<TLength> | undefined;\n /**\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n */\n \"-webkit-border-before-color\"?: Property.WebkitBorderBeforeColor | undefined;\n /**\n * **Syntax**: `<'border-style'>`\n *\n * **Initial value**: `none`\n */\n \"-webkit-border-before-style\"?: Property.WebkitBorderBeforeStyle | undefined;\n /**\n * **Syntax**: `<'border-width'>`\n *\n * **Initial value**: `medium`\n */\n \"-webkit-border-before-width\"?: Property.WebkitBorderBeforeWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n */\n \"-webkit-border-bottom-left-radius\"?: Property.BorderBottomLeftRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n */\n \"-webkit-border-bottom-right-radius\"?: Property.BorderBottomRightRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ <number [0,∞]> | <percentage [0,∞]> ]{1,4} && fill?`\n *\n * **Initial value**: `100%`\n */\n \"-webkit-border-image-slice\"?: Property.BorderImageSlice | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n */\n \"-webkit-border-top-left-radius\"?: Property.BorderTopLeftRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n */\n \"-webkit-border-top-right-radius\"?: Property.BorderTopRightRadius<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `slice | clone`\n *\n * **Initial value**: `slice`\n */\n \"-webkit-box-decoration-break\"?: Property.BoxDecorationBreak | undefined;\n /**\n * The **`-webkit-box-reflect`** CSS property lets you reflect the content of an element in one specific direction.\n *\n * **Syntax**: `[ above | below | right | left ]? <length>? <image>?`\n *\n * **Initial value**: `none`\n */\n \"-webkit-box-reflect\"?: Property.WebkitBoxReflect<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | <shadow>#`\n *\n * **Initial value**: `none`\n */\n \"-webkit-box-shadow\"?: Property.BoxShadow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `content-box | border-box`\n *\n * **Initial value**: `content-box`\n */\n \"-webkit-box-sizing\"?: Property.BoxSizing | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<clip-source> | [ <basic-shape> || <geometry-box> ] | none`\n *\n * **Initial value**: `none`\n */\n \"-webkit-clip-path\"?: Property.ClipPath | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<integer> | auto`\n *\n * **Initial value**: `auto`\n */\n \"-webkit-column-count\"?: Property.ColumnCount | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `auto | balance`\n *\n * **Initial value**: `balance`\n */\n \"-webkit-column-fill\"?: Property.ColumnFill | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n */\n \"-webkit-column-rule-color\"?: Property.ColumnRuleColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'border-style'>`\n *\n * **Initial value**: `none`\n */\n \"-webkit-column-rule-style\"?: Property.ColumnRuleStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'border-width'>`\n *\n * **Initial value**: `medium`\n */\n \"-webkit-column-rule-width\"?: Property.ColumnRuleWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `none | all`\n *\n * **Initial value**: `none`\n */\n \"-webkit-column-span\"?: Property.ColumnSpan | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since November 2016.\n *\n * **Syntax**: `<length> | auto`\n *\n * **Initial value**: `auto`\n */\n \"-webkit-column-width\"?: Property.ColumnWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.\n *\n * **Syntax**: `none | <filter-value-list>`\n *\n * **Initial value**: `none`\n */\n \"-webkit-filter\"?: Property.Filter | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `content | <'width'>`\n *\n * **Initial value**: `auto`\n */\n \"-webkit-flex-basis\"?: Property.FlexBasis<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `row | row-reverse | column | column-reverse`\n *\n * **Initial value**: `row`\n */\n \"-webkit-flex-direction\"?: Property.FlexDirection | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `0`\n */\n \"-webkit-flex-grow\"?: Property.FlexGrow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `1`\n */\n \"-webkit-flex-shrink\"?: Property.FlexShrink | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `nowrap | wrap | wrap-reverse`\n *\n * **Initial value**: `nowrap`\n */\n \"-webkit-flex-wrap\"?: Property.FlexWrap | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `normal | <feature-tag-value>#`\n *\n * **Initial value**: `normal`\n */\n \"-webkit-font-feature-settings\"?: Property.FontFeatureSettings | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `auto | normal | none`\n *\n * **Initial value**: `auto`\n */\n \"-webkit-font-kerning\"?: Property.FontKerning | undefined;\n /**\n * The **`font-smooth`** CSS property controls the application of anti-aliasing when fonts are rendered.\n *\n * **Syntax**: `auto | never | always | <absolute-size> | <length>`\n *\n * **Initial value**: `auto`\n */\n \"-webkit-font-smoothing\"?: Property.FontSmooth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `normal | none | [ <common-lig-values> || <discretionary-lig-values> || <historical-lig-values> || <contextual-alt-values> ]`\n *\n * **Initial value**: `normal`\n */\n \"-webkit-font-variant-ligatures\"?: Property.FontVariantLigatures | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `auto | <string>`\n *\n * **Initial value**: `auto`\n */\n \"-webkit-hyphenate-character\"?: Property.HyphenateCharacter | undefined;\n /**\n * Since September 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `none | manual | auto`\n *\n * **Initial value**: `manual`\n */\n \"-webkit-hyphens\"?: Property.Hyphens | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `normal | [ <number> <integer>? ]`\n *\n * **Initial value**: `normal`\n */\n \"-webkit-initial-letter\"?: Property.InitialLetter | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `normal | <content-distribution> | <overflow-position>? [ <content-position> | left | right ]`\n *\n * **Initial value**: `normal`\n */\n \"-webkit-justify-content\"?: Property.JustifyContent | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `auto | loose | normal | strict | anywhere`\n *\n * **Initial value**: `auto`\n */\n \"-webkit-line-break\"?: Property.LineBreak | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | <integer>`\n *\n * **Initial value**: `none`\n */\n \"-webkit-line-clamp\"?: Property.WebkitLineClamp | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'width'>`\n *\n * **Initial value**: `auto`\n */\n \"-webkit-logical-height\"?: Property.BlockSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'width'>`\n *\n * **Initial value**: `auto`\n */\n \"-webkit-logical-width\"?: Property.InlineSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'margin-top'>`\n *\n * **Initial value**: `0`\n */\n \"-webkit-margin-end\"?: Property.MarginInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'margin-top'>`\n *\n * **Initial value**: `0`\n */\n \"-webkit-margin-start\"?: Property.MarginInlineStart<TLength> | undefined;\n /**\n * **Syntax**: `<attachment>#`\n *\n * **Initial value**: `scroll`\n */\n \"-webkit-mask-attachment\"?: Property.WebkitMaskAttachment | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ <length> | <number> ]{1,4}`\n *\n * **Initial value**: `0`\n */\n \"-webkit-mask-box-image-outset\"?: Property.MaskBorderOutset<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ stretch | repeat | round | space ]{1,2}`\n *\n * **Initial value**: `stretch`\n */\n \"-webkit-mask-box-image-repeat\"?: Property.MaskBorderRepeat | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<number-percentage>{1,4} fill?`\n *\n * **Initial value**: `0`\n */\n \"-webkit-mask-box-image-slice\"?: Property.MaskBorderSlice | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | <image>`\n *\n * **Initial value**: `none`\n */\n \"-webkit-mask-box-image-source\"?: Property.MaskBorderSource | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `[ <length-percentage> | <number> | auto ]{1,4}`\n *\n * **Initial value**: `auto`\n */\n \"-webkit-mask-box-image-width\"?: Property.MaskBorderWidth<TLength> | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `[ <coord-box> | no-clip | border | padding | content | text ]#`\n *\n * **Initial value**: `border`\n */\n \"-webkit-mask-clip\"?: Property.WebkitMaskClip | undefined;\n /**\n * The **`-webkit-mask-composite`** property specifies the manner in which multiple mask images applied to the same element are composited with one another. Mask images are composited in the opposite order that they are declared with the `-webkit-mask-image` property.\n *\n * **Syntax**: `<composite-style>#`\n *\n * **Initial value**: `source-over`\n */\n \"-webkit-mask-composite\"?: Property.WebkitMaskComposite | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<mask-reference>#`\n *\n * **Initial value**: `none`\n */\n \"-webkit-mask-image\"?: Property.WebkitMaskImage | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `[ <coord-box> | border | padding | content ]#`\n *\n * **Initial value**: `padding`\n */\n \"-webkit-mask-origin\"?: Property.WebkitMaskOrigin | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<position>#`\n *\n * **Initial value**: `0% 0%`\n */\n \"-webkit-mask-position\"?: Property.WebkitMaskPosition<TLength> | undefined;\n /**\n * The `-webkit-mask-position-x` CSS property sets the initial horizontal position of a mask image.\n *\n * **Syntax**: `[ <length-percentage> | left | center | right ]#`\n *\n * **Initial value**: `0%`\n */\n \"-webkit-mask-position-x\"?: Property.WebkitMaskPositionX<TLength> | undefined;\n /**\n * The `-webkit-mask-position-y` CSS property sets the initial vertical position of a mask image.\n *\n * **Syntax**: `[ <length-percentage> | top | center | bottom ]#`\n *\n * **Initial value**: `0%`\n */\n \"-webkit-mask-position-y\"?: Property.WebkitMaskPositionY<TLength> | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<repeat-style>#`\n *\n * **Initial value**: `repeat`\n */\n \"-webkit-mask-repeat\"?: Property.WebkitMaskRepeat | undefined;\n /**\n * The `-webkit-mask-repeat-x` property specifies whether and how a mask image is repeated (tiled) horizontally.\n *\n * **Syntax**: `repeat | no-repeat | space | round`\n *\n * **Initial value**: `repeat`\n */\n \"-webkit-mask-repeat-x\"?: Property.WebkitMaskRepeatX | undefined;\n /**\n * The `-webkit-mask-repeat-y` property sets whether and how a mask image is repeated (tiled) vertically.\n *\n * **Syntax**: `repeat | no-repeat | space | round`\n *\n * **Initial value**: `repeat`\n */\n \"-webkit-mask-repeat-y\"?: Property.WebkitMaskRepeatY | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `<bg-size>#`\n *\n * **Initial value**: `auto auto`\n */\n \"-webkit-mask-size\"?: Property.WebkitMaskSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'max-width'>`\n *\n * **Initial value**: `none`\n */\n \"-webkit-max-inline-size\"?: Property.MaxInlineSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `0`\n */\n \"-webkit-order\"?: Property.Order | undefined;\n /**\n * **Syntax**: `auto | touch`\n *\n * **Initial value**: `auto`\n */\n \"-webkit-overflow-scrolling\"?: Property.WebkitOverflowScrolling | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'padding-top'>`\n *\n * **Initial value**: `0`\n */\n \"-webkit-padding-end\"?: Property.PaddingInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<'padding-top'>`\n *\n * **Initial value**: `0`\n */\n \"-webkit-padding-start\"?: Property.PaddingInlineStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <length>`\n *\n * **Initial value**: `none`\n */\n \"-webkit-perspective\"?: Property.Perspective<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<position>`\n *\n * **Initial value**: `50% 50%`\n */\n \"-webkit-perspective-origin\"?: Property.PerspectiveOrigin<TLength> | undefined;\n /**\n * Since May 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `economy | exact`\n *\n * **Initial value**: `economy`\n */\n \"-webkit-print-color-adjust\"?: Property.PrintColorAdjust | undefined;\n /**\n * Since December 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `[ alternate || [ over | under ] ] | inter-character`\n *\n * **Initial value**: `alternate`\n */\n \"-webkit-ruby-position\"?: Property.RubyPosition | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2022.\n *\n * **Syntax**: `none | [ x | y | block | inline | both ] [ mandatory | proximity ]?`\n *\n * **Initial value**: `none`\n */\n \"-webkit-scroll-snap-type\"?: Property.ScrollSnapType | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<length-percentage>`\n *\n * **Initial value**: `0`\n */\n \"-webkit-shape-margin\"?: Property.ShapeMargin<TLength> | undefined;\n /**\n * **`-webkit-tap-highlight-color`** is a non-standard CSS property that sets the color of the highlight that appears over a link while it's being tapped. The highlighting indicates to the user that their tap is being successfully recognized, and indicates which element they're tapping on.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `black`\n */\n \"-webkit-tap-highlight-color\"?: Property.WebkitTapHighlightColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | all | [ digits <integer>? ]`\n *\n * **Initial value**: `none`\n */\n \"-webkit-text-combine\"?: Property.TextCombineUpright | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n */\n \"-webkit-text-decoration-color\"?: Property.TextDecorationColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error`\n *\n * **Initial value**: `none`\n */\n \"-webkit-text-decoration-line\"?: Property.TextDecorationLine | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | [ objects || [ spaces | [ leading-spaces || trailing-spaces ] ] || edges || box-decoration ]`\n *\n * **Initial value**: `objects`\n */\n \"-webkit-text-decoration-skip\"?: Property.TextDecorationSkip | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `solid | double | dotted | dashed | wavy`\n *\n * **Initial value**: `solid`\n */\n \"-webkit-text-decoration-style\"?: Property.TextDecorationStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n */\n \"-webkit-text-emphasis-color\"?: Property.TextEmphasisColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `auto | [ over | under ] && [ right | left ]?`\n *\n * **Initial value**: `auto`\n */\n \"-webkit-text-emphasis-position\"?: Property.TextEmphasisPosition | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `none | [ [ filled | open ] || [ dot | circle | double-circle | triangle | sesame ] ] | <string>`\n *\n * **Initial value**: `none`\n */\n \"-webkit-text-emphasis-style\"?: Property.TextEmphasisStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n */\n \"-webkit-text-fill-color\"?: Property.WebkitTextFillColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2020.\n *\n * **Syntax**: `mixed | upright | sideways`\n *\n * **Initial value**: `mixed`\n */\n \"-webkit-text-orientation\"?: Property.TextOrientation | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | auto | <percentage>`\n *\n * **Initial value**: `auto` for smartphone browsers supporting inflation, `none` in other cases (and then not modifiable).\n */\n \"-webkit-text-size-adjust\"?: Property.TextSizeAdjust | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n */\n \"-webkit-text-stroke-color\"?: Property.WebkitTextStrokeColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<length>`\n *\n * **Initial value**: `0`\n */\n \"-webkit-text-stroke-width\"?: Property.WebkitTextStrokeWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `auto | from-font | [ under || [ left | right ] ]`\n *\n * **Initial value**: `auto`\n */\n \"-webkit-text-underline-position\"?: Property.TextUnderlinePosition | undefined;\n /**\n * The `-webkit-touch-callout` CSS property controls the display of the default callout shown when you touch and hold a touch target.\n *\n * **Syntax**: `default | none`\n *\n * **Initial value**: `default`\n */\n \"-webkit-touch-callout\"?: Property.WebkitTouchCallout | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <transform-list>`\n *\n * **Initial value**: `none`\n */\n \"-webkit-transform\"?: Property.Transform | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?`\n *\n * **Initial value**: `50% 50% 0`\n */\n \"-webkit-transform-origin\"?: Property.TransformOrigin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `flat | preserve-3d`\n *\n * **Initial value**: `flat`\n */\n \"-webkit-transform-style\"?: Property.TransformStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n */\n \"-webkit-transition-delay\"?: Property.TransitionDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n */\n \"-webkit-transition-duration\"?: Property.TransitionDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <single-transition-property>#`\n *\n * **Initial value**: all\n */\n \"-webkit-transition-property\"?: Property.TransitionProperty | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n */\n \"-webkit-transition-timing-function\"?: Property.TransitionTimingFunction | undefined;\n /**\n * **Syntax**: `read-only | read-write | read-write-plaintext-only`\n *\n * **Initial value**: `read-only`\n */\n \"-webkit-user-modify\"?: Property.WebkitUserModify | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | text | none | all`\n *\n * **Initial value**: `auto`\n */\n \"-webkit-user-select\"?: Property.WebkitUserSelect | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `horizontal-tb | vertical-rl | vertical-lr | sideways-rl | sideways-lr`\n *\n * **Initial value**: `horizontal-tb`\n */\n \"-webkit-writing-mode\"?: Property.WritingMode | undefined;\n}\n\nexport interface VendorShorthandPropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}> {\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation>#`\n */\n \"-moz-animation\"?: Property.Animation<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>`\n */\n \"-moz-border-image\"?: Property.BorderImage | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>`\n */\n \"-moz-column-rule\"?: Property.ColumnRule<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'column-width'> || <'column-count'>`\n */\n \"-moz-columns\"?: Property.Columns<TLength> | undefined;\n /** **Syntax**: `<outline-radius>{1,4} [ / <outline-radius>{1,4} ]?` */\n \"-moz-outline-radius\"?: Property.MozOutlineRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-transition>#`\n */\n \"-moz-transition\"?: Property.Transition<TTime> | undefined;\n /** **Syntax**: `<'-ms-content-zoom-limit-min'> <'-ms-content-zoom-limit-max'>` */\n \"-ms-content-zoom-limit\"?: Property.MsContentZoomLimit | undefined;\n /** **Syntax**: `<'-ms-content-zoom-snap-type'> || <'-ms-content-zoom-snap-points'>` */\n \"-ms-content-zoom-snap\"?: Property.MsContentZoomSnap | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]`\n */\n \"-ms-flex\"?: Property.Flex<TLength> | undefined;\n /** **Syntax**: `<'-ms-scroll-limit-x-min'> <'-ms-scroll-limit-y-min'> <'-ms-scroll-limit-x-max'> <'-ms-scroll-limit-y-max'>` */\n \"-ms-scroll-limit\"?: Property.MsScrollLimit | undefined;\n /** **Syntax**: `<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-x'>` */\n \"-ms-scroll-snap-x\"?: Property.MsScrollSnapX | undefined;\n /** **Syntax**: `<'-ms-scroll-snap-type'> <'-ms-scroll-snap-points-y'>` */\n \"-ms-scroll-snap-y\"?: Property.MsScrollSnapY | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-transition>#`\n */\n \"-ms-transition\"?: Property.Transition<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation>#`\n */\n \"-webkit-animation\"?: Property.Animation<TTime> | undefined;\n /**\n * The **`-webkit-border-before`** CSS property is a shorthand property for setting the individual logical block start border property values in a single place in the style sheet.\n *\n * **Syntax**: `<'border-width'> || <'border-style'> || <color>`\n */\n \"-webkit-border-before\"?: Property.WebkitBorderBefore<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>`\n */\n \"-webkit-border-image\"?: Property.BorderImage | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,4} [ / <length-percentage [0,∞]>{1,4} ]?`\n */\n \"-webkit-border-radius\"?: Property.BorderRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'column-rule-width'> || <'column-rule-style'> || <'column-rule-color'>`\n */\n \"-webkit-column-rule\"?: Property.ColumnRule<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<'column-width'> || <'column-count'>`\n */\n \"-webkit-columns\"?: Property.Columns<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]`\n */\n \"-webkit-flex\"?: Property.Flex<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<'flex-direction'> || <'flex-wrap'>`\n */\n \"-webkit-flex-flow\"?: Property.FlexFlow | undefined;\n /**\n * Since December 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.\n *\n * **Syntax**: `[ <mask-reference> || <position> [ / <bg-size> ]? || <repeat-style> || [ <visual-box> | border | padding | content | text ] || [ <visual-box> | border | padding | content ] ]#`\n */\n \"-webkit-mask\"?: Property.WebkitMask<TLength> | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `<'mask-border-source'> || <'mask-border-slice'> [ / <'mask-border-width'>? [ / <'mask-border-outset'> ]? ]? || <'mask-border-repeat'> || <'mask-border-mode'>`\n */\n \"-webkit-mask-box-image\"?: Property.MaskBorder | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2022.\n *\n * **Syntax**: `<'text-emphasis-style'> || <'text-emphasis-color'>`\n */\n \"-webkit-text-emphasis\"?: Property.TextEmphasis | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2017.\n *\n * **Syntax**: `<length> || <color>`\n */\n \"-webkit-text-stroke\"?: Property.WebkitTextStroke<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-transition>#`\n */\n \"-webkit-transition\"?: Property.Transition<TTime> | undefined;\n}\n\nexport interface VendorPropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}>\n extends VendorLonghandPropertiesHyphen<TLength, TTime>,\n VendorShorthandPropertiesHyphen<TLength, TTime> {}\n\nexport interface ObsoletePropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}> {\n /**\n * The **`box-align`** CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box.\n *\n * **Syntax**: `start | center | end | baseline | stretch`\n *\n * **Initial value**: `stretch`\n *\n * @deprecated\n */\n \"box-align\"?: Property.BoxAlign | undefined;\n /**\n * The **`box-direction`** CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).\n *\n * **Syntax**: `normal | reverse | inherit`\n *\n * **Initial value**: `normal`\n *\n * @deprecated\n */\n \"box-direction\"?: Property.BoxDirection | undefined;\n /**\n * The **`-moz-box-flex`** and **`-webkit-box-flex`** CSS properties specify how a `-moz-box` or `-webkit-box` grows to fill the box that contains it, in the direction of the containing box's layout.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n \"box-flex\"?: Property.BoxFlex | undefined;\n /**\n * The **`box-flex-group`** CSS property assigns the flexbox's child elements to a flex group.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n \"box-flex-group\"?: Property.BoxFlexGroup | undefined;\n /**\n * The **`box-lines`** CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes).\n *\n * **Syntax**: `single | multiple`\n *\n * **Initial value**: `single`\n *\n * @deprecated\n */\n \"box-lines\"?: Property.BoxLines | undefined;\n /**\n * The **`box-ordinal-group`** CSS property assigns the flexbox's child elements to an ordinal group.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n \"box-ordinal-group\"?: Property.BoxOrdinalGroup | undefined;\n /**\n * The **`box-orient`** CSS property sets whether an element lays out its contents horizontally or vertically.\n *\n * **Syntax**: `horizontal | vertical | inline-axis | block-axis | inherit`\n *\n * **Initial value**: `inline-axis`\n *\n * @deprecated\n */\n \"box-orient\"?: Property.BoxOrient | undefined;\n /**\n * The **`-moz-box-pack`** and **`-webkit-box-pack`** CSS properties specify how a `-moz-box` or `-webkit-box` packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box.\n *\n * **Syntax**: `start | center | end | justify`\n *\n * **Initial value**: `start`\n *\n * @deprecated\n */\n \"box-pack\"?: Property.BoxPack | undefined;\n /**\n * The **`clip`** CSS property defines a visible portion of an element. The `clip` property applies only to absolutely positioned elements — that is, elements with `position:absolute` or `position:fixed`.\n *\n * **Syntax**: `<shape> | auto`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n clip?: Property.Clip | undefined;\n /**\n * The **`font-stretch`** CSS property selects a normal, condensed, or expanded face from a font.\n *\n * **Syntax**: `<font-stretch-absolute>`\n *\n * **Initial value**: `normal`\n *\n * @deprecated\n */\n \"font-stretch\"?: Property.FontStretch | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage>`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n \"grid-column-gap\"?: Property.GridColumnGap<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<'grid-row-gap'> <'grid-column-gap'>?`\n *\n * @deprecated\n */\n \"grid-gap\"?: Property.GridGap<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since October 2017.\n *\n * **Syntax**: `<length-percentage>`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n \"grid-row-gap\"?: Property.GridRowGap<TLength> | undefined;\n /**\n * **Syntax**: `auto | normal | active | inactive | disabled`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n \"ime-mode\"?: Property.ImeMode | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | <position-area>`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n \"inset-area\"?: Property.PositionArea | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>{1,2}`\n *\n * @deprecated\n */\n \"offset-block\"?: Property.InsetBlock<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n \"offset-block-end\"?: Property.InsetBlockEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n \"offset-block-start\"?: Property.InsetBlockStart<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>{1,2}`\n *\n * @deprecated\n */\n \"offset-inline\"?: Property.InsetInline<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n \"offset-inline-end\"?: Property.InsetInlineEnd<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.\n *\n * **Syntax**: `<'top'>`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n \"offset-inline-start\"?: Property.InsetInlineStart<TLength> | undefined;\n /**\n * The **`page-break-after`** CSS property adjusts page breaks _after_ the current element.\n *\n * **Syntax**: `auto | always | avoid | left | right | recto | verso`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n \"page-break-after\"?: Property.PageBreakAfter | undefined;\n /**\n * The **`page-break-before`** CSS property adjusts page breaks _before_ the current element.\n *\n * **Syntax**: `auto | always | avoid | left | right | recto | verso`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n \"page-break-before\"?: Property.PageBreakBefore | undefined;\n /**\n * The **`page-break-inside`** CSS property adjusts page breaks _inside_ the current element.\n *\n * **Syntax**: `auto | avoid`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n \"page-break-inside\"?: Property.PageBreakInside | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `none | [ [<dashed-ident> || <try-tactic>] | <'position-area'> ]#`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n \"position-try-options\"?: Property.PositionTryFallbacks | undefined;\n /**\n * **Syntax**: `none | <position>#`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n \"scroll-snap-coordinate\"?: Property.ScrollSnapCoordinate<TLength> | undefined;\n /**\n * **Syntax**: `<position>`\n *\n * **Initial value**: `0px 0px`\n *\n * @deprecated\n */\n \"scroll-snap-destination\"?: Property.ScrollSnapDestination<TLength> | undefined;\n /**\n * **Syntax**: `none | repeat( <length-percentage> )`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n \"scroll-snap-points-x\"?: Property.ScrollSnapPointsX | undefined;\n /**\n * **Syntax**: `none | repeat( <length-percentage> )`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n \"scroll-snap-points-y\"?: Property.ScrollSnapPointsY | undefined;\n /**\n * **Syntax**: `none | mandatory | proximity`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n \"scroll-snap-type-x\"?: Property.ScrollSnapTypeX | undefined;\n /**\n * **Syntax**: `none | mandatory | proximity`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n \"scroll-snap-type-y\"?: Property.ScrollSnapTypeY | undefined;\n /**\n * The **`box-align`** CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box.\n *\n * **Syntax**: `start | center | end | baseline | stretch`\n *\n * **Initial value**: `stretch`\n *\n * @deprecated\n */\n \"-khtml-box-align\"?: Property.BoxAlign | undefined;\n /**\n * The **`box-direction`** CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).\n *\n * **Syntax**: `normal | reverse | inherit`\n *\n * **Initial value**: `normal`\n *\n * @deprecated\n */\n \"-khtml-box-direction\"?: Property.BoxDirection | undefined;\n /**\n * The **`-moz-box-flex`** and **`-webkit-box-flex`** CSS properties specify how a `-moz-box` or `-webkit-box` grows to fill the box that contains it, in the direction of the containing box's layout.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n \"-khtml-box-flex\"?: Property.BoxFlex | undefined;\n /**\n * The **`box-flex-group`** CSS property assigns the flexbox's child elements to a flex group.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n \"-khtml-box-flex-group\"?: Property.BoxFlexGroup | undefined;\n /**\n * The **`box-lines`** CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes).\n *\n * **Syntax**: `single | multiple`\n *\n * **Initial value**: `single`\n *\n * @deprecated\n */\n \"-khtml-box-lines\"?: Property.BoxLines | undefined;\n /**\n * The **`box-ordinal-group`** CSS property assigns the flexbox's child elements to an ordinal group.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n \"-khtml-box-ordinal-group\"?: Property.BoxOrdinalGroup | undefined;\n /**\n * The **`box-orient`** CSS property sets whether an element lays out its contents horizontally or vertically.\n *\n * **Syntax**: `horizontal | vertical | inline-axis | block-axis | inherit`\n *\n * **Initial value**: `inline-axis`\n *\n * @deprecated\n */\n \"-khtml-box-orient\"?: Property.BoxOrient | undefined;\n /**\n * The **`-moz-box-pack`** and **`-webkit-box-pack`** CSS properties specify how a `-moz-box` or `-webkit-box` packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box.\n *\n * **Syntax**: `start | center | end | justify`\n *\n * **Initial value**: `start`\n *\n * @deprecated\n */\n \"-khtml-box-pack\"?: Property.BoxPack | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.\n *\n * **Syntax**: `auto | loose | normal | strict | anywhere`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n \"-khtml-line-break\"?: Property.LineBreak | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<opacity-value>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n \"-khtml-opacity\"?: Property.Opacity | undefined;\n /**\n * This feature is not Baseline because it does not work in some of the most widely-used browsers.\n *\n * **Syntax**: `auto | text | none | all`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n \"-khtml-user-select\"?: Property.UserSelect | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-clip>#`\n *\n * **Initial value**: `border-box`\n *\n * @deprecated\n */\n \"-moz-background-clip\"?: Property.BackgroundClip | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<visual-box>#`\n *\n * **Initial value**: `padding-box`\n *\n * @deprecated\n */\n \"-moz-background-origin\"?: Property.BackgroundOrigin | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-size>#`\n *\n * **Initial value**: `auto auto`\n *\n * @deprecated\n */\n \"-moz-background-size\"?: Property.BackgroundSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,4} [ / <length-percentage [0,∞]>{1,4} ]?`\n *\n * @deprecated\n */\n \"-moz-border-radius\"?: Property.BorderRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n \"-moz-border-radius-bottomleft\"?: Property.BorderBottomLeftRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n \"-moz-border-radius-bottomright\"?: Property.BorderBottomRightRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n \"-moz-border-radius-topleft\"?: Property.BorderTopLeftRadius<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<length-percentage [0,∞]>{1,2}`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n \"-moz-border-radius-topright\"?: Property.BorderTopRightRadius<TLength> | undefined;\n /**\n * The **`box-align`** CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box.\n *\n * **Syntax**: `start | center | end | baseline | stretch`\n *\n * **Initial value**: `stretch`\n *\n * @deprecated\n */\n \"-moz-box-align\"?: Property.BoxAlign | undefined;\n /**\n * The **`box-direction`** CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).\n *\n * **Syntax**: `normal | reverse | inherit`\n *\n * **Initial value**: `normal`\n *\n * @deprecated\n */\n \"-moz-box-direction\"?: Property.BoxDirection | undefined;\n /**\n * The **`-moz-box-flex`** and **`-webkit-box-flex`** CSS properties specify how a `-moz-box` or `-webkit-box` grows to fill the box that contains it, in the direction of the containing box's layout.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n \"-moz-box-flex\"?: Property.BoxFlex | undefined;\n /**\n * The **`box-ordinal-group`** CSS property assigns the flexbox's child elements to an ordinal group.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n \"-moz-box-ordinal-group\"?: Property.BoxOrdinalGroup | undefined;\n /**\n * The **`box-orient`** CSS property sets whether an element lays out its contents horizontally or vertically.\n *\n * **Syntax**: `horizontal | vertical | inline-axis | block-axis | inherit`\n *\n * **Initial value**: `inline-axis`\n *\n * @deprecated\n */\n \"-moz-box-orient\"?: Property.BoxOrient | undefined;\n /**\n * The **`-moz-box-pack`** and **`-webkit-box-pack`** CSS properties specify how a `-moz-box` or `-webkit-box` packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box.\n *\n * **Syntax**: `start | center | end | justify`\n *\n * **Initial value**: `start`\n *\n * @deprecated\n */\n \"-moz-box-pack\"?: Property.BoxPack | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `none | <shadow>#`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n \"-moz-box-shadow\"?: Property.BoxShadow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `<integer> | auto`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n \"-moz-column-count\"?: Property.ColumnCount | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2017.\n *\n * **Syntax**: `auto | balance`\n *\n * **Initial value**: `balance`\n *\n * @deprecated\n */\n \"-moz-column-fill\"?: Property.ColumnFill | undefined;\n /**\n * The non-standard **`-moz-float-edge`** CSS property specifies whether the height and width properties of the element include the margin, border, or padding thickness.\n *\n * **Syntax**: `border-box | content-box | margin-box | padding-box`\n *\n * **Initial value**: `content-box`\n *\n * @deprecated\n */\n \"-moz-float-edge\"?: Property.MozFloatEdge | undefined;\n /**\n * The **`-moz-force-broken-image-icon`** extended CSS property can be used to force the broken image icon to be shown even when a broken image has an `alt` attribute.\n *\n * **Syntax**: `0 | 1`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n \"-moz-force-broken-image-icon\"?: Property.MozForceBrokenImageIcon | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<opacity-value>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n \"-moz-opacity\"?: Property.Opacity | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.\n *\n * **Syntax**: `<'outline-width'> || <'outline-style'> || <'outline-color'>`\n *\n * @deprecated\n */\n \"-moz-outline\"?: Property.Outline<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <color>`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n \"-moz-outline-color\"?: Property.OutlineColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `auto | <outline-line-style>`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n \"-moz-outline-style\"?: Property.OutlineStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<line-width>`\n *\n * **Initial value**: `medium`\n *\n * @deprecated\n */\n \"-moz-outline-width\"?: Property.OutlineWidth<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.\n *\n * **Syntax**: `auto | start | end | left | right | center | justify`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n \"-moz-text-align-last\"?: Property.TextAlignLast | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<color>`\n *\n * **Initial value**: `currentcolor`\n *\n * @deprecated\n */\n \"-moz-text-decoration-color\"?: Property.TextDecorationColor | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `none | [ underline || overline || line-through || blink ] | spelling-error | grammar-error`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n \"-moz-text-decoration-line\"?: Property.TextDecorationLine | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `solid | double | dotted | dashed | wavy`\n *\n * **Initial value**: `solid`\n *\n * @deprecated\n */\n \"-moz-text-decoration-style\"?: Property.TextDecorationStyle | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n *\n * @deprecated\n */\n \"-moz-transition-delay\"?: Property.TransitionDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n *\n * @deprecated\n */\n \"-moz-transition-duration\"?: Property.TransitionDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <single-transition-property>#`\n *\n * **Initial value**: all\n *\n * @deprecated\n */\n \"-moz-transition-property\"?: Property.TransitionProperty | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n *\n * @deprecated\n */\n \"-moz-transition-timing-function\"?: Property.TransitionTimingFunction | undefined;\n /**\n * The **`-moz-user-focus`** CSS property is used to indicate whether an element can have the focus.\n *\n * **Syntax**: `ignore | normal | select-after | select-before | select-menu | select-same | select-all | none`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n \"-moz-user-focus\"?: Property.MozUserFocus | undefined;\n /**\n * In Mozilla applications, **`-moz-user-input`** determines if an element will accept user input.\n *\n * **Syntax**: `auto | none | enabled | disabled`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n \"-moz-user-input\"?: Property.MozUserInput | undefined;\n /**\n * **Syntax**: `auto | normal | active | inactive | disabled`\n *\n * **Initial value**: `auto`\n *\n * @deprecated\n */\n \"-ms-ime-mode\"?: Property.ImeMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation>#`\n *\n * @deprecated\n */\n \"-o-animation\"?: Property.Animation<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n *\n * @deprecated\n */\n \"-o-animation-delay\"?: Property.AnimationDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-direction>#`\n *\n * **Initial value**: `normal`\n *\n * @deprecated\n */\n \"-o-animation-direction\"?: Property.AnimationDirection | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ auto | <time [0s,∞]> ]#`\n *\n * **Initial value**: `0s`\n *\n * @deprecated\n */\n \"-o-animation-duration\"?: Property.AnimationDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-fill-mode>#`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n \"-o-animation-fill-mode\"?: Property.AnimationFillMode | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-iteration-count>#`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n \"-o-animation-iteration-count\"?: Property.AnimationIterationCount | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ none | <keyframes-name> ]#`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n \"-o-animation-name\"?: Property.AnimationName | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-animation-play-state>#`\n *\n * **Initial value**: `running`\n *\n * @deprecated\n */\n \"-o-animation-play-state\"?: Property.AnimationPlayState | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n *\n * @deprecated\n */\n \"-o-animation-timing-function\"?: Property.AnimationTimingFunction | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<bg-size>#`\n *\n * **Initial value**: `auto auto`\n *\n * @deprecated\n */\n \"-o-background-size\"?: Property.BackgroundSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `<'border-image-source'> || <'border-image-slice'> [ / <'border-image-width'> | / <'border-image-width'>? / <'border-image-outset'> ]? || <'border-image-repeat'>`\n *\n * @deprecated\n */\n \"-o-border-image\"?: Property.BorderImage | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `fill | contain | cover | none | scale-down`\n *\n * **Initial value**: `fill`\n *\n * @deprecated\n */\n \"-o-object-fit\"?: Property.ObjectFit | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.\n *\n * **Syntax**: `<position>`\n *\n * **Initial value**: `50% 50%`\n *\n * @deprecated\n */\n \"-o-object-position\"?: Property.ObjectPosition<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since August 2021.\n *\n * **Syntax**: `<integer> | <length>`\n *\n * **Initial value**: `8`\n *\n * @deprecated\n */\n \"-o-tab-size\"?: Property.TabSize<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.\n *\n * **Syntax**: `[ clip | ellipsis | <string> ]{1,2}`\n *\n * **Initial value**: `clip`\n *\n * @deprecated\n */\n \"-o-text-overflow\"?: Property.TextOverflow | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <transform-list>`\n *\n * **Initial value**: `none`\n *\n * @deprecated\n */\n \"-o-transform\"?: Property.Transform | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `[ <length-percentage> | left | center | right | top | bottom ] | [ [ <length-percentage> | left | center | right ] && [ <length-percentage> | top | center | bottom ] ] <length>?`\n *\n * **Initial value**: `50% 50% 0`\n *\n * @deprecated\n */\n \"-o-transform-origin\"?: Property.TransformOrigin<TLength> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<single-transition>#`\n *\n * @deprecated\n */\n \"-o-transition\"?: Property.Transition<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n *\n * @deprecated\n */\n \"-o-transition-delay\"?: Property.TransitionDelay<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<time>#`\n *\n * **Initial value**: `0s`\n *\n * @deprecated\n */\n \"-o-transition-duration\"?: Property.TransitionDuration<TTime> | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `none | <single-transition-property>#`\n *\n * **Initial value**: all\n *\n * @deprecated\n */\n \"-o-transition-property\"?: Property.TransitionProperty | undefined;\n /**\n * This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.\n *\n * **Syntax**: `<easing-function>#`\n *\n * **Initial value**: `ease`\n *\n * @deprecated\n */\n \"-o-transition-timing-function\"?: Property.TransitionTimingFunction | undefined;\n /**\n * The **`box-align`** CSS property specifies how an element aligns its contents across its layout in a perpendicular direction. The effect of the property is only visible if there is extra space in the box.\n *\n * **Syntax**: `start | center | end | baseline | stretch`\n *\n * **Initial value**: `stretch`\n *\n * @deprecated\n */\n \"-webkit-box-align\"?: Property.BoxAlign | undefined;\n /**\n * The **`box-direction`** CSS property specifies whether a box lays out its contents normally (from the top or left edge), or in reverse (from the bottom or right edge).\n *\n * **Syntax**: `normal | reverse | inherit`\n *\n * **Initial value**: `normal`\n *\n * @deprecated\n */\n \"-webkit-box-direction\"?: Property.BoxDirection | undefined;\n /**\n * The **`-moz-box-flex`** and **`-webkit-box-flex`** CSS properties specify how a `-moz-box` or `-webkit-box` grows to fill the box that contains it, in the direction of the containing box's layout.\n *\n * **Syntax**: `<number>`\n *\n * **Initial value**: `0`\n *\n * @deprecated\n */\n \"-webkit-box-flex\"?: Property.BoxFlex | undefined;\n /**\n * The **`box-flex-group`** CSS property assigns the flexbox's child elements to a flex group.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n \"-webkit-box-flex-group\"?: Property.BoxFlexGroup | undefined;\n /**\n * The **`box-lines`** CSS property determines whether the box may have a single or multiple lines (rows for horizontally oriented boxes, columns for vertically oriented boxes).\n *\n * **Syntax**: `single | multiple`\n *\n * **Initial value**: `single`\n *\n * @deprecated\n */\n \"-webkit-box-lines\"?: Property.BoxLines | undefined;\n /**\n * The **`box-ordinal-group`** CSS property assigns the flexbox's child elements to an ordinal group.\n *\n * **Syntax**: `<integer>`\n *\n * **Initial value**: `1`\n *\n * @deprecated\n */\n \"-webkit-box-ordinal-group\"?: Property.BoxOrdinalGroup | undefined;\n /**\n * The **`box-orient`** CSS property sets whether an element lays out its contents horizontally or vertically.\n *\n * **Syntax**: `horizontal | vertical | inline-axis | block-axis | inherit`\n *\n * **Initial value**: `inline-axis`\n *\n * @deprecated\n */\n \"-webkit-box-orient\"?: Property.BoxOrient | undefined;\n /**\n * The **`-moz-box-pack`** and **`-webkit-box-pack`** CSS properties specify how a `-moz-box` or `-webkit-box` packs its contents in the direction of its layout. The effect of this is only visible if there is extra space in the box.\n *\n * **Syntax**: `start | center | end | justify`\n *\n * **Initial value**: `start`\n *\n * @deprecated\n */\n \"-webkit-box-pack\"?: Property.BoxPack | undefined;\n}\n\nexport interface SvgPropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}> {\n \"alignment-baseline\"?: Property.AlignmentBaseline | undefined;\n \"baseline-shift\"?: Property.BaselineShift<TLength> | undefined;\n clip?: Property.Clip | undefined;\n \"clip-path\"?: Property.ClipPath | undefined;\n \"clip-rule\"?: Property.ClipRule | undefined;\n color?: Property.Color | undefined;\n \"color-interpolation\"?: Property.ColorInterpolation | undefined;\n \"color-rendering\"?: Property.ColorRendering | undefined;\n cursor?: Property.Cursor | undefined;\n direction?: Property.Direction | undefined;\n display?: Property.Display | undefined;\n \"dominant-baseline\"?: Property.DominantBaseline | undefined;\n fill?: Property.Fill | undefined;\n \"fill-opacity\"?: Property.FillOpacity | undefined;\n \"fill-rule\"?: Property.FillRule | undefined;\n filter?: Property.Filter | undefined;\n \"flood-color\"?: Property.FloodColor | undefined;\n \"flood-opacity\"?: Property.FloodOpacity | undefined;\n font?: Property.Font | undefined;\n \"font-family\"?: Property.FontFamily | undefined;\n \"font-size\"?: Property.FontSize<TLength> | undefined;\n \"font-size-adjust\"?: Property.FontSizeAdjust | undefined;\n \"font-stretch\"?: Property.FontStretch | undefined;\n \"font-style\"?: Property.FontStyle | undefined;\n \"font-variant\"?: Property.FontVariant | undefined;\n \"font-weight\"?: Property.FontWeight | undefined;\n \"glyph-orientation-vertical\"?: Property.GlyphOrientationVertical | undefined;\n \"image-rendering\"?: Property.ImageRendering | undefined;\n \"letter-spacing\"?: Property.LetterSpacing<TLength> | undefined;\n \"lighting-color\"?: Property.LightingColor | undefined;\n \"line-height\"?: Property.LineHeight<TLength> | undefined;\n marker?: Property.Marker | undefined;\n \"marker-end\"?: Property.MarkerEnd | undefined;\n \"marker-mid\"?: Property.MarkerMid | undefined;\n \"marker-start\"?: Property.MarkerStart | undefined;\n mask?: Property.Mask<TLength> | undefined;\n opacity?: Property.Opacity | undefined;\n overflow?: Property.Overflow | undefined;\n \"paint-order\"?: Property.PaintOrder | undefined;\n \"pointer-events\"?: Property.PointerEvents | undefined;\n \"shape-rendering\"?: Property.ShapeRendering | undefined;\n \"stop-color\"?: Property.StopColor | undefined;\n \"stop-opacity\"?: Property.StopOpacity | undefined;\n stroke?: Property.Stroke | undefined;\n \"stroke-dasharray\"?: Property.StrokeDasharray<TLength> | undefined;\n \"stroke-dashoffset\"?: Property.StrokeDashoffset<TLength> | undefined;\n \"stroke-linecap\"?: Property.StrokeLinecap | undefined;\n \"stroke-linejoin\"?: Property.StrokeLinejoin | undefined;\n \"stroke-miterlimit\"?: Property.StrokeMiterlimit | undefined;\n \"stroke-opacity\"?: Property.StrokeOpacity | undefined;\n \"stroke-width\"?: Property.StrokeWidth<TLength> | undefined;\n \"text-anchor\"?: Property.TextAnchor | undefined;\n \"text-decoration\"?: Property.TextDecoration<TLength> | undefined;\n \"text-rendering\"?: Property.TextRendering | undefined;\n \"unicode-bidi\"?: Property.UnicodeBidi | undefined;\n \"vector-effect\"?: Property.VectorEffect | undefined;\n visibility?: Property.Visibility | undefined;\n \"white-space\"?: Property.WhiteSpace | undefined;\n \"word-spacing\"?: Property.WordSpacing<TLength> | undefined;\n \"writing-mode\"?: Property.WritingMode | undefined;\n}\n\nexport interface PropertiesHyphen<TLength = (string & {}) | 0, TTime = string & {}>\n extends StandardPropertiesHyphen<TLength, TTime>,\n VendorPropertiesHyphen<TLength, TTime>,\n ObsoletePropertiesHyphen<TLength, TTime>,\n SvgPropertiesHyphen<TLength, TTime> {}\n\nexport type StandardLonghandPropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<StandardLonghandProperties<TLength, TTime>>;\n\nexport type StandardShorthandPropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<StandardShorthandProperties<TLength, TTime>>;\n\nexport interface StandardPropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}>\n extends StandardLonghandPropertiesFallback<TLength, TTime>,\n StandardShorthandPropertiesFallback<TLength, TTime> {}\n\nexport type VendorLonghandPropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<VendorLonghandProperties<TLength, TTime>>;\n\nexport type VendorShorthandPropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<VendorShorthandProperties<TLength, TTime>>;\n\nexport interface VendorPropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}>\n extends VendorLonghandPropertiesFallback<TLength, TTime>,\n VendorShorthandPropertiesFallback<TLength, TTime> {}\n\nexport type ObsoletePropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<ObsoleteProperties<TLength, TTime>>;\n\nexport type SvgPropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<SvgProperties<TLength, TTime>>;\n\nexport interface PropertiesFallback<TLength = (string & {}) | 0, TTime = string & {}>\n extends StandardPropertiesFallback<TLength, TTime>,\n VendorPropertiesFallback<TLength, TTime>,\n ObsoletePropertiesFallback<TLength, TTime>,\n SvgPropertiesFallback<TLength, TTime> {}\n\nexport type StandardLonghandPropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<StandardLonghandPropertiesHyphen<TLength, TTime>>;\n\nexport type StandardShorthandPropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<StandardShorthandPropertiesHyphen<TLength, TTime>>;\n\nexport interface StandardPropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}>\n extends StandardLonghandPropertiesHyphenFallback<TLength, TTime>,\n StandardShorthandPropertiesHyphenFallback<TLength, TTime> {}\n\nexport type VendorLonghandPropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<VendorLonghandPropertiesHyphen<TLength, TTime>>;\n\nexport type VendorShorthandPropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<VendorShorthandPropertiesHyphen<TLength, TTime>>;\n\nexport interface VendorPropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}>\n extends VendorLonghandPropertiesHyphenFallback<TLength, TTime>,\n VendorShorthandPropertiesHyphenFallback<TLength, TTime> {}\n\nexport type ObsoletePropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<ObsoletePropertiesHyphen<TLength, TTime>>;\n\nexport type SvgPropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<SvgPropertiesHyphen<TLength, TTime>>;\n\nexport interface PropertiesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}>\n extends StandardPropertiesHyphenFallback<TLength, TTime>,\n VendorPropertiesHyphenFallback<TLength, TTime>,\n ObsoletePropertiesHyphenFallback<TLength, TTime>,\n SvgPropertiesHyphenFallback<TLength, TTime> {}\n\nexport type AtRules =\n | \"@charset\"\n | \"@container\"\n | \"@counter-style\"\n | \"@document\"\n | \"@font-face\"\n | \"@font-feature-values\"\n | \"@font-palette-values\"\n | \"@import\"\n | \"@keyframes\"\n | \"@layer\"\n | \"@media\"\n | \"@namespace\"\n | \"@page\"\n | \"@position-try\"\n | \"@property\"\n | \"@scope\"\n | \"@starting-style\"\n | \"@supports\"\n | \"@view-transition\";\n\nexport type AdvancedPseudos =\n | \":-moz-any()\"\n | \":-moz-dir\"\n | \":-webkit-any()\"\n | \"::cue\"\n | \"::cue-region\"\n | \"::highlight\"\n | \"::part\"\n | \"::picker\"\n | \"::slotted\"\n | \"::view-transition-group\"\n | \"::view-transition-image-pair\"\n | \"::view-transition-new\"\n | \"::view-transition-old\"\n | \":active-view-transition-type\"\n | \":dir\"\n | \":has\"\n | \":host\"\n | \":host-context\"\n | \":is\"\n | \":lang\"\n | \":matches()\"\n | \":not\"\n | \":nth-child\"\n | \":nth-last-child\"\n | \":nth-last-of-type\"\n | \":nth-of-type\"\n | \":state\"\n | \":where\";\n\nexport type SimplePseudos =\n | \":-khtml-any-link\"\n | \":-moz-any-link\"\n | \":-moz-focusring\"\n | \":-moz-full-screen\"\n | \":-moz-placeholder\"\n | \":-moz-read-only\"\n | \":-moz-read-write\"\n | \":-moz-ui-invalid\"\n | \":-moz-ui-valid\"\n | \":-ms-fullscreen\"\n | \":-ms-input-placeholder\"\n | \":-webkit-any-link\"\n | \":-webkit-autofill\"\n | \":-webkit-full-screen\"\n | \"::-moz-placeholder\"\n | \"::-moz-progress-bar\"\n | \"::-moz-range-progress\"\n | \"::-moz-range-thumb\"\n | \"::-moz-range-track\"\n | \"::-moz-selection\"\n | \"::-ms-backdrop\"\n | \"::-ms-browse\"\n | \"::-ms-check\"\n | \"::-ms-clear\"\n | \"::-ms-expand\"\n | \"::-ms-fill\"\n | \"::-ms-fill-lower\"\n | \"::-ms-fill-upper\"\n | \"::-ms-input-placeholder\"\n | \"::-ms-reveal\"\n | \"::-ms-thumb\"\n | \"::-ms-ticks-after\"\n | \"::-ms-ticks-before\"\n | \"::-ms-tooltip\"\n | \"::-ms-track\"\n | \"::-ms-value\"\n | \"::-webkit-backdrop\"\n | \"::-webkit-file-upload-button\"\n | \"::-webkit-input-placeholder\"\n | \"::-webkit-progress-bar\"\n | \"::-webkit-progress-inner-value\"\n | \"::-webkit-progress-value\"\n | \"::-webkit-slider-runnable-track\"\n | \"::-webkit-slider-thumb\"\n | \"::after\"\n | \"::backdrop\"\n | \"::before\"\n | \"::checkmark\"\n | \"::cue\"\n | \"::cue-region\"\n | \"::details-content\"\n | \"::file-selector-button\"\n | \"::first-letter\"\n | \"::first-line\"\n | \"::grammar-error\"\n | \"::marker\"\n | \"::picker-icon\"\n | \"::placeholder\"\n | \"::scroll-marker\"\n | \"::scroll-marker-group\"\n | \"::selection\"\n | \"::spelling-error\"\n | \"::target-text\"\n | \"::view-transition\"\n | \":active\"\n | \":active-view-transition\"\n | \":after\"\n | \":any-link\"\n | \":autofill\"\n | \":before\"\n | \":blank\"\n | \":buffering\"\n | \":checked\"\n | \":current\"\n | \":default\"\n | \":defined\"\n | \":disabled\"\n | \":empty\"\n | \":enabled\"\n | \":first\"\n | \":first-child\"\n | \":first-letter\"\n | \":first-line\"\n | \":first-of-type\"\n | \":focus\"\n | \":focus-visible\"\n | \":focus-within\"\n | \":fullscreen\"\n | \":future\"\n | \":has-slotted\"\n | \":host\"\n | \":hover\"\n | \":in-range\"\n | \":indeterminate\"\n | \":invalid\"\n | \":last-child\"\n | \":last-of-type\"\n | \":left\"\n | \":link\"\n | \":local-link\"\n | \":modal\"\n | \":muted\"\n | \":only-child\"\n | \":only-of-type\"\n | \":open\"\n | \":optional\"\n | \":out-of-range\"\n | \":past\"\n | \":paused\"\n | \":picture-in-picture\"\n | \":placeholder-shown\"\n | \":playing\"\n | \":popover-open\"\n | \":read-only\"\n | \":read-write\"\n | \":required\"\n | \":right\"\n | \":root\"\n | \":scope\"\n | \":seeking\"\n | \":stalled\"\n | \":target\"\n | \":target-current\"\n | \":target-within\"\n | \":user-invalid\"\n | \":user-valid\"\n | \":valid\"\n | \":visited\"\n | \":volume-locked\"\n | \":xr-overlay\";\n\nexport type Pseudos = AdvancedPseudos | SimplePseudos;\n\nexport type HtmlAttributes =\n | \"[abbr]\"\n | \"[accept-charset]\"\n | \"[accept]\"\n | \"[accesskey]\"\n | \"[action]\"\n | \"[align]\"\n | \"[alink]\"\n | \"[allow]\"\n | \"[allowfullscreen]\"\n | \"[allowpaymentrequest]\"\n | \"[alpha]\"\n | \"[alt]\"\n | \"[anchor]\"\n | \"[archive]\"\n | \"[as]\"\n | \"[async]\"\n | \"[attributionsourceid]\"\n | \"[attributionsrc]\"\n | \"[autobuffer]\"\n | \"[autocapitalize]\"\n | \"[autocomplete]\"\n | \"[autocorrect]\"\n | \"[autofocus]\"\n | \"[autoplay]\"\n | \"[axis]\"\n | \"[background]\"\n | \"[behavior]\"\n | \"[bgcolor]\"\n | \"[blocking]\"\n | \"[border]\"\n | \"[bottommargin]\"\n | \"[browsingtopics]\"\n | \"[capture]\"\n | \"[cellpadding]\"\n | \"[cellspacing]\"\n | \"[char]\"\n | \"[charoff]\"\n | \"[charset]\"\n | \"[checked]\"\n | \"[cite]\"\n | \"[class]\"\n | \"[classid]\"\n | \"[clear]\"\n | \"[closedby]\"\n | \"[codebase]\"\n | \"[codetype]\"\n | \"[color]\"\n | \"[colorspace]\"\n | \"[cols]\"\n | \"[colspan]\"\n | \"[command]\"\n | \"[commandfor]\"\n | \"[compact]\"\n | \"[content]\"\n | \"[contenteditable]\"\n | \"[controls]\"\n | \"[controlslist]\"\n | \"[coords]\"\n | \"[credentialless]\"\n | \"[cross-origin-top-navigation-by-user-activation]\"\n | \"[crossorigin]\"\n | \"[csp]\"\n | \"[data]\"\n | \"[datetime]\"\n | \"[declare]\"\n | \"[decoding]\"\n | \"[default]\"\n | \"[defer]\"\n | \"[dir]\"\n | \"[direction]\"\n | \"[dirname]\"\n | \"[disabled]\"\n | \"[disablepictureinpicture]\"\n | \"[disableremoteplayback]\"\n | \"[download]\"\n | \"[draggable]\"\n | \"[enctype]\"\n | \"[enterkeyhint]\"\n | \"[exportparts]\"\n | \"[face]\"\n | \"[fetchpriority]\"\n | \"[for]\"\n | \"[form]\"\n | \"[formaction]\"\n | \"[formenctype]\"\n | \"[formmethod]\"\n | \"[formnovalidate]\"\n | \"[formtarget]\"\n | \"[frame]\"\n | \"[frameborder]\"\n | \"[headers]\"\n | \"[height]\"\n | \"[hidden]\"\n | \"[high]\"\n | \"[href]\"\n | \"[hreflang]\"\n | \"[hreftranslate]\"\n | \"[hspace]\"\n | \"[http-equiv]\"\n | \"[id]\"\n | \"[imagesizes]\"\n | \"[imagesrcset]\"\n | \"[inert]\"\n | \"[inputmode]\"\n | \"[integrity]\"\n | \"[is]\"\n | \"[ismap]\"\n | \"[kind]\"\n | \"[label]\"\n | \"[lang]\"\n | \"[leftmargin]\"\n | \"[link]\"\n | \"[list]\"\n | \"[loading]\"\n | \"[longdesc]\"\n | \"[loop]\"\n | \"[low]\"\n | \"[marginheight]\"\n | \"[marginwidth]\"\n | \"[max]\"\n | \"[maxlength]\"\n | \"[media]\"\n | \"[method]\"\n | \"[min]\"\n | \"[minlength]\"\n | \"[moz-opaque]\"\n | \"[mozallowfullscreen]\"\n | \"[msallowfullscreen]\"\n | \"[multiple]\"\n | \"[muted]\"\n | \"[name]\"\n | \"[nohref]\"\n | \"[nomodule]\"\n | \"[nonce]\"\n | \"[noresize]\"\n | \"[noshade]\"\n | \"[novalidate]\"\n | \"[open]\"\n | \"[optimum]\"\n | \"[part]\"\n | \"[pattern]\"\n | \"[ping]\"\n | \"[placeholder]\"\n | \"[playsinline]\"\n | \"[popover]\"\n | \"[popovertarget]\"\n | \"[popovertargetaction]\"\n | \"[poster]\"\n | \"[preload]\"\n | \"[privateToken]\"\n | \"[readonly]\"\n | \"[referrerpolicy]\"\n | \"[rel]\"\n | \"[required]\"\n | \"[rev]\"\n | \"[reversed]\"\n | \"[rightmargin]\"\n | \"[rows]\"\n | \"[rowspan]\"\n | \"[rules]\"\n | \"[sandbox]\"\n | \"[scheme]\"\n | \"[scope]\"\n | \"[scrollamount]\"\n | \"[scrolldelay]\"\n | \"[scrolling]\"\n | \"[selected]\"\n | \"[shadowroot]\"\n | \"[shadowrootclonable]\"\n | \"[shadowrootdelegatesfocus]\"\n | \"[shadowrootmode]\"\n | \"[shadowrootserializable]\"\n | \"[shape]\"\n | \"[size]\"\n | \"[sizes]\"\n | \"[slot]\"\n | \"[span]\"\n | \"[spellcheck]\"\n | \"[src]\"\n | \"[srcdoc]\"\n | \"[srclang]\"\n | \"[srcset]\"\n | \"[standby]\"\n | \"[start]\"\n | \"[step]\"\n | \"[style]\"\n | \"[summary]\"\n | \"[tabindex]\"\n | \"[target]\"\n | \"[text]\"\n | \"[title]\"\n | \"[topmargin]\"\n | \"[translate]\"\n | \"[truespeed]\"\n | \"[type]\"\n | \"[usemap]\"\n | \"[valign]\"\n | \"[value]\"\n | \"[valuetype]\"\n | \"[version]\"\n | \"[virtualkeyboardpolicy]\"\n | \"[vlink]\"\n | \"[vspace]\"\n | \"[webkit-playsinline]\"\n | \"[webkitallowfullscreen]\"\n | \"[webkitdirectory]\"\n | \"[width]\"\n | \"[wrap]\"\n | \"[writingsuggestions]\"\n | \"[xmlns]\";\n\nexport type SvgAttributes =\n | \"[-khtml-opacity]\"\n | \"[-moz-opacity]\"\n | \"[-moz-transform]\"\n | \"[-ms-text-overflow]\"\n | \"[-ms-transform]\"\n | \"[-ms-writing-mode]\"\n | \"[-o-text-overflow]\"\n | \"[-o-transform]\"\n | \"[-webkit-mask]\"\n | \"[-webkit-transform]\"\n | \"[-webkit-writing-mode]\"\n | \"[alignment-baseline]\"\n | \"[async]\"\n | \"[attributeName]\"\n | \"[attributeType]\"\n | \"[autofocus]\"\n | \"[azimuth]\"\n | \"[baseFrequency]\"\n | \"[baseProfile]\"\n | \"[baseline-shift]\"\n | \"[bias]\"\n | \"[by]\"\n | \"[calcMode]\"\n | \"[class]\"\n | \"[clip-path]\"\n | \"[clip-rule]\"\n | \"[clipPathUnits]\"\n | \"[clip]\"\n | \"[color-interpolation-filters]\"\n | \"[color-interpolation]\"\n | \"[color]\"\n | \"[crossorigin]\"\n | \"[cursor]\"\n | \"[cx]\"\n | \"[cy]\"\n | \"[d]\"\n | \"[decoding]\"\n | \"[defer]\"\n | \"[diffuseConstant]\"\n | \"[direction]\"\n | \"[display]\"\n | \"[divisor]\"\n | \"[dominant-baseline]\"\n | \"[download]\"\n | \"[dur]\"\n | \"[dx]\"\n | \"[dy]\"\n | \"[edgeMode]\"\n | \"[elevation]\"\n | \"[fetchpriority]\"\n | \"[fill-opacity]\"\n | \"[fill-rule]\"\n | \"[fill]\"\n | \"[filterUnits]\"\n | \"[filter]\"\n | \"[flood-color]\"\n | \"[flood-opacity]\"\n | \"[font-family]\"\n | \"[font-size-adjust]\"\n | \"[font-size]\"\n | \"[font-stretch]\"\n | \"[font-style]\"\n | \"[font-variant]\"\n | \"[font-weight]\"\n | \"[font-width]\"\n | \"[fr]\"\n | \"[from]\"\n | \"[fx]\"\n | \"[fy]\"\n | \"[glyph-orientation-horizontal]\"\n | \"[glyph-orientation-vertical]\"\n | \"[gradientTransform]\"\n | \"[gradientUnits]\"\n | \"[height]\"\n | \"[href]\"\n | \"[hreflang]\"\n | \"[id]\"\n | \"[image-rendering]\"\n | \"[in2]\"\n | \"[in]\"\n | \"[k1]\"\n | \"[k2]\"\n | \"[k3]\"\n | \"[k4]\"\n | \"[kernelMatrix]\"\n | \"[kernelUnitLength]\"\n | \"[keyPoints]\"\n | \"[lang]\"\n | \"[lengthAdjust]\"\n | \"[letter-spacing]\"\n | \"[lighting-color]\"\n | \"[limitingConeAngle]\"\n | \"[marker-end]\"\n | \"[marker-mid]\"\n | \"[marker-start]\"\n | \"[markerHeight]\"\n | \"[markerUnits]\"\n | \"[markerWidth]\"\n | \"[maskContentUnits]\"\n | \"[maskUnits]\"\n | \"[mask]\"\n | \"[media]\"\n | \"[mode]\"\n | \"[numOctaves]\"\n | \"[offset]\"\n | \"[opacity]\"\n | \"[operator]\"\n | \"[order]\"\n | \"[orient]\"\n | \"[origin]\"\n | \"[overflow]\"\n | \"[paint-order]\"\n | \"[path]\"\n | \"[patternContentUnits]\"\n | \"[patternTransform]\"\n | \"[patternUnits]\"\n | \"[ping]\"\n | \"[pointer-events]\"\n | \"[pointsAtX]\"\n | \"[pointsAtY]\"\n | \"[pointsAtZ]\"\n | \"[points]\"\n | \"[preserveAlpha]\"\n | \"[preserveAspectRatio]\"\n | \"[primitiveUnits]\"\n | \"[r]\"\n | \"[radius]\"\n | \"[refX]\"\n | \"[refY]\"\n | \"[referrerpolicy]\"\n | \"[rel]\"\n | \"[repeatCount]\"\n | \"[requiredExtensions]\"\n | \"[rotate]\"\n | \"[rx]\"\n | \"[ry]\"\n | \"[scale]\"\n | \"[seed]\"\n | \"[shape-rendering]\"\n | \"[side]\"\n | \"[spacing]\"\n | \"[specularConstant]\"\n | \"[specularExponent]\"\n | \"[spreadMethod]\"\n | \"[startOffset]\"\n | \"[stdDeviation]\"\n | \"[stitchTiles]\"\n | \"[stop-color]\"\n | \"[stop-opacity]\"\n | \"[stroke-dasharray]\"\n | \"[stroke-dashoffset]\"\n | \"[stroke-linecap]\"\n | \"[stroke-linejoin]\"\n | \"[stroke-miterlimit]\"\n | \"[stroke-opacity]\"\n | \"[stroke-width]\"\n | \"[stroke]\"\n | \"[style]\"\n | \"[surfaceScale]\"\n | \"[systemLanguage]\"\n | \"[tabindex]\"\n | \"[targetX]\"\n | \"[targetY]\"\n | \"[target]\"\n | \"[text-anchor]\"\n | \"[text-decoration]\"\n | \"[text-overflow]\"\n | \"[text-rendering]\"\n | \"[textLength]\"\n | \"[title]\"\n | \"[to]\"\n | \"[transform-origin]\"\n | \"[transform]\"\n | \"[type]\"\n | \"[unicode-bidi]\"\n | \"[values]\"\n | \"[vector-effect]\"\n | \"[version]\"\n | \"[viewBox]\"\n | \"[visibility]\"\n | \"[white-space]\"\n | \"[width]\"\n | \"[word-spacing]\"\n | \"[writing-mode]\"\n | \"[x1]\"\n | \"[x2]\"\n | \"[xChannelSelector]\"\n | \"[x]\"\n | \"[y1]\"\n | \"[y2]\"\n | \"[yChannelSelector]\"\n | \"[y]\"\n | \"[z]\"\n | \"[zoomAndPan]\";\n\nexport type Globals = \"-moz-initial\" | \"inherit\" | \"initial\" | \"revert\" | \"revert-layer\" | \"unset\";\n\nexport namespace Property {\n export type AccentColor = Globals | DataType.Color | \"auto\";\n\n export type AlignContent = Globals | DataType.ContentDistribution | DataType.ContentPosition | \"baseline\" | \"normal\" | (string & {});\n\n export type AlignItems = Globals | DataType.SelfPosition | \"anchor-center\" | \"baseline\" | \"normal\" | \"stretch\" | (string & {});\n\n export type AlignSelf = Globals | DataType.SelfPosition | \"anchor-center\" | \"auto\" | \"baseline\" | \"normal\" | \"stretch\" | (string & {});\n\n export type AlignTracks = Globals | DataType.ContentDistribution | DataType.ContentPosition | \"baseline\" | \"normal\" | (string & {});\n\n export type AlignmentBaseline = Globals | \"alphabetic\" | \"baseline\" | \"central\" | \"ideographic\" | \"mathematical\" | \"middle\" | \"text-after-edge\" | \"text-before-edge\";\n\n export type All = Globals;\n\n export type AnchorName = Globals | \"none\" | (string & {});\n\n export type AnchorScope = Globals | \"all\" | \"none\" | (string & {});\n\n export type Animation<TTime = string & {}> = Globals | DataType.SingleAnimation<TTime> | (string & {});\n\n export type AnimationComposition = Globals | DataType.SingleAnimationComposition | (string & {});\n\n export type AnimationDelay<TTime = string & {}> = Globals | TTime | (string & {});\n\n export type AnimationDirection = Globals | DataType.SingleAnimationDirection | (string & {});\n\n export type AnimationDuration<TTime = string & {}> = Globals | TTime | \"auto\" | (string & {});\n\n export type AnimationFillMode = Globals | DataType.SingleAnimationFillMode | (string & {});\n\n export type AnimationIterationCount = Globals | \"infinite\" | (string & {}) | (number & {});\n\n export type AnimationName = Globals | \"none\" | (string & {});\n\n export type AnimationPlayState = Globals | \"paused\" | \"running\" | (string & {});\n\n export type AnimationRange<TLength = (string & {}) | 0> = Globals | DataType.TimelineRangeName | TLength | \"normal\" | (string & {});\n\n export type AnimationRangeEnd<TLength = (string & {}) | 0> = Globals | DataType.TimelineRangeName | TLength | \"normal\" | (string & {});\n\n export type AnimationRangeStart<TLength = (string & {}) | 0> = Globals | DataType.TimelineRangeName | TLength | \"normal\" | (string & {});\n\n export type AnimationTimeline = Globals | DataType.SingleAnimationTimeline | (string & {});\n\n export type AnimationTimingFunction = Globals | DataType.EasingFunction | (string & {});\n\n export type Appearance = Globals | DataType.CompatAuto | \"auto\" | \"menulist-button\" | \"none\" | \"textfield\";\n\n export type AspectRatio = Globals | \"auto\" | (string & {}) | (number & {});\n\n export type BackdropFilter = Globals | \"none\" | (string & {});\n\n export type BackfaceVisibility = Globals | \"hidden\" | \"visible\";\n\n export type Background<TLength = (string & {}) | 0> = Globals | DataType.BgLayer<TLength> | DataType.FinalBgLayer<TLength> | (string & {});\n\n export type BackgroundAttachment = Globals | DataType.Attachment | (string & {});\n\n export type BackgroundBlendMode = Globals | DataType.BlendMode | (string & {});\n\n export type BackgroundClip = Globals | DataType.BgClip | (string & {});\n\n export type BackgroundColor = Globals | DataType.Color;\n\n export type BackgroundImage = Globals | \"none\" | (string & {});\n\n export type BackgroundOrigin = Globals | DataType.VisualBox | (string & {});\n\n export type BackgroundPosition<TLength = (string & {}) | 0> = Globals | DataType.BgPosition<TLength> | (string & {});\n\n export type BackgroundPositionX<TLength = (string & {}) | 0> = Globals | TLength | \"center\" | \"left\" | \"right\" | \"x-end\" | \"x-start\" | (string & {});\n\n export type BackgroundPositionY<TLength = (string & {}) | 0> = Globals | TLength | \"bottom\" | \"center\" | \"top\" | \"y-end\" | \"y-start\" | (string & {});\n\n export type BackgroundRepeat = Globals | DataType.RepeatStyle | (string & {});\n\n export type BackgroundSize<TLength = (string & {}) | 0> = Globals | DataType.BgSize<TLength> | (string & {});\n\n export type BaselineShift<TLength = (string & {}) | 0> = Globals | TLength | \"baseline\" | \"sub\" | \"super\" | (string & {});\n\n export type BlockSize<TLength = (string & {}) | 0> =\n | Globals\n | TLength\n | \"-moz-fit-content\"\n | \"-moz-max-content\"\n | \"-moz-min-content\"\n | \"auto\"\n | \"fit-content\"\n | \"max-content\"\n | \"min-content\"\n | (string & {});\n\n export type Border<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {});\n\n export type BorderBlock<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {});\n\n export type BorderBlockColor = Globals | DataType.Color | (string & {});\n\n export type BorderBlockEnd<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {});\n\n export type BorderBlockEndColor = Globals | DataType.Color;\n\n export type BorderBlockEndStyle = Globals | DataType.LineStyle;\n\n export type BorderBlockEndWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>;\n\n export type BorderBlockStart<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {});\n\n export type BorderBlockStartColor = Globals | DataType.Color;\n\n export type BorderBlockStartStyle = Globals | DataType.LineStyle;\n\n export type BorderBlockStartWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>;\n\n export type BorderBlockStyle = Globals | DataType.LineStyle | (string & {});\n\n export type BorderBlockWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | (string & {});\n\n export type BorderBottom<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {});\n\n export type BorderBottomColor = Globals | DataType.Color;\n\n export type BorderBottomLeftRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type BorderBottomRightRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type BorderBottomStyle = Globals | DataType.LineStyle;\n\n export type BorderBottomWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>;\n\n export type BorderCollapse = Globals | \"collapse\" | \"separate\";\n\n export type BorderColor = Globals | DataType.Color | (string & {});\n\n export type BorderEndEndRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type BorderEndStartRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type BorderImage = Globals | \"none\" | \"repeat\" | \"round\" | \"space\" | \"stretch\" | (string & {}) | (number & {});\n\n export type BorderImageOutset<TLength = (string & {}) | 0> = Globals | TLength | (string & {}) | (number & {});\n\n export type BorderImageRepeat = Globals | \"repeat\" | \"round\" | \"space\" | \"stretch\" | (string & {});\n\n export type BorderImageSlice = Globals | (string & {}) | (number & {});\n\n export type BorderImageSource = Globals | \"none\" | (string & {});\n\n export type BorderImageWidth<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {}) | (number & {});\n\n export type BorderInline<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {});\n\n export type BorderInlineColor = Globals | DataType.Color | (string & {});\n\n export type BorderInlineEnd<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {});\n\n export type BorderInlineEndColor = Globals | DataType.Color;\n\n export type BorderInlineEndStyle = Globals | DataType.LineStyle;\n\n export type BorderInlineEndWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>;\n\n export type BorderInlineStart<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {});\n\n export type BorderInlineStartColor = Globals | DataType.Color;\n\n export type BorderInlineStartStyle = Globals | DataType.LineStyle;\n\n export type BorderInlineStartWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>;\n\n export type BorderInlineStyle = Globals | DataType.LineStyle | (string & {});\n\n export type BorderInlineWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | (string & {});\n\n export type BorderLeft<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {});\n\n export type BorderLeftColor = Globals | DataType.Color;\n\n export type BorderLeftStyle = Globals | DataType.LineStyle;\n\n export type BorderLeftWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>;\n\n export type BorderRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type BorderRight<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {});\n\n export type BorderRightColor = Globals | DataType.Color;\n\n export type BorderRightStyle = Globals | DataType.LineStyle;\n\n export type BorderRightWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>;\n\n export type BorderSpacing<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type BorderStartEndRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type BorderStartStartRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type BorderStyle = Globals | DataType.LineStyle | (string & {});\n\n export type BorderTop<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {});\n\n export type BorderTopColor = Globals | DataType.Color;\n\n export type BorderTopLeftRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type BorderTopRightRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type BorderTopStyle = Globals | DataType.LineStyle;\n\n export type BorderTopWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>;\n\n export type BorderWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | (string & {});\n\n export type Bottom<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type BoxAlign = Globals | \"baseline\" | \"center\" | \"end\" | \"start\" | \"stretch\";\n\n export type BoxDecorationBreak = Globals | \"clone\" | \"slice\";\n\n export type BoxDirection = Globals | \"inherit\" | \"normal\" | \"reverse\";\n\n export type BoxFlex = Globals | (number & {}) | (string & {});\n\n export type BoxFlexGroup = Globals | (number & {}) | (string & {});\n\n export type BoxLines = Globals | \"multiple\" | \"single\";\n\n export type BoxOrdinalGroup = Globals | (number & {}) | (string & {});\n\n export type BoxOrient = Globals | \"block-axis\" | \"horizontal\" | \"inherit\" | \"inline-axis\" | \"vertical\";\n\n export type BoxPack = Globals | \"center\" | \"end\" | \"justify\" | \"start\";\n\n export type BoxShadow = Globals | \"none\" | (string & {});\n\n export type BoxSizing = Globals | \"border-box\" | \"content-box\";\n\n export type BreakAfter =\n | Globals\n | \"all\"\n | \"always\"\n | \"auto\"\n | \"avoid\"\n | \"avoid-column\"\n | \"avoid-page\"\n | \"avoid-region\"\n | \"column\"\n | \"left\"\n | \"page\"\n | \"recto\"\n | \"region\"\n | \"right\"\n | \"verso\";\n\n export type BreakBefore =\n | Globals\n | \"all\"\n | \"always\"\n | \"auto\"\n | \"avoid\"\n | \"avoid-column\"\n | \"avoid-page\"\n | \"avoid-region\"\n | \"column\"\n | \"left\"\n | \"page\"\n | \"recto\"\n | \"region\"\n | \"right\"\n | \"verso\";\n\n export type BreakInside = Globals | \"auto\" | \"avoid\" | \"avoid-column\" | \"avoid-page\" | \"avoid-region\";\n\n export type CaptionSide = Globals | \"bottom\" | \"top\";\n\n export type Caret = Globals | DataType.Color | \"auto\" | \"bar\" | \"block\" | \"underscore\" | (string & {});\n\n export type CaretColor = Globals | DataType.Color | \"auto\";\n\n export type CaretShape = Globals | \"auto\" | \"bar\" | \"block\" | \"underscore\";\n\n export type Clear = Globals | \"both\" | \"inline-end\" | \"inline-start\" | \"left\" | \"none\" | \"right\";\n\n export type Clip = Globals | \"auto\" | (string & {});\n\n export type ClipPath = Globals | DataType.GeometryBox | \"none\" | (string & {});\n\n export type ClipRule = Globals | \"evenodd\" | \"nonzero\";\n\n export type Color = Globals | DataType.Color;\n\n export type PrintColorAdjust = Globals | \"economy\" | \"exact\";\n\n export type ColorInterpolationFilters = Globals | \"auto\" | \"linearRGB\" | \"sRGB\";\n\n export type ColorScheme = Globals | \"dark\" | \"light\" | \"normal\" | (string & {});\n\n export type ColumnCount = Globals | \"auto\" | (number & {}) | (string & {});\n\n export type ColumnFill = Globals | \"auto\" | \"balance\";\n\n export type ColumnGap<TLength = (string & {}) | 0> = Globals | TLength | \"normal\" | (string & {});\n\n export type ColumnRule<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {});\n\n export type ColumnRuleColor = Globals | DataType.Color;\n\n export type ColumnRuleStyle = Globals | DataType.LineStyle | (string & {});\n\n export type ColumnRuleWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | (string & {});\n\n export type ColumnSpan = Globals | \"all\" | \"none\";\n\n export type ColumnWidth<TLength = (string & {}) | 0> = Globals | TLength | \"auto\";\n\n export type Columns<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {}) | (number & {});\n\n export type Contain = Globals | \"content\" | \"inline-size\" | \"layout\" | \"none\" | \"paint\" | \"size\" | \"strict\" | \"style\" | (string & {});\n\n export type ContainIntrinsicBlockSize<TLength = (string & {}) | 0> = Globals | TLength | \"none\" | (string & {});\n\n export type ContainIntrinsicHeight<TLength = (string & {}) | 0> = Globals | TLength | \"none\" | (string & {});\n\n export type ContainIntrinsicInlineSize<TLength = (string & {}) | 0> = Globals | TLength | \"none\" | (string & {});\n\n export type ContainIntrinsicSize<TLength = (string & {}) | 0> = Globals | TLength | \"none\" | (string & {});\n\n export type ContainIntrinsicWidth<TLength = (string & {}) | 0> = Globals | TLength | \"none\" | (string & {});\n\n export type Container = Globals | \"none\" | (string & {});\n\n export type ContainerName = Globals | \"none\" | (string & {});\n\n export type ContainerType = Globals | \"inline-size\" | \"normal\" | \"scroll-state\" | \"size\" | (string & {});\n\n export type Content = Globals | DataType.Quote | \"none\" | \"normal\" | (string & {});\n\n export type ContentVisibility = Globals | \"auto\" | \"hidden\" | \"visible\";\n\n export type CounterIncrement = Globals | \"none\" | (string & {});\n\n export type CounterReset = Globals | \"none\" | (string & {});\n\n export type CounterSet = Globals | \"none\" | (string & {});\n\n export type Cursor = Globals | DataType.CursorPredefined | (string & {});\n\n export type Cx<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type Cy<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type D = Globals | \"none\" | (string & {});\n\n export type Direction = Globals | \"ltr\" | \"rtl\";\n\n export type Display =\n | Globals\n | DataType.DisplayOutside\n | DataType.DisplayInside\n | DataType.DisplayInternal\n | DataType.DisplayLegacy\n | \"contents\"\n | \"list-item\"\n | \"none\"\n | (string & {});\n\n export type DominantBaseline = Globals | \"alphabetic\" | \"auto\" | \"central\" | \"hanging\" | \"ideographic\" | \"mathematical\" | \"middle\" | \"text-bottom\" | \"text-top\";\n\n export type EmptyCells = Globals | \"hide\" | \"show\";\n\n export type FieldSizing = Globals | \"content\" | \"fixed\";\n\n export type Fill = Globals | DataType.Paint;\n\n export type FillOpacity = Globals | (string & {}) | (number & {});\n\n export type FillRule = Globals | \"evenodd\" | \"nonzero\";\n\n export type Filter = Globals | \"none\" | (string & {});\n\n export type Flex<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | \"content\" | \"fit-content\" | \"max-content\" | \"min-content\" | \"none\" | (string & {}) | (number & {});\n\n export type FlexBasis<TLength = (string & {}) | 0> =\n | Globals\n | TLength\n | \"-moz-fit-content\"\n | \"-moz-max-content\"\n | \"-moz-min-content\"\n | \"-webkit-auto\"\n | \"auto\"\n | \"content\"\n | \"fit-content\"\n | \"max-content\"\n | \"min-content\"\n | (string & {});\n\n export type FlexDirection = Globals | \"column\" | \"column-reverse\" | \"row\" | \"row-reverse\";\n\n export type FlexFlow = Globals | \"column\" | \"column-reverse\" | \"nowrap\" | \"row\" | \"row-reverse\" | \"wrap\" | \"wrap-reverse\" | (string & {});\n\n export type FlexGrow = Globals | (number & {}) | (string & {});\n\n export type FlexShrink = Globals | (number & {}) | (string & {});\n\n export type FlexWrap = Globals | \"nowrap\" | \"wrap\" | \"wrap-reverse\";\n\n export type Float = Globals | \"inline-end\" | \"inline-start\" | \"left\" | \"none\" | \"right\";\n\n export type FloodColor = Globals | DataType.Color;\n\n export type FloodOpacity = Globals | (string & {}) | (number & {});\n\n export type Font = Globals | DataType.SystemFamilyName | (string & {});\n\n export type FontFamily = Globals | DataType.GenericFamily | (string & {});\n\n export type FontFeatureSettings = Globals | \"normal\" | (string & {});\n\n export type FontKerning = Globals | \"auto\" | \"none\" | \"normal\";\n\n export type FontLanguageOverride = Globals | \"normal\" | (string & {});\n\n export type FontOpticalSizing = Globals | \"auto\" | \"none\";\n\n export type FontPalette = Globals | \"dark\" | \"light\" | \"normal\" | (string & {});\n\n export type FontSize<TLength = (string & {}) | 0> = Globals | DataType.AbsoluteSize | TLength | \"larger\" | \"math\" | \"smaller\" | (string & {});\n\n export type FontSizeAdjust = Globals | \"from-font\" | \"none\" | (string & {}) | (number & {});\n\n export type FontSmooth<TLength = (string & {}) | 0> = Globals | DataType.AbsoluteSize | TLength | \"always\" | \"auto\" | \"never\";\n\n export type FontStretch = Globals | DataType.FontStretchAbsolute;\n\n export type FontStyle = Globals | \"italic\" | \"normal\" | \"oblique\" | (string & {});\n\n export type FontSynthesis = Globals | \"none\" | \"position\" | \"small-caps\" | \"style\" | \"weight\" | (string & {});\n\n export type FontSynthesisPosition = Globals | \"auto\" | \"none\";\n\n export type FontSynthesisSmallCaps = Globals | \"auto\" | \"none\";\n\n export type FontSynthesisStyle = Globals | \"auto\" | \"none\";\n\n export type FontSynthesisWeight = Globals | \"auto\" | \"none\";\n\n export type FontVariant =\n | Globals\n | DataType.EastAsianVariantValues\n | \"all-petite-caps\"\n | \"all-small-caps\"\n | \"common-ligatures\"\n | \"contextual\"\n | \"diagonal-fractions\"\n | \"discretionary-ligatures\"\n | \"full-width\"\n | \"historical-forms\"\n | \"historical-ligatures\"\n | \"lining-nums\"\n | \"no-common-ligatures\"\n | \"no-contextual\"\n | \"no-discretionary-ligatures\"\n | \"no-historical-ligatures\"\n | \"none\"\n | \"normal\"\n | \"oldstyle-nums\"\n | \"ordinal\"\n | \"petite-caps\"\n | \"proportional-nums\"\n | \"proportional-width\"\n | \"ruby\"\n | \"slashed-zero\"\n | \"small-caps\"\n | \"stacked-fractions\"\n | \"tabular-nums\"\n | \"titling-caps\"\n | \"unicase\"\n | (string & {});\n\n export type FontVariantAlternates = Globals | \"historical-forms\" | \"normal\" | (string & {});\n\n export type FontVariantCaps = Globals | \"all-petite-caps\" | \"all-small-caps\" | \"normal\" | \"petite-caps\" | \"small-caps\" | \"titling-caps\" | \"unicase\";\n\n export type FontVariantEastAsian = Globals | DataType.EastAsianVariantValues | \"full-width\" | \"normal\" | \"proportional-width\" | \"ruby\" | (string & {});\n\n export type FontVariantEmoji = Globals | \"emoji\" | \"normal\" | \"text\" | \"unicode\";\n\n export type FontVariantLigatures =\n | Globals\n | \"common-ligatures\"\n | \"contextual\"\n | \"discretionary-ligatures\"\n | \"historical-ligatures\"\n | \"no-common-ligatures\"\n | \"no-contextual\"\n | \"no-discretionary-ligatures\"\n | \"no-historical-ligatures\"\n | \"none\"\n | \"normal\"\n | (string & {});\n\n export type FontVariantNumeric =\n | Globals\n | \"diagonal-fractions\"\n | \"lining-nums\"\n | \"normal\"\n | \"oldstyle-nums\"\n | \"ordinal\"\n | \"proportional-nums\"\n | \"slashed-zero\"\n | \"stacked-fractions\"\n | \"tabular-nums\"\n | (string & {});\n\n export type FontVariantPosition = Globals | \"normal\" | \"sub\" | \"super\";\n\n export type FontVariationSettings = Globals | \"normal\" | (string & {});\n\n export type FontWeight = Globals | DataType.FontWeightAbsolute | \"bolder\" | \"lighter\";\n\n export type FontWidth =\n | Globals\n | \"condensed\"\n | \"expanded\"\n | \"extra-condensed\"\n | \"extra-expanded\"\n | \"normal\"\n | \"semi-condensed\"\n | \"semi-expanded\"\n | \"ultra-condensed\"\n | \"ultra-expanded\"\n | (string & {});\n\n export type ForcedColorAdjust = Globals | \"auto\" | \"none\" | \"preserve-parent-color\";\n\n export type Gap<TLength = (string & {}) | 0> = Globals | TLength | \"normal\" | (string & {});\n\n export type Grid = Globals | \"none\" | (string & {});\n\n export type GridArea = Globals | DataType.GridLine | (string & {});\n\n export type GridAutoColumns<TLength = (string & {}) | 0> = Globals | DataType.TrackBreadth<TLength> | (string & {});\n\n export type GridAutoFlow = Globals | \"column\" | \"dense\" | \"row\" | (string & {});\n\n export type GridAutoRows<TLength = (string & {}) | 0> = Globals | DataType.TrackBreadth<TLength> | (string & {});\n\n export type GridColumn = Globals | DataType.GridLine | (string & {});\n\n export type GridColumnEnd = Globals | DataType.GridLine;\n\n export type GridColumnGap<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type GridColumnStart = Globals | DataType.GridLine;\n\n export type GridGap<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type GridRow = Globals | DataType.GridLine | (string & {});\n\n export type GridRowEnd = Globals | DataType.GridLine;\n\n export type GridRowGap<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type GridRowStart = Globals | DataType.GridLine;\n\n export type GridTemplate = Globals | \"none\" | (string & {});\n\n export type GridTemplateAreas = Globals | \"none\" | (string & {});\n\n export type GridTemplateColumns<TLength = (string & {}) | 0> = Globals | DataType.TrackBreadth<TLength> | \"none\" | \"subgrid\" | (string & {});\n\n export type GridTemplateRows<TLength = (string & {}) | 0> = Globals | DataType.TrackBreadth<TLength> | \"none\" | \"subgrid\" | (string & {});\n\n export type HangingPunctuation = Globals | \"allow-end\" | \"first\" | \"force-end\" | \"last\" | \"none\" | (string & {});\n\n export type Height<TLength = (string & {}) | 0> =\n | Globals\n | TLength\n | \"-moz-fit-content\"\n | \"-moz-max-content\"\n | \"-moz-min-content\"\n | \"-webkit-fit-content\"\n | \"auto\"\n | \"fit-content\"\n | \"max-content\"\n | \"min-content\"\n | (string & {});\n\n export type HyphenateCharacter = Globals | \"auto\" | (string & {});\n\n export type HyphenateLimitChars = Globals | \"auto\" | (string & {}) | (number & {});\n\n export type Hyphens = Globals | \"auto\" | \"manual\" | \"none\";\n\n export type ImageOrientation = Globals | \"flip\" | \"from-image\" | (string & {});\n\n export type ImageRendering = Globals | \"-moz-crisp-edges\" | \"-webkit-optimize-contrast\" | \"auto\" | \"crisp-edges\" | \"pixelated\" | \"smooth\";\n\n export type ImageResolution = Globals | \"from-image\" | (string & {});\n\n export type ImeMode = Globals | \"active\" | \"auto\" | \"disabled\" | \"inactive\" | \"normal\";\n\n export type InitialLetter = Globals | \"normal\" | (string & {}) | (number & {});\n\n export type InitialLetterAlign = Globals | \"alphabetic\" | \"auto\" | \"hanging\" | \"ideographic\";\n\n export type InlineSize<TLength = (string & {}) | 0> =\n | Globals\n | TLength\n | \"-moz-fit-content\"\n | \"-moz-max-content\"\n | \"-moz-min-content\"\n | \"-webkit-fill-available\"\n | \"auto\"\n | \"fit-content\"\n | \"max-content\"\n | \"min-content\"\n | (string & {});\n\n export type Inset<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type PositionArea = Globals | DataType.PositionArea | \"none\";\n\n export type InsetBlock<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type InsetBlockEnd<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type InsetBlockStart<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type InsetInline<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type InsetInlineEnd<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type InsetInlineStart<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type InterpolateSize = Globals | \"allow-keywords\" | \"numeric-only\";\n\n export type Isolation = Globals | \"auto\" | \"isolate\";\n\n export type JustifyContent = Globals | DataType.ContentDistribution | DataType.ContentPosition | \"left\" | \"normal\" | \"right\" | (string & {});\n\n export type JustifyItems = Globals | DataType.SelfPosition | \"anchor-center\" | \"baseline\" | \"left\" | \"legacy\" | \"normal\" | \"right\" | \"stretch\" | (string & {});\n\n export type JustifySelf = Globals | DataType.SelfPosition | \"anchor-center\" | \"auto\" | \"baseline\" | \"left\" | \"normal\" | \"right\" | \"stretch\" | (string & {});\n\n export type JustifyTracks = Globals | DataType.ContentDistribution | DataType.ContentPosition | \"left\" | \"normal\" | \"right\" | (string & {});\n\n export type Left<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type LetterSpacing<TLength = (string & {}) | 0> = Globals | TLength | \"normal\";\n\n export type LightingColor = Globals | DataType.Color;\n\n export type LineBreak = Globals | \"anywhere\" | \"auto\" | \"loose\" | \"normal\" | \"strict\";\n\n export type LineClamp = Globals | \"none\" | (number & {}) | (string & {});\n\n export type LineHeight<TLength = (string & {}) | 0> = Globals | TLength | \"normal\" | (string & {}) | (number & {});\n\n export type LineHeightStep<TLength = (string & {}) | 0> = Globals | TLength;\n\n export type ListStyle = Globals | \"inside\" | \"none\" | \"outside\" | (string & {});\n\n export type ListStyleImage = Globals | \"none\" | (string & {});\n\n export type ListStylePosition = Globals | \"inside\" | \"outside\";\n\n export type ListStyleType = Globals | \"none\" | (string & {});\n\n export type Margin<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type MarginBlock<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type MarginBlockEnd<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type MarginBlockStart<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type MarginBottom<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type MarginInline<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type MarginInlineEnd<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type MarginInlineStart<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type MarginLeft<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type MarginRight<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type MarginTop<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type MarginTrim = Globals | \"all\" | \"in-flow\" | \"none\";\n\n export type Marker = Globals | \"none\" | (string & {});\n\n export type MarkerEnd = Globals | \"none\" | (string & {});\n\n export type MarkerMid = Globals | \"none\" | (string & {});\n\n export type MarkerStart = Globals | \"none\" | (string & {});\n\n export type Mask<TLength = (string & {}) | 0> = Globals | DataType.MaskLayer<TLength> | (string & {});\n\n export type MaskBorder = Globals | \"alpha\" | \"luminance\" | \"none\" | \"repeat\" | \"round\" | \"space\" | \"stretch\" | (string & {}) | (number & {});\n\n export type MaskBorderMode = Globals | \"alpha\" | \"luminance\";\n\n export type MaskBorderOutset<TLength = (string & {}) | 0> = Globals | TLength | (string & {}) | (number & {});\n\n export type MaskBorderRepeat = Globals | \"repeat\" | \"round\" | \"space\" | \"stretch\" | (string & {});\n\n export type MaskBorderSlice = Globals | (string & {}) | (number & {});\n\n export type MaskBorderSource = Globals | \"none\" | (string & {});\n\n export type MaskBorderWidth<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {}) | (number & {});\n\n export type MaskClip = Globals | DataType.PaintBox | \"no-clip\" | \"view-box\" | (string & {});\n\n export type MaskComposite = Globals | DataType.CompositingOperator | (string & {});\n\n export type MaskImage = Globals | \"none\" | (string & {});\n\n export type MaskMode = Globals | DataType.MaskingMode | (string & {});\n\n export type MaskOrigin = Globals | DataType.PaintBox | \"view-box\" | (string & {});\n\n export type MaskPosition<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength> | (string & {});\n\n export type MaskRepeat = Globals | DataType.RepeatStyle | (string & {});\n\n export type MaskSize<TLength = (string & {}) | 0> = Globals | DataType.BgSize<TLength> | (string & {});\n\n export type MaskType = Globals | \"alpha\" | \"luminance\";\n\n export type MasonryAutoFlow = Globals | \"definite-first\" | \"next\" | \"ordered\" | \"pack\" | (string & {});\n\n export type MathDepth = Globals | \"auto-add\" | (string & {}) | (number & {});\n\n export type MathShift = Globals | \"compact\" | \"normal\";\n\n export type MathStyle = Globals | \"compact\" | \"normal\";\n\n export type MaxBlockSize<TLength = (string & {}) | 0> =\n | Globals\n | TLength\n | \"-moz-max-content\"\n | \"-moz-min-content\"\n | \"-webkit-fill-available\"\n | \"fit-content\"\n | \"max-content\"\n | \"min-content\"\n | \"none\"\n | (string & {});\n\n export type MaxHeight<TLength = (string & {}) | 0> =\n | Globals\n | TLength\n | \"-moz-fit-content\"\n | \"-moz-max-content\"\n | \"-moz-min-content\"\n | \"-webkit-fit-content\"\n | \"-webkit-max-content\"\n | \"-webkit-min-content\"\n | \"fit-content\"\n | \"intrinsic\"\n | \"max-content\"\n | \"min-content\"\n | \"none\"\n | (string & {});\n\n export type MaxInlineSize<TLength = (string & {}) | 0> =\n | Globals\n | TLength\n | \"-moz-fit-content\"\n | \"-moz-max-content\"\n | \"-moz-min-content\"\n | \"-webkit-fill-available\"\n | \"fit-content\"\n | \"max-content\"\n | \"min-content\"\n | \"none\"\n | (string & {});\n\n export type MaxLines = Globals | \"none\" | (number & {}) | (string & {});\n\n export type MaxWidth<TLength = (string & {}) | 0> =\n | Globals\n | TLength\n | \"-moz-fit-content\"\n | \"-moz-max-content\"\n | \"-moz-min-content\"\n | \"-webkit-fit-content\"\n | \"-webkit-max-content\"\n | \"-webkit-min-content\"\n | \"fit-content\"\n | \"intrinsic\"\n | \"max-content\"\n | \"min-content\"\n | \"none\"\n | (string & {});\n\n export type MinBlockSize<TLength = (string & {}) | 0> =\n | Globals\n | TLength\n | \"-moz-max-content\"\n | \"-moz-min-content\"\n | \"-webkit-fill-available\"\n | \"auto\"\n | \"fit-content\"\n | \"max-content\"\n | \"min-content\"\n | (string & {});\n\n export type MinHeight<TLength = (string & {}) | 0> =\n | Globals\n | TLength\n | \"-moz-fit-content\"\n | \"-moz-max-content\"\n | \"-moz-min-content\"\n | \"-webkit-fit-content\"\n | \"-webkit-max-content\"\n | \"-webkit-min-content\"\n | \"auto\"\n | \"fit-content\"\n | \"intrinsic\"\n | \"max-content\"\n | \"min-content\"\n | (string & {});\n\n export type MinInlineSize<TLength = (string & {}) | 0> =\n | Globals\n | TLength\n | \"-moz-fit-content\"\n | \"-moz-max-content\"\n | \"-moz-min-content\"\n | \"-webkit-fill-available\"\n | \"auto\"\n | \"fit-content\"\n | \"max-content\"\n | \"min-content\"\n | (string & {});\n\n export type MinWidth<TLength = (string & {}) | 0> =\n | Globals\n | TLength\n | \"-moz-fit-content\"\n | \"-moz-max-content\"\n | \"-moz-min-content\"\n | \"-webkit-fit-content\"\n | \"-webkit-max-content\"\n | \"-webkit-min-content\"\n | \"auto\"\n | \"fit-content\"\n | \"intrinsic\"\n | \"max-content\"\n | \"min-content\"\n | \"min-intrinsic\"\n | (string & {});\n\n export type MixBlendMode = Globals | DataType.BlendMode | \"plus-darker\" | \"plus-lighter\";\n\n export type Offset<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength> | DataType.PaintBox | \"auto\" | \"none\" | \"normal\" | \"view-box\" | (string & {});\n\n export type OffsetDistance<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type OffsetPath = Globals | DataType.PaintBox | \"none\" | \"view-box\" | (string & {});\n\n export type OffsetRotate = Globals | \"auto\" | \"reverse\" | (string & {});\n\n export type ObjectFit = Globals | \"contain\" | \"cover\" | \"fill\" | \"none\" | \"scale-down\";\n\n export type ObjectPosition<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength>;\n\n export type ObjectViewBox = Globals | \"none\" | (string & {});\n\n export type OffsetAnchor<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength> | \"auto\";\n\n export type OffsetPosition<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength> | \"auto\" | \"normal\";\n\n export type Opacity = Globals | (string & {}) | (number & {});\n\n export type Order = Globals | (number & {}) | (string & {});\n\n export type Orphans = Globals | (number & {}) | (string & {});\n\n export type Outline<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.OutlineLineStyle | DataType.Color | \"auto\" | (string & {});\n\n export type OutlineColor = Globals | DataType.Color | \"auto\";\n\n export type OutlineOffset<TLength = (string & {}) | 0> = Globals | TLength;\n\n export type OutlineStyle = Globals | DataType.OutlineLineStyle | \"auto\";\n\n export type OutlineWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength>;\n\n export type Overflow = Globals | \"-moz-hidden-unscrollable\" | \"auto\" | \"clip\" | \"hidden\" | \"overlay\" | \"scroll\" | \"visible\" | (string & {});\n\n export type OverflowAnchor = Globals | \"auto\" | \"none\";\n\n export type OverflowBlock = Globals | \"auto\" | \"clip\" | \"hidden\" | \"scroll\" | \"visible\";\n\n export type OverflowClipBox = Globals | \"content-box\" | \"padding-box\";\n\n export type OverflowClipMargin<TLength = (string & {}) | 0> = Globals | DataType.VisualBox | TLength | (string & {});\n\n export type OverflowInline = Globals | \"auto\" | \"clip\" | \"hidden\" | \"scroll\" | \"visible\";\n\n export type OverflowWrap = Globals | \"anywhere\" | \"break-word\" | \"normal\";\n\n export type OverflowX = Globals | \"-moz-hidden-unscrollable\" | \"auto\" | \"clip\" | \"hidden\" | \"overlay\" | \"scroll\" | \"visible\";\n\n export type OverflowY = Globals | \"-moz-hidden-unscrollable\" | \"auto\" | \"clip\" | \"hidden\" | \"overlay\" | \"scroll\" | \"visible\";\n\n export type Overlay = Globals | \"auto\" | \"none\";\n\n export type OverscrollBehavior = Globals | \"auto\" | \"contain\" | \"none\" | (string & {});\n\n export type OverscrollBehaviorBlock = Globals | \"auto\" | \"contain\" | \"none\";\n\n export type OverscrollBehaviorInline = Globals | \"auto\" | \"contain\" | \"none\";\n\n export type OverscrollBehaviorX = Globals | \"auto\" | \"contain\" | \"none\";\n\n export type OverscrollBehaviorY = Globals | \"auto\" | \"contain\" | \"none\";\n\n export type Padding<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type PaddingBlock<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type PaddingBlockEnd<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type PaddingBlockStart<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type PaddingBottom<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type PaddingInline<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type PaddingInlineEnd<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type PaddingInlineStart<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type PaddingLeft<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type PaddingRight<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type PaddingTop<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type Page = Globals | \"auto\" | (string & {});\n\n export type PageBreakAfter = Globals | \"always\" | \"auto\" | \"avoid\" | \"left\" | \"recto\" | \"right\" | \"verso\";\n\n export type PageBreakBefore = Globals | \"always\" | \"auto\" | \"avoid\" | \"left\" | \"recto\" | \"right\" | \"verso\";\n\n export type PageBreakInside = Globals | \"auto\" | \"avoid\";\n\n export type PaintOrder = Globals | \"fill\" | \"markers\" | \"normal\" | \"stroke\" | (string & {});\n\n export type Perspective<TLength = (string & {}) | 0> = Globals | TLength | \"none\";\n\n export type PerspectiveOrigin<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength>;\n\n export type PlaceContent = Globals | DataType.ContentDistribution | DataType.ContentPosition | \"baseline\" | \"normal\" | (string & {});\n\n export type PlaceItems = Globals | DataType.SelfPosition | \"anchor-center\" | \"baseline\" | \"normal\" | \"stretch\" | (string & {});\n\n export type PlaceSelf = Globals | DataType.SelfPosition | \"anchor-center\" | \"auto\" | \"baseline\" | \"normal\" | \"stretch\" | (string & {});\n\n export type PointerEvents = Globals | \"all\" | \"auto\" | \"fill\" | \"inherit\" | \"none\" | \"painted\" | \"stroke\" | \"visible\" | \"visibleFill\" | \"visiblePainted\" | \"visibleStroke\";\n\n export type Position = Globals | \"-webkit-sticky\" | \"absolute\" | \"fixed\" | \"relative\" | \"static\" | \"sticky\";\n\n export type PositionAnchor = Globals | \"auto\" | (string & {});\n\n export type PositionTry = Globals | DataType.TryTactic | DataType.PositionArea | \"none\" | (string & {});\n\n export type PositionTryFallbacks = Globals | DataType.TryTactic | DataType.PositionArea | \"none\" | (string & {});\n\n export type PositionTryOrder = Globals | DataType.TrySize | \"normal\";\n\n export type PositionVisibility = Globals | \"always\" | \"anchors-valid\" | \"anchors-visible\" | \"no-overflow\" | (string & {});\n\n export type Quotes = Globals | \"auto\" | \"none\" | (string & {});\n\n export type R<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type Resize = Globals | \"block\" | \"both\" | \"horizontal\" | \"inline\" | \"none\" | \"vertical\";\n\n export type Right<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type Rotate = Globals | \"none\" | (string & {});\n\n export type RowGap<TLength = (string & {}) | 0> = Globals | TLength | \"normal\" | (string & {});\n\n export type RubyAlign = Globals | \"center\" | \"space-around\" | \"space-between\" | \"start\";\n\n export type RubyMerge = Globals | \"auto\" | \"collapse\" | \"separate\";\n\n export type RubyOverhang = Globals | \"auto\" | \"none\";\n\n export type RubyPosition = Globals | \"alternate\" | \"inter-character\" | \"over\" | \"under\" | (string & {});\n\n export type Rx<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type Ry<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type Scale = Globals | \"none\" | (string & {}) | (number & {});\n\n export type ScrollBehavior = Globals | \"auto\" | \"smooth\";\n\n export type ScrollInitialTarget = Globals | \"nearest\" | \"none\";\n\n export type ScrollMargin<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type ScrollMarginBlock<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type ScrollMarginBlockEnd<TLength = (string & {}) | 0> = Globals | TLength;\n\n export type ScrollMarginBlockStart<TLength = (string & {}) | 0> = Globals | TLength;\n\n export type ScrollMarginBottom<TLength = (string & {}) | 0> = Globals | TLength;\n\n export type ScrollMarginInline<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type ScrollMarginInlineEnd<TLength = (string & {}) | 0> = Globals | TLength;\n\n export type ScrollMarginInlineStart<TLength = (string & {}) | 0> = Globals | TLength;\n\n export type ScrollMarginLeft<TLength = (string & {}) | 0> = Globals | TLength;\n\n export type ScrollMarginRight<TLength = (string & {}) | 0> = Globals | TLength;\n\n export type ScrollMarginTop<TLength = (string & {}) | 0> = Globals | TLength;\n\n export type ScrollPadding<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type ScrollPaddingBlock<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type ScrollPaddingBlockEnd<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type ScrollPaddingBlockStart<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type ScrollPaddingBottom<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type ScrollPaddingInline<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type ScrollPaddingInlineEnd<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type ScrollPaddingInlineStart<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type ScrollPaddingLeft<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type ScrollPaddingRight<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type ScrollPaddingTop<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type ScrollSnapAlign = Globals | \"center\" | \"end\" | \"none\" | \"start\" | (string & {});\n\n export type ScrollSnapCoordinate<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength> | \"none\" | (string & {});\n\n export type ScrollSnapDestination<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength>;\n\n export type ScrollSnapPointsX = Globals | \"none\" | (string & {});\n\n export type ScrollSnapPointsY = Globals | \"none\" | (string & {});\n\n export type ScrollSnapStop = Globals | \"always\" | \"normal\";\n\n export type ScrollSnapType = Globals | \"block\" | \"both\" | \"inline\" | \"none\" | \"x\" | \"y\" | (string & {});\n\n export type ScrollSnapTypeX = Globals | \"mandatory\" | \"none\" | \"proximity\";\n\n export type ScrollSnapTypeY = Globals | \"mandatory\" | \"none\" | \"proximity\";\n\n export type ScrollTimeline = Globals | \"none\" | (string & {});\n\n export type ScrollTimelineAxis = Globals | \"block\" | \"inline\" | \"x\" | \"y\" | (string & {});\n\n export type ScrollTimelineName = Globals | \"none\" | (string & {});\n\n export type ScrollbarColor = Globals | \"auto\" | (string & {});\n\n export type ScrollbarGutter = Globals | \"auto\" | \"stable\" | (string & {});\n\n export type ScrollbarWidth = Globals | \"auto\" | \"none\" | \"thin\";\n\n export type ShapeImageThreshold = Globals | (string & {}) | (number & {});\n\n export type ShapeMargin<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type ShapeOutside = Globals | DataType.VisualBox | \"margin-box\" | \"none\" | (string & {});\n\n export type ShapeRendering = Globals | \"auto\" | \"crispEdges\" | \"geometricPrecision\" | \"optimizeSpeed\";\n\n export type SpeakAs = Globals | \"digits\" | \"literal-punctuation\" | \"no-punctuation\" | \"normal\" | \"spell-out\" | (string & {});\n\n export type StopColor = Globals | DataType.Color;\n\n export type StopOpacity = Globals | (string & {}) | (number & {});\n\n export type Stroke = Globals | DataType.Paint;\n\n export type StrokeColor = Globals | DataType.Color;\n\n export type StrokeDasharray<TLength = (string & {}) | 0> = Globals | DataType.Dasharray<TLength> | \"none\";\n\n export type StrokeDashoffset<TLength = (string & {}) | 0> = Globals | TLength | (string & {}) | (number & {});\n\n export type StrokeLinecap = Globals | \"butt\" | \"round\" | \"square\";\n\n export type StrokeLinejoin = Globals | \"arcs\" | \"bevel\" | \"miter\" | \"miter-clip\" | \"round\";\n\n export type StrokeMiterlimit = Globals | (number & {}) | (string & {});\n\n export type StrokeOpacity = Globals | (string & {}) | (number & {});\n\n export type StrokeWidth<TLength = (string & {}) | 0> = Globals | TLength | (string & {}) | (number & {});\n\n export type TabSize<TLength = (string & {}) | 0> = Globals | TLength | (number & {}) | (string & {});\n\n export type TableLayout = Globals | \"auto\" | \"fixed\";\n\n export type TextAlign =\n | Globals\n | \"-khtml-center\"\n | \"-khtml-left\"\n | \"-khtml-right\"\n | \"-moz-center\"\n | \"-moz-left\"\n | \"-moz-right\"\n | \"-webkit-center\"\n | \"-webkit-left\"\n | \"-webkit-match-parent\"\n | \"-webkit-right\"\n | \"center\"\n | \"end\"\n | \"justify\"\n | \"left\"\n | \"match-parent\"\n | \"right\"\n | \"start\";\n\n export type TextAlignLast = Globals | \"auto\" | \"center\" | \"end\" | \"justify\" | \"left\" | \"right\" | \"start\";\n\n export type TextAnchor = Globals | \"end\" | \"middle\" | \"start\";\n\n export type TextAutospace = Globals | DataType.Autospace | \"auto\" | \"normal\";\n\n export type TextBox = Globals | DataType.TextEdge | \"auto\" | \"none\" | \"normal\" | \"trim-both\" | \"trim-end\" | \"trim-start\" | (string & {});\n\n export type TextBoxEdge = Globals | DataType.TextEdge | \"auto\";\n\n export type TextBoxTrim = Globals | \"none\" | \"trim-both\" | \"trim-end\" | \"trim-start\";\n\n export type TextCombineUpright = Globals | \"all\" | \"digits\" | \"none\" | (string & {});\n\n export type TextDecoration<TLength = (string & {}) | 0> =\n | Globals\n | DataType.Color\n | TLength\n | \"auto\"\n | \"blink\"\n | \"dashed\"\n | \"dotted\"\n | \"double\"\n | \"from-font\"\n | \"grammar-error\"\n | \"line-through\"\n | \"none\"\n | \"overline\"\n | \"solid\"\n | \"spelling-error\"\n | \"underline\"\n | \"wavy\"\n | (string & {});\n\n export type TextDecorationColor = Globals | DataType.Color;\n\n export type TextDecorationLine = Globals | \"blink\" | \"grammar-error\" | \"line-through\" | \"none\" | \"overline\" | \"spelling-error\" | \"underline\" | (string & {});\n\n export type TextDecorationSkip = Globals | \"box-decoration\" | \"edges\" | \"leading-spaces\" | \"none\" | \"objects\" | \"spaces\" | \"trailing-spaces\" | (string & {});\n\n export type TextDecorationSkipInk = Globals | \"all\" | \"auto\" | \"none\";\n\n export type TextDecorationStyle = Globals | \"dashed\" | \"dotted\" | \"double\" | \"solid\" | \"wavy\";\n\n export type TextDecorationThickness<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | \"from-font\" | (string & {});\n\n export type TextEmphasis = Globals | DataType.Color | \"circle\" | \"dot\" | \"double-circle\" | \"filled\" | \"none\" | \"open\" | \"sesame\" | \"triangle\" | (string & {});\n\n export type TextEmphasisColor = Globals | DataType.Color;\n\n export type TextEmphasisPosition = Globals | \"auto\" | \"over\" | \"under\" | (string & {});\n\n export type TextEmphasisStyle = Globals | \"circle\" | \"dot\" | \"double-circle\" | \"filled\" | \"none\" | \"open\" | \"sesame\" | \"triangle\" | (string & {});\n\n export type TextIndent<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type TextJustify = Globals | \"auto\" | \"distribute\" | \"inter-character\" | \"inter-word\" | \"none\";\n\n export type TextOrientation = Globals | \"mixed\" | \"sideways\" | \"sideways-right\" | \"upright\";\n\n export type TextOverflow = Globals | \"clip\" | \"ellipsis\" | (string & {});\n\n export type TextRendering = Globals | \"auto\" | \"geometricPrecision\" | \"optimizeLegibility\" | \"optimizeSpeed\";\n\n export type TextShadow = Globals | \"none\" | (string & {});\n\n export type TextSizeAdjust = Globals | \"auto\" | \"none\" | (string & {});\n\n export type TextSpacingTrim = Globals | \"normal\" | \"space-all\" | \"space-first\" | \"trim-start\";\n\n export type TextTransform = Globals | \"capitalize\" | \"full-size-kana\" | \"full-width\" | \"lowercase\" | \"math-auto\" | \"none\" | \"uppercase\" | (string & {});\n\n export type TextUnderlineOffset<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type TextUnderlinePosition = Globals | \"auto\" | \"from-font\" | \"left\" | \"right\" | \"under\" | (string & {});\n\n export type TextWrap = Globals | \"auto\" | \"balance\" | \"nowrap\" | \"pretty\" | \"stable\" | \"wrap\" | (string & {});\n\n export type TextWrapMode = Globals | \"nowrap\" | \"wrap\";\n\n export type TextWrapStyle = Globals | \"auto\" | \"balance\" | \"pretty\" | \"stable\";\n\n export type TimelineScope = Globals | \"none\" | (string & {});\n\n export type Top<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type TouchAction =\n | Globals\n | \"-ms-manipulation\"\n | \"-ms-none\"\n | \"-ms-pan-x\"\n | \"-ms-pan-y\"\n | \"-ms-pinch-zoom\"\n | \"auto\"\n | \"manipulation\"\n | \"none\"\n | \"pan-down\"\n | \"pan-left\"\n | \"pan-right\"\n | \"pan-up\"\n | \"pan-x\"\n | \"pan-y\"\n | \"pinch-zoom\"\n | (string & {});\n\n export type Transform = Globals | \"none\" | (string & {});\n\n export type TransformBox = Globals | \"border-box\" | \"content-box\" | \"fill-box\" | \"stroke-box\" | \"view-box\";\n\n export type TransformOrigin<TLength = (string & {}) | 0> = Globals | TLength | \"bottom\" | \"center\" | \"left\" | \"right\" | \"top\" | (string & {});\n\n export type TransformStyle = Globals | \"flat\" | \"preserve-3d\";\n\n export type Transition<TTime = string & {}> = Globals | DataType.SingleTransition<TTime> | (string & {});\n\n export type TransitionBehavior = Globals | \"allow-discrete\" | \"normal\" | (string & {});\n\n export type TransitionDelay<TTime = string & {}> = Globals | TTime | (string & {});\n\n export type TransitionDuration<TTime = string & {}> = Globals | TTime | (string & {});\n\n export type TransitionProperty = Globals | \"all\" | \"none\" | (string & {});\n\n export type TransitionTimingFunction = Globals | DataType.EasingFunction | (string & {});\n\n export type Translate<TLength = (string & {}) | 0> = Globals | TLength | \"none\" | (string & {});\n\n export type UnicodeBidi =\n | Globals\n | \"-moz-isolate\"\n | \"-moz-isolate-override\"\n | \"-moz-plaintext\"\n | \"-webkit-isolate\"\n | \"-webkit-isolate-override\"\n | \"-webkit-plaintext\"\n | \"bidi-override\"\n | \"embed\"\n | \"isolate\"\n | \"isolate-override\"\n | \"normal\"\n | \"plaintext\";\n\n export type UserSelect = Globals | \"-moz-none\" | \"all\" | \"auto\" | \"none\" | \"text\";\n\n export type VectorEffect = Globals | \"fixed-position\" | \"non-rotation\" | \"non-scaling-size\" | \"non-scaling-stroke\" | \"none\";\n\n export type VerticalAlign<TLength = (string & {}) | 0> =\n | Globals\n | TLength\n | \"baseline\"\n | \"bottom\"\n | \"middle\"\n | \"sub\"\n | \"super\"\n | \"text-bottom\"\n | \"text-top\"\n | \"top\"\n | (string & {});\n\n export type ViewTimeline = Globals | \"none\" | (string & {});\n\n export type ViewTimelineAxis = Globals | \"block\" | \"inline\" | \"x\" | \"y\" | (string & {});\n\n export type ViewTimelineInset<TLength = (string & {}) | 0> = Globals | TLength | \"auto\" | (string & {});\n\n export type ViewTimelineName = Globals | \"none\" | (string & {});\n\n export type ViewTransitionClass = Globals | \"none\" | (string & {});\n\n export type ViewTransitionName = Globals | \"match-element\" | \"none\" | (string & {});\n\n export type Visibility = Globals | \"collapse\" | \"hidden\" | \"visible\";\n\n export type WhiteSpace =\n | Globals\n | \"-moz-pre-wrap\"\n | \"break-spaces\"\n | \"collapse\"\n | \"normal\"\n | \"nowrap\"\n | \"pre\"\n | \"pre-line\"\n | \"pre-wrap\"\n | \"preserve\"\n | \"preserve-breaks\"\n | \"preserve-spaces\"\n | \"wrap\"\n | (string & {});\n\n export type WhiteSpaceCollapse = Globals | \"break-spaces\" | \"collapse\" | \"preserve\" | \"preserve-breaks\" | \"preserve-spaces\";\n\n export type Widows = Globals | (number & {}) | (string & {});\n\n export type Width<TLength = (string & {}) | 0> =\n | Globals\n | TLength\n | \"-moz-fit-content\"\n | \"-moz-max-content\"\n | \"-moz-min-content\"\n | \"-webkit-fit-content\"\n | \"-webkit-max-content\"\n | \"auto\"\n | \"fit-content\"\n | \"intrinsic\"\n | \"max-content\"\n | \"min-content\"\n | \"min-intrinsic\"\n | (string & {});\n\n export type WillChange = Globals | DataType.AnimateableFeature | \"auto\" | (string & {});\n\n export type WordBreak = Globals | \"auto-phrase\" | \"break-all\" | \"break-word\" | \"keep-all\" | \"normal\";\n\n export type WordSpacing<TLength = (string & {}) | 0> = Globals | TLength | \"normal\";\n\n export type WordWrap = Globals | \"break-word\" | \"normal\";\n\n export type WritingMode = Globals | \"horizontal-tb\" | \"sideways-lr\" | \"sideways-rl\" | \"vertical-lr\" | \"vertical-rl\";\n\n export type X<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type Y<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type ZIndex = Globals | \"auto\" | (number & {}) | (string & {});\n\n export type Zoom = Globals | \"normal\" | \"reset\" | (string & {}) | (number & {});\n\n export type MozAppearance =\n | Globals\n | \"-moz-mac-unified-toolbar\"\n | \"-moz-win-borderless-glass\"\n | \"-moz-win-browsertabbar-toolbox\"\n | \"-moz-win-communications-toolbox\"\n | \"-moz-win-communicationstext\"\n | \"-moz-win-exclude-glass\"\n | \"-moz-win-glass\"\n | \"-moz-win-media-toolbox\"\n | \"-moz-win-mediatext\"\n | \"-moz-window-button-box\"\n | \"-moz-window-button-box-maximized\"\n | \"-moz-window-button-close\"\n | \"-moz-window-button-maximize\"\n | \"-moz-window-button-minimize\"\n | \"-moz-window-button-restore\"\n | \"-moz-window-frame-bottom\"\n | \"-moz-window-frame-left\"\n | \"-moz-window-frame-right\"\n | \"-moz-window-titlebar\"\n | \"-moz-window-titlebar-maximized\"\n | \"button\"\n | \"button-arrow-down\"\n | \"button-arrow-next\"\n | \"button-arrow-previous\"\n | \"button-arrow-up\"\n | \"button-bevel\"\n | \"button-focus\"\n | \"caret\"\n | \"checkbox\"\n | \"checkbox-container\"\n | \"checkbox-label\"\n | \"checkmenuitem\"\n | \"dualbutton\"\n | \"groupbox\"\n | \"listbox\"\n | \"listitem\"\n | \"menuarrow\"\n | \"menubar\"\n | \"menucheckbox\"\n | \"menuimage\"\n | \"menuitem\"\n | \"menuitemtext\"\n | \"menulist\"\n | \"menulist-button\"\n | \"menulist-text\"\n | \"menulist-textfield\"\n | \"menupopup\"\n | \"menuradio\"\n | \"menuseparator\"\n | \"meterbar\"\n | \"meterchunk\"\n | \"none\"\n | \"progressbar\"\n | \"progressbar-vertical\"\n | \"progresschunk\"\n | \"progresschunk-vertical\"\n | \"radio\"\n | \"radio-container\"\n | \"radio-label\"\n | \"radiomenuitem\"\n | \"range\"\n | \"range-thumb\"\n | \"resizer\"\n | \"resizerpanel\"\n | \"scale-horizontal\"\n | \"scale-vertical\"\n | \"scalethumb-horizontal\"\n | \"scalethumb-vertical\"\n | \"scalethumbend\"\n | \"scalethumbstart\"\n | \"scalethumbtick\"\n | \"scrollbarbutton-down\"\n | \"scrollbarbutton-left\"\n | \"scrollbarbutton-right\"\n | \"scrollbarbutton-up\"\n | \"scrollbarthumb-horizontal\"\n | \"scrollbarthumb-vertical\"\n | \"scrollbartrack-horizontal\"\n | \"scrollbartrack-vertical\"\n | \"searchfield\"\n | \"separator\"\n | \"sheet\"\n | \"spinner\"\n | \"spinner-downbutton\"\n | \"spinner-textfield\"\n | \"spinner-upbutton\"\n | \"splitter\"\n | \"statusbar\"\n | \"statusbarpanel\"\n | \"tab\"\n | \"tab-scroll-arrow-back\"\n | \"tab-scroll-arrow-forward\"\n | \"tabpanel\"\n | \"tabpanels\"\n | \"textfield\"\n | \"textfield-multiline\"\n | \"toolbar\"\n | \"toolbarbutton\"\n | \"toolbarbutton-dropdown\"\n | \"toolbargripper\"\n | \"toolbox\"\n | \"tooltip\"\n | \"treeheader\"\n | \"treeheadercell\"\n | \"treeheadersortarrow\"\n | \"treeitem\"\n | \"treeline\"\n | \"treetwisty\"\n | \"treetwistyopen\"\n | \"treeview\";\n\n export type MozBinding = Globals | \"none\" | (string & {});\n\n export type MozBorderBottomColors = Globals | DataType.Color | \"none\" | (string & {});\n\n export type MozBorderLeftColors = Globals | DataType.Color | \"none\" | (string & {});\n\n export type MozBorderRightColors = Globals | DataType.Color | \"none\" | (string & {});\n\n export type MozBorderTopColors = Globals | DataType.Color | \"none\" | (string & {});\n\n export type MozContextProperties = Globals | \"fill\" | \"fill-opacity\" | \"none\" | \"stroke\" | \"stroke-opacity\" | (string & {});\n\n export type MozFloatEdge = Globals | \"border-box\" | \"content-box\" | \"margin-box\" | \"padding-box\";\n\n export type MozForceBrokenImageIcon = Globals | 0 | (string & {}) | 1;\n\n export type MozOrient = Globals | \"block\" | \"horizontal\" | \"inline\" | \"vertical\";\n\n export type MozOutlineRadius<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type MozOutlineRadiusBottomleft<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type MozOutlineRadiusBottomright<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type MozOutlineRadiusTopleft<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type MozOutlineRadiusTopright<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type MozStackSizing = Globals | \"ignore\" | \"stretch-to-fit\";\n\n export type MozTextBlink = Globals | \"blink\" | \"none\";\n\n export type MozUserFocus = Globals | \"ignore\" | \"none\" | \"normal\" | \"select-after\" | \"select-all\" | \"select-before\" | \"select-menu\" | \"select-same\";\n\n export type MozUserInput = Globals | \"auto\" | \"disabled\" | \"enabled\" | \"none\";\n\n export type MozUserModify = Globals | \"read-only\" | \"read-write\" | \"write-only\";\n\n export type MozWindowDragging = Globals | \"drag\" | \"no-drag\";\n\n export type MozWindowShadow = Globals | \"default\" | \"menu\" | \"none\" | \"sheet\" | \"tooltip\";\n\n export type MsAccelerator = Globals | \"false\" | \"true\";\n\n export type MsBlockProgression = Globals | \"bt\" | \"lr\" | \"rl\" | \"tb\";\n\n export type MsContentZoomChaining = Globals | \"chained\" | \"none\";\n\n export type MsContentZoomLimit = Globals | (string & {});\n\n export type MsContentZoomLimitMax = Globals | (string & {});\n\n export type MsContentZoomLimitMin = Globals | (string & {});\n\n export type MsContentZoomSnap = Globals | \"mandatory\" | \"none\" | \"proximity\" | (string & {});\n\n export type MsContentZoomSnapPoints = Globals | (string & {});\n\n export type MsContentZoomSnapType = Globals | \"mandatory\" | \"none\" | \"proximity\";\n\n export type MsContentZooming = Globals | \"none\" | \"zoom\";\n\n export type MsFilter = Globals | (string & {});\n\n export type MsFlowFrom = Globals | \"none\" | (string & {});\n\n export type MsFlowInto = Globals | \"none\" | (string & {});\n\n export type MsGridColumns<TLength = (string & {}) | 0> = Globals | DataType.TrackBreadth<TLength> | \"none\" | (string & {});\n\n export type MsGridRows<TLength = (string & {}) | 0> = Globals | DataType.TrackBreadth<TLength> | \"none\" | (string & {});\n\n export type MsHighContrastAdjust = Globals | \"auto\" | \"none\";\n\n export type MsHyphenateLimitChars = Globals | \"auto\" | (string & {}) | (number & {});\n\n export type MsHyphenateLimitLines = Globals | \"no-limit\" | (number & {}) | (string & {});\n\n export type MsHyphenateLimitZone<TLength = (string & {}) | 0> = Globals | TLength | (string & {});\n\n export type MsImeAlign = Globals | \"after\" | \"auto\";\n\n export type MsOverflowStyle = Globals | \"-ms-autohiding-scrollbar\" | \"auto\" | \"none\" | \"scrollbar\";\n\n export type MsScrollChaining = Globals | \"chained\" | \"none\";\n\n export type MsScrollLimit = Globals | (string & {});\n\n export type MsScrollLimitXMax<TLength = (string & {}) | 0> = Globals | TLength | \"auto\";\n\n export type MsScrollLimitXMin<TLength = (string & {}) | 0> = Globals | TLength;\n\n export type MsScrollLimitYMax<TLength = (string & {}) | 0> = Globals | TLength | \"auto\";\n\n export type MsScrollLimitYMin<TLength = (string & {}) | 0> = Globals | TLength;\n\n export type MsScrollRails = Globals | \"none\" | \"railed\";\n\n export type MsScrollSnapPointsX = Globals | (string & {});\n\n export type MsScrollSnapPointsY = Globals | (string & {});\n\n export type MsScrollSnapType = Globals | \"mandatory\" | \"none\" | \"proximity\";\n\n export type MsScrollSnapX = Globals | (string & {});\n\n export type MsScrollSnapY = Globals | (string & {});\n\n export type MsScrollTranslation = Globals | \"none\" | \"vertical-to-horizontal\";\n\n export type MsScrollbar3dlightColor = Globals | DataType.Color;\n\n export type MsScrollbarArrowColor = Globals | DataType.Color;\n\n export type MsScrollbarBaseColor = Globals | DataType.Color;\n\n export type MsScrollbarDarkshadowColor = Globals | DataType.Color;\n\n export type MsScrollbarFaceColor = Globals | DataType.Color;\n\n export type MsScrollbarHighlightColor = Globals | DataType.Color;\n\n export type MsScrollbarShadowColor = Globals | DataType.Color;\n\n export type MsScrollbarTrackColor = Globals | DataType.Color;\n\n export type MsTextAutospace = Globals | \"ideograph-alpha\" | \"ideograph-numeric\" | \"ideograph-parenthesis\" | \"ideograph-space\" | \"none\";\n\n export type MsTouchSelect = Globals | \"grippers\" | \"none\";\n\n export type MsUserSelect = Globals | \"element\" | \"none\" | \"text\";\n\n export type MsWrapFlow = Globals | \"auto\" | \"both\" | \"clear\" | \"end\" | \"maximum\" | \"start\";\n\n export type MsWrapMargin<TLength = (string & {}) | 0> = Globals | TLength;\n\n export type MsWrapThrough = Globals | \"none\" | \"wrap\";\n\n export type WebkitAppearance =\n | Globals\n | \"-apple-pay-button\"\n | \"button\"\n | \"button-bevel\"\n | \"caret\"\n | \"checkbox\"\n | \"default-button\"\n | \"inner-spin-button\"\n | \"listbox\"\n | \"listitem\"\n | \"media-controls-background\"\n | \"media-controls-fullscreen-background\"\n | \"media-current-time-display\"\n | \"media-enter-fullscreen-button\"\n | \"media-exit-fullscreen-button\"\n | \"media-fullscreen-button\"\n | \"media-mute-button\"\n | \"media-overlay-play-button\"\n | \"media-play-button\"\n | \"media-seek-back-button\"\n | \"media-seek-forward-button\"\n | \"media-slider\"\n | \"media-sliderthumb\"\n | \"media-time-remaining-display\"\n | \"media-toggle-closed-captions-button\"\n | \"media-volume-slider\"\n | \"media-volume-slider-container\"\n | \"media-volume-sliderthumb\"\n | \"menulist\"\n | \"menulist-button\"\n | \"menulist-text\"\n | \"menulist-textfield\"\n | \"meter\"\n | \"none\"\n | \"progress-bar\"\n | \"progress-bar-value\"\n | \"push-button\"\n | \"radio\"\n | \"searchfield\"\n | \"searchfield-cancel-button\"\n | \"searchfield-decoration\"\n | \"searchfield-results-button\"\n | \"searchfield-results-decoration\"\n | \"slider-horizontal\"\n | \"slider-vertical\"\n | \"sliderthumb-horizontal\"\n | \"sliderthumb-vertical\"\n | \"square-button\"\n | \"textarea\"\n | \"textfield\";\n\n export type WebkitBorderBefore<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | DataType.LineStyle | DataType.Color | (string & {});\n\n export type WebkitBorderBeforeColor = Globals | DataType.Color;\n\n export type WebkitBorderBeforeStyle = Globals | DataType.LineStyle | (string & {});\n\n export type WebkitBorderBeforeWidth<TLength = (string & {}) | 0> = Globals | DataType.LineWidth<TLength> | (string & {});\n\n export type WebkitBoxReflect<TLength = (string & {}) | 0> = Globals | TLength | \"above\" | \"below\" | \"left\" | \"right\" | (string & {});\n\n export type WebkitLineClamp = Globals | \"none\" | (number & {}) | (string & {});\n\n export type WebkitMask<TLength = (string & {}) | 0> =\n | Globals\n | DataType.Position<TLength>\n | DataType.RepeatStyle\n | DataType.VisualBox\n | \"border\"\n | \"content\"\n | \"none\"\n | \"padding\"\n | \"text\"\n | (string & {});\n\n export type WebkitMaskAttachment = Globals | DataType.Attachment | (string & {});\n\n export type WebkitMaskClip = Globals | DataType.PaintBox | \"border\" | \"content\" | \"no-clip\" | \"padding\" | \"text\" | \"view-box\" | (string & {});\n\n export type WebkitMaskComposite = Globals | DataType.CompositeStyle | (string & {});\n\n export type WebkitMaskImage = Globals | \"none\" | (string & {});\n\n export type WebkitMaskOrigin = Globals | DataType.PaintBox | \"border\" | \"content\" | \"padding\" | \"view-box\" | (string & {});\n\n export type WebkitMaskPosition<TLength = (string & {}) | 0> = Globals | DataType.Position<TLength> | (string & {});\n\n export type WebkitMaskPositionX<TLength = (string & {}) | 0> = Globals | TLength | \"center\" | \"left\" | \"right\" | (string & {});\n\n export type WebkitMaskPositionY<TLength = (string & {}) | 0> = Globals | TLength | \"bottom\" | \"center\" | \"top\" | (string & {});\n\n export type WebkitMaskRepeat = Globals | DataType.RepeatStyle | (string & {});\n\n export type WebkitMaskRepeatX = Globals | \"no-repeat\" | \"repeat\" | \"round\" | \"space\";\n\n export type WebkitMaskRepeatY = Globals | \"no-repeat\" | \"repeat\" | \"round\" | \"space\";\n\n export type WebkitMaskSize<TLength = (string & {}) | 0> = Globals | DataType.BgSize<TLength> | (string & {});\n\n export type WebkitOverflowScrolling = Globals | \"auto\" | \"touch\";\n\n export type WebkitTapHighlightColor = Globals | DataType.Color;\n\n export type WebkitTextFillColor = Globals | DataType.Color;\n\n export type WebkitTextStroke<TLength = (string & {}) | 0> = Globals | DataType.Color | TLength | (string & {});\n\n export type WebkitTextStrokeColor = Globals | DataType.Color;\n\n export type WebkitTextStrokeWidth<TLength = (string & {}) | 0> = Globals | TLength;\n\n export type WebkitTouchCallout = Globals | \"default\" | \"none\";\n\n export type WebkitUserModify = Globals | \"read-only\" | \"read-write\" | \"read-write-plaintext-only\";\n\n export type WebkitUserSelect = Globals | \"all\" | \"auto\" | \"none\" | \"text\";\n\n export type ColorInterpolation = Globals | \"auto\" | \"linearRGB\" | \"sRGB\";\n\n export type ColorRendering = Globals | \"auto\" | \"optimizeQuality\" | \"optimizeSpeed\";\n\n export type GlyphOrientationVertical = Globals | \"auto\" | (string & {}) | (number & {});\n}\n\nexport namespace AtRule {\n export interface CounterStyle<TLength = (string & {}) | 0, TTime = string & {}> {\n additiveSymbols?: string | undefined;\n fallback?: string | undefined;\n negative?: string | undefined;\n pad?: string | undefined;\n prefix?: string | undefined;\n range?: Range | undefined;\n speakAs?: SpeakAs | undefined;\n suffix?: string | undefined;\n symbols?: string | undefined;\n system?: System | undefined;\n }\n\n export interface CounterStyleHyphen<TLength = (string & {}) | 0, TTime = string & {}> {\n \"additive-symbols\"?: string | undefined;\n fallback?: string | undefined;\n negative?: string | undefined;\n pad?: string | undefined;\n prefix?: string | undefined;\n range?: Range | undefined;\n \"speak-as\"?: SpeakAs | undefined;\n suffix?: string | undefined;\n symbols?: string | undefined;\n system?: System | undefined;\n }\n\n export type CounterStyleFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<CounterStyle<TLength, TTime>>;\n\n export type CounterStyleHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<CounterStyleHyphen<TLength, TTime>>;\n\n export interface FontFace<TLength = (string & {}) | 0, TTime = string & {}> {\n MozFontFeatureSettings?: FontFeatureSettings | undefined;\n ascentOverride?: AscentOverride | undefined;\n descentOverride?: DescentOverride | undefined;\n fontDisplay?: FontDisplay | undefined;\n fontFamily?: string | undefined;\n fontFeatureSettings?: FontFeatureSettings | undefined;\n fontStretch?: FontStretch | undefined;\n fontStyle?: FontStyle | undefined;\n fontVariationSettings?: FontVariationSettings | undefined;\n fontWeight?: FontWeight | undefined;\n lineGapOverride?: LineGapOverride | undefined;\n sizeAdjust?: string | undefined;\n src?: string | undefined;\n unicodeRange?: string | undefined;\n }\n\n export interface FontFaceHyphen<TLength = (string & {}) | 0, TTime = string & {}> {\n \"-moz-font-feature-settings\"?: FontFeatureSettings | undefined;\n \"ascent-override\"?: AscentOverride | undefined;\n \"descent-override\"?: DescentOverride | undefined;\n \"font-display\"?: FontDisplay | undefined;\n \"font-family\"?: string | undefined;\n \"font-feature-settings\"?: FontFeatureSettings | undefined;\n \"font-stretch\"?: FontStretch | undefined;\n \"font-style\"?: FontStyle | undefined;\n \"font-variation-settings\"?: FontVariationSettings | undefined;\n \"font-weight\"?: FontWeight | undefined;\n \"line-gap-override\"?: LineGapOverride | undefined;\n \"size-adjust\"?: string | undefined;\n src?: string | undefined;\n \"unicode-range\"?: string | undefined;\n }\n\n export type FontFaceFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<FontFace<TLength, TTime>>;\n\n export type FontFaceHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<FontFaceHyphen<TLength, TTime>>;\n\n export interface FontPaletteValues<TLength = (string & {}) | 0, TTime = string & {}> {\n basePalette?: BasePalette | undefined;\n fontFamily?: string | undefined;\n overrideColors?: string | undefined;\n }\n\n export interface FontPaletteValuesHyphen<TLength = (string & {}) | 0, TTime = string & {}> {\n \"base-palette\"?: BasePalette | undefined;\n \"font-family\"?: string | undefined;\n \"override-colors\"?: string | undefined;\n }\n\n export type FontPaletteValuesFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<FontPaletteValues<TLength, TTime>>;\n\n export type FontPaletteValuesHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<FontPaletteValuesHyphen<TLength, TTime>>;\n\n export interface Page<TLength = (string & {}) | 0, TTime = string & {}> {\n bleed?: Bleed<TLength> | undefined;\n marks?: Marks | undefined;\n pageOrientation?: PageOrientation | undefined;\n size?: Size<TLength> | undefined;\n }\n\n export interface PageHyphen<TLength = (string & {}) | 0, TTime = string & {}> {\n bleed?: Bleed<TLength> | undefined;\n marks?: Marks | undefined;\n \"page-orientation\"?: PageOrientation | undefined;\n size?: Size<TLength> | undefined;\n }\n\n export type PageFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<Page<TLength, TTime>>;\n\n export type PageHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<PageHyphen<TLength, TTime>>;\n\n export interface Property<TLength = (string & {}) | 0, TTime = string & {}> {\n inherits?: Inherits | undefined;\n initialValue?: string | undefined;\n syntax?: string | undefined;\n }\n\n export interface PropertyHyphen<TLength = (string & {}) | 0, TTime = string & {}> {\n inherits?: Inherits | undefined;\n \"initial-value\"?: string | undefined;\n syntax?: string | undefined;\n }\n\n export type PropertyFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<Property<TLength, TTime>>;\n\n export type PropertyHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<PropertyHyphen<TLength, TTime>>;\n\n export interface ViewTransition<TLength = (string & {}) | 0, TTime = string & {}> {\n navigation?: Navigation | undefined;\n types?: Types | undefined;\n }\n\n export interface ViewTransitionHyphen<TLength = (string & {}) | 0, TTime = string & {}> {\n navigation?: Navigation | undefined;\n types?: Types | undefined;\n }\n\n export type ViewTransitionFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<ViewTransition<TLength, TTime>>;\n\n export type ViewTransitionHyphenFallback<TLength = (string & {}) | 0, TTime = string & {}> = Fallback<ViewTransitionHyphen<TLength, TTime>>;\n\n type Range = \"auto\" | (string & {});\n\n type SpeakAs = \"auto\" | \"bullets\" | \"numbers\" | \"spell-out\" | \"words\" | (string & {});\n\n type System = \"additive\" | \"alphabetic\" | \"cyclic\" | \"fixed\" | \"numeric\" | \"symbolic\" | (string & {});\n\n type FontFeatureSettings = \"normal\" | (string & {});\n\n type AscentOverride = \"normal\" | (string & {});\n\n type DescentOverride = \"normal\" | (string & {});\n\n type FontDisplay = \"auto\" | \"block\" | \"fallback\" | \"optional\" | \"swap\";\n\n type FontStretch = DataType.FontStretchAbsolute | (string & {});\n\n type FontStyle = \"italic\" | \"normal\" | \"oblique\" | (string & {});\n\n type FontVariationSettings = \"normal\" | (string & {});\n\n type FontWeight = DataType.FontWeightAbsolute | (string & {});\n\n type LineGapOverride = \"normal\" | (string & {});\n\n type BasePalette = \"dark\" | \"light\" | (number & {}) | (string & {});\n\n type Bleed<TLength> = TLength | \"auto\";\n\n type Marks = \"crop\" | \"cross\" | \"none\" | (string & {});\n\n type PageOrientation = \"rotate-left\" | \"rotate-right\" | \"upright\";\n\n type Size<TLength> = DataType.PageSize | TLength | \"auto\" | \"landscape\" | \"portrait\" | (string & {});\n\n type Inherits = \"false\" | \"true\";\n\n type Navigation = \"auto\" | \"none\";\n\n type Types = \"none\" | (string & {});\n}\n\n/**\n * **Attention!** Data types receives its name from the spec. E.g. `<color>` becomes `DataType.Color` and\n * `<content-distribution>` becomes `DataType.ContentDistribution`. It happens quite frequent that these data types\n * are split into several data types or/and name changes as the spec develops. So there's a risk that a minor/patch\n * update from `csstype` can break your typing if you're using the `DataType` namespace.\n */\nexport namespace DataType {\n type AbsoluteSize = \"large\" | \"medium\" | \"small\" | \"x-large\" | \"x-small\" | \"xx-large\" | \"xx-small\" | \"xxx-large\";\n\n type AnimateableFeature = \"contents\" | \"scroll-position\" | (string & {});\n\n type Attachment = \"fixed\" | \"local\" | \"scroll\";\n\n type Autospace = \"ideograph-alpha\" | \"ideograph-numeric\" | \"insert\" | \"no-autospace\" | \"punctuation\" | \"replace\" | (string & {});\n\n type BgClip = VisualBox | \"border-area\" | \"text\";\n\n type BgLayer<TLength> = BgPosition<TLength> | RepeatStyle | Attachment | VisualBox | \"none\" | (string & {});\n\n type BgPosition<TLength> = TLength | \"bottom\" | \"center\" | \"left\" | \"right\" | \"top\" | (string & {});\n\n type BgSize<TLength> = TLength | \"auto\" | \"contain\" | \"cover\" | (string & {});\n\n type BlendMode =\n | \"color\"\n | \"color-burn\"\n | \"color-dodge\"\n | \"darken\"\n | \"difference\"\n | \"exclusion\"\n | \"hard-light\"\n | \"hue\"\n | \"lighten\"\n | \"luminosity\"\n | \"multiply\"\n | \"normal\"\n | \"overlay\"\n | \"saturation\"\n | \"screen\"\n | \"soft-light\";\n\n type Color = ColorBase | SystemColor | DeprecatedSystemColor | \"currentColor\" | (string & {});\n\n type ColorBase = NamedColor | \"transparent\" | (string & {});\n\n type CompatAuto = \"button\" | \"checkbox\" | \"listbox\" | \"menulist\" | \"meter\" | \"progress-bar\" | \"radio\" | \"searchfield\" | \"textarea\";\n\n type CompositeStyle =\n | \"clear\"\n | \"copy\"\n | \"destination-atop\"\n | \"destination-in\"\n | \"destination-out\"\n | \"destination-over\"\n | \"source-atop\"\n | \"source-in\"\n | \"source-out\"\n | \"source-over\"\n | \"xor\";\n\n type CompositingOperator = \"add\" | \"exclude\" | \"intersect\" | \"subtract\";\n\n type ContentDistribution = \"space-around\" | \"space-between\" | \"space-evenly\" | \"stretch\";\n\n type ContentPosition = \"center\" | \"end\" | \"flex-end\" | \"flex-start\" | \"start\";\n\n type CubicBezierEasingFunction = \"ease\" | \"ease-in\" | \"ease-in-out\" | \"ease-out\" | (string & {});\n\n type CursorPredefined =\n | \"-moz-grab\"\n | \"-moz-zoom-in\"\n | \"-moz-zoom-out\"\n | \"-webkit-grab\"\n | \"-webkit-grabbing\"\n | \"-webkit-zoom-in\"\n | \"-webkit-zoom-out\"\n | \"alias\"\n | \"all-scroll\"\n | \"auto\"\n | \"cell\"\n | \"col-resize\"\n | \"context-menu\"\n | \"copy\"\n | \"crosshair\"\n | \"default\"\n | \"e-resize\"\n | \"ew-resize\"\n | \"grab\"\n | \"grabbing\"\n | \"help\"\n | \"move\"\n | \"n-resize\"\n | \"ne-resize\"\n | \"nesw-resize\"\n | \"no-drop\"\n | \"none\"\n | \"not-allowed\"\n | \"ns-resize\"\n | \"nw-resize\"\n | \"nwse-resize\"\n | \"pointer\"\n | \"progress\"\n | \"row-resize\"\n | \"s-resize\"\n | \"se-resize\"\n | \"sw-resize\"\n | \"text\"\n | \"vertical-text\"\n | \"w-resize\"\n | \"wait\"\n | \"zoom-in\"\n | \"zoom-out\";\n\n type Dasharray<TLength> = TLength | (string & {}) | (number & {});\n\n type DeprecatedSystemColor =\n | \"ActiveBorder\"\n | \"ActiveCaption\"\n | \"AppWorkspace\"\n | \"Background\"\n | \"ButtonHighlight\"\n | \"ButtonShadow\"\n | \"CaptionText\"\n | \"InactiveBorder\"\n | \"InactiveCaption\"\n | \"InactiveCaptionText\"\n | \"InfoBackground\"\n | \"InfoText\"\n | \"Menu\"\n | \"MenuText\"\n | \"Scrollbar\"\n | \"ThreeDDarkShadow\"\n | \"ThreeDFace\"\n | \"ThreeDHighlight\"\n | \"ThreeDLightShadow\"\n | \"ThreeDShadow\"\n | \"Window\"\n | \"WindowFrame\"\n | \"WindowText\";\n\n type DisplayInside = \"-ms-flexbox\" | \"-ms-grid\" | \"-webkit-flex\" | \"flex\" | \"flow\" | \"flow-root\" | \"grid\" | \"ruby\" | \"table\";\n\n type DisplayInternal =\n | \"ruby-base\"\n | \"ruby-base-container\"\n | \"ruby-text\"\n | \"ruby-text-container\"\n | \"table-caption\"\n | \"table-cell\"\n | \"table-column\"\n | \"table-column-group\"\n | \"table-footer-group\"\n | \"table-header-group\"\n | \"table-row\"\n | \"table-row-group\";\n\n type DisplayLegacy = \"-ms-inline-flexbox\" | \"-ms-inline-grid\" | \"-webkit-inline-flex\" | \"inline-block\" | \"inline-flex\" | \"inline-grid\" | \"inline-list-item\" | \"inline-table\";\n\n type DisplayOutside = \"block\" | \"inline\" | \"run-in\";\n\n type EasingFunction = CubicBezierEasingFunction | StepEasingFunction | \"linear\" | (string & {});\n\n type EastAsianVariantValues = \"jis04\" | \"jis78\" | \"jis83\" | \"jis90\" | \"simplified\" | \"traditional\";\n\n type FinalBgLayer<TLength> = BgPosition<TLength> | RepeatStyle | Attachment | VisualBox | Color | \"none\" | (string & {});\n\n type FontStretchAbsolute =\n | \"condensed\"\n | \"expanded\"\n | \"extra-condensed\"\n | \"extra-expanded\"\n | \"normal\"\n | \"semi-condensed\"\n | \"semi-expanded\"\n | \"ultra-condensed\"\n | \"ultra-expanded\"\n | (string & {});\n\n type FontWeightAbsolute = \"bold\" | \"normal\" | (number & {}) | (string & {});\n\n type GenericComplete = \"-apple-system\" | \"cursive\" | \"fantasy\" | \"math\" | \"monospace\" | \"sans-serif\" | \"serif\" | \"system-ui\";\n\n type GenericFamily = GenericComplete | GenericIncomplete | \"emoji\" | \"fangsong\";\n\n type GenericIncomplete = \"ui-monospace\" | \"ui-rounded\" | \"ui-sans-serif\" | \"ui-serif\";\n\n type GeometryBox = VisualBox | \"fill-box\" | \"margin-box\" | \"stroke-box\" | \"view-box\";\n\n type GridLine = \"auto\" | (string & {}) | (number & {});\n\n type LineStyle = \"dashed\" | \"dotted\" | \"double\" | \"groove\" | \"hidden\" | \"inset\" | \"none\" | \"outset\" | \"ridge\" | \"solid\";\n\n type LineWidth<TLength> = TLength | \"medium\" | \"thick\" | \"thin\";\n\n type MaskLayer<TLength> = Position<TLength> | RepeatStyle | GeometryBox | CompositingOperator | MaskingMode | \"no-clip\" | \"none\" | (string & {});\n\n type MaskingMode = \"alpha\" | \"luminance\" | \"match-source\";\n\n type NamedColor =\n | \"aliceblue\"\n | \"antiquewhite\"\n | \"aqua\"\n | \"aquamarine\"\n | \"azure\"\n | \"beige\"\n | \"bisque\"\n | \"black\"\n | \"blanchedalmond\"\n | \"blue\"\n | \"blueviolet\"\n | \"brown\"\n | \"burlywood\"\n | \"cadetblue\"\n | \"chartreuse\"\n | \"chocolate\"\n | \"coral\"\n | \"cornflowerblue\"\n | \"cornsilk\"\n | \"crimson\"\n | \"cyan\"\n | \"darkblue\"\n | \"darkcyan\"\n | \"darkgoldenrod\"\n | \"darkgray\"\n | \"darkgreen\"\n | \"darkgrey\"\n | \"darkkhaki\"\n | \"darkmagenta\"\n | \"darkolivegreen\"\n | \"darkorange\"\n | \"darkorchid\"\n | \"darkred\"\n | \"darksalmon\"\n | \"darkseagreen\"\n | \"darkslateblue\"\n | \"darkslategray\"\n | \"darkslategrey\"\n | \"darkturquoise\"\n | \"darkviolet\"\n | \"deeppink\"\n | \"deepskyblue\"\n | \"dimgray\"\n | \"dimgrey\"\n | \"dodgerblue\"\n | \"firebrick\"\n | \"floralwhite\"\n | \"forestgreen\"\n | \"fuchsia\"\n | \"gainsboro\"\n | \"ghostwhite\"\n | \"gold\"\n | \"goldenrod\"\n | \"gray\"\n | \"green\"\n | \"greenyellow\"\n | \"grey\"\n | \"honeydew\"\n | \"hotpink\"\n | \"indianred\"\n | \"indigo\"\n | \"ivory\"\n | \"khaki\"\n | \"lavender\"\n | \"lavenderblush\"\n | \"lawngreen\"\n | \"lemonchiffon\"\n | \"lightblue\"\n | \"lightcoral\"\n | \"lightcyan\"\n | \"lightgoldenrodyellow\"\n | \"lightgray\"\n | \"lightgreen\"\n | \"lightgrey\"\n | \"lightpink\"\n | \"lightsalmon\"\n | \"lightseagreen\"\n | \"lightskyblue\"\n | \"lightslategray\"\n | \"lightslategrey\"\n | \"lightsteelblue\"\n | \"lightyellow\"\n | \"lime\"\n | \"limegreen\"\n | \"linen\"\n | \"magenta\"\n | \"maroon\"\n | \"mediumaquamarine\"\n | \"mediumblue\"\n | \"mediumorchid\"\n | \"mediumpurple\"\n | \"mediumseagreen\"\n | \"mediumslateblue\"\n | \"mediumspringgreen\"\n | \"mediumturquoise\"\n | \"mediumvioletred\"\n | \"midnightblue\"\n | \"mintcream\"\n | \"mistyrose\"\n | \"moccasin\"\n | \"navajowhite\"\n | \"navy\"\n | \"oldlace\"\n | \"olive\"\n | \"olivedrab\"\n | \"orange\"\n | \"orangered\"\n | \"orchid\"\n | \"palegoldenrod\"\n | \"palegreen\"\n | \"paleturquoise\"\n | \"palevioletred\"\n | \"papayawhip\"\n | \"peachpuff\"\n | \"peru\"\n | \"pink\"\n | \"plum\"\n | \"powderblue\"\n | \"purple\"\n | \"rebeccapurple\"\n | \"red\"\n | \"rosybrown\"\n | \"royalblue\"\n | \"saddlebrown\"\n | \"salmon\"\n | \"sandybrown\"\n | \"seagreen\"\n | \"seashell\"\n | \"sienna\"\n | \"silver\"\n | \"skyblue\"\n | \"slateblue\"\n | \"slategray\"\n | \"slategrey\"\n | \"snow\"\n | \"springgreen\"\n | \"steelblue\"\n | \"tan\"\n | \"teal\"\n | \"thistle\"\n | \"tomato\"\n | \"turquoise\"\n | \"violet\"\n | \"wheat\"\n | \"white\"\n | \"whitesmoke\"\n | \"yellow\"\n | \"yellowgreen\";\n\n type OutlineLineStyle = \"dashed\" | \"dotted\" | \"double\" | \"groove\" | \"inset\" | \"none\" | \"outset\" | \"ridge\" | \"solid\";\n\n type PageSize = \"A3\" | \"A4\" | \"A5\" | \"B4\" | \"B5\" | \"JIS-B4\" | \"JIS-B5\" | \"ledger\" | \"legal\" | \"letter\";\n\n type Paint = Color | \"context-fill\" | \"context-stroke\" | \"none\" | (string & {});\n\n type PaintBox = VisualBox | \"fill-box\" | \"stroke-box\";\n\n type Position<TLength> = TLength | \"bottom\" | \"center\" | \"left\" | \"right\" | \"top\" | (string & {});\n\n type PositionArea =\n | \"block-end\"\n | \"block-start\"\n | \"bottom\"\n | \"center\"\n | \"end\"\n | \"inline-end\"\n | \"inline-start\"\n | \"left\"\n | \"right\"\n | \"self-block-end\"\n | \"self-block-start\"\n | \"self-end\"\n | \"self-inline-end\"\n | \"self-inline-start\"\n | \"self-start\"\n | \"span-all\"\n | \"span-block-end\"\n | \"span-block-start\"\n | \"span-bottom\"\n | \"span-end\"\n | \"span-inline-end\"\n | \"span-inline-start\"\n | \"span-left\"\n | \"span-right\"\n | \"span-self-block-end\"\n | \"span-self-block-start\"\n | \"span-self-end\"\n | \"span-self-inline-end\"\n | \"span-self-inline-start\"\n | \"span-self-start\"\n | \"span-start\"\n | \"span-top\"\n | \"span-x-end\"\n | \"span-x-self-end\"\n | \"span-x-self-start\"\n | \"span-x-start\"\n | \"span-y-end\"\n | \"span-y-self-end\"\n | \"span-y-self-start\"\n | \"span-y-start\"\n | \"start\"\n | \"top\"\n | \"x-end\"\n | \"x-self-end\"\n | \"x-self-start\"\n | \"x-start\"\n | \"y-end\"\n | \"y-self-end\"\n | \"y-self-start\"\n | \"y-start\"\n | (string & {});\n\n type Quote = \"close-quote\" | \"no-close-quote\" | \"no-open-quote\" | \"open-quote\";\n\n type RepeatStyle = \"no-repeat\" | \"repeat\" | \"repeat-x\" | \"repeat-y\" | \"round\" | \"space\" | (string & {});\n\n type SelfPosition = \"center\" | \"end\" | \"flex-end\" | \"flex-start\" | \"self-end\" | \"self-start\" | \"start\";\n\n type SingleAnimation<TTime> =\n | EasingFunction\n | SingleAnimationDirection\n | SingleAnimationFillMode\n | SingleAnimationTimeline\n | TTime\n | \"auto\"\n | \"infinite\"\n | \"none\"\n | \"paused\"\n | \"running\"\n | (string & {})\n | (number & {});\n\n type SingleAnimationComposition = \"accumulate\" | \"add\" | \"replace\";\n\n type SingleAnimationDirection = \"alternate\" | \"alternate-reverse\" | \"normal\" | \"reverse\";\n\n type SingleAnimationFillMode = \"backwards\" | \"both\" | \"forwards\" | \"none\";\n\n type SingleAnimationTimeline = \"auto\" | \"none\" | (string & {});\n\n type SingleTransition<TTime> = EasingFunction | TTime | \"all\" | \"allow-discrete\" | \"none\" | \"normal\" | (string & {});\n\n type StepEasingFunction = \"step-end\" | \"step-start\" | (string & {});\n\n type SystemColor =\n | \"AccentColor\"\n | \"AccentColorText\"\n | \"ActiveText\"\n | \"ButtonBorder\"\n | \"ButtonFace\"\n | \"ButtonText\"\n | \"Canvas\"\n | \"CanvasText\"\n | \"Field\"\n | \"FieldText\"\n | \"GrayText\"\n | \"Highlight\"\n | \"HighlightText\"\n | \"LinkText\"\n | \"Mark\"\n | \"MarkText\"\n | \"SelectedItem\"\n | \"SelectedItemText\"\n | \"VisitedText\";\n\n type SystemFamilyName = \"caption\" | \"icon\" | \"menu\" | \"message-box\" | \"small-caption\" | \"status-bar\";\n\n type TextEdge = \"cap\" | \"ex\" | \"ideographic\" | \"ideographic-ink\" | \"text\" | (string & {});\n\n type TimelineRangeName = \"contain\" | \"cover\" | \"entry\" | \"entry-crossing\" | \"exit\" | \"exit-crossing\";\n\n type TrackBreadth<TLength> = TLength | \"auto\" | \"max-content\" | \"min-content\" | (string & {});\n\n type TrySize = \"most-block-size\" | \"most-height\" | \"most-inline-size\" | \"most-width\";\n\n type TryTactic = \"flip-block\" | \"flip-inline\" | \"flip-start\" | (string & {});\n\n type VisualBox = \"border-box\" | \"content-box\" | \"padding-box\";\n}\n";
@@ -2183,7 +2283,7 @@ var comments = {
2183
2283
  var content$5 = "export interface Part {\n selector: string\n}\n\nexport interface Parts {\n [key: string]: Part\n}\n";
2184
2284
  //#endregion
2185
2285
  //#region src/artifacts/generated/pattern.d.ts.json
2186
- var content$4 = "import type { CssProperty, SystemStyleObject } from './system-types'\nimport type { TokenCategory } from '../tokens'\n\ntype Primitive = string | number | boolean | null | undefined\ntype LiteralUnion<T, K extends Primitive = string> = T | (K & Record<never, never>)\n\nexport type PatternProperty =\n | { type: 'property'; value: CssProperty; description?: string }\n | { type: 'enum'; value: string[]; description?: string }\n | { type: 'token'; value: TokenCategory; property?: CssProperty; description?: string }\n | { type: 'string' | 'boolean' | 'number'; description?: string }\n\nexport interface PatternHelpers {\n map: (value: any, fn: (value: string) => string | undefined) => any\n isCssUnit: (value: any) => boolean\n isCssVar: (value: any) => boolean\n isCssFunction: (value: any) => boolean\n}\n\nexport interface PatternProperties {\n [key: string]: PatternProperty\n}\n\ntype InferProps<T> = Record<LiteralUnion<keyof T>, any>\n\nexport type PatternDefaultValue<T> = Partial<InferProps<T>>\n\nexport type PatternDefaultValueFn<T> = (props: InferProps<T>) => PatternDefaultValue<T>\n\nexport interface PatternConfig<T extends PatternProperties = PatternProperties> {\n /**\n * The description of the pattern. This will be used in the JSDoc comment.\n */\n description?: string\n /**\n * The properties of the pattern.\n */\n properties?: T\n /**\n * The default values of the pattern.\n */\n defaultValues?: PatternDefaultValue<T> | PatternDefaultValueFn<T>\n /**\n * The css object this pattern will generate.\n */\n transform?: (props: InferProps<T>, helpers: PatternHelpers) => SystemStyleObject\n /**\n * Whether the pattern is deprecated.\n */\n deprecated?: boolean | string\n /**\n * Whether to only generate types for the specified properties.\n * This will disallow css properties\n */\n strict?: boolean\n /**\n * @experimental\n * Disallow certain css properties for this pattern\n */\n blocklist?: LiteralUnion<CssProperty>[]\n}\n";
2286
+ var content$4 = "import type { CssProperty, SystemStyleObject } from './system-types'\nimport type { TokenCategory } from '../tokens'\n\ntype Primitive = string | number | boolean | null | undefined\ntype LiteralUnion<T, K extends Primitive = string> = T | (K & Record<never, never>)\n\nexport type PatternProperty =\n | { type: 'property'; value: CssProperty; description?: string }\n | { type: 'enum'; value: string[]; description?: string }\n | { type: 'token'; value: TokenCategory; property?: CssProperty; description?: string }\n | { type: 'string' | 'boolean' | 'number'; description?: string }\n\nexport interface PatternHelpers {\n map: (value: any, fn: (value: string) => string | undefined) => any\n /**\n * The css variable reference for a token path, or `fallback` when the path names no token.\n *\n * `token('spacing.4', '4')` is `var(--spacing-4)` where that token exists and `'4'` where it\n * does not — so a pattern can accept either a token name or a raw css value without knowing\n * the theme.\n */\n token: (path: string, fallback?: string) => string | undefined\n isCssUnit: (value: any) => boolean\n isCssVar: (value: any) => boolean\n isCssFunction: (value: any) => boolean\n}\n\nexport interface PatternProperties {\n [key: string]: PatternProperty\n}\n\ntype InferProps<T> = Record<LiteralUnion<keyof T>, any>\n\nexport type PatternDefaultValue<T> = Partial<InferProps<T>>\n\nexport type PatternDefaultValueFn<T> = (props: InferProps<T>) => PatternDefaultValue<T>\n\nexport interface PatternConfig<T extends PatternProperties = PatternProperties> {\n /**\n * The description of the pattern. This will be used in the JSDoc comment.\n */\n description?: string\n /**\n * The properties of the pattern.\n */\n properties?: T\n /**\n * The default values of the pattern.\n */\n defaultValues?: PatternDefaultValue<T> | PatternDefaultValueFn<T>\n /**\n * The css object this pattern will generate.\n */\n transform?: (props: InferProps<T>, helpers: PatternHelpers) => SystemStyleObject\n /**\n * Whether the pattern is deprecated.\n */\n deprecated?: boolean | string\n /**\n * Which css properties this pattern accepts alongside its own `properties`.\n *\n * - `all` accepts any css property.\n * - `none` accepts only the pattern's declared `properties`.\n * - `{ except }` accepts any css property but the ones listed.\n *\n * One option because these were two — `strict: true` for \"none\" and an `@experimental`\n * `blocklist` for \"all but these\" — and the pair had an unrepresentable combination that\n * silently did nothing: the blocklist is applied only to the type that lists css\n * properties, which `strict: true` does not emit, so setting both dropped the blocklist.\n *\n * Types only. Nothing strips a blocked property at runtime — one passed anyway reaches\n * `transform` and emits css.\n *\n * @default 'all'\n */\n cssProps?: 'all' | 'none' | { except: LiteralUnion<CssProperty>[] }\n}\n";
2187
2287
  //#endregion
2188
2288
  //#region src/artifacts/generated/recipe.d.ts.json
2189
2289
  var content$3 = "import type { RecipeRule } from './static-css'\nimport type { SystemStyleObject, DistributiveOmit, Pretty } from './system-types'\n\ntype StringToBoolean<T> = T extends 'true' | 'false' ? boolean : T\n\nexport type RecipeVariantRecord = Record<any, Record<any, SystemStyleObject>>\n\nexport type RecipeSelection<T extends RecipeVariantRecord> = keyof any extends keyof T\n ? {}\n : {\n [K in keyof T]?: StringToBoolean<keyof T[K]> | undefined\n }\n\nexport type RecipeVariantFn<T extends RecipeVariantRecord> = (props?: RecipeSelection<T>) => string\n\n/**\n * Extract the variant as optional props from a `cva` function.\n * Intended to be used with a JSX component, prefer `RecipeVariant` for a more strict type.\n */\nexport type RecipeVariantProps<\n T extends RecipeVariantFn<RecipeVariantRecord> | SlotRecipeVariantFn<string, SlotRecipeVariantRecord<string>>,\n> = Pretty<Parameters<T>[0]>\n\n/**\n * Extract the variants from a `cva` function.\n */\nexport type RecipeVariant<\n T extends RecipeVariantFn<RecipeVariantRecord> | SlotRecipeVariantFn<string, SlotRecipeVariantRecord<string>>,\n> = Exclude<Pretty<Required<RecipeVariantProps<T>>>, undefined>\n\ntype RecipeVariantMap<T extends RecipeVariantRecord> = {\n [K in keyof T]: Array<keyof T[K]>\n}\n\n/* -----------------------------------------------------------------------------\n * Recipe / Standard\n * -----------------------------------------------------------------------------*/\n\nexport interface RecipeRuntimeFn<T extends RecipeVariantRecord> extends RecipeVariantFn<T> {\n __type: RecipeSelection<T>\n variantKeys: (keyof T)[]\n variantMap: RecipeVariantMap<T>\n raw: (props?: RecipeSelection<T>) => SystemStyleObject\n config: RecipeConfig<T>\n splitVariantProps<Props extends RecipeSelection<T>>(\n props: Props,\n ): [RecipeSelection<T>, Pretty<DistributiveOmit<Props, keyof T>>]\n getVariantProps: (props?: RecipeSelection<T>) => RecipeSelection<T>\n}\n\ntype OneOrMore<T> = T | Array<T>\n\nexport type RecipeCompoundSelection<T> = {\n [K in keyof T]?: OneOrMore<StringToBoolean<keyof T[K]>> | undefined\n}\n\nexport type RecipeCompoundVariant<T> = T & {\n css: SystemStyleObject\n}\n\nexport interface RecipeDefinition<T extends RecipeVariantRecord = RecipeVariantRecord> {\n /**\n * The base styles of the recipe.\n */\n base?: SystemStyleObject\n /**\n * The prefix every class this recipe emits is built from — `button` gives `button` for\n * the base styles and `button--size_sm` for a variant.\n *\n * Required for a recipe declared in `theme.recipes`, where it is the key it is declared\n * under. Optional for an inline `cva`, which is otherwise named by hashing its own\n * config: `cva_a1b2c3--size_sm`. Setting it buys readable class names and nothing else —\n * the CSS is identical either way.\n *\n * It has to be unique across every recipe in the build. Two recipes sharing a name emit\n * rules under the same selectors, and the later one wins for any variant they both\n * declare.\n */\n className?: string\n /**\n * Whether the recipe is deprecated.\n */\n deprecated?: boolean | string\n /**\n * The multi-variant styles of the recipe.\n */\n variants?: T\n /**\n * The default variants of the recipe.\n */\n defaultVariants?: RecipeSelection<T>\n /**\n * The styles to apply when a combination of variants is selected.\n */\n compoundVariants?: Pretty<RecipeCompoundVariant<RecipeCompoundSelection<T>>>[]\n}\n\nexport type RecipeCreatorFn = <T extends RecipeVariantRecord>(config: RecipeDefinition<T>) => RecipeRuntimeFn<T>\n\ninterface RecipeConfigMeta {\n /**\n * The description of the recipe. This will be used in the JSDoc comment.\n */\n description?: string\n /**\n * The jsx elements to track for this recipe. Can be string or Regexp.\n *\n * @default capitalize(recipe.name)\n * @example ['Button', 'Link', /Button$/]\n */\n jsx?: Array<string | RegExp>\n /**\n * Variants to pre-generate, will be include in the final `config.staticCss`\n */\n staticCss?: RecipeRule[]\n}\n\nexport interface RecipeConfig<T extends RecipeVariantRecord = RecipeVariantRecord>\n extends RecipeDefinition<T>, RecipeConfigMeta {\n /** Optional on `RecipeDefinition`, where an inline `cva` falls back to hashing its config. A recipe declared in `theme.recipes` always has one — the key it is declared under. */\n className: string\n}\n\n/* -----------------------------------------------------------------------------\n * Recipe / Slot\n * -----------------------------------------------------------------------------*/\n\ntype SlotRecord<S extends string, T> = Partial<Record<S, T>>\n\nexport type SlotRecipeVariantRecord<S extends string> = Record<any, Record<any, SlotRecord<S, SystemStyleObject>>>\n\nexport type SlotRecipeVariantFn<S extends string, T extends RecipeVariantRecord> = (\n props?: RecipeSelection<T>,\n) => SlotRecord<S, string>\n\nexport interface SlotRecipeRuntimeFn<\n S extends string,\n T extends SlotRecipeVariantRecord<S>,\n> extends SlotRecipeVariantFn<S, T> {\n raw: (props?: RecipeSelection<T>) => Record<S, SystemStyleObject>\n variantKeys: (keyof T)[]\n variantMap: RecipeVariantMap<T>\n /** The config this recipe was created from. */\n config: SlotRecipeDefinition<S, T>\n /** Each slot's constant class, for targeting a slot in the DOM. */\n classNameMap: Partial<Record<S, string>>\n /**\n * Which slots each variant writes styles for.\n *\n * A variant's styles reach a slot through a scope opened at an anchor, which covers every\n * slot in that anchor's subtree. A slot under no anchor — moved out by a portal, with no\n * second anchor named in `scopeRoots` — is not reached, and nothing at build time can\n * detect that. This says which slots a variant has to get to, so whatever a scope cannot\n * reach can be threaded by hand.\n */\n slotsAffectedBy: Record<keyof T, S[]>\n splitVariantProps<Props extends RecipeSelection<T>>(\n props: Props,\n ): [RecipeSelection<T>, Pretty<DistributiveOmit<Props, keyof T>>]\n getVariantProps: (props?: RecipeSelection<T>) => RecipeSelection<T>\n}\n\nexport type SlotRecipeCompoundVariant<S extends string, T> = T & {\n css: SlotRecord<S, SystemStyleObject>\n}\n\nexport interface SlotRecipeDefinition<\n S extends string = string,\n T extends SlotRecipeVariantRecord<S> = SlotRecipeVariantRecord<S>,\n> {\n /**\n * The prefix every class this recipe emits is built from, and the name to target its\n * slots in the DOM by — `checkbox` gives `checkbox__control` for a slot and\n * `checkbox__control--size_md` for that slot under a variant.\n *\n * Required for a recipe declared in `theme.slotRecipes`, where it is the key it is\n * declared under. Optional for an inline `sva`, which is otherwise named by hashing its\n * own config. Setting it buys readable class names and nothing else — the CSS is\n * identical either way.\n *\n * It has to be unique across every recipe in the build.\n */\n className?: string\n /**\n * Whether the recipe is deprecated.\n */\n deprecated?: boolean | string\n /**\n * The parts/slots of the recipe.\n */\n slots: S[] | Readonly<S[]>\n /**\n * The slots that enclose other slots, used to scope their variant styles.\n *\n * A slot recipe's variants are chosen once, at the top, but the slots that react to them\n * are authored by the consumer somewhere below. Naming the enclosing slots lets the build\n * emit their variant styles as rules scoped by a class those slots already carry, so\n * nothing has to be delivered to a slot at runtime and every other slot's class is a\n * constant.\n *\n * A list, because a portal is a real discontinuity in the tree and no CSS mechanism\n * crosses one. A `<Select>` occupies two disjoint subtrees — the trigger side under\n * `root`, the listbox side under a portaled `positioner` — and a variant writes styles\n * into both. One anchor can only ever reach one of them.\n *\n * ```ts\n * scopeRoots: ['root', 'positioner']\n * ```\n *\n * Each named slot takes variant props; every other slot's class is a constant. The build\n * emits each non-anchor slot's variant rules under *every* anchor, and only the anchor\n * that is genuinely an ancestor matches — so the DOM shape never has to be declared.\n *\n * Defaults to `['root']` when a slot by that name exists. Set `[]` to turn scoping off\n * and give every slot a variant class of its own, which is what a recipe whose slots are\n * siblings wants.\n *\n * A slot under *no* anchor is still unreachable, and nothing at build time can detect\n * that — reachability is a fact about the DOM. `recipe.slotsAffectedBy` says which slots\n * a variant writes to, for whatever still needs threading by hand.\n */\n scopeRoots?: S[] | Readonly<S[]>\n /**\n * The base styles of the recipe.\n */\n base?: SlotRecord<S, SystemStyleObject>\n /**\n * The multi-variant styles of the recipe.\n */\n variants?: T\n /**\n * The default variants of the recipe.\n */\n defaultVariants?: RecipeSelection<T>\n /**\n * The styles to apply when a combination of variants is selected.\n */\n compoundVariants?: Pretty<SlotRecipeCompoundVariant<S, RecipeCompoundSelection<T>>>[]\n}\n\nexport type SlotRecipeCreatorFn = <S extends string, T extends SlotRecipeVariantRecord<S>>(\n config: SlotRecipeDefinition<S, T>,\n) => SlotRecipeRuntimeFn<S, T>\n\nexport type SlotRecipeConfig<\n S extends string = string,\n T extends SlotRecipeVariantRecord<S> = SlotRecipeVariantRecord<S>,\n> = SlotRecipeDefinition<S, T> &\n RecipeConfigMeta & {\n /** Optional on `SlotRecipeDefinition`, where an inline `sva` falls back to hashing its config. A recipe declared in `theme.slotRecipes` always has one — the key it is declared under. */\n className: string\n }\n";
@@ -2582,7 +2682,7 @@ function generateTokenCss(ctx, sheet) {
2582
2682
  const allowed = staticCss?.themes;
2583
2683
  let themeVariants = [];
2584
2684
  if (allowed) {
2585
- const keys = Object.keys(config.themes ?? {});
2685
+ const keys = Object.keys(config.theme?.variants ?? {});
2586
2686
  themeVariants = allowed.includes("*") ? keys : keys.filter((key) => allowed.includes(key));
2587
2687
  }
2588
2688
  const themeConds = themeVariants.map((key) => conditions.getThemeName(key));
@@ -2746,7 +2846,7 @@ function getThemeCss(ctx, themeName) {
2746
2846
  return results.join("\n\n");
2747
2847
  }
2748
2848
  function generateThemes(ctx) {
2749
- const { themes } = ctx.config;
2849
+ const themes = ctx.config.theme?.variants;
2750
2850
  if (!themes) return;
2751
2851
  return Object.entries(themes).map(([name, _themeVariant]) => ({
2752
2852
  name: `theme-${name}`,
@@ -2758,7 +2858,7 @@ function generateThemes(ctx) {
2758
2858
  }));
2759
2859
  }
2760
2860
  function generateThemesIndex(ctx, files) {
2761
- const { themes } = ctx.config;
2861
+ const themes = ctx.config.theme?.variants;
2762
2862
  if (!themes) return;
2763
2863
  if (!files) return;
2764
2864
  const themeName = Object.keys(themes);
@@ -3111,19 +3211,40 @@ function setupPatterns(ctx, filters) {
3111
3211
  }])
3112
3212
  };
3113
3213
  }
3214
+ /**
3215
+ * The `styled-system/css` barrel.
3216
+ *
3217
+ * A deliberate list rather than `export *`, because two of the four modules also export
3218
+ * helpers the source transform writes, and a blanket re-export made those part of the
3219
+ * authoring API by accident. The runtime and the declaration file name different sets on
3220
+ * purpose — see the note in the emitted js.
3221
+ */
3114
3222
  function setupCssIndex(ctx) {
3115
3223
  const index = {
3116
3224
  js: outdent$1`
3117
- ${ctx.file.exportStar("./css")}
3118
- ${ctx.file.exportStar("./cx")}
3119
- ${ctx.file.exportStar("./cva")}
3120
- ${ctx.file.exportStar("./sva")}
3225
+ ${ctx.file.reExport("css, fallback, viewTransition", "./css")}
3226
+ ${ctx.file.reExport("cx", "./cx")}
3227
+ ${ctx.file.reExport("cva", "./cva")}
3228
+ ${ctx.file.reExport("sva, auditSlotScopes", "./sva")}
3229
+
3230
+ // Written by the source transform, never by hand. They are exported here because the
3231
+ // transform adds them to whatever \`styled-system/css\` import the file already has, so
3232
+ // this is the specifier its emitted calls resolve against.
3233
+ //
3234
+ // The declaration file below deliberately omits them. Folded code is rewritten in memory
3235
+ // during the bundler's transform and never typechecked, so a declaration here would buy
3236
+ // nothing but an autocomplete entry advertising them as API. Each stays fully typed in
3237
+ // the module that defines it, for anyone deep-importing on purpose.
3238
+ ${ctx.file.reExport("cssLeaf", "./css")}
3239
+ ${ctx.file.reExport("cvaPick, splitProps", "./cx")}
3121
3240
  `,
3122
3241
  dts: outdent$1`
3123
- ${ctx.file.exportTypeStar("./css")}
3124
- ${ctx.file.exportTypeStar("./cx")}
3125
- ${ctx.file.exportTypeStar("./cva")}
3126
- ${ctx.file.exportTypeStar("./sva")}
3242
+ ${ctx.file.reExportDts("css, fallback, viewTransition", "./css")}
3243
+ ${ctx.file.reExportDts("cx", "./cx")}
3244
+ ${ctx.file.reExportDts("cva", "./cva")}
3245
+ ${ctx.file.exportType("RecipeVariant, RecipeVariantProps", "./cva")}
3246
+ ${ctx.file.reExportDts("sva, auditSlotScopes", "./sva")}
3247
+ ${ctx.file.exportType("SlotScopeProblem, AuditSlotScopesOptions", "./sva")}
3127
3248
  `
3128
3249
  };
3129
3250
  return {
@@ -3139,8 +3260,7 @@ function setupCssIndex(ctx) {
3139
3260
  };
3140
3261
  }
3141
3262
  function setupThemes(ctx) {
3142
- const { themes } = ctx.config;
3143
- if (!themes) return;
3263
+ if (!ctx.config.theme?.variants) return;
3144
3264
  const files = generateThemes(ctx);
3145
3265
  if (!files) return;
3146
3266
  return {
@@ -3247,7 +3367,7 @@ const generateArtifacts = (ctx, ids) => {
3247
3367
  //#endregion
3248
3368
  //#region src/artifacts/css/global-css.ts
3249
3369
  const generateGlobalCss = (ctx, sheet) => {
3250
- const { globalCss = {} } = ctx.config;
3370
+ const globalCss = ctx.config.global?.css ?? {};
3251
3371
  sheet.processGlobalCss({ ":root": { "--made-with-bamboo": `'🎋'` } });
3252
3372
  sheet.processGlobalCss(globalCss);
3253
3373
  };
@@ -3684,7 +3804,7 @@ const generateThemeTokenGroups = (ctx, themeName, filterFn) => {
3684
3804
  }).filter(Boolean);
3685
3805
  };
3686
3806
  const generateThemesSpec = (ctx) => {
3687
- const themes = ctx.config.themes;
3807
+ const themes = ctx.config.theme?.variants;
3688
3808
  if (!themes || Object.keys(themes).length === 0) return void 0;
3689
3809
  return {
3690
3810
  type: "themes",
@@ -3790,7 +3910,8 @@ var Generator = class extends Context {
3790
3910
  * `keep` carries references this cannot see for itself; see `collectTokenReferences`.
3791
3911
  */
3792
3912
  pruneTokens = (sheet, keep, tokensReachableFromJs = true) => {
3793
- const pruneVars = this.config.pruneUnusedTokens ?? true;
3913
+ const pruneVars = (this.config.prune?.tokens ?? "reachable") !== "off";
3914
+ const pruneRegistrations = this.config.prune?.propertyRegistrations ?? true;
3794
3915
  const layers = sheet.layers;
3795
3916
  const result = pruneTokenVars({
3796
3917
  scan: [
@@ -3811,7 +3932,7 @@ var Generator = class extends Context {
3811
3932
  ...this.getThemeTokenVars(),
3812
3933
  ...keep ?? []
3813
3934
  ]),
3814
- registeredProperties: new Set(this.utility.customProperties.keys()),
3935
+ registeredProperties: pruneRegistrations ? new Set(this.utility.customProperties.keys()) : /* @__PURE__ */ new Set(),
3815
3936
  propertyTarget: layers.base
3816
3937
  });
3817
3938
  logger.debug("prune:tokens", `Removed ${result.removed} unused token css variable(s) and ${result.removedProperties} unused @property rule(s)`);
@@ -3826,7 +3947,7 @@ var Generator = class extends Context {
3826
3947
  * losing its reset rather than anything that reports itself.
3827
3948
  */
3828
3949
  prunePreflight = (sheet, rendered) => {
3829
- if (!this.config.prunePreflight) return;
3950
+ if (!this.config.prune?.preflight) return;
3830
3951
  const { preflight } = this.config;
3831
3952
  const scope = typeof preflight === "object" && preflight ? preflight.scope : void 0;
3832
3953
  const result = prunePreflight({
@@ -3845,7 +3966,7 @@ var Generator = class extends Context {
3845
3966
  * `keep` carries names this cannot see for itself; see `collectKeyframeReferences`.
3846
3967
  */
3847
3968
  pruneKeyframes = (sheet, keep) => {
3848
- if (!this.config.pruneUnusedKeyframes) return;
3969
+ if (!this.config.prune?.keyframes) return;
3849
3970
  const layers = sheet.layers;
3850
3971
  const keyframeNames = new Set(Object.keys(this.config.theme?.keyframes ?? {}));
3851
3972
  const result = pruneKeyframes({
@@ -3878,7 +3999,7 @@ var Generator = class extends Context {
3878
3999
  */
3879
4000
  getThemeKeyframeNames = (keyframeNames) => {
3880
4001
  const names = /* @__PURE__ */ new Set();
3881
- const themes = this.config.themes;
4002
+ const themes = this.config.theme?.variants;
3882
4003
  if (!themes || !keyframeNames.size) return names;
3883
4004
  for (const themeName of Object.keys(themes)) for (const token of getThemeCss(this, themeName).split(/[^\w-]+/)) if (keyframeNames.has(token)) names.add(token);
3884
4005
  return names;
@@ -3902,7 +4023,7 @@ var Generator = class extends Context {
3902
4023
  */
3903
4024
  getThemeTokenVars = () => {
3904
4025
  const names = /* @__PURE__ */ new Set();
3905
- const themes = this.config.themes;
4026
+ const themes = this.config.theme?.variants;
3906
4027
  if (!themes) return names;
3907
4028
  for (const themeName of Object.keys(themes)) for (const name of cssVarRefs(getThemeCss(this, themeName))) names.add(name);
3908
4029
  return names;
@@ -4022,7 +4143,7 @@ var Generator = class extends Context {
4022
4143
  });
4023
4144
  }
4024
4145
  const themes = [];
4025
- if (this.config.themes) for (const themeName of Object.keys(this.config.themes)) {
4146
+ if (this.config.theme?.variants) for (const themeName of Object.keys(this.config.theme?.variants)) {
4026
4147
  const css = getThemeCss(this, themeName);
4027
4148
  if (css.trim()) themes.push({
4028
4149
  type: "theme",
@@ -4087,4 +4208,4 @@ var Generator = class extends Context {
4087
4208
  };
4088
4209
  };
4089
4210
  //#endregion
4090
- export { Generator, getThemeCss };
4211
+ export { Generator, generatePackageExports, getThemeCss };