{"version":3,"file":"stylelint-bundle.min.js","sources":["../node_modules/postcss/lib/warning.js","../node_modules/postcss/lib/result.js","../node_modules/postcss-value-parser/lib/parse.js","../node_modules/postcss-value-parser/lib/walk.js","../node_modules/postcss-value-parser/lib/stringify.js","../node_modules/postcss-value-parser/lib/unit.js","../node_modules/postcss-value-parser/lib/index.js","../node_modules/is-plain-object/dist/is-plain-object.mjs","../node_modules/stylelint/lib/utils/validateTypes.mjs","../node_modules/stylelint/lib/utils/declarationValueIndex.mjs","../node_modules/stylelint/lib/utils/getDeclarationValue.mjs","../node_modules/stylelint/lib/utils/hasLessInterpolation.mjs","../node_modules/stylelint/lib/utils/hasPsvInterpolation.mjs","../node_modules/stylelint/lib/utils/hasScssInterpolation.mjs","../node_modules/stylelint/lib/utils/hasTplInterpolation.mjs","../node_modules/stylelint/lib/utils/hasInterpolation.mjs","../node_modules/stylelint/lib/utils/isStandardSyntaxValue.mjs","../node_modules/stylelint/lib/utils/matchesStringOrRegExp.mjs","../node_modules/stylelint/lib/utils/optionsMatches.mjs","../node_modules/stylelint/lib/utils/report.mjs","../node_modules/stylelint/lib/utils/ruleMessages.mjs","../node_modules/stylelint/lib/utils/setDeclarationValue.mjs","../node_modules/stylelint/lib/utils/arrayEqual.mjs","../node_modules/stylelint/lib/utils/validateOptions.mjs","../node_modules/stylelint/lib/rules/alpha-value-notation/index.mjs","../node_modules/stylelint/lib/rules/annotation-no-unknown/index.mjs","../node_modules/stylelint/lib/utils/isStandardSyntaxAtRule.mjs","../node_modules/stylelint/lib/utils/vendor.mjs","../node_modules/stylelint/lib/rules/at-rule-allowed-list/index.mjs","../node_modules/stylelint/lib/rules/at-rule-disallowed-list/index.mjs","../node_modules/stylelint/lib/utils/addEmptyLineBefore.mjs","../node_modules/stylelint/lib/utils/getPreviousNonSharedLineCommentNode.mjs","../node_modules/stylelint/lib/utils/hasEmptyLine.mjs","../node_modules/stylelint/lib/utils/typeGuards.mjs","../node_modules/stylelint/lib/utils/getNextNonSharedLineCommentNode.mjs","../node_modules/stylelint/lib/utils/isSharedLineComment.mjs","../node_modules/stylelint/lib/utils/isAfterComment.mjs","../node_modules/stylelint/lib/utils/hasBlock.mjs","../node_modules/stylelint/lib/utils/isBlocklessAtRuleAfterBlocklessAtRule.mjs","../node_modules/stylelint/lib/utils/isBlocklessAtRuleAfterSameNameBlocklessAtRule.mjs","../node_modules/stylelint/lib/utils/isFirstNested.mjs","../node_modules/stylelint/lib/utils/isFirstNodeOfRoot.mjs","../node_modules/stylelint/lib/utils/removeEmptyLinesBefore.mjs","../node_modules/stylelint/lib/rules/at-rule-empty-line-before/index.mjs","../node_modules/stylelint/lib/utils/uniteSets.mjs","../node_modules/stylelint/lib/reference/atKeywords.mjs","../node_modules/stylelint/lib/rules/at-rule-no-unknown/index.mjs","../node_modules/stylelint/lib/utils/isAutoprefixable.mjs","../node_modules/stylelint/lib/rules/at-rule-no-vendor-prefix/index.mjs","../node_modules/stylelint/lib/utils/validateObjectWithArrayProps.mjs","../node_modules/stylelint/lib/rules/at-rule-property-required-list/index.mjs","../node_modules/stylelint/lib/utils/createMapWithSet.mjs","../node_modules/stylelint/lib/utils/beforeBlockString.mjs","../node_modules/stylelint/lib/utils/configurationComment.mjs","../node_modules/stylelint/lib/rules/block-no-empty/index.mjs","../node_modules/stylelint/lib/utils/isStandardSyntaxFunction.mjs","../node_modules/stylelint/lib/utils/isStandardSyntaxColorFunction.mjs","../node_modules/stylelint/lib/rules/color-function-notation/index.mjs","../node_modules/stylelint/lib/utils/hasValidHex.mjs","../node_modules/stylelint/lib/utils/isValidHex.mjs","../node_modules/stylelint/lib/utils/isHexColor.mjs","../node_modules/stylelint/lib/rules/color-hex-alpha/index.mjs","../node_modules/stylelint/lib/utils/isIgnoredFunction.mjs","../node_modules/stylelint/lib/rules/color-hex-length/index.mjs","../node_modules/stylelint/lib/reference/properties.mjs","../node_modules/colord/index.mjs","../node_modules/colord/plugins/hwb.mjs","../node_modules/colord/plugins/lab.mjs","../node_modules/colord/plugins/lch.mjs","../node_modules/stylelint/lib/rules/color-named/colordUtils.mjs","../node_modules/colord/plugins/names.mjs","../node_modules/stylelint/lib/reference/functions.mjs","../node_modules/stylelint/lib/utils/hasColorFunction.mjs","../node_modules/stylelint/lib/reference/keywords.mjs","../node_modules/stylelint/lib/utils/hasNamedColor.mjs","../node_modules/stylelint/lib/rules/color-named/index.mjs","../node_modules/stylelint/lib/rules/color-no-hex/index.mjs","../node_modules/stylelint/lib/rules/color-no-invalid-hex/index.mjs","../node_modules/stylelint/lib/utils/isStandardSyntaxHexColor.mjs","../node_modules/stylelint/lib/utils/isStandardSyntaxComment.mjs","../node_modules/stylelint/lib/rules/comment-empty-line-before/index.mjs","../node_modules/stylelint/lib/rules/comment-no-empty/index.mjs","../node_modules/stylelint/lib/rules/comment-pattern/index.mjs","../node_modules/stylelint/lib/utils/isWhitespace.mjs","../node_modules/stylelint/lib/rules/comment-whitespace-inside/index.mjs","../node_modules/stylelint/lib/utils/containsString.mjs","../node_modules/stylelint/lib/rules/comment-word-disallowed-list/index.mjs","../node_modules/stylelint/lib/utils/atRuleParamIndex.mjs","../node_modules/stylelint/lib/rules/custom-media-pattern/index.mjs","../node_modules/stylelint/lib/utils/blockString.mjs","../node_modules/stylelint/lib/utils/rawNodeString.mjs","../node_modules/stylelint/lib/utils/isCustomProperty.mjs","../node_modules/stylelint/lib/utils/isSingleLineString.mjs","../node_modules/stylelint/lib/utils/isScssVariable.mjs","../node_modules/stylelint/lib/utils/isStandardSyntaxDeclaration.mjs","../node_modules/stylelint/lib/rules/custom-property-empty-line-before/index.mjs","../node_modules/stylelint/lib/rules/custom-property-no-missing-var-function/index.mjs","../node_modules/stylelint/lib/utils/isStandardSyntaxProperty.mjs","../node_modules/stylelint/lib/rules/custom-property-pattern/index.mjs","../node_modules/stylelint/lib/utils/eachDeclarationBlock.mjs","../node_modules/stylelint/lib/rules/declaration-block-no-duplicate-custom-properties/index.mjs","../node_modules/css-tree/dist/csstree.esm.js","../node_modules/stylelint/lib/rules/declaration-block-no-duplicate-properties/index.mjs","../node_modules/stylelint/lib/rules/declaration-block-no-redundant-longhand-properties/index.mjs","../node_modules/stylelint/lib/rules/declaration-block-no-shorthand-property-overrides/index.mjs","../node_modules/stylelint/lib/rules/declaration-block-single-line-max-declarations/index.mjs","../node_modules/stylelint/lib/utils/isAfterStandardPropertyDeclaration.mjs","../node_modules/stylelint/lib/rules/declaration-empty-line-before/index.mjs","../node_modules/stylelint/lib/utils/getImportantPosition.mjs","../node_modules/stylelint/lib/rules/declaration-no-important/index.mjs","../node_modules/stylelint/lib/utils/validateObjectWithProps.mjs","../node_modules/stylelint/lib/rules/declaration-property-max-values/index.mjs","../node_modules/stylelint/lib/utils/getDimension.mjs","../node_modules/stylelint/lib/utils/blurInterpolation.mjs","../node_modules/stylelint/lib/rules/declaration-property-unit-allowed-list/index.mjs","../node_modules/stylelint/lib/rules/declaration-property-unit-disallowed-list/index.mjs","../node_modules/stylelint/lib/rules/declaration-property-value-allowed-list/index.mjs","../node_modules/stylelint/lib/rules/declaration-property-value-disallowed-list/index.mjs","../node_modules/stylelint/lib/rules/declaration-property-value-no-unknown/index.mjs","../node_modules/stylelint/lib/utils/isNumbery.mjs","../node_modules/stylelint/lib/reference/units.mjs","../node_modules/stylelint/lib/utils/isValidFontSize.mjs","../node_modules/stylelint/lib/utils/isVariable.mjs","../node_modules/stylelint/lib/utils/findFontFamily.mjs","../node_modules/stylelint/lib/rules/font-family-name-quotes/index.mjs","../node_modules/stylelint/lib/rules/font-family-no-duplicate-names/index.mjs","../shim/process.js","../node_modules/postcss/lib/css-syntax-error.js","../node_modules/postcss/lib/symbols.js","../node_modules/postcss/lib/stringifier.js","../node_modules/postcss/lib/stringify.js","../node_modules/postcss/lib/node.js","../node_modules/postcss/lib/declaration.js","../shim/empty.mjs","../shim/url.js","../node_modules/postcss/node_modules/nanoid/non-secure/index.js","../node_modules/postcss/lib/input.js","../node_modules/postcss/lib/map-generator.js","../node_modules/postcss/lib/container.js","../node_modules/postcss/lib/comment.js","../node_modules/postcss/lib/document.js","../node_modules/postcss/lib/warn-once.js","../node_modules/postcss/lib/tokenize.js","../node_modules/postcss/lib/root.js","../node_modules/postcss/lib/at-rule.js","../node_modules/postcss/lib/list.js","../node_modules/postcss/lib/rule.js","../node_modules/postcss/lib/parser.js","../node_modules/postcss/lib/parse.js","../node_modules/postcss/lib/lazy-result.js","../node_modules/postcss/lib/no-work-result.js","../node_modules/postcss/lib/processor.js","../node_modules/postcss/lib/fromJSON.js","../node_modules/postcss/lib/postcss.js","../node_modules/postcss/lib/postcss.mjs","../node_modules/stylelint/lib/rules/font-family-no-missing-generic-family-keyword/index.mjs","../node_modules/stylelint/lib/rules/font-weight-notation/index.mjs","../node_modules/stylelint/lib/rules/function-allowed-list/index.mjs","../node_modules/stylelint/lib/rules/function-calc-no-unspaced-operator/index.mjs","../node_modules/stylelint/lib/rules/function-disallowed-list/index.mjs","../node_modules/stylelint/node_modules/balanced-match/index.js","../node_modules/stylelint/lib/utils/functionArgumentsSearch.mjs","../node_modules/stylelint/lib/rules/function-linear-gradient-no-nonstandard-direction/index.mjs","../node_modules/stylelint/lib/rules/function-name-case/index.mjs","../node_modules/@csstools/css-tokenizer/dist/index.mjs","../node_modules/@csstools/css-parser-algorithms/dist/index.mjs","../node_modules/stylelint/lib/rules/function-no-unknown/index.mjs","../node_modules/stylelint/lib/utils/isCustomFunction.mjs","../node_modules/stylelint/lib/utils/isStandardSyntaxUrl.mjs","../node_modules/stylelint/lib/rules/function-url-no-scheme-relative/index.mjs","../node_modules/stylelint/lib/utils/getAtRuleParams.mjs","../node_modules/stylelint/lib/rules/function-url-quotes/index.mjs","../node_modules/stylelint/lib/utils/getSchemeFromUrl.mjs","../node_modules/stylelint/lib/rules/function-url-scheme-allowed-list/index.mjs","../node_modules/stylelint/lib/rules/function-url-scheme-disallowed-list/index.mjs","../node_modules/stylelint/lib/rules/hue-degree-notation/index.mjs","../node_modules/stylelint/lib/utils/setAtRuleParams.mjs","../node_modules/stylelint/lib/rules/import-notation/index.mjs","../node_modules/stylelint/lib/utils/isStandardSyntaxSelector.mjs","../node_modules/stylelint/lib/rules/keyframe-block-no-duplicate-selectors/index.mjs","../node_modules/stylelint/lib/rules/keyframe-declaration-no-important/index.mjs","../node_modules/postcss-selector-parser/dist/util/unesc.js","../node_modules/postcss-selector-parser/dist/util/getProp.js","../node_modules/postcss-selector-parser/dist/util/ensureObject.js","../node_modules/postcss-selector-parser/dist/util/stripComments.js","../node_modules/postcss-selector-parser/dist/util/index.js","../node_modules/postcss-selector-parser/dist/selectors/node.js","../node_modules/postcss-selector-parser/dist/selectors/types.js","../node_modules/postcss-selector-parser/dist/selectors/container.js","../node_modules/postcss-selector-parser/dist/selectors/root.js","../node_modules/postcss-selector-parser/dist/selectors/selector.js","../node_modules/cssesc/cssesc.js","../node_modules/postcss-selector-parser/dist/selectors/className.js","../node_modules/postcss-selector-parser/dist/selectors/comment.js","../node_modules/postcss-selector-parser/dist/selectors/id.js","../node_modules/postcss-selector-parser/dist/selectors/namespace.js","../node_modules/postcss-selector-parser/dist/selectors/tag.js","../node_modules/postcss-selector-parser/dist/selectors/string.js","../node_modules/postcss-selector-parser/dist/selectors/pseudo.js","../node_modules/util-deprecate/node.js","../shim/util.js","../node_modules/postcss-selector-parser/dist/selectors/attribute.js","../node_modules/postcss-selector-parser/dist/selectors/universal.js","../node_modules/postcss-selector-parser/dist/selectors/combinator.js","../node_modules/postcss-selector-parser/dist/selectors/nesting.js","../node_modules/postcss-selector-parser/dist/sortAscending.js","../node_modules/postcss-selector-parser/dist/tokenTypes.js","../node_modules/postcss-selector-parser/dist/tokenize.js","../node_modules/postcss-selector-parser/dist/parser.js","../node_modules/postcss-selector-parser/dist/processor.js","../node_modules/postcss-selector-parser/dist/selectors/constructors.js","../node_modules/postcss-selector-parser/dist/selectors/guards.js","../node_modules/postcss-selector-parser/dist/selectors/index.js","../node_modules/postcss-selector-parser/dist/index.js","../node_modules/stylelint/lib/rules/keyframe-selector-notation/index.mjs","../node_modules/stylelint/lib/utils/transformSelector.mjs","../node_modules/stylelint/lib/rules/keyframes-name-pattern/index.mjs","../node_modules/stylelint/lib/utils/isStandardSyntaxKeyframesName.mjs","../node_modules/stylelint/lib/rules/length-zero-no-unit/index.mjs","../node_modules/stylelint/lib/utils/isMathFunction.mjs","../node_modules/stylelint/lib/rules/lightness-notation/index.mjs","../node_modules/stylelint/lib/utils/isStandardSyntaxRule.mjs","../node_modules/stylelint/lib/rules/max-nesting-depth/index.mjs","../node_modules/@csstools/media-query-list-parser/dist/index.mjs","../node_modules/stylelint/lib/utils/findMediaFeatureNames.mjs","../node_modules/stylelint/lib/utils/isCustomMediaQuery.mjs","../node_modules/stylelint/lib/rules/media-feature-name-allowed-list/index.mjs","../node_modules/stylelint/lib/rules/media-feature-name-disallowed-list/index.mjs","../node_modules/stylelint/lib/reference/mediaFeatures.mjs","../node_modules/stylelint/lib/rules/media-feature-name-no-unknown/index.mjs","../node_modules/stylelint/lib/rules/media-feature-name-no-vendor-prefix/index.mjs","../node_modules/stylelint/lib/utils/parseMediaQuery.mjs","../node_modules/stylelint/lib/rules/media-feature-name-unit-allowed-list/index.mjs","../node_modules/stylelint/lib/rules/media-feature-name-value-allowed-list/index.mjs","../node_modules/stylelint/lib/rules/media-feature-name-value-no-unknown/index.mjs","../node_modules/stylelint/lib/rules/media-feature-range-notation/index.mjs","../node_modules/stylelint/lib/rules/media-query-no-invalid/index.mjs","../node_modules/stylelint/lib/rules/named-grid-areas-no-invalid/utils/findNotContiguousOrRectangular.mjs","../node_modules/stylelint/lib/rules/named-grid-areas-no-invalid/index.mjs","../node_modules/@csstools/selector-specificity/dist/index.mjs","../node_modules/postcss-resolve-nested-selector/index.js","../node_modules/stylelint/lib/utils/findAtRuleContext.mjs","../node_modules/stylelint/lib/utils/nodeContextLookup.mjs","../node_modules/stylelint/lib/utils/parseSelector.mjs","../node_modules/stylelint/lib/reference/selectors.mjs","../node_modules/stylelint/lib/rules/no-descending-specificity/index.mjs","../node_modules/stylelint/lib/rules/no-duplicate-at-import-rules/index.mjs","../node_modules/stylelint/lib/utils/isKeyframeRule.mjs","../node_modules/stylelint/lib/rules/no-duplicate-selectors/index.mjs","../node_modules/stylelint/lib/rules/no-empty-source/index.mjs","../node_modules/stylelint/lib/rules/no-invalid-double-slash-comments/index.mjs","../node_modules/stylelint/lib/rules/no-invalid-position-at-import-rule/index.mjs","../node_modules/stylelint/lib/rules/no-irregular-whitespace/index.mjs","../node_modules/stylelint/lib/rules/no-unknown-animations/index.mjs","../node_modules/stylelint/lib/utils/findAnimationName.mjs","../node_modules/stylelint/lib/utils/parseCustomMediaQuery.mjs","../node_modules/stylelint/lib/rules/no-unknown-custom-media/index.mjs","../node_modules/stylelint/lib/rules/no-unknown-custom-properties/index.mjs","../node_modules/stylelint/lib/rules/number-max-precision/index.mjs","../node_modules/stylelint/lib/rules/property-allowed-list/index.mjs","../node_modules/stylelint/lib/rules/property-disallowed-list/index.mjs","../node_modules/known-css-properties/index.js","../node_modules/stylelint/lib/rules/property-no-unknown/index.mjs","../node_modules/stylelint/lib/rules/property-no-vendor-prefix/index.mjs","../node_modules/stylelint/lib/rules/rule-empty-line-before/index.mjs","../node_modules/stylelint/lib/utils/isAfterSingleLineComment.mjs","../node_modules/stylelint/lib/rules/rule-selector-property-disallowed-list/index.mjs","../node_modules/stylelint/lib/utils/hasANPlusBNotationPseudoClasses.mjs","../node_modules/stylelint/lib/rules/selector-anb-no-unmatchable/index.mjs","../node_modules/stylelint/lib/rules/selector-attribute-name-disallowed-list/index.mjs","../node_modules/stylelint/lib/rules/selector-attribute-operator-allowed-list/index.mjs","../node_modules/stylelint/lib/rules/selector-attribute-operator-disallowed-list/index.mjs","../node_modules/stylelint/lib/utils/getRuleSelector.mjs","../node_modules/stylelint/lib/utils/isValidIdentifier.mjs","../node_modules/stylelint/lib/rules/selector-attribute-quotes/index.mjs","../node_modules/stylelint/lib/utils/isKeyframeSelector.mjs","../node_modules/stylelint/lib/rules/selector-class-pattern/index.mjs","../node_modules/stylelint/lib/utils/isStandardSyntaxCombinator.mjs","../node_modules/stylelint/lib/rules/selector-combinator-allowed-list/index.mjs","../node_modules/stylelint/lib/rules/selector-combinator-disallowed-list/index.mjs","../node_modules/stylelint/lib/rules/selector-disallowed-list/index.mjs","../node_modules/stylelint/lib/rules/selector-id-pattern/index.mjs","../node_modules/stylelint/lib/utils/flattenNestedSelectorsForRule.mjs","../node_modules/stylelint/lib/utils/isContextFunctionalPseudoClass.mjs","../node_modules/stylelint/lib/utils/isNonNegativeInteger.mjs","../node_modules/stylelint/lib/rules/selector-max-attribute/index.mjs","../node_modules/stylelint/lib/rules/selector-max-class/index.mjs","../node_modules/stylelint/lib/rules/selector-max-combinators/index.mjs","../node_modules/stylelint/lib/rules/selector-max-compound-selectors/index.mjs","../node_modules/stylelint/lib/utils/pluralize.mjs","../node_modules/stylelint/lib/rules/selector-max-id/index.mjs","../node_modules/stylelint/lib/rules/selector-max-pseudo-class/index.mjs","../node_modules/stylelint/lib/rules/selector-max-specificity/index.mjs","../node_modules/stylelint/lib/utils/isCustomElement.mjs","../node_modules/stylelint/lib/utils/isStandardSyntaxTypeSelector.mjs","../node_modules/stylelint/lib/rules/selector-max-type/index.mjs","../node_modules/stylelint/lib/utils/isOnlyWhitespace.mjs","../node_modules/stylelint/lib/rules/selector-max-universal/index.mjs","../node_modules/stylelint/lib/rules/selector-nested-pattern/index.mjs","../node_modules/stylelint/lib/rules/selector-no-qualifying-type/index.mjs","../node_modules/stylelint/lib/reference/prefixes.mjs","../node_modules/stylelint/lib/utils/hasPrefix.mjs","../node_modules/stylelint/lib/rules/selector-no-vendor-prefix/index.mjs","../node_modules/stylelint/lib/rules/selector-not-notation/index.mjs","../node_modules/stylelint/lib/rules/selector-pseudo-class-allowed-list/index.mjs","../node_modules/stylelint/lib/rules/selector-pseudo-class-disallowed-list/index.mjs","../node_modules/stylelint/lib/rules/selector-pseudo-class-no-unknown/index.mjs","../node_modules/stylelint/lib/utils/isCustomSelector.mjs","../node_modules/stylelint/lib/rules/selector-pseudo-element-allowed-list/index.mjs","../node_modules/stylelint/lib/rules/selector-pseudo-element-colon-notation/index.mjs","../node_modules/stylelint/lib/rules/selector-pseudo-element-disallowed-list/index.mjs","../node_modules/stylelint/lib/rules/selector-pseudo-element-no-unknown/index.mjs","../node_modules/stylelint/lib/rules/selector-type-case/index.mjs","../node_modules/stylelint/lib/rules/selector-type-no-unknown/index.mjs","../node_modules/stylelint/lib/rules/shorthand-property-no-redundant-values/index.mjs","../node_modules/stylelint/lib/rules/string-no-newline/index.mjs","../node_modules/stylelint/lib/rules/time-min-milliseconds/index.mjs","../node_modules/stylelint/lib/rules/unit-allowed-list/index.mjs","../node_modules/stylelint/lib/utils/hasDimension.mjs","../node_modules/stylelint/lib/utils/isUnicodeRangeDescriptor.mjs","../node_modules/stylelint/lib/rules/unit-disallowed-list/index.mjs","../node_modules/stylelint/lib/rules/unit-no-unknown/index.mjs","../node_modules/stylelint/lib/rules/value-keyword-case/index.mjs","../node_modules/stylelint/lib/utils/isCounterIncrementCustomIdentValue.mjs","../node_modules/stylelint/lib/utils/isCounterResetCustomIdentValue.mjs","../node_modules/stylelint/lib/rules/value-no-vendor-prefix/index.mjs","../node_modules/stylelint/lib/utils/getStylelintRule.mjs","../node_modules/stylelint/lib/normalizeRuleSettings.mjs","../node_modules/stylelint/lib/utils/getModulePath.mjs","../node_modules/stylelint/lib/utils/configurationError.mjs","../node_modules/stylelint/lib/constants.mjs","../node_modules/stylelint/lib/normalizeAllRuleSettings.mjs","../node_modules/stylelint/lib/createStylelint.mjs","../node_modules/stylelint/lib/formatters/index.mjs","../node_modules/stylelint/lib/formatters/jsonFormatter.mjs","../node_modules/stylelint/lib/utils/reportCommentProblem.mjs","../node_modules/stylelint/lib/validateDisableSettings.mjs","../shim/getConfigForFile.mjs","../node_modules/stylelint/lib/getPostcssResult.mjs","../node_modules/stylelint/lib/utils/dynamicImport.mjs","../node_modules/stylelint/lib/utils/isPathNotFoundError.mjs","../shim/os.js","../node_modules/stylelint/lib/assignDisabledRanges.mjs","../node_modules/fastest-levenshtein/esm/mod.js","../node_modules/stylelint/lib/reportUnknownRuleNames.mjs","../node_modules/stylelint/lib/lintPostcssResult.mjs","../node_modules/stylelint/lib/utils/putIfAbsent.mjs","../node_modules/stylelint/lib/needlessDisables.mjs","../node_modules/stylelint/lib/reportDisables.mjs","../node_modules/stylelint/lib/lintSource.mjs","../shim/isPathIgnored.mjs","../node_modules/stylelint/lib/invalidScopeDisables.mjs","../node_modules/stylelint/lib/descriptionlessDisables.mjs","../node_modules/stylelint/lib/postcssPlugin.mjs","../node_modules/stylelint/lib/createPartialStylelintResult.mjs","../node_modules/stylelint/lib/prepareReturnValue.mjs","../node_modules/stylelint/lib/utils/filterFilePaths.mjs","../node_modules/stylelint/lib/index.mjs","../node_modules/stylelint/lib/standalone.mjs","../node_modules/stylelint/lib/utils/getFormatterOptionsText.mjs","../node_modules/stylelint/lib/createPlugin.mjs","../node_modules/stylelint/lib/resolveConfig.mjs","../node_modules/stylelint/lib/utils/checkAgainstRule.mjs","../node_modules/sugarss/stringifier.js","../node_modules/sugarss/preprocess.js","../node_modules/sugarss/tokenize.js","../node_modules/sugarss/parser.js","../node_modules/sugarss/index.js","../node_modules/sugarss/stringify.js","../node_modules/sugarss/parse.js","../node_modules/sugarss/liner.js","../index.js","../node_modules/postcss-safe-parser/lib/safe-parser.js","../node_modules/postcss-safe-parser/lib/safe-parse.js"],"sourcesContent":["'use strict'\n\nclass Warning {\n constructor(text, opts = {}) {\n this.type = 'warning'\n this.text = text\n\n if (opts.node && opts.node.source) {\n let range = opts.node.rangeBy(opts)\n this.line = range.start.line\n this.column = range.start.column\n this.endLine = range.end.line\n this.endColumn = range.end.column\n }\n\n for (let opt in opts) this[opt] = opts[opt]\n }\n\n toString() {\n if (this.node) {\n return this.node.error(this.text, {\n index: this.index,\n plugin: this.plugin,\n word: this.word\n }).message\n }\n\n if (this.plugin) {\n return this.plugin + ': ' + this.text\n }\n\n return this.text\n }\n}\n\nmodule.exports = Warning\nWarning.default = Warning\n","'use strict'\n\nlet Warning = require('./warning')\n\nclass Result {\n constructor(processor, root, opts) {\n this.processor = processor\n this.messages = []\n this.root = root\n this.opts = opts\n this.css = undefined\n this.map = undefined\n }\n\n toString() {\n return this.css\n }\n\n warn(text, opts = {}) {\n if (!opts.plugin) {\n if (this.lastPlugin && this.lastPlugin.postcssPlugin) {\n opts.plugin = this.lastPlugin.postcssPlugin\n }\n }\n\n let warning = new Warning(text, opts)\n this.messages.push(warning)\n\n return warning\n }\n\n warnings() {\n return this.messages.filter(i => i.type === 'warning')\n }\n\n get content() {\n return this.css\n }\n}\n\nmodule.exports = Result\nResult.default = Result\n","var openParentheses = \"(\".charCodeAt(0);\nvar closeParentheses = \")\".charCodeAt(0);\nvar singleQuote = \"'\".charCodeAt(0);\nvar doubleQuote = '\"'.charCodeAt(0);\nvar backslash = \"\\\\\".charCodeAt(0);\nvar slash = \"/\".charCodeAt(0);\nvar comma = \",\".charCodeAt(0);\nvar colon = \":\".charCodeAt(0);\nvar star = \"*\".charCodeAt(0);\nvar uLower = \"u\".charCodeAt(0);\nvar uUpper = \"U\".charCodeAt(0);\nvar plus = \"+\".charCodeAt(0);\nvar isUnicodeRange = /^[a-f0-9?-]+$/i;\n\nmodule.exports = function(input) {\n var tokens = [];\n var value = input;\n\n var next,\n quote,\n prev,\n token,\n escape,\n escapePos,\n whitespacePos,\n parenthesesOpenPos;\n var pos = 0;\n var code = value.charCodeAt(pos);\n var max = value.length;\n var stack = [{ nodes: tokens }];\n var balanced = 0;\n var parent;\n\n var name = \"\";\n var before = \"\";\n var after = \"\";\n\n while (pos < max) {\n // Whitespaces\n if (code <= 32) {\n next = pos;\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n token = value.slice(pos, next);\n\n prev = tokens[tokens.length - 1];\n if (code === closeParentheses && balanced) {\n after = token;\n } else if (prev && prev.type === \"div\") {\n prev.after = token;\n prev.sourceEndIndex += token.length;\n } else if (\n code === comma ||\n code === colon ||\n (code === slash &&\n value.charCodeAt(next + 1) !== star &&\n (!parent ||\n (parent && parent.type === \"function\" && parent.value !== \"calc\")))\n ) {\n before = token;\n } else {\n tokens.push({\n type: \"space\",\n sourceIndex: pos,\n sourceEndIndex: next,\n value: token\n });\n }\n\n pos = next;\n\n // Quotes\n } else if (code === singleQuote || code === doubleQuote) {\n next = pos;\n quote = code === singleQuote ? \"'\" : '\"';\n token = {\n type: \"string\",\n sourceIndex: pos,\n quote: quote\n };\n do {\n escape = false;\n next = value.indexOf(quote, next + 1);\n if (~next) {\n escapePos = next;\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += quote;\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n token.value = value.slice(pos + 1, next);\n token.sourceEndIndex = token.unclosed ? next : next + 1;\n tokens.push(token);\n pos = next + 1;\n code = value.charCodeAt(pos);\n\n // Comments\n } else if (code === slash && value.charCodeAt(pos + 1) === star) {\n next = value.indexOf(\"*/\", pos);\n\n token = {\n type: \"comment\",\n sourceIndex: pos,\n sourceEndIndex: next + 2\n };\n\n if (next === -1) {\n token.unclosed = true;\n next = value.length;\n token.sourceEndIndex = next;\n }\n\n token.value = value.slice(pos + 2, next);\n tokens.push(token);\n\n pos = next + 2;\n code = value.charCodeAt(pos);\n\n // Operation within calc\n } else if (\n (code === slash || code === star) &&\n parent &&\n parent.type === \"function\" &&\n parent.value === \"calc\"\n ) {\n token = value[pos];\n tokens.push({\n type: \"word\",\n sourceIndex: pos - before.length,\n sourceEndIndex: pos + token.length,\n value: token\n });\n pos += 1;\n code = value.charCodeAt(pos);\n\n // Dividers\n } else if (code === slash || code === comma || code === colon) {\n token = value[pos];\n\n tokens.push({\n type: \"div\",\n sourceIndex: pos - before.length,\n sourceEndIndex: pos + token.length,\n value: token,\n before: before,\n after: \"\"\n });\n before = \"\";\n\n pos += 1;\n code = value.charCodeAt(pos);\n\n // Open parentheses\n } else if (openParentheses === code) {\n // Whitespaces after open parentheses\n next = pos;\n do {\n next += 1;\n code = value.charCodeAt(next);\n } while (code <= 32);\n parenthesesOpenPos = pos;\n token = {\n type: \"function\",\n sourceIndex: pos - name.length,\n value: name,\n before: value.slice(parenthesesOpenPos + 1, next)\n };\n pos = next;\n\n if (name === \"url\" && code !== singleQuote && code !== doubleQuote) {\n next -= 1;\n do {\n escape = false;\n next = value.indexOf(\")\", next + 1);\n if (~next) {\n escapePos = next;\n while (value.charCodeAt(escapePos - 1) === backslash) {\n escapePos -= 1;\n escape = !escape;\n }\n } else {\n value += \")\";\n next = value.length - 1;\n token.unclosed = true;\n }\n } while (escape);\n // Whitespaces before closed\n whitespacePos = next;\n do {\n whitespacePos -= 1;\n code = value.charCodeAt(whitespacePos);\n } while (code <= 32);\n if (parenthesesOpenPos < whitespacePos) {\n if (pos !== whitespacePos + 1) {\n token.nodes = [\n {\n type: \"word\",\n sourceIndex: pos,\n sourceEndIndex: whitespacePos + 1,\n value: value.slice(pos, whitespacePos + 1)\n }\n ];\n } else {\n token.nodes = [];\n }\n if (token.unclosed && whitespacePos + 1 !== next) {\n token.after = \"\";\n token.nodes.push({\n type: \"space\",\n sourceIndex: whitespacePos + 1,\n sourceEndIndex: next,\n value: value.slice(whitespacePos + 1, next)\n });\n } else {\n token.after = value.slice(whitespacePos + 1, next);\n token.sourceEndIndex = next;\n }\n } else {\n token.after = \"\";\n token.nodes = [];\n }\n pos = next + 1;\n token.sourceEndIndex = token.unclosed ? next : pos;\n code = value.charCodeAt(pos);\n tokens.push(token);\n } else {\n balanced += 1;\n token.after = \"\";\n token.sourceEndIndex = pos + 1;\n tokens.push(token);\n stack.push(token);\n tokens = token.nodes = [];\n parent = token;\n }\n name = \"\";\n\n // Close parentheses\n } else if (closeParentheses === code && balanced) {\n pos += 1;\n code = value.charCodeAt(pos);\n\n parent.after = after;\n parent.sourceEndIndex += after.length;\n after = \"\";\n balanced -= 1;\n stack[stack.length - 1].sourceEndIndex = pos;\n stack.pop();\n parent = stack[balanced];\n tokens = parent.nodes;\n\n // Words\n } else {\n next = pos;\n do {\n if (code === backslash) {\n next += 1;\n }\n next += 1;\n code = value.charCodeAt(next);\n } while (\n next < max &&\n !(\n code <= 32 ||\n code === singleQuote ||\n code === doubleQuote ||\n code === comma ||\n code === colon ||\n code === slash ||\n code === openParentheses ||\n (code === star &&\n parent &&\n parent.type === \"function\" &&\n parent.value === \"calc\") ||\n (code === slash &&\n parent.type === \"function\" &&\n parent.value === \"calc\") ||\n (code === closeParentheses && balanced)\n )\n );\n token = value.slice(pos, next);\n\n if (openParentheses === code) {\n name = token;\n } else if (\n (uLower === token.charCodeAt(0) || uUpper === token.charCodeAt(0)) &&\n plus === token.charCodeAt(1) &&\n isUnicodeRange.test(token.slice(2))\n ) {\n tokens.push({\n type: \"unicode-range\",\n sourceIndex: pos,\n sourceEndIndex: next,\n value: token\n });\n } else {\n tokens.push({\n type: \"word\",\n sourceIndex: pos,\n sourceEndIndex: next,\n value: token\n });\n }\n\n pos = next;\n }\n }\n\n for (pos = stack.length - 1; pos; pos -= 1) {\n stack[pos].unclosed = true;\n stack[pos].sourceEndIndex = value.length;\n }\n\n return stack[0].nodes;\n};\n","module.exports = function walk(nodes, cb, bubble) {\n var i, max, node, result;\n\n for (i = 0, max = nodes.length; i < max; i += 1) {\n node = nodes[i];\n if (!bubble) {\n result = cb(node, i, nodes);\n }\n\n if (\n result !== false &&\n node.type === \"function\" &&\n Array.isArray(node.nodes)\n ) {\n walk(node.nodes, cb, bubble);\n }\n\n if (bubble) {\n cb(node, i, nodes);\n }\n }\n};\n","function stringifyNode(node, custom) {\n var type = node.type;\n var value = node.value;\n var buf;\n var customResult;\n\n if (custom && (customResult = custom(node)) !== undefined) {\n return customResult;\n } else if (type === \"word\" || type === \"space\") {\n return value;\n } else if (type === \"string\") {\n buf = node.quote || \"\";\n return buf + value + (node.unclosed ? \"\" : buf);\n } else if (type === \"comment\") {\n return \"/*\" + value + (node.unclosed ? \"\" : \"*/\");\n } else if (type === \"div\") {\n return (node.before || \"\") + value + (node.after || \"\");\n } else if (Array.isArray(node.nodes)) {\n buf = stringify(node.nodes, custom);\n if (type !== \"function\") {\n return buf;\n }\n return (\n value +\n \"(\" +\n (node.before || \"\") +\n buf +\n (node.after || \"\") +\n (node.unclosed ? \"\" : \")\")\n );\n }\n return value;\n}\n\nfunction stringify(nodes, custom) {\n var result, i;\n\n if (Array.isArray(nodes)) {\n result = \"\";\n for (i = nodes.length - 1; ~i; i -= 1) {\n result = stringifyNode(nodes[i], custom) + result;\n }\n return result;\n }\n return stringifyNode(nodes, custom);\n}\n\nmodule.exports = stringify;\n","var minus = \"-\".charCodeAt(0);\nvar plus = \"+\".charCodeAt(0);\nvar dot = \".\".charCodeAt(0);\nvar exp = \"e\".charCodeAt(0);\nvar EXP = \"E\".charCodeAt(0);\n\n// Check if three code points would start a number\n// https://www.w3.org/TR/css-syntax-3/#starts-with-a-number\nfunction likeNumber(value) {\n var code = value.charCodeAt(0);\n var nextCode;\n\n if (code === plus || code === minus) {\n nextCode = value.charCodeAt(1);\n\n if (nextCode >= 48 && nextCode <= 57) {\n return true;\n }\n\n var nextNextCode = value.charCodeAt(2);\n\n if (nextCode === dot && nextNextCode >= 48 && nextNextCode <= 57) {\n return true;\n }\n\n return false;\n }\n\n if (code === dot) {\n nextCode = value.charCodeAt(1);\n\n if (nextCode >= 48 && nextCode <= 57) {\n return true;\n }\n\n return false;\n }\n\n if (code >= 48 && code <= 57) {\n return true;\n }\n\n return false;\n}\n\n// Consume a number\n// https://www.w3.org/TR/css-syntax-3/#consume-number\nmodule.exports = function(value) {\n var pos = 0;\n var length = value.length;\n var code;\n var nextCode;\n var nextNextCode;\n\n if (length === 0 || !likeNumber(value)) {\n return false;\n }\n\n code = value.charCodeAt(pos);\n\n if (code === plus || code === minus) {\n pos++;\n }\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code < 48 || code > 57) {\n break;\n }\n\n pos += 1;\n }\n\n code = value.charCodeAt(pos);\n nextCode = value.charCodeAt(pos + 1);\n\n if (code === dot && nextCode >= 48 && nextCode <= 57) {\n pos += 2;\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code < 48 || code > 57) {\n break;\n }\n\n pos += 1;\n }\n }\n\n code = value.charCodeAt(pos);\n nextCode = value.charCodeAt(pos + 1);\n nextNextCode = value.charCodeAt(pos + 2);\n\n if (\n (code === exp || code === EXP) &&\n ((nextCode >= 48 && nextCode <= 57) ||\n ((nextCode === plus || nextCode === minus) &&\n nextNextCode >= 48 &&\n nextNextCode <= 57))\n ) {\n pos += nextCode === plus || nextCode === minus ? 3 : 2;\n\n while (pos < length) {\n code = value.charCodeAt(pos);\n\n if (code < 48 || code > 57) {\n break;\n }\n\n pos += 1;\n }\n }\n\n return {\n number: value.slice(0, pos),\n unit: value.slice(pos)\n };\n};\n","var parse = require(\"./parse\");\nvar walk = require(\"./walk\");\nvar stringify = require(\"./stringify\");\n\nfunction ValueParser(value) {\n if (this instanceof ValueParser) {\n this.nodes = parse(value);\n return this;\n }\n return new ValueParser(value);\n}\n\nValueParser.prototype.toString = function() {\n return Array.isArray(this.nodes) ? stringify(this.nodes) : \"\";\n};\n\nValueParser.prototype.walk = function(cb, bubble) {\n walk(this.nodes, cb, bubble);\n return this;\n};\n\nValueParser.unit = require(\"./unit\");\n\nValueParser.walk = walk;\n\nValueParser.stringify = stringify;\n\nmodule.exports = ValueParser;\n","/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexport { isPlainObject };\n","import { isPlainObject as _isPlainObject } from 'is-plain-object';\n\n/**\n * Checks if the value is a boolean or a Boolean object.\n * @param {unknown} value\n * @returns {value is boolean}\n */\nexport function isBoolean(value) {\n\treturn typeof value === 'boolean' || value instanceof Boolean;\n}\n\n/**\n * Checks if the value is a function or a Function object.\n * @param {unknown} value\n * @returns {value is Function}\n */\nexport function isFunction(value) {\n\treturn typeof value === 'function' || value instanceof Function;\n}\n\n/**\n * Checks if the value is *nullish*.\n * @see https://developer.mozilla.org/en-US/docs/Glossary/Nullish\n * @param {unknown} value\n * @returns {value is null | undefined}\n */\nexport function isNullish(value) {\n\treturn value == null;\n}\n\n/**\n * Checks if the value is a number or a Number object.\n * @param {unknown} value\n * @returns {value is number}\n */\nexport function isNumber(value) {\n\treturn typeof value === 'number' || value instanceof Number;\n}\n\n/**\n * Checks if the value is an object.\n * @param {unknown} value\n * @returns {value is object}\n */\nexport function isObject(value) {\n\treturn value !== null && typeof value === 'object';\n}\n\n/**\n * Checks if the value is a regular expression.\n * @param {unknown} value\n * @returns {value is RegExp}\n */\nexport function isRegExp(value) {\n\treturn value instanceof RegExp;\n}\n\n/**\n * Checks if the value is a string or a String object.\n * @param {unknown} value\n * @returns {value is string}\n */\nexport function isString(value) {\n\treturn typeof value === 'string' || value instanceof String;\n}\n\n/**\n * Checks if the value is a plain object.\n * @param {unknown} value\n * @returns {value is Record}\n */\nexport function isPlainObject(value) {\n\treturn _isPlainObject(value);\n}\n\n/**\n * Assert that the value is truthy.\n * @param {unknown} value\n * @param {string} [message]\n * @returns {asserts value}\n */\nexport function assert(value, message = undefined) {\n\tif (message) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.assert(value, message);\n\t} else {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.assert(value);\n\t}\n}\n\n/**\n * Assert that the value is a function or a Function object.\n * @param {unknown} value\n * @returns {asserts value is Function}\n */\nexport function assertFunction(value) {\n\t// eslint-disable-next-line no-console\n\tconsole.assert(isFunction(value), `\"${value}\" must be a function`);\n}\n\n/**\n * Assert that the value is a number or a Number object.\n * @param {unknown} value\n * @returns {asserts value is number}\n */\nexport function assertNumber(value) {\n\t// eslint-disable-next-line no-console\n\tconsole.assert(isNumber(value), `\"${value}\" must be a number`);\n}\n\n/**\n * Assert that the value is a string or a String object.\n * @param {unknown} value\n * @returns {asserts value is string}\n */\nexport function assertString(value) {\n\t// eslint-disable-next-line no-console\n\tconsole.assert(isString(value), `\"${value}\" must be a string`);\n}\n","import { isObject, isString } from './validateTypes.mjs';\n\n/**\n * Get the index of a declaration's value\n *\n * @param {import('postcss').Declaration} decl\n * @returns {number}\n */\nexport default function declarationValueIndex(decl) {\n\tconst raws = decl.raws;\n\tconst prop = raws.prop;\n\n\treturn [\n\t\tisObject(prop) && 'prefix' in prop && prop.prefix,\n\t\t(isObject(prop) && 'raw' in prop && prop.raw) || decl.prop,\n\t\tisObject(prop) && 'suffix' in prop && prop.suffix,\n\t\traws.between || ':',\n\t\traws.value && 'prefix' in raws.value && raws.value.prefix,\n\t].reduce((/** @type {number} */ count, str) => {\n\t\tif (isString(str)) {\n\t\t\treturn count + str.length;\n\t\t}\n\n\t\treturn count;\n\t}, 0);\n}\n","/**\n * @param {import('postcss').Declaration} decl\n * @returns {string}\n */\nexport default function getDeclarationValue(decl) {\n\tconst raws = decl.raws;\n\n\treturn (raws.value && raws.value.raw) || decl.value;\n}\n","const HAS_LESS_INTERPOLATION = /@\\{.+?\\}/;\n\n/**\n * Check whether a string has less interpolation\n *\n * @param {string} string\n * @return {boolean} If `true`, a string has less interpolation\n */\nexport default function hasLessInterpolation(string) {\n\treturn HAS_LESS_INTERPOLATION.test(string);\n}\n","const HAS_PSV_INTERPOLATION = /\\$\\(.+?\\)/;\n\n/**\n * Check whether a string has postcss-simple-vars interpolation\n *\n * @param {string} string\n * @returns {boolean}\n */\nexport default function hasPsvInterpolation(string) {\n\treturn HAS_PSV_INTERPOLATION.test(string);\n}\n","const HAS_SCSS_INTERPOLATION = /#\\{.+?\\}/s;\n\n/**\n * Check whether a string has scss interpolation\n *\n * @param {string} string\n * @returns {boolean}\n */\nexport default function hasScssInterpolation(string) {\n\treturn HAS_SCSS_INTERPOLATION.test(string);\n}\n","const HAS_TPL_INTERPOLATION = /\\{.+?\\}/s;\n\n/**\n * Check whether a string has JS template literal interpolation or HTML-like template\n *\n * @param {string} string\n * @return {boolean} If `true`, a string has template literal interpolation\n */\nexport default function hasTplInterpolation(string) {\n\treturn HAS_TPL_INTERPOLATION.test(string);\n}\n","import hasLessInterpolation from './hasLessInterpolation.mjs';\nimport hasPsvInterpolation from './hasPsvInterpolation.mjs';\nimport hasScssInterpolation from './hasScssInterpolation.mjs';\nimport hasTplInterpolation from './hasTplInterpolation.mjs';\n\n/**\n * Check whether a string has interpolation\n *\n * @param {string} string\n * @return {boolean} If `true`, a string has interpolation\n */\nexport default function hasInterpolation(string) {\n\t// SCSS or Less interpolation\n\tif (\n\t\thasLessInterpolation(string) ||\n\t\thasScssInterpolation(string) ||\n\t\thasTplInterpolation(string) ||\n\t\thasPsvInterpolation(string)\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n","import hasInterpolation from './hasInterpolation.mjs';\n\n/**\n * Check whether a value is standard\n *\n * @param {string} value\n * @returns {boolean}\n */\nexport default function isStandardSyntaxValue(value) {\n\tlet normalizedValue = value;\n\n\t// Ignore operators before variables (example -$variable)\n\tif (/^[-+*/]/.test(value.charAt(0))) {\n\t\tnormalizedValue = normalizedValue.slice(1);\n\t}\n\n\t// SCSS variable (example $variable)\n\tif (normalizedValue.startsWith('$')) {\n\t\treturn false;\n\t}\n\n\t// SCSS namespace (example namespace.$variable)\n\tif (/^.+\\.\\$/.test(value)) {\n\t\treturn false;\n\t}\n\n\t// SCSS namespace (example namespace.function-name())\n\tif (/^.+\\.[-\\w]+\\(/.test(value)) {\n\t\treturn false;\n\t}\n\n\t// Less variable\n\tif (normalizedValue.startsWith('@')) {\n\t\treturn false;\n\t}\n\n\t// SCSS or Less interpolation\n\tif (hasInterpolation(normalizedValue)) {\n\t\treturn false;\n\t}\n\n\t// WebExtension replacement keyword used by Chrome/Firefox\n\t// more information: https://developer.chrome.com/extensions/i18n\n\t// and https://github.com/stylelint/stylelint/issues/4707\n\tif (/__MSG_\\S+__/.test(value)) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","/**\n * Compares a string to a second value that, if it fits a certain convention,\n * is converted to a regular expression before the comparison.\n * If it doesn't fit the convention, then two strings are compared.\n *\n * Any strings starting and ending with `/` are interpreted\n * as regular expressions.\n *\n * @typedef {{match: string, pattern: (string | RegExp), substring: string} | false} MatchResult\n *\n * @param {string | Array} input\n * @param {string | RegExp | Array} comparison\n * @returns {MatchResult}\n */\nexport default function matchesStringOrRegExp(input, comparison) {\n\tif (!Array.isArray(input)) {\n\t\treturn testAgainstStringOrRegExpOrArray(input, comparison);\n\t}\n\n\tfor (const inputItem of input) {\n\t\tconst testResult = testAgainstStringOrRegExpOrArray(inputItem, comparison);\n\n\t\tif (testResult) {\n\t\t\treturn testResult;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * @param {string} value\n * @param {string | RegExp | Array} comparison\n * @returns {MatchResult}\n */\nfunction testAgainstStringOrRegExpOrArray(value, comparison) {\n\tif (!Array.isArray(comparison)) {\n\t\treturn testAgainstStringOrRegExp(value, comparison);\n\t}\n\n\tfor (const comparisonItem of comparison) {\n\t\tconst testResult = testAgainstStringOrRegExp(value, comparisonItem);\n\n\t\tif (testResult) {\n\t\t\treturn testResult;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @returns {MatchResult}\n */\nfunction matchValue(value, pattern) {\n\tconst match = value.match(pattern);\n\n\treturn match ? { match: value, pattern, substring: match[0] ?? '' } : false;\n}\n\n/**\n * @param {string} value\n * @param {string | RegExp} comparison\n * @returns {MatchResult}\n */\nfunction testAgainstStringOrRegExp(value, comparison) {\n\t// If it's a RegExp, test directly\n\tif (comparison instanceof RegExp) {\n\t\treturn matchValue(value, comparison);\n\t}\n\n\t// Check if it's RegExp in a string\n\tconst regexFlag = 'i';\n\tconst comparisonIsRegex =\n\t\tcomparison.startsWith('/') &&\n\t\t(comparison.endsWith('/') || comparison.endsWith(`/${regexFlag}`));\n\n\t// If so, create a new RegExp from it\n\tif (comparisonIsRegex) {\n\t\tconst pattern = comparison.endsWith(regexFlag)\n\t\t\t? new RegExp(comparison.slice(1, -2), regexFlag)\n\t\t\t: new RegExp(comparison.slice(1, -1));\n\n\t\tconst result = matchValue(value, pattern);\n\n\t\tif (result) {\n\t\t\tresult.pattern = comparison;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// Otherwise, it's a string. Do a strict comparison\n\treturn value === comparison ? { match: value, pattern: comparison, substring: value } : false;\n}\n","import matchesStringOrRegExp from './matchesStringOrRegExp.mjs';\n\n/**\n * Check if an options object's propertyName contains a user-defined string or\n * regex that matches the passed in input.\n *\n * @param {{ [x: string]: any; }} options\n * @param {string} propertyName\n * @param {unknown} input\n *\n * @returns {boolean}\n */\nexport default function optionsMatches(options, propertyName, input) {\n\treturn Boolean(\n\t\toptions &&\n\t\t\toptions[propertyName] &&\n\t\t\ttypeof input === 'string' &&\n\t\t\tmatchesStringOrRegExp(input, options[propertyName]),\n\t);\n}\n","/**\n * Report a problem.\n *\n * This function accounts for `disabledRanges` attached to the result.\n * That is, if the reported problem is within a disabledRange,\n * it is ignored. Otherwise, it is attached to the result as a\n * postcss warning.\n *\n * It also accounts for the rule's severity.\n *\n * You *must* pass *either* a node or a line number.\n *\n * @type {import('stylelint').Utils['report']}\n */\nexport default function report(problem) {\n\tconst { ruleName, result, message, messageArgs, line, node, index, endIndex, word, severity } =\n\t\tproblem;\n\n\tresult.stylelint = result.stylelint || {\n\t\truleSeverities: {},\n\t\tcustomMessages: {},\n\t\truleMetadata: {},\n\t};\n\n\tconst ruleSeverityOption = severity || result.stylelint.ruleSeverities?.[ruleName];\n\n\tconst defaultSeverity = result.stylelint.config?.defaultSeverity || 'error';\n\n\tconst ruleSeverity =\n\t\ttypeof ruleSeverityOption === 'function'\n\t\t\t? ruleSeverityOption(...(messageArgs || [])) || defaultSeverity\n\t\t\t: ruleSeverityOption;\n\n\t// In quiet mode, mere warnings are ignored\n\tif (result.stylelint.quiet && ruleSeverity !== 'error') {\n\t\treturn;\n\t}\n\n\tconst { start } = (node && node.rangeBy({ index, endIndex })) || {};\n\n\t// If a line is not passed, use the node.rangeBy method to get the\n\t// line number that the complaint pertains to\n\tconst startLine = line || (start && start.line);\n\n\tif (!startLine) {\n\t\tthrow new Error(\n\t\t\t`The \"${ruleName}\" rule failed to pass either a node or a line number to the \\`report()\\` function.`,\n\t\t);\n\t}\n\n\tconst { ignoreDisables } = result.stylelint.config || {};\n\n\tif (result.stylelint.disabledRanges) {\n\t\tconst ranges =\n\t\t\tresult.stylelint.disabledRanges[ruleName] || result.stylelint.disabledRanges.all || [];\n\n\t\tfor (const range of ranges) {\n\t\t\tif (\n\t\t\t\t// If the problem is within a disabledRange,\n\t\t\t\t// and that disabledRange's rules include this one,\n\t\t\t\t// do not register a warning\n\t\t\t\trange.start <= startLine &&\n\t\t\t\t(range.end === undefined || range.end >= startLine) &&\n\t\t\t\t(!range.rules || range.rules.includes(ruleName))\n\t\t\t) {\n\t\t\t\t// Collect disabled warnings\n\t\t\t\t// Used to report `needlessDisables` in subsequent processing.\n\t\t\t\tconst disabledWarnings =\n\t\t\t\t\tresult.stylelint.disabledWarnings || (result.stylelint.disabledWarnings = []);\n\n\t\t\t\tdisabledWarnings.push({\n\t\t\t\t\trule: ruleName,\n\t\t\t\t\tline: startLine,\n\t\t\t\t});\n\n\t\t\t\tif (!ignoreDisables) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!result.stylelint.stylelintError && ruleSeverity === 'error') {\n\t\tresult.stylelint.stylelintError = true;\n\t}\n\n\tif (!result.stylelint.stylelintWarning && ruleSeverity === 'warning') {\n\t\tresult.stylelint.stylelintWarning = true;\n\t}\n\n\t/** @type {import('stylelint').WarningOptions} */\n\tconst warningProperties = {\n\t\tseverity: ruleSeverity,\n\t\trule: ruleName,\n\t};\n\n\tif (node) {\n\t\twarningProperties.node = node;\n\t}\n\n\tif (problem.start) {\n\t\twarningProperties.start = problem.start;\n\t} else if (typeof index === 'number') {\n\t\twarningProperties.index = index;\n\t}\n\n\tif (problem.end) {\n\t\twarningProperties.end = problem.end;\n\t} else if (typeof endIndex === 'number') {\n\t\twarningProperties.endIndex = endIndex;\n\t}\n\n\tif (word) {\n\t\twarningProperties.word = word;\n\t}\n\n\tconst { customMessages } = result.stylelint;\n\tconst warningMessage = buildWarningMessage(\n\t\t(customMessages && customMessages[ruleName]) || message,\n\t\tmessageArgs,\n\t);\n\n\tresult.warn(warningMessage, warningProperties);\n}\n\n/**\n * @param {import('stylelint').RuleMessage} message\n * @param {import('stylelint').Problem['messageArgs']} messageArgs\n * @returns {string}\n */\nfunction buildWarningMessage(message, messageArgs) {\n\tconst args = messageArgs || [];\n\n\tif (typeof message === 'string') {\n\t\treturn printfLike(message, ...args);\n\t}\n\n\treturn message(...args);\n}\n\n/**\n * @param {string} format\n * @param {Array} args\n * @returns {string}\n */\nfunction printfLike(format, ...args) {\n\treturn args.reduce((/** @type {string} */ result, arg) => {\n\t\treturn result.replace(/%[ds]/, String(arg));\n\t}, format);\n}\n","/**\n * @type {import('stylelint').Utils['ruleMessages']}\n */\nexport default function ruleMessages(ruleName, messages) {\n\t/** @type {import('stylelint').RuleMessages} */\n\tconst newMessages = {};\n\n\tfor (const [messageId, messageText] of Object.entries(messages)) {\n\t\tif (typeof messageText === 'string') {\n\t\t\tnewMessages[messageId] = `${messageText} (${ruleName})`;\n\t\t} else {\n\t\t\tnewMessages[messageId] = (...args) => `${messageText(...args)} (${ruleName})`;\n\t\t}\n\t}\n\n\t// @ts-expect-error -- TS2322: Type 'RuleMessages' is not assignable to type 'R'.\n\treturn newMessages;\n}\n","/** @typedef {import('postcss').Declaration} Declaration */\n\n/**\n * @param {Declaration} decl\n * @param {string} value\n * @returns {Declaration} The declaration that was passed in.\n */\nexport default function setDeclarationValue(decl, value) {\n\tconst raws = decl.raws;\n\n\tif (raws.value) {\n\t\traws.value.raw = value;\n\t} else {\n\t\tdecl.value = value;\n\t}\n\n\treturn decl;\n}\n","/**\n * Tests if two arrays are equal.\n *\n * @param {unknown} a\n * @param {unknown} b\n * @returns {boolean}\n */\nexport default function arrayEqual(a, b) {\n\tif (!Array.isArray(a) || !Array.isArray(b)) return false;\n\n\tif (a.length !== b.length) return false;\n\n\treturn a.every((elem, index) => elem === b[index]);\n}\n","import arrayEqual from './arrayEqual.mjs';\nimport { isPlainObject } from './validateTypes.mjs';\n\nconst IGNORED_OPTIONS = new Set(['severity', 'message', 'reportDisables', 'disableFix']);\n\n/** @typedef {import('stylelint').RuleOptions} RuleOptions */\n/** @typedef {import('stylelint').RuleOptionsPossible} RuleOptionsPossible */\n\n/**\n * @type {import('stylelint').Utils['validateOptions']}\n */\nexport default function validateOptions(result, ruleName, ...optionDescriptions) {\n\tlet noErrors = true;\n\n\tfor (const optionDescription of optionDescriptions) {\n\t\tvalidate(optionDescription, ruleName, complain);\n\t}\n\n\t/**\n\t * @param {string} message\n\t */\n\tfunction complain(message) {\n\t\tnoErrors = false;\n\t\tresult.warn(message, {\n\t\t\tstylelintType: 'invalidOption',\n\t\t});\n\t\tresult.stylelint = result.stylelint || {\n\t\t\tdisabledRanges: {},\n\t\t\truleSeverities: {},\n\t\t\tcustomMessages: {},\n\t\t\truleMetadata: {},\n\t\t};\n\t\tresult.stylelint.stylelintError = true;\n\t}\n\n\treturn noErrors;\n}\n\n/**\n * @param {RuleOptions} opts\n * @param {string} ruleName\n * @param {(message: string) => void} complain\n */\nfunction validate({ possible, actual, optional }, ruleName, complain) {\n\tif (actual === false && !ruleName.startsWith('report')) {\n\t\treturn complain(\n\t\t\t`Invalid option value \"false\" for rule \"${ruleName}\". Are you trying to disable this rule? If so use \"null\" instead`,\n\t\t);\n\t}\n\n\t// `null` means to turn off a rule.\n\tif (actual === null || arrayEqual(actual, [null])) {\n\t\treturn;\n\t}\n\n\tconst nothingPossible =\n\t\tpossible === undefined ||\n\t\tpossible === null ||\n\t\t(Array.isArray(possible) && possible.length === 0) ||\n\t\t(isPlainObject(possible) && Object.keys(possible).length === 0);\n\n\tif (nothingPossible && actual === true) {\n\t\treturn;\n\t}\n\n\tif (actual === undefined) {\n\t\tif (nothingPossible || optional) {\n\t\t\treturn;\n\t\t}\n\n\t\tcomplain(`Expected option value for rule \"${ruleName}\"`);\n\n\t\treturn;\n\t}\n\n\tif (nothingPossible) {\n\t\tif (optional) {\n\t\t\tcomplain(\n\t\t\t\t`Incorrect configuration for rule \"${ruleName}\". Rule should have \"possible\" values for options validation`,\n\t\t\t);\n\n\t\t\treturn;\n\t\t}\n\n\t\tcomplain(`Unexpected option value ${stringify(actual)} for rule \"${ruleName}\"`);\n\n\t\treturn;\n\t}\n\n\tif (typeof possible === 'function') {\n\t\tif (!possible(actual)) {\n\t\t\tcomplain(`Invalid option ${stringify(actual)} for rule \"${ruleName}\"`);\n\t\t}\n\n\t\treturn;\n\t}\n\n\t// If `possible` is an array instead of an object ...\n\tif (Array.isArray(possible)) {\n\t\tfor (const a of [actual].flat()) {\n\t\t\tif (isValid(possible, a)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcomplain(`Invalid option value ${stringify(a)} for rule \"${ruleName}\"`);\n\t\t}\n\n\t\treturn;\n\t}\n\n\t// If actual is NOT an object ...\n\tif (!isPlainObject(actual) || typeof actual !== 'object' || actual === null) {\n\t\tcomplain(\n\t\t\t`Invalid option value ${stringify(actual)} for rule \"${ruleName}\": should be an object`,\n\t\t);\n\n\t\treturn;\n\t}\n\n\tfor (const [optionName, optionValue] of Object.entries(actual)) {\n\t\tif (IGNORED_OPTIONS.has(optionName)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst possibleValue = possible && possible[optionName];\n\n\t\tif (!possibleValue) {\n\t\t\tcomplain(`Invalid option name \"${optionName}\" for rule \"${ruleName}\"`);\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const a of [optionValue].flat()) {\n\t\t\tif (isValid(possibleValue, a)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcomplain(`Invalid value ${stringify(a)} for option \"${optionName}\" of rule \"${ruleName}\"`);\n\t\t}\n\t}\n}\n\n/**\n * @param {RuleOptionsPossible | RuleOptionsPossible[]} possible\n * @param {unknown} actual\n * @returns {boolean}\n */\nfunction isValid(possible, actual) {\n\tfor (const possibility of [possible].flat()) {\n\t\tif (typeof possibility === 'function' && possibility(actual)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (actual === possibility) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * @param {unknown} value\n * @returns {string}\n */\nfunction stringify(value) {\n\tif (typeof value === 'string') {\n\t\treturn `\"${value}\"`;\n\t}\n\n\treturn `\"${JSON.stringify(value)}\"`;\n}\n","import valueParser from 'postcss-value-parser';\n\nimport { assert, isRegExp, isString } from '../../utils/validateTypes.mjs';\nimport declarationValueIndex from '../../utils/declarationValueIndex.mjs';\nimport getDeclarationValue from '../../utils/getDeclarationValue.mjs';\nimport isStandardSyntaxValue from '../../utils/isStandardSyntaxValue.mjs';\nimport optionsMatches from '../../utils/optionsMatches.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport setDeclarationValue from '../../utils/setDeclarationValue.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'alpha-value-notation';\n\nconst messages = ruleMessages(ruleName, {\n\texpected: (unfixed, fixed) => `Expected \"${unfixed}\" to be \"${fixed}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/alpha-value-notation',\n\tfixable: true,\n};\n\nconst ALPHA_PROPS =\n\t/^(?:opacity|shape-image-threshold|fill-opacity|flood-opacity|stop-opacity|stroke-opacity)$/i;\nconst ALPHA_FUNCTION = /(?:color|hsla?|rgba?|hwb|lab|lch|oklab|oklch)\\(/i;\nconst ALPHA_FUNCTION_NAME = /^(?:color|hsla?|rgba?|hwb|lab|lch|oklab|oklch)$/i;\nconst DIGIT = /\\d/;\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary, secondaryOptions, context) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(\n\t\t\tresult,\n\t\t\truleName,\n\t\t\t{\n\t\t\t\tactual: primary,\n\t\t\t\tpossible: ['number', 'percentage'],\n\t\t\t},\n\t\t\t{\n\t\t\t\tactual: secondaryOptions,\n\t\t\t\tpossible: {\n\t\t\t\t\texceptProperties: [isString, isRegExp],\n\t\t\t\t},\n\t\t\t\toptional: true,\n\t\t\t},\n\t\t);\n\n\t\tif (!validOptions) return;\n\n\t\tconst optionFuncs = Object.freeze({\n\t\t\tnumber: {\n\t\t\t\texpFunc: isNumber,\n\t\t\t\tfixFunc: asNumber,\n\t\t\t},\n\t\t\tpercentage: {\n\t\t\t\texpFunc: isPercentage,\n\t\t\t\tfixFunc: asPercentage,\n\t\t\t},\n\t\t});\n\n\t\troot.walkDecls((decl) => {\n\t\t\tconst declarationValue = getDeclarationValue(decl);\n\t\t\tconst isAlphaProp = ALPHA_PROPS.test(decl.prop);\n\n\t\t\tif (\n\t\t\t\t// If the property is not an alpha property\n\t\t\t\t(!isAlphaProp &&\n\t\t\t\t\t// And the value is not an alpha function\n\t\t\t\t\t!ALPHA_FUNCTION.test(declarationValue)) ||\n\t\t\t\t// Or the value does not contain digits\n\t\t\t\t!DIGIT.test(declarationValue)\n\t\t\t) {\n\t\t\t\t// Abort early\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet needsFix = false;\n\t\t\tconst parsedValue = valueParser(declarationValue);\n\n\t\t\tparsedValue.walk((node) => {\n\t\t\t\t/** @type {import('postcss-value-parser').Node | undefined} */\n\t\t\t\tlet alpha;\n\n\t\t\t\tif (isAlphaProp && DIGIT.test(node.value)) {\n\t\t\t\t\talpha = findAlphaInValue(node);\n\t\t\t\t} else if (node.type === 'function' && ALPHA_FUNCTION_NAME.test(node.value)) {\n\t\t\t\t\talpha = findAlphaInFunction(node);\n\t\t\t\t}\n\n\t\t\t\tif (!alpha) return;\n\n\t\t\t\tconst { value } = alpha;\n\n\t\t\t\tif (!isStandardSyntaxValue(value)) return;\n\n\t\t\t\tif (!isNumber(value) && !isPercentage(value)) return;\n\n\t\t\t\t/** @type {'number' | 'percentage'} */\n\t\t\t\tlet expectation = primary;\n\n\t\t\t\tif (optionsMatches(secondaryOptions, 'exceptProperties', decl.prop)) {\n\t\t\t\t\tif (expectation === 'number') {\n\t\t\t\t\t\texpectation = 'percentage';\n\t\t\t\t\t} else if (expectation === 'percentage') {\n\t\t\t\t\t\texpectation = 'number';\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (optionFuncs[expectation].expFunc(value)) return;\n\n\t\t\t\tconst fixed = optionFuncs[expectation].fixFunc(value);\n\t\t\t\tconst unfixed = value;\n\n\t\t\t\tif (context.fix) {\n\t\t\t\t\talpha.value = String(fixed);\n\t\t\t\t\tneedsFix = true;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst index = declarationValueIndex(decl) + alpha.sourceIndex;\n\t\t\t\tconst endIndex = index + alpha.value.length;\n\n\t\t\t\treport({\n\t\t\t\t\tmessage: messages.expected,\n\t\t\t\t\tmessageArgs: [unfixed, fixed],\n\t\t\t\t\tnode: decl,\n\t\t\t\t\tindex,\n\t\t\t\t\tendIndex,\n\t\t\t\t\tresult,\n\t\t\t\t\truleName,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tif (needsFix) {\n\t\t\t\tsetDeclarationValue(decl, parsedValue.toString());\n\t\t\t}\n\t\t});\n\t};\n};\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction asPercentage(value) {\n\tconst number = Number(value);\n\n\treturn `${Number((number * 100).toPrecision(3))}%`;\n}\n\n/**\n * @param {string} value\n * @returns {string}\n */\nfunction asNumber(value) {\n\tconst dimension = valueParser.unit(value);\n\n\tassert(dimension);\n\n\tconst number = Number(dimension.number);\n\n\treturn Number((number / 100).toPrecision(3)).toString();\n}\n\n/**\n * @template {import('postcss-value-parser').Node} T\n * @param {T} node\n * @returns {T | undefined}\n */\nfunction findAlphaInValue(node) {\n\treturn node.type === 'word' || node.type === 'function' ? node : undefined;\n}\n\n/**\n * @param {import('postcss-value-parser').FunctionNode} node\n * @returns {import('postcss-value-parser').Node | undefined}\n */\nfunction findAlphaInFunction(node) {\n\tconst legacySyntax = node.nodes.some(({ type, value }) => type === 'div' && value === ',');\n\n\tif (legacySyntax) {\n\t\tconst args = node.nodes.filter(({ type }) => type === 'word' || type === 'function');\n\n\t\tif (args.length === 4) return args[3];\n\n\t\treturn undefined;\n\t}\n\n\tconst slashNodeIndex = node.nodes.findIndex(({ type, value }) => type === 'div' && value === '/');\n\n\tif (slashNodeIndex !== -1) {\n\t\tconst nodesAfterSlash = node.nodes.slice(slashNodeIndex + 1, node.nodes.length);\n\n\t\treturn nodesAfterSlash.find(({ type }) => type === 'word');\n\t}\n\n\treturn undefined;\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction isPercentage(value) {\n\tconst dimension = valueParser.unit(value);\n\n\treturn dimension && dimension.unit === '%';\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction isNumber(value) {\n\tconst dimension = valueParser.unit(value);\n\n\treturn dimension && dimension.unit === '';\n}\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","import valueParser from 'postcss-value-parser';\n\nimport { isRegExp, isString } from '../../utils/validateTypes.mjs';\nimport getDeclarationValue from '../../utils/getDeclarationValue.mjs';\nimport isStandardSyntaxValue from '../../utils/isStandardSyntaxValue.mjs';\nimport optionsMatches from '../../utils/optionsMatches.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'annotation-no-unknown';\n\nconst messages = ruleMessages(ruleName, {\n\trejected: (annotation) => `Unexpected unknown annotation \"${annotation}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/annotation-no-unknown',\n};\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary, secondaryOptions) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(\n\t\t\tresult,\n\t\t\truleName,\n\t\t\t{ actual: primary },\n\t\t\t{\n\t\t\t\tactual: secondaryOptions,\n\t\t\t\tpossible: {\n\t\t\t\t\tignoreAnnotations: [isString, isRegExp],\n\t\t\t\t},\n\t\t\t\toptional: true,\n\t\t\t},\n\t\t);\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\troot.walkDecls(checkStatement);\n\n\t\t/**\n\t\t * @param {import('postcss').Declaration} decl\n\t\t */\n\t\tfunction checkStatement(decl) {\n\t\t\tif (!isStandardSyntaxValue(decl.value)) return;\n\n\t\t\tif (decl.important) return;\n\n\t\t\tif (!decl.value.includes('!')) return;\n\n\t\t\tconst parsedValue = valueParser(getDeclarationValue(decl));\n\n\t\t\tparsedValue.walk((node) => {\n\t\t\t\tif (!isAnnotation(node)) return;\n\n\t\t\t\tconst value = node.value;\n\t\t\t\tconst tokenValue = value.slice(1);\n\n\t\t\t\tif (optionsMatches(secondaryOptions, 'ignoreAnnotations', tokenValue)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treport({\n\t\t\t\t\tmessage: messages.rejected,\n\t\t\t\t\tmessageArgs: [value],\n\t\t\t\t\tnode: decl,\n\t\t\t\t\tresult,\n\t\t\t\t\truleName,\n\t\t\t\t\tword: value,\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * @param {valueParser.Node} node\n\t\t */\n\t\tfunction isAnnotation(node) {\n\t\t\treturn node.type === 'word' && node.value.startsWith('!');\n\t\t}\n\t};\n};\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","/**\n * Check whether a at-rule is standard\n *\n * @param {import('postcss').AtRule | import('postcss-less').AtRule} atRule postcss at-rule node\n * @return {boolean} If `true`, the declaration is standard\n */\nexport default function isStandardSyntaxAtRule(atRule) {\n\t// Ignore scss `@content` inside mixins\n\tif (!atRule.nodes && atRule.params === '') {\n\t\treturn false;\n\t}\n\n\t// Ignore Less mixins\n\tif ('mixin' in atRule && atRule.mixin) {\n\t\treturn false;\n\t}\n\n\t// Ignore Less detached ruleset `@detached-ruleset: { background: red; }; .top { @detached-ruleset(); }`\n\tif (\n\t\t('variable' in atRule && atRule.variable) ||\n\t\t(!atRule.nodes && atRule.raws.afterName === '' && atRule.params[0] === '(')\n\t) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","/**\n * Contains helpers for working with vendor prefixes.\n *\n * Copied from https://github.com/postcss/postcss/commit/777c55b5d2a10605313a4972888f4f32005f5ac2\n *\n * @namespace vendor\n */\nexport default {\n\t/**\n\t * Returns the vendor prefix extracted from an input string.\n\t *\n\t * @param {string} prop String with or without vendor prefix.\n\t *\n\t * @return {string} vendor prefix or empty string\n\t *\n\t * @example\n\t * vendor.prefix('-moz-tab-size') //=> '-moz-'\n\t * vendor.prefix('tab-size') //=> ''\n\t */\n\tprefix(prop) {\n\t\tconst match = prop.match(/^(-\\w+-)/);\n\n\t\tif (match) {\n\t\t\treturn match[0] || '';\n\t\t}\n\n\t\treturn '';\n\t},\n\n\t/**\n\t * Returns the input string stripped of its vendor prefix.\n\t *\n\t * @param {string} prop String with or without vendor prefix.\n\t *\n\t * @return {string} String name without vendor prefixes.\n\t *\n\t * @example\n\t * vendor.unprefixed('-moz-tab-size') //=> 'tab-size'\n\t */\n\tunprefixed(prop) {\n\t\treturn prop.replace(/^-\\w+-/, '');\n\t},\n};\n","import isStandardSyntaxAtRule from '../../utils/isStandardSyntaxAtRule.mjs';\nimport { isString } from '../../utils/validateTypes.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\nimport vendor from '../../utils/vendor.mjs';\n\nconst ruleName = 'at-rule-allowed-list';\n\nconst messages = ruleMessages(ruleName, {\n\trejected: (name) => `Unexpected at-rule \"${name}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/at-rule-allowed-list',\n};\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(result, ruleName, {\n\t\t\tactual: primary,\n\t\t\tpossible: [isString],\n\t\t});\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst primaryValues = [primary].flat();\n\n\t\troot.walkAtRules((atRule) => {\n\t\t\tconst name = atRule.name;\n\n\t\t\tif (!isStandardSyntaxAtRule(atRule)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (primaryValues.includes(vendor.unprefixed(name).toLowerCase())) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treport({\n\t\t\t\tmessage: messages.rejected,\n\t\t\t\tmessageArgs: [name],\n\t\t\t\tnode: atRule,\n\t\t\t\tresult,\n\t\t\t\truleName,\n\t\t\t\tword: `@${name}`,\n\t\t\t});\n\t\t});\n\t};\n};\n\nrule.primaryOptionArray = true;\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","import isStandardSyntaxAtRule from '../../utils/isStandardSyntaxAtRule.mjs';\nimport { isString } from '../../utils/validateTypes.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\nimport vendor from '../../utils/vendor.mjs';\n\nconst ruleName = 'at-rule-disallowed-list';\n\nconst messages = ruleMessages(ruleName, {\n\trejected: (name) => `Unexpected at-rule \"${name}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/at-rule-disallowed-list',\n};\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(result, ruleName, {\n\t\t\tactual: primary,\n\t\t\tpossible: [isString],\n\t\t});\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst primaryValues = [primary].flat();\n\n\t\troot.walkAtRules((atRule) => {\n\t\t\tconst name = atRule.name;\n\n\t\t\tif (!isStandardSyntaxAtRule(atRule)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!primaryValues.includes(vendor.unprefixed(name).toLowerCase())) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treport({\n\t\t\t\tmessage: messages.rejected,\n\t\t\t\tmessageArgs: [name],\n\t\t\t\tnode: atRule,\n\t\t\t\tresult,\n\t\t\t\truleName,\n\t\t\t\tword: `@${atRule.name}`,\n\t\t\t});\n\t\t});\n\t};\n};\n\nrule.primaryOptionArray = true;\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","/**\n * Add an empty line before a node. Mutates the node.\n *\n * @template {import('postcss').ChildNode} T\n * @param {T} node\n * @param {string} newline\n * @returns {T}\n */\nexport default function addEmptyLineBefore(node, newline) {\n\tconst { raws } = node;\n\n\tif (typeof raws.before !== 'string') {\n\t\treturn node;\n\t}\n\n\traws.before = !/\\r?\\n/.test(raws.before)\n\t\t? newline.repeat(2) + raws.before\n\t\t: raws.before.replace(/(\\r?\\n)/, `${newline}$1`);\n\n\treturn node;\n}\n","/** @typedef {import('postcss').Node} Node */\n\n/**\n * @param {Node} node\n */\nfunction getNodeLine(node) {\n\treturn node.source && node.source.start && node.source.start.line;\n}\n\n/**\n * @param {Node | undefined} node\n * @returns {Node | undefined}\n */\nexport default function getPreviousNonSharedLineCommentNode(node) {\n\tif (node === undefined) {\n\t\treturn undefined;\n\t}\n\n\tconst previousNode = node.prev();\n\n\tif (!previousNode || previousNode.type !== 'comment') {\n\t\treturn previousNode;\n\t}\n\n\tif (getNodeLine(node) === getNodeLine(previousNode)) {\n\t\treturn getPreviousNonSharedLineCommentNode(previousNode);\n\t}\n\n\tconst previousNode2 = previousNode.prev();\n\n\tif (previousNode2 && getNodeLine(previousNode) === getNodeLine(previousNode2)) {\n\t\treturn getPreviousNonSharedLineCommentNode(previousNode);\n\t}\n\n\treturn previousNode;\n}\n","const HAS_EMPTY_LINE = /\\n[\\r\\t ]*\\n/;\n\n/**\n * Check if a string contains at least one empty line\n *\n * @param {string | undefined} string\n * @returns {boolean}\n */\nexport default function hasEmptyLine(string) {\n\tif (string === '' || string === undefined) return false;\n\n\treturn HAS_EMPTY_LINE.test(string);\n}\n","/** @typedef {import('postcss').Node} Node */\n/** @typedef {import('postcss').Source} NodeSource */\n\n/**\n * @param {Node} node\n * @returns {node is import('postcss').Root}\n */\nexport function isRoot(node) {\n\treturn node.type === 'root';\n}\n\n/**\n * @param {Node} node\n * @returns {node is import('postcss').Rule}\n */\nexport function isRule(node) {\n\treturn node.type === 'rule';\n}\n\n/**\n * @param {Node} node\n * @returns {node is import('postcss').AtRule}\n */\nexport function isAtRule(node) {\n\treturn node.type === 'atrule';\n}\n\n/**\n * @param {Node} node\n * @returns {node is import('postcss').Comment}\n */\nexport function isComment(node) {\n\treturn node.type === 'comment';\n}\n\n/**\n * @param {Node} node\n * @returns {node is import('postcss').Declaration}\n */\nexport function isDeclaration(node) {\n\treturn node.type === 'decl';\n}\n\n/**\n * @param {Node} node\n * @returns {node is import('postcss').Document}\n */\nexport function isDocument(node) {\n\treturn node.type === 'document';\n}\n\n/**\n * @param {import('postcss-value-parser').Node} node\n * @returns {node is import('postcss-value-parser').DivNode}\n */\nexport function isValueDiv(node) {\n\treturn node.type === 'div';\n}\n\n/**\n * @param {import('postcss-value-parser').Node} node\n * @returns {node is import('postcss-value-parser').FunctionNode}\n */\nexport function isValueFunction(node) {\n\treturn node.type === 'function';\n}\n\n/**\n * @param {import('postcss-value-parser').Node} node\n * @returns {node is import('postcss-value-parser').SpaceNode}\n */\nexport function isValueSpace(node) {\n\treturn node.type === 'space';\n}\n\n/**\n * @param {import('postcss-value-parser').Node} node\n * @returns {node is import('postcss-value-parser').WordNode}\n */\nexport function isValueWord({ type }) {\n\treturn type === 'word';\n}\n\n/**\n * @param {Node} node\n * @returns {node is (Node & {source: NodeSource})}\n */\nexport function hasSource(node) {\n\treturn Boolean(node.source);\n}\n","/** @typedef {import('postcss').Node} Node */\n\n/**\n * @param {Node | void} node\n */\nfunction getNodeLine(node) {\n\treturn node && node.source && node.source.start && node.source.start.line;\n}\n\n/**\n * @param {Node | void} node\n * @returns {Node | void}\n */\nexport default function getNextNonSharedLineCommentNode(node) {\n\tif (node === undefined) {\n\t\treturn undefined;\n\t}\n\n\t/** @type {Node | void} */\n\tconst nextNode = node.next();\n\n\tif (!nextNode || nextNode.type !== 'comment') {\n\t\treturn nextNode;\n\t}\n\n\tif (\n\t\tgetNodeLine(node) === getNodeLine(nextNode) ||\n\t\tgetNodeLine(nextNode) === getNodeLine(nextNode.next())\n\t) {\n\t\treturn getNextNonSharedLineCommentNode(nextNode);\n\t}\n\n\treturn nextNode;\n}\n","import { isComment, isRoot } from './typeGuards.mjs';\nimport getNextNonSharedLineCommentNode from './getNextNonSharedLineCommentNode.mjs';\nimport getPreviousNonSharedLineCommentNode from './getPreviousNonSharedLineCommentNode.mjs';\n\n/** @typedef {import('postcss').Node} PostcssNode */\n\n/**\n *\n * @param {PostcssNode | void} a\n * @param {PostcssNode | void} b\n */\nfunction nodesShareLines(a, b) {\n\tconst endLine = a && a.source && a.source.end && a.source.end.line;\n\tconst startLine = b && b.source && b.source.start && b.source.start.line;\n\n\treturn endLine === startLine;\n}\n\n/**\n * @param {PostcssNode} node\n * @returns {boolean}\n */\nexport default function isSharedLineComment(node) {\n\tif (!isComment(node)) {\n\t\treturn false;\n\t}\n\n\tconst previousNonSharedLineCommentNode = getPreviousNonSharedLineCommentNode(node);\n\n\tif (nodesShareLines(previousNonSharedLineCommentNode, node)) {\n\t\treturn true;\n\t}\n\n\tconst nextNonSharedLineCommentNode = getNextNonSharedLineCommentNode(node);\n\n\tif (nextNonSharedLineCommentNode && nodesShareLines(node, nextNonSharedLineCommentNode)) {\n\t\treturn true;\n\t}\n\n\tconst parentNode = node.parent;\n\n\t// It's a first child and located on the same line as block start\n\tif (\n\t\tparentNode !== undefined &&\n\t\t!isRoot(parentNode) &&\n\t\tparentNode.index(node) === 0 &&\n\t\tnode.raws.before !== undefined &&\n\t\t!node.raws.before.includes('\\n')\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n","import isSharedLineComment from './isSharedLineComment.mjs';\n\n/**\n * @param {import('postcss').Node} node\n * @returns {boolean}\n */\nexport default function isAfterComment(node) {\n\tconst previousNode = node.prev();\n\n\tif (!previousNode || previousNode.type !== 'comment') {\n\t\treturn false;\n\t}\n\n\treturn !isSharedLineComment(previousNode);\n}\n","/**\n * Check if a statement has an block (empty or otherwise).\n *\n * @param {import('postcss').Container} statement\n * @return {boolean} True if `statement` has a block (empty or otherwise)\n */\nexport default function hasBlock(statement) {\n\treturn statement.nodes !== undefined;\n}\n","import getPreviousNonSharedLineCommentNode from './getPreviousNonSharedLineCommentNode.mjs';\nimport hasBlock from './hasBlock.mjs';\nimport { isAtRule } from './typeGuards.mjs';\n\n/**\n * @param {import('postcss').AtRule} atRule\n * @returns {boolean}\n */\nexport default function isBlocklessAtRuleAfterBlocklessAtRule(atRule) {\n\tif (atRule.type !== 'atrule') {\n\t\treturn false;\n\t}\n\n\tconst previousNode = getPreviousNonSharedLineCommentNode(atRule);\n\n\tif (previousNode === undefined) {\n\t\treturn false;\n\t}\n\n\treturn isAtRule(previousNode) && !hasBlock(previousNode) && !hasBlock(atRule);\n}\n","import getPreviousNonSharedLineCommentNode from './getPreviousNonSharedLineCommentNode.mjs';\nimport { isAtRule } from './typeGuards.mjs';\nimport isBlocklessAtRuleAfterBlocklessAtRule from './isBlocklessAtRuleAfterBlocklessAtRule.mjs';\n\n/**\n * @param {import('postcss').AtRule} atRule\n * @returns {boolean}\n */\nexport default function isBlocklessAtRuleAfterSameNameBlocklessAtRule(atRule) {\n\tif (!isBlocklessAtRuleAfterBlocklessAtRule(atRule)) {\n\t\treturn false;\n\t}\n\n\tconst previousNode = getPreviousNonSharedLineCommentNode(atRule);\n\n\tif (previousNode && isAtRule(previousNode)) {\n\t\treturn previousNode.name === atRule.name;\n\t}\n\n\treturn false;\n}\n","import { hasSource, isComment, isDocument, isRoot } from './typeGuards.mjs';\n\n/**\n * @param {import('postcss').Node} statement\n * @returns {boolean}\n */\nexport default function isFirstNested(statement) {\n\tconst parentNode = statement.parent;\n\n\tif (parentNode === undefined) {\n\t\treturn false;\n\t}\n\n\tif (isRoot(parentNode) && !isInDocument(parentNode)) {\n\t\treturn false;\n\t}\n\n\tif (statement === parentNode.first) {\n\t\treturn true;\n\t}\n\n\t/*\n\t * Search for the statement in the parent's nodes, ignoring comment\n\t * nodes on the same line as the parent's opening brace.\n\t */\n\n\tconst parentNodes = parentNode.nodes;\n\n\tif (!parentNodes) {\n\t\treturn false;\n\t}\n\n\tconst firstNode = parentNodes[0];\n\n\tif (!firstNode) {\n\t\treturn false;\n\t}\n\n\tif (\n\t\t!isComment(firstNode) ||\n\t\t(typeof firstNode.raws.before === 'string' && firstNode.raws.before.includes('\\n'))\n\t) {\n\t\treturn false;\n\t}\n\n\tif (!hasSource(firstNode) || !firstNode.source.start) {\n\t\treturn false;\n\t}\n\n\tconst openingBraceLine = firstNode.source.start.line;\n\n\tif (!firstNode.source.end || openingBraceLine !== firstNode.source.end.line) {\n\t\treturn false;\n\t}\n\n\tfor (const [index, node] of parentNodes.entries()) {\n\t\tif (index === 0) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (node === statement) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (\n\t\t\t!isComment(node) ||\n\t\t\t(hasSource(node) && node.source.end && node.source.end.line !== openingBraceLine)\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\t/* istanbul ignore next: Should always return in the loop */\n\treturn false;\n}\n\n/**\n * @param {import('postcss').Node} node\n * @returns {boolean}\n */\nfunction isInDocument({ parent }) {\n\treturn Boolean(parent && isDocument(parent));\n}\n","import { isRoot } from './typeGuards.mjs';\n\n/**\n * @param {import('postcss').Node} node\n * @returns {boolean}\n */\nexport default function isFirstNodeOfRoot(node) {\n\tif (isRoot(node)) return false;\n\n\tconst parentNode = node.parent;\n\n\tif (!parentNode) {\n\t\treturn false;\n\t}\n\n\treturn isRoot(parentNode) && node === parentNode.first;\n}\n","/**\n * Remove empty lines before a node. Mutates the node.\n *\n * @template {import('postcss').Node} T\n * @param {T} node\n * @param {string} newline\n * @returns {T}\n */\nexport default function removeEmptyLinesBefore(node, newline) {\n\tnode.raws.before = node.raws.before ? node.raws.before.replace(/(\\r?\\n\\s*\\n)+/g, newline) : '';\n\n\treturn node;\n}\n","import addEmptyLineBefore from '../../utils/addEmptyLineBefore.mjs';\nimport getPreviousNonSharedLineCommentNode from '../../utils/getPreviousNonSharedLineCommentNode.mjs';\nimport hasEmptyLine from '../../utils/hasEmptyLine.mjs';\nimport isAfterComment from '../../utils/isAfterComment.mjs';\nimport { isAtRule } from '../../utils/typeGuards.mjs';\nimport isBlocklessAtRuleAfterBlocklessAtRule from '../../utils/isBlocklessAtRuleAfterBlocklessAtRule.mjs';\nimport isBlocklessAtRuleAfterSameNameBlocklessAtRule from '../../utils/isBlocklessAtRuleAfterSameNameBlocklessAtRule.mjs';\nimport isFirstNested from '../../utils/isFirstNested.mjs';\nimport isFirstNodeOfRoot from '../../utils/isFirstNodeOfRoot.mjs';\nimport isStandardSyntaxAtRule from '../../utils/isStandardSyntaxAtRule.mjs';\nimport { isString } from '../../utils/validateTypes.mjs';\nimport optionsMatches from '../../utils/optionsMatches.mjs';\nimport removeEmptyLinesBefore from '../../utils/removeEmptyLinesBefore.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'at-rule-empty-line-before';\n\nconst messages = ruleMessages(ruleName, {\n\texpected: 'Expected empty line before at-rule',\n\trejected: 'Unexpected empty line before at-rule',\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/at-rule-empty-line-before',\n\tfixable: true,\n};\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary, secondaryOptions, context) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(\n\t\t\tresult,\n\t\t\truleName,\n\t\t\t{\n\t\t\t\tactual: primary,\n\t\t\t\tpossible: ['always', 'never'],\n\t\t\t},\n\t\t\t{\n\t\t\t\tactual: secondaryOptions,\n\t\t\t\tpossible: {\n\t\t\t\t\texcept: [\n\t\t\t\t\t\t'after-same-name',\n\t\t\t\t\t\t'inside-block',\n\t\t\t\t\t\t'blockless-after-same-name-blockless',\n\t\t\t\t\t\t'blockless-after-blockless',\n\t\t\t\t\t\t'first-nested',\n\t\t\t\t\t],\n\t\t\t\t\tignore: [\n\t\t\t\t\t\t'after-comment',\n\t\t\t\t\t\t'first-nested',\n\t\t\t\t\t\t'inside-block',\n\t\t\t\t\t\t'blockless-after-same-name-blockless',\n\t\t\t\t\t\t'blockless-after-blockless',\n\t\t\t\t\t],\n\t\t\t\t\tignoreAtRules: [isString],\n\t\t\t\t},\n\t\t\t\toptional: true,\n\t\t\t},\n\t\t);\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\t/** @type {'always' | 'never'} */\n\t\tconst expectation = primary;\n\n\t\troot.walkAtRules((atRule) => {\n\t\t\tconst isNested = atRule.parent && atRule.parent.type !== 'root';\n\n\t\t\t// Ignore the first node\n\t\t\tif (isFirstNodeOfRoot(atRule)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!isStandardSyntaxAtRule(atRule)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Return early if at-rule is to be ignored\n\t\t\tif (optionsMatches(secondaryOptions, 'ignoreAtRules', atRule.name)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Optionally ignore the expectation if the node is blockless\n\t\t\tif (\n\t\t\t\toptionsMatches(secondaryOptions, 'ignore', 'blockless-after-blockless') &&\n\t\t\t\tisBlocklessAtRuleAfterBlocklessAtRule(atRule)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Optionally ignore the node if it is the first nested\n\t\t\tif (optionsMatches(secondaryOptions, 'ignore', 'first-nested') && isFirstNested(atRule)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Optionally ignore the expectation if the node is blockless\n\t\t\t// and following another blockless at-rule with the same name\n\t\t\tif (\n\t\t\t\toptionsMatches(secondaryOptions, 'ignore', 'blockless-after-same-name-blockless') &&\n\t\t\t\tisBlocklessAtRuleAfterSameNameBlocklessAtRule(atRule)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Optionally ignore the expectation if the node is inside a block\n\t\t\tif (optionsMatches(secondaryOptions, 'ignore', 'inside-block') && isNested) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Optionally ignore the expectation if a comment precedes this node\n\t\t\tif (optionsMatches(secondaryOptions, 'ignore', 'after-comment') && isAfterComment(atRule)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst hasEmptyLineBefore = hasEmptyLine(atRule.raws.before);\n\t\t\tlet expectEmptyLineBefore = expectation === 'always';\n\n\t\t\t// Optionally reverse the expectation if any exceptions apply\n\t\t\tif (\n\t\t\t\t(optionsMatches(secondaryOptions, 'except', 'after-same-name') &&\n\t\t\t\t\tisAtRuleAfterSameNameAtRule(atRule)) ||\n\t\t\t\t(optionsMatches(secondaryOptions, 'except', 'inside-block') && isNested) ||\n\t\t\t\t(optionsMatches(secondaryOptions, 'except', 'first-nested') && isFirstNested(atRule)) ||\n\t\t\t\t(optionsMatches(secondaryOptions, 'except', 'blockless-after-blockless') &&\n\t\t\t\t\tisBlocklessAtRuleAfterBlocklessAtRule(atRule)) ||\n\t\t\t\t(optionsMatches(secondaryOptions, 'except', 'blockless-after-same-name-blockless') &&\n\t\t\t\t\tisBlocklessAtRuleAfterSameNameBlocklessAtRule(atRule))\n\t\t\t) {\n\t\t\t\texpectEmptyLineBefore = !expectEmptyLineBefore;\n\t\t\t}\n\n\t\t\t// Return if the expectation is met\n\t\t\tif (expectEmptyLineBefore === hasEmptyLineBefore) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Fix\n\t\t\tif (context.fix && context.newline) {\n\t\t\t\tif (expectEmptyLineBefore) {\n\t\t\t\t\taddEmptyLineBefore(atRule, context.newline);\n\t\t\t\t} else {\n\t\t\t\t\tremoveEmptyLinesBefore(atRule, context.newline);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst message = expectEmptyLineBefore ? messages.expected : messages.rejected;\n\n\t\t\treport({ message, node: atRule, result, ruleName });\n\t\t});\n\t};\n};\n\n/**\n * @param {import('postcss').AtRule} atRule\n */\nfunction isAtRuleAfterSameNameAtRule(atRule) {\n\tconst previousNode = getPreviousNonSharedLineCommentNode(atRule);\n\n\treturn previousNode && isAtRule(previousNode) && previousNode.name === atRule.name;\n}\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","/**\n * Unite two or more sets\n *\n * @param {Iterable[]} args\n * @see {@link https://github.com/microsoft/TypeScript/issues/57228|GitHub}\n */\nexport default function uniteSets(...args) {\n\treturn new Set([...args].reduce((result, set) => [...result, ...set], []));\n}\n","import uniteSets from '../utils/uniteSets.mjs';\n\n// https://www.w3.org/TR/css-nesting-1/#conditionals\nexport const nestingSupportedAtKeywords = new Set([\n\t'container',\n\t'layer',\n\t'media',\n\t'scope',\n\t'starting-style',\n\t'supports',\n]);\n\n// https://www.w3.org/TR/css-page-3/#syntax-page-selector\nconst pageMarginAtKeywords = new Set([\n\t'top-left-corner',\n\t'top-left',\n\t'top-center',\n\t'top-right',\n\t'top-right-corner',\n\t'bottom-left-corner',\n\t'bottom-left',\n\t'bottom-center',\n\t'bottom-right',\n\t'bottom-right-corner',\n\t'left-top',\n\t'left-middle',\n\t'left-bottom',\n\t'right-top',\n\t'right-middle',\n\t'right-bottom',\n]);\n\n// https://developer.mozilla.org/en/docs/Web/CSS/At-rule\nexport const atKeywords = uniteSets(nestingSupportedAtKeywords, pageMarginAtKeywords, [\n\t'annotation',\n\t'apply',\n\t'character-variant',\n\t'charset',\n\t'counter-style',\n\t'custom-media',\n\t'custom-selector',\n\t'document',\n\t'font-face',\n\t'font-feature-values',\n\t'import',\n\t'keyframes',\n\t'namespace',\n\t'nest',\n\t'ornaments',\n\t'page',\n\t'property',\n\t'scroll-timeline',\n\t'styleset',\n\t'stylistic',\n\t'swash',\n\t'viewport',\n]);\n","import { isRegExp, isString } from '../../utils/validateTypes.mjs';\nimport { atKeywords } from '../../reference/atKeywords.mjs';\nimport isStandardSyntaxAtRule from '../../utils/isStandardSyntaxAtRule.mjs';\nimport optionsMatches from '../../utils/optionsMatches.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\nimport vendor from '../../utils/vendor.mjs';\n\nconst ruleName = 'at-rule-no-unknown';\n\nconst messages = ruleMessages(ruleName, {\n\trejected: (atRule) => `Unexpected unknown at-rule \"${atRule}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/at-rule-no-unknown',\n};\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary, secondaryOptions) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(\n\t\t\tresult,\n\t\t\truleName,\n\t\t\t{ actual: primary },\n\t\t\t{\n\t\t\t\tactual: secondaryOptions,\n\t\t\t\tpossible: {\n\t\t\t\t\tignoreAtRules: [isString, isRegExp],\n\t\t\t\t},\n\t\t\t\toptional: true,\n\t\t\t},\n\t\t);\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\troot.walkAtRules((atRule) => {\n\t\t\tif (!isStandardSyntaxAtRule(atRule)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst name = atRule.name;\n\n\t\t\t// Return early if at-rule is to be ignored\n\t\t\tif (optionsMatches(secondaryOptions, 'ignoreAtRules', atRule.name)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (vendor.prefix(name) || atKeywords.has(name.toLowerCase())) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst atName = `@${name}`;\n\n\t\t\treport({\n\t\t\t\tmessage: messages.rejected,\n\t\t\t\tmessageArgs: [atName],\n\t\t\t\tnode: atRule,\n\t\t\t\truleName,\n\t\t\t\tresult,\n\t\t\t\tword: atName,\n\t\t\t});\n\t\t});\n\t};\n};\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","import vendor from './vendor.mjs';\n\n/**\n * Extract each list using the internal API of Autoprefixer 10.2.5.\n *\n * @see https://github.com/postcss/autoprefixer/tree/10.2.5\n *\n * @example\n * const autoprefixer = require('autoprefixer');\n * const Browsers = require('autoprefixer/lib/browsers');\n * const Prefixes = require('autoprefixer/lib/prefixes');\n * const utils = require('autoprefixer/lib/utils');\n *\n * const prefixes = new Prefixes(autoprefixer.data.prefixes, new Browsers(autoprefixer.data.browsers, []));\n */\n\n/**\n * @example\n * Object.keys(prefixes.remove).filter((s) => s.startsWith('@'));\n */\nconst AT_RULES = new Set([\n\t'@-khtml-keyframes',\n\t'@-moz-keyframes',\n\t'@-ms-keyframes',\n\t'@-ms-viewport',\n\t'@-o-keyframes',\n\t'@-o-viewport',\n\t'@-webkit-keyframes',\n\t'@resolution',\n]);\n\n/**\n * @example\n * prefixes.remove.selectors.map((s) => s.prefixed);\n */\nconst SELECTORS = new Set([\n\t':-moz-any-link',\n\t':-moz-full-screen',\n\t':-moz-placeholder',\n\t':-moz-placeholder-shown',\n\t':-moz-read-only',\n\t':-moz-read-write',\n\t':-ms-fullscreen',\n\t':-ms-input-placeholder',\n\t':-webkit-any-link',\n\t':-webkit-full-screen',\n\t'::-moz-placeholder',\n\t'::-moz-selection',\n\t'::-ms-input-placeholder',\n\t'::-webkit-backdrop',\n\t'::-webkit-input-placeholder',\n]);\n\n/**\n * @example\n * Object.entries(autoprefixer.data.prefixes)\n * .filter(([key, value]) => !value.selector && !value.props && !key.startsWith('@'))\n * .map(([key, value]) => key);\n */\nconst PROPERTIES = new Set([\n\t'align-content',\n\t'align-items',\n\t'align-self',\n\t'animation',\n\t'animation-delay',\n\t'animation-direction',\n\t'animation-duration',\n\t'animation-fill-mode',\n\t'animation-iteration-count',\n\t'animation-name',\n\t'animation-play-state',\n\t'animation-timing-function',\n\t'appearance',\n\t'backdrop-filter',\n\t'backface-visibility',\n\t'background-clip',\n\t'background-origin',\n\t'background-size',\n\t'border-block-end',\n\t'border-block-start',\n\t'border-bottom-left-radius',\n\t'border-bottom-right-radius',\n\t'border-image',\n\t'border-inline-end',\n\t'border-inline-start',\n\t'border-radius',\n\t'border-top-left-radius',\n\t'border-top-right-radius',\n\t'box-decoration-break',\n\t'box-shadow',\n\t'box-sizing',\n\t'break-after',\n\t'break-before',\n\t'break-inside',\n\t'clip-path',\n\t'color-adjust',\n\t'column-count',\n\t'column-fill',\n\t'column-gap',\n\t'column-rule',\n\t'column-rule-color',\n\t'column-rule-style',\n\t'column-rule-width',\n\t'column-span',\n\t'column-width',\n\t'columns',\n\t'filter',\n\t'flex',\n\t'flex-basis',\n\t'flex-direction',\n\t'flex-flow',\n\t'flex-grow',\n\t'flex-shrink',\n\t'flex-wrap',\n\t'flow-from',\n\t'flow-into',\n\t'font-feature-settings',\n\t'font-kerning',\n\t'font-language-override',\n\t'font-variant-ligatures',\n\t'grid-area',\n\t'grid-column',\n\t'grid-column-align',\n\t'grid-column-end',\n\t'grid-column-start',\n\t'grid-row',\n\t'grid-row-align',\n\t'grid-row-end',\n\t'grid-row-start',\n\t'grid-template',\n\t'grid-template-areas',\n\t'grid-template-columns',\n\t'grid-template-rows',\n\t'hyphens',\n\t'image-rendering',\n\t'justify-content',\n\t'margin-block-end',\n\t'margin-block-start',\n\t'margin-inline-end',\n\t'margin-inline-start',\n\t'mask',\n\t'mask-border',\n\t'mask-border-outset',\n\t'mask-border-repeat',\n\t'mask-border-slice',\n\t'mask-border-source',\n\t'mask-border-width',\n\t'mask-clip',\n\t'mask-composite',\n\t'mask-image',\n\t'mask-origin',\n\t'mask-position',\n\t'mask-repeat',\n\t'mask-size',\n\t'object-fit',\n\t'object-position',\n\t'order',\n\t'overscroll-behavior',\n\t'padding-block-end',\n\t'padding-block-start',\n\t'padding-inline-end',\n\t'padding-inline-start',\n\t'perspective',\n\t'perspective-origin',\n\t'place-self',\n\t'region-fragment',\n\t'scroll-snap-coordinate',\n\t'scroll-snap-destination',\n\t'scroll-snap-points-x',\n\t'scroll-snap-points-y',\n\t'scroll-snap-type',\n\t'shape-image-threshold',\n\t'shape-margin',\n\t'shape-outside',\n\t'tab-size',\n\t'text-align-last',\n\t'text-decoration',\n\t'text-decoration-color',\n\t'text-decoration-line',\n\t'text-decoration-skip',\n\t'text-decoration-skip-ink',\n\t'text-decoration-style',\n\t'text-emphasis',\n\t'text-emphasis-color',\n\t'text-emphasis-position',\n\t'text-emphasis-style',\n\t'text-orientation',\n\t'text-overflow',\n\t'text-size-adjust',\n\t'text-spacing',\n\t'touch-action',\n\t'transform',\n\t'transform-origin',\n\t'transform-style',\n\t'transition',\n\t'transition-delay',\n\t'transition-duration',\n\t'transition-property',\n\t'transition-timing-function',\n\t'user-select',\n\t'writing-mode',\n]);\n\n/**\n * This list is currently being used to compile all the prefixed values that can safely be unprefixed.\n * i.e. value-no-vendor-prefix autofix ought to be able to handle it appropriately\n * It was initially populated using the following example:\n * @example\n * Object.values(prefixes.remove)\n * .filter((p) => Array.isArray(p.values))\n * .flatMap((p) => p.values)\n * .map((p) => utils.removeNote(p.prefixed)) // normalize '-webkit- old'\n * .filter((p) => !p.endsWith('-')); // remove '-webkit-' only\n *\n * @see https://github.com/stylelint/stylelint/pull/5312/files#r636018013\n */\nconst PROPERTY_VALUES = new Set([\n\t'-moz-all',\n\t'-moz-calc',\n\t'-moz-crisp-edges',\n\t'-moz-element',\n\t'-moz-fit-content',\n\t'-moz-grab',\n\t'-moz-grabbing',\n\t'-moz-initial',\n\t'-moz-isolate',\n\t'-moz-isolate-override',\n\t'-moz-linear-gradient',\n\t'-moz-max-content',\n\t'-moz-min-content',\n\t'-moz-pre-wrap',\n\t'-moz-plaintext',\n\t'-moz-radial-gradient',\n\t'-moz-repeating-linear-gradient',\n\t'-moz-repeating-radial-gradient',\n\t'-moz-zoom-in',\n\t'-moz-zoom-out',\n\t'-ms-flexbox',\n\t'-ms-grid',\n\t'-ms-inline-grid',\n\t'-ms-linear-gradient',\n\t'-ms-radial-gradient',\n\t'-ms-repeating-linear-gradient',\n\t'-ms-repeating-radial-gradient',\n\t'-o-crisp-edges',\n\t'-o-linear-gradient',\n\t'-o-pre-wrap',\n\t'-o-radial-gradient',\n\t'-o-repeating-linear-gradient',\n\t'-o-repeating-radial-gradient',\n\t'-webkit-calc',\n\t'-webkit-cross-fade',\n\t'-webkit-filter',\n\t'-webkit-fit-content',\n\t'-webkit-flex',\n\t'-webkit-grab',\n\t'-webkit-grabbing',\n\t'-webkit-image-set',\n\t'-webkit-inline-flex',\n\t'-webkit-isolate',\n\t'-webkit-linear-gradient',\n\t'-webkit-max-content',\n\t'-webkit-min-content',\n\t'-webkit-plaintext',\n\t'-webkit-radial-gradient',\n\t'-webkit-repeating-linear-gradient',\n\t'-webkit-repeating-radial-gradient',\n\t'-webkit-sticky',\n\t'-webkit-zoom-in',\n\t'-webkit-zoom-out',\n\t'-xv-digits',\n\t'-xv-literal-punctuation',\n\t'-xv-no-punctuation',\n\t// Firefox does not support\n\t// ethiopic-halehame, ethiopic-halehame-am, ethiopic-halehame-ti-er and ethiopic-halehame-ti-et\n\t// without a -moz- prefix\n\t// see https://developer.mozilla.org/en-US/docs/Web/CSS/list-style-type\n\t'-moz-arabic-indic',\n\t'-moz-bengali',\n\t'-moz-cjk-earthly-branch',\n\t'-moz-cjk-heavenly-stem',\n\t'-moz-devanagari',\n\t'-moz-ethiopic-numeric',\n\t'-moz-gujarati',\n\t'-moz-gurmukhi',\n\t'-moz-hangul',\n\t'-moz-hangul-consonant',\n\t'-moz-japanese-formal',\n\t'-moz-japanese-informal',\n\t'-moz-kannada',\n\t'-moz-khmer',\n\t'-moz-lao',\n\t'-moz-malayalam',\n\t'-moz-myanmar',\n\t'-moz-oriya',\n\t'-moz-persian',\n\t'-moz-simp-chinese-formal',\n\t'-moz-simp-chinese-informal',\n\t'-moz-tamil',\n\t'-moz-telugu',\n\t'-moz-thai',\n\t'-moz-trad-chinese-formal',\n\t'-moz-trad-chinese-informal',\n]);\n\n/**\n * Most identifier types have to be looked up in a unique way,\n * so we're exposing special functions for each.\n */\nexport default {\n\t/**\n\t * @param {string} identifier\n\t * @returns {boolean}\n\t */\n\tatRuleName(identifier) {\n\t\treturn AT_RULES.has(`@${identifier.toLowerCase()}`);\n\t},\n\n\t/**\n\t * @param {string} identifier\n\t * @returns {boolean}\n\t */\n\tselector(identifier) {\n\t\treturn SELECTORS.has(identifier.toLowerCase());\n\t},\n\n\t/**\n\t * @param {string} identifier\n\t * @returns {boolean}\n\t */\n\tmediaFeatureName(identifier) {\n\t\treturn identifier.toLowerCase().includes('device-pixel-ratio');\n\t},\n\n\t/**\n\t * @param {string} identifier\n\t * @returns {boolean}\n\t */\n\tproperty(identifier) {\n\t\tconst ident = identifier.toLowerCase();\n\n\t\t// HACK: `interpolation-mode` does not exist. This is an IE extension for `image-rendering`.\n\t\t// See \n\t\tif (ident === '-ms-interpolation-mode') {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (vendor.prefix(ident).length === 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn PROPERTIES.has(vendor.unprefixed(ident));\n\t},\n\n\t/**\n\t * @param {string} value\n\t * @returns {boolean}\n\t */\n\tpropertyValue(value) {\n\t\treturn PROPERTY_VALUES.has(value.toLowerCase());\n\t},\n\n\t/**\n\t * @param {string} value\n\t * @returns {string}\n\t */\n\tunprefix(value) {\n\t\treturn value.replace(/-\\w+-/, '');\n\t},\n};\n","import isAutoprefixable from '../../utils/isAutoprefixable.mjs';\nimport isStandardSyntaxAtRule from '../../utils/isStandardSyntaxAtRule.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'at-rule-no-vendor-prefix';\n\nconst messages = ruleMessages(ruleName, {\n\trejected: (p) => `Unexpected vendor-prefixed at-rule \"@${p}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/at-rule-no-vendor-prefix',\n\tfixable: true,\n};\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary, _secondary, context) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(result, ruleName, { actual: primary });\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\troot.walkAtRules((atRule) => {\n\t\t\tif (!isStandardSyntaxAtRule(atRule)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst name = atRule.name;\n\n\t\t\tif (!name.startsWith('-')) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!isAutoprefixable.atRuleName(name)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (context.fix) {\n\t\t\t\tatRule.name = isAutoprefixable.unprefix(atRule.name);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treport({\n\t\t\t\tmessage: messages.rejected,\n\t\t\t\tmessageArgs: [name],\n\t\t\t\tnode: atRule,\n\t\t\t\tword: `@${name}`,\n\t\t\t\tresult,\n\t\t\t\truleName,\n\t\t\t});\n\t\t});\n\t};\n};\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","import { isPlainObject } from './validateTypes.mjs';\n\n/**\n * Check whether the variable is an object and all its properties are one or more values\n * that satisfy the specified validator(s):\n *\n * @example\n * ignoreProperties = {\n * value1: [\"item11\", \"item12\", \"item13\"],\n * value2: \"item2\",\n * };\n * validateObjectWithArrayProps(isString)(ignoreProperties);\n * //=> true\n *\n * @typedef {(value: unknown) => boolean} Validator\n * @param {...Validator} validators\n * @returns {Validator}\n */\nexport default function validateObjectWithArrayProps(...validators) {\n\treturn (value) => {\n\t\tif (!isPlainObject(value)) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn Object.values(value)\n\t\t\t.flat()\n\t\t\t.every((item) => validators.some((v) => v(item)));\n\t};\n}\n","import createMapWithSet from '../../utils/createMapWithSet.mjs';\nimport isStandardSyntaxAtRule from '../../utils/isStandardSyntaxAtRule.mjs';\nimport { isString } from '../../utils/validateTypes.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateObjectWithArrayProps from '../../utils/validateObjectWithArrayProps.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'at-rule-property-required-list';\n\nconst messages = ruleMessages(ruleName, {\n\texpected: (atRule, property) => `Expected property \"${property}\" for at-rule \"${atRule}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/at-rule-property-required-list',\n};\n\n/** @type {import('stylelint').Rule>} */\nconst rule = (primary) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(result, ruleName, {\n\t\t\tactual: primary,\n\t\t\tpossible: [validateObjectWithArrayProps(isString)],\n\t\t});\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst propLists = createMapWithSet(primary);\n\n\t\t/** @type {Set} */\n\t\tconst currentPropList = new Set();\n\n\t\troot.walkAtRules((atRule) => {\n\t\t\tif (!isStandardSyntaxAtRule(atRule)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { name, nodes } = atRule;\n\n\t\t\tif (!nodes) return;\n\n\t\t\tconst atRuleName = name.toLowerCase();\n\t\t\tconst propList = propLists.get(atRuleName);\n\n\t\t\tif (!propList) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcurrentPropList.clear();\n\n\t\t\tfor (const node of nodes) {\n\t\t\t\tif (!node || node.type !== 'decl') continue;\n\n\t\t\t\tconst propName = node.prop.toLowerCase();\n\n\t\t\t\tif (!propList.has(propName)) continue;\n\n\t\t\t\tcurrentPropList.add(propName);\n\t\t\t}\n\n\t\t\tif (currentPropList.size === propList.size) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (const requiredProp of propList) {\n\t\t\t\tif (currentPropList.has(requiredProp)) continue;\n\n\t\t\t\treport({\n\t\t\t\t\tmessage: messages.expected,\n\t\t\t\t\tmessageArgs: [atRuleName, requiredProp],\n\t\t\t\t\tnode: atRule,\n\t\t\t\t\tword: `@${atRule.name}`,\n\t\t\t\t\tresult,\n\t\t\t\t\truleName,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t};\n};\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","/**\n * Create a map with unique sets of values from a record.\n *\n * @template T\n * @param {Record} record\n * @returns {Map>}\n */\nexport default function createMapWithSet(record) {\n\t/** @type {Map>} */\n\tconst map = new Map();\n\n\tfor (const [key, value] of Object.entries(record)) {\n\t\tconst list = Array.isArray(value) ? value : [value];\n\n\t\tmap.set(key, new Set(list));\n\t}\n\n\treturn map;\n}\n","import { isAtRule, isRule } from './typeGuards.mjs';\n\n/**\n * @param {import('postcss').Container} statement\n * @returns {string}\n */\nexport default function beforeBlockString(statement, { noRawBefore } = { noRawBefore: false }) {\n\tlet result = '';\n\n\tconst before = statement.raws.before || '';\n\n\tif (!noRawBefore) {\n\t\tresult += before;\n\t}\n\n\tif (isRule(statement)) {\n\t\tresult += statement.selector;\n\t} else if (isAtRule(statement)) {\n\t\tresult += `@${statement.name}${statement.raws.afterName || ''}${statement.params}`;\n\t} else {\n\t\treturn '';\n\t}\n\n\tresult += statement.raws.between || '';\n\n\treturn result;\n}\n","import { assertString } from './validateTypes.mjs';\n\nexport const DISABLE_COMMAND = '-disable';\nexport const DISABLE_LINE_COMMAND = '-disable-line';\nexport const DISABLE_NEXT_LINE_COMMAND = '-disable-next-line';\nexport const ENABLE_COMMAND = '-enable';\n\nconst ALL_COMMANDS = new Set([\n\tDISABLE_COMMAND,\n\tDISABLE_LINE_COMMAND,\n\tDISABLE_NEXT_LINE_COMMAND,\n\tENABLE_COMMAND,\n]);\n\nexport const DEFAULT_CONFIGURATION_COMMENT = 'stylelint';\n\n/** @typedef {import('postcss').Comment} Comment */\n\n/**\n * Extract a command from a given comment.\n *\n * @param {Comment} comment\n * @param {string} [configurationComment]\n * @returns {string}\n */\nexport function extractConfigurationComment(\n\tcomment,\n\tconfigurationComment = DEFAULT_CONFIGURATION_COMMENT,\n) {\n\tconst [command] = comment.text.split(/\\s/, 1);\n\n\tassertString(command);\n\n\treturn command.replace(configurationComment, '');\n}\n\n/**\n * Tests if the given comment is a Stylelint command.\n *\n * @param {Comment} comment\n * @param {string} [configurationComment]\n * @returns {boolean}\n */\nexport function isConfigurationComment(\n\tcomment,\n\tconfigurationComment = DEFAULT_CONFIGURATION_COMMENT,\n) {\n\tconst command = extractConfigurationComment(comment, configurationComment);\n\n\treturn command !== undefined && ALL_COMMANDS.has(command);\n}\n\n/**\n * Get full stylelint command\n *\n * @param {string} command\n * @param {string} [configurationComment]\n * @returns {string}\n */\nexport function getConfigurationComment(\n\tcommand,\n\tconfigurationComment = DEFAULT_CONFIGURATION_COMMENT,\n) {\n\treturn `${configurationComment}${command}`;\n}\n","import beforeBlockString from '../../utils/beforeBlockString.mjs';\nimport hasBlock from '../../utils/hasBlock.mjs';\nimport { isBoolean } from '../../utils/validateTypes.mjs';\nimport { isComment } from '../../utils/typeGuards.mjs';\nimport { isConfigurationComment } from '../../utils/configurationComment.mjs';\nimport optionsMatches from '../../utils/optionsMatches.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'block-no-empty';\n\nconst messages = ruleMessages(ruleName, {\n\trejected: 'Unexpected empty block',\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/block-no-empty',\n};\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary, secondaryOptions, context) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(\n\t\t\tresult,\n\t\t\truleName,\n\t\t\t{\n\t\t\t\tactual: primary,\n\t\t\t\tpossible: isBoolean,\n\t\t\t},\n\t\t\t{\n\t\t\t\tactual: secondaryOptions,\n\t\t\t\tpossible: {\n\t\t\t\t\tignore: ['comments'],\n\t\t\t\t},\n\t\t\t\toptional: true,\n\t\t\t},\n\t\t);\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst ignoreComments = optionsMatches(secondaryOptions, 'ignore', 'comments');\n\n\t\t// Check both kinds of statements: rules and at-rules\n\t\troot.walkRules(check);\n\t\troot.walkAtRules(check);\n\n\t\t/** @typedef {import('postcss').Rule | import('postcss').AtRule} Statement */\n\n\t\t/**\n\t\t * @param {Statement} statement\n\t\t */\n\t\tfunction check(statement) {\n\t\t\tif (!hasBlock(statement)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (hasNotableChild(statement)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (hasNonWhitespace(statement)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet index = beforeBlockString(statement, { noRawBefore: true }).length;\n\n\t\t\t// For empty blocks when using SugarSS parser\n\t\t\tif (statement.raws.between === undefined) {\n\t\t\t\tindex--;\n\t\t\t}\n\n\t\t\treport({\n\t\t\t\tmessage: messages.rejected,\n\t\t\t\tnode: statement,\n\t\t\t\tstart: statement.positionBy({ index }),\n\t\t\t\tresult,\n\t\t\t\truleName,\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * @param {Statement} statement\n\t\t * @returns {boolean}\n\t\t */\n\t\tfunction hasNotableChild(statement) {\n\t\t\treturn (statement.nodes ?? []).some((child) => {\n\t\t\t\tif (isComment(child)) {\n\t\t\t\t\tif (ignoreComments) return false;\n\n\t\t\t\t\tif (isConfigurationComment(child, context.configurationComment)) return false;\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t});\n\t\t}\n\n\t\t/**\n\t\t * @param {Statement} statement\n\t\t * @returns {boolean}\n\t\t */\n\t\tfunction hasNonWhitespace(statement) {\n\t\t\tconst { after } = statement.raws;\n\n\t\t\treturn typeof after === 'string' && /\\S/.test(after);\n\t\t}\n\t};\n};\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","/**\n * Check whether a function is standard\n *\n * @param {import('postcss-value-parser').Node} node\n * @returns {boolean}\n */\nexport default function isStandardSyntaxFunction(node) {\n\t// Function nodes without names are things in parentheses like Sass lists\n\tif (!node.value) {\n\t\treturn false;\n\t}\n\n\tif (node.value.startsWith('#{')) {\n\t\treturn false;\n\t}\n\n\t// CSS-in-JS interpolation\n\tif (node.value.startsWith('${')) {\n\t\treturn false;\n\t}\n\n\t// CSS-in-JS syntax\n\tif (node.value.startsWith('`')) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","import isStandardSyntaxFunction from './isStandardSyntaxFunction.mjs';\n\n/**\n * Check whether a function is standard syntax color function\n *\n * @param {import('postcss-value-parser').FunctionNode} node\n * @returns {boolean}\n */\nexport default function isStandardSyntaxColorFunction(node) {\n\tif (!isStandardSyntaxFunction(node)) return false;\n\n\t// scss can accept a #hex, or $var variables and we need to check all nested fn nodes\n\tfor (const fnNode of node.nodes) {\n\t\tif (fnNode.type === 'function') return isStandardSyntaxColorFunction(fnNode);\n\n\t\tif (\n\t\t\tfnNode.type === 'word' &&\n\t\t\t(fnNode.value.startsWith('#') || fnNode.value.startsWith('$') || fnNode.value.includes('.$'))\n\t\t)\n\t\t\treturn false;\n\t}\n\n\treturn true;\n}\n","import valueParser from 'postcss-value-parser';\n\nimport declarationValueIndex from '../../utils/declarationValueIndex.mjs';\nimport getDeclarationValue from '../../utils/getDeclarationValue.mjs';\nimport isStandardSyntaxColorFunction from '../../utils/isStandardSyntaxColorFunction.mjs';\nimport { isValueFunction } from '../../utils/typeGuards.mjs';\nimport optionsMatches from '../../utils/optionsMatches.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport setDeclarationValue from '../../utils/setDeclarationValue.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'color-function-notation';\n\nconst messages = ruleMessages(ruleName, {\n\texpected: (primary) => `Expected ${primary} color-function notation`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/color-function-notation',\n\tfixable: true,\n};\n\nconst LEGACY_FUNCTION_NAME = /^(?:rgba|hsla)$/i;\nconst LEGACY_NOTATION_FUNCTION = /\\b(?:rgba?|hsla?)\\(/i;\nconst LEGACY_NOTATION_FUNCTION_NAME = /^(?:rgba?|hsla?)$/i;\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary, secondaryOptions, context) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(\n\t\t\tresult,\n\t\t\truleName,\n\t\t\t{\n\t\t\t\tactual: primary,\n\t\t\t\tpossible: ['modern', 'legacy'],\n\t\t\t},\n\t\t\t{\n\t\t\t\tactual: secondaryOptions,\n\t\t\t\tpossible: {\n\t\t\t\t\tignore: ['with-var-inside'],\n\t\t\t\t},\n\t\t\t\toptional: true,\n\t\t\t},\n\t\t);\n\n\t\tif (!validOptions) return;\n\n\t\tconst ignoreWithVarInside = optionsMatches(secondaryOptions, 'ignore', 'with-var-inside');\n\n\t\troot.walkDecls((decl) => {\n\t\t\tif (!LEGACY_NOTATION_FUNCTION.test(decl.value)) return;\n\n\t\t\tif (primary === 'modern' && !decl.value.includes(',')) return;\n\n\t\t\tlet needsFix = false;\n\t\t\tconst parsedValue = valueParser(getDeclarationValue(decl));\n\n\t\t\tparsedValue.walk((node) => {\n\t\t\t\tif (!isValueFunction(node)) return;\n\n\t\t\t\tif (!isStandardSyntaxColorFunction(node)) return;\n\n\t\t\t\tconst { value, sourceIndex, sourceEndIndex, nodes } = node;\n\n\t\t\t\tif (ignoreWithVarInside && containsVariable(nodes)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!LEGACY_NOTATION_FUNCTION_NAME.test(value)) return;\n\n\t\t\t\tif (primary === 'modern' && !hasCommas(node)) return;\n\n\t\t\t\tif (primary === 'legacy' && hasCommas(node)) return;\n\n\t\t\t\tif (context.fix && primary === 'modern') {\n\t\t\t\t\tlet commaCount = 0;\n\n\t\t\t\t\t// Convert punctuation\n\t\t\t\t\tnode.nodes = nodes.map((childNode) => {\n\t\t\t\t\t\tif (isComma(childNode)) {\n\t\t\t\t\t\t\t// Non-alpha commas to space and alpha commas to slashes\n\t\t\t\t\t\t\tif (commaCount < 2) {\n\t\t\t\t\t\t\t\t// @ts-expect-error -- TS2322: Type '\"space\"' is not assignable to type '\"div\"'.\n\t\t\t\t\t\t\t\tchildNode.type = 'space';\n\t\t\t\t\t\t\t\tchildNode.value = atLeastOneSpace(childNode.after);\n\t\t\t\t\t\t\t\tcommaCount++;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tchildNode.value = '/';\n\t\t\t\t\t\t\t\tchildNode.before = atLeastOneSpace(childNode.before);\n\t\t\t\t\t\t\t\tchildNode.after = atLeastOneSpace(childNode.after);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn childNode;\n\t\t\t\t\t});\n\n\t\t\t\t\t// Remove trailing 'a' from legacy function name\n\t\t\t\t\tif (LEGACY_FUNCTION_NAME.test(value)) {\n\t\t\t\t\t\tnode.value = value.slice(0, -1);\n\t\t\t\t\t}\n\n\t\t\t\t\tneedsFix = true;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst index = declarationValueIndex(decl) + sourceIndex;\n\t\t\t\tconst endIndex = index + (sourceEndIndex - sourceIndex);\n\n\t\t\t\treport({\n\t\t\t\t\tmessage: messages.expected,\n\t\t\t\t\tmessageArgs: [primary],\n\t\t\t\t\tnode: decl,\n\t\t\t\t\tindex,\n\t\t\t\t\tendIndex,\n\t\t\t\t\tresult,\n\t\t\t\t\truleName,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tif (needsFix) {\n\t\t\t\tsetDeclarationValue(decl, parsedValue.toString());\n\t\t\t}\n\t\t});\n\t};\n};\n\n/**\n * @param {string} whitespace\n */\nfunction atLeastOneSpace(whitespace) {\n\treturn whitespace !== '' ? whitespace : ' ';\n}\n\n/**\n * @param {import('postcss-value-parser').Node[]} nodes\n */\nfunction containsVariable(nodes) {\n\treturn nodes.some(({ type, value }) => type === 'function' && value.toLowerCase() === 'var');\n}\n\n/**\n * @param {import('postcss-value-parser').Node} node\n * @returns {node is import('postcss-value-parser').DivNode}\n */\nfunction isComma(node) {\n\treturn node.type === 'div' && node.value === ',';\n}\n\n/**\n * @param {import('postcss-value-parser').FunctionNode} node\n */\nfunction hasCommas(node) {\n\treturn node.nodes && node.nodes.some((childNode) => isComma(childNode));\n}\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","const HAS_VALID_HEX = /#(?:[\\da-f]{3,4}|[\\da-f]{6}|[\\da-f]{8})(?:$|[^\\da-f])/i;\n\n/**\n * Check if a value contains a valid 3, 4, 6 or 8 digit hex\n *\n * @param {string} value\n * @returns {boolean}\n */\nexport default function hasValidHex(value) {\n\treturn HAS_VALID_HEX.test(value);\n}\n","const IS_VALID_HEX = /^#(?:[\\da-f]{3,4}|[\\da-f]{6}|[\\da-f]{8})$/i;\n\n/**\n * Check if a value is a valid 3, 4, 6 or 8 digit hex\n *\n * @param {string} value\n * @returns {boolean}\n */\nexport default function isValidHex(value) {\n\treturn IS_VALID_HEX.test(value);\n}\n","import isValidHex from './isValidHex.mjs';\n\n/**\n * @param {import('postcss-value-parser').Node} node\n * @returns {boolean}\n */\nexport default function isHexColor({ type, value }) {\n\treturn type === 'word' && isValidHex(value);\n}\n","import valueParser from 'postcss-value-parser';\n\nimport declarationValueIndex from '../../utils/declarationValueIndex.mjs';\nimport hasValidHex from '../../utils/hasValidHex.mjs';\nimport isHexColor from '../../utils/isHexColor.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'color-hex-alpha';\n\nconst messages = ruleMessages(ruleName, {\n\texpected: (hex) => `Expected alpha channel in \"${hex}\"`,\n\tunexpected: (hex) => `Unexpected alpha channel in \"${hex}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/color-hex-alpha',\n};\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(result, ruleName, {\n\t\t\tactual: primary,\n\t\t\tpossible: ['always', 'never'],\n\t\t});\n\n\t\tif (!validOptions) return;\n\n\t\troot.walkDecls((decl) => {\n\t\t\tif (!hasValidHex(decl.value)) return;\n\n\t\t\tconst parsedValue = valueParser(decl.value);\n\n\t\t\tparsedValue.walk((node) => {\n\t\t\t\tif (isUrlFunction(node)) return false;\n\n\t\t\t\tif (!isHexColor(node)) return;\n\n\t\t\t\tconst { value } = node;\n\n\t\t\t\tif (primary === 'always' && hasAlphaChannel(value)) return;\n\n\t\t\t\tif (primary === 'never' && !hasAlphaChannel(value)) return;\n\n\t\t\t\tconst index = declarationValueIndex(decl) + node.sourceIndex;\n\t\t\t\tconst endIndex = index + value.length;\n\n\t\t\t\treport({\n\t\t\t\t\tmessage: primary === 'never' ? messages.unexpected : messages.expected,\n\t\t\t\t\tmessageArgs: [value],\n\t\t\t\t\tnode: decl,\n\t\t\t\t\tindex,\n\t\t\t\t\tendIndex,\n\t\t\t\t\tresult,\n\t\t\t\t\truleName,\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t};\n};\n\n/**\n * @param {import('postcss-value-parser').Node} node\n */\nfunction isUrlFunction({ type, value }) {\n\treturn type === 'function' && value === 'url';\n}\n\n/**\n * @param {string} hex\n */\nfunction hasAlphaChannel(hex) {\n\treturn hex.length === 5 || hex.length === 9;\n}\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","const IGNORED_FUNCTIONS = new Set(['url']);\n\n/**\n * @param {import('postcss-value-parser').Node} node\n * @returns {boolean}\n */\nexport default function isIgnoredFunction({ type, value }) {\n\treturn type === 'function' && IGNORED_FUNCTIONS.has(value.toLowerCase());\n}\n","import valueParser from 'postcss-value-parser';\n\nimport declarationValueIndex from '../../utils/declarationValueIndex.mjs';\nimport getDeclarationValue from '../../utils/getDeclarationValue.mjs';\nimport isHexColor from '../../utils/isHexColor.mjs';\nimport isIgnoredFunction from '../../utils/isIgnoredFunction.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport setDeclarationValue from '../../utils/setDeclarationValue.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'color-hex-length';\n\nconst messages = ruleMessages(ruleName, {\n\texpected: (actual, expected) => `Expected \"${actual}\" to be \"${expected}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/color-hex-length',\n\tfixable: true,\n};\n\nconst CONTAINS_HEX = /#[\\da-z]+/i;\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary, _secondaryOptions, context) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(result, ruleName, {\n\t\t\tactual: primary,\n\t\t\tpossible: ['short', 'long'],\n\t\t});\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\troot.walkDecls((decl) => {\n\t\t\tif (!CONTAINS_HEX.test(decl.value)) return;\n\n\t\t\tconst parsedValue = valueParser(getDeclarationValue(decl));\n\t\t\tlet needsFix = false;\n\n\t\t\tparsedValue.walk((node) => {\n\t\t\t\tconst { value: hexValue } = node;\n\n\t\t\t\tif (isIgnoredFunction(node)) return false;\n\n\t\t\t\tif (!isHexColor(node)) return;\n\n\t\t\t\tif (primary === 'long' && hexValue.length !== 4 && hexValue.length !== 5) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (primary === 'short' && (hexValue.length < 6 || !canShrink(hexValue))) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst variant = primary === 'long' ? longer : shorter;\n\t\t\t\tconst expectedHex = variant(hexValue);\n\n\t\t\t\tif (context.fix) {\n\t\t\t\t\tnode.value = expectedHex;\n\t\t\t\t\tneedsFix = true;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst index = declarationValueIndex(decl) + node.sourceIndex;\n\t\t\t\tconst endIndex = index + node.value.length;\n\n\t\t\t\treport({\n\t\t\t\t\tmessage: messages.expected,\n\t\t\t\t\tmessageArgs: [hexValue, expectedHex],\n\t\t\t\t\tnode: decl,\n\t\t\t\t\tindex,\n\t\t\t\t\tendIndex,\n\t\t\t\t\tresult,\n\t\t\t\t\truleName,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tif (needsFix) {\n\t\t\t\tsetDeclarationValue(decl, parsedValue.toString());\n\t\t\t}\n\t\t});\n\t};\n};\n\n/**\n * @param {string} hex\n */\nfunction canShrink(hex) {\n\thex = hex.toLowerCase();\n\n\treturn (\n\t\thex[1] === hex[2] &&\n\t\thex[3] === hex[4] &&\n\t\thex[5] === hex[6] &&\n\t\t(hex.length === 7 || (hex.length === 9 && hex[7] === hex[8]))\n\t);\n}\n\n/**\n * @param {string} hex\n */\nfunction shorter(hex) {\n\tlet hexVariant = '#';\n\n\tfor (let i = 1; i < hex.length; i += 2) {\n\t\thexVariant += hex[i];\n\t}\n\n\treturn hexVariant;\n}\n\n/**\n * @param {string} hex\n */\nfunction longer(hex) {\n\tlet hexVariant = '#';\n\n\tfor (let i = 1; i < hex.length; i++) {\n\t\thexVariant += hex.charAt(i).repeat(2);\n\t}\n\n\treturn hexVariant;\n}\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","export const acceptCustomIdentsProperties = new Set([\n\t'animation',\n\t'animation-name',\n\t'font',\n\t'font-family',\n\t'counter-increment',\n\t'grid-row',\n\t'grid-column',\n\t'grid-area',\n\t'list-style',\n\t'list-style-type',\n]);\n\nexport const shorthandToResetToInitialProperty = new Map([\n\t[\n\t\t'border',\n\t\tnew Set([\n\t\t\t'border-image',\n\t\t\t'border-image-outset',\n\t\t\t'border-image-repeat',\n\t\t\t'border-image-slice',\n\t\t\t'border-image-source',\n\t\t\t'border-image-width',\n\t\t]),\n\t],\n\t[\n\t\t/** @see https://www.w3.org/TR/css-fonts-4/#font-prop */\n\t\t'font',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'font-feature-settings',\n\t\t\t'font-kerning',\n\t\t\t'font-language-override',\n\t\t\t'font-optical-sizing',\n\t\t\t'font-size-adjust',\n\t\t\t'font-variant-alternates',\n\t\t\t'font-variant-caps',\n\t\t\t'font-variant-east-asian',\n\t\t\t'font-variant-emoji',\n\t\t\t'font-variant-ligatures',\n\t\t\t'font-variant-numeric',\n\t\t\t'font-variant-position',\n\t\t\t'font-variation-settings',\n\t\t]),\n\t],\n]);\n\n/** @type {import('stylelint').LonghandSubPropertiesOfShorthandProperties} */\nexport const longhandSubPropertiesOfShorthandProperties = new Map([\n\t// Sort alphabetically\n\t[\n\t\t'animation',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'animation-name',\n\t\t\t'animation-duration',\n\t\t\t'animation-timing-function',\n\t\t\t'animation-delay',\n\t\t\t'animation-iteration-count',\n\t\t\t'animation-direction',\n\t\t\t'animation-fill-mode',\n\t\t\t'animation-play-state',\n\t\t]),\n\t],\n\t[\n\t\t'background',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'background-image',\n\t\t\t'background-size',\n\t\t\t'background-position',\n\t\t\t'background-repeat',\n\t\t\t'background-origin',\n\t\t\t'background-clip',\n\t\t\t'background-attachment',\n\t\t\t'background-color',\n\t\t]),\n\t],\n\t[\n\t\t'border',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'border-top-width',\n\t\t\t'border-right-width',\n\t\t\t'border-bottom-width',\n\t\t\t'border-left-width',\n\t\t\t'border-top-style',\n\t\t\t'border-right-style',\n\t\t\t'border-bottom-style',\n\t\t\t'border-left-style',\n\t\t\t'border-top-color',\n\t\t\t'border-right-color',\n\t\t\t'border-bottom-color',\n\t\t\t'border-left-color',\n\t\t\t'border-width',\n\t\t\t'border-style',\n\t\t\t'border-color',\n\t\t]),\n\t],\n\t[\n\t\t'border-block',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'border-block-width',\n\t\t\t'border-block-style',\n\t\t\t'border-block-color',\n\t\t]),\n\t],\n\t[\n\t\t'border-block-end',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'border-block-end-width',\n\t\t\t'border-block-end-style',\n\t\t\t'border-block-end-color',\n\t\t]),\n\t],\n\t[\n\t\t'border-block-start',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'border-block-start-width',\n\t\t\t'border-block-start-style',\n\t\t\t'border-block-start-color',\n\t\t]),\n\t],\n\t[\n\t\t'border-bottom',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'border-bottom-width',\n\t\t\t'border-bottom-style',\n\t\t\t'border-bottom-color',\n\t\t]),\n\t],\n\t[\n\t\t'border-color',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'border-top-color',\n\t\t\t'border-right-color',\n\t\t\t'border-bottom-color',\n\t\t\t'border-left-color',\n\t\t]),\n\t],\n\t[\n\t\t'border-image',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'border-image-source',\n\t\t\t'border-image-slice',\n\t\t\t'border-image-width',\n\t\t\t'border-image-outset',\n\t\t\t'border-image-repeat',\n\t\t]),\n\t],\n\t[\n\t\t'border-inline',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'border-inline-width',\n\t\t\t'border-inline-style',\n\t\t\t'border-inline-color',\n\t\t]),\n\t],\n\t[\n\t\t'border-inline-end',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'border-inline-end-width',\n\t\t\t'border-inline-end-style',\n\t\t\t'border-inline-end-color',\n\t\t]),\n\t],\n\t[\n\t\t'border-inline-start',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'border-inline-start-width',\n\t\t\t'border-inline-start-style',\n\t\t\t'border-inline-start-color',\n\t\t]),\n\t],\n\t[\n\t\t'border-left',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'border-left-width',\n\t\t\t'border-left-style',\n\t\t\t'border-left-color',\n\t\t]),\n\t],\n\t[\n\t\t'border-radius',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'border-top-left-radius',\n\t\t\t'border-top-right-radius',\n\t\t\t'border-bottom-right-radius',\n\t\t\t'border-bottom-left-radius',\n\t\t]),\n\t],\n\t[\n\t\t'border-right',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'border-right-width',\n\t\t\t'border-right-style',\n\t\t\t'border-right-color',\n\t\t]),\n\t],\n\t[\n\t\t'border-style',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'border-top-style',\n\t\t\t'border-right-style',\n\t\t\t'border-bottom-style',\n\t\t\t'border-left-style',\n\t\t]),\n\t],\n\t[\n\t\t'border-top',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'border-top-width',\n\t\t\t'border-top-style',\n\t\t\t'border-top-color',\n\t\t]),\n\t],\n\t[\n\t\t'border-width',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'border-top-width',\n\t\t\t'border-right-width',\n\t\t\t'border-bottom-width',\n\t\t\t'border-left-width',\n\t\t]),\n\t],\n\t[\n\t\t'column-rule',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'column-rule-width',\n\t\t\t'column-rule-style',\n\t\t\t'column-rule-color',\n\t\t]),\n\t],\n\t[\n\t\t'columns',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'column-width',\n\t\t\t'column-count',\n\t\t]),\n\t],\n\t[\n\t\t'flex',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'flex-grow',\n\t\t\t'flex-shrink',\n\t\t\t'flex-basis',\n\t\t]),\n\t],\n\t[\n\t\t'flex-flow',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'flex-direction',\n\t\t\t'flex-wrap',\n\t\t]),\n\t],\n\t[\n\t\t'font',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'font-style',\n\t\t\t/**\n\t\t\t * reset explicitly: normal | small-caps\n\t\t\t * reset implicitly: all-small-caps | petite-caps | all-petite-caps | unicase | titling-caps\n\t\t\t * i.e. either way it will be reset\n\t\t\t * @todo add font-variant shorthand to longhandSubPropertiesOfShorthandProperties\n\t\t\t * {@link https://www.w3.org/TR/css-fonts-4/#font-variant-prop World Wide Web Consortium}\n\t\t\t */\n\t\t\t'font-variant',\n\t\t\t'font-weight',\n\t\t\t'font-stretch',\n\t\t\t'font-size',\n\t\t\t'line-height',\n\t\t\t'font-family',\n\t\t]),\n\t],\n\t[\n\t\t'font-synthesis',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'font-synthesis-weight',\n\t\t\t'font-synthesis-style',\n\t\t\t'font-synthesis-small-caps',\n\t\t]),\n\t],\n\t[\n\t\t'gap',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'row-gap',\n\t\t\t'column-gap',\n\t\t]),\n\t],\n\t[\n\t\t'grid',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'grid-template-rows',\n\t\t\t'grid-template-columns',\n\t\t\t'grid-template-areas',\n\t\t\t'grid-auto-rows',\n\t\t\t'grid-auto-columns',\n\t\t\t'grid-auto-flow',\n\t\t\t'grid-column-gap',\n\t\t\t'grid-row-gap',\n\t\t]),\n\t],\n\t[\n\t\t'grid-area',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'grid-row-start',\n\t\t\t'grid-column-start',\n\t\t\t'grid-row-end',\n\t\t\t'grid-column-end',\n\t\t]),\n\t],\n\t[\n\t\t'grid-column',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'grid-column-start',\n\t\t\t'grid-column-end',\n\t\t]),\n\t],\n\t[\n\t\t'grid-gap',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'grid-row-gap',\n\t\t\t'grid-column-gap',\n\t\t]),\n\t],\n\t[\n\t\t'grid-row',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'grid-row-start',\n\t\t\t'grid-row-end',\n\t\t]),\n\t],\n\t[\n\t\t'grid-template',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'grid-template-columns',\n\t\t\t'grid-template-rows',\n\t\t\t'grid-template-areas',\n\t\t]),\n\t],\n\t[\n\t\t'inset',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'top',\n\t\t\t'right',\n\t\t\t'bottom',\n\t\t\t'left',\n\t\t]),\n\t],\n\t[\n\t\t'inset-block',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'inset-block-start',\n\t\t\t'inset-block-end',\n\t\t]),\n\t],\n\t[\n\t\t'inset-inline',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'inset-inline-start',\n\t\t\t'inset-inline-end',\n\t\t]),\n\t],\n\t[\n\t\t'list-style',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'list-style-type',\n\t\t\t'list-style-position',\n\t\t\t'list-style-image',\n\t\t]),\n\t],\n\t[\n\t\t'margin',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'margin-top',\n\t\t\t'margin-right',\n\t\t\t'margin-bottom',\n\t\t\t'margin-left',\n\t\t]),\n\t],\n\t[\n\t\t'margin-block',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'margin-block-start',\n\t\t\t'margin-block-end',\n\t\t]),\n\t],\n\t[\n\t\t'margin-inline',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'margin-inline-start',\n\t\t\t'margin-inline-end',\n\t\t]),\n\t],\n\t[\n\t\t'mask',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'mask-image',\n\t\t\t'mask-mode',\n\t\t\t'mask-position',\n\t\t\t'mask-size',\n\t\t\t'mask-repeat',\n\t\t\t'mask-origin',\n\t\t\t'mask-clip',\n\t\t\t'mask-composite',\n\t\t]),\n\t],\n\t[\n\t\t'outline',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'outline-color',\n\t\t\t'outline-style',\n\t\t\t'outline-width',\n\t\t]),\n\t],\n\t[\n\t\t'overflow',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'overflow-x',\n\t\t\t'overflow-y',\n\t\t]),\n\t],\n\t[\n\t\t'overscroll-behavior',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'overscroll-behavior-x',\n\t\t\t'overscroll-behavior-y',\n\t\t]),\n\t],\n\t[\n\t\t'padding',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'padding-top',\n\t\t\t'padding-right',\n\t\t\t'padding-bottom',\n\t\t\t'padding-left',\n\t\t]),\n\t],\n\t[\n\t\t'padding-block',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'padding-block-start',\n\t\t\t'padding-block-end',\n\t\t]),\n\t],\n\t[\n\t\t'padding-inline',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'padding-inline-start',\n\t\t\t'padding-inline-end',\n\t\t]),\n\t],\n\t[\n\t\t'place-content',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'align-content',\n\t\t\t'justify-content',\n\t\t]),\n\t],\n\t[\n\t\t'place-items',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'align-items',\n\t\t\t'justify-items',\n\t\t]),\n\t],\n\t[\n\t\t'place-self',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'align-self',\n\t\t\t'justify-self',\n\t\t]),\n\t],\n\t[\n\t\t'scroll-margin',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'scroll-margin-top',\n\t\t\t'scroll-margin-right',\n\t\t\t'scroll-margin-bottom',\n\t\t\t'scroll-margin-left',\n\t\t]),\n\t],\n\t[\n\t\t'scroll-margin-block',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'scroll-margin-block-start',\n\t\t\t'scroll-margin-block-end',\n\t\t]),\n\t],\n\t[\n\t\t'scroll-margin-inline',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'scroll-margin-inline-start',\n\t\t\t'scroll-margin-inline-end',\n\t\t]),\n\t],\n\t[\n\t\t'scroll-padding',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'scroll-padding-top',\n\t\t\t'scroll-padding-right',\n\t\t\t'scroll-padding-bottom',\n\t\t\t'scroll-padding-left',\n\t\t]),\n\t],\n\t[\n\t\t'scroll-padding-block',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'scroll-padding-block-start',\n\t\t\t'scroll-padding-block-end',\n\t\t]),\n\t],\n\t[\n\t\t'scroll-padding-inline',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'scroll-padding-inline-start',\n\t\t\t'scroll-padding-inline-end',\n\t\t]),\n\t],\n\t[\n\t\t'text-decoration',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'text-decoration-line',\n\t\t\t'text-decoration-style',\n\t\t\t'text-decoration-color',\n\t\t\t'text-decoration-thickness',\n\t\t]),\n\t],\n\t[\n\t\t'text-emphasis',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'text-emphasis-style',\n\t\t\t'text-emphasis-color',\n\t\t]),\n\t],\n\t[\n\t\t'transition',\n\t\tnew Set([\n\t\t\t// prettier-ignore\n\t\t\t'transition-property',\n\t\t\t'transition-duration',\n\t\t\t'transition-timing-function',\n\t\t\t'transition-delay',\n\t\t]),\n\t],\n]);\n\nexport const longhandTimeProperties = new Set([\n\t'transition-duration',\n\t'transition-delay',\n\t'animation-duration',\n\t'animation-delay',\n]);\n\nexport const shorthandTimeProperties = new Set(['transition', 'animation']);\n","var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},e=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},u=function(r){return(r=isFinite(r)?r%360:0)>0?r:r+360},a=function(r){return{r:e(r.r,0,255),g:e(r.g,0,255),b:e(r.b,0,255),a:e(r.a)}},o=function(r){return{r:n(r.r),g:n(r.g),b:n(r.b),a:n(r.a,3)}},i=/^#([0-9a-f]{3,8})$/i,s=function(r){var t=r.toString(16);return t.length<2?\"0\"+t:t},h=function(r){var t=r.r,n=r.g,e=r.b,u=r.a,a=Math.max(t,n,e),o=a-Math.min(t,n,e),i=o?a===t?(n-e)/o:a===n?2+(e-t)/o:4+(t-n)/o:0;return{h:60*(i<0?i+6:i),s:a?o/a*100:0,v:a/255*100,a:u}},b=function(r){var t=r.h,n=r.s,e=r.v,u=r.a;t=t/360*6,n/=100,e/=100;var a=Math.floor(t),o=e*(1-n),i=e*(1-(t-a)*n),s=e*(1-(1-t+a)*n),h=a%6;return{r:255*[e,i,o,o,s,e][h],g:255*[s,e,e,i,o,o][h],b:255*[o,o,s,e,e,i][h],a:u}},g=function(r){return{h:u(r.h),s:e(r.s,0,100),l:e(r.l,0,100),a:e(r.a)}},d=function(r){return{h:n(r.h),s:n(r.s),l:n(r.l),a:n(r.a,3)}},f=function(r){return b((n=(t=r).s,{h:t.h,s:(n*=((e=t.l)<50?e:100-e)/100)>0?2*n/(e+n)*100:0,v:e+n,a:t.a}));var t,n,e},c=function(r){return{h:(t=h(r)).h,s:(u=(200-(n=t.s))*(e=t.v)/100)>0&&u<200?n*e/100/(u<=100?u:200-u)*100:0,l:u/2,a:t.a};var t,n,e,u},l=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*,\\s*([+-]?\\d*\\.?\\d+)%\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,p=/^hsla?\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,v=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*(?:,\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,m=/^rgba?\\(\\s*([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s+([+-]?\\d*\\.?\\d+)(%)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,y={string:[[function(r){var t=i.exec(r);return t?(r=t[1]).length<=4?{r:parseInt(r[0]+r[0],16),g:parseInt(r[1]+r[1],16),b:parseInt(r[2]+r[2],16),a:4===r.length?n(parseInt(r[3]+r[3],16)/255,2):1}:6===r.length||8===r.length?{r:parseInt(r.substr(0,2),16),g:parseInt(r.substr(2,2),16),b:parseInt(r.substr(4,2),16),a:8===r.length?n(parseInt(r.substr(6,2),16)/255,2):1}:null:null},\"hex\"],[function(r){var t=v.exec(r)||m.exec(r);return t?t[2]!==t[4]||t[4]!==t[6]?null:a({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:void 0===t[7]?1:Number(t[7])/(t[8]?100:1)}):null},\"rgb\"],[function(t){var n=l.exec(t)||p.exec(t);if(!n)return null;var e,u,a=g({h:(e=n[1],u=n[2],void 0===u&&(u=\"deg\"),Number(e)*(r[u]||1)),s:Number(n[3]),l:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return f(a)},\"hsl\"]],object:[[function(r){var n=r.r,e=r.g,u=r.b,o=r.a,i=void 0===o?1:o;return t(n)&&t(e)&&t(u)?a({r:Number(n),g:Number(e),b:Number(u),a:Number(i)}):null},\"rgb\"],[function(r){var n=r.h,e=r.s,u=r.l,a=r.a,o=void 0===a?1:a;if(!t(n)||!t(e)||!t(u))return null;var i=g({h:Number(n),s:Number(e),l:Number(u),a:Number(o)});return f(i)},\"hsl\"],[function(r){var n=r.h,a=r.s,o=r.v,i=r.a,s=void 0===i?1:i;if(!t(n)||!t(a)||!t(o))return null;var h=function(r){return{h:u(r.h),s:e(r.s,0,100),v:e(r.v,0,100),a:e(r.a)}}({h:Number(n),s:Number(a),v:Number(o),a:Number(s)});return b(h)},\"hsv\"]]},N=function(r,t){for(var n=0;n=.5},r.prototype.toHex=function(){return r=o(this.rgba),t=r.r,e=r.g,u=r.b,i=(a=r.a)<1?s(n(255*a)):\"\",\"#\"+s(t)+s(e)+s(u)+i;var r,t,e,u,a,i},r.prototype.toRgb=function(){return o(this.rgba)},r.prototype.toRgbString=function(){return r=o(this.rgba),t=r.r,n=r.g,e=r.b,(u=r.a)<1?\"rgba(\"+t+\", \"+n+\", \"+e+\", \"+u+\")\":\"rgb(\"+t+\", \"+n+\", \"+e+\")\";var r,t,n,e,u},r.prototype.toHsl=function(){return d(c(this.rgba))},r.prototype.toHslString=function(){return r=d(c(this.rgba)),t=r.h,n=r.s,e=r.l,(u=r.a)<1?\"hsla(\"+t+\", \"+n+\"%, \"+e+\"%, \"+u+\")\":\"hsl(\"+t+\", \"+n+\"%, \"+e+\"%)\";var r,t,n,e,u},r.prototype.toHsv=function(){return r=h(this.rgba),{h:n(r.h),s:n(r.s),v:n(r.v),a:n(r.a,3)};var r},r.prototype.invert=function(){return w({r:255-(r=this.rgba).r,g:255-r.g,b:255-r.b,a:r.a});var r},r.prototype.saturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,r))},r.prototype.desaturate=function(r){return void 0===r&&(r=.1),w(M(this.rgba,-r))},r.prototype.grayscale=function(){return w(M(this.rgba,-1))},r.prototype.lighten=function(r){return void 0===r&&(r=.1),w($(this.rgba,r))},r.prototype.darken=function(r){return void 0===r&&(r=.1),w($(this.rgba,-r))},r.prototype.rotate=function(r){return void 0===r&&(r=15),this.hue(this.hue()+r)},r.prototype.alpha=function(r){return\"number\"==typeof r?w({r:(t=this.rgba).r,g:t.g,b:t.b,a:r}):n(this.rgba.a,3);var t},r.prototype.hue=function(r){var t=c(this.rgba);return\"number\"==typeof r?w({h:r,s:t.s,l:t.l,a:t.a}):n(t.h)},r.prototype.isEqual=function(r){return this.toHex()===w(r).toHex()},r}(),w=function(r){return r instanceof j?r:new j(r)},S=[],k=function(r){r.forEach(function(r){S.indexOf(r)<0&&(r(j,y),S.push(r))})},E=function(){return new j({r:255*Math.random(),g:255*Math.random(),b:255*Math.random()})};export{j as Colord,w as colord,k as extend,I as getFormat,E as random};\n","var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},n=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=Math.pow(10,t)),Math.round(n*r)/n+0},u=function(r,t,n){return void 0===t&&(t=0),void 0===n&&(n=1),r>n?n:r>t?r:t},a=function(r){return{h:(t=r.h,(t=isFinite(t)?t%360:0)>0?t:t+360),w:u(r.w,0,100),b:u(r.b,0,100),a:u(r.a)};var t},e=function(r){return{h:n(r.h),w:n(r.w),b:n(r.b),a:n(r.a,3)}},b=function(r){return{h:function(r){var t=r.r,n=r.g,u=r.b,a=r.a,e=Math.max(t,n,u),b=e-Math.min(t,n,u),o=b?e===t?(n-u)/b:e===n?2+(u-t)/b:4+(t-n)/b:0;return{h:60*(o<0?o+6:o),s:e?b/e*100:0,v:e/255*100,a:a}}(r).h,w:Math.min(r.r,r.g,r.b)/255*100,b:100-Math.max(r.r,r.g,r.b)/255*100,a:r.a}},o=function(r){return function(r){var t=r.h,n=r.s,u=r.v,a=r.a;t=t/360*6,n/=100,u/=100;var e=Math.floor(t),b=u*(1-n),o=u*(1-(t-e)*n),i=u*(1-(1-t+e)*n),h=e%6;return{r:255*[u,o,b,b,i,u][h],g:255*[i,u,u,o,b,b][h],b:255*[b,b,i,u,u,o][h],a:a}}({h:r.h,s:100===r.b?0:100-r.w/(100-r.b)*100,v:100-r.b,a:r.a})},i=function(r){var n=r.h,u=r.w,e=r.b,b=r.a,i=void 0===b?1:b;if(!t(n)||!t(u)||!t(e))return null;var h=a({h:Number(n),w:Number(u),b:Number(e),a:Number(i)});return o(h)},h=/^hwb\\(\\s*([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s+([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)%\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,d=function(t){var n=h.exec(t);if(!n)return null;var u,e,b=a({h:(u=n[1],e=n[2],void 0===e&&(e=\"deg\"),Number(u)*(r[e]||1)),w:Number(n[3]),b:Number(n[4]),a:void 0===n[5]?1:Number(n[5])/(n[6]?100:1)});return o(b)};export default function(r,t){r.prototype.toHwb=function(){return e(b(this.rgba))},r.prototype.toHwbString=function(){return r=e(b(this.rgba)),t=r.h,n=r.w,u=r.b,(a=r.a)<1?\"hwb(\"+t+\" \"+n+\"% \"+u+\"% / \"+a+\")\":\"hwb(\"+t+\" \"+n+\"% \"+u+\"%)\";var r,t,n,u,a},t.string.push([d,\"hwb\"]),t.object.push([i,\"hwb\"])}\n","var a=function(a){return\"string\"==typeof a?a.length>0:\"number\"==typeof a},t=function(a,t,o){return void 0===t&&(t=0),void 0===o&&(o=Math.pow(10,t)),Math.round(o*a)/o+0},o=function(a,t,o){return void 0===t&&(t=0),void 0===o&&(o=1),a>o?o:a>t?a:t},r=function(a){var t=a/255;return t<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)},h=function(a){return 255*(a>.0031308?1.055*Math.pow(a,1/2.4)-.055:12.92*a)},n=96.422,p=100,M=82.521,u=function(a){var t,r,n={x:.9555766*(t=a).x+-.0230393*t.y+.0631636*t.z,y:-.0282895*t.x+1.0099416*t.y+.0210077*t.z,z:.0122982*t.x+-.020483*t.y+1.3299098*t.z};return r={r:h(.032404542*n.x-.015371385*n.y-.004985314*n.z),g:h(-.00969266*n.x+.018760108*n.y+41556e-8*n.z),b:h(556434e-9*n.x-.002040259*n.y+.010572252*n.z),a:a.a},{r:o(r.r,0,255),g:o(r.g,0,255),b:o(r.b,0,255),a:o(r.a)}},e=function(a){var t=r(a.r),h=r(a.g),u=r(a.b);return function(a){return{x:o(a.x,0,n),y:o(a.y,0,p),z:o(a.z,0,M),a:o(a.a)}}(function(a){return{x:1.0478112*a.x+.0228866*a.y+-.050127*a.z,y:.0295424*a.x+.9904844*a.y+-.0170491*a.z,z:-.0092345*a.x+.0150436*a.y+.7521316*a.z,a:a.a}}({x:100*(.4124564*t+.3575761*h+.1804375*u),y:100*(.2126729*t+.7151522*h+.072175*u),z:100*(.0193339*t+.119192*h+.9503041*u),a:a.a}))},w=216/24389,b=24389/27,i=function(t){var r=t.l,h=t.a,n=t.b,p=t.alpha,M=void 0===p?1:p;if(!a(r)||!a(h)||!a(n))return null;var u=function(a){return{l:o(a.l,0,400),a:a.a,b:a.b,alpha:o(a.alpha)}}({l:Number(r),a:Number(h),b:Number(n),alpha:Number(M)});return l(u)},l=function(a){var t=(a.l+16)/116,o=a.a/500+t,r=t-a.b/200;return u({x:(Math.pow(o,3)>w?Math.pow(o,3):(116*o-16)/b)*n,y:(a.l>8?Math.pow((a.l+16)/116,3):a.l/b)*p,z:(Math.pow(r,3)>w?Math.pow(r,3):(116*r-16)/b)*M,a:a.alpha})};export default function(a,r){a.prototype.toLab=function(){return o=e(this.rgba),h=o.y/p,u=o.z/M,r=(r=o.x/n)>w?Math.cbrt(r):(b*r+16)/116,a={l:116*(h=h>w?Math.cbrt(h):(b*h+16)/116)-16,a:500*(r-h),b:200*(h-(u=u>w?Math.cbrt(u):(b*u+16)/116)),alpha:o.a},{l:t(a.l,2),a:t(a.a,2),b:t(a.b,2),alpha:t(a.alpha,3)};var a,o,r,h,u},a.prototype.delta=function(r){void 0===r&&(r=\"#FFF\");var h=r instanceof a?r:new a(r),n=function(a,t){var o=a.l,r=a.a,h=a.b,n=t.l,p=t.a,M=t.b,u=180/Math.PI,e=Math.PI/180,w=Math.pow(Math.pow(r,2)+Math.pow(h,2),.5),b=Math.pow(Math.pow(p,2)+Math.pow(M,2),.5),i=(o+n)/2,l=Math.pow((w+b)/2,7),c=.5*(1-Math.pow(l/(l+Math.pow(25,7)),.5)),f=r*(1+c),y=p*(1+c),v=Math.pow(Math.pow(f,2)+Math.pow(h,2),.5),x=Math.pow(Math.pow(y,2)+Math.pow(M,2),.5),z=(v+x)/2,s=0===f&&0===h?0:Math.atan2(h,f)*u,d=0===y&&0===M?0:Math.atan2(M,y)*u;s<0&&(s+=360),d<0&&(d+=360);var g=d-s,m=Math.abs(d-s);m>180&&d<=s?g+=360:m>180&&d>s&&(g-=360);var N=s+d;m<=180?N/=2:N=(s+d<360?N+360:N-360)/2;var F=1-.17*Math.cos(e*(N-30))+.24*Math.cos(2*e*N)+.32*Math.cos(e*(3*N+6))-.2*Math.cos(e*(4*N-63)),L=n-o,I=x-v,P=2*Math.sin(e*g/2)*Math.pow(v*x,.5),j=1+.015*Math.pow(i-50,2)/Math.pow(20+Math.pow(i-50,2),.5),k=1+.045*z,q=1+.015*z*F,A=30*Math.exp(-1*Math.pow((N-275)/25,2)),B=-2*Math.pow(l/(l+Math.pow(25,7)),.5)*Math.sin(2*e*A);return Math.pow(Math.pow(L/1/j,2)+Math.pow(I/1/k,2)+Math.pow(P/1/q,2)+B*I*P/(1*k*1*q),.5)}(this.toLab(),h.toLab())/100;return o(t(n,3))},r.object.push([i,\"lab\"])}\n","var r={grad:.9,turn:360,rad:360/(2*Math.PI)},t=function(r){return\"string\"==typeof r?r.length>0:\"number\"==typeof r},a=function(r,t,a){return void 0===t&&(t=0),void 0===a&&(a=Math.pow(10,t)),Math.round(a*r)/a+0},n=function(r,t,a){return void 0===t&&(t=0),void 0===a&&(a=1),r>a?a:r>t?r:t},u=function(r){var t=r/255;return t<.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)},h=function(r){return 255*(r>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r)},o=96.422,e=100,c=82.521,i=function(r){var t,a,u={x:.9555766*(t=r).x+-.0230393*t.y+.0631636*t.z,y:-.0282895*t.x+1.0099416*t.y+.0210077*t.z,z:.0122982*t.x+-.020483*t.y+1.3299098*t.z};return a={r:h(.032404542*u.x-.015371385*u.y-.004985314*u.z),g:h(-.00969266*u.x+.018760108*u.y+41556e-8*u.z),b:h(556434e-9*u.x-.002040259*u.y+.010572252*u.z),a:r.a},{r:n(a.r,0,255),g:n(a.g,0,255),b:n(a.b,0,255),a:n(a.a)}},l=function(r){var t=u(r.r),a=u(r.g),h=u(r.b);return function(r){return{x:n(r.x,0,o),y:n(r.y,0,e),z:n(r.z,0,c),a:n(r.a)}}(function(r){return{x:1.0478112*r.x+.0228866*r.y+-.050127*r.z,y:.0295424*r.x+.9904844*r.y+-.0170491*r.z,z:-.0092345*r.x+.0150436*r.y+.7521316*r.z,a:r.a}}({x:100*(.4124564*t+.3575761*a+.1804375*h),y:100*(.2126729*t+.7151522*a+.072175*h),z:100*(.0193339*t+.119192*a+.9503041*h),a:r.a}))},f=216/24389,b=24389/27,d=function(r){return{l:n(r.l,0,100),c:r.c,h:(t=r.h,(t=isFinite(t)?t%360:0)>0?t:t+360),a:r.a};var t},p=function(r){return{l:a(r.l,2),c:a(r.c,2),h:a(r.h,2),a:a(r.a,3)}},v=function(r){var a=r.l,n=r.c,u=r.h,h=r.a,o=void 0===h?1:h;if(!t(a)||!t(n)||!t(u))return null;var e=d({l:Number(a),c:Number(n),h:Number(u),a:Number(o)});return M(e)},y=function(r){var t=function(r){var t=l(r),a=t.x/o,n=t.y/e,u=t.z/c;return a=a>f?Math.cbrt(a):(b*a+16)/116,{l:116*(n=n>f?Math.cbrt(n):(b*n+16)/116)-16,a:500*(a-n),b:200*(n-(u=u>f?Math.cbrt(u):(b*u+16)/116)),alpha:t.a}}(r),n=a(t.a,3),u=a(t.b,3),h=Math.atan2(u,n)/Math.PI*180;return{l:t.l,c:Math.sqrt(n*n+u*u),h:h<0?h+360:h,a:t.alpha}},M=function(r){return t={l:r.l,a:r.c*Math.cos(r.h*Math.PI/180),b:r.c*Math.sin(r.h*Math.PI/180),alpha:r.a},n=t.a/500+(a=(t.l+16)/116),u=a-t.b/200,i({x:(Math.pow(n,3)>f?Math.pow(n,3):(116*n-16)/b)*o,y:(t.l>8?Math.pow((t.l+16)/116,3):t.l/b)*e,z:(Math.pow(u,3)>f?Math.pow(u,3):(116*u-16)/b)*c,a:t.alpha});var t,a,n,u},x=/^lch\\(\\s*([+-]?\\d*\\.?\\d+)%\\s+([+-]?\\d*\\.?\\d+)\\s+([+-]?\\d*\\.?\\d+)(deg|rad|grad|turn)?\\s*(?:\\/\\s*([+-]?\\d*\\.?\\d+)(%)?\\s*)?\\)$/i,s=function(t){var a=x.exec(t);if(!a)return null;var n,u,h=d({l:Number(a[1]),c:Number(a[2]),h:(n=a[3],u=a[4],void 0===u&&(u=\"deg\"),Number(n)*(r[u]||1)),a:void 0===a[5]?1:Number(a[5])/(a[6]?100:1)});return M(h)};export default function(r,t){r.prototype.toLch=function(){return p(y(this.rgba))},r.prototype.toLchString=function(){return r=p(y(this.rgba)),t=r.l,a=r.c,n=r.h,(u=r.a)<1?\"lch(\"+t+\"% \"+a+\" \"+n+\" / \"+u+\")\":\"lch(\"+t+\"% \"+a+\" \"+n+\")\";var r,t,a,n,u},t.string.push([s,\"lch\"]),t.object.push([v,\"lch\"])}\n","import { colord as colord_, extend } from 'colord';\nimport valueParser from 'postcss-value-parser';\n\nimport namesPlugin from 'colord/plugins/names';\n\nimport hwbPlugin from 'colord/plugins/hwb';\nimport labPlugin from 'colord/plugins/lab';\nimport lchPlugin from 'colord/plugins/lch';\n\nextend([\n\t// Type definitions are not compatible with commonjs.\n\t/** @type {any} */ (namesPlugin),\n\t/** @type {any} */ (hwbPlugin),\n\t/** @type {any} */ (labPlugin),\n\t/** @type {any} */ (lchPlugin),\n\n\t/* Syntaxes that is removed in Color Module Level 4 specification. */\n\n\t// hwb() with comma\n\t(_colordClass, parsers) => {\n\t\tparsers.string.push([parseHwbWithCommaString, /** @type {any} */ ('hwb-with-comma')]);\n\t},\n\t// gray()\n\t(_colordClass, parsers) => {\n\t\tparsers.string.push([parseGrayString, /** @type {any} */ ('gray')]);\n\t},\n]);\n\nexport const colord = colord_;\n\n/**\n * Parses a valid hwb with comma CSS color function\n * https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/hwb()#syntax\n * @param {string} input\n * @returns {import('colord').RgbaColor | null}\n */\nfunction parseHwbWithCommaString(input) {\n\tinput = input.toLowerCase();\n\n\tif (!input.startsWith('hwb(') || !input.endsWith(')') || input.includes('/')) {\n\t\treturn null;\n\t}\n\n\tconst [hue, whiteness = '', blackness = '', alpha, ...extraArgs] = input.slice(4, -1).split(',');\n\n\tif (!hue || !hue.trim() || !whiteness.trim() || !blackness.trim() || extraArgs.length > 0) {\n\t\treturn null;\n\t}\n\n\t// Change the delimiter and parse with colord.\n\tconst colordInstance = colord(\n\t\t`hwb(${hue} ${whiteness} ${blackness}${alpha ? ` / ${alpha}` : ''})`,\n\t);\n\n\tif (!colordInstance.isValid()) {\n\t\treturn null;\n\t}\n\n\treturn colordInstance.rgba;\n}\n\n/**\n * Parses a valid gray() CSS color function\n * @param {string} input\n * @returns {import('colord').RgbaColor | null}\n */\nfunction parseGrayString(input) {\n\tinput = input.toLowerCase();\n\n\tif (!input.startsWith('gray(') || !input.endsWith(')')) {\n\t\treturn null;\n\t}\n\n\tconst [lightness, alpha, ...extraArgs] = input.slice(5, -1).split(',');\n\n\tif (!lightness || extraArgs.length > 0) {\n\t\treturn null;\n\t}\n\n\tconst lightnessWithUnit = valueParser.unit(lightness.trim());\n\n\tif (!lightnessWithUnit || !['', '%'].includes(lightnessWithUnit.unit)) {\n\t\treturn null;\n\t}\n\n\t/**\n\t * @type {import('colord').LabColor | import('colord').LabaColor}\n\t */\n\tlet colorObject = {\n\t\tl: Number(lightnessWithUnit.number),\n\t\ta: 0,\n\t\tb: 0,\n\t};\n\n\tif (alpha) {\n\t\tconst alphaWithUnit = valueParser.unit(alpha.trim());\n\n\t\tif (!alphaWithUnit || !['', '%'].includes(alphaWithUnit.unit)) {\n\t\t\treturn null;\n\t\t}\n\n\t\tcolorObject = {\n\t\t\t...colorObject,\n\t\t\talpha: Number(alphaWithUnit.number) / (alphaWithUnit.unit ? 100 : 1),\n\t\t};\n\t}\n\n\treturn colord(colorObject).rgba;\n}\n","export default function(e,f){var a={white:\"#ffffff\",bisque:\"#ffe4c4\",blue:\"#0000ff\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",azure:\"#f0ffff\",whitesmoke:\"#f5f5f5\",papayawhip:\"#ffefd5\",plum:\"#dda0dd\",blanchedalmond:\"#ffebcd\",black:\"#000000\",gold:\"#ffd700\",goldenrod:\"#daa520\",gainsboro:\"#dcdcdc\",cornsilk:\"#fff8dc\",cornflowerblue:\"#6495ed\",burlywood:\"#deb887\",aquamarine:\"#7fffd4\",beige:\"#f5f5dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkkhaki:\"#bdb76b\",darkgray:\"#a9a9a9\",darkgreen:\"#006400\",darkgrey:\"#a9a9a9\",peachpuff:\"#ffdab9\",darkmagenta:\"#8b008b\",darkred:\"#8b0000\",darkorchid:\"#9932cc\",darkorange:\"#ff8c00\",darkslateblue:\"#483d8b\",gray:\"#808080\",darkslategray:\"#2f4f4f\",darkslategrey:\"#2f4f4f\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",wheat:\"#f5deb3\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",ghostwhite:\"#f8f8ff\",darkviolet:\"#9400d3\",magenta:\"#ff00ff\",green:\"#008000\",dodgerblue:\"#1e90ff\",grey:\"#808080\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",blueviolet:\"#8a2be2\",forestgreen:\"#228b22\",lawngreen:\"#7cfc00\",indianred:\"#cd5c5c\",indigo:\"#4b0082\",fuchsia:\"#ff00ff\",brown:\"#a52a2a\",maroon:\"#800000\",mediumblue:\"#0000cd\",lightcoral:\"#f08080\",darkturquoise:\"#00ced1\",lightcyan:\"#e0ffff\",ivory:\"#fffff0\",lightyellow:\"#ffffe0\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",linen:\"#faf0e6\",mediumaquamarine:\"#66cdaa\",lemonchiffon:\"#fffacd\",lime:\"#00ff00\",khaki:\"#f0e68c\",mediumseagreen:\"#3cb371\",limegreen:\"#32cd32\",mediumspringgreen:\"#00fa9a\",lightskyblue:\"#87cefa\",lightblue:\"#add8e6\",midnightblue:\"#191970\",lightpink:\"#ffb6c1\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",mintcream:\"#f5fffa\",lightslategray:\"#778899\",lightslategrey:\"#778899\",navajowhite:\"#ffdead\",navy:\"#000080\",mediumvioletred:\"#c71585\",powderblue:\"#b0e0e6\",palegoldenrod:\"#eee8aa\",oldlace:\"#fdf5e6\",paleturquoise:\"#afeeee\",mediumturquoise:\"#48d1cc\",mediumorchid:\"#ba55d3\",rebeccapurple:\"#663399\",lightsteelblue:\"#b0c4de\",mediumslateblue:\"#7b68ee\",thistle:\"#d8bfd8\",tan:\"#d2b48c\",orchid:\"#da70d6\",mediumpurple:\"#9370db\",purple:\"#800080\",pink:\"#ffc0cb\",skyblue:\"#87ceeb\",springgreen:\"#00ff7f\",palegreen:\"#98fb98\",red:\"#ff0000\",yellow:\"#ffff00\",slateblue:\"#6a5acd\",lavenderblush:\"#fff0f5\",peru:\"#cd853f\",palevioletred:\"#db7093\",violet:\"#ee82ee\",teal:\"#008080\",slategray:\"#708090\",slategrey:\"#708090\",aliceblue:\"#f0f8ff\",darkseagreen:\"#8fbc8f\",darkolivegreen:\"#556b2f\",greenyellow:\"#adff2f\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",tomato:\"#ff6347\",silver:\"#c0c0c0\",sienna:\"#a0522d\",lavender:\"#e6e6fa\",lightgreen:\"#90ee90\",orange:\"#ffa500\",orangered:\"#ff4500\",steelblue:\"#4682b4\",royalblue:\"#4169e1\",turquoise:\"#40e0d0\",yellowgreen:\"#9acd32\",salmon:\"#fa8072\",saddlebrown:\"#8b4513\",sandybrown:\"#f4a460\",rosybrown:\"#bc8f8f\",darksalmon:\"#e9967a\",lightgoldenrodyellow:\"#fafad2\",snow:\"#fffafa\",lightgrey:\"#d3d3d3\",lightgray:\"#d3d3d3\",dimgray:\"#696969\",dimgrey:\"#696969\",olivedrab:\"#6b8e23\",olive:\"#808000\"},r={};for(var d in a)r[a[d]]=d;var l={};e.prototype.toName=function(f){if(!(this.rgba.a||this.rgba.r||this.rgba.g||this.rgba.b))return\"transparent\";var d,i,n=r[this.toHex()];if(n)return n;if(null==f?void 0:f.closest){var o=this.toRgb(),t=1/0,b=\"black\";if(!l.length)for(var c in a)l[c]=new e(a[c]).toRgb();for(var g in a){var u=(d=o,i=l[g],Math.pow(d.r-i.r,2)+Math.pow(d.g-i.g,2)+Math.pow(d.b-i.b,2));u `Expected \"${original}\" to be \"${named}\"`,\n\trejected: (named) => `Unexpected named color \"${named}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/color-named',\n};\n\n// Todo tested on case insensitivity\nconst NODE_TYPES = new Set(['word', 'function']);\n\nconst HAS_GRAY_FUNCTION = /\\bgray\\(/i;\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary, secondaryOptions) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(\n\t\t\tresult,\n\t\t\truleName,\n\t\t\t{\n\t\t\t\tactual: primary,\n\t\t\t\tpossible: ['never', 'always-where-possible'],\n\t\t\t},\n\t\t\t{\n\t\t\t\tactual: secondaryOptions,\n\t\t\t\tpossible: {\n\t\t\t\t\tignoreProperties: [isString, isRegExp],\n\t\t\t\t\tignore: ['inside-function'],\n\t\t\t\t},\n\t\t\t\toptional: true,\n\t\t\t},\n\t\t);\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\troot.walkDecls((decl) => {\n\t\t\tif (acceptCustomIdentsProperties.has(decl.prop)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Return early if the property is to be ignored\n\t\t\tif (optionsMatches(secondaryOptions, 'ignoreProperties', decl.prop)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { value: declValue } = decl;\n\n\t\t\tif (primary === 'never' && !hasNamedColor(declValue)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tprimary === 'always-where-possible' &&\n\t\t\t\t!hasValidHex(declValue) &&\n\t\t\t\t!hasColorFunction(declValue) &&\n\t\t\t\t!HAS_GRAY_FUNCTION.test(declValue)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvalueParser(declValue).walk((node) => {\n\t\t\t\tconst value = node.value;\n\t\t\t\tconst type = node.type;\n\t\t\t\tconst sourceIndex = node.sourceIndex;\n\n\t\t\t\tif (optionsMatches(secondaryOptions, 'ignore', 'inside-function') && type === 'function') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (!isStandardSyntaxFunction(node)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\tif (!isStandardSyntaxValue(value)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Return early if neither a word nor a function\n\t\t\t\tif (!NODE_TYPES.has(type)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Check for named colors for \"never\" option\n\t\t\t\tif (\n\t\t\t\t\tprimary === 'never' &&\n\t\t\t\t\ttype === 'word' &&\n\t\t\t\t\tnamedColorsKeywords.has(value.toLowerCase())\n\t\t\t\t) {\n\t\t\t\t\tcomplain(\n\t\t\t\t\t\tmessages.rejected(value),\n\t\t\t\t\t\tdecl,\n\t\t\t\t\t\tdeclarationValueIndex(decl) + sourceIndex,\n\t\t\t\t\t\tvalue.length,\n\t\t\t\t\t);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Check \"always-where-possible\" option ...\n\t\t\t\tif (primary !== 'always-where-possible') {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tlet rawColorString = null;\n\t\t\t\tlet colorString = null;\n\n\t\t\t\tif (type === 'function') {\n\t\t\t\t\trawColorString = valueParser.stringify(node);\n\n\t\t\t\t\t// First by checking for alternative color function representations ...\n\t\t\t\t\t// Remove all spaces to match what's in `representations`\n\t\t\t\t\tcolorString = rawColorString.replace(/\\s*([,/()])\\s*/g, '$1').replace(/\\s{2,}/g, ' ');\n\t\t\t\t} else if (type === 'word' && value.startsWith('#')) {\n\t\t\t\t\t// Then by checking for alternative hex representations\n\t\t\t\t\trawColorString = colorString = value;\n\t\t\t\t} else {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst color = colord(colorString);\n\n\t\t\t\tif (!color.isValid()) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst namedColor = color.toName();\n\n\t\t\t\tif (namedColor && namedColor.toLowerCase() !== 'transparent') {\n\t\t\t\t\tcomplain(\n\t\t\t\t\t\tmessages.expected(namedColor, colorString),\n\t\t\t\t\t\tdecl,\n\t\t\t\t\t\tdeclarationValueIndex(decl) + sourceIndex,\n\t\t\t\t\t\trawColorString.length,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\t/**\n\t\t * @param {string} message\n\t\t * @param {import('postcss').Node} node\n\t\t * @param {number} index\n\t\t * @param {number} length\n\t\t */\n\t\tfunction complain(message, node, index, length) {\n\t\t\treport({\n\t\t\t\tresult,\n\t\t\t\truleName,\n\t\t\t\tmessage,\n\t\t\t\tnode,\n\t\t\t\tindex,\n\t\t\t\tendIndex: index + length,\n\t\t\t});\n\t\t}\n\t};\n};\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","import valueParser from 'postcss-value-parser';\n\nimport declarationValueIndex from '../../utils/declarationValueIndex.mjs';\nimport getDeclarationValue from '../../utils/getDeclarationValue.mjs';\nimport isIgnoredFunction from '../../utils/isIgnoredFunction.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'color-no-hex';\n\nconst messages = ruleMessages(ruleName, {\n\trejected: (hex) => `Unexpected hex color \"${hex}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/color-no-hex',\n};\n\nconst HEX = /^#[\\da-z]+$/i;\nconst CONTAINS_HEX = /#[\\da-z]+/i;\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(result, ruleName, { actual: primary });\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\troot.walkDecls((decl) => {\n\t\t\tif (!CONTAINS_HEX.test(decl.value)) return;\n\n\t\t\tconst parsedValue = valueParser(getDeclarationValue(decl));\n\n\t\t\tparsedValue.walk((node) => {\n\t\t\t\tif (isIgnoredFunction(node)) return false;\n\n\t\t\t\tif (!isHexColor(node)) return;\n\n\t\t\t\tconst index = declarationValueIndex(decl) + node.sourceIndex;\n\t\t\t\tconst endIndex = index + node.value.length;\n\n\t\t\t\treport({\n\t\t\t\t\tmessage: messages.rejected,\n\t\t\t\t\tmessageArgs: [node.value],\n\t\t\t\t\tnode: decl,\n\t\t\t\t\tindex,\n\t\t\t\t\tendIndex,\n\t\t\t\t\tresult,\n\t\t\t\t\truleName,\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t};\n};\n\n/**\n * @param {import('postcss-value-parser').Node} node\n */\nfunction isHexColor({ type, value }) {\n\treturn type === 'word' && HEX.test(value);\n}\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","import valueParser from 'postcss-value-parser';\n\nimport declarationValueIndex from '../../utils/declarationValueIndex.mjs';\nimport isStandardSyntaxHexColor from '../../utils/isStandardSyntaxHexColor.mjs';\nimport isValidHex from '../../utils/isValidHex.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'color-no-invalid-hex';\n\nconst messages = ruleMessages(ruleName, {\n\trejected: (hex) => `Unexpected invalid hex color \"${hex}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/color-no-invalid-hex',\n};\n\nconst CONTAINS_HEX = /#[\\da-z]+/i;\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(result, ruleName, { actual: primary });\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\troot.walkDecls((decl) => {\n\t\t\tif (!isStandardSyntaxHexColor(decl.value)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!CONTAINS_HEX.test(decl.value)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvalueParser(decl.value).walk(({ value, type, sourceIndex }) => {\n\t\t\t\tif (type === 'function' && value.endsWith('url')) return false;\n\n\t\t\t\tif (type !== 'word') return;\n\n\t\t\t\tconst hexMatch = /^#[\\da-z]+/i.exec(value);\n\n\t\t\t\tif (!hexMatch) return;\n\n\t\t\t\tconst hexValue = hexMatch[0];\n\n\t\t\t\tif (!hexValue || isValidHex(hexValue)) return;\n\n\t\t\t\tconst index = declarationValueIndex(decl) + sourceIndex;\n\t\t\t\tconst endIndex = index + hexValue.length;\n\n\t\t\t\treport({\n\t\t\t\t\tmessage: messages.rejected,\n\t\t\t\t\tmessageArgs: [hexValue],\n\t\t\t\t\tnode: decl,\n\t\t\t\t\tindex,\n\t\t\t\t\tendIndex,\n\t\t\t\t\tresult,\n\t\t\t\t\truleName,\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t};\n};\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","/**\n * Check whether a hex color is standard\n *\n * @param {string} hex\n * @returns {boolean}\n */\nexport default function isStandardSyntaxHexColor(hex) {\n\t// Less map usage (e.g. .myclass { color: #colors[somecolor]; })\n\tif (hex.includes('[')) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","/**\n * @param {import('postcss').Comment} comment\n * @returns {boolean}\n */\nexport default function isStandardSyntaxComment(comment) {\n\t// We check both here because the Sass parser uses `raws.inline` to indicate\n\t// inline comments, while the Less parser uses `inline`.\n\tif ('inline' in comment) return false;\n\n\tif ('inline' in comment.raws) return false;\n\n\treturn true;\n}\n","import { isRegExp, isString } from '../../utils/validateTypes.mjs';\nimport addEmptyLineBefore from '../../utils/addEmptyLineBefore.mjs';\nimport hasEmptyLine from '../../utils/hasEmptyLine.mjs';\nimport isAfterComment from '../../utils/isAfterComment.mjs';\nimport { isConfigurationComment } from '../../utils/configurationComment.mjs';\nimport isFirstNested from '../../utils/isFirstNested.mjs';\nimport isFirstNodeOfRoot from '../../utils/isFirstNodeOfRoot.mjs';\nimport isSharedLineComment from '../../utils/isSharedLineComment.mjs';\nimport isStandardSyntaxComment from '../../utils/isStandardSyntaxComment.mjs';\nimport optionsMatches from '../../utils/optionsMatches.mjs';\nimport removeEmptyLinesBefore from '../../utils/removeEmptyLinesBefore.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'comment-empty-line-before';\n\nconst messages = ruleMessages(ruleName, {\n\texpected: 'Expected empty line before comment',\n\trejected: 'Unexpected empty line before comment',\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/comment-empty-line-before',\n\tfixable: true,\n};\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary, secondaryOptions, context) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(\n\t\t\tresult,\n\t\t\truleName,\n\t\t\t{\n\t\t\t\tactual: primary,\n\t\t\t\tpossible: ['always', 'never'],\n\t\t\t},\n\t\t\t{\n\t\t\t\tactual: secondaryOptions,\n\t\t\t\tpossible: {\n\t\t\t\t\texcept: ['first-nested'],\n\t\t\t\t\tignore: ['stylelint-commands', 'after-comment'],\n\t\t\t\t\tignoreComments: [isString, isRegExp],\n\t\t\t\t},\n\t\t\t\toptional: true,\n\t\t\t},\n\t\t);\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\troot.walkComments((comment) => {\n\t\t\t// Ignore the first node\n\t\t\tif (isFirstNodeOfRoot(comment)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Optionally ignore stylelint commands\n\t\t\tif (\n\t\t\t\tisConfigurationComment(comment, context.configurationComment) &&\n\t\t\t\toptionsMatches(secondaryOptions, 'ignore', 'stylelint-commands')\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Optionally ignore newlines between comments\n\t\t\tif (optionsMatches(secondaryOptions, 'ignore', 'after-comment') && isAfterComment(comment)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Ignore comments matching the ignoreComments option.\n\t\t\tif (optionsMatches(secondaryOptions, 'ignoreComments', comment.text)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Ignore shared-line comments\n\t\t\tif (isSharedLineComment(comment)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Ignore non-standard comments\n\t\t\tif (!isStandardSyntaxComment(comment)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst expectEmptyLineBefore = (() => {\n\t\t\t\tif (optionsMatches(secondaryOptions, 'except', 'first-nested') && isFirstNested(comment)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\treturn primary === 'always';\n\t\t\t})();\n\n\t\t\tconst before = comment.raws.before || '';\n\t\t\tconst hasEmptyLineBefore = hasEmptyLine(before);\n\n\t\t\t// Return if the expectation is met\n\t\t\tif (expectEmptyLineBefore === hasEmptyLineBefore) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Fix\n\t\t\tif (context.fix) {\n\t\t\t\tif (typeof context.newline !== 'string') return;\n\n\t\t\t\tif (expectEmptyLineBefore) {\n\t\t\t\t\taddEmptyLineBefore(comment, context.newline);\n\t\t\t\t} else {\n\t\t\t\t\tremoveEmptyLinesBefore(comment, context.newline);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst message = expectEmptyLineBefore ? messages.expected : messages.rejected;\n\n\t\t\treport({\n\t\t\t\tmessage,\n\t\t\t\tnode: comment,\n\t\t\t\tresult,\n\t\t\t\truleName,\n\t\t\t});\n\t\t});\n\t};\n};\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","import isStandardSyntaxComment from '../../utils/isStandardSyntaxComment.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'comment-no-empty';\n\nconst messages = ruleMessages(ruleName, {\n\trejected: 'Unexpected empty comment',\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/comment-no-empty',\n};\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(result, ruleName, { actual: primary });\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\troot.walkComments((comment) => {\n\t\t\t// To ignore non-standard comments\n\t\t\tif (!isStandardSyntaxComment(comment)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// To ignore comments that are not empty\n\t\t\tif (comment.text && comment.text.length !== 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treport({\n\t\t\t\tmessage: messages.rejected,\n\t\t\t\tnode: comment,\n\t\t\t\tresult,\n\t\t\t\truleName,\n\t\t\t});\n\t\t});\n\t};\n};\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","import { isRegExp, isString } from '../../utils/validateTypes.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'comment-pattern';\n\nconst messages = ruleMessages(ruleName, {\n\texpected: (pattern) => `Expected comment to match pattern \"${pattern}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/comment-pattern',\n};\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(result, ruleName, {\n\t\t\tactual: primary,\n\t\t\tpossible: [isRegExp, isString],\n\t\t});\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst normalizedPattern = isString(primary) ? new RegExp(primary) : primary;\n\n\t\troot.walkComments((comment) => {\n\t\t\tconst text = comment.text;\n\n\t\t\tif (normalizedPattern.test(text)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treport({\n\t\t\t\tmessage: messages.expected,\n\t\t\t\tmessageArgs: [primary],\n\t\t\t\tnode: comment,\n\t\t\t\tresult,\n\t\t\t\truleName,\n\t\t\t});\n\t\t});\n\t};\n};\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","/**\n * Check if a character is whitespace.\n *\n * @param {string} char\n * @returns {boolean}\n */\nexport default function isWhitespace(char) {\n\treturn [' ', '\\n', '\\t', '\\r', '\\f'].includes(char);\n}\n","import isStandardSyntaxComment from '../../utils/isStandardSyntaxComment.mjs';\nimport isWhitespace from '../../utils/isWhitespace.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'comment-whitespace-inside';\n\nconst messages = ruleMessages(ruleName, {\n\texpectedOpening: 'Expected whitespace after \"/*\"',\n\trejectedOpening: 'Unexpected whitespace after \"/*\"',\n\texpectedClosing: 'Expected whitespace before \"*/\"',\n\trejectedClosing: 'Unexpected whitespace before \"*/\"',\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/comment-whitespace-inside',\n\tfixable: true,\n};\n\n/**\n * @param {import('postcss').Comment} comment\n */\nfunction addWhitespaceBefore(comment) {\n\tif (comment.text.startsWith('*')) {\n\t\tcomment.text = comment.text.replace(/^(\\*+)/, `$1 `);\n\t} else {\n\t\tcomment.raws.left = ' ';\n\t}\n}\n\n/**\n * @param {import('postcss').Comment} comment\n */\nfunction addWhitespaceAfter(comment) {\n\tif (comment.text[comment.text.length - 1] === '*') {\n\t\tcomment.text = comment.text.replace(/(\\*+)$/, ` $1`);\n\t} else {\n\t\tcomment.raws.right = ' ';\n\t}\n}\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary, _secondaryOptions, context) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(result, ruleName, {\n\t\t\tactual: primary,\n\t\t\tpossible: ['always', 'never'],\n\t\t});\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\troot.walkComments((comment) => {\n\t\t\tif (!isStandardSyntaxComment(comment)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst rawComment = comment.toString();\n\t\t\tconst firstFourChars = rawComment.slice(0, 4);\n\n\t\t\t// Return early if sourcemap or copyright comment\n\t\t\tif (/^\\/\\*[#!]\\s/.test(firstFourChars)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst leftMatches = rawComment.match(/(^\\/\\*+)(\\s)?/);\n\n\t\t\tif (leftMatches == null || leftMatches[1] == null) {\n\t\t\t\tthrow new Error(`Invalid comment: \"${rawComment}\"`);\n\t\t\t}\n\n\t\t\tconst rightMatches = rawComment.match(/(\\s)?(\\*+\\/)$/);\n\n\t\t\tif (rightMatches == null || rightMatches[2] == null) {\n\t\t\t\tthrow new Error(`Invalid comment: \"${rawComment}\"`);\n\t\t\t}\n\n\t\t\tconst opener = leftMatches[1];\n\t\t\tconst leftSpace = leftMatches[2] || '';\n\t\t\tconst rightSpace = rightMatches[1] || '';\n\t\t\tconst closer = rightMatches[2];\n\n\t\t\tif (primary === 'never' && leftSpace !== '') {\n\t\t\t\tcomplain(messages.rejectedOpening, opener.length);\n\t\t\t}\n\n\t\t\tif (primary === 'always' && !isWhitespace(leftSpace)) {\n\t\t\t\tcomplain(messages.expectedOpening, opener.length);\n\t\t\t}\n\n\t\t\tif (primary === 'never' && rightSpace !== '') {\n\t\t\t\tcomplain(messages.rejectedClosing, comment.toString().length - closer.length - 1);\n\t\t\t}\n\n\t\t\tif (primary === 'always' && !isWhitespace(rightSpace)) {\n\t\t\t\tcomplain(messages.expectedClosing, comment.toString().length - closer.length - 1);\n\t\t\t}\n\n\t\t\t/**\n\t\t\t * @param {string} message\n\t\t\t * @param {number} index\n\t\t\t */\n\t\t\tfunction complain(message, index) {\n\t\t\t\tif (context.fix) {\n\t\t\t\t\tif (primary === 'never') {\n\t\t\t\t\t\tcomment.raws.left = '';\n\t\t\t\t\t\tcomment.raws.right = '';\n\t\t\t\t\t\tcomment.text = comment.text.replace(/^(\\*+)(\\s+)?/, '$1').replace(/(\\s+)?(\\*+)$/, '$2');\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!leftSpace) {\n\t\t\t\t\t\t\taddWhitespaceBefore(comment);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!rightSpace) {\n\t\t\t\t\t\t\taddWhitespaceAfter(comment);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\treport({\n\t\t\t\t\tmessage,\n\t\t\t\t\tindex,\n\t\t\t\t\tresult,\n\t\t\t\t\truleName,\n\t\t\t\t\tnode: comment,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t};\n};\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","import { isString } from './validateTypes.mjs';\n\n/** @typedef {false | { match: string, pattern: string, substring: string }} ReturnValue */\n\n/**\n * Checks if a string contains a value. The comparison value can be a string or\n * an array of strings.\n *\n * Any strings starting and ending with `/` are ignored. Use the\n * matchesStringOrRegExp() util to match regexes.\n *\n * @template {unknown} T\n * @param {string} input\n * @param {T | T[]} comparison\n * @returns {ReturnValue}\n */\nexport default function containsString(input, comparison) {\n\tif (!Array.isArray(comparison)) {\n\t\treturn testAgainstString(input, comparison);\n\t}\n\n\tfor (const comparisonItem of comparison) {\n\t\tconst testResult = testAgainstString(input, comparisonItem);\n\n\t\tif (testResult) {\n\t\t\treturn testResult;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * @param {string} value\n * @param {unknown} comparison\n * @returns {ReturnValue}\n */\nfunction testAgainstString(value, comparison) {\n\tif (!comparison) return false;\n\n\tif (!isString(comparison)) return false;\n\n\tif (comparison.startsWith('/') && comparison.endsWith('/')) {\n\t\treturn false;\n\t}\n\n\tif (value.includes(comparison)) {\n\t\treturn { match: value, pattern: comparison, substring: comparison };\n\t}\n\n\treturn false;\n}\n","import { isRegExp, isString } from '../../utils/validateTypes.mjs';\nimport containsString from '../../utils/containsString.mjs';\nimport matchesStringOrRegExp from '../../utils/matchesStringOrRegExp.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'comment-word-disallowed-list';\n\nconst messages = ruleMessages(ruleName, {\n\trejected: (pattern) => `Unexpected word matching pattern \"${pattern}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/comment-word-disallowed-list',\n};\n\n/** @type {import('stylelint').Rule>} */\nconst rule = (primary) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(result, ruleName, {\n\t\t\tactual: primary,\n\t\t\tpossible: [isString, isRegExp],\n\t\t});\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\troot.walkComments((comment) => {\n\t\t\tconst text = comment.text;\n\t\t\tconst rawComment = comment.toString();\n\t\t\tconst firstFourChars = rawComment.slice(0, 4);\n\n\t\t\t// Return early if sourcemap\n\t\t\tif (firstFourChars === '/*# ') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst matchesWord = matchesStringOrRegExp(text, primary) || containsString(text, primary);\n\n\t\t\tif (!matchesWord) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\treport({\n\t\t\t\tmessage: messages.rejected,\n\t\t\t\tmessageArgs: [matchesWord.pattern],\n\t\t\t\tnode: comment,\n\t\t\t\tword: matchesWord.substring,\n\t\t\t\tresult,\n\t\t\t\truleName,\n\t\t\t});\n\t\t});\n\t};\n};\n\nrule.primaryOptionArray = true;\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","/**\n * @param {import('postcss').AtRule} atRule\n * @returns {number}\n */\nexport default function atRuleParamIndex(atRule) {\n\t// Initial 1 is for the `@`\n\tlet index = 1 + atRule.name.length;\n\n\tif (atRule.raws.afterName) {\n\t\tindex += atRule.raws.afterName.length;\n\t}\n\n\treturn index;\n}\n","import { isRegExp, isString } from '../../utils/validateTypes.mjs';\nimport atRuleParamIndex from '../../utils/atRuleParamIndex.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'custom-media-pattern';\n\nconst messages = ruleMessages(ruleName, {\n\texpected: (mediaName, pattern) => `Expected \"${mediaName}\" to match pattern \"${pattern}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/custom-media-pattern',\n};\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(result, ruleName, {\n\t\t\tactual: primary,\n\t\t\tpossible: [isRegExp, isString],\n\t\t});\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst regexpPattern = isString(primary) ? new RegExp(primary) : primary;\n\n\t\troot.walkAtRules((atRule) => {\n\t\t\tif (atRule.name.toLowerCase() !== 'custom-media') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst [fullName, customMediaName] = atRule.params.match(/^--(\\S+)\\b/) || [];\n\n\t\t\tif (fullName === undefined || customMediaName === undefined) {\n\t\t\t\tthrow new Error(`Unexpected at-rule params: \"${atRule.params}\"`);\n\t\t\t}\n\n\t\t\tif (regexpPattern.test(customMediaName)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst index = atRuleParamIndex(atRule);\n\n\t\t\treport({\n\t\t\t\tmessage: messages.expected,\n\t\t\t\tmessageArgs: [fullName, primary],\n\t\t\t\tnode: atRule,\n\t\t\t\tindex,\n\t\t\t\tendIndex: index + fullName.length,\n\t\t\t\tresult,\n\t\t\t\truleName,\n\t\t\t});\n\t\t});\n\t};\n};\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","import beforeBlockString from './beforeBlockString.mjs';\nimport hasBlock from './hasBlock.mjs';\nimport rawNodeString from './rawNodeString.mjs';\n\n/**\n * Return a CSS statement's block -- the string that starts and `{` and ends with `}`.\n *\n * If the statement has no block (e.g. `@import url(foo.css);`), returns an empty string.\n *\n * @param {import('postcss').Container} statement\n * @returns {string}\n */\nexport default function blockString(statement) {\n\tif (!hasBlock(statement)) {\n\t\treturn '';\n\t}\n\n\treturn rawNodeString(statement).slice(beforeBlockString(statement).length);\n}\n","/**\n * Stringify PostCSS node including its raw \"before\" string.\n *\n * @param {import('postcss').Node} node\n *\n * @returns {string}\n */\nexport default function rawNodeString(node) {\n\tlet result = '';\n\n\tif (node.raws.before) {\n\t\tresult += node.raws.before;\n\t}\n\n\tresult += node.toString();\n\n\treturn result;\n}\n","/**\n * Check whether a property is a custom one\n * @param {string} property\n * @returns {boolean}\n */\nexport default function isCustomProperty(property) {\n\treturn property.startsWith('--');\n}\n","/**\n * Check if a string is a single line (i.e. does not contain\n * any newline characters).\n *\n * @param {string} input\n * @return {boolean}\n */\nexport default function isSingleLineString(input) {\n\treturn !/[\\n\\r]/.test(input);\n}\n","/**\n * Check whether a property is SCSS variable\n *\n * @param {string} property\n * @returns {boolean}\n */\nexport default function isScssVariable(property) {\n\t// SCSS var (e.g. $var: x), list (e.g. $list: (x)) or map (e.g. $map: (key:value))\n\tif (property.startsWith('$')) {\n\t\treturn true;\n\t}\n\n\t// SCSS var within a namespace (e.g. namespace.$var: x)\n\tif (property.includes('.$')) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n","import { isRule } from './typeGuards.mjs';\nimport isScssVariable from './isScssVariable.mjs';\n\n/**\n * Check whether a declaration is standard\n *\n * @param {import('postcss').Declaration | import('postcss-less').Declaration} decl\n * @returns {boolean}\n */\nexport default function isStandardSyntaxDeclaration(decl) {\n\tconst prop = decl.prop;\n\tconst parent = decl.parent;\n\n\t// SCSS var; covers map and list declarations\n\tif (isScssVariable(prop)) {\n\t\treturn false;\n\t}\n\n\t// Less var (e.g. @var: x), but exclude variable interpolation (e.g. @{var})\n\tif (prop[0] === '@' && prop[1] !== '{') {\n\t\treturn false;\n\t}\n\n\t// Less map declaration\n\tif (parent && parent.type === 'atrule' && parent.raws.afterName === ':') {\n\t\treturn false;\n\t}\n\n\t// Less map (e.g. #my-map() { myprop: red; })\n\tif (\n\t\tparent &&\n\t\tisRule(parent) &&\n\t\tparent.selector &&\n\t\tparent.selector.startsWith('#') &&\n\t\tparent.selector.endsWith('()')\n\t) {\n\t\treturn false;\n\t}\n\n\t// Sass nested properties (e.g. border: { style: solid; color: red; })\n\tif (\n\t\tparent &&\n\t\tisRule(parent) &&\n\t\tparent.selector &&\n\t\tparent.selector[parent.selector.length - 1] === ':' &&\n\t\tparent.selector.substring(0, 2) !== '--'\n\t) {\n\t\treturn false;\n\t}\n\n\t// Less &:extend\n\tif ('extend' in decl && decl.extend) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","import { isAtRule, isDeclaration, isRule } from '../../utils/typeGuards.mjs';\nimport addEmptyLineBefore from '../../utils/addEmptyLineBefore.mjs';\nimport blockString from '../../utils/blockString.mjs';\nimport getPreviousNonSharedLineCommentNode from '../../utils/getPreviousNonSharedLineCommentNode.mjs';\nimport hasEmptyLine from '../../utils/hasEmptyLine.mjs';\nimport isAfterComment from '../../utils/isAfterComment.mjs';\nimport isCustomProperty from '../../utils/isCustomProperty.mjs';\nimport isFirstNested from '../../utils/isFirstNested.mjs';\nimport isSingleLineString from '../../utils/isSingleLineString.mjs';\nimport isStandardSyntaxDeclaration from '../../utils/isStandardSyntaxDeclaration.mjs';\nimport optionsMatches from '../../utils/optionsMatches.mjs';\nimport removeEmptyLinesBefore from '../../utils/removeEmptyLinesBefore.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'custom-property-empty-line-before';\n\nconst messages = ruleMessages(ruleName, {\n\texpected: 'Expected empty line before custom property',\n\trejected: 'Unexpected empty line before custom property',\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/custom-property-empty-line-before',\n\tfixable: true,\n};\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary, secondaryOptions, context) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(\n\t\t\tresult,\n\t\t\truleName,\n\t\t\t{\n\t\t\t\tactual: primary,\n\t\t\t\tpossible: ['always', 'never'],\n\t\t\t},\n\t\t\t{\n\t\t\t\tactual: secondaryOptions,\n\t\t\t\tpossible: {\n\t\t\t\t\texcept: ['first-nested', 'after-comment', 'after-custom-property'],\n\t\t\t\t\tignore: ['after-comment', 'first-nested', 'inside-single-line-block'],\n\t\t\t\t},\n\t\t\t\toptional: true,\n\t\t\t},\n\t\t);\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\troot.walkDecls((decl) => {\n\t\t\tconst prop = decl.prop;\n\t\t\tconst parent = decl.parent;\n\n\t\t\tif (!isStandardSyntaxDeclaration(decl)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!isCustomProperty(prop)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Optionally ignore the node if a comment precedes it\n\t\t\tif (optionsMatches(secondaryOptions, 'ignore', 'after-comment') && isAfterComment(decl)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Optionally ignore the node if it is the first nested\n\t\t\tif (optionsMatches(secondaryOptions, 'ignore', 'first-nested') && isFirstNested(decl)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Optionally ignore nodes inside single-line blocks\n\t\t\tif (\n\t\t\t\toptionsMatches(secondaryOptions, 'ignore', 'inside-single-line-block') &&\n\t\t\t\tparent != null &&\n\t\t\t\t(isAtRule(parent) || isRule(parent)) &&\n\t\t\t\tisSingleLineString(blockString(parent))\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet expectEmptyLineBefore = primary === 'always';\n\n\t\t\t// Optionally reverse the expectation if any exceptions apply\n\t\t\tif (\n\t\t\t\t(optionsMatches(secondaryOptions, 'except', 'first-nested') && isFirstNested(decl)) ||\n\t\t\t\t(optionsMatches(secondaryOptions, 'except', 'after-comment') && isAfterComment(decl)) ||\n\t\t\t\t(optionsMatches(secondaryOptions, 'except', 'after-custom-property') &&\n\t\t\t\t\tisAfterCustomProperty(decl))\n\t\t\t) {\n\t\t\t\texpectEmptyLineBefore = !expectEmptyLineBefore;\n\t\t\t}\n\n\t\t\tconst hasEmptyLineBefore = hasEmptyLine(decl.raws.before);\n\n\t\t\t// Return if the expectation is met\n\t\t\tif (expectEmptyLineBefore === hasEmptyLineBefore) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Fix\n\t\t\tif (context.fix) {\n\t\t\t\tif (context.newline == null) return;\n\n\t\t\t\tif (expectEmptyLineBefore) {\n\t\t\t\t\taddEmptyLineBefore(decl, context.newline);\n\t\t\t\t} else {\n\t\t\t\t\tremoveEmptyLinesBefore(decl, context.newline);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst message = expectEmptyLineBefore ? messages.expected : messages.rejected;\n\n\t\t\treport({\n\t\t\t\tmessage,\n\t\t\t\tnode: decl,\n\t\t\t\tresult,\n\t\t\t\truleName,\n\t\t\t});\n\t\t});\n\t};\n};\n\n/**\n * @param {import('postcss').Declaration} decl\n */\nfunction isAfterCustomProperty(decl) {\n\tconst prevNode = getPreviousNonSharedLineCommentNode(decl);\n\n\treturn prevNode != null && isDeclaration(prevNode) && isCustomProperty(prevNode.prop);\n}\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","import valueParser from 'postcss-value-parser';\n\nimport declarationValueIndex from '../../utils/declarationValueIndex.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'custom-property-no-missing-var-function';\n\nconst messages = ruleMessages(ruleName, {\n\trejected: (customProperty) => `Unexpected missing var function for \"${customProperty}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/custom-property-no-missing-var-function',\n};\n\nconst IGNORED_PROPERTIES = new Set([\n\t// In alphabetical order\n\n\t// Properties that can receive a custom-ident\n\t'animation',\n\t'animation-name',\n\t'counter-increment',\n\t'counter-reset',\n\t'counter-set',\n\t'grid-column',\n\t'grid-column-end',\n\t'grid-column-start',\n\t'grid-row',\n\t'grid-row-end',\n\t'grid-row-start',\n\t'list-style',\n\t'list-style-type',\n\t'transition',\n\t'transition-property',\n\t'will-change',\n]);\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(result, ruleName, { actual: primary });\n\n\t\tif (!validOptions) return;\n\n\t\t/** @type {Set} */\n\t\tconst knownCustomProperties = new Set();\n\n\t\troot.walkAtRules(/^property$/i, ({ params }) => {\n\t\t\tknownCustomProperties.add(params);\n\t\t});\n\n\t\troot.walkDecls(/^--/, ({ prop }) => {\n\t\t\tknownCustomProperties.add(prop);\n\t\t});\n\n\t\troot.walkDecls((decl) => {\n\t\t\tconst { prop, value } = decl;\n\n\t\t\tif (!value.includes('--')) return;\n\n\t\t\tif (IGNORED_PROPERTIES.has(prop.toLowerCase())) return;\n\n\t\t\tvalueParser(value).walk((node) => {\n\t\t\t\tif (isVarFunction(node)) return false;\n\n\t\t\t\tif (!isDashedIdent(node)) return;\n\n\t\t\t\tif (!knownCustomProperties.has(node.value)) return;\n\n\t\t\t\tconst index = declarationValueIndex(decl) + node.sourceIndex;\n\t\t\t\tconst endIndex = index + node.value.length;\n\n\t\t\t\treport({\n\t\t\t\t\tmessage: messages.rejected,\n\t\t\t\t\tmessageArgs: [node.value],\n\t\t\t\t\tnode: decl,\n\t\t\t\t\tindex,\n\t\t\t\t\tendIndex,\n\t\t\t\t\tresult,\n\t\t\t\t\truleName,\n\t\t\t\t});\n\n\t\t\t\treturn false;\n\t\t\t});\n\t\t});\n\t};\n};\n\n/**\n * @param {import('postcss-value-parser').Node} node\n */\nfunction isDashedIdent({ type, value }) {\n\treturn type === 'word' && value.startsWith('--');\n}\n\n/**\n * @param {import('postcss-value-parser').Node} node\n */\nfunction isVarFunction({ type, value }) {\n\treturn type === 'function' && value === 'var';\n}\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","import hasInterpolation from './hasInterpolation.mjs';\nimport isScssVariable from './isScssVariable.mjs';\n\n/**\n * Check whether a property is standard\n *\n * @param {string} property\n * @returns {boolean}\n */\nexport default function isStandardSyntaxProperty(property) {\n\t// SCSS var\n\tif (isScssVariable(property)) {\n\t\treturn false;\n\t}\n\n\t// Less var (e.g. @var: x)\n\tif (property.startsWith('@')) {\n\t\treturn false;\n\t}\n\n\t// Less append property value with space (e.g. transform+_: scale(2))\n\tif (property.endsWith('+') || property.endsWith('+_')) {\n\t\treturn false;\n\t}\n\n\t// SCSS or Less interpolation\n\tif (hasInterpolation(property)) {\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n","import valueParser from 'postcss-value-parser';\n\nimport { isRegExp, isString } from '../../utils/validateTypes.mjs';\nimport declarationValueIndex from '../../utils/declarationValueIndex.mjs';\nimport isCustomProperty from '../../utils/isCustomProperty.mjs';\nimport isStandardSyntaxProperty from '../../utils/isStandardSyntaxProperty.mjs';\nimport { isValueFunction } from '../../utils/typeGuards.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'custom-property-pattern';\n\nconst messages = ruleMessages(ruleName, {\n\texpected: (propName, pattern) => `Expected \"${propName}\" to match pattern \"${pattern}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/custom-property-pattern',\n};\n\nconst VAR_FUNC_REGEX = /var\\(/i;\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(result, ruleName, {\n\t\t\tactual: primary,\n\t\t\tpossible: [isRegExp, isString],\n\t\t});\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst regexpPattern = isString(primary) ? new RegExp(primary) : primary;\n\n\t\t/**\n\t\t * @param {string} property\n\t\t * @returns {boolean}\n\t\t */\n\t\tfunction check(property) {\n\t\t\treturn (\n\t\t\t\t!isCustomProperty(property) ||\n\t\t\t\t!isStandardSyntaxProperty(property) ||\n\t\t\t\tregexpPattern.test(property.slice(2))\n\t\t\t);\n\t\t}\n\n\t\troot.walkDecls((decl) => {\n\t\t\tconst { prop, value } = decl;\n\n\t\t\tif (VAR_FUNC_REGEX.test(value)) {\n\t\t\t\tconst parsedValue = valueParser(value);\n\n\t\t\t\tparsedValue.walk((node) => {\n\t\t\t\t\tif (!isValueFunction(node)) return;\n\n\t\t\t\t\tif (node.value.toLowerCase() !== 'var') return;\n\n\t\t\t\t\tconst { nodes } = node;\n\n\t\t\t\t\tconst firstNode = nodes[0];\n\n\t\t\t\t\tif (!firstNode || check(firstNode.value)) return;\n\n\t\t\t\t\tcomplain(declarationValueIndex(decl) + firstNode.sourceIndex, firstNode.value, decl);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (check(prop)) return;\n\n\t\t\tcomplain(0, prop, decl);\n\t\t});\n\n\t\t/**\n\t\t * @param {number} index\n\t\t * @param {string} propName\n\t\t * @param {import('postcss').Declaration} decl\n\t\t */\n\t\tfunction complain(index, propName, decl) {\n\t\t\treport({\n\t\t\t\tresult,\n\t\t\t\truleName,\n\t\t\t\tmessage: messages.expected,\n\t\t\t\tmessageArgs: [propName, primary],\n\t\t\t\tnode: decl,\n\t\t\t\tindex,\n\t\t\t\tendIndex: index + propName.length,\n\t\t\t});\n\t\t}\n\t};\n};\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","import { isAtRule, isRoot, isRule } from './typeGuards.mjs';\n\n/** @typedef {import('postcss').Root} Root */\n/** @typedef {import('postcss').Root} Document */\n/** @typedef {import('postcss').Node} PostcssNode */\n/** @typedef {import('postcss').Container} PostcssContainerNode */\n/** @typedef {import('postcss').Declaration} Declaration */\n/** @typedef {(callbackFn: (decl: Declaration, index: number, decls: Declaration[]) => void) => void} EachDeclaration */\n\n/**\n * @param {PostcssNode} node\n * @returns {node is PostcssContainerNode}\n */\nfunction isContainerNode(node) {\n\treturn isRule(node) || isAtRule(node) || isRoot(node);\n}\n\n/**\n * In order to accommodate nested blocks (postcss-nested),\n * we need to run a shallow loop (instead of eachDecl() or eachRule(),\n * which loop recursively) and allow each nested block to accumulate\n * its own list of properties -- so that a property in a nested rule\n * does not conflict with the same property in the parent rule\n * executes a provided function once for each declaration block.\n *\n * @param {Root | Document} root - root element of file.\n * @param {(eachDecl: EachDeclaration) => void} callback - Function to execute for each declaration block\n *\n * @returns {void}\n */\nexport default function eachDeclarationBlock(root, callback) {\n\t/**\n\t * @param {PostcssNode} statement\n\t *\n\t * @returns {void}\n\t */\n\tfunction each(statement) {\n\t\tif (!isContainerNode(statement)) return;\n\n\t\tif (statement.nodes && statement.nodes.length) {\n\t\t\t/** @type {Declaration[]} */\n\t\t\tconst decls = [];\n\n\t\t\tfor (const node of statement.nodes) {\n\t\t\t\tif (node.type === 'decl') {\n\t\t\t\t\tdecls.push(node);\n\t\t\t\t}\n\n\t\t\t\teach(node);\n\t\t\t}\n\n\t\t\tif (decls.length) {\n\t\t\t\tcallback(decls.forEach.bind(decls));\n\t\t\t}\n\t\t}\n\t}\n\n\teach(root);\n}\n","import { isRegExp, isString } from '../../utils/validateTypes.mjs';\nimport eachDeclarationBlock from '../../utils/eachDeclarationBlock.mjs';\nimport isCustomProperty from '../../utils/isCustomProperty.mjs';\nimport isStandardSyntaxProperty from '../../utils/isStandardSyntaxProperty.mjs';\nimport optionsMatches from '../../utils/optionsMatches.mjs';\nimport report from '../../utils/report.mjs';\nimport ruleMessages from '../../utils/ruleMessages.mjs';\nimport validateOptions from '../../utils/validateOptions.mjs';\n\nconst ruleName = 'declaration-block-no-duplicate-custom-properties';\n\nconst messages = ruleMessages(ruleName, {\n\trejected: (property) => `Unexpected duplicate \"${property}\"`,\n});\n\nconst meta = {\n\turl: 'https://stylelint.io/user-guide/rules/declaration-block-no-duplicate-custom-properties',\n};\n\n/** @type {import('stylelint').Rule} */\nconst rule = (primary, secondaryOptions) => {\n\treturn (root, result) => {\n\t\tconst validOptions = validateOptions(\n\t\t\tresult,\n\t\t\truleName,\n\t\t\t{ actual: primary },\n\t\t\t{\n\t\t\t\tactual: secondaryOptions,\n\t\t\t\tpossible: {\n\t\t\t\t\tignoreProperties: [isString, isRegExp],\n\t\t\t\t},\n\t\t\t\toptional: true,\n\t\t\t},\n\t\t);\n\n\t\tif (!validOptions) {\n\t\t\treturn;\n\t\t}\n\n\t\teachDeclarationBlock(root, (eachDecl) => {\n\t\t\tconst decls = new Set();\n\n\t\t\teachDecl((decl) => {\n\t\t\t\tconst prop = decl.prop;\n\n\t\t\t\tif (!isStandardSyntaxProperty(prop)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!isCustomProperty(prop)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (optionsMatches(secondaryOptions, 'ignoreProperties', prop)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst isDuplicate = decls.has(prop);\n\n\t\t\t\tif (isDuplicate) {\n\t\t\t\t\treport({\n\t\t\t\t\t\tmessage: messages.rejected,\n\t\t\t\t\t\tmessageArgs: [prop],\n\t\t\t\t\t\tnode: decl,\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\truleName,\n\t\t\t\t\t\tword: prop,\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tdecls.add(prop);\n\t\t\t});\n\t\t});\n\t};\n};\n\nrule.ruleName = ruleName;\nrule.messages = messages;\nrule.meta = meta;\nexport default rule;\n","var rs=Object.create;var tr=Object.defineProperty;var ns=Object.getOwnPropertyDescriptor;var os=Object.getOwnPropertyNames;var is=Object.getPrototypeOf,as=Object.prototype.hasOwnProperty;var Oe=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),b=(e,t)=>{for(var r in t)tr(e,r,{get:t[r],enumerable:!0})},ss=(e,t,r,n)=>{if(t&&typeof t==\"object\"||typeof t==\"function\")for(let o of os(t))!as.call(e,o)&&o!==r&&tr(e,o,{get:()=>t[o],enumerable:!(n=ns(t,o))||n.enumerable});return e};var ls=(e,t,r)=>(r=e!=null?rs(is(e)):{},ss(t||!e||!e.__esModule?tr(r,\"default\",{value:e,enumerable:!0}):r,e));var Jo=Oe(ur=>{var Zo=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".split(\"\");ur.encode=function(e){if(0<=e&&e{var ei=Jo(),pr=5,ti=1<>1;return t?-r:r}hr.encode=function(t){var r=\"\",n,o=ks(t);do n=o&ri,o>>>=pr,o>0&&(n|=ni),r+=ei.encode(n);while(o>0);return r};hr.decode=function(t,r,n){var o=t.length,i=0,s=0,u,c;do{if(r>=o)throw new Error(\"Expected more digits in base 64 VLQ value.\");if(c=ei.decode(t.charCodeAt(r++)),c===-1)throw new Error(\"Invalid base64 digit: \"+t.charAt(r-1));u=!!(c&ni),c&=ri,i=i+(c<{function vs(e,t,r){if(t in e)return e[t];if(arguments.length===3)return r;throw new Error('\"'+t+'\" is a required argument.')}K.getArg=vs;var ii=/^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/,Ss=/^data:.+\\,.+$/;function nt(e){var t=e.match(ii);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}K.urlParse=nt;function qe(e){var t=\"\";return e.scheme&&(t+=e.scheme+\":\"),t+=\"//\",e.auth&&(t+=e.auth+\"@\"),e.host&&(t+=e.host),e.port&&(t+=\":\"+e.port),e.path&&(t+=e.path),t}K.urlGenerate=qe;var Cs=32;function As(e){var t=[];return function(r){for(var n=0;nCs&&t.pop(),i}}var mr=As(function(t){var r=t,n=nt(t);if(n){if(!n.path)return t;r=n.path}for(var o=K.isAbsolute(r),i=[],s=0,u=0;;)if(s=u,u=r.indexOf(\"/\",s),u===-1){i.push(r.slice(s));break}else for(i.push(r.slice(s,u));u=0;u--)c=i[u],c===\".\"?i.splice(u,1):c===\"..\"?a++:a>0&&(c===\"\"?(i.splice(u+1,a),a=0):(i.splice(u,2),a--));return r=i.join(\"/\"),r===\"\"&&(r=o?\"/\":\".\"),n?(n.path=r,qe(n)):r});K.normalize=mr;function ai(e,t){e===\"\"&&(e=\".\"),t===\"\"&&(t=\".\");var r=nt(t),n=nt(e);if(n&&(e=n.path||\"/\"),r&&!r.scheme)return n&&(r.scheme=n.scheme),qe(r);if(r||t.match(Ss))return t;if(n&&!n.host&&!n.path)return n.host=t,qe(n);var o=t.charAt(0)===\"/\"?t:mr(e.replace(/\\/+$/,\"\")+\"/\"+t);return n?(n.path=o,qe(n)):o}K.join=ai;K.isAbsolute=function(e){return e.charAt(0)===\"/\"||ii.test(e)};function Ts(e,t){e===\"\"&&(e=\".\"),e=e.replace(/\\/$/,\"\");for(var r=0;t.indexOf(e+\"/\")!==0;){var n=e.lastIndexOf(\"/\");if(n<0||(e=e.slice(0,n),e.match(/^([^\\/]+:\\/)?\\/*$/)))return t;++r}return Array(r+1).join(\"../\")+t.substr(e.length+1)}K.relative=Ts;var si=function(){var e=Object.create(null);return!(\"__proto__\"in e)}();function li(e){return e}function Es(e){return ci(e)?\"$\"+e:e}K.toSetString=si?li:Es;function Ls(e){return ci(e)?e.slice(1):e}K.fromSetString=si?li:Ls;function ci(e){if(!e)return!1;var t=e.length;if(t<9||e.charCodeAt(t-1)!==95||e.charCodeAt(t-2)!==95||e.charCodeAt(t-3)!==111||e.charCodeAt(t-4)!==116||e.charCodeAt(t-5)!==111||e.charCodeAt(t-6)!==114||e.charCodeAt(t-7)!==112||e.charCodeAt(t-8)!==95||e.charCodeAt(t-9)!==95)return!1;for(var r=t-10;r>=0;r--)if(e.charCodeAt(r)!==36)return!1;return!0}function Ps(e,t,r){var n=be(e.source,t.source);return n!==0||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0||r)||(n=e.generatedColumn-t.generatedColumn,n!==0)||(n=e.generatedLine-t.generatedLine,n!==0)?n:be(e.name,t.name)}K.compareByOriginalPositions=Ps;function Is(e,t,r){var n;return n=e.originalLine-t.originalLine,n!==0||(n=e.originalColumn-t.originalColumn,n!==0||r)||(n=e.generatedColumn-t.generatedColumn,n!==0)||(n=e.generatedLine-t.generatedLine,n!==0)?n:be(e.name,t.name)}K.compareByOriginalPositionsNoSource=Is;function Ds(e,t,r){var n=e.generatedLine-t.generatedLine;return n!==0||(n=e.generatedColumn-t.generatedColumn,n!==0||r)||(n=be(e.source,t.source),n!==0)||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0)?n:be(e.name,t.name)}K.compareByGeneratedPositionsDeflated=Ds;function Os(e,t,r){var n=e.generatedColumn-t.generatedColumn;return n!==0||r||(n=be(e.source,t.source),n!==0)||(n=e.originalLine-t.originalLine,n!==0)||(n=e.originalColumn-t.originalColumn,n!==0)?n:be(e.name,t.name)}K.compareByGeneratedPositionsDeflatedNoLine=Os;function be(e,t){return e===t?0:e===null?1:t===null?-1:e>t?1:-1}function Ns(e,t){var r=e.generatedLine-t.generatedLine;return r!==0||(r=e.generatedColumn-t.generatedColumn,r!==0)||(r=be(e.source,t.source),r!==0)||(r=e.originalLine-t.originalLine,r!==0)||(r=e.originalColumn-t.originalColumn,r!==0)?r:be(e.name,t.name)}K.compareByGeneratedPositionsInflated=Ns;function zs(e){return JSON.parse(e.replace(/^\\)]}'[^\\n]*\\n/,\"\"))}K.parseSourceMapInput=zs;function Ms(e,t,r){if(t=t||\"\",e&&(e[e.length-1]!==\"/\"&&t[0]!==\"/\"&&(e+=\"/\"),t=e+t),r){var n=nt(r);if(!n)throw new Error(\"sourceMapURL could not be parsed\");if(n.path){var o=n.path.lastIndexOf(\"/\");o>=0&&(n.path=n.path.substring(0,o+1))}t=ai(qe(n),t)}return mr(t)}K.computeSourceURL=Ms});var pi=Oe(ui=>{var fr=Et(),dr=Object.prototype.hasOwnProperty,Le=typeof Map<\"u\";function xe(){this._array=[],this._set=Le?new Map:Object.create(null)}xe.fromArray=function(t,r){for(var n=new xe,o=0,i=t.length;o=0)return r}else{var n=fr.toSetString(t);if(dr.call(this._set,n))return this._set[n]}throw new Error('\"'+t+'\" is not in the set.')};xe.prototype.at=function(t){if(t>=0&&t{var hi=Et();function Rs(e,t){var r=e.generatedLine,n=t.generatedLine,o=e.generatedColumn,i=t.generatedColumn;return n>r||n==r&&i>=o||hi.compareByGeneratedPositionsInflated(e,t)<=0}function Lt(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}Lt.prototype.unsortedForEach=function(t,r){this._array.forEach(t,r)};Lt.prototype.add=function(t){Rs(this._last,t)?(this._last=t,this._array.push(t)):(this._sorted=!1,this._array.push(t))};Lt.prototype.toArray=function(){return this._sorted||(this._array.sort(hi.compareByGeneratedPositionsInflated),this._sorted=!0),this._array};mi.MappingList=Lt});var gi=Oe(di=>{var ot=oi(),j=Et(),Pt=pi().ArraySet,Fs=fi().MappingList;function oe(e){e||(e={}),this._file=j.getArg(e,\"file\",null),this._sourceRoot=j.getArg(e,\"sourceRoot\",null),this._skipValidation=j.getArg(e,\"skipValidation\",!1),this._sources=new Pt,this._names=new Pt,this._mappings=new Fs,this._sourcesContents=null}oe.prototype._version=3;oe.fromSourceMap=function(t){var r=t.sourceRoot,n=new oe({file:t.file,sourceRoot:r});return t.eachMapping(function(o){var i={generated:{line:o.generatedLine,column:o.generatedColumn}};o.source!=null&&(i.source=o.source,r!=null&&(i.source=j.relative(r,i.source)),i.original={line:o.originalLine,column:o.originalColumn},o.name!=null&&(i.name=o.name)),n.addMapping(i)}),t.sources.forEach(function(o){var i=o;r!==null&&(i=j.relative(r,o)),n._sources.has(i)||n._sources.add(i);var s=t.sourceContentFor(o);s!=null&&n.setSourceContent(o,s)}),n};oe.prototype.addMapping=function(t){var r=j.getArg(t,\"generated\"),n=j.getArg(t,\"original\",null),o=j.getArg(t,\"source\",null),i=j.getArg(t,\"name\",null);this._skipValidation||this._validateMapping(r,n,o,i),o!=null&&(o=String(o),this._sources.has(o)||this._sources.add(o)),i!=null&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:r.line,generatedColumn:r.column,originalLine:n!=null&&n.line,originalColumn:n!=null&&n.column,source:o,name:i})};oe.prototype.setSourceContent=function(t,r){var n=t;this._sourceRoot!=null&&(n=j.relative(this._sourceRoot,n)),r!=null?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[j.toSetString(n)]=r):this._sourcesContents&&(delete this._sourcesContents[j.toSetString(n)],Object.keys(this._sourcesContents).length===0&&(this._sourcesContents=null))};oe.prototype.applySourceMap=function(t,r,n){var o=r;if(r==null){if(t.file==null)throw new Error(`SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map's \"file\" property. Both were omitted.`);o=t.file}var i=this._sourceRoot;i!=null&&(o=j.relative(i,o));var s=new Pt,u=new Pt;this._mappings.unsortedForEach(function(c){if(c.source===o&&c.originalLine!=null){var a=t.originalPositionFor({line:c.originalLine,column:c.originalColumn});a.source!=null&&(c.source=a.source,n!=null&&(c.source=j.join(n,c.source)),i!=null&&(c.source=j.relative(i,c.source)),c.originalLine=a.line,c.originalColumn=a.column,a.name!=null&&(c.name=a.name))}var l=c.source;l!=null&&!s.has(l)&&s.add(l);var p=c.name;p!=null&&!u.has(p)&&u.add(p)},this),this._sources=s,this._names=u,t.sources.forEach(function(c){var a=t.sourceContentFor(c);a!=null&&(n!=null&&(c=j.join(n,c)),i!=null&&(c=j.relative(i,c)),this.setSourceContent(c,a))},this)};oe.prototype._validateMapping=function(t,r,n,o){if(r&&typeof r.line!=\"number\"&&typeof r.column!=\"number\")throw new Error(\"original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.\");if(!(t&&\"line\"in t&&\"column\"in t&&t.line>0&&t.column>=0&&!r&&!n&&!o)){if(t&&\"line\"in t&&\"column\"in t&&r&&\"line\"in r&&\"column\"in r&&t.line>0&&t.column>=0&&r.line>0&&r.column>=0&&n)return;throw new Error(\"Invalid mapping: \"+JSON.stringify({generated:t,source:n,original:r,name:o}))}};oe.prototype._serializeMappings=function(){for(var t=0,r=1,n=0,o=0,i=0,s=0,u=\"\",c,a,l,p,m=this._mappings.toArray(),f=0,P=m.length;f0){if(!j.compareByGeneratedPositionsInflated(a,m[f-1]))continue;c+=\",\"}c+=ot.encode(a.generatedColumn-t),t=a.generatedColumn,a.source!=null&&(p=this._sources.indexOf(a.source),c+=ot.encode(p-s),s=p,c+=ot.encode(a.originalLine-1-o),o=a.originalLine-1,c+=ot.encode(a.originalColumn-n),n=a.originalColumn,a.name!=null&&(l=this._names.indexOf(a.name),c+=ot.encode(l-i),i=l)),u+=c}return u};oe.prototype._generateSourcesContent=function(t,r){return t.map(function(n){if(!this._sourcesContents)return null;r!=null&&(n=j.relative(r,n));var o=j.toSetString(n);return Object.prototype.hasOwnProperty.call(this._sourcesContents,o)?this._sourcesContents[o]:null},this)};oe.prototype.toJSON=function(){var t={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return this._file!=null&&(t.file=this._file),this._sourceRoot!=null&&(t.sourceRoot=this._sourceRoot),this._sourcesContents&&(t.sourcesContent=this._generateSourcesContent(t.sources,t.sourceRoot)),t};oe.prototype.toString=function(){return JSON.stringify(this.toJSON())};di.SourceMapGenerator=oe});var $e={};b($e,{AtKeyword:()=>I,BadString:()=>Ae,BadUrl:()=>Y,CDC:()=>U,CDO:()=>ue,Colon:()=>O,Comma:()=>G,Comment:()=>E,Delim:()=>g,Dimension:()=>y,EOF:()=>Xe,Function:()=>x,Hash:()=>v,Ident:()=>h,LeftCurlyBracket:()=>M,LeftParenthesis:()=>T,LeftSquareBracket:()=>q,Number:()=>d,Percentage:()=>A,RightCurlyBracket:()=>H,RightParenthesis:()=>w,RightSquareBracket:()=>V,Semicolon:()=>_,String:()=>W,Url:()=>F,WhiteSpace:()=>k});var Xe=0,h=1,x=2,I=3,v=4,W=5,Ae=6,F=7,Y=8,g=9,d=10,A=11,y=12,k=13,ue=14,U=15,O=16,_=17,G=18,q=19,V=20,T=21,w=22,M=23,H=24,E=25;function B(e){return e>=48&&e<=57}function ee(e){return B(e)||e>=65&&e<=70||e>=97&&e<=102}function yt(e){return e>=65&&e<=90}function cs(e){return e>=97&&e<=122}function us(e){return yt(e)||cs(e)}function ps(e){return e>=128}function xt(e){return us(e)||ps(e)||e===95}function Ne(e){return xt(e)||B(e)||e===45}function hs(e){return e>=0&&e<=8||e===11||e>=14&&e<=31||e===127}function Ze(e){return e===10||e===13||e===12}function pe(e){return Ze(e)||e===32||e===9}function $(e,t){return!(e!==92||Ze(t)||t===0)}function ze(e,t,r){return e===45?xt(t)||t===45||$(t,r):xt(e)?!0:e===92?$(e,t):!1}function kt(e,t,r){return e===43||e===45?B(t)?2:t===46&&B(r)?3:0:e===46?B(t)?2:0:B(e)?1:0}function wt(e){return e===65279||e===65534?1:0}var rr=new Array(128),ms=128,Je=130,nr=131,vt=132,or=133;for(let e=0;ee.length)return!1;for(let o=t;o=0&&pe(e.charCodeAt(t));t--);return t+1}function et(e,t){for(;t=55296&&t<=57343||t>1114111)&&(t=65533),String.fromCodePoint(t)}var Fe=[\"EOF-token\",\"ident-token\",\"function-token\",\"at-keyword-token\",\"hash-token\",\"string-token\",\"bad-string-token\",\"url-token\",\"bad-url-token\",\"delim-token\",\"number-token\",\"percentage-token\",\"dimension-token\",\"whitespace-token\",\"CDO-token\",\"CDC-token\",\"colon-token\",\"semicolon-token\",\"comma-token\",\"[-token\",\"]-token\",\"(-token\",\")-token\",\"{-token\",\"}-token\"];function Be(e=null,t){return e===null||e.length0?wt(t.charCodeAt(0)):0,o=Be(e.lines,r),i=Be(e.columns,r),s=e.startLine,u=e.startColumn;for(let c=n;c{}){t=String(t||\"\");let n=t.length,o=Be(this.offsetAndType,t.length+1),i=Be(this.balance,t.length+1),s=0,u=0,c=0,a=-1;for(this.offsetAndType=null,this.balance=null,r(t,(l,p,m)=>{switch(l){default:i[s]=n;break;case u:{let f=c≠for(c=i[f],u=c>>we,i[s]=f,i[f++]=s;f>we:0}lookupOffset(t){return t+=this.tokenIndex,t0?t>we,this.tokenEnd=r&ne):(this.tokenIndex=this.tokenCount,this.next())}next(){let t=this.tokenIndex+1;t>we,this.tokenEnd=t&ne):(this.eof=!0,this.tokenIndex=this.tokenCount,this.tokenType=0,this.tokenStart=this.tokenEnd=this.source.length)}skipSC(){for(;this.tokenType===13||this.tokenType===25;)this.next()}skipUntilBalanced(t,r){let n=t,o,i;e:for(;n0?this.offsetAndType[n-1]&ne:this.firstCharOffset,r(this.source.charCodeAt(i))){case 1:break e;case 2:n++;break e;default:this.balance[o]===n&&(n=o)}}this.skip(n-this.tokenIndex)}forEachToken(t){for(let r=0,n=this.firstCharOffset;r>we;n=s,t(u,o,s,r)}}dump(){let t=new Array(this.tokenCount);return this.forEachToken((r,n,o,i)=>{t[i]={idx:i,type:Fe[r],chunk:this.source.substring(n,o),balance:this.balance[i]}}),t}};function ve(e,t){function r(p){return p=e.length){aString(l+f+1).padStart(c)+\" |\"+m).join(`\n`)}let i=e.split(/\\r\\n?|\\n|\\f/),s=Math.max(1,t-n)-1,u=Math.min(t+n,i.length+1),c=Math.max(4,String(u).length)+1,a=0;r+=(Yo.length-1)*(i[t-1].substr(0,r-1).match(/\\t/g)||[]).length,r>ar&&(a=r-Ho+3,r=Ho-2);for(let l=s;l<=u;l++)l>=0&&l0&&i[l].length>a?\"\\u2026\":\"\")+i[l].substr(a,ar-2)+(i[l].length>a+ar-1?\"\\u2026\":\"\"));return[o(s,t),new Array(r+c+2).join(\"-\")+\"^\",o(t,u)].filter(Boolean).join(`\n`)}function sr(e,t,r,n,o){return Object.assign(Ee(\"SyntaxError\",e),{source:t,offset:r,line:n,column:o,sourceFragment(s){return Go({source:t,line:n,column:o},isNaN(s)?0:s)},get formattedMessage(){return`Parse error: ${e}\n`+Go({source:t,line:n,column:o},2)}})}function Vo(e){let t=this.createList(),r=!1,n={recognizer:e};for(;!this.eof;){switch(this.tokenType){case 25:this.next();continue;case 13:r=!0,this.next();continue}let o=e.getNode.call(this,n);if(o===void 0)break;r&&(e.onWhiteSpace&&e.onWhiteSpace.call(this,o,t,n),r=!1),t.push(o)}return r&&e.onWhiteSpace&&e.onWhiteSpace.call(this,null,t,n),t}var Ko=()=>{},gs=33,bs=35,lr=59,Qo=123,Xo=0;function xs(e){return function(){return this[e]()}}function cr(e){let t=Object.create(null);for(let r in e){let n=e[r],o=n.parse||n;o&&(t[r]=o)}return t}function ys(e){let t={context:Object.create(null),scope:Object.assign(Object.create(null),e.scope),atrule:cr(e.atrule),pseudo:cr(e.pseudo),node:cr(e.node)};for(let r in e.parseContext)switch(typeof e.parseContext[r]){case\"function\":t.context[r]=e.parseContext[r];break;case\"string\":t.context[r]=xs(e.parseContext[r]);break}return{config:t,...t,...t.node}}function $o(e){let t=\"\",r=\"\",n=!1,o=Ko,i=!1,s=new Tt,u=Object.assign(new rt,ys(e||{}),{parseAtrulePrelude:!0,parseRulePrelude:!0,parseValue:!0,parseCustomProperty:!1,readSequence:Vo,consumeUntilBalanceEnd:()=>0,consumeUntilLeftCurlyBracket(a){return a===Qo?1:0},consumeUntilLeftCurlyBracketOrSemicolon(a){return a===Qo||a===lr?1:0},consumeUntilExclamationMarkOrSemicolon(a){return a===gs||a===lr?1:0},consumeUntilSemicolonIncluded(a){return a===lr?2:0},createList(){return new D},createSingleNodeList(a){return new D().appendData(a)},getFirstListNode(a){return a&&a.first},getLastListNode(a){return a&&a.last},parseWithFallback(a,l){let p=this.tokenIndex;try{return a.call(this)}catch(m){if(i)throw m;let f=l.call(this,p);return i=!0,o(m,f),i=!1,f}},lookupNonWSType(a){let l;do if(l=this.lookupType(a++),l!==13)return l;while(l!==Xo);return Xo},charCodeAt(a){return a>=0&&af.toUpperCase()),p=`${/[[\\](){}]/.test(l)?`\"${l}\"`:l} is expected`,m=this.tokenStart;switch(a){case 1:this.tokenType===2||this.tokenType===7?(m=this.tokenEnd-1,p=\"Identifier is expected but function found\"):p=\"Identifier is expected\";break;case 4:this.isDelim(bs)&&(this.next(),m++,p=\"Name is expected\");break;case 11:this.tokenType===10&&(m=this.tokenEnd,p=\"Percent sign is expected\");break}this.error(p,m)}this.next()},eatIdent(a){(this.tokenType!==1||this.lookupValue(0,a)===!1)&&this.error(`Identifier \"${a}\" is expected`),this.next()},eatDelim(a){this.isDelim(a)||this.error(`Delim \"${String.fromCharCode(a)}\" is expected`),this.next()},getLocation(a,l){return n?s.getLocationRange(a,l,r):null},getLocationFromList(a){if(n){let l=this.getFirstListNode(a),p=this.getLastListNode(a);return s.getLocationRange(l!==null?l.loc.start.offset-s.startOffset:this.tokenStart,p!==null?p.loc.end.offset-s.startOffset:this.tokenStart,r)}return null},error(a,l){let p=typeof l<\"u\"&&l\",n=Boolean(l.positions),o=typeof l.onParseError==\"function\"?l.onParseError:Ko,i=!1,u.parseAtrulePrelude=\"parseAtrulePrelude\"in l?Boolean(l.parseAtrulePrelude):!0,u.parseRulePrelude=\"parseRulePrelude\"in l?Boolean(l.parseRulePrelude):!0,u.parseValue=\"parseValue\"in l?Boolean(l.parseValue):!0,u.parseCustomProperty=\"parseCustomProperty\"in l?Boolean(l.parseCustomProperty):!1;let{context:p=\"default\",onComment:m}=l;if(!(p in u.context))throw new Error(\"Unknown context `\"+p+\"`\");typeof m==\"function\"&&u.forEachToken((P,te,X)=>{if(P===25){let S=u.getLocation(te,X),R=ge(t,X-2,X,\"*/\")?t.slice(te+2,X-2):t.slice(te+2,X);m(R,S)}});let f=u.context[p].call(u,l);return u.eof||u.error(),f},{SyntaxError:sr,config:u.config})}var xi=ls(gi(),1),bi=new Set([\"Atrule\",\"Selector\",\"Declaration\"]);function yi(e){let t=new xi.SourceMapGenerator,r={line:1,column:0},n={line:0,column:0},o={line:1,column:0},i={generated:o},s=1,u=0,c=!1,a=e.node;e.node=function(m){if(m.loc&&m.loc.start&&bi.has(m.type)){let f=m.loc.start.line,P=m.loc.start.column-1;(n.line!==f||n.column!==P)&&(n.line=f,n.column=P,r.line=s,r.column=u,c&&(c=!1,(r.line!==o.line||r.column!==o.column)&&t.addMapping(i)),c=!0,t.addMapping({source:m.loc.source,original:n,generated:r}))}a.call(this,m),c&&bi.has(m.type)&&(o.line=s,o.column=u)};let l=e.emit;e.emit=function(m,f,P){for(let te=0;tebr,spec:()=>Us});var Bs=43,_s=45,gr=(e,t)=>{if(e===9&&(e=t),typeof e==\"string\"){let r=e.charCodeAt(0);return r>127?32768:r<<8}return e},ki=[[1,1],[1,2],[1,7],[1,8],[1,\"-\"],[1,10],[1,11],[1,12],[1,15],[1,21],[3,1],[3,2],[3,7],[3,8],[3,\"-\"],[3,10],[3,11],[3,12],[3,15],[4,1],[4,2],[4,7],[4,8],[4,\"-\"],[4,10],[4,11],[4,12],[4,15],[12,1],[12,2],[12,7],[12,8],[12,\"-\"],[12,10],[12,11],[12,12],[12,15],[\"#\",1],[\"#\",2],[\"#\",7],[\"#\",8],[\"#\",\"-\"],[\"#\",10],[\"#\",11],[\"#\",12],[\"#\",15],[\"-\",1],[\"-\",2],[\"-\",7],[\"-\",8],[\"-\",\"-\"],[\"-\",10],[\"-\",11],[\"-\",12],[\"-\",15],[10,1],[10,2],[10,7],[10,8],[10,10],[10,11],[10,12],[10,\"%\"],[10,15],[\"@\",1],[\"@\",2],[\"@\",7],[\"@\",8],[\"@\",\"-\"],[\"@\",15],[\".\",10],[\".\",11],[\".\",12],[\"+\",10],[\"+\",11],[\"+\",12],[\"/\",\"*\"]],qs=ki.concat([[1,4],[12,4],[4,4],[3,21],[3,5],[3,16],[11,11],[11,12],[11,2],[11,\"-\"],[22,1],[22,2],[22,11],[22,12],[22,4],[22,\"-\"]]);function wi(e){let t=new Set(e.map(([r,n])=>gr(r)<<16|gr(n)));return function(r,n,o){let i=gr(n,o),s=o.charCodeAt(0);return(s===_s&&n!==1&&n!==2&&n!==15||s===Bs?t.has(r<<16|s<<8):t.has(r<<16|i))&&this.emit(\" \",13,!0),i}}var Us=wi(ki),br=wi(qs);var js=92;function Ws(e,t){if(typeof t==\"function\"){let r=null;e.children.forEach(n=>{r!==null&&t.call(this,r),this.node(n),r=n});return}e.children.forEach(this.node,this)}function Hs(e){ve(e,(t,r,n)=>{this.token(t,e.slice(r,n))})}function vi(e){let t=new Map;for(let r in e.node){let n=e.node[r];typeof(n.generate||n)==\"function\"&&t.set(r,n.generate||n)}return function(r,n){let o=\"\",i=0,s={node(c){if(t.has(c.type))t.get(c.type).call(u,c);else throw new Error(\"Unknown node type: \"+c.type)},tokenBefore:br,token(c,a){i=this.tokenBefore(i,c,a),this.emit(a,c,!1),c===9&&a.charCodeAt(0)===js&&this.emit(`\n`,13,!0)},emit(c){o+=c},result(){return o}};n&&(typeof n.decorator==\"function\"&&(s=n.decorator(s)),n.sourceMap&&(s=yi(s)),n.mode in It&&(s.tokenBefore=It[n.mode]));let u={node:c=>s.node(c),children:Ws,token:(c,a)=>s.token(c,a),tokenize:Hs};return s.node(r),s.result()}}function Si(e){return{fromPlainObject(t){return e(t,{enter(r){r.children&&!(r.children instanceof D)&&(r.children=new D().fromArray(r.children))}}),t},toPlainObject(t){return e(t,{leave(r){r.children&&r.children instanceof D&&(r.children=r.children.toArray())}}),t}}}var{hasOwnProperty:xr}=Object.prototype,it=function(){};function Ci(e){return typeof e==\"function\"?e:it}function Ai(e,t){return function(r,n,o){r.type===t&&e.call(this,r,n,o)}}function Ys(e,t){let r=t.structure,n=[];for(let o in r){if(xr.call(r,o)===!1)continue;let i=r[o],s={name:o,type:!1,nullable:!1};Array.isArray(i)||(i=[i]);for(let u of i)u===null?s.nullable=!0:typeof u==\"string\"?s.type=\"node\":Array.isArray(u)&&(s.type=\"list\");s.type&&n.push(s)}return n.length?{context:t.walkContext,fields:n}:null}function Gs(e){let t={};for(let r in e.node)if(xr.call(e.node,r)){let n=e.node[r];if(!n.structure)throw new Error(\"Missed `structure` field in `\"+r+\"` node type definition\");t[r]=Ys(r,n)}return t}function Ti(e,t){let r=e.fields.slice(),n=e.context,o=typeof n==\"string\";return t&&r.reverse(),function(i,s,u,c){let a;o&&(a=s[n],s[n]=i);for(let l of r){let p=i[l.name];if(!l.nullable||p){if(l.type===\"list\"){if(t?p.reduceRight(c,!1):p.reduce(c,!1))return!0}else if(u(p))return!0}}o&&(s[n]=a)}}function Ei({StyleSheet:e,Atrule:t,Rule:r,Block:n,DeclarationList:o}){return{Atrule:{StyleSheet:e,Atrule:t,Rule:r,Block:n},Rule:{StyleSheet:e,Atrule:t,Rule:r,Block:n},Declaration:{StyleSheet:e,Atrule:t,Rule:r,Block:n,DeclarationList:o}}}function Li(e){let t=Gs(e),r={},n={},o=Symbol(\"break-walk\"),i=Symbol(\"skip-node\");for(let a in t)xr.call(t,a)&&t[a]!==null&&(r[a]=Ti(t[a],!1),n[a]=Ti(t[a],!0));let s=Ei(r),u=Ei(n),c=function(a,l){function p(S,R,ke){let z=m.call(X,S,R,ke);return z===o?!0:z===i?!1:!!(P.hasOwnProperty(S.type)&&P[S.type](S,X,p,te)||f.call(X,S,R,ke)===o)}let m=it,f=it,P=r,te=(S,R,ke,z)=>S||p(R,ke,z),X={break:o,skip:i,root:a,stylesheet:null,atrule:null,atrulePrelude:null,rule:null,selector:null,block:null,declaration:null,function:null};if(typeof l==\"function\")m=l;else if(l&&(m=Ci(l.enter),f=Ci(l.leave),l.reverse&&(P=n),l.visit)){if(s.hasOwnProperty(l.visit))P=l.reverse?u[l.visit]:s[l.visit];else if(!t.hasOwnProperty(l.visit))throw new Error(\"Bad value `\"+l.visit+\"` for `visit` option (should be: \"+Object.keys(t).sort().join(\", \")+\")\");m=Ai(m,l.visit),f=Ai(f,l.visit)}if(m===it&&f===it)throw new Error(\"Neither `enter` nor `leave` walker handler is set or both aren't a function\");p(a)};return c.break=o,c.skip=i,c.find=function(a,l){let p=null;return c(a,function(m,f,P){if(l.call(this,m,f,P))return p=m,o}),p},c.findLast=function(a,l){let p=null;return c(a,{reverse:!0,enter(m,f,P){if(l.call(this,m,f,P))return p=m,o}}),p},c.findAll=function(a,l){let p=[];return c(a,function(m,f,P){l.call(this,m,f,P)&&p.push(m)}),p},c}function Vs(e){return e}function Ks(e){let{min:t,max:r,comma:n}=e;return t===0&&r===0?n?\"#?\":\"*\":t===0&&r===1?\"?\":t===1&&r===0?n?\"#\":\"+\":t===1&&r===1?\"\":(n?\"#\":\"\")+(t===r?\"{\"+t+\"}\":\"{\"+t+\",\"+(r!==0?r:\"\")+\"}\")}function Qs(e){switch(e.type){case\"Range\":return\" [\"+(e.min===null?\"-\\u221E\":e.min)+\",\"+(e.max===null?\"\\u221E\":e.max)+\"]\";default:throw new Error(\"Unknown node type `\"+e.type+\"`\")}}function Xs(e,t,r,n){let o=e.combinator===\" \"||n?e.combinator:\" \"+e.combinator+\" \",i=e.terms.map(s=>yr(s,t,r,n)).join(o);return e.explicit||r?(n||i[0]===\",\"?\"[\":\"[ \")+i+(n?\"]\":\" ]\"):i}function yr(e,t,r,n){let o;switch(e.type){case\"Group\":o=Xs(e,t,r,n)+(e.disallowEmpty?\"!\":\"\");break;case\"Multiplier\":return yr(e.term,t,r,n)+t(Ks(e),e);case\"Type\":o=\"<\"+e.name+(e.opts?t(Qs(e.opts),e.opts):\"\")+\">\";break;case\"Property\":o=\"<'\"+e.name+\"'>\";break;case\"Keyword\":o=e.name;break;case\"AtKeyword\":o=\"@\"+e.name;break;case\"Function\":o=e.name+\"(\";break;case\"String\":case\"Token\":o=e.value;break;case\"Comma\":o=\",\";break;default:throw new Error(\"Unknown node type `\"+e.type+\"`\")}return t(o,e)}function Pe(e,t){let r=Vs,n=!1,o=!1;return typeof t==\"function\"?r=t:t&&(n=Boolean(t.forceBraces),o=Boolean(t.compact),typeof t.decorate==\"function\"&&(r=t.decorate)),yr(e,r,n,o)}var Pi={offset:0,line:1,column:1};function $s(e,t){let r=e.tokens,n=e.longestMatch,o=n1?(l=Dt(i||t,\"end\")||at(Pi,a),p=at(l)):(l=Dt(i,\"start\")||at(Dt(t,\"start\")||Pi,a.slice(0,s)),p=Dt(i,\"end\")||at(l,a.substr(s,u))),{css:a,mismatchOffset:s,mismatchLength:u,start:l,end:p}}function Dt(e,t){let r=e&&e.loc&&e.loc[t];return r?\"line\"in r?at(r):r:null}function at({offset:e,line:t,column:r},n){let o={offset:e,line:t,column:r};if(n){let i=n.split(/\\n|\\r\\n?|\\f/);o.offset+=n.length,o.line+=i.length-1,o.column=i.length===1?o.column+n.length:i.pop().length+1}return o}var Ue=function(e,t){let r=Ee(\"SyntaxReferenceError\",e+(t?\" `\"+t+\"`\":\"\"));return r.reference=t,r},Ii=function(e,t,r,n){let o=Ee(\"SyntaxMatchError\",e),{css:i,mismatchOffset:s,mismatchLength:u,start:c,end:a}=$s(n,r);return o.rawMessage=e,o.syntax=t?Pe(t):\"\",o.css=i,o.mismatchOffset=s,o.mismatchLength=u,o.message=e+`\n syntax: `+o.syntax+`\n value: `+(i||\"\")+`\n --------`+new Array(o.mismatchOffset+1).join(\"-\")+\"^\",Object.assign(o,c),o.loc={source:r&&r.loc&&r.loc.source||\"\",start:c,end:a},o};var Ot=new Map,je=new Map,Nt=45,zt=Zs,kr=Js,Ym=wr;function Mt(e,t){return t=t||0,e.length-t>=2&&e.charCodeAt(t)===Nt&&e.charCodeAt(t+1)===Nt}function wr(e,t){if(t=t||0,e.length-t>=3&&e.charCodeAt(t)===Nt&&e.charCodeAt(t+1)!==Nt){let r=e.indexOf(\"-\",t+2);if(r!==-1)return e.substring(t,r+1)}return\"\"}function Zs(e){if(Ot.has(e))return Ot.get(e);let t=e.toLowerCase(),r=Ot.get(t);if(r===void 0){let n=Mt(t,0),o=n?\"\":wr(t,0);r=Object.freeze({basename:t.substr(o.length),name:t,prefix:o,vendor:o,custom:n})}return Ot.set(e,r),r}function Js(e){if(je.has(e))return je.get(e);let t=e,r=e[0];r===\"/\"?r=e[1]===\"/\"?\"//\":\"/\":r!==\"_\"&&r!==\"*\"&&r!==\"$\"&&r!==\"#\"&&r!==\"+\"&&r!==\"&\"&&(r=\"\");let n=Mt(t,r.length);if(!n&&(t=t.toLowerCase(),je.has(t))){let u=je.get(t);return je.set(e,u),u}let o=n?\"\":wr(t,r.length),i=t.substr(0,r.length+o.length),s=Object.freeze({basename:t.substr(i.length),name:t.substr(r.length),hack:r,vendor:o,prefix:i,custom:n});return je.set(e,s),s}var Rt=[\"initial\",\"inherit\",\"unset\",\"revert\",\"revert-layer\"];var lt=43,he=45,vr=110,We=!0,tl=!1;function Cr(e,t){return e!==null&&e.type===9&&e.value.charCodeAt(0)===t}function st(e,t,r){for(;e!==null&&(e.type===13||e.type===25);)e=r(++t);return t}function Se(e,t,r,n){if(!e)return 0;let o=e.value.charCodeAt(t);if(o===lt||o===he){if(r)return 0;t++}for(;t6)return 0}return n}function Ft(e,t,r){if(!e)return 0;for(;Tr(r(t),Oi);){if(++e>6)return 0;t++}return t}function Er(e,t){let r=0;if(e===null||e.type!==1||!de(e.value,0,nl)||(e=t(++r),e===null))return 0;if(Tr(e,rl))return e=t(++r),e===null?0:e.type===1?Ft(ct(e,0,!0),++r,t):Tr(e,Oi)?Ft(1,++r,t):0;if(e.type===10){let n=ct(e,1,!0);return n===0?0:(e=t(++r),e===null?r:e.type===12||e.type===10?!ol(e,Di)||!ct(e,1,!1)?0:r+1:Ft(n,r,t))}return e.type===12?Ft(ct(e,1,!0),++r,t):0}var il=[\"calc(\",\"-moz-calc(\",\"-webkit-calc(\"],Lr=new Map([[2,22],[21,22],[19,20],[23,24]]);function le(e,t){return te.max&&typeof e.max!=\"string\")return!0}return!1}function al(e,t){let r=0,n=[],o=0;e:do{switch(e.type){case 24:case 22:case 20:if(e.type!==r)break e;if(r=n.pop(),n.length===0){o++;break e}break;case 2:case 21:case 19:case 23:n.push(r),r=Lr.get(e.type);break}o++}while(e=t(o));return o}function ie(e){return function(t,r,n){return t===null?0:t.type===2&&zi(t.value,il)?al(t,r):e(t,r,n)}}function N(e){return function(t){return t===null||t.type!==e?0:1}}function sl(e){if(e===null||e.type!==1)return 0;let t=e.value.toLowerCase();return zi(t,Rt)||Ni(t,\"default\")?0:1}function ll(e){return e===null||e.type!==1||le(e.value,0)!==45||le(e.value,1)!==45?0:1}function cl(e){if(e===null||e.type!==4)return 0;let t=e.value.length;if(t!==4&&t!==5&&t!==7&&t!==9)return 0;for(let r=1;rkl,decibel:()=>Al,flex:()=>Cl,frequency:()=>vl,length:()=>yl,resolution:()=>Sl,semitones:()=>Tl,time:()=>wl});var yl=[\"cm\",\"mm\",\"q\",\"in\",\"pt\",\"pc\",\"px\",\"em\",\"rem\",\"ex\",\"rex\",\"cap\",\"rcap\",\"ch\",\"rch\",\"ic\",\"ric\",\"lh\",\"rlh\",\"vw\",\"svw\",\"lvw\",\"dvw\",\"vh\",\"svh\",\"lvh\",\"dvh\",\"vi\",\"svi\",\"lvi\",\"dvi\",\"vb\",\"svb\",\"lvb\",\"dvb\",\"vmin\",\"svmin\",\"lvmin\",\"dvmin\",\"vmax\",\"svmax\",\"lvmax\",\"dvmax\",\"cqw\",\"cqh\",\"cqi\",\"cqb\",\"cqmin\",\"cqmax\"],kl=[\"deg\",\"grad\",\"rad\",\"turn\"],wl=[\"s\",\"ms\"],vl=[\"hz\",\"khz\"],Sl=[\"dpi\",\"dpcm\",\"dppx\",\"x\"],Cl=[\"fr\"],Al=[\"db\"],Tl=[\"st\"];var $i={};b($i,{SyntaxError:()=>qt,generate:()=>Pe,parse:()=>Ge,walk:()=>Vt});function qt(e,t,r){return Object.assign(Ee(\"SyntaxError\",e),{input:t,offset:r,rawMessage:e,message:e+`\n `+t+`\n--`+new Array((r||t.length)+1).join(\"-\")+\"^\"})}var El=9,Ll=10,Pl=12,Il=13,Dl=32,Ut=class{constructor(t){this.str=t,this.pos=0}charCodeAt(t){return t/[a-zA-Z0-9\\-]/.test(String.fromCharCode(t))?1:0),Wi={\" \":1,\"&&\":2,\"||\":3,\"|\":4};function Ht(e){return e.substringToPos(e.findWsEnd(e.pos))}function He(e){let t=e.pos;for(;t=128||ut[r]===0)break}return e.pos===t&&e.error(\"Expect a keyword\"),e.substringToPos(t)}function Yt(e){let t=e.pos;for(;t57)break}return e.pos===t&&e.error(\"Expect a number\"),e.substringToPos(t)}function _l(e){let t=e.str.indexOf(\"'\",e.pos+1);return t===-1&&(e.pos=e.str.length,e.error(\"Expect an apostrophe\")),e.substringToPos(t+1)}function Hi(e){let t=null,r=null;return e.eat(Wt),t=Yt(e),e.charCode()===Nr?(e.pos++,e.charCode()!==Ui&&(r=Yt(e))):r=t,e.eat(Ui),{min:Number(t),max:r?Number(r):0}}function ql(e){let t=null,r=!1;switch(e.charCode()){case Vi:e.pos++,t={min:0,max:0};break;case Or:e.pos++,t={min:1,max:0};break;case Ir:e.pos++,t={min:0,max:1};break;case Dr:e.pos++,r=!0,e.charCode()===Wt?t=Hi(e):e.charCode()===Ir?(e.pos++,t={min:0,max:0}):t={min:1,max:0};break;case Wt:t=Hi(e);break;default:return null}return{type:\"Multiplier\",comma:r,min:t.min,max:t.max,term:null}}function Ye(e,t){let r=ql(e);return r!==null?(r.term=t,e.charCode()===Dr&&e.charCodeAt(e.pos-1)===Or?Ye(e,r):r):t}function Pr(e){let t=e.peek();return t===\"\"?null:{type:\"Token\",value:t}}function Ul(e){let t;return e.eat(zr),e.eat(jt),t=He(e),e.eat(jt),e.eat(Ki),Ye(e,{type:\"Property\",name:t})}function jl(e){let t=null,r=null,n=1;return e.eat(Gt),e.charCode()===_i&&(e.peek(),n=-1),n==-1&&e.charCode()===ji?e.peek():(t=n*Number(Yt(e)),ut[e.charCode()]!==0&&(t+=He(e))),Ht(e),e.eat(Nr),Ht(e),e.charCode()===ji?e.peek():(n=1,e.charCode()===_i&&(e.peek(),n=-1),r=n*Number(Yt(e)),ut[e.charCode()]!==0&&(r+=He(e))),e.eat(Mr),{type:\"Range\",min:t,max:r}}function Wl(e){let t,r=null;return e.eat(zr),t=He(e),e.charCode()===Gi&&e.nextCharCode()===Fl&&(e.pos+=2,t+=\"()\"),e.charCodeAt(e.findWsEnd(e.pos))===Gt&&(Ht(e),r=jl(e)),e.eat(Ki),Ye(e,{type:\"Type\",name:t,opts:r})}function Hl(e){let t=He(e);return e.charCode()===Gi?(e.pos++,{type:\"Function\",name:t}):Ye(e,{type:\"Keyword\",name:t})}function Yl(e,t){function r(o,i){return{type:\"Group\",terms:o,combinator:i,disallowEmpty:!1,explicit:!1}}let n;for(t=Object.keys(t).sort((o,i)=>Wi[o]-Wi[i]);t.length>0;){n=t.shift();let o=0,i=0;for(;o1&&(e.splice(i,o-i,r(e.slice(i,o),n)),o=i+1),i=-1))}i!==-1&&t.length&&e.splice(i,o-i,r(e.slice(i,o),n))}return n}function Qi(e){let t=[],r={},n,o=null,i=e.pos;for(;n=Vl(e);)n.type!==\"Spaces\"&&(n.type===\"Combinator\"?((o===null||o.type===\"Combinator\")&&(e.pos=i,e.error(\"Unexpected combinator\")),r[n.value]=!0):o!==null&&o.type!==\"Combinator\"&&(r[\" \"]=!0,t.push({type:\"Combinator\",value:\" \"})),t.push(n),o=n,i=e.pos);return o!==null&&o.type===\"Combinator\"&&(e.pos-=i,e.error(\"Unexpected combinator\")),{type:\"Group\",terms:t,combinator:Yl(t,r)||\" \",disallowEmpty:!1,explicit:!1}}function Gl(e){let t;return e.eat(Gt),t=Qi(e),e.eat(Mr),t.explicit=!0,e.charCode()===Yi&&(e.pos++,t.disallowEmpty=!0),t}function Vl(e){let t=e.charCode();if(t<128&&ut[t]===1)return Hl(e);switch(t){case Mr:break;case Gt:return Ye(e,Gl(e));case zr:return e.nextCharCode()===jt?Ul(e):Wl(e);case qi:return{type:\"Combinator\",value:e.substringToPos(e.pos+(e.nextCharCode()===qi?2:1))};case Bi:return e.pos++,e.eat(Bi),{type:\"Combinator\",value:\"&&\"};case Nr:return e.pos++,{type:\"Comma\"};case jt:return Ye(e,{type:\"String\",value:_l(e)});case Rl:case Ol:case Nl:case Ml:case zl:return{type:\"Spaces\",value:Ht(e)};case Bl:return t=e.nextCharCode(),t<128&&ut[t]===1?(e.pos++,{type:\"AtKeyword\",name:He(e)}):Pr(e);case Vi:case Or:case Ir:case Dr:case Yi:break;case Wt:if(t=e.nextCharCode(),t<48||t>57)return Pr(e);break;default:return Pr(e)}}function Ge(e){let t=new Ut(e),r=Qi(t);return t.pos!==e.length&&t.error(\"Unexpected input\"),r.terms.length===1&&r.terms[0].type===\"Group\"?r.terms[0]:r}var pt=function(){};function Xi(e){return typeof e==\"function\"?e:pt}function Vt(e,t,r){function n(s){switch(o.call(r,s),s.type){case\"Group\":s.terms.forEach(n);break;case\"Multiplier\":n(s.term);break;case\"Type\":case\"Property\":case\"Keyword\":case\"AtKeyword\":case\"Function\":case\"String\":case\"Token\":case\"Comma\":break;default:throw new Error(\"Unknown type: \"+s.type)}i.call(r,s)}let o=pt,i=pt;if(typeof t==\"function\"?o=t:t&&(o=Xi(t.enter),i=Xi(t.leave)),o===pt&&i===pt)throw new Error(\"Neither `enter` nor `leave` walker handler is set or both aren't a function\");n(e,r)}var Kl={decorator(e){let t=[],r=null;return{...e,node(n){let o=r;r=n,e.node.call(this,n),r=o},emit(n,o,i){t.push({type:o,value:n,node:i?null:r})},result(){return t}}}};function Ql(e){let t=[];return ve(e,(r,n,o)=>t.push({type:r,value:e.slice(n,o),node:null})),t}function Zi(e,t){return typeof e==\"string\"?Ql(e):t.generate(e,Kl)}var C={type:\"Match\"},L={type:\"Mismatch\"},Kt={type:\"DisallowEmpty\"},Xl=40,$l=41;function Z(e,t,r){return t===C&&r===L||e===C&&t===C&&r===C?e:(e.type===\"If\"&&e.else===L&&t===C&&(t=e.then,e=e.match),{type:\"If\",match:e,then:t,else:r})}function ea(e){return e.length>2&&e.charCodeAt(e.length-2)===Xl&&e.charCodeAt(e.length-1)===$l}function Ji(e){return e.type===\"Keyword\"||e.type===\"AtKeyword\"||e.type===\"Function\"||e.type===\"Type\"&&ea(e.name)}function Rr(e,t,r){switch(e){case\" \":{let n=C;for(let o=t.length-1;o>=0;o--){let i=t[o];n=Z(i,n,L)}return n}case\"|\":{let n=L,o=null;for(let i=t.length-1;i>=0;i--){let s=t[i];if(Ji(s)&&(o===null&&i>0&&Ji(t[i-1])&&(o=Object.create(null),n=Z({type:\"Enum\",map:o},C,n)),o!==null)){let u=(ea(s.name)?s.name.slice(0,-1):s.name).toLowerCase();if(!(u in o)){o[u]=s;continue}}o=null,n=Z(s,C,n)}return n}case\"&&\":{if(t.length>5)return{type:\"MatchOnce\",terms:t,all:!0};let n=L;for(let o=t.length-1;o>=0;o--){let i=t[o],s;t.length>1?s=Rr(e,t.filter(function(u){return u!==i}),!1):s=C,n=Z(i,s,n)}return n}case\"||\":{if(t.length>5)return{type:\"MatchOnce\",terms:t,all:!1};let n=r?C:L;for(let o=t.length-1;o>=0;o--){let i=t[o],s;t.length>1?s=Rr(e,t.filter(function(u){return u!==i}),!0):s=C,n=Z(i,s,n)}return n}}}function Zl(e){let t=C,r=Fr(e.term);if(e.max===0)r=Z(r,Kt,L),t=Z(r,null,L),t.then=Z(C,C,t),e.comma&&(t.then.else=Z({type:\"Comma\",syntax:e},t,L));else for(let n=e.min||1;n<=e.max;n++)e.comma&&t!==C&&(t=Z({type:\"Comma\",syntax:e},t,L)),t=Z(r,Z(C,C,t),L);if(e.min===0)t=Z(C,C,t);else for(let n=0;n=65&&o<=90&&(o=o|32),o!==n)return!1}return!0}function ic(e){return e.type!==9?!1:e.value!==\"?\"}function oa(e){return e===null?!0:e.type===18||e.type===2||e.type===21||e.type===19||e.type===23||ic(e)}function ia(e){return e===null?!0:e.type===22||e.type===20||e.type===24||e.type===9&&e.value===\"/\"}function ac(e,t,r){function n(){do R++,S=Rke&&(ke=R)}function a(){p={syntax:t.syntax,opts:t.syntax.opts||p!==null&&p.opts||null,prev:p},z={type:_r,syntax:t.syntax,token:z.token,prev:z}}function l(){z.type===_r?z=z.prev:z={type:aa,syntax:p.syntax,token:z.token,prev:z},p=p.prev}let p=null,m=null,f=null,P=null,te=0,X=null,S=null,R=-1,ke=0,z={type:Jl,syntax:null,token:null,prev:null};for(n();X===null&&++tef.tokenIndex)&&(f=P,P=!1);else if(f===null){X=tc;break}t=f.nextState,m=f.thenStack,p=f.syntaxStack,z=f.matchStack,R=f.tokenIndex,S=RR){for(;R\":\"<'\"+t.name+\"'>\"));if(P!==!1&&S!==null&&t.type===\"Type\"&&(t.name===\"custom-ident\"&&S.type===1||t.name===\"length\"&&S.value===\"0\")){P===null&&(P=i(t,f)),t=L;break}a(),t=J.match;break}case\"Keyword\":{let Q=t.name;if(S!==null){let J=S.value;if(J.indexOf(\"\\\\\")!==-1&&(J=J.replace(/\\\\[09].*$/,\"\")),Br(J,Q)){c(),t=C;break}}t=L;break}case\"AtKeyword\":case\"Function\":if(S!==null&&Br(S.value,t.name)){c(),t=C;break}t=L;break;case\"Token\":if(S!==null&&S.value===t.value){c(),t=C;break}t=L;break;case\"Comma\":S!==null&&S.type===18?oa(z.token)?t=L:(c(),t=ia(S)?L:C):t=oa(z.token)||ia(S)?C:L;break;case\"String\":let ae=\"\",fe=R;for(;fesa,isKeyword:()=>cc,isProperty:()=>lc,isType:()=>sc});function sa(e){function t(o){return o===null?!1:o.type===\"Type\"||o.type===\"Property\"||o.type===\"Keyword\"}function r(o){if(Array.isArray(o.match)){for(let i=0;ir.type===\"Type\"&&r.name===t)}function lc(e,t){return Ur(this,e,r=>r.type===\"Property\"&&r.name===t)}function cc(e){return Ur(this,e,t=>t.type===\"Keyword\")}function Ur(e,t,r){let n=sa.call(e,t);return n===null?!1:n.some(r)}function la(e){return\"node\"in e?e.node:la(e.match[0])}function ca(e){return\"node\"in e?e.node:ca(e.match[e.match.length-1])}function Wr(e,t,r,n,o){function i(u){if(u.syntax!==null&&u.syntax.type===n&&u.syntax.name===o){let c=la(u),a=ca(u);e.syntax.walk(t,function(l,p,m){if(l===c){let f=new D;do{if(f.appendData(p.data),p.data===a)break;p=p.next}while(p!==null);s.push({parent:m,nodes:f})}})}Array.isArray(u.match)&&u.match.forEach(i)}let s=[];return r.matched!==null&&i(r.matched),s}var{hasOwnProperty:ht}=Object.prototype;function Hr(e){return typeof e==\"number\"&&isFinite(e)&&Math.floor(e)===e&&e>=0}function ua(e){return Boolean(e)&&Hr(e.offset)&&Hr(e.line)&&Hr(e.column)}function uc(e,t){return function(n,o){if(!n||n.constructor!==Object)return o(n,\"Type of node should be an Object\");for(let i in n){let s=!0;if(ht.call(n,i)!==!1){if(i===\"type\")n.type!==e&&o(n,\"Wrong node type `\"+n.type+\"`, expected `\"+e+\"`\");else if(i===\"loc\"){if(n.loc===null)continue;if(n.loc&&n.loc.constructor===Object)if(typeof n.loc.source!=\"string\")i+=\".source\";else if(!ua(n.loc.start))i+=\".start\";else if(!ua(n.loc.end))i+=\".end\";else continue;s=!1}else if(t.hasOwnProperty(i)){s=!1;for(let u=0;!s&&u\");else if(Array.isArray(a))s.push(\"List\");else throw new Error(\"Wrong value `\"+a+\"` in `\"+e+\".\"+i+\"` structure definition\")}o[i]=s.join(\" | \")}return{docs:o,check:uc(e,n)}}function pa(e){let t={};if(e.node){for(let r in e.node)if(ht.call(e.node,r)){let n=e.node[r];if(n.structure)t[r]=pc(r,n);else throw new Error(\"Missed `structure` field in `\"+r+\"` node type definition\")}}return t}var hc=Qt(Rt.join(\" | \"));function Yr(e,t,r){let n={};for(let o in e)e[o].syntax&&(n[o]=r?e[o].syntax:Pe(e[o].syntax,{compact:t}));return n}function mc(e,t,r){let n={};for(let[o,i]of Object.entries(e))n[o]={prelude:i.prelude&&(r?i.prelude.syntax:Pe(i.prelude.syntax,{compact:t})),descriptors:i.descriptors&&Yr(i.descriptors,t,r)};return n}function fc(e){for(let t=0;t(n[o]=this.createDescriptor(r.descriptors[o],\"AtruleDescriptor\",o,t),n),Object.create(null)):null})}addProperty_(t,r){!r||(this.properties[t]=this.createDescriptor(r,\"Property\",t))}addType_(t,r){!r||(this.types[t]=this.createDescriptor(r,\"Type\",t))}checkAtruleName(t){if(!this.getAtrule(t))return new Ue(\"Unknown at-rule\",\"@\"+t)}checkAtrulePrelude(t,r){let n=this.checkAtruleName(t);if(n)return n;let o=this.getAtrule(t);if(!o.prelude&&r)return new SyntaxError(\"At-rule `@\"+t+\"` should not contain a prelude\");if(o.prelude&&!r&&!Ve(this,o.prelude,\"\",!1).matched)return new SyntaxError(\"At-rule `@\"+t+\"` should contain a prelude\")}checkAtruleDescriptorName(t,r){let n=this.checkAtruleName(t);if(n)return n;let o=this.getAtrule(t),i=zt(r);if(!o.descriptors)return new SyntaxError(\"At-rule `@\"+t+\"` has no known descriptors\");if(!o.descriptors[i.name]&&!o.descriptors[i.basename])return new Ue(\"Unknown at-rule descriptor\",r)}checkPropertyName(t){if(!this.getProperty(t))return new Ue(\"Unknown property\",t)}matchAtrulePrelude(t,r){let n=this.checkAtrulePrelude(t,r);if(n)return ce(null,n);let o=this.getAtrule(t);return o.prelude?Ve(this,o.prelude,r||\"\",!1):ce(null,null)}matchAtruleDescriptor(t,r,n){let o=this.checkAtruleDescriptorName(t,r);if(o)return ce(null,o);let i=this.getAtrule(t),s=zt(r);return Ve(this,i.descriptors[s.name]||i.descriptors[s.basename],n,!1)}matchDeclaration(t){return t.type!==\"Declaration\"?ce(null,new Error(\"Not a Declaration node\")):this.matchProperty(t.property,t.value)}matchProperty(t,r){if(kr(t).custom)return ce(null,new Error(\"Lexer matching doesn't applicable for custom properties\"));let n=this.checkPropertyName(t);return n?ce(null,n):Ve(this,this.getProperty(t),r,!0)}matchType(t,r){let n=this.getType(t);return n?Ve(this,n,r,!1):ce(null,new Ue(\"Unknown type\",t))}match(t,r){return typeof t!=\"string\"&&(!t||!t.type)?ce(null,new Ue(\"Bad syntax\")):((typeof t==\"string\"||!t.match)&&(t=this.createDescriptor(t,\"Type\",\"anonymous\")),Ve(this,t,r,!1))}findValueFragments(t,r,n,o){return Wr(this,r,this.matchProperty(t,r),n,o)}findDeclarationValueFragments(t,r,n){return Wr(this,t.value,this.matchDeclaration(t),r,n)}findAllFragments(t,r,n){let o=[];return this.syntax.walk(t,{visit:\"Declaration\",enter:i=>{o.push.apply(o,this.findDeclarationValueFragments(i,r,n))}}),o}getAtrule(t,r=!0){let n=zt(t);return(n.vendor&&r?this.atrules[n.name]||this.atrules[n.basename]:this.atrules[n.name])||null}getAtrulePrelude(t,r=!0){let n=this.getAtrule(t,r);return n&&n.prelude||null}getAtruleDescriptor(t,r){return this.atrules.hasOwnProperty(t)&&this.atrules.declarators&&this.atrules[t].declarators[r]||null}getProperty(t,r=!0){let n=kr(t);return(n.vendor&&r?this.properties[n.name]||this.properties[n.basename]:this.properties[n.name])||null}getType(t){return hasOwnProperty.call(this.types,t)?this.types[t]:null}validate(){function t(o,i,s,u){if(s.has(i))return s.get(i);s.set(i,!1),u.syntax!==null&&Vt(u.syntax,function(c){if(c.type!==\"Type\"&&c.type!==\"Property\")return;let a=c.type===\"Type\"?o.types:o.properties,l=c.type===\"Type\"?r:n;(!hasOwnProperty.call(a,c.name)||t(o,c.name,l,a[c.name]))&&s.set(i,!0)},this)}let r=new Map,n=new Map;for(let o in this.types)t(this,o,r,this.types[o]);for(let o in this.properties)t(this,o,n,this.properties[o]);return r=[...r.keys()].filter(o=>r.get(o)),n=[...n.keys()].filter(o=>n.get(o)),r.length||n.length?{types:r,properties:n}:null}dump(t,r){return{generic:this.generic,units:this.units,types:Yr(this.types,!r,t),properties:Yr(this.properties,!r,t),atrules:mc(this.atrules,!r,t)}}toString(){return JSON.stringify(this.dump())}};function Gr(e,t){return typeof t==\"string\"&&/^\\s*\\|/.test(t)?typeof e==\"string\"?e+t:t.replace(/^\\s*\\|\\s*/,\"\"):t||null}function ha(e,t){let r=Object.create(null);for(let[n,o]of Object.entries(e))if(o){r[n]={};for(let i of Object.keys(o))t.includes(i)&&(r[n][i]=o[i])}return r}function mt(e,t){let r={...e};for(let[n,o]of Object.entries(t))switch(n){case\"generic\":r[n]=Boolean(o);break;case\"units\":r[n]={...e[n]};for(let[i,s]of Object.entries(o))r[n][i]=Array.isArray(s)?s:[];break;case\"atrules\":r[n]={...e[n]};for(let[i,s]of Object.entries(o)){let u=r[n][i]||{},c=r[n][i]={prelude:u.prelude||null,descriptors:{...u.descriptors}};if(!!s){c.prelude=s.prelude?Gr(c.prelude,s.prelude):c.prelude||null;for(let[a,l]of Object.entries(s.descriptors||{}))c.descriptors[a]=l?Gr(c.descriptors[a],l):null;Object.keys(c.descriptors).length||(c.descriptors=null)}}break;case\"types\":case\"properties\":r[n]={...e[n]};for(let[i,s]of Object.entries(o))r[n][i]=Gr(r[n][i],s);break;case\"scope\":r[n]={...e[n]};for(let[i,s]of Object.entries(o))r[n][i]={...r[n][i],...s};break;case\"parseContext\":r[n]={...e[n],...o};break;case\"atrule\":case\"pseudo\":r[n]={...e[n],...ha(o,[\"parse\"])};break;case\"node\":r[n]={...e[n],...ha(o,[\"name\",\"structure\",\"parse\",\"generate\",\"walkContext\"])};break}return r}function ma(e){let t=$o(e),r=Li(e),n=vi(e),{fromPlainObject:o,toPlainObject:i}=Si(r),s={lexer:null,createLexer:u=>new Ke(u,s,s.lexer.structure),tokenize:ve,parse:t,generate:n,walk:r,find:r.find,findLast:r.findLast,findAll:r.findAll,fromPlainObject:o,toPlainObject:i,fork(u){let c=mt({},e);return ma(typeof u==\"function\"?u(c,Object.assign):mt(c,u))}};return s.lexer=new Ke({generic:!0,units:e.units,types:e.types,atrules:e.atrules,properties:e.properties,node:e.node},s),s}var Vr=e=>ma(mt({},e));var fa={generic:!0,units:{angle:[\"deg\",\"grad\",\"rad\",\"turn\"],decibel:[\"db\"],flex:[\"fr\"],frequency:[\"hz\",\"khz\"],length:[\"cm\",\"mm\",\"q\",\"in\",\"pt\",\"pc\",\"px\",\"em\",\"rem\",\"ex\",\"rex\",\"cap\",\"rcap\",\"ch\",\"rch\",\"ic\",\"ric\",\"lh\",\"rlh\",\"vw\",\"svw\",\"lvw\",\"dvw\",\"vh\",\"svh\",\"lvh\",\"dvh\",\"vi\",\"svi\",\"lvi\",\"dvi\",\"vb\",\"svb\",\"lvb\",\"dvb\",\"vmin\",\"svmin\",\"lvmin\",\"dvmin\",\"vmax\",\"svmax\",\"lvmax\",\"dvmax\",\"cqw\",\"cqh\",\"cqi\",\"cqb\",\"cqmin\",\"cqmax\"],resolution:[\"dpi\",\"dpcm\",\"dppx\",\"x\"],semitones:[\"st\"],time:[\"s\",\"ms\"]},types:{\"abs()\":\"abs( )\",\"absolute-size\":\"xx-small|x-small|small|medium|large|x-large|xx-large|xxx-large\",\"acos()\":\"acos( )\",\"alpha-value\":\"|\",\"angle-percentage\":\"|\",\"angular-color-hint\":\"\",\"angular-color-stop\":\"&&?\",\"angular-color-stop-list\":\"[ [, ]?]# , \",\"animateable-feature\":\"scroll-position|contents|\",\"asin()\":\"asin( )\",\"atan()\":\"atan( )\",\"atan2()\":\"atan2( , )\",attachment:\"scroll|fixed|local\",\"attr()\":\"attr( ? [, ]? )\",\"attr-matcher\":\"['~'|'|'|'^'|'$'|'*']? '='\",\"attr-modifier\":\"i|s\",\"attribute-selector\":\"'[' ']'|'[' [|] ? ']'\",\"auto-repeat\":\"repeat( [auto-fill|auto-fit] , [? ]+ ? )\",\"auto-track-list\":\"[? [|]]* ? [? [|]]* ?\",axis:\"block|inline|vertical|horizontal\",\"baseline-position\":\"[first|last]? baseline\",\"basic-shape\":\"||||\",\"bg-image\":\"none|\",\"bg-layer\":\"|| [/ ]?||||||||\",\"bg-position\":\"[[left|center|right|top|bottom|]|[left|center|right|] [top|center|bottom|]|[center|[left|right] ?]&&[center|[top|bottom] ?]]\",\"bg-size\":\"[|auto]{1,2}|cover|contain\",\"blur()\":\"blur( )\",\"blend-mode\":\"normal|multiply|screen|overlay|darken|lighten|color-dodge|color-burn|hard-light|soft-light|difference|exclusion|hue|saturation|color|luminosity\",box:\"border-box|padding-box|content-box\",\"brightness()\":\"brightness( )\",\"calc()\":\"calc( )\",\"calc-sum\":\" [['+'|'-'] ]*\",\"calc-product\":\" ['*' |'/' ]*\",\"calc-value\":\"||||( )\",\"calc-constant\":\"e|pi|infinity|-infinity|NaN\",\"cf-final-image\":\"|\",\"cf-mixing-image\":\"?&&\",\"circle()\":\"circle( []? [at ]? )\",\"clamp()\":\"clamp( #{3} )\",\"class-selector\":\"'.' \",\"clip-source\":\"\",color:\"|||||||||currentcolor|\",\"color-stop\":\"|\",\"color-stop-angle\":\"{1,2}\",\"color-stop-length\":\"{1,2}\",\"color-stop-list\":\"[ [, ]?]# , \",combinator:\"'>'|'+'|'~'|['||']\",\"common-lig-values\":\"[common-ligatures|no-common-ligatures]\",\"compat-auto\":\"searchfield|textarea|push-button|slider-horizontal|checkbox|radio|square-button|menulist|listbox|meter|progress-bar|button\",\"composite-style\":\"clear|copy|source-over|source-in|source-out|source-atop|destination-over|destination-in|destination-out|destination-atop|xor\",\"compositing-operator\":\"add|subtract|intersect|exclude\",\"compound-selector\":\"[? * [ *]*]!\",\"compound-selector-list\":\"#\",\"complex-selector\":\" [? ]*\",\"complex-selector-list\":\"#\",\"conic-gradient()\":\"conic-gradient( [from ]? [at ]? , )\",\"contextual-alt-values\":\"[contextual|no-contextual]\",\"content-distribution\":\"space-between|space-around|space-evenly|stretch\",\"content-list\":\"[|contents||||||]+\",\"content-position\":\"center|start|end|flex-start|flex-end\",\"content-replacement\":\"\",\"contrast()\":\"contrast( [] )\",\"cos()\":\"cos( )\",counter:\"|\",\"counter()\":\"counter( , ? )\",\"counter-name\":\"\",\"counter-style\":\"|symbols( )\",\"counter-style-name\":\"\",\"counters()\":\"counters( , , ? )\",\"cross-fade()\":\"cross-fade( , ? )\",\"cubic-bezier-timing-function\":\"ease|ease-in|ease-out|ease-in-out|cubic-bezier( , , , )\",\"deprecated-system-color\":\"ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText\",\"discretionary-lig-values\":\"[discretionary-ligatures|no-discretionary-ligatures]\",\"display-box\":\"contents|none\",\"display-inside\":\"flow|flow-root|table|flex|grid|ruby\",\"display-internal\":\"table-row-group|table-header-group|table-footer-group|table-row|table-cell|table-column-group|table-column|table-caption|ruby-base|ruby-text|ruby-base-container|ruby-text-container\",\"display-legacy\":\"inline-block|inline-list-item|inline-table|inline-flex|inline-grid\",\"display-listitem\":\"?&&[flow|flow-root]?&&list-item\",\"display-outside\":\"block|inline|run-in\",\"drop-shadow()\":\"drop-shadow( {2,3} ? )\",\"east-asian-variant-values\":\"[jis78|jis83|jis90|jis04|simplified|traditional]\",\"east-asian-width-values\":\"[full-width|proportional-width]\",\"element()\":\"element( , [first|start|last|first-except]? )|element( )\",\"ellipse()\":\"ellipse( [{2}]? [at ]? )\",\"ending-shape\":\"circle|ellipse\",\"env()\":\"env( , ? )\",\"exp()\":\"exp( )\",\"explicit-track-list\":\"[? ]+ ?\",\"family-name\":\"|+\",\"feature-tag-value\":\" [|on|off]?\",\"feature-type\":\"@stylistic|@historical-forms|@styleset|@character-variant|@swash|@ornaments|@annotation\",\"feature-value-block\":\" '{' '}'\",\"feature-value-block-list\":\"+\",\"feature-value-declaration\":\" : + ;\",\"feature-value-declaration-list\":\"\",\"feature-value-name\":\"\",\"fill-rule\":\"nonzero|evenodd\",\"filter-function\":\"|||||||||\",\"filter-function-list\":\"[|]+\",\"final-bg-layer\":\"<'background-color'>|||| [/ ]?||||||||\",\"fixed-breadth\":\"\",\"fixed-repeat\":\"repeat( [] , [? ]+ ? )\",\"fixed-size\":\"|minmax( , )|minmax( , )\",\"font-stretch-absolute\":\"normal|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|\",\"font-variant-css21\":\"[normal|small-caps]\",\"font-weight-absolute\":\"normal|bold|\",\"frequency-percentage\":\"|\",\"general-enclosed\":\"[ )]|( )\",\"generic-family\":\"serif|sans-serif|cursive|fantasy|monospace|-apple-system\",\"generic-name\":\"serif|sans-serif|cursive|fantasy|monospace\",\"geometry-box\":\"|fill-box|stroke-box|view-box\",gradient:\"||||||<-legacy-gradient>\",\"grayscale()\":\"grayscale( )\",\"grid-line\":\"auto||[&&?]|[span&&[||]]\",\"historical-lig-values\":\"[historical-ligatures|no-historical-ligatures]\",\"hsl()\":\"hsl( [/ ]? )|hsl( , , , ? )\",\"hsla()\":\"hsla( [/ ]? )|hsla( , , , ? )\",hue:\"|\",\"hue-rotate()\":\"hue-rotate( )\",\"hwb()\":\"hwb( [|none] [|none] [|none] [/ [|none]]? )\",\"hypot()\":\"hypot( # )\",image:\"||||||\",\"image()\":\"image( ? [? , ?]! )\",\"image-set()\":\"image-set( # )\",\"image-set-option\":\"[|] [||type( )]\",\"image-src\":\"|\",\"image-tags\":\"ltr|rtl\",\"inflexible-breadth\":\"|min-content|max-content|auto\",\"inset()\":\"inset( {1,4} [round <'border-radius'>]? )\",\"invert()\":\"invert( )\",\"keyframes-name\":\"|\",\"keyframe-block\":\"# { }\",\"keyframe-block-list\":\"+\",\"keyframe-selector\":\"from|to|\",\"lab()\":\"lab( [||none] [||none] [||none] [/ [|none]]? )\",\"layer()\":\"layer( )\",\"layer-name\":\" ['.' ]*\",\"lch()\":\"lch( [||none] [||none] [|none] [/ [|none]]? )\",\"leader()\":\"leader( )\",\"leader-type\":\"dotted|solid|space|\",\"length-percentage\":\"|\",\"line-names\":\"'[' * ']'\",\"line-name-list\":\"[|]+\",\"line-style\":\"none|hidden|dotted|dashed|solid|double|groove|ridge|inset|outset\",\"line-width\":\"|thin|medium|thick\",\"linear-color-hint\":\"\",\"linear-color-stop\":\" ?\",\"linear-gradient()\":\"linear-gradient( [|to ]? , )\",\"log()\":\"log( , ? )\",\"mask-layer\":\"|| [/ ]?||||||[|no-clip]||||\",\"mask-position\":\"[|left|center|right] [|top|center|bottom]?\",\"mask-reference\":\"none||\",\"mask-source\":\"\",\"masking-mode\":\"alpha|luminance|match-source\",\"matrix()\":\"matrix( #{6} )\",\"matrix3d()\":\"matrix3d( #{16} )\",\"max()\":\"max( # )\",\"media-and\":\" [and ]+\",\"media-condition\":\"|||\",\"media-condition-without-or\":\"||\",\"media-feature\":\"( [||] )\",\"media-in-parens\":\"( )||\",\"media-not\":\"not \",\"media-or\":\" [or ]+\",\"media-query\":\"|[not|only]? [and ]?\",\"media-query-list\":\"#\",\"media-type\":\"\",\"mf-boolean\":\"\",\"mf-name\":\"\",\"mf-plain\":\" : \",\"mf-range\":\" ['<'|'>']? '='? | ['<'|'>']? '='? | '<' '='? '<' '='? | '>' '='? '>' '='? \",\"mf-value\":\"|||\",\"min()\":\"min( # )\",\"minmax()\":\"minmax( [|min-content|max-content|auto] , [||min-content|max-content|auto] )\",\"mod()\":\"mod( , )\",\"name-repeat\":\"repeat( [|auto-fill] , + )\",\"named-color\":\"transparent|aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen|<-non-standard-color>\",\"namespace-prefix\":\"\",\"ns-prefix\":\"[|'*']? '|'\",\"number-percentage\":\"|\",\"numeric-figure-values\":\"[lining-nums|oldstyle-nums]\",\"numeric-fraction-values\":\"[diagonal-fractions|stacked-fractions]\",\"numeric-spacing-values\":\"[proportional-nums|tabular-nums]\",nth:\"|even|odd\",\"opacity()\":\"opacity( [] )\",\"overflow-position\":\"unsafe|safe\",\"outline-radius\":\"|\",\"page-body\":\"? [; ]?| \",\"page-margin-box\":\" '{' '}'\",\"page-margin-box-type\":\"@top-left-corner|@top-left|@top-center|@top-right|@top-right-corner|@bottom-left-corner|@bottom-left|@bottom-center|@bottom-right|@bottom-right-corner|@left-top|@left-middle|@left-bottom|@right-top|@right-middle|@right-bottom\",\"page-selector-list\":\"[#]?\",\"page-selector\":\"+| *\",\"page-size\":\"A5|A4|A3|B5|B4|JIS-B5|JIS-B4|letter|legal|ledger\",\"path()\":\"path( [ ,]? )\",\"paint()\":\"paint( , ? )\",\"perspective()\":\"perspective( [|none] )\",\"polygon()\":\"polygon( ? , [ ]# )\",position:\"[[left|center|right]||[top|center|bottom]|[left|center|right|] [top|center|bottom|]?|[[left|right] ]&&[[top|bottom] ]]\",\"pow()\":\"pow( , )\",\"pseudo-class-selector\":\"':' |':' ')'\",\"pseudo-element-selector\":\"':' \",\"pseudo-page\":\": [left|right|first|blank]\",quote:\"open-quote|close-quote|no-open-quote|no-close-quote\",\"radial-gradient()\":\"radial-gradient( [||]? [at ]? , )\",ratio:\" [/ ]?\",\"relative-selector\":\"? \",\"relative-selector-list\":\"#\",\"relative-size\":\"larger|smaller\",\"rem()\":\"rem( , )\",\"repeat-style\":\"repeat-x|repeat-y|[repeat|space|round|no-repeat]{1,2}\",\"repeating-conic-gradient()\":\"repeating-conic-gradient( [from ]? [at ]? , )\",\"repeating-linear-gradient()\":\"repeating-linear-gradient( [|to ]? , )\",\"repeating-radial-gradient()\":\"repeating-radial-gradient( [||]? [at ]? , )\",\"reversed-counter-name\":\"reversed( )\",\"rgb()\":\"rgb( {3} [/ ]? )|rgb( {3} [/ ]? )|rgb( #{3} , ? )|rgb( #{3} , ? )\",\"rgba()\":\"rgba( {3} [/ ]? )|rgba( {3} [/ ]? )|rgba( #{3} , ? )|rgba( #{3} , ? )\",\"rotate()\":\"rotate( [|] )\",\"rotate3d()\":\"rotate3d( , , , [|] )\",\"rotateX()\":\"rotateX( [|] )\",\"rotateY()\":\"rotateY( [|] )\",\"rotateZ()\":\"rotateZ( [|] )\",\"round()\":\"round( ? , , )\",\"rounding-strategy\":\"nearest|up|down|to-zero\",\"saturate()\":\"saturate( )\",\"scale()\":\"scale( [|]#{1,2} )\",\"scale3d()\":\"scale3d( [|]#{3} )\",\"scaleX()\":\"scaleX( [|] )\",\"scaleY()\":\"scaleY( [|] )\",\"scaleZ()\":\"scaleZ( [|] )\",scroller:\"root|nearest\",\"self-position\":\"center|start|end|self-start|self-end|flex-start|flex-end\",\"shape-radius\":\"|closest-side|farthest-side\",\"sign()\":\"sign( )\",\"skew()\":\"skew( [|] , [|]? )\",\"skewX()\":\"skewX( [|] )\",\"skewY()\":\"skewY( [|] )\",\"sepia()\":\"sepia( )\",shadow:\"inset?&&{2,4}&&?\",\"shadow-t\":\"[{2,3}&&?]\",shape:\"rect( , , , )|rect( )\",\"shape-box\":\"|margin-box\",\"side-or-corner\":\"[left|right]||[top|bottom]\",\"sin()\":\"sin( )\",\"single-animation\":\"