function nse(e){console.error(" Parsing failed: "+e)}function parseNovaSheets(){let sheets,inline;try{sheets=document.querySelectorAll('link[rel="novasheet" i], link[rel="novasheets" i]'),inline=document.querySelectorAll('[type="novasheet" i], [type="novasheets" i]')}catch(e){sheets=document.querySelectorAll('link[rel="novasheet"], link[rel="novasheets"]'),inline=document.querySelectorAll('[type="novasheet"], [type="novasheets"]')}let fn={full:[],rel:[]},srcs=[];for(let e of sheets)fn.full.push(e.href),fn.rel.push(e.getAttribute("href"));let sc=[];for(let e in fn.full)try{let t=new XMLHttpRequest;t.open("GET",fn.full[e],!1),t.send();let s=t.responseText;sc.push(s.toString()),srcs.push(fn.rel[e])}catch(t){nse(`File "${fn.rel[e]}" cannot be accessed.`)}for(let e of inline)sc.push(e.innerHTML),srcs.push("inline");for(let s in sc){let lines=sc[s].split("\n"),cv=[],lv=[],styles={},MAX_RECURSION=50,MAX_ARGUMENTS=10;for(let e in lines)if(lines[e]=lines[e].replace(/[\r\n]/g,"").replace(/^(.*?)\s?\/\/.+$/,"$1"),lines[e].match(/\s*---\s*/))lines[e]="---";else if(lines[e].match(/^\s*@var\s/)){let t=lines[e].replace(/^\s*@var\s/,"");cv.push({line:Number(e),contents:t,name:t.split("|")[0].trim(),sv:t.split("|").splice(1)})}else lines[e].match(/^\s*@const\s*MAX_RECURSION\s/)?MAX_RECURSION=Number(lines[e].split("MAX_RECURSION")[1]):lines[e].match(/^\s*@const\s*MAX_ARGUMENTS\s/)&&(MAX_ARGUMENTS=Number(lines[e].split("MAX_ARGUMENTS")[1]));window.randomHash=window.randomHash||Math.random().toString().hash(6);const vdl=lines.indexOf("---"),csc=lines.slice(vdl+1).join("\n");let cso=csc,loop=0;for(let e in cv){let t=cv[e].line+1,s=cv[e].name.trim(),n=cv[e+1]&&cv[e+1].line||vdl;for(styles[s]="";t-1||loop<2)&&loop++(Array.isArray(t)||(t=Array(s||MAX_ARGUMENTS).fill(t||"[^|)]*?")),RegExp(`\\$\\(\\s*${e}\\s*(?:\\|(\\s*${t.join("))?\\s*(?:\\|(\\s*")}))?\\s*\\)`,"g")),ga=(e,t)=>{let s=e.replace(/\$\((.*)\)/,"$1").split("|");return t?s[t]&&s[t].trim():s.join("|").replace(/\s*\|\s*/g,"|").split("|").splice(1)};cso=cso.replace(nsf("@if"),args=>{let a=ga(args,1),b=ga(args,2),c=ga(args,3),test=a.replace(/(?:'(.+?)'|"(.+?)")+/,"$1$2").replace(/>/g,">").replace(/</g,"<").replace(/(?!=)(!?)=(==)?(?!=)/g,"$1$2==");return test.match(/(<|<=|>|>=|==|!=)/)&&(test=eval(test)),test=!["false","undefined","null","NaN",""].includes(test),test?b:c});const nmr="(?:0x|0b|0o)?(?:[0-9]*[.])?[0-9]+",lur="(cm|mm|ft|in)",mr=e=>"("+nmr+")\\s*"+e.escapeRegex()+"\\s*("+nmr+")",mrb=e=>"\\(\\s*"+mr(e)+"\\s*\\)",pm=(ops,b)=>{for(let op of ops){Array.isArray(op)||(op=[op,op]);let regex=b?mrb(op[0]):mr(op[0]),nums=cso.match(RegExp(regex));if(!nums)continue;let result=eval(`Number(${nums[1]}) ${op[1]} Number(${nums[2]})`);nums&&(cso=cso.replace(RegExp(regex),result))}};for(let e=0;e<5;e++)cso=cso.replace(/(?:\+|--)+([.0-9]+)/,"+$1").replace(/(?:\+-|-\+)+(?:\++)?([.0-9]+)/,"-$1").replace(RegExp("("+nmr+")deg","g"),e=>Number(e.replace("deg",""))*Math.PI/180).replace(RegExp("("+nmr+")grad","g"),e=>Number(e.replace("grad",""))*Math.PI/200).replace(RegExp(nmr+lur),e=>{switch((e=e.split(RegExp(lur)).splice(0,2))[1]){case"cm":return e[0]/100+"m";case"mm":return e[0]/1e3+"m";case"ft":return.3048*e[0]+"m";case"in":return.0254*e[0]+"m"}}).replace(RegExp(nmr+"m\\s*(\\*\\*|^|/|\\*|\\+|-)\\s*"+nmr+"(?=m[^m])"),e=>e.replace(/m/g,"")),pm(["**",["^","**"],"/","*","+","-",["--","- -"]],!0),pm(["**",["^","**"],"/","*","+","-",["--","- -"]],!1);cso=cso.replace(nsf("@mod",nm,2),e=>ga(e,1)%ga(e,2)).replace(nsf("@min",nm),e=>Math.min(...ga(e))).replace(nsf("@max",nm),e=>Math.max(...ga(e))).replace(nsf("@clamp",nm,3),e=>{let t=ga(e,1),s=ga(e,2),n=ga(e,3);return n=n?n:t}).replace(nsf("@sin",nm,1),e=>Math.sin(ga(e,1))).replace(nsf("@asin",nm,1),e=>Math.asin(ga(e,1))).replace(nsf("@cos",nm,1),e=>Math.cos(ga(e,1))).replace(nsf("@acos",nm,1),e=>Math.acos(ga(e,1))).replace(nsf("@tan",nm,1),e=>Math.tan(ga(e,1))).replace(nsf("@atan",nm,1),e=>Math.atan(ga(e,1))).replace(nsf("@abs",nm,1),e=>Math.abs(ga(e,1))).replace(nsf("@floor",nm,1),e=>Math.floor(ga(e,1))).replace(nsf("@ceil",nm,1),e=>Math.ciel(ga(e,1))).replace(nsf("@percent",nm,1),e=>100*Number(ga(e,1))+"%").replace(nsf("@round",nm,2),e=>{let t=Number(ga(e,1))+Number.EPSILON,s=ga(e,2)||0;return Math.round(t*10**s)/10**s}).replace(nsf("@log",nm,1),e=>Math.log(ga(e,1))).replace(nsf("@root",nm,2),e=>Math.pow(ga(e,2),1/ga(e,1))).replace(/\$\(@pi\)/g,Math.PI).replace(/\$\(@e\)/g,Math.E),cso=cso.replace(nsf("@encode"),e=>encodeURIComponent(ga(e,1))).replace(nsf("@replace"),e=>ga(e,1).replace(ga(e,2),ga(e,3))).replace(nsf("@length"),e=>ga(e,1).length),cso=cso.replace(nsf("@color"),e=>{let t=ga(e,1),s=ga(e,2)||0,n=ga(e,3)||0,r=ga(e,4)||0,l=ga(e,5)||0;return"hash"===t|"#"===t?s?((s=Math.abs(Math.round(s.replace("#",""))).toString()).length<3&&(s=s.padStart(3,0)),5===s.length&&(s=s.padStart(6,0)),7===s.length&&(s=s.padStart(8,0)),"#"+s):"#000":["rgb","hsl"].includes(t)?`${t}(${s}, ${n}, ${r})`:["rgba","hsla"].includes(t)?`${t}(${s}, ${n}, ${r}, ${l})`:void 0}).replace(nsf("@colorpart"),e=>{let t=ga(e,1),s=ga(e,2)||0,n=[];const r=(e,t)=>Number("0x"+e.substr(t,2)).toString();if(s.startsWith("#")){let e=s.replace("#","");3===e.length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]+"00"),4===e.length&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]+e[3]+e[3]),6===e.length&&(e=e.repeat(2)+"00"),n=[r(e,0),r(e,2),r(e,4),r(e,6)]}else n=s.replace(/^\s*...a?/,"").split(",");return s.startsWith("#")||s.startsWith("rgb")?["red","r"].includes(t)?n[0]:["green","g"].includes(t)?n[1]:["blue","b"].includes(t)?n[2]:["alpha","a"].includes(t)?n[3]:(nse(`Unknown part identifier "${t}" in function "@colorpart" of color type "rgb"/"rgba"/"#".`),s):s.startsWith("hsl")?["hue","h"].includes(t)?n[0]:["saturation","s"].includes(t)?n[1]:["lightness","l"].includes(t)?n[2]:["alpha","a"].includes(t)?n[3]:(nse(`Unknown part identifier "${t}" in function "@colorpart" of color type "hsl"/"hsla".`),s):(nse(`Unknown part identifier "${t}" in function "@colorpart" of unknown color type.`),s)})}if(cso=cso.replace(/;\s*;/g,";").replace(/\s+/g," ").replace(/} ?/g,"}\n"),document.querySelectorAll(`[data-hash="${cso.hash()}"]`).length)break;let se=document.createElement("style");se.innerHTML="\n"+cso+"\n",se.dataset.hash=cso.hash(),se.dataset.source=srcs[s],(document.head||document.body).appendChild(se)}}String.prototype.hash=function(e){let t=0;for(let e=0;e