class ParseError extends Error{sourceStart;sourceEnd;parserState;constructor(e,n,t,o){super(e),this.name="ParseError",this.sourceStart=n,this.sourceEnd=t,this.parserState=o}}class ParseErrorWithToken extends ParseError{token;constructor(e,n,t,o,r){super(e,n,t,o),this.token=r}}const e={UnexpectedNewLineInString:"Unexpected newline while consuming a string token.",UnexpectedEOFInString:"Unexpected EOF while consuming a string token.",UnexpectedEOFInComment:"Unexpected EOF while consuming a comment.",UnexpectedEOFInURL:"Unexpected EOF while consuming a url token.",UnexpectedEOFInEscapedCodePoint:"Unexpected EOF while consuming an escaped code point.",UnexpectedCharacterInURL:"Unexpected character while consuming a url token.",InvalidEscapeSequenceInURL:"Invalid escape sequence while consuming a url token.",InvalidEscapeSequenceAfterBackslash:'Invalid escape sequence after "\\"'},n="undefined"!=typeof globalThis&&"structuredClone"in globalThis;function cloneTokens(e){return n?structuredClone(e):JSON.parse(JSON.stringify(e))}function stringify(...e){if(!e||!e.length)return"";let n;n=Array.isArray(e)&&Array.isArray(e[0])&&Array.isArray(e[0][0])?e[0]:e;let t="";for(let e=0;e=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70}function isIdentStartCodePoint(e){return e>=97&&e<=122||e>=65&&e<=90||95===e||isNonASCII_IdentCodePoint(e)}function isIdentCodePoint(e){return e>=97&&e<=122||e>=65&&e<=90||e>=48&&e<=57||e===o||95===e||isNonASCII_IdentCodePoint(e)}function isNonASCII_IdentCodePoint(e){return e<183?0===e:183===e||8204===e||8205===e||8255===e||8256===e||8204===e||(192<=e&&e<=214||216<=e&&e<=246||248<=e&&e<=893||895<=e&&e<=8191||8304<=e&&e<=8591||11264<=e&&e<=12271||12289<=e&&e<=55295||63744<=e&&e<=64975||65008<=e&&e<=65533||(0===e||(e>=55296&&e<=57343||e>=65536)))}function isNonPrintableCodePoint(e){return 11===e||127===e||0<=e&&e<=8||14<=e&&e<=31}function isNewLine(e){return e===r||e===t||12===e}function isWhitespace(e){return 32===e||e===r||9===e||e===t||12===e}function isSurrogate(e){return e>=55296&&e<=57343}function tokenize(e,n){const t=tokenizer(e,n),o=[];for(;!t.endOfFile();)o.push(t.nextToken());return o.push(t.nextToken()),o}function tokenizer(n,l){const C=n.css.valueOf(),f=n.unicodeRangesAllowed??!1;let m=0,h=0,k=-1,P=!1;const p=l?.onParseError??noop;function consumeIdentSequence(){const e=m;for(;;){const e=C.charCodeAt(m);if(e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===o||95===e){m+=1;continue}const n=C.codePointAt(m)??-1;if(0===n||n>=55296&&n<=57343||n===s&&!isNewLine(C.codePointAt(m+1)??-1))break;if(!isNonASCII_IdentCodePoint(n))break;m+=+(n>65535)+1}const n=C.codePointAt(m)??-1;if(0!==n&&!(n>=55296&&n<=57343)&&(n!==s||isNewLine(C.codePointAt(m+1)??-1)))return P=!0,k=m-1,C.slice(e,m);P=!1,m=e,k=-1;let t="";for(;;){const e=C.codePointAt(m)??-1;if(0===e||isSurrogate(e))t+=String.fromCharCode(c),m+=+(e>65535)+1,k=m-1;else if(e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===o||95===e||isNonASCII_IdentCodePoint(e))t+=e>65535?String.fromCodePoint(e):String.fromCharCode(e),m+=+(e>65535)+1,k=m-1;else{if(C.codePointAt(m)!==s||isNewLine(C.codePointAt(m+1)??-1))return t;m+=1,k=m-1,t+=String.fromCodePoint(consumeEscapedCodePoint())}}}function consumeEscapedCodePoint(){const n=C.codePointAt(m);if(void 0===n)return p(new ParseError(e.UnexpectedEOFInEscapedCodePoint,h,k,["4.3.7. Consume an escaped code point","Unexpected EOF"])),c;if(m+=+(n>65535)+1,k=m-1,isHexDigitCodePoint(n)){const e=[n];let o;for(;void 0!==(o=C.codePointAt(m))&&isHexDigitCodePoint(o)&&e.length<6;)e.push(o),m+=1,k=m-1;isWhitespace(C.codePointAt(m)??-1)&&(C.codePointAt(m)===t&&C.codePointAt(m+1)===r&&(m+=1),m+=1,k=m-1);const i=parseInt(String.fromCodePoint(...e),16);return 0===i||isSurrogate(i)||i>1114111?c:i}return 0===n||isSurrogate(n)?c:n}function consumeBadURL(){for(;;){const e=C.codePointAt(m);if(void 0===e)return;if(41===e)return m+=1,void(k=m-1);e!==s||isNewLine(C.codePointAt(m+1)??-1)?(m+=1,k=m-1):(m+=1,k=m-1,consumeEscapedCodePoint())}}function consumeComment(){for(m+=2,k=m-1;;){const n=C.codePointAt(m);if(void 0===n){const n=[u.Comment,C.slice(h,k+1),h,k,void 0];return p(new ParseErrorWithToken(e.UnexpectedEOFInComment,h,k,["4.3.2. Consume comments","Unexpected EOF"],n)),n}if(m+=1,k=m-1,42===n&&void 0!==C.codePointAt(m)&&47===C.codePointAt(m)){m+=1,k=m-1;break}}return[u.Comment,C.slice(h,k+1),h,k,void 0]}function consumeStringToken(){let n="";const o=C.codePointAt(m);for(m+=1,k=m-1;;){const i=C.charCodeAt(m);if(m>=C.length){const t=[u.String,C.slice(h,k+1),h,k,{value:n}];return p(new ParseErrorWithToken(e.UnexpectedEOFInString,h,k,["4.3.5. Consume a string token","Unexpected EOF"],t)),t}if(m+=1,k=m-1,isNewLine(i)){m-=1,k=m-1;const n=[u.BadString,C.slice(h,k+1),h,k,void 0];return p(new ParseErrorWithToken(e.UnexpectedNewLineInString,h,C.codePointAt(m)===t&&C.codePointAt(m+1)===r?k+2:k+1,["4.3.5. Consume a string token","Unexpected newline"],n)),n}if(i===o)return[u.String,C.slice(h,k+1),h,k,{value:n}];if(i!==s)if(0!==i)if(i<128)n+=String.fromCharCode(i);else{if(i>=55296&&i<=57343){const e=C.codePointAt(m-1)??-1;e>=65536?(n+=String.fromCodePoint(e),m+=1,k=m-1):n+=String.fromCharCode(c);continue}n+=String.fromCharCode(i)}else n+=String.fromCharCode(c);else{if(void 0===C.codePointAt(m))continue;if(isNewLine(C.codePointAt(m)??-1)){C.codePointAt(m)===t&&C.codePointAt(m+1)===r&&(m+=1),m+=1,k=m-1;continue}n+=String.fromCodePoint(consumeEscapedCodePoint())}}}function consumeUnicodeRangeToken(){m+=2,k=m-1;const e=[],n=[];let t;for(;void 0!==(t=C.codePointAt(m))&&e.length<6&&isHexDigitCodePoint(t);)e.push(t),m+=1,k=m-1;for(;void 0!==(t=C.codePointAt(m))&&e.length<6&&63===t;)0===n.length&&n.push(...e),e.push(48),n.push(70),m+=1,k=m-1;if(!n.length&&C.codePointAt(m)===o&&isHexDigitCodePoint(C.codePointAt(m+1)??-1))for(m+=1,k=m-1;void 0!==(t=C.codePointAt(m))&&n.length<6&&isHexDigitCodePoint(t);)n.push(t),m+=1,k=m-1;if(!n.length){const n=parseInt(String.fromCodePoint(...e),16);return[u.UnicodeRange,C.slice(h,k+1),h,k,{startOfRange:n,endOfRange:n}]}const r=parseInt(String.fromCodePoint(...e),16),i=parseInt(String.fromCodePoint(...n),16);return[u.UnicodeRange,C.slice(h,k+1),h,k,{startOfRange:r,endOfRange:i}]}function consumeUrlToken(){for(;isWhitespace(C.codePointAt(m)??-1);)m+=1,k=m-1;let n="";for(;;){if(void 0===C.codePointAt(m)){const t=[u.URL,C.slice(h,k+1),h,k,{value:n}];return p(new ParseErrorWithToken(e.UnexpectedEOFInURL,h,k,["4.3.6. Consume a url token","Unexpected EOF"],t)),t}if(41===C.codePointAt(m))return m+=1,k=m-1,[u.URL,C.slice(h,k+1),h,k,{value:n}];if(isWhitespace(C.codePointAt(m)??-1)){for(m+=1,k=m-1;isWhitespace(C.codePointAt(m)??-1);)m+=1,k=m-1;if(void 0===C.codePointAt(m)){const t=[u.URL,C.slice(h,k+1),h,k,{value:n}];return p(new ParseErrorWithToken(e.UnexpectedEOFInURL,h,k,["4.3.6. Consume a url token","Consume as much whitespace as possible","Unexpected EOF"],t)),t}return 41===C.codePointAt(m)?(m+=1,k=m-1,[u.URL,C.slice(h,k+1),h,k,{value:n}]):(consumeBadURL(),[u.BadURL,C.slice(h,k+1),h,k,void 0])}const t=C.codePointAt(m);if(34===t||39===t||40===t||isNonPrintableCodePoint(t??-1)){consumeBadURL();const n=[u.BadURL,C.slice(h,k+1),h,k,void 0];return p(new ParseErrorWithToken(e.UnexpectedCharacterInURL,h,k,["4.3.6. Consume a url token","Unexpected U+0022 QUOTATION MARK (\"), U+0027 APOSTROPHE ('), U+0028 LEFT PARENTHESIS (() or non-printable code point"],n)),n}if(t===s){if(t===s&&!isNewLine(C.codePointAt(m+1)??-1)){m+=1,k=m-1,n+=String.fromCodePoint(consumeEscapedCodePoint());continue}consumeBadURL();const o=[u.BadURL,C.slice(h,k+1),h,k,void 0];return p(new ParseErrorWithToken(e.InvalidEscapeSequenceInURL,h,k,["4.3.6. Consume a url token","U+005C REVERSE SOLIDUS (\\)","The input stream does not start with a valid escape sequence"],o)),o}0===t||isSurrogate(t??-1)?(n+=String.fromCharCode(c),m+=1,k=m-1):(n+=String.fromCodePoint(t??c),m+=+((t??-1)>65535)+1,k=m-1)}}function consumeNumericToken(){let e;{const n=C.charCodeAt(m);n===o?e="-":n===i&&(e="+")}let n=a.Integer;const t=C.charCodeAt(m);t!==i&&t!==o||(m+=1);let r=C.charCodeAt(m);for(;r>=48&&r<=57;)m+=1,r=C.charCodeAt(m);if(46===C.charCodeAt(m)&&C.charCodeAt(m+1)>=48&&C.charCodeAt(m+1)<=57)for(m+=2,n=a.Number,r=C.charCodeAt(m);r>=48&&r<=57;)m+=1,r=C.charCodeAt(m);const c=C.charCodeAt(m);if(101===c||69===c){const e=C.charCodeAt(m+1);if(e>=48&&e<=57)for(m+=2,n=a.Number,r=C.charCodeAt(m);r>=48&&r<=57;)m+=1,r=C.charCodeAt(m);else if((e===o||e===i)&&C.charCodeAt(m+2)>=48&&C.charCodeAt(m+2)<=57)for(m+=3,n=a.Number,r=C.charCodeAt(m);r>=48&&r<=57;)m+=1,r=C.charCodeAt(m)}k=m-1;const s=parseFloat(C.slice(h,k+1));if(checkIfThreeCodePointsWouldStartAnIdentSequence()){const t=consumeIdentSequence();return[u.Dimension,C.slice(h,k+1),h,k,{value:s,signCharacter:e,type:n,unit:t}]}return 37===C.charCodeAt(m)?(m+=1,k=m-1,[u.Percentage,C.slice(h,k+1),h,k,{value:s,signCharacter:e}]):[u.Number,C.slice(h,k+1),h,k,{value:s,signCharacter:e,type:n}]}function consumeIdentLikeToken(){const e=consumeIdentSequence();if(40!==C.charCodeAt(m))return[u.Ident,P?e:C.slice(h,k+1),h,k,{value:e}];if(!(3!==e.length||117!==e.charCodeAt(0)&&85!==e.charCodeAt(0)||114!==e.charCodeAt(1)&&82!==e.charCodeAt(1)||108!==e.charCodeAt(2)&&76!==e.charCodeAt(2))){m+=1,k=m-1;let n=0;for(;isWhitespace(C.charCodeAt(m));)n+=1,m+=1,k=m-1;const t=C.charCodeAt(m);return 34===t||39===t?(n>0&&(m-=n,k=m-1),[u.Function,C.slice(h,k+1),h,k,{value:e}]):consumeUrlToken()}return m+=1,k=m-1,[u.Function,C.slice(h,k+1),h,k,{value:e}]}function consumeHashToken(){m+=1,k=m-1;const e=C.charCodeAt(m);if(e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===o||95===e||isNonASCII_IdentCodePoint(e)||e===s&&!isNewLine(C.codePointAt(m+1)??-1)){let e=d.Unrestricted;checkIfThreeCodePointsWouldStartAnIdentSequence()&&(e=d.ID);const n=consumeIdentSequence();return[u.Hash,C.slice(h,k+1),h,k,{value:n,type:e}]}return[u.Delim,"#",h,k,{value:"#"}]}function consumeAtKeywordToken(){if(m+=1,k=m-1,checkIfThreeCodePointsWouldStartAnIdentSequence()){const e=consumeIdentSequence();return[u.AtKeyword,C.slice(h,k+1),h,k,{value:e}]}return[u.Delim,"@",h,k,{value:"@"}]}function consumeInvalidEscapeToken(){m+=1,k=m-1;const n=[u.Delim,"\\",h,k,{value:"\\"}];return p(new ParseErrorWithToken(e.InvalidEscapeSequenceAfterBackslash,h,k,["4.3.1. Consume a token","U+005C REVERSE SOLIDUS (\\)","The input stream does not start with a valid escape sequence"],n)),n}function checkIfThreeCodePointsWouldStartAnIdentSequence(e){const n=void 0===e?C.charCodeAt(m):e;return n===o?C.charCodeAt(m+1)===o||(!!isIdentStartCodePoint(C.charCodeAt(m+1))||C.charCodeAt(m+1)===s&&!isNewLine(C.charCodeAt(m+2))):!!isIdentStartCodePoint(n)||C.charCodeAt(m)===s&&!isNewLine(C.charCodeAt(m+1))}function checkIfThreeCodePointsWouldStartANumber(e){return e===i||e===o?C.charCodeAt(m+1)>=48&&C.charCodeAt(m+1)<=57||46===C.charCodeAt(m+1)&&(C.charCodeAt(m+2)>=48&&C.charCodeAt(m+2)<=57):46===e?C.charCodeAt(m+1)>=48&&C.charCodeAt(m+1)<=57:e>=48&&e<=57}return{nextToken:function nextToken(){if(h=m,k=-1,m>=C.length)return[u.EOF,"",-1,-1,void 0];const e=C.charCodeAt(m);if(47===e&&42===C.charCodeAt(m+1))return consumeComment();if(f&&(117===e||85===e)&&C.codePointAt(m+1)===i&&(63===C.codePointAt(m+2)||isHexDigitCodePoint(C.codePointAt(m+2)??-1)))return consumeUnicodeRangeToken();if(isIdentStartCodePoint(e))return consumeIdentLikeToken();if((n=e)>=48&&n<=57)return consumeNumericToken();switch(e){case 44:return m+=1,k=m-1,[u.Comma,",",h,k,void 0];case 58:return m+=1,k=m-1,[u.Colon,":",h,k,void 0];case 59:return m+=1,k=m-1,[u.Semicolon,";",h,k,void 0];case 40:return m+=1,k=m-1,[u.OpenParen,"(",h,k,void 0];case 41:return m+=1,k=m-1,[u.CloseParen,")",h,k,void 0];case 91:return m+=1,k=m-1,[u.OpenSquare,"[",h,k,void 0];case 93:return m+=1,k=m-1,[u.CloseSquare,"]",h,k,void 0];case 123:return m+=1,k=m-1,[u.OpenCurly,"{",h,k,void 0];case 125:return m+=1,k=m-1,[u.CloseCurly,"}",h,k,void 0];case 39:case 34:return consumeStringToken();case 35:return consumeHashToken();case i:case 46:return checkIfThreeCodePointsWouldStartANumber(e)?consumeNumericToken():(m+=1,k=m-1,[u.Delim,C[h],h,k,{value:C[h]}]);case r:case t:case 12:case 9:case 32:{let e=C.charCodeAt(m);for(;32===e||e===r||9===e||e===t||12===e;)m+=1,e=C.charCodeAt(m);k=m-1}return[u.Whitespace,C.slice(h,k+1),h,k,void 0];case o:return checkIfThreeCodePointsWouldStartANumber(e)?consumeNumericToken():C.charCodeAt(m+1)===o&&62===C.charCodeAt(m+2)?(m+=3,k=m-1,[u.CDC,"--\x3e",h,k,void 0]):checkIfThreeCodePointsWouldStartAnIdentSequence(e)?consumeIdentLikeToken():(m+=1,k=m-1,[u.Delim,"-",h,k,{value:"-"}]);case 60:return 33===C.charCodeAt(m+1)&&C.charCodeAt(m+2)===o&&C.charCodeAt(m+3)===o?(m+=4,k=m-1,[u.CDO,"\x3c!--",h,k,void 0]):(m+=1,k=m-1,[u.Delim,"<",h,k,{value:"<"}]);case 64:return consumeAtKeywordToken();case s:return e!==s||isNewLine(C.charCodeAt(m+1))?consumeInvalidEscapeToken():consumeIdentLikeToken();default:return m+=1,k=m-1,[u.Delim,C[h],h,k,{value:C[h]}]}var n},endOfFile:function endOfFile(){return m>=C.length}}}function noop(){}function mutateIdent(e,n){const t=[];for(const e of n)t.push(e.codePointAt(0));const o=String.fromCodePoint(...serializeIdent(t));e[1]=o,e[4].value=n}function mutateUnit(e,n){const t=[];for(const e of n)t.push(e.codePointAt(0));const o=serializeIdent(t);101===o[0]&&insertEscapedCodePoint(o,0,o[0]);const r=String.fromCodePoint(...o),i="+"===e[4].signCharacter?e[4].signCharacter:"",c=e[4].value.toString();e[1]=`${i}${c}${r}`,e[4].unit=n}function serializeIdent(e){let n;if(0===e[0])e.splice(0,1,c),n=1;else if(e[0]===o&&e[1]===o)n=2;else if(e[0]===o&&e[1])n=2,isIdentStartCodePoint(e[1])||(n+=insertEscapedCodePoint(e,1,e[1]));else{if(e[0]===o&&!e[1])return[92,e[0]];isIdentStartCodePoint(e[0])?n=1:(n=1,n+=insertEscapedCodePoint(e,0,e[0]))}for(let t=n;t