@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.
@@ -26675,7 +26675,17 @@ const lessCstPositionsGrammar = /* @__PURE__ */ (0, parseman_table.tableRules)({
26675
26675
  const tailValue = tailField === void 0 ? void 0 : requireField(fields, "tail").value;
26676
26676
  const tail = tailValue === void 0 ? null : isValueNode(tailValue) ? tailValue : (0, _jesscss_core_ast.any)(staticText(tailValue));
26677
26677
  if ((0, _jesscss_core_ast.importIsCompileTime)(keyword.value, target, options)) {
26678
- if (tail !== null) throw new src_parse_error_js.LessImportPostludeError(span.start, span.end);
26678
+ if (tail !== null) {
26679
+ const lowered = keyword.value.toLowerCase();
26680
+ const isLegacyImport = lowered === "@import" || lowered === "@-import";
26681
+ const tailText = isAny(tail) ? tail.src.toLowerCase() : "";
26682
+ const tailHasSupportsOrLayer = tailText.includes("supports") || tailText.includes("layer");
26683
+ if (!isLegacyImport || tailHasSupportsOrLayer) throw new src_parse_error_js.LessImportPostludeError(span.start, span.end);
26684
+ return (0, _jesscss_core_ast.withSourceSpan)((0, _jesscss_core_ast.atRuleBlock)("@media", tail, [(0, _jesscss_core_ast.styleImport)(keyword.value, target, {
26685
+ options,
26686
+ mode: "import"
26687
+ })]), span);
26688
+ }
26679
26689
  return (0, _jesscss_core_ast.styleImport)(keyword.value, target, {
26680
26690
  options,
26681
26691
  mode: "import"
@@ -27694,8 +27704,8 @@ const lessCstPositionsGrammar = /* @__PURE__ */ (0, parseman_table.tableRules)({
27694
27704
  ..._jesscss_parser_shared_recognition.lessSyntax[Symbol.for("parseman.composedPieces")] ?? [],
27695
27705
  ..._jesscss_parser_shared_pseudo_consts.cssPseudoSyntax[Symbol.for("parseman.composedPieces")] ?? [],
27696
27706
  {
27697
- ns: "_9413486d_",
27698
- ir: "(() => {\n const _s68 = parser({ trivia: null }, sequence(literal(\"\\\"\"), regex(\"(?:[^\\\"\\\\\\\\]|\\\\\\\\.)*\", \"\"), literal(\"\\\"\")))\n const _s69 = parser({ trivia: null }, sequence(literal(\"'\"), regex(\"(?:[^'\\\\\\\\]|\\\\\\\\.)*\", \"\"), literal(\"'\")))\n const _s13 = regex(\"\\\\/\\\\*(?:[^*]|\\\\*(?!\\\\/))*\\\\*\\\\/\", \"\")\n return rules({ scanSkip: [_s68, _s69, _s13] }, (g) => {\n const _s1 = 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 _s2 = 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 _s3 = not(regex(\"[-\\\\w]+[ \\\\t]*:[ \\\\t\\\\n\\\\r\\\\f]\", \"\"))\n const _s0 = _nd(\"Stylesheet\", sequence(many(choice(_s1, _s2, g[\"FunctionStatement\"], _nd(\"GuardedRuleset\", sequence(_s3, 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 const _s5 = 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 _s4 = _nd(\"VariableName\", parser({ trivia: null }, sequence(literal(\"@\"), _s5)), \"(children, _fields, span) => `@${requireSupportedVariableName(children[1], span.start, span.end)}`\", undefined, undefined, undefined, [{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"}])\n const _s6 = not(parser({ trivia: null }, literal(\"[\")))\n const _s7 = choice(literal(\";\"), peek(literal(\"}\")))\n const _s8 = choice(g[\"EscapedQuoted\"], g[\"Quoted\"], choice(g[\"VariableUrl\"], g[\"PlainUrl\"]))\n const _s11 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")\n const _s12 = regex(\"\\\\/\\\\/[^\\\\n\\\\r]*\", \"\")\n const _s9 = keywords([\"not\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })\n const _s14 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]*(?:>=|<=|=>|=<|=~|[<>=]|(?:and|or)(?![-_a-zA-Z0-9\\\\u0080-\\\\uffff]))\", \"i\")\n const _s15 = parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(peek(trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13))))), not(regex(\"@[^;{}()'\\\"]*\\\\{\", \"\")), g[\"valuePiece\"]))\n const _s16 = sequence(_lf(peek(literal(\"@\")), \"() => ({ kind: 'glued-value-boundary' })\"), g[\"valuePiece\"])\n const _s17 = token(parser({ trivia: null }, sequence(not(keywords([\"calc(\",\"url(\"], { caseInsensitive: true })), g[\"InterpolatedValueStart\"], literal(\"(\"))))\n const _s19 = _nd(\"Call\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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 const _s18 = token(parser({ trivia: null }, sequence(g[\"InterpolatedValueStart\"], optional(literal(\"(\")))))\n const _s21 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")\n const _s22 = 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 _s23 = 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 _s20 = _nd(\"Url\", parser({ trivia: null }, sequence(routed(), optional(_s21), optional(field(\"body\", choice(g[\"EscapedQuoted\"], g[\"Quoted\"], _s22, _s23))), optional(_s21), 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 _s25 = trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13))))\n const _s26 = choice(_lf(parser({ trivia: null }, sequence(_s25, keywords([\"-\",\"+\"], { caseInsensitive: false }), _s25)), \"children => children[1]\"), regex(\"[-+](?=[0-9.])|[ \\\\t\\\\n\\\\r\\\\f]*[-+](?![0-9.])[ \\\\t\\\\n\\\\r\\\\f]*\", \"\"))\n const _s27 = _lf(parser({ trivia: null }, sequence(optional(_s25), keywords([\"*\",\"%\"], { caseInsensitive: false }), optional(_s25))), \"children => children[1]\")\n const _s29 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")\n const _s28 = _lf(sequence(optional(_s29), literal(\"/\"), optional(_s29)), \"(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 _s31 = sequence(optional(regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")), keywords([\"when\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }))\n const _s33 = _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 _s34 = peek(choice(literal(\",\"), _s31, literal(\"{\")))\n const _s32 = choice(sequence(_s33, _s34), _s34)\n const _s37 = _nd(\"GuardedRuleset\", sequence(_s3, 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 _s38 = _nd(\"DeclarationItem\", sequence(g[\"Declaration\"], _s7), \"(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 _s36 = choice(_s1, _s2, g[\"FunctionStatement\"], _s37, _s38, literal(\";\"))\n const _s35 = many(choice(_s36, g[\"ExtendStatement\"]))\n const _s39 = _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 _s41 = choice(_nd(\"NamedMixinArgument\", sequence(literal(\"@\"), _s5, 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\"}]), _s39)\n const _s40 = choice(g[\"MixinArgumentGroup\"], _s41)\n const _s42 = keywords([\",\",\";\"], { caseInsensitive: false })\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 _s45 = 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 _s46 = regex(\"&[-_a-zA-Z0-9\\\\u0080-\\\\uffff]*\", \"\")\n const _s50 = _nd(\"PseudoSelector\", sequence(routed(), _nd(\"PseudoSelectorArgument\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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 _s52 = regex(\"(?:[^()\\\\[\\\\]'\\\"@/]|@(?![@{_a-zA-Z\\\\u0080-\\\\uffff-])|\\\\/(?!\\\\*))+\", \"\")\n const _s51 = _nd(\"InterpolatedArgumentPseudo\", sequence(routed(), many(_s52), g[\"VariableInterpolation\"], many(choice(g[\"VariableInterpolation\"], _s52)), 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 _s53 = _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 _s54 = _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 _s49 = parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, token(parser({ trivia: null }, sequence(keywords([\"extend\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), literal(\"(\")))))\n const _s48 = token(parser({ trivia: null }, sequence(regex(\"::?(?![ \\\\t\\\\n\\\\r\\\\f])\", \"\"), not(_s49), not(g[\"NthPseudoSelectorName\"]), g[\"LessIdentifier\"], optional(literal(\"(\")))))\n const _s47 = dispatch(_s48, when([\":is(\",\"::is(\",\":not(\",\"::not(\",\":has(\",\"::has(\",\":where(\",\"::where(\",\":matches(\",\"::matches(\",\":global(\",\"::global(\",\":local(\",\"::local(\"], choice(_s50, _s51), { caseInsensitive: true }), when(endsWith(\"(\"), choice(_s51, _s53)), otherwise(_s54))\n const _s44 = choice(g[\"InterpolatedParentSuffix\"], g[\"InterpolatedSimpleSelector\"], g[\"AdjacentInterpolatedSelector\"], g[\"BareInterpolatedSelectorWithSuffix\"], g[\"BareInterpolatedSelector\"], g[\"NamespaceTypeSelector\"], _s45, _s46, _s47, g[\"InterpolatedNthPseudo\"], g[\"NthPseudoSelector\"], g[\"InterpolatedArgumentPseudo\"], g[\"InterpolatedPseudo\"], g[\"AttributeSelector\"], g[\"InterpolatedAttributeSelector\"])\n const _s56 = keywords([\"||\",\">\",\"+\",\"~\",\"|\"], { caseInsensitive: false })\n const _s59 = _nd(\"InlineExtendSubjectCompound\", parser({ trivia: classifiedTrivia({ \"lineComment\": _s12, \"blockComment\": _s13 }) }, oneOrMore(choice(g[\"NamespaceTypeSelector\"], _s45, _s46, _s47, 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 _s58 = _nd(\"SelectorBranch\", sequence(_nd(\"ComplexSelector\", sequence(_s59, many(sequence(not(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*!?all(?=[ \\\\t\\\\n\\\\r\\\\f]*(?:,|\\\\)))\", \"i\")), _nd(\"InlineExtendSubjectComplexTail\", sequence(optional(_s56), _s59), \"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\"}]), _s32), \"(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 _s57 = choice(_s58, _nd(\"SelectorBranch\", g[\"ComplexSelector\"], \"children => ({ selector: children.find(isLessSelectorBranch), extensions: [] })\", undefined, undefined, undefined, [{\"local\":\"isLessSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorBranch\"}]))\n const _s60 = _nd(\"MixinPathTail\", sequence(optional(regex(\">\", \"\")), _s43), \"(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 _s61 = _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 _s62 = regex(\">=|<=|=>|=<|=~|[<>=]\", \"\")\n const _s63 = 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 _s64 = parser({ trivia: null }, regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\"))\n const _s65 = parser({ trivia: null }, literal(\",\"))\n const _s66 = parser({ trivia: null }, choice(token(token(balanced(\"(\", \")\"))), token(token(balanced(\"[\", \"]\")))))\n const _s67 = parser({ trivia: null }, choice(_s68, _s69))\n const _s71 = sequence(literal(\"{\"), g[\"blockBody\"], optional(g[\"Call\"]), literal(\"}\"))\n const _s72 = token(parser({ trivia: null }, choice(keywords([\"@-import\",\"@-export\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"ImportAtKeyword\"], g[\"ConditionalAtKeyword\"], g[\"KeyframesAtKeyword\"])))\n const _s73 = keywords([\"::\",\":\"], { caseInsensitive: false })\n const _s74 = keywords([\">\",\"+\",\"~\"], { caseInsensitive: false })\n const _s75 = parser({ trivia: null }, sequence(optional(choice(g[\"InterpolatedValueStart\"], g[\"InterpolatedValueDash\"])), g[\"Interpolation\"], many(g[\"interpolatedValueTail\"])))\n const _s76 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")\n const _s77 = regex(\"(?:[-_a-zA-Z0-9\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))+\", \"\")\n const _s79 = token(parser({ trivia: null }, regex(\"url\\\\(\", \"i\")))\n const _s80 = regex(\"[^()\\\\[\\\\]{};@'\\\"]+\", \"\")\n return ({\n \"Stylesheet\": parser({ trivia: undefined, trackLines: true }, _s0),\n \"Document\": parser({ trivia: undefined, trackLines: true }, _s0),\n \"VarDeclaration\": parser({ trivia: undefined, trackLines: true }, _nd(\"VariableDeclaration\", sequence(_s4, literal(\":\"), choice(sequence(g[\"NamespacedMixinValue\"], _s6), g[\"ImportantValue\"], sequence(g[\"FlatMixinCall\"], _s6), sequence(not(literal(\"{\")), g[\"VariableValue\"])), _s7), \"(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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Plugin\", sequence(keywords([\"@plugin\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), optional(sequence(literal(\"(\"), field(\"options\", g[\"EnclosedContent\"]), literal(\")\"))), field(\"target\", _s8), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"VariableDeclaration\", sequence(_s4, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Reference\", parser({ trivia: null }, sequence(literal(\"@@\"), _s5)), \"(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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Reference\", parser({ trivia: null }, sequence(literal(\"@\"), _s5, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Reference\", sequence(literal(\"@\"), _s5), \"(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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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(\"@{\"), _s5, many(g[\"InterpolationAccessor\"]), literal(\"}\")))), \"(children, _fields, span) => interpolationFactFromChildren(children, span)\", undefined, undefined, undefined, [{\"local\":\"interpolationFactFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationFactFromChildren\"}])),\n \"PropertyInterpolation\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Interpolation\", choice(g[\"VariableInterpolation\"], g[\"PropertyInterpolation\"]), \"children => requireInterpolationFact(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationFact\"}])),\n \"AtRuleInterpolation\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, 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\": parser({ trivia: undefined, trackLines: true }, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, token(parser({ trivia: null }, sequence(g[\"NumberToken\"], literal(\"%\"))))),\n \"Dimension\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"FunctionArgument\", choice(sequence(peek(parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(_s9, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"FunctionScalarArgument\", sequence(g[\"MathSum\"], not(regex(\"[^,;)]|$\", \"\"))), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}])),\n \"FunctionAssignmentArgument\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"FunctionValueSequence\", parser({ trivia: null }, sequence(g[\"valuePiece\"], many(choice(sequence(not(_s14), _s15), _s16)), not(_s14))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => valuePieceReducerWithTrivia(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"valuePieceReducerWithTrivia\",\"source\":\"./grammar-helpers.js\",\"imported\":\"valuePieceReducerWithTrivia\"}], true)),\n \"FunctionCondition\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"FunctionConditionTerm\", sequence(optional(_s9), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"FunctionConditionOperand\", oneOrMore(sequence(not(_s14), 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Call\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(_s17, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Call\", sequence(routed(_s17), 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _tf(dispatch(_s18, 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(_s19, parser({ trivia: null }, peek(sequence(optional(g[\"whitespace\"]), choice(literal(\"}\"), not(regex(\"[\\\\s\\\\S]\", \"\"))))))), \"([call]) => isStatement(call) ? call : ''\")))), \"([, statement]) => statement\")),\n \"Value\": parser({ trivia: undefined, trackLines: true }, _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(_s18, 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\"}]), _s20), { 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"SelectorCapture\", sequence(parser({ trivia: null }, literal(\"*[\")), parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MathAtom\", g[\"MathUnary\"], \"children => requireValueNode(children[0])\", { collapse: true }, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}])),\n \"MathUnary\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MathProduct\", parser({ trivia: null }, sequence(g[\"MathAtom\"], many(sequence(_lf(parser({ trivia: null }, sequence(optional(_s25), keywords([\"*\",\"/\",\"%\"], { caseInsensitive: false }), optional(_s25))), \"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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MathSum\", parser({ trivia: null }, sequence(g[\"MathProduct\"], many(sequence(_s26, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"TopProduct\", parser({ trivia: null }, sequence(g[\"MathAtom\"], many(sequence(_s27, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"TopSum\", parser({ trivia: null }, sequence(g[\"TopProduct\"], many(sequence(_s26, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"PreservedDivision\", parser({ trivia: null }, sequence(g[\"TopSum\"], oneOrMore(sequence(field(\"separator\", _s28), 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Block\", parser({ trivia: null }, sequence(literal(\"(\"), optional(trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13))))), g[\"MathSum\"], optional(trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13))))), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"ValueSequence\", parser({ trivia: null }, sequence(g[\"valuePiece\"], many(choice(_s15, _s16)))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => valuePieceReducerWithTrivia(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"valuePieceReducerWithTrivia\",\"source\":\"./grammar-helpers.js\",\"imported\":\"valuePieceReducerWithTrivia\"}], true)),\n \"ValueList\": parser({ trivia: undefined, trackLines: true }, _nd(\"ValueList\", choice(attempt(sequence(g[\"MixinReference\"], not(choice(_s27, _s26)))), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"VariableValue\", sequence(optional(trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13))))), sepBy(g[\"ValueSequence\"], field(\"separator\", regex(\",[ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), { min: 1 }), optional(sequence(literal(\",\"), optional(trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13)))))))), \"(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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"CustomAtKeywordText\", g[\"CustomValueAtKeyword\"], \"children => requireToken(children[0]).value\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])),\n \"CustomPart\": parser({ trivia: undefined, trackLines: true }, choice(g[\"Interpolation\"], g[\"CustomValueOuterContent\"], g[\"CustomValueSingleQuoted\"], g[\"CustomValueDoubleQuoted\"], g[\"CustomGroup\"], g[\"CustomAtKeywordText\"], g[\"VariableReference\"])),\n \"CustomInnerPart\": parser({ trivia: undefined, trackLines: true }, choice(g[\"Interpolation\"], g[\"CustomValueInnerContent\"], g[\"CustomValueSingleQuoted\"], g[\"CustomValueDoubleQuoted\"], g[\"CustomGroup\"], g[\"CustomAtKeywordText\"], g[\"VariableReference\"])),\n \"CustomGroup\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, choice(g[\"CustomDeclaration\"], _nd(\"Declaration\", parser({ trivia: null }, sequence(parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Statement\", sequence(g[\"ClassIdSelectorPrefix\"], choice(_nd(\"MixinStatement\", sequence(g[\"MixinInterior\"], choice(attempt(_nd(\"MixinDefinition\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(literal(\")\"), not(_s31), 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(_s32, many(g[\"SelectorBranchTail\"]), optional(g[\"MixinGuard\"]), literal(\"{\"), _s35, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MixinArgumentGroup\", sequence(_s39, oneOrMore(sequence(literal(\",\"), _s39))), \"(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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MixinArguments\", choice(attempt(sequence(_s40, literal(\";\"), optional(sequence(sepBy(_s40, literal(\";\"), { min: 1 }), optional(literal(\";\")))))), sequence(sepBy(_s41, literal(\",\"), { min: 1 }), optional(literal(\";\")))), \"children => mixinArgumentsFromChildren(children)\", undefined, undefined, undefined, [{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"}])),\n \"MixinInterior\": parser({ trivia: undefined, trackLines: true }, _nd(\"MixinInterior\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, _s42)), { 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"SelectorBranch\", sequence(_nd(\"CompoundSelector\", parser({ trivia: classifiedTrivia({ \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(_s43, many(_s44))), \"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(_s31), optional(_s56), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"SelectorBranch\", sequence(literal(\",\"), _s57), \"(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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MixinCall\", sequence(_s43, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MixinCall\", sequence(_s43, oneOrMore(_s60), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"NamespacedMixinValue\", sequence(_s43, oneOrMore(_s60), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MixinReference\", sequence(_nd(\"MixinReferenceBase\", sequence(_s43, many(_s60), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"VarCall\", sequence(literal(\"@\"), not(keywords([\"supports\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })), _s5, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MixinGuardTopTerm\", choice(_nd(\"UnparenthesizedMixinGuard\", choice(sequence(optional(keywords([\"not\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })), choice(_s61, g[\"Call\"]), optional(sequence(_s62, g[\"MixinGuardOperand\"]))), sequence(optional(keywords([\"not\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })), g[\"MixinGuardOperand\"], _s62, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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(_s62, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MixinGuardOperand\", choice(_s61, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"EachName\", sequence(literal(\"@\"), _s5), \"(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\": parser({ trivia: undefined, trackLines: true }, 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\"}]), _s7), \"(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\"}]), _s1, _s2, _s37, g[\"FunctionStatement\"], _s38, literal(\";\"))),\n \"EachCallback\": parser({ trivia: undefined, trackLines: true }, _nd(\"EachCallback\", choice(sequence(literal(\"{\"), many(g[\"BodyStatement\"]), optional(g[\"Call\"]), literal(\"}\")), sequence(keywords([\".\",\"#\"], { caseInsensitive: false }), literal(\"(\"), g[\"EachName\"], optional(sequence(_s42, g[\"EachName\"], optional(sequence(_s42, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"QueryValue\", choice(g[\"PreservedDivision\"], g[\"queryLeaf\"]), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}])),\n \"QueryColonFeature\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"KeyframeBlock\", sequence(sepBy(g[\"keyframeSelector\"], literal(\",\"), { min: 1 }), literal(\"{\"), many(choice(_s38, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"DottedAtRuleKeyword\", sequence(_s63, oneOrMore(sequence(parser({ trivia: null }, literal(\".\")), parser({ trivia: null }, _s63)))), \"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\": parser({ trivia: undefined, trackLines: true }, _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(_s63, optional(literal(\"(\"))))), when(\"url(\", _s20, { 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"AtRulePrelude\", parser({ trivia: classifiedTrivia({ \"blockComment\": _s13 }) }, many(choice(_s64, _s65, _s66, _s67, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\"])), _s71), sequence(g[\"AtRuleName\"], choice(attempt(sequence(attempt(g[\"AtRulePreludeValue\"]), _s71)), sequence(not(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*:\", \"\")), g[\"AtRulePrelude\"], _s71)))), \"(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\": parser({ trivia: undefined, trackLines: true }, _nd(\"UnknownAtPrelude\", parser({ trivia: classifiedTrivia({ \"blockComment\": _s13 }) }, many(choice(_s64, _s65, _s66, _s67, 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\": parser({ trivia: undefined, trackLines: true }, token(parser({ trivia: null }, sequence(not(_s72), not(g[\"LayerAtKeyword\"]), g[\"AtIdentifierUnescaped\"])))),\n \"CustomValueAtKeyword\": parser({ trivia: undefined, trackLines: true }, _s72),\n \"StaticAtRuleStatementName\": parser({ trivia: undefined, trackLines: true }, token(parser({ trivia: null }, sequence(not(_s72), g[\"AtIdentifierUnescaped\"])))),\n \"UnknownAtRuleBlock\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"PseudoSelector\", dispatch(_s48, when([\":is(\",\"::is(\",\":not(\",\"::not(\",\":has(\",\"::has(\",\":where(\",\"::where(\",\":matches(\",\"::matches(\",\":global(\",\"::global(\",\":local(\",\"::local(\"], _s50, { caseInsensitive: true }), when(endsWith(\"(\"), _s53), otherwise(_s54)), \"children => children.find(isLessSimpleToken)\", undefined, undefined, undefined, [{\"local\":\"isLessSimpleToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSimpleToken\"}])),\n \"InterpolatedPseudo\": parser({ trivia: undefined, trackLines: true }, _nd(\"InterpolatedPseudo\", parser({ trivia: null }, sequence(_s73, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"InterpolatedNthPseudo\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(token(parser({ trivia: null }, sequence(_s73, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"InterpolatedArgumentPseudo\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(token(parser({ trivia: null }, sequence(_s73, not(_s49), g[\"LessIdentifier\"], literal(\"(\")))), many(_s52), g[\"VariableInterpolation\"], many(choice(g[\"VariableInterpolation\"], _s52)), 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\": parser({ trivia: undefined, trackLines: true }, choice(_nd(\"NthChildPseudo\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(token(parser({ trivia: null }, sequence(_s73, 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\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(token(parser({ trivia: null }, sequence(_s73, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"NthChildArgument\", sequence(g[\"NthExpression\"], optional(sequence(g[\"NthOfKeyword\"], parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"PseudoArgumentText\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"PseudoArgumentGroup\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"PseudoArgumentCompound\", parser({ trivia: classifiedTrivia({ \"lineComment\": _s12, \"blockComment\": _s13 }) }, oneOrMore(choice(g[\"NamespaceTypeSelector\"], _s45, _s46, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"PseudoArgumentComplex\", sequence(optional(_s74), g[\"PseudoArgumentCompound\"], many(sequence(not(_s31), optional(_s56), parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"PseudoArgumentSelectorTail\", sequence(literal(\",\"), parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, g[\"PseudoArgumentComplex\"])), \"children => children.find(isLessSelectorBranch)\", undefined, undefined, undefined, [{\"local\":\"isLessSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorBranch\"}])),\n \"PseudoArgumentSelector\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"AttributeNamespace\", choice(sequence(_s63, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"NamespaceTypeSelector\", sequence(g[\"AttributeNamespace\"], choice(_s63, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"AttributeName\", sequence(optional(g[\"AttributeNamespace\"]), _s63), \"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\": parser({ trivia: undefined, trackLines: true }, _nd(\"AttributeMatch\", sequence(g[\"AttributeOperator\"], choice(_s63, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"AttributeSelector\", sequence(literal(\"[\"), parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"InterpolatedAttributeToken\", _s75, \"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\": parser({ trivia: undefined, trackLines: true }, _nd(\"InterpolatedAttributeValueToken\", _s75, \"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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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(_s76, g[\"AttributeModifier\"]))))), sequence(g[\"AttributeName\"], g[\"AttributeOperator\"], choice(g[\"InterpolatedAttributeValueToken\"], g[\"InterpolatedAttributeQuoted\"]), optional(sequence(_s76, 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\": parser({ trivia: undefined, trackLines: true }, _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(_s77, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"BareInterpolatedSelectorWithSuffix\", parser({ trivia: null }, sequence(g[\"VariableInterpolation\"], oneOrMore(choice(_s77, _s45)))), \"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\": parser({ trivia: undefined, trackLines: true }, _nd(\"InterpolatedParentSuffix\", parser({ trivia: null }, sequence(_s46, g[\"VariableInterpolation\"], many(choice(_s77, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"CompoundSelector\", parser({ trivia: classifiedTrivia({ \"lineComment\": _s12, \"blockComment\": _s13 }) }, oneOrMore(_s44)), \"(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\": parser({ trivia: undefined, trackLines: true }, _nd(\"ComplexSelector\", sequence(g[\"CompoundSelector\"], many(sequence(not(_s31), optional(_s56), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"SelectorList\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"ExtendTarget\", sequence(_nd(\"ComplexSelector\", sequence(g[\"CompoundSelector\"], many(sequence(not(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*!?all(?=[ \\\\t\\\\n\\\\r\\\\f]*(?:,|\\\\)))\", \"i\")), optional(_s56), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"ExtendStatement\", sequence(literal(\"&\"), _s33, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Ruleset\", sequence(_nd(\"SelectorListWithExtends\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sepBy(_s57, 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(\"{\"), _s35, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"RelativeSelector\", sequence(optional(_s74), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Ruleset\", sequence(_nd(\"SelectorListWithExtends\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sepBy(choice(_s58, _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(\"{\"), _s35, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Url\", parser({ trivia: null }, sequence(_s79, optional(_s21), optional(field(\"body\", choice(g[\"EscapedQuoted\"], g[\"Quoted\"], _s22, _s23))), optional(_s21), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"UrlInterpolation\", parser({ trivia: null }, choice(sequence(g[\"VariableReference\"], oneOrMore(choice(_s23, g[\"Interpolation\"]))), sequence(g[\"Interpolation\"], many(choice(_s23, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Url\", sequence(_s79, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"ImportTarget\", _s8, \"(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\": parser({ trivia: undefined, trackLines: true }, _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: undefined, trackLines: true }, parser({ trivia: null }, oneOrMore(choice(_s80, g[\"Quoted\"], g[\"ImportTailGroup\"])))),\n \"ImportTailGroup\": parser({ trivia: undefined, trackLines: true }, g[\"ImportTailParen\"]),\n \"ImportTailParen\": parser({ trivia: undefined, trackLines: true }, parser({ trivia: null }, sequence(literal(\"(\"), many(choice(_s80, g[\"Quoted\"], g[\"ImportTailGroup\"])), literal(\")\")))),\n \"blockBody\": parser({ trivia: undefined, trackLines: true }, many(_s36)),\n \"BareVariableInterpolation\": parser({ trivia: undefined, trackLines: true }, _nd(\"BareVariableInterpolation\", parser({ trivia: null }, sequence(literal(\"@\"), _s5)), \"(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\": parser({ trivia: undefined, trackLines: true }, choice(g[\"UnicodeRange\"], _nd(\"TopSumMaybeDivision\", parser({ trivia: null }, sequence(g[\"TopSum\"], many(sequence(field(\"separator\", _s28), 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\": parser({ trivia: undefined, trackLines: true }, choice(g[\"PseudoArgumentGroup\"], g[\"LiteralQuoted\"], _s52)),\n \"queryLeaf\": parser({ trivia: undefined, trackLines: true }, 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\": parser({ trivia: undefined, trackLines: true }, choice(g[\"InterpolatedValueTail\"], g[\"Interpolation\"])),\n \"GenericFunction\": parser({ trivia: undefined, trackLines: true }, _s19),\n \"CalcFunction\": parser({ trivia: undefined, trackLines: true }, _nd(\"CalcCall\", parser({ trivia: null }, sequence(routed(), optional(trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13))))), g[\"MathSum\"], optional(trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13))))), 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\": parser({ trivia: undefined, trackLines: true }, 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\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13)))),\n \"rw\": trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13))))\n})\n})\n})()",
27707
+ ns: "_f1065213_",
27708
+ ir: "(() => {\n const _s68 = parser({ trivia: null }, sequence(literal(\"\\\"\"), regex(\"(?:[^\\\"\\\\\\\\]|\\\\\\\\.)*\", \"\"), literal(\"\\\"\")))\n const _s69 = parser({ trivia: null }, sequence(literal(\"'\"), regex(\"(?:[^'\\\\\\\\]|\\\\\\\\.)*\", \"\"), literal(\"'\")))\n const _s13 = regex(\"\\\\/\\\\*(?:[^*]|\\\\*(?!\\\\/))*\\\\*\\\\/\", \"\")\n return rules({ scanSkip: [_s68, _s69, _s13] }, (g) => {\n const _s1 = 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 _s2 = 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 _s3 = not(regex(\"[-\\\\w]+[ \\\\t]*:[ \\\\t\\\\n\\\\r\\\\f]\", \"\"))\n const _s0 = _nd(\"Stylesheet\", sequence(many(choice(_s1, _s2, g[\"FunctionStatement\"], _nd(\"GuardedRuleset\", sequence(_s3, 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 const _s5 = 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 _s4 = _nd(\"VariableName\", parser({ trivia: null }, sequence(literal(\"@\"), _s5)), \"(children, _fields, span) => `@${requireSupportedVariableName(children[1], span.start, span.end)}`\", undefined, undefined, undefined, [{\"local\":\"requireSupportedVariableName\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireSupportedVariableName\"}])\n const _s6 = not(parser({ trivia: null }, literal(\"[\")))\n const _s7 = choice(literal(\";\"), peek(literal(\"}\")))\n const _s8 = choice(g[\"EscapedQuoted\"], g[\"Quoted\"], choice(g[\"VariableUrl\"], g[\"PlainUrl\"]))\n const _s11 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")\n const _s12 = regex(\"\\\\/\\\\/[^\\\\n\\\\r]*\", \"\")\n const _s9 = keywords([\"not\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })\n const _s14 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]*(?:>=|<=|=>|=<|=~|[<>=]|(?:and|or)(?![-_a-zA-Z0-9\\\\u0080-\\\\uffff]))\", \"i\")\n const _s15 = parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(peek(trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13))))), not(regex(\"@[^;{}()'\\\"]*\\\\{\", \"\")), g[\"valuePiece\"]))\n const _s16 = sequence(_lf(peek(literal(\"@\")), \"() => ({ kind: 'glued-value-boundary' })\"), g[\"valuePiece\"])\n const _s17 = token(parser({ trivia: null }, sequence(not(keywords([\"calc(\",\"url(\"], { caseInsensitive: true })), g[\"InterpolatedValueStart\"], literal(\"(\"))))\n const _s19 = _nd(\"Call\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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 const _s18 = token(parser({ trivia: null }, sequence(g[\"InterpolatedValueStart\"], optional(literal(\"(\")))))\n const _s21 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")\n const _s22 = 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 _s23 = 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 _s20 = _nd(\"Url\", parser({ trivia: null }, sequence(routed(), optional(_s21), optional(field(\"body\", choice(g[\"EscapedQuoted\"], g[\"Quoted\"], _s22, _s23))), optional(_s21), 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 _s25 = trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13))))\n const _s26 = choice(_lf(parser({ trivia: null }, sequence(_s25, keywords([\"-\",\"+\"], { caseInsensitive: false }), _s25)), \"children => children[1]\"), regex(\"[-+](?=[0-9.])|[ \\\\t\\\\n\\\\r\\\\f]*[-+](?![0-9.])[ \\\\t\\\\n\\\\r\\\\f]*\", \"\"))\n const _s27 = _lf(parser({ trivia: null }, sequence(optional(_s25), keywords([\"*\",\"%\"], { caseInsensitive: false }), optional(_s25))), \"children => children[1]\")\n const _s29 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")\n const _s28 = _lf(sequence(optional(_s29), literal(\"/\"), optional(_s29)), \"(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 _s31 = sequence(optional(regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")), keywords([\"when\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }))\n const _s33 = _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 _s34 = peek(choice(literal(\",\"), _s31, literal(\"{\")))\n const _s32 = choice(sequence(_s33, _s34), _s34)\n const _s37 = _nd(\"GuardedRuleset\", sequence(_s3, 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 _s38 = _nd(\"DeclarationItem\", sequence(g[\"Declaration\"], _s7), \"(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 _s36 = choice(_s1, _s2, g[\"FunctionStatement\"], _s37, _s38, literal(\";\"))\n const _s35 = many(choice(_s36, g[\"ExtendStatement\"]))\n const _s39 = _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 _s41 = choice(_nd(\"NamedMixinArgument\", sequence(literal(\"@\"), _s5, 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\"}]), _s39)\n const _s40 = choice(g[\"MixinArgumentGroup\"], _s41)\n const _s42 = keywords([\",\",\";\"], { caseInsensitive: false })\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 _s45 = 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 _s46 = regex(\"&[-_a-zA-Z0-9\\\\u0080-\\\\uffff]*\", \"\")\n const _s50 = _nd(\"PseudoSelector\", sequence(routed(), _nd(\"PseudoSelectorArgument\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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 _s52 = regex(\"(?:[^()\\\\[\\\\]'\\\"@/]|@(?![@{_a-zA-Z\\\\u0080-\\\\uffff-])|\\\\/(?!\\\\*))+\", \"\")\n const _s51 = _nd(\"InterpolatedArgumentPseudo\", sequence(routed(), many(_s52), g[\"VariableInterpolation\"], many(choice(g[\"VariableInterpolation\"], _s52)), 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 _s53 = _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 _s54 = _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 _s49 = parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, token(parser({ trivia: null }, sequence(keywords([\"extend\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), literal(\"(\")))))\n const _s48 = token(parser({ trivia: null }, sequence(regex(\"::?(?![ \\\\t\\\\n\\\\r\\\\f])\", \"\"), not(_s49), not(g[\"NthPseudoSelectorName\"]), g[\"LessIdentifier\"], optional(literal(\"(\")))))\n const _s47 = dispatch(_s48, when([\":is(\",\"::is(\",\":not(\",\"::not(\",\":has(\",\"::has(\",\":where(\",\"::where(\",\":matches(\",\"::matches(\",\":global(\",\"::global(\",\":local(\",\"::local(\"], choice(_s50, _s51), { caseInsensitive: true }), when(endsWith(\"(\"), choice(_s51, _s53)), otherwise(_s54))\n const _s44 = choice(g[\"InterpolatedParentSuffix\"], g[\"InterpolatedSimpleSelector\"], g[\"AdjacentInterpolatedSelector\"], g[\"BareInterpolatedSelectorWithSuffix\"], g[\"BareInterpolatedSelector\"], g[\"NamespaceTypeSelector\"], _s45, _s46, _s47, g[\"InterpolatedNthPseudo\"], g[\"NthPseudoSelector\"], g[\"InterpolatedArgumentPseudo\"], g[\"InterpolatedPseudo\"], g[\"AttributeSelector\"], g[\"InterpolatedAttributeSelector\"])\n const _s56 = keywords([\"||\",\">\",\"+\",\"~\",\"|\"], { caseInsensitive: false })\n const _s59 = _nd(\"InlineExtendSubjectCompound\", parser({ trivia: classifiedTrivia({ \"lineComment\": _s12, \"blockComment\": _s13 }) }, oneOrMore(choice(g[\"NamespaceTypeSelector\"], _s45, _s46, _s47, 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 _s58 = _nd(\"SelectorBranch\", sequence(_nd(\"ComplexSelector\", sequence(_s59, many(sequence(not(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*!?all(?=[ \\\\t\\\\n\\\\r\\\\f]*(?:,|\\\\)))\", \"i\")), _nd(\"InlineExtendSubjectComplexTail\", sequence(optional(_s56), _s59), \"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\"}]), _s32), \"(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 _s57 = choice(_s58, _nd(\"SelectorBranch\", g[\"ComplexSelector\"], \"children => ({ selector: children.find(isLessSelectorBranch), extensions: [] })\", undefined, undefined, undefined, [{\"local\":\"isLessSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorBranch\"}]))\n const _s60 = _nd(\"MixinPathTail\", sequence(optional(regex(\">\", \"\")), _s43), \"(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 _s61 = _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 _s62 = regex(\">=|<=|=>|=<|=~|[<>=]\", \"\")\n const _s63 = 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 _s64 = parser({ trivia: null }, regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\"))\n const _s65 = parser({ trivia: null }, literal(\",\"))\n const _s66 = parser({ trivia: null }, choice(token(token(balanced(\"(\", \")\"))), token(token(balanced(\"[\", \"]\")))))\n const _s67 = parser({ trivia: null }, choice(_s68, _s69))\n const _s71 = sequence(literal(\"{\"), g[\"blockBody\"], optional(g[\"Call\"]), literal(\"}\"))\n const _s72 = token(parser({ trivia: null }, choice(keywords([\"@-import\",\"@-export\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), g[\"ImportAtKeyword\"], g[\"ConditionalAtKeyword\"], g[\"KeyframesAtKeyword\"])))\n const _s73 = keywords([\"::\",\":\"], { caseInsensitive: false })\n const _s74 = keywords([\">\",\"+\",\"~\"], { caseInsensitive: false })\n const _s75 = parser({ trivia: null }, sequence(optional(choice(g[\"InterpolatedValueStart\"], g[\"InterpolatedValueDash\"])), g[\"Interpolation\"], many(g[\"interpolatedValueTail\"])))\n const _s76 = regex(\"[ \\\\t\\\\n\\\\r\\\\f]+\", \"\")\n const _s77 = regex(\"(?:[-_a-zA-Z0-9\\\\u0080-\\\\uffff]|\\\\\\\\(?:[0-9a-fA-F]{1,6}[ \\\\t\\\\n\\\\r\\\\f]?|[^\\\\n\\\\r\\\\f]))+\", \"\")\n const _s79 = token(parser({ trivia: null }, regex(\"url\\\\(\", \"i\")))\n const _s80 = regex(\"[^()\\\\[\\\\]{};@'\\\"]+\", \"\")\n return ({\n \"Stylesheet\": parser({ trivia: undefined, trackLines: true }, _s0),\n \"Document\": parser({ trivia: undefined, trackLines: true }, _s0),\n \"VarDeclaration\": parser({ trivia: undefined, trackLines: true }, _nd(\"VariableDeclaration\", sequence(_s4, literal(\":\"), choice(sequence(g[\"NamespacedMixinValue\"], _s6), g[\"ImportantValue\"], sequence(g[\"FlatMixinCall\"], _s6), sequence(not(literal(\"{\")), g[\"VariableValue\"])), _s7), \"(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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Plugin\", sequence(keywords([\"@plugin\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" }), optional(sequence(literal(\"(\"), field(\"options\", g[\"EnclosedContent\"]), literal(\")\"))), field(\"target\", _s8), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"VariableDeclaration\", sequence(_s4, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Reference\", parser({ trivia: null }, sequence(literal(\"@@\"), _s5)), \"(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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Reference\", parser({ trivia: null }, sequence(literal(\"@\"), _s5, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Reference\", sequence(literal(\"@\"), _s5), \"(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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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(\"@{\"), _s5, many(g[\"InterpolationAccessor\"]), literal(\"}\")))), \"(children, _fields, span) => interpolationFactFromChildren(children, span)\", undefined, undefined, undefined, [{\"local\":\"interpolationFactFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"interpolationFactFromChildren\"}])),\n \"PropertyInterpolation\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Interpolation\", choice(g[\"VariableInterpolation\"], g[\"PropertyInterpolation\"]), \"children => requireInterpolationFact(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireInterpolationFact\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireInterpolationFact\"}])),\n \"AtRuleInterpolation\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, 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\": parser({ trivia: undefined, trackLines: true }, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, token(parser({ trivia: null }, sequence(g[\"NumberToken\"], literal(\"%\"))))),\n \"Dimension\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"FunctionArgument\", choice(sequence(peek(parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(_s9, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"FunctionScalarArgument\", sequence(g[\"MathSum\"], not(regex(\"[^,;)]|$\", \"\"))), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}])),\n \"FunctionAssignmentArgument\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"FunctionValueSequence\", parser({ trivia: null }, sequence(g[\"valuePiece\"], many(choice(sequence(not(_s14), _s15), _s16)), not(_s14))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => valuePieceReducerWithTrivia(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"valuePieceReducerWithTrivia\",\"source\":\"./grammar-helpers.js\",\"imported\":\"valuePieceReducerWithTrivia\"}], true)),\n \"FunctionCondition\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"FunctionConditionTerm\", sequence(optional(_s9), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"FunctionConditionOperand\", oneOrMore(sequence(not(_s14), 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Call\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(_s17, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Call\", sequence(routed(_s17), 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _tf(dispatch(_s18, 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(_s19, parser({ trivia: null }, peek(sequence(optional(g[\"whitespace\"]), choice(literal(\"}\"), not(regex(\"[\\\\s\\\\S]\", \"\"))))))), \"([call]) => isStatement(call) ? call : ''\")))), \"([, statement]) => statement\")),\n \"Value\": parser({ trivia: undefined, trackLines: true }, _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(_s18, 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\"}]), _s20), { 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"SelectorCapture\", sequence(parser({ trivia: null }, literal(\"*[\")), parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MathAtom\", g[\"MathUnary\"], \"children => requireValueNode(children[0])\", { collapse: true }, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}])),\n \"MathUnary\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MathProduct\", parser({ trivia: null }, sequence(g[\"MathAtom\"], many(sequence(_lf(parser({ trivia: null }, sequence(optional(_s25), keywords([\"*\",\"/\",\"%\"], { caseInsensitive: false }), optional(_s25))), \"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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MathSum\", parser({ trivia: null }, sequence(g[\"MathProduct\"], many(sequence(_s26, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"TopProduct\", parser({ trivia: null }, sequence(g[\"MathAtom\"], many(sequence(_s27, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"TopSum\", parser({ trivia: null }, sequence(g[\"TopProduct\"], many(sequence(_s26, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"PreservedDivision\", parser({ trivia: null }, sequence(g[\"TopSum\"], oneOrMore(sequence(field(\"separator\", _s28), 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Block\", parser({ trivia: null }, sequence(literal(\"(\"), optional(trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13))))), g[\"MathSum\"], optional(trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13))))), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"ValueSequence\", parser({ trivia: null }, sequence(g[\"valuePiece\"], many(choice(_s15, _s16)))), \"(children, _fields, _span, _rawChildren, triviaLog, state) => valuePieceReducerWithTrivia(children, triviaLog, state)\", undefined, undefined, undefined, [{\"local\":\"valuePieceReducerWithTrivia\",\"source\":\"./grammar-helpers.js\",\"imported\":\"valuePieceReducerWithTrivia\"}], true)),\n \"ValueList\": parser({ trivia: undefined, trackLines: true }, _nd(\"ValueList\", choice(attempt(sequence(g[\"MixinReference\"], not(choice(_s27, _s26)))), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"VariableValue\", sequence(optional(trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13))))), sepBy(g[\"ValueSequence\"], field(\"separator\", regex(\",[ \\\\t\\\\n\\\\r\\\\f]*\", \"\")), { min: 1 }), optional(sequence(literal(\",\"), optional(trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13)))))))), \"(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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"CustomAtKeywordText\", g[\"CustomValueAtKeyword\"], \"children => requireToken(children[0]).value\", undefined, undefined, undefined, [{\"local\":\"requireToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireToken\"}])),\n \"CustomPart\": parser({ trivia: undefined, trackLines: true }, choice(g[\"Interpolation\"], g[\"CustomValueOuterContent\"], g[\"CustomValueSingleQuoted\"], g[\"CustomValueDoubleQuoted\"], g[\"CustomGroup\"], g[\"CustomAtKeywordText\"], g[\"VariableReference\"])),\n \"CustomInnerPart\": parser({ trivia: undefined, trackLines: true }, choice(g[\"Interpolation\"], g[\"CustomValueInnerContent\"], g[\"CustomValueSingleQuoted\"], g[\"CustomValueDoubleQuoted\"], g[\"CustomGroup\"], g[\"CustomAtKeywordText\"], g[\"VariableReference\"])),\n \"CustomGroup\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, choice(g[\"CustomDeclaration\"], _nd(\"Declaration\", parser({ trivia: null }, sequence(parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Statement\", sequence(g[\"ClassIdSelectorPrefix\"], choice(_nd(\"MixinStatement\", sequence(g[\"MixinInterior\"], choice(attempt(_nd(\"MixinDefinition\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(literal(\")\"), not(_s31), 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(_s32, many(g[\"SelectorBranchTail\"]), optional(g[\"MixinGuard\"]), literal(\"{\"), _s35, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MixinArgumentGroup\", sequence(_s39, oneOrMore(sequence(literal(\",\"), _s39))), \"(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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MixinArguments\", choice(attempt(sequence(_s40, literal(\";\"), optional(sequence(sepBy(_s40, literal(\";\"), { min: 1 }), optional(literal(\";\")))))), sequence(sepBy(_s41, literal(\",\"), { min: 1 }), optional(literal(\";\")))), \"children => mixinArgumentsFromChildren(children)\", undefined, undefined, undefined, [{\"local\":\"mixinArgumentsFromChildren\",\"source\":\"./grammar-helpers.js\",\"imported\":\"mixinArgumentsFromChildren\"}])),\n \"MixinInterior\": parser({ trivia: undefined, trackLines: true }, _nd(\"MixinInterior\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, _s42)), { 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"SelectorBranch\", sequence(_nd(\"CompoundSelector\", parser({ trivia: classifiedTrivia({ \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(_s43, many(_s44))), \"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(_s31), optional(_s56), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"SelectorBranch\", sequence(literal(\",\"), _s57), \"(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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MixinCall\", sequence(_s43, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MixinCall\", sequence(_s43, oneOrMore(_s60), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"NamespacedMixinValue\", sequence(_s43, oneOrMore(_s60), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MixinReference\", sequence(_nd(\"MixinReferenceBase\", sequence(_s43, many(_s60), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"VarCall\", sequence(literal(\"@\"), not(keywords([\"supports\"], { caseInsensitive: true, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })), _s5, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MixinGuardTopTerm\", choice(_nd(\"UnparenthesizedMixinGuard\", choice(sequence(optional(keywords([\"not\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })), choice(_s61, g[\"Call\"]), optional(sequence(_s62, g[\"MixinGuardOperand\"]))), sequence(optional(keywords([\"not\"], { caseInsensitive: false, boundary: \"-_a-zA-Z0-9\\\\u0080-\\\\uFFFF\" })), g[\"MixinGuardOperand\"], _s62, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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(_s62, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"MixinGuardOperand\", choice(_s61, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"EachName\", sequence(literal(\"@\"), _s5), \"(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\": parser({ trivia: undefined, trackLines: true }, 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\"}]), _s7), \"(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\"}]), _s1, _s2, _s37, g[\"FunctionStatement\"], _s38, literal(\";\"))),\n \"EachCallback\": parser({ trivia: undefined, trackLines: true }, _nd(\"EachCallback\", choice(sequence(literal(\"{\"), many(g[\"BodyStatement\"]), optional(g[\"Call\"]), literal(\"}\")), sequence(keywords([\".\",\"#\"], { caseInsensitive: false }), literal(\"(\"), g[\"EachName\"], optional(sequence(_s42, g[\"EachName\"], optional(sequence(_s42, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"QueryValue\", choice(g[\"PreservedDivision\"], g[\"queryLeaf\"]), \"children => requireValueNode(children[0])\", undefined, undefined, undefined, [{\"local\":\"requireValueNode\",\"source\":\"./grammar-helpers.js\",\"imported\":\"requireValueNode\"}])),\n \"QueryColonFeature\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"KeyframeBlock\", sequence(sepBy(g[\"keyframeSelector\"], literal(\",\"), { min: 1 }), literal(\"{\"), many(choice(_s38, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"DottedAtRuleKeyword\", sequence(_s63, oneOrMore(sequence(parser({ trivia: null }, literal(\".\")), parser({ trivia: null }, _s63)))), \"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\": parser({ trivia: undefined, trackLines: true }, _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(_s63, optional(literal(\"(\"))))), when(\"url(\", _s20, { 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"AtRulePrelude\", parser({ trivia: classifiedTrivia({ \"blockComment\": _s13 }) }, many(choice(_s64, _s65, _s66, _s67, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\"])), _s71), sequence(g[\"AtRuleName\"], choice(attempt(sequence(attempt(g[\"AtRulePreludeValue\"]), _s71)), sequence(not(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*:\", \"\")), g[\"AtRulePrelude\"], _s71)))), \"(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\": parser({ trivia: undefined, trackLines: true }, _nd(\"UnknownAtPrelude\", parser({ trivia: classifiedTrivia({ \"blockComment\": _s13 }) }, many(choice(_s64, _s65, _s66, _s67, 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\": parser({ trivia: undefined, trackLines: true }, token(parser({ trivia: null }, sequence(not(_s72), not(g[\"LayerAtKeyword\"]), g[\"AtIdentifierUnescaped\"])))),\n \"CustomValueAtKeyword\": parser({ trivia: undefined, trackLines: true }, _s72),\n \"StaticAtRuleStatementName\": parser({ trivia: undefined, trackLines: true }, token(parser({ trivia: null }, sequence(not(_s72), g[\"AtIdentifierUnescaped\"])))),\n \"UnknownAtRuleBlock\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"PseudoSelector\", dispatch(_s48, when([\":is(\",\"::is(\",\":not(\",\"::not(\",\":has(\",\"::has(\",\":where(\",\"::where(\",\":matches(\",\"::matches(\",\":global(\",\"::global(\",\":local(\",\"::local(\"], _s50, { caseInsensitive: true }), when(endsWith(\"(\"), _s53), otherwise(_s54)), \"children => children.find(isLessSimpleToken)\", undefined, undefined, undefined, [{\"local\":\"isLessSimpleToken\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSimpleToken\"}])),\n \"InterpolatedPseudo\": parser({ trivia: undefined, trackLines: true }, _nd(\"InterpolatedPseudo\", parser({ trivia: null }, sequence(_s73, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"InterpolatedNthPseudo\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(token(parser({ trivia: null }, sequence(_s73, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"InterpolatedArgumentPseudo\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(token(parser({ trivia: null }, sequence(_s73, not(_s49), g[\"LessIdentifier\"], literal(\"(\")))), many(_s52), g[\"VariableInterpolation\"], many(choice(g[\"VariableInterpolation\"], _s52)), 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\": parser({ trivia: undefined, trackLines: true }, choice(_nd(\"NthChildPseudo\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(token(parser({ trivia: null }, sequence(_s73, 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\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sequence(token(parser({ trivia: null }, sequence(_s73, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"NthChildArgument\", sequence(g[\"NthExpression\"], optional(sequence(g[\"NthOfKeyword\"], parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"PseudoArgumentText\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"PseudoArgumentGroup\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"PseudoArgumentCompound\", parser({ trivia: classifiedTrivia({ \"lineComment\": _s12, \"blockComment\": _s13 }) }, oneOrMore(choice(g[\"NamespaceTypeSelector\"], _s45, _s46, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"PseudoArgumentComplex\", sequence(optional(_s74), g[\"PseudoArgumentCompound\"], many(sequence(not(_s31), optional(_s56), parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"PseudoArgumentSelectorTail\", sequence(literal(\",\"), parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, g[\"PseudoArgumentComplex\"])), \"children => children.find(isLessSelectorBranch)\", undefined, undefined, undefined, [{\"local\":\"isLessSelectorBranch\",\"source\":\"./grammar-helpers.js\",\"imported\":\"isLessSelectorBranch\"}])),\n \"PseudoArgumentSelector\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"AttributeNamespace\", choice(sequence(_s63, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"NamespaceTypeSelector\", sequence(g[\"AttributeNamespace\"], choice(_s63, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"AttributeName\", sequence(optional(g[\"AttributeNamespace\"]), _s63), \"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\": parser({ trivia: undefined, trackLines: true }, _nd(\"AttributeMatch\", sequence(g[\"AttributeOperator\"], choice(_s63, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"AttributeSelector\", sequence(literal(\"[\"), parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"InterpolatedAttributeToken\", _s75, \"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\": parser({ trivia: undefined, trackLines: true }, _nd(\"InterpolatedAttributeValueToken\", _s75, \"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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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(_s76, g[\"AttributeModifier\"]))))), sequence(g[\"AttributeName\"], g[\"AttributeOperator\"], choice(g[\"InterpolatedAttributeValueToken\"], g[\"InterpolatedAttributeQuoted\"]), optional(sequence(_s76, 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\": parser({ trivia: undefined, trackLines: true }, _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(_s77, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"BareInterpolatedSelectorWithSuffix\", parser({ trivia: null }, sequence(g[\"VariableInterpolation\"], oneOrMore(choice(_s77, _s45)))), \"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\": parser({ trivia: undefined, trackLines: true }, _nd(\"InterpolatedParentSuffix\", parser({ trivia: null }, sequence(_s46, g[\"VariableInterpolation\"], many(choice(_s77, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"CompoundSelector\", parser({ trivia: classifiedTrivia({ \"lineComment\": _s12, \"blockComment\": _s13 }) }, oneOrMore(_s44)), \"(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\": parser({ trivia: undefined, trackLines: true }, _nd(\"ComplexSelector\", sequence(g[\"CompoundSelector\"], many(sequence(not(_s31), optional(_s56), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"SelectorList\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"ExtendTarget\", sequence(_nd(\"ComplexSelector\", sequence(g[\"CompoundSelector\"], many(sequence(not(regex(\"[ \\\\t\\\\n\\\\r\\\\f]*!?all(?=[ \\\\t\\\\n\\\\r\\\\f]*(?:,|\\\\)))\", \"i\")), optional(_s56), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"ExtendStatement\", sequence(literal(\"&\"), _s33, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Ruleset\", sequence(_nd(\"SelectorListWithExtends\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sepBy(_s57, 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(\"{\"), _s35, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"RelativeSelector\", sequence(optional(_s74), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Ruleset\", sequence(_nd(\"SelectorListWithExtends\", parser({ trivia: classifiedTrivia({ \"whitespace\": _s11, \"lineComment\": _s12, \"blockComment\": _s13 }) }, sepBy(choice(_s58, _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(\"{\"), _s35, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Url\", parser({ trivia: null }, sequence(_s79, optional(_s21), optional(field(\"body\", choice(g[\"EscapedQuoted\"], g[\"Quoted\"], _s22, _s23))), optional(_s21), 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"UrlInterpolation\", parser({ trivia: null }, choice(sequence(g[\"VariableReference\"], oneOrMore(choice(_s23, g[\"Interpolation\"]))), sequence(g[\"Interpolation\"], many(choice(_s23, 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\": parser({ trivia: undefined, trackLines: true }, _nd(\"Url\", sequence(_s79, 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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _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\": parser({ trivia: undefined, trackLines: true }, _nd(\"ImportTarget\", _s8, \"(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\": parser({ trivia: undefined, trackLines: true }, _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: undefined, trackLines: true }, parser({ trivia: null }, oneOrMore(choice(_s80, g[\"Quoted\"], g[\"ImportTailGroup\"])))),\n \"ImportTailGroup\": parser({ trivia: undefined, trackLines: true }, g[\"ImportTailParen\"]),\n \"ImportTailParen\": parser({ trivia: undefined, trackLines: true }, parser({ trivia: null }, sequence(literal(\"(\"), many(choice(_s80, g[\"Quoted\"], g[\"ImportTailGroup\"])), literal(\")\")))),\n \"blockBody\": parser({ trivia: undefined, trackLines: true }, many(_s36)),\n \"BareVariableInterpolation\": parser({ trivia: undefined, trackLines: true }, _nd(\"BareVariableInterpolation\", parser({ trivia: null }, sequence(literal(\"@\"), _s5)), \"(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\": parser({ trivia: undefined, trackLines: true }, choice(g[\"UnicodeRange\"], _nd(\"TopSumMaybeDivision\", parser({ trivia: null }, sequence(g[\"TopSum\"], many(sequence(field(\"separator\", _s28), 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\": parser({ trivia: undefined, trackLines: true }, choice(g[\"PseudoArgumentGroup\"], g[\"LiteralQuoted\"], _s52)),\n \"queryLeaf\": parser({ trivia: undefined, trackLines: true }, 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\": parser({ trivia: undefined, trackLines: true }, choice(g[\"InterpolatedValueTail\"], g[\"Interpolation\"])),\n \"GenericFunction\": parser({ trivia: undefined, trackLines: true }, _s19),\n \"CalcFunction\": parser({ trivia: undefined, trackLines: true }, _nd(\"CalcCall\", parser({ trivia: null }, sequence(routed(), optional(trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13))))), g[\"MathSum\"], optional(trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13))))), 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\": parser({ trivia: undefined, trackLines: true }, 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\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13)))),\n \"rw\": trivia(oneOrMore(choice(label(\"whitespace\", _s11), label(\"lineComment\", _s12), label(\"blockComment\", _s13))))\n})\n})\n})()",
27699
27709
  trackLines: true
27700
27710
  }
27701
27711
  ],