!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).CSSDoodle=t()}(this,(function(){"use strict";function e(e){let t=0,r=1,n=1;return{curr:(r=0)=>e[t+r],end:()=>e.length<=t,info:()=>({index:t,col:r,line:n}),index:e=>void 0===e?t:t=e,next(){let s=e[t++];return"\n"==s?(n++,r=0):r++,s}}}function t(t){t=t.trim();let r=[];if(!/^var\(/.test(t))return r;let n=e(t);try{r=function(e){let t="",r=[],n=[],s={};for(;!e.end();){let i=e.curr();if("("==i)r.push(i),t="";else if(")"==i||","==i){if(/^\-\-.+/.test(t)&&(s.name?(s.alternative||(s.alternative=[]),s.alternative.push({name:t})):s.name=t),")"==i){if("("!=r[r.length-1])throw new Error("bad match");r.pop()}","==i&&(r.length||(n.push(s),s={})),t=""}else/\s/.test(i)||(t+=i);e.next()}return r.length?[]:(s.name&&n.push(s),n)}(n)}catch(e){console.error(e&&e.message||"Bad variables.")}return r}function r(e){return Array.isArray(e)?e:[e]}function n(e,t="\n"){return(e||[]).join(t)}function s(e,t=1){return e[e.length-t]}function i(e){return e[0]}function l(e,t){return Array.prototype.flatMap?e.flatMap(t):e.reduce((e,r)=>e.concat(t(r)),[])}const u={func:(e="")=>({type:"func",name:e,arguments:[]}),argument:()=>({type:"argument",value:[]}),text:(e="")=>({type:"text",value:e}),pseudo:(e="")=>({type:"pseudo",selector:e,styles:[]}),cond:(e="")=>({type:"cond",name:e,styles:[],arguments:[]}),rule:(e="")=>({type:"rule",property:e,value:[]}),keyframes:(e="")=>({type:"keyframes",name:e,steps:[]}),step:(e="")=>({type:"step",name:e,styles:[]})},o={white_space:e=>/[\s\n\t]/.test(e),line_break:e=>/\n/.test(e),number:e=>!isNaN(e),pair:e=>['"',"(",")","'"].includes(e),pair_of:(e,t)=>({'"':'"',"'":"'","(":")"}[e]==t)},a={"π":Math.PI,"∏":Math.PI};function c(e,{col:t,line:r}){console.error(`(at line ${r}, column ${t}) ${e}`)}function p(e){return function(t,r){let n=t.index(),s="";for(;!t.end();){let r=t.next();if(e(r))break;s+=r}return r&&t.index(n),s}}function h(e,t){return p(e=>/[^\w@]/.test(e))(e,t)}function f(e){return p(e=>/[\s\{]/.test(e))(e)}function d(e,t){return p(e=>o.line_break(e)||"{"==e)(e,t)}function g(e,t){let r,n=u.step();for(;!e.end()&&"}"!=(r=e.curr());)if(o.white_space(r))e.next();else{if(n.name.length){if(n.styles.push(S(e,t)),"}"==e.curr())break}else n.name=z(e);e.next()}return n}function m(e,t){const r=[];let n;for(;!e.end()&&"}"!=(n=e.curr());)o.white_space(n)||r.push(g(e,t)),e.next();return r}function y(e,t){let r,n=u.keyframes();for(;!e.end()&&"}"!=(r=e.curr());)if(n.name.length){if("{"==r){e.next(),n.steps=m(e,t);break}e.next()}else if(h(e),n.name=f(e),!n.name.length){c("missing keyframes name",e.info());break}return n}function v(e,t={}){for(e.next();!e.end();){let r=e.curr();if(t.inline){if("\n"==r)break}else if("*"==(r=e.curr())&&"/"==e.curr(1))break;e.next()}t.inline||(e.next(),e.next())}function _(e){let t,r="";for(;!e.end()&&":"!=(t=e.curr());)o.white_space(t)||(r+=t),e.next();return r}function x(e,t){let r,n=[],i=[],l=[],c="";for(;!e.end();){if(r=e.curr(),/[\('"`]/.test(r)&&"\\"!==e.curr(-1))l.length&&"("!=r&&r===s(l)?l.pop():l.push(r),c+=r;else if("@"==r)i.length||(c=c.trimLeft()),c.length&&(i.push(u.text(c)),c=""),i.push($(e));else if(/[,)]/.test(r))if(l.length)")"==r&&l.pop(),c+=r;else{if(c.length&&(i.length?i.push(u.text(c)):i.push(u.text((h=c).trim().length?o.number(+h)?+h:h.trim():h)),c.startsWith("±"))){let e=c.substr(1),t=(p=i,JSON.parse(JSON.stringify(p)));s(t).value="-"+e,n.push(b(t)),s(i).value=e}if(n.push(b(i)),[i,c]=[[],""],")"==r)break}else a[r]&&(r=a[r]),c+=r;if(t&&")"==e.curr()&&!l.length){i.length&&n.push(b(i));break}e.next()}var p,h;return n}function b(e){let t=e.map(e=>{if("text"==e.type&&"string"==typeof e.value){let t=String(e.value);t.includes("`")&&(e.value=t=t.replace(/`/g,'"')),e.value=t.replace(/\n+|\s+/g," ")}return e}),r=i(t)||{},n=s(t)||{};if("text"==r.type&&"text"==n.type){let e=i(r.value),l=s(n.value);"string"==typeof r.value&&"string"==typeof n.value&&o.pair_of(e,l)&&(r.value=r.value.slice(1),n.value=n.value.slice(0,n.value.length-1),t.cluster=!0)}return t}function $(e){let t,r=u.func(),n="@",s=!1;for(e.next();!e.end();){t=e.curr();let i="."==t&&"@"==e.curr(1),l=e.curr(1);if("("==t||i){s=!0,e.next(),r.arguments=x(e,i);break}if(!s&&"("!==l&&!/[0-9a-zA-Z_\-.]/.test(l)){n+=t;break}n+=t,e.next()}let{fname:i,extra:l}=function(e){let t="",r="";if(/\D$/.test(e)||Math[e.substr(1)])return{fname:e,extra:r};for(let n=e.length-1;n>=0;n--){let s=e[n];if(!/[\d.]/.test(s)){t=e.substring(0,n+1);break}r=s+r}return{fname:t,extra:r}}(n);return r.name=i,l.length&&r.arguments.unshift([{type:"text",value:l}]),r.position=e.info().index,r}function k(e){let t,r=u.text(),n=0,s=!0;const i=[],l=[];for(i[n]=[];!e.end();)if(t=e.curr(),s&&o.white_space(t))e.next();else{if(s=!1,"\n"!=t||o.white_space(e.curr(-1)))if(","!=t||l.length){if(/[;}]/.test(t)){r.value.length&&(i[n].push(r),r=u.text());break}"@"==t?(r.value.length&&(i[n].push(r),r=u.text()),i[n].push($(e))):o.white_space(t)&&o.white_space(e.curr(-1))||("("==t&&l.push(t),")"==t&&l.pop(),a[t]&&(t=a[t]),r.value+=t)}else r.value.length&&(i[n].push(r),r=u.text()),i[++n]=[],s=!0;else r.value+=" ";e.next()}return r.value.length&&i[n].push(r),i}function z(e){let t,r="";for(;!e.end()&&"{"!=(t=e.curr());)o.white_space(t)||(r+=t),e.next();return r}function w(e){let t,r={name:"",arguments:[]};for(;!e.end();){if("("==(t=e.curr()))e.next(),r.arguments=x(e);else{if(/[){]/.test(t))break;o.white_space(t)||(r.name+=t)}e.next()}return r}function j(e,t){let r,n=u.pseudo();for(;!e.end()&&"}"!=(r=e.curr());)if(o.white_space(r))e.next();else{if(n.selector){let r=S(e,t);if("@use"==r.property?n.styles=n.styles.concat(r.value):n.styles.push(r),"}"==e.curr())break}else n.selector=z(e);e.next()}return n}function S(e,t){let r,n=u.rule();for(;!e.end()&&";"!=(r=e.curr());){if(n.property.length){n.value=k(e);break}if(n.property=_(e),"@use"==n.property){n.value=E(e,t);break}e.next()}return n}function M(e,t){let r,n=u.cond();for(;!e.end()&&"}"!=(r=e.curr());){if(n.name.length)if(":"==r){let t=j(e);t.selector&&n.styles.push(t)}else if("@"!=r||d(e,!0).includes(":")){if(!o.white_space(r)){let r=S(e,t);if(r.property&&n.styles.push(r),"}"==e.curr())break}}else n.styles.push(M(e));else Object.assign(n,w(e));e.next()}return n}function A(e,t){let r="";return e&&e.get_custom_property_value&&(r=e.get_custom_property_value(t)),r}function E(e,r){return e.next(),(k(e)||[]).reduce((e,n)=>{!function e(r,n){r.forEach&&r.forEach(r=>{if("text"==r.type&&r.value){let e=t(r.value);r.value=e.reduce((e,t)=>{let r,s="",i="";s=A(n,t.name),!s&&t.alternative&&t.alternative.every(e=>{if(i=A(n,e.name),i)return s=i,!1});try{r=C(s,n)}catch(e){}return r&&e.push.apply(e,r),e},[])}"func"==r.type&&r.arguments&&r.arguments.forEach(t=>{e(t,n)})})}(n,r);let[s]=n;return s.value&&s.value.length&&e.push(...s.value),e},[])}function C(t,r){const n=e(t),s=[];for(;!n.end();){let e=n.curr();if(o.white_space(e))n.next();else{if("/"==e&&"*"==n.curr(1))v(n);else if("/"==e&&"/"==n.curr(1))v(n,{inline:!0});else if(":"==e){let e=j(n,r);e.selector&&s.push(e)}else if("@"==e&&"@keyframes"===h(n,!0)){let e=y(n,r);s.push(e)}else if("@"!=e||d(n,!0).includes(":")){if(!o.white_space(e)){let e=S(n,r);e.property&&s.push(e)}}else{let e=M(n,r);e.name.length&&s.push(e)}n.next()}}return s}function O(e,t,r){return Math.max(t,Math.min(r,e))}function L(e,t,r){let n=0,s=e,i=e=>e>0&&e<1?.1:1,l=arguments.length;1==l&&([e,t]=[i(e),e]),l<3&&(r=i(e));let u=[];for(;(r>=0&&e<=t||r<0&&e>t)&&(u.push(e),e+=r,!(n++>=1e3)););return u.length||u.push(s),u}function T(e){return/^[a-zA-Z]$/.test(e)}function N(e){let t=()=>e;return t.lazy=!0,t}function H(e,t,r){return"cell-"+e+"-"+t+"-"+r}function W(e){for(;e&&e.value;)return W(e.value);return e||""}const[I,D,P]=[1,64,4096];function R(e){let[t,r,n]=(e+"").replace(/\s+/g,"").replace(/[,,xX]+/g,"x").split("x").map(Number);const s=1==t||1==r?P:D,i=1==t&&1==r?P:I,l={x:O(t||I,1,s),y:O(r||t||I,1,s),z:O(n||I,1,i)};return Object.assign({},l,{count:l.x*l.y*l.z})}function q(e,t){if(t){let r=new Blob([e],{type:"image/svg+xml"});return`url(${URL.createObjectURL(r)}#${t})`}return`url("data:image/svg+xml;utf8,${encodeURIComponent(e)}")`}function U(e){const t='xmlns="http://www.w3.org/2000/svg"';return e.includes("`),e.includes("xmlns")||(e=e.replace(/