=15;P--){S.length=0;for(let{hct:f}of g)if(S.find(C=>vt(f.hue,C.hue)=n)break;if(S.length>=n)break}let y=[];S.length===0&&y.push(a);for(let P of S)y.push(P.toInt());return y}};Q.TARGET_CHROMA=48;Q.WEIGHT_PROPORTION=.7;Q.WEIGHT_CHROMA_ABOVE=.3;Q.WEIGHT_CHROMA_BELOW=.1;Q.CUTOFF_CHROMA=5;Q.CUTOFF_EXCITED_PROPORTION=.01;function st(r){let t=dt(r),e=gt(r),n=yt(r),a=[t.toString(16),e.toString(16),n.toString(16)];for(let[o,i]of a.entries())i.length===1&&(a[o]="0"+i);return"#"+a.join("")}function zt(r){r=r.replace("#","");let t=r.length===3,e=r.length===6,n=r.length===8;if(!t&&!e&&!n)throw new Error("unexpected hex "+r);let a=0,o=0,i=0;return t?(a=tt(r.slice(0,1).repeat(2)),o=tt(r.slice(1,2).repeat(2)),i=tt(r.slice(2,3).repeat(2))):e?(a=tt(r.slice(0,2)),o=tt(r.slice(2,4)),i=tt(r.slice(4,6))):n&&(a=tt(r.slice(2,4)),o=tt(r.slice(4,6)),i=tt(r.slice(6,8))),(255<<24|(a&255)<<16|(o&255)<<8|i&255)>>>0}function tt(r){return parseInt(r,16)}function fe(r,t){let e=t.value,n=e,a=r;t.blend&&(e=Ft.harmonize(n,a));let i=mt.of(e).a1;return{color:t,value:e,light:{color:i.tone(40),onColor:i.tone(100),colorContainer:i.tone(90),onColorContainer:i.tone(10)},dark:{color:i.tone(80),onColor:i.tone(20),colorContainer:i.tone(30),onColorContainer:i.tone(90)}}}var pe={"tonal-spot":Ut,vibrant:_t,expressive:Rt,neutral:Nt,fidelity:Lt,content:Bt,monochrome:Vt,rainbow:Ht,"fruit-salad":Ot},Be=/_palette_key_color$/;function At(r){process.stderr.write(`${r}
-`),process.exit(1)}var Y;try{Y=JSON.parse(process.argv[2]??"")}catch{At('Expected one JSON argument: {"seed": "#rrggbb", "variant": "tonal-spot", ...}')}var de=/^#[0-9a-f]{6}$/i,ge=pe[Y.variant];de.test(Y.seed??"")||At(`The seed must be a #rrggbb colour, "${Y.seed}" given.`);ge||At(`Unknown variant "${Y.variant}". Use one of: ${Object.keys(pe).join(", ")}.`);for(let r of["success","warning","info"])de.test(Y[r]??"")||At(`The ${r} colour must be a #rrggbb colour, "${Y[r]}" given.`);var Gt=Number(Y.contrast??0);Gt>=-1&&Gt<=1||At(`The contrast level must be between -1 and 1, "${Y.contrast}" given.`);var Re=x.fromInt(zt(Y.seed)),Le=new u;function ye(r){let t=new ge(Re,r,Gt,"2025"),e={};for(let n of Le.allColors)n&&!Be.test(n.name)&&(e[n.name.replaceAll("_","-")]=st(n.getArgb(t)));return{scheme:t,out:e}}var xt=ye(!1),Yt=ye(!0);for(let r of["success","warning","info"]){let t=fe(zt(Y.seed),{name:r,value:zt(Y[r]),blend:!1});for(let[e,n]of[["light",xt.out],["dark",Yt.out]])n[r]=st(t[e].color),n[`on-${r}`]=st(t[e].onColor),n[`${r}-container`]=st(t[e].colorContainer),n[`on-${r}-container`]=st(t[e].onColorContainer)}for(let r of["error","success","warning","info"])xt.out[`inverse-${r}`]=Yt.out[r],Yt.out[`inverse-${r}`]=xt.out[r];process.stdout.write(JSON.stringify({seed:Y.seed.toLowerCase(),variant:Y.variant,spec:xt.scheme.specVersion,contrast:Gt,light:xt.out,dark:Yt.out}));
+function z(r){return r<0?-1:r===0?0:1}function at(r,t,e){return(1-e)*r+e*t}function oe(r,t,e){return et?t:e}function H(r,t,e){return et?t:e}function ut(r){return r=r%360,r<0&&(r=r+360),r}function U(r){return r=r%360,r<0&&(r=r+360),r}function ie(r,t){return U(t-r)<=180?1:-1}function vt(r,t){return 180-Math.abs(Math.abs(r-t)-180)}function pt(r,t){let e=r[0]*t[0][0]+r[1]*t[0][1]+r[2]*t[0][2],n=r[0]*t[1][0]+r[1]*t[1][1]+r[2]*t[1][2],a=r[0]*t[2][0]+r[1]*t[2][1]+r[2]*t[2][2];return[e,n,a]}var se=[[.41233895,.35762064,.18051042],[.2126,.7152,.0722],[.01932141,.11916382,.95034478]],De=[[3.2413774792388685,-1.5376652402851851,-.49885366846268053],[-.9691452513005321,1.8758853451067872,.04156585616912061],[.05562093689691305,-.20395524564742123,1.0571799111220335]],ce=[95.047,100,108.883];function wt(r,t,e){return(255<<24|(r&255)<<16|(t&255)<<8|e&255)>>>0}function jt(r){let t=ot(r[0]),e=ot(r[1]),n=ot(r[2]);return wt(t,e,n)}function gt(r){return r>>16&255}function yt(r){return r>>8&255}function Pt(r){return r&255}function ue(r,t,e){let n=De,a=n[0][0]*r+n[0][1]*t+n[0][2]*e,o=n[1][0]*r+n[1][1]*t+n[1][2]*e,i=n[2][0]*r+n[2][1]*t+n[2][2]*e,l=ot(a),m=ot(o),d=ot(i);return wt(l,m,d)}function ke(r){let t=J(gt(r)),e=J(yt(r)),n=J(Pt(r));return pt([t,e,n],se)}function Wt(r){let t=J(gt(r)),e=J(yt(r)),n=J(Pt(r)),a=se,o=a[0][0]*t+a[0][1]*e+a[0][2]*n,i=a[1][0]*t+a[1][1]*e+a[1][2]*n,l=a[2][0]*t+a[2][1]*e+a[2][2]*n,m=ce,d=o/m[0],g=i/m[1],S=l/m[2],y=dt(d),P=dt(g),f=dt(S),h=116*P-16,C=500*(y-P),v=200*(P-f);return[h,C,v]}function le(r){let t=q(r),e=ot(t);return wt(e,e,e)}function Ct(r){let t=ke(r)[1];return 116*dt(t/100)-16}function q(r){return 100*be((r+16)/116)}function St(r){return dt(r/100)*116-16}function J(r){let t=r/255;return t<=.040449936?t/12.92*100:Math.pow((t+.055)/1.055,2.4)*100}function ot(r){let t=r/100,e=0;return t<=.0031308?e=t*12.92:e=1.055*Math.pow(t,1/2.4)-.055,oe(0,255,Math.round(e*255))}function he(){return ce}function dt(r){let t=.008856451679035631,e=24389/27;return r>t?Math.pow(r,1/3):(e*r+16)/116}function be(r){let t=.008856451679035631,e=24389/27,n=r*r*r;return n>t?n:(116*r-16)/e}var Y=class r{static make(t=he(),e=200/Math.PI*q(50)/100,n=50,a=2,o=!1){let i=t,l=i[0]*.401288+i[1]*.650173+i[2]*-.051461,m=i[0]*-.250268+i[1]*1.204414+i[2]*.045854,d=i[0]*-.002079+i[1]*.048952+i[2]*.953127,g=.8+a/10,S=g>=.9?at(.59,.69,(g-.9)*10):at(.525,.59,(g-.8)*10),y=o?1:g*(1-1/3.6*Math.exp((-e-42)/92));y=y>1?1:y<0?0:y;let P=g,f=[y*(100/l)+1-y,y*(100/m)+1-y,y*(100/d)+1-y],h=1/(5*e+1),C=h*h*h*h,v=1-C,F=C*e+.1*v*v*Math.cbrt(5*e),I=q(n)/t[1],B=1.48+Math.sqrt(I),O=.725/Math.pow(I,.2),R=O,E=[Math.pow(F*f[0]*l/100,.42),Math.pow(F*f[1]*m/100,.42),Math.pow(F*f[2]*d/100,.42)],N=[400*E[0]/(E[0]+27.13),400*E[1]/(E[1]+27.13),400*E[2]/(E[2]+27.13)],_=(2*N[0]+N[1]+.05*N[2])*O;return new r(I,_,O,R,S,P,f,F,Math.pow(F,.25),B)}constructor(t,e,n,a,o,i,l,m,d,g){this.n=t,this.aw=e,this.nbb=n,this.ncb=a,this.c=o,this.nc=i,this.rgbD=l,this.fl=m,this.fLRoot=d,this.z=g}};Y.DEFAULT=Y.make();var G=class r{constructor(t,e,n,a,o,i,l,m,d){this.hue=t,this.chroma=e,this.j=n,this.q=a,this.m=o,this.s=i,this.jstar=l,this.astar=m,this.bstar=d}distance(t){let e=this.jstar-t.jstar,n=this.astar-t.astar,a=this.bstar-t.bstar,o=Math.sqrt(e*e+n*n+a*a);return 1.41*Math.pow(o,.63)}static fromInt(t){return r.fromIntInViewingConditions(t,Y.DEFAULT)}static fromIntInViewingConditions(t,e){let n=(t&16711680)>>16,a=(t&65280)>>8,o=t&255,i=J(n),l=J(a),m=J(o),d=.41233895*i+.35762064*l+.18051042*m,g=.2126*i+.7152*l+.0722*m,S=.01932141*i+.11916382*l+.95034478*m,y=.401288*d+.650173*g-.051461*S,P=-.250268*d+1.204414*g+.045854*S,f=-.002079*d+.048952*g+.953127*S,h=e.rgbD[0]*y,C=e.rgbD[1]*P,v=e.rgbD[2]*f,F=Math.pow(e.fl*Math.abs(h)/100,.42),I=Math.pow(e.fl*Math.abs(C)/100,.42),B=Math.pow(e.fl*Math.abs(v)/100,.42),O=z(h)*400*F/(F+27.13),R=z(C)*400*I/(I+27.13),E=z(v)*400*B/(B+27.13),N=(11*O+-12*R+E)/11,_=(O+R-2*E)/9,L=(20*O+20*R+21*E)/20,Z=(40*O+20*R+E)/20,ct=Math.atan2(_,N)*180/Math.PI,X=U(ct),Tt=X*Math.PI/180,Dt=Z*e.nbb,rt=100*Math.pow(Dt/e.aw,e.c*e.z),kt=4/e.c*Math.sqrt(rt/100)*(e.aw+4)*e.fLRoot,Yt=X<20.14?X+360:X,Kt=.25*(Math.cos(Yt*Math.PI/180+2)+3.8),qt=5e4/13*Kt*e.nc*e.ncb*Math.sqrt(N*N+_*_)/(L+.305),bt=Math.pow(qt,.9)*Math.pow(1.64-Math.pow(.29,e.n),.73),re=bt*Math.sqrt(rt/100),ne=re*e.fLRoot,Se=50*Math.sqrt(bt*e.c/(e.aw+4)),xe=(1+100*.007)*rt/(1+.007*rt),ae=1/.0228*Math.log(1+.0228*ne),Ae=ae*Math.cos(Tt),Te=ae*Math.sin(Tt);return new r(X,re,rt,kt,ne,Se,xe,Ae,Te)}static fromJch(t,e,n){return r.fromJchInViewingConditions(t,e,n,Y.DEFAULT)}static fromJchInViewingConditions(t,e,n,a){let o=4/a.c*Math.sqrt(t/100)*(a.aw+4)*a.fLRoot,i=e*a.fLRoot,l=e/Math.sqrt(t/100),m=50*Math.sqrt(l*a.c/(a.aw+4)),d=n*Math.PI/180,g=(1+100*.007)*t/(1+.007*t),S=1/.0228*Math.log(1+.0228*i),y=S*Math.cos(d),P=S*Math.sin(d);return new r(n,e,t,o,i,m,g,y,P)}static fromUcs(t,e,n){return r.fromUcsInViewingConditions(t,e,n,Y.DEFAULT)}static fromUcsInViewingConditions(t,e,n,a){let o=e,i=n,l=Math.sqrt(o*o+i*i),d=(Math.exp(l*.0228)-1)/.0228/a.fLRoot,g=Math.atan2(i,o)*(180/Math.PI);g<0&&(g+=360);let S=t/(1-(t-100)*.007);return r.fromJchInViewingConditions(S,d,g,a)}toInt(){return this.viewed(Y.DEFAULT)}viewed(t){let e=this.chroma===0||this.j===0?0:this.chroma/Math.sqrt(this.j/100),n=Math.pow(e/Math.pow(1.64-Math.pow(.29,t.n),.73),1/.9),a=this.hue*Math.PI/180,o=.25*(Math.cos(a+2)+3.8),i=t.aw*Math.pow(this.j/100,1/t.c/t.z),l=o*(5e4/13)*t.nc*t.ncb,m=i/t.nbb,d=Math.sin(a),g=Math.cos(a),S=23*(m+.305)*n/(23*l+11*n*g+108*n*d),y=S*g,P=S*d,f=(460*m+451*y+288*P)/1403,h=(460*m-891*y-261*P)/1403,C=(460*m-220*y-6300*P)/1403,v=Math.max(0,27.13*Math.abs(f)/(400-Math.abs(f))),F=z(f)*(100/t.fl)*Math.pow(v,1/.42),I=Math.max(0,27.13*Math.abs(h)/(400-Math.abs(h))),B=z(h)*(100/t.fl)*Math.pow(I,1/.42),O=Math.max(0,27.13*Math.abs(C)/(400-Math.abs(C))),R=z(C)*(100/t.fl)*Math.pow(O,1/.42),E=F/t.rgbD[0],N=B/t.rgbD[1],_=R/t.rgbD[2],L=1.86206786*E-1.01125463*N+.14918677*_,Z=.38752654*E+.62144744*N-.00897398*_,et=-.0158415*E-.03412294*N+1.04996444*_;return ue(L,Z,et)}static fromXyzInViewingConditions(t,e,n,a){let o=.401288*t+.650173*e-.051461*n,i=-.250268*t+1.204414*e+.045854*n,l=-.002079*t+.048952*e+.953127*n,m=a.rgbD[0]*o,d=a.rgbD[1]*i,g=a.rgbD[2]*l,S=Math.pow(a.fl*Math.abs(m)/100,.42),y=Math.pow(a.fl*Math.abs(d)/100,.42),P=Math.pow(a.fl*Math.abs(g)/100,.42),f=z(m)*400*S/(S+27.13),h=z(d)*400*y/(y+27.13),C=z(g)*400*P/(P+27.13),v=(11*f+-12*h+C)/11,F=(f+h-2*C)/9,I=(20*f+20*h+21*C)/20,B=(40*f+20*h+C)/20,R=Math.atan2(F,v)*180/Math.PI,E=R<0?R+360:R>=360?R-360:R,N=E*Math.PI/180,_=B*a.nbb,L=100*Math.pow(_/a.aw,a.c*a.z),Z=4/a.c*Math.sqrt(L/100)*(a.aw+4)*a.fLRoot,et=E<20.14?E+360:E,ct=1/4*(Math.cos(et*Math.PI/180+2)+3.8),Tt=5e4/13*ct*a.nc*a.ncb*Math.sqrt(v*v+F*F)/(I+.305),Dt=Math.pow(Tt,.9)*Math.pow(1.64-Math.pow(.29,a.n),.73),rt=Dt*Math.sqrt(L/100),kt=rt*a.fLRoot,Yt=50*Math.sqrt(Dt*a.c/(a.aw+4)),Kt=(1+100*.007)*L/(1+.007*L),Xt=Math.log(1+.0228*kt)/.0228,qt=Xt*Math.cos(N),bt=Xt*Math.sin(N);return new r(E,rt,L,Z,kt,Yt,Kt,qt,bt)}xyzInViewingConditions(t){let e=this.chroma===0||this.j===0?0:this.chroma/Math.sqrt(this.j/100),n=Math.pow(e/Math.pow(1.64-Math.pow(.29,t.n),.73),1/.9),a=this.hue*Math.PI/180,o=.25*(Math.cos(a+2)+3.8),i=t.aw*Math.pow(this.j/100,1/t.c/t.z),l=o*(5e4/13)*t.nc*t.ncb,m=i/t.nbb,d=Math.sin(a),g=Math.cos(a),S=23*(m+.305)*n/(23*l+11*n*g+108*n*d),y=S*g,P=S*d,f=(460*m+451*y+288*P)/1403,h=(460*m-891*y-261*P)/1403,C=(460*m-220*y-6300*P)/1403,v=Math.max(0,27.13*Math.abs(f)/(400-Math.abs(f))),F=z(f)*(100/t.fl)*Math.pow(v,1/.42),I=Math.max(0,27.13*Math.abs(h)/(400-Math.abs(h))),B=z(h)*(100/t.fl)*Math.pow(I,1/.42),O=Math.max(0,27.13*Math.abs(C)/(400-Math.abs(C))),R=z(C)*(100/t.fl)*Math.pow(O,1/.42),E=F/t.rgbD[0],N=B/t.rgbD[1],_=R/t.rgbD[2],L=1.86206786*E-1.01125463*N+.14918677*_,Z=.38752654*E+.62144744*N-.00897398*_,et=-.0158415*E-.03412294*N+1.04996444*_;return[L,Z,et]}};var W=class r{static sanitizeRadians(t){return(t+Math.PI*8)%(Math.PI*2)}static trueDelinearized(t){let e=t/100,n=0;return e<=.0031308?n=e*12.92:n=1.055*Math.pow(e,1/2.4)-.055,n*255}static chromaticAdaptation(t){let e=Math.pow(Math.abs(t),.42);return z(t)*400*e/(e+27.13)}static hueOf(t){let e=pt(t,r.SCALED_DISCOUNT_FROM_LINRGB),n=r.chromaticAdaptation(e[0]),a=r.chromaticAdaptation(e[1]),o=r.chromaticAdaptation(e[2]),i=(11*n+-12*a+o)/11,l=(n+a-2*o)/9;return Math.atan2(l,i)}static areInCyclicOrder(t,e,n){let a=r.sanitizeRadians(e-t),o=r.sanitizeRadians(n-t);return a100.01||L[1]>100.01||L[2]>100.01?0:jt(L);a=a-(X-n)*a/(2*X)}return 0}static solveToInt(t,e,n){if(e<1e-4||n<1e-4||n>99.9999)return le(n);t=U(t);let a=t/180*Math.PI,o=q(n),i=r.findResultByJ(a,e,o);if(i!==0)return i;let l=r.bisectToLimit(o,a);return jt(l)}static solveToCam(t,e,n){return G.fromInt(r.solveToInt(t,e,n))}};W.SCALED_DISCOUNT_FROM_LINRGB=[[.001200833568784504,.002389694492170889,.0002795742885861124],[.0005891086651375999,.0029785502573438758,.0003270666104008398],[.00010146692491640572,.0005364214359186694,.0032979401770712076]];W.LINRGB_FROM_SCALED_DISCOUNT=[[1373.2198709594231,-1100.4251190754821,-7.278681089101213],[-271.815969077903,559.6580465940733,-32.46047482791194],[1.9622899599665666,-57.173814538844006,308.7233197812385]];W.Y_FROM_LINRGB=[.2126,.7152,.0722];W.CRITICAL_PLANES=[.015176349177441876,.045529047532325624,.07588174588720938,.10623444424209313,.13658714259697685,.16693984095186062,.19729253930674434,.2276452376616281,.2579979360165119,.28835063437139563,.3188300904430532,.350925934958123,.3848314933096426,.42057480301049466,.458183274052838,.4976837250274023,.5391024159806381,.5824650784040898,.6277969426914107,.6751227633498623,.7244668422128921,.775853049866786,.829304845476233,.8848452951698498,.942497089126609,1.0022825574869039,1.0642236851973577,1.1283421258858297,1.1946592148522128,1.2631959812511864,1.3339731595349034,1.407011200216447,1.4823302800086415,1.5599503113873272,1.6398909516233677,1.7221716113234105,1.8068114625156377,1.8938294463134073,1.9832442801866852,2.075074464868551,2.1693382909216234,2.2660538449872063,2.36523901573795,2.4669114995532007,2.5710888059345764,2.6777882626779785,2.7870270208169257,2.898822059350997,3.0131901897720907,3.1301480604002863,3.2497121605402226,3.3718988244681087,3.4967242352587946,3.624204428461639,3.754355295633311,3.887192587735158,4.022731918402185,4.160988767090289,4.301978482107941,4.445716283538092,4.592217266055746,4.741496401646282,4.893568542229298,5.048448422192488,5.20615066083972,5.3666897647573375,5.5300801301023865,5.696336044816294,5.865471690767354,6.037501145825082,6.212438385869475,6.390297286737924,6.571091626112461,6.7548350853498045,6.941541251256611,7.131223617812143,7.323895587840543,7.5195704746346665,7.7182615035334345,7.919981813454504,8.124744458384042,8.332562408825165,8.543448553206703,8.757415699253682,8.974476575321063,9.194643831691977,9.417930041841839,9.644347703669503,9.873909240696694,10.106627003236781,10.342513269534024,10.58158024687427,10.8238400726681,11.069304815507364,11.317986476196008,11.569896988756009,11.825048221409341,12.083451977536606,12.345119996613247,12.610063955123938,12.878295467455942,13.149826086772048,13.42466730586372,13.702830557985108,13.984327217668513,14.269168601521828,14.55736596900856,14.848930523210871,15.143873411576273,15.44220572664832,15.743938506781891,16.04908273684337,16.35764934889634,16.66964922287304,16.985093187232053,17.30399201960269,17.62635644741625,17.95219714852476,18.281524751807332,18.614349837764564,18.95068293910138,19.290534541298456,19.633915083172692,19.98083495742689,20.331304511189067,20.685334046541502,21.042933821039977,21.404114048223256,21.76888489811322,22.137256497705877,22.50923893145328,22.884842241736916,23.264076429332462,23.6469514538663,24.033477234264016,24.42366364919083,24.817520537484558,25.21505769858089,25.61628489293138,26.021211842414342,26.429848230738664,26.842203703840827,27.258287870275353,27.678110301598522,28.10168053274597,28.529008062403893,28.96010235337422,29.39497283293396,29.83362889318845,30.276079891419332,30.722335150426627,31.172403958865512,31.62629557157785,32.08401920991837,32.54558406207592,33.010999283389665,33.4802739966603,33.953417292456834,34.430438229418264,34.911345834551085,35.39614910352207,35.88485700094671,36.37747846067349,36.87402238606382,37.37449765026789,37.87891309649659,38.38727753828926,38.89959975977785,39.41588851594697,39.93615253289054,40.460400508064545,40.98864111053629,41.520882981230194,42.05713473317016,42.597404951718396,43.141702194811224,43.6900349931913,44.24241185063697,44.798841244188324,45.35933162437017,45.92389141541209,46.49252901546552,47.065252796817916,47.64207110610409,48.22299226451468,48.808024568002054,49.3971762874833,49.9904556690408,50.587870934119984,51.189430279724725,51.79514187861014,52.40501387947288,53.0190544071392,53.637271562750364,54.259673423945976,54.88626804504493,55.517063457223934,56.15206766869424,56.79128866487574,57.43473440856916,58.08241284012621,58.734331877617365,59.39049941699807,60.05092333227251,60.715611475655585,61.38457167773311,62.057811747619894,62.7353394731159,63.417162620860914,64.10328893648692,64.79372614476921,65.48848194977529,66.18756403501224,66.89098006357258,67.59873767827808,68.31084450182222,69.02730813691093,69.74813616640164,70.47333615344107,71.20291564160104,71.93688215501312,72.67524319850172,73.41800625771542,74.16517879925733,74.9167682708136,75.67278210128072,76.43322770089146,77.1981124613393,77.96744375590167,78.74122893956174,79.51947534912904,80.30219030335869,81.08938110306934,81.88105503125999,82.67721935322541,83.4778813166706,84.28304815182372,85.09272707154808,85.90692527145302,86.72564993000343,87.54890820862819,88.3767072518277,89.2090541872801,90.04595612594655,90.88742016217518,91.73345337380438,92.58406282226491,93.43925555268066,94.29903859396902,95.16341895893969,96.03240364439274,96.9059996312159,97.78421388448044,98.6670533535366,99.55452497210776];var x=class r{static from(t,e,n){return new r(W.solveToInt(t,e,n))}static fromInt(t){return new r(t)}toInt(){return this.argb}get hue(){return this.internalHue}set hue(t){this.setInternalState(W.solveToInt(t,this.internalChroma,this.internalTone))}get chroma(){return this.internalChroma}set chroma(t){this.setInternalState(W.solveToInt(this.internalHue,t,this.internalTone))}get tone(){return this.internalTone}set tone(t){this.setInternalState(W.solveToInt(this.internalHue,this.internalChroma,t))}setValue(t,e){this[t]=e}toString(){return`HCT(${this.hue.toFixed(0)}, ${this.chroma.toFixed(0)}, ${this.tone.toFixed(0)})`}static isBlue(t){return t>=250&&t<270}static isYellow(t){return t>=105&&t<125}static isCyan(t){return t>=170&&t<207}constructor(t){this.argb=t;let e=G.fromInt(t);this.internalHue=e.hue,this.internalChroma=e.chroma,this.internalTone=Ct(t),this.argb=t}setInternalState(t){let e=G.fromInt(t);this.internalHue=e.hue,this.internalChroma=e.chroma,this.internalTone=Ct(t),this.argb=t}inViewingConditions(t){let n=G.fromInt(this.toInt()).xyzInViewingConditions(t),a=G.fromXyzInViewingConditions(n[0],n[1],n[2],Y.make());return r.from(a.hue,a.chroma,St(n[1]))}};var Ft=class r{static harmonize(t,e){let n=x.fromInt(t),a=x.fromInt(e),o=vt(n.hue,a.hue),i=Math.min(o*.5,15),l=U(n.hue+i*ie(n.hue,a.hue));return x.from(l,n.chroma,n.tone).toInt()}static hctHue(t,e,n){let a=r.cam16Ucs(t,e,n),o=G.fromInt(a),i=G.fromInt(t);return x.from(o.hue,i.chroma,Ct(t)).toInt()}static cam16Ucs(t,e,n){let a=G.fromInt(t),o=G.fromInt(e),i=a.jstar,l=a.astar,m=a.bstar,d=o.jstar,g=o.astar,S=o.bstar,y=i+(d-i)*n,P=l+(g-l)*n,f=m+(S-m)*n;return G.fromUcs(y,P,f).toInt()}};var V=class r{static ratioOfTones(t,e){return t=H(0,100,t),e=H(0,100,e),r.ratioOfYs(q(t),q(e))}static ratioOfYs(t,e){let n=t>e?t:e,a=n===e?t:e;return(n+5)/(a+5)}static lighter(t,e){if(t<0||t>100)return-1;let n=q(t),a=e*(n+5)-5,o=r.ratioOfYs(a,n),i=Math.abs(o-e);if(o.04)return-1;let l=St(a)+.4;return l<0||l>100?-1:l}static darker(t,e){if(t<0||t>100)return-1;let n=q(t),a=(n+5)/e-5,o=r.ratioOfYs(n,a),i=Math.abs(o-e);if(o.04)return-1;let l=St(a)-.4;return l<0||l>100?-1:l}static lighterUnsafe(t,e){let n=r.lighter(t,e);return n<0?100:n}static darkerUnsafe(t,e){let n=r.darker(t,e);return n<0?0:n}};var it=class r{static isDisliked(t){let e=Math.round(t.hue)>=90&&Math.round(t.hue)<=111,n=Math.round(t.chroma)>16,a=Math.round(t.tone)<65;return e&&n&&a}static fixIfDisliked(t){return r.isDisliked(t)?x.from(t.hue,t.chroma,70):t}};function ve(r,t,e){if(r.name!==e.name)throw new Error(`Attempting to extend color ${r.name} with color ${e.name} of different name for spec version ${t}.`);if(r.isBackground!==e.isBackground)throw new Error(`Attempting to extend color ${r.name} as a ${r.isBackground?"background":"foreground"} with color ${e.name} as a ${e.isBackground?"background":"foreground"} for spec version ${t}.`)}function k(r,t,e){return ve(r,t,e),c.fromPalette({name:r.name,palette:n=>n.specVersion===t?e.palette(n):r.palette(n),tone:n=>n.specVersion===t?e.tone(n):r.tone(n),isBackground:r.isBackground,chromaMultiplier:n=>{let a=n.specVersion===t?e.chromaMultiplier:r.chromaMultiplier;return a!==void 0?a(n):1},background:n=>{let a=n.specVersion===t?e.background:r.background;return a!==void 0?a(n):void 0},secondBackground:n=>{let a=n.specVersion===t?e.secondBackground:r.secondBackground;return a!==void 0?a(n):void 0},contrastCurve:n=>{let a=n.specVersion===t?e.contrastCurve:r.contrastCurve;return a!==void 0?a(n):void 0},toneDeltaPair:n=>{let a=n.specVersion===t?e.toneDeltaPair:r.toneDeltaPair;return a!==void 0?a(n):void 0}})}var c=class r{static fromPalette(t){return new r(t.name??"",t.palette,t.tone??r.getInitialToneFromBackground(t.background),t.isBackground??!1,t.chromaMultiplier,t.background,t.secondBackground,t.contrastCurve,t.toneDeltaPair)}static getInitialToneFromBackground(t){return t===void 0?e=>50:e=>t(e)?t(e).getTone(e):50}constructor(t,e,n,a,o,i,l,m,d){if(this.name=t,this.palette=e,this.tone=n,this.isBackground=a,this.chromaMultiplier=o,this.background=i,this.secondBackground=l,this.contrastCurve=m,this.toneDeltaPair=d,this.hctCache=new Map,!i&&l)throw new Error(`Color ${t} has secondBackgrounddefined, but background is not defined.`);if(!i&&m)throw new Error(`Color ${t} has contrastCurvedefined, but background is not defined.`);if(i&&!m)throw new Error(`Color ${t} has backgrounddefined, but contrastCurve is not defined.`)}clone(){return r.fromPalette({name:this.name,palette:this.palette,tone:this.tone,isBackground:this.isBackground,chromaMultiplier:this.chromaMultiplier,background:this.background,secondBackground:this.secondBackground,contrastCurve:this.contrastCurve,toneDeltaPair:this.toneDeltaPair})}clearCache(){this.hctCache.clear()}getArgb(t){return this.getHct(t).toInt()}getHct(t){let e=this.hctCache.get(t);if(e!=null)return e;let n=me(t.specVersion).getHct(t,this);return this.hctCache.size>4&&this.hctCache.clear(),this.hctCache.set(t,n),n}getTone(t){return me(t.specVersion).getTone(t,this)}static foregroundTone(t,e){let n=V.lighterUnsafe(t,e),a=V.darkerUnsafe(t,e),o=V.ratioOfTones(n,t),i=V.ratioOfTones(a,t);if(r.tonePrefersLightForeground(t)){let m=Math.abs(o-i)<.1&&o=e||o>=i||m?n:a}else return i>=e||i>=o?a:n}static tonePrefersLightForeground(t){return Math.round(t)<60}static toneAllowsLightForeground(t){return Math.round(t)<=49}static enableLightForeground(t){return r.tonePrefersLightForeground(t)&&!r.toneAllowsLightForeground(t)?49:t}},Jt=class{getHct(t,e){let n=e.getTone(t);return e.palette(t).getHct(n)}getTone(t,e){let n=t.contrastLevel<0,a=e.toneDeltaPair?e.toneDeltaPair(t):void 0;if(a){let o=a.roleA,i=a.roleB,l=a.delta,m=a.polarity,d=a.stayTogether,g=m==="nearer"||m==="lighter"&&!t.isDark||m==="darker"&&t.isDark,S=g?o:i,y=g?i:o,P=e.name===S.name,f=t.isDark?1:-1,h=S.tone(t),C=y.tone(t);if(e.background&&S.contrastCurve&&y.contrastCurve){let v=e.background(t),F=S.contrastCurve(t),I=y.contrastCurve(t);if(v&&F&&I){let B=v.getTone(t),O=F.get(t.contrastLevel),R=I.get(t.contrastLevel);V.ratioOfTones(B,h)=l||(h=H(0,100,C-l*f))),50<=h&&h<60?f>0?(h=60,C=Math.max(C,h+l*f)):(h=49,C=Math.min(C,h+l*f)):50<=C&&C<60&&(d?f>0?(h=60,C=Math.max(C,h+l*f)):(h=49,C=Math.min(C,h+l*f)):f>0?C=60:C=49),P?h:C}else{let o=e.tone(t);if(e.background==null||e.background(t)===void 0||e.contrastCurve==null||e.contrastCurve(t)===void 0)return o;let i=e.background(t).getTone(t),l=e.contrastCurve(t).get(t.contrastLevel);if(V.ratioOfTones(i,o)>=l||(o=c.foregroundTone(i,l)),n&&(o=c.foregroundTone(i,l)),e.isBackground&&50<=o&&o<60&&(V.ratioOfTones(49,i)>=l?o=49:o=60),e.secondBackground==null||e.secondBackground(t)===void 0)return o;let[m,d]=[e.background,e.secondBackground],[g,S]=[m(t).getTone(t),d(t).getTone(t)],[y,P]=[Math.max(g,S),Math.min(g,S)];if(V.ratioOfTones(y,o)>=l&&V.ratioOfTones(P,o)>=l)return o;let f=V.lighter(y,l),h=V.darker(P,l),C=[];return f!==-1&&C.push(f),h!==-1&&C.push(h),c.tonePrefersLightForeground(g)||c.tonePrefersLightForeground(S)?f<0?100:f:C.length===1?C[0]:h<0?0:h}}},Zt=class{getHct(t,e){let n=e.palette(t),a=e.getTone(t),o=n.hue,i=n.chroma*(e.chromaMultiplier?e.chromaMultiplier(t):1);return x.from(o,i,a)}getTone(t,e){let n=e.toneDeltaPair?e.toneDeltaPair(t):void 0;if(n){let a=n.roleA,o=n.roleB,i=n.polarity,l=n.constraint,m=i==="darker"||i==="relative_lighter"&&t.isDark||i==="relative_darker"&&!t.isDark?-n.delta:n.delta,d=e.name===a.name,g=d?a:o,S=d?o:a,y=g.tone(t),P=S.getTone(t),f=m*(d?1:-1);if(l==="exact"?y=H(0,100,P+f):l==="nearer"?f>0?y=H(0,100,H(P,P+f,y)):y=H(0,100,H(P+f,P,y)):l==="farther"&&(f>0?y=H(P+f,100,y):y=H(0,P+f,y)),e.background&&e.contrastCurve){let h=e.background(t),C=e.contrastCurve(t);if(h&&C){let v=h.getTone(t),F=C.get(t.contrastLevel);y=V.ratioOfTones(v,y)>=F&&t.contrastLevel>=0?y:c.foregroundTone(v,F)}}return e.isBackground&&!e.name.endsWith("_fixed_dim")&&(y>=57?y=H(65,100,y):y=H(0,49,y)),y}else{let a=e.tone(t);if(e.background==null||e.background(t)===void 0||e.contrastCurve==null||e.contrastCurve(t)===void 0)return a;let o=e.background(t).getTone(t),i=e.contrastCurve(t).get(t.contrastLevel);if(a=V.ratioOfTones(o,a)>=i&&t.contrastLevel>=0?a:c.foregroundTone(o,i),e.isBackground&&!e.name.endsWith("_fixed_dim")&&(a>=57?a=H(65,100,a):a=H(0,49,a)),e.secondBackground==null||e.secondBackground(t)===void 0)return a;let[l,m]=[e.background,e.secondBackground],[d,g]=[l(t).getTone(t),m(t).getTone(t)],[S,y]=[Math.max(d,g),Math.min(d,g)];if(V.ratioOfTones(S,a)>=i&&V.ratioOfTones(y,a)>=i)return a;let P=V.lighter(S,i),f=V.darker(y,i),h=[];return P!==-1&&h.push(P),f!==-1&&h.push(f),c.tonePrefersLightForeground(d)||c.tonePrefersLightForeground(g)?P<0?100:P:h.length===1?h[0]:f<0?0:f}}},we=new Jt,Fe=new Zt;function me(r){return r==="2025"?Fe:we}var p=class r{static fromInt(t){let e=x.fromInt(t);return r.fromHct(e)}static fromHct(t){return new r(t.hue,t.chroma,t)}static fromHueAndChroma(t,e){let n=new Qt(t,e).create();return new r(t,e,n)}constructor(t,e,n){this.hue=t,this.chroma=e,this.keyColor=n,this.cache=new Map}tone(t){let e=this.cache.get(t);return e===void 0&&(t==99&&x.isYellow(this.hue)?e=this.averageArgb(this.tone(98),this.tone(100)):e=x.from(this.hue,this.chroma,t).toInt(),this.cache.set(t,e)),e}getHct(t){return x.fromInt(this.tone(t))}averageArgb(t,e){let n=t>>>16&255,a=t>>>8&255,o=t&255,i=e>>>16&255,l=e>>>8&255,m=e&255,d=Math.round((n+i)/2),g=Math.round((a+l)/2),S=Math.round((o+m)/2);return(255<<24|(d&255)<<16|(g&255)<<8|S&255)>>>0}},Qt=class{constructor(t,e){this.hue=t,this.requestedChroma=e,this.chromaCache=new Map,this.maxChromaValue=200}create(){let a=0,o=100;for(;a=this.requestedChroma-.01)if(Math.abs(a-50)0)return this.hctsByTempCache;let t=this.hctsByHue.concat([this.input]),e=this.tempsByHct;return t.sort((n,a)=>e.get(n)-e.get(a)),this.hctsByTempCache=t,t}get warmest(){return this.hctsByTemp[this.hctsByTemp.length-1]}get coldest(){return this.hctsByTemp[0]}analogous(t=5,e=12){let n=Math.round(this.input.hue),a=this.hctsByHue[n],o=this.relativeTemperature(a),i=[a],l=0;for(let f=0;f<360;f++){let h=ut(n+f),C=this.hctsByHue[h],v=this.relativeTemperature(C),F=Math.abs(v-o);o=v,l+=F}let m=1,d=l/e,g=0;for(o=this.relativeTemperature(a);i.length=F,B=1;for(;I&&i.length=O,B++}if(o=C,m++,m>360){for(;i.length=i.length&&(h=h%i.length),S.splice(0,0,i[h])}let P=t-y-1;for(let f=1;f=i.length&&(h=h%i.length),S.push(i[h])}return S}get complement(){if(this.complementCache!=null)return this.complementCache;let t=this.coldest.hue,e=this.tempsByHct.get(this.coldest),n=this.warmest.hue,o=this.tempsByHct.get(this.warmest)-e,i=r.isBetween(this.input.hue,t,n),l=i?n:t,m=i?t:n,d=1,g=1e3,S=this.hctsByHue[Math.round(this.input.hue)],y=1-this.inputRelativeTemperature;for(let P=0;P<=360;P+=1){let f=U(l+d*P);if(!r.isBetween(f,l,m))continue;let h=this.hctsByHue[Math.round(f)],C=(this.tempsByHct.get(h)-e)/o,v=Math.abs(y-C);v=0?this.inputRelativeTemperatureCache:(this.inputRelativeTemperatureCache=this.relativeTemperature(this.input),this.inputRelativeTemperatureCache)}get tempsByHct(){if(this.tempsByHctCache.size>0)return this.tempsByHctCache;let t=this.hctsByHue.concat([this.input]),e=new Map;for(let n of t)e.set(n,r.rawTemperature(n));return this.tempsByHctCache=e,e}get hctsByHue(){if(this.hctsByHueCache.length>0)return this.hctsByHueCache;let t=[];for(let e=0;e<=360;e+=1){let n=x.from(e,this.input.chroma,this.input.tone);t.push(n)}return this.hctsByHueCache=t,this.hctsByHueCache}static isBetween(t,e,n){return el.chroma||Math.abs(l.chroma-t)<.4)break;let m=Math.abs(l.chroma-t),d=Math.abs(o.chroma-t);mt.primaryPalette,tone:t=>t.primaryPalette.keyColor.tone})}secondaryPaletteKeyColor(){return c.fromPalette({name:"secondary_palette_key_color",palette:t=>t.secondaryPalette,tone:t=>t.secondaryPalette.keyColor.tone})}tertiaryPaletteKeyColor(){return c.fromPalette({name:"tertiary_palette_key_color",palette:t=>t.tertiaryPalette,tone:t=>t.tertiaryPalette.keyColor.tone})}neutralPaletteKeyColor(){return c.fromPalette({name:"neutral_palette_key_color",palette:t=>t.neutralPalette,tone:t=>t.neutralPalette.keyColor.tone})}neutralVariantPaletteKeyColor(){return c.fromPalette({name:"neutral_variant_palette_key_color",palette:t=>t.neutralVariantPalette,tone:t=>t.neutralVariantPalette.keyColor.tone})}errorPaletteKeyColor(){return c.fromPalette({name:"error_palette_key_color",palette:t=>t.errorPalette,tone:t=>t.errorPalette.keyColor.tone})}background(){return c.fromPalette({name:"background",palette:t=>t.neutralPalette,tone:t=>t.isDark?6:98,isBackground:!0})}onBackground(){return c.fromPalette({name:"on_background",palette:t=>t.neutralPalette,tone:t=>t.isDark?90:10,background:t=>this.background(),contrastCurve:t=>new A(3,3,4.5,7)})}surface(){return c.fromPalette({name:"surface",palette:t=>t.neutralPalette,tone:t=>t.isDark?6:98,isBackground:!0})}surfaceDim(){return c.fromPalette({name:"surface_dim",palette:t=>t.neutralPalette,tone:t=>t.isDark?6:new A(87,87,80,75).get(t.contrastLevel),isBackground:!0})}surfaceBright(){return c.fromPalette({name:"surface_bright",palette:t=>t.neutralPalette,tone:t=>t.isDark?new A(24,24,29,34).get(t.contrastLevel):98,isBackground:!0})}surfaceContainerLowest(){return c.fromPalette({name:"surface_container_lowest",palette:t=>t.neutralPalette,tone:t=>t.isDark?new A(4,4,2,0).get(t.contrastLevel):100,isBackground:!0})}surfaceContainerLow(){return c.fromPalette({name:"surface_container_low",palette:t=>t.neutralPalette,tone:t=>t.isDark?new A(10,10,11,12).get(t.contrastLevel):new A(96,96,96,95).get(t.contrastLevel),isBackground:!0})}surfaceContainer(){return c.fromPalette({name:"surface_container",palette:t=>t.neutralPalette,tone:t=>t.isDark?new A(12,12,16,20).get(t.contrastLevel):new A(94,94,92,90).get(t.contrastLevel),isBackground:!0})}surfaceContainerHigh(){return c.fromPalette({name:"surface_container_high",palette:t=>t.neutralPalette,tone:t=>t.isDark?new A(17,17,21,25).get(t.contrastLevel):new A(92,92,88,85).get(t.contrastLevel),isBackground:!0})}surfaceContainerHighest(){return c.fromPalette({name:"surface_container_highest",palette:t=>t.neutralPalette,tone:t=>t.isDark?new A(22,22,26,30).get(t.contrastLevel):new A(90,90,84,80).get(t.contrastLevel),isBackground:!0})}onSurface(){return c.fromPalette({name:"on_surface",palette:t=>t.neutralPalette,tone:t=>t.isDark?90:10,background:t=>this.highestSurface(t),contrastCurve:t=>new A(4.5,7,11,21)})}surfaceVariant(){return c.fromPalette({name:"surface_variant",palette:t=>t.neutralVariantPalette,tone:t=>t.isDark?30:90,isBackground:!0})}onSurfaceVariant(){return c.fromPalette({name:"on_surface_variant",palette:t=>t.neutralVariantPalette,tone:t=>t.isDark?80:30,background:t=>this.highestSurface(t),contrastCurve:t=>new A(3,4.5,7,11)})}inverseSurface(){return c.fromPalette({name:"inverse_surface",palette:t=>t.neutralPalette,tone:t=>t.isDark?90:20,isBackground:!0})}inverseOnSurface(){return c.fromPalette({name:"inverse_on_surface",palette:t=>t.neutralPalette,tone:t=>t.isDark?20:95,background:t=>this.inverseSurface(),contrastCurve:t=>new A(4.5,7,11,21)})}outline(){return c.fromPalette({name:"outline",palette:t=>t.neutralVariantPalette,tone:t=>t.isDark?60:50,background:t=>this.highestSurface(t),contrastCurve:t=>new A(1.5,3,4.5,7)})}outlineVariant(){return c.fromPalette({name:"outline_variant",palette:t=>t.neutralVariantPalette,tone:t=>t.isDark?30:80,background:t=>this.highestSurface(t),contrastCurve:t=>new A(1,1,3,4.5)})}shadow(){return c.fromPalette({name:"shadow",palette:t=>t.neutralPalette,tone:t=>0})}scrim(){return c.fromPalette({name:"scrim",palette:t=>t.neutralPalette,tone:t=>0})}surfaceTint(){return c.fromPalette({name:"surface_tint",palette:t=>t.primaryPalette,tone:t=>t.isDark?80:40,isBackground:!0})}primary(){return c.fromPalette({name:"primary",palette:t=>t.primaryPalette,tone:t=>M(t)?t.isDark?100:0:t.isDark?80:40,isBackground:!0,background:t=>this.highestSurface(t),contrastCurve:t=>new A(3,4.5,7,7),toneDeltaPair:t=>new w(this.primaryContainer(),this.primary(),10,"nearer",!1)})}primaryDim(){}onPrimary(){return c.fromPalette({name:"on_primary",palette:t=>t.primaryPalette,tone:t=>M(t)?t.isDark?10:90:t.isDark?20:100,background:t=>this.primary(),contrastCurve:t=>new A(4.5,7,11,21)})}primaryContainer(){return c.fromPalette({name:"primary_container",palette:t=>t.primaryPalette,tone:t=>lt(t)?t.sourceColorHct.tone:M(t)?t.isDark?85:25:t.isDark?30:90,isBackground:!0,background:t=>this.highestSurface(t),contrastCurve:t=>new A(1,1,3,4.5),toneDeltaPair:t=>new w(this.primaryContainer(),this.primary(),10,"nearer",!1)})}onPrimaryContainer(){return c.fromPalette({name:"on_primary_container",palette:t=>t.primaryPalette,tone:t=>lt(t)?c.foregroundTone(this.primaryContainer().tone(t),4.5):M(t)?t.isDark?0:100:t.isDark?90:30,background:t=>this.primaryContainer(),contrastCurve:t=>new A(3,4.5,7,11)})}inversePrimary(){return c.fromPalette({name:"inverse_primary",palette:t=>t.primaryPalette,tone:t=>t.isDark?40:80,background:t=>this.inverseSurface(),contrastCurve:t=>new A(3,4.5,7,7)})}secondary(){return c.fromPalette({name:"secondary",palette:t=>t.secondaryPalette,tone:t=>t.isDark?80:40,isBackground:!0,background:t=>this.highestSurface(t),contrastCurve:t=>new A(3,4.5,7,7),toneDeltaPair:t=>new w(this.secondaryContainer(),this.secondary(),10,"nearer",!1)})}secondaryDim(){}onSecondary(){return c.fromPalette({name:"on_secondary",palette:t=>t.secondaryPalette,tone:t=>M(t)?t.isDark?10:100:t.isDark?20:100,background:t=>this.secondary(),contrastCurve:t=>new A(4.5,7,11,21)})}secondaryContainer(){return c.fromPalette({name:"secondary_container",palette:t=>t.secondaryPalette,tone:t=>{let e=t.isDark?30:90;return M(t)?t.isDark?30:85:lt(t)?Ee(t.secondaryPalette.hue,t.secondaryPalette.chroma,e,!t.isDark):e},isBackground:!0,background:t=>this.highestSurface(t),contrastCurve:t=>new A(1,1,3,4.5),toneDeltaPair:t=>new w(this.secondaryContainer(),this.secondary(),10,"nearer",!1)})}onSecondaryContainer(){return c.fromPalette({name:"on_secondary_container",palette:t=>t.secondaryPalette,tone:t=>M(t)?t.isDark?90:10:lt(t)?c.foregroundTone(this.secondaryContainer().tone(t),4.5):t.isDark?90:30,background:t=>this.secondaryContainer(),contrastCurve:t=>new A(3,4.5,7,11)})}tertiary(){return c.fromPalette({name:"tertiary",palette:t=>t.tertiaryPalette,tone:t=>M(t)?t.isDark?90:25:t.isDark?80:40,isBackground:!0,background:t=>this.highestSurface(t),contrastCurve:t=>new A(3,4.5,7,7),toneDeltaPair:t=>new w(this.tertiaryContainer(),this.tertiary(),10,"nearer",!1)})}tertiaryDim(){}onTertiary(){return c.fromPalette({name:"on_tertiary",palette:t=>t.tertiaryPalette,tone:t=>M(t)?t.isDark?10:90:t.isDark?20:100,background:t=>this.tertiary(),contrastCurve:t=>new A(4.5,7,11,21)})}tertiaryContainer(){return c.fromPalette({name:"tertiary_container",palette:t=>t.tertiaryPalette,tone:t=>{if(M(t))return t.isDark?60:49;if(!lt(t))return t.isDark?30:90;let e=t.tertiaryPalette.getHct(t.sourceColorHct.tone);return it.fixIfDisliked(e).tone},isBackground:!0,background:t=>this.highestSurface(t),contrastCurve:t=>new A(1,1,3,4.5),toneDeltaPair:t=>new w(this.tertiaryContainer(),this.tertiary(),10,"nearer",!1)})}onTertiaryContainer(){return c.fromPalette({name:"on_tertiary_container",palette:t=>t.tertiaryPalette,tone:t=>M(t)?t.isDark?0:100:lt(t)?c.foregroundTone(this.tertiaryContainer().tone(t),4.5):t.isDark?90:30,background:t=>this.tertiaryContainer(),contrastCurve:t=>new A(3,4.5,7,11)})}error(){return c.fromPalette({name:"error",palette:t=>t.errorPalette,tone:t=>t.isDark?80:40,isBackground:!0,background:t=>this.highestSurface(t),contrastCurve:t=>new A(3,4.5,7,7),toneDeltaPair:t=>new w(this.errorContainer(),this.error(),10,"nearer",!1)})}errorDim(){}onError(){return c.fromPalette({name:"on_error",palette:t=>t.errorPalette,tone:t=>t.isDark?20:100,background:t=>this.error(),contrastCurve:t=>new A(4.5,7,11,21)})}errorContainer(){return c.fromPalette({name:"error_container",palette:t=>t.errorPalette,tone:t=>t.isDark?30:90,isBackground:!0,background:t=>this.highestSurface(t),contrastCurve:t=>new A(1,1,3,4.5),toneDeltaPair:t=>new w(this.errorContainer(),this.error(),10,"nearer",!1)})}onErrorContainer(){return c.fromPalette({name:"on_error_container",palette:t=>t.errorPalette,tone:t=>M(t)?t.isDark?90:10:t.isDark?90:30,background:t=>this.errorContainer(),contrastCurve:t=>new A(3,4.5,7,11)})}primaryFixed(){return c.fromPalette({name:"primary_fixed",palette:t=>t.primaryPalette,tone:t=>M(t)?40:90,isBackground:!0,background:t=>this.highestSurface(t),contrastCurve:t=>new A(1,1,3,4.5),toneDeltaPair:t=>new w(this.primaryFixed(),this.primaryFixedDim(),10,"lighter",!0)})}primaryFixedDim(){return c.fromPalette({name:"primary_fixed_dim",palette:t=>t.primaryPalette,tone:t=>M(t)?30:80,isBackground:!0,background:t=>this.highestSurface(t),contrastCurve:t=>new A(1,1,3,4.5),toneDeltaPair:t=>new w(this.primaryFixed(),this.primaryFixedDim(),10,"lighter",!0)})}onPrimaryFixed(){return c.fromPalette({name:"on_primary_fixed",palette:t=>t.primaryPalette,tone:t=>M(t)?100:10,background:t=>this.primaryFixedDim(),secondBackground:t=>this.primaryFixed(),contrastCurve:t=>new A(4.5,7,11,21)})}onPrimaryFixedVariant(){return c.fromPalette({name:"on_primary_fixed_variant",palette:t=>t.primaryPalette,tone:t=>M(t)?90:30,background:t=>this.primaryFixedDim(),secondBackground:t=>this.primaryFixed(),contrastCurve:t=>new A(3,4.5,7,11)})}secondaryFixed(){return c.fromPalette({name:"secondary_fixed",palette:t=>t.secondaryPalette,tone:t=>M(t)?80:90,isBackground:!0,background:t=>this.highestSurface(t),contrastCurve:t=>new A(1,1,3,4.5),toneDeltaPair:t=>new w(this.secondaryFixed(),this.secondaryFixedDim(),10,"lighter",!0)})}secondaryFixedDim(){return c.fromPalette({name:"secondary_fixed_dim",palette:t=>t.secondaryPalette,tone:t=>M(t)?70:80,isBackground:!0,background:t=>this.highestSurface(t),contrastCurve:t=>new A(1,1,3,4.5),toneDeltaPair:t=>new w(this.secondaryFixed(),this.secondaryFixedDim(),10,"lighter",!0)})}onSecondaryFixed(){return c.fromPalette({name:"on_secondary_fixed",palette:t=>t.secondaryPalette,tone:t=>10,background:t=>this.secondaryFixedDim(),secondBackground:t=>this.secondaryFixed(),contrastCurve:t=>new A(4.5,7,11,21)})}onSecondaryFixedVariant(){return c.fromPalette({name:"on_secondary_fixed_variant",palette:t=>t.secondaryPalette,tone:t=>M(t)?25:30,background:t=>this.secondaryFixedDim(),secondBackground:t=>this.secondaryFixed(),contrastCurve:t=>new A(3,4.5,7,11)})}tertiaryFixed(){return c.fromPalette({name:"tertiary_fixed",palette:t=>t.tertiaryPalette,tone:t=>M(t)?40:90,isBackground:!0,background:t=>this.highestSurface(t),contrastCurve:t=>new A(1,1,3,4.5),toneDeltaPair:t=>new w(this.tertiaryFixed(),this.tertiaryFixedDim(),10,"lighter",!0)})}tertiaryFixedDim(){return c.fromPalette({name:"tertiary_fixed_dim",palette:t=>t.tertiaryPalette,tone:t=>M(t)?30:80,isBackground:!0,background:t=>this.highestSurface(t),contrastCurve:t=>new A(1,1,3,4.5),toneDeltaPair:t=>new w(this.tertiaryFixed(),this.tertiaryFixedDim(),10,"lighter",!0)})}onTertiaryFixed(){return c.fromPalette({name:"on_tertiary_fixed",palette:t=>t.tertiaryPalette,tone:t=>M(t)?100:10,background:t=>this.tertiaryFixedDim(),secondBackground:t=>this.tertiaryFixed(),contrastCurve:t=>new A(4.5,7,11,21)})}onTertiaryFixedVariant(){return c.fromPalette({name:"on_tertiary_fixed_variant",palette:t=>t.tertiaryPalette,tone:t=>M(t)?90:30,background:t=>this.tertiaryFixedDim(),secondBackground:t=>this.tertiaryFixed(),contrastCurve:t=>new A(3,4.5,7,11)})}highestSurface(t){return t.isDark?this.surfaceBright():this.surfaceDim()}};function b(r,t=0,e=100,n=1){let a=fe(r.hue,r.chroma*n,100,!0);return H(t,e,a)}function nt(r,t=0,e=100){let n=fe(r.hue,r.chroma,0,!1);return H(t,e,n)}function fe(r,t,e,n){let a=e,o=x.from(r,t,a);for(;o.chroma100);){e+=n?-1:1;let i=x.from(r,t,e);o.chromae.neutralPalette,tone:e=>(super.surface().tone(e),e.platform==="phone"?e.isDark?4:x.isYellow(e.neutralPalette.hue)?99:e.variant===s.VIBRANT?97:98:0),isBackground:!0});return k(super.surface(),"2025",t)}surfaceDim(){let t=c.fromPalette({name:"surface_dim",palette:e=>e.neutralPalette,tone:e=>e.isDark?4:x.isYellow(e.neutralPalette.hue)?90:e.variant===s.VIBRANT?85:87,isBackground:!0,chromaMultiplier:e=>{if(!e.isDark){if(e.variant===s.NEUTRAL)return 2.5;if(e.variant===s.TONAL_SPOT)return 1.7;if(e.variant===s.EXPRESSIVE)return x.isYellow(e.neutralPalette.hue)?2.7:1.75;if(e.variant===s.VIBRANT)return 1.36}return 1}});return k(super.surfaceDim(),"2025",t)}surfaceBright(){let t=c.fromPalette({name:"surface_bright",palette:e=>e.neutralPalette,tone:e=>e.isDark?18:x.isYellow(e.neutralPalette.hue)?99:e.variant===s.VIBRANT?97:98,isBackground:!0,chromaMultiplier:e=>{if(e.isDark){if(e.variant===s.NEUTRAL)return 2.5;if(e.variant===s.TONAL_SPOT)return 1.7;if(e.variant===s.EXPRESSIVE)return x.isYellow(e.neutralPalette.hue)?2.7:1.75;if(e.variant===s.VIBRANT)return 1.36}return 1}});return k(super.surfaceBright(),"2025",t)}surfaceContainerLowest(){let t=c.fromPalette({name:"surface_container_lowest",palette:e=>e.neutralPalette,tone:e=>e.isDark?0:100,isBackground:!0});return k(super.surfaceContainerLowest(),"2025",t)}surfaceContainerLow(){let t=c.fromPalette({name:"surface_container_low",palette:e=>e.neutralPalette,tone:e=>e.platform==="phone"?e.isDark?6:x.isYellow(e.neutralPalette.hue)?98:e.variant===s.VIBRANT?95:96:15,isBackground:!0,chromaMultiplier:e=>{if(e.platform==="phone"){if(e.variant===s.NEUTRAL)return 1.3;if(e.variant===s.TONAL_SPOT)return 1.25;if(e.variant===s.EXPRESSIVE)return x.isYellow(e.neutralPalette.hue)?1.3:1.15;if(e.variant===s.VIBRANT)return 1.08}return 1}});return k(super.surfaceContainerLow(),"2025",t)}surfaceContainer(){let t=c.fromPalette({name:"surface_container",palette:e=>e.neutralPalette,tone:e=>e.platform==="phone"?e.isDark?9:x.isYellow(e.neutralPalette.hue)?96:e.variant===s.VIBRANT?92:94:20,isBackground:!0,chromaMultiplier:e=>{if(e.platform==="phone"){if(e.variant===s.NEUTRAL)return 1.6;if(e.variant===s.TONAL_SPOT)return 1.4;if(e.variant===s.EXPRESSIVE)return x.isYellow(e.neutralPalette.hue)?1.6:1.3;if(e.variant===s.VIBRANT)return 1.15}return 1}});return k(super.surfaceContainer(),"2025",t)}surfaceContainerHigh(){let t=c.fromPalette({name:"surface_container_high",palette:e=>e.neutralPalette,tone:e=>e.platform==="phone"?e.isDark?12:x.isYellow(e.neutralPalette.hue)?94:e.variant===s.VIBRANT?90:92:25,isBackground:!0,chromaMultiplier:e=>{if(e.platform==="phone"){if(e.variant===s.NEUTRAL)return 1.9;if(e.variant===s.TONAL_SPOT)return 1.5;if(e.variant===s.EXPRESSIVE)return x.isYellow(e.neutralPalette.hue)?1.95:1.45;if(e.variant===s.VIBRANT)return 1.22}return 1}});return k(super.surfaceContainerHigh(),"2025",t)}surfaceContainerHighest(){let t=c.fromPalette({name:"surface_container_highest",palette:e=>e.neutralPalette,tone:e=>e.isDark?15:x.isYellow(e.neutralPalette.hue)?92:e.variant===s.VIBRANT?88:90,isBackground:!0,chromaMultiplier:e=>e.variant===s.NEUTRAL?2.2:e.variant===s.TONAL_SPOT?1.7:e.variant===s.EXPRESSIVE?x.isYellow(e.neutralPalette.hue)?2.3:1.6:e.variant===s.VIBRANT?1.29:1});return k(super.surfaceContainerHighest(),"2025",t)}onSurface(){let t=c.fromPalette({name:"on_surface",palette:e=>e.neutralPalette,tone:e=>e.variant===s.VIBRANT?b(e.neutralPalette,0,100,1.1):c.getInitialToneFromBackground(n=>n.platform==="phone"?this.highestSurface(n):this.surfaceContainerHigh())(e),chromaMultiplier:e=>{if(e.platform==="phone"){if(e.variant===s.NEUTRAL)return 2.2;if(e.variant===s.TONAL_SPOT)return 1.7;if(e.variant===s.EXPRESSIVE)return x.isYellow(e.neutralPalette.hue)?e.isDark?3:2.3:1.6}return 1},background:e=>e.platform==="phone"?this.highestSurface(e):this.surfaceContainerHigh(),contrastCurve:e=>e.isDark&&e.platform==="phone"?T(11):T(9)});return k(super.onSurface(),"2025",t)}onSurfaceVariant(){let t=c.fromPalette({name:"on_surface_variant",palette:e=>e.neutralPalette,chromaMultiplier:e=>{if(e.platform==="phone"){if(e.variant===s.NEUTRAL)return 2.2;if(e.variant===s.TONAL_SPOT)return 1.7;if(e.variant===s.EXPRESSIVE)return x.isYellow(e.neutralPalette.hue)?e.isDark?3:2.3:1.6}return 1},background:e=>e.platform==="phone"?this.highestSurface(e):this.surfaceContainerHigh(),contrastCurve:e=>e.platform==="phone"?e.isDark?T(6):T(4.5):T(7)});return k(super.onSurfaceVariant(),"2025",t)}outline(){let t=c.fromPalette({name:"outline",palette:e=>e.neutralPalette,chromaMultiplier:e=>{if(e.platform==="phone"){if(e.variant===s.NEUTRAL)return 2.2;if(e.variant===s.TONAL_SPOT)return 1.7;if(e.variant===s.EXPRESSIVE)return x.isYellow(e.neutralPalette.hue)?e.isDark?3:2.3:1.6}return 1},background:e=>e.platform==="phone"?this.highestSurface(e):this.surfaceContainerHigh(),contrastCurve:e=>e.platform==="phone"?T(3):T(4.5)});return k(super.outline(),"2025",t)}outlineVariant(){let t=c.fromPalette({name:"outline_variant",palette:e=>e.neutralPalette,chromaMultiplier:e=>{if(e.platform==="phone"){if(e.variant===s.NEUTRAL)return 2.2;if(e.variant===s.TONAL_SPOT)return 1.7;if(e.variant===s.EXPRESSIVE)return x.isYellow(e.neutralPalette.hue)?e.isDark?3:2.3:1.6}return 1},background:e=>e.platform==="phone"?this.highestSurface(e):this.surfaceContainerHigh(),contrastCurve:e=>e.platform==="phone"?T(1.5):T(3)});return k(super.outlineVariant(),"2025",t)}inverseSurface(){let t=c.fromPalette({name:"inverse_surface",palette:e=>e.neutralPalette,tone:e=>e.isDark?98:4,isBackground:!0});return k(super.inverseSurface(),"2025",t)}inverseOnSurface(){let t=c.fromPalette({name:"inverse_on_surface",palette:e=>e.neutralPalette,background:e=>this.inverseSurface(),contrastCurve:e=>T(7)});return k(super.inverseOnSurface(),"2025",t)}primary(){let t=c.fromPalette({name:"primary",palette:e=>e.primaryPalette,tone:e=>e.variant===s.NEUTRAL?e.platform==="phone"?e.isDark?80:40:90:e.variant===s.TONAL_SPOT?e.platform==="phone"?e.isDark?80:b(e.primaryPalette):b(e.primaryPalette,0,90):e.variant===s.EXPRESSIVE?e.platform==="phone"?b(e.primaryPalette,0,x.isYellow(e.primaryPalette.hue)?25:x.isCyan(e.primaryPalette.hue)?88:98):b(e.primaryPalette):e.platform==="phone"?b(e.primaryPalette,0,x.isCyan(e.primaryPalette.hue)?88:98):b(e.primaryPalette),isBackground:!0,background:e=>e.platform==="phone"?this.highestSurface(e):this.surfaceContainerHigh(),contrastCurve:e=>e.platform==="phone"?T(4.5):T(7),toneDeltaPair:e=>e.platform==="phone"?new w(this.primaryContainer(),this.primary(),5,"relative_lighter",!0,"farther"):void 0});return k(super.primary(),"2025",t)}primaryDim(){return c.fromPalette({name:"primary_dim",palette:t=>t.primaryPalette,tone:t=>t.variant===s.NEUTRAL?85:t.variant===s.TONAL_SPOT?b(t.primaryPalette,0,90):b(t.primaryPalette),isBackground:!0,background:t=>this.surfaceContainerHigh(),contrastCurve:t=>T(4.5),toneDeltaPair:t=>new w(this.primaryDim(),this.primary(),5,"darker",!0,"farther")})}onPrimary(){let t=c.fromPalette({name:"on_primary",palette:e=>e.primaryPalette,background:e=>e.platform==="phone"?this.primary():this.primaryDim(),contrastCurve:e=>e.platform==="phone"?T(6):T(7)});return k(super.onPrimary(),"2025",t)}primaryContainer(){let t=c.fromPalette({name:"primary_container",palette:e=>e.primaryPalette,tone:e=>e.platform==="watch"?30:e.variant===s.NEUTRAL?e.isDark?30:90:e.variant===s.TONAL_SPOT?e.isDark?nt(e.primaryPalette,35,93):b(e.primaryPalette,0,90):e.variant===s.EXPRESSIVE?e.isDark?b(e.primaryPalette,30,93):b(e.primaryPalette,78,x.isCyan(e.primaryPalette.hue)?88:90):e.isDark?nt(e.primaryPalette,66,93):b(e.primaryPalette,66,x.isCyan(e.primaryPalette.hue)?88:93),isBackground:!0,background:e=>e.platform==="phone"?this.highestSurface(e):void 0,toneDeltaPair:e=>e.platform==="phone"?void 0:new w(this.primaryContainer(),this.primaryDim(),10,"darker",!0,"farther"),contrastCurve:e=>e.platform==="phone"&&e.contrastLevel>0?T(1.5):void 0});return k(super.primaryContainer(),"2025",t)}onPrimaryContainer(){let t=c.fromPalette({name:"on_primary_container",palette:e=>e.primaryPalette,background:e=>this.primaryContainer(),contrastCurve:e=>e.platform==="phone"?T(6):T(7)});return k(super.onPrimaryContainer(),"2025",t)}primaryFixed(){let t=c.fromPalette({name:"primary_fixed",palette:e=>e.primaryPalette,tone:e=>{let n=Object.assign({},e,{isDark:!1,contrastLevel:0});return this.primaryContainer().getTone(n)},isBackground:!0,background:e=>e.platform==="phone"?this.highestSurface(e):void 0,contrastCurve:e=>e.platform==="phone"&&e.contrastLevel>0?T(1.5):void 0});return k(super.primaryFixed(),"2025",t)}primaryFixedDim(){let t=c.fromPalette({name:"primary_fixed_dim",palette:e=>e.primaryPalette,tone:e=>this.primaryFixed().getTone(e),isBackground:!0,toneDeltaPair:e=>new w(this.primaryFixedDim(),this.primaryFixed(),5,"darker",!0,"exact")});return k(super.primaryFixedDim(),"2025",t)}onPrimaryFixed(){let t=c.fromPalette({name:"on_primary_fixed",palette:e=>e.primaryPalette,background:e=>this.primaryFixedDim(),contrastCurve:e=>T(7)});return k(super.onPrimaryFixed(),"2025",t)}onPrimaryFixedVariant(){let t=c.fromPalette({name:"on_primary_fixed_variant",palette:e=>e.primaryPalette,background:e=>this.primaryFixedDim(),contrastCurve:e=>T(4.5)});return k(super.onPrimaryFixedVariant(),"2025",t)}inversePrimary(){let t=c.fromPalette({name:"inverse_primary",palette:e=>e.primaryPalette,tone:e=>b(e.primaryPalette),background:e=>this.inverseSurface(),contrastCurve:e=>e.platform==="phone"?T(6):T(7)});return k(super.inversePrimary(),"2025",t)}secondary(){let t=c.fromPalette({name:"secondary",palette:e=>e.secondaryPalette,tone:e=>e.platform==="watch"?e.variant===s.NEUTRAL?90:b(e.secondaryPalette,0,90):e.variant===s.NEUTRAL?e.isDark?nt(e.secondaryPalette,0,98):b(e.secondaryPalette):e.variant===s.VIBRANT?b(e.secondaryPalette,0,e.isDark?90:98):e.isDark?80:b(e.secondaryPalette),isBackground:!0,background:e=>e.platform==="phone"?this.highestSurface(e):this.surfaceContainerHigh(),contrastCurve:e=>e.platform==="phone"?T(4.5):T(7),toneDeltaPair:e=>e.platform==="phone"?new w(this.secondaryContainer(),this.secondary(),5,"relative_lighter",!0,"farther"):void 0});return k(super.secondary(),"2025",t)}secondaryDim(){return c.fromPalette({name:"secondary_dim",palette:t=>t.secondaryPalette,tone:t=>t.variant===s.NEUTRAL?85:b(t.secondaryPalette,0,90),isBackground:!0,background:t=>this.surfaceContainerHigh(),contrastCurve:t=>T(4.5),toneDeltaPair:t=>new w(this.secondaryDim(),this.secondary(),5,"darker",!0,"farther")})}onSecondary(){let t=c.fromPalette({name:"on_secondary",palette:e=>e.secondaryPalette,background:e=>e.platform==="phone"?this.secondary():this.secondaryDim(),contrastCurve:e=>e.platform==="phone"?T(6):T(7)});return k(super.onSecondary(),"2025",t)}secondaryContainer(){let t=c.fromPalette({name:"secondary_container",palette:e=>e.secondaryPalette,tone:e=>e.platform==="watch"?30:e.variant===s.VIBRANT?e.isDark?nt(e.secondaryPalette,30,40):b(e.secondaryPalette,84,90):e.variant===s.EXPRESSIVE?e.isDark?15:b(e.secondaryPalette,90,95):e.isDark?25:90,isBackground:!0,background:e=>e.platform==="phone"?this.highestSurface(e):void 0,toneDeltaPair:e=>e.platform==="watch"?new w(this.secondaryContainer(),this.secondaryDim(),10,"darker",!0,"farther"):void 0,contrastCurve:e=>e.platform==="phone"&&e.contrastLevel>0?T(1.5):void 0});return k(super.secondaryContainer(),"2025",t)}onSecondaryContainer(){let t=c.fromPalette({name:"on_secondary_container",palette:e=>e.secondaryPalette,background:e=>this.secondaryContainer(),contrastCurve:e=>e.platform==="phone"?T(6):T(7)});return k(super.onSecondaryContainer(),"2025",t)}secondaryFixed(){let t=c.fromPalette({name:"secondary_fixed",palette:e=>e.secondaryPalette,tone:e=>{let n=Object.assign({},e,{isDark:!1,contrastLevel:0});return this.secondaryContainer().getTone(n)},isBackground:!0,background:e=>e.platform==="phone"?this.highestSurface(e):void 0,contrastCurve:e=>e.platform==="phone"&&e.contrastLevel>0?T(1.5):void 0});return k(super.secondaryFixed(),"2025",t)}secondaryFixedDim(){let t=c.fromPalette({name:"secondary_fixed_dim",palette:e=>e.secondaryPalette,tone:e=>this.secondaryFixed().getTone(e),isBackground:!0,toneDeltaPair:e=>new w(this.secondaryFixedDim(),this.secondaryFixed(),5,"darker",!0,"exact")});return k(super.secondaryFixedDim(),"2025",t)}onSecondaryFixed(){let t=c.fromPalette({name:"on_secondary_fixed",palette:e=>e.secondaryPalette,background:e=>this.secondaryFixedDim(),contrastCurve:e=>T(7)});return k(super.onSecondaryFixed(),"2025",t)}onSecondaryFixedVariant(){let t=c.fromPalette({name:"on_secondary_fixed_variant",palette:e=>e.secondaryPalette,background:e=>this.secondaryFixedDim(),contrastCurve:e=>T(4.5)});return k(super.onSecondaryFixedVariant(),"2025",t)}tertiary(){let t=c.fromPalette({name:"tertiary",palette:e=>e.tertiaryPalette,tone:e=>e.platform==="watch"?e.variant===s.TONAL_SPOT?b(e.tertiaryPalette,0,90):b(e.tertiaryPalette):e.variant===s.EXPRESSIVE||e.variant===s.VIBRANT?b(e.tertiaryPalette,0,x.isCyan(e.tertiaryPalette.hue)?88:e.isDark?98:100):e.isDark?b(e.tertiaryPalette,0,98):b(e.tertiaryPalette),isBackground:!0,background:e=>e.platform==="phone"?this.highestSurface(e):this.surfaceContainerHigh(),contrastCurve:e=>e.platform==="phone"?T(4.5):T(7),toneDeltaPair:e=>e.platform==="phone"?new w(this.tertiaryContainer(),this.tertiary(),5,"relative_lighter",!0,"farther"):void 0});return k(super.tertiary(),"2025",t)}tertiaryDim(){return c.fromPalette({name:"tertiary_dim",palette:t=>t.tertiaryPalette,tone:t=>t.variant===s.TONAL_SPOT?b(t.tertiaryPalette,0,90):b(t.tertiaryPalette),isBackground:!0,background:t=>this.surfaceContainerHigh(),contrastCurve:t=>T(4.5),toneDeltaPair:t=>new w(this.tertiaryDim(),this.tertiary(),5,"darker",!0,"farther")})}onTertiary(){let t=c.fromPalette({name:"on_tertiary",palette:e=>e.tertiaryPalette,background:e=>e.platform==="phone"?this.tertiary():this.tertiaryDim(),contrastCurve:e=>e.platform==="phone"?T(6):T(7)});return k(super.onTertiary(),"2025",t)}tertiaryContainer(){let t=c.fromPalette({name:"tertiary_container",palette:e=>e.tertiaryPalette,tone:e=>e.platform==="watch"?e.variant===s.TONAL_SPOT?b(e.tertiaryPalette,0,90):b(e.tertiaryPalette):e.variant===s.NEUTRAL?e.isDark?b(e.tertiaryPalette,0,93):b(e.tertiaryPalette,0,96):e.variant===s.TONAL_SPOT?b(e.tertiaryPalette,0,e.isDark?93:100):e.variant===s.EXPRESSIVE?b(e.tertiaryPalette,75,x.isCyan(e.tertiaryPalette.hue)?88:e.isDark?93:100):e.isDark?b(e.tertiaryPalette,0,93):b(e.tertiaryPalette,72,100),isBackground:!0,background:e=>e.platform==="phone"?this.highestSurface(e):void 0,toneDeltaPair:e=>e.platform==="watch"?new w(this.tertiaryContainer(),this.tertiaryDim(),10,"darker",!0,"farther"):void 0,contrastCurve:e=>e.platform==="phone"&&e.contrastLevel>0?T(1.5):void 0});return k(super.tertiaryContainer(),"2025",t)}onTertiaryContainer(){let t=c.fromPalette({name:"on_tertiary_container",palette:e=>e.tertiaryPalette,background:e=>this.tertiaryContainer(),contrastCurve:e=>e.platform==="phone"?T(6):T(7)});return k(super.onTertiaryContainer(),"2025",t)}tertiaryFixed(){let t=c.fromPalette({name:"tertiary_fixed",palette:e=>e.tertiaryPalette,tone:e=>{let n=Object.assign({},e,{isDark:!1,contrastLevel:0});return this.tertiaryContainer().getTone(n)},isBackground:!0,background:e=>e.platform==="phone"?this.highestSurface(e):void 0,contrastCurve:e=>e.platform==="phone"&&e.contrastLevel>0?T(1.5):void 0});return k(super.tertiaryFixed(),"2025",t)}tertiaryFixedDim(){let t=c.fromPalette({name:"tertiary_fixed_dim",palette:e=>e.tertiaryPalette,tone:e=>this.tertiaryFixed().getTone(e),isBackground:!0,toneDeltaPair:e=>new w(this.tertiaryFixedDim(),this.tertiaryFixed(),5,"darker",!0,"exact")});return k(super.tertiaryFixedDim(),"2025",t)}onTertiaryFixed(){let t=c.fromPalette({name:"on_tertiary_fixed",palette:e=>e.tertiaryPalette,background:e=>this.tertiaryFixedDim(),contrastCurve:e=>T(7)});return k(super.onTertiaryFixed(),"2025",t)}onTertiaryFixedVariant(){let t=c.fromPalette({name:"on_tertiary_fixed_variant",palette:e=>e.tertiaryPalette,background:e=>this.tertiaryFixedDim(),contrastCurve:e=>T(4.5)});return k(super.onTertiaryFixedVariant(),"2025",t)}error(){let t=c.fromPalette({name:"error",palette:e=>e.errorPalette,tone:e=>e.platform==="phone"?e.isDark?nt(e.errorPalette,0,98):b(e.errorPalette):nt(e.errorPalette),isBackground:!0,background:e=>e.platform==="phone"?this.highestSurface(e):this.surfaceContainerHigh(),contrastCurve:e=>e.platform==="phone"?T(4.5):T(7),toneDeltaPair:e=>e.platform==="phone"?new w(this.errorContainer(),this.error(),5,"relative_lighter",!0,"farther"):void 0});return k(super.error(),"2025",t)}errorDim(){return c.fromPalette({name:"error_dim",palette:t=>t.errorPalette,tone:t=>nt(t.errorPalette),isBackground:!0,background:t=>this.surfaceContainerHigh(),contrastCurve:t=>T(4.5),toneDeltaPair:t=>new w(this.errorDim(),this.error(),5,"darker",!0,"farther")})}onError(){let t=c.fromPalette({name:"on_error",palette:e=>e.errorPalette,background:e=>e.platform==="phone"?this.error():this.errorDim(),contrastCurve:e=>e.platform==="phone"?T(6):T(7)});return k(super.onError(),"2025",t)}errorContainer(){let t=c.fromPalette({name:"error_container",palette:e=>e.errorPalette,tone:e=>e.platform==="watch"?30:e.isDark?nt(e.errorPalette,30,93):b(e.errorPalette,0,90),isBackground:!0,background:e=>e.platform==="phone"?this.highestSurface(e):void 0,toneDeltaPair:e=>e.platform==="watch"?new w(this.errorContainer(),this.errorDim(),10,"darker",!0,"farther"):void 0,contrastCurve:e=>e.platform==="phone"&&e.contrastLevel>0?T(1.5):void 0});return k(super.errorContainer(),"2025",t)}onErrorContainer(){let t=c.fromPalette({name:"on_error_container",palette:e=>e.errorPalette,background:e=>this.errorContainer(),contrastCurve:e=>e.platform==="phone"?T(4.5):T(7)});return k(super.onErrorContainer(),"2025",t)}surfaceVariant(){let t=Object.assign(this.surfaceContainerHighest().clone(),{name:"surface_variant"});return k(super.surfaceVariant(),"2025",t)}surfaceTint(){let t=Object.assign(this.primary().clone(),{name:"surface_tint"});return k(super.surfaceTint(),"2025",t)}background(){let t=Object.assign(this.surface().clone(),{name:"background"});return k(super.background(),"2025",t)}onBackground(){let t=Object.assign(this.onSurface().clone(),{name:"on_background",tone:e=>e.platform==="watch"?100:this.onSurface().getTone(e)});return k(super.onBackground(),"2025",t)}};var u=class r{constructor(){this.allColors=[this.background(),this.onBackground(),this.surface(),this.surfaceDim(),this.surfaceBright(),this.surfaceContainerLowest(),this.surfaceContainerLow(),this.surfaceContainer(),this.surfaceContainerHigh(),this.surfaceContainerHighest(),this.onSurface(),this.onSurfaceVariant(),this.outline(),this.outlineVariant(),this.inverseSurface(),this.inverseOnSurface(),this.primary(),this.primaryDim(),this.onPrimary(),this.primaryContainer(),this.onPrimaryContainer(),this.primaryFixed(),this.primaryFixedDim(),this.onPrimaryFixed(),this.onPrimaryFixedVariant(),this.inversePrimary(),this.secondary(),this.secondaryDim(),this.onSecondary(),this.secondaryContainer(),this.onSecondaryContainer(),this.secondaryFixed(),this.secondaryFixedDim(),this.onSecondaryFixed(),this.onSecondaryFixedVariant(),this.tertiary(),this.tertiaryDim(),this.onTertiary(),this.tertiaryContainer(),this.onTertiaryContainer(),this.tertiaryFixed(),this.tertiaryFixedDim(),this.onTertiaryFixed(),this.onTertiaryFixedVariant(),this.error(),this.errorDim(),this.onError(),this.errorContainer(),this.onErrorContainer()].filter(t=>t!==void 0)}highestSurface(t){return r.colorSpec.highestSurface(t)}primaryPaletteKeyColor(){return r.colorSpec.primaryPaletteKeyColor()}secondaryPaletteKeyColor(){return r.colorSpec.secondaryPaletteKeyColor()}tertiaryPaletteKeyColor(){return r.colorSpec.tertiaryPaletteKeyColor()}neutralPaletteKeyColor(){return r.colorSpec.neutralPaletteKeyColor()}neutralVariantPaletteKeyColor(){return r.colorSpec.neutralVariantPaletteKeyColor()}errorPaletteKeyColor(){return r.colorSpec.errorPaletteKeyColor()}background(){return r.colorSpec.background()}onBackground(){return r.colorSpec.onBackground()}surface(){return r.colorSpec.surface()}surfaceDim(){return r.colorSpec.surfaceDim()}surfaceBright(){return r.colorSpec.surfaceBright()}surfaceContainerLowest(){return r.colorSpec.surfaceContainerLowest()}surfaceContainerLow(){return r.colorSpec.surfaceContainerLow()}surfaceContainer(){return r.colorSpec.surfaceContainer()}surfaceContainerHigh(){return r.colorSpec.surfaceContainerHigh()}surfaceContainerHighest(){return r.colorSpec.surfaceContainerHighest()}onSurface(){return r.colorSpec.onSurface()}surfaceVariant(){return r.colorSpec.surfaceVariant()}onSurfaceVariant(){return r.colorSpec.onSurfaceVariant()}outline(){return r.colorSpec.outline()}outlineVariant(){return r.colorSpec.outlineVariant()}inverseSurface(){return r.colorSpec.inverseSurface()}inverseOnSurface(){return r.colorSpec.inverseOnSurface()}shadow(){return r.colorSpec.shadow()}scrim(){return r.colorSpec.scrim()}surfaceTint(){return r.colorSpec.surfaceTint()}primary(){return r.colorSpec.primary()}primaryDim(){return r.colorSpec.primaryDim()}onPrimary(){return r.colorSpec.onPrimary()}primaryContainer(){return r.colorSpec.primaryContainer()}onPrimaryContainer(){return r.colorSpec.onPrimaryContainer()}inversePrimary(){return r.colorSpec.inversePrimary()}primaryFixed(){return r.colorSpec.primaryFixed()}primaryFixedDim(){return r.colorSpec.primaryFixedDim()}onPrimaryFixed(){return r.colorSpec.onPrimaryFixed()}onPrimaryFixedVariant(){return r.colorSpec.onPrimaryFixedVariant()}secondary(){return r.colorSpec.secondary()}secondaryDim(){return r.colorSpec.secondaryDim()}onSecondary(){return r.colorSpec.onSecondary()}secondaryContainer(){return r.colorSpec.secondaryContainer()}onSecondaryContainer(){return r.colorSpec.onSecondaryContainer()}secondaryFixed(){return r.colorSpec.secondaryFixed()}secondaryFixedDim(){return r.colorSpec.secondaryFixedDim()}onSecondaryFixed(){return r.colorSpec.onSecondaryFixed()}onSecondaryFixedVariant(){return r.colorSpec.onSecondaryFixedVariant()}tertiary(){return r.colorSpec.tertiary()}tertiaryDim(){return r.colorSpec.tertiaryDim()}onTertiary(){return r.colorSpec.onTertiary()}tertiaryContainer(){return r.colorSpec.tertiaryContainer()}onTertiaryContainer(){return r.colorSpec.onTertiaryContainer()}tertiaryFixed(){return r.colorSpec.tertiaryFixed()}tertiaryFixedDim(){return r.colorSpec.tertiaryFixedDim()}onTertiaryFixed(){return r.colorSpec.onTertiaryFixed()}onTertiaryFixedVariant(){return r.colorSpec.onTertiaryFixedVariant()}error(){return r.colorSpec.error()}errorDim(){return r.colorSpec.errorDim()}onError(){return r.colorSpec.onError()}errorContainer(){return r.colorSpec.errorContainer()}onErrorContainer(){return r.colorSpec.onErrorContainer()}static highestSurface(t){return r.colorSpec.highestSurface(t)}};u.contentAccentToneDelta=15;u.colorSpec=new It;u.primaryPaletteKeyColor=u.colorSpec.primaryPaletteKeyColor();u.secondaryPaletteKeyColor=u.colorSpec.secondaryPaletteKeyColor();u.tertiaryPaletteKeyColor=u.colorSpec.tertiaryPaletteKeyColor();u.neutralPaletteKeyColor=u.colorSpec.neutralPaletteKeyColor();u.neutralVariantPaletteKeyColor=u.colorSpec.neutralVariantPaletteKeyColor();u.background=u.colorSpec.background();u.onBackground=u.colorSpec.onBackground();u.surface=u.colorSpec.surface();u.surfaceDim=u.colorSpec.surfaceDim();u.surfaceBright=u.colorSpec.surfaceBright();u.surfaceContainerLowest=u.colorSpec.surfaceContainerLowest();u.surfaceContainerLow=u.colorSpec.surfaceContainerLow();u.surfaceContainer=u.colorSpec.surfaceContainer();u.surfaceContainerHigh=u.colorSpec.surfaceContainerHigh();u.surfaceContainerHighest=u.colorSpec.surfaceContainerHighest();u.onSurface=u.colorSpec.onSurface();u.surfaceVariant=u.colorSpec.surfaceVariant();u.onSurfaceVariant=u.colorSpec.onSurfaceVariant();u.inverseSurface=u.colorSpec.inverseSurface();u.inverseOnSurface=u.colorSpec.inverseOnSurface();u.outline=u.colorSpec.outline();u.outlineVariant=u.colorSpec.outlineVariant();u.shadow=u.colorSpec.shadow();u.scrim=u.colorSpec.scrim();u.surfaceTint=u.colorSpec.surfaceTint();u.primary=u.colorSpec.primary();u.onPrimary=u.colorSpec.onPrimary();u.primaryContainer=u.colorSpec.primaryContainer();u.onPrimaryContainer=u.colorSpec.onPrimaryContainer();u.inversePrimary=u.colorSpec.inversePrimary();u.secondary=u.colorSpec.secondary();u.onSecondary=u.colorSpec.onSecondary();u.secondaryContainer=u.colorSpec.secondaryContainer();u.onSecondaryContainer=u.colorSpec.onSecondaryContainer();u.tertiary=u.colorSpec.tertiary();u.onTertiary=u.colorSpec.onTertiary();u.tertiaryContainer=u.colorSpec.tertiaryContainer();u.onTertiaryContainer=u.colorSpec.onTertiaryContainer();u.error=u.colorSpec.error();u.onError=u.colorSpec.onError();u.errorContainer=u.colorSpec.errorContainer();u.onErrorContainer=u.colorSpec.onErrorContainer();u.primaryFixed=u.colorSpec.primaryFixed();u.primaryFixedDim=u.colorSpec.primaryFixedDim();u.onPrimaryFixed=u.colorSpec.onPrimaryFixed();u.onPrimaryFixedVariant=u.colorSpec.onPrimaryFixedVariant();u.secondaryFixed=u.colorSpec.secondaryFixed();u.secondaryFixedDim=u.colorSpec.secondaryFixedDim();u.onSecondaryFixed=u.colorSpec.onSecondaryFixed();u.onSecondaryFixedVariant=u.colorSpec.onSecondaryFixedVariant();u.tertiaryFixed=u.colorSpec.tertiaryFixed();u.tertiaryFixedDim=u.colorSpec.tertiaryFixedDim();u.onTertiaryFixed=u.colorSpec.onTertiaryFixed();u.onTertiaryFixedVariant=u.colorSpec.onTertiaryFixedVariant();var D=class r{static maybeFallbackSpecVersion(t,e){switch(e){case s.EXPRESSIVE:case s.VIBRANT:case s.TONAL_SPOT:case s.NEUTRAL:return t;default:return"2021"}}constructor(t){this.sourceColorArgb=t.sourceColorHct.toInt(),this.variant=t.variant,this.contrastLevel=t.contrastLevel,this.isDark=t.isDark,this.platform=t.platform??"phone",this.specVersion=r.maybeFallbackSpecVersion(t.specVersion??"2021",this.variant),this.sourceColorHct=t.sourceColorHct,this.primaryPalette=t.primaryPalette??ht(this.specVersion).getPrimaryPalette(this.variant,t.sourceColorHct,this.isDark,this.platform,this.contrastLevel),this.secondaryPalette=t.secondaryPalette??ht(this.specVersion).getSecondaryPalette(this.variant,t.sourceColorHct,this.isDark,this.platform,this.contrastLevel),this.tertiaryPalette=t.tertiaryPalette??ht(this.specVersion).getTertiaryPalette(this.variant,t.sourceColorHct,this.isDark,this.platform,this.contrastLevel),this.neutralPalette=t.neutralPalette??ht(this.specVersion).getNeutralPalette(this.variant,t.sourceColorHct,this.isDark,this.platform,this.contrastLevel),this.neutralVariantPalette=t.neutralVariantPalette??ht(this.specVersion).getNeutralVariantPalette(this.variant,t.sourceColorHct,this.isDark,this.platform,this.contrastLevel),this.errorPalette=t.errorPalette??ht(this.specVersion).getErrorPalette(this.variant,t.sourceColorHct,this.isDark,this.platform,this.contrastLevel)??p.fromHueAndChroma(25,84),this.colors=new u}toString(){return`Scheme: variant=${s[this.variant]}, mode=${this.isDark?"dark":"light"}, platform=${this.platform}, contrastLevel=${this.contrastLevel.toFixed(1)}, seed=${this.sourceColorHct.toString()}, specVersion=${this.specVersion}`}static getPiecewiseHue(t,e,n){let a=Math.min(e.length-1,n.length),o=t.hue;for(let i=0;i=e[i]&&o=105&&i<125?1.6:2.3));case s.VIBRANT:let m=r.getVibrantNeutralHue(e),d=r.getVibrantNeutralChroma(e,a);return p.fromHueAndChroma(m,d*1.29);default:return super.getNeutralVariantPalette(t,e,n,a,o)}}getErrorPalette(t,e,n,a,o){let i=D.getPiecewiseHue(e,[0,3,13,23,33,43,153,273,360],[12,22,32,12,22,32,22,12]);switch(t){case s.NEUTRAL:return p.fromHueAndChroma(i,a==="phone"?50:40);case s.TONAL_SPOT:return p.fromHueAndChroma(i,a==="phone"?60:48);case s.EXPRESSIVE:return p.fromHueAndChroma(i,a==="phone"?64:48);case s.VIBRANT:return p.fromHueAndChroma(i,a==="phone"?80:60);default:return super.getErrorPalette(t,e,n,a,o)}}},Ie=new Mt,Me=new te;function ht(r){return r==="2025"?Me:Ie}var mt=class r{static of(t){return new r(t,!1)}static contentOf(t){return new r(t,!0)}static fromColors(t){return r.createPaletteFromColors(!1,t)}static contentFromColors(t){return r.createPaletteFromColors(!0,t)}static createPaletteFromColors(t,e){let n=new r(e.primary,t);if(e.secondary){let a=new r(e.secondary,t);n.a2=a.a1}if(e.tertiary){let a=new r(e.tertiary,t);n.a3=a.a1}if(e.error){let a=new r(e.error,t);n.error=a.a1}if(e.neutral){let a=new r(e.neutral,t);n.n1=a.n1}if(e.neutralVariant){let a=new r(e.neutralVariant,t);n.n2=a.n2}return n}constructor(t,e){let n=x.fromInt(t),a=n.hue,o=n.chroma;e?(this.a1=p.fromHueAndChroma(a,o),this.a2=p.fromHueAndChroma(a,o/3),this.a3=p.fromHueAndChroma(a+60,o/2),this.n1=p.fromHueAndChroma(a,Math.min(o/12,4)),this.n2=p.fromHueAndChroma(a,Math.min(o/6,8))):(this.a1=p.fromHueAndChroma(a,Math.max(48,o)),this.a2=p.fromHueAndChroma(a,16),this.a3=p.fromHueAndChroma(a+60,24),this.n1=p.fromHueAndChroma(a,4),this.n2=p.fromHueAndChroma(a,8)),this.error=p.fromHueAndChroma(25,84)}};var Bt=class extends D{constructor(t,e,n,a=D.DEFAULT_SPEC_VERSION,o=D.DEFAULT_PLATFORM){super({sourceColorHct:t,variant:s.CONTENT,contrastLevel:n,isDark:e,platform:o,specVersion:a})}};var Rt=class extends D{constructor(t,e,n,a=D.DEFAULT_SPEC_VERSION,o=D.DEFAULT_PLATFORM){super({sourceColorHct:t,variant:s.EXPRESSIVE,contrastLevel:n,isDark:e,platform:o,specVersion:a})}};var Lt=class extends D{constructor(t,e,n,a=D.DEFAULT_SPEC_VERSION,o=D.DEFAULT_PLATFORM){super({sourceColorHct:t,variant:s.FIDELITY,contrastLevel:n,isDark:e,platform:o,specVersion:a})}};var Ot=class extends D{constructor(t,e,n,a=D.DEFAULT_SPEC_VERSION,o=D.DEFAULT_PLATFORM){super({sourceColorHct:t,variant:s.FRUIT_SALAD,contrastLevel:n,isDark:e,platform:o,specVersion:a})}};var Vt=class extends D{constructor(t,e,n,a=D.DEFAULT_SPEC_VERSION,o=D.DEFAULT_PLATFORM){super({sourceColorHct:t,variant:s.MONOCHROME,contrastLevel:n,isDark:e,platform:o,specVersion:a})}};var Nt=class extends D{constructor(t,e,n,a=D.DEFAULT_SPEC_VERSION,o=D.DEFAULT_PLATFORM){super({sourceColorHct:t,variant:s.NEUTRAL,contrastLevel:n,isDark:e,platform:o,specVersion:a})}};var Ht=class extends D{constructor(t,e,n,a=D.DEFAULT_SPEC_VERSION,o=D.DEFAULT_PLATFORM){super({sourceColorHct:t,variant:s.RAINBOW,contrastLevel:n,isDark:e,platform:o,specVersion:a})}};var Ut=class extends D{constructor(t,e,n,a=D.DEFAULT_SPEC_VERSION,o=D.DEFAULT_PLATFORM){super({sourceColorHct:t,variant:s.TONAL_SPOT,contrastLevel:n,isDark:e,platform:o,specVersion:a})}};var _t=class extends D{constructor(t,e,n,a=D.DEFAULT_SPEC_VERSION,o=D.DEFAULT_PLATFORM){super({sourceColorHct:t,variant:s.VIBRANT,contrastLevel:n,isDark:e,platform:o,specVersion:a})}};var Be={desired:4,fallbackColorARGB:4282549748,filter:!0};function Re(r,t){return r.score>t.score?-1:r.score=15;P--){S.length=0;for(let{hct:f}of g)if(S.find(C=>vt(f.hue,C.hue)=n)break;if(S.length>=n)break}let y=[];S.length===0&&y.push(a);for(let P of S)y.push(P.toInt());return y}};Q.TARGET_CHROMA=48;Q.WEIGHT_PROPORTION=.7;Q.WEIGHT_CHROMA_ABOVE=.3;Q.WEIGHT_CHROMA_BELOW=.1;Q.CUTOFF_CHROMA=5;Q.CUTOFF_EXCITED_PROPORTION=.01;function st(r){let t=gt(r),e=yt(r),n=Pt(r),a=[t.toString(16),e.toString(16),n.toString(16)];for(let[o,i]of a.entries())i.length===1&&(a[o]="0"+i);return"#"+a.join("")}function zt(r){r=r.replace("#","");let t=r.length===3,e=r.length===6,n=r.length===8;if(!t&&!e&&!n)throw new Error("unexpected hex "+r);let a=0,o=0,i=0;return t?(a=tt(r.slice(0,1).repeat(2)),o=tt(r.slice(1,2).repeat(2)),i=tt(r.slice(2,3).repeat(2))):e?(a=tt(r.slice(0,2)),o=tt(r.slice(2,4)),i=tt(r.slice(4,6))):n&&(a=tt(r.slice(2,4)),o=tt(r.slice(4,6)),i=tt(r.slice(6,8))),(255<<24|(a&255)<<16|(o&255)<<8|i&255)>>>0}function tt(r){return parseInt(r,16)}function pe(r,t){let e=t.value,n=e,a=r;t.blend&&(e=Ft.harmonize(n,a));let i=mt.of(e).a1;return{color:t,value:e,light:{color:i.tone(40),onColor:i.tone(100),colorContainer:i.tone(90),onColorContainer:i.tone(10)},dark:{color:i.tone(80),onColor:i.tone(20),colorContainer:i.tone(30),onColorContainer:i.tone(90)}}}var ge={"tonal-spot":Ut,vibrant:_t,expressive:Rt,neutral:Nt,fidelity:Lt,content:Bt,monochrome:Vt,rainbow:Ht,"fruit-salad":Ot},Le=/_palette_key_color$/;function ft(r){process.stderr.write(`${r}
+`),process.exit(1)}var $;try{$=JSON.parse(process.argv[2]??"")}catch{ft('Expected one JSON argument: {"seed": "#rrggbb", "variant": "tonal-spot", ...}')}var ye=/^#[0-9a-f]{6}$/i,Pe=ge[$.variant],de=["2021","2025"],ee=$.spec??"2025";ye.test($.seed??"")||ft(`The seed must be a #rrggbb colour, "${$.seed}" given.`);Pe||ft(`Unknown variant "${$.variant}". Use one of: ${Object.keys(ge).join(", ")}.`);de.includes(ee)||ft(`Unknown spec "${ee}". Use one of: ${de.join(", ")}.`);for(let r of["success","warning","info"])ye.test($[r]??"")||ft(`The ${r} colour must be a #rrggbb colour, "${$[r]}" given.`);var Gt=Number($.contrast??0);Gt>=-1&&Gt<=1||ft(`The contrast level must be between -1 and 1, "${$.contrast}" given.`);var Oe=x.fromInt(zt($.seed)),Ve=new u;function Ce(r){let t=new Pe(Oe,r,Gt,ee),e={};for(let n of Ve.allColors)n&&!Le.test(n.name)&&(e[n.name.replaceAll("_","-")]=st(n.getArgb(t)));return{scheme:t,out:e}}var At=Ce(!1),$t=Ce(!0);for(let r of["success","warning","info"]){let t=pe(zt($.seed),{name:r,value:zt($[r]),blend:!1});for(let[e,n]of[["light",At.out],["dark",$t.out]])n[r]=st(t[e].color),n[`on-${r}`]=st(t[e].onColor),n[`${r}-container`]=st(t[e].colorContainer),n[`on-${r}-container`]=st(t[e].onColorContainer)}for(let r of["error","success","warning","info"])At.out[`inverse-${r}`]=$t.out[r],$t.out[`inverse-${r}`]=At.out[r];process.stdout.write(JSON.stringify({seed:$.seed.toLowerCase(),variant:$.variant,spec:At.scheme.specVersion,contrast:Gt,light:At.out,dark:$t.out}));
/*! Bundled license information:
@material/material-color-utilities/utils/math_utils.js:
diff --git a/src/Console/SchemeCommand.php b/src/Console/SchemeCommand.php
index 8d730df2..01ed43ca 100644
--- a/src/Console/SchemeCommand.php
+++ b/src/Console/SchemeCommand.php
@@ -18,6 +18,7 @@ class SchemeCommand extends Command
protected $signature = 'material:scheme
{seed? : The source colour, as #rrggbb; without it, every profile in livewire-material.profiles}
{--variant=tonal-spot : tonal-spot, vibrant, expressive, neutral, fidelity, content, monochrome, rainbow or fruit-salad}
+ {--spec=2025 : The colour spec: 2025 (M3 Expressive) or 2021 (M3 as it first shipped)}
{--contrast=0 : The contrast level, from -1 to 1}
{--success=#22a06b : The source of the success colour}
{--warning=#e2a400 : The source of the warning colour}
@@ -29,19 +30,44 @@ class SchemeCommand extends Command
*/
protected $description = 'Generate the application\'s Material 3 colour scheme from a seed colour, or every configured colour profile';
+ /**
+ * The colour specs Google's colour utilities know. 2025 is M3 Expressive's colour; the library
+ * falls back to 2021 by itself for the variants 2025 does not define.
+ *
+ * @var list
+ */
+ protected const SPECS = ['2021', '2025'];
+
public function handle(Filesystem $files): int
{
$stylesheet = $this->option('output') ?: resource_path('css/material-scheme.css');
$data = preg_replace('/\.css$/', '', $stylesheet).'.json';
+ $spec = (string) $this->option('spec');
+
+ if (! in_array($spec, self::SPECS, true)) {
+ $this->components->error("Unknown spec \"{$spec}\". Use one of: ".implode(', ', self::SPECS).'.');
+
+ return self::FAILURE;
+ }
if (filled($this->argument('seed'))) {
- $scheme = $this->generate((string) $this->argument('seed'), (string) $this->option('variant'), (float) $this->option('contrast'));
+ $input = [
+ 'seed' => (string) $this->argument('seed'),
+ 'variant' => (string) $this->option('variant'),
+ 'spec' => $spec,
+ 'contrast' => (float) $this->option('contrast'),
+ 'success' => (string) $this->option('success'),
+ 'warning' => (string) $this->option('warning'),
+ 'info' => (string) $this->option('info'),
+ ];
+
+ $scheme = $this->generate($input);
if ($scheme === null) {
return self::FAILURE;
}
- return $this->write($files, $stylesheet, $data, $this->stylesheet($scheme), $scheme);
+ return $this->write($files, $stylesheet, $data, $this->stylesheet($scheme, $input), $scheme);
}
$profiles = config('livewire-material.profiles');
@@ -61,7 +87,16 @@ class SchemeCommand extends Command
return self::FAILURE;
}
- $scheme = $this->generate((string) ($profile['seed'] ?? ''), (string) ($profile['variant'] ?? 'tonal-spot'), (float) ($profile['contrast'] ?? 0), "Profile \"{$name}\": ");
+ // A profile's own spec and state colours win; without them, the command's options apply.
+ $scheme = $this->generate([
+ 'seed' => (string) ($profile['seed'] ?? ''),
+ 'variant' => (string) ($profile['variant'] ?? 'tonal-spot'),
+ 'spec' => (string) ($profile['spec'] ?? $spec),
+ 'contrast' => (float) ($profile['contrast'] ?? 0),
+ 'success' => (string) ($profile['success'] ?? $this->option('success')),
+ 'warning' => (string) ($profile['warning'] ?? $this->option('warning')),
+ 'info' => (string) ($profile['info'] ?? $this->option('info')),
+ ], "Profile \"{$name}\": ");
if ($scheme === null) {
return self::FAILURE;
@@ -83,21 +118,15 @@ class SchemeCommand extends Command
/**
* One scheme from Google's colour utilities, or null once the reason has been shown.
*
+ * @param array{seed: string, variant: string, spec: string, contrast: float, success: string, warning: string, info: string} $input
* @return array{seed: string, variant: string, spec: string, contrast: float, light: array, dark: array}|null
*/
- protected function generate(string $seed, string $variant, float $contrast, string $context = ''): ?array
+ protected function generate(array $input, string $context = ''): ?array
{
$result = Process::run([
config('livewire-material.node', 'node'),
__DIR__.'/../../resources/node/scheme.mjs',
- json_encode([
- 'seed' => $seed,
- 'variant' => $variant,
- 'contrast' => $contrast,
- 'success' => $this->option('success'),
- 'warning' => $this->option('warning'),
- 'info' => $this->option('info'),
- ]),
+ json_encode($input),
]);
if ($result->failed()) {
@@ -130,15 +159,26 @@ class SchemeCommand extends Command
}
/**
+ * The stylesheet, headed by the command that regenerates it: every option that differs from
+ * its default is written out.
+ *
* @param array{seed: string, variant: string, spec: string, contrast: float, light: array, dark: array} $scheme
+ * @param array{seed: string, variant: string, spec: string, contrast: float, success: string, warning: string, info: string} $input
*/
- protected function stylesheet(array $scheme): string
+ protected function stylesheet(array $scheme, array $input): string
{
+ $states = collect(['success', 'warning', 'info'])
+ ->reject(fn (string $state): bool => strtolower($input[$state]) === strtolower((string) $this->getDefinition()->getOption($state)->getDefault()))
+ ->map(fn (string $state): string => sprintf(' --%s="%s"', $state, strtolower($input[$state])))
+ ->implode('');
+
$command = sprintf(
- 'php artisan material:scheme "%s" --variant=%s%s',
+ 'php artisan material:scheme "%s" --variant=%s%s%s%s',
$scheme['seed'],
$scheme['variant'],
+ $input['spec'] !== '2025' ? ' --spec='.$input['spec'] : '',
$scheme['contrast'] != 0 ? ' --contrast='.$scheme['contrast'] : '',
+ $states,
);
$blocks = $this->blocks([':root', "[data-theme='light']"], ["[data-theme='dark']"], $scheme);
@@ -171,10 +211,11 @@ class SchemeCommand extends Command
{
$list = collect($profiles)
->map(fn (array $profile, string $name): string => sprintf(
- ' * %-12s %s, %s%s',
+ ' * %-12s %s, %s%s%s',
$name,
$profile['seed'],
$profile['variant'],
+ $profile['spec'] !== $profiles[$default]['spec'] ? ', spec '.$profile['spec'] : '',
$profile['contrast'] != 0 ? ', contrast '.$profile['contrast'] : '',
))
->implode("\n");
diff --git a/tests/Feature/SchemeCommandTest.php b/tests/Feature/SchemeCommandTest.php
index d958812c..ffa13d8d 100644
--- a/tests/Feature/SchemeCommandTest.php
+++ b/tests/Feature/SchemeCommandTest.php
@@ -56,6 +56,48 @@ it('generates a different scheme per variant', function () {
->and($vibrant['light']['primary'])->not->toBe($tonalSpot['light']['primary']);
});
+it('generates with the 2021 colour spec when asked, and records it', function () {
+ $this->artisan('material:scheme', [
+ 'seed' => '#00bc7d',
+ '--variant' => 'vibrant',
+ '--success' => '#00d390',
+ '--warning' => '#fcb700',
+ '--info' => '#00bafe',
+ '--spec' => '2021',
+ '--output' => $this->stylesheet,
+ ])->assertSuccessful();
+
+ $scheme = json_decode(File::get($this->data), true);
+
+ expect($scheme['spec'])->toBe('2021')
+ ->and($scheme['dark'])->toMatchArray([
+ 'surface' => '#0b1610',
+ 'primary' => '#00e297',
+ 'on-primary' => '#003822',
+ 'success' => '#2ce19c',
+ 'warning' => '#ffbb16',
+ 'info' => '#80cfff',
+ ])
+ ->and($scheme['light'])->toMatchArray([
+ 'surface' => '#f0fdf2',
+ 'primary' => '#006c46',
+ 'success' => '#006c48',
+ 'warning' => '#7c5800',
+ 'info' => '#00658c',
+ ])
+ ->and(File::get($this->stylesheet))
+ ->toContain('(spec 2021)')
+ ->toContain('php artisan material:scheme "#00bc7d" --variant=vibrant --spec=2021 --success="#00d390" --warning="#fcb700" --info="#00bafe"'."\n");
+});
+
+it('refuses an unknown colour spec', function () {
+ $this->artisan('material:scheme', ['seed' => '#4f46e5', '--spec' => '2023', '--output' => $this->stylesheet])
+ ->expectsOutputToContain('Unknown spec "2023". Use one of: 2021, 2025.')
+ ->assertFailed();
+
+ expect(File::exists($this->stylesheet))->toBeFalse();
+});
+
it('refuses a seed that is not a colour', function () {
$this->artisan('material:scheme', ['seed' => 'indigo', '--output' => $this->stylesheet])
->expectsOutputToContain('#rrggbb')
@@ -118,6 +160,38 @@ it('generates every configured profile into one stylesheet keyed by data-scheme'
}
});
+it('takes a profile\'s own spec and state colours, and the command\'s for a profile without them', function () {
+ config([
+ 'livewire-material.profiles' => [
+ 'expressive' => ['seed' => '#00bc7d', 'variant' => 'vibrant'],
+ 'classic' => ['seed' => '#00bc7d', 'variant' => 'vibrant', 'spec' => 2021, 'success' => '#00d390', 'warning' => '#fcb700', 'info' => '#00bafe'],
+ ],
+ ]);
+
+ $this->artisan('material:scheme', ['--info' => '#00bafe', '--output' => $this->stylesheet])->assertSuccessful();
+
+ $profiles = json_decode(File::get($this->data), true)['profiles'];
+
+ expect($profiles['classic'])->spec->toBe('2021')
+ ->and($profiles['classic']['dark'])->toMatchArray(['primary' => '#00e297', 'success' => '#2ce19c', 'warning' => '#ffbb16', 'info' => '#80cfff'])
+ ->and($profiles['expressive'])->spec->toBe('2025')
+ ->and($profiles['expressive']['dark']['primary'])->not->toBe('#00e297')
+ ->and($profiles['expressive']['dark']['success'])->not->toBe('#2ce19c')
+ ->and($profiles['expressive']['dark']['info'])->toBe('#80cfff')
+ ->and(File::get($this->stylesheet))
+ ->toContain('(spec 2025)')
+ ->toMatch('/ \* classic\s+#00bc7d, vibrant, spec 2021\n/')
+ ->toMatch('/ \* expressive\s+#00bc7d, vibrant\n/');
+});
+
+it('names the profile whose spec is unknown', function () {
+ config(['livewire-material.profiles' => ['indigo' => ['seed' => '#4f46e5', 'spec' => '2019']]]);
+
+ $this->artisan('material:scheme', ['--output' => $this->stylesheet])
+ ->expectsOutputToContain('Profile "indigo": Unknown spec "2019"')
+ ->assertFailed();
+});
+
it('names the profile a generator error belongs to', function () {
config(['livewire-material.profiles' => ['indigo' => ['seed' => '#4f46e5'], 'broken' => ['seed' => 'teal']]]);