@jesscss/less-parser 2.0.0-alpha.14 → 2.0.0-alpha.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26972,7 +26972,17 @@ const lessGrammar = /* @__PURE__ */ tableRules({
26972
26972
  const tailValue = tailField === void 0 ? void 0 : requireField(fields, "tail").value;
26973
26973
  const tail = tailValue === void 0 ? null : isValueNode(tailValue) ? tailValue : any(staticText(tailValue));
26974
26974
  if (importIsCompileTime(keyword.value, target, options)) {
26975
- if (tail !== null) throw new LessImportPostludeError(span.start, span.end);
26975
+ if (tail !== null) {
26976
+ const lowered = keyword.value.toLowerCase();
26977
+ const isLegacyImport = lowered === "@import" || lowered === "@-import";
26978
+ const tailText = isAny(tail) ? tail.src.toLowerCase() : "";
26979
+ const tailHasSupportsOrLayer = tailText.includes("supports") || tailText.includes("layer");
26980
+ if (!isLegacyImport || tailHasSupportsOrLayer) throw new LessImportPostludeError(span.start, span.end);
26981
+ return withSourceSpan(atRuleBlock("@media", tail, [styleImport(keyword.value, target, {
26982
+ options,
26983
+ mode: "import"
26984
+ })]), span);
26985
+ }
26976
26986
  return styleImport(keyword.value, target, {
26977
26987
  options,
26978
26988
  mode: "import"
@@ -28003,8 +28013,8 @@ const lessGrammar = /* @__PURE__ */ tableRules({
28003
28013
  ...lessSyntax[Symbol.for("parseman.composedPieces")] ?? [],
28004
28014
  ...cssPseudoSyntax[Symbol.for("parseman.composedPieces")] ?? [],
28005
28015
  {
28006
- ns: "_095b68c9_",
28007
- ir: "(() => {\n const _s66 = parser({ trivia: null }, sequence(literal(\"\\\"\"), regex(\"(?:[^\\\"\\\\\\\\]|\\\\\\\\.)*\", \"\"), literal(\"\\\"\")))\n const _s67 = parser({ trivia: null }, sequence(literal(\"'\"), regex(\"(?:[^'\\\\\\\\]|\\\\\\\\.)*\", \"\"), literal(\"'\")))\n const _s12 = regex(\"\\\\/\\\\*(?:[^*]|\\\\*(?!\\\\/))*\\\\*\\\\/\", \"\")\n return rules({ scanSkip: [_s66, _s67, _s12] }, (g) => {\n const _s0 = choice(g[\"ImportStatement\"], g[\"PluginDirective\"], g[\"ValueBlockDeclaration\"], g[\"VarDeclaration\"], g[\"SupportsBlock\"], g[\"MediaContainerBlock\"], g[\"ReferenceCall\"], g[\"Keyframes\"], g[\"AtRuleBlock\"], g[\"UnknownAtRuleBlock\"], g[\"AtRuleStatement\"])\n const _s1 = choice(_nd(\"UnsupportedMixinName\", parser({ trivia: null }, choice(sequence(choice(literal(\".\"), literal(\"#\")), literal(\"-\"), literal(\"(\"), optional(g[\"MixinArguments\"]), literal(\")\")), sequence(choice(literal(\".\"), literal(\"#\")), literal(\"-\"), literal(\";\")))), \"(_children, _fields, span) => {\\n throw new LessUnsupportedMixinNameError(span.start, span.end);\\n }\", undefined, undefined, undefined, [{\"local\":\"LessUnsupportedMixinNameError\",\"source\":\"./parse-error.js\",\"imported\":\"LessUnsupportedMixinNameError\"}]), g[\"ClassIdStatement\"])\n const _s2 = not(regex(\"[-\\\\w]+[ \\\\t]*:[ \\\\t\\\\n\\\\r\\\\f]\", \"\"))\n const _s4 = choice(_nd(\"UnsupportedVariableName\", regex(\"[0-9][-_a-zA-Z0-9\\\\u0080-\\\\uffff]*\", \"\"), \"children => ({ unsupportedVariableName: requireToken(children[0]).value })\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), regex(\"[_a-zA-Z\\\\u0080-\\\\uffff][-_a-zA-Z0-9\\\\u0080-\\\\uffff]*\", \"\"), _lf(parser({ trivia: null }, sequence(literal(\"-\"), optional(regex(\"[-_a-zA-Z0-9\\\\u0080-\\\\uffff]+\", \"\")))), \"(children) => {\\n if (!Array.isArray(children)) {\\n throw new TypeError('Less dash variable name lost its grammar facts.');\\n }\\n const tail = children[1];\\n return tail === undefined || tail === null\\n ? { unsupportedVariableName: '-' }\\n : `-${requireTerminalText(tail)}`;\\n }\"))\n const _s3 = _nd(\"VariableName\", parser({ trivia: null }, sequence(literal(\"@\"), _s4)), \"(children, _fields, span) => `@${requireSupportedVariableName(children[1], span.start, span.end)}`\", undefined, undefined, undefined, [{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"}])\n const _s5 = not(parser({ trivia: null }, literal(\"[\")))\n const _s6 = choice(literal(\";\"), peek(literal(\"}\")))\n const _s7 = choice(g[\"EscapedQuoted\"], g[\"Quoted\"], choice(g[\"VariableUrl\"], g[\"PlainUrl\"]))\n const _s10 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")\n const _s11 = regex(\"\\\\/\\\\/[^\\\\n\\\\r]*\", \"\")\n const _s8 = keywords([\"not\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })\n const _s13 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]*(?:>=|<=|=>|=<|=~|[<>=]|(?:and|or)(?![-_a-zA-Z0-9\\\\u0080-\\\\uffff]))\", \"i\")\n const _s14 = parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(peek(trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12))))), not(regex(\"@[^;{}()'\\\"]*\\\\{\", \"\")), g[\"valuePiece\"]))\n const _s15 = sequence(_lf(peek(literal(\"@\")), \"() => ({ kind: 'glued-value-boundary' })\"), g[\"valuePiece\"])\n const _s16 = token(parser({ trivia: null }, sequence(not(keywords([\"calc(\",\"url(\"], { caseInsensitive: true })), g[\"InterpolatedValueStart\"], literal(\"(\"))))\n const _s17 = token(parser({ trivia: null }, sequence(g[\"InterpolatedValueStart\"], optional(literal(\"(\")))))\n const _s19 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")\n const _s20 = regex(\"data:(?:[^\\\"'()\\\\\\\\\\\\x00-\\\\x08\\\\x0B\\\\x0E-\\\\x1F\\\\x7F]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))+?(?=[ \\\\t\\\\n\\\\r\\\\f]*\\\\))\", \"i\")\n const _s21 = regex(\"(?!@(?:-?[_a-zA-Z\\\\u0080-\\\\uffff][-_a-zA-Z0-9\\\\u0080-\\\\uffff]*|\\\\{))(?:[^\\\"'()\\\\\\\\ \\\\t\\\\n\\\\f\\\\r\\\\x00-\\\\x08\\\\x0B\\\\x0E-\\\\x1F\\\\x7F]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))+\", \"\")\n const _s18 = _nd(\"Url\", parser({ trivia: null }, sequence(routed(), optional(_s19), optional(field(\"body\", choice(g[\"EscapedQuoted\"], g[\"Quoted\"], _s20, _s21))), optional(_s19), literal(\")\"))), \"(_children, fields) => {\\n const captured = fields?.body;\\n if (Array.isArray(captured)) {\\n throw new TypeError('Less routed plain URL produced repeated body facts.');\\n }\\n const body = captured?.value;\\n if (body === undefined) {\\n return url(any(''));\\n }\\n if (isQuoted(body) || isInterp(body)) {\\n return url(body);\\n }\\n return url(any(requireTerminalText(body)));\\n }\", undefined, undefined, undefined, [{\"local\":\"url\",\"source\":\"@jesscss/core/ast\",\"imported\":\"url\"},{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"isQuoted\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isQuoted\"},{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"},{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"}])\n const _s23 = trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12))))\n const _s24 = choice(_lf(parser({ trivia: null }, sequence(_s23, keywords([\"-\",\"+\"], { caseInsensitive: false }), _s23)), \"children => children[1]\"), regex(\"[-+](?=[0-9.])|[ \\\\t\\\\n\\\\r\\\\f]*[-+](?![0-9.])[ \\\\t\\\\n\\\\r\\\\f]*\", \"\"))\n const _s25 = _lf(parser({ trivia: null }, sequence(optional(_s23), keywords([\"*\",\"%\"], { caseInsensitive: false }), optional(_s23))), \"children => children[1]\")\n const _s27 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")\n const _s26 = _lf(sequence(optional(_s27), literal(\"/\"), optional(_s27)), \"(children) => {\\n if (!Array.isArray(children)) {\\n throw new TypeError('Less slash boundary produced a non-sequence value.');\\n }\\n return {\\n before: staticText(children[0]),\\n after: staticText(children[2])\\n };\\n }\")\n const _s29 = sequence(optional(regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")), keywords([\"when\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }))\n const _s31 = _nd(\"ExtendPseudo\", sequence(parser({ trivia: null }, sequence(literal(\":\"), literal(\"extend\"), literal(\"(\"))), sepBy(g[\"ExtendTarget\"], literal(\",\"), { min: 1 }), literal(\")\")), \"children => children.filter(isExtendTargetFact)\", undefined, undefined, undefined, [{\"local\":\"isExtendTargetFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isExtendTargetFact\"}])\n const _s32 = peek(choice(literal(\",\"), _s29, literal(\"{\")))\n const _s30 = choice(sequence(_s31, _s32), _s32)\n const _s35 = _nd(\"GuardedRuleset\", sequence(_s2, g[\"NestedRulesetWithExtends\"]), \"(children) => {\\n const ruleset = children.find(isRuleset);\\n if (ruleset === undefined) {\\n throw new TypeError('Less guarded ruleset lost its ruleset fact.');\\n }\\n return ruleset;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isRuleset\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isRuleset\"}])\n const _s36 = _nd(\"DeclarationItem\", sequence(g[\"Declaration\"], _s6), \"(children) => {\\n const declaration = children.find(isLessDeclaration);\\n if (declaration === undefined) {\\n throw new TypeError('Less declaration-list item lost its declaration fact.');\\n }\\n return declaration;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isLessDeclaration\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessDeclaration\"}])\n const _s34 = choice(_s0, _s1, g[\"FunctionStatement\"], _s35, _s36, literal(\";\"))\n const _s33 = many(choice(_s34, g[\"ExtendStatement\"]))\n const _s37 = _nd(\"PositionalMixinArgument\", sequence(g[\"CallArgumentValue\"], optional(literal(\"...\"))), \"children => callArg(\\n requireMixinCallArgumentValue(children[0]),\\n undefined,\\n children.some(child => isLessTerminalText(child, '...'))\\n )\", undefined, undefined, undefined, [{\"local\":\"callArg\",\"source\":\"@jesscss/core/ast\",\"imported\":\"callArg\"},{\"local\":\"requireMixinCallArgumentValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireMixinCallArgumentValue\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}])\n const _s39 = choice(_nd(\"NamedMixinArgument\", sequence(literal(\"@\"), _s4, literal(\":\"), g[\"CallArgumentValue\"]), \"(children, _fields, span) => {\\n const name = requireSupportedVariableName(children[1], span.start, span.start + variableNameText(children[1]).length + 1);\\n return callArg(requireMixinCallArgumentValue(children[3]), name);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"},{\"local\":\"variableNameText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"variableNameText\"},{\"local\":\"callArg\",\"source\":\"@jesscss/core/ast\",\"imported\":\"callArg\"},{\"local\":\"requireMixinCallArgumentValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireMixinCallArgumentValue\"}]), _s37)\n const _s38 = choice(g[\"MixinArgumentGroup\"], _s39)\n const _s40 = keywords([\",\",\";\"], { caseInsensitive: false })\n const _s41 = regex(\"[.#]-?(?:[_a-zA-Z\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))(?:[-_a-zA-Z0-9\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))*\", \"\")\n const _s43 = regex(\"(?:[.#]?-?(?:[_a-zA-Z\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))(?:[-_a-zA-Z0-9\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))*|\\\\*)\", \"\")\n const _s44 = regex(\"&[-_a-zA-Z0-9\\\\u0080-\\\\uffff]*\", \"\")\n const _s48 = _nd(\"PseudoSelector\", sequence(routed(), _nd(\"PseudoSelectorArgument\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, g[\"PseudoArgumentSelector\"]), \"children => requireSelectorList(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireSelectorList\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSelectorList\"}]), literal(\")\")), \"children => staticSelectorPseudoFrom(\\n requireToken(children[0]).value.slice(0, -1),\\n children[1]\\n )\", undefined, undefined, undefined, [{\"local\":\"staticSelectorPseudoFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticSelectorPseudoFrom\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])\n const _s50 = regex(\"(?:[^()\\\\[\\\\]'\\\"@/]|@(?![@{_a-zA-Z\\\\u0080-\\\\uffff-])|\\\\/(?!\\\\*))+\", \"\")\n const _s49 = _nd(\"InterpolatedArgumentPseudo\", sequence(routed(), many(_s50), g[\"VariableInterpolation\"], many(choice(g[\"VariableInterpolation\"], _s50)), literal(\")\")), \"(children) => {\\n const open = requireToken(children[0]).value;\\n const parts = interpolationPartsFrom(children.slice(1, -1), true, open);\\n parts.push({ lit: ')' });\\n return interpolatedSimpleSelector(interpolation(parts));\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"},{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"}])\n const _s51 = _nd(\"GenericPseudo\", sequence(routed(), g[\"PseudoArgumentText\"], literal(\")\")), \"children => staticNonSelectorPseudoFrom(\\n requireToken(children[0]).value.slice(0, -1),\\n requireString(children[1])\\n )\", undefined, undefined, undefined, [{\"local\":\"staticNonSelectorPseudoFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticNonSelectorPseudoFrom\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireString\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireString\"}])\n const _s52 = _nd(\"GenericPseudo\", routed(), \"children => staticNonSelectorPseudoFrom(requireToken(children[0]).value, null)\", undefined, undefined, undefined, [{\"local\":\"staticNonSelectorPseudoFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticNonSelectorPseudoFrom\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])\n const _s47 = parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, token(parser({ trivia: null }, sequence(keywords([\"extend\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), literal(\"(\")))))\n const _s46 = token(parser({ trivia: null }, sequence(regex(\"::?(?![ \\\\t\\\\n\\\\r\\\\f])\", \"\"), not(_s47), not(g[\"NthPseudoSelectorName\"]), g[\"LessIdentifier\"], optional(literal(\"(\")))))\n const _s45 = dispatch(_s46, when([\":is(\",\"::is(\",\":not(\",\"::not(\",\":has(\",\"::has(\",\":where(\",\"::where(\",\":matches(\",\"::matches(\",\":global(\",\"::global(\",\":local(\",\"::local(\"], choice(_s48, _s49), { caseInsensitive: true }), when(endsWith(\"(\"), choice(_s49, _s51)), otherwise(_s52))\n const _s42 = choice(g[\"InterpolatedParentSuffix\"], g[\"InterpolatedSimpleSelector\"], g[\"AdjacentInterpolatedSelector\"], g[\"BareInterpolatedSelectorWithSuffix\"], g[\"BareInterpolatedSelector\"], g[\"NamespaceTypeSelector\"], _s43, _s44, _s45, g[\"InterpolatedNthPseudo\"], g[\"NthPseudoSelector\"], g[\"InterpolatedArgumentPseudo\"], g[\"InterpolatedPseudo\"], g[\"AttributeSelector\"], g[\"InterpolatedAttributeSelector\"])\n const _s54 = keywords([\"||\",\">\",\"+\",\"~\",\"|\"], { caseInsensitive: false })\n const _s57 = _nd(\"InlineExtendSubjectCompound\", parser({ trivia: classifiedTrivia({ \"lineComment\": _s11, \"blockComment\": _s12 }) }, oneOrMore(choice(g[\"NamespaceTypeSelector\"], _s43, _s44, _s45, g[\"NthPseudoSelector\"], g[\"AttributeSelector\"]))), \"children => lessSelectorTermFromTokens(children.map(child => isLessSimpleToken(child) ? child : simpleSelector(requireToken(child).value)))\", undefined, undefined, undefined, [{\"local\":\"lessSelectorTermFromTokens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessSelectorTermFromTokens\"},{\"local\":\"isLessSimpleToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSimpleToken\"},{\"local\":\"simpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"simpleSelector\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])\n const _s56 = _nd(\"SelectorBranch\", sequence(_nd(\"ComplexSelector\", sequence(_s57, many(sequence(not(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*!?all(?=[ \\\\t\\\\n\\\\r\\\\f]*(?:,|\\\\)))\", \"i\")), _nd(\"InlineExtendSubjectComplexTail\", sequence(optional(_s54), _s57), \"combinatorTailReducer\", { buildArity: 1 }, undefined, \"function combinatorTailReducer(children: readonly unknown[]): ComplexTailFact {\\n const token = children.find(child => !isSelectorTerm(child));\\n const term = children.find(isSelectorTerm)!;\\n return { combinator: token === undefined ? ' ' : requireCombinator(token), term };\\n}\")))), \"(children, _fields, span) => withSourceSpan(selectorBranchOf([\\n { term: children.find(isSelectorTerm) },\\n // The terminal-flag lookahead is a recognition-only child. Keep only\\n // actual tail facts: otherwise the successful stop check is emitted as\\n // a fake descendant tail with no compound.\\n ...children.slice(1).filter(isComplexTailFact)\\n ]), span)\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"selectorBranchOf\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selectorBranchOf\"},{\"local\":\"isSelectorTerm\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSelectorTerm\"},{\"local\":\"isComplexTailFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isComplexTailFact\"}]), _s30), \"(children) => {\\n const subject = children.find(isLessSelectorBranch);\\n const extensions = children\\n .filter(Array.isArray)\\n .flatMap(child => child.filter(isExtendTargetFact))\\n .map(target => ({ target: target.target, partial: target.partial, subject: selist(subject) }));\\n return { selector: subject, extensions };\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorBranch\"},{\"local\":\"isExtendTargetFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isExtendTargetFact\"},{\"local\":\"selist\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selist\"}])\n const _s55 = choice(_s56, _nd(\"SelectorBranch\", g[\"ComplexSelector\"], \"children => ({ selector: children.find(isLessSelectorBranch), extensions: [] })\", undefined, undefined, undefined, [{\"local\":\"isLessSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorBranch\"}]))\n const _s58 = _nd(\"MixinPathTail\", sequence(optional(regex(\">\", \"\")), _s41), \"(children) => {\\n const combToken = children.find(child => isLessTerminalText(child, '>'));\\n return {\\n combinator: combToken === undefined ? ' ' : '>',\\n selector: requireToken(children.at(-1)).value\\n };\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])\n const _s59 = _nd(\"MixinGuardDefaultOperand\", regex(\"default[ \\\\t\\\\n\\\\r\\\\f]*\\\\([ \\\\t\\\\n\\\\r\\\\f]*\\\\)(?![-_a-zA-Z0-9\\\\u0080-\\\\uffff])\", \"\"), \"() => funcCall('default', [])\", undefined, undefined, undefined, [{\"local\":\"funcCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"funcCall\"}])\n const _s60 = regex(\">=|<=|=>|=<|=~|[<>=]\", \"\")\n const _s61 = regex(\"-?(?:[_a-zA-Z\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))(?:[-_a-zA-Z0-9\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))*\", \"\")\n const _s62 = parser({ trivia: null }, regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\"))\n const _s63 = parser({ trivia: null }, literal(\",\"))\n const _s64 = parser({ trivia: null }, choice(token(token(balanced(\"(\", \")\"))), token(token(balanced(\"[\", \"]\")))))\n const _s65 = parser({ trivia: null }, choice(_s66, _s67))\n const _s69 = sequence(literal(\"{\"), g[\"blockBody\"], optional(g[\"Call\"]), literal(\"}\"))\n const _s70 = keywords([\"::\",\":\"], { caseInsensitive: false })\n const _s71 = keywords([\">\",\"+\",\"~\"], { caseInsensitive: false })\n const _s72 = parser({ trivia: null }, sequence(optional(choice(g[\"InterpolatedValueStart\"], g[\"InterpolatedValueDash\"])), g[\"Interpolation\"], many(g[\"interpolatedValueTail\"])))\n const _s73 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")\n const _s74 = regex(\"(?:[-_a-zA-Z0-9\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))+\", \"\")\n const _s76 = token(parser({ trivia: null }, regex(\"url\\\\(\", \"i\")))\n const _s77 = regex(\"[^()\\\\[\\\\]{};@'\\\"]+\", \"\")\n return ({\n \"Stylesheet\": _nd(\"Stylesheet\", sequence(many(choice(_s0, _s1, g[\"FunctionStatement\"], _nd(\"GuardedRuleset\", sequence(_s2, g[\"RulesetWithExtends\"]), \"(children) => {\\n const ruleset = children.find(isRuleset);\\n if (ruleset === undefined) {\\n throw new TypeError('Less declaration-guarded ruleset lost its rule.');\\n }\\n return ruleset;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isRuleset\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isRuleset\"}]), _nd(\"RootDeclarationItem\", sequence(g[\"Declaration\"], choice(literal(\";\"), not(regex(\"[\\\\s\\\\S]\", \"\")))), \"(children) => {\\n const declaration = children.find(isLessDeclaration);\\n if (declaration === undefined) {\\n throw new TypeError('Less root declaration item lost its declaration fact.');\\n }\\n return declaration;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isLessDeclaration\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessDeclaration\"}]), literal(\";\"))), optional(g[\"Call\"])), \"children => stylesheet(children.filter(isStatement))\", { trailingTrivia: true }, undefined, undefined, [{\"local\":\"stylesheet\",\"source\":\"@jesscss/core/ast\",\"imported\":\"stylesheet\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"}]),\n \"Document\": _nd(\"Stylesheet\", sequence(many(choice(_s0, _s1, g[\"FunctionStatement\"], _nd(\"GuardedRuleset\", sequence(_s2, g[\"RulesetWithExtends\"]), \"(children) => {\\n const ruleset = children.find(isRuleset);\\n if (ruleset === undefined) {\\n throw new TypeError('Less declaration-guarded ruleset lost its rule.');\\n }\\n return ruleset;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isRuleset\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isRuleset\"}]), _nd(\"RootDeclarationItem\", sequence(g[\"Declaration\"], choice(literal(\";\"), not(regex(\"[\\\\s\\\\S]\", \"\")))), \"(children) => {\\n const declaration = children.find(isLessDeclaration);\\n if (declaration === undefined) {\\n throw new TypeError('Less root declaration item lost its declaration fact.');\\n }\\n return declaration;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isLessDeclaration\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessDeclaration\"}]), literal(\";\"))), optional(g[\"Call\"])), \"children => stylesheet(children.filter(isStatement))\", { trailingTrivia: true }, undefined, undefined, [{\"local\":\"stylesheet\",\"source\":\"@jesscss/core/ast\",\"imported\":\"stylesheet\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"}]),\n \"VarDeclaration\": _nd(\"VariableDeclaration\", sequence(_s3, literal(\":\"), choice(sequence(g[\"NamespacedMixinValue\"], _s5), g[\"ImportantValue\"], sequence(g[\"FlatMixinCall\"], _s5), sequence(not(literal(\"{\")), g[\"VariableValue\"])), _s6), \"(children, _fields, span) => {\\n const name = requireTerminalText(children[0]).slice(1);\\n const value = children[2];\\n return withSourceSpan(\\n variableDeclaration(name, isMixinCall(value) ? value : variableValueSlot(value), { mode: 'declare' }),\\n span\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"variableDeclaration\",\"source\":\"@jesscss/core/ast\",\"imported\":\"variableDeclaration\"},{\"local\":\"isMixinCall\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinCall\"},{\"local\":\"variableValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"variableValueSlot\"}]),\n \"ImportStatement\": _nd(\"ImportStatement\", sequence(keywords([\"@-import\",\"@import\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), optional(g[\"ImportOptions\"]), g[\"ImportTarget\"], optional(field(\"tail\", g[\"ImportTail\"])), literal(\";\")), \"(children, fields, span) => {\\n // Every accepted import fact is a grammar child or a field capture. In\\n // particular, the opaque tail is reconstructed from terminal values only\\n // after the recursive grammar has closed every delimiter.\\n const keyword = requireToken(children[0]);\\n const options = children.find((child) => typeof child === 'object' && child !== null && 'type' in child && child.type === 'List') ?? null;\\n const target = children.find((child) => isQuoted(child) || isUrl(child) || isInterp(child));\\n if (target === undefined) {\\n throw new TypeError('Less grammar produced no import target.');\\n }\\n const tailField = fields?.tail;\\n // The variable-bearing query feature and a complete `@{…}` tail are\\n // structural values. Mixed text and interpolation stays rejected until\\n // the import tail has a typed segment model; do not flatten it back into\\n // opaque source bytes.\\n const tailValue = tailField === undefined ? undefined : requireField(fields, 'tail').value;\\n const tail = tailValue === undefined ? null : isValueNode(tailValue) ? tailValue : any(staticText(tailValue));\\n if (importIsCompileTime(keyword.value, target, options)) {\\n if (tail !== null) {\\n throw new LessImportPostludeError(span.start, span.end);\\n }\\n return styleImport(keyword.value, target, { options, mode: 'import' });\\n }\\n return withImportSourceSpan(\\n withImportTailStart(\\n atRuleStatement(\\n keyword.value,\\n tail === null ? target : spaced([target, tail])\\n ),\\n tailField === undefined || Array.isArray(tailField) ? NO_SPAN : tailField.span.start\\n ),\\n span.start,\\n span.end\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isQuoted\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isQuoted\"},{\"local\":\"isUrl\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isUrl\"},{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"},{\"local\":\"requireField\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireField\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"staticText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticText\"},{\"local\":\"importIsCompileTime\",\"source\":\"@jesscss/core/ast\",\"imported\":\"importIsCompileTime\"},{\"local\":\"LessImportPostludeError\",\"source\":\"./parse-error.js\",\"imported\":\"LessImportPostludeError\"},{\"local\":\"styleImport\",\"source\":\"@jesscss/core/ast\",\"imported\":\"styleImport\"},{\"local\":\"withImportSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withImportSourceSpan\"},{\"local\":\"withImportTailStart\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withImportTailStart\"},{\"local\":\"atRuleStatement\",\"source\":\"@jesscss/core/ast\",\"imported\":\"atRuleStatement\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"},{\"local\":\"NO_SPAN\",\"source\":\"@jesscss/core/ast\",\"imported\":\"NO_SPAN\"}]),\n \"PluginDirective\": _nd(\"Plugin\", sequence(keywords([\"@plugin\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), optional(sequence(literal(\"(\"), field(\"options\", g[\"EnclosedContent\"]), literal(\")\"))), field(\"target\", _s7), literal(\";\")), \"(_children, fields) => {\\n const target = requireField(fields, 'target').value;\\n if (!isQuoted(target) && !isUrl(target) && !isInterp(target)) {\\n throw new TypeError('Less Plugin lost its typed target.');\\n }\\n const optionValue = fields?.options === undefined ? null : requireField(fields, 'options').value;\\n if (optionValue !== null && !isInterp(optionValue)) {\\n throw new TypeError('Less Plugin options must remain an interpolation template.');\\n }\\n return { type: 'Plugin', target, options: optionValue };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireField\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireField\"},{\"local\":\"isQuoted\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isQuoted\"},{\"local\":\"isUrl\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isUrl\"},{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"}]),\n \"ValueBlockDeclaration\": _nd(\"VariableDeclaration\", sequence(_s3, literal(\":\"), g[\"ValueBlock\"]), \"(children, _fields, span) => {\\n const name = requireTerminalText(children[0]).slice(1);\\n return withSourceSpan(\\n variableDeclaration(\\n name,\\n lessValueSlot(requireValueNode(children[2])),\\n { mode: 'declare' }\\n ),\\n span\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"variableDeclaration\",\"source\":\"@jesscss/core/ast\",\"imported\":\"variableDeclaration\"},{\"local\":\"lessValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessValueSlot\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"ValueBlock\": _nd(\"ValueBlock\", sequence(literal(\"{\"), many(g[\"BodyStatement\"]), optional(g[\"Call\"]), literal(\"}\")), \"children => classifyValueBlock(requireValueBlockBody(children))\", undefined, undefined, undefined, [{\"local\":\"classifyValueBlock\",\"source\":\"@jesscss/core/ast\",\"imported\":\"classifyValueBlock\"},{\"local\":\"requireValueBlockBody\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueBlockBody\"}]),\n \"IndirectVariableReference\": _nd(\"Reference\", parser({ trivia: null }, sequence(literal(\"@@\"), _s4)), \"(children, _fields, span) => {\\n const name = requireSupportedVariableName(children[1], span.start, span.end);\\n return withSourceSpan(\\n variableReference(variableReference(name, 'scoped'), 'scoped', `@@${name}`),\\n span\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"variableReference\",\"source\":\"@jesscss/core/ast\",\"imported\":\"variableReference\"}]),\n \"VariableReferenceChain\": _nd(\"Reference\", parser({ trivia: null }, sequence(literal(\"@\"), _s4, optional(oneOrMore(g[\"ReferenceTail\"])))), \"(children, _fields, span) => {\\n const name = requireSupportedVariableName(children[1], span.start, span.end);\\n const base = variableReference(name, 'scoped');\\n return children.length > 2\\n ? withSourceSpan(referenceWithTails(base, `@${name}`, children.slice(2)), span)\\n : withSourceSpan(base, span);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"},{\"local\":\"variableReference\",\"source\":\"@jesscss/core/ast\",\"imported\":\"variableReference\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"referenceWithTails\",\"source\":\"./grammar-helpers.js\",\"imported\":\"referenceWithTails\"}]),\n \"VariableReference\": _nd(\"Reference\", sequence(literal(\"@\"), _s4), \"(children, _fields, span) => withSourceSpan(\\n variableReference(requireSupportedVariableName(children[1], span.start, span.end), 'scoped'),\\n span\\n )\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"variableReference\",\"source\":\"@jesscss/core/ast\",\"imported\":\"variableReference\"},{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"}]),\n \"PropertyReference\": _nd(\"Reference\", parser({ trivia: null }, sequence(literal(\"$\"), g[\"LessIdentifier\"])), \"(children, _fields, span) => withSourceSpan(propertyReference(requireToken(children[1]).value), span)\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"propertyReference\",\"source\":\"@jesscss/core/ast\",\"imported\":\"propertyReference\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"VariableInterpolation\": _nd(\"VariableInterpolation\", choice(_nd(\"UnsupportedVariableName\", parser({ trivia: null }, literal(\"@{-}\")), \"(_children, _fields, span) => {\\n throw new LessUnsupportedVariableNameError(span.start, span.end, '-');\\n }\", undefined, undefined, undefined, [{\"local\":\"LessUnsupportedVariableNameError\",\"source\":\"./parse-error.js\",\"imported\":\"LessUnsupportedVariableNameError\"}]), parser({ trivia: null }, sequence(literal(\"@{\"), _s4, many(g[\"InterpolationAccessor\"]), literal(\"}\")))), \"(children, _fields, span) => interpolationFactFromChildren(children, span)\", undefined, undefined, undefined, [{\"local\":\"interpolationFactFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationFactFromChildren\"}]),\n \"PropertyInterpolation\": _nd(\"PropertyInterpolation\", parser({ trivia: null }, sequence(literal(\"${\"), g[\"InterpolationHead\"], many(g[\"InterpolationAccessor\"]), literal(\"}\"))), \"(children, _fields, span) => interpolationFactFromChildren(children, span)\", undefined, undefined, undefined, [{\"local\":\"interpolationFactFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationFactFromChildren\"}]),\n \"Interpolation\": _nd(\"Interpolation\", choice(g[\"VariableInterpolation\"], g[\"PropertyInterpolation\"]), \"children => requireInterpolationFact(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationFact\"}]),\n \"AtRuleInterpolation\": _nd(\"AtRuleInterpolation\", g[\"VariableInterpolation\"], \"(children) => {\\n const fact = requireInterpolationFact(children[0]);\\n return interpolation([{ ref: fact.ref, unquote: true }]);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationFact\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"}]),\n \"InterpolationAccessor\": choice(_nd(\"InterpolationLastAccessor\", parser({ trivia: null }, literal(\"[]\")), \"() => ({ key: -1, keyKind: 'index', src: '-1' })\"), _nd(\"InterpolationIndexAccessor\", parser({ trivia: null }, sequence(literal(\"[\"), g[\"InterpolationIndex\"], literal(\"]\"))), \"(children) => {\\n const text = requireToken(children[1]).value;\\n return { key: Number(text), keyKind: 'index', src: text };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), _nd(\"InterpolationPropertyVariableAccessor\", parser({ trivia: null }, sequence(literal(\"[\"), literal(\"$\"), g[\"VariableReference\"], literal(\"]\"))), \"(children) => {\\n const key = requireValueNode(children[2]);\\n if (!isVarRef(key)) {\\n throw new TypeError('Less property-variable map key must retain its variable reference.');\\n }\\n return { key, keyKind: 'prop', src: `$@${key.name}` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"isVarRef\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isVarRef\"}]), _nd(\"InterpolationReferenceAccessor\", parser({ trivia: null }, sequence(literal(\"[\"), choice(g[\"IndirectVariableReference\"], g[\"VariableReference\"], g[\"PropertyReference\"], g[\"InterpolationKey\"]), literal(\"]\"))), \"(children) => {\\n const key = children[1];\\n if (isVarIndirect(key)) {\\n const nameRef = key.name;\\n if (!isVarRef(nameRef)) {\\n throw new TypeError('Less indirect map key must retain its variable reference.');\\n }\\n return { key, keyKind: 'var', src: `@@${nameRef.name}` };\\n }\\n if (isVarRef(key)) {\\n return { key, keyKind: 'var', src: `@${key.name}` };\\n }\\n if (isPropRef(key)) {\\n return { key, keyKind: 'prop', src: key.raw };\\n }\\n const text = requireToken(key).value;\\n return { key: keyword(text), keyKind: 'prop', src: text };\\n }\", undefined, undefined, undefined, [{\"local\":\"isVarIndirect\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isVarIndirect\"},{\"local\":\"isVarRef\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isVarRef\"},{\"local\":\"isPropRef\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isPropRef\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"}])),\n \"ReferenceTail\": choice(_nd(\"ReferenceBracketTail\", g[\"InterpolationAccessor\"], \"(children) => {\\n const accessor = requireInterpolationAccessorFact(children[0]);\\n return { step: { type: 'LookupStep', kind: accessor.keyKind, name: accessor.key }, src: `[${accessor.src}]` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireInterpolationAccessorFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationAccessorFact\"}]), _nd(\"ReferenceDotTail\", sequence(literal(\".\"), g[\"VariableNameToken\"]), \"(children) => {\\n const name = requireToken(children[1]).value;\\n return { step: { type: 'LookupStep', kind: 'member', name }, src: `.${name}` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), _nd(\"ReferenceCallTail\", sequence(literal(\"(\"), optional(g[\"MixinArguments\"]), literal(\")\")), \"(children) => {\\n const args = mixinArgumentsFromChildren(children);\\n return { step: { type: 'Call', args }, src: `(${args.map(callArgumentSource).join(', ')})` };\\n }\", undefined, undefined, undefined, [{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"},{\"local\":\"callArgumentSource\",\"source\":\"./grammar-helpers.js\",\"imported\":\"callArgumentSource\"}])),\n \"InterpolatedValue\": _nd(\"InterpolatedValue\", parser({ trivia: null }, sequence(g[\"Interpolation\"], many(g[\"interpolatedValueTail\"]))), \"children => interpolation(interpolationPartsFrom(children, true))\", undefined, undefined, undefined, [{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"InterpolatedProperty\": _nd(\"InterpolatedProperty\", choice(parser({ trivia: null }, sequence(optional(literal(\"*\")), optional(literal(\"-\")), optional(g[\"InterpolatedPropertyStart\"]), g[\"Interpolation\"], many(choice(g[\"InterpolatedPropertyTail\"], g[\"Interpolation\"])))), parser({ trivia: null }, sequence(literal(\"--\"), optional(choice(g[\"InterpolatedCustomPropertyStart\"], g[\"InterpolatedCustomPropertyDash\"])), g[\"Interpolation\"], many(choice(g[\"InterpolatedCustomPropertyTail\"], g[\"Interpolation\"]))))), \"children => interpolation(interpolationPartsFrom(children, false))\", undefined, undefined, undefined, [{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"Keyword\": _nd(\"Keyword\", g[\"ValueIdentifier\"], \"children => keyword(requireToken(children[0]).value)\", undefined, undefined, undefined, [{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"Percentage\": token(parser({ trivia: null }, sequence(g[\"NumberToken\"], literal(\"%\")))),\n \"Dimension\": _nd(\"Dimension\", parser({ trivia: null }, sequence(g[\"NumberToken\"], optional(g[\"DimensionUnit\"]))), \"(children, _fields, span) => {\\n const numberText = requireToken(children[0]).value;\\n const unit = children.length > 1 ? requireToken(children[1]).value : '';\\n return dimension(Number(numberText), unit, `${numberText}${unit}`);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"dimension\",\"source\":\"@jesscss/core/ast\",\"imported\":\"dimension\"}]),\n \"EscapeValue\": _nd(\"EscapeValue\", regex(\"(?:\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))+\", \"\"), \"children => any(requireToken(children[0]).value)\", undefined, undefined, undefined, [{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"PagePseudo\": _nd(\"PagePseudo\", sequence(literal(\":\"), g[\"ValueIdentifier\"]), \"children => any(`:${requireToken(children[1]).value}`)\", undefined, undefined, undefined, [{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"DoubledQuoteArgument\": _nd(\"DoubledQuoteArgument\", sequence(literal(\"\\\"\\\"\"), regex(\"[^\\\"()]+\", \"\"), literal(\"\\\"\\\"\")), \"children => any(`\\\"\\\"${requireToken(children[1]).value}\\\"\\\"`)\", undefined, undefined, undefined, [{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"FunctionArgument\": _nd(\"FunctionArgument\", choice(sequence(peek(parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(_s8, literal(\"(\")))), g[\"FunctionCondition\"]), g[\"FunctionKeywordArgument\"], g[\"FunctionScalarArgument\"], g[\"ArgumentValueSequence\"], g[\"FunctionAssignmentArgument\"], g[\"FunctionCondition\"]), \"(children) => {\\n const named = children.find(isLessCallArg);\\n if (named !== undefined) {\\n return named;\\n }\\n const value = children.find(isLessValueSlotValue);\\n if (value === undefined) {\\n throw new TypeError('Less function argument lost its value.');\\n }\\n return value;\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessCallArg\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessCallArg\"},{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"}]),\n \"FunctionScalarArgument\": _nd(\"FunctionScalarArgument\", sequence(g[\"MathSum\"], not(regex(\"[^,;)]|$\", \"\"))), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"FunctionAssignmentArgument\": _nd(\"FunctionAssignmentArgument\", parser({ trivia: null }, sequence(field(\"key\", regex(\"[-_a-zA-Z\\\\u0080-\\\\uffff][-\\\\w\\\\u0080-\\\\uffff]*(?=[ \\\\t\\\\n\\\\r\\\\f]*=(?![=<>~]))\", \"\")), regex(\"[ \\\\t\\\\n\\\\r\\\\f]*=[ \\\\t\\\\n\\\\r\\\\f]*\", \"\"), g[\"ArgumentValueSequence\"])), \"(children, fields) => {\\n const value = children.find(isLessValueSlotValue);\\n if (value === undefined) {\\n throw new TypeError('Less function assignment argument lost its value.');\\n }\\n /*\\n * §12.3 row 2: the pair is VERBATIM BYTES, not a node. Resolving `@x` in\\n * `alpha(opacity=@x)` has no utility — the construct is dropped from\\n * Less v5 — so this keeps the authored spelling and stops pretending the\\n * value is live. The `=` re-emits unspaced, exactly as `Assignment` did.\\n */\\n return any(`${staticText(requireField(fields, 'key').value)}=${mixinArgumentSource(value)}`);\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"},{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"staticText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticText\"},{\"local\":\"requireField\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireField\"},{\"local\":\"mixinArgumentSource\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentSource\"}]),\n \"FunctionKeywordArgument\": _nd(\"FunctionKeywordArgument\", parser({ trivia: null }, sequence(field(\"key\", regex(\"@[-_a-zA-Z\\\\u0080-\\\\uffff][-\\\\w\\\\u0080-\\\\uffff]*(?=[ \\\\t\\\\n\\\\r\\\\f]*:(?!:))\", \"\")), regex(\"[ \\\\t\\\\n\\\\r\\\\f]*:[ \\\\t\\\\n\\\\r\\\\f]*\", \"\"), g[\"ArgumentValueSequence\"])), \"(children, fields) => {\\n const value = children.find(isLessValueSlotValue);\\n if (value === undefined) {\\n throw new TypeError('Less function keyword argument lost its value.');\\n }\\n return callArg(value, staticText(requireField(fields, 'key').value).slice(1));\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"},{\"local\":\"callArg\",\"source\":\"@jesscss/core/ast\",\"imported\":\"callArg\"},{\"local\":\"staticText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticText\"},{\"local\":\"requireField\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireField\"}]),\n \"ArgumentValueSequence\": _nd(\"FunctionValueSequence\", parser({ trivia: null }, sequence(g[\"valuePiece\"], many(choice(sequence(not(_s13), _s14), _s15)), not(_s13))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => valuePieceReducerWithTrivia(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"valuePieceReducerWithTrivia\",\"source\":\"./grammar-helpers.js\",\"imported\":\"valuePieceReducerWithTrivia\"}], true),\n \"FunctionCondition\": _nd(\"FunctionCondition\", g[\"FunctionConditionOr\"], \"(children) => {\\n const fact = children.find(isFunctionConditionFact);\\n if (fact === undefined) {\\n throw new TypeError('Less function condition lost its fact.');\\n }\\n return condition(fact.guard, fact.src);\\n }\", undefined, undefined, undefined, [{\"local\":\"isFunctionConditionFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isFunctionConditionFact\"},{\"local\":\"condition\",\"source\":\"@jesscss/core/ast\",\"imported\":\"condition\"}]),\n \"FunctionConditionOr\": _nd(\"FunctionConditionOr\", sequence(g[\"FunctionConditionAnd\"], many(sequence(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*or(?![-_a-zA-Z0-9\\\\u0080-\\\\uffff])[ \\\\t\\\\n\\\\r\\\\f]*\", \"i\"), g[\"FunctionConditionAnd\"]))), \"children => foldFunctionCondition('or', children)\", undefined, undefined, undefined, [{\"local\":\"foldFunctionCondition\",\"source\":\"./grammar-helpers.js\",\"imported\":\"foldFunctionCondition\"}]),\n \"FunctionConditionAnd\": _nd(\"FunctionConditionAnd\", sequence(g[\"FunctionConditionTerm\"], many(sequence(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*and(?![-_a-zA-Z0-9\\\\u0080-\\\\uffff])[ \\\\t\\\\n\\\\r\\\\f]*\", \"i\"), g[\"FunctionConditionTerm\"]))), \"children => foldFunctionCondition('and', children)\", undefined, undefined, undefined, [{\"local\":\"foldFunctionCondition\",\"source\":\"./grammar-helpers.js\",\"imported\":\"foldFunctionCondition\"}]),\n \"FunctionConditionTerm\": _nd(\"FunctionConditionTerm\", sequence(optional(_s8), choice(g[\"FunctionConditionParen\"], g[\"FunctionConditionOperand\"]), optional(sequence(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*(?:>=|<=|=>|=<|=~|[<>=])[ \\\\t\\\\n\\\\r\\\\f]*\", \"\"), choice(g[\"FunctionConditionParen\"], g[\"FunctionConditionOperand\"])))), \"(children) => {\\n const nested = children.filter(isFunctionConditionFact);\\n const values = children.filter(isValueNode);\\n const operator = children.map(guardOperatorText).find((value) => value !== null)?.trim();\\n const left = nested[0] ?? (values[0] === undefined ? undefined : { guard: lessTruth(values[0]), src: functionConditionSource(values[0]), grouped: false, hasComparison: false, bare: values[0] });\\n const right = nested[1] ?? (values.length > 1 && values[1] !== undefined ? { guard: lessTruth(values[1]), src: functionConditionSource(values[1]), grouped: false, hasComparison: false, bare: values[1] } : undefined);\\n if (left === undefined) {\\n throw new TypeError('Less function condition term lost its left operand.');\\n }\\n let guard;\\n let src;\\n if (operator === undefined) {\\n guard = left.guard;\\n src = left.src;\\n } else {\\n if (right === undefined) {\\n throw new TypeError('Less comparison requires value operands.');\\n }\\n if (nested.length === 0 && children.some(child => typeof child === 'object' && child !== null && 'value' in child && child.value === 'not')) {\\n throw new TypeError('Less function condition `not` requires a grouped condition operand.');\\n }\\n const leftValue = left.bare ?? condition(left.guard, left.src);\\n const rightValue = right.bare ?? condition(right.guard, right.src);\\n guard = { g: 'cmp', op: operator, left: leftValue, right: rightValue };\\n src = `${left.src} ${operator} ${right.src}`;\\n }\\n const negated = children.some(child => typeof child === 'object' && child !== null && 'value' in child && child.value === 'not');\\n const hasComparison = operator !== undefined || left.hasComparison || right?.hasComparison === true;\\n const grouped = operator === undefined && left.grouped;\\n return negated\\n ? { guard: { g: 'not', inner: guard }, src: `not(${src})`, grouped, hasComparison }\\n : { guard, src, grouped, hasComparison };\\n }\", undefined, undefined, undefined, [{\"local\":\"isFunctionConditionFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isFunctionConditionFact\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"guardOperatorText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"guardOperatorText\"},{\"local\":\"lessTruth\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessTruth\"},{\"local\":\"functionConditionSource\",\"source\":\"./grammar-helpers.js\",\"imported\":\"functionConditionSource\"},{\"local\":\"condition\",\"source\":\"@jesscss/core/ast\",\"imported\":\"condition\"}]),\n \"FunctionConditionOperand\": _nd(\"FunctionConditionOperand\", oneOrMore(sequence(not(_s13), g[\"TopSum\"])), \"(children) => {\\n const values = children.filter(isValueNode);\\n if (values.length === 0) {\\n throw new TypeError('Less function condition lost its operand.');\\n }\\n return values.length === 1 ? values[0] : spaced(values);\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"}]),\n \"FunctionConditionParen\": _nd(\"FunctionConditionParen\", sequence(literal(\"(\"), g[\"FunctionConditionOr\"], literal(\")\")), \"(children) => {\\n const inner = children.find(isFunctionConditionFact);\\n if (inner === undefined) {\\n throw new TypeError('Less function condition lost its parenthesized operand.');\\n }\\n return { guard: inner.guard, src: `(${inner.src})`, grouped: true, hasComparison: inner.hasComparison };\\n }\", undefined, undefined, undefined, [{\"local\":\"isFunctionConditionFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isFunctionConditionFact\"}]),\n \"Call\": _nd(\"Call\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(_s16, g[\"FunctionArguments\"], literal(\")\"))), \"(children, fields, span, rawChildren, triviaLog, state) =>\\n functionCallFromChildren(children, fields, span, triviaLog, state, rawChildren)\", undefined, undefined, undefined, [{\"local\":\"functionCallFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"functionCallFromChildren\"}]),\n \"CallArgumentFunction\": _nd(\"Call\", sequence(routed(_s16), optional(sequence(sepBy(g[\"CallArgumentValue\"], field(\"separator\", regex(\"[;,][ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), { min: 1 }), optional(field(\"trailingSeparator\", parser({ trivia: null }, regex(\"[;,][ \\\\t\\\\n\\\\r\\\\f]*\", \"\")))))), literal(\")\")), \"argumentFunctionFromChildren\", { buildArity: 3 }, undefined, \"function argumentFunctionFromChildren(\\n children: readonly unknown[],\\n fields: FieldMap | undefined,\\n span: SourceSpan\\n): FunctionCall {\\n const name = functionNameFromOpener(children[0]);\\n const args = children.slice(1, -1).filter(\\n (child): child is ValueSlot | LessCallArg => isLessCallArg(child) || isLessValueSlotValue(child)\\n );\\n return callWithLayout(name, args, separatorsFromFields(fields), hasField(fields, 'trailingSeparator'), span);\\n}\"),\n \"FormatFunction\": _nd(\"Call\", sequence(parser({ trivia: null }, literal(\"%(\")), optional(sequence(not(literal(\"{\")), g[\"ValueSequence\"])), many(parser({ trivia: null }, sequence(regex(\",[ \\\\t\\\\n\\\\r\\\\f]*\", \"\"), not(literal(\"{\")), g[\"ValueSequence\"]))), literal(\")\")), \"children => funcCall('%', children.slice(1, -1).filter(isLessValueSlotValue))\", undefined, undefined, undefined, [{\"local\":\"funcCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"funcCall\"},{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"}]),\n \"CallArgumentValue\": _nd(\"CallArgumentValue\", choice(attempt(g[\"FlatMixinCall\"]), g[\"ValueBlock\"], g[\"ValueSequence\"]), \"(children) => {\\n const value = children[0];\\n if (isMixinCall(value) || isLessValueSlotValue(value)) {\\n return value;\\n }\\n throw new TypeError('Less call argument must reduce to a value or typed mixin call.');\\n }\", undefined, undefined, undefined, [{\"local\":\"isMixinCall\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinCall\"},{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"}]),\n \"FunctionStatement\": _tf(dispatch(_s17, when(\"each(\", g[\"EachFunctionStatement\"], { caseInsensitive: true }), when(matches(/^(?!(?:url|calc)\\($).+\\($/i), choice(_nd(\"Call\", sequence(g[\"CallArgumentFunction\"], literal(\";\")), \"(children) => {\\n const call = children.find(isFunctionCall);\\n if (call === undefined) {\\n throw new TypeError('Less function statement lost its call fact.');\\n }\\n return lowerLogicalCallStatement(call);\\n }\", undefined, undefined, undefined, [{\"local\":\"isFunctionCall\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isFunctionCall\"},{\"local\":\"lowerLogicalCallStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lowerLogicalCallStatement\"}]), _tf(sequence(_nd(\"Call\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(routed(), g[\"FunctionArguments\"], literal(\")\"))), \"(children, fields, span, rawChildren, triviaLog, state) =>\\n functionCallFromChildren(children, fields, span, triviaLog, state, rawChildren)\", undefined, undefined, undefined, [{\"local\":\"functionCallFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"functionCallFromChildren\"}]), parser({ trivia: null }, peek(sequence(optional(g[\"whitespace\"]), choice(literal(\"}\"), not(regex(\"[\\\\s\\\\S]\", \"\"))))))), \"([call]) => isStatement(call) ? call : ''\")))), \"([, statement]) => statement\"),\n \"Value\": _nd(\"Value\", choice(attempt(g[\"MixinReference\"]), g[\"InterpolatedValue\"], g[\"EscapedQuoted\"], g[\"Quoted\"], _nd(\"BacktickJavaScript\", parser({ trivia: null }, sequence(literal(\"`\"), regex(\"(?:[^`\\\\\\\\]|\\\\\\\\[\\\\s\\\\S])*\", \"\"), literal(\"`\"))), \"(_children, _fields, span) => {\\n throw new LessInlineJavaScriptError(span.start, span.end);\\n }\", undefined, undefined, undefined, [{\"local\":\"LessInlineJavaScriptError\",\"source\":\"./parse-error.js\",\"imported\":\"LessInlineJavaScriptError\"}]), g[\"IndirectVariableReference\"], g[\"VariableReferenceChain\"], g[\"PropertyReference\"], g[\"CustomPropertyValue\"], g[\"Dimension\"], g[\"Color\"], g[\"FormatFunction\"], dispatch(_s17, when(\"url(\", choice(_nd(\"Url\", sequence(routed(), choice(g[\"UrlInterpolation\"], g[\"VariableReference\"]), literal(\")\")), \"children => url(requireValueNode(children[1]))\", undefined, undefined, undefined, [{\"local\":\"url\",\"source\":\"@jesscss/core/ast\",\"imported\":\"url\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]), _s18), { caseInsensitive: true }), when(\"calc(\", g[\"CalcFunction\"], { caseInsensitive: true }), when(endsWith(\"(\"), g[\"GenericFunction\"]), otherwise(_nd(\"Identifier\", parser({ trivia: null }, sequence(routed(), many(g[\"interpolatedValueTail\"]))), \"(children) => {\\n if (children.some(isInterpolationFact)) {\\n return interpolation(interpolationPartsFrom(children, true));\\n }\\n return keyword(children.map(child => requireToken(child).value).join(''));\\n }\", undefined, undefined, undefined, [{\"local\":\"isInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterpolationFact\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]))), g[\"SelectorCapture\"], g[\"EscapedParen\"], g[\"QueryColonFeature\"], g[\"Paren\"], _nd(\"GridLineName\", parser({ trivia: null }, sequence(literal(\"[\"), g[\"Keyword\"], literal(\"]\"))), \"(children) => {\\n const name = requireValueNode(children[1]);\\n if (name.type !== 'Keyword') {\\n throw new TypeError('Less grid line name requires a keyword fact.');\\n }\\n return any(`[${name.src}]`);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"}]), g[\"EscapeValue\"], _nd(\"PercentEscape\", g[\"PercentEscapeToken\"], \"children => any(requireToken(children[0]).value)\", undefined, undefined, undefined, [{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])), \"children => requireValueNode(children.find(isValueNode))\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"}]),\n \"SelectorCapture\": _nd(\"SelectorCapture\", sequence(parser({ trivia: null }, literal(\"*[\")), parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, g[\"PseudoArgumentSelector\"]), parser({ trivia: null }, literal(\"]\"))), \"(children) => {\\n const selector = requireSelectorList(children[1]);\\n const branches = selector.selectors.map(selectorBranchCanonical);\\n return selectorCapture(branches, `*[${branches.join(', ')}]`);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireSelectorList\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSelectorList\"},{\"local\":\"selectorBranchCanonical\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selectorBranchCanonical\"},{\"local\":\"selectorCapture\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selectorCapture\"}]),\n \"MathAtom\": _nd(\"MathAtom\", g[\"MathUnary\"], \"children => requireValueNode(children[0])\", { collapse: true }, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"MathUnary\": _nd(\"MathUnary\", sequence(optional(parser({ trivia: null }, regex(\"-(?=[(@])\", \"\"))), g[\"Value\"]), \"(children, _fields, _span, _rawChildren, _triviaLog, state) => children.length === 1\\n ? requireValueNode(children[0])\\n : operation(\\n '*',\\n dimension(-1, '', '-1'),\\n requireValueNode(children[1]),\\n false,\\n lessMathOutsideParens(state, '*')\\n )\", { collapse: true }, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"operation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"operation\"},{\"local\":\"dimension\",\"source\":\"@jesscss/core/ast\",\"imported\":\"dimension\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"}], true),\n \"MathProduct\": _nd(\"MathProduct\", parser({ trivia: null }, sequence(g[\"MathAtom\"], many(sequence(_lf(parser({ trivia: null }, sequence(optional(_s23), keywords([\"*\",\"/\",\"%\"], { caseInsensitive: false }), optional(_s23))), \"children => children[1]\"), g[\"MathAtom\"])))), \"lessFoldOperation\", { collapse: true, buildArity: 6 }, undefined, \"function lessFoldOperation(\\n children: readonly unknown[],\\n _fields: FieldMap | undefined,\\n _span: Span,\\n rawChildren: readonly unknown[],\\n _triviaLog: readonly number[],\\n state: unknown\\n): ValueNode {\\n const first = children.find(isValueNode);\\n if (first === undefined) {\\n throw new TypeError('Less arithmetic grammar produced no operand.');\\n }\\n const firstIndex = children.indexOf(first);\\n const firstRaw = rawChildren[firstIndex];\\n // In AST mode Parseman supplies the original spanned children here. That\\n // gives each folded operation its authored range without retaining one span\\n // per standalone dimension. A synthetic child can still contribute an\\n // existing provenance fact when it has one.\\n const firstSpan = isSpannedToken(firstRaw) ? firstRaw.span : sourceSpanOf(first);\\n let result = first;\\n const start = firstSpan?.start;\\n for (let index = children.indexOf(first) + 1; index < children.length; index += 2) {\\n const operatorToken = children[index];\\n const right = children[index + 1];\\n if (operatorToken === undefined || !isValueNode(right)) {\\n throw new TypeError('Less arithmetic grammar lost an operator operand.');\\n }\\n const rightRaw = rawChildren[index + 1];\\n const rightSpan = isSpannedToken(rightRaw) ? rightRaw.span : sourceSpanOf(right);\\n const operator = requireTerminalText(operatorToken).trim();\\n const folded = operation(operator, result, right, false, lessMathOutsideParens(state, operator));\\n result = start === undefined || rightSpan === undefined\\n ? folded\\n : withSourceSpan(folded, { start, end: rightSpan.end });\\n }\\n return result;\\n}\"),\n \"MathSum\": _nd(\"MathSum\", parser({ trivia: null }, sequence(g[\"MathProduct\"], many(sequence(_s24, g[\"MathProduct\"])))), \"lessFoldOperation\", { collapse: true, buildArity: 6 }, undefined, \"function lessFoldOperation(\\n children: readonly unknown[],\\n _fields: FieldMap | undefined,\\n _span: Span,\\n rawChildren: readonly unknown[],\\n _triviaLog: readonly number[],\\n state: unknown\\n): ValueNode {\\n const first = children.find(isValueNode);\\n if (first === undefined) {\\n throw new TypeError('Less arithmetic grammar produced no operand.');\\n }\\n const firstIndex = children.indexOf(first);\\n const firstRaw = rawChildren[firstIndex];\\n // In AST mode Parseman supplies the original spanned children here. That\\n // gives each folded operation its authored range without retaining one span\\n // per standalone dimension. A synthetic child can still contribute an\\n // existing provenance fact when it has one.\\n const firstSpan = isSpannedToken(firstRaw) ? firstRaw.span : sourceSpanOf(first);\\n let result = first;\\n const start = firstSpan?.start;\\n for (let index = children.indexOf(first) + 1; index < children.length; index += 2) {\\n const operatorToken = children[index];\\n const right = children[index + 1];\\n if (operatorToken === undefined || !isValueNode(right)) {\\n throw new TypeError('Less arithmetic grammar lost an operator operand.');\\n }\\n const rightRaw = rawChildren[index + 1];\\n const rightSpan = isSpannedToken(rightRaw) ? rightRaw.span : sourceSpanOf(right);\\n const operator = requireTerminalText(operatorToken).trim();\\n const folded = operation(operator, result, right, false, lessMathOutsideParens(state, operator));\\n result = start === undefined || rightSpan === undefined\\n ? folded\\n : withSourceSpan(folded, { start, end: rightSpan.end });\\n }\\n return result;\\n}\"),\n \"TopProduct\": _nd(\"TopProduct\", parser({ trivia: null }, sequence(g[\"MathAtom\"], many(sequence(_s25, g[\"MathAtom\"])))), \"lessFoldOperation\", { collapse: true, buildArity: 6 }, undefined, \"function lessFoldOperation(\\n children: readonly unknown[],\\n _fields: FieldMap | undefined,\\n _span: Span,\\n rawChildren: readonly unknown[],\\n _triviaLog: readonly number[],\\n state: unknown\\n): ValueNode {\\n const first = children.find(isValueNode);\\n if (first === undefined) {\\n throw new TypeError('Less arithmetic grammar produced no operand.');\\n }\\n const firstIndex = children.indexOf(first);\\n const firstRaw = rawChildren[firstIndex];\\n // In AST mode Parseman supplies the original spanned children here. That\\n // gives each folded operation its authored range without retaining one span\\n // per standalone dimension. A synthetic child can still contribute an\\n // existing provenance fact when it has one.\\n const firstSpan = isSpannedToken(firstRaw) ? firstRaw.span : sourceSpanOf(first);\\n let result = first;\\n const start = firstSpan?.start;\\n for (let index = children.indexOf(first) + 1; index < children.length; index += 2) {\\n const operatorToken = children[index];\\n const right = children[index + 1];\\n if (operatorToken === undefined || !isValueNode(right)) {\\n throw new TypeError('Less arithmetic grammar lost an operator operand.');\\n }\\n const rightRaw = rawChildren[index + 1];\\n const rightSpan = isSpannedToken(rightRaw) ? rightRaw.span : sourceSpanOf(right);\\n const operator = requireTerminalText(operatorToken).trim();\\n const folded = operation(operator, result, right, false, lessMathOutsideParens(state, operator));\\n result = start === undefined || rightSpan === undefined\\n ? folded\\n : withSourceSpan(folded, { start, end: rightSpan.end });\\n }\\n return result;\\n}\"),\n \"TopSum\": _nd(\"TopSum\", parser({ trivia: null }, sequence(g[\"TopProduct\"], many(sequence(_s24, g[\"TopProduct\"])))), \"lessFoldOperation\", { collapse: true, buildArity: 6 }, undefined, \"function lessFoldOperation(\\n children: readonly unknown[],\\n _fields: FieldMap | undefined,\\n _span: Span,\\n rawChildren: readonly unknown[],\\n _triviaLog: readonly number[],\\n state: unknown\\n): ValueNode {\\n const first = children.find(isValueNode);\\n if (first === undefined) {\\n throw new TypeError('Less arithmetic grammar produced no operand.');\\n }\\n const firstIndex = children.indexOf(first);\\n const firstRaw = rawChildren[firstIndex];\\n // In AST mode Parseman supplies the original spanned children here. That\\n // gives each folded operation its authored range without retaining one span\\n // per standalone dimension. A synthetic child can still contribute an\\n // existing provenance fact when it has one.\\n const firstSpan = isSpannedToken(firstRaw) ? firstRaw.span : sourceSpanOf(first);\\n let result = first;\\n const start = firstSpan?.start;\\n for (let index = children.indexOf(first) + 1; index < children.length; index += 2) {\\n const operatorToken = children[index];\\n const right = children[index + 1];\\n if (operatorToken === undefined || !isValueNode(right)) {\\n throw new TypeError('Less arithmetic grammar lost an operator operand.');\\n }\\n const rightRaw = rawChildren[index + 1];\\n const rightSpan = isSpannedToken(rightRaw) ? rightRaw.span : sourceSpanOf(right);\\n const operator = requireTerminalText(operatorToken).trim();\\n const folded = operation(operator, result, right, false, lessMathOutsideParens(state, operator));\\n result = start === undefined || rightSpan === undefined\\n ? folded\\n : withSourceSpan(folded, { start, end: rightSpan.end });\\n }\\n return result;\\n}\"),\n \"PreservedDivision\": _nd(\"PreservedDivision\", parser({ trivia: null }, sequence(g[\"TopSum\"], oneOrMore(sequence(field(\"separator\", _s26), g[\"TopSum\"])))), \"(children, fields, _span, _rawChildren, _triviaLog, state) => {\\n /*\\n * The group is preserved bytes exactly when the policy does NOT divide a\\n * bare `/`. Under `math: always` it is not preserved at all, so operands\\n * keep the arithmetic they were built with.\\n */\\n const preserved = !lessMathOutsideParens(state, '/');\\n const slashBoundaries = fields?.separator === undefined\\n ? []\\n : requireFields(fields, 'separator').map((separator) => {\\n if (!isSlashBoundaryFact(separator.value)) {\\n throw new TypeError('Less preserved division produced an invalid slash boundary.');\\n }\\n return separator.value;\\n });\\n const values = children.filter(isValueNode);\\n const parts = [];\\n for (let index = 0; index < values.length; index += 1) {\\n parts.push(preserved ? withoutBareMath(values[index]) : values[index]);\\n if (index < slashBoundaries.length) {\\n parts.push(keyword('/'));\\n }\\n }\\n const separators = slashBoundaries.flatMap(boundary => [boundary.before, boundary.after]);\\n return withValueLayout(\\n spaced(parts),\\n separators.length === parts.length - 1\\n ? separators\\n : Array.from({ length: parts.length - 1 }, () => '')\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"},{\"local\":\"requireFields\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireFields\"},{\"local\":\"isSlashBoundaryFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSlashBoundaryFact\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"withoutBareMath\",\"source\":\"./grammar-helpers.js\",\"imported\":\"withoutBareMath\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"withValueLayout\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withValueLayout\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"}], true),\n \"EscapedParen\": _nd(\"Block\", parser({ trivia: null }, sequence(literal(\"~(\"), g[\"ValueList\"], literal(\")\"))), \"(children, _fields, span) => withSourceSpan(\\n block(requireValueSlot(children[1]), 'paren', true),\\n span\\n )\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"},{\"local\":\"requireValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueSlot\"}]),\n \"Paren\": _nd(\"Block\", parser({ trivia: null }, sequence(literal(\"(\"), optional(trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12))))), g[\"MathSum\"], optional(trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12))))), literal(\")\"))), \"(children, _fields, span) => {\\n const inner = children.find(isValueNode);\\n if (inner === undefined) {\\n throw new TypeError('Less parenthesized math lost its inner value.');\\n }\\n return withSourceSpan(block(inner), span);\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"}]),\n \"ValueSequence\": _nd(\"ValueSequence\", parser({ trivia: null }, sequence(g[\"valuePiece\"], many(choice(_s14, _s15)))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => valuePieceReducerWithTrivia(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"valuePieceReducerWithTrivia\",\"source\":\"./grammar-helpers.js\",\"imported\":\"valuePieceReducerWithTrivia\"}], true),\n \"ValueList\": _nd(\"ValueList\", choice(attempt(sequence(g[\"MixinReference\"], not(choice(_s25, _s24)))), sepBy(g[\"ValueSequence\"], field(\"separator\", regex(\",[ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), { min: 1 })), \"(children, fields, _span, rawChildren, triviaLog, state) => {\\n const referenceValue = children.find(isReference);\\n if (referenceValue !== undefined) {\\n return referenceValue;\\n }\\n return commaListWithTriviaFromChildren(children, fields, triviaLog, state, isLessValueSlotValue, rawChildren);\\n }\", undefined, undefined, undefined, [{\"local\":\"isReference\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isReference\"},{\"local\":\"commaListWithTriviaFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"commaListWithTriviaFromChildren\"},{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"}]),\n \"VariableValue\": _nd(\"VariableValue\", sequence(optional(trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12))))), sepBy(g[\"ValueSequence\"], field(\"separator\", regex(\",[ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), { min: 1 }), optional(sequence(literal(\",\"), optional(trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12)))))))), \"(children, fields, _span, rawChildren, triviaLog, state) =>\\n commaListWithTriviaFromChildren(children, fields, triviaLog, state, isLessValueSlotValue, rawChildren)\", undefined, undefined, undefined, [{\"local\":\"commaListWithTriviaFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"commaListWithTriviaFromChildren\"},{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"}]),\n \"ImportantValue\": _nd(\"ImportantValue\", sequence(g[\"ValueList\"], literal(\"!\"), g[\"ImportantToken\"]), \"children => important(requireValueSlot(children[0]))\", undefined, undefined, undefined, [{\"local\":\"important\",\"source\":\"@jesscss/core/ast\",\"imported\":\"important\"},{\"local\":\"requireValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueSlot\"}]),\n \"ValueListWithPriority\": _nd(\"ValueListWithPriority\", sequence(not(literal(\"{\")), g[\"ValueList\"], optional(sequence(literal(\"!\"), g[\"ImportantToken\"]))), \"(children) => {\\n const value = requireValueSlot(children[0]);\\n return children.some(child => isLessTerminalText(child, '!')) ? important(value) : value;\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueSlot\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"},{\"local\":\"important\",\"source\":\"@jesscss/core/ast\",\"imported\":\"important\"}]),\n \"CustomPropertyName\": _nd(\"CustomPropertyName\", choice(parser({ trivia: null }, sequence(literal(\"--\"), optional(choice(g[\"InterpolatedCustomPropertyStart\"], g[\"InterpolatedCustomPropertyDash\"])), g[\"Interpolation\"], many(choice(g[\"InterpolatedCustomPropertyTail\"], g[\"Interpolation\"])))), g[\"CustomPropertyToken\"]), \"(children) => {\\n if (!children.some(isInterpolationFact)) {\\n return requireToken(children[0]).value;\\n }\\n return interpolation(interpolationPartsFrom(children, false));\\n }\", undefined, undefined, undefined, [{\"local\":\"isInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterpolationFact\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"CustomAtKeywordText\": _nd(\"CustomAtKeywordText\", g[\"CustomValueAtKeyword\"], \"children => requireToken(children[0]).value\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"CustomPart\": choice(g[\"Interpolation\"], g[\"CustomValueOuterContent\"], g[\"CustomValueSingleQuoted\"], g[\"CustomValueDoubleQuoted\"], g[\"CustomGroup\"], g[\"CustomAtKeywordText\"], g[\"VariableReference\"]),\n \"CustomInnerPart\": choice(g[\"Interpolation\"], g[\"CustomValueInnerContent\"], g[\"CustomValueSingleQuoted\"], g[\"CustomValueDoubleQuoted\"], g[\"CustomGroup\"], g[\"CustomAtKeywordText\"], g[\"VariableReference\"]),\n \"CustomGroup\": _nd(\"CustomGroup\", parser({ trivia: classifiedTrivia({ \"blockComment\": regex(\"\\\\/\\\\*(?:[^*]|\\\\*(?!\\\\/))*\\\\*\\\\/\", \"\") }) }, choice(sequence(literal(\"(\"), many(g[\"CustomInnerPart\"]), literal(\")\")), sequence(literal(\"[\"), many(g[\"CustomInnerPart\"]), literal(\"]\")), sequence(literal(\"{\"), many(g[\"CustomInnerPart\"]), literal(\"}\")))), \"children => customPartsFromChildren(children)\", undefined, undefined, undefined, [{\"local\":\"customPartsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"customPartsFromChildren\"}]),\n \"CustomValue\": _nd(\"CustomValue\", parser({ trivia: classifiedTrivia({ \"blockComment\": regex(\"\\\\/\\\\*(?:[^*]|\\\\*(?!\\\\/))*\\\\*\\\\/\", \"\") }) }, many(g[\"CustomPart\"])), \"(children, _fields, span) => withSourceSpan(\\n customValueFromParts(customPartsFromChildren(children)),\\n span\\n )\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"customValueFromParts\",\"source\":\"./grammar-helpers.js\",\"imported\":\"customValueFromParts\"},{\"local\":\"customPartsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"customPartsFromChildren\"}]),\n \"CustomPropertyValue\": _nd(\"CustomPropertyValue\", g[\"CustomPropertyToken\"], \"children => keyword(requireToken(children[0]).value)\", undefined, undefined, undefined, [{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"CustomDeclaration\": _nd(\"CustomDeclaration\", sequence(g[\"CustomPropertyName\"], literal(\":\"), g[\"CustomValue\"], optional(sequence(literal(\"!\"), g[\"ImportantToken\"]))), \"(children) => {\\n const name = children[0];\\n // A custom property name may itself be an `Interpolation`, so choose the final\\n // value child rather than treating the first AST value in this reduction\\n // as the declaration value.\\n const value = children.filter(isValueNode).at(-1);\\n if (name === undefined || value === undefined) {\\n throw new TypeError('Less grammar produced an incomplete custom declaration.');\\n }\\n return decl(\\n isInterp(name) ? name : requireTerminalText(name),\\n lessValueSlot(value),\\n null,\\n children.some(child => isLessTerminalText(child, '!'))\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"decl\",\"source\":\"@jesscss/core/ast\",\"imported\":\"decl\"},{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"},{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"lessValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessValueSlot\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]),\n \"Declaration\": choice(g[\"CustomDeclaration\"], _nd(\"Declaration\", parser({ trivia: null }, sequence(parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(choice(_nd(\"InterpolatedProperty\", sequence(peek(regex(\"[^:;{}]*[@$]\\\\{\", \"\")), g[\"InterpolatedProperty\"]), \"(children) => {\\n const property = children.find(isInterp);\\n if (property === undefined) {\\n throw new TypeError('Less interpolated-property gate lost its interpolation.');\\n }\\n return property;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"}]), g[\"NumericMapKeyToken\"], g[\"DeclarationPropertyToken\"]), optional(sequence(choice(literal(\"+_\"), literal(\"+\")))), literal(\":\"))), parser({ trivia: null }, sequence(field(\"valueGap\", regex(\"[ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), optional(g[\"ValueListWithPriority\"]))))), \"(children, fields, span) => {\\n // Property, delimiter, and value are independently recognized grammar\\n // children; AST construction does not split or reclassify authored text.\\n const rawName = children[0];\\n // Parseman's optional branch is transparent when absent. Find the value\\n // only after the property delimiter, because an interpolated property\\n // name is itself an `Interpolation` value node.\\n const mergeToken = children.find(child => isToken(child) && (child.value === '+' || child.value === '+_'));\\n const colonIndex = children.findIndex(child => isLessTerminalText(child, ':'));\\n if (colonIndex < 0) {\\n throw new TypeError('Less grammar produced no declaration delimiter.');\\n }\\n const valueChild = children.slice(colonIndex + 1).find(isLessValueSlotValue);\\n const value = valueChild === undefined ? any('') : requireValueSlot(valueChild);\\n const merge = mergeToken === undefined ? null : requireToken(mergeToken).value === '+_' ? ' ' : ',';\\n const valueGap = fields?.valueGap === undefined ? '' : requireTerminalText(requireField(fields, 'valueGap').value);\\n // A lone line break after `:` is ordinary parser layout and canonicalizes\\n // back to `: value`. Preserve the declaration break only when the value\\n // itself carries multiline separator facts (grid-area style output).\\n const layout = Array.isArray(value) || isSequence(value) ? valueLayoutOf(value) : undefined;\\n const valueOnNewLine = (valueGap.includes('\\\\n') || valueGap.includes('\\\\r'))\\n && layout?.some(separator => separator.includes('\\\\n') || separator.includes('\\\\r')) === true;\\n if (merge !== null && merge !== ',' && merge !== ' ') {\\n throw new TypeError('Less grammar produced an invalid declaration merge modifier.');\\n }\\n const node = !Array.isArray(value) && isValueNode(value) && value.type === 'Important'\\n ? decl(isInterp(rawName) ? rawName : requireToken(rawName).value, lessValueSlot(value.value), merge, true, valueOnNewLine)\\n : decl(isInterp(rawName) ? rawName : requireToken(rawName).value, Array.isArray(value) ? value : lessValueSlot(value), merge, false, valueOnNewLine);\\n return withSourceSpan(node, span);\\n }\", undefined, undefined, undefined, [{\"local\":\"isToken\",\"source\":\"@jesscss/core/ast\",\"imported\":\"isToken\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"},{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"},{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"requireValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueSlot\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"requireField\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireField\"},{\"local\":\"isSequence\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSequence\"},{\"local\":\"valueLayoutOf\",\"source\":\"@jesscss/core/ast\",\"imported\":\"valueLayoutOf\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"decl\",\"source\":\"@jesscss/core/ast\",\"imported\":\"decl\"},{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"},{\"local\":\"lessValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessValueSlot\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"}])),\n \"ClassIdStatement\": _nd(\"Statement\", sequence(g[\"ClassIdSelectorPrefix\"], choice(_nd(\"MixinStatement\", sequence(g[\"MixinInterior\"], choice(attempt(_nd(\"MixinDefinition\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(literal(\")\"), choice(sequence(g[\"MixinGuard\"], optional(regex(\"(?:(?:[ \\\\t\\\\n\\\\r\\\\f]+)|(?:\\\\/\\\\/[^\\\\n\\\\r]*)|(?:\\\\/\\\\*(?:[^*]|\\\\*(?!\\\\/))*\\\\*\\\\/))+\", \"\")), literal(\"{\")), literal(\"{\")), g[\"blockBody\"], optional(g[\"Call\"]), literal(\"}\"), optional(literal(\";\")))), \"(children, _fields, _span, rawChildren) => {\\n const bodySpan = bodySpanFromRaw(rawChildren);\\n return {\\n params: [],\\n ...(children.find(isMixinGuard) === undefined ? {} : { guard: children.find(isMixinGuard) }),\\n rules: children.filter(isStatement),\\n ...(bodySpan === undefined ? {} : { bodySpan })\\n };\\n }\", undefined, undefined, undefined, [{\"local\":\"bodySpanFromRaw\",\"source\":\"@jesscss/core/ast\",\"imported\":\"bodySpanFromRaw\"},{\"local\":\"isMixinGuard\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinGuard\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"}])), _nd(\"MixinCall\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(literal(\")\"), not(_s29), optional(literal(\"!important\")), optional(literal(\";\")))), \"children => ({\\n args: [],\\n important: children.some(child => isLessTerminalText(child, '!important'))\\n })\", undefined, undefined, undefined, [{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]))), \"(children) => {\\n const interior = children.find((value) =>\\n typeof value === 'object' && value !== null && 'items' in value && 'separators' in value\\n );\\n if (interior === undefined) {\\n throw new TypeError('Less mixin statement lost its parenthesized interior.');\\n }\\n const definition = children.find(isMixinDefinitionFact);\\n if (definition !== undefined) {\\n return { ...definition, params: mixinParamsFromInterior(interior) };\\n }\\n const call = children.find(isMixinCallFact);\\n if (call === undefined) {\\n throw new TypeError('Less mixin statement lost its continuation.');\\n }\\n return { ...call, args: mixinCallArgsFromInterior(interior) };\\n }\", undefined, undefined, undefined, [{\"local\":\"isMixinDefinitionFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinDefinitionFact\"},{\"local\":\"mixinParamsFromInterior\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinParamsFromInterior\"},{\"local\":\"isMixinCallFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinCallFact\"},{\"local\":\"mixinCallArgsFromInterior\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinCallArgsFromInterior\"}]), _nd(\"MixinCall\", sequence(optional(literal(\"!important\")), literal(\";\")), \"children => ({ important: children.some(child => isLessTerminalText(child, '!important')) })\", undefined, undefined, undefined, [{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]), _nd(\"Ruleset\", sequence(_s30, many(g[\"SelectorBranchTail\"]), optional(g[\"MixinGuard\"]), literal(\"{\"), _s33, optional(g[\"Call\"]), literal(\"}\"), optional(literal(\";\"))), \"(children, _fields, _span, rawChildren) => {\\n const bodySpan = bodySpanFromRaw(rawChildren);\\n return {\\n firstExtensions: children\\n .filter(Array.isArray)\\n .flatMap(values => values.filter(isExtendTargetFact)),\\n branches: children.filter(isSelectorBranchFact),\\n selectorEnd: requiredTokenStart(rawChildren, '{'),\\n ...(children.find(isMixinGuard) === undefined ? {} : { guard: children.find(isMixinGuard) }),\\n rules: children.filter(isStatement),\\n extensions: children.filter(isBodyExtendFact).flatMap(fact => fact.bodyExtensions),\\n ...(bodySpan === undefined ? {} : { bodySpan }),\\n ...(hasRulesetTerminator(rawChildren) ? { terminated: true } : {})\\n };\\n }\", undefined, undefined, undefined, [{\"local\":\"bodySpanFromRaw\",\"source\":\"@jesscss/core/ast\",\"imported\":\"bodySpanFromRaw\"},{\"local\":\"isExtendTargetFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isExtendTargetFact\"},{\"local\":\"isSelectorBranchFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSelectorBranchFact\"},{\"local\":\"requiredTokenStart\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requiredTokenStart\"},{\"local\":\"isMixinGuard\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinGuard\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"},{\"local\":\"isBodyExtendFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isBodyExtendFact\"},{\"local\":\"hasRulesetTerminator\",\"source\":\"./grammar-helpers.js\",\"imported\":\"hasRulesetTerminator\"}]))), \"(children, _fields, span) => {\\n const prefix = children.find(isSelectorBranchFact);\\n if (prefix === undefined) {\\n throw new TypeError('Less class/id statement lost its selector prefix.');\\n }\\n const definition = children.find(isMixinDefinitionFact);\\n if (definition !== undefined) {\\n const node = mixinDef(\\n mixinDefinitionNameFromSelectorBranch(prefix.selector),\\n [...definition.params],\\n [...definition.rules],\\n definition.guard\\n );\\n return withSourceSpan(\\n definition.bodySpan === undefined ? node : withBodySpan(node, definition.bodySpan),\\n span\\n );\\n }\\n const call = children.find(isMixinCallFact);\\n if (call !== undefined) {\\n return mixinCallFromSelectorBranch(prefix.selector, call.args, call.important, span);\\n }\\n const bare = children.find(isBareMixinCallFact);\\n if (bare !== undefined) {\\n return mixinCallFromSelectorBranch(prefix.selector, [], bare.important, span);\\n }\\n const ruleset = children.find(isRulesetTailFact);\\n if (ruleset === undefined) {\\n throw new TypeError('Less class/id statement lost its continuation.');\\n }\\n const prefixSpan = sourceSpanOf(prefix.selector);\\n const guardSpan = ruleset.guard === undefined ? undefined : sourceSpanOf(ruleset.guard);\\n const selector = prefixSpan === undefined\\n ? selist(prefix.selector, ...ruleset.branches.map(branch => branch.selector))\\n : withSourceSpan(\\n selist(prefix.selector, ...ruleset.branches.map(branch => branch.selector)),\\n { start: prefixSpan.start, end: guardSpan?.start ?? ruleset.selectorEnd }\\n );\\n const extensions = [\\n ...ruleset.firstExtensions.map(target => ({\\n target: target.target,\\n partial: target.partial,\\n subject: selist(prefix.selector)\\n })),\\n ...ruleset.branches.flatMap(branch => branch.extensions),\\n ...ruleset.extensions\\n ];\\n const node = rule(\\n selector,\\n [...ruleset.rules],\\n extensions.length === 0 ? undefined : extensions,\\n ruleset.guard\\n );\\n const withBody = ruleset.bodySpan === undefined ? node : withBodySpan(node, ruleset.bodySpan);\\n return ruleset.terminated === true ? withSourceSpan(withBody, span) : withBody;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isSelectorBranchFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSelectorBranchFact\"},{\"local\":\"isMixinDefinitionFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinDefinitionFact\"},{\"local\":\"mixinDef\",\"source\":\"@jesscss/core/ast\",\"imported\":\"mixinDef\"},{\"local\":\"mixinDefinitionNameFromSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinDefinitionNameFromSelectorBranch\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"withBodySpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withBodySpan\"},{\"local\":\"isMixinCallFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinCallFact\"},{\"local\":\"mixinCallFromSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinCallFromSelectorBranch\"},{\"local\":\"isBareMixinCallFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isBareMixinCallFact\"},{\"local\":\"isRulesetTailFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isRulesetTailFact\"},{\"local\":\"sourceSpanOf\",\"source\":\"@jesscss/core/ast\",\"imported\":\"sourceSpanOf\"},{\"local\":\"selist\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selist\"},{\"local\":\"rule\",\"source\":\"@jesscss/core/ast\",\"imported\":\"rule\"}]),\n \"MixinArgumentGroup\": _nd(\"MixinArgumentGroup\", sequence(_s37, oneOrMore(sequence(literal(\",\"), _s37))), \"(children) => {\\n const args = children.filter(isMixinCallArgument);\\n return callArg(list(args.map(argument => requireValueSlot(argument.value)), ','));\\n }\", undefined, undefined, undefined, [{\"local\":\"isMixinCallArgument\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinCallArgument\"},{\"local\":\"callArg\",\"source\":\"@jesscss/core/ast\",\"imported\":\"callArg\"},{\"local\":\"list\",\"source\":\"@jesscss/core/ast\",\"imported\":\"list\"},{\"local\":\"requireValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueSlot\"}]),\n \"MixinArguments\": _nd(\"MixinArguments\", choice(attempt(sequence(_s38, literal(\";\"), optional(sequence(sepBy(_s38, literal(\";\"), { min: 1 }), optional(literal(\";\")))))), sequence(sepBy(_s39, literal(\",\"), { min: 1 }), optional(literal(\";\")))), \"children => mixinArgumentsFromChildren(children)\", undefined, undefined, undefined, [{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"}]),\n \"MixinInterior\": _nd(\"MixinInterior\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(literal(\"(\"), optional(sepBy(field(\"item\", choice(_nd(\"MixinBinding\", sequence(g[\"VariableReference\"], choice(literal(\"...\"), sequence(literal(\":\"), g[\"CallArgumentValue\"]), peek(choice(literal(\",\"), literal(\";\"), literal(\")\"))))), \"(children) => {\\n const reference = children[0];\\n if (!isVarRef(reference)) {\\n throw new TypeError('Less mixin binding lost its variable reference.');\\n }\\n const defaultValue = children.slice(1).find(value => isLessValueSlotValue(value) || isMixinCall(value));\\n return {\\n kind: 'binding',\\n reference,\\n ...(defaultValue === undefined ? {} : { default: requireMixinCallArgumentValue(defaultValue) }),\\n rest: children.some(child => isLessTerminalText(child, '...'))\\n };\\n }\", undefined, undefined, undefined, [{\"local\":\"isVarRef\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isVarRef\"},{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"},{\"local\":\"isMixinCall\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinCall\"},{\"local\":\"requireMixinCallArgumentValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireMixinCallArgumentValue\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]), _nd(\"MixinRestParam\", literal(\"...\"), \"() => ({ kind: 'anonymous-rest' })\"), _nd(\"MixinArgument\", g[\"CallArgumentValue\"], \"children => ({ kind: 'positional', value: requireMixinCallArgumentValue(children[0]) })\", undefined, undefined, undefined, [{\"local\":\"requireMixinCallArgumentValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireMixinCallArgumentValue\"}]))), field(\"separator\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, _s40)), { min: 1 })), optional(field(\"trailingSeparator\", choice(literal(\",\"), literal(\";\")))))), \"(_children, fields) => ({\\n items: fields?.item === undefined\\n ? []\\n : requireFields(fields, 'item').map(item => requireMixinInteriorItem(item.value)),\\n separators: fields?.separator === undefined\\n ? []\\n : requireFields(fields, 'separator').map((separator) => {\\n const value = requireTerminalText(separator.value);\\n if (value !== ',' && value !== ';') {\\n throw new TypeError('Less mixin interior produced an invalid separator.');\\n }\\n return value;\\n }),\\n ...(fields?.trailingSeparator === undefined\\n ? {}\\n : (() => {\\n const value = requireTerminalText(requireField(fields, 'trailingSeparator').value);\\n if (value !== ',' && value !== ';') {\\n throw new TypeError('Less mixin interior produced an invalid trailing separator.');\\n }\\n return { trailingSeparator: value };\\n })())\\n })\", undefined, undefined, undefined, [{\"local\":\"requireFields\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireFields\"},{\"local\":\"requireMixinInteriorItem\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireMixinInteriorItem\"},{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"requireField\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireField\"}]),\n \"ClassIdSelectorPrefix\": _nd(\"SelectorBranch\", sequence(_nd(\"CompoundSelector\", parser({ trivia: classifiedTrivia({ \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(_s41, many(_s42))), \"children => lessSelectorTermFromTokens(children.map((child) => {\\n return isLessSimpleToken(child) ? child : simpleSelector(requireToken(child).value);\\n }))\", undefined, undefined, undefined, [{\"local\":\"lessSelectorTermFromTokens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessSelectorTermFromTokens\"},{\"local\":\"isLessSimpleToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSimpleToken\"},{\"local\":\"simpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"simpleSelector\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), many(sequence(not(_s29), optional(_s54), g[\"CompoundSelector\"]))), \"(children, _fields, span) => ({\\n selector: withSourceSpan(selectorBranchOf(complexSegmentsFrom(children)), span),\\n extensions: []\\n })\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"selectorBranchOf\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selectorBranchOf\"},{\"local\":\"complexSegmentsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"complexSegmentsFrom\"}]),\n \"SelectorBranchTail\": _nd(\"SelectorBranch\", sequence(literal(\",\"), _s55), \"(children) => {\\n const branch = children.find(isSelectorBranchFact);\\n if (branch === undefined) {\\n throw new TypeError('Less selector list tail lost its selector branch.');\\n }\\n return branch;\\n }\", undefined, undefined, undefined, [{\"local\":\"isSelectorBranchFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSelectorBranchFact\"}]),\n \"FlatMixinCall\": _nd(\"MixinCall\", sequence(_s41, literal(\"(\"), optional(g[\"MixinArguments\"]), literal(\")\")), \"children => mixinCall(requireToken(children[0]).value, mixinArgumentsFromChildren(children))\", undefined, undefined, undefined, [{\"local\":\"mixinCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"mixinCall\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"}]),\n \"NamespacedMixinCall\": _nd(\"MixinCall\", sequence(_s41, oneOrMore(_s58), literal(\"(\"), optional(g[\"MixinArguments\"]), literal(\")\")), \"(children) => {\\n const head = requireToken(children[0]).value;\\n const tails = children.filter(isMixinPathTail);\\n const last = tails.at(-1);\\n if (last === undefined) {\\n throw new TypeError('Less namespaced iterable lost its final mixin name.');\\n }\\n const path = [{ combinator: ' ', selector: head }, ...tails.slice(0, -1)];\\n return {\\n ...mixinCall(last.selector, mixinArgumentsFromChildren(children)),\\n path\\n };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isMixinPathTail\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinPathTail\"},{\"local\":\"mixinCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"mixinCall\"},{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"}]),\n \"NamespacedMixinValue\": _nd(\"NamespacedMixinValue\", sequence(_s41, oneOrMore(_s58), literal(\"(\"), optional(g[\"MixinArguments\"]), literal(\")\"), optional(literal(\"!important\"))), \"(children) => {\\n const head = requireToken(children[0]).value;\\n const tails = children.filter(isMixinPathTail);\\n const last = tails.at(-1);\\n if (last === undefined) {\\n throw new TypeError('Less namespaced variable value lost its final mixin name.');\\n }\\n const path = [{ combinator: ' ', selector: head }, ...tails.slice(0, -1)];\\n const call = {\\n ...mixinCall(last.selector, mixinArgumentsFromChildren(children)),\\n path\\n };\\n return children.some(child => isLessTerminalText(child, '!important')) ? { ...call, important: true } : call;\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isMixinPathTail\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinPathTail\"},{\"local\":\"mixinCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"mixinCall\"},{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]),\n \"MixinReference\": _nd(\"MixinReference\", sequence(_nd(\"MixinReferenceBase\", sequence(_s41, many(_s58), optional(sequence(literal(\"(\"), optional(g[\"MixinArguments\"]), literal(\")\")))), \"(children) => {\\n const head = requireToken(children[0]).value;\\n const tails = children.filter(isMixinPathTail);\\n const terminal = tails.at(-1);\\n const call = mixinCall(terminal?.selector ?? head, mixinArgumentsFromChildren(children));\\n const path = [{ combinator: ' ', selector: head }, ...tails.slice(0, -1)];\\n const withPath = tails.length === 0 ? call : { ...call, path };\\n const hasCall = children.some(child => isLessTerminalText(child, '('));\\n const raw = `${head}${tails.map(tail => `${tail.combinator}${tail.selector}`).join('')}${hasCall ? `(${withPath.args.map(callArgumentSource).join(', ')})` : ''}`;\\n return { call: withPath, raw };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isMixinPathTail\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinPathTail\"},{\"local\":\"mixinCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"mixinCall\"},{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"},{\"local\":\"callArgumentSource\",\"source\":\"./grammar-helpers.js\",\"imported\":\"callArgumentSource\"}]), oneOrMore(dispatch(choice(literal(\"[]\"), literal(\"[\"), literal(\".\"), literal(\"(\")), when(\"[]\", _nd(\"ReferenceBracketTail\", _nd(\"InterpolationLastAccessor\", parser({ trivia: null }, routed()), \"() => ({ key: -1, keyKind: 'index', src: '-1' })\"), \"(children) => {\\n const accessor = requireInterpolationAccessorFact(children[0]);\\n return { step: { type: 'LookupStep', kind: accessor.keyKind, name: accessor.key }, src: `[${accessor.src}]` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireInterpolationAccessorFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationAccessorFact\"}])), when(\"[\", _nd(\"ReferenceBracketTail\", choice(_nd(\"InterpolationIndexAccessor\", parser({ trivia: null }, sequence(routed(), g[\"InterpolationIndex\"], literal(\"]\"))), \"(children) => {\\n const text = requireToken(children[1]).value;\\n return { key: Number(text), keyKind: 'index', src: text };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), _nd(\"InterpolationPropertyVariableAccessor\", parser({ trivia: null }, sequence(routed(), literal(\"$\"), g[\"VariableReference\"], literal(\"]\"))), \"(children) => {\\n const key = requireValueNode(children[2]);\\n if (!isVarRef(key)) {\\n throw new TypeError('Less property-variable map key must retain its variable reference.');\\n }\\n return { key, keyKind: 'prop', src: `$@${key.name}` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"isVarRef\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isVarRef\"}]), choice(_nd(\"InterpolationReferenceAccessor\", parser({ trivia: null }, sequence(routed(), g[\"IndirectVariableReference\"], literal(\"]\"))), \"(children) => {\\n const key = requireValueNode(children[1]);\\n if (!isVarIndirect(key) || !isVarRef(key.name)) {\\n throw new TypeError('Less indirect map key must retain its variable reference.');\\n }\\n return { key, keyKind: 'var', src: `@@${key.name.name}` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"isVarIndirect\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isVarIndirect\"},{\"local\":\"isVarRef\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isVarRef\"}]), _nd(\"InterpolationReferenceAccessor\", parser({ trivia: null }, sequence(routed(), g[\"VariableReference\"], literal(\"]\"))), \"(children) => {\\n const key = requireValueNode(children[1]);\\n if (!isVarRef(key)) {\\n throw new TypeError('Less variable map key must retain its variable reference.');\\n }\\n return { key, keyKind: 'var', src: `@${key.name}` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"isVarRef\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isVarRef\"}]), _nd(\"InterpolationReferenceAccessor\", parser({ trivia: null }, sequence(routed(), g[\"PropertyReference\"], literal(\"]\"))), \"(children) => {\\n const key = requireValueNode(children[1]);\\n if (!isPropRef(key)) {\\n throw new TypeError('Less property map key must retain its property reference.');\\n }\\n return { key, keyKind: 'prop', src: key.raw };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"isPropRef\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isPropRef\"}]), _nd(\"InterpolationReferenceAccessor\", parser({ trivia: null }, sequence(routed(), g[\"InterpolationKey\"], literal(\"]\"))), \"(children) => {\\n const text = requireToken(children[1]).value;\\n return { key: keyword(text), keyKind: 'prop', src: text };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"}]))), \"(children) => {\\n const accessor = requireInterpolationAccessorFact(children[0]);\\n return { step: { type: 'LookupStep', kind: accessor.keyKind, name: accessor.key }, src: `[${accessor.src}]` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireInterpolationAccessorFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationAccessorFact\"}])), when(\".\", _nd(\"ReferenceDotTail\", sequence(routed(), g[\"VariableNameToken\"]), \"(children) => {\\n const name = requireToken(children[1]).value;\\n return { step: { type: 'LookupStep', kind: 'member', name }, src: `.${name}` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])), when(\"(\", _nd(\"ReferenceCallTail\", sequence(routed(), optional(g[\"MixinArguments\"]), literal(\")\")), \"(children) => {\\n const args = mixinArgumentsFromChildren(children);\\n return { step: { type: 'Call', args }, src: `(${args.map(callArgumentSource).join(', ')})` };\\n }\", undefined, undefined, undefined, [{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"},{\"local\":\"callArgumentSource\",\"source\":\"./grammar-helpers.js\",\"imported\":\"callArgumentSource\"}]))))), \"(children, _fields, span) => {\\n const base = requireMixinReferenceBaseFact(children.find(isMixinReferenceBaseFact));\\n return withSourceSpan(referenceWithTails(base.call, base.raw, children.filter(isReferenceTailFact)), span);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireMixinReferenceBaseFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireMixinReferenceBaseFact\"},{\"local\":\"isMixinReferenceBaseFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinReferenceBaseFact\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"referenceWithTails\",\"source\":\"./grammar-helpers.js\",\"imported\":\"referenceWithTails\"},{\"local\":\"isReferenceTailFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isReferenceTailFact\"}]),\n \"ReferenceCall\": _nd(\"VarCall\", sequence(literal(\"@\"), not(keywords([\"supports\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })), _s4, literal(\"(\"), optional(g[\"MixinArguments\"]), literal(\")\"), optional(literal(\";\"))), \"(children, _fields, span) => {\\n const name = requireSupportedVariableName(children[1], span.start, span.start + variableNameText(children[1]).length + 1);\\n const args = mixinArgumentsFromChildren(children);\\n return withSourceSpan(reference(variableReference(name, 'scoped'), [{ type: 'Call', args }], `@${name}()`), span);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"},{\"local\":\"variableNameText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"variableNameText\"},{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"reference\",\"source\":\"@jesscss/core/ast\",\"imported\":\"reference\"},{\"local\":\"variableReference\",\"source\":\"@jesscss/core/ast\",\"imported\":\"variableReference\"}]),\n \"MixinGuard\": _nd(\"MixinGuard\", parser({ trivia: classifiedTrivia({ \"whitespace\": regex(\"(?:(?:[ \\\\t\\\\n\\\\r\\\\f]+)|(?:\\\\/\\\\/[^\\\\n\\\\r]*)|(?:\\\\/\\\\*(?:[^*]|\\\\*(?!\\\\/))*\\\\*\\\\/))+\", \"\") }) }, sequence(keywords([\"when\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"MixinGuardTopOr\"])), \"(children) => {\\n const guard = children.find(isMixinGuard);\\n if (guard === undefined) {\\n throw new TypeError('Less grammar produced a missing mixin guard.');\\n }\\n return guard;\\n }\", undefined, undefined, undefined, [{\"local\":\"isMixinGuard\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinGuard\"}]),\n \"MixinGuardTopOr\": _nd(\"MixinGuardTopOr\", sequence(g[\"MixinGuardTopAnd\"], many(sequence(choice(keywords([\"or\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), literal(\",\")), g[\"MixinGuardTopAnd\"]))), \"children => foldMixinGuards('or', children)\", undefined, undefined, undefined, [{\"local\":\"foldMixinGuards\",\"source\":\"./grammar-helpers.js\",\"imported\":\"foldMixinGuards\"}]),\n \"MixinGuardTopAnd\": _nd(\"MixinGuardTopAnd\", sequence(g[\"MixinGuardTopTerm\"], many(sequence(keywords([\"and\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"MixinGuardTopTerm\"]))), \"children => foldMixinGuards('and', children)\", undefined, undefined, undefined, [{\"local\":\"foldMixinGuards\",\"source\":\"./grammar-helpers.js\",\"imported\":\"foldMixinGuards\"}]),\n \"MixinGuardTopTerm\": _nd(\"MixinGuardTopTerm\", choice(_nd(\"UnparenthesizedMixinGuard\", choice(sequence(optional(keywords([\"not\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })), choice(_s59, g[\"Call\"]), optional(sequence(_s60, g[\"MixinGuardOperand\"]))), sequence(optional(keywords([\"not\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })), g[\"MixinGuardOperand\"], _s60, g[\"MixinGuardOperand\"])), \"(_children, _fields, span) => {\\n throw new LessUnparenthesizedMixinGuardError(span.start, span.end);\\n }\", undefined, undefined, undefined, [{\"local\":\"LessUnparenthesizedMixinGuardError\",\"source\":\"./parse-error.js\",\"imported\":\"LessUnparenthesizedMixinGuardError\"}]), sequence(optional(keywords([\"not\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })), literal(\"(\"), g[\"MixinGuardOr\"], literal(\")\")), sequence(keywords([\"not\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"MixinGuardTerm\"])), \"(children) => {\\n const guard = children.find(isMixinGuard);\\n if (guard === undefined) {\\n throw new TypeError('Less grammar produced an empty top-level grouped guard.');\\n }\\n return children.some(child => isLessTerminalText(child, 'not')) ? { g: 'not', inner: guard } : guard;\\n }\", undefined, undefined, undefined, [{\"local\":\"isMixinGuard\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinGuard\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]),\n \"MixinGuardOr\": _nd(\"MixinGuardOr\", sequence(g[\"MixinGuardAnd\"], many(sequence(choice(keywords([\"or\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), literal(\",\")), g[\"MixinGuardAnd\"]))), \"children => foldMixinGuards('or', children)\", undefined, undefined, undefined, [{\"local\":\"foldMixinGuards\",\"source\":\"./grammar-helpers.js\",\"imported\":\"foldMixinGuards\"}]),\n \"MixinGuardAnd\": _nd(\"MixinGuardAnd\", sequence(g[\"MixinGuardTerm\"], many(sequence(keywords([\"and\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"MixinGuardTerm\"]))), \"children => foldMixinGuards('and', children)\", undefined, undefined, undefined, [{\"local\":\"foldMixinGuards\",\"source\":\"./grammar-helpers.js\",\"imported\":\"foldMixinGuards\"}]),\n \"MixinGuardTerm\": _nd(\"MixinGuardTerm\", sequence(optional(keywords([\"not\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })), choice(sequence(literal(\"(\"), g[\"MixinGuardOr\"], literal(\")\")), sequence(g[\"MixinGuardOperand\"], optional(sequence(_s60, g[\"MixinGuardOperand\"]))))), \"(children) => {\\n const nested = children.find(isMixinGuard);\\n const values = children.filter(isValueNode);\\n const operator = children.map(guardOperatorText).find((value) => value !== null);\\n let guard;\\n if (nested !== undefined) {\\n guard = nested;\\n } else {\\n const left = values[0];\\n if (left === undefined) {\\n throw new TypeError('Less grammar produced a guard without a value.');\\n }\\n if (operator === undefined) {\\n const call = isFunctionCall(left) ? left : null;\\n if (call !== null && isDefaultGuardCall(call)) {\\n guard = { g: 'default' };\\n } else if (call !== null) {\\n guard = { g: 'call', name: call.name, args: call.args.map(arg => requireValueNode(arg.value)) };\\n } else {\\n guard = lessGuardTruth(left);\\n }\\n } else {\\n const right = values[1];\\n if (right === undefined) {\\n throw new TypeError('Less grammar produced a comparison guard without a right operand.');\\n }\\n /*\\n * GUARD position, so the comparison lowers to the MATCH test (§4.2a).\\n * This production family is reached only from `g.MixinGuard` — the\\n * `when` clause of a mixin definition or a CSS guard — and both ask\\n * whether a definition APPLIES. `.generic(1, true) when (@a < @b)`\\n * has no ordering and therefore does not match; lessc 4.6.3 agrees,\\n * and so does the owner-maintained expected CSS. Value position keeps\\n * the assertion, built separately in `FunctionConditionTerm`.\\n */\\n guard = { g: 'match', op: operator, left, right };\\n }\\n }\\n return children.some(child => isLessTerminalText(child, 'not')) ? { g: 'not', inner: guard } : guard;\\n }\", undefined, undefined, undefined, [{\"local\":\"isMixinGuard\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinGuard\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"guardOperatorText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"guardOperatorText\"},{\"local\":\"isFunctionCall\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isFunctionCall\"},{\"local\":\"isDefaultGuardCall\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isDefaultGuardCall\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"lessGuardTruth\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessGuardTruth\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]),\n \"MixinGuardOperand\": _nd(\"MixinGuardOperand\", choice(_s59, attempt(g[\"MixinReference\"]), g[\"VariableReferenceChain\"], g[\"Quoted\"], g[\"EscapedQuoted\"], g[\"Dimension\"], g[\"Color\"], g[\"Call\"], g[\"Keyword\"]), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"EachName\": _nd(\"EachName\", sequence(literal(\"@\"), _s4), \"(children, _fields, span) => requireSupportedVariableName(\\n children[1],\\n span.start,\\n span.start + variableNameText(children[1]).length + 1\\n )\", undefined, undefined, undefined, [{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"},{\"local\":\"variableNameText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"variableNameText\"}]),\n \"BodyStatement\": choice(_nd(\"PunctuationMapDeclarationItem\", sequence(_nd(\"PunctuationMapDeclaration\", sequence(g[\"PunctuationMapKeyToken\"], literal(\":\"), optional(g[\"ValueListWithPriority\"])), \"(children, _fields, span) => {\\n const value = children.find(isLessValueSlotValue);\\n return withSourceSpan(\\n decl(requireToken(children[0]).value, value === undefined ? any('') : value),\\n span\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"decl\",\"source\":\"@jesscss/core/ast\",\"imported\":\"decl\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"}]), _s6), \"(children) => {\\n const declaration = children.find(isLessDeclaration);\\n if (declaration === undefined) {\\n throw new TypeError('Less punctuation map item lost its declaration fact.');\\n }\\n return declaration;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isLessDeclaration\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessDeclaration\"}]), _s0, _s1, _s35, g[\"FunctionStatement\"], _s36, literal(\";\")),\n \"EachCallback\": _nd(\"EachCallback\", choice(sequence(literal(\"{\"), many(g[\"BodyStatement\"]), optional(g[\"Call\"]), literal(\"}\")), sequence(keywords([\".\",\"#\"], { caseInsensitive: false }), literal(\"(\"), g[\"EachName\"], optional(sequence(_s40, g[\"EachName\"], optional(sequence(_s40, g[\"EachName\"])))), literal(\")\"), literal(\"{\"), many(g[\"BodyStatement\"]), optional(g[\"Call\"]), literal(\"}\"))), \"(children) => {\\n if (requireToken(children[0]).value === '{') {\\n return {\\n binding: { kind: 'comma', names: ['value', 'key', 'index'] },\\n rules: requireCallbackStatements(children.slice(1, -1))\\n };\\n }\\n const names = children.filter((child) => typeof child === 'string');\\n const bodyStart = children.findIndex(child => isLessTerminalText(child, '{'));\\n if (bodyStart < 0) {\\n throw new TypeError('Less grammar produced a named each() callback without a body.');\\n }\\n const body = requireCallbackStatements(children.slice(bodyStart + 1, -1));\\n if (names.length === 1) {\\n return { binding: { kind: 'single', name: names[0] }, rules: body };\\n }\\n if (names.length === 2 || names.length === 3) {\\n return {\\n binding: { kind: 'comma', names: [names[0], names[1], names[2]] },\\n rules: body\\n };\\n }\\n throw new TypeError('Less grammar produced an invalid each() callback binding.');\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireCallbackStatements\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireCallbackStatements\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]),\n \"EachFunctionStatement\": _nd(\"For\", sequence(routed(), choice(g[\"NamespacedMixinCall\"], g[\"FlatMixinCall\"], g[\"ValueBlock\"], g[\"ValueList\"]), choice(literal(\",\"), literal(\";\")), g[\"EachCallback\"], literal(\")\"), optional(literal(\";\"))), \"(children) => {\\n const callback = children.find(isLessEachCallback);\\n if (callback === undefined) {\\n throw new TypeError('Less each() reduction produced an invalid callback.');\\n }\\n const iterable = children.find(child => isMixinCall(child) || isLessValueSlotValue(child));\\n if (iterable === undefined) {\\n throw new TypeError('Less each() reduction produced an invalid iterable.');\\n }\\n return forNode(isMixinCall(iterable) ? iterable : requireValueSlot(iterable), callback.rules, callback.binding);\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessEachCallback\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessEachCallback\"},{\"local\":\"isMixinCall\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinCall\"},{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"},{\"local\":\"forNode\",\"source\":\"@jesscss/core/ast\",\"imported\":\"forNode\"},{\"local\":\"requireValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueSlot\"}]),\n \"SupportsValue\": _nd(\"SupportsValue\", g[\"ValueList\"], \"(children) => {\\n const value = requireValueSlot(children[0]);\\n if (isValueNode(value)) {\\n return value;\\n }\\n return spaced(value.map(requireValueNode));\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueSlot\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"SupportsFeature\": _nd(\"SupportsFeature\", sequence(literal(\"(\"), g[\"Identifier\"], optional(sequence(literal(\":\"), g[\"SupportsValue\"])), literal(\")\")), \"(children, _fields, _span, _rawChildren, _triviaLog, state) => {\\n const property = keyword(requireToken(children[1]).value);\\n const value = children.find(isValueNode);\\n return value === undefined\\n ? block(property)\\n : block(operation(':', property, value, false, lessMathOutsideParens(state, ':')));\\n }\", undefined, undefined, undefined, [{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"},{\"local\":\"operation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"operation\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"}], true),\n \"SupportsInParens\": _nd(\"SupportsInParens\", choice(sequence(literal(\"(\"), g[\"SupportsCondition\"], literal(\")\")), g[\"SupportsFeature\"], g[\"Enclosed\"]), \"children => children.length === 1\\n ? requireValueNode(children[0])\\n : block(requireValueNode(children[1]))\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"}]),\n \"SupportsCondition\": _nd(\"SupportsCondition\", choice(sequence(g[\"QueryNot\"], g[\"SupportsInParens\"]), sequence(g[\"SupportsInParens\"], many(sequence(g[\"QueryAndOr\"], g[\"SupportsInParens\"])))), \"(children) => {\\n const values = children.map(child => isValueNode(child)\\n ? child\\n : keyword(requireToken(child).value));\\n return values.length === 1 ? values[0] : spaced(values);\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"}]),\n \"EnclosedContent\": _nd(\"EnclosedContent\", parser({ trivia: null }, many(choice(g[\"BareVariableInterpolation\"], _nd(\"EnclosedRaw\", parser({ trivia: null }, choice(g[\"BlockCommentToken\"], regex(\"(?:\\\\\\\\[\\\\s\\\\S]|\\\\/(?!\\\\*)|@(?!\\\\{)|[^\\\\\\\\/'\\\"@()[\\\\]{}]+)+\", \"\"))), \"children => requireToken(children[0]).value\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), g[\"VariableInterpolation\"], g[\"EnclosedQuoted\"], g[\"EnclosedGroup\"]))), \"enclosedInterpolationFromChildren\", { buildArity: 1 }, undefined, \"function enclosedInterpolationFromChildren(children: readonly unknown[]): Interpolation {\\n const parts: Interpolation['parts'] = [];\\n const append = (child: unknown): void => {\\n if (child === undefined || child === null || child === false) {\\n return;\\n }\\n if (isInterpolationFact(child)) {\\n parts.push({ ref: child.ref, unquote: true });\\n } else if (typeof child === 'object' && child !== null && 'type' in child && child.type === 'Interpolation') {\\n if (!isValueNode(child) || child.type !== 'Interpolation') {\\n throw new TypeError('Less general-enclosed grammar produced a non-interpolation child.');\\n }\\n for (const part of child.parts) {\\n if ('lit' in part) {\\n appendEnclosedLiteral(parts, part.lit);\\n } else {\\n parts.push(part);\\n }\\n }\\n } else if (Array.isArray(child)) {\\n for (const nested of child) {\\n append(nested);\\n }\\n } else if (typeof child === 'string') {\\n appendEnclosedLiteral(parts, child);\\n } else {\\n appendEnclosedLiteral(parts, requireToken(child).value);\\n }\\n };\\n for (const child of children) {\\n append(child);\\n }\\n return interpolation(parts);\\n}\"),\n \"EnclosedGroup\": _nd(\"EnclosedGroup\", choice(parser({ trivia: null }, sequence(literal(\"(\"), g[\"EnclosedContent\"], literal(\")\"))), parser({ trivia: null }, sequence(literal(\"[\"), g[\"EnclosedContent\"], literal(\"]\"))), parser({ trivia: null }, sequence(literal(\"{\"), g[\"EnclosedContent\"], literal(\"}\")))), \"enclosedInterpolationFromChildren\", { buildArity: 1 }, undefined, \"function enclosedInterpolationFromChildren(children: readonly unknown[]): Interpolation {\\n const parts: Interpolation['parts'] = [];\\n const append = (child: unknown): void => {\\n if (child === undefined || child === null || child === false) {\\n return;\\n }\\n if (isInterpolationFact(child)) {\\n parts.push({ ref: child.ref, unquote: true });\\n } else if (typeof child === 'object' && child !== null && 'type' in child && child.type === 'Interpolation') {\\n if (!isValueNode(child) || child.type !== 'Interpolation') {\\n throw new TypeError('Less general-enclosed grammar produced a non-interpolation child.');\\n }\\n for (const part of child.parts) {\\n if ('lit' in part) {\\n appendEnclosedLiteral(parts, part.lit);\\n } else {\\n parts.push(part);\\n }\\n }\\n } else if (Array.isArray(child)) {\\n for (const nested of child) {\\n append(nested);\\n }\\n } else if (typeof child === 'string') {\\n appendEnclosedLiteral(parts, child);\\n } else {\\n appendEnclosedLiteral(parts, requireToken(child).value);\\n }\\n };\\n for (const child of children) {\\n append(child);\\n }\\n return interpolation(parts);\\n}\"),\n \"EnclosedQuoted\": _nd(\"EnclosedQuoted\", choice(parser({ trivia: null }, sequence(literal(\"\\\"\"), many(choice(g[\"VariableInterpolation\"], g[\"BareVariableInterpolation\"], regex(\"(?:\\\\\\\\[\\\\s\\\\S]|@(?!\\\\{)|[^\\\"\\\\\\\\@])+\", \"\"))), literal(\"\\\"\"))), parser({ trivia: null }, sequence(literal(\"'\"), many(choice(g[\"VariableInterpolation\"], g[\"BareVariableInterpolation\"], regex(\"(?:\\\\\\\\[\\\\s\\\\S]|@(?!\\\\{)|[^'\\\\\\\\@])+\", \"\"))), literal(\"'\")))), \"enclosedInterpolationFromChildren\", { buildArity: 1 }, undefined, \"function enclosedInterpolationFromChildren(children: readonly unknown[]): Interpolation {\\n const parts: Interpolation['parts'] = [];\\n const append = (child: unknown): void => {\\n if (child === undefined || child === null || child === false) {\\n return;\\n }\\n if (isInterpolationFact(child)) {\\n parts.push({ ref: child.ref, unquote: true });\\n } else if (typeof child === 'object' && child !== null && 'type' in child && child.type === 'Interpolation') {\\n if (!isValueNode(child) || child.type !== 'Interpolation') {\\n throw new TypeError('Less general-enclosed grammar produced a non-interpolation child.');\\n }\\n for (const part of child.parts) {\\n if ('lit' in part) {\\n appendEnclosedLiteral(parts, part.lit);\\n } else {\\n parts.push(part);\\n }\\n }\\n } else if (Array.isArray(child)) {\\n for (const nested of child) {\\n append(nested);\\n }\\n } else if (typeof child === 'string') {\\n appendEnclosedLiteral(parts, child);\\n } else {\\n appendEnclosedLiteral(parts, requireToken(child).value);\\n }\\n };\\n for (const child of children) {\\n append(child);\\n }\\n return interpolation(parts);\\n}\"),\n \"EnclosedFunctionName\": _nd(\"EnclosedFunctionName\", token(parser({ trivia: null }, sequence(g[\"QueryFunctionName\"], literal(\"(\")))), \"children => ({ name: functionNameFromOpener(children[0]) })\", undefined, undefined, undefined, [{\"local\":\"functionNameFromOpener\",\"source\":\"./grammar-helpers.js\",\"imported\":\"functionNameFromOpener\"}]),\n \"Enclosed\": _nd(\"Enclosed\", choice(parser({ trivia: null }, sequence(g[\"EnclosedFunctionName\"], g[\"EnclosedContent\"], literal(\")\"))), parser({ trivia: null }, sequence(literal(\"(\"), g[\"EnclosedContent\"], literal(\")\")))), \"(children) => {\\n const content = children.find((child) => typeof child === 'object' && child !== null && 'type' in child && child.type === 'Interpolation');\\n if (content === undefined) {\\n throw new TypeError('Less general-enclosed lost its grammar-owned content.');\\n }\\n const name = children.find((child) => typeof child === 'object' && child !== null && 'name' in child);\\n return name === undefined ? block(content) : funcCall(name.name, [content]);\\n }\", undefined, undefined, undefined, [{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"},{\"local\":\"funcCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"funcCall\"}]),\n \"SupportsBlock\": _nd(\"SupportsBlock\", sequence(g[\"SupportsAtKeyword\"], choice(g[\"AtRuleInterpolation\"], g[\"BareVariableInterpolation\"], g[\"SupportsCondition\"]), literal(\"{\"), g[\"blockBody\"], optional(g[\"Call\"]), literal(\"}\")), \"(children, _fields, span, rawChildren) => withSourceSpan(\\n withBlockBody(\\n atRuleBlock(requireToken(children[0]).value, requireValueNode(children[1]), children.filter(isStatement)),\\n rawChildren\\n ),\\n span\\n )\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"withBlockBody\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withBlockBody\"},{\"local\":\"atRuleBlock\",\"source\":\"@jesscss/core/ast\",\"imported\":\"atRuleBlock\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"}]),\n \"QueryValue\": _nd(\"QueryValue\", choice(g[\"PreservedDivision\"], g[\"queryLeaf\"]), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"QueryColonFeature\": _nd(\"QueryColonFeature\", sequence(literal(\"(\"), g[\"Identifier\"], regex(\":[ \\\\t\\\\n\\\\r\\\\f]*\", \"\"), g[\"MathSum\"], literal(\")\")), \"(children, _fields, span, _rawChildren, _triviaLog, state) => withSourceSpan(\\n block(operation(':', keyword(requireToken(children[1]).value), requireValueNode(children[3]), false,\\n lessMathOutsideParens(state, ':'))),\\n span\\n )\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"},{\"local\":\"operation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"operation\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"}], true),\n \"QueryFeatureValue\": _nd(\"QueryFeatureValue\", sequence(g[\"queryLeaf\"], many(sequence(literal(\"/\"), g[\"queryLeaf\"]))), \"lessFoldOperation\", { buildArity: 6 }, undefined, \"function lessFoldOperation(\\n children: readonly unknown[],\\n _fields: FieldMap | undefined,\\n _span: Span,\\n rawChildren: readonly unknown[],\\n _triviaLog: readonly number[],\\n state: unknown\\n): ValueNode {\\n const first = children.find(isValueNode);\\n if (first === undefined) {\\n throw new TypeError('Less arithmetic grammar produced no operand.');\\n }\\n const firstIndex = children.indexOf(first);\\n const firstRaw = rawChildren[firstIndex];\\n // In AST mode Parseman supplies the original spanned children here. That\\n // gives each folded operation its authored range without retaining one span\\n // per standalone dimension. A synthetic child can still contribute an\\n // existing provenance fact when it has one.\\n const firstSpan = isSpannedToken(firstRaw) ? firstRaw.span : sourceSpanOf(first);\\n let result = first;\\n const start = firstSpan?.start;\\n for (let index = children.indexOf(first) + 1; index < children.length; index += 2) {\\n const operatorToken = children[index];\\n const right = children[index + 1];\\n if (operatorToken === undefined || !isValueNode(right)) {\\n throw new TypeError('Less arithmetic grammar lost an operator operand.');\\n }\\n const rightRaw = rawChildren[index + 1];\\n const rightSpan = isSpannedToken(rightRaw) ? rightRaw.span : sourceSpanOf(right);\\n const operator = requireTerminalText(operatorToken).trim();\\n const folded = operation(operator, result, right, false, lessMathOutsideParens(state, operator));\\n result = start === undefined || rightSpan === undefined\\n ? folded\\n : withSourceSpan(folded, { start, end: rightSpan.end });\\n }\\n return result;\\n}\"),\n \"QueryNonOnlyKeyword\": _nd(\"QueryNonOnlyKeyword\", sequence(not(g[\"QueryOnly\"]), g[\"Keyword\"]), \"children => requireKeyword(children.at(-1))\", undefined, undefined, undefined, [{\"local\":\"requireKeyword\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireKeyword\"}]),\n \"QueryTerm\": _nd(\"QueryTerm\", choice(attempt(g[\"MixinReference\"]), g[\"QueryFeature\"], g[\"VariableReference\"], g[\"QueryNonOnlyKeyword\"]), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"MediaQueryTerm\": _nd(\"MediaQueryTerm\", choice(g[\"AtRuleInterpolation\"], g[\"BareVariableInterpolation\"], g[\"QueryTerm\"]), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"QueryFeature\": _nd(\"QueryFeature\", choice(_nd(\"QueryBareFeature\", sequence(literal(\"(\"), g[\"Identifier\"], literal(\")\")), \"children => block(keyword(requireToken(children[1]).value))\", undefined, undefined, undefined, [{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), g[\"QueryColonFeature\"], _nd(\"QueryComparisonFeature\", sequence(literal(\"(\"), g[\"Identifier\"], g[\"QueryComparisonOperator\"], g[\"QueryFeatureValue\"], optional(sequence(g[\"QueryComparisonOperator\"], g[\"QueryFeatureValue\"])), literal(\")\")), \"(children, _fields, _span, _rawChildren, _triviaLog, state) => {\\n const values = children.filter(isValueNode);\\n const operators = lessQueryComparisonOperators(children);\\n if (values.length < 1 || operators.length < 1) {\\n throw new TypeError('Less query comparison lost a value or operator.');\\n }\\n let comparison = operation(operators[0], keyword(requireToken(children[1]).value), values[0], false,\\n lessMathOutsideParens(state, operators[0]));\\n if (operators.length === 2) {\\n if (values[1] === undefined) {\\n throw new TypeError('Less chained query comparison lost its final value.');\\n }\\n comparison = operation(operators[1], comparison, values[1], false,\\n lessMathOutsideParens(state, operators[1]));\\n }\\n return block(comparison);\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"lessQueryComparisonOperators\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessQueryComparisonOperators\"},{\"local\":\"operation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"operation\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"},{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"}], true), _nd(\"QueryRangeFeature\", sequence(literal(\"(\"), g[\"QueryFeatureValue\"], g[\"QueryComparisonOperator\"], g[\"Identifier\"], optional(sequence(g[\"QueryComparisonOperator\"], g[\"QueryFeatureValue\"])), literal(\")\")), \"(children, _fields, _span, _rawChildren, _triviaLog, state) => {\\n const values = children.filter(isValueNode);\\n const operators = lessQueryComparisonOperators(children);\\n if (values.length < 1 || operators.length < 1) {\\n throw new TypeError('Less query range lost a value or operator.');\\n }\\n let comparison = operation(operators[0], values[0], keyword(requireToken(children[3]).value), false,\\n lessMathOutsideParens(state, operators[0]));\\n if (operators.length === 2) {\\n if (values[1] === undefined) {\\n throw new TypeError('Less chained query range lost its final value.');\\n }\\n comparison = operation(operators[1], comparison, values[1], false,\\n lessMathOutsideParens(state, operators[1]));\\n }\\n return block(comparison);\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"lessQueryComparisonOperators\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessQueryComparisonOperators\"},{\"local\":\"operation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"operation\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"},{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"}], true), _nd(\"QueryLogicalGroup\", sequence(literal(\"(\"), g[\"QueryFeature\"], oneOrMore(sequence(g[\"QueryAndOr\"], g[\"QueryFeature\"])), literal(\")\")), \"children => block(spaced(children.filter(child => isValueNode(child) ? true : isLessTerminalText(child, 'and') || isLessTerminalText(child, 'or')).map(keywordOrValue)))\", undefined, undefined, undefined, [{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"},{\"local\":\"keywordOrValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"keywordOrValue\"}]), _nd(\"QueryNegatedFeature\", sequence(literal(\"(\"), g[\"QueryNot\"], g[\"QueryFeature\"], literal(\")\")), \"children => block(spaced([keyword(requireToken(children[1]).value), requireValueNode(children[2])]))\", undefined, undefined, undefined, [{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}])), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"QueryClause\": _nd(\"QueryClause\", choice(_nd(\"QueryOnlyClause\", sequence(g[\"QueryOnly\"], g[\"QueryNonOnlyKeyword\"], many(sequence(g[\"QueryAndOr\"], g[\"QueryTerm\"]))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => spacedFromValueChildren(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"spacedFromValueChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"spacedFromValueChildren\"}], true), sequence(g[\"QueryTerm\"], many(sequence(g[\"QueryAndOr\"], g[\"QueryTerm\"])))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => queryClauseReducer(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"queryClauseReducer\",\"source\":\"./grammar-helpers.js\",\"imported\":\"queryClauseReducer\"}], true),\n \"ContainerStyleQuery\": _nd(\"ContainerStyleQuery\", sequence(token(parser({ trivia: null }, sequence(keywords([\"style\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), literal(\"(\")))), g[\"CustomPropertyToken\"], literal(\":\"), g[\"QueryValue\"], literal(\")\")), \"(children, _fields, _span, _rawChildren, _triviaLog, state) =>\\n funcCall(functionNameFromOpener(children[0]), [operation(':', keyword(requireToken(children[1]).value),\\n requireValueNode(children[3]), false, lessMathOutsideParens(state, ':'))])\", undefined, undefined, undefined, [{\"local\":\"funcCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"funcCall\"},{\"local\":\"functionNameFromOpener\",\"source\":\"./grammar-helpers.js\",\"imported\":\"functionNameFromOpener\"},{\"local\":\"operation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"operation\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"}], true),\n \"ContainerScrollStateQuery\": _nd(\"ContainerScrollStateQuery\", sequence(token(parser({ trivia: null }, sequence(keywords([\"scroll-state\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), literal(\"(\")))), g[\"Identifier\"], literal(\":\"), g[\"QueryValue\"], literal(\")\")), \"(children, _fields, _span, _rawChildren, _triviaLog, state) =>\\n funcCall(functionNameFromOpener(children[0]), [operation(':', keyword(requireToken(children[1]).value),\\n requireValueNode(children[3]), false, lessMathOutsideParens(state, ':'))])\", undefined, undefined, undefined, [{\"local\":\"funcCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"funcCall\"},{\"local\":\"functionNameFromOpener\",\"source\":\"./grammar-helpers.js\",\"imported\":\"functionNameFromOpener\"},{\"local\":\"operation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"operation\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"}], true),\n \"ContainerName\": _nd(\"ContainerName\", sequence(not(keywords([\"none\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\\\\\\\\\" })), not(g[\"QueryNot\"]), not(g[\"QueryAndOr\"]), g[\"Keyword\"]), \"children => requireKeyword(children.at(-1))\", undefined, undefined, undefined, [{\"local\":\"requireKeyword\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireKeyword\"}]),\n \"ContainerQueryAtom\": _nd(\"ContainerQueryAtom\", choice(g[\"ContainerStyleQuery\"], g[\"ContainerScrollStateQuery\"], g[\"QueryFeature\"]), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"ContainerCondition\": _nd(\"ContainerCondition\", choice(sequence(g[\"QueryNot\"], g[\"ContainerQueryAtom\"]), sequence(g[\"ContainerQueryAtom\"], many(sequence(g[\"QueryAndOr\"], g[\"ContainerQueryAtom\"])))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => queryClauseReducer(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"queryClauseReducer\",\"source\":\"./grammar-helpers.js\",\"imported\":\"queryClauseReducer\"}], true),\n \"MediaContainerBody\": _nd(\"MediaContainerBody\", sequence(literal(\"{\"), g[\"blockBody\"], optional(g[\"Call\"]), literal(\"}\")), \"children => children.filter(isStatement)\", undefined, undefined, undefined, [{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"}]),\n \"MediaContainerBlock\": _nd(\"QueryAtRuleBlock\", dispatch(token(parser({ trivia: null }, g[\"MediaContainerAtKeyword\"])), when(\"@media\", sequence(routed(), choice(_nd(\"MediaQueryPrelude\", sepBy(_nd(\"MediaQueryClause\", choice(_nd(\"MediaQueryOnlyClause\", sequence(g[\"QueryOnly\"], g[\"QueryNonOnlyKeyword\"], many(sequence(g[\"QueryAndOr\"], g[\"MediaQueryTerm\"]))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => spacedFromValueChildren(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"spacedFromValueChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"spacedFromValueChildren\"}], true), _nd(\"MediaQueryNotClause\", sequence(g[\"QueryNot\"], g[\"MediaQueryTerm\"], many(sequence(g[\"QueryAndOr\"], g[\"MediaQueryTerm\"]))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => spacedFromValueChildren(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"spacedFromValueChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"spacedFromValueChildren\"}], true), sequence(g[\"MediaQueryTerm\"], many(sequence(g[\"QueryAndOr\"], g[\"MediaQueryTerm\"])))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => queryClauseReducer(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"queryClauseReducer\",\"source\":\"./grammar-helpers.js\",\"imported\":\"queryClauseReducer\"}], true), field(\"separator\", regex(\",[ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), { min: 1 }), \"(children, fields, _span, rawChildren, triviaLog, state) =>\\n commaListWithTriviaFromChildren(children, fields, triviaLog, state, isValueNode, rawChildren)\", undefined, undefined, undefined, [{\"local\":\"commaListWithTriviaFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"commaListWithTriviaFromChildren\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"}]), g[\"AtRuleInterpolation\"]), g[\"MediaContainerBody\"]), { caseInsensitive: true }), when(\"@container\", sequence(routed(), _nd(\"ContainerQueryPrelude\", sepBy(_nd(\"ContainerConditionItem\", choice(g[\"BareVariableInterpolation\"], g[\"ContainerCondition\"], sequence(g[\"AtRuleInterpolation\"], g[\"ContainerCondition\"]), sequence(g[\"ContainerName\"], g[\"ContainerCondition\"]), g[\"ContainerName\"]), \"(children) => {\\n const values = children.filter(isValueNode);\\n return values.length === 1 ? values[0] : spaced(values);\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"}]), field(\"separator\", regex(\",[ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), { min: 1 }), \"(children, fields, _span, rawChildren, triviaLog, state) =>\\n commaListWithTriviaFromChildren(children, fields, triviaLog, state, isValueNode, rawChildren)\", undefined, undefined, undefined, [{\"local\":\"commaListWithTriviaFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"commaListWithTriviaFromChildren\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"}]), g[\"MediaContainerBody\"]), { caseInsensitive: true })), \"(children, _fields, span) => {\\n const body = children.find(Array.isArray);\\n if (body === undefined) {\\n throw new TypeError('Less conditional at-rule lost its body facts.');\\n }\\n return withSourceSpan(\\n atRuleBlock(requireToken(children[0]).value, requireValueNode(children[1]), requireStatementArray(body)),\\n span\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"atRuleBlock\",\"source\":\"@jesscss/core/ast\",\"imported\":\"atRuleBlock\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"requireStatementArray\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireStatementArray\"}]),\n \"KeyframeBlock\": _nd(\"KeyframeBlock\", sequence(sepBy(g[\"keyframeSelector\"], literal(\",\"), { min: 1 }), literal(\"{\"), many(choice(_s36, g[\"FunctionStatement\"], literal(\";\"))), optional(g[\"Call\"]), literal(\"}\")), \"(children, _fields, span, rawChildren) => {\\n const selectors = children.filter(isSimpleSelector)\\n .map(selector => selector);\\n if (selectors.length === 0) {\\n throw new TypeError('Less keyframe block requires a selector.');\\n }\\n return withSourceSpan(\\n withBlockBody(rule(selist(...selectors), children.filter(isStatement)), rawChildren),\\n span\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"isSimpleSelector\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSimpleSelector\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"withBlockBody\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withBlockBody\"},{\"local\":\"rule\",\"source\":\"@jesscss/core/ast\",\"imported\":\"rule\"},{\"local\":\"selist\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selist\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"}]),\n \"Keyframes\": _nd(\"Keyframes\", sequence(g[\"KeyframesAtKeyword\"], field(\"prelude\", choice(g[\"AtRuleInterpolation\"], g[\"BareVariableInterpolation\"], g[\"EscapedQuoted\"], g[\"LiteralQuoted\"], g[\"Keyword\"])), literal(\"{\"), many(choice(g[\"ReferenceCall\"], g[\"KeyframeBlock\"])), literal(\"}\")), \"(children, fields, span, rawChildren) => {\\n // The keyframes body may itself contain Reference values. Select header\\n // facts only from the grammar region before `{`, rather than filtering\\n // every value-shaped child in the whole production.\\n requireField(fields, 'prelude');\\n const bodyStart = children.findIndex(child => isLessTerminalText(child, '{'));\\n if (bodyStart < 0) {\\n throw new TypeError('Less keyframes lost its body boundary.');\\n }\\n const preludeParts = children.slice(1, bodyStart).filter(isValueNode);\\n if (preludeParts.length === 0) {\\n throw new TypeError('Less keyframes lost their header fact.');\\n }\\n return withSourceSpan(withBlockBody(\\n atRuleBlock(\\n requireToken(children[0]).value,\\n preludeParts.length === 1 ? preludeParts[0] : spaced(preludeParts),\\n children.filter(isStatement)\\n ),\\n rawChildren\\n ), span);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireField\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireField\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"withBlockBody\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withBlockBody\"},{\"local\":\"atRuleBlock\",\"source\":\"@jesscss/core/ast\",\"imported\":\"atRuleBlock\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"}]),\n \"DottedAtRuleKeyword\": _nd(\"DottedAtRuleKeyword\", sequence(_s61, oneOrMore(sequence(parser({ trivia: null }, literal(\".\")), parser({ trivia: null }, _s61)))), \"children => keyword(children.map(requireTerminalText).join(''))\", undefined, undefined, undefined, [{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"}]),\n \"AtRulePreludeValueAtom\": _nd(\"AtRulePreludeValueAtom\", choice(g[\"EscapedQuoted\"], g[\"LiteralQuoted\"], g[\"Color\"], g[\"Dimension\"], g[\"PagePseudo\"], g[\"Paren\"], g[\"DottedAtRuleKeyword\"], _nd(\"AtRulePreludeValueCustomProperty\", g[\"CustomPropertyToken\"], \"children => keyword(requireToken(children[0]).value)\", undefined, undefined, undefined, [{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), dispatch(token(parser({ trivia: null }, sequence(_s61, optional(literal(\"(\"))))), when(\"url(\", _s18, { caseInsensitive: true }), when(\"calc(\", g[\"CalcFunction\"], { caseInsensitive: true }), when(endsWith(\"(\"), g[\"GenericFunction\"]), otherwise(_nd(\"Keyword\", routed(), \"children => keyword(requireToken(children[0]).value)\", undefined, undefined, undefined, [{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])))), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"AtRulePreludeValueTerm\": _nd(\"AtRulePreludeValueTerm\", oneOrMore(g[\"AtRulePreludeValueAtom\"]), \"(children) => {\\n const values = children.map(requireValueNode);\\n return values.length === 1 ? values[0] : spaced(values);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"}]),\n \"AtRulePreludeValue\": _nd(\"AtRulePreludeValue\", sepBy(g[\"AtRulePreludeValueTerm\"], field(\"separator\", regex(\",[ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), { min: 1 }), \"(children, fields) => {\\n const values = children.filter(isValueNode);\\n if (values.length === 1) {\\n return values[0];\\n }\\n const result = list(values, ',');\\n const separators = fields?.separator === undefined\\n ? []\\n : requireFields(fields, 'separator').map(separator => requireTerminalText(separator.value));\\n return separators.length === values.length - 1 ? withValueLayout(result, separators) : result;\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"list\",\"source\":\"@jesscss/core/ast\",\"imported\":\"list\"},{\"local\":\"requireFields\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireFields\"},{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"withValueLayout\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withValueLayout\"}]),\n \"AtRulePrelude\": _nd(\"AtRulePrelude\", parser({ trivia: classifiedTrivia({ \"blockComment\": _s12 }) }, many(choice(_s62, _s63, _s64, _s65, g[\"BareVariableInterpolation\"], parser({ trivia: null }, regex(\"(?:\\\\\\\\[\\\\s\\\\S]|\\\\/(?!\\\\*)|[^\\\\\\\\/@ \\\\t\\\\n\\\\r\\\\f,;{}()[\\\\]\\\"'])+\", \"\"))))), \"(children, _fields, _span, _rawChildren, triviaLog) => {\\n const text = staticTextWithTriviaGaps(children, triviaLog).trim();\\n return text === '' ? null : any(text);\\n }\", undefined, undefined, undefined, [{\"local\":\"staticTextWithTriviaGaps\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticTextWithTriviaGaps\"},{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"}], true),\n \"NamespacePrelude\": _nd(\"NamespacePrelude\", choice(g[\"PlainUrl\"], g[\"Quoted\"], sequence(choice(g[\"AtRuleInterpolation\"], g[\"Keyword\"]), choice(g[\"Quoted\"], g[\"PlainUrl\"]))), \"(children) => {\\n const values = children.filter(isValueNode);\\n const uri = values.at(-1);\\n if (uri === undefined) {\\n throw new TypeError('Less namespace prelude lost its URI value.');\\n }\\n return children.length === 1\\n ? uri\\n : spaced([values[0], uri]);\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"}]),\n \"AtRuleBlock\": _nd(\"AtRuleBlock\", choice(sequence(keywords([\"@layer\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), not(parser({ trivia: null }, literal(\"(\"))), optional(choice(g[\"BareVariableInterpolation\"], g[\"InterpolatedValue\"], g[\"AtRulePreludeValue\"])), _s69), sequence(g[\"AtRuleName\"], choice(attempt(sequence(attempt(g[\"AtRulePreludeValue\"]), _s69)), sequence(not(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*:\", \"\")), g[\"AtRulePrelude\"], _s69)))), \"(children, _fields, span, rawChildren) => {\\n const prelude = children.find(isValueNode) ?? null;\\n // A FunctionCall is a legal statement *and* a legal generic prelude\\n // component. Exclude the exact selected prelude object rather than\\n // reclassifying it through text or weakening the statement grammar.\\n const body = children.filter(isStatement).filter(statement => statement !== prelude);\\n return withSourceSpan(withBlockBody(atRuleBlock(requireToken(children[0]).value, prelude, body), rawChildren), span);\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"withBlockBody\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withBlockBody\"},{\"local\":\"atRuleBlock\",\"source\":\"@jesscss/core/ast\",\"imported\":\"atRuleBlock\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"UnknownAtPrelude\": _nd(\"UnknownAtPrelude\", parser({ trivia: classifiedTrivia({ \"blockComment\": _s12 }) }, many(choice(_s62, _s63, _s64, _s65, g[\"BareVariableInterpolation\"], parser({ trivia: null }, regex(\"(?:\\\\\\\\[\\\\s\\\\S]|@(?!\\\\{)|\\\\/(?!\\\\*)|[^\\\\\\\\/@ \\\\t\\\\n\\\\r\\\\f,;{}()[\\\\]\\\"'])+\", \"\"))))), \"(children, _fields, _span, _rawChildren, triviaLog) => {\\n const text = children.length === 0 ? '' : staticTextWithTriviaGaps(children, triviaLog).trim();\\n return text === '' ? null : text;\\n }\", undefined, undefined, undefined, [{\"local\":\"staticTextWithTriviaGaps\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticTextWithTriviaGaps\"}], true),\n \"AtRuleName\": token(parser({ trivia: null }, sequence(not(token(parser({ trivia: null }, choice(keywords([\"@-import\",\"@-export\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"ImportAtKeyword\"], g[\"ConditionalAtKeyword\"], g[\"KeyframesAtKeyword\"])))), not(g[\"LayerAtKeyword\"]), g[\"AtIdentifierUnescaped\"]))),\n \"CustomValueAtKeyword\": token(parser({ trivia: null }, choice(keywords([\"@-import\",\"@-export\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"ImportAtKeyword\"], g[\"ConditionalAtKeyword\"], g[\"KeyframesAtKeyword\"]))),\n \"StaticAtRuleStatementName\": token(parser({ trivia: null }, sequence(not(token(parser({ trivia: null }, choice(keywords([\"@-import\",\"@-export\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"ImportAtKeyword\"], g[\"ConditionalAtKeyword\"], g[\"KeyframesAtKeyword\"])))), g[\"AtIdentifierUnescaped\"]))),\n \"UnknownAtRuleBlock\": _nd(\"UnknownAtRuleBlock\", sequence(g[\"AtRuleName\"], not(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*:\", \"\")), parser({ trivia: null }, sequence(g[\"UnknownAtPrelude\"], literal(\"{\"), parser({ trivia: null }, scanTo(literal(\"}\"), { skip: [token(balanced(\"{\", \"}\"))], orEOF: false })), literal(\"}\")))), \"(children) => {\\n const prelude = children[1];\\n if (prelude !== null && typeof prelude !== 'string') {\\n throw new TypeError('Less opaque at-rule block lost its grammar-owned prelude.');\\n }\\n // The body capture emits no child when the block is empty (`@foo {}`), so\\n // the closing `}` sits at index 3; a captured body sits there instead.\\n const rawBody = children.length === 5 ? staticText(children[3]) : '';\\n return unknownAtRuleBlock(\\n requireToken(children[0]).value,\\n prelude,\\n rawBody\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"staticText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticText\"},{\"local\":\"unknownAtRuleBlock\",\"source\":\"@jesscss/core/ast\",\"imported\":\"unknownAtRuleBlock\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"AtRuleStatement\": choice(_nd(\"AtRuleStatement\", sequence(keywords([\"@charset\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"Quoted\"], literal(\";\")), \"(children, _fields, span) => {\\n const prelude = requireValueNode(children[1]);\\n if (prelude.type === 'Interpolation') {\\n throw new LessDynamicCharsetError(span.start, span.end);\\n }\\n return atRuleStatement(requireToken(children[0]).value, prelude);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"LessDynamicCharsetError\",\"source\":\"./parse-error.js\",\"imported\":\"LessDynamicCharsetError\"},{\"local\":\"atRuleStatement\",\"source\":\"@jesscss/core/ast\",\"imported\":\"atRuleStatement\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), _nd(\"AtRuleStatement\", dispatch(g[\"StaticAtRuleStatementName\"], when(\"@namespace\", sequence(routed(), g[\"NamespacePrelude\"], literal(\";\")), { caseInsensitive: true }), when(\"@layer\", sequence(routed(), not(parser({ trivia: null }, literal(\"(\"))), optional(choice(g[\"BareVariableInterpolation\"], g[\"InterpolatedValue\"], g[\"AtRulePreludeValue\"])), literal(\";\")), { caseInsensitive: true }), otherwise(sequence(routed(), choice(attempt(sequence(g[\"AtRulePreludeValue\"], literal(\";\"))), sequence(not(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*:\", \"\")), g[\"AtRulePrelude\"], literal(\";\")))))), \"(children) => {\\n const routedChildren = children.flatMap(child => Array.isArray(child) ? child : [child]);\\n return atRuleStatement(requireToken(routedChildren[0]).value, routedChildren.find(isValueNode) ?? null);\\n }\", undefined, undefined, undefined, [{\"local\":\"atRuleStatement\",\"source\":\"@jesscss/core/ast\",\"imported\":\"atRuleStatement\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"}])),\n \"PseudoSelector\": _nd(\"PseudoSelector\", dispatch(_s46, when([\":is(\",\"::is(\",\":not(\",\"::not(\",\":has(\",\"::has(\",\":where(\",\"::where(\",\":matches(\",\"::matches(\",\":global(\",\"::global(\",\":local(\",\"::local(\"], _s48, { caseInsensitive: true }), when(endsWith(\"(\"), _s51), otherwise(_s52)), \"children => children.find(isLessSimpleToken)\", undefined, undefined, undefined, [{\"local\":\"isLessSimpleToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSimpleToken\"}]),\n \"InterpolatedPseudo\": _nd(\"InterpolatedPseudo\", parser({ trivia: null }, sequence(_s70, g[\"VariableInterpolation\"])), \"(children) => {\\n const delimiter = requireTerminalText(children[0]);\\n const interpolationFact = requireInterpolationFact(children[1]);\\n return interpolatedSimpleSelector(interpolation([\\n { lit: delimiter },\\n { ref: interpolationFact.ref, unquote: true }\\n ]));\\n }\", undefined, undefined, undefined, [{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"requireInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationFact\"},{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"}]),\n \"InterpolatedNthPseudo\": _nd(\"InterpolatedNthPseudo\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(token(parser({ trivia: null }, sequence(_s70, choice(g[\"NthChildPseudoSelectorName\"], g[\"NthTypePseudoSelectorName\"]), literal(\"(\")))), g[\"VariableInterpolation\"], literal(\")\"))), \"(children) => {\\n const open = requireTerminalText(children[0]);\\n const interpolationFact = requireInterpolationFact(children[1]);\\n return interpolatedSimpleSelector(interpolation([\\n { lit: open },\\n { ref: interpolationFact.ref, unquote: true },\\n { lit: ')' }\\n ]));\\n }\", undefined, undefined, undefined, [{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"requireInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationFact\"},{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"}]),\n \"InterpolatedArgumentPseudo\": _nd(\"InterpolatedArgumentPseudo\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(token(parser({ trivia: null }, sequence(_s70, not(_s47), g[\"LessIdentifier\"], literal(\"(\")))), many(_s50), g[\"VariableInterpolation\"], many(choice(g[\"VariableInterpolation\"], _s50)), literal(\")\"))), \"(children) => {\\n const open = requireTerminalText(children[0]);\\n const parts = interpolationPartsFrom(children.slice(1, -1), true, open);\\n parts.push({ lit: ')' });\\n return interpolatedSimpleSelector(interpolation(parts));\\n }\", undefined, undefined, undefined, [{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"},{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"}]),\n \"NthPseudoSelector\": choice(_nd(\"NthChildPseudo\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(token(parser({ trivia: null }, sequence(_s70, g[\"NthChildPseudoSelectorName\"], literal(\"(\")))), g[\"NthPseudoArgument\"], literal(\")\"))), \"children => simpleSelector(`${requireToken(children[0]).value}${requireString(children[1])})`)\", undefined, undefined, undefined, [{\"local\":\"simpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"simpleSelector\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireString\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireString\"}]), _nd(\"NthTypePseudo\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(token(parser({ trivia: null }, sequence(_s70, g[\"NthTypePseudoSelectorName\"], literal(\"(\")))), g[\"NthExpression\"], literal(\")\"))), \"children => simpleSelector(`${requireToken(children[0]).value}${requireToken(children[1]).value})`)\", undefined, undefined, undefined, [{\"local\":\"simpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"simpleSelector\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])),\n \"NthPseudoArgument\": _nd(\"NthChildArgument\", sequence(g[\"NthExpression\"], optional(sequence(g[\"NthOfKeyword\"], parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, g[\"PseudoArgumentSelector\"])))), \"(children) => {\\n const nth = requireToken(children[0]).value;\\n const selector = children.find(isLessSelectorList);\\n return selector === undefined ? nth : `${nth} of ${selector.selectors.map(selectorBranchCanonical).join(',')}`;\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isLessSelectorList\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorList\"},{\"local\":\"selectorBranchCanonical\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selectorBranchCanonical\"}]),\n \"PseudoArgumentText\": _nd(\"PseudoArgumentText\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, oneOrMore(g[\"pseudoArgumentInner\"])), \"(children, _fields, _span, _rawChildren, triviaLog) => staticTextWithTriviaGaps(children, triviaLog)\", undefined, undefined, undefined, [{\"local\":\"staticTextWithTriviaGaps\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticTextWithTriviaGaps\"}], true),\n \"PseudoArgumentGroup\": _nd(\"PseudoArgumentGroup\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, choice(sequence(literal(\"(\"), many(g[\"pseudoArgumentInner\"]), literal(\")\")), sequence(literal(\"[\"), many(g[\"pseudoArgumentInner\"]), literal(\"]\")))), \"(children, _fields, _span, _rawChildren, triviaLog) => staticTextWithTriviaGaps(children, triviaLog)\", undefined, undefined, undefined, [{\"local\":\"staticTextWithTriviaGaps\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticTextWithTriviaGaps\"}], true),\n \"PseudoArgumentCompound\": _nd(\"PseudoArgumentCompound\", parser({ trivia: classifiedTrivia({ \"lineComment\": _s11, \"blockComment\": _s12 }) }, oneOrMore(choice(g[\"NamespaceTypeSelector\"], _s43, _s44, g[\"PseudoSelector\"], g[\"NthPseudoSelector\"], g[\"AttributeSelector\"]))), \"children => lessSelectorTermFromTokens(children.map((child) => {\\n return isLessSimpleToken(child) ? child : simpleSelector(requireToken(child).value);\\n }))\", undefined, undefined, undefined, [{\"local\":\"lessSelectorTermFromTokens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessSelectorTermFromTokens\"},{\"local\":\"isLessSimpleToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSimpleToken\"},{\"local\":\"simpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"simpleSelector\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"PseudoArgumentComplex\": _nd(\"PseudoArgumentComplex\", sequence(optional(_s71), g[\"PseudoArgumentCompound\"], many(sequence(not(_s29), optional(_s54), parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, g[\"PseudoArgumentCompound\"])))), \"(children) => {\\n const first = children[0];\\n const leading = (isLessTerminalText(first, '>') || isLessTerminalText(first, '+') || isLessTerminalText(first, '~')) ? first : undefined;\\n const branch = selectorBranchOf(complexSegmentsFrom(children));\\n return leading === undefined ? branch : relativeSelector(requireCombinator(leading), lessBranchSegments(branch));\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"},{\"local\":\"selectorBranchOf\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selectorBranchOf\"},{\"local\":\"complexSegmentsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"complexSegmentsFrom\"},{\"local\":\"relativeSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"relativeSelector\"},{\"local\":\"requireCombinator\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireCombinator\"},{\"local\":\"lessBranchSegments\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessBranchSegments\"}]),\n \"PseudoArgumentSelectorTail\": _nd(\"PseudoArgumentSelectorTail\", sequence(literal(\",\"), parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, g[\"PseudoArgumentComplex\"])), \"children => children.find(isLessSelectorBranch)\", undefined, undefined, undefined, [{\"local\":\"isLessSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorBranch\"}]),\n \"PseudoArgumentSelector\": _nd(\"PseudoArgumentSelector\", sequence(g[\"PseudoArgumentComplex\"], many(g[\"PseudoArgumentSelectorTail\"])), \"children => selist(...selectorBranchesFrom(children))\", undefined, undefined, undefined, [{\"local\":\"selist\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selist\"},{\"local\":\"selectorBranchesFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"selectorBranchesFrom\"}]),\n \"AttributeNamespace\": _nd(\"AttributeNamespace\", choice(sequence(_s61, literal(\"|\"), not(literal(\"=\"))), literal(\"*|\"), literal(\"|\")), \"children => children.map(requireToken).map(token => token.value).join('')\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"NamespaceTypeSelector\": _nd(\"NamespaceTypeSelector\", sequence(g[\"AttributeNamespace\"], choice(_s61, literal(\"*\"))), \"children => simpleSelector(children.map(requireTerminalText).join(''))\", undefined, undefined, undefined, [{\"local\":\"simpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"simpleSelector\"},{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"}]),\n \"AttributeName\": _nd(\"AttributeName\", sequence(optional(g[\"AttributeNamespace\"]), _s61), \"children => ({\\n namespace: children.find((child) => typeof child === 'string') ?? '',\\n name: requireToken(children.at(-1)).value\\n })\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"AttributeMatch\": _nd(\"AttributeMatch\", sequence(g[\"AttributeOperator\"], choice(_s61, g[\"LiteralQuoted\"]), optional(g[\"AttributeModifier\"])), \"children => ({\\n operator: requireToken(children[0]).value,\\n value: staticText(children[1]),\\n modifier: children.length === 2 ? null : requireToken(children[2]).value\\n })\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"staticText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticText\"}]),\n \"AttributeSelector\": _nd(\"AttributeSelector\", sequence(literal(\"[\"), parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(g[\"AttributeName\"], optional(g[\"AttributeMatch\"]), literal(\"]\")))), \"(children) => {\\n const match = children.find((child) =>\\n typeof child === 'object' && child !== null && 'operator' in child && 'value' in child && 'modifier' in child\\n );\\n const name = children.find((child) =>\\n typeof child === 'object' && child !== null && 'namespace' in child && 'name' in child\\n );\\n if (name === undefined) {\\n throw new TypeError('Less grammar produced an attribute selector without a name.');\\n }\\n return simpleSelector(`[${name.namespace}${name.name}${match === undefined ? '' : `${match.operator}${match.value}${match.modifier === null ? '' : ` ${match.modifier}`}`}]`);\\n }\", undefined, undefined, undefined, [{\"local\":\"simpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"simpleSelector\"}]),\n \"InterpolatedAttributeToken\": _nd(\"InterpolatedAttributeToken\", _s72, \"children => interpolation(interpolationPartsFrom(children, true))\", undefined, undefined, undefined, [{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"InterpolatedAttributeValueToken\": _nd(\"InterpolatedAttributeValueToken\", _s72, \"children => interpolation(interpolationPartsFrom(children, false))\", undefined, undefined, undefined, [{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"InterpolatedAttributeQuoted\": _nd(\"InterpolatedAttributeQuoted\", choice(parser({ trivia: null }, sequence(literal(\"\\\"\"), many(choice(g[\"VariableInterpolation\"], g[\"QuotedDoubleText\"], literal(\"@\"), literal(\"$\"))), literal(\"\\\"\"))), parser({ trivia: null }, sequence(literal(\"'\"), many(choice(g[\"VariableInterpolation\"], g[\"QuotedSingleText\"], literal(\"@\"), literal(\"$\"))), literal(\"'\")))), \"children => interpolation(interpolationPartsFrom(children, true))\", undefined, undefined, undefined, [{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"InterpolatedAttributeSelector\": _nd(\"InterpolatedAttributeSelector\", sequence(literal(\"[\"), choice(sequence(optional(g[\"AttributeNamespace\"]), g[\"InterpolatedAttributeToken\"], optional(sequence(g[\"AttributeOperator\"], choice(g[\"InterpolatedAttributeValueToken\"], g[\"InterpolatedAttributeQuoted\"], g[\"LessIdentifier\"], g[\"LiteralQuoted\"]), optional(sequence(_s73, g[\"AttributeModifier\"]))))), sequence(g[\"AttributeName\"], g[\"AttributeOperator\"], choice(g[\"InterpolatedAttributeValueToken\"], g[\"InterpolatedAttributeQuoted\"]), optional(sequence(_s73, g[\"AttributeModifier\"])))), literal(\"]\")), \"(children) => {\\n const parts = [];\\n for (const child of children) {\\n if (isInterp(child)) {\\n for (const part of child.parts) {\\n if ('lit' in part) {\\n appendInterpolationLiteral(parts, part.lit);\\n } else {\\n parts.push(part);\\n }\\n }\\n } else if (isAttributeNameFact(child)) {\\n const name = child;\\n appendInterpolationLiteral(parts, `${name.namespace}${name.name}`);\\n } else if (typeof child === 'string') {\\n appendInterpolationLiteral(parts, child);\\n } else {\\n appendInterpolationLiteral(parts, requireToken(child).value);\\n }\\n }\\n return interpolatedSimpleSelector(interpolation(parts));\\n }\", undefined, undefined, undefined, [{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"},{\"local\":\"appendInterpolationLiteral\",\"source\":\"./grammar-helpers.js\",\"imported\":\"appendInterpolationLiteral\"},{\"local\":\"isAttributeNameFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isAttributeNameFact\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"}]),\n \"InterpolatedSimpleSelector\": _nd(\"InterpolatedSimpleSelector\", parser({ trivia: null }, sequence(regex(\"[.#](?:-?(?:[_a-zA-Z\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))(?:[-_a-zA-Z0-9\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))*)?\", \"\"), g[\"VariableInterpolation\"], many(choice(_s74, g[\"VariableInterpolation\"])))), \"children => interpolatedSimpleSelector(interpolation(interpolationPartsFrom(children, true)))\", undefined, undefined, undefined, [{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"BareInterpolatedSelector\": _nd(\"BareInterpolatedSelector\", sequence(g[\"VariableInterpolation\"], regex(\"(?=[ \\\\t\\\\n\\\\r\\\\f]*(?:[,{]))\", \"\")), \"(children) => {\\n const fact = requireInterpolationFact(children[0]);\\n return interpolatedSimpleSelector(interpolation([{ ref: fact.ref, unquote: true }]));\\n }\", undefined, undefined, undefined, [{\"local\":\"requireInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationFact\"},{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"}]),\n \"AdjacentInterpolatedSelector\": _nd(\"AdjacentInterpolatedSelector\", parser({ trivia: null }, sequence(g[\"VariableInterpolation\"], oneOrMore(g[\"VariableInterpolation\"]))), \"children => interpolatedSimpleSelector(interpolation(interpolationPartsFrom(children, true)))\", undefined, undefined, undefined, [{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"BareInterpolatedSelectorWithSuffix\": _nd(\"BareInterpolatedSelectorWithSuffix\", parser({ trivia: null }, sequence(g[\"VariableInterpolation\"], oneOrMore(choice(_s74, _s43)))), \"children => interpolatedSimpleSelector(interpolation(interpolationPartsFrom(children, true)))\", undefined, undefined, undefined, [{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"InterpolatedParentSuffix\": _nd(\"InterpolatedParentSuffix\", parser({ trivia: null }, sequence(_s44, g[\"VariableInterpolation\"], many(choice(_s74, g[\"VariableInterpolation\"])))), \"children => interpolatedSimpleSelector(interpolation(interpolationPartsFrom(children, true)))\", undefined, undefined, undefined, [{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"CompoundSelector\": _nd(\"CompoundSelector\", parser({ trivia: classifiedTrivia({ \"lineComment\": _s11, \"blockComment\": _s12 }) }, oneOrMore(_s42)), \"(children) => {\\n const simples = children.map(child => isLessSimpleToken(child) ? child : simpleSelector(requireToken(child).value));\\n return lessSelectorTermFromTokens(simples);\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessSimpleToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSimpleToken\"},{\"local\":\"simpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"simpleSelector\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"lessSelectorTermFromTokens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessSelectorTermFromTokens\"}]),\n \"ComplexSelector\": _nd(\"ComplexSelector\", sequence(g[\"CompoundSelector\"], many(sequence(not(_s29), optional(_s54), g[\"CompoundSelector\"]))), \"(children, _fields, span) => withSourceSpan(selectorBranchOf(complexSegmentsFrom(children)), span)\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"selectorBranchOf\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selectorBranchOf\"},{\"local\":\"complexSegmentsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"complexSegmentsFrom\"}]),\n \"SelectorList\": _nd(\"SelectorList\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sepBy(g[\"ComplexSelector\"], literal(\",\"), { min: 1 })), \"(children, _fields, span) => withSourceSpan(selist(...selectorBranchesFrom(children)), span)\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"selist\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selist\"},{\"local\":\"selectorBranchesFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"selectorBranchesFrom\"}]),\n \"ExtendTarget\": _nd(\"ExtendTarget\", sequence(_nd(\"ComplexSelector\", sequence(g[\"CompoundSelector\"], many(sequence(not(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*!?all(?=[ \\\\t\\\\n\\\\r\\\\f]*(?:,|\\\\)))\", \"i\")), optional(_s54), g[\"CompoundSelector\"]))), \"(children, _fields, span) => withSourceSpan(selectorBranchOf(complexSegmentsFrom(children)), span)\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"selectorBranchOf\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selectorBranchOf\"},{\"local\":\"complexSegmentsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"complexSegmentsFrom\"}]), optional(regex(\"!?all(?![-_a-zA-Z0-9\\\\u0080-\\\\uffff])\", \"i\"))), \"children => ({\\n target: selist(children.find(isLessSelectorBranch)),\\n partial: children.some(child => isLessTerminalText(child, 'all') || isLessTerminalText(child, '!all'))\\n })\", undefined, undefined, undefined, [{\"local\":\"selist\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selist\"},{\"local\":\"isLessSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorBranch\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]),\n \"ExtendStatement\": _nd(\"ExtendStatement\", sequence(literal(\"&\"), _s31, optional(literal(\";\"))), \"children => ({\\n bodyExtensions: children\\n .flatMap(child => Array.isArray(child) ? child.filter(isExtendTargetFact) : [])\\n .map(target => ({ target: target.target, partial: target.partial }))\\n })\", undefined, undefined, undefined, [{\"local\":\"isExtendTargetFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isExtendTargetFact\"}]),\n \"RulesetWithExtends\": _nd(\"Ruleset\", sequence(_nd(\"SelectorListWithExtends\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sepBy(_s55, literal(\",\"), { min: 1 })), \"(children, _fields, span) => ({\\n selector: withSourceSpan(selist(...children.flatMap(child => isSelectorBranchFact(child)\\n ? [child.selector]\\n : [])), span),\\n extensions: children.filter(isSelectorBranchFact).flatMap(branch => branch.extensions)\\n })\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"selist\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selist\"},{\"local\":\"isSelectorBranchFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSelectorBranchFact\"}]), optional(g[\"MixinGuard\"]), literal(\"{\"), _s33, optional(g[\"Call\"]), literal(\"}\"), optional(literal(\";\"))), \"(children, _fields, span, rawChildren) => {\\n const selectorFact = requireSelectorListWithExtendsFact(children[0]);\\n const bodyExtensions = children.filter(isBodyExtendFact).flatMap(fact => fact.bodyExtensions);\\n const extensions = [...selectorFact.extensions, ...bodyExtensions];\\n const node = withBlockBody(\\n rule(\\n selectorFact.selector,\\n // The fixed sequence places only direct declaration/comment facts between\\n // the braces. This validates that fact list; it never reparses body text.\\n requireRulesetBody(children.filter(isStatement)),\\n extensions.length === 0 ? undefined : extensions,\\n children.find(isMixinGuard)\\n ),\\n rawChildren\\n );\\n return hasRulesetTerminator(rawChildren) ? withSourceSpan(node, span) : node;\\n }\", undefined, undefined, undefined, [{\"local\":\"requireSelectorListWithExtendsFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSelectorListWithExtendsFact\"},{\"local\":\"isBodyExtendFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isBodyExtendFact\"},{\"local\":\"withBlockBody\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withBlockBody\"},{\"local\":\"rule\",\"source\":\"@jesscss/core/ast\",\"imported\":\"rule\"},{\"local\":\"requireRulesetBody\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireRulesetBody\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"},{\"local\":\"isMixinGuard\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinGuard\"},{\"local\":\"hasRulesetTerminator\",\"source\":\"./grammar-helpers.js\",\"imported\":\"hasRulesetTerminator\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"}]),\n \"RelativeSelector\": _nd(\"RelativeSelector\", sequence(optional(_s71), g[\"ComplexSelector\"]), \"(children, _fields, span) => {\\n const branch = children.find(isLessSelectorBranch);\\n const leading = children.find(child => isLessTerminalText(child, '>') || isLessTerminalText(child, '+') || isLessTerminalText(child, '~'));\\n return withSourceSpan(leading === undefined ? branch : relativeSelector(requireCombinator(leading), lessBranchSegments(branch)), span);\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorBranch\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"relativeSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"relativeSelector\"},{\"local\":\"requireCombinator\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireCombinator\"},{\"local\":\"lessBranchSegments\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessBranchSegments\"}]),\n \"NestedRulesetWithExtends\": _nd(\"Ruleset\", sequence(_nd(\"SelectorListWithExtends\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sepBy(choice(_s56, _nd(\"SelectorBranch\", g[\"RelativeSelector\"], \"children => ({ selector: children.find(isLessSelectorBranch), extensions: [] })\", undefined, undefined, undefined, [{\"local\":\"isLessSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorBranch\"}])), literal(\",\"), { min: 1 })), \"(children, _fields, span) => ({\\n selector: withSourceSpan(selist(...children.flatMap(child => isSelectorBranchFact(child)\\n ? [child.selector]\\n : [])), span),\\n extensions: children.filter(isSelectorBranchFact).flatMap(branch => branch.extensions)\\n })\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"selist\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selist\"},{\"local\":\"isSelectorBranchFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSelectorBranchFact\"}]), optional(g[\"MixinGuard\"]), literal(\"{\"), _s33, optional(g[\"Call\"]), literal(\"}\"), optional(literal(\";\"))), \"(children, _fields, span, rawChildren) => {\\n const selectorFact = requireSelectorListWithExtendsFact(children[0]);\\n const bodyExtensions = children.filter(isBodyExtendFact).flatMap(fact => fact.bodyExtensions);\\n const extensions = [...selectorFact.extensions, ...bodyExtensions];\\n const node = withBlockBody(\\n rule(\\n selectorFact.selector,\\n requireRulesetBody(children.filter(isStatement)),\\n extensions.length === 0 ? undefined : extensions,\\n children.find(isMixinGuard)\\n ),\\n rawChildren\\n );\\n return hasRulesetTerminator(rawChildren) ? withSourceSpan(node, span) : node;\\n }\", undefined, undefined, undefined, [{\"local\":\"requireSelectorListWithExtendsFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSelectorListWithExtendsFact\"},{\"local\":\"isBodyExtendFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isBodyExtendFact\"},{\"local\":\"withBlockBody\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withBlockBody\"},{\"local\":\"rule\",\"source\":\"@jesscss/core/ast\",\"imported\":\"rule\"},{\"local\":\"requireRulesetBody\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireRulesetBody\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"},{\"local\":\"isMixinGuard\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinGuard\"},{\"local\":\"hasRulesetTerminator\",\"source\":\"./grammar-helpers.js\",\"imported\":\"hasRulesetTerminator\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"}]),\n \"Quoted\": _nd(\"Quoted\", choice(parser({ trivia: null }, sequence(literal(\"\\\"\"), many(choice(g[\"VariableInterpolation\"], g[\"PropertyInterpolation\"], g[\"QuotedDoubleText\"], literal(\"@\"), literal(\"$\"))), literal(\"\\\"\"))), parser({ trivia: null }, sequence(literal(\"'\"), many(choice(g[\"VariableInterpolation\"], g[\"PropertyInterpolation\"], g[\"QuotedSingleText\"], literal(\"@\"), literal(\"$\"))), literal(\"'\")))), \"(children) => {\\n const open = requireToken(children[0]);\\n if (!children.some(isInterpolationFact)) {\\n const value = children.slice(1, -1).map(requireToken).map(token => token.value).join('');\\n return quoted(`${open.value}${value}${open.value}`, value, open.value, false);\\n }\\n const parts = interpolationPartsFrom(children.slice(1, -1), true, open.value);\\n appendInterpolationLiteral(parts, open.value);\\n return interpolation(parts);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterpolationFact\"},{\"local\":\"quoted\",\"source\":\"@jesscss/core/ast\",\"imported\":\"quoted\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"},{\"local\":\"appendInterpolationLiteral\",\"source\":\"./grammar-helpers.js\",\"imported\":\"appendInterpolationLiteral\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"}]),\n \"LiteralQuoted\": _nd(\"Quoted\", choice(parser({ trivia: null }, sequence(literal(\"\\\"\"), many(choice(g[\"QuotedDoubleText\"], sequence(not(parser({ trivia: null }, literal(\"@{\"))), literal(\"@\")), literal(\"$\"))), literal(\"\\\"\"))), parser({ trivia: null }, sequence(literal(\"'\"), many(choice(g[\"QuotedSingleText\"], sequence(not(parser({ trivia: null }, literal(\"@{\"))), literal(\"@\")), literal(\"$\"))), literal(\"'\")))), \"(children) => {\\n const open = requireToken(children[0]);\\n const value = children.slice(1, -1).map(requireToken).map(token => token.value).join('');\\n return quoted(`${open.value}${value}${open.value}`, value, open.value, false);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"quoted\",\"source\":\"@jesscss/core/ast\",\"imported\":\"quoted\"}]),\n \"EscapedQuoted\": _nd(\"Quoted\", choice(parser({ trivia: null }, sequence(literal(\"~\\\"\"), many(choice(g[\"VariableInterpolation\"], g[\"PropertyInterpolation\"], g[\"QuotedDoubleText\"], literal(\"@\"), literal(\"$\"))), literal(\"\\\"\"))), parser({ trivia: null }, sequence(literal(\"~'\"), many(choice(g[\"VariableInterpolation\"], g[\"PropertyInterpolation\"], g[\"QuotedSingleText\"], literal(\"@\"), literal(\"$\"))), literal(\"'\")))), \"(children) => {\\n const opener = requireToken(children[0]).value;\\n const quote = opener[1];\\n if (quote !== '\\\"' && quote !== '\\\\'') {\\n throw new TypeError('Less escaped quote lost its quote delimiter.');\\n }\\n if (children.some(isInterpolationFact)) {\\n return interpolation(interpolationPartsFrom(children.slice(1, -1), true));\\n }\\n const value = children.slice(1, -1).map(requireToken).map(token => token.value).join('');\\n return quoted(`${opener}${value}${quote}`, value, quote, true);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterpolationFact\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"},{\"local\":\"quoted\",\"source\":\"@jesscss/core/ast\",\"imported\":\"quoted\"}]),\n \"PlainUrl\": _nd(\"Url\", parser({ trivia: null }, sequence(_s76, optional(_s19), optional(field(\"body\", choice(g[\"EscapedQuoted\"], g[\"Quoted\"], _s20, _s21))), optional(_s19), literal(\")\"))), \"(_children, fields) => {\\n const captured = fields?.body;\\n if (Array.isArray(captured)) {\\n throw new TypeError('Less plain URL produced repeated body facts.');\\n }\\n const body = captured?.value;\\n if (body === undefined) {\\n return url(any(''));\\n }\\n if (isQuoted(body) || isInterp(body)) {\\n return url(body);\\n }\\n return url(any(requireTerminalText(body)));\\n }\", undefined, undefined, undefined, [{\"local\":\"url\",\"source\":\"@jesscss/core/ast\",\"imported\":\"url\"},{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"isQuoted\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isQuoted\"},{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"},{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"}]),\n \"UrlInterpolation\": _nd(\"UrlInterpolation\", parser({ trivia: null }, choice(sequence(g[\"VariableReference\"], oneOrMore(choice(_s21, g[\"Interpolation\"]))), sequence(g[\"Interpolation\"], many(choice(_s21, g[\"Interpolation\"]))))), \"children => interpolation(interpolationPartsFrom(children, true))\", undefined, undefined, undefined, [{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"VariableUrl\": _nd(\"Url\", sequence(_s76, choice(g[\"UrlInterpolation\"], g[\"VariableReference\"]), literal(\")\")), \"children => url(requireValueNode(children[1]))\", undefined, undefined, undefined, [{\"local\":\"url\",\"source\":\"@jesscss/core/ast\",\"imported\":\"url\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"ImportOption\": _nd(\"ImportOption\", keywords([\"reference\",\"optional\",\"multiple\",\"inline\",\"once\",\"less\",\"css\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), \"children => any(requireToken(children[0]).value)\", undefined, undefined, undefined, [{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"ImportOptions\": _nd(\"ImportOptions\", sequence(literal(\"(\"), sepBy(field(\"option\", g[\"ImportOption\"]), literal(\",\"), { min: 1 }), literal(\")\")), \"(_children, fields) => {\\n const options = requireFields(fields, 'option').map((option) => {\\n const value = option.value;\\n if (!isAny(value)) {\\n throw new TypeError('Less grammar produced a non-static import option.');\\n }\\n return value;\\n });\\n return list(options, ',');\\n }\", undefined, undefined, undefined, [{\"local\":\"requireFields\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireFields\"},{\"local\":\"isAny\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isAny\"},{\"local\":\"list\",\"source\":\"@jesscss/core/ast\",\"imported\":\"list\"}]),\n \"ImportTarget\": _nd(\"ImportTarget\", _s7, \"(children) => {\\n const target = children.find(child => isQuoted(child) || isUrl(child) || isInterp(child));\\n if (target === undefined) {\\n throw new TypeError('Less import target lost its typed value.');\\n }\\n return target;\\n }\", undefined, undefined, undefined, [{\"local\":\"isQuoted\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isQuoted\"},{\"local\":\"isUrl\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isUrl\"},{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"}]),\n \"ImportTail\": _nd(\"ImportTail\", choice(_nd(\"ImportQueryTail\", sequence(literal(\"(\"), g[\"Identifier\"], regex(\":[ \\\\t\\\\n\\\\r\\\\f]*\", \"\"), g[\"VariableReference\"], literal(\")\")), \"(children, _fields, _span, _rawChildren, _triviaLog, state) =>\\n block(operation(':', keyword(requireToken(children[1]).value), requireValueNode(children[3]), false,\\n lessMathOutsideParens(state, ':')))\", undefined, undefined, undefined, [{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"},{\"local\":\"operation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"operation\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"}], true), g[\"AtRuleInterpolation\"], g[\"ImportTailText\"]), \"children => children.length === 1 ? children[0] : children\"),\n \"ImportTailText\": parser({ trivia: null }, oneOrMore(choice(_s77, g[\"Quoted\"], g[\"ImportTailGroup\"]))),\n \"ImportTailGroup\": g[\"ImportTailParen\"],\n \"ImportTailParen\": parser({ trivia: null }, sequence(literal(\"(\"), many(choice(_s77, g[\"Quoted\"], g[\"ImportTailGroup\"])), literal(\")\"))),\n \"blockBody\": many(_s34),\n \"BareVariableInterpolation\": _nd(\"BareVariableInterpolation\", parser({ trivia: null }, sequence(literal(\"@\"), _s4)), \"(children, _fields, span) => {\\n const name = requireSupportedVariableName(children[1], span.start, span.end);\\n throw new LessBareVariableInterpolationError(span.start, span.end, name);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"},{\"local\":\"LessBareVariableInterpolationError\",\"source\":\"./parse-error.js\",\"imported\":\"LessBareVariableInterpolationError\"}]),\n \"valuePiece\": choice(g[\"UnicodeRange\"], _nd(\"TopSumMaybeDivision\", parser({ trivia: null }, sequence(g[\"TopSum\"], many(sequence(field(\"separator\", _s26), g[\"TopSum\"])))), \"(children, fields, _span, _rawChildren, _triviaLog, state) => {\\n if (fields?.separator === undefined) {\\n return requireValueNode(children[0]);\\n }\\n const slashBoundaries = requireFields(fields, 'separator').map((separator) => {\\n if (!isSlashBoundaryFact(separator.value)) {\\n throw new TypeError('Less value piece produced an invalid slash boundary.');\\n }\\n return separator.value;\\n });\\n\\n /*\\n * The group is preserved bytes exactly when the policy does NOT divide a\\n * bare `/`; under `math: always` it is not preserved and its operands keep\\n * the arithmetic they were built with. See {@link withoutBareMath}.\\n */\\n const preserved = !lessMathOutsideParens(state, '/');\\n const values = children.filter(isValueNode);\\n const parts = [];\\n for (let index = 0; index < values.length; index += 1) {\\n parts.push(preserved ? withoutBareMath(values[index]) : values[index]);\\n if (index < slashBoundaries.length) {\\n parts.push(keyword('/'));\\n }\\n }\\n const separators = slashBoundaries.flatMap(boundary => [boundary.before, boundary.after]);\\n return withValueLayout(\\n spaced(parts),\\n separators.length === parts.length - 1\\n ? separators\\n : Array.from({ length: parts.length - 1 }, () => '')\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"requireFields\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireFields\"},{\"local\":\"isSlashBoundaryFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSlashBoundaryFact\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"withoutBareMath\",\"source\":\"./grammar-helpers.js\",\"imported\":\"withoutBareMath\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"withValueLayout\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withValueLayout\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"}], true), literal(\"/\"), literal(\"-\"), literal(\"%\")),\n \"pseudoArgumentInner\": choice(g[\"PseudoArgumentGroup\"], g[\"LiteralQuoted\"], _s50),\n \"queryLeaf\": choice(g[\"VariableReferenceChain\"], g[\"Dimension\"], g[\"Color\"], g[\"LiteralQuoted\"], dispatch(token(parser({ trivia: null }, sequence(regex(\"(?!(?:url)(?=\\\\())-?[_a-zA-Z\\\\u0080-\\\\uffff][-_a-zA-Z0-9\\\\u0080-\\\\uffff]*\", \"i\"), optional(literal(\"(\"))))), when(\"calc(\", g[\"CalcFunction\"], { caseInsensitive: true }), when(endsWith(\"(\"), g[\"GenericFunction\"]), otherwise(_nd(\"Keyword\", routed(), \"children => keyword(requireToken(children[0]).value)\", undefined, undefined, undefined, [{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])))),\n \"interpolatedValueTail\": choice(g[\"InterpolatedValueTail\"], g[\"Interpolation\"]),\n \"GenericFunction\": _nd(\"Call\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(routed(), g[\"FunctionArguments\"], literal(\")\"))), \"(children, fields, span, rawChildren, triviaLog, state) =>\\n functionCallFromChildren(children, fields, span, triviaLog, state, rawChildren)\", undefined, undefined, undefined, [{\"local\":\"functionCallFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"functionCallFromChildren\"}]),\n \"CalcFunction\": _nd(\"CalcCall\", parser({ trivia: null }, sequence(routed(), optional(trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12))))), g[\"MathSum\"], optional(trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12))))), literal(\")\"))), \"children => funcCall(functionNameFromOpener(children[0]), [requireValueNode(children.find(isValueNode))])\", undefined, undefined, undefined, [{\"local\":\"funcCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"funcCall\"},{\"local\":\"functionNameFromOpener\",\"source\":\"./grammar-helpers.js\",\"imported\":\"functionNameFromOpener\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"}]),\n \"FunctionArguments\": optional(sequence(sepBy(choice(g[\"DoubledQuoteArgument\"], g[\"ValueBlock\"], g[\"FunctionArgument\"]), field(\"separator\", regex(\"[;,][ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), { min: 1 }), optional(field(\"trailingSeparator\", parser({ trivia: null }, regex(\"[;,][ \\\\t\\\\n\\\\r\\\\f]*\", \"\")))))),\n \"whitespace\": trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12)))),\n \"rw\": trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12))))\n})\n})\n})()"
28016
+ ns: "_0d498e36_",
28017
+ ir: "(() => {\n const _s66 = parser({ trivia: null }, sequence(literal(\"\\\"\"), regex(\"(?:[^\\\"\\\\\\\\]|\\\\\\\\.)*\", \"\"), literal(\"\\\"\")))\n const _s67 = parser({ trivia: null }, sequence(literal(\"'\"), regex(\"(?:[^'\\\\\\\\]|\\\\\\\\.)*\", \"\"), literal(\"'\")))\n const _s12 = regex(\"\\\\/\\\\*(?:[^*]|\\\\*(?!\\\\/))*\\\\*\\\\/\", \"\")\n return rules({ scanSkip: [_s66, _s67, _s12] }, (g) => {\n const _s0 = choice(g[\"ImportStatement\"], g[\"PluginDirective\"], g[\"ValueBlockDeclaration\"], g[\"VarDeclaration\"], g[\"SupportsBlock\"], g[\"MediaContainerBlock\"], g[\"ReferenceCall\"], g[\"Keyframes\"], g[\"AtRuleBlock\"], g[\"UnknownAtRuleBlock\"], g[\"AtRuleStatement\"])\n const _s1 = choice(_nd(\"UnsupportedMixinName\", parser({ trivia: null }, choice(sequence(choice(literal(\".\"), literal(\"#\")), literal(\"-\"), literal(\"(\"), optional(g[\"MixinArguments\"]), literal(\")\")), sequence(choice(literal(\".\"), literal(\"#\")), literal(\"-\"), literal(\";\")))), \"(_children, _fields, span) => {\\n throw new LessUnsupportedMixinNameError(span.start, span.end);\\n }\", undefined, undefined, undefined, [{\"local\":\"LessUnsupportedMixinNameError\",\"source\":\"./parse-error.js\",\"imported\":\"LessUnsupportedMixinNameError\"}]), g[\"ClassIdStatement\"])\n const _s2 = not(regex(\"[-\\\\w]+[ \\\\t]*:[ \\\\t\\\\n\\\\r\\\\f]\", \"\"))\n const _s4 = choice(_nd(\"UnsupportedVariableName\", regex(\"[0-9][-_a-zA-Z0-9\\\\u0080-\\\\uffff]*\", \"\"), \"children => ({ unsupportedVariableName: requireToken(children[0]).value })\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), regex(\"[_a-zA-Z\\\\u0080-\\\\uffff][-_a-zA-Z0-9\\\\u0080-\\\\uffff]*\", \"\"), _lf(parser({ trivia: null }, sequence(literal(\"-\"), optional(regex(\"[-_a-zA-Z0-9\\\\u0080-\\\\uffff]+\", \"\")))), \"(children) => {\\n if (!Array.isArray(children)) {\\n throw new TypeError('Less dash variable name lost its grammar facts.');\\n }\\n const tail = children[1];\\n return tail === undefined || tail === null\\n ? { unsupportedVariableName: '-' }\\n : `-${requireTerminalText(tail)}`;\\n }\"))\n const _s3 = _nd(\"VariableName\", parser({ trivia: null }, sequence(literal(\"@\"), _s4)), \"(children, _fields, span) => `@${requireSupportedVariableName(children[1], span.start, span.end)}`\", undefined, undefined, undefined, [{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"}])\n const _s5 = not(parser({ trivia: null }, literal(\"[\")))\n const _s6 = choice(literal(\";\"), peek(literal(\"}\")))\n const _s7 = choice(g[\"EscapedQuoted\"], g[\"Quoted\"], choice(g[\"VariableUrl\"], g[\"PlainUrl\"]))\n const _s10 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")\n const _s11 = regex(\"\\\\/\\\\/[^\\\\n\\\\r]*\", \"\")\n const _s8 = keywords([\"not\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })\n const _s13 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]*(?:>=|<=|=>|=<|=~|[<>=]|(?:and|or)(?![-_a-zA-Z0-9\\\\u0080-\\\\uffff]))\", \"i\")\n const _s14 = parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(peek(trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12))))), not(regex(\"@[^;{}()'\\\"]*\\\\{\", \"\")), g[\"valuePiece\"]))\n const _s15 = sequence(_lf(peek(literal(\"@\")), \"() => ({ kind: 'glued-value-boundary' })\"), g[\"valuePiece\"])\n const _s16 = token(parser({ trivia: null }, sequence(not(keywords([\"calc(\",\"url(\"], { caseInsensitive: true })), g[\"InterpolatedValueStart\"], literal(\"(\"))))\n const _s17 = token(parser({ trivia: null }, sequence(g[\"InterpolatedValueStart\"], optional(literal(\"(\")))))\n const _s19 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")\n const _s20 = regex(\"data:(?:[^\\\"'()\\\\\\\\\\\\x00-\\\\x08\\\\x0B\\\\x0E-\\\\x1F\\\\x7F]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))+?(?=[ \\\\t\\\\n\\\\r\\\\f]*\\\\))\", \"i\")\n const _s21 = regex(\"(?!@(?:-?[_a-zA-Z\\\\u0080-\\\\uffff][-_a-zA-Z0-9\\\\u0080-\\\\uffff]*|\\\\{))(?:[^\\\"'()\\\\\\\\ \\\\t\\\\n\\\\f\\\\r\\\\x00-\\\\x08\\\\x0B\\\\x0E-\\\\x1F\\\\x7F]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))+\", \"\")\n const _s18 = _nd(\"Url\", parser({ trivia: null }, sequence(routed(), optional(_s19), optional(field(\"body\", choice(g[\"EscapedQuoted\"], g[\"Quoted\"], _s20, _s21))), optional(_s19), literal(\")\"))), \"(_children, fields) => {\\n const captured = fields?.body;\\n if (Array.isArray(captured)) {\\n throw new TypeError('Less routed plain URL produced repeated body facts.');\\n }\\n const body = captured?.value;\\n if (body === undefined) {\\n return url(any(''));\\n }\\n if (isQuoted(body) || isInterp(body)) {\\n return url(body);\\n }\\n return url(any(requireTerminalText(body)));\\n }\", undefined, undefined, undefined, [{\"local\":\"url\",\"source\":\"@jesscss/core/ast\",\"imported\":\"url\"},{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"isQuoted\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isQuoted\"},{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"},{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"}])\n const _s23 = trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12))))\n const _s24 = choice(_lf(parser({ trivia: null }, sequence(_s23, keywords([\"-\",\"+\"], { caseInsensitive: false }), _s23)), \"children => children[1]\"), regex(\"[-+](?=[0-9.])|[ \\\\t\\\\n\\\\r\\\\f]*[-+](?![0-9.])[ \\\\t\\\\n\\\\r\\\\f]*\", \"\"))\n const _s25 = _lf(parser({ trivia: null }, sequence(optional(_s23), keywords([\"*\",\"%\"], { caseInsensitive: false }), optional(_s23))), \"children => children[1]\")\n const _s27 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")\n const _s26 = _lf(sequence(optional(_s27), literal(\"/\"), optional(_s27)), \"(children) => {\\n if (!Array.isArray(children)) {\\n throw new TypeError('Less slash boundary produced a non-sequence value.');\\n }\\n return {\\n before: staticText(children[0]),\\n after: staticText(children[2])\\n };\\n }\")\n const _s29 = sequence(optional(regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")), keywords([\"when\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }))\n const _s31 = _nd(\"ExtendPseudo\", sequence(parser({ trivia: null }, sequence(literal(\":\"), literal(\"extend\"), literal(\"(\"))), sepBy(g[\"ExtendTarget\"], literal(\",\"), { min: 1 }), literal(\")\")), \"children => children.filter(isExtendTargetFact)\", undefined, undefined, undefined, [{\"local\":\"isExtendTargetFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isExtendTargetFact\"}])\n const _s32 = peek(choice(literal(\",\"), _s29, literal(\"{\")))\n const _s30 = choice(sequence(_s31, _s32), _s32)\n const _s35 = _nd(\"GuardedRuleset\", sequence(_s2, g[\"NestedRulesetWithExtends\"]), \"(children) => {\\n const ruleset = children.find(isRuleset);\\n if (ruleset === undefined) {\\n throw new TypeError('Less guarded ruleset lost its ruleset fact.');\\n }\\n return ruleset;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isRuleset\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isRuleset\"}])\n const _s36 = _nd(\"DeclarationItem\", sequence(g[\"Declaration\"], _s6), \"(children) => {\\n const declaration = children.find(isLessDeclaration);\\n if (declaration === undefined) {\\n throw new TypeError('Less declaration-list item lost its declaration fact.');\\n }\\n return declaration;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isLessDeclaration\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessDeclaration\"}])\n const _s34 = choice(_s0, _s1, g[\"FunctionStatement\"], _s35, _s36, literal(\";\"))\n const _s33 = many(choice(_s34, g[\"ExtendStatement\"]))\n const _s37 = _nd(\"PositionalMixinArgument\", sequence(g[\"CallArgumentValue\"], optional(literal(\"...\"))), \"children => callArg(\\n requireMixinCallArgumentValue(children[0]),\\n undefined,\\n children.some(child => isLessTerminalText(child, '...'))\\n )\", undefined, undefined, undefined, [{\"local\":\"callArg\",\"source\":\"@jesscss/core/ast\",\"imported\":\"callArg\"},{\"local\":\"requireMixinCallArgumentValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireMixinCallArgumentValue\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}])\n const _s39 = choice(_nd(\"NamedMixinArgument\", sequence(literal(\"@\"), _s4, literal(\":\"), g[\"CallArgumentValue\"]), \"(children, _fields, span) => {\\n const name = requireSupportedVariableName(children[1], span.start, span.start + variableNameText(children[1]).length + 1);\\n return callArg(requireMixinCallArgumentValue(children[3]), name);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"},{\"local\":\"variableNameText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"variableNameText\"},{\"local\":\"callArg\",\"source\":\"@jesscss/core/ast\",\"imported\":\"callArg\"},{\"local\":\"requireMixinCallArgumentValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireMixinCallArgumentValue\"}]), _s37)\n const _s38 = choice(g[\"MixinArgumentGroup\"], _s39)\n const _s40 = keywords([\",\",\";\"], { caseInsensitive: false })\n const _s41 = regex(\"[.#]-?(?:[_a-zA-Z\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))(?:[-_a-zA-Z0-9\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))*\", \"\")\n const _s43 = regex(\"(?:[.#]?-?(?:[_a-zA-Z\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))(?:[-_a-zA-Z0-9\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))*|\\\\*)\", \"\")\n const _s44 = regex(\"&[-_a-zA-Z0-9\\\\u0080-\\\\uffff]*\", \"\")\n const _s48 = _nd(\"PseudoSelector\", sequence(routed(), _nd(\"PseudoSelectorArgument\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, g[\"PseudoArgumentSelector\"]), \"children => requireSelectorList(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireSelectorList\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSelectorList\"}]), literal(\")\")), \"children => staticSelectorPseudoFrom(\\n requireToken(children[0]).value.slice(0, -1),\\n children[1]\\n )\", undefined, undefined, undefined, [{\"local\":\"staticSelectorPseudoFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticSelectorPseudoFrom\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])\n const _s50 = regex(\"(?:[^()\\\\[\\\\]'\\\"@/]|@(?![@{_a-zA-Z\\\\u0080-\\\\uffff-])|\\\\/(?!\\\\*))+\", \"\")\n const _s49 = _nd(\"InterpolatedArgumentPseudo\", sequence(routed(), many(_s50), g[\"VariableInterpolation\"], many(choice(g[\"VariableInterpolation\"], _s50)), literal(\")\")), \"(children) => {\\n const open = requireToken(children[0]).value;\\n const parts = interpolationPartsFrom(children.slice(1, -1), true, open);\\n parts.push({ lit: ')' });\\n return interpolatedSimpleSelector(interpolation(parts));\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"},{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"}])\n const _s51 = _nd(\"GenericPseudo\", sequence(routed(), g[\"PseudoArgumentText\"], literal(\")\")), \"children => staticNonSelectorPseudoFrom(\\n requireToken(children[0]).value.slice(0, -1),\\n requireString(children[1])\\n )\", undefined, undefined, undefined, [{\"local\":\"staticNonSelectorPseudoFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticNonSelectorPseudoFrom\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireString\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireString\"}])\n const _s52 = _nd(\"GenericPseudo\", routed(), \"children => staticNonSelectorPseudoFrom(requireToken(children[0]).value, null)\", undefined, undefined, undefined, [{\"local\":\"staticNonSelectorPseudoFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticNonSelectorPseudoFrom\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])\n const _s47 = parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, token(parser({ trivia: null }, sequence(keywords([\"extend\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), literal(\"(\")))))\n const _s46 = token(parser({ trivia: null }, sequence(regex(\"::?(?![ \\\\t\\\\n\\\\r\\\\f])\", \"\"), not(_s47), not(g[\"NthPseudoSelectorName\"]), g[\"LessIdentifier\"], optional(literal(\"(\")))))\n const _s45 = dispatch(_s46, when([\":is(\",\"::is(\",\":not(\",\"::not(\",\":has(\",\"::has(\",\":where(\",\"::where(\",\":matches(\",\"::matches(\",\":global(\",\"::global(\",\":local(\",\"::local(\"], choice(_s48, _s49), { caseInsensitive: true }), when(endsWith(\"(\"), choice(_s49, _s51)), otherwise(_s52))\n const _s42 = choice(g[\"InterpolatedParentSuffix\"], g[\"InterpolatedSimpleSelector\"], g[\"AdjacentInterpolatedSelector\"], g[\"BareInterpolatedSelectorWithSuffix\"], g[\"BareInterpolatedSelector\"], g[\"NamespaceTypeSelector\"], _s43, _s44, _s45, g[\"InterpolatedNthPseudo\"], g[\"NthPseudoSelector\"], g[\"InterpolatedArgumentPseudo\"], g[\"InterpolatedPseudo\"], g[\"AttributeSelector\"], g[\"InterpolatedAttributeSelector\"])\n const _s54 = keywords([\"||\",\">\",\"+\",\"~\",\"|\"], { caseInsensitive: false })\n const _s57 = _nd(\"InlineExtendSubjectCompound\", parser({ trivia: classifiedTrivia({ \"lineComment\": _s11, \"blockComment\": _s12 }) }, oneOrMore(choice(g[\"NamespaceTypeSelector\"], _s43, _s44, _s45, g[\"NthPseudoSelector\"], g[\"AttributeSelector\"]))), \"children => lessSelectorTermFromTokens(children.map(child => isLessSimpleToken(child) ? child : simpleSelector(requireToken(child).value)))\", undefined, undefined, undefined, [{\"local\":\"lessSelectorTermFromTokens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessSelectorTermFromTokens\"},{\"local\":\"isLessSimpleToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSimpleToken\"},{\"local\":\"simpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"simpleSelector\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])\n const _s56 = _nd(\"SelectorBranch\", sequence(_nd(\"ComplexSelector\", sequence(_s57, many(sequence(not(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*!?all(?=[ \\\\t\\\\n\\\\r\\\\f]*(?:,|\\\\)))\", \"i\")), _nd(\"InlineExtendSubjectComplexTail\", sequence(optional(_s54), _s57), \"combinatorTailReducer\", { buildArity: 1 }, undefined, \"function combinatorTailReducer(children: readonly unknown[]): ComplexTailFact {\\n const token = children.find(child => !isSelectorTerm(child));\\n const term = children.find(isSelectorTerm)!;\\n return { combinator: token === undefined ? ' ' : requireCombinator(token), term };\\n}\")))), \"(children, _fields, span) => withSourceSpan(selectorBranchOf([\\n { term: children.find(isSelectorTerm) },\\n // The terminal-flag lookahead is a recognition-only child. Keep only\\n // actual tail facts: otherwise the successful stop check is emitted as\\n // a fake descendant tail with no compound.\\n ...children.slice(1).filter(isComplexTailFact)\\n ]), span)\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"selectorBranchOf\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selectorBranchOf\"},{\"local\":\"isSelectorTerm\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSelectorTerm\"},{\"local\":\"isComplexTailFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isComplexTailFact\"}]), _s30), \"(children) => {\\n const subject = children.find(isLessSelectorBranch);\\n const extensions = children\\n .filter(Array.isArray)\\n .flatMap(child => child.filter(isExtendTargetFact))\\n .map(target => ({ target: target.target, partial: target.partial, subject: selist(subject) }));\\n return { selector: subject, extensions };\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorBranch\"},{\"local\":\"isExtendTargetFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isExtendTargetFact\"},{\"local\":\"selist\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selist\"}])\n const _s55 = choice(_s56, _nd(\"SelectorBranch\", g[\"ComplexSelector\"], \"children => ({ selector: children.find(isLessSelectorBranch), extensions: [] })\", undefined, undefined, undefined, [{\"local\":\"isLessSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorBranch\"}]))\n const _s58 = _nd(\"MixinPathTail\", sequence(optional(regex(\">\", \"\")), _s41), \"(children) => {\\n const combToken = children.find(child => isLessTerminalText(child, '>'));\\n return {\\n combinator: combToken === undefined ? ' ' : '>',\\n selector: requireToken(children.at(-1)).value\\n };\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])\n const _s59 = _nd(\"MixinGuardDefaultOperand\", regex(\"default[ \\\\t\\\\n\\\\r\\\\f]*\\\\([ \\\\t\\\\n\\\\r\\\\f]*\\\\)(?![-_a-zA-Z0-9\\\\u0080-\\\\uffff])\", \"\"), \"() => funcCall('default', [])\", undefined, undefined, undefined, [{\"local\":\"funcCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"funcCall\"}])\n const _s60 = regex(\">=|<=|=>|=<|=~|[<>=]\", \"\")\n const _s61 = regex(\"-?(?:[_a-zA-Z\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))(?:[-_a-zA-Z0-9\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))*\", \"\")\n const _s62 = parser({ trivia: null }, regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\"))\n const _s63 = parser({ trivia: null }, literal(\",\"))\n const _s64 = parser({ trivia: null }, choice(token(token(balanced(\"(\", \")\"))), token(token(balanced(\"[\", \"]\")))))\n const _s65 = parser({ trivia: null }, choice(_s66, _s67))\n const _s69 = sequence(literal(\"{\"), g[\"blockBody\"], optional(g[\"Call\"]), literal(\"}\"))\n const _s70 = keywords([\"::\",\":\"], { caseInsensitive: false })\n const _s71 = keywords([\">\",\"+\",\"~\"], { caseInsensitive: false })\n const _s72 = parser({ trivia: null }, sequence(optional(choice(g[\"InterpolatedValueStart\"], g[\"InterpolatedValueDash\"])), g[\"Interpolation\"], many(g[\"interpolatedValueTail\"])))\n const _s73 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")\n const _s74 = regex(\"(?:[-_a-zA-Z0-9\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))+\", \"\")\n const _s76 = token(parser({ trivia: null }, regex(\"url\\\\(\", \"i\")))\n const _s77 = regex(\"[^()\\\\[\\\\]{};@'\\\"]+\", \"\")\n return ({\n \"Stylesheet\": _nd(\"Stylesheet\", sequence(many(choice(_s0, _s1, g[\"FunctionStatement\"], _nd(\"GuardedRuleset\", sequence(_s2, g[\"RulesetWithExtends\"]), \"(children) => {\\n const ruleset = children.find(isRuleset);\\n if (ruleset === undefined) {\\n throw new TypeError('Less declaration-guarded ruleset lost its rule.');\\n }\\n return ruleset;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isRuleset\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isRuleset\"}]), _nd(\"RootDeclarationItem\", sequence(g[\"Declaration\"], choice(literal(\";\"), not(regex(\"[\\\\s\\\\S]\", \"\")))), \"(children) => {\\n const declaration = children.find(isLessDeclaration);\\n if (declaration === undefined) {\\n throw new TypeError('Less root declaration item lost its declaration fact.');\\n }\\n return declaration;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isLessDeclaration\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessDeclaration\"}]), literal(\";\"))), optional(g[\"Call\"])), \"children => stylesheet(children.filter(isStatement))\", { trailingTrivia: true }, undefined, undefined, [{\"local\":\"stylesheet\",\"source\":\"@jesscss/core/ast\",\"imported\":\"stylesheet\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"}]),\n \"Document\": _nd(\"Stylesheet\", sequence(many(choice(_s0, _s1, g[\"FunctionStatement\"], _nd(\"GuardedRuleset\", sequence(_s2, g[\"RulesetWithExtends\"]), \"(children) => {\\n const ruleset = children.find(isRuleset);\\n if (ruleset === undefined) {\\n throw new TypeError('Less declaration-guarded ruleset lost its rule.');\\n }\\n return ruleset;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isRuleset\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isRuleset\"}]), _nd(\"RootDeclarationItem\", sequence(g[\"Declaration\"], choice(literal(\";\"), not(regex(\"[\\\\s\\\\S]\", \"\")))), \"(children) => {\\n const declaration = children.find(isLessDeclaration);\\n if (declaration === undefined) {\\n throw new TypeError('Less root declaration item lost its declaration fact.');\\n }\\n return declaration;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isLessDeclaration\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessDeclaration\"}]), literal(\";\"))), optional(g[\"Call\"])), \"children => stylesheet(children.filter(isStatement))\", { trailingTrivia: true }, undefined, undefined, [{\"local\":\"stylesheet\",\"source\":\"@jesscss/core/ast\",\"imported\":\"stylesheet\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"}]),\n \"VarDeclaration\": _nd(\"VariableDeclaration\", sequence(_s3, literal(\":\"), choice(sequence(g[\"NamespacedMixinValue\"], _s5), g[\"ImportantValue\"], sequence(g[\"FlatMixinCall\"], _s5), sequence(not(literal(\"{\")), g[\"VariableValue\"])), _s6), \"(children, _fields, span) => {\\n const name = requireTerminalText(children[0]).slice(1);\\n const value = children[2];\\n return withSourceSpan(\\n variableDeclaration(name, isMixinCall(value) ? value : variableValueSlot(value), { mode: 'declare' }),\\n span\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"variableDeclaration\",\"source\":\"@jesscss/core/ast\",\"imported\":\"variableDeclaration\"},{\"local\":\"isMixinCall\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinCall\"},{\"local\":\"variableValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"variableValueSlot\"}]),\n \"ImportStatement\": _nd(\"ImportStatement\", sequence(keywords([\"@-import\",\"@import\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), optional(g[\"ImportOptions\"]), g[\"ImportTarget\"], optional(field(\"tail\", g[\"ImportTail\"])), literal(\";\")), \"(children, fields, span) => {\\n // Every accepted import fact is a grammar child or a field capture. In\\n // particular, the opaque tail is reconstructed from terminal values only\\n // after the recursive grammar has closed every delimiter.\\n const keyword = requireToken(children[0]);\\n const options = children.find((child) => typeof child === 'object' && child !== null && 'type' in child && child.type === 'List') ?? null;\\n const target = children.find((child) => isQuoted(child) || isUrl(child) || isInterp(child));\\n if (target === undefined) {\\n throw new TypeError('Less grammar produced no import target.');\\n }\\n const tailField = fields?.tail;\\n // The variable-bearing query feature and a complete `@{…}` tail are\\n // structural values. Mixed text and interpolation stays rejected until\\n // the import tail has a typed segment model; do not flatten it back into\\n // opaque source bytes.\\n const tailValue = tailField === undefined ? undefined : requireField(fields, 'tail').value;\\n const tail = tailValue === undefined ? null : isValueNode(tailValue) ? tailValue : any(staticText(tailValue));\\n if (importIsCompileTime(keyword.value, target, options)) {\\n if (tail !== null) {\\n // Only the legacy `@import`/`@-import` form desugars a media tail into\\n // a `@media` wrapper; `@-compose` and any `supports(...)`/`layer` tail\\n // still reject. A CSS import postlude is `[ layer | layer(…) ]? [\\n // supports(…) ]? <media-query-list>`; only the trailing media-query-\\n // list has a `@media` desugaring. A pure media-query-list never spells\\n // the `supports`/`layer` keyword, so a text tail carrying either is a\\n // supports/layer condition (or a malformed mix) and is rejected. A\\n // parenthesized `(feature: value)` media feature (typed `ImportQueryTail`\\n // Block) or `@{…}` interpolation is a media query and carries neither.\\n // `importKeyword` only spells `@import`/`@-import`, so this is always a\\n // legacy import here; the `!isLegacyImport` guard is defensive against a\\n // future keyword (a compile-time `@-compose` admits no media wrap).\\n const lowered = keyword.value.toLowerCase();\\n const isLegacyImport = lowered === '@import' || lowered === '@-import';\\n // ponytail: substring test over the opaque text tail, NOT a regex —\\n // grammars forbid regex literals outside `regex()`. Upgrade path: a\\n // typed `ImportTail` split (media-query vs supports/layer), the same\\n // gap the tail comment above records; then this branches on `.type`.\\n // Structured (Block / `@{…}`) tails are `isValueNode` and bypass this.\\n const tailText = isAny(tail) ? tail.src.toLowerCase() : '';\\n const tailHasSupportsOrLayer = tailText.includes('supports') || tailText.includes('layer');\\n if (!isLegacyImport || tailHasSupportsOrLayer) {\\n throw new LessImportPostludeError(span.start, span.end);\\n }\\n return withSourceSpan(\\n atRuleBlock('@media', tail, [styleImport(keyword.value, target, { options, mode: 'import' })]),\\n span\\n );\\n }\\n return styleImport(keyword.value, target, { options, mode: 'import' });\\n }\\n return withImportSourceSpan(\\n withImportTailStart(\\n atRuleStatement(\\n keyword.value,\\n tail === null ? target : spaced([target, tail])\\n ),\\n tailField === undefined || Array.isArray(tailField) ? NO_SPAN : tailField.span.start\\n ),\\n span.start,\\n span.end\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isQuoted\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isQuoted\"},{\"local\":\"isUrl\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isUrl\"},{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"},{\"local\":\"requireField\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireField\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"staticText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticText\"},{\"local\":\"importIsCompileTime\",\"source\":\"@jesscss/core/ast\",\"imported\":\"importIsCompileTime\"},{\"local\":\"isAny\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isAny\"},{\"local\":\"LessImportPostludeError\",\"source\":\"./parse-error.js\",\"imported\":\"LessImportPostludeError\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"atRuleBlock\",\"source\":\"@jesscss/core/ast\",\"imported\":\"atRuleBlock\"},{\"local\":\"styleImport\",\"source\":\"@jesscss/core/ast\",\"imported\":\"styleImport\"},{\"local\":\"withImportSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withImportSourceSpan\"},{\"local\":\"withImportTailStart\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withImportTailStart\"},{\"local\":\"atRuleStatement\",\"source\":\"@jesscss/core/ast\",\"imported\":\"atRuleStatement\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"},{\"local\":\"NO_SPAN\",\"source\":\"@jesscss/core/ast\",\"imported\":\"NO_SPAN\"}]),\n \"PluginDirective\": _nd(\"Plugin\", sequence(keywords([\"@plugin\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), optional(sequence(literal(\"(\"), field(\"options\", g[\"EnclosedContent\"]), literal(\")\"))), field(\"target\", _s7), literal(\";\")), \"(_children, fields) => {\\n const target = requireField(fields, 'target').value;\\n if (!isQuoted(target) && !isUrl(target) && !isInterp(target)) {\\n throw new TypeError('Less Plugin lost its typed target.');\\n }\\n const optionValue = fields?.options === undefined ? null : requireField(fields, 'options').value;\\n if (optionValue !== null && !isInterp(optionValue)) {\\n throw new TypeError('Less Plugin options must remain an interpolation template.');\\n }\\n return { type: 'Plugin', target, options: optionValue };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireField\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireField\"},{\"local\":\"isQuoted\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isQuoted\"},{\"local\":\"isUrl\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isUrl\"},{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"}]),\n \"ValueBlockDeclaration\": _nd(\"VariableDeclaration\", sequence(_s3, literal(\":\"), g[\"ValueBlock\"]), \"(children, _fields, span) => {\\n const name = requireTerminalText(children[0]).slice(1);\\n return withSourceSpan(\\n variableDeclaration(\\n name,\\n lessValueSlot(requireValueNode(children[2])),\\n { mode: 'declare' }\\n ),\\n span\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"variableDeclaration\",\"source\":\"@jesscss/core/ast\",\"imported\":\"variableDeclaration\"},{\"local\":\"lessValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessValueSlot\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"ValueBlock\": _nd(\"ValueBlock\", sequence(literal(\"{\"), many(g[\"BodyStatement\"]), optional(g[\"Call\"]), literal(\"}\")), \"children => classifyValueBlock(requireValueBlockBody(children))\", undefined, undefined, undefined, [{\"local\":\"classifyValueBlock\",\"source\":\"@jesscss/core/ast\",\"imported\":\"classifyValueBlock\"},{\"local\":\"requireValueBlockBody\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueBlockBody\"}]),\n \"IndirectVariableReference\": _nd(\"Reference\", parser({ trivia: null }, sequence(literal(\"@@\"), _s4)), \"(children, _fields, span) => {\\n const name = requireSupportedVariableName(children[1], span.start, span.end);\\n return withSourceSpan(\\n variableReference(variableReference(name, 'scoped'), 'scoped', `@@${name}`),\\n span\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"variableReference\",\"source\":\"@jesscss/core/ast\",\"imported\":\"variableReference\"}]),\n \"VariableReferenceChain\": _nd(\"Reference\", parser({ trivia: null }, sequence(literal(\"@\"), _s4, optional(oneOrMore(g[\"ReferenceTail\"])))), \"(children, _fields, span) => {\\n const name = requireSupportedVariableName(children[1], span.start, span.end);\\n const base = variableReference(name, 'scoped');\\n return children.length > 2\\n ? withSourceSpan(referenceWithTails(base, `@${name}`, children.slice(2)), span)\\n : withSourceSpan(base, span);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"},{\"local\":\"variableReference\",\"source\":\"@jesscss/core/ast\",\"imported\":\"variableReference\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"referenceWithTails\",\"source\":\"./grammar-helpers.js\",\"imported\":\"referenceWithTails\"}]),\n \"VariableReference\": _nd(\"Reference\", sequence(literal(\"@\"), _s4), \"(children, _fields, span) => withSourceSpan(\\n variableReference(requireSupportedVariableName(children[1], span.start, span.end), 'scoped'),\\n span\\n )\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"variableReference\",\"source\":\"@jesscss/core/ast\",\"imported\":\"variableReference\"},{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"}]),\n \"PropertyReference\": _nd(\"Reference\", parser({ trivia: null }, sequence(literal(\"$\"), g[\"LessIdentifier\"])), \"(children, _fields, span) => withSourceSpan(propertyReference(requireToken(children[1]).value), span)\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"propertyReference\",\"source\":\"@jesscss/core/ast\",\"imported\":\"propertyReference\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"VariableInterpolation\": _nd(\"VariableInterpolation\", choice(_nd(\"UnsupportedVariableName\", parser({ trivia: null }, literal(\"@{-}\")), \"(_children, _fields, span) => {\\n throw new LessUnsupportedVariableNameError(span.start, span.end, '-');\\n }\", undefined, undefined, undefined, [{\"local\":\"LessUnsupportedVariableNameError\",\"source\":\"./parse-error.js\",\"imported\":\"LessUnsupportedVariableNameError\"}]), parser({ trivia: null }, sequence(literal(\"@{\"), _s4, many(g[\"InterpolationAccessor\"]), literal(\"}\")))), \"(children, _fields, span) => interpolationFactFromChildren(children, span)\", undefined, undefined, undefined, [{\"local\":\"interpolationFactFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationFactFromChildren\"}]),\n \"PropertyInterpolation\": _nd(\"PropertyInterpolation\", parser({ trivia: null }, sequence(literal(\"${\"), g[\"InterpolationHead\"], many(g[\"InterpolationAccessor\"]), literal(\"}\"))), \"(children, _fields, span) => interpolationFactFromChildren(children, span)\", undefined, undefined, undefined, [{\"local\":\"interpolationFactFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationFactFromChildren\"}]),\n \"Interpolation\": _nd(\"Interpolation\", choice(g[\"VariableInterpolation\"], g[\"PropertyInterpolation\"]), \"children => requireInterpolationFact(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationFact\"}]),\n \"AtRuleInterpolation\": _nd(\"AtRuleInterpolation\", g[\"VariableInterpolation\"], \"(children) => {\\n const fact = requireInterpolationFact(children[0]);\\n return interpolation([{ ref: fact.ref, unquote: true }]);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationFact\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"}]),\n \"InterpolationAccessor\": choice(_nd(\"InterpolationLastAccessor\", parser({ trivia: null }, literal(\"[]\")), \"() => ({ key: -1, keyKind: 'index', src: '-1' })\"), _nd(\"InterpolationIndexAccessor\", parser({ trivia: null }, sequence(literal(\"[\"), g[\"InterpolationIndex\"], literal(\"]\"))), \"(children) => {\\n const text = requireToken(children[1]).value;\\n return { key: Number(text), keyKind: 'index', src: text };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), _nd(\"InterpolationPropertyVariableAccessor\", parser({ trivia: null }, sequence(literal(\"[\"), literal(\"$\"), g[\"VariableReference\"], literal(\"]\"))), \"(children) => {\\n const key = requireValueNode(children[2]);\\n if (!isVarRef(key)) {\\n throw new TypeError('Less property-variable map key must retain its variable reference.');\\n }\\n return { key, keyKind: 'prop', src: `$@${key.name}` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"isVarRef\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isVarRef\"}]), _nd(\"InterpolationReferenceAccessor\", parser({ trivia: null }, sequence(literal(\"[\"), choice(g[\"IndirectVariableReference\"], g[\"VariableReference\"], g[\"PropertyReference\"], g[\"InterpolationKey\"]), literal(\"]\"))), \"(children) => {\\n const key = children[1];\\n if (isVarIndirect(key)) {\\n const nameRef = key.name;\\n if (!isVarRef(nameRef)) {\\n throw new TypeError('Less indirect map key must retain its variable reference.');\\n }\\n return { key, keyKind: 'var', src: `@@${nameRef.name}` };\\n }\\n if (isVarRef(key)) {\\n return { key, keyKind: 'var', src: `@${key.name}` };\\n }\\n if (isPropRef(key)) {\\n return { key, keyKind: 'prop', src: key.raw };\\n }\\n const text = requireToken(key).value;\\n return { key: keyword(text), keyKind: 'prop', src: text };\\n }\", undefined, undefined, undefined, [{\"local\":\"isVarIndirect\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isVarIndirect\"},{\"local\":\"isVarRef\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isVarRef\"},{\"local\":\"isPropRef\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isPropRef\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"}])),\n \"ReferenceTail\": choice(_nd(\"ReferenceBracketTail\", g[\"InterpolationAccessor\"], \"(children) => {\\n const accessor = requireInterpolationAccessorFact(children[0]);\\n return { step: { type: 'LookupStep', kind: accessor.keyKind, name: accessor.key }, src: `[${accessor.src}]` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireInterpolationAccessorFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationAccessorFact\"}]), _nd(\"ReferenceDotTail\", sequence(literal(\".\"), g[\"VariableNameToken\"]), \"(children) => {\\n const name = requireToken(children[1]).value;\\n return { step: { type: 'LookupStep', kind: 'member', name }, src: `.${name}` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), _nd(\"ReferenceCallTail\", sequence(literal(\"(\"), optional(g[\"MixinArguments\"]), literal(\")\")), \"(children) => {\\n const args = mixinArgumentsFromChildren(children);\\n return { step: { type: 'Call', args }, src: `(${args.map(callArgumentSource).join(', ')})` };\\n }\", undefined, undefined, undefined, [{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"},{\"local\":\"callArgumentSource\",\"source\":\"./grammar-helpers.js\",\"imported\":\"callArgumentSource\"}])),\n \"InterpolatedValue\": _nd(\"InterpolatedValue\", parser({ trivia: null }, sequence(g[\"Interpolation\"], many(g[\"interpolatedValueTail\"]))), \"children => interpolation(interpolationPartsFrom(children, true))\", undefined, undefined, undefined, [{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"InterpolatedProperty\": _nd(\"InterpolatedProperty\", choice(parser({ trivia: null }, sequence(optional(literal(\"*\")), optional(literal(\"-\")), optional(g[\"InterpolatedPropertyStart\"]), g[\"Interpolation\"], many(choice(g[\"InterpolatedPropertyTail\"], g[\"Interpolation\"])))), parser({ trivia: null }, sequence(literal(\"--\"), optional(choice(g[\"InterpolatedCustomPropertyStart\"], g[\"InterpolatedCustomPropertyDash\"])), g[\"Interpolation\"], many(choice(g[\"InterpolatedCustomPropertyTail\"], g[\"Interpolation\"]))))), \"children => interpolation(interpolationPartsFrom(children, false))\", undefined, undefined, undefined, [{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"Keyword\": _nd(\"Keyword\", g[\"ValueIdentifier\"], \"children => keyword(requireToken(children[0]).value)\", undefined, undefined, undefined, [{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"Percentage\": token(parser({ trivia: null }, sequence(g[\"NumberToken\"], literal(\"%\")))),\n \"Dimension\": _nd(\"Dimension\", parser({ trivia: null }, sequence(g[\"NumberToken\"], optional(g[\"DimensionUnit\"]))), \"(children, _fields, span) => {\\n const numberText = requireToken(children[0]).value;\\n const unit = children.length > 1 ? requireToken(children[1]).value : '';\\n return dimension(Number(numberText), unit, `${numberText}${unit}`);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"dimension\",\"source\":\"@jesscss/core/ast\",\"imported\":\"dimension\"}]),\n \"EscapeValue\": _nd(\"EscapeValue\", regex(\"(?:\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))+\", \"\"), \"children => any(requireToken(children[0]).value)\", undefined, undefined, undefined, [{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"PagePseudo\": _nd(\"PagePseudo\", sequence(literal(\":\"), g[\"ValueIdentifier\"]), \"children => any(`:${requireToken(children[1]).value}`)\", undefined, undefined, undefined, [{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"DoubledQuoteArgument\": _nd(\"DoubledQuoteArgument\", sequence(literal(\"\\\"\\\"\"), regex(\"[^\\\"()]+\", \"\"), literal(\"\\\"\\\"\")), \"children => any(`\\\"\\\"${requireToken(children[1]).value}\\\"\\\"`)\", undefined, undefined, undefined, [{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"FunctionArgument\": _nd(\"FunctionArgument\", choice(sequence(peek(parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(_s8, literal(\"(\")))), g[\"FunctionCondition\"]), g[\"FunctionKeywordArgument\"], g[\"FunctionScalarArgument\"], g[\"ArgumentValueSequence\"], g[\"FunctionAssignmentArgument\"], g[\"FunctionCondition\"]), \"(children) => {\\n const named = children.find(isLessCallArg);\\n if (named !== undefined) {\\n return named;\\n }\\n const value = children.find(isLessValueSlotValue);\\n if (value === undefined) {\\n throw new TypeError('Less function argument lost its value.');\\n }\\n return value;\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessCallArg\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessCallArg\"},{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"}]),\n \"FunctionScalarArgument\": _nd(\"FunctionScalarArgument\", sequence(g[\"MathSum\"], not(regex(\"[^,;)]|$\", \"\"))), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"FunctionAssignmentArgument\": _nd(\"FunctionAssignmentArgument\", parser({ trivia: null }, sequence(field(\"key\", regex(\"[-_a-zA-Z\\\\u0080-\\\\uffff][-\\\\w\\\\u0080-\\\\uffff]*(?=[ \\\\t\\\\n\\\\r\\\\f]*=(?![=<>~]))\", \"\")), regex(\"[ \\\\t\\\\n\\\\r\\\\f]*=[ \\\\t\\\\n\\\\r\\\\f]*\", \"\"), g[\"ArgumentValueSequence\"])), \"(children, fields) => {\\n const value = children.find(isLessValueSlotValue);\\n if (value === undefined) {\\n throw new TypeError('Less function assignment argument lost its value.');\\n }\\n /*\\n * §12.3 row 2: the pair is VERBATIM BYTES, not a node. Resolving `@x` in\\n * `alpha(opacity=@x)` has no utility — the construct is dropped from\\n * Less v5 — so this keeps the authored spelling and stops pretending the\\n * value is live. The `=` re-emits unspaced, exactly as `Assignment` did.\\n */\\n return any(`${staticText(requireField(fields, 'key').value)}=${mixinArgumentSource(value)}`);\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"},{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"staticText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticText\"},{\"local\":\"requireField\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireField\"},{\"local\":\"mixinArgumentSource\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentSource\"}]),\n \"FunctionKeywordArgument\": _nd(\"FunctionKeywordArgument\", parser({ trivia: null }, sequence(field(\"key\", regex(\"@[-_a-zA-Z\\\\u0080-\\\\uffff][-\\\\w\\\\u0080-\\\\uffff]*(?=[ \\\\t\\\\n\\\\r\\\\f]*:(?!:))\", \"\")), regex(\"[ \\\\t\\\\n\\\\r\\\\f]*:[ \\\\t\\\\n\\\\r\\\\f]*\", \"\"), g[\"ArgumentValueSequence\"])), \"(children, fields) => {\\n const value = children.find(isLessValueSlotValue);\\n if (value === undefined) {\\n throw new TypeError('Less function keyword argument lost its value.');\\n }\\n return callArg(value, staticText(requireField(fields, 'key').value).slice(1));\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"},{\"local\":\"callArg\",\"source\":\"@jesscss/core/ast\",\"imported\":\"callArg\"},{\"local\":\"staticText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticText\"},{\"local\":\"requireField\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireField\"}]),\n \"ArgumentValueSequence\": _nd(\"FunctionValueSequence\", parser({ trivia: null }, sequence(g[\"valuePiece\"], many(choice(sequence(not(_s13), _s14), _s15)), not(_s13))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => valuePieceReducerWithTrivia(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"valuePieceReducerWithTrivia\",\"source\":\"./grammar-helpers.js\",\"imported\":\"valuePieceReducerWithTrivia\"}], true),\n \"FunctionCondition\": _nd(\"FunctionCondition\", g[\"FunctionConditionOr\"], \"(children) => {\\n const fact = children.find(isFunctionConditionFact);\\n if (fact === undefined) {\\n throw new TypeError('Less function condition lost its fact.');\\n }\\n return condition(fact.guard, fact.src);\\n }\", undefined, undefined, undefined, [{\"local\":\"isFunctionConditionFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isFunctionConditionFact\"},{\"local\":\"condition\",\"source\":\"@jesscss/core/ast\",\"imported\":\"condition\"}]),\n \"FunctionConditionOr\": _nd(\"FunctionConditionOr\", sequence(g[\"FunctionConditionAnd\"], many(sequence(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*or(?![-_a-zA-Z0-9\\\\u0080-\\\\uffff])[ \\\\t\\\\n\\\\r\\\\f]*\", \"i\"), g[\"FunctionConditionAnd\"]))), \"children => foldFunctionCondition('or', children)\", undefined, undefined, undefined, [{\"local\":\"foldFunctionCondition\",\"source\":\"./grammar-helpers.js\",\"imported\":\"foldFunctionCondition\"}]),\n \"FunctionConditionAnd\": _nd(\"FunctionConditionAnd\", sequence(g[\"FunctionConditionTerm\"], many(sequence(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*and(?![-_a-zA-Z0-9\\\\u0080-\\\\uffff])[ \\\\t\\\\n\\\\r\\\\f]*\", \"i\"), g[\"FunctionConditionTerm\"]))), \"children => foldFunctionCondition('and', children)\", undefined, undefined, undefined, [{\"local\":\"foldFunctionCondition\",\"source\":\"./grammar-helpers.js\",\"imported\":\"foldFunctionCondition\"}]),\n \"FunctionConditionTerm\": _nd(\"FunctionConditionTerm\", sequence(optional(_s8), choice(g[\"FunctionConditionParen\"], g[\"FunctionConditionOperand\"]), optional(sequence(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*(?:>=|<=|=>|=<|=~|[<>=])[ \\\\t\\\\n\\\\r\\\\f]*\", \"\"), choice(g[\"FunctionConditionParen\"], g[\"FunctionConditionOperand\"])))), \"(children) => {\\n const nested = children.filter(isFunctionConditionFact);\\n const values = children.filter(isValueNode);\\n const operator = children.map(guardOperatorText).find((value) => value !== null)?.trim();\\n const left = nested[0] ?? (values[0] === undefined ? undefined : { guard: lessTruth(values[0]), src: functionConditionSource(values[0]), grouped: false, hasComparison: false, bare: values[0] });\\n const right = nested[1] ?? (values.length > 1 && values[1] !== undefined ? { guard: lessTruth(values[1]), src: functionConditionSource(values[1]), grouped: false, hasComparison: false, bare: values[1] } : undefined);\\n if (left === undefined) {\\n throw new TypeError('Less function condition term lost its left operand.');\\n }\\n let guard;\\n let src;\\n if (operator === undefined) {\\n guard = left.guard;\\n src = left.src;\\n } else {\\n if (right === undefined) {\\n throw new TypeError('Less comparison requires value operands.');\\n }\\n if (nested.length === 0 && children.some(child => typeof child === 'object' && child !== null && 'value' in child && child.value === 'not')) {\\n throw new TypeError('Less function condition `not` requires a grouped condition operand.');\\n }\\n const leftValue = left.bare ?? condition(left.guard, left.src);\\n const rightValue = right.bare ?? condition(right.guard, right.src);\\n guard = { g: 'cmp', op: operator, left: leftValue, right: rightValue };\\n src = `${left.src} ${operator} ${right.src}`;\\n }\\n const negated = children.some(child => typeof child === 'object' && child !== null && 'value' in child && child.value === 'not');\\n const hasComparison = operator !== undefined || left.hasComparison || right?.hasComparison === true;\\n const grouped = operator === undefined && left.grouped;\\n return negated\\n ? { guard: { g: 'not', inner: guard }, src: `not(${src})`, grouped, hasComparison }\\n : { guard, src, grouped, hasComparison };\\n }\", undefined, undefined, undefined, [{\"local\":\"isFunctionConditionFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isFunctionConditionFact\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"guardOperatorText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"guardOperatorText\"},{\"local\":\"lessTruth\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessTruth\"},{\"local\":\"functionConditionSource\",\"source\":\"./grammar-helpers.js\",\"imported\":\"functionConditionSource\"},{\"local\":\"condition\",\"source\":\"@jesscss/core/ast\",\"imported\":\"condition\"}]),\n \"FunctionConditionOperand\": _nd(\"FunctionConditionOperand\", oneOrMore(sequence(not(_s13), g[\"TopSum\"])), \"(children) => {\\n const values = children.filter(isValueNode);\\n if (values.length === 0) {\\n throw new TypeError('Less function condition lost its operand.');\\n }\\n return values.length === 1 ? values[0] : spaced(values);\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"}]),\n \"FunctionConditionParen\": _nd(\"FunctionConditionParen\", sequence(literal(\"(\"), g[\"FunctionConditionOr\"], literal(\")\")), \"(children) => {\\n const inner = children.find(isFunctionConditionFact);\\n if (inner === undefined) {\\n throw new TypeError('Less function condition lost its parenthesized operand.');\\n }\\n return { guard: inner.guard, src: `(${inner.src})`, grouped: true, hasComparison: inner.hasComparison };\\n }\", undefined, undefined, undefined, [{\"local\":\"isFunctionConditionFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isFunctionConditionFact\"}]),\n \"Call\": _nd(\"Call\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(_s16, g[\"FunctionArguments\"], literal(\")\"))), \"(children, fields, span, rawChildren, triviaLog, state) =>\\n functionCallFromChildren(children, fields, span, triviaLog, state, rawChildren)\", undefined, undefined, undefined, [{\"local\":\"functionCallFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"functionCallFromChildren\"}]),\n \"CallArgumentFunction\": _nd(\"Call\", sequence(routed(_s16), optional(sequence(sepBy(g[\"CallArgumentValue\"], field(\"separator\", regex(\"[;,][ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), { min: 1 }), optional(field(\"trailingSeparator\", parser({ trivia: null }, regex(\"[;,][ \\\\t\\\\n\\\\r\\\\f]*\", \"\")))))), literal(\")\")), \"argumentFunctionFromChildren\", { buildArity: 3 }, undefined, \"function argumentFunctionFromChildren(\\n children: readonly unknown[],\\n fields: FieldMap | undefined,\\n span: SourceSpan\\n): FunctionCall {\\n const name = functionNameFromOpener(children[0]);\\n const args = children.slice(1, -1).filter(\\n (child): child is ValueSlot | LessCallArg => isLessCallArg(child) || isLessValueSlotValue(child)\\n );\\n return callWithLayout(name, args, separatorsFromFields(fields), hasField(fields, 'trailingSeparator'), span);\\n}\"),\n \"FormatFunction\": _nd(\"Call\", sequence(parser({ trivia: null }, literal(\"%(\")), optional(sequence(not(literal(\"{\")), g[\"ValueSequence\"])), many(parser({ trivia: null }, sequence(regex(\",[ \\\\t\\\\n\\\\r\\\\f]*\", \"\"), not(literal(\"{\")), g[\"ValueSequence\"]))), literal(\")\")), \"children => funcCall('%', children.slice(1, -1).filter(isLessValueSlotValue))\", undefined, undefined, undefined, [{\"local\":\"funcCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"funcCall\"},{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"}]),\n \"CallArgumentValue\": _nd(\"CallArgumentValue\", choice(attempt(g[\"FlatMixinCall\"]), g[\"ValueBlock\"], g[\"ValueSequence\"]), \"(children) => {\\n const value = children[0];\\n if (isMixinCall(value) || isLessValueSlotValue(value)) {\\n return value;\\n }\\n throw new TypeError('Less call argument must reduce to a value or typed mixin call.');\\n }\", undefined, undefined, undefined, [{\"local\":\"isMixinCall\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinCall\"},{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"}]),\n \"FunctionStatement\": _tf(dispatch(_s17, when(\"each(\", g[\"EachFunctionStatement\"], { caseInsensitive: true }), when(matches(/^(?!(?:url|calc)\\($).+\\($/i), choice(_nd(\"Call\", sequence(g[\"CallArgumentFunction\"], literal(\";\")), \"(children) => {\\n const call = children.find(isFunctionCall);\\n if (call === undefined) {\\n throw new TypeError('Less function statement lost its call fact.');\\n }\\n return lowerLogicalCallStatement(call);\\n }\", undefined, undefined, undefined, [{\"local\":\"isFunctionCall\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isFunctionCall\"},{\"local\":\"lowerLogicalCallStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lowerLogicalCallStatement\"}]), _tf(sequence(_nd(\"Call\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(routed(), g[\"FunctionArguments\"], literal(\")\"))), \"(children, fields, span, rawChildren, triviaLog, state) =>\\n functionCallFromChildren(children, fields, span, triviaLog, state, rawChildren)\", undefined, undefined, undefined, [{\"local\":\"functionCallFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"functionCallFromChildren\"}]), parser({ trivia: null }, peek(sequence(optional(g[\"whitespace\"]), choice(literal(\"}\"), not(regex(\"[\\\\s\\\\S]\", \"\"))))))), \"([call]) => isStatement(call) ? call : ''\")))), \"([, statement]) => statement\"),\n \"Value\": _nd(\"Value\", choice(attempt(g[\"MixinReference\"]), g[\"InterpolatedValue\"], g[\"EscapedQuoted\"], g[\"Quoted\"], _nd(\"BacktickJavaScript\", parser({ trivia: null }, sequence(literal(\"`\"), regex(\"(?:[^`\\\\\\\\]|\\\\\\\\[\\\\s\\\\S])*\", \"\"), literal(\"`\"))), \"(_children, _fields, span) => {\\n throw new LessInlineJavaScriptError(span.start, span.end);\\n }\", undefined, undefined, undefined, [{\"local\":\"LessInlineJavaScriptError\",\"source\":\"./parse-error.js\",\"imported\":\"LessInlineJavaScriptError\"}]), g[\"IndirectVariableReference\"], g[\"VariableReferenceChain\"], g[\"PropertyReference\"], g[\"CustomPropertyValue\"], g[\"Dimension\"], g[\"Color\"], g[\"FormatFunction\"], dispatch(_s17, when(\"url(\", choice(_nd(\"Url\", sequence(routed(), choice(g[\"UrlInterpolation\"], g[\"VariableReference\"]), literal(\")\")), \"children => url(requireValueNode(children[1]))\", undefined, undefined, undefined, [{\"local\":\"url\",\"source\":\"@jesscss/core/ast\",\"imported\":\"url\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]), _s18), { caseInsensitive: true }), when(\"calc(\", g[\"CalcFunction\"], { caseInsensitive: true }), when(endsWith(\"(\"), g[\"GenericFunction\"]), otherwise(_nd(\"Identifier\", parser({ trivia: null }, sequence(routed(), many(g[\"interpolatedValueTail\"]))), \"(children) => {\\n if (children.some(isInterpolationFact)) {\\n return interpolation(interpolationPartsFrom(children, true));\\n }\\n return keyword(children.map(child => requireToken(child).value).join(''));\\n }\", undefined, undefined, undefined, [{\"local\":\"isInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterpolationFact\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]))), g[\"SelectorCapture\"], g[\"EscapedParen\"], g[\"QueryColonFeature\"], g[\"Paren\"], _nd(\"GridLineName\", parser({ trivia: null }, sequence(literal(\"[\"), g[\"Keyword\"], literal(\"]\"))), \"(children) => {\\n const name = requireValueNode(children[1]);\\n if (name.type !== 'Keyword') {\\n throw new TypeError('Less grid line name requires a keyword fact.');\\n }\\n return any(`[${name.src}]`);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"}]), g[\"EscapeValue\"], _nd(\"PercentEscape\", g[\"PercentEscapeToken\"], \"children => any(requireToken(children[0]).value)\", undefined, undefined, undefined, [{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])), \"children => requireValueNode(children.find(isValueNode))\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"}]),\n \"SelectorCapture\": _nd(\"SelectorCapture\", sequence(parser({ trivia: null }, literal(\"*[\")), parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, g[\"PseudoArgumentSelector\"]), parser({ trivia: null }, literal(\"]\"))), \"(children) => {\\n const selector = requireSelectorList(children[1]);\\n const branches = selector.selectors.map(selectorBranchCanonical);\\n return selectorCapture(branches, `*[${branches.join(', ')}]`);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireSelectorList\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSelectorList\"},{\"local\":\"selectorBranchCanonical\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selectorBranchCanonical\"},{\"local\":\"selectorCapture\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selectorCapture\"}]),\n \"MathAtom\": _nd(\"MathAtom\", g[\"MathUnary\"], \"children => requireValueNode(children[0])\", { collapse: true }, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"MathUnary\": _nd(\"MathUnary\", sequence(optional(parser({ trivia: null }, regex(\"-(?=[(@])\", \"\"))), g[\"Value\"]), \"(children, _fields, _span, _rawChildren, _triviaLog, state) => children.length === 1\\n ? requireValueNode(children[0])\\n : operation(\\n '*',\\n dimension(-1, '', '-1'),\\n requireValueNode(children[1]),\\n false,\\n lessMathOutsideParens(state, '*')\\n )\", { collapse: true }, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"operation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"operation\"},{\"local\":\"dimension\",\"source\":\"@jesscss/core/ast\",\"imported\":\"dimension\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"}], true),\n \"MathProduct\": _nd(\"MathProduct\", parser({ trivia: null }, sequence(g[\"MathAtom\"], many(sequence(_lf(parser({ trivia: null }, sequence(optional(_s23), keywords([\"*\",\"/\",\"%\"], { caseInsensitive: false }), optional(_s23))), \"children => children[1]\"), g[\"MathAtom\"])))), \"lessFoldOperation\", { collapse: true, buildArity: 6 }, undefined, \"function lessFoldOperation(\\n children: readonly unknown[],\\n _fields: FieldMap | undefined,\\n _span: Span,\\n rawChildren: readonly unknown[],\\n _triviaLog: readonly number[],\\n state: unknown\\n): ValueNode {\\n const first = children.find(isValueNode);\\n if (first === undefined) {\\n throw new TypeError('Less arithmetic grammar produced no operand.');\\n }\\n const firstIndex = children.indexOf(first);\\n const firstRaw = rawChildren[firstIndex];\\n // In AST mode Parseman supplies the original spanned children here. That\\n // gives each folded operation its authored range without retaining one span\\n // per standalone dimension. A synthetic child can still contribute an\\n // existing provenance fact when it has one.\\n const firstSpan = isSpannedToken(firstRaw) ? firstRaw.span : sourceSpanOf(first);\\n let result = first;\\n const start = firstSpan?.start;\\n for (let index = children.indexOf(first) + 1; index < children.length; index += 2) {\\n const operatorToken = children[index];\\n const right = children[index + 1];\\n if (operatorToken === undefined || !isValueNode(right)) {\\n throw new TypeError('Less arithmetic grammar lost an operator operand.');\\n }\\n const rightRaw = rawChildren[index + 1];\\n const rightSpan = isSpannedToken(rightRaw) ? rightRaw.span : sourceSpanOf(right);\\n const operator = requireTerminalText(operatorToken).trim();\\n const folded = operation(operator, result, right, false, lessMathOutsideParens(state, operator));\\n result = start === undefined || rightSpan === undefined\\n ? folded\\n : withSourceSpan(folded, { start, end: rightSpan.end });\\n }\\n return result;\\n}\"),\n \"MathSum\": _nd(\"MathSum\", parser({ trivia: null }, sequence(g[\"MathProduct\"], many(sequence(_s24, g[\"MathProduct\"])))), \"lessFoldOperation\", { collapse: true, buildArity: 6 }, undefined, \"function lessFoldOperation(\\n children: readonly unknown[],\\n _fields: FieldMap | undefined,\\n _span: Span,\\n rawChildren: readonly unknown[],\\n _triviaLog: readonly number[],\\n state: unknown\\n): ValueNode {\\n const first = children.find(isValueNode);\\n if (first === undefined) {\\n throw new TypeError('Less arithmetic grammar produced no operand.');\\n }\\n const firstIndex = children.indexOf(first);\\n const firstRaw = rawChildren[firstIndex];\\n // In AST mode Parseman supplies the original spanned children here. That\\n // gives each folded operation its authored range without retaining one span\\n // per standalone dimension. A synthetic child can still contribute an\\n // existing provenance fact when it has one.\\n const firstSpan = isSpannedToken(firstRaw) ? firstRaw.span : sourceSpanOf(first);\\n let result = first;\\n const start = firstSpan?.start;\\n for (let index = children.indexOf(first) + 1; index < children.length; index += 2) {\\n const operatorToken = children[index];\\n const right = children[index + 1];\\n if (operatorToken === undefined || !isValueNode(right)) {\\n throw new TypeError('Less arithmetic grammar lost an operator operand.');\\n }\\n const rightRaw = rawChildren[index + 1];\\n const rightSpan = isSpannedToken(rightRaw) ? rightRaw.span : sourceSpanOf(right);\\n const operator = requireTerminalText(operatorToken).trim();\\n const folded = operation(operator, result, right, false, lessMathOutsideParens(state, operator));\\n result = start === undefined || rightSpan === undefined\\n ? folded\\n : withSourceSpan(folded, { start, end: rightSpan.end });\\n }\\n return result;\\n}\"),\n \"TopProduct\": _nd(\"TopProduct\", parser({ trivia: null }, sequence(g[\"MathAtom\"], many(sequence(_s25, g[\"MathAtom\"])))), \"lessFoldOperation\", { collapse: true, buildArity: 6 }, undefined, \"function lessFoldOperation(\\n children: readonly unknown[],\\n _fields: FieldMap | undefined,\\n _span: Span,\\n rawChildren: readonly unknown[],\\n _triviaLog: readonly number[],\\n state: unknown\\n): ValueNode {\\n const first = children.find(isValueNode);\\n if (first === undefined) {\\n throw new TypeError('Less arithmetic grammar produced no operand.');\\n }\\n const firstIndex = children.indexOf(first);\\n const firstRaw = rawChildren[firstIndex];\\n // In AST mode Parseman supplies the original spanned children here. That\\n // gives each folded operation its authored range without retaining one span\\n // per standalone dimension. A synthetic child can still contribute an\\n // existing provenance fact when it has one.\\n const firstSpan = isSpannedToken(firstRaw) ? firstRaw.span : sourceSpanOf(first);\\n let result = first;\\n const start = firstSpan?.start;\\n for (let index = children.indexOf(first) + 1; index < children.length; index += 2) {\\n const operatorToken = children[index];\\n const right = children[index + 1];\\n if (operatorToken === undefined || !isValueNode(right)) {\\n throw new TypeError('Less arithmetic grammar lost an operator operand.');\\n }\\n const rightRaw = rawChildren[index + 1];\\n const rightSpan = isSpannedToken(rightRaw) ? rightRaw.span : sourceSpanOf(right);\\n const operator = requireTerminalText(operatorToken).trim();\\n const folded = operation(operator, result, right, false, lessMathOutsideParens(state, operator));\\n result = start === undefined || rightSpan === undefined\\n ? folded\\n : withSourceSpan(folded, { start, end: rightSpan.end });\\n }\\n return result;\\n}\"),\n \"TopSum\": _nd(\"TopSum\", parser({ trivia: null }, sequence(g[\"TopProduct\"], many(sequence(_s24, g[\"TopProduct\"])))), \"lessFoldOperation\", { collapse: true, buildArity: 6 }, undefined, \"function lessFoldOperation(\\n children: readonly unknown[],\\n _fields: FieldMap | undefined,\\n _span: Span,\\n rawChildren: readonly unknown[],\\n _triviaLog: readonly number[],\\n state: unknown\\n): ValueNode {\\n const first = children.find(isValueNode);\\n if (first === undefined) {\\n throw new TypeError('Less arithmetic grammar produced no operand.');\\n }\\n const firstIndex = children.indexOf(first);\\n const firstRaw = rawChildren[firstIndex];\\n // In AST mode Parseman supplies the original spanned children here. That\\n // gives each folded operation its authored range without retaining one span\\n // per standalone dimension. A synthetic child can still contribute an\\n // existing provenance fact when it has one.\\n const firstSpan = isSpannedToken(firstRaw) ? firstRaw.span : sourceSpanOf(first);\\n let result = first;\\n const start = firstSpan?.start;\\n for (let index = children.indexOf(first) + 1; index < children.length; index += 2) {\\n const operatorToken = children[index];\\n const right = children[index + 1];\\n if (operatorToken === undefined || !isValueNode(right)) {\\n throw new TypeError('Less arithmetic grammar lost an operator operand.');\\n }\\n const rightRaw = rawChildren[index + 1];\\n const rightSpan = isSpannedToken(rightRaw) ? rightRaw.span : sourceSpanOf(right);\\n const operator = requireTerminalText(operatorToken).trim();\\n const folded = operation(operator, result, right, false, lessMathOutsideParens(state, operator));\\n result = start === undefined || rightSpan === undefined\\n ? folded\\n : withSourceSpan(folded, { start, end: rightSpan.end });\\n }\\n return result;\\n}\"),\n \"PreservedDivision\": _nd(\"PreservedDivision\", parser({ trivia: null }, sequence(g[\"TopSum\"], oneOrMore(sequence(field(\"separator\", _s26), g[\"TopSum\"])))), \"(children, fields, _span, _rawChildren, _triviaLog, state) => {\\n /*\\n * The group is preserved bytes exactly when the policy does NOT divide a\\n * bare `/`. Under `math: always` it is not preserved at all, so operands\\n * keep the arithmetic they were built with.\\n */\\n const preserved = !lessMathOutsideParens(state, '/');\\n const slashBoundaries = fields?.separator === undefined\\n ? []\\n : requireFields(fields, 'separator').map((separator) => {\\n if (!isSlashBoundaryFact(separator.value)) {\\n throw new TypeError('Less preserved division produced an invalid slash boundary.');\\n }\\n return separator.value;\\n });\\n const values = children.filter(isValueNode);\\n const parts = [];\\n for (let index = 0; index < values.length; index += 1) {\\n parts.push(preserved ? withoutBareMath(values[index]) : values[index]);\\n if (index < slashBoundaries.length) {\\n parts.push(keyword('/'));\\n }\\n }\\n const separators = slashBoundaries.flatMap(boundary => [boundary.before, boundary.after]);\\n return withValueLayout(\\n spaced(parts),\\n separators.length === parts.length - 1\\n ? separators\\n : Array.from({ length: parts.length - 1 }, () => '')\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"},{\"local\":\"requireFields\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireFields\"},{\"local\":\"isSlashBoundaryFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSlashBoundaryFact\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"withoutBareMath\",\"source\":\"./grammar-helpers.js\",\"imported\":\"withoutBareMath\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"withValueLayout\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withValueLayout\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"}], true),\n \"EscapedParen\": _nd(\"Block\", parser({ trivia: null }, sequence(literal(\"~(\"), g[\"ValueList\"], literal(\")\"))), \"(children, _fields, span) => withSourceSpan(\\n block(requireValueSlot(children[1]), 'paren', true),\\n span\\n )\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"},{\"local\":\"requireValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueSlot\"}]),\n \"Paren\": _nd(\"Block\", parser({ trivia: null }, sequence(literal(\"(\"), optional(trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12))))), g[\"MathSum\"], optional(trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12))))), literal(\")\"))), \"(children, _fields, span) => {\\n const inner = children.find(isValueNode);\\n if (inner === undefined) {\\n throw new TypeError('Less parenthesized math lost its inner value.');\\n }\\n return withSourceSpan(block(inner), span);\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"}]),\n \"ValueSequence\": _nd(\"ValueSequence\", parser({ trivia: null }, sequence(g[\"valuePiece\"], many(choice(_s14, _s15)))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => valuePieceReducerWithTrivia(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"valuePieceReducerWithTrivia\",\"source\":\"./grammar-helpers.js\",\"imported\":\"valuePieceReducerWithTrivia\"}], true),\n \"ValueList\": _nd(\"ValueList\", choice(attempt(sequence(g[\"MixinReference\"], not(choice(_s25, _s24)))), sepBy(g[\"ValueSequence\"], field(\"separator\", regex(\",[ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), { min: 1 })), \"(children, fields, _span, rawChildren, triviaLog, state) => {\\n const referenceValue = children.find(isReference);\\n if (referenceValue !== undefined) {\\n return referenceValue;\\n }\\n return commaListWithTriviaFromChildren(children, fields, triviaLog, state, isLessValueSlotValue, rawChildren);\\n }\", undefined, undefined, undefined, [{\"local\":\"isReference\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isReference\"},{\"local\":\"commaListWithTriviaFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"commaListWithTriviaFromChildren\"},{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"}]),\n \"VariableValue\": _nd(\"VariableValue\", sequence(optional(trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12))))), sepBy(g[\"ValueSequence\"], field(\"separator\", regex(\",[ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), { min: 1 }), optional(sequence(literal(\",\"), optional(trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12)))))))), \"(children, fields, _span, rawChildren, triviaLog, state) =>\\n commaListWithTriviaFromChildren(children, fields, triviaLog, state, isLessValueSlotValue, rawChildren)\", undefined, undefined, undefined, [{\"local\":\"commaListWithTriviaFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"commaListWithTriviaFromChildren\"},{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"}]),\n \"ImportantValue\": _nd(\"ImportantValue\", sequence(g[\"ValueList\"], literal(\"!\"), g[\"ImportantToken\"]), \"children => important(requireValueSlot(children[0]))\", undefined, undefined, undefined, [{\"local\":\"important\",\"source\":\"@jesscss/core/ast\",\"imported\":\"important\"},{\"local\":\"requireValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueSlot\"}]),\n \"ValueListWithPriority\": _nd(\"ValueListWithPriority\", sequence(not(literal(\"{\")), g[\"ValueList\"], optional(sequence(literal(\"!\"), g[\"ImportantToken\"]))), \"(children) => {\\n const value = requireValueSlot(children[0]);\\n return children.some(child => isLessTerminalText(child, '!')) ? important(value) : value;\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueSlot\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"},{\"local\":\"important\",\"source\":\"@jesscss/core/ast\",\"imported\":\"important\"}]),\n \"CustomPropertyName\": _nd(\"CustomPropertyName\", choice(parser({ trivia: null }, sequence(literal(\"--\"), optional(choice(g[\"InterpolatedCustomPropertyStart\"], g[\"InterpolatedCustomPropertyDash\"])), g[\"Interpolation\"], many(choice(g[\"InterpolatedCustomPropertyTail\"], g[\"Interpolation\"])))), g[\"CustomPropertyToken\"]), \"(children) => {\\n if (!children.some(isInterpolationFact)) {\\n return requireToken(children[0]).value;\\n }\\n return interpolation(interpolationPartsFrom(children, false));\\n }\", undefined, undefined, undefined, [{\"local\":\"isInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterpolationFact\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"CustomAtKeywordText\": _nd(\"CustomAtKeywordText\", g[\"CustomValueAtKeyword\"], \"children => requireToken(children[0]).value\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"CustomPart\": choice(g[\"Interpolation\"], g[\"CustomValueOuterContent\"], g[\"CustomValueSingleQuoted\"], g[\"CustomValueDoubleQuoted\"], g[\"CustomGroup\"], g[\"CustomAtKeywordText\"], g[\"VariableReference\"]),\n \"CustomInnerPart\": choice(g[\"Interpolation\"], g[\"CustomValueInnerContent\"], g[\"CustomValueSingleQuoted\"], g[\"CustomValueDoubleQuoted\"], g[\"CustomGroup\"], g[\"CustomAtKeywordText\"], g[\"VariableReference\"]),\n \"CustomGroup\": _nd(\"CustomGroup\", parser({ trivia: classifiedTrivia({ \"blockComment\": regex(\"\\\\/\\\\*(?:[^*]|\\\\*(?!\\\\/))*\\\\*\\\\/\", \"\") }) }, choice(sequence(literal(\"(\"), many(g[\"CustomInnerPart\"]), literal(\")\")), sequence(literal(\"[\"), many(g[\"CustomInnerPart\"]), literal(\"]\")), sequence(literal(\"{\"), many(g[\"CustomInnerPart\"]), literal(\"}\")))), \"children => customPartsFromChildren(children)\", undefined, undefined, undefined, [{\"local\":\"customPartsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"customPartsFromChildren\"}]),\n \"CustomValue\": _nd(\"CustomValue\", parser({ trivia: classifiedTrivia({ \"blockComment\": regex(\"\\\\/\\\\*(?:[^*]|\\\\*(?!\\\\/))*\\\\*\\\\/\", \"\") }) }, many(g[\"CustomPart\"])), \"(children, _fields, span) => withSourceSpan(\\n customValueFromParts(customPartsFromChildren(children)),\\n span\\n )\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"customValueFromParts\",\"source\":\"./grammar-helpers.js\",\"imported\":\"customValueFromParts\"},{\"local\":\"customPartsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"customPartsFromChildren\"}]),\n \"CustomPropertyValue\": _nd(\"CustomPropertyValue\", g[\"CustomPropertyToken\"], \"children => keyword(requireToken(children[0]).value)\", undefined, undefined, undefined, [{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"CustomDeclaration\": _nd(\"CustomDeclaration\", sequence(g[\"CustomPropertyName\"], literal(\":\"), g[\"CustomValue\"], optional(sequence(literal(\"!\"), g[\"ImportantToken\"]))), \"(children) => {\\n const name = children[0];\\n // A custom property name may itself be an `Interpolation`, so choose the final\\n // value child rather than treating the first AST value in this reduction\\n // as the declaration value.\\n const value = children.filter(isValueNode).at(-1);\\n if (name === undefined || value === undefined) {\\n throw new TypeError('Less grammar produced an incomplete custom declaration.');\\n }\\n return decl(\\n isInterp(name) ? name : requireTerminalText(name),\\n lessValueSlot(value),\\n null,\\n children.some(child => isLessTerminalText(child, '!'))\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"decl\",\"source\":\"@jesscss/core/ast\",\"imported\":\"decl\"},{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"},{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"lessValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessValueSlot\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]),\n \"Declaration\": choice(g[\"CustomDeclaration\"], _nd(\"Declaration\", parser({ trivia: null }, sequence(parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(choice(_nd(\"InterpolatedProperty\", sequence(peek(regex(\"[^:;{}]*[@$]\\\\{\", \"\")), g[\"InterpolatedProperty\"]), \"(children) => {\\n const property = children.find(isInterp);\\n if (property === undefined) {\\n throw new TypeError('Less interpolated-property gate lost its interpolation.');\\n }\\n return property;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"}]), g[\"NumericMapKeyToken\"], g[\"DeclarationPropertyToken\"]), optional(sequence(choice(literal(\"+_\"), literal(\"+\")))), literal(\":\"))), parser({ trivia: null }, sequence(field(\"valueGap\", regex(\"[ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), optional(g[\"ValueListWithPriority\"]))))), \"(children, fields, span) => {\\n // Property, delimiter, and value are independently recognized grammar\\n // children; AST construction does not split or reclassify authored text.\\n const rawName = children[0];\\n // Parseman's optional branch is transparent when absent. Find the value\\n // only after the property delimiter, because an interpolated property\\n // name is itself an `Interpolation` value node.\\n const mergeToken = children.find(child => isToken(child) && (child.value === '+' || child.value === '+_'));\\n const colonIndex = children.findIndex(child => isLessTerminalText(child, ':'));\\n if (colonIndex < 0) {\\n throw new TypeError('Less grammar produced no declaration delimiter.');\\n }\\n const valueChild = children.slice(colonIndex + 1).find(isLessValueSlotValue);\\n const value = valueChild === undefined ? any('') : requireValueSlot(valueChild);\\n const merge = mergeToken === undefined ? null : requireToken(mergeToken).value === '+_' ? ' ' : ',';\\n const valueGap = fields?.valueGap === undefined ? '' : requireTerminalText(requireField(fields, 'valueGap').value);\\n // A lone line break after `:` is ordinary parser layout and canonicalizes\\n // back to `: value`. Preserve the declaration break only when the value\\n // itself carries multiline separator facts (grid-area style output).\\n const layout = Array.isArray(value) || isSequence(value) ? valueLayoutOf(value) : undefined;\\n const valueOnNewLine = (valueGap.includes('\\\\n') || valueGap.includes('\\\\r'))\\n && layout?.some(separator => separator.includes('\\\\n') || separator.includes('\\\\r')) === true;\\n if (merge !== null && merge !== ',' && merge !== ' ') {\\n throw new TypeError('Less grammar produced an invalid declaration merge modifier.');\\n }\\n const node = !Array.isArray(value) && isValueNode(value) && value.type === 'Important'\\n ? decl(isInterp(rawName) ? rawName : requireToken(rawName).value, lessValueSlot(value.value), merge, true, valueOnNewLine)\\n : decl(isInterp(rawName) ? rawName : requireToken(rawName).value, Array.isArray(value) ? value : lessValueSlot(value), merge, false, valueOnNewLine);\\n return withSourceSpan(node, span);\\n }\", undefined, undefined, undefined, [{\"local\":\"isToken\",\"source\":\"@jesscss/core/ast\",\"imported\":\"isToken\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"},{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"},{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"requireValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueSlot\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"requireField\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireField\"},{\"local\":\"isSequence\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSequence\"},{\"local\":\"valueLayoutOf\",\"source\":\"@jesscss/core/ast\",\"imported\":\"valueLayoutOf\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"decl\",\"source\":\"@jesscss/core/ast\",\"imported\":\"decl\"},{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"},{\"local\":\"lessValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessValueSlot\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"}])),\n \"ClassIdStatement\": _nd(\"Statement\", sequence(g[\"ClassIdSelectorPrefix\"], choice(_nd(\"MixinStatement\", sequence(g[\"MixinInterior\"], choice(attempt(_nd(\"MixinDefinition\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(literal(\")\"), choice(sequence(g[\"MixinGuard\"], optional(regex(\"(?:(?:[ \\\\t\\\\n\\\\r\\\\f]+)|(?:\\\\/\\\\/[^\\\\n\\\\r]*)|(?:\\\\/\\\\*(?:[^*]|\\\\*(?!\\\\/))*\\\\*\\\\/))+\", \"\")), literal(\"{\")), literal(\"{\")), g[\"blockBody\"], optional(g[\"Call\"]), literal(\"}\"), optional(literal(\";\")))), \"(children, _fields, _span, rawChildren) => {\\n const bodySpan = bodySpanFromRaw(rawChildren);\\n return {\\n params: [],\\n ...(children.find(isMixinGuard) === undefined ? {} : { guard: children.find(isMixinGuard) }),\\n rules: children.filter(isStatement),\\n ...(bodySpan === undefined ? {} : { bodySpan })\\n };\\n }\", undefined, undefined, undefined, [{\"local\":\"bodySpanFromRaw\",\"source\":\"@jesscss/core/ast\",\"imported\":\"bodySpanFromRaw\"},{\"local\":\"isMixinGuard\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinGuard\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"}])), _nd(\"MixinCall\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(literal(\")\"), not(_s29), optional(literal(\"!important\")), optional(literal(\";\")))), \"children => ({\\n args: [],\\n important: children.some(child => isLessTerminalText(child, '!important'))\\n })\", undefined, undefined, undefined, [{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]))), \"(children) => {\\n const interior = children.find((value) =>\\n typeof value === 'object' && value !== null && 'items' in value && 'separators' in value\\n );\\n if (interior === undefined) {\\n throw new TypeError('Less mixin statement lost its parenthesized interior.');\\n }\\n const definition = children.find(isMixinDefinitionFact);\\n if (definition !== undefined) {\\n return { ...definition, params: mixinParamsFromInterior(interior) };\\n }\\n const call = children.find(isMixinCallFact);\\n if (call === undefined) {\\n throw new TypeError('Less mixin statement lost its continuation.');\\n }\\n return { ...call, args: mixinCallArgsFromInterior(interior) };\\n }\", undefined, undefined, undefined, [{\"local\":\"isMixinDefinitionFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinDefinitionFact\"},{\"local\":\"mixinParamsFromInterior\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinParamsFromInterior\"},{\"local\":\"isMixinCallFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinCallFact\"},{\"local\":\"mixinCallArgsFromInterior\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinCallArgsFromInterior\"}]), _nd(\"MixinCall\", sequence(optional(literal(\"!important\")), literal(\";\")), \"children => ({ important: children.some(child => isLessTerminalText(child, '!important')) })\", undefined, undefined, undefined, [{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]), _nd(\"Ruleset\", sequence(_s30, many(g[\"SelectorBranchTail\"]), optional(g[\"MixinGuard\"]), literal(\"{\"), _s33, optional(g[\"Call\"]), literal(\"}\"), optional(literal(\";\"))), \"(children, _fields, _span, rawChildren) => {\\n const bodySpan = bodySpanFromRaw(rawChildren);\\n return {\\n firstExtensions: children\\n .filter(Array.isArray)\\n .flatMap(values => values.filter(isExtendTargetFact)),\\n branches: children.filter(isSelectorBranchFact),\\n selectorEnd: requiredTokenStart(rawChildren, '{'),\\n ...(children.find(isMixinGuard) === undefined ? {} : { guard: children.find(isMixinGuard) }),\\n rules: children.filter(isStatement),\\n extensions: children.filter(isBodyExtendFact).flatMap(fact => fact.bodyExtensions),\\n ...(bodySpan === undefined ? {} : { bodySpan }),\\n ...(hasRulesetTerminator(rawChildren) ? { terminated: true } : {})\\n };\\n }\", undefined, undefined, undefined, [{\"local\":\"bodySpanFromRaw\",\"source\":\"@jesscss/core/ast\",\"imported\":\"bodySpanFromRaw\"},{\"local\":\"isExtendTargetFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isExtendTargetFact\"},{\"local\":\"isSelectorBranchFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSelectorBranchFact\"},{\"local\":\"requiredTokenStart\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requiredTokenStart\"},{\"local\":\"isMixinGuard\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinGuard\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"},{\"local\":\"isBodyExtendFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isBodyExtendFact\"},{\"local\":\"hasRulesetTerminator\",\"source\":\"./grammar-helpers.js\",\"imported\":\"hasRulesetTerminator\"}]))), \"(children, _fields, span) => {\\n const prefix = children.find(isSelectorBranchFact);\\n if (prefix === undefined) {\\n throw new TypeError('Less class/id statement lost its selector prefix.');\\n }\\n const definition = children.find(isMixinDefinitionFact);\\n if (definition !== undefined) {\\n const node = mixinDef(\\n mixinDefinitionNameFromSelectorBranch(prefix.selector),\\n [...definition.params],\\n [...definition.rules],\\n definition.guard\\n );\\n return withSourceSpan(\\n definition.bodySpan === undefined ? node : withBodySpan(node, definition.bodySpan),\\n span\\n );\\n }\\n const call = children.find(isMixinCallFact);\\n if (call !== undefined) {\\n return mixinCallFromSelectorBranch(prefix.selector, call.args, call.important, span);\\n }\\n const bare = children.find(isBareMixinCallFact);\\n if (bare !== undefined) {\\n return mixinCallFromSelectorBranch(prefix.selector, [], bare.important, span);\\n }\\n const ruleset = children.find(isRulesetTailFact);\\n if (ruleset === undefined) {\\n throw new TypeError('Less class/id statement lost its continuation.');\\n }\\n const prefixSpan = sourceSpanOf(prefix.selector);\\n const guardSpan = ruleset.guard === undefined ? undefined : sourceSpanOf(ruleset.guard);\\n const selector = prefixSpan === undefined\\n ? selist(prefix.selector, ...ruleset.branches.map(branch => branch.selector))\\n : withSourceSpan(\\n selist(prefix.selector, ...ruleset.branches.map(branch => branch.selector)),\\n { start: prefixSpan.start, end: guardSpan?.start ?? ruleset.selectorEnd }\\n );\\n const extensions = [\\n ...ruleset.firstExtensions.map(target => ({\\n target: target.target,\\n partial: target.partial,\\n subject: selist(prefix.selector)\\n })),\\n ...ruleset.branches.flatMap(branch => branch.extensions),\\n ...ruleset.extensions\\n ];\\n const node = rule(\\n selector,\\n [...ruleset.rules],\\n extensions.length === 0 ? undefined : extensions,\\n ruleset.guard\\n );\\n const withBody = ruleset.bodySpan === undefined ? node : withBodySpan(node, ruleset.bodySpan);\\n return ruleset.terminated === true ? withSourceSpan(withBody, span) : withBody;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isSelectorBranchFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSelectorBranchFact\"},{\"local\":\"isMixinDefinitionFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinDefinitionFact\"},{\"local\":\"mixinDef\",\"source\":\"@jesscss/core/ast\",\"imported\":\"mixinDef\"},{\"local\":\"mixinDefinitionNameFromSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinDefinitionNameFromSelectorBranch\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"withBodySpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withBodySpan\"},{\"local\":\"isMixinCallFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinCallFact\"},{\"local\":\"mixinCallFromSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinCallFromSelectorBranch\"},{\"local\":\"isBareMixinCallFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isBareMixinCallFact\"},{\"local\":\"isRulesetTailFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isRulesetTailFact\"},{\"local\":\"sourceSpanOf\",\"source\":\"@jesscss/core/ast\",\"imported\":\"sourceSpanOf\"},{\"local\":\"selist\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selist\"},{\"local\":\"rule\",\"source\":\"@jesscss/core/ast\",\"imported\":\"rule\"}]),\n \"MixinArgumentGroup\": _nd(\"MixinArgumentGroup\", sequence(_s37, oneOrMore(sequence(literal(\",\"), _s37))), \"(children) => {\\n const args = children.filter(isMixinCallArgument);\\n return callArg(list(args.map(argument => requireValueSlot(argument.value)), ','));\\n }\", undefined, undefined, undefined, [{\"local\":\"isMixinCallArgument\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinCallArgument\"},{\"local\":\"callArg\",\"source\":\"@jesscss/core/ast\",\"imported\":\"callArg\"},{\"local\":\"list\",\"source\":\"@jesscss/core/ast\",\"imported\":\"list\"},{\"local\":\"requireValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueSlot\"}]),\n \"MixinArguments\": _nd(\"MixinArguments\", choice(attempt(sequence(_s38, literal(\";\"), optional(sequence(sepBy(_s38, literal(\";\"), { min: 1 }), optional(literal(\";\")))))), sequence(sepBy(_s39, literal(\",\"), { min: 1 }), optional(literal(\";\")))), \"children => mixinArgumentsFromChildren(children)\", undefined, undefined, undefined, [{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"}]),\n \"MixinInterior\": _nd(\"MixinInterior\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(literal(\"(\"), optional(sepBy(field(\"item\", choice(_nd(\"MixinBinding\", sequence(g[\"VariableReference\"], choice(literal(\"...\"), sequence(literal(\":\"), g[\"CallArgumentValue\"]), peek(choice(literal(\",\"), literal(\";\"), literal(\")\"))))), \"(children) => {\\n const reference = children[0];\\n if (!isVarRef(reference)) {\\n throw new TypeError('Less mixin binding lost its variable reference.');\\n }\\n const defaultValue = children.slice(1).find(value => isLessValueSlotValue(value) || isMixinCall(value));\\n return {\\n kind: 'binding',\\n reference,\\n ...(defaultValue === undefined ? {} : { default: requireMixinCallArgumentValue(defaultValue) }),\\n rest: children.some(child => isLessTerminalText(child, '...'))\\n };\\n }\", undefined, undefined, undefined, [{\"local\":\"isVarRef\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isVarRef\"},{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"},{\"local\":\"isMixinCall\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinCall\"},{\"local\":\"requireMixinCallArgumentValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireMixinCallArgumentValue\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]), _nd(\"MixinRestParam\", literal(\"...\"), \"() => ({ kind: 'anonymous-rest' })\"), _nd(\"MixinArgument\", g[\"CallArgumentValue\"], \"children => ({ kind: 'positional', value: requireMixinCallArgumentValue(children[0]) })\", undefined, undefined, undefined, [{\"local\":\"requireMixinCallArgumentValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireMixinCallArgumentValue\"}]))), field(\"separator\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, _s40)), { min: 1 })), optional(field(\"trailingSeparator\", choice(literal(\",\"), literal(\";\")))))), \"(_children, fields) => ({\\n items: fields?.item === undefined\\n ? []\\n : requireFields(fields, 'item').map(item => requireMixinInteriorItem(item.value)),\\n separators: fields?.separator === undefined\\n ? []\\n : requireFields(fields, 'separator').map((separator) => {\\n const value = requireTerminalText(separator.value);\\n if (value !== ',' && value !== ';') {\\n throw new TypeError('Less mixin interior produced an invalid separator.');\\n }\\n return value;\\n }),\\n ...(fields?.trailingSeparator === undefined\\n ? {}\\n : (() => {\\n const value = requireTerminalText(requireField(fields, 'trailingSeparator').value);\\n if (value !== ',' && value !== ';') {\\n throw new TypeError('Less mixin interior produced an invalid trailing separator.');\\n }\\n return { trailingSeparator: value };\\n })())\\n })\", undefined, undefined, undefined, [{\"local\":\"requireFields\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireFields\"},{\"local\":\"requireMixinInteriorItem\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireMixinInteriorItem\"},{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"requireField\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireField\"}]),\n \"ClassIdSelectorPrefix\": _nd(\"SelectorBranch\", sequence(_nd(\"CompoundSelector\", parser({ trivia: classifiedTrivia({ \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(_s41, many(_s42))), \"children => lessSelectorTermFromTokens(children.map((child) => {\\n return isLessSimpleToken(child) ? child : simpleSelector(requireToken(child).value);\\n }))\", undefined, undefined, undefined, [{\"local\":\"lessSelectorTermFromTokens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessSelectorTermFromTokens\"},{\"local\":\"isLessSimpleToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSimpleToken\"},{\"local\":\"simpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"simpleSelector\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), many(sequence(not(_s29), optional(_s54), g[\"CompoundSelector\"]))), \"(children, _fields, span) => ({\\n selector: withSourceSpan(selectorBranchOf(complexSegmentsFrom(children)), span),\\n extensions: []\\n })\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"selectorBranchOf\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selectorBranchOf\"},{\"local\":\"complexSegmentsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"complexSegmentsFrom\"}]),\n \"SelectorBranchTail\": _nd(\"SelectorBranch\", sequence(literal(\",\"), _s55), \"(children) => {\\n const branch = children.find(isSelectorBranchFact);\\n if (branch === undefined) {\\n throw new TypeError('Less selector list tail lost its selector branch.');\\n }\\n return branch;\\n }\", undefined, undefined, undefined, [{\"local\":\"isSelectorBranchFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSelectorBranchFact\"}]),\n \"FlatMixinCall\": _nd(\"MixinCall\", sequence(_s41, literal(\"(\"), optional(g[\"MixinArguments\"]), literal(\")\")), \"children => mixinCall(requireToken(children[0]).value, mixinArgumentsFromChildren(children))\", undefined, undefined, undefined, [{\"local\":\"mixinCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"mixinCall\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"}]),\n \"NamespacedMixinCall\": _nd(\"MixinCall\", sequence(_s41, oneOrMore(_s58), literal(\"(\"), optional(g[\"MixinArguments\"]), literal(\")\")), \"(children) => {\\n const head = requireToken(children[0]).value;\\n const tails = children.filter(isMixinPathTail);\\n const last = tails.at(-1);\\n if (last === undefined) {\\n throw new TypeError('Less namespaced iterable lost its final mixin name.');\\n }\\n const path = [{ combinator: ' ', selector: head }, ...tails.slice(0, -1)];\\n return {\\n ...mixinCall(last.selector, mixinArgumentsFromChildren(children)),\\n path\\n };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isMixinPathTail\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinPathTail\"},{\"local\":\"mixinCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"mixinCall\"},{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"}]),\n \"NamespacedMixinValue\": _nd(\"NamespacedMixinValue\", sequence(_s41, oneOrMore(_s58), literal(\"(\"), optional(g[\"MixinArguments\"]), literal(\")\"), optional(literal(\"!important\"))), \"(children) => {\\n const head = requireToken(children[0]).value;\\n const tails = children.filter(isMixinPathTail);\\n const last = tails.at(-1);\\n if (last === undefined) {\\n throw new TypeError('Less namespaced variable value lost its final mixin name.');\\n }\\n const path = [{ combinator: ' ', selector: head }, ...tails.slice(0, -1)];\\n const call = {\\n ...mixinCall(last.selector, mixinArgumentsFromChildren(children)),\\n path\\n };\\n return children.some(child => isLessTerminalText(child, '!important')) ? { ...call, important: true } : call;\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isMixinPathTail\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinPathTail\"},{\"local\":\"mixinCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"mixinCall\"},{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]),\n \"MixinReference\": _nd(\"MixinReference\", sequence(_nd(\"MixinReferenceBase\", sequence(_s41, many(_s58), optional(sequence(literal(\"(\"), optional(g[\"MixinArguments\"]), literal(\")\")))), \"(children) => {\\n const head = requireToken(children[0]).value;\\n const tails = children.filter(isMixinPathTail);\\n const terminal = tails.at(-1);\\n const call = mixinCall(terminal?.selector ?? head, mixinArgumentsFromChildren(children));\\n const path = [{ combinator: ' ', selector: head }, ...tails.slice(0, -1)];\\n const withPath = tails.length === 0 ? call : { ...call, path };\\n const hasCall = children.some(child => isLessTerminalText(child, '('));\\n const raw = `${head}${tails.map(tail => `${tail.combinator}${tail.selector}`).join('')}${hasCall ? `(${withPath.args.map(callArgumentSource).join(', ')})` : ''}`;\\n return { call: withPath, raw };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isMixinPathTail\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinPathTail\"},{\"local\":\"mixinCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"mixinCall\"},{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"},{\"local\":\"callArgumentSource\",\"source\":\"./grammar-helpers.js\",\"imported\":\"callArgumentSource\"}]), oneOrMore(dispatch(choice(literal(\"[]\"), literal(\"[\"), literal(\".\"), literal(\"(\")), when(\"[]\", _nd(\"ReferenceBracketTail\", _nd(\"InterpolationLastAccessor\", parser({ trivia: null }, routed()), \"() => ({ key: -1, keyKind: 'index', src: '-1' })\"), \"(children) => {\\n const accessor = requireInterpolationAccessorFact(children[0]);\\n return { step: { type: 'LookupStep', kind: accessor.keyKind, name: accessor.key }, src: `[${accessor.src}]` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireInterpolationAccessorFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationAccessorFact\"}])), when(\"[\", _nd(\"ReferenceBracketTail\", choice(_nd(\"InterpolationIndexAccessor\", parser({ trivia: null }, sequence(routed(), g[\"InterpolationIndex\"], literal(\"]\"))), \"(children) => {\\n const text = requireToken(children[1]).value;\\n return { key: Number(text), keyKind: 'index', src: text };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), _nd(\"InterpolationPropertyVariableAccessor\", parser({ trivia: null }, sequence(routed(), literal(\"$\"), g[\"VariableReference\"], literal(\"]\"))), \"(children) => {\\n const key = requireValueNode(children[2]);\\n if (!isVarRef(key)) {\\n throw new TypeError('Less property-variable map key must retain its variable reference.');\\n }\\n return { key, keyKind: 'prop', src: `$@${key.name}` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"isVarRef\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isVarRef\"}]), choice(_nd(\"InterpolationReferenceAccessor\", parser({ trivia: null }, sequence(routed(), g[\"IndirectVariableReference\"], literal(\"]\"))), \"(children) => {\\n const key = requireValueNode(children[1]);\\n if (!isVarIndirect(key) || !isVarRef(key.name)) {\\n throw new TypeError('Less indirect map key must retain its variable reference.');\\n }\\n return { key, keyKind: 'var', src: `@@${key.name.name}` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"isVarIndirect\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isVarIndirect\"},{\"local\":\"isVarRef\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isVarRef\"}]), _nd(\"InterpolationReferenceAccessor\", parser({ trivia: null }, sequence(routed(), g[\"VariableReference\"], literal(\"]\"))), \"(children) => {\\n const key = requireValueNode(children[1]);\\n if (!isVarRef(key)) {\\n throw new TypeError('Less variable map key must retain its variable reference.');\\n }\\n return { key, keyKind: 'var', src: `@${key.name}` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"isVarRef\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isVarRef\"}]), _nd(\"InterpolationReferenceAccessor\", parser({ trivia: null }, sequence(routed(), g[\"PropertyReference\"], literal(\"]\"))), \"(children) => {\\n const key = requireValueNode(children[1]);\\n if (!isPropRef(key)) {\\n throw new TypeError('Less property map key must retain its property reference.');\\n }\\n return { key, keyKind: 'prop', src: key.raw };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"isPropRef\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isPropRef\"}]), _nd(\"InterpolationReferenceAccessor\", parser({ trivia: null }, sequence(routed(), g[\"InterpolationKey\"], literal(\"]\"))), \"(children) => {\\n const text = requireToken(children[1]).value;\\n return { key: keyword(text), keyKind: 'prop', src: text };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"}]))), \"(children) => {\\n const accessor = requireInterpolationAccessorFact(children[0]);\\n return { step: { type: 'LookupStep', kind: accessor.keyKind, name: accessor.key }, src: `[${accessor.src}]` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireInterpolationAccessorFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationAccessorFact\"}])), when(\".\", _nd(\"ReferenceDotTail\", sequence(routed(), g[\"VariableNameToken\"]), \"(children) => {\\n const name = requireToken(children[1]).value;\\n return { step: { type: 'LookupStep', kind: 'member', name }, src: `.${name}` };\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])), when(\"(\", _nd(\"ReferenceCallTail\", sequence(routed(), optional(g[\"MixinArguments\"]), literal(\")\")), \"(children) => {\\n const args = mixinArgumentsFromChildren(children);\\n return { step: { type: 'Call', args }, src: `(${args.map(callArgumentSource).join(', ')})` };\\n }\", undefined, undefined, undefined, [{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"},{\"local\":\"callArgumentSource\",\"source\":\"./grammar-helpers.js\",\"imported\":\"callArgumentSource\"}]))))), \"(children, _fields, span) => {\\n const base = requireMixinReferenceBaseFact(children.find(isMixinReferenceBaseFact));\\n return withSourceSpan(referenceWithTails(base.call, base.raw, children.filter(isReferenceTailFact)), span);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireMixinReferenceBaseFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireMixinReferenceBaseFact\"},{\"local\":\"isMixinReferenceBaseFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinReferenceBaseFact\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"referenceWithTails\",\"source\":\"./grammar-helpers.js\",\"imported\":\"referenceWithTails\"},{\"local\":\"isReferenceTailFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isReferenceTailFact\"}]),\n \"ReferenceCall\": _nd(\"VarCall\", sequence(literal(\"@\"), not(keywords([\"supports\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })), _s4, literal(\"(\"), optional(g[\"MixinArguments\"]), literal(\")\"), optional(literal(\";\"))), \"(children, _fields, span) => {\\n const name = requireSupportedVariableName(children[1], span.start, span.start + variableNameText(children[1]).length + 1);\\n const args = mixinArgumentsFromChildren(children);\\n return withSourceSpan(reference(variableReference(name, 'scoped'), [{ type: 'Call', args }], `@${name}()`), span);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"},{\"local\":\"variableNameText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"variableNameText\"},{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"reference\",\"source\":\"@jesscss/core/ast\",\"imported\":\"reference\"},{\"local\":\"variableReference\",\"source\":\"@jesscss/core/ast\",\"imported\":\"variableReference\"}]),\n \"MixinGuard\": _nd(\"MixinGuard\", parser({ trivia: classifiedTrivia({ \"whitespace\": regex(\"(?:(?:[ \\\\t\\\\n\\\\r\\\\f]+)|(?:\\\\/\\\\/[^\\\\n\\\\r]*)|(?:\\\\/\\\\*(?:[^*]|\\\\*(?!\\\\/))*\\\\*\\\\/))+\", \"\") }) }, sequence(keywords([\"when\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"MixinGuardTopOr\"])), \"(children) => {\\n const guard = children.find(isMixinGuard);\\n if (guard === undefined) {\\n throw new TypeError('Less grammar produced a missing mixin guard.');\\n }\\n return guard;\\n }\", undefined, undefined, undefined, [{\"local\":\"isMixinGuard\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinGuard\"}]),\n \"MixinGuardTopOr\": _nd(\"MixinGuardTopOr\", sequence(g[\"MixinGuardTopAnd\"], many(sequence(choice(keywords([\"or\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), literal(\",\")), g[\"MixinGuardTopAnd\"]))), \"children => foldMixinGuards('or', children)\", undefined, undefined, undefined, [{\"local\":\"foldMixinGuards\",\"source\":\"./grammar-helpers.js\",\"imported\":\"foldMixinGuards\"}]),\n \"MixinGuardTopAnd\": _nd(\"MixinGuardTopAnd\", sequence(g[\"MixinGuardTopTerm\"], many(sequence(keywords([\"and\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"MixinGuardTopTerm\"]))), \"children => foldMixinGuards('and', children)\", undefined, undefined, undefined, [{\"local\":\"foldMixinGuards\",\"source\":\"./grammar-helpers.js\",\"imported\":\"foldMixinGuards\"}]),\n \"MixinGuardTopTerm\": _nd(\"MixinGuardTopTerm\", choice(_nd(\"UnparenthesizedMixinGuard\", choice(sequence(optional(keywords([\"not\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })), choice(_s59, g[\"Call\"]), optional(sequence(_s60, g[\"MixinGuardOperand\"]))), sequence(optional(keywords([\"not\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })), g[\"MixinGuardOperand\"], _s60, g[\"MixinGuardOperand\"])), \"(_children, _fields, span) => {\\n throw new LessUnparenthesizedMixinGuardError(span.start, span.end);\\n }\", undefined, undefined, undefined, [{\"local\":\"LessUnparenthesizedMixinGuardError\",\"source\":\"./parse-error.js\",\"imported\":\"LessUnparenthesizedMixinGuardError\"}]), sequence(optional(keywords([\"not\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })), literal(\"(\"), g[\"MixinGuardOr\"], literal(\")\")), sequence(keywords([\"not\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"MixinGuardTerm\"])), \"(children) => {\\n const guard = children.find(isMixinGuard);\\n if (guard === undefined) {\\n throw new TypeError('Less grammar produced an empty top-level grouped guard.');\\n }\\n return children.some(child => isLessTerminalText(child, 'not')) ? { g: 'not', inner: guard } : guard;\\n }\", undefined, undefined, undefined, [{\"local\":\"isMixinGuard\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinGuard\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]),\n \"MixinGuardOr\": _nd(\"MixinGuardOr\", sequence(g[\"MixinGuardAnd\"], many(sequence(choice(keywords([\"or\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), literal(\",\")), g[\"MixinGuardAnd\"]))), \"children => foldMixinGuards('or', children)\", undefined, undefined, undefined, [{\"local\":\"foldMixinGuards\",\"source\":\"./grammar-helpers.js\",\"imported\":\"foldMixinGuards\"}]),\n \"MixinGuardAnd\": _nd(\"MixinGuardAnd\", sequence(g[\"MixinGuardTerm\"], many(sequence(keywords([\"and\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"MixinGuardTerm\"]))), \"children => foldMixinGuards('and', children)\", undefined, undefined, undefined, [{\"local\":\"foldMixinGuards\",\"source\":\"./grammar-helpers.js\",\"imported\":\"foldMixinGuards\"}]),\n \"MixinGuardTerm\": _nd(\"MixinGuardTerm\", sequence(optional(keywords([\"not\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })), choice(sequence(literal(\"(\"), g[\"MixinGuardOr\"], literal(\")\")), sequence(g[\"MixinGuardOperand\"], optional(sequence(_s60, g[\"MixinGuardOperand\"]))))), \"(children) => {\\n const nested = children.find(isMixinGuard);\\n const values = children.filter(isValueNode);\\n const operator = children.map(guardOperatorText).find((value) => value !== null);\\n let guard;\\n if (nested !== undefined) {\\n guard = nested;\\n } else {\\n const left = values[0];\\n if (left === undefined) {\\n throw new TypeError('Less grammar produced a guard without a value.');\\n }\\n if (operator === undefined) {\\n const call = isFunctionCall(left) ? left : null;\\n if (call !== null && isDefaultGuardCall(call)) {\\n guard = { g: 'default' };\\n } else if (call !== null) {\\n guard = { g: 'call', name: call.name, args: call.args.map(arg => requireValueNode(arg.value)) };\\n } else {\\n guard = lessGuardTruth(left);\\n }\\n } else {\\n const right = values[1];\\n if (right === undefined) {\\n throw new TypeError('Less grammar produced a comparison guard without a right operand.');\\n }\\n /*\\n * GUARD position, so the comparison lowers to the MATCH test (§4.2a).\\n * This production family is reached only from `g.MixinGuard` — the\\n * `when` clause of a mixin definition or a CSS guard — and both ask\\n * whether a definition APPLIES. `.generic(1, true) when (@a < @b)`\\n * has no ordering and therefore does not match; lessc 4.6.3 agrees,\\n * and so does the owner-maintained expected CSS. Value position keeps\\n * the assertion, built separately in `FunctionConditionTerm`.\\n */\\n guard = { g: 'match', op: operator, left, right };\\n }\\n }\\n return children.some(child => isLessTerminalText(child, 'not')) ? { g: 'not', inner: guard } : guard;\\n }\", undefined, undefined, undefined, [{\"local\":\"isMixinGuard\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinGuard\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"guardOperatorText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"guardOperatorText\"},{\"local\":\"isFunctionCall\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isFunctionCall\"},{\"local\":\"isDefaultGuardCall\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isDefaultGuardCall\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"lessGuardTruth\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessGuardTruth\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]),\n \"MixinGuardOperand\": _nd(\"MixinGuardOperand\", choice(_s59, attempt(g[\"MixinReference\"]), g[\"VariableReferenceChain\"], g[\"Quoted\"], g[\"EscapedQuoted\"], g[\"Dimension\"], g[\"Color\"], g[\"Call\"], g[\"Keyword\"]), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"EachName\": _nd(\"EachName\", sequence(literal(\"@\"), _s4), \"(children, _fields, span) => requireSupportedVariableName(\\n children[1],\\n span.start,\\n span.start + variableNameText(children[1]).length + 1\\n )\", undefined, undefined, undefined, [{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"},{\"local\":\"variableNameText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"variableNameText\"}]),\n \"BodyStatement\": choice(_nd(\"PunctuationMapDeclarationItem\", sequence(_nd(\"PunctuationMapDeclaration\", sequence(g[\"PunctuationMapKeyToken\"], literal(\":\"), optional(g[\"ValueListWithPriority\"])), \"(children, _fields, span) => {\\n const value = children.find(isLessValueSlotValue);\\n return withSourceSpan(\\n decl(requireToken(children[0]).value, value === undefined ? any('') : value),\\n span\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"decl\",\"source\":\"@jesscss/core/ast\",\"imported\":\"decl\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"}]), _s6), \"(children) => {\\n const declaration = children.find(isLessDeclaration);\\n if (declaration === undefined) {\\n throw new TypeError('Less punctuation map item lost its declaration fact.');\\n }\\n return declaration;\\n }\", { collapse: true }, undefined, undefined, [{\"local\":\"isLessDeclaration\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessDeclaration\"}]), _s0, _s1, _s35, g[\"FunctionStatement\"], _s36, literal(\";\")),\n \"EachCallback\": _nd(\"EachCallback\", choice(sequence(literal(\"{\"), many(g[\"BodyStatement\"]), optional(g[\"Call\"]), literal(\"}\")), sequence(keywords([\".\",\"#\"], { caseInsensitive: false }), literal(\"(\"), g[\"EachName\"], optional(sequence(_s40, g[\"EachName\"], optional(sequence(_s40, g[\"EachName\"])))), literal(\")\"), literal(\"{\"), many(g[\"BodyStatement\"]), optional(g[\"Call\"]), literal(\"}\"))), \"(children) => {\\n if (requireToken(children[0]).value === '{') {\\n return {\\n binding: { kind: 'comma', names: ['value', 'key', 'index'] },\\n rules: requireCallbackStatements(children.slice(1, -1))\\n };\\n }\\n const names = children.filter((child) => typeof child === 'string');\\n const bodyStart = children.findIndex(child => isLessTerminalText(child, '{'));\\n if (bodyStart < 0) {\\n throw new TypeError('Less grammar produced a named each() callback without a body.');\\n }\\n const body = requireCallbackStatements(children.slice(bodyStart + 1, -1));\\n if (names.length === 1) {\\n return { binding: { kind: 'single', name: names[0] }, rules: body };\\n }\\n if (names.length === 2 || names.length === 3) {\\n return {\\n binding: { kind: 'comma', names: [names[0], names[1], names[2]] },\\n rules: body\\n };\\n }\\n throw new TypeError('Less grammar produced an invalid each() callback binding.');\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireCallbackStatements\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireCallbackStatements\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]),\n \"EachFunctionStatement\": _nd(\"For\", sequence(routed(), choice(g[\"NamespacedMixinCall\"], g[\"FlatMixinCall\"], g[\"ValueBlock\"], g[\"ValueList\"]), choice(literal(\",\"), literal(\";\")), g[\"EachCallback\"], literal(\")\"), optional(literal(\";\"))), \"(children) => {\\n const callback = children.find(isLessEachCallback);\\n if (callback === undefined) {\\n throw new TypeError('Less each() reduction produced an invalid callback.');\\n }\\n const iterable = children.find(child => isMixinCall(child) || isLessValueSlotValue(child));\\n if (iterable === undefined) {\\n throw new TypeError('Less each() reduction produced an invalid iterable.');\\n }\\n return forNode(isMixinCall(iterable) ? iterable : requireValueSlot(iterable), callback.rules, callback.binding);\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessEachCallback\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessEachCallback\"},{\"local\":\"isMixinCall\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinCall\"},{\"local\":\"isLessValueSlotValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessValueSlotValue\"},{\"local\":\"forNode\",\"source\":\"@jesscss/core/ast\",\"imported\":\"forNode\"},{\"local\":\"requireValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueSlot\"}]),\n \"SupportsValue\": _nd(\"SupportsValue\", g[\"ValueList\"], \"(children) => {\\n const value = requireValueSlot(children[0]);\\n if (isValueNode(value)) {\\n return value;\\n }\\n return spaced(value.map(requireValueNode));\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueSlot\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueSlot\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"SupportsFeature\": _nd(\"SupportsFeature\", sequence(literal(\"(\"), g[\"Identifier\"], optional(sequence(literal(\":\"), g[\"SupportsValue\"])), literal(\")\")), \"(children, _fields, _span, _rawChildren, _triviaLog, state) => {\\n const property = keyword(requireToken(children[1]).value);\\n const value = children.find(isValueNode);\\n return value === undefined\\n ? block(property)\\n : block(operation(':', property, value, false, lessMathOutsideParens(state, ':')));\\n }\", undefined, undefined, undefined, [{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"},{\"local\":\"operation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"operation\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"}], true),\n \"SupportsInParens\": _nd(\"SupportsInParens\", choice(sequence(literal(\"(\"), g[\"SupportsCondition\"], literal(\")\")), g[\"SupportsFeature\"], g[\"Enclosed\"]), \"children => children.length === 1\\n ? requireValueNode(children[0])\\n : block(requireValueNode(children[1]))\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"}]),\n \"SupportsCondition\": _nd(\"SupportsCondition\", choice(sequence(g[\"QueryNot\"], g[\"SupportsInParens\"]), sequence(g[\"SupportsInParens\"], many(sequence(g[\"QueryAndOr\"], g[\"SupportsInParens\"])))), \"(children) => {\\n const values = children.map(child => isValueNode(child)\\n ? child\\n : keyword(requireToken(child).value));\\n return values.length === 1 ? values[0] : spaced(values);\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"}]),\n \"EnclosedContent\": _nd(\"EnclosedContent\", parser({ trivia: null }, many(choice(g[\"BareVariableInterpolation\"], _nd(\"EnclosedRaw\", parser({ trivia: null }, choice(g[\"BlockCommentToken\"], regex(\"(?:\\\\\\\\[\\\\s\\\\S]|\\\\/(?!\\\\*)|@(?!\\\\{)|[^\\\\\\\\/'\\\"@()[\\\\]{}]+)+\", \"\"))), \"children => requireToken(children[0]).value\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), g[\"VariableInterpolation\"], g[\"EnclosedQuoted\"], g[\"EnclosedGroup\"]))), \"enclosedInterpolationFromChildren\", { buildArity: 1 }, undefined, \"function enclosedInterpolationFromChildren(children: readonly unknown[]): Interpolation {\\n const parts: Interpolation['parts'] = [];\\n const append = (child: unknown): void => {\\n if (child === undefined || child === null || child === false) {\\n return;\\n }\\n if (isInterpolationFact(child)) {\\n parts.push({ ref: child.ref, unquote: true });\\n } else if (typeof child === 'object' && child !== null && 'type' in child && child.type === 'Interpolation') {\\n if (!isValueNode(child) || child.type !== 'Interpolation') {\\n throw new TypeError('Less general-enclosed grammar produced a non-interpolation child.');\\n }\\n for (const part of child.parts) {\\n if ('lit' in part) {\\n appendEnclosedLiteral(parts, part.lit);\\n } else {\\n parts.push(part);\\n }\\n }\\n } else if (Array.isArray(child)) {\\n for (const nested of child) {\\n append(nested);\\n }\\n } else if (typeof child === 'string') {\\n appendEnclosedLiteral(parts, child);\\n } else {\\n appendEnclosedLiteral(parts, requireToken(child).value);\\n }\\n };\\n for (const child of children) {\\n append(child);\\n }\\n return interpolation(parts);\\n}\"),\n \"EnclosedGroup\": _nd(\"EnclosedGroup\", choice(parser({ trivia: null }, sequence(literal(\"(\"), g[\"EnclosedContent\"], literal(\")\"))), parser({ trivia: null }, sequence(literal(\"[\"), g[\"EnclosedContent\"], literal(\"]\"))), parser({ trivia: null }, sequence(literal(\"{\"), g[\"EnclosedContent\"], literal(\"}\")))), \"enclosedInterpolationFromChildren\", { buildArity: 1 }, undefined, \"function enclosedInterpolationFromChildren(children: readonly unknown[]): Interpolation {\\n const parts: Interpolation['parts'] = [];\\n const append = (child: unknown): void => {\\n if (child === undefined || child === null || child === false) {\\n return;\\n }\\n if (isInterpolationFact(child)) {\\n parts.push({ ref: child.ref, unquote: true });\\n } else if (typeof child === 'object' && child !== null && 'type' in child && child.type === 'Interpolation') {\\n if (!isValueNode(child) || child.type !== 'Interpolation') {\\n throw new TypeError('Less general-enclosed grammar produced a non-interpolation child.');\\n }\\n for (const part of child.parts) {\\n if ('lit' in part) {\\n appendEnclosedLiteral(parts, part.lit);\\n } else {\\n parts.push(part);\\n }\\n }\\n } else if (Array.isArray(child)) {\\n for (const nested of child) {\\n append(nested);\\n }\\n } else if (typeof child === 'string') {\\n appendEnclosedLiteral(parts, child);\\n } else {\\n appendEnclosedLiteral(parts, requireToken(child).value);\\n }\\n };\\n for (const child of children) {\\n append(child);\\n }\\n return interpolation(parts);\\n}\"),\n \"EnclosedQuoted\": _nd(\"EnclosedQuoted\", choice(parser({ trivia: null }, sequence(literal(\"\\\"\"), many(choice(g[\"VariableInterpolation\"], g[\"BareVariableInterpolation\"], regex(\"(?:\\\\\\\\[\\\\s\\\\S]|@(?!\\\\{)|[^\\\"\\\\\\\\@])+\", \"\"))), literal(\"\\\"\"))), parser({ trivia: null }, sequence(literal(\"'\"), many(choice(g[\"VariableInterpolation\"], g[\"BareVariableInterpolation\"], regex(\"(?:\\\\\\\\[\\\\s\\\\S]|@(?!\\\\{)|[^'\\\\\\\\@])+\", \"\"))), literal(\"'\")))), \"enclosedInterpolationFromChildren\", { buildArity: 1 }, undefined, \"function enclosedInterpolationFromChildren(children: readonly unknown[]): Interpolation {\\n const parts: Interpolation['parts'] = [];\\n const append = (child: unknown): void => {\\n if (child === undefined || child === null || child === false) {\\n return;\\n }\\n if (isInterpolationFact(child)) {\\n parts.push({ ref: child.ref, unquote: true });\\n } else if (typeof child === 'object' && child !== null && 'type' in child && child.type === 'Interpolation') {\\n if (!isValueNode(child) || child.type !== 'Interpolation') {\\n throw new TypeError('Less general-enclosed grammar produced a non-interpolation child.');\\n }\\n for (const part of child.parts) {\\n if ('lit' in part) {\\n appendEnclosedLiteral(parts, part.lit);\\n } else {\\n parts.push(part);\\n }\\n }\\n } else if (Array.isArray(child)) {\\n for (const nested of child) {\\n append(nested);\\n }\\n } else if (typeof child === 'string') {\\n appendEnclosedLiteral(parts, child);\\n } else {\\n appendEnclosedLiteral(parts, requireToken(child).value);\\n }\\n };\\n for (const child of children) {\\n append(child);\\n }\\n return interpolation(parts);\\n}\"),\n \"EnclosedFunctionName\": _nd(\"EnclosedFunctionName\", token(parser({ trivia: null }, sequence(g[\"QueryFunctionName\"], literal(\"(\")))), \"children => ({ name: functionNameFromOpener(children[0]) })\", undefined, undefined, undefined, [{\"local\":\"functionNameFromOpener\",\"source\":\"./grammar-helpers.js\",\"imported\":\"functionNameFromOpener\"}]),\n \"Enclosed\": _nd(\"Enclosed\", choice(parser({ trivia: null }, sequence(g[\"EnclosedFunctionName\"], g[\"EnclosedContent\"], literal(\")\"))), parser({ trivia: null }, sequence(literal(\"(\"), g[\"EnclosedContent\"], literal(\")\")))), \"(children) => {\\n const content = children.find((child) => typeof child === 'object' && child !== null && 'type' in child && child.type === 'Interpolation');\\n if (content === undefined) {\\n throw new TypeError('Less general-enclosed lost its grammar-owned content.');\\n }\\n const name = children.find((child) => typeof child === 'object' && child !== null && 'name' in child);\\n return name === undefined ? block(content) : funcCall(name.name, [content]);\\n }\", undefined, undefined, undefined, [{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"},{\"local\":\"funcCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"funcCall\"}]),\n \"SupportsBlock\": _nd(\"SupportsBlock\", sequence(g[\"SupportsAtKeyword\"], choice(g[\"AtRuleInterpolation\"], g[\"BareVariableInterpolation\"], g[\"SupportsCondition\"]), literal(\"{\"), g[\"blockBody\"], optional(g[\"Call\"]), literal(\"}\")), \"(children, _fields, span, rawChildren) => withSourceSpan(\\n withBlockBody(\\n atRuleBlock(requireToken(children[0]).value, requireValueNode(children[1]), children.filter(isStatement)),\\n rawChildren\\n ),\\n span\\n )\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"withBlockBody\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withBlockBody\"},{\"local\":\"atRuleBlock\",\"source\":\"@jesscss/core/ast\",\"imported\":\"atRuleBlock\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"}]),\n \"QueryValue\": _nd(\"QueryValue\", choice(g[\"PreservedDivision\"], g[\"queryLeaf\"]), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"QueryColonFeature\": _nd(\"QueryColonFeature\", sequence(literal(\"(\"), g[\"Identifier\"], regex(\":[ \\\\t\\\\n\\\\r\\\\f]*\", \"\"), g[\"MathSum\"], literal(\")\")), \"(children, _fields, span, _rawChildren, _triviaLog, state) => withSourceSpan(\\n block(operation(':', keyword(requireToken(children[1]).value), requireValueNode(children[3]), false,\\n lessMathOutsideParens(state, ':'))),\\n span\\n )\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"},{\"local\":\"operation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"operation\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"}], true),\n \"QueryFeatureValue\": _nd(\"QueryFeatureValue\", sequence(g[\"queryLeaf\"], many(sequence(literal(\"/\"), g[\"queryLeaf\"]))), \"lessFoldOperation\", { buildArity: 6 }, undefined, \"function lessFoldOperation(\\n children: readonly unknown[],\\n _fields: FieldMap | undefined,\\n _span: Span,\\n rawChildren: readonly unknown[],\\n _triviaLog: readonly number[],\\n state: unknown\\n): ValueNode {\\n const first = children.find(isValueNode);\\n if (first === undefined) {\\n throw new TypeError('Less arithmetic grammar produced no operand.');\\n }\\n const firstIndex = children.indexOf(first);\\n const firstRaw = rawChildren[firstIndex];\\n // In AST mode Parseman supplies the original spanned children here. That\\n // gives each folded operation its authored range without retaining one span\\n // per standalone dimension. A synthetic child can still contribute an\\n // existing provenance fact when it has one.\\n const firstSpan = isSpannedToken(firstRaw) ? firstRaw.span : sourceSpanOf(first);\\n let result = first;\\n const start = firstSpan?.start;\\n for (let index = children.indexOf(first) + 1; index < children.length; index += 2) {\\n const operatorToken = children[index];\\n const right = children[index + 1];\\n if (operatorToken === undefined || !isValueNode(right)) {\\n throw new TypeError('Less arithmetic grammar lost an operator operand.');\\n }\\n const rightRaw = rawChildren[index + 1];\\n const rightSpan = isSpannedToken(rightRaw) ? rightRaw.span : sourceSpanOf(right);\\n const operator = requireTerminalText(operatorToken).trim();\\n const folded = operation(operator, result, right, false, lessMathOutsideParens(state, operator));\\n result = start === undefined || rightSpan === undefined\\n ? folded\\n : withSourceSpan(folded, { start, end: rightSpan.end });\\n }\\n return result;\\n}\"),\n \"QueryNonOnlyKeyword\": _nd(\"QueryNonOnlyKeyword\", sequence(not(g[\"QueryOnly\"]), g[\"Keyword\"]), \"children => requireKeyword(children.at(-1))\", undefined, undefined, undefined, [{\"local\":\"requireKeyword\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireKeyword\"}]),\n \"QueryTerm\": _nd(\"QueryTerm\", choice(attempt(g[\"MixinReference\"]), g[\"QueryFeature\"], g[\"VariableReference\"], g[\"QueryNonOnlyKeyword\"]), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"MediaQueryTerm\": _nd(\"MediaQueryTerm\", choice(g[\"AtRuleInterpolation\"], g[\"BareVariableInterpolation\"], g[\"QueryTerm\"]), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"QueryFeature\": _nd(\"QueryFeature\", choice(_nd(\"QueryBareFeature\", sequence(literal(\"(\"), g[\"Identifier\"], literal(\")\")), \"children => block(keyword(requireToken(children[1]).value))\", undefined, undefined, undefined, [{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), g[\"QueryColonFeature\"], _nd(\"QueryComparisonFeature\", sequence(literal(\"(\"), g[\"Identifier\"], g[\"QueryComparisonOperator\"], g[\"QueryFeatureValue\"], optional(sequence(g[\"QueryComparisonOperator\"], g[\"QueryFeatureValue\"])), literal(\")\")), \"(children, _fields, _span, _rawChildren, _triviaLog, state) => {\\n const values = children.filter(isValueNode);\\n const operators = lessQueryComparisonOperators(children);\\n if (values.length < 1 || operators.length < 1) {\\n throw new TypeError('Less query comparison lost a value or operator.');\\n }\\n let comparison = operation(operators[0], keyword(requireToken(children[1]).value), values[0], false,\\n lessMathOutsideParens(state, operators[0]));\\n if (operators.length === 2) {\\n if (values[1] === undefined) {\\n throw new TypeError('Less chained query comparison lost its final value.');\\n }\\n comparison = operation(operators[1], comparison, values[1], false,\\n lessMathOutsideParens(state, operators[1]));\\n }\\n return block(comparison);\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"lessQueryComparisonOperators\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessQueryComparisonOperators\"},{\"local\":\"operation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"operation\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"},{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"}], true), _nd(\"QueryRangeFeature\", sequence(literal(\"(\"), g[\"QueryFeatureValue\"], g[\"QueryComparisonOperator\"], g[\"Identifier\"], optional(sequence(g[\"QueryComparisonOperator\"], g[\"QueryFeatureValue\"])), literal(\")\")), \"(children, _fields, _span, _rawChildren, _triviaLog, state) => {\\n const values = children.filter(isValueNode);\\n const operators = lessQueryComparisonOperators(children);\\n if (values.length < 1 || operators.length < 1) {\\n throw new TypeError('Less query range lost a value or operator.');\\n }\\n let comparison = operation(operators[0], values[0], keyword(requireToken(children[3]).value), false,\\n lessMathOutsideParens(state, operators[0]));\\n if (operators.length === 2) {\\n if (values[1] === undefined) {\\n throw new TypeError('Less chained query range lost its final value.');\\n }\\n comparison = operation(operators[1], comparison, values[1], false,\\n lessMathOutsideParens(state, operators[1]));\\n }\\n return block(comparison);\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"lessQueryComparisonOperators\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessQueryComparisonOperators\"},{\"local\":\"operation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"operation\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"},{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"}], true), _nd(\"QueryLogicalGroup\", sequence(literal(\"(\"), g[\"QueryFeature\"], oneOrMore(sequence(g[\"QueryAndOr\"], g[\"QueryFeature\"])), literal(\")\")), \"children => block(spaced(children.filter(child => isValueNode(child) ? true : isLessTerminalText(child, 'and') || isLessTerminalText(child, 'or')).map(keywordOrValue)))\", undefined, undefined, undefined, [{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"},{\"local\":\"keywordOrValue\",\"source\":\"./grammar-helpers.js\",\"imported\":\"keywordOrValue\"}]), _nd(\"QueryNegatedFeature\", sequence(literal(\"(\"), g[\"QueryNot\"], g[\"QueryFeature\"], literal(\")\")), \"children => block(spaced([keyword(requireToken(children[1]).value), requireValueNode(children[2])]))\", undefined, undefined, undefined, [{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}])), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"QueryClause\": _nd(\"QueryClause\", choice(_nd(\"QueryOnlyClause\", sequence(g[\"QueryOnly\"], g[\"QueryNonOnlyKeyword\"], many(sequence(g[\"QueryAndOr\"], g[\"QueryTerm\"]))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => spacedFromValueChildren(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"spacedFromValueChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"spacedFromValueChildren\"}], true), sequence(g[\"QueryTerm\"], many(sequence(g[\"QueryAndOr\"], g[\"QueryTerm\"])))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => queryClauseReducer(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"queryClauseReducer\",\"source\":\"./grammar-helpers.js\",\"imported\":\"queryClauseReducer\"}], true),\n \"ContainerStyleQuery\": _nd(\"ContainerStyleQuery\", sequence(token(parser({ trivia: null }, sequence(keywords([\"style\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), literal(\"(\")))), g[\"CustomPropertyToken\"], literal(\":\"), g[\"QueryValue\"], literal(\")\")), \"(children, _fields, _span, _rawChildren, _triviaLog, state) =>\\n funcCall(functionNameFromOpener(children[0]), [operation(':', keyword(requireToken(children[1]).value),\\n requireValueNode(children[3]), false, lessMathOutsideParens(state, ':'))])\", undefined, undefined, undefined, [{\"local\":\"funcCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"funcCall\"},{\"local\":\"functionNameFromOpener\",\"source\":\"./grammar-helpers.js\",\"imported\":\"functionNameFromOpener\"},{\"local\":\"operation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"operation\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"}], true),\n \"ContainerScrollStateQuery\": _nd(\"ContainerScrollStateQuery\", sequence(token(parser({ trivia: null }, sequence(keywords([\"scroll-state\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), literal(\"(\")))), g[\"Identifier\"], literal(\":\"), g[\"QueryValue\"], literal(\")\")), \"(children, _fields, _span, _rawChildren, _triviaLog, state) =>\\n funcCall(functionNameFromOpener(children[0]), [operation(':', keyword(requireToken(children[1]).value),\\n requireValueNode(children[3]), false, lessMathOutsideParens(state, ':'))])\", undefined, undefined, undefined, [{\"local\":\"funcCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"funcCall\"},{\"local\":\"functionNameFromOpener\",\"source\":\"./grammar-helpers.js\",\"imported\":\"functionNameFromOpener\"},{\"local\":\"operation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"operation\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"}], true),\n \"ContainerName\": _nd(\"ContainerName\", sequence(not(keywords([\"none\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\\\\\\\\\" })), not(g[\"QueryNot\"]), not(g[\"QueryAndOr\"]), g[\"Keyword\"]), \"children => requireKeyword(children.at(-1))\", undefined, undefined, undefined, [{\"local\":\"requireKeyword\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireKeyword\"}]),\n \"ContainerQueryAtom\": _nd(\"ContainerQueryAtom\", choice(g[\"ContainerStyleQuery\"], g[\"ContainerScrollStateQuery\"], g[\"QueryFeature\"]), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"ContainerCondition\": _nd(\"ContainerCondition\", choice(sequence(g[\"QueryNot\"], g[\"ContainerQueryAtom\"]), sequence(g[\"ContainerQueryAtom\"], many(sequence(g[\"QueryAndOr\"], g[\"ContainerQueryAtom\"])))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => queryClauseReducer(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"queryClauseReducer\",\"source\":\"./grammar-helpers.js\",\"imported\":\"queryClauseReducer\"}], true),\n \"MediaContainerBody\": _nd(\"MediaContainerBody\", sequence(literal(\"{\"), g[\"blockBody\"], optional(g[\"Call\"]), literal(\"}\")), \"children => children.filter(isStatement)\", undefined, undefined, undefined, [{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"}]),\n \"MediaContainerBlock\": _nd(\"QueryAtRuleBlock\", dispatch(token(parser({ trivia: null }, g[\"MediaContainerAtKeyword\"])), when(\"@media\", sequence(routed(), choice(_nd(\"MediaQueryPrelude\", sepBy(_nd(\"MediaQueryClause\", choice(_nd(\"MediaQueryOnlyClause\", sequence(g[\"QueryOnly\"], g[\"QueryNonOnlyKeyword\"], many(sequence(g[\"QueryAndOr\"], g[\"MediaQueryTerm\"]))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => spacedFromValueChildren(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"spacedFromValueChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"spacedFromValueChildren\"}], true), _nd(\"MediaQueryNotClause\", sequence(g[\"QueryNot\"], g[\"MediaQueryTerm\"], many(sequence(g[\"QueryAndOr\"], g[\"MediaQueryTerm\"]))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => spacedFromValueChildren(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"spacedFromValueChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"spacedFromValueChildren\"}], true), sequence(g[\"MediaQueryTerm\"], many(sequence(g[\"QueryAndOr\"], g[\"MediaQueryTerm\"])))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => queryClauseReducer(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"queryClauseReducer\",\"source\":\"./grammar-helpers.js\",\"imported\":\"queryClauseReducer\"}], true), field(\"separator\", regex(\",[ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), { min: 1 }), \"(children, fields, _span, rawChildren, triviaLog, state) =>\\n commaListWithTriviaFromChildren(children, fields, triviaLog, state, isValueNode, rawChildren)\", undefined, undefined, undefined, [{\"local\":\"commaListWithTriviaFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"commaListWithTriviaFromChildren\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"}]), g[\"AtRuleInterpolation\"]), g[\"MediaContainerBody\"]), { caseInsensitive: true }), when(\"@container\", sequence(routed(), _nd(\"ContainerQueryPrelude\", sepBy(_nd(\"ContainerConditionItem\", choice(g[\"BareVariableInterpolation\"], g[\"ContainerCondition\"], sequence(g[\"AtRuleInterpolation\"], g[\"ContainerCondition\"]), sequence(g[\"ContainerName\"], g[\"ContainerCondition\"]), g[\"ContainerName\"]), \"(children) => {\\n const values = children.filter(isValueNode);\\n return values.length === 1 ? values[0] : spaced(values);\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"}]), field(\"separator\", regex(\",[ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), { min: 1 }), \"(children, fields, _span, rawChildren, triviaLog, state) =>\\n commaListWithTriviaFromChildren(children, fields, triviaLog, state, isValueNode, rawChildren)\", undefined, undefined, undefined, [{\"local\":\"commaListWithTriviaFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"commaListWithTriviaFromChildren\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"}]), g[\"MediaContainerBody\"]), { caseInsensitive: true })), \"(children, _fields, span) => {\\n const body = children.find(Array.isArray);\\n if (body === undefined) {\\n throw new TypeError('Less conditional at-rule lost its body facts.');\\n }\\n return withSourceSpan(\\n atRuleBlock(requireToken(children[0]).value, requireValueNode(children[1]), requireStatementArray(body)),\\n span\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"atRuleBlock\",\"source\":\"@jesscss/core/ast\",\"imported\":\"atRuleBlock\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"requireStatementArray\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireStatementArray\"}]),\n \"KeyframeBlock\": _nd(\"KeyframeBlock\", sequence(sepBy(g[\"keyframeSelector\"], literal(\",\"), { min: 1 }), literal(\"{\"), many(choice(_s36, g[\"FunctionStatement\"], literal(\";\"))), optional(g[\"Call\"]), literal(\"}\")), \"(children, _fields, span, rawChildren) => {\\n const selectors = children.filter(isSimpleSelector)\\n .map(selector => selector);\\n if (selectors.length === 0) {\\n throw new TypeError('Less keyframe block requires a selector.');\\n }\\n return withSourceSpan(\\n withBlockBody(rule(selist(...selectors), children.filter(isStatement)), rawChildren),\\n span\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"isSimpleSelector\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSimpleSelector\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"withBlockBody\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withBlockBody\"},{\"local\":\"rule\",\"source\":\"@jesscss/core/ast\",\"imported\":\"rule\"},{\"local\":\"selist\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selist\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"}]),\n \"Keyframes\": _nd(\"Keyframes\", sequence(g[\"KeyframesAtKeyword\"], field(\"prelude\", choice(g[\"AtRuleInterpolation\"], g[\"BareVariableInterpolation\"], g[\"EscapedQuoted\"], g[\"LiteralQuoted\"], g[\"Keyword\"])), literal(\"{\"), many(choice(g[\"ReferenceCall\"], g[\"KeyframeBlock\"])), literal(\"}\")), \"(children, fields, span, rawChildren) => {\\n // The keyframes body may itself contain Reference values. Select header\\n // facts only from the grammar region before `{`, rather than filtering\\n // every value-shaped child in the whole production.\\n requireField(fields, 'prelude');\\n const bodyStart = children.findIndex(child => isLessTerminalText(child, '{'));\\n if (bodyStart < 0) {\\n throw new TypeError('Less keyframes lost its body boundary.');\\n }\\n const preludeParts = children.slice(1, bodyStart).filter(isValueNode);\\n if (preludeParts.length === 0) {\\n throw new TypeError('Less keyframes lost their header fact.');\\n }\\n return withSourceSpan(withBlockBody(\\n atRuleBlock(\\n requireToken(children[0]).value,\\n preludeParts.length === 1 ? preludeParts[0] : spaced(preludeParts),\\n children.filter(isStatement)\\n ),\\n rawChildren\\n ), span);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireField\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireField\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"withBlockBody\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withBlockBody\"},{\"local\":\"atRuleBlock\",\"source\":\"@jesscss/core/ast\",\"imported\":\"atRuleBlock\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"}]),\n \"DottedAtRuleKeyword\": _nd(\"DottedAtRuleKeyword\", sequence(_s61, oneOrMore(sequence(parser({ trivia: null }, literal(\".\")), parser({ trivia: null }, _s61)))), \"children => keyword(children.map(requireTerminalText).join(''))\", undefined, undefined, undefined, [{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"}]),\n \"AtRulePreludeValueAtom\": _nd(\"AtRulePreludeValueAtom\", choice(g[\"EscapedQuoted\"], g[\"LiteralQuoted\"], g[\"Color\"], g[\"Dimension\"], g[\"PagePseudo\"], g[\"Paren\"], g[\"DottedAtRuleKeyword\"], _nd(\"AtRulePreludeValueCustomProperty\", g[\"CustomPropertyToken\"], \"children => keyword(requireToken(children[0]).value)\", undefined, undefined, undefined, [{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), dispatch(token(parser({ trivia: null }, sequence(_s61, optional(literal(\"(\"))))), when(\"url(\", _s18, { caseInsensitive: true }), when(\"calc(\", g[\"CalcFunction\"], { caseInsensitive: true }), when(endsWith(\"(\"), g[\"GenericFunction\"]), otherwise(_nd(\"Keyword\", routed(), \"children => keyword(requireToken(children[0]).value)\", undefined, undefined, undefined, [{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])))), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"AtRulePreludeValueTerm\": _nd(\"AtRulePreludeValueTerm\", oneOrMore(g[\"AtRulePreludeValueAtom\"]), \"(children) => {\\n const values = children.map(requireValueNode);\\n return values.length === 1 ? values[0] : spaced(values);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"}]),\n \"AtRulePreludeValue\": _nd(\"AtRulePreludeValue\", sepBy(g[\"AtRulePreludeValueTerm\"], field(\"separator\", regex(\",[ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), { min: 1 }), \"(children, fields) => {\\n const values = children.filter(isValueNode);\\n if (values.length === 1) {\\n return values[0];\\n }\\n const result = list(values, ',');\\n const separators = fields?.separator === undefined\\n ? []\\n : requireFields(fields, 'separator').map(separator => requireTerminalText(separator.value));\\n return separators.length === values.length - 1 ? withValueLayout(result, separators) : result;\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"list\",\"source\":\"@jesscss/core/ast\",\"imported\":\"list\"},{\"local\":\"requireFields\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireFields\"},{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"withValueLayout\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withValueLayout\"}]),\n \"AtRulePrelude\": _nd(\"AtRulePrelude\", parser({ trivia: classifiedTrivia({ \"blockComment\": _s12 }) }, many(choice(_s62, _s63, _s64, _s65, g[\"BareVariableInterpolation\"], parser({ trivia: null }, regex(\"(?:\\\\\\\\[\\\\s\\\\S]|\\\\/(?!\\\\*)|[^\\\\\\\\/@ \\\\t\\\\n\\\\r\\\\f,;{}()[\\\\]\\\"'])+\", \"\"))))), \"(children, _fields, _span, _rawChildren, triviaLog) => {\\n const text = staticTextWithTriviaGaps(children, triviaLog).trim();\\n return text === '' ? null : any(text);\\n }\", undefined, undefined, undefined, [{\"local\":\"staticTextWithTriviaGaps\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticTextWithTriviaGaps\"},{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"}], true),\n \"NamespacePrelude\": _nd(\"NamespacePrelude\", choice(g[\"PlainUrl\"], g[\"Quoted\"], sequence(choice(g[\"AtRuleInterpolation\"], g[\"Keyword\"]), choice(g[\"Quoted\"], g[\"PlainUrl\"]))), \"(children) => {\\n const values = children.filter(isValueNode);\\n const uri = values.at(-1);\\n if (uri === undefined) {\\n throw new TypeError('Less namespace prelude lost its URI value.');\\n }\\n return children.length === 1\\n ? uri\\n : spaced([values[0], uri]);\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"}]),\n \"AtRuleBlock\": _nd(\"AtRuleBlock\", choice(sequence(keywords([\"@layer\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), not(parser({ trivia: null }, literal(\"(\"))), optional(choice(g[\"BareVariableInterpolation\"], g[\"InterpolatedValue\"], g[\"AtRulePreludeValue\"])), _s69), sequence(g[\"AtRuleName\"], choice(attempt(sequence(attempt(g[\"AtRulePreludeValue\"]), _s69)), sequence(not(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*:\", \"\")), g[\"AtRulePrelude\"], _s69)))), \"(children, _fields, span, rawChildren) => {\\n const prelude = children.find(isValueNode) ?? null;\\n // A FunctionCall is a legal statement *and* a legal generic prelude\\n // component. Exclude the exact selected prelude object rather than\\n // reclassifying it through text or weakening the statement grammar.\\n const body = children.filter(isStatement).filter(statement => statement !== prelude);\\n return withSourceSpan(withBlockBody(atRuleBlock(requireToken(children[0]).value, prelude, body), rawChildren), span);\\n }\", undefined, undefined, undefined, [{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"withBlockBody\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withBlockBody\"},{\"local\":\"atRuleBlock\",\"source\":\"@jesscss/core/ast\",\"imported\":\"atRuleBlock\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"UnknownAtPrelude\": _nd(\"UnknownAtPrelude\", parser({ trivia: classifiedTrivia({ \"blockComment\": _s12 }) }, many(choice(_s62, _s63, _s64, _s65, g[\"BareVariableInterpolation\"], parser({ trivia: null }, regex(\"(?:\\\\\\\\[\\\\s\\\\S]|@(?!\\\\{)|\\\\/(?!\\\\*)|[^\\\\\\\\/@ \\\\t\\\\n\\\\r\\\\f,;{}()[\\\\]\\\"'])+\", \"\"))))), \"(children, _fields, _span, _rawChildren, triviaLog) => {\\n const text = children.length === 0 ? '' : staticTextWithTriviaGaps(children, triviaLog).trim();\\n return text === '' ? null : text;\\n }\", undefined, undefined, undefined, [{\"local\":\"staticTextWithTriviaGaps\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticTextWithTriviaGaps\"}], true),\n \"AtRuleName\": token(parser({ trivia: null }, sequence(not(token(parser({ trivia: null }, choice(keywords([\"@-import\",\"@-export\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"ImportAtKeyword\"], g[\"ConditionalAtKeyword\"], g[\"KeyframesAtKeyword\"])))), not(g[\"LayerAtKeyword\"]), g[\"AtIdentifierUnescaped\"]))),\n \"CustomValueAtKeyword\": token(parser({ trivia: null }, choice(keywords([\"@-import\",\"@-export\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"ImportAtKeyword\"], g[\"ConditionalAtKeyword\"], g[\"KeyframesAtKeyword\"]))),\n \"StaticAtRuleStatementName\": token(parser({ trivia: null }, sequence(not(token(parser({ trivia: null }, choice(keywords([\"@-import\",\"@-export\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"ImportAtKeyword\"], g[\"ConditionalAtKeyword\"], g[\"KeyframesAtKeyword\"])))), g[\"AtIdentifierUnescaped\"]))),\n \"UnknownAtRuleBlock\": _nd(\"UnknownAtRuleBlock\", sequence(g[\"AtRuleName\"], not(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*:\", \"\")), parser({ trivia: null }, sequence(g[\"UnknownAtPrelude\"], literal(\"{\"), parser({ trivia: null }, scanTo(literal(\"}\"), { skip: [token(balanced(\"{\", \"}\"))], orEOF: false })), literal(\"}\")))), \"(children) => {\\n const prelude = children[1];\\n if (prelude !== null && typeof prelude !== 'string') {\\n throw new TypeError('Less opaque at-rule block lost its grammar-owned prelude.');\\n }\\n // The body capture emits no child when the block is empty (`@foo {}`), so\\n // the closing `}` sits at index 3; a captured body sits there instead.\\n const rawBody = children.length === 5 ? staticText(children[3]) : '';\\n return unknownAtRuleBlock(\\n requireToken(children[0]).value,\\n prelude,\\n rawBody\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"staticText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticText\"},{\"local\":\"unknownAtRuleBlock\",\"source\":\"@jesscss/core/ast\",\"imported\":\"unknownAtRuleBlock\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"AtRuleStatement\": choice(_nd(\"AtRuleStatement\", sequence(keywords([\"@charset\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"Quoted\"], literal(\";\")), \"(children, _fields, span) => {\\n const prelude = requireValueNode(children[1]);\\n if (prelude.type === 'Interpolation') {\\n throw new LessDynamicCharsetError(span.start, span.end);\\n }\\n return atRuleStatement(requireToken(children[0]).value, prelude);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"LessDynamicCharsetError\",\"source\":\"./parse-error.js\",\"imported\":\"LessDynamicCharsetError\"},{\"local\":\"atRuleStatement\",\"source\":\"@jesscss/core/ast\",\"imported\":\"atRuleStatement\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]), _nd(\"AtRuleStatement\", dispatch(g[\"StaticAtRuleStatementName\"], when(\"@namespace\", sequence(routed(), g[\"NamespacePrelude\"], literal(\";\")), { caseInsensitive: true }), when(\"@layer\", sequence(routed(), not(parser({ trivia: null }, literal(\"(\"))), optional(choice(g[\"BareVariableInterpolation\"], g[\"InterpolatedValue\"], g[\"AtRulePreludeValue\"])), literal(\";\")), { caseInsensitive: true }), otherwise(sequence(routed(), choice(attempt(sequence(g[\"AtRulePreludeValue\"], literal(\";\"))), sequence(not(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*:\", \"\")), g[\"AtRulePrelude\"], literal(\";\")))))), \"(children) => {\\n const routedChildren = children.flatMap(child => Array.isArray(child) ? child : [child]);\\n return atRuleStatement(requireToken(routedChildren[0]).value, routedChildren.find(isValueNode) ?? null);\\n }\", undefined, undefined, undefined, [{\"local\":\"atRuleStatement\",\"source\":\"@jesscss/core/ast\",\"imported\":\"atRuleStatement\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"}])),\n \"PseudoSelector\": _nd(\"PseudoSelector\", dispatch(_s46, when([\":is(\",\"::is(\",\":not(\",\"::not(\",\":has(\",\"::has(\",\":where(\",\"::where(\",\":matches(\",\"::matches(\",\":global(\",\"::global(\",\":local(\",\"::local(\"], _s48, { caseInsensitive: true }), when(endsWith(\"(\"), _s51), otherwise(_s52)), \"children => children.find(isLessSimpleToken)\", undefined, undefined, undefined, [{\"local\":\"isLessSimpleToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSimpleToken\"}]),\n \"InterpolatedPseudo\": _nd(\"InterpolatedPseudo\", parser({ trivia: null }, sequence(_s70, g[\"VariableInterpolation\"])), \"(children) => {\\n const delimiter = requireTerminalText(children[0]);\\n const interpolationFact = requireInterpolationFact(children[1]);\\n return interpolatedSimpleSelector(interpolation([\\n { lit: delimiter },\\n { ref: interpolationFact.ref, unquote: true }\\n ]));\\n }\", undefined, undefined, undefined, [{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"requireInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationFact\"},{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"}]),\n \"InterpolatedNthPseudo\": _nd(\"InterpolatedNthPseudo\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(token(parser({ trivia: null }, sequence(_s70, choice(g[\"NthChildPseudoSelectorName\"], g[\"NthTypePseudoSelectorName\"]), literal(\"(\")))), g[\"VariableInterpolation\"], literal(\")\"))), \"(children) => {\\n const open = requireTerminalText(children[0]);\\n const interpolationFact = requireInterpolationFact(children[1]);\\n return interpolatedSimpleSelector(interpolation([\\n { lit: open },\\n { ref: interpolationFact.ref, unquote: true },\\n { lit: ')' }\\n ]));\\n }\", undefined, undefined, undefined, [{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"requireInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationFact\"},{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"}]),\n \"InterpolatedArgumentPseudo\": _nd(\"InterpolatedArgumentPseudo\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(token(parser({ trivia: null }, sequence(_s70, not(_s47), g[\"LessIdentifier\"], literal(\"(\")))), many(_s50), g[\"VariableInterpolation\"], many(choice(g[\"VariableInterpolation\"], _s50)), literal(\")\"))), \"(children) => {\\n const open = requireTerminalText(children[0]);\\n const parts = interpolationPartsFrom(children.slice(1, -1), true, open);\\n parts.push({ lit: ')' });\\n return interpolatedSimpleSelector(interpolation(parts));\\n }\", undefined, undefined, undefined, [{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"},{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"}]),\n \"NthPseudoSelector\": choice(_nd(\"NthChildPseudo\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(token(parser({ trivia: null }, sequence(_s70, g[\"NthChildPseudoSelectorName\"], literal(\"(\")))), g[\"NthPseudoArgument\"], literal(\")\"))), \"children => simpleSelector(`${requireToken(children[0]).value}${requireString(children[1])})`)\", undefined, undefined, undefined, [{\"local\":\"simpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"simpleSelector\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireString\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireString\"}]), _nd(\"NthTypePseudo\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(token(parser({ trivia: null }, sequence(_s70, g[\"NthTypePseudoSelectorName\"], literal(\"(\")))), g[\"NthExpression\"], literal(\")\"))), \"children => simpleSelector(`${requireToken(children[0]).value}${requireToken(children[1]).value})`)\", undefined, undefined, undefined, [{\"local\":\"simpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"simpleSelector\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])),\n \"NthPseudoArgument\": _nd(\"NthChildArgument\", sequence(g[\"NthExpression\"], optional(sequence(g[\"NthOfKeyword\"], parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, g[\"PseudoArgumentSelector\"])))), \"(children) => {\\n const nth = requireToken(children[0]).value;\\n const selector = children.find(isLessSelectorList);\\n return selector === undefined ? nth : `${nth} of ${selector.selectors.map(selectorBranchCanonical).join(',')}`;\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isLessSelectorList\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorList\"},{\"local\":\"selectorBranchCanonical\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selectorBranchCanonical\"}]),\n \"PseudoArgumentText\": _nd(\"PseudoArgumentText\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, oneOrMore(g[\"pseudoArgumentInner\"])), \"(children, _fields, _span, _rawChildren, triviaLog) => staticTextWithTriviaGaps(children, triviaLog)\", undefined, undefined, undefined, [{\"local\":\"staticTextWithTriviaGaps\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticTextWithTriviaGaps\"}], true),\n \"PseudoArgumentGroup\": _nd(\"PseudoArgumentGroup\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, choice(sequence(literal(\"(\"), many(g[\"pseudoArgumentInner\"]), literal(\")\")), sequence(literal(\"[\"), many(g[\"pseudoArgumentInner\"]), literal(\"]\")))), \"(children, _fields, _span, _rawChildren, triviaLog) => staticTextWithTriviaGaps(children, triviaLog)\", undefined, undefined, undefined, [{\"local\":\"staticTextWithTriviaGaps\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticTextWithTriviaGaps\"}], true),\n \"PseudoArgumentCompound\": _nd(\"PseudoArgumentCompound\", parser({ trivia: classifiedTrivia({ \"lineComment\": _s11, \"blockComment\": _s12 }) }, oneOrMore(choice(g[\"NamespaceTypeSelector\"], _s43, _s44, g[\"PseudoSelector\"], g[\"NthPseudoSelector\"], g[\"AttributeSelector\"]))), \"children => lessSelectorTermFromTokens(children.map((child) => {\\n return isLessSimpleToken(child) ? child : simpleSelector(requireToken(child).value);\\n }))\", undefined, undefined, undefined, [{\"local\":\"lessSelectorTermFromTokens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessSelectorTermFromTokens\"},{\"local\":\"isLessSimpleToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSimpleToken\"},{\"local\":\"simpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"simpleSelector\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"PseudoArgumentComplex\": _nd(\"PseudoArgumentComplex\", sequence(optional(_s71), g[\"PseudoArgumentCompound\"], many(sequence(not(_s29), optional(_s54), parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, g[\"PseudoArgumentCompound\"])))), \"(children) => {\\n const first = children[0];\\n const leading = (isLessTerminalText(first, '>') || isLessTerminalText(first, '+') || isLessTerminalText(first, '~')) ? first : undefined;\\n const branch = selectorBranchOf(complexSegmentsFrom(children));\\n return leading === undefined ? branch : relativeSelector(requireCombinator(leading), lessBranchSegments(branch));\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"},{\"local\":\"selectorBranchOf\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selectorBranchOf\"},{\"local\":\"complexSegmentsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"complexSegmentsFrom\"},{\"local\":\"relativeSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"relativeSelector\"},{\"local\":\"requireCombinator\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireCombinator\"},{\"local\":\"lessBranchSegments\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessBranchSegments\"}]),\n \"PseudoArgumentSelectorTail\": _nd(\"PseudoArgumentSelectorTail\", sequence(literal(\",\"), parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, g[\"PseudoArgumentComplex\"])), \"children => children.find(isLessSelectorBranch)\", undefined, undefined, undefined, [{\"local\":\"isLessSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorBranch\"}]),\n \"PseudoArgumentSelector\": _nd(\"PseudoArgumentSelector\", sequence(g[\"PseudoArgumentComplex\"], many(g[\"PseudoArgumentSelectorTail\"])), \"children => selist(...selectorBranchesFrom(children))\", undefined, undefined, undefined, [{\"local\":\"selist\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selist\"},{\"local\":\"selectorBranchesFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"selectorBranchesFrom\"}]),\n \"AttributeNamespace\": _nd(\"AttributeNamespace\", choice(sequence(_s61, literal(\"|\"), not(literal(\"=\"))), literal(\"*|\"), literal(\"|\")), \"children => children.map(requireToken).map(token => token.value).join('')\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"NamespaceTypeSelector\": _nd(\"NamespaceTypeSelector\", sequence(g[\"AttributeNamespace\"], choice(_s61, literal(\"*\"))), \"children => simpleSelector(children.map(requireTerminalText).join(''))\", undefined, undefined, undefined, [{\"local\":\"simpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"simpleSelector\"},{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"}]),\n \"AttributeName\": _nd(\"AttributeName\", sequence(optional(g[\"AttributeNamespace\"]), _s61), \"children => ({\\n namespace: children.find((child) => typeof child === 'string') ?? '',\\n name: requireToken(children.at(-1)).value\\n })\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"AttributeMatch\": _nd(\"AttributeMatch\", sequence(g[\"AttributeOperator\"], choice(_s61, g[\"LiteralQuoted\"]), optional(g[\"AttributeModifier\"])), \"children => ({\\n operator: requireToken(children[0]).value,\\n value: staticText(children[1]),\\n modifier: children.length === 2 ? null : requireToken(children[2]).value\\n })\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"staticText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"staticText\"}]),\n \"AttributeSelector\": _nd(\"AttributeSelector\", sequence(literal(\"[\"), parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(g[\"AttributeName\"], optional(g[\"AttributeMatch\"]), literal(\"]\")))), \"(children) => {\\n const match = children.find((child) =>\\n typeof child === 'object' && child !== null && 'operator' in child && 'value' in child && 'modifier' in child\\n );\\n const name = children.find((child) =>\\n typeof child === 'object' && child !== null && 'namespace' in child && 'name' in child\\n );\\n if (name === undefined) {\\n throw new TypeError('Less grammar produced an attribute selector without a name.');\\n }\\n return simpleSelector(`[${name.namespace}${name.name}${match === undefined ? '' : `${match.operator}${match.value}${match.modifier === null ? '' : ` ${match.modifier}`}`}]`);\\n }\", undefined, undefined, undefined, [{\"local\":\"simpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"simpleSelector\"}]),\n \"InterpolatedAttributeToken\": _nd(\"InterpolatedAttributeToken\", _s72, \"children => interpolation(interpolationPartsFrom(children, true))\", undefined, undefined, undefined, [{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"InterpolatedAttributeValueToken\": _nd(\"InterpolatedAttributeValueToken\", _s72, \"children => interpolation(interpolationPartsFrom(children, false))\", undefined, undefined, undefined, [{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"InterpolatedAttributeQuoted\": _nd(\"InterpolatedAttributeQuoted\", choice(parser({ trivia: null }, sequence(literal(\"\\\"\"), many(choice(g[\"VariableInterpolation\"], g[\"QuotedDoubleText\"], literal(\"@\"), literal(\"$\"))), literal(\"\\\"\"))), parser({ trivia: null }, sequence(literal(\"'\"), many(choice(g[\"VariableInterpolation\"], g[\"QuotedSingleText\"], literal(\"@\"), literal(\"$\"))), literal(\"'\")))), \"children => interpolation(interpolationPartsFrom(children, true))\", undefined, undefined, undefined, [{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"InterpolatedAttributeSelector\": _nd(\"InterpolatedAttributeSelector\", sequence(literal(\"[\"), choice(sequence(optional(g[\"AttributeNamespace\"]), g[\"InterpolatedAttributeToken\"], optional(sequence(g[\"AttributeOperator\"], choice(g[\"InterpolatedAttributeValueToken\"], g[\"InterpolatedAttributeQuoted\"], g[\"LessIdentifier\"], g[\"LiteralQuoted\"]), optional(sequence(_s73, g[\"AttributeModifier\"]))))), sequence(g[\"AttributeName\"], g[\"AttributeOperator\"], choice(g[\"InterpolatedAttributeValueToken\"], g[\"InterpolatedAttributeQuoted\"]), optional(sequence(_s73, g[\"AttributeModifier\"])))), literal(\"]\")), \"(children) => {\\n const parts = [];\\n for (const child of children) {\\n if (isInterp(child)) {\\n for (const part of child.parts) {\\n if ('lit' in part) {\\n appendInterpolationLiteral(parts, part.lit);\\n } else {\\n parts.push(part);\\n }\\n }\\n } else if (isAttributeNameFact(child)) {\\n const name = child;\\n appendInterpolationLiteral(parts, `${name.namespace}${name.name}`);\\n } else if (typeof child === 'string') {\\n appendInterpolationLiteral(parts, child);\\n } else {\\n appendInterpolationLiteral(parts, requireToken(child).value);\\n }\\n }\\n return interpolatedSimpleSelector(interpolation(parts));\\n }\", undefined, undefined, undefined, [{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"},{\"local\":\"appendInterpolationLiteral\",\"source\":\"./grammar-helpers.js\",\"imported\":\"appendInterpolationLiteral\"},{\"local\":\"isAttributeNameFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isAttributeNameFact\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"}]),\n \"InterpolatedSimpleSelector\": _nd(\"InterpolatedSimpleSelector\", parser({ trivia: null }, sequence(regex(\"[.#](?:-?(?:[_a-zA-Z\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))(?:[-_a-zA-Z0-9\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))*)?\", \"\"), g[\"VariableInterpolation\"], many(choice(_s74, g[\"VariableInterpolation\"])))), \"children => interpolatedSimpleSelector(interpolation(interpolationPartsFrom(children, true)))\", undefined, undefined, undefined, [{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"BareInterpolatedSelector\": _nd(\"BareInterpolatedSelector\", sequence(g[\"VariableInterpolation\"], regex(\"(?=[ \\\\t\\\\n\\\\r\\\\f]*(?:[,{]))\", \"\")), \"(children) => {\\n const fact = requireInterpolationFact(children[0]);\\n return interpolatedSimpleSelector(interpolation([{ ref: fact.ref, unquote: true }]));\\n }\", undefined, undefined, undefined, [{\"local\":\"requireInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationFact\"},{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"}]),\n \"AdjacentInterpolatedSelector\": _nd(\"AdjacentInterpolatedSelector\", parser({ trivia: null }, sequence(g[\"VariableInterpolation\"], oneOrMore(g[\"VariableInterpolation\"]))), \"children => interpolatedSimpleSelector(interpolation(interpolationPartsFrom(children, true)))\", undefined, undefined, undefined, [{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"BareInterpolatedSelectorWithSuffix\": _nd(\"BareInterpolatedSelectorWithSuffix\", parser({ trivia: null }, sequence(g[\"VariableInterpolation\"], oneOrMore(choice(_s74, _s43)))), \"children => interpolatedSimpleSelector(interpolation(interpolationPartsFrom(children, true)))\", undefined, undefined, undefined, [{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"InterpolatedParentSuffix\": _nd(\"InterpolatedParentSuffix\", parser({ trivia: null }, sequence(_s44, g[\"VariableInterpolation\"], many(choice(_s74, g[\"VariableInterpolation\"])))), \"children => interpolatedSimpleSelector(interpolation(interpolationPartsFrom(children, true)))\", undefined, undefined, undefined, [{\"local\":\"interpolatedSimpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolatedSimpleSelector\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"CompoundSelector\": _nd(\"CompoundSelector\", parser({ trivia: classifiedTrivia({ \"lineComment\": _s11, \"blockComment\": _s12 }) }, oneOrMore(_s42)), \"(children) => {\\n const simples = children.map(child => isLessSimpleToken(child) ? child : simpleSelector(requireToken(child).value));\\n return lessSelectorTermFromTokens(simples);\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessSimpleToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSimpleToken\"},{\"local\":\"simpleSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"simpleSelector\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"lessSelectorTermFromTokens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessSelectorTermFromTokens\"}]),\n \"ComplexSelector\": _nd(\"ComplexSelector\", sequence(g[\"CompoundSelector\"], many(sequence(not(_s29), optional(_s54), g[\"CompoundSelector\"]))), \"(children, _fields, span) => withSourceSpan(selectorBranchOf(complexSegmentsFrom(children)), span)\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"selectorBranchOf\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selectorBranchOf\"},{\"local\":\"complexSegmentsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"complexSegmentsFrom\"}]),\n \"SelectorList\": _nd(\"SelectorList\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sepBy(g[\"ComplexSelector\"], literal(\",\"), { min: 1 })), \"(children, _fields, span) => withSourceSpan(selist(...selectorBranchesFrom(children)), span)\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"selist\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selist\"},{\"local\":\"selectorBranchesFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"selectorBranchesFrom\"}]),\n \"ExtendTarget\": _nd(\"ExtendTarget\", sequence(_nd(\"ComplexSelector\", sequence(g[\"CompoundSelector\"], many(sequence(not(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*!?all(?=[ \\\\t\\\\n\\\\r\\\\f]*(?:,|\\\\)))\", \"i\")), optional(_s54), g[\"CompoundSelector\"]))), \"(children, _fields, span) => withSourceSpan(selectorBranchOf(complexSegmentsFrom(children)), span)\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"selectorBranchOf\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selectorBranchOf\"},{\"local\":\"complexSegmentsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"complexSegmentsFrom\"}]), optional(regex(\"!?all(?![-_a-zA-Z0-9\\\\u0080-\\\\uffff])\", \"i\"))), \"children => ({\\n target: selist(children.find(isLessSelectorBranch)),\\n partial: children.some(child => isLessTerminalText(child, 'all') || isLessTerminalText(child, '!all'))\\n })\", undefined, undefined, undefined, [{\"local\":\"selist\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selist\"},{\"local\":\"isLessSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorBranch\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"}]),\n \"ExtendStatement\": _nd(\"ExtendStatement\", sequence(literal(\"&\"), _s31, optional(literal(\";\"))), \"children => ({\\n bodyExtensions: children\\n .flatMap(child => Array.isArray(child) ? child.filter(isExtendTargetFact) : [])\\n .map(target => ({ target: target.target, partial: target.partial }))\\n })\", undefined, undefined, undefined, [{\"local\":\"isExtendTargetFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isExtendTargetFact\"}]),\n \"RulesetWithExtends\": _nd(\"Ruleset\", sequence(_nd(\"SelectorListWithExtends\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sepBy(_s55, literal(\",\"), { min: 1 })), \"(children, _fields, span) => ({\\n selector: withSourceSpan(selist(...children.flatMap(child => isSelectorBranchFact(child)\\n ? [child.selector]\\n : [])), span),\\n extensions: children.filter(isSelectorBranchFact).flatMap(branch => branch.extensions)\\n })\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"selist\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selist\"},{\"local\":\"isSelectorBranchFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSelectorBranchFact\"}]), optional(g[\"MixinGuard\"]), literal(\"{\"), _s33, optional(g[\"Call\"]), literal(\"}\"), optional(literal(\";\"))), \"(children, _fields, span, rawChildren) => {\\n const selectorFact = requireSelectorListWithExtendsFact(children[0]);\\n const bodyExtensions = children.filter(isBodyExtendFact).flatMap(fact => fact.bodyExtensions);\\n const extensions = [...selectorFact.extensions, ...bodyExtensions];\\n const node = withBlockBody(\\n rule(\\n selectorFact.selector,\\n // The fixed sequence places only direct declaration/comment facts between\\n // the braces. This validates that fact list; it never reparses body text.\\n requireRulesetBody(children.filter(isStatement)),\\n extensions.length === 0 ? undefined : extensions,\\n children.find(isMixinGuard)\\n ),\\n rawChildren\\n );\\n return hasRulesetTerminator(rawChildren) ? withSourceSpan(node, span) : node;\\n }\", undefined, undefined, undefined, [{\"local\":\"requireSelectorListWithExtendsFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSelectorListWithExtendsFact\"},{\"local\":\"isBodyExtendFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isBodyExtendFact\"},{\"local\":\"withBlockBody\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withBlockBody\"},{\"local\":\"rule\",\"source\":\"@jesscss/core/ast\",\"imported\":\"rule\"},{\"local\":\"requireRulesetBody\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireRulesetBody\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"},{\"local\":\"isMixinGuard\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinGuard\"},{\"local\":\"hasRulesetTerminator\",\"source\":\"./grammar-helpers.js\",\"imported\":\"hasRulesetTerminator\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"}]),\n \"RelativeSelector\": _nd(\"RelativeSelector\", sequence(optional(_s71), g[\"ComplexSelector\"]), \"(children, _fields, span) => {\\n const branch = children.find(isLessSelectorBranch);\\n const leading = children.find(child => isLessTerminalText(child, '>') || isLessTerminalText(child, '+') || isLessTerminalText(child, '~'));\\n return withSourceSpan(leading === undefined ? branch : relativeSelector(requireCombinator(leading), lessBranchSegments(branch)), span);\\n }\", undefined, undefined, undefined, [{\"local\":\"isLessSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorBranch\"},{\"local\":\"isLessTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessTerminalText\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"relativeSelector\",\"source\":\"@jesscss/core/ast\",\"imported\":\"relativeSelector\"},{\"local\":\"requireCombinator\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireCombinator\"},{\"local\":\"lessBranchSegments\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessBranchSegments\"}]),\n \"NestedRulesetWithExtends\": _nd(\"Ruleset\", sequence(_nd(\"SelectorListWithExtends\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sepBy(choice(_s56, _nd(\"SelectorBranch\", g[\"RelativeSelector\"], \"children => ({ selector: children.find(isLessSelectorBranch), extensions: [] })\", undefined, undefined, undefined, [{\"local\":\"isLessSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorBranch\"}])), literal(\",\"), { min: 1 })), \"(children, _fields, span) => ({\\n selector: withSourceSpan(selist(...children.flatMap(child => isSelectorBranchFact(child)\\n ? [child.selector]\\n : [])), span),\\n extensions: children.filter(isSelectorBranchFact).flatMap(branch => branch.extensions)\\n })\", undefined, undefined, undefined, [{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"},{\"local\":\"selist\",\"source\":\"@jesscss/core/ast\",\"imported\":\"selist\"},{\"local\":\"isSelectorBranchFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSelectorBranchFact\"}]), optional(g[\"MixinGuard\"]), literal(\"{\"), _s33, optional(g[\"Call\"]), literal(\"}\"), optional(literal(\";\"))), \"(children, _fields, span, rawChildren) => {\\n const selectorFact = requireSelectorListWithExtendsFact(children[0]);\\n const bodyExtensions = children.filter(isBodyExtendFact).flatMap(fact => fact.bodyExtensions);\\n const extensions = [...selectorFact.extensions, ...bodyExtensions];\\n const node = withBlockBody(\\n rule(\\n selectorFact.selector,\\n requireRulesetBody(children.filter(isStatement)),\\n extensions.length === 0 ? undefined : extensions,\\n children.find(isMixinGuard)\\n ),\\n rawChildren\\n );\\n return hasRulesetTerminator(rawChildren) ? withSourceSpan(node, span) : node;\\n }\", undefined, undefined, undefined, [{\"local\":\"requireSelectorListWithExtendsFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSelectorListWithExtendsFact\"},{\"local\":\"isBodyExtendFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isBodyExtendFact\"},{\"local\":\"withBlockBody\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withBlockBody\"},{\"local\":\"rule\",\"source\":\"@jesscss/core/ast\",\"imported\":\"rule\"},{\"local\":\"requireRulesetBody\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireRulesetBody\"},{\"local\":\"isStatement\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isStatement\"},{\"local\":\"isMixinGuard\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isMixinGuard\"},{\"local\":\"hasRulesetTerminator\",\"source\":\"./grammar-helpers.js\",\"imported\":\"hasRulesetTerminator\"},{\"local\":\"withSourceSpan\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withSourceSpan\"}]),\n \"Quoted\": _nd(\"Quoted\", choice(parser({ trivia: null }, sequence(literal(\"\\\"\"), many(choice(g[\"VariableInterpolation\"], g[\"PropertyInterpolation\"], g[\"QuotedDoubleText\"], literal(\"@\"), literal(\"$\"))), literal(\"\\\"\"))), parser({ trivia: null }, sequence(literal(\"'\"), many(choice(g[\"VariableInterpolation\"], g[\"PropertyInterpolation\"], g[\"QuotedSingleText\"], literal(\"@\"), literal(\"$\"))), literal(\"'\")))), \"(children) => {\\n const open = requireToken(children[0]);\\n if (!children.some(isInterpolationFact)) {\\n const value = children.slice(1, -1).map(requireToken).map(token => token.value).join('');\\n return quoted(`${open.value}${value}${open.value}`, value, open.value, false);\\n }\\n const parts = interpolationPartsFrom(children.slice(1, -1), true, open.value);\\n appendInterpolationLiteral(parts, open.value);\\n return interpolation(parts);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterpolationFact\"},{\"local\":\"quoted\",\"source\":\"@jesscss/core/ast\",\"imported\":\"quoted\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"},{\"local\":\"appendInterpolationLiteral\",\"source\":\"./grammar-helpers.js\",\"imported\":\"appendInterpolationLiteral\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"}]),\n \"LiteralQuoted\": _nd(\"Quoted\", choice(parser({ trivia: null }, sequence(literal(\"\\\"\"), many(choice(g[\"QuotedDoubleText\"], sequence(not(parser({ trivia: null }, literal(\"@{\"))), literal(\"@\")), literal(\"$\"))), literal(\"\\\"\"))), parser({ trivia: null }, sequence(literal(\"'\"), many(choice(g[\"QuotedSingleText\"], sequence(not(parser({ trivia: null }, literal(\"@{\"))), literal(\"@\")), literal(\"$\"))), literal(\"'\")))), \"(children) => {\\n const open = requireToken(children[0]);\\n const value = children.slice(1, -1).map(requireToken).map(token => token.value).join('');\\n return quoted(`${open.value}${value}${open.value}`, value, open.value, false);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"quoted\",\"source\":\"@jesscss/core/ast\",\"imported\":\"quoted\"}]),\n \"EscapedQuoted\": _nd(\"Quoted\", choice(parser({ trivia: null }, sequence(literal(\"~\\\"\"), many(choice(g[\"VariableInterpolation\"], g[\"PropertyInterpolation\"], g[\"QuotedDoubleText\"], literal(\"@\"), literal(\"$\"))), literal(\"\\\"\"))), parser({ trivia: null }, sequence(literal(\"~'\"), many(choice(g[\"VariableInterpolation\"], g[\"PropertyInterpolation\"], g[\"QuotedSingleText\"], literal(\"@\"), literal(\"$\"))), literal(\"'\")))), \"(children) => {\\n const opener = requireToken(children[0]).value;\\n const quote = opener[1];\\n if (quote !== '\\\"' && quote !== '\\\\'') {\\n throw new TypeError('Less escaped quote lost its quote delimiter.');\\n }\\n if (children.some(isInterpolationFact)) {\\n return interpolation(interpolationPartsFrom(children.slice(1, -1), true));\\n }\\n const value = children.slice(1, -1).map(requireToken).map(token => token.value).join('');\\n return quoted(`${opener}${value}${quote}`, value, quote, true);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"isInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterpolationFact\"},{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"},{\"local\":\"quoted\",\"source\":\"@jesscss/core/ast\",\"imported\":\"quoted\"}]),\n \"PlainUrl\": _nd(\"Url\", parser({ trivia: null }, sequence(_s76, optional(_s19), optional(field(\"body\", choice(g[\"EscapedQuoted\"], g[\"Quoted\"], _s20, _s21))), optional(_s19), literal(\")\"))), \"(_children, fields) => {\\n const captured = fields?.body;\\n if (Array.isArray(captured)) {\\n throw new TypeError('Less plain URL produced repeated body facts.');\\n }\\n const body = captured?.value;\\n if (body === undefined) {\\n return url(any(''));\\n }\\n if (isQuoted(body) || isInterp(body)) {\\n return url(body);\\n }\\n return url(any(requireTerminalText(body)));\\n }\", undefined, undefined, undefined, [{\"local\":\"url\",\"source\":\"@jesscss/core/ast\",\"imported\":\"url\"},{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"isQuoted\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isQuoted\"},{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"},{\"local\":\"requireTerminalText\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireTerminalText\"}]),\n \"UrlInterpolation\": _nd(\"UrlInterpolation\", parser({ trivia: null }, choice(sequence(g[\"VariableReference\"], oneOrMore(choice(_s21, g[\"Interpolation\"]))), sequence(g[\"Interpolation\"], many(choice(_s21, g[\"Interpolation\"]))))), \"children => interpolation(interpolationPartsFrom(children, true))\", undefined, undefined, undefined, [{\"local\":\"interpolation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"interpolation\"},{\"local\":\"interpolationPartsFrom\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationPartsFrom\"}]),\n \"VariableUrl\": _nd(\"Url\", sequence(_s76, choice(g[\"UrlInterpolation\"], g[\"VariableReference\"]), literal(\")\")), \"children => url(requireValueNode(children[1]))\", undefined, undefined, undefined, [{\"local\":\"url\",\"source\":\"@jesscss/core/ast\",\"imported\":\"url\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}]),\n \"ImportOption\": _nd(\"ImportOption\", keywords([\"reference\",\"optional\",\"multiple\",\"inline\",\"once\",\"less\",\"css\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), \"children => any(requireToken(children[0]).value)\", undefined, undefined, undefined, [{\"local\":\"any\",\"source\":\"@jesscss/core/ast\",\"imported\":\"any\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}]),\n \"ImportOptions\": _nd(\"ImportOptions\", sequence(literal(\"(\"), sepBy(field(\"option\", g[\"ImportOption\"]), literal(\",\"), { min: 1 }), literal(\")\")), \"(_children, fields) => {\\n const options = requireFields(fields, 'option').map((option) => {\\n const value = option.value;\\n if (!isAny(value)) {\\n throw new TypeError('Less grammar produced a non-static import option.');\\n }\\n return value;\\n });\\n return list(options, ',');\\n }\", undefined, undefined, undefined, [{\"local\":\"requireFields\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireFields\"},{\"local\":\"isAny\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isAny\"},{\"local\":\"list\",\"source\":\"@jesscss/core/ast\",\"imported\":\"list\"}]),\n \"ImportTarget\": _nd(\"ImportTarget\", _s7, \"(children) => {\\n const target = children.find(child => isQuoted(child) || isUrl(child) || isInterp(child));\\n if (target === undefined) {\\n throw new TypeError('Less import target lost its typed value.');\\n }\\n return target;\\n }\", undefined, undefined, undefined, [{\"local\":\"isQuoted\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isQuoted\"},{\"local\":\"isUrl\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isUrl\"},{\"local\":\"isInterp\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isInterp\"}]),\n \"ImportTail\": _nd(\"ImportTail\", choice(_nd(\"ImportQueryTail\", sequence(literal(\"(\"), g[\"Identifier\"], regex(\":[ \\\\t\\\\n\\\\r\\\\f]*\", \"\"), g[\"VariableReference\"], literal(\")\")), \"(children, _fields, _span, _rawChildren, _triviaLog, state) =>\\n block(operation(':', keyword(requireToken(children[1]).value), requireValueNode(children[3]), false,\\n lessMathOutsideParens(state, ':')))\", undefined, undefined, undefined, [{\"local\":\"block\",\"source\":\"@jesscss/core/ast\",\"imported\":\"block\"},{\"local\":\"operation\",\"source\":\"@jesscss/core/ast\",\"imported\":\"operation\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"}], true), g[\"AtRuleInterpolation\"], g[\"ImportTailText\"]), \"children => children.length === 1 ? children[0] : children\"),\n \"ImportTailText\": parser({ trivia: null }, oneOrMore(choice(_s77, g[\"Quoted\"], g[\"ImportTailGroup\"]))),\n \"ImportTailGroup\": g[\"ImportTailParen\"],\n \"ImportTailParen\": parser({ trivia: null }, sequence(literal(\"(\"), many(choice(_s77, g[\"Quoted\"], g[\"ImportTailGroup\"])), literal(\")\"))),\n \"blockBody\": many(_s34),\n \"BareVariableInterpolation\": _nd(\"BareVariableInterpolation\", parser({ trivia: null }, sequence(literal(\"@\"), _s4)), \"(children, _fields, span) => {\\n const name = requireSupportedVariableName(children[1], span.start, span.end);\\n throw new LessBareVariableInterpolationError(span.start, span.end, name);\\n }\", undefined, undefined, undefined, [{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"},{\"local\":\"LessBareVariableInterpolationError\",\"source\":\"./parse-error.js\",\"imported\":\"LessBareVariableInterpolationError\"}]),\n \"valuePiece\": choice(g[\"UnicodeRange\"], _nd(\"TopSumMaybeDivision\", parser({ trivia: null }, sequence(g[\"TopSum\"], many(sequence(field(\"separator\", _s26), g[\"TopSum\"])))), \"(children, fields, _span, _rawChildren, _triviaLog, state) => {\\n if (fields?.separator === undefined) {\\n return requireValueNode(children[0]);\\n }\\n const slashBoundaries = requireFields(fields, 'separator').map((separator) => {\\n if (!isSlashBoundaryFact(separator.value)) {\\n throw new TypeError('Less value piece produced an invalid slash boundary.');\\n }\\n return separator.value;\\n });\\n\\n /*\\n * The group is preserved bytes exactly when the policy does NOT divide a\\n * bare `/`; under `math: always` it is not preserved and its operands keep\\n * the arithmetic they were built with. See {@link withoutBareMath}.\\n */\\n const preserved = !lessMathOutsideParens(state, '/');\\n const values = children.filter(isValueNode);\\n const parts = [];\\n for (let index = 0; index < values.length; index += 1) {\\n parts.push(preserved ? withoutBareMath(values[index]) : values[index]);\\n if (index < slashBoundaries.length) {\\n parts.push(keyword('/'));\\n }\\n }\\n const separators = slashBoundaries.flatMap(boundary => [boundary.before, boundary.after]);\\n return withValueLayout(\\n spaced(parts),\\n separators.length === parts.length - 1\\n ? separators\\n : Array.from({ length: parts.length - 1 }, () => '')\\n );\\n }\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"requireFields\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireFields\"},{\"local\":\"isSlashBoundaryFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isSlashBoundaryFact\"},{\"local\":\"lessMathOutsideParens\",\"source\":\"./grammar-helpers.js\",\"imported\":\"lessMathOutsideParens\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"},{\"local\":\"withoutBareMath\",\"source\":\"./grammar-helpers.js\",\"imported\":\"withoutBareMath\"},{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"withValueLayout\",\"source\":\"@jesscss/core/ast\",\"imported\":\"withValueLayout\"},{\"local\":\"spaced\",\"source\":\"@jesscss/core/ast\",\"imported\":\"spaced\"}], true), literal(\"/\"), literal(\"-\"), literal(\"%\")),\n \"pseudoArgumentInner\": choice(g[\"PseudoArgumentGroup\"], g[\"LiteralQuoted\"], _s50),\n \"queryLeaf\": choice(g[\"VariableReferenceChain\"], g[\"Dimension\"], g[\"Color\"], g[\"LiteralQuoted\"], dispatch(token(parser({ trivia: null }, sequence(regex(\"(?!(?:url)(?=\\\\())-?[_a-zA-Z\\\\u0080-\\\\uffff][-_a-zA-Z0-9\\\\u0080-\\\\uffff]*\", \"i\"), optional(literal(\"(\"))))), when(\"calc(\", g[\"CalcFunction\"], { caseInsensitive: true }), when(endsWith(\"(\"), g[\"GenericFunction\"]), otherwise(_nd(\"Keyword\", routed(), \"children => keyword(requireToken(children[0]).value)\", undefined, undefined, undefined, [{\"local\":\"keyword\",\"source\":\"@jesscss/core/ast\",\"imported\":\"keyword\"},{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])))),\n \"interpolatedValueTail\": choice(g[\"InterpolatedValueTail\"], g[\"Interpolation\"]),\n \"GenericFunction\": _nd(\"Call\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s10, \"lineComment\": _s11, \"blockComment\": _s12 }) }, sequence(routed(), g[\"FunctionArguments\"], literal(\")\"))), \"(children, fields, span, rawChildren, triviaLog, state) =>\\n functionCallFromChildren(children, fields, span, triviaLog, state, rawChildren)\", undefined, undefined, undefined, [{\"local\":\"functionCallFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"functionCallFromChildren\"}]),\n \"CalcFunction\": _nd(\"CalcCall\", parser({ trivia: null }, sequence(routed(), optional(trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12))))), g[\"MathSum\"], optional(trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12))))), literal(\")\"))), \"children => funcCall(functionNameFromOpener(children[0]), [requireValueNode(children.find(isValueNode))])\", undefined, undefined, undefined, [{\"local\":\"funcCall\",\"source\":\"@jesscss/core/ast\",\"imported\":\"funcCall\"},{\"local\":\"functionNameFromOpener\",\"source\":\"./grammar-helpers.js\",\"imported\":\"functionNameFromOpener\"},{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"},{\"local\":\"isValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isValueNode\"}]),\n \"FunctionArguments\": optional(sequence(sepBy(choice(g[\"DoubledQuoteArgument\"], g[\"ValueBlock\"], g[\"FunctionArgument\"]), field(\"separator\", regex(\"[;,][ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), { min: 1 }), optional(field(\"trailingSeparator\", parser({ trivia: null }, regex(\"[;,][ \\\\t\\\\n\\\\r\\\\f]*\", \"\")))))),\n \"whitespace\": trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12)))),\n \"rw\": trivia(oneOrMore(choice(label(\"whitespace\", _s10), label(\"lineComment\", _s11), label(\"blockComment\", _s12))))\n})\n})\n})()"
28008
28018
  }
28009
28019
  ],
28010
28020
  [Symbol.for("parseman.grammarReflection")]: { nodes: [