tweakit 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- import{A as an,B as je,C as ln,D as Pt,E as _t,F as cn,G as Ht,H as dn,I as ut,J as pt,K as Ge,L as ft,M as Nt,O as mt,P as Re,Q as un,R as pn,S as fn,T as mn,U as gn,V as ye,W as gt,X as de,Y as se,d as Xn,e as Yn,f as At,g as B,h as Wt,i as Ut,j as Qt,k as Zt,l as ze,m as en,n as tn,o as nn,p as ct,q as xe,r as on,s as sn,t as k,u as U,v as K,w as rn,x as dt,y as Je,z as Ot}from"./chunk-WWCMYF2Q.js";var De={number:()=>import("./heavy-ZZA3NS5O.js"),interval:()=>import("./interval-4KQVZGAX.js"),color:()=>import("./colour-L2QYS74L.js"),gradient:()=>import("./gradient-AHHDJIIU.js"),shadow:()=>import("./shadow-RAXIV6FG.js"),sides:()=>import("./sides-EI7BN5Q6.js"),tabs:()=>import("./tabs-RM7NR6CO.js"),image:()=>import("./image-ZSAP6BIK.js"),fpsgraph:()=>import("./monitor-5CFBIGGT.js"),monitor:()=>import("./monitor-5CFBIGGT.js"),spring:()=>import("./spring-JGHWZBNF.js"),cubicbezier:()=>import("./bezier-KSA2VTVT.js"),motion:()=>Promise.all([import("./bezier-KSA2VTVT.js"),import("./spring-JGHWZBNF.js")]).then(()=>import("./motion-5UMJIBOJ.js")),point:()=>import("./point-4J4HHM2Z.js"),plot:()=>import("./plot-KQGIWQHO.js")},yt={},Vn=e=>se(e)||!De[e]?null:yt[e]||(yt[e]=De[e]().catch(t=>{throw delete yt[e],console.error(`[tweaks] control chunk "${e}" failed to load:`,t),t})),It=(e,t=new Set)=>{for(let s of e)if(s&&(De[s.type]&&t.add(s.type),s.children&&It(s.children,t),s.pages))for(let o of s.pages)It(o.children,t);return t},$e=e=>{let t=[...It(e)].map(Vn).filter(Boolean);return t.length?Promise.all(t):null};var yn=ye('<path class="tw-copy-back" d="m5.5 16.5-.7-.2q-1.5-.6-2.1-2.1-.2-.7-.2-2.7v-2c0-3.3 0-5 1-6s2.7-1 6-1h2c1.4 0 2 0 2.7.2q1.6.5 2.1 2.1l.2.7"/><path class="tw-copy-front" d="M7.5 14.5c0-3.3 0-5 1-6s2.7-1 6-1 5 0 6 1 1 2.7 1 6 0 5-1 6-2.7 1-6 1-5 0-6-1-1-2.7-1-6"/>',"tw-toolbar-btn__copy"),bn=ye('<path d="m5 14 3.5 3.5L19 6.5"/>',"tw-toolbar-btn__check",2.4),hn=ye('<path d="M3 12a9 9 0 1 0 9-9 9 9 0 0 0-7.6 4.2M3.3 3l.2 2q0 2.2.6 2.7t2.7.2l2-.2"/>'),wn=ye('<path d="m17 17 4 4m-2-10a8 8 0 0 0-16 0 8 8 0 0 0 16 0"/>'),jt=e=>ye('<path d="M18 9s-4.4 6-6 6-6-6-6-6"/>',e,2.5),vn=jt("tw-chevron"),En=ye('<path d="M20.2 13.5q1.8.8 1.8 1.5 0 .8-2.7 2l-5 2.2Q13 20 12 20q-.7 0-2.4-.8l-4.9-2.3Q2 16 2 15t1.8-1.5"/><path class="tw-layer-top" d="M9.6 4.8Q11.3 4 12 4t2.4.8l4.9 2.3Q22 8 22 9c0 .7-.9 1.1-2.7 2l-5 2.2Q13 14 12 14q-.7 0-2.4-.8l-4.9-2.3Q2 10 2 9c0-.7.9-1.1 2.7-2z"/>'),kn=ye('<path d="M18 6 6 18m12 0L6 6"/>',"",2.2),Rt=ye('<circle cx="12" cy="12" r="10"/><path d="M12 16v-4m-.25-3.75a.25.25 0 0 0 .5 0 .25.25 0 0 0-.5 0"/>');var We=(e,t,s)=>{let o=U("tw-toolbar-btn"+(e?" "+e:""),t);return o.title=s,o.setAttribute("aria-label",s),o},wt=(e,t,s)=>{let o=We("tw-toolbar-btn--swap",`<span class="tw-toolbar-btn__icons">${yn}${bn}</span>`,"Copy values (\u21E7: changed only)");return o.addEventListener("click",async r=>{if(o.disabled)return;let[c,l]=s(r.shiftKey);if(!l){he("Nothing has changed",e);return}await Gn(c)?(zn(o),he(l>0?`${l} changed value${l===1?"":"s"} copied`:`${t()} values copied`,e)):he("Copy failed",e)}),o},vt=e=>{let t=We("tw-toolbar-btn--reset",hn,"Reset");return t.addEventListener("click",()=>{t.disabled||(Dt(t),e())}),t},zn=e=>{e.classList.add("is-copied"),clearTimeout(e._t),e._t=setTimeout(()=>e.classList.remove("is-copied"),1400)},Dt=e=>{let t=e.querySelector("svg");e._spinSettle||(e._spinSettle=()=>{clearTimeout(e._t),e.classList.remove("is-spinning"),t.style.transition="none",t.style.setProperty("--tw-spin","0deg"),t.getBoundingClientRect(),t.style.transition=""},t.addEventListener("transitionend",o=>{o.propertyName==="transform"&&e.classList.contains("is-spinning")&&performance.now()-e._spinT>250&&e._spinSettle()})),e._spinT=performance.now(),t.style.setProperty("--tw-spin",`${(parseFloat(t.style.getPropertyValue("--tw-spin"))||0)-360}deg`),e.classList.add("is-spinning"),clearTimeout(e._t);let s=()=>{t.getAnimations&&t.getAnimations().length?e._t=setTimeout(s,250):e._spinSettle()};e._t=setTimeout(s,600)},be=null,Ln=0;function he(e,t){be||(be=k("div","tw-toast tw-portal"),be.setAttribute("role","status")),be.isConnected||document.body.appendChild(be),be.textContent=e,Ht(be,t),be.classList.add("is-open"),clearTimeout(Ln),Ln=setTimeout(()=>be.classList.remove("is-open"),1600)}var V=null,bt=0,ht=null,Cn=e=>{e.key==="Escape"&&Ue()},Ue=e=>{e&&ht&&!e.contains(ht)||(clearTimeout(bt),document.removeEventListener("keydown",Cn),V&&V.classList.remove("is-open"))};function Jn(e,t){V||(V=k("div","tw-tip tw-portal"),V.setAttribute("role","tooltip")),V.isConnected||document.body.appendChild(V),clearTimeout(bt),V.textContent=t,Ht(V,e);let s=V.classList.contains("is-open");V.style.visibility="hidden",V.classList.add("is-open"),ln(e,V,{align:"center",prefer:"above",gap:8}),V.style.visibility="",document.addEventListener("keydown",Cn),ht=e,s||requestAnimationFrame(function o(){if(V.classList.contains("is-open")){if(!ht.isConnected)return Ue();requestAnimationFrame(o)}})}function Mn(){V&&(clearTimeout(bt),bt=setTimeout(Ue,80))}var $t=".tw-slider-label, .tw-row-label, .tw-select-label, .tw-trigger-label, .tw-radiogrid-label, .tw-field-label, .tw-folder-title, .tw-fps-label, .tw-plot-label";function Fe(e,t){let s=e.querySelector($t)||e;if(s===e&&e.classList.contains("tw-separator"))return;let o=s.closest("button"),r=o?k("span","tw-hint",Rt):U("tw-hint",Rt),c=()=>Jn(r,t);if(o){r.setAttribute("aria-hidden","true");let l=o.getAttribute("aria-description");o.setAttribute("aria-description",l?`${l}. ${t}`:t)}else r.setAttribute("aria-label",t),r.addEventListener("focus",c),r.addEventListener("blur",Mn),r.addEventListener("keydown",l=>{(l.key==="Enter"||l.key===" ")&&l.stopPropagation()});r.addEventListener("pointerenter",c),r.addEventListener("pointerleave",Mn),r.addEventListener("pointerdown",l=>l.stopPropagation()),r.addEventListener("click",l=>{l.preventDefault(),l.stopPropagation()}),s.appendChild(r)}async function Gn(e){try{return await navigator.clipboard.writeText(e),!0}catch{}let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.top="-9999px",document.body.appendChild(t),t.focus(),t.select();let s=!1;try{s=document.execCommand("copy")}catch{}return document.body.removeChild(t),s}function Pe(e,t,s=0){if(kt(e))return null;let o=Qn(e,t,s);return o&&t&&typeof t=="object"&&(typeof t.render=="function"&&(o.render=t.render),t.disabled!=null&&(o.disabled=t.disabled),t.hint!=null&&(o.hint=String(t.hint))),o}var we=e=>e&&typeof e=="object",Te=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),kt=e=>e==="__proto__"||e==="constructor"||e==="prototype",ve=(e,t)=>e!==t&&!(we(e)&&we(t)&&JSON.stringify(e)===JSON.stringify(t)),Lt=(e,t,s)=>{e.set(s),e.set(t)},xn=e=>Array.isArray(e.options)&&{type:"radiogrid",options:e.options,value:e.value??xe(e.options[0]),cols:e.cols},Wn=(e,...t)=>{let s=(t.length?t:[0]).map(c=>ct(Number.isFinite(+c)?+c:0)),o=e.min??Math.min(...s.map(c=>c[0])),r=e.max??Math.max(...s.map(c=>c[1]));return{min:o,max:r,step:e.step??ze(o,r)}},Ft=(e,t)=>e.label==null?t:String(e.label),Tn=e=>typeof e=="string"&&e.trim()?e.trim().slice(0,12):void 0,Bt=["stiffness","damping","mass","visualDuration","bounce"],Sn={slider:e=>{let t=Wn(e,e.value??e.min??0);return{value:e.value??t.min,...t,soft:e.soft,unit:Tn(e.unit)}},number:e=>({value:e.value??0,min:e.min,max:e.max,step:e.step??1,soft:e.soft,unit:Tn(e.unit)}),checkbox:e=>({value:!!e.value}),radiogrid:xn,segmented:xn,list:e=>Array.isArray(e.options)&&{options:e.options,value:e.value??xe(e.options[0])},text:e=>({value:e.value??"",rows:e.rows,placeholder:e.placeholder}),spring:e=>{let t=we(e.value)?e.value:e,s={stiffness:t.stiffness??300,damping:t.damping??26,mass:t.mass??1};Number.isFinite(+t.visualDuration)&&(s.visualDuration=+t.visualDuration),Number.isFinite(+t.bounce)&&(s.bounce=+t.bounce);let o=e.mode??t.mode;return(o==="time"||o==="physics")&&(s.mode=o),{value:s}},motion:e=>{let t=typeof e.value=="string"||Array.isArray(e.value)?{...e,curve:e.value}:we(e.value)?e.value:e,s=Bt.some(r=>t[r]!=null),o={curve:"ease",duration:300,...s?{}:{visualDuration:.5,bounce:.2}};for(let r of["mode","curve","duration",...Bt])t[r]!=null&&(o[r]=t[r]);return o.mode!=="easing"&&o.mode!=="spring"&&(o.mode=s?"spring":"easing"),{value:o}},point:e=>{if(!Array.isArray(e.components)||!e.components.length)return!1;let t=new Set,s=e.components.map((o,r)=>{let c=String(o.key??((o.label?String(o.label).toLowerCase():"")||`c${r}`)),l=c,u=2;for(;t.has(l);)l=`${c}-${u++}`;return t.add(l),{...o,key:l}});return{components:s,pad:e.pad,invertY:e.invertY,value:Object.fromEntries(s.map(o=>[o.key,o.value??0]))}},buttongroup:e=>({buttons:e.buttons}),separator:()=>({}),tabs:(e,t)=>{if(!e.pages||typeof e.pages!="object"||!Object.keys(e.pages).length)return!1;let s=new Set;return{pages:Object.entries(e.pages).map(([o,r])=>{let c=o.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tab",l=c,u=2;for(;s.has(l);)l=`${c}-${u++}`;return s.add(l),{key:l,title:o.trim()?o:"Tab",children:Object.entries(r).map(([f,v])=>Pe(f,v,t+1)).filter(Boolean)}})}}},Un=Object.assign(Object.create(null),{list:"options",radiogrid:"options",segmented:"options",point:"components",tabs:"pages"});function Qn(e,t,s=0){if(s>64)return null;let o=At(e),r=(c,l,u=o)=>({type:c,key:e,label:u,...l});if(we(t)&&!Array.isArray(t)&&Te(Sn,t.type)){let c;try{c=Sn[t.type](t,s)}catch(l){return console.error(`[tweaks] malformed "${t.type}" schema value for "${e}" \u2014 control skipped:`,l),null}if(c)return r(String(t.type),c,Ft(t,o));if(Te(t,Un[t.type]))return console.error(`[tweaks] malformed "${t.type}" schema value for "${e}" \u2014 control skipped`),null}else if(we(t)&&!Array.isArray(t)&&typeof t.type=="string"&&(De[t.type]||se(t.type))){let{type:c,label:l,...u}=t;return r(c,u,Ft(t,o))}if(Array.isArray(t)&&Array.isArray(t[0])&&t[0].length===2&&typeof t[0][0]=="number"){let c=Number.isFinite(+t[1])?+t[1]:+t[0][0],l=Number.isFinite(+t[2])?+t[2]:+t[0][1];return r("interval",{value:t[0].map(Number),min:c,max:l,step:t[3]??ze(c,l)})}if(Array.isArray(t)&&t.length<=4&&typeof t[0]=="number"){let c=t[0],[l,u]=ct(c),f=t.length>1?t[1]:l,v=t.length>2?t[2]:u;return r("slider",{value:c,min:f,max:v,step:t[3]??ze(f,v)})}if(typeof t=="number"){let[c,l]=ct(t);return r("slider",{value:t,min:c,max:l,step:ze(c,l)})}return typeof t=="boolean"?r("checkbox",{value:t}):Array.isArray(t)?r("list",{options:t,value:xe(t[0])}):we(t)&&typeof t.action=="function"?r("button",{action:t.action},Ft(t,o)):we(t)&&Array.isArray(t.options)?r("list",{options:t.options,value:t.value??xe(t.options[0])}):Wt(t)?r("color",{value:t}):typeof t=="string"?r("text",{value:t}):we(t)?r("folder",{children:Object.entries(t).filter(([c,l])=>!(c==="render"&&typeof l=="function")&&!((c==="disabled"||c==="hint")&&l!=null)).map(([c,l])=>Pe(c,l,s+1)).filter(Boolean)}):null}var Mt=new Set(["button","fpsgraph","monitor","buttongroup","separator"]),An=e=>({...Object.fromEntries(Bt.map(t=>[t,N(e[t])])),mode:e.mode}),On={slider:e=>({value:N(e.value),min:N(e.min),max:N(e.max),step:N(e.step),soft:Et(e.soft),unit:e.unit}),checkbox:e=>e.options?{type:"radiogrid",options:Qe(e.options),value:e.value,cols:N(e.cols)}:{value:e.checked==="true"},radiogrid:e=>({options:Qe(e.options),value:e.value,cols:N(e.cols)}),list:e=>({options:Qe(e.options),value:e.value}),button:(e,t,s)=>({action:()=>he(`${s} pressed`,t)}),buttongroup:(e,t)=>({buttons:Qe(e.buttons).map(s=>({label:s,action:()=>he(`${s} pressed`,t)}))}),separator:()=>({}),number:e=>({value:N(e.value),min:N(e.min),max:N(e.max),step:N(e.step),unit:e.unit}),text:e=>({value:e.value??"",placeholder:e.placeholder,rows:N(e.rows)}),fpsgraph:e=>({label:e.label??"FPS"}),interval:e=>({value:e.value?e.value.split(",").map(Number):void 0,min:N(e.min),max:N(e.max),step:N(e.step)}),sides:e=>({value:e.value??e,corners:Et(e.corners),unit:e.unit,step:N(e.step),min:N(e.min),max:N(e.max)}),shadow:e=>({value:e.value??{...e,inset:Et(e.inset)}}),spring:An,motion:e=>({...An(e),curve:e.curve&&e.curve.includes(",")?e.curve.split(",").map(Number):e.curve,duration:N(e.duration)}),cubicbezier:e=>({value:e.value?e.value.split(",").map(Number):void 0}),point:e=>{let t=(e.value||"").split(",").map(s=>parseFloat(s));return{components:Qe(e.components||"X,Y").map((s,o)=>({key:s.toLowerCase(),label:s,value:isNaN(t[o])?0:t[o],step:N(e.step),min:N(e.min),max:N(e.max)})),pad:Et(e.pad),invertY:e.invertY==="true"}},plot:e=>({expr:e.expr,xMin:N(e.xmin),xMax:N(e.xmax),yMin:N(e.ymin),yMax:N(e.ymax),samples:N(e.samples),editable:e.editable!=="false"})},N=e=>{if(e==null||e==="")return;let t=+e;return Number.isFinite(t)?t:void 0},Et=e=>e==="true"||e==="",Qe=e=>(e||"").split(",").map(t=>t.trim()).filter(Boolean),Pn=e=>{let t=e.dataset,s=t.tw,o=t.label??At(t.key||s),r=Te(On,s)?On[s](t,e,o):De[s]||se(s)?{...t}:null;return r?Pe("v",{type:s,label:o,...r}):null};var Zn=3,_n=32,Hn=200,Nn=8;function eo(e,t){let s=e.label,{min:o,max:r,step:c}=en(e.min,e.max,e.step);e.soft||([o,r]=Zt(o,r,c));let l=(r-o)/c<=6,u=Number.isFinite(+e.value)?+e.value:o,f=e.soft&&!l?u:B(u,o,r),v=0,T=Ut(c),w=k("div","tw-slider-wrap"),m=k("div","tw-slider"),z=k("div","tw-slider-hashmarks"),P=k("div","tw-slider-fill"),S=k("div","tw-slider-handle"),b=K("span","tw-slider-label",s),E=k("span","tw-slider-value"),F=typeof e.unit=="string"?e.unit.trim():"",et=document.createTextNode(""),ue=F?/^[%°]$/.test(F)?F:" "+F:"";E.append(et),F&&E.append(K("span","tw-slider-unit",ue)),m.append(z,P,S,b,E),w.append(m),m.tabIndex=0,m.setAttribute("role","slider"),m.setAttribute("aria-label",s),m.setAttribute("aria-valuemin",String(o)),m.setAttribute("aria-valuemax",String(r));let X=d=>Qt(d,o,c),Ee=l?Array.from({length:Math.max(0,Math.round((r-o)/c)-1)},(d,O)=>(O+1)*c/(r-o)*100):[];for(let d of Ee){let O=k("div","tw-slider-hashmark");O.style.left=d+"%",z.append(O)}let Q=()=>{let d=B((f-o)/(r-o||1)*100,0,100),O=v?` + ${v.toFixed(1)}px`:"",H=`${d}%${O}`;P.style.width=v?`calc(${H})`:d+"%",S.style.left=`max(5px, calc(${H} - 9px))`;let _=X(f),R=_.toFixed(T);et.data=R,m.setAttribute("aria-valuenow",String(_)),m.setAttribute("aria-valuetext",R+ue);let ne=w.offsetWidth;if(ne){let ce=Math.max(5,d/100*ne+v-9);m.classList.toggle("is-dodge",nn(b,E,ce,3))}};Q();let $=null,tt=1,Y=null,ke=!0,Ke,pe=null,Le=null,nt=`width 0.34s ${Nt}`,y=`left 0.34s ${Nt}, opacity 0.15s, transform 0.2s ${ft}`,W=.2,re=d=>{if(!$)return f;let O=w.offsetWidth||$.width,H=B((d-$.left)/tt/O,0,1);return B(o+H*(r-o),o,r)},_e=d=>{let O=0;d<$.left?O=-Nn*Math.sqrt(Math.min(Math.max(0,$.left-d-_n)/Hn,1)):d>$.right&&(O=Nn*Math.sqrt(Math.min(Math.max(0,d-$.right-_n)/Hn,1))),m.style.width=`calc(100% + ${Math.abs(O)}px)`,m.style.transform=O<0?`translateX(${O}px)`:""},Me=(d,O=!0)=>{d=+d,Number.isFinite(d)&&(f=l?B(X(d),o,r):e.soft?d:B(d,o,r),Q(),O&&t(X(f)))},Ce=Math.max(1,Math.round((r-o)/c)),ot=.2,st=.3,Xe=520,ie=27,Z=d=>(d-o)/c,q=0,j=0,ee=0,ae=!1,fe=null,Se=f,me=0,te=()=>{ee&&cancelAnimationFrame(ee),ee=0,me=0},le=d=>{if(!m.isConnected){te();return}let O=me?Math.min((d-me)/1e3,.05):1/60;me=d;let H=w.offsetWidth||$&&$.width||1,_=Z(B(Se,o,r)),R=B(Math.round(_+ot),0,Ce),ne=ae?R+st*B(_-R,-.5,.5):R;if(Ge&&Ge.matches)q=ne,j=0;else{let ce=O,Ct=1/240;for(;ce>1e-4;){let Oe=Math.min(Ct,ce);ce-=Oe;let Ye=Xe*(ne-q)-ie*j;j+=Ye*Oe,q+=j*Oe,q<0&&(q=0,j=0),q>Ce&&(q=Ce,j=0)}}v=(q-R)*c/(r-o||1)*H,f=B(o+R*c,o,r),Q(),R!==fe&&(fe=R,t(X(f))),!ae&&Math.abs(j)<.004&&Math.abs(q-R)<.004?(q=R,j=0,v=0,Q(),te(),m.classList.remove("is-active")):ee=requestAnimationFrame(le)},G=d=>{q=Z(f),j=0,ae=!0,fe=Math.round(Z(f)),Se=re(d),ee||(ee=requestAnimationFrame(le))};m.addEventListener("pointerdown",d=>{if(!E.classList.contains("is-editing")&&!(d.button!==0||Y)){d.preventDefault(),m.focus({focusVisible:!1}),Le=d.pointerId;try{d.target.setPointerCapture(d.pointerId)}catch{}clearTimeout(Ke),m.style.transition="",Y={x:d.clientX,y:d.clientY},ke=!0,m.classList.add("is-active"),$=w.getBoundingClientRect(),tt=$.width/(w.offsetWidth||$.width),l?(P.style.transition="",S.style.transition="",G(d.clientX)):(P.style.transition=nt,S.style.transition=y,Me(re(d.clientX)))}}),m.addEventListener("pointermove",d=>{if(!(!Y||d.pointerId!==Le)){if(d.buttons===0){ge();return}if(ke&&Math.hypot(d.clientX-Y.x,d.clientY-Y.y)>Zn&&(ke=!1,m.classList.add("is-dragging"),l||(P.style.transition="",S.style.transition="")),!ke)if(_e(d.clientX),l)Se=re(d.clientX);else{let O;if(d.altKey){pe||(pe={x:d.clientX,v:f});let H=w.offsetWidth||$.width;O=B(pe.v+(d.clientX-pe.x)/H*(r-o)*W,o,r)}else pe=null,O=re(d.clientX);Me(O)}d.clientX>=$.left&&d.clientX<=$.right&&(m.style.width="",m.style.transform="")}});let ge=d=>{!Y||d&&d.pointerId!==Le||(l?(ae=!1,m.classList.remove("is-dragging"),ee||(ee=requestAnimationFrame(le))):(Ke=setTimeout(()=>{P.style.transition="",S.style.transition=""},360),m.classList.remove("is-active","is-dragging")),m.style.transition=`width 0.35s ${ft}, transform 0.35s ${ft}`,m.style.width="",m.style.transform="",setTimeout(()=>{m.style.transition=""},360),Y=null,pe=null,Le=null)};m.addEventListener("pointerup",ge),m.addEventListener("pointercancel",ge),m.addEventListener("lostpointercapture",ge),an(m,Q),dt(Q),Je(m,[[window,"resize"]],Q),m.addEventListener("keydown",d=>{if(d.target!==m||Y)return;let O=tn(d,f,c,o,r,(r-o)/10||c*10);O!=null&&(d.preventDefault(),l&&(te(),v=0,m.classList.remove("is-active")),Me(B(O,o,r)))});let He;E.addEventListener("mouseenter",()=>{He=setTimeout(()=>E.classList.add("is-editable"),800)}),E.addEventListener("mouseleave",()=>{clearTimeout(He),E.classList.contains("is-editing")||E.classList.remove("is-editable")}),E.addEventListener("pointerdown",d=>{d.pointerType&&d.pointerType!=="mouse"?(E.classList.add("is-editable"),d.stopPropagation()):E.classList.contains("is-editable")&&d.stopPropagation()});let Ae=()=>{if(E.classList.contains("is-editing"))return;let d=k("input","tw-slider-input");d.type="text",d.inputMode="decimal",je(d),d.value=X(f).toFixed(T),E.classList.add("is-editing"),E.replaceWith(d),d.focus(),d.select();let O=()=>{d.replaceWith(E),E.classList.remove("is-editing","is-editable")},H=()=>{let _=parseFloat(d.value);isNaN(_)||Me(e.soft?_:B(_,o,r)),O()};d.addEventListener("pointerdown",_=>_.stopPropagation()),d.addEventListener("blur",H),d.addEventListener("keydown",_=>{_.key==="Enter"?(d.removeEventListener("blur",H),m.focus(),H()):_.key==="Escape"&&(_.stopPropagation(),d.removeEventListener("blur",H),m.focus(),O())})};return E.addEventListener("click",()=>{E.classList.contains("is-editable")&&Ae()}),m.addEventListener("keydown",d=>{d.key==="Enter"&&d.target===m&&!Y&&(d.preventDefault(),Ae())}),{el:w,set:d=>Me(d,!1),get:()=>X(f)}}function to(e,t){let s=k("div","tw-row"),o=gn([{value:"off",label:"Off"},{value:"on",label:"On"}],e.value?"on":"off",r=>t(r==="on"),e.label);return s.append(K("span","tw-row-label",e.label),o.el),{el:s,set:r=>o.set(r?"on":"off"),get:()=>o.get()==="on"}}function no(e,t){let s=e.options||[],o=Math.min(3,Math.max(2,e.cols||(s.length<=3?s.length:s.length===4?2:3))),r=k("div","tw-radiogrid"),c=k("div","tw-radiogrid-grid");c.style.setProperty("--tw-rg-cols",o),c.setAttribute("role","radiogroup"),c.setAttribute("aria-label",e.label);let l=e.value??xe(s[0]),u=s.map(T=>{let w=fn("tw-radiogrid-btn",T,m=>v(m));return c.append(w),w}),f=()=>pn(u,l),v=(T,w=!0)=>{T!=null&&!u.some(m=>m._twVal===T)||(l=T,f(),w&&t(T))};return c.addEventListener("keydown",T=>{let w=un(u,l);if(w<0)return;let m=mn(T.key,w,u.length,o);m<0||(T.preventDefault(),m!==w&&(v(u[m]._twVal),u[m].focus()))}),f(),r.append(K("span","tw-radiogrid-label",e.label),c),{el:r,set:T=>v(T,!1),get:()=>l}}var oo=/^(?:#[0-9a-f]{3,8}|[a-z]+|(?:oklch|oklab|rgba?|hsla?|hwb|lab|lch|color|var)\([^()]*\))$/i,so=jt("tw-select-chevron");function ro(e,t){let s=e.value,o=e.options.map(b=>({value:xe(b),label:sn(b),color:b&&typeof b=="object"&&typeof b.color=="string"&&oo.test(b.color.trim())?b.color.trim():""})),r=k("div","tw-select"),c=U("tw-select-trigger");c.setAttribute("aria-haspopup","listbox"),c.setAttribute("aria-expanded","false");let l=k("span","tw-select-right"),u=b=>`linear-gradient(${b}, ${b}), var(--tw-checker)`,f=b=>{let E=k("span","tw-option-swatch");return E.style.background=u(b),E},v=k("span","tw-option-swatch"),T=k("span","tw-select-value");l.append(v,T),l.insertAdjacentHTML("beforeend",so),c.append(K("span","tw-select-label",e.label),l);let w=k("div","tw-select-dropdown");w.setAttribute("role","listbox");let m=o.map(b=>{let E=U("tw-select-option");return E.setAttribute("role","option"),b.color&&E.append(f(b.color)),E.append(K("span","tw-option-label",b.label)),E.dataset.value=b.value,E.addEventListener("click",()=>{P(b.value),S.close()}),w.append(E),E});r.append(c,w);let z=()=>{let b=o.find(E=>E.value===s);T.textContent=b?.label??s,v.style.display=b?.color?"":"none",b?.color&&(v.style.background=u(b.color)),m.forEach(E=>{let F=E.dataset.value===String(s);E.dataset.selected=String(F),E.setAttribute("aria-selected",String(F))})},P=(b,E=!0)=>{b!=null&&!o.some(F=>F.value===b)||(s=b,z(),E&&t(b))},S=ut(r,c,w,{width:"match",fallbackH:200,gap:4,onOpen:()=>(m.find(b=>b.dataset.value===String(s))||m[0])?.focus()});return c.addEventListener("keydown",b=>{!S.isOpen()&&(b.key==="ArrowDown"||b.key==="ArrowUp")&&(b.preventDefault(),S.open())}),w.addEventListener("keydown",b=>{let E=m.indexOf(document.activeElement),F=E;if(b.key==="ArrowDown")F=E<0?0:Math.min(m.length-1,E+1);else if(b.key==="ArrowUp")F=E<0?m.length-1:Math.max(0,E-1);else if(b.key==="Home")F=0;else if(b.key==="End")F=m.length-1;else return;b.preventDefault(),m[F]?.focus()}),z(),{el:r,set:b=>P(b,!1),get:()=>s}}function io(e){let t=K("button","tw-button",e.label);return t.addEventListener("click",()=>e.action&&e.action()),gt(t)}function ao(e){let t=k("div","tw-row tw-buttongroup");e.label&&t.append(K("span","tw-row-label",e.label));let s=k("div","tw-buttongroup-btns"),o=Array.isArray(e.buttons)?e.buttons.map(r=>[r.label??"Button",r.action]):Object.entries(e.buttons||{});for(let[r,c]of o){let l=K("button","tw-buttongroup-btn",r);l.addEventListener("click",()=>typeof c=="function"&&c()),s.append(l)}return t.append(s),gt(t)}var lo=()=>gt(k("div","tw-separator"));function co(e,t){let s=f=>f==null?"":typeof f=="object"?on(f):String(f),o=s(e.value),r=e.rows>0,c=k("div",r?"tw-row tw-row-multiline":"tw-row"),l=k(r?"textarea":"input",r?"tw-text tw-textarea":"tw-text");r?l.rows=e.rows:l.type="text",l.value=o,je(l),e.placeholder&&(l.placeholder=e.placeholder),l.addEventListener("input",()=>{o=l.value,t(o)});let u=()=>{let f=l.scrollHeight-l.clientHeight>1;l.classList.toggle("is-clip-top",f&&l.scrollTop>1),l.classList.toggle("is-clip-bottom",f&&l.scrollTop+l.clientHeight<l.scrollHeight-1)};return r&&(l.addEventListener("scroll",u),l.addEventListener("input",u),typeof ResizeObserver=="function"&&new ResizeObserver(u).observe(l)),c.append(K("span","tw-row-label",e.label),l),{el:c,set:f=>{o=s(f),l.value=o,r&&u()},get:()=>o}}function Ze(e){let t=k("div","tw-folder"),s=U("tw-folder-header");s.setAttribute("aria-expanded","true"),s.append(K("span","tw-folder-title",e.label)),s.insertAdjacentHTML("beforeend",vn);let o=k("div","tw-folder-body"),r=k("div","tw-controls");o.append(r),t.append(s,o);let c=l=>Re(t,s,o,l);return s.addEventListener("click",()=>c(!t.classList.contains("is-collapsed"))),{el:t,body:r,setCollapsed:c}}function Be(e,t){let s=se(e.type);if(!s)return null;try{return s(e,t)}catch(o){return console.error("[tweaks] control failed to build:",e&&e.type,o),null}}de("slider",eo);de("checkbox",to);de("radiogrid",no);de("list",ro);de("button",io);de("buttongroup",ao);de("separator",lo);de("text",co);de("folder",Ze);var qe=null;function uo(e,t,s={}){let o=Object.entries(t).filter(([n])=>n!=="_last"||(console.warn('[tweaks] "_last" is reserved (the changed-key channel) \u2014 schema entry skipped'),!1)).map(([n,i])=>Pe(n,i)).filter(Boolean),r={},c=[],l=new Set,u=new Set,f=[],v=!1,T=!1,w=[],m=new Map,z=!1,P=-1,S=n=>{if(!v){if(z){console.warn("[tweaks] call ignored \u2014 the panel could not be built");return}T?n():w.push(n)}},b=null,E=function(n,i){return n==="_last"&&this===r?void 0:i===void 0?null:typeof i=="bigint"?String(i):i},F=!1,et=()=>{let n={};for(let i of c){let a=n;for(let g of i.path.slice(0,-1))a=a[g]||(a[g]={});a[i.key]=i.get()}return JSON.parse(JSON.stringify(n,E))},ue=()=>{try{return JSON.parse(JSON.stringify(r,E))}catch(n){return F||(F=!0,console.warn("[tweaks] a value parked on params can't be serialised \u2014 snapshots carry the controls' values only:",n)),et()}},X=s.persist?`tw:${s.persist===!0?e:s.persist}`:null,Ee=X?`${X}:presets`:null,Q=n=>{try{return JSON.parse(localStorage.getItem(n)||"null")}catch{return null}},$=(n,i)=>{try{localStorage.setItem(n,JSON.stringify(i))}catch{}},tt=X?(()=>{let n=0,i=()=>{n=0,$(X,ue())};return f.push(()=>{n&&(clearTimeout(n),i())}),()=>{clearTimeout(n),n=setTimeout(i,150)}})():()=>{},Y=()=>{u.forEach(n=>{try{n(r,r._last)}catch(i){console.error("[tweaks] listener threw:",i)}}),v||tt()},ke=n=>typeof n=="function"||typeof n=="symbol"||typeof n=="bigint",Ke=(n,i)=>{if(ke(i))throw new TypeError(`a ${typeof i} is not a control value`);n.set(i),n.target[n.key]=n.get()},pe=n=>{Lt(n,n.raw,n.def),n.target[n.key]=n.get()},Le=!1,nt=()=>{if(typeof s.onReset=="function"&&!Le){Le=!0;try{return s.onReset()}finally{Le=!1}}for(let n of c)try{pe(n)}catch(i){console.error(`[tweaks] resetting "${n.path.join(".")}" failed \u2014 control skipped:`,i)}r._last=void 0,Y()},y=k("div","tw-panel");y.dataset.mode="inline",rn(y);let W=k("div","tw-header"),re=U("tw-header-toggle");re.setAttribute("aria-expanded","true");let _e=e,Me=K("span","tw-title",_e);re.append(Me);let Ce=k("div","tw-toolbar"),ot=()=>{let n={};for(let i of c)ve(i.get(),i.def)&&(n[i.path.join(".")]=i.get());return JSON.parse(JSON.stringify(n,E))},st=wt(y,()=>_e,n=>{if(!n)return[JSON.stringify(ue(),null,2),-1];let i=ot();return[JSON.stringify(i,null,2),Object.keys(i).length]}),Xe=vt(nt),ie=null;X&&(ie=We("",En,"Presets"),ie.setAttribute("aria-haspopup","menu"),ie.setAttribute("aria-expanded","false"),Ce.append(ie));let Z=!!s.filter&&(s.toolbar!==!1||(console.warn("[tweaks] opts.filter needs the toolbar (its search button lives there) \u2014 ignored alongside toolbar:false"),!1)),q=Z?We("",wn,"Filter controls"):null,j=Z?k("input","tw-search"):null;Z&&(j.type="text",j.placeholder="Filter\u2026",j.spellcheck=!1,j.setAttribute("aria-label","Filter controls"),je(j),Ce.append(q)),Ce.append(st,Xe),W.append(re),Z&&W.append(j),s.toolbar!==!1&&W.append(Ce);let ee=[st,Xe,ie,q].filter(Boolean);for(let n of ee)n.disabled=!0;let ae=!1,fe=!1;W.addEventListener("click",n=>{fe&&(fe=!1,n.preventDefault(),n.stopPropagation())},!0),re.addEventListener("click",()=>{Re(y,re,Se,!y.classList.contains("is-collapsed")),y.dataset.mode==="floating"&&setTimeout(()=>{y.dataset.mode==="floating"&&y.isConnected&&(ne(),R())},270)});let Se=k("div","tw-body"),me=k("div","tw-controls");Se.append(me),y.append(W,Se);let te=Pt(s.theme);_t(y,te),y._twTheme=te;let le=s.draggable!==!1,G=8,ge=28,He=()=>({maxX:Math.max(G,window.innerWidth-y.offsetWidth-G),maxY:Math.max(G,window.innerHeight-y.offsetHeight-G)}),Ae=X?`${X}:pos`:null,d=(le||s.floating)&&Ae?Q(Ae):null,O=d||(typeof s.floating=="object"?s.floating:null)||{x:16,y:16},H=+O.x||16,_=+O.y||16,R=()=>{y.style.left=H+"px",y.style.top=_+"px"},ne=()=>{let{maxX:n,maxY:i}=He();H=B(H,G,n),_=B(_,G,i)};(le||s.floating)&&(s.floating||d)&&(y.dataset.mode="floating",ne(),R(),requestAnimationFrame(()=>{!v&&y.dataset.mode==="floating"&&y.isConnected&&(ne(),R())}));let ce=n=>{pe(n),r._last=n.key,Y()},Ct=(n,i)=>{let a=n.querySelector(".tw-slider-value")||n.querySelector($t)||n;a.classList.add("tw-resettable"),a.title="Double-click or hold to reset";let g=0,x=0,h=0,C=!1,L=()=>{g&&(clearTimeout(g),g=0,a.classList.remove("tw-reset-holding"))};a.addEventListener("pointerdown",p=>{p.stopPropagation(),C=!1,!(p.pointerType!=="touch"&&p.pointerType!=="pen")&&(x=p.clientX,h=p.clientY,a.classList.add("tw-reset-holding"),g=setTimeout(()=>{g=0,a.classList.remove("tw-reset-holding","is-editable"),C=!0,ce(i)},500))}),a.addEventListener("pointermove",p=>{g&&Math.abs(p.clientX-x)+Math.abs(p.clientY-h)>8&&L()}),a.addEventListener("pointerup",L),a.addEventListener("pointercancel",L),a.addEventListener("pointerleave",L),a.addEventListener("contextmenu",p=>{C&&p.preventDefault()}),a.addEventListener("click",p=>{C&&(p.preventDefault(),p.stopImmediatePropagation(),C=!1)},!0),a.addEventListener("dblclick",p=>{a===n&&p.target.closest&&p.target.closest("input, textarea")||(p.preventDefault(),p.stopPropagation(),ce(i))}),a.classList.contains("tw-slider-value")&&n.addEventListener("dblclick",p=>{let A=p.target;!A.classList||!A.classList.contains("tw-slider-input")||(p.preventDefault(),p.stopPropagation(),A.blur(),ce(i))}),n.addEventListener("keydown",p=>{!p.altKey||p.metaKey||p.ctrlKey||p.key!=="Backspace"&&p.key!=="Delete"||(p.preventDefault(),p.stopPropagation(),p.target.classList&&p.target.classList.contains("tw-slider-input")&&p.target.blur(),ce(i))})},Oe=[],Ye=(n,i)=>{i.hint&&Fe(n,i.hint),(i.render||i.disabled!=null)&&Oe.push({node:n,m:i})},xt=[],Tt=[],rt=[],it=[],Dn=n=>{typeof n.destroy=="function"&&f.push(n.destroy)},St=(n,i,a,g=[],x=null)=>{for(let h of i){if(h.type==="tabs"){let p={};l.add(p),a[h.key]=p;let A=se("tabs"),M=A&&A(h);if(!M)continue;it.push({path:[...g,h.key],ctrl:M,pageKeys:h.pages.map(I=>I.key)}),h.pages.forEach((I,J)=>{let oe={};l.add(oe),p[I.key]=oe,St(M.bodies[J],I.children,oe,[...g,h.key,I.key])}),Ye(M.el,h),n.append(M.el);continue}if(h.type==="folder"){let p={};l.add(p),a[h.key]=p;let A=Ze(h);rt.push({path:[...g,h.key],el:A.el,setCollapsed:A.setCollapsed});let M=Z?{el:A.el,label:h.label,body:A.body}:null;M&&Tt.push(M),St(A.body,h.children,p,[...g,h.key],M),Ye(A.el,h),n.append(A.el);continue}let C=!Mt.has(h.type),L=Be(h,C?p=>{ve(a[h.key],p)&&(a[h.key]=p,r._last=h.key,Y())}:()=>{});if(L){if(Dn(L),C){let p=L.get();Te(a,h.key)&&L.set(a[h.key]),a[h.key]=L.get();let A={target:a,key:h.key,set:L.set,get:L.get,raw:h.value,def:p,path:[...g,h.key]};c.push(A),Ct(L.el,A)}Ye(L.el,h),Z&&h.type!=="separator"&&xt.push({el:L.el,label:h.label,folder:x}),n.append(L.el)}}};if(Z){let n=a=>{let g=a.trim().toLowerCase(),x=!1,h=(C,L)=>{!L&&C.classList.contains("tw-filter-hidden")&&(x=!0),C.classList.toggle("tw-filter-hidden",L)};if(!g)xt.forEach(C=>h(C.el,!1)),Tt.forEach(C=>h(C.el,!1));else{for(let C of xt){let L=C.folder&&pt(C.folder.label,g);h(C.el,!(pt(C.label,g)||L))}for(let C of Tt.slice().reverse()){let L=[...C.body.children].some(p=>!p.classList.contains("tw-filter-hidden"));h(C.el,!(pt(C.label,g)||L))}}x&&Ot()},i=()=>{y.classList.remove("is-searching"),j.value="",n("")};q.addEventListener("click",()=>{q.disabled||(y.classList.toggle("is-searching")?(j.focus(),j.select()):i())}),j.addEventListener("input",()=>n(j.value)),j.addEventListener("keydown",a=>{a.key==="Escape"&&(i(),q.focus())})}let $n=(n,i)=>i.reduce((a,g)=>a?.[g],n),Fn=new Set(o.map(n=>n.key)),at=(n,i=!0)=>{if(!(!n||typeof n!="object")){for(let a of c){let g=$n(n,a.path);if(g!==void 0)try{Ke(a,g)}catch(x){console.error(`[tweaks] restoring "${a.path.join(".")}" failed \u2014 value skipped:`,x)}}for(let a of Object.keys(n))if(!Fn.has(a)&&a!=="_last"&&Te(r,a)&&!kt(a)&&!ke(n[a]))try{r[a]=n[a]}catch(g){console.error(`[tweaks] restoring "${a}" failed \u2014 value skipped:`,g)}r._last=void 0,i&&Y()}},Ne=()=>{let n=Ee?Q(Ee):null;return Object.assign(Object.create(null),n&&typeof n=="object"?n:{})},Kt=n=>{let i=Ne();i[n]=ue(),$(Ee,i)},Xt=n=>{let i=Ne();i[n]&&at(i[n])},Yt=n=>{let i=Ne();delete i[n],$(Ee,i)},lt=n=>n.map(i=>String(i).replace(/~/g,"~1").replace(/\./g,"~0")).join("."),Bn=()=>{let n={};if(rt.length){let i={};for(let a of rt)i[lt(a.path)]=a.el.classList.contains("is-collapsed");n.folders=i}if(it.length){let i={};for(let a of it)i[lt(a.path)]=a.pageKeys[a.ctrl.active()]??null;n.tabs=i}return n},qn=n=>{if(!(!n||typeof n!="object")){if(n.folders)for(let i of rt){let a=n.folders[lt(i.path)];typeof a=="boolean"&&i.setCollapsed(a)}if(n.tabs)for(let i of it){let a=i.pageKeys.indexOf(n.tabs[lt(i.path)]);a>=0&&a!==i.ctrl.active()&&i.ctrl.activate(a)}}};if(le||s.floating){if(le){y.dataset.draggable="true";let M=k("span","tw-grabber");M.setAttribute("aria-hidden","true"),W.prepend(M)}let n=()=>{if(y.dataset.mode==="floating")return;let M=y.getBoundingClientRect();if(H=M.left,_=M.top,y.parentNode&&(b=k("span","tw-lift-slot"),b.style.width=M.width+"px",b.style.height=M.height+"px",b.setAttribute("aria-hidden","true"),y.before(b)),cn(y,y),document.body.appendChild(y),y.dataset.mode="floating",R(),b&&typeof MutationObserver=="function"){let I=new MutationObserver(()=>{b&&!b.isConnected&&(I.disconnect(),b=null,y.remove())});I.observe(document.documentElement,{childList:!0,subtree:!0}),f.push(()=>I.disconnect())}},i=()=>{qe&&qe!==y&&(qe.style.zIndex=""),y.style.zIndex="99991",qe=y},a=null,g=0,x=0,h=0,C=0,L=M=>{for(let[I,J]of[["pointermove",p],["pointerup",A],["pointercancel",A]])M?document.addEventListener(I,J,!0):document.removeEventListener(I,J,!0)};le&&W.addEventListener("pointerdown",M=>{if(!(M.button!==0||a!==null||M.target.closest(".tw-toolbar, input, textarea, select"))&&(a=M.pointerId,g=M.clientX,x=M.clientY,ae=!1,L(!0),y.classList.add("is-grabbing"),y.style.transition)){let I=getComputedStyle(y);H=parseFloat(I.left)||H,_=parseFloat(I.top)||_,y.style.transition="",R()}});let p=M=>{if(M.pointerId!==a)return;if(M.buttons===0){A(M);return}let I=M.clientX-g,J=M.clientY-x;if(!ae){if(Math.abs(I)+Math.abs(J)<4)return;ae=!0,n(),i(),h=H,C=_;try{W.setPointerCapture(a)}catch{}y.classList.add("is-dragging")}let{maxX:oe,maxY:D}=He();H=B(h+I,G,oe),_=B(C+J,G,D),R()},A=M=>{if(M.pointerId===a){try{W.releasePointerCapture(a)}catch{}if(a=null,L(!1),fe=ae,fe&&setTimeout(()=>{fe=!1},0),ae){let{maxX:I,maxY:J}=He();H<=G+ge?H=G:H>=I-ge&&(H=I),_<=G+ge?_=G:_>=J-ge&&(_=J),Ge.matches||(y.style.transition="left 0.32s var(--tw-ease-spring), top 0.32s var(--tw-ease-spring)",setTimeout(()=>{y.style.transition=""},340)),R(),Ae&&$(Ae,{x:H,y:_})}y.classList.remove("is-dragging","is-grabbing")}};W.addEventListener("lostpointercapture",A),f.push(()=>L(!1))}let Kn=()=>{(le||s.floating)&&(y.dataset.mode==="floating"&&(ne(),R()),f.push(Je(y,[[window,"resize"]],()=>{y.dataset.mode==="floating"&&(ne(),R())})))};if(ie){let n=k("div","tw-presets-menu"),i=k("div","tw-presets-save"),a=k("input","tw-presets-input");a.type="text",a.placeholder="Preset name\u2026",a.spellcheck=!1,a.setAttribute("aria-label","New preset name"),je(a);let g=K("button","tw-presets-savebtn","Save");i.append(a,g);let x=k("div","tw-presets-list");n.append(i,x);let h=()=>{let p=Ne(),A=Object.keys(p);if(x.replaceChildren(),!A.length)return x.append(K("div","tw-presets-empty","No presets yet"));for(let M of A){let I=k("div","tw-presets-row"),J=K("button","tw-presets-load",M);J.addEventListener("click",()=>{Xt(M),L.close(),he(`Loaded \u201C${M}\u201D`,y)});let oe=U("tw-presets-del",kn);oe.setAttribute("aria-label",`Delete preset ${M}`),oe.addEventListener("click",D=>{D.stopPropagation(),Yt(M),h()}),I.append(J,oe),x.append(I)}},C=()=>{let p=a.value.trim();if(!p){a.focus();return}Kt(p),a.value="",h(),he(`Saved \u201C${p}\u201D`,y)},L=ut(ie,ie,n,{width:208,fallbackH:160,gap:6,align:"end",onOpen:()=>{h(),a.focus()}});g.addEventListener("click",C),a.addEventListener("keydown",p=>{p.key==="Enter"&&C()})}if(s.onEditStart||s.onEditEnd){let n=".tw-slider, .tw-num-grab, .tw-pad, .tw-wg-area, .tw-wg-hue, .tw-wg-alpha, .tw-bezier-handle, .tw-gradient-bar, .tw-gradient-stop",i=!1,a=()=>{document.removeEventListener("pointerup",a,!0),document.removeEventListener("pointercancel",a,!0),i&&(i=!1,s.onEditEnd&&s.onEditEnd())},g=x=>{i||!x.target.closest(n)||(i=!0,s.onEditStart&&s.onEditStart(),document.addEventListener("pointerup",a,!0),document.addEventListener("pointercancel",a,!0))};y.addEventListener("pointerdown",g),y._twEditPointer=g,f.push(a)}let Ve=s.undo?(()=>{let i=[],a=0,g=!1,x=0,h=()=>{x=0;let D=ue();JSON.stringify(D)!==JSON.stringify(i[a])&&(i=i.slice(0,a+1),i.push(D),i.length>200&&(i=i.slice(i.length-200)),a=i.length-1)},C=()=>{g||(clearTimeout(x),x=setTimeout(h,350))},L=()=>{x&&(clearTimeout(x),h())};u.add(C);let p=D=>{g=!0,at(i[D]),g=!1,a=D},A=()=>{L(),a>0&&p(a-1)},M=()=>{L(),a<i.length-1&&p(a+1)},I=()=>y.matches(":hover")||y.contains(document.activeElement),J=D=>!!(D&&D.matches&&(D.matches("input, textarea")||D.isContentEditable)),oe=D=>{if(!I()||!(D.metaKey||D.ctrlKey)||J(D.target))return;let Gt=D.key.toLowerCase();Gt==="z"?(D.preventDefault(),D.shiftKey?M():A()):Gt==="y"&&(D.preventDefault(),M())};return{undo:A,redo:M,arm:()=>{i=[ue()],a=0,f.push(Je(y,[[document,"keydown"]],oe))}}})():null,Vt=()=>{if(!v){if(P=f.length,St(me,o,r),Oe.length){let n=new Map;for(let g of c)n.has(g.key)||n.set(g.key,g);let i=g=>{let x=n.get(g);return x?x.target[x.key]:r[g]},a=()=>{let g=!1;for(let{node:x,m:h}of Oe)try{if(h.render){let C=!h.render(i);!C&&x.classList.contains("tw-cond-hidden")&&(g=!0),x.classList.toggle("tw-cond-hidden",C)}if(h.disabled!=null){let C=typeof h.disabled=="function"?h.disabled(i):h.disabled;mt(x,!!C)}}catch{}g&&Ot()};u.add(a),a()}if(X&&at(Q(X)),!v){Ve?.arm(),Kn(),T=!0;for(let n of w.splice(0)){if(v)break;try{n()}catch(i){console.error("[tweaks] a call queued before ready failed:",i)}}m.clear();for(let n of ee)n.disabled=!1}}},zt=(n,i)=>{if(String(n).split(".").some(kt))return console.warn(`[tweaks] set("${n}") ignored \u2014 reserved key`),!1;let a=String(n).split("."),g;if(a.length>1){let L=r;for(let p=0;p<a.length-1&&L;p++)L=L[a[p]],l.has(L)||(L=null);if(g=L&&c.find(p=>p.target===L&&p.key===a[a.length-1]),!g)return console.warn(`[tweaks] set("${n}") \u2014 no control at that path`),!1}else{let L=c.filter(A=>A.key===n),p=L.find(A=>A.target===r);if(!p&&L.length>1)return console.warn(`[tweaks] set("${n}") is ambiguous \u2014 ${L.length} controls share that key; use a dotted path (e.g. "${L[0].path.join(".")}")`),!1;g=p||L[0]}let x=g?g.target:r,h=g?g.key:n,C=x[h];if(g&&ke(i))return console.warn(`[tweaks] set("${n}") ignored \u2014 a ${typeof i} is not a control value`),!1;if(g)try{Ke(g,i)}catch(L){return console.error(`[tweaks] set("${n}") failed \u2014 value skipped:`,L),!1}else{if(l.has(r[n]))return console.warn(`[tweaks] set("${n}") ignored \u2014 it's a folder/tabs group; set its children instead`),!1;r[n]=i}return ve(C,x[h])?(r._last=h,!0):!1},Ie={el:y,params:r,on(n){return v?()=>{}:(u.add(n),()=>u.delete(n))},set(n,i){let a=String(n);S(()=>{zt(a,i)&&Y()})},setMany(n){if(n==null||typeof n!="object")return;let i=Object.entries(n);S(()=>{let a=!1;for(let[g,x]of i)try{zt(g,x)&&(a=!0)}catch(h){console.error(`[tweaks] setMany("${g}") failed \u2014 key skipped:`,h)}a&&Y()})},reset(){T&&!v&&Dt(Xe),S(nt)},toJSON(){return v?{values:{},ui:{}}:{values:ue(),ui:Bn()}},changes(){return v?{}:ot()},fromJSON(n){if(!n||typeof n!="object")return;let i=n.values&&typeof n.values=="object"?{...n.values}:n.values,a=n.ui&&typeof n.ui=="object"?{...n.ui}:n.ui;S(()=>{i&&at(i),qn(a)})},setName(n){v||(_e=String(n),Me.textContent=_e)},setTheme(n){if(!v){if(te)for(let i in te)y.style.removeProperty(i);te=Pt(n),y._twTheme=te,_t(y,te),window.dispatchEvent(new Event("tw-retheme"))}},savePreset:n=>v||z||!Ee||!n?!1:(T||m.set(String(n),"save"),S(()=>Kt(n)),!0),loadPreset:n=>{let i=m.get(String(n));return v||z||i==="delete"||!(i==="save"||Ne()[n])?!1:(S(()=>Xt(n)),!0)},deletePreset:n=>{Ee&&(T||m.set(String(n),"delete"),S(()=>Yt(n)))},presets:()=>v?[]:Object.keys(Ne()),undo:()=>{Ve&&S(Ve.undo)},redo:()=>{Ve&&S(Ve.redo)},destroy(){if(!v){v=!0,dn(y),Ue(y);for(let n of f.splice(0))try{n()}catch{}u.clear(),b&&(b.remove(),b=null),qe===y&&(qe=null),y.dataset.twDestroyed="",y.remove()}}},Jt=$e(o);if(Jt){let n=i=>{if(z=!0,w.length=0,P>=0)for(let a of f.splice(P))try{a()}catch{}for(let a of me.children)a.dataset.twDestroyed="";throw u.clear(),c.length=0,me.replaceChildren(),v||console.warn(`[tweaks] "${e}": the panel could not be built \u2014 ${P>=0?"the build threw":"its lazy controls failed to load"}; the API is inert`),i};Ie.ready=y.ready=Jt.then(Vt).then(()=>Ie,n),Ie.ready.catch(()=>{})}else Vt(),Ie.ready=y.ready=Promise.resolve(Ie);return Ie}var po=(e,t)=>{e.dataset.value=t==null?"":Array.isArray(t)?t.join(","):typeof t=="object"?Object.values(t).join(","):String(t)},fo=(e,t,s)=>{po(e,s),e.dispatchEvent(new CustomEvent("tw:change",{bubbles:!0,detail:{key:t,value:s}}))},qt=(e,t)=>[...typeof e.matches=="function"&&e.matches(t)?[e]:[],...e.querySelectorAll(t)];async function In(e=document){qt(e,'.tw-panel[data-mode="inline"]:not([data-tw-panel-bound])').forEach(o=>{let r=o.querySelector(":scope > .tw-header"),c=o.querySelector(":scope > .tw-controls");if(!r||!c)return;o.setAttribute("data-tw-panel-bound","");let l=k("div","tw-body");o.insertBefore(l,c),l.append(c);let u=r.querySelector(".tw-header-toggle"),f=r.querySelector(".tw-title");if(!u&&f&&(u=U("tw-header-toggle"),f.replaceWith(u),u.append(f)),!!u&&(u.setAttribute("aria-expanded","true"),u.addEventListener("click",()=>Re(o,u,l,!o.classList.contains("is-collapsed"))),!r.querySelector(".tw-toolbar"))){let v=f&&f.textContent||"Panel",T=()=>[...o.querySelectorAll("[data-tw]")].map(P=>P._tw).filter(P=>P&&P.ctrl.get()!==void 0),w=()=>{let P=Object.create(null);for(let S of T()){let b=S.key,E=2;for(;Te(P,b);)b=`${S.key}-${E++}`;P[b]=S.ctrl.get()}return JSON.stringify(P,null,2)},m=()=>{for(let P of T())P.reset()},z=k("div","tw-toolbar");z.append(wt(o,()=>v,()=>[w(),-1]),vt(m)),r.append(z)}}),qt(e,'[data-tw="folder"]:not([data-tw-bound])').forEach(o=>{o.setAttribute("data-tw-bound","");let r=Ze({label:o.dataset.label||"Folder"});[...o.children].forEach(c=>r.body.append(c)),o.append(r.el)});let t=qt(e,"[data-tw]:not([data-tw-bound])").map(o=>({host:o,meta:Pn(o)})).filter(o=>o.meta);t.forEach(({host:o})=>o.setAttribute("data-tw-bound",""));let s=$e(t.map(o=>o.meta));s&&await s.catch(()=>{});for(let{host:o,meta:r}of t){let c=o.dataset.key||r.label,l,u=w=>{ve(l,w)&&(l=w,fo(o,c,w))},f=Be(r,u);if(!f)continue;o.closest(".tw-panel, .tw-portal")||o.classList.add("tw-portal"),o.append(f.el),o.dataset.hint&&Fe(f.el,o.dataset.hint);let v=f.get();l=v;let T={...f,set:w=>{f.set(w),u(f.get())}};o._tw={ctrl:T,raw:r.value,def:v,key:c,host:o,reset:()=>{Lt(f,r.value,v),u(f.get())}}}}if(typeof document<"u"){let e=()=>In(document);document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e):e()}var jn=e=>k("div",`${e} tw-standalone tw-portal`),Rn=(e,t,s)=>{let o=$e(e);if(!o)return t(),Promise.resolve(s);let r=o.then(t).then(()=>s);return r.catch(()=>{}),r};function mo(e,t,s={}){let o=s.key??"value",r=Pe(o,t);if(!r||r.type==="folder"||r.type==="tabs")throw new TypeError(`[tweaks] mountControl: "${o}" is not a single-control schema value`);s.label!=null&&(r.label=String(s.label));let c=!Mt.has(r.type),l=jn("tw-control");e.append(l);let u=null,f=!1,v=r.value,T,w=!1,m=S=>{ve(v,S)&&(v=S,s.onChange&&s.onChange(S,o))},z=()=>{if(f||(u=Be(r,c?m:()=>{}),!u))return;r.hint&&Fe(u.el,r.hint);let S=()=>{};try{r.render&&!r.render(S)&&u.el.classList.add("tw-cond-hidden")}catch{}try{(typeof r.disabled=="function"?r.disabled(S):r.disabled)&&mt(u.el,!0)}catch{}l.append(u.el),c&&(v=u.get(),w&&(u.set(T),m(u.get())))},P={el:l,set:S=>{f||!c||(u?(u.set(S),m(u.get())):(T=S,w=!0))},get:()=>c?u?u.get():w?T:r.value:void 0,destroy:()=>{f=!0,u&&typeof u.destroy=="function"&&u.destroy(),l.dataset.twDestroyed="",l.remove()},ready:null};return P.ready=Rn([r],z,P),P}function go(e={}){let t=jn("tw-color-picker"),s=null,o=!1,r=e.value,c,l=!1,u=null,f=w=>{ve(r,w)&&(r=w,e.onChange&&e.onChange(w))},v=()=>{if(o)return;let w=se("colorpicker");w&&(s=w({value:e.value,mode:e.mode},f),r=s.get(),t.append(s.el),u&&s.setMode(u),l&&(s.set(c),f(s.get())),dt(s.reflow))},T={el:t,set:w=>{o||(s?(s.set(w),f(s.get())):(c=w,l=!0))},get:()=>s?s.get():l?c:e.value,mode:()=>s?s.mode():u||e.mode||"oklch",setMode:w=>{s?s.setMode(w):u=w},reflow:()=>{s&&s.reflow()},destroy:()=>{o=!0,t.remove()},ready:null};return T.ready=Rn([{type:"color"}],v,T),T}export{go as createColorPicker,In as enhance,Yn as gradientCss,Xn as gradientStops,mo as mountControl,uo as tweaks};
1
+ import{A as dn,B as De,C as un,D as Ht,E as It,F as pn,G as jt,H as fn,I as gt,J as yt,K as Ze,L as bt,M as Rt,O as ht,P as $e,Q as mn,R as gn,S as yn,T as bn,U as hn,V as he,W as wt,X as ue,Y as re,d as zn,e as Wn,f as _t,g as F,h as Zt,i as en,j as tn,k as nn,l as Ue,m as on,n as sn,o as rn,p as ft,q as Te,r as an,s as ln,t as L,u as Q,v as X,w as cn,x as mt,y as Qe,z as Nt}from"./chunk-WWCMYF2Q.js";var Fe={number:()=>import("./heavy-ZZA3NS5O.js"),interval:()=>import("./interval-4KQVZGAX.js"),color:()=>import("./colour-L2QYS74L.js"),gradient:()=>import("./gradient-AHHDJIIU.js"),shadow:()=>import("./shadow-RAXIV6FG.js"),sides:()=>import("./sides-EI7BN5Q6.js"),tabs:()=>import("./tabs-RM7NR6CO.js"),image:()=>import("./image-ZSAP6BIK.js"),fpsgraph:()=>import("./monitor-5CFBIGGT.js"),monitor:()=>import("./monitor-5CFBIGGT.js"),spring:()=>import("./spring-JGHWZBNF.js"),cubicbezier:()=>import("./bezier-KSA2VTVT.js"),motion:()=>Promise.all([import("./bezier-KSA2VTVT.js"),import("./spring-JGHWZBNF.js")]).then(()=>import("./motion-5UMJIBOJ.js")),point:()=>import("./point-4J4HHM2Z.js"),plot:()=>import("./plot-KQGIWQHO.js")},vt={},Jn=e=>re(e)||!Fe[e]?null:vt[e]||(vt[e]=Fe[e]().catch(t=>{throw delete vt[e],console.error(`[tweaks] control chunk "${e}" failed to load:`,t),t})),Dt=(e,t=new Set)=>{for(let s of e)if(s&&(Fe[s.type]&&t.add(s.type),s.children&&Dt(s.children,t),s.pages))for(let o of s.pages)Dt(o.children,t);return t},Be=e=>{let t=[...Dt(e)].map(Jn).filter(Boolean);return t.length?Promise.all(t):null};var wn=he('<path class="tw-copy-back" d="m5.5 16.5-.7-.2q-1.5-.6-2.1-2.1-.2-.7-.2-2.7v-2c0-3.3 0-5 1-6s2.7-1 6-1h2c1.4 0 2 0 2.7.2q1.6.5 2.1 2.1l.2.7"/><path class="tw-copy-front" d="M7.5 14.5c0-3.3 0-5 1-6s2.7-1 6-1 5 0 6 1 1 2.7 1 6 0 5-1 6-2.7 1-6 1-5 0-6-1-1-2.7-1-6"/>',"tw-toolbar-btn__copy"),vn=he('<path d="m5 14 3.5 3.5L19 6.5"/>',"tw-toolbar-btn__check",2.4),En=he('<path d="M3 12a9 9 0 1 0 9-9 9 9 0 0 0-7.6 4.2M3.3 3l.2 2q0 2.2.6 2.7t2.7.2l2-.2"/>'),kn=he('<path d="m17 17 4 4m-2-10a8 8 0 0 0-16 0 8 8 0 0 0 16 0"/>'),$t=e=>he('<path d="M18 9s-4.4 6-6 6-6-6-6-6"/>',e,2.5),Ln=$t("tw-chevron"),Mn=he('<path d="M20.2 13.5q1.8.8 1.8 1.5 0 .8-2.7 2l-5 2.2Q13 20 12 20q-.7 0-2.4-.8l-4.9-2.3Q2 16 2 15t1.8-1.5"/><path class="tw-layer-top" d="M9.6 4.8Q11.3 4 12 4t2.4.8l4.9 2.3Q22 8 22 9c0 .7-.9 1.1-2.7 2l-5 2.2Q13 14 12 14q-.7 0-2.4-.8l-4.9-2.3Q2 10 2 9c0-.7.9-1.1 2.7-2z"/>'),xn=he('<path d="M18 6 6 18m12 0L6 6"/>',"",2.2),Ft=he('<circle cx="12" cy="12" r="10"/><path d="M12 16v-4m-.25-3.75a.25.25 0 0 0 .5 0 .25.25 0 0 0-.5 0"/>');var et=(e,t,s)=>{let o=Q("tw-toolbar-btn"+(e?" "+e:""),t);return o.title=s,o.setAttribute("aria-label",s),o},Lt=(e,t,s)=>{let o=et("tw-toolbar-btn--swap",`<span class="tw-toolbar-btn__icons">${wn}${vn}</span>`,"Copy values (\u21E7: changed only)");return o.addEventListener("click",async r=>{if(o.disabled)return;let[c,l]=s(r.shiftKey);if(!l){ve("Nothing has changed",e);return}await Qn(c)?(Gn(o),ve(l>0?`${l} changed value${l===1?"":"s"} copied`:`${t()} values copied`,e)):ve("Copy failed",e)}),o},Mt=e=>{let t=et("tw-toolbar-btn--reset",En,"Reset");return t.addEventListener("click",()=>{t.disabled||(Bt(t),e())}),t},Gn=e=>{e.classList.add("is-copied"),clearTimeout(e._t),e._t=setTimeout(()=>e.classList.remove("is-copied"),1400)},Bt=e=>{let t=e.querySelector("svg");e._spinSettle||(e._spinSettle=()=>{clearTimeout(e._t),e.classList.remove("is-spinning"),t.style.transition="none",t.style.setProperty("--tw-spin","0deg"),t.getBoundingClientRect(),t.style.transition=""},t.addEventListener("transitionend",o=>{o.propertyName==="transform"&&e.classList.contains("is-spinning")&&performance.now()-e._spinT>250&&e._spinSettle()})),e._spinT=performance.now(),t.style.setProperty("--tw-spin",`${(parseFloat(t.style.getPropertyValue("--tw-spin"))||0)-360}deg`),e.classList.add("is-spinning"),clearTimeout(e._t);let s=()=>{t.getAnimations&&t.getAnimations().length?e._t=setTimeout(s,250):e._spinSettle()};e._t=setTimeout(s,600)},we=null,Cn=0;function ve(e,t){we||(we=L("div","tw-toast tw-portal"),we.setAttribute("role","status")),we.isConnected||document.body.appendChild(we),we.textContent=e,jt(we,t),we.classList.add("is-open"),clearTimeout(Cn),Cn=setTimeout(()=>we.classList.remove("is-open"),1600)}var V=null,Et=0,kt=null,Sn=e=>{e.key==="Escape"&&tt()},tt=e=>{e&&kt&&!e.contains(kt)||(clearTimeout(Et),document.removeEventListener("keydown",Sn),V&&V.classList.remove("is-open"))};function Un(e,t){V||(V=L("div","tw-tip tw-portal"),V.setAttribute("role","tooltip")),V.isConnected||document.body.appendChild(V),clearTimeout(Et),V.textContent=t,jt(V,e);let s=V.classList.contains("is-open");V.style.visibility="hidden",V.classList.add("is-open"),un(e,V,{align:"center",prefer:"above",gap:8}),V.style.visibility="",document.addEventListener("keydown",Sn),kt=e,s||requestAnimationFrame(function o(){if(V.classList.contains("is-open")){if(!kt.isConnected)return tt();requestAnimationFrame(o)}})}function Tn(){V&&(clearTimeout(Et),Et=setTimeout(tt,80))}var qt=".tw-slider-label, .tw-row-label, .tw-select-label, .tw-trigger-label, .tw-radiogrid-label, .tw-field-label, .tw-folder-title, .tw-fps-label, .tw-plot-label";function qe(e,t){let s=e.querySelector(qt)||e;if(s===e&&e.classList.contains("tw-separator"))return;let o=s.closest("button"),r=o?L("span","tw-hint",Ft):Q("tw-hint",Ft),c=()=>Un(r,t);if(o){r.setAttribute("aria-hidden","true");let l=o.getAttribute("aria-description");o.setAttribute("aria-description",l?`${l}. ${t}`:t)}else r.setAttribute("aria-label",t),r.addEventListener("focus",c),r.addEventListener("blur",Tn),r.addEventListener("keydown",l=>{(l.key==="Enter"||l.key===" ")&&l.stopPropagation()});r.addEventListener("pointerenter",c),r.addEventListener("pointerleave",Tn),r.addEventListener("pointerdown",l=>l.stopPropagation()),r.addEventListener("click",l=>{l.preventDefault(),l.stopPropagation()}),s.appendChild(r)}async function Qn(e){try{return await navigator.clipboard.writeText(e),!0}catch{}let t=document.createElement("textarea");t.value=e,t.style.position="fixed",t.style.top="-9999px",document.body.appendChild(t),t.focus(),t.select();let s=!1;try{s=document.execCommand("copy")}catch{}return document.body.removeChild(t),s}function _e(e,t,s=0){if(Ct(e))return null;let o=to(e,t,s);return o&&t&&typeof t=="object"&&(typeof t.render=="function"&&(o.render=t.render),t.disabled!=null&&(o.disabled=t.disabled),t.hint!=null&&(o.hint=String(t.hint)),t.persist===!1&&(o.persist=!1)),o}var Ee=e=>e&&typeof e=="object",Se=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Ct=e=>e==="__proto__"||e==="constructor"||e==="prototype",ke=(e,t)=>e!==t&&!(Ee(e)&&Ee(t)&&JSON.stringify(e)===JSON.stringify(t)),Tt=(e,t,s)=>{e.set(s),e.set(t)},An=e=>Array.isArray(e.options)&&{type:"radiogrid",options:e.options,value:e.value??Te(e.options[0]),cols:e.cols},Zn=(e,...t)=>{let s=(t.length?t:[0]).map(c=>ft(Number.isFinite(+c)?+c:0)),o=e.min??Math.min(...s.map(c=>c[0])),r=e.max??Math.max(...s.map(c=>c[1]));return{min:o,max:r,step:e.step??Ue(o,r)}},Kt=(e,t)=>e.label==null?t:String(e.label),On=e=>typeof e=="function"?e:void 0,Pn=e=>typeof e=="string"&&e.trim()?e.trim().slice(0,12):void 0,Xt=["stiffness","damping","mass","visualDuration","bounce"],_n={slider:e=>{let t=Zn(e,e.value??e.min??0);return{value:e.value??t.min,...t,soft:e.soft,unit:Pn(e.unit),format:On(e.format),parse:On(e.parse)}},number:e=>({value:e.value??0,min:e.min,max:e.max,step:e.step??1,soft:e.soft,unit:Pn(e.unit)}),checkbox:e=>({value:!!e.value}),radiogrid:An,segmented:An,list:e=>Array.isArray(e.options)&&{options:e.options,value:e.value??Te(e.options[0])},text:e=>({value:e.value??"",rows:e.rows,placeholder:e.placeholder}),spring:e=>{let t=Ee(e.value)?e.value:e,s={stiffness:t.stiffness??300,damping:t.damping??26,mass:t.mass??1};Number.isFinite(+t.visualDuration)&&(s.visualDuration=+t.visualDuration),Number.isFinite(+t.bounce)&&(s.bounce=+t.bounce);let o=e.mode??t.mode;return(o==="time"||o==="physics")&&(s.mode=o),{value:s}},motion:e=>{let t=typeof e.value=="string"||Array.isArray(e.value)?{...e,curve:e.value}:Ee(e.value)?e.value:e,s=Xt.some(r=>t[r]!=null),o={curve:"ease",duration:300,...s?{}:{visualDuration:.5,bounce:.2}};for(let r of["mode","curve","duration",...Xt])t[r]!=null&&(o[r]=t[r]);return o.mode!=="easing"&&o.mode!=="spring"&&(o.mode=s?"spring":"easing"),{value:o}},point:e=>{if(!Array.isArray(e.components)||!e.components.length)return!1;let t=new Set,s=e.components.map((o,r)=>{let c=String(o.key??((o.label?String(o.label).toLowerCase():"")||`c${r}`)),l=c,u=2;for(;t.has(l);)l=`${c}-${u++}`;return t.add(l),{...o,key:l}});return{components:s,pad:e.pad,invertY:e.invertY,value:Object.fromEntries(s.map(o=>[o.key,o.value??0]))}},buttongroup:e=>({buttons:e.buttons}),separator:()=>({}),tabs:(e,t)=>{if(!e.pages||typeof e.pages!="object"||!Object.keys(e.pages).length)return!1;let s=new Set;return{pages:Object.entries(e.pages).map(([o,r])=>{let c=o.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tab",l=c,u=2;for(;s.has(l);)l=`${c}-${u++}`;return s.add(l),{key:l,title:o.trim()?o:"Tab",children:Object.entries(r).map(([y,M])=>_e(y,M,t+1)).filter(Boolean)}})}}},eo=Object.assign(Object.create(null),{list:"options",radiogrid:"options",segmented:"options",point:"components",tabs:"pages"});function to(e,t,s=0){if(s>64)return null;let o=_t(e),r=(c,l,u=o)=>({type:c,key:e,label:u,...l});if(Ee(t)&&!Array.isArray(t)&&Se(_n,t.type)){let c;try{c=_n[t.type](t,s)}catch(l){return console.error(`[tweaks] malformed "${t.type}" schema value for "${e}" \u2014 control skipped:`,l),null}if(c)return r(String(t.type),c,Kt(t,o));if(Se(t,eo[t.type]))return console.error(`[tweaks] malformed "${t.type}" schema value for "${e}" \u2014 control skipped`),null}else if(Ee(t)&&!Array.isArray(t)&&typeof t.type=="string"&&(Fe[t.type]||re(t.type))){let{type:c,label:l,...u}=t;return r(c,u,Kt(t,o))}if(Array.isArray(t)&&Array.isArray(t[0])&&t[0].length===2&&typeof t[0][0]=="number"){let c=Number.isFinite(+t[1])?+t[1]:+t[0][0],l=Number.isFinite(+t[2])?+t[2]:+t[0][1];return r("interval",{value:t[0].map(Number),min:c,max:l,step:t[3]??Ue(c,l)})}if(Array.isArray(t)&&t.length<=4&&typeof t[0]=="number"){let c=t[0],[l,u]=ft(c),y=t.length>1?t[1]:l,M=t.length>2?t[2]:u;return r("slider",{value:c,min:y,max:M,step:t[3]??Ue(y,M)})}if(typeof t=="number"){let[c,l]=ft(t);return r("slider",{value:t,min:c,max:l,step:Ue(c,l)})}return typeof t=="boolean"?r("checkbox",{value:t}):Array.isArray(t)?r("list",{options:t,value:Te(t[0])}):Ee(t)&&typeof t.action=="function"?r("button",{action:t.action},Kt(t,o)):Ee(t)&&Array.isArray(t.options)?r("list",{options:t.options,value:t.value??Te(t.options[0])}):Zt(t)?r("color",{value:t}):typeof t=="string"?r("text",{value:t}):Ee(t)?r("folder",{children:Object.entries(t).filter(([c,l])=>!(c==="render"&&typeof l=="function")&&!((c==="disabled"||c==="hint")&&l!=null)).map(([c,l])=>_e(c,l,s+1)).filter(Boolean)}):null}var St=new Set(["button","fpsgraph","monitor","buttongroup","separator"]),Nn=e=>({...Object.fromEntries(Xt.map(t=>[t,N(e[t])])),mode:e.mode}),Hn={slider:e=>({value:N(e.value),min:N(e.min),max:N(e.max),step:N(e.step),soft:xt(e.soft),unit:e.unit}),checkbox:e=>e.options?{type:"radiogrid",options:nt(e.options),value:e.value,cols:N(e.cols)}:{value:e.checked==="true"},radiogrid:e=>({options:nt(e.options),value:e.value,cols:N(e.cols)}),list:e=>({options:nt(e.options),value:e.value}),button:(e,t,s)=>({action:()=>ve(`${s} pressed`,t)}),buttongroup:(e,t)=>({buttons:nt(e.buttons).map(s=>({label:s,action:()=>ve(`${s} pressed`,t)}))}),separator:()=>({}),number:e=>({value:N(e.value),min:N(e.min),max:N(e.max),step:N(e.step),unit:e.unit}),text:e=>({value:e.value??"",placeholder:e.placeholder,rows:N(e.rows)}),fpsgraph:e=>({label:e.label??"FPS"}),interval:e=>({value:e.value?e.value.split(",").map(Number):void 0,min:N(e.min),max:N(e.max),step:N(e.step)}),sides:e=>({value:e.value??e,corners:xt(e.corners),unit:e.unit,step:N(e.step),min:N(e.min),max:N(e.max)}),shadow:e=>({value:e.value??{...e,inset:xt(e.inset)}}),spring:Nn,motion:e=>({...Nn(e),curve:e.curve&&e.curve.includes(",")?e.curve.split(",").map(Number):e.curve,duration:N(e.duration)}),cubicbezier:e=>({value:e.value?e.value.split(",").map(Number):void 0}),point:e=>{let t=(e.value||"").split(",").map(s=>parseFloat(s));return{components:nt(e.components||"X,Y").map((s,o)=>({key:s.toLowerCase(),label:s,value:isNaN(t[o])?0:t[o],step:N(e.step),min:N(e.min),max:N(e.max)})),pad:xt(e.pad),invertY:e.invertY==="true"}},plot:e=>({expr:e.expr,xMin:N(e.xmin),xMax:N(e.xmax),yMin:N(e.ymin),yMax:N(e.ymax),samples:N(e.samples),editable:e.editable!=="false"})},N=e=>{if(e==null||e==="")return;let t=+e;return Number.isFinite(t)?t:void 0},xt=e=>e==="true"||e==="",nt=e=>(e||"").split(",").map(t=>t.trim()).filter(Boolean),In=e=>{let t=e.dataset,s=t.tw,o=t.label??_t(t.key||s),r=Se(Hn,s)?Hn[s](t,e,o):Fe[s]||re(s)?{...t}:null;return r?_e("v",{type:s,label:o,...r}):null};var no=3,jn=32,Rn=200,Dn=8;function oo(e,t){let s=e.label,{min:o,max:r,step:c}=on(e.min,e.max,e.step);e.soft||([o,r]=nn(o,r,c));let l=(r-o)/c<=6,u=Number.isFinite(+e.value)?+e.value:o,y=e.soft&&!l?u:F(u,o,r),M=0,k=en(c),v=L("div","tw-slider-wrap"),m=L("div","tw-slider"),z=L("div","tw-slider-hashmarks"),P=L("div","tw-slider-fill"),_=L("div","tw-slider-handle"),h=X("span","tw-slider-label",s),w=L("span","tw-slider-value"),$=typeof e.unit=="string"?e.unit.trim():"",Ye=document.createTextNode(""),st=$?/^[%°]$/.test($)?$:" "+$:"";w.append(Ye),$&&w.append(X("span","tw-slider-unit",st));let pe=e.format,J=e.parse,fe=d=>{if(pe)try{let S=pe(d);if(typeof S=="string"&&S)return S}catch{}return d.toFixed(k)};m.append(z,P,_,h,w),v.append(m),m.tabIndex=0,m.setAttribute("role","slider"),m.setAttribute("aria-label",s),m.setAttribute("aria-valuemin",String(o)),m.setAttribute("aria-valuemax",String(r));let Z=d=>tn(d,o,c),Ne=l?Array.from({length:Math.max(0,Math.round((r-o)/c)-1)},(d,S)=>(S+1)*c/(r-o)*100):[];for(let d of Ne){let S=L("div","tw-slider-hashmark");S.style.left=d+"%",z.append(S)}let ie=()=>{let d=F((y-o)/(r-o||1)*100,0,100),S=M?` + ${M.toFixed(1)}px`:"",I=`${d}%${S}`;P.style.width=M?`calc(${I})`:d+"%",_.style.left=`max(5px, calc(${I} - 9px))`;let j=Z(y),A=fe(j);Ye.data=A,m.setAttribute("aria-valuenow",String(j)),m.setAttribute("aria-valuetext",A+st);let K=v.offsetWidth,oe=w.offsetWidth;if(K){oe&&(h.style.maxWidth=Math.max(0,K-oe-30)+"px");let We=Math.max(5,d/100*K+M-9);m.classList.toggle("is-dodge",rn(h,w,We,3))}};ie();let B=null,rt=1,Y=null,Le=!0,Ve,me=null,Me=null,it=`width 0.34s ${Rt}`,g=`left 0.34s ${Rt}, opacity 0.15s, transform 0.2s ${bt}`,U=.2,ae=d=>{if(!B)return y;let S=v.offsetWidth||B.width,I=F((d-B.left)/rt/S,0,1);return F(o+I*(r-o),o,r)},He=d=>{let S=0;d<B.left?S=-Dn*Math.sqrt(Math.min(Math.max(0,B.left-d-jn)/Rn,1)):d>B.right&&(S=Dn*Math.sqrt(Math.min(Math.max(0,d-B.right-jn)/Rn,1))),m.style.width=`calc(100% + ${Math.abs(S)}px)`,m.style.transform=S<0?`translateX(${S}px)`:""},xe=(d,S=!0)=>{d=+d,Number.isFinite(d)&&(y=l?F(Z(d),o,r):e.soft?d:F(d,o,r),ie(),S&&t(Z(y)))},Ce=Math.max(1,Math.round((r-o)/c)),at=.2,lt=.3,ze=520,le=27,ee=d=>(d-o)/c,q=0,R=0,te=0,ce=!1,ge=null,Ae=y,ye=0,ne=()=>{te&&cancelAnimationFrame(te),te=0,ye=0},de=d=>{if(!m.isConnected){ne();return}let S=ye?Math.min((d-ye)/1e3,.05):1/60;ye=d;let I=v.offsetWidth||B&&B.width||1,j=ee(F(Ae,o,r)),A=F(Math.round(j+at),0,Ce),K=ce?A+lt*F(j-A,-.5,.5):A;if(Ze&&Ze.matches)q=K,R=0;else{let oe=S,We=1/240;for(;oe>1e-4;){let Pe=Math.min(We,oe);oe-=Pe;let Je=ze*(K-q)-le*R;R+=Je*Pe,q+=R*Pe,q<0&&(q=0,R=0),q>Ce&&(q=Ce,R=0)}}M=(q-A)*c/(r-o||1)*I,y=F(o+A*c,o,r),ie(),A!==ge&&(ge=A,t(Z(y))),!ce&&Math.abs(R)<.004&&Math.abs(q-A)<.004?(q=A,R=0,M=0,ie(),ne(),m.classList.remove("is-active")):te=requestAnimationFrame(de)},G=d=>{q=ee(y),R=0,ce=!0,ge=Math.round(ee(y)),Ae=ae(d),te||(te=requestAnimationFrame(de))};m.addEventListener("pointerdown",d=>{if(!w.classList.contains("is-editing")&&!(d.button!==0||Y)){d.preventDefault(),m.focus({focusVisible:!1}),Me=d.pointerId;try{d.target.setPointerCapture(d.pointerId)}catch{}clearTimeout(Ve),m.style.transition="",Y={x:d.clientX,y:d.clientY},Le=!0,m.classList.add("is-active"),B=v.getBoundingClientRect(),rt=B.width/(v.offsetWidth||B.width),l?(P.style.transition="",_.style.transition="",G(d.clientX)):(P.style.transition=it,_.style.transition=g,xe(ae(d.clientX)))}}),m.addEventListener("pointermove",d=>{if(!(!Y||d.pointerId!==Me)){if(d.buttons===0){be();return}if(Le&&Math.hypot(d.clientX-Y.x,d.clientY-Y.y)>no&&(Le=!1,m.classList.add("is-dragging"),l||(P.style.transition="",_.style.transition="")),!Le)if(He(d.clientX),l)Ae=ae(d.clientX);else{let S;if(d.altKey){me||(me={x:d.clientX,v:y});let I=v.offsetWidth||B.width;S=F(me.v+(d.clientX-me.x)/I*(r-o)*U,o,r)}else me=null,S=ae(d.clientX);xe(S)}d.clientX>=B.left&&d.clientX<=B.right&&(m.style.width="",m.style.transform="")}});let be=d=>{!Y||d&&d.pointerId!==Me||(l?(ce=!1,m.classList.remove("is-dragging"),te||(te=requestAnimationFrame(de))):(Ve=setTimeout(()=>{P.style.transition="",_.style.transition=""},360),m.classList.remove("is-active","is-dragging")),m.style.transition=`width 0.35s ${bt}, transform 0.35s ${bt}`,m.style.width="",m.style.transform="",setTimeout(()=>{m.style.transition=""},360),Y=null,me=null,Me=null)};m.addEventListener("pointerup",be),m.addEventListener("pointercancel",be),m.addEventListener("lostpointercapture",be),dn(m,ie),mt(ie),Qe(m,[[window,"resize"]],ie),m.addEventListener("keydown",d=>{if(d.target!==m||Y)return;let S=sn(d,y,c,o,r,(r-o)/10||c*10);S!=null&&(d.preventDefault(),l&&(ne(),M=0,m.classList.remove("is-active")),xe(F(S,o,r)))});let Ie;w.addEventListener("mouseenter",()=>{Ie=setTimeout(()=>w.classList.add("is-editable"),800)}),w.addEventListener("mouseleave",()=>{clearTimeout(Ie),w.classList.contains("is-editing")||w.classList.remove("is-editable")}),w.addEventListener("pointerdown",d=>{d.pointerType&&d.pointerType!=="mouse"?(w.classList.add("is-editable"),d.stopPropagation()):w.classList.contains("is-editable")&&d.stopPropagation()});let Oe=()=>{if(w.classList.contains("is-editing"))return;let d=L("input","tw-slider-input");d.type="text",d.inputMode=J?"text":"decimal",De(d),d.value=J?fe(Z(y)):Z(y).toFixed(k);let S=d.value;d.style.width=S.length+1+"ch",w.classList.add("is-editing"),w.replaceWith(d),d.focus(),d.select();let I=()=>{d.replaceWith(w),w.classList.remove("is-editing","is-editable")},j=()=>{let A=d.value,K=NaN;if(A!==S)try{K=J?J(A):Number(A.replace($,"").trim()||NaN)}catch{}Number.isFinite(K)&&xe(e.soft?K:F(K,o,r)),I()};d.addEventListener("pointerdown",A=>A.stopPropagation()),d.addEventListener("blur",j),d.addEventListener("keydown",A=>{A.key==="Enter"?(d.removeEventListener("blur",j),m.focus(),j()):A.key==="Escape"&&(A.stopPropagation(),d.removeEventListener("blur",j),m.focus(),I())})};return w.addEventListener("click",()=>{w.classList.contains("is-editable")&&Oe()}),m.addEventListener("keydown",d=>{d.key==="Enter"&&d.target===m&&!Y&&(d.preventDefault(),Oe())}),{el:v,set:d=>xe(d,!1),get:()=>Z(y)}}function so(e,t){let s=L("div","tw-row"),o=hn([{value:"off",label:"Off"},{value:"on",label:"On"}],e.value?"on":"off",r=>t(r==="on"),e.label);return s.append(X("span","tw-row-label",e.label),o.el),{el:s,set:r=>o.set(r?"on":"off"),get:()=>o.get()==="on"}}function ro(e,t){let s=e.options||[],o=Math.min(3,Math.max(2,e.cols||(s.length<=3?s.length:s.length===4?2:3))),r=L("div","tw-radiogrid"),c=L("div","tw-radiogrid-grid");c.style.setProperty("--tw-rg-cols",o),c.setAttribute("role","radiogroup"),c.setAttribute("aria-label",e.label);let l=e.value??Te(s[0]),u=s.map(k=>{let v=yn("tw-radiogrid-btn",k,m=>M(m));return c.append(v),v}),y=()=>gn(u,l),M=(k,v=!0)=>{k!=null&&!u.some(m=>m._twVal===k)||(l=k,y(),v&&t(k))};return c.addEventListener("keydown",k=>{let v=mn(u,l);if(v<0)return;let m=bn(k.key,v,u.length,o);m<0||(k.preventDefault(),m!==v&&(M(u[m]._twVal),u[m].focus()))}),y(),r.append(X("span","tw-radiogrid-label",e.label),c),{el:r,set:k=>M(k,!1),get:()=>l}}var io=/^(?:#[0-9a-f]{3,8}|[a-z]+|(?:oklch|oklab|rgba?|hsla?|hwb|lab|lch|color|var)\([^()]*\))$/i,ao=$t("tw-select-chevron");function lo(e,t){let s=e.value,o=e.options.map(h=>({value:Te(h),label:ln(h),color:h&&typeof h=="object"&&typeof h.color=="string"&&io.test(h.color.trim())?h.color.trim():""})),r=L("div","tw-select"),c=Q("tw-select-trigger");c.setAttribute("aria-haspopup","listbox"),c.setAttribute("aria-expanded","false");let l=L("span","tw-select-right"),u=h=>`linear-gradient(${h}, ${h}), var(--tw-checker)`,y=h=>{let w=L("span","tw-option-swatch");return w.style.background=u(h),w},M=L("span","tw-option-swatch"),k=L("span","tw-select-value");l.append(M,k),l.insertAdjacentHTML("beforeend",ao),c.append(X("span","tw-select-label",e.label),l);let v=L("div","tw-select-dropdown");v.setAttribute("role","listbox");let m=o.map(h=>{let w=Q("tw-select-option");return w.setAttribute("role","option"),h.color&&w.append(y(h.color)),w.append(X("span","tw-option-label",h.label)),w.dataset.value=h.value,w.addEventListener("click",()=>{P(h.value),_.close()}),v.append(w),w});r.append(c,v);let z=()=>{let h=o.find(w=>w.value===s);k.textContent=h?.label??s,M.style.display=h?.color?"":"none",h?.color&&(M.style.background=u(h.color)),m.forEach(w=>{let $=w.dataset.value===String(s);w.dataset.selected=String($),w.setAttribute("aria-selected",String($))})},P=(h,w=!0)=>{h!=null&&!o.some($=>$.value===h)||(s=h,z(),w&&t(h))},_=gt(r,c,v,{width:"match",fallbackH:200,gap:4,onOpen:()=>(m.find(h=>h.dataset.value===String(s))||m[0])?.focus()});return c.addEventListener("keydown",h=>{!_.isOpen()&&(h.key==="ArrowDown"||h.key==="ArrowUp")&&(h.preventDefault(),_.open())}),v.addEventListener("keydown",h=>{let w=m.indexOf(document.activeElement),$=w;if(h.key==="ArrowDown")$=w<0?0:Math.min(m.length-1,w+1);else if(h.key==="ArrowUp")$=w<0?m.length-1:Math.max(0,w-1);else if(h.key==="Home")$=0;else if(h.key==="End")$=m.length-1;else return;h.preventDefault(),m[$]?.focus()}),z(),{el:r,set:h=>P(h,!1),get:()=>s}}function co(e){let t=X("button","tw-button",e.label);return t.addEventListener("click",()=>e.action&&e.action()),wt(t)}function uo(e){let t=L("div","tw-row tw-buttongroup");e.label&&t.append(X("span","tw-row-label",e.label));let s=L("div","tw-buttongroup-btns"),o=Array.isArray(e.buttons)?e.buttons.map(r=>[r.label??"Button",r.action]):Object.entries(e.buttons||{});for(let[r,c]of o){let l=X("button","tw-buttongroup-btn",r);l.addEventListener("click",()=>typeof c=="function"&&c()),s.append(l)}return t.append(s),wt(t)}var po=()=>wt(L("div","tw-separator"));function fo(e,t){let s=y=>y==null?"":typeof y=="object"?an(y):String(y),o=s(e.value),r=e.rows>0,c=L("div",r?"tw-row tw-row-multiline":"tw-row"),l=L(r?"textarea":"input",r?"tw-text tw-textarea":"tw-text");r?l.rows=e.rows:l.type="text",l.value=o,De(l),e.placeholder&&(l.placeholder=e.placeholder),l.addEventListener("input",()=>{o=l.value,t(o)});let u=()=>{let y=l.scrollHeight-l.clientHeight>1;l.classList.toggle("is-clip-top",y&&l.scrollTop>1),l.classList.toggle("is-clip-bottom",y&&l.scrollTop+l.clientHeight<l.scrollHeight-1)};return r&&(l.addEventListener("scroll",u),l.addEventListener("input",u),typeof ResizeObserver=="function"&&new ResizeObserver(u).observe(l)),c.append(X("span","tw-row-label",e.label),l),{el:c,set:y=>{o=s(y),l.value=o,r&&u()},get:()=>o}}function ot(e){let t=L("div","tw-folder"),s=Q("tw-folder-header");s.setAttribute("aria-expanded","true"),s.append(X("span","tw-folder-title",e.label)),s.insertAdjacentHTML("beforeend",Ln);let o=L("div","tw-folder-body"),r=L("div","tw-controls");o.append(r),t.append(s,o);let c=l=>$e(t,s,o,l);return s.addEventListener("click",()=>c(!t.classList.contains("is-collapsed"))),{el:t,body:r,setCollapsed:c}}function Ke(e,t){let s=re(e.type);if(!s)return null;try{return s(e,t)}catch(o){return console.error("[tweaks] control failed to build:",e&&e.type,o),null}}ue("slider",oo);ue("checkbox",so);ue("radiogrid",ro);ue("list",lo);ue("button",co);ue("buttongroup",uo);ue("separator",po);ue("text",fo);ue("folder",ot);var Xe=null;function mo(e,t,s={}){let o=Object.entries(t).filter(([n])=>n!=="_last"||(console.warn('[tweaks] "_last" is reserved (the changed-key channel) \u2014 schema entry skipped'),!1)).map(([n,i])=>_e(n,i)).filter(Boolean),r={},c=[],l=new Set,u=new Set,y=new Set,M=[],k=!1,v=!1,m=[],z=new Map,P=!1,_=-1,h=n=>{if(!k){if(P){console.warn("[tweaks] call ignored \u2014 the panel could not be built");return}v?n():m.push(n)}},w=null,$=function(n,i){return n==="_last"&&this===r?void 0:i===void 0?null:typeof i=="bigint"?String(i):i},Ye=!1,st=()=>{let n={};for(let i of c){let a=n;for(let p of i.path.slice(0,-1))a=a[p]||(a[p]={});a[i.key]=i.get()}return JSON.parse(JSON.stringify(n,$))},pe=()=>{try{return JSON.parse(JSON.stringify(r,$))}catch(n){return Ye||(Ye=!0,console.warn("[tweaks] a value parked on params can't be serialised \u2014 snapshots carry the controls' values only:",n)),st()}},J=s.persist?`tw:${s.persist===!0?e:s.persist}`:null,fe=J?`${J}:presets`:null,Z=n=>{try{return JSON.parse(localStorage.getItem(n)||"null")}catch{return null}},Ne=(n,i)=>{try{localStorage.setItem(n,JSON.stringify(i))}catch{}},ie=(n,i)=>i.reduce((a,p)=>a?.[p],n),B=n=>{for(let i of c)if(!i.persist){let a=ie(n,i.path.slice(0,-1));a&&typeof a=="object"&&Reflect.deleteProperty(a,i.key)}return n},rt=J?(()=>{let n=0,i=()=>{n=0,Ne(J,B(pe()))};return M.push(()=>{n&&(clearTimeout(n),i())}),()=>{clearTimeout(n),n=setTimeout(i,150)}})():()=>{},Y=(n,i=r._last)=>{(n?y:u).forEach(a=>{try{a(r,i)}catch(p){console.error("[tweaks] listener threw:",p)}}),k||rt()},Le=n=>typeof n=="function"||typeof n=="symbol"||typeof n=="bigint",Ve=(n,i)=>{if(Le(i))throw new TypeError(`a ${typeof i} is not a control value`);n.set(i),n.target[n.key]=n.get()},me=n=>{Tt(n,n.raw,n.def),n.target[n.key]=n.get()},Me=!1,it=()=>{if(typeof s.onReset=="function"&&!Me){Me=!0;try{return s.onReset()}finally{Me=!1}}for(let n of c)try{me(n)}catch(i){console.error(`[tweaks] resetting "${n.path.join(".")}" failed \u2014 control skipped:`,i)}r._last=void 0,Y()},g=L("div","tw-panel");g.dataset.mode="inline",cn(g);let U=L("div","tw-header"),ae=Q("tw-header-toggle");ae.setAttribute("aria-expanded","true");let He=e,xe=X("span","tw-title",He);ae.append(xe);let Ce=L("div","tw-toolbar"),at=()=>{let n={};for(let i of c)ke(i.get(),i.def)&&(n[i.path.join(".")]=i.get());return JSON.parse(JSON.stringify(n,$))},lt=Lt(g,()=>He,n=>{if(!n)return[JSON.stringify(pe(),null,2),-1];let i=at();return[JSON.stringify(i,null,2),Object.keys(i).length]}),ze=Mt(it),le=null;J&&s.presets!==!1&&(le=et("",Mn,"Presets"),le.setAttribute("aria-haspopup","menu"),le.setAttribute("aria-expanded","false"),Ce.append(le));let ee=!!s.filter&&(s.toolbar!==!1||(console.warn("[tweaks] opts.filter needs the toolbar (its search button lives there) \u2014 ignored alongside toolbar:false"),!1)),q=ee?et("",kn,"Filter controls"):null,R=ee?L("input","tw-search"):null;ee&&(R.type="text",R.placeholder="Filter\u2026",R.spellcheck=!1,R.setAttribute("aria-label","Filter controls"),De(R),Ce.append(q)),Ce.append(lt,ze),U.append(ae),ee&&U.append(R),s.toolbar!==!1&&U.append(Ce);let te=[lt,ze,le,q].filter(Boolean);for(let n of te)n.disabled=!0;let ce=!1,ge=!1;U.addEventListener("click",n=>{ge&&(ge=!1,n.preventDefault(),n.stopPropagation())},!0),ae.addEventListener("click",()=>{$e(g,ae,Ae,!g.classList.contains("is-collapsed")),g.dataset.mode==="floating"&&setTimeout(()=>{g.dataset.mode==="floating"&&g.isConnected&&(K(),A())},270)});let Ae=L("div","tw-body"),ye=L("div","tw-controls");Ae.append(ye),g.append(U,Ae);let ne=Ht(s.theme);It(g,ne),g._twTheme=ne;let de=s.draggable!==!1,G=8,be=28,Ie=()=>({maxX:Math.max(G,window.innerWidth-g.offsetWidth-G),maxY:Math.max(G,window.innerHeight-g.offsetHeight-G)}),Oe=J?`${J}:pos`:null,d=(de||s.floating)&&Oe?Z(Oe):null,S=d||(typeof s.floating=="object"?s.floating:null)||{x:16,y:16},I=+S.x||16,j=+S.y||16,A=()=>{g.style.left=I+"px",g.style.top=j+"px"},K=()=>{let{maxX:n,maxY:i}=Ie();I=F(I,G,n),j=F(j,G,i)};(de||s.floating)&&(s.floating||d)&&(g.dataset.mode="floating",K(),A(),requestAnimationFrame(()=>{!k&&g.dataset.mode==="floating"&&g.isConnected&&(K(),A())}));let oe=n=>{me(n),r._last=n.key,Y()},We=(n,i)=>{let a=n.querySelector(".tw-slider-value")||n.querySelector(qt)||n;a.classList.add("tw-resettable"),a.title="Double-click or hold to reset";let p=0,x=0,b=0,T=!1,E=()=>{p&&(clearTimeout(p),p=0,a.classList.remove("tw-reset-holding"))};a.addEventListener("pointerdown",f=>{f.stopPropagation(),T=!1,!(f.pointerType!=="touch"&&f.pointerType!=="pen")&&(x=f.clientX,b=f.clientY,a.classList.add("tw-reset-holding"),p=setTimeout(()=>{p=0,a.classList.remove("tw-reset-holding","is-editable"),T=!0,oe(i)},500))}),a.addEventListener("pointermove",f=>{p&&Math.abs(f.clientX-x)+Math.abs(f.clientY-b)>8&&E()}),a.addEventListener("pointerup",E),a.addEventListener("pointercancel",E),a.addEventListener("pointerleave",E),a.addEventListener("contextmenu",f=>{T&&f.preventDefault()}),a.addEventListener("click",f=>{T&&(f.preventDefault(),f.stopImmediatePropagation(),T=!1)},!0),a.addEventListener("dblclick",f=>{a===n&&f.target.closest&&f.target.closest("input, textarea")||(f.preventDefault(),f.stopPropagation(),oe(i))}),a.classList.contains("tw-slider-value")&&n.addEventListener("dblclick",f=>{let O=f.target;!O.classList||!O.classList.contains("tw-slider-input")||(f.preventDefault(),f.stopPropagation(),O.blur(),oe(i))}),n.addEventListener("keydown",f=>{!f.altKey||f.metaKey||f.ctrlKey||f.key!=="Backspace"&&f.key!=="Delete"||(f.preventDefault(),f.stopPropagation(),f.target.classList&&f.target.classList.contains("tw-slider-input")&&f.target.blur(),oe(i))})},Pe=[],Je=(n,i)=>{i.hint&&qe(n,i.hint),(i.render||i.disabled!=null)&&Pe.push({node:n,m:i})},At=[],Ot=[],ct=[],dt=[],qn=n=>{typeof n.destroy=="function"&&M.push(n.destroy)},Pt=(n,i,a,p=[],x=null)=>{for(let b of i){if(b.type==="tabs"){let f={};l.add(f),a[b.key]=f;let O=re("tabs"),C=O&&O(b);if(!C)continue;dt.push({path:[...p,b.key],ctrl:C,pageKeys:b.pages.map(H=>H.key)}),b.pages.forEach((H,W)=>{let se={};l.add(se),f[H.key]=se,Pt(C.bodies[W],H.children,se,[...p,b.key,H.key])}),Je(C.el,b),n.append(C.el);continue}if(b.type==="folder"){let f={};l.add(f),a[b.key]=f;let O=ot(b);ct.push({path:[...p,b.key],el:O.el,setCollapsed:O.setCollapsed});let C=ee?{el:O.el,label:b.label,body:O.body}:null;C&&Ot.push(C),Pt(O.body,b.children,f,[...p,b.key],C),Je(O.el,b),n.append(O.el);continue}let T=!St.has(b.type),E=Ke(b,T?f=>{ke(a[b.key],f)&&(a[b.key]=f,r._last=b.key,Y())}:()=>{});if(E){if(qn(E),T){let f=E.get();Se(a,b.key)&&E.set(a[b.key]),a[b.key]=E.get();let O={target:a,key:b.key,set:E.set,get:E.get,raw:b.value,def:f,path:[...p,b.key],persist:b.persist!==!1};c.push(O),We(E.el,O)}Je(E.el,b),ee&&b.type!=="separator"&&At.push({el:E.el,label:b.label,folder:x}),n.append(E.el)}}};if(ee){let n=a=>{let p=a.trim().toLowerCase(),x=!1,b=(T,E)=>{!E&&T.classList.contains("tw-filter-hidden")&&(x=!0),T.classList.toggle("tw-filter-hidden",E)};if(!p)At.forEach(T=>b(T.el,!1)),Ot.forEach(T=>b(T.el,!1));else{for(let T of At){let E=T.folder&&yt(T.folder.label,p);b(T.el,!(yt(T.label,p)||E))}for(let T of Ot.slice().reverse()){let E=[...T.body.children].some(f=>!f.classList.contains("tw-filter-hidden"));b(T.el,!(yt(T.label,p)||E))}}x&&Nt()},i=()=>{g.classList.remove("is-searching"),R.value="",n("")};q.addEventListener("click",()=>{q.disabled||(g.classList.toggle("is-searching")?(R.focus(),R.select()):i())}),R.addEventListener("input",()=>n(R.value)),R.addEventListener("keydown",a=>{a.key==="Escape"&&(i(),q.focus())})}let Kn=new Set(o.map(n=>n.key)),ut=(n,i)=>{if(!(!n||typeof n!="object")){for(let a of c){let p=ie(n,a.path);if(p!==void 0)try{Ve(a,p)}catch(x){console.error(`[tweaks] restoring "${a.path.join(".")}" failed \u2014 value skipped:`,x)}}for(let a of Object.keys(n))if(!Kn.has(a)&&a!=="_last"&&Se(r,a)&&!Ct(a)&&!Le(n[a]))try{r[a]=n[a]}catch(p){console.error(`[tweaks] restoring "${a}" failed \u2014 value skipped:`,p)}r._last=void 0,Y(i)}},je=()=>{let n=fe?Z(fe):null;return Object.assign(Object.create(null),n&&typeof n=="object"?n:{})},Vt=n=>{let i=je();i[n]=pe(),Ne(fe,i)},zt=n=>{let i=je();i[n]&&ut(i[n])},Wt=n=>{let i=je();delete i[n],Ne(fe,i)},pt=n=>n.map(i=>String(i).replace(/~/g,"~1").replace(/\./g,"~0")).join("."),Xn=()=>{let n={};if(ct.length){let i={};for(let a of ct)i[pt(a.path)]=a.el.classList.contains("is-collapsed");n.folders=i}if(dt.length){let i={};for(let a of dt)i[pt(a.path)]=a.pageKeys[a.ctrl.active()]??null;n.tabs=i}return n},Yn=n=>{if(!(!n||typeof n!="object")){if(n.folders)for(let i of ct){let a=n.folders[pt(i.path)];typeof a=="boolean"&&i.setCollapsed(a)}if(n.tabs)for(let i of dt){let a=i.pageKeys.indexOf(n.tabs[pt(i.path)]);a>=0&&a!==i.ctrl.active()&&i.ctrl.activate(a)}}};if(de||s.floating){if(de){g.dataset.draggable="true";let C=L("span","tw-grabber");C.setAttribute("aria-hidden","true"),U.prepend(C)}let n=()=>{if(g.dataset.mode==="floating")return;let C=g.getBoundingClientRect();if(I=C.left,j=C.top,g.parentNode&&(w=L("span","tw-lift-slot"),w.style.width=C.width+"px",w.style.height=C.height+"px",w.setAttribute("aria-hidden","true"),g.before(w)),pn(g,g),document.body.appendChild(g),g.dataset.mode="floating",A(),w&&typeof MutationObserver=="function"){let H=new MutationObserver(()=>{w&&!w.isConnected&&(H.disconnect(),w=null,g.remove())});H.observe(document.documentElement,{childList:!0,subtree:!0}),M.push(()=>H.disconnect())}},i=()=>{Xe&&Xe!==g&&(Xe.style.zIndex=""),g.style.zIndex="99991",Xe=g},a=null,p=0,x=0,b=0,T=0,E=C=>{for(let[H,W]of[["pointermove",f],["pointerup",O],["pointercancel",O]])C?document.addEventListener(H,W,!0):document.removeEventListener(H,W,!0)};de&&U.addEventListener("pointerdown",C=>{if(!(C.button!==0||a!==null||C.target.closest(".tw-toolbar, input, textarea, select"))&&(a=C.pointerId,p=C.clientX,x=C.clientY,ce=!1,E(!0),g.classList.add("is-grabbing"),g.style.transition)){let H=getComputedStyle(g);I=parseFloat(H.left)||I,j=parseFloat(H.top)||j,g.style.transition="",A()}});let f=C=>{if(C.pointerId!==a)return;if(C.buttons===0){O(C);return}let H=C.clientX-p,W=C.clientY-x;if(!ce){if(Math.abs(H)+Math.abs(W)<4)return;ce=!0,n(),i(),b=I,T=j;try{U.setPointerCapture(a)}catch{}g.classList.add("is-dragging")}let{maxX:se,maxY:D}=Ie();I=F(b+H,G,se),j=F(T+W,G,D),A()},O=C=>{if(C.pointerId===a){try{U.releasePointerCapture(a)}catch{}if(a=null,E(!1),ge=ce,ge&&setTimeout(()=>{ge=!1},0),ce){let{maxX:H,maxY:W}=Ie();I<=G+be?I=G:I>=H-be&&(I=H),j<=G+be?j=G:j>=W-be&&(j=W),Ze.matches||(g.style.transition="left 0.32s var(--tw-ease-spring), top 0.32s var(--tw-ease-spring)",setTimeout(()=>{g.style.transition=""},340)),A(),Oe&&Ne(Oe,{x:I,y:j})}g.classList.remove("is-dragging","is-grabbing")}};U.addEventListener("lostpointercapture",O),M.push(()=>E(!1))}let Vn=()=>{(de||s.floating)&&(g.dataset.mode==="floating"&&(K(),A()),M.push(Qe(g,[[window,"resize"]],()=>{g.dataset.mode==="floating"&&(K(),A())})))};if(le){let n=L("div","tw-presets-menu"),i=L("div","tw-presets-save"),a=L("input","tw-presets-input");a.type="text",a.placeholder="Preset name\u2026",a.spellcheck=!1,a.setAttribute("aria-label","New preset name"),De(a);let p=X("button","tw-presets-savebtn","Save");i.append(a,p);let x=L("div","tw-presets-list");n.append(i,x);let b=()=>{let f=je(),O=Object.keys(f);if(x.replaceChildren(),!O.length)return x.append(X("div","tw-presets-empty","No presets yet"));for(let C of O){let H=L("div","tw-presets-row"),W=X("button","tw-presets-load",C);W.addEventListener("click",()=>{zt(C),E.close(),ve(`Loaded \u201C${C}\u201D`,g)});let se=Q("tw-presets-del",xn);se.setAttribute("aria-label",`Delete preset ${C}`),se.addEventListener("click",D=>{D.stopPropagation(),Wt(C),b()}),H.append(W,se),x.append(H)}},T=()=>{let f=a.value.trim();if(!f){a.focus();return}Vt(f),a.value="",b(),ve(`Saved \u201C${f}\u201D`,g)},E=gt(le,le,n,{width:208,fallbackH:160,gap:6,align:"end",onOpen:()=>{b(),a.focus()}});p.addEventListener("click",T),a.addEventListener("keydown",f=>{f.key==="Enter"&&T()})}if(s.onEditStart||s.onEditEnd){let n=".tw-slider, .tw-num-grab, .tw-pad, .tw-wg-area, .tw-wg-hue, .tw-wg-alpha, .tw-bezier-handle, .tw-gradient-bar, .tw-gradient-stop",i=!1,a=()=>{document.removeEventListener("pointerup",a,!0),document.removeEventListener("pointercancel",a,!0),i&&(i=!1,s.onEditEnd&&s.onEditEnd())},p=x=>{i||!x.target.closest(n)||(i=!0,s.onEditStart&&s.onEditStart(),document.addEventListener("pointerup",a,!0),document.addEventListener("pointercancel",a,!0))};g.addEventListener("pointerdown",p),g._twEditPointer=p,M.push(a)}let Ge=s.undo?(()=>{let i=[],a=0,p=!1,x=0,b=()=>{x=0;let D=pe();JSON.stringify(D)!==JSON.stringify(i[a])&&(i=i.slice(0,a+1),i.push(D),i.length>200&&(i=i.slice(i.length-200)),a=i.length-1)},T=()=>{p||(clearTimeout(x),x=setTimeout(b,350))},E=()=>{x&&(clearTimeout(x),b())};u.add(T),y.add(T);let f=D=>{p=!0,ut(i[D]),p=!1,a=D},O=()=>{E(),a>0&&f(a-1)},C=()=>{E(),a<i.length-1&&f(a+1)},H=()=>g.matches(":hover")||g.contains(document.activeElement),W=D=>!!(D&&D.matches&&(D.matches("input, textarea")||D.isContentEditable)),se=D=>{if(!H()||!(D.metaKey||D.ctrlKey)||W(D.target))return;let Qt=D.key.toLowerCase();Qt==="z"?(D.preventDefault(),D.shiftKey?C():O()):Qt==="y"&&(D.preventDefault(),C())};return{undo:O,redo:C,arm:()=>{i=[pe()],a=0,M.push(Qe(g,[[document,"keydown"]],se))}}})():null,Jt=()=>{if(!k){if(_=M.length,Pt(ye,o,r),Pe.length){let n=new Map;for(let p of c)n.has(p.key)||n.set(p.key,p);let i=p=>{let x=n.get(p);return x?x.target[x.key]:r[p]},a=()=>{let p=!1;for(let{node:x,m:b}of Pe)try{if(b.render){let T=!b.render(i);!T&&x.classList.contains("tw-cond-hidden")&&(p=!0),x.classList.toggle("tw-cond-hidden",T)}if(b.disabled!=null){let T=typeof b.disabled=="function"?b.disabled(i):b.disabled;ht(x,!!T)}}catch{}p&&Nt()};u.add(a),y.add(a),a()}if(J&&ut(B(Z(J))),!k){Ge?.arm(),Vn(),v=!0;for(let n of m.splice(0)){if(k)break;try{n()}catch(i){console.error("[tweaks] a call queued before ready failed:",i)}}z.clear();for(let n of te)n.disabled=!1}}},Gt=(n,i)=>{if(String(n).split(".").some(Ct))return console.warn(`[tweaks] set("${n}") ignored \u2014 reserved key`),!1;let a=String(n).split("."),p;if(a.length>1){let E=r;for(let f=0;f<a.length-1&&E;f++)E=E[a[f]],l.has(E)||(E=null);if(p=E&&c.find(f=>f.target===E&&f.key===a[a.length-1]),!p)return console.warn(`[tweaks] set("${n}") \u2014 no control at that path`),!1}else{let E=c.filter(O=>O.key===n),f=E.find(O=>O.target===r);if(!f&&E.length>1)return console.warn(`[tweaks] set("${n}") is ambiguous \u2014 ${E.length} controls share that key; use a dotted path (e.g. "${E[0].path.join(".")}")`),!1;p=f||E[0]}let x=p?p.target:r,b=p?p.key:n,T=x[b];if(p&&Le(i))return console.warn(`[tweaks] set("${n}") ignored \u2014 a ${typeof i} is not a control value`),!1;if(p)try{Ve(p,i)}catch(E){return console.error(`[tweaks] set("${n}") failed \u2014 value skipped:`,E),!1}else{if(l.has(r[n]))return console.warn(`[tweaks] set("${n}") ignored \u2014 it's a folder/tabs group; set its children instead`),!1;r[n]=i}return ke(T,x[b])?(r._last=b,!0):!1},Re={el:g,params:r,on(n){return k?()=>{}:(u.add(n),()=>u.delete(n))},set(n,i,a){let p=String(n),x=a?.silent;h(()=>{Gt(p,i)&&Y(x)})},setMany(n,i){if(n==null||typeof n!="object")return;let a=Object.entries(n),p=i?.silent;h(()=>{let x=!1;for(let[b,T]of a)try{Gt(b,T)&&(x=!0)}catch(E){console.error(`[tweaks] setMany("${b}") failed \u2014 key skipped:`,E)}x&&Y(p)})},reset(){v&&!k&&Bt(ze),h(it)},toJSON(){return k?{values:{},ui:{}}:{values:pe(),ui:Xn()}},changes(){return k?{}:at()},fromJSON(n,i){if(!n||typeof n!="object")return;let a=i?.silent,p=n.values&&typeof n.values=="object"?{...n.values}:n.values,x=n.ui&&typeof n.ui=="object"?{...n.ui}:n.ui;h(()=>{p&&ut(p,a),Yn(x)})},setName(n){k||(He=String(n),xe.textContent=He)},setTheme(n){if(!k){if(ne)for(let i in ne)g.style.removeProperty(i);ne=Ht(n),g._twTheme=ne,It(g,ne),window.dispatchEvent(new Event("tw-retheme"))}},savePreset:n=>k||P||!fe||!n?!1:(v||z.set(String(n),"save"),h(()=>Vt(n)),!0),loadPreset:n=>{let i=z.get(String(n));return k||P||i==="delete"||!(i==="save"||je()[n])?!1:(h(()=>zt(n)),!0)},deletePreset:n=>{fe&&(v||z.set(String(n),"delete"),h(()=>Wt(n)))},presets:()=>k?[]:Object.keys(je()),undo:()=>{Ge&&h(Ge.undo)},redo:()=>{Ge&&h(Ge.redo)},destroy(){if(!k){k=!0,fn(g),tt(g);for(let n of M.splice(0))try{n()}catch{}u.clear(),w&&(w.remove(),w=null),Xe===g&&(Xe=null),g.dataset.twDestroyed="",g.remove()}}},Ut=Be(o);if(Ut){let n=i=>{if(P=!0,m.length=0,_>=0)for(let a of M.splice(_))try{a()}catch{}for(let a of ye.children)a.dataset.twDestroyed="";throw u.clear(),c.length=0,ye.replaceChildren(),k||console.warn(`[tweaks] "${e}": the panel could not be built \u2014 ${_>=0?"the build threw":"its lazy controls failed to load"}; the API is inert`),i};Re.ready=g.ready=Ut.then(Jt).then(()=>Re,n),Re.ready.catch(()=>{})}else Jt(),Re.ready=g.ready=Promise.resolve(Re);return Re}var go=(e,t)=>{e.dataset.value=t==null?"":Array.isArray(t)?t.join(","):typeof t=="object"?Object.values(t).join(","):String(t)},yo=(e,t,s)=>{go(e,s),e.dispatchEvent(new CustomEvent("tw:change",{bubbles:!0,detail:{key:t,value:s}}))},Yt=(e,t)=>[...typeof e.matches=="function"&&e.matches(t)?[e]:[],...e.querySelectorAll(t)];async function $n(e=document){Yt(e,'.tw-panel[data-mode="inline"]:not([data-tw-panel-bound])').forEach(o=>{let r=o.querySelector(":scope > .tw-header"),c=o.querySelector(":scope > .tw-controls");if(!r||!c)return;o.setAttribute("data-tw-panel-bound","");let l=L("div","tw-body");o.insertBefore(l,c),l.append(c);let u=r.querySelector(".tw-header-toggle"),y=r.querySelector(".tw-title");if(!u&&y&&(u=Q("tw-header-toggle"),y.replaceWith(u),u.append(y)),!!u&&(u.setAttribute("aria-expanded","true"),u.addEventListener("click",()=>$e(o,u,l,!o.classList.contains("is-collapsed"))),!r.querySelector(".tw-toolbar"))){let M=y&&y.textContent||"Panel",k=()=>[...o.querySelectorAll("[data-tw]")].map(P=>P._tw).filter(P=>P&&P.ctrl.get()!==void 0),v=()=>{let P=Object.create(null);for(let _ of k()){let h=_.key,w=2;for(;Se(P,h);)h=`${_.key}-${w++}`;P[h]=_.ctrl.get()}return JSON.stringify(P,null,2)},m=()=>{for(let P of k())P.reset()},z=L("div","tw-toolbar");z.append(Lt(o,()=>M,()=>[v(),-1]),Mt(m)),r.append(z)}}),Yt(e,'[data-tw="folder"]:not([data-tw-bound])').forEach(o=>{o.setAttribute("data-tw-bound","");let r=ot({label:o.dataset.label||"Folder"});[...o.children].forEach(c=>r.body.append(c)),o.append(r.el)});let t=Yt(e,"[data-tw]:not([data-tw-bound])").map(o=>({host:o,meta:In(o)})).filter(o=>o.meta);t.forEach(({host:o})=>o.setAttribute("data-tw-bound",""));let s=Be(t.map(o=>o.meta));s&&await s.catch(()=>{});for(let{host:o,meta:r}of t){let c=o.dataset.key||r.label,l,u=v=>{ke(l,v)&&(l=v,yo(o,c,v))},y=Ke(r,u);if(!y)continue;o.closest(".tw-panel, .tw-portal")||o.classList.add("tw-portal"),o.append(y.el),o.dataset.hint&&qe(y.el,o.dataset.hint);let M=y.get();l=M;let k={...y,set:v=>{y.set(v),u(y.get())}};o._tw={ctrl:k,raw:r.value,def:M,key:c,host:o,reset:()=>{Tt(y,r.value,M),u(y.get())}}}}if(typeof document<"u"){let e=()=>$n(document);document.readyState==="loading"?document.addEventListener("DOMContentLoaded",e):e()}var Fn=e=>L("div",`${e} tw-standalone tw-portal`),Bn=(e,t,s)=>{let o=Be(e);if(!o)return t(),Promise.resolve(s);let r=o.then(t).then(()=>s);return r.catch(()=>{}),r};function bo(e,t,s={}){let o=s.key??"value",r=_e(o,t);if(!r||r.type==="folder"||r.type==="tabs")throw new TypeError(`[tweaks] mountControl: "${o}" is not a single-control schema value`);s.label!=null&&(r.label=String(s.label));let c=!St.has(r.type),l=Fn("tw-control");e.append(l);let u=null,y=!1,M=r.value,k,v=!1,m=_=>{ke(M,_)&&(M=_,s.onChange&&s.onChange(_,o))},z=()=>{if(y||(u=Ke(r,c?m:()=>{}),!u))return;r.hint&&qe(u.el,r.hint);let _=()=>{};try{r.render&&!r.render(_)&&u.el.classList.add("tw-cond-hidden")}catch{}try{(typeof r.disabled=="function"?r.disabled(_):r.disabled)&&ht(u.el,!0)}catch{}l.append(u.el),c&&(M=u.get(),v&&(u.set(k),m(u.get())))},P={el:l,set:_=>{y||!c||(u?(u.set(_),m(u.get())):(k=_,v=!0))},get:()=>c?u?u.get():v?k:r.value:void 0,destroy:()=>{y=!0,u&&typeof u.destroy=="function"&&u.destroy(),l.dataset.twDestroyed="",l.remove()},ready:null};return P.ready=Bn([r],z,P),P}function ho(e={}){let t=Fn("tw-color-picker"),s=null,o=!1,r=e.value,c,l=!1,u=null,y=v=>{ke(r,v)&&(r=v,e.onChange&&e.onChange(v))},M=()=>{if(o)return;let v=re("colorpicker");v&&(s=v({value:e.value,mode:e.mode},y),r=s.get(),t.append(s.el),u&&s.setMode(u),l&&(s.set(c),y(s.get())),mt(s.reflow))},k={el:t,set:v=>{o||(s?(s.set(v),y(s.get())):(c=v,l=!0))},get:()=>s?s.get():l?c:e.value,mode:()=>s?s.mode():u||e.mode||"oklch",setMode:v=>{s?s.setMode(v):u=v},reflow:()=>{s&&s.reflow()},destroy:()=>{o=!0,t.remove()},ready:null};return k.ready=Bn([{type:"color"}],M,k),k}export{ho as createColorPicker,$n as enhance,Wn as gradientCss,zn as gradientStops,bo as mountControl,mo as tweaks};
package/dist/tweaks.css CHANGED
@@ -1 +1 @@
1
- .tw-panel,.tw-portal{--tw-surface: rgba(255, 255, 255, .04);--tw-surface-hover: rgba(255, 255, 255, .075);--tw-surface-active: rgba(255, 255, 255, .13);--tw-text-root: #fafafa;--tw-text-section: rgba(255, 255, 255, .64);--tw-text-label: rgba(255, 255, 255, .64);--tw-text-focus: #ffffff;--tw-text-primary: rgba(255, 255, 255, .92);--tw-text-secondary: rgba(255, 255, 255, .56);--tw-text-tertiary: rgba(255, 255, 255, .5);--tw-on-accent: var(--tw-text-primary);--tw-border: rgba(255, 255, 255, .045);--tw-border-hover: rgba(255, 255, 255, .11);--tw-selection: rgba(255, 255, 255, .22);--tw-base: #242424;--tw-checker: repeating-conic-gradient(#6b6b6b 0% 25%, #9a9a9a 0% 50%) 0 0 / 8px 8px;--tw-dropdown-bg: #292929;--tw-radius: 8px;--tw-row-height: 32px;--tw-width: 256px;--tw-shadow-dropdown: 0 12px 32px -8px rgba(0, 0, 0, .6);--tw-shadow-panel: 0 0 0 1px rgba(255, 255, 255, .06), 0 8px 28px -8px rgba(0, 0, 0, .5), 0 18px 48px -16px rgba(0, 0, 0, .38);--tw-shadow-panel-lifted: 0 0 0 1px rgba(255, 255, 255, .08), 0 12px 32px -8px rgba(0, 0, 0, .55), 0 28px 64px -16px rgba(0, 0, 0, .45);--tw-success: #86efac;--tw-danger: #ff5f5f;--tw-font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--tw-font-mono: ui-monospace, "SF Mono", Menlo, monospace;--tw-ease-out: cubic-bezier(.25, 1, .5, 1);--tw-ease-spring: cubic-bezier(.22, 1, .36, 1);--tw-ease-pop: cubic-bezier(.34, 1.56, .64, 1);--tw-ease-inout: cubic-bezier(.4, 0, .2, 1);--tw-ease-fold: linear(0, .077, .237, .411, .57, .699, .797, .869, .918, .952, .973, .986, .994, .998, 1);font-family:var(--tw-font-sans);line-height:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}.tw-panel{width:var(--tw-width);background:var(--tw-base);box-shadow:var(--tw-shadow-panel);border-radius:calc(var(--tw-radius) + 10px);padding:10px}.tw-panel *,.tw-panel *:before,.tw-panel *:after{box-sizing:border-box}:is(.tw-panel,.tw-color-pop,.tw-select-dropdown,.tw-presets-menu) ::selection{background:var(--tw-selection);color:var(--tw-text-focus)}.tw-panel,.tw-color-pop,.tw-select-dropdown,.tw-presets-menu{-webkit-tap-highlight-color:transparent}.tw-panel,.tw-portal{color-scheme:dark}.tw-panel[data-mode=floating]{position:fixed;z-index:99990;box-shadow:var(--tw-shadow-panel-lifted);transition:box-shadow .25s var(--tw-ease-out)}.tw-lift-slot{display:block;flex:none;pointer-events:none}.tw-panel[data-draggable=true]>.tw-header,.tw-panel[data-draggable=true]>.tw-header .tw-header-toggle,.tw-panel[data-mode=floating]>.tw-header,.tw-panel[data-mode=floating]>.tw-header .tw-header-toggle{cursor:grab}.tw-panel[data-draggable=true]>.tw-header,.tw-panel[data-mode=floating]>.tw-header{touch-action:none;margin-top:-10px;padding-top:10px}.tw-panel.is-dragging{-webkit-user-select:none;user-select:none;box-shadow:var(--tw-shadow-panel-lifted);z-index:99991}.tw-panel.is-dragging>.tw-header,.tw-panel.is-dragging>.tw-header .tw-header-toggle{cursor:grabbing}.tw-grabber{position:absolute;top:3px;left:50%;width:28px;height:4px;border-radius:999px;background:var(--tw-text-primary);transform:translate(-50%) scaleX(.4);opacity:0;pointer-events:none;transition:opacity .15s,transform .2s var(--tw-ease-spring)}@media(hover:hover)and (pointer:fine){.tw-header:hover>.tw-grabber{opacity:.4;transform:translate(-50%) scaleX(1)}}.tw-panel.is-grabbing>.tw-header>.tw-grabber{opacity:.7;transform:translate(-50%) scaleX(1)}.tw-panel.is-dragging>.tw-header>.tw-grabber{opacity:.85;transform:translate(-50%) scaleX(1)}.tw-header{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:9px;margin-bottom:8px;border-bottom:1px solid var(--tw-border)}.tw-title{font-size:14px;font-weight:500;color:var(--tw-text-root);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tw-header-toggle{display:flex;align-items:center;gap:6px;flex:1;min-width:0;background:none;border:none;padding:0;margin:0;cursor:pointer;color:inherit;font:inherit;text-align:left}.tw-chevron{width:15px;height:15px;flex-shrink:0;color:var(--tw-text-section);transition:transform .2s var(--tw-ease-out),color .15s}.tw-panel.is-collapsed .tw-chevron{transform:rotate(-90deg)}.tw-toolbar{display:flex;align-items:center;gap:4px}.tw-search{display:none;flex:1;min-width:0;height:24px;padding:0 8px;font:inherit;font-size:13px;font-weight:500;color:var(--tw-text-primary);background:var(--tw-surface);border:1px solid var(--tw-border);border-radius:calc(var(--tw-radius) - 2px);outline:none}.tw-search:focus{border-color:var(--tw-border-hover)}.tw-search::placeholder{color:var(--tw-text-tertiary)}.tw-panel.is-searching .tw-header-toggle{display:none}.tw-panel.is-searching .tw-search{display:block}.tw-filter-hidden{display:none!important}.tw-hint{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;margin-left:4px;padding:0;vertical-align:-2px;flex:none;background:none;border:none;color:var(--tw-text-tertiary);cursor:help;pointer-events:auto;transition:color .15s,transform .18s var(--tw-ease-spring)}.tw-hint:focus-visible{color:var(--tw-text-secondary);transform:scale(1.2)}@media(hover:hover)and (pointer:fine){.tw-hint:hover{color:var(--tw-text-secondary);transform:scale(1.2)}}.tw-hint:focus-visible{outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:1px;border-radius:999px}.tw-hint svg{width:13px;height:13px;display:block}.tw-tip{position:fixed;z-index:100000;max-width:220px;padding:8px 12px;font-size:12px;line-height:1.4;color:var(--tw-text-primary);background:var(--tw-dropdown-bg);border:1px solid var(--tw-border);border-radius:8px;box-shadow:var(--tw-shadow-dropdown);pointer-events:none;opacity:0;transform:translateY(2px);transition:opacity .12s,transform .12s}.tw-tip.is-open{opacity:1;transform:none}.tw-toast{position:fixed;left:50%;bottom:24px;z-index:100000;max-width:min(320px,calc(100vw - 32px));padding:8px 16px;font-size:12px;font-weight:500;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--tw-text-primary);background:var(--tw-dropdown-bg);border:1px solid var(--tw-border);border-radius:999px;box-shadow:var(--tw-shadow-dropdown);pointer-events:none;opacity:0;transform:translate(-50%,6px);transition:opacity .16s,transform .22s var(--tw-ease-spring)}.tw-toast.is-open{opacity:1;transform:translate(-50%)}.tw-body{display:grid;grid-template-rows:1fr;transition:grid-template-rows .25s var(--tw-ease-inout)}.tw-body>.tw-controls{overflow-x:visible;overflow-y:clip;min-height:0;min-width:0}.tw-panel.is-collapsed .tw-body{grid-template-rows:0fr}.tw-header{transition:margin-bottom .25s,padding-bottom .25s,border-color .25s}.tw-panel.is-collapsed .tw-header{margin-bottom:0;padding-bottom:0;border-color:transparent}.tw-header:has(+.tw-body>.tw-controls>.tw-folder:first-child){margin-bottom:0}.tw-toolbar-btn{position:relative;display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;flex-shrink:0;background:var(--tw-surface);border:none;border-radius:calc(var(--tw-radius) - 2px);color:var(--tw-text-label);cursor:pointer;will-change:transform;transition:background .15s,color .15s,transform .24s var(--tw-ease-pop)}@media(hover:hover)and (pointer:fine){.tw-toolbar-btn:hover{background:var(--tw-surface-hover);color:var(--tw-text-primary)}.tw-toolbar-btn:disabled{cursor:default}}.tw-toolbar-btn:after{content:"";position:absolute;inset:-2px}.tw-toolbar-btn:active{transform:scale(.86);transition:transform .08s ease-out}.tw-toolbar-btn svg{width:14px;height:14px;display:block}.tw-toolbar-btn__icons{position:relative;display:block;width:14px;height:14px}.tw-toolbar-btn__icons svg{position:absolute;inset:0;will-change:transform,filter;filter:blur(0);transition:opacity .25s var(--tw-ease-inout),transform .25s var(--tw-ease-inout),filter .25s var(--tw-ease-inout)}.tw-toolbar-btn__check{opacity:0;transform:scale(.25);filter:blur(2px);color:var(--tw-success)}.tw-toolbar-btn--swap.is-copied .tw-toolbar-btn__copy{opacity:0;transform:scale(.25);filter:blur(2px)}.tw-toolbar-btn--swap.is-copied .tw-toolbar-btn__check{opacity:1;transform:none;filter:blur(0)}.tw-toolbar-btn--reset svg{--tw-spin: 0deg;--tw-wind: 0deg;will-change:transform;transform:rotate(calc(var(--tw-spin) + var(--tw-wind)));transition:transform .34s cubic-bezier(.34,1.55,.5,1)}@media(hover:hover)and (pointer:fine){.tw-toolbar-btn--reset:not(:disabled):hover svg{--tw-wind: 22deg}}.tw-toolbar-btn--reset.is-spinning svg{transition-duration:.5s;transition-timing-function:var(--tw-ease-inout)}.tw-copy-back{transform:translate(calc(-1 * var(--tw-fan, 0px)),calc(-1 * var(--tw-fan, 0px)))}.tw-copy-front{transform:translate(var(--tw-fan, 0px),var(--tw-fan, 0px))}.tw-layer-top{transform:translateY(calc(-1 * var(--tw-lift, 0px)))}.tw-copy-back,.tw-copy-front,.tw-layer-top{transition:transform .3s var(--tw-ease-pop)}@media(hover:hover)and (pointer:fine){.tw-toolbar-btn:not(:disabled):hover{--tw-fan: 1px;--tw-lift: 1.75px}}.tw-toolbar-btn[aria-expanded=true]{--tw-lift: 1.75px}.tw-trigger:focus-visible,.tw-select-trigger:focus-visible,.tw-button:focus-visible,.tw-seg-btn:focus-visible,.tw-header-toggle:focus-visible,.tw-folder-header:focus-visible,.tw-slider:focus-visible,.tw-pad:focus-visible,.tw-motion-stage:focus-visible,.tw-sides-link:focus-visible,.tw-radiogrid-btn:focus-visible,.tw-buttongroup-btn:focus-visible,.tw-tabs-tab:focus-visible,.tw-text:focus-visible:not(.tw-focus-quiet),.tw-num:focus-visible:not(.tw-focus-quiet),.tw-color-chan-input:focus-visible:not(.tw-focus-quiet),.tw-search:focus-visible:not(.tw-focus-quiet),.tw-color-mode:focus-visible,.tw-presets-load:focus-visible,.tw-presets-savebtn:focus-visible,.tw-presets-del:focus-visible,.tw-presets-input:focus-visible:not(.tw-focus-quiet){outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:-2px}.tw-toolbar-btn:focus-visible{outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:1px}.tw-gradient-stop:focus-visible,.tw-gradient-add:focus-visible,.tw-bezier-handle:focus-visible{outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:2px}.tw-controls{display:flex;flex-direction:column;gap:6px}.tw-controls>*{min-width:0}.tw-cond-hidden{display:none!important}.is-disabled{opacity:.4;cursor:not-allowed}.is-disabled *{pointer-events:none}.tw-resettable{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.tw-resettable.tw-resettable{transition:color .15s,background-color .3s ease-out}.tw-resettable.tw-reset-holding{border-radius:calc(var(--tw-radius) - 4px);background-color:var(--tw-surface-active, rgba(128, 128, 128, .22));transition:color .15s,background-color .5s ease-out}.tw-slider-wrap{position:relative;height:var(--tw-row-height)}.tw-slider{position:absolute;inset:0;cursor:pointer;user-select:none;-webkit-user-select:none;overflow:hidden;background:var(--tw-surface);border-radius:var(--tw-radius);touch-action:none}.tw-slider-hashmarks{position:absolute;inset:0;pointer-events:none}.tw-slider-hashmark{position:absolute;top:50%;width:1px;height:8px;border-radius:999px;transform:translate(-50%) translateY(-50%);background:#fff0;transition:background .2s}.tw-slider.is-active .tw-slider-hashmark{background:var(--tw-border-hover)}.tw-slider.is-active .tw-slider-value{color:var(--tw-text-focus)}.tw-slider-fill{position:absolute;top:0;bottom:0;left:0;width:0;background:var(--tw-surface-active);transition:background .15s;pointer-events:none}.tw-slider.is-active .tw-slider-fill{background:var(--tw-accent, var(--tw-border-hover))}.tw-slider-handle{position:absolute;top:50%;left:0;width:3px;height:20px;border-radius:999px;background:var(--tw-text-primary);transform:translateY(-50%) scaleX(.25);opacity:0;pointer-events:none;transition:opacity .15s,transform .2s var(--tw-ease-spring)}.tw-slider.is-hover .tw-slider-handle,.tw-slider:focus-within .tw-slider-handle{opacity:.5;transform:translateY(-50%) scaleX(1)}@media(hover:hover)and (pointer:fine){.tw-slider:hover .tw-slider-handle{opacity:.5;transform:translateY(-50%) scaleX(1)}}.tw-slider.is-active .tw-slider-handle,.tw-slider.is-dragging .tw-slider-handle{opacity:.9;transform:translateY(-50%) scaleX(1)}.tw-slider-handle:focus-visible{opacity:.9;transform:translateY(-50%) scaleX(1);outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:2px}.tw-slider.is-active.is-dodge .tw-slider-handle,.tw-slider.is-dragging.is-dodge .tw-slider-handle,.tw-slider.is-hover.is-dodge .tw-slider-handle{opacity:.1;transform:translateY(-50%) scaleX(1) scaleY(.75)}@media(hover:hover)and (pointer:fine){.tw-slider:hover.is-dodge .tw-slider-handle{opacity:.1;transform:translateY(-50%) scaleX(1) scaleY(.75)}}.tw-interval.is-active .tw-slider-handle.is-dodge,.tw-interval.is-dragging .tw-slider-handle.is-dodge{opacity:.1;transform:translateY(-50%) scaleX(1) scaleY(.75)}.tw-slider-label{position:absolute;left:12px;top:50%;transform:translateY(-50%);max-width:calc(100% - 64px);font-size:12px;font-weight:500;color:var(--tw-text-label);pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tw-interval .tw-slider-label{max-width:calc(100% - 112px)}.tw-slider-value{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:12px;font-weight:500;font-family:var(--tw-font-sans);color:var(--tw-text-label);pointer-events:auto;transition:color .15s}.tw-slider-value.is-editable{cursor:text;color:var(--tw-text-focus);text-decoration:underline;text-decoration-color:var(--tw-text-tertiary);text-underline-offset:3px}.tw-slider-input{position:absolute;right:10px;top:50%;transform:translateY(-50%);width:4ch;min-width:3ch;max-width:6ch;font-size:12px;font-weight:500;font-family:var(--tw-font-sans);color:var(--tw-text-label);background:transparent;border:none;padding:0;outline:none;text-align:right}.tw-slider-input:focus{color:var(--tw-text-focus)}.tw-row{display:flex;align-items:center;justify-content:space-between;gap:12px;height:var(--tw-row-height);padding:2px 10px 2px 12px;background:var(--tw-surface);border-radius:var(--tw-radius)}.tw-row-label{font-size:12px;font-weight:500;line-height:17px;color:var(--tw-text-label);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tw-slider-label:empty,.tw-row-label:empty,.tw-select-label:empty,.tw-radiogrid-label:empty,.tw-trigger-label:empty,.tw-fps-label:empty{display:none}.tw-row-label:empty+*,.tw-select-label:empty+*,.tw-trigger-label:empty+*{margin-left:auto}.tw-seg{position:relative;display:flex;gap:2px;padding:2px;border-radius:var(--tw-radius)}.tw-row .tw-seg{flex-shrink:0;margin-right:-8px}.tw-seg-pill{position:absolute;top:2px;bottom:2px;left:0;width:0;background:var(--tw-accent, var(--tw-surface-active));border-radius:calc(var(--tw-radius) - 2px);z-index:0;pointer-events:none}.tw-seg.is-ready .tw-seg-pill{transition:left .24s var(--tw-ease-out),width .24s var(--tw-ease-out)}.tw-seg-btn{position:relative;z-index:1;flex:0 0 auto;min-width:40px;padding:6px 8px;text-align:center;font:inherit;font-size:12px;font-weight:500;background:transparent;border:none;cursor:pointer;color:var(--tw-text-label);transition:color .15s,transform .2s var(--tw-ease-pop)}.tw-seg-btn[data-active=true]{color:var(--tw-on-accent)}.tw-seg-btn:active{transform:scale(.9);transition:transform .08s ease-out}.tw-row .tw-seg .tw-seg-btn{min-width:0;padding:5px}.tw-radiogrid{display:flex;align-items:center;gap:10px;min-height:var(--tw-row-height);padding:4px 4px 4px 12px;background:var(--tw-surface);border-radius:var(--tw-radius)}.tw-radiogrid-label{flex-shrink:1;min-width:0;font-size:12px;font-weight:500;color:var(--tw-text-label);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tw-radiogrid-grid{flex:1 1 0;max-width:max-content;min-width:0;margin-left:auto;display:grid;grid-template-columns:repeat(var(--tw-rg-cols, 3),minmax(0,1fr));gap:4px}.tw-radiogrid-btn{font:inherit;font-size:12px;font-weight:500;font-variant-numeric:tabular-nums;padding:5px;text-align:center;color:var(--tw-text-label);background:transparent;border:none;border-radius:calc(var(--tw-radius) - 2px);cursor:pointer;transition:background .15s,color .15s,transform .2s var(--tw-ease-pop);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(hover:hover)and (pointer:fine){.tw-radiogrid-btn:hover{background:var(--tw-surface-hover);color:var(--tw-text-primary)}}.tw-radiogrid-btn:active{transform:scale(.93);transition:background .15s,color .15s,transform .08s ease-out}.tw-radiogrid-btn[data-active=true]{background:var(--tw-accent, var(--tw-surface-active));color:var(--tw-on-accent)}.tw-button{display:flex;align-items:center;justify-content:center;width:100%;height:var(--tw-row-height);padding:0 16px;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-secondary);background:var(--tw-surface);border:none;border-radius:var(--tw-radius);cursor:pointer;transition:background .15s,color .15s,transform .24s var(--tw-ease-pop)}@media(hover:hover)and (pointer:fine){.tw-button:hover{background:var(--tw-surface-hover);color:var(--tw-text-primary)}}.tw-button:active{background:var(--tw-surface-active);transform:scale(.975);transition:background .15s,color .15s,transform .08s ease-out}.tw-buttongroup{height:auto;min-height:var(--tw-row-height)}.tw-buttongroup-btns{display:flex;flex-wrap:wrap;gap:4px;flex:1;min-width:0;margin-right:-6px}.tw-buttongroup-btn{flex:1 1 0;min-width:6ch;padding:5px 8px;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-label);background:var(--tw-surface-active);border:none;border-radius:calc(var(--tw-radius) - 2px);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .15s,color .15s,transform .2s var(--tw-ease-pop)}@media(hover:hover)and (pointer:fine){.tw-buttongroup-btn:hover{background:var(--tw-surface-hover);color:var(--tw-text-primary)}}.tw-buttongroup-btn:active{transform:scale(.93);transition:background .15s,color .15s,transform .08s ease-out}.tw-separator{height:1px;margin:3px 2px;background:var(--tw-border)}.tw-tabs{display:flex;flex-direction:column;gap:8px}.tw-tabs-bar{position:relative;display:flex;gap:2px;padding:2px;min-width:0;background:var(--tw-surface);border-radius:var(--tw-radius)}.tw-tabs-pill{position:absolute;top:2px;bottom:2px;left:0;width:0;background:var(--tw-surface-active);border-radius:calc(var(--tw-radius) - 2px);z-index:0;transition:left .24s var(--tw-ease-out),width .24s var(--tw-ease-out)}.tw-tabs-tab{position:relative;z-index:1;flex:1;min-width:0;padding:5px 8px;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-label);background:transparent;border:none;border-radius:calc(var(--tw-radius) - 2px);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .15s,transform .2s var(--tw-ease-pop)}.tw-tabs-tab[data-active=true]{color:var(--tw-text-primary)}.tw-tabs-tab:active{transform:scale(.95);transition:color .15s,transform .08s ease-out}.tw-tabs-page{display:none;flex-direction:column;gap:6px}.tw-tabs-page[data-active=true]{display:flex;animation:tw-page-in .3s var(--tw-ease-out)}@keyframes tw-page-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.tw-select{position:relative}.tw-select-trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;height:var(--tw-row-height);padding:0 12px;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-label);background:var(--tw-surface);border:none;border-radius:var(--tw-radius);cursor:pointer;transition:background .15s,transform .24s var(--tw-ease-pop)}@media(hover:hover)and (pointer:fine){.tw-select-trigger:hover{background:var(--tw-surface-hover)}}.tw-select-trigger:active{transform:scale(.985);transition:background .15s,transform .08s ease-out}.tw-select.is-open .tw-select-trigger{background:var(--tw-surface-active)}.tw-select-label{font-weight:500;flex:1 1 0;min-width:5ch;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tw-select-right{display:flex;align-items:center;gap:8px;min-width:0;flex:0 1 auto;max-width:calc(100% - 5ch - 10px)}.tw-select-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tw-select-chevron{width:18px;height:18px;flex-shrink:0;opacity:.6;margin-right:-4.5px;transition:transform .2s var(--tw-ease-out)}.tw-select.is-open .tw-select-chevron{transform:rotate(180deg)}.tw-select-dropdown{position:fixed;z-index:99999;padding:4px;border-radius:calc(var(--tw-radius) + 2px);background:var(--tw-dropdown-bg);border:1px solid var(--tw-border);box-shadow:var(--tw-shadow-dropdown);max-height:60vh;overflow-y:auto;transform-origin:top;opacity:0;transform:translateY(-6px) scale(.96);pointer-events:none;transition:opacity .16s var(--tw-ease-out),transform .22s var(--tw-ease-spring)}.tw-select-dropdown.is-open{opacity:1;transform:none;pointer-events:auto}.tw-select-option{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-label);background:transparent;border:none;border-radius:calc(var(--tw-radius) - 2px);cursor:pointer;text-align:left;transition:background .15s,color .15s}@media(hover:hover)and (pointer:fine){.tw-select-option:hover{background:var(--tw-surface-hover)}}.tw-select-option:focus-visible{background:var(--tw-surface-hover);color:var(--tw-text-primary);outline:none}.tw-select-option[data-selected=true]{color:var(--tw-text-primary);background:var(--tw-accent, var(--tw-surface-active))}.tw-option-swatch{flex-shrink:0;width:12px;height:12px;border-radius:4px;box-shadow:inset 0 0 0 1px var(--tw-border-hover)}.tw-option-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tw-presets-menu{position:fixed;z-index:99999;width:208px;display:flex;flex-direction:column;gap:6px;padding:8px;background:var(--tw-dropdown-bg);border:1px solid var(--tw-border);border-radius:calc(var(--tw-radius) + 4px);box-shadow:var(--tw-shadow-dropdown);transform-origin:top right;opacity:0;transform:translateY(-6px) scale(.97);pointer-events:none;transition:opacity .16s var(--tw-ease-out),transform .24s var(--tw-ease-spring)}.tw-presets-menu.is-open{opacity:1;transform:none;pointer-events:auto}.tw-presets-save{display:flex;gap:6px}.tw-presets-input{flex:1;min-width:0;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-primary);background:var(--tw-surface);border:1px solid var(--tw-border);border-radius:calc(var(--tw-radius) - 2px);padding:6px 8px;outline:none}.tw-presets-input:focus{border-color:var(--tw-border-hover)}.tw-presets-input::placeholder{color:var(--tw-text-tertiary)}.tw-presets-savebtn{flex-shrink:0;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-primary);background:var(--tw-surface);border:none;border-radius:calc(var(--tw-radius) - 2px);padding:6px 10px;cursor:pointer;transition:background .15s}@media(hover:hover)and (pointer:fine){.tw-presets-savebtn:hover{background:var(--tw-surface-hover)}}.tw-presets-list{display:flex;flex-direction:column;gap:2px;max-height:200px;overflow-y:auto}.tw-presets-empty{padding:8px;font-size:12px;font-weight:500;color:var(--tw-text-tertiary);text-align:center}.tw-presets-row{display:flex;align-items:center;gap:2px}.tw-presets-load{flex:1;min-width:0;text-align:left;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-label);background:transparent;border:none;border-radius:calc(var(--tw-radius) - 2px);padding:6px 8px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .15s,color .15s}@media(hover:hover)and (pointer:fine){.tw-presets-load:hover{background:var(--tw-surface-hover);color:var(--tw-text-primary)}}.tw-presets-del{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--tw-text-tertiary);background:transparent;border:none;border-radius:calc(var(--tw-radius) - 2px);cursor:pointer;transition:background .15s,color .15s,transform .2s var(--tw-ease-pop)}@media(hover:hover)and (pointer:fine){.tw-presets-del:hover{background:var(--tw-surface-hover);color:var(--tw-text-primary)}}.tw-presets-del:active{transform:scale(.85);transition:background .15s,color .15s,transform .08s ease-out}.tw-presets-savebtn:active{transform:scale(.95)}.tw-presets-del svg{width:12px;height:12px;display:block}.tw-trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;height:var(--tw-row-height);padding:0 10px 0 12px;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-label);cursor:pointer;background:var(--tw-surface);border:none;border-radius:var(--tw-radius);transition:background .15s,transform .24s var(--tw-ease-pop)}@media(hover:hover)and (pointer:fine){.tw-trigger:hover{background:var(--tw-surface-hover)}}.tw-trigger:active{transform:scale(.985);transition:background .15s,transform .08s ease-out}.is-open>.tw-trigger{background:var(--tw-surface-active)}.tw-trigger-label{flex:1 1 0;min-width:5ch;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tw-trigger-right{display:flex;align-items:center;gap:8px;min-width:0;flex:0 1 auto;max-width:calc(100% - 5ch - 10px)}.tw-trigger-value{font-family:var(--tw-font-sans);word-spacing:.1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:20ch}.tw-trigger-chip{height:18px;flex-shrink:0;border-radius:calc(var(--tw-radius) - 4px);box-shadow:inset 0 0 0 1px var(--tw-border-hover);transition:transform .2s var(--tw-ease-spring)}.is-open>.tw-trigger .tw-trigger-chip{transform:scale(1.07)}@media(hover:hover)and (pointer:fine){.tw-trigger:hover .tw-trigger-chip{transform:scale(1.07)}}.tw-color{position:relative}.tw-color-swatch{width:18px}.tw-color-pop,.tw-select-dropdown,.tw-grab-guide,.tw-presets-menu{line-height:normal}.tw-portal *,.tw-portal *:before,.tw-portal *:after{box-sizing:border-box}.tw-color-pop{position:fixed;z-index:99999;width:240px;display:flex;flex-direction:column;gap:8px;padding:10px;background:var(--tw-dropdown-bg);border:1px solid var(--tw-border);border-radius:calc(var(--tw-radius) + 10px);box-shadow:var(--tw-shadow-dropdown);max-height:calc(100dvh - 16px);overflow-y:auto;overflow-x:clip;opacity:0;transform:translateY(-6px) scale(.97);transform-origin:top;pointer-events:none;transition:opacity .16s var(--tw-ease-out),transform .24s var(--tw-ease-spring)}.tw-color-pop.is-open{opacity:1;transform:none;pointer-events:auto}.tw-color-body{display:flex;flex-direction:column;gap:8px;min-width:0}.tw-color-mode-row{display:flex;align-items:center;gap:8px}.tw-color-mode{appearance:none;-webkit-appearance:none;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-primary);background-color:var(--tw-surface);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23888888' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;border:1px solid var(--tw-border);border-radius:calc(var(--tw-radius) - 2px);padding:4px 26px 4px 10px;cursor:pointer;outline:none}@media(hover:hover)and (pointer:fine){.tw-color-mode:hover{background-color:var(--tw-surface-hover)}}.tw-color-mode:focus-visible{border-color:var(--tw-border-hover)}.tw-color-gamut{margin-left:auto;font-family:var(--tw-font-sans);font-size:12px;font-weight:500;color:var(--tw-text-tertiary)}.tw-color-channels{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.tw-color-channels--hex{grid-template-columns:1fr}.tw-color-chan{display:flex;flex-direction:column;gap:3px;min-width:0}.tw-color-chan-label{font-size:10px;font-weight:600;letter-spacing:.03em;color:var(--tw-text-tertiary);text-transform:uppercase}.tw-color-chan-input{width:100%;min-width:0;font:inherit;font-size:12px;font-weight:500;font-family:var(--tw-font-sans);color:var(--tw-text-label);background:var(--tw-surface);border:1px solid var(--tw-border);border-radius:calc(var(--tw-radius) - 2px);padding:5px 6px;outline:none;text-transform:uppercase}.tw-color-chan-input:focus{color:var(--tw-text-focus);border-color:var(--tw-border-hover)}.tw-wg-area{position:relative;width:100%;height:140px;border-radius:var(--tw-radius);cursor:crosshair;touch-action:none;box-shadow:inset 0 0 0 1px var(--tw-border)}.tw-wg-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;border-radius:inherit}.tw-wg-thumb{position:absolute;width:14px;height:14px;border-radius:999px;border:2px solid #fff;box-shadow:0 0 0 1px #00000073;transform:translate(-50%,-50%);pointer-events:none;transition:transform .18s var(--tw-ease-spring),box-shadow .18s}.tw-wg-area.is-grabbing .tw-wg-thumb{transform:translate(-50%,-50%) scale(1.32);box-shadow:0 0 0 1px #00000073,0 2px 8px #00000073}.tw-wg-hue,.tw-wg-alpha{position:relative;width:100%;height:14px;border-radius:999px;cursor:ew-resize;touch-action:none;box-shadow:inset 0 0 0 1px var(--tw-border)}.tw-wg-alpha{background:var(--tw-checker)}.tw-wg-hue-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;border-radius:inherit}.tw-wg-hue-thumb{position:absolute;top:50%;width:16px;height:16px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #00000073,0 1px 3px #0006;transform:translate(-50%,-50%);pointer-events:none;transition:transform .18s var(--tw-ease-spring),box-shadow .18s}.tw-wg-hue.is-grabbing .tw-wg-hue-thumb,.tw-wg-alpha.is-grabbing .tw-wg-hue-thumb{transform:translate(-50%,-50%) scale(1.28);box-shadow:0 0 0 1px #00000073,0 2px 8px #00000073}.tw-wg-alpha-grad{position:absolute;inset:0;border-radius:inherit}.tw-gradient{position:relative}.tw-gradient-preview{width:72px;background:var(--tw-checker)}.tw-gradient-pop{width:260px}.tw-gradient-pop .tw-color-mode-row{gap:6px}.tw-gradient-pop .tw-color-mode{padding-left:8px;padding-right:24px}.tw-gradient-bar-row{display:flex;align-items:stretch;gap:6px}.tw-gradient-bar-row>.tw-gradient-bar{flex:1;min-width:0}.tw-gradient-bar{position:relative;width:100%;height:28px;border-radius:var(--tw-radius);box-shadow:inset 0 0 0 1px var(--tw-border);background:var(--tw-checker)}.tw-gradient-grad{position:absolute;inset:0;border-radius:inherit;pointer-events:none}.tw-gradient-rail{position:absolute;left:0;right:0;bottom:-5px;height:14px;pointer-events:none}.tw-gradient-stop{position:absolute;top:0;width:13px;height:13px;padding:0;transform:translate(-50%);border-radius:calc(var(--tw-radius) - 4px);background:var(--stop);border:2px solid var(--tw-dropdown-bg);box-shadow:0 0 0 1px var(--tw-border-hover),0 1px 3px #0006;cursor:ew-resize;touch-action:none;pointer-events:auto;transition:opacity .12s ease,transform .16s var(--tw-ease-spring),box-shadow .16s}.tw-gradient-stop[data-sel=true]{box-shadow:0 0 0 2px var(--tw-accent, var(--tw-text-focus)),0 1px 3px #0006;z-index:1}.tw-gradient-stop:before,.tw-bezier-handle:before{content:"";position:absolute;inset:-4px;border-radius:inherit}@media(hover:hover)and (pointer:fine){.tw-gradient-stop:hover{transform:translate(-50%) scale(1.22)}}.tw-gradient-stop[data-removing=true]{opacity:.3;transform:translate(-50%) scale(.7)}.tw-gradient-add{display:flex;align-items:center;justify-content:center;flex:none;width:32px;padding:0;border:none;border-radius:var(--tw-radius);background:var(--tw-surface);color:var(--tw-text-primary);cursor:pointer;will-change:transform;transition:background .15s,transform .24s var(--tw-ease-pop)}.tw-gradient-add:active{transform:scale(.88);transition:background .15s,transform .08s ease-out}.tw-gradient-add svg{width:16px;height:16px;display:block;will-change:transform;transition:transform .2s var(--tw-ease-pop)}@media(hover:hover)and (pointer:fine){.tw-gradient-add:hover{background:var(--tw-surface-hover)}.tw-gradient-add:hover svg{transform:scale(1.18)}}.tw-text,.tw-num{flex:1;min-width:0;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-label);background:transparent;border:none;outline:none;text-align:right;cursor:text;padding:0;border-radius:calc(var(--tw-radius) - 4px)}.tw-num{font-family:var(--tw-font-sans)}.tw-text:focus,.tw-num:focus{color:var(--tw-text-focus)}.tw-text::placeholder{color:var(--tw-text-tertiary)}.tw-row-multiline{position:relative;flex-direction:column;align-items:stretch;height:auto;gap:4px;padding:6px 10px 10px 12px}.tw-textarea{flex:none;width:100%;resize:vertical;min-height:3em;padding:0;line-height:1.45;text-align:left;font-family:var(--tw-font-sans)}.tw-textarea::-webkit-resizer{background:transparent}.tw-textarea:is(.is-clip-top,.is-clip-bottom){--tw-clip-top: 0px;--tw-clip-bottom: 0px;-webkit-mask-image:linear-gradient(to bottom,transparent,#000 var(--tw-clip-top),#000 calc(100% - var(--tw-clip-bottom)),transparent);mask-image:linear-gradient(to bottom,transparent,#000 var(--tw-clip-top),#000 calc(100% - var(--tw-clip-bottom)),transparent)}.tw-textarea.is-clip-top{--tw-clip-top: 14px}.tw-textarea.is-clip-bottom{--tw-clip-bottom: 14px}.tw-row-multiline:after{content:"";position:absolute;right:8px;bottom:8px;width:11px;height:11px;pointer-events:none;background-color:var(--tw-text-tertiary);--tw-grip: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M11 3 3 11M11 7 7 11' stroke='%23000' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");-webkit-mask:var(--tw-grip) right bottom / contain no-repeat;mask:var(--tw-grip) right bottom / contain no-repeat}.tw-image{position:relative}.tw-image-input{display:none}.tw-image-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tw-image-thumb{width:18px;background:var(--tw-base) center / cover no-repeat}.tw-image-thumb[data-set=false]{background:var(--tw-checker)}.tw-image .tw-trigger[data-over=true]{background:var(--tw-surface-hover);outline:1.5px dashed var(--tw-border-hover);outline-offset:-2px}.tw-image .tw-trigger[data-over=true] .tw-image-thumb{transform:scale(1.14)}.tw-fps{display:grid;grid-template-columns:1fr auto;align-items:center;gap:0 8px;background:var(--tw-surface);border-radius:var(--tw-radius);padding:8px 10px 10px 12px}.tw-fps-label{font-size:12px;font-weight:500;color:var(--tw-text-label)}.tw-fps-val{font-family:var(--tw-font-sans);font-size:12px;color:var(--tw-text-primary);text-align:right}.tw-fps-canvas{grid-column:1 / -1;width:100%;height:40px;display:block;margin-top:6px}.tw-monitor-buffer{grid-column:1 / -1;margin:6px 0 0;height:calc(var(--tw-monitor-rows, 4) * 1.45em);overflow:hidden;font-family:var(--tw-font-sans);font-variant-numeric:tabular-nums;font-size:11px;line-height:1.45;color:var(--tw-text-secondary);white-space:pre;word-break:break-all}.tw-num-wrap{display:flex;align-items:center;gap:4px}.tw-slider-unit{color:var(--tw-text-tertiary)}.tw-num-unit{flex-shrink:0;font-size:12px;line-height:normal;color:var(--tw-text-tertiary);padding-right:2px;user-select:none;-webkit-user-select:none}.tw-num-wrap .tw-num{flex:0 0 auto;width:6ch;text-overflow:ellipsis}.tw-row>.tw-num-wrap .tw-num{width:9ch}.tw-num-grab{display:flex;align-items:center;justify-content:center;width:12px;height:18px;flex-shrink:0;color:var(--tw-text-tertiary);cursor:ew-resize;touch-action:none;transition:color .15s,transform .18s var(--tw-ease-spring)}.tw-num-grab svg{width:12px;height:12px;display:block}.tw-num-grab.is-dragging{color:var(--tw-text-primary);transform:scale(1.22)}@media(hover:hover)and (pointer:fine){.tw-num-grab:hover{color:var(--tw-text-primary);transform:scale(1.22)}}.tw-grab-guide{position:fixed;inset:0;z-index:100001;pointer-events:none}.tw-grab-line{position:fixed;height:2px;border:0;transform:translateY(-50%);background:radial-gradient(circle closest-side,var(--tw-text-label) 99%,transparent) 0 50% / var(--tw-grab-gap, 7px) 2px repeat-x}.tw-grab-dot{position:fixed;width:5px;height:5px;border-radius:50%;background:var(--tw-text-label);transform:translate(-50%,-50%)}.tw-grab-bubble{position:fixed;transform:translate(-50%,-100%);padding:2px 7px;border-radius:calc(var(--tw-radius) - 2px);background:var(--tw-dropdown-bg);border:1px solid var(--tw-border);box-shadow:var(--tw-shadow-dropdown);color:var(--tw-text-primary);font-family:var(--tw-font-sans);font-size:11px;font-weight:500;white-space:nowrap;transform-origin:bottom center;animation:tw-bubble-in .18s var(--tw-ease-pop)}@keyframes tw-bubble-in{0%{opacity:0;transform:translate(-50%,-100%) scale(.8)}to{opacity:1;transform:translate(-50%,-100%) scale(1)}}.tw-grab-arrow{position:fixed;width:0;height:0;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:7px solid var(--tw-text-label)}.tw-folder{display:flex;flex-direction:column;border-top:1px solid var(--tw-border);border-bottom:1px solid var(--tw-border)}.tw-folder+.tw-folder{border-top:none;margin-top:-6px}.tw-folder .tw-folder{margin-left:10px}.tw-controls>.tw-folder:first-child{border-top:none}.tw-folder:last-child{border-bottom:none}.tw-folder-header{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;height:var(--tw-row-height);padding:0;background:none;border:none;cursor:pointer;color:inherit;font:inherit;text-align:left}.tw-folder-title{font-size:12px;font-weight:600;color:var(--tw-text-section);letter-spacing:-.01em;transition:color .15s}@media(hover:hover)and (pointer:fine){.tw-folder-header:hover .tw-folder-title,.tw-folder-header:hover .tw-chevron{color:var(--tw-text-primary)}}.tw-folder-header .tw-chevron{color:var(--tw-text-section);margin-right:-1.75px;transition:transform .35s var(--tw-ease-fold),color .15s}.tw-folder.is-collapsed .tw-folder-header .tw-chevron{transform:rotate(180deg)}.tw-folder-body{display:grid;grid-template-rows:1fr;transition:grid-template-rows .35s var(--tw-ease-fold);contain:layout}.tw-folder.is-collapsed .tw-folder-body{grid-template-rows:0fr}.tw-folder-body>.tw-controls{overflow-x:visible;overflow-y:clip;min-height:0;min-width:0;padding-bottom:8px;opacity:1;transition:opacity .35s var(--tw-ease-fold),padding-bottom .35s var(--tw-ease-fold)}.tw-folder.is-collapsed .tw-folder-body>.tw-controls{opacity:0;padding-bottom:0}.tw-folder:last-child .tw-folder-body>.tw-controls{padding-bottom:0}.tw-folder-body>.tw-controls>*{flex-shrink:0}.tw-shadow-chip,.tw-motion-chip{width:26px;background:var(--tw-base);overflow:hidden}.tw-shadow-chip{display:flex;align-items:center;justify-content:center}.tw-shadow-chip-tile{width:12px;height:8px;border-radius:2px;background:var(--tw-dropdown-bg)}.tw-shadow-stage{display:flex;align-items:center;justify-content:center;height:84px;border-radius:var(--tw-radius);background:var(--tw-base);overflow:hidden}.tw-shadow-card{width:64px;height:40px;border-radius:9px;background:var(--tw-dropdown-bg)}.tw-shadow-pop{width:260px}.tw-shadow-color{width:100%}.tw-shadow-color .tw-trigger-right,.tw-shadow-color .tw-trigger-value{max-width:none}.tw-shadow-pop .tw-color-body[hidden]{display:none}.tw-shadow-chevron{flex-shrink:0;width:12px;height:12px;color:var(--tw-text-tertiary);transition:transform .2s var(--tw-ease-pop)}.tw-shadow-color[aria-expanded=true] .tw-shadow-chevron{transform:rotate(180deg)}.tw-shadow-pop .tw-color-body{margin-top:2px}.tw-sides-link{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;color:var(--tw-text-tertiary);background:transparent;border:none;border-radius:calc(var(--tw-radius) - 3px);cursor:pointer;transition:color .15s,background .15s}.tw-sides-link svg{width:14px;height:14px}.tw-sides-link[aria-pressed=true]{color:var(--tw-accent, var(--tw-text-primary))}@media(hover:hover)and (pointer:fine){.tw-sides-link:hover{background:var(--tw-surface-hover);color:var(--tw-text-primary)}}.tw-sides>.tw-row .tw-sides-link{margin-left:auto}.tw-sides.is-linked .tw-sides-multi,.tw-sides:not(.is-linked)>.tw-row{display:none}.tw-sides-multi{display:flex;flex-direction:column;gap:6px;padding:6px 10px 10px 12px;background:var(--tw-surface);border-radius:var(--tw-radius)}.tw-sides-head{display:flex;align-items:center;gap:8px;min-height:20px}.tw-sides-multi .tw-fields,.tw-fields.tw-shadow-fields{grid-auto-flow:row;grid-template-columns:1fr 1fr}.tw-sides-sum{margin-left:auto;font-family:var(--tw-font-sans);font-size:12px;font-weight:500;color:var(--tw-text-tertiary);word-spacing:.1em}.tw-motion-chip{position:relative}.tw-motion-chip svg{display:block;width:100%;height:100%}.tw-motion-chip path{fill:none;stroke:var(--tw-accent, var(--tw-text-primary));stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.tw-motion-body,.tw-motion-pane{display:flex;flex-direction:column;gap:8px}.tw-motion-pop .tw-bezier-graph,.tw-motion-pop .tw-spring-viz{height:120px}.tw-motion-pane .tw-spring>.tw-row{display:none}.tw-motion-stage{display:flex;align-items:center;height:56px;padding:0 16px;border-radius:var(--tw-radius);background:var(--tw-surface);overflow:hidden;cursor:pointer}.tw-motion-box{width:24px;height:24px;border-radius:7px;background:var(--tw-accent, var(--tw-text-primary));will-change:transform}.tw-spring{display:flex;flex-direction:column;gap:6px}.tw-spring-viz{width:100%;height:96px;border-radius:var(--tw-radius);background:var(--tw-surface);overflow:hidden;cursor:crosshair;touch-action:none;transition:background .15s}@media(hover:hover)and (pointer:fine){.tw-spring-viz:hover{background:var(--tw-surface-hover)}}.tw-spring-viz.is-dragging{background:var(--tw-surface-hover);box-shadow:inset 0 0 0 1px var(--tw-border-hover)}.tw-spring-canvas{width:100%;height:100%;display:block}.tw-fields{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:6px}.tw-point{position:relative}.tw-point-preview{position:relative;width:18px;border-radius:2.5px;background:var(--tw-base);overflow:hidden}.tw-point-preview-dot{position:absolute;width:5px;height:5px;border-radius:999px;background:var(--tw-accent, var(--tw-text-primary));transform:translate(-50%,-50%)}.tw-point-body{display:flex;flex-direction:column;gap:8px;min-width:0}.tw-point-pop .tw-pad{max-width:none;margin:0}.tw-pad{position:relative;width:100%;max-width:176px;aspect-ratio:1;margin:0 auto 8px;border-radius:var(--tw-radius);background:var(--tw-base);box-shadow:inset 0 0 0 1px var(--tw-border);cursor:crosshair;touch-action:none;overflow:visible}.tw-pad-line{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.tw-pad-line line{stroke:var(--tw-accent, var(--tw-text-tertiary));stroke-width:1.5;vector-effect:non-scaling-stroke;stroke-linecap:round}.tw-pad-axis{position:absolute;background:var(--tw-border);pointer-events:none}.tw-pad-axis-x{left:0;right:0;top:50%;height:1px;transform:translateY(-50%)}.tw-pad-axis-y{top:0;bottom:0;left:50%;width:1px;transform:translate(-50%)}.tw-pad-thumb{position:absolute;width:14px;height:14px;border-radius:999px;background:var(--tw-accent, var(--tw-text-primary));border:2px solid var(--tw-base);box-shadow:0 0 0 1px var(--tw-border-hover),0 1px 3px #0000004d;transform:translate(-50%,-50%);pointer-events:none;transition:transform .18s var(--tw-ease-spring),box-shadow .18s}.tw-pad.is-grabbing .tw-pad-thumb{transform:translate(-50%,-50%) scale(1.28);box-shadow:0 0 0 1px var(--tw-border-hover),0 3px 9px #0006}.tw-field{display:flex;flex-direction:column;gap:4px;min-width:0}.tw-field-label{font-size:10px;font-weight:600;letter-spacing:.02em;color:var(--tw-text-tertiary);text-transform:uppercase}.tw-field .tw-num-wrap{background:var(--tw-base);border:1px solid var(--tw-border);border-radius:calc(var(--tw-radius) - 2px);padding:3px 4px;gap:2px;transition:border-color .15s}.tw-field .tw-num-wrap:focus-within{border-color:var(--tw-border-hover)}.tw-field .tw-num-wrap:has(>.tw-num:focus-visible:not(.tw-focus-quiet)),.tw-field .tw-num-wrap:has(>.tw-color-chan-input:focus-visible:not(.tw-focus-quiet)){outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:-1px}.tw-field .tw-num-wrap>.tw-num:focus-visible,.tw-field .tw-num-wrap>.tw-color-chan-input:focus-visible{outline:none}.tw-plot-field:has(>.tw-plot-input:focus-visible:not(.tw-focus-quiet)){outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:-2px}.tw-slider:has(.tw-slider-input:focus-visible:not(.tw-focus-quiet)){outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:-2px}.tw-wg-area:focus-visible,.tw-wg-hue:focus-visible,.tw-wg-alpha:focus-visible{outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:2px}.tw-field .tw-num{flex:1;width:auto;min-width:0}.tw-field .tw-num-grab{width:10px}.tw-bezier{display:flex;flex-direction:column;gap:6px}.tw-bezier-graph{position:relative;width:100%;height:96px;background:var(--tw-surface);border-radius:var(--tw-radius);overflow:hidden;touch-action:none}.tw-bezier-svg{position:absolute;inset:0;width:100%;height:100%;display:block}.tw-bezier-guide{stroke:var(--tw-border);stroke-width:1}.tw-bezier-diag{stroke:var(--tw-surface-active);stroke-width:1;stroke-dasharray:2 3}.tw-bezier-ctl{stroke:var(--tw-text-tertiary);stroke-width:1.5}.tw-bezier-curve{fill:none;stroke:var(--tw-accent, var(--tw-text-primary));stroke-width:2;stroke-linecap:round}.tw-bezier-handle{position:absolute;width:14px;height:14px;margin:0;padding:0;transform:translate(-50%,-50%);border-radius:999px;background:var(--tw-text-primary);border:2px solid var(--tw-base);box-shadow:0 1px 3px #0006;cursor:grab;touch-action:none;transition:transform .18s var(--tw-ease-spring),box-shadow .18s}@media(hover:hover)and (pointer:fine){.tw-bezier-handle:hover{transform:translate(-50%,-50%) scale(1.2)}}.tw-bezier-handle.is-dragging{cursor:grabbing;transform:translate(-50%,-50%) scale(1.3);box-shadow:0 3px 9px #00000073}.tw-bezier-fields{gap:4px}.tw-plot{display:flex;flex-direction:column;gap:6px}.tw-plot-label,.tw-spring-label,.tw-bezier-label{font-size:12px;font-weight:500;color:var(--tw-text-label);padding:0}.tw-plot-graph{position:relative;width:100%;height:140px;background:var(--tw-surface);border-radius:var(--tw-radius);overflow:hidden;box-shadow:inset 0 0 0 1px var(--tw-border)}.tw-plot-svg{position:absolute;inset:0;width:100%;height:100%;display:block}.tw-plot-axis{stroke:var(--tw-border);stroke-width:1}.tw-plot-curve{fill:none;stroke:var(--tw-accent, var(--tw-text-primary));stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.tw-plot-field{display:flex;align-items:center;gap:7px;height:var(--tw-row-height);padding:0 10px 0 12px;background:var(--tw-surface);border-radius:var(--tw-radius);box-shadow:inset 0 0 0 1px transparent;transition:box-shadow .15s}.tw-plot-field:focus-within{box-shadow:inset 0 0 0 1px var(--tw-border-hover)}.tw-plot-fx{flex:none;font-size:12px;color:var(--tw-text-tertiary);font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none}.tw-plot-input{flex:1;min-width:0;padding:0;background:none;border:none;outline:none;color:var(--tw-text-primary);font-family:var(--tw-font-mono, ui-monospace, "SF Mono", Menlo, monospace);font-size:12px}.tw-plot-input::placeholder{color:var(--tw-text-tertiary)}.tw-plot.is-invalid .tw-plot-curve{opacity:.25}.tw-plot.is-invalid .tw-plot-field{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--tw-danger) 60%,transparent)}.tw-plot.is-invalid .tw-plot-fx{color:color-mix(in srgb,var(--tw-danger) 80%,transparent)}@media(prefers-color-scheme:light){.tw-panel:where(:not([data-tw-scheme=dark]):not([data-tw-scheme=dark] *)),.tw-portal:where(:not([data-tw-scheme=dark]):not([data-tw-scheme=dark] *)){--tw-surface: rgba(255, 255, 255, .82);--tw-surface-hover: rgba(0, 0, 0, .04);--tw-surface-active: rgba(0, 0, 0, .1);--tw-text-root: #1a1a1a;--tw-text-section: rgba(0, 0, 0, .62);--tw-text-label: rgba(0, 0, 0, .58);--tw-text-focus: #000000;--tw-text-primary: rgba(0, 0, 0, .88);--tw-text-secondary: rgba(0, 0, 0, .58);--tw-text-tertiary: rgba(0, 0, 0, .54);--tw-border: rgba(0, 0, 0, .045);--tw-border-hover: rgba(0, 0, 0, .1);--tw-selection: rgba(0, 0, 0, .14);--tw-base: #f3f3f3;--tw-dropdown-bg: #f6f6f6;--tw-shadow-dropdown: 0 12px 32px -8px rgba(0, 0, 0, .14);--tw-shadow-panel: 0 0 0 1px var(--tw-border), 0 2px 8px -2px rgba(0, 0, 0, .08), 0 18px 44px -12px rgba(0, 0, 0, .16);--tw-shadow-panel-lifted: 0 0 0 1px var(--tw-border-hover), 0 6px 16px -3px rgba(0, 0, 0, .12), 0 30px 70px -16px rgba(0, 0, 0, .2);--tw-success: #15803d;--tw-danger: #c23232;color-scheme:light}.tw-slider-handle:where(:not([data-tw-scheme=dark] *)){box-shadow:0 0 0 .5px #00000014}}.tw-panel:where([data-tw-scheme=light],[data-tw-scheme=light] *),.tw-portal:where([data-tw-scheme=light],[data-tw-scheme=light] *){--tw-surface: rgba(255, 255, 255, .82);--tw-surface-hover: rgba(0, 0, 0, .04);--tw-surface-active: rgba(0, 0, 0, .1);--tw-text-root: #1a1a1a;--tw-text-section: rgba(0, 0, 0, .62);--tw-text-label: rgba(0, 0, 0, .58);--tw-text-focus: #000000;--tw-text-primary: rgba(0, 0, 0, .88);--tw-text-secondary: rgba(0, 0, 0, .58);--tw-text-tertiary: rgba(0, 0, 0, .54);--tw-border: rgba(0, 0, 0, .045);--tw-border-hover: rgba(0, 0, 0, .1);--tw-selection: rgba(0, 0, 0, .14);--tw-base: #f3f3f3;--tw-dropdown-bg: #f6f6f6;--tw-shadow-dropdown: 0 12px 32px -8px rgba(0, 0, 0, .14);--tw-shadow-panel: 0 0 0 1px var(--tw-border), 0 2px 8px -2px rgba(0, 0, 0, .08), 0 18px 44px -12px rgba(0, 0, 0, .16);--tw-shadow-panel-lifted: 0 0 0 1px var(--tw-border-hover), 0 6px 16px -3px rgba(0, 0, 0, .12), 0 30px 70px -16px rgba(0, 0, 0, .2);--tw-success: #15803d;--tw-danger: #c23232;color-scheme:light}.tw-slider-handle:where([data-tw-scheme=light] *){box-shadow:0 0 0 .5px #00000014}.tw-slider-value,.tw-slider-input,.tw-fps-val,.tw-num,.tw-grab-bubble,.tw-trigger-value,.tw-color-gamut,.tw-color-chan-input{font-variant-numeric:tabular-nums}@media(prefers-reduced-motion:reduce){.tw-panel,.tw-panel *,.tw-portal,.tw-portal *{transition:none!important}.tw-tabs-page[data-active=true],.tw-grab-bubble{animation:none}}@media(forced-colors:active){.tw-seg-pill,.tw-tabs-pill,.tw-slider-fill,.tw-radiogrid-btn[data-active=true]{outline:2px solid Highlight;outline-offset:-2px}.tw-gradient-stop[data-sel=true]{border-color:Highlight}.tw-select-option:focus-visible{outline:2px solid Highlight;outline-offset:-2px}}
1
+ .tw-panel,.tw-portal{--tw-surface: rgba(255, 255, 255, .04);--tw-surface-hover: rgba(255, 255, 255, .075);--tw-surface-active: rgba(255, 255, 255, .13);--tw-text-root: #fafafa;--tw-text-section: rgba(255, 255, 255, .64);--tw-text-label: rgba(255, 255, 255, .64);--tw-text-focus: #ffffff;--tw-text-primary: rgba(255, 255, 255, .92);--tw-text-secondary: rgba(255, 255, 255, .56);--tw-text-tertiary: rgba(255, 255, 255, .5);--tw-on-accent: var(--tw-text-primary);--tw-border: rgba(255, 255, 255, .045);--tw-border-hover: rgba(255, 255, 255, .11);--tw-selection: rgba(255, 255, 255, .22);--tw-base: #242424;--tw-checker: repeating-conic-gradient(#6b6b6b 0% 25%, #9a9a9a 0% 50%) 0 0 / 8px 8px;--tw-dropdown-bg: #292929;--tw-radius: 8px;--tw-row-height: 32px;--tw-width: 256px;--tw-shadow-dropdown: 0 12px 32px -8px rgba(0, 0, 0, .6);--tw-shadow-panel: 0 0 0 1px rgba(255, 255, 255, .06), 0 8px 28px -8px rgba(0, 0, 0, .5), 0 18px 48px -16px rgba(0, 0, 0, .38);--tw-shadow-panel-lifted: 0 0 0 1px rgba(255, 255, 255, .08), 0 12px 32px -8px rgba(0, 0, 0, .55), 0 28px 64px -16px rgba(0, 0, 0, .45);--tw-success: #86efac;--tw-danger: #ff5f5f;--tw-font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--tw-font-mono: ui-monospace, "SF Mono", Menlo, monospace;--tw-ease-out: cubic-bezier(.25, 1, .5, 1);--tw-ease-spring: cubic-bezier(.22, 1, .36, 1);--tw-ease-pop: cubic-bezier(.34, 1.56, .64, 1);--tw-ease-inout: cubic-bezier(.4, 0, .2, 1);--tw-ease-fold: linear(0, .077, .237, .411, .57, .699, .797, .869, .918, .952, .973, .986, .994, .998, 1);font-family:var(--tw-font-sans);line-height:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}.tw-panel{width:var(--tw-width);background:var(--tw-base);box-shadow:var(--tw-shadow-panel);border-radius:calc(var(--tw-radius) + 10px);padding:10px}.tw-panel *,.tw-panel *:before,.tw-panel *:after{box-sizing:border-box}:is(.tw-panel,.tw-color-pop,.tw-select-dropdown,.tw-presets-menu) ::selection{background:var(--tw-selection);color:var(--tw-text-focus)}.tw-panel,.tw-color-pop,.tw-select-dropdown,.tw-presets-menu{-webkit-tap-highlight-color:transparent}.tw-panel,.tw-portal{color-scheme:dark}.tw-panel[data-mode=floating]{position:fixed;z-index:99990;box-shadow:var(--tw-shadow-panel-lifted);transition:box-shadow .25s var(--tw-ease-out)}.tw-lift-slot{display:block;flex:none;pointer-events:none}.tw-panel[data-draggable=true]>.tw-header,.tw-panel[data-draggable=true]>.tw-header .tw-header-toggle,.tw-panel[data-mode=floating]>.tw-header,.tw-panel[data-mode=floating]>.tw-header .tw-header-toggle{cursor:grab}.tw-panel[data-draggable=true]>.tw-header,.tw-panel[data-mode=floating]>.tw-header{touch-action:none;margin-top:-10px;padding-top:10px}.tw-panel.is-dragging{-webkit-user-select:none;user-select:none;box-shadow:var(--tw-shadow-panel-lifted);z-index:99991}.tw-panel.is-dragging>.tw-header,.tw-panel.is-dragging>.tw-header .tw-header-toggle{cursor:grabbing}.tw-grabber{position:absolute;top:3px;left:50%;width:28px;height:4px;border-radius:999px;background:var(--tw-text-primary);transform:translate(-50%) scaleX(.4);opacity:0;pointer-events:none;transition:opacity .15s,transform .2s var(--tw-ease-spring)}@media(hover:hover)and (pointer:fine){.tw-header:hover>.tw-grabber{opacity:.4;transform:translate(-50%) scaleX(1)}}.tw-panel.is-grabbing>.tw-header>.tw-grabber{opacity:.7;transform:translate(-50%) scaleX(1)}.tw-panel.is-dragging>.tw-header>.tw-grabber{opacity:.85;transform:translate(-50%) scaleX(1)}.tw-header{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:9px;margin-bottom:8px;border-bottom:1px solid var(--tw-border)}.tw-title{font-size:14px;font-weight:500;color:var(--tw-text-root);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tw-header-toggle{display:flex;align-items:center;gap:6px;flex:1;min-width:0;background:none;border:none;padding:0;margin:0;cursor:pointer;color:inherit;font:inherit;text-align:left}.tw-chevron{width:15px;height:15px;flex-shrink:0;color:var(--tw-text-section);transition:transform .2s var(--tw-ease-out),color .15s}.tw-panel.is-collapsed .tw-chevron{transform:rotate(-90deg)}.tw-toolbar{display:flex;align-items:center;gap:4px}.tw-search{display:none;flex:1;min-width:0;height:24px;padding:0 8px;font:inherit;font-size:13px;font-weight:500;color:var(--tw-text-primary);background:var(--tw-surface);border:1px solid var(--tw-border);border-radius:calc(var(--tw-radius) - 2px);outline:none}.tw-search:focus{border-color:var(--tw-border-hover)}.tw-search::placeholder{color:var(--tw-text-tertiary)}.tw-panel.is-searching .tw-header-toggle{display:none}.tw-panel.is-searching .tw-search{display:block}.tw-filter-hidden{display:none!important}.tw-hint{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;margin-left:4px;padding:0;vertical-align:-2px;flex:none;background:none;border:none;color:var(--tw-text-tertiary);cursor:help;pointer-events:auto;transition:color .15s,transform .18s var(--tw-ease-spring)}.tw-hint:focus-visible{color:var(--tw-text-secondary);transform:scale(1.2)}@media(hover:hover)and (pointer:fine){.tw-hint:hover{color:var(--tw-text-secondary);transform:scale(1.2)}}.tw-hint:focus-visible{outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:1px;border-radius:999px}.tw-hint svg{width:13px;height:13px;display:block}.tw-tip{position:fixed;z-index:100000;max-width:220px;padding:8px 12px;font-size:12px;line-height:1.4;color:var(--tw-text-primary);background:var(--tw-dropdown-bg);border:1px solid var(--tw-border);border-radius:8px;box-shadow:var(--tw-shadow-dropdown);pointer-events:none;opacity:0;transform:translateY(2px);transition:opacity .12s,transform .12s}.tw-tip.is-open{opacity:1;transform:none}.tw-toast{position:fixed;left:50%;bottom:24px;z-index:100000;max-width:min(320px,calc(100vw - 32px));padding:8px 16px;font-size:12px;font-weight:500;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--tw-text-primary);background:var(--tw-dropdown-bg);border:1px solid var(--tw-border);border-radius:999px;box-shadow:var(--tw-shadow-dropdown);pointer-events:none;opacity:0;transform:translate(-50%,6px);transition:opacity .16s,transform .22s var(--tw-ease-spring)}.tw-toast.is-open{opacity:1;transform:translate(-50%)}.tw-body{display:grid;grid-template-rows:1fr;transition:grid-template-rows .25s var(--tw-ease-inout)}.tw-body>.tw-controls{overflow-x:visible;overflow-y:clip;min-height:0;min-width:0}.tw-panel.is-collapsed .tw-body{grid-template-rows:0fr}.tw-header{transition:margin-bottom .25s,padding-bottom .25s,border-color .25s}.tw-panel.is-collapsed .tw-header{margin-bottom:0;padding-bottom:0;border-color:transparent}.tw-header:has(+.tw-body>.tw-controls>.tw-folder:first-child){margin-bottom:0}.tw-toolbar-btn{position:relative;display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;flex-shrink:0;background:var(--tw-surface);border:none;border-radius:calc(var(--tw-radius) - 2px);color:var(--tw-text-label);cursor:pointer;will-change:transform;transition:background .15s,color .15s,transform .24s var(--tw-ease-pop)}@media(hover:hover)and (pointer:fine){.tw-toolbar-btn:hover{background:var(--tw-surface-hover);color:var(--tw-text-primary)}.tw-toolbar-btn:disabled{cursor:default}}.tw-toolbar-btn:after{content:"";position:absolute;inset:-2px}.tw-toolbar-btn:active{transform:scale(.86);transition:transform .08s ease-out}.tw-toolbar-btn svg{width:14px;height:14px;display:block}.tw-toolbar-btn__icons{position:relative;display:block;width:14px;height:14px}.tw-toolbar-btn__icons svg{position:absolute;inset:0;will-change:transform,filter;filter:blur(0);transition:opacity .25s var(--tw-ease-inout),transform .25s var(--tw-ease-inout),filter .25s var(--tw-ease-inout)}.tw-toolbar-btn__check{opacity:0;transform:scale(.25);filter:blur(2px);color:var(--tw-success)}.tw-toolbar-btn--swap.is-copied .tw-toolbar-btn__copy{opacity:0;transform:scale(.25);filter:blur(2px)}.tw-toolbar-btn--swap.is-copied .tw-toolbar-btn__check{opacity:1;transform:none;filter:blur(0)}.tw-toolbar-btn--reset svg{--tw-spin: 0deg;--tw-wind: 0deg;will-change:transform;transform:rotate(calc(var(--tw-spin) + var(--tw-wind)));transition:transform .34s cubic-bezier(.34,1.55,.5,1)}@media(hover:hover)and (pointer:fine){.tw-toolbar-btn--reset:not(:disabled):hover svg{--tw-wind: 22deg}}.tw-toolbar-btn--reset.is-spinning svg{transition-duration:.5s;transition-timing-function:var(--tw-ease-inout)}.tw-copy-back{transform:translate(calc(-1 * var(--tw-fan, 0px)),calc(-1 * var(--tw-fan, 0px)))}.tw-copy-front{transform:translate(var(--tw-fan, 0px),var(--tw-fan, 0px))}.tw-layer-top{transform:translateY(calc(-1 * var(--tw-lift, 0px)))}.tw-copy-back,.tw-copy-front,.tw-layer-top{transition:transform .3s var(--tw-ease-pop)}@media(hover:hover)and (pointer:fine){.tw-toolbar-btn:not(:disabled):hover{--tw-fan: 1px;--tw-lift: 1.75px}}.tw-toolbar-btn[aria-expanded=true]{--tw-lift: 1.75px}.tw-trigger:focus-visible,.tw-select-trigger:focus-visible,.tw-button:focus-visible,.tw-seg-btn:focus-visible,.tw-header-toggle:focus-visible,.tw-folder-header:focus-visible,.tw-slider:focus-visible,.tw-pad:focus-visible,.tw-motion-stage:focus-visible,.tw-sides-link:focus-visible,.tw-radiogrid-btn:focus-visible,.tw-buttongroup-btn:focus-visible,.tw-tabs-tab:focus-visible,.tw-text:focus-visible:not(.tw-focus-quiet),.tw-num:focus-visible:not(.tw-focus-quiet),.tw-color-chan-input:focus-visible:not(.tw-focus-quiet),.tw-search:focus-visible:not(.tw-focus-quiet),.tw-color-mode:focus-visible,.tw-presets-load:focus-visible,.tw-presets-savebtn:focus-visible,.tw-presets-del:focus-visible,.tw-presets-input:focus-visible:not(.tw-focus-quiet){outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:-2px}.tw-toolbar-btn:focus-visible{outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:1px}.tw-gradient-stop:focus-visible,.tw-gradient-add:focus-visible,.tw-bezier-handle:focus-visible{outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:2px}.tw-controls{display:flex;flex-direction:column;gap:6px}.tw-controls>*{min-width:0}.tw-cond-hidden{display:none!important}.is-disabled{opacity:.4;cursor:not-allowed}.is-disabled *{pointer-events:none}.tw-resettable{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.tw-resettable.tw-resettable{transition:color .15s,background-color .3s ease-out}.tw-resettable.tw-reset-holding{border-radius:calc(var(--tw-radius) - 4px);background-color:var(--tw-surface-active, rgba(128, 128, 128, .22));transition:color .15s,background-color .5s ease-out}.tw-slider-wrap{position:relative;height:var(--tw-row-height)}.tw-slider{position:absolute;inset:0;cursor:pointer;user-select:none;-webkit-user-select:none;overflow:hidden;background:var(--tw-surface);border-radius:var(--tw-radius);touch-action:none}.tw-slider-hashmarks{position:absolute;inset:0;pointer-events:none}.tw-slider-hashmark{position:absolute;top:50%;width:1px;height:8px;border-radius:999px;transform:translate(-50%) translateY(-50%);background:#fff0;transition:background .2s}.tw-slider.is-active .tw-slider-hashmark{background:var(--tw-border-hover)}.tw-slider.is-active .tw-slider-value{color:var(--tw-text-focus)}.tw-slider-fill{position:absolute;top:0;bottom:0;left:0;width:0;background:var(--tw-surface-active);transition:background .15s;pointer-events:none}.tw-slider.is-active .tw-slider-fill{background:var(--tw-accent, var(--tw-border-hover))}.tw-slider-handle{position:absolute;top:50%;left:0;width:3px;height:20px;border-radius:999px;background:var(--tw-text-primary);transform:translateY(-50%) scaleX(.25);opacity:0;pointer-events:none;transition:opacity .15s,transform .2s var(--tw-ease-spring)}.tw-slider.is-hover .tw-slider-handle,.tw-slider:focus-within .tw-slider-handle{opacity:.5;transform:translateY(-50%) scaleX(1)}@media(hover:hover)and (pointer:fine){.tw-slider:hover .tw-slider-handle{opacity:.5;transform:translateY(-50%) scaleX(1)}}.tw-slider.is-active .tw-slider-handle,.tw-slider.is-dragging .tw-slider-handle{opacity:.9;transform:translateY(-50%) scaleX(1)}.tw-slider-handle:focus-visible{opacity:.9;transform:translateY(-50%) scaleX(1);outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:2px}.tw-slider.is-active.is-dodge .tw-slider-handle,.tw-slider.is-dragging.is-dodge .tw-slider-handle,.tw-slider.is-hover.is-dodge .tw-slider-handle{opacity:.1;transform:translateY(-50%) scaleX(1) scaleY(.75)}@media(hover:hover)and (pointer:fine){.tw-slider:hover.is-dodge .tw-slider-handle{opacity:.1;transform:translateY(-50%) scaleX(1) scaleY(.75)}}.tw-interval.is-active .tw-slider-handle.is-dodge,.tw-interval.is-dragging .tw-slider-handle.is-dodge{opacity:.1;transform:translateY(-50%) scaleX(1) scaleY(.75)}.tw-slider-label{position:absolute;left:12px;top:50%;transform:translateY(-50%);max-width:calc(100% - 64px);font-size:12px;font-weight:500;color:var(--tw-text-label);pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tw-interval .tw-slider-label{max-width:calc(100% - 112px)}.tw-slider-value{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:12px;font-weight:500;font-family:var(--tw-font-sans);color:var(--tw-text-label);pointer-events:auto;transition:color .15s}.tw-slider-value.is-editable{cursor:text;color:var(--tw-text-focus);text-decoration:underline;text-decoration-color:var(--tw-text-tertiary);text-underline-offset:3px}.tw-slider-input{position:absolute;right:10px;top:50%;transform:translateY(-50%);min-width:4ch;max-width:60%;font-size:12px;font-weight:500;font-family:var(--tw-font-sans);color:var(--tw-text-label);background:transparent;border:none;padding:0;outline:none;text-align:right}.tw-slider-input:focus{color:var(--tw-text-focus)}.tw-row{display:flex;align-items:center;justify-content:space-between;gap:12px;height:var(--tw-row-height);padding:2px 10px 2px 12px;background:var(--tw-surface);border-radius:var(--tw-radius)}.tw-row-label{font-size:12px;font-weight:500;line-height:17px;color:var(--tw-text-label);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tw-slider-label:empty,.tw-row-label:empty,.tw-select-label:empty,.tw-radiogrid-label:empty,.tw-trigger-label:empty,.tw-fps-label:empty{display:none}.tw-row-label:empty+*,.tw-select-label:empty+*,.tw-trigger-label:empty+*{margin-left:auto}.tw-seg{position:relative;display:flex;gap:2px;padding:2px;border-radius:var(--tw-radius)}.tw-row .tw-seg{flex-shrink:0;margin-right:-8px}.tw-seg-pill{position:absolute;top:2px;bottom:2px;left:0;width:0;background:var(--tw-accent, var(--tw-surface-active));border-radius:calc(var(--tw-radius) - 2px);z-index:0;pointer-events:none}.tw-seg.is-ready .tw-seg-pill{transition:left .24s var(--tw-ease-out),width .24s var(--tw-ease-out)}.tw-seg-btn{position:relative;z-index:1;flex:0 0 auto;min-width:40px;padding:6px 8px;text-align:center;font:inherit;font-size:12px;font-weight:500;background:transparent;border:none;cursor:pointer;color:var(--tw-text-label);transition:color .15s,transform .2s var(--tw-ease-pop)}.tw-seg-btn[data-active=true]{color:var(--tw-on-accent)}.tw-seg-btn:active{transform:scale(.9);transition:transform .08s ease-out}.tw-row .tw-seg .tw-seg-btn{min-width:0;padding:5px}.tw-radiogrid{display:flex;align-items:center;gap:10px;min-height:var(--tw-row-height);padding:4px 4px 4px 12px;background:var(--tw-surface);border-radius:var(--tw-radius)}.tw-radiogrid-label{flex-shrink:1;min-width:0;font-size:12px;font-weight:500;color:var(--tw-text-label);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tw-radiogrid-grid{flex:1 1 0;max-width:max-content;min-width:0;margin-left:auto;display:grid;grid-template-columns:repeat(var(--tw-rg-cols, 3),minmax(0,1fr));gap:4px}.tw-radiogrid-btn{font:inherit;font-size:12px;font-weight:500;font-variant-numeric:tabular-nums;padding:5px;text-align:center;color:var(--tw-text-label);background:transparent;border:none;border-radius:calc(var(--tw-radius) - 2px);cursor:pointer;transition:background .15s,color .15s,transform .2s var(--tw-ease-pop);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(hover:hover)and (pointer:fine){.tw-radiogrid-btn:hover{background:var(--tw-surface-hover);color:var(--tw-text-primary)}}.tw-radiogrid-btn:active{transform:scale(.93);transition:background .15s,color .15s,transform .08s ease-out}.tw-radiogrid-btn[data-active=true]{background:var(--tw-accent, var(--tw-surface-active));color:var(--tw-on-accent)}.tw-button{display:flex;align-items:center;justify-content:center;width:100%;height:var(--tw-row-height);padding:0 16px;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-secondary);background:var(--tw-surface);border:none;border-radius:var(--tw-radius);cursor:pointer;transition:background .15s,color .15s,transform .24s var(--tw-ease-pop)}@media(hover:hover)and (pointer:fine){.tw-button:hover{background:var(--tw-surface-hover);color:var(--tw-text-primary)}}.tw-button:active{background:var(--tw-surface-active);transform:scale(.975);transition:background .15s,color .15s,transform .08s ease-out}.tw-buttongroup{height:auto;min-height:var(--tw-row-height)}.tw-buttongroup-btns{display:flex;flex-wrap:wrap;gap:4px;flex:1;min-width:0;margin-right:-6px}.tw-buttongroup-btn{flex:1 1 0;min-width:6ch;padding:5px 8px;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-label);background:var(--tw-surface-active);border:none;border-radius:calc(var(--tw-radius) - 2px);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .15s,color .15s,transform .2s var(--tw-ease-pop)}@media(hover:hover)and (pointer:fine){.tw-buttongroup-btn:hover{background:var(--tw-surface-hover);color:var(--tw-text-primary)}}.tw-buttongroup-btn:active{transform:scale(.93);transition:background .15s,color .15s,transform .08s ease-out}.tw-separator{height:1px;margin:3px 2px;background:var(--tw-border)}.tw-tabs{display:flex;flex-direction:column;gap:8px}.tw-tabs-bar{position:relative;display:flex;gap:2px;padding:2px;min-width:0;background:var(--tw-surface);border-radius:var(--tw-radius)}.tw-tabs-pill{position:absolute;top:2px;bottom:2px;left:0;width:0;background:var(--tw-surface-active);border-radius:calc(var(--tw-radius) - 2px);z-index:0;transition:left .24s var(--tw-ease-out),width .24s var(--tw-ease-out)}.tw-tabs-tab{position:relative;z-index:1;flex:1;min-width:0;padding:5px 8px;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-label);background:transparent;border:none;border-radius:calc(var(--tw-radius) - 2px);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .15s,transform .2s var(--tw-ease-pop)}.tw-tabs-tab[data-active=true]{color:var(--tw-text-primary)}.tw-tabs-tab:active{transform:scale(.95);transition:color .15s,transform .08s ease-out}.tw-tabs-page{display:none;flex-direction:column;gap:6px}.tw-tabs-page[data-active=true]{display:flex;animation:tw-page-in .3s var(--tw-ease-out)}@keyframes tw-page-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.tw-select{position:relative}.tw-select-trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;height:var(--tw-row-height);padding:0 12px;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-label);background:var(--tw-surface);border:none;border-radius:var(--tw-radius);cursor:pointer;transition:background .15s,transform .24s var(--tw-ease-pop)}@media(hover:hover)and (pointer:fine){.tw-select-trigger:hover{background:var(--tw-surface-hover)}}.tw-select-trigger:active{transform:scale(.985);transition:background .15s,transform .08s ease-out}.tw-select.is-open .tw-select-trigger{background:var(--tw-surface-active)}.tw-select-label{font-weight:500;flex:1 1 0;min-width:5ch;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tw-select-right{display:flex;align-items:center;gap:8px;min-width:0;flex:0 1 auto;max-width:calc(100% - 5ch - 10px)}.tw-select-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tw-select-chevron{width:18px;height:18px;flex-shrink:0;opacity:.6;margin-right:-4.5px;transition:transform .2s var(--tw-ease-out)}.tw-select.is-open .tw-select-chevron{transform:rotate(180deg)}.tw-select-dropdown{position:fixed;z-index:99999;padding:4px;border-radius:calc(var(--tw-radius) + 2px);background:var(--tw-dropdown-bg);border:1px solid var(--tw-border);box-shadow:var(--tw-shadow-dropdown);max-height:60vh;overflow-y:auto;transform-origin:top;opacity:0;transform:translateY(-6px) scale(.96);pointer-events:none;transition:opacity .16s var(--tw-ease-out),transform .22s var(--tw-ease-spring)}.tw-select-dropdown.is-open{opacity:1;transform:none;pointer-events:auto}.tw-select-option{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-label);background:transparent;border:none;border-radius:calc(var(--tw-radius) - 2px);cursor:pointer;text-align:left;transition:background .15s,color .15s}@media(hover:hover)and (pointer:fine){.tw-select-option:hover{background:var(--tw-surface-hover)}}.tw-select-option:focus-visible{background:var(--tw-surface-hover);color:var(--tw-text-primary);outline:none}.tw-select-option[data-selected=true]{color:var(--tw-text-primary);background:var(--tw-accent, var(--tw-surface-active))}.tw-option-swatch{flex-shrink:0;width:12px;height:12px;border-radius:4px;box-shadow:inset 0 0 0 1px var(--tw-border-hover)}.tw-option-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tw-presets-menu{position:fixed;z-index:99999;width:208px;display:flex;flex-direction:column;gap:6px;padding:8px;background:var(--tw-dropdown-bg);border:1px solid var(--tw-border);border-radius:calc(var(--tw-radius) + 4px);box-shadow:var(--tw-shadow-dropdown);transform-origin:top right;opacity:0;transform:translateY(-6px) scale(.97);pointer-events:none;transition:opacity .16s var(--tw-ease-out),transform .24s var(--tw-ease-spring)}.tw-presets-menu.is-open{opacity:1;transform:none;pointer-events:auto}.tw-presets-save{display:flex;gap:6px}.tw-presets-input{flex:1;min-width:0;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-primary);background:var(--tw-surface);border:1px solid var(--tw-border);border-radius:calc(var(--tw-radius) - 2px);padding:6px 8px;outline:none}.tw-presets-input:focus{border-color:var(--tw-border-hover)}.tw-presets-input::placeholder{color:var(--tw-text-tertiary)}.tw-presets-savebtn{flex-shrink:0;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-primary);background:var(--tw-surface);border:none;border-radius:calc(var(--tw-radius) - 2px);padding:6px 10px;cursor:pointer;transition:background .15s}@media(hover:hover)and (pointer:fine){.tw-presets-savebtn:hover{background:var(--tw-surface-hover)}}.tw-presets-list{display:flex;flex-direction:column;gap:2px;max-height:200px;overflow-y:auto}.tw-presets-empty{padding:8px;font-size:12px;font-weight:500;color:var(--tw-text-tertiary);text-align:center}.tw-presets-row{display:flex;align-items:center;gap:2px}.tw-presets-load{flex:1;min-width:0;text-align:left;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-label);background:transparent;border:none;border-radius:calc(var(--tw-radius) - 2px);padding:6px 8px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:background .15s,color .15s}@media(hover:hover)and (pointer:fine){.tw-presets-load:hover{background:var(--tw-surface-hover);color:var(--tw-text-primary)}}.tw-presets-del{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--tw-text-tertiary);background:transparent;border:none;border-radius:calc(var(--tw-radius) - 2px);cursor:pointer;transition:background .15s,color .15s,transform .2s var(--tw-ease-pop)}@media(hover:hover)and (pointer:fine){.tw-presets-del:hover{background:var(--tw-surface-hover);color:var(--tw-text-primary)}}.tw-presets-del:active{transform:scale(.85);transition:background .15s,color .15s,transform .08s ease-out}.tw-presets-savebtn:active{transform:scale(.95)}.tw-presets-del svg{width:12px;height:12px;display:block}.tw-trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;height:var(--tw-row-height);padding:0 10px 0 12px;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-label);cursor:pointer;background:var(--tw-surface);border:none;border-radius:var(--tw-radius);transition:background .15s,transform .24s var(--tw-ease-pop)}@media(hover:hover)and (pointer:fine){.tw-trigger:hover{background:var(--tw-surface-hover)}}.tw-trigger:active{transform:scale(.985);transition:background .15s,transform .08s ease-out}.is-open>.tw-trigger{background:var(--tw-surface-active)}.tw-trigger-label{flex:1 1 0;min-width:5ch;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tw-trigger-right{display:flex;align-items:center;gap:8px;min-width:0;flex:0 1 auto;max-width:calc(100% - 5ch - 10px)}.tw-trigger-value{font-family:var(--tw-font-sans);word-spacing:.1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:20ch}.tw-trigger-chip{height:18px;flex-shrink:0;border-radius:calc(var(--tw-radius) - 4px);box-shadow:inset 0 0 0 1px var(--tw-border-hover);transition:transform .2s var(--tw-ease-spring)}.is-open>.tw-trigger .tw-trigger-chip{transform:scale(1.07)}@media(hover:hover)and (pointer:fine){.tw-trigger:hover .tw-trigger-chip{transform:scale(1.07)}}.tw-color{position:relative}.tw-color-swatch{width:18px}.tw-color-pop,.tw-select-dropdown,.tw-grab-guide,.tw-presets-menu{line-height:normal}.tw-portal *,.tw-portal *:before,.tw-portal *:after{box-sizing:border-box}.tw-color-pop{position:fixed;z-index:99999;width:240px;display:flex;flex-direction:column;gap:8px;padding:10px;background:var(--tw-dropdown-bg);border:1px solid var(--tw-border);border-radius:calc(var(--tw-radius) + 10px);box-shadow:var(--tw-shadow-dropdown);max-height:calc(100dvh - 16px);overflow-y:auto;overflow-x:clip;opacity:0;transform:translateY(-6px) scale(.97);transform-origin:top;pointer-events:none;transition:opacity .16s var(--tw-ease-out),transform .24s var(--tw-ease-spring)}.tw-color-pop.is-open{opacity:1;transform:none;pointer-events:auto}.tw-color-body{display:flex;flex-direction:column;gap:8px;min-width:0}.tw-color-mode-row{display:flex;align-items:center;gap:8px}.tw-color-mode{appearance:none;-webkit-appearance:none;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-primary);background-color:var(--tw-surface);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23888888' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 6px center;border:1px solid var(--tw-border);border-radius:calc(var(--tw-radius) - 2px);padding:4px 26px 4px 10px;cursor:pointer;outline:none}@media(hover:hover)and (pointer:fine){.tw-color-mode:hover{background-color:var(--tw-surface-hover)}}.tw-color-mode:focus-visible{border-color:var(--tw-border-hover)}.tw-color-gamut{margin-left:auto;font-family:var(--tw-font-sans);font-size:12px;font-weight:500;color:var(--tw-text-tertiary)}.tw-color-channels{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.tw-color-channels--hex{grid-template-columns:1fr}.tw-color-chan{display:flex;flex-direction:column;gap:3px;min-width:0}.tw-color-chan-label{font-size:10px;font-weight:600;letter-spacing:.03em;color:var(--tw-text-tertiary);text-transform:uppercase}.tw-color-chan-input{width:100%;min-width:0;font:inherit;font-size:12px;font-weight:500;font-family:var(--tw-font-sans);color:var(--tw-text-label);background:var(--tw-surface);border:1px solid var(--tw-border);border-radius:calc(var(--tw-radius) - 2px);padding:5px 6px;outline:none;text-transform:uppercase}.tw-color-chan-input:focus{color:var(--tw-text-focus);border-color:var(--tw-border-hover)}.tw-wg-area{position:relative;width:100%;height:140px;border-radius:var(--tw-radius);cursor:crosshair;touch-action:none;box-shadow:inset 0 0 0 1px var(--tw-border)}.tw-wg-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;border-radius:inherit}.tw-wg-thumb{position:absolute;width:14px;height:14px;border-radius:999px;border:2px solid #fff;box-shadow:0 0 0 1px #00000073;transform:translate(-50%,-50%);pointer-events:none;transition:transform .18s var(--tw-ease-spring),box-shadow .18s}.tw-wg-area.is-grabbing .tw-wg-thumb{transform:translate(-50%,-50%) scale(1.32);box-shadow:0 0 0 1px #00000073,0 2px 8px #00000073}.tw-wg-hue,.tw-wg-alpha{position:relative;width:100%;height:14px;border-radius:999px;cursor:ew-resize;touch-action:none;box-shadow:inset 0 0 0 1px var(--tw-border)}.tw-wg-alpha{background:var(--tw-checker)}.tw-wg-hue-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;border-radius:inherit}.tw-wg-hue-thumb{position:absolute;top:50%;width:16px;height:16px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #00000073,0 1px 3px #0006;transform:translate(-50%,-50%);pointer-events:none;transition:transform .18s var(--tw-ease-spring),box-shadow .18s}.tw-wg-hue.is-grabbing .tw-wg-hue-thumb,.tw-wg-alpha.is-grabbing .tw-wg-hue-thumb{transform:translate(-50%,-50%) scale(1.28);box-shadow:0 0 0 1px #00000073,0 2px 8px #00000073}.tw-wg-alpha-grad{position:absolute;inset:0;border-radius:inherit}.tw-gradient{position:relative}.tw-gradient-preview{width:72px;background:var(--tw-checker)}.tw-gradient-pop{width:260px}.tw-gradient-pop .tw-color-mode-row{gap:6px}.tw-gradient-pop .tw-color-mode{padding-left:8px;padding-right:24px}.tw-gradient-bar-row{display:flex;align-items:stretch;gap:6px}.tw-gradient-bar-row>.tw-gradient-bar{flex:1;min-width:0}.tw-gradient-bar{position:relative;width:100%;height:28px;border-radius:var(--tw-radius);box-shadow:inset 0 0 0 1px var(--tw-border);background:var(--tw-checker)}.tw-gradient-grad{position:absolute;inset:0;border-radius:inherit;pointer-events:none}.tw-gradient-rail{position:absolute;left:0;right:0;bottom:-5px;height:14px;pointer-events:none}.tw-gradient-stop{position:absolute;top:0;width:13px;height:13px;padding:0;transform:translate(-50%);border-radius:calc(var(--tw-radius) - 4px);background:var(--stop);border:2px solid var(--tw-dropdown-bg);box-shadow:0 0 0 1px var(--tw-border-hover),0 1px 3px #0006;cursor:ew-resize;touch-action:none;pointer-events:auto;transition:opacity .12s ease,transform .16s var(--tw-ease-spring),box-shadow .16s}.tw-gradient-stop[data-sel=true]{box-shadow:0 0 0 2px var(--tw-accent, var(--tw-text-focus)),0 1px 3px #0006;z-index:1}.tw-gradient-stop:before,.tw-bezier-handle:before{content:"";position:absolute;inset:-4px;border-radius:inherit}@media(hover:hover)and (pointer:fine){.tw-gradient-stop:hover{transform:translate(-50%) scale(1.22)}}.tw-gradient-stop[data-removing=true]{opacity:.3;transform:translate(-50%) scale(.7)}.tw-gradient-add{display:flex;align-items:center;justify-content:center;flex:none;width:32px;padding:0;border:none;border-radius:var(--tw-radius);background:var(--tw-surface);color:var(--tw-text-primary);cursor:pointer;will-change:transform;transition:background .15s,transform .24s var(--tw-ease-pop)}.tw-gradient-add:active{transform:scale(.88);transition:background .15s,transform .08s ease-out}.tw-gradient-add svg{width:16px;height:16px;display:block;will-change:transform;transition:transform .2s var(--tw-ease-pop)}@media(hover:hover)and (pointer:fine){.tw-gradient-add:hover{background:var(--tw-surface-hover)}.tw-gradient-add:hover svg{transform:scale(1.18)}}.tw-text,.tw-num{flex:1;min-width:0;font:inherit;font-size:12px;font-weight:500;color:var(--tw-text-label);background:transparent;border:none;outline:none;text-align:right;cursor:text;padding:0;border-radius:calc(var(--tw-radius) - 4px)}.tw-num{font-family:var(--tw-font-sans)}.tw-text:focus,.tw-num:focus{color:var(--tw-text-focus)}.tw-text::placeholder{color:var(--tw-text-tertiary)}.tw-row-multiline{position:relative;flex-direction:column;align-items:stretch;height:auto;gap:4px;padding:6px 10px 10px 12px}.tw-textarea{flex:none;width:100%;resize:vertical;min-height:3em;padding:0;line-height:1.45;text-align:left;font-family:var(--tw-font-sans)}.tw-textarea::-webkit-resizer{background:transparent}.tw-textarea:is(.is-clip-top,.is-clip-bottom){--tw-clip-top: 0px;--tw-clip-bottom: 0px;-webkit-mask-image:linear-gradient(to bottom,transparent,#000 var(--tw-clip-top),#000 calc(100% - var(--tw-clip-bottom)),transparent);mask-image:linear-gradient(to bottom,transparent,#000 var(--tw-clip-top),#000 calc(100% - var(--tw-clip-bottom)),transparent)}.tw-textarea.is-clip-top{--tw-clip-top: 14px}.tw-textarea.is-clip-bottom{--tw-clip-bottom: 14px}.tw-row-multiline:after{content:"";position:absolute;right:8px;bottom:8px;width:11px;height:11px;pointer-events:none;background-color:var(--tw-text-tertiary);--tw-grip: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M11 3 3 11M11 7 7 11' stroke='%23000' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");-webkit-mask:var(--tw-grip) right bottom / contain no-repeat;mask:var(--tw-grip) right bottom / contain no-repeat}.tw-image{position:relative}.tw-image-input{display:none}.tw-image-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tw-image-thumb{width:18px;background:var(--tw-base) center / cover no-repeat}.tw-image-thumb[data-set=false]{background:var(--tw-checker)}.tw-image .tw-trigger[data-over=true]{background:var(--tw-surface-hover);outline:1.5px dashed var(--tw-border-hover);outline-offset:-2px}.tw-image .tw-trigger[data-over=true] .tw-image-thumb{transform:scale(1.14)}.tw-fps{display:grid;grid-template-columns:1fr auto;align-items:center;gap:0 8px;background:var(--tw-surface);border-radius:var(--tw-radius);padding:8px 10px 10px 12px}.tw-fps-label{font-size:12px;font-weight:500;color:var(--tw-text-label)}.tw-fps-val{font-family:var(--tw-font-sans);font-size:12px;color:var(--tw-text-primary);text-align:right}.tw-fps-canvas{grid-column:1 / -1;width:100%;height:40px;display:block;margin-top:6px}.tw-monitor-buffer{grid-column:1 / -1;margin:6px 0 0;height:calc(var(--tw-monitor-rows, 4) * 1.45em);overflow:hidden;font-family:var(--tw-font-sans);font-variant-numeric:tabular-nums;font-size:11px;line-height:1.45;color:var(--tw-text-secondary);white-space:pre;word-break:break-all}.tw-num-wrap{display:flex;align-items:center;gap:4px}.tw-slider-unit{color:var(--tw-text-tertiary)}.tw-num-unit{flex-shrink:0;font-size:12px;line-height:normal;color:var(--tw-text-tertiary);padding-right:2px;user-select:none;-webkit-user-select:none}.tw-num-wrap .tw-num{flex:0 0 auto;width:6ch;text-overflow:ellipsis}.tw-row>.tw-num-wrap .tw-num{width:9ch}.tw-num-grab{display:flex;align-items:center;justify-content:center;width:12px;height:18px;flex-shrink:0;color:var(--tw-text-tertiary);cursor:ew-resize;touch-action:none;transition:color .15s,transform .18s var(--tw-ease-spring)}.tw-num-grab svg{width:12px;height:12px;display:block}.tw-num-grab.is-dragging{color:var(--tw-text-primary);transform:scale(1.22)}@media(hover:hover)and (pointer:fine){.tw-num-grab:hover{color:var(--tw-text-primary);transform:scale(1.22)}}.tw-grab-guide{position:fixed;inset:0;z-index:100001;pointer-events:none}.tw-grab-line{position:fixed;height:2px;border:0;transform:translateY(-50%);background:radial-gradient(circle closest-side,var(--tw-text-label) 99%,transparent) 0 50% / var(--tw-grab-gap, 7px) 2px repeat-x}.tw-grab-dot{position:fixed;width:5px;height:5px;border-radius:50%;background:var(--tw-text-label);transform:translate(-50%,-50%)}.tw-grab-bubble{position:fixed;transform:translate(-50%,-100%);padding:2px 7px;border-radius:calc(var(--tw-radius) - 2px);background:var(--tw-dropdown-bg);border:1px solid var(--tw-border);box-shadow:var(--tw-shadow-dropdown);color:var(--tw-text-primary);font-family:var(--tw-font-sans);font-size:11px;font-weight:500;white-space:nowrap;transform-origin:bottom center;animation:tw-bubble-in .18s var(--tw-ease-pop)}@keyframes tw-bubble-in{0%{opacity:0;transform:translate(-50%,-100%) scale(.8)}to{opacity:1;transform:translate(-50%,-100%) scale(1)}}.tw-grab-arrow{position:fixed;width:0;height:0;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:7px solid var(--tw-text-label)}.tw-folder{display:flex;flex-direction:column;border-top:1px solid var(--tw-border);border-bottom:1px solid var(--tw-border)}.tw-folder+.tw-folder{border-top:none;margin-top:-6px}.tw-folder .tw-folder{margin-left:10px}.tw-controls>.tw-folder:first-child{border-top:none}.tw-folder:last-child{border-bottom:none}.tw-folder-header{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;height:var(--tw-row-height);padding:0;background:none;border:none;cursor:pointer;color:inherit;font:inherit;text-align:left}.tw-folder-title{font-size:12px;font-weight:600;color:var(--tw-text-section);letter-spacing:-.01em;transition:color .15s}@media(hover:hover)and (pointer:fine){.tw-folder-header:hover .tw-folder-title,.tw-folder-header:hover .tw-chevron{color:var(--tw-text-primary)}}.tw-folder-header .tw-chevron{color:var(--tw-text-section);margin-right:-1.75px;transition:transform .35s var(--tw-ease-fold),color .15s}.tw-folder.is-collapsed .tw-folder-header .tw-chevron{transform:rotate(180deg)}.tw-folder-body{display:grid;grid-template-rows:1fr;transition:grid-template-rows .35s var(--tw-ease-fold);contain:layout}.tw-folder.is-collapsed .tw-folder-body{grid-template-rows:0fr}.tw-folder-body>.tw-controls{overflow-x:visible;overflow-y:clip;min-height:0;min-width:0;padding-bottom:8px;opacity:1;transition:opacity .35s var(--tw-ease-fold),padding-bottom .35s var(--tw-ease-fold)}.tw-folder.is-collapsed .tw-folder-body>.tw-controls{opacity:0;padding-bottom:0}.tw-folder:last-child .tw-folder-body>.tw-controls{padding-bottom:0}.tw-folder-body>.tw-controls>*{flex-shrink:0}.tw-shadow-chip,.tw-motion-chip{width:26px;background:var(--tw-base);overflow:hidden}.tw-shadow-chip{display:flex;align-items:center;justify-content:center}.tw-shadow-chip-tile{width:12px;height:8px;border-radius:2px;background:var(--tw-dropdown-bg)}.tw-shadow-stage{display:flex;align-items:center;justify-content:center;height:84px;border-radius:var(--tw-radius);background:var(--tw-base);overflow:hidden}.tw-shadow-card{width:64px;height:40px;border-radius:9px;background:var(--tw-dropdown-bg)}.tw-shadow-pop{width:260px}.tw-shadow-color{width:100%}.tw-shadow-color .tw-trigger-right,.tw-shadow-color .tw-trigger-value{max-width:none}.tw-shadow-pop .tw-color-body[hidden]{display:none}.tw-shadow-chevron{flex-shrink:0;width:12px;height:12px;color:var(--tw-text-tertiary);transition:transform .2s var(--tw-ease-pop)}.tw-shadow-color[aria-expanded=true] .tw-shadow-chevron{transform:rotate(180deg)}.tw-shadow-pop .tw-color-body{margin-top:2px}.tw-sides-link{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;color:var(--tw-text-tertiary);background:transparent;border:none;border-radius:calc(var(--tw-radius) - 3px);cursor:pointer;transition:color .15s,background .15s}.tw-sides-link svg{width:14px;height:14px}.tw-sides-link[aria-pressed=true]{color:var(--tw-accent, var(--tw-text-primary))}@media(hover:hover)and (pointer:fine){.tw-sides-link:hover{background:var(--tw-surface-hover);color:var(--tw-text-primary)}}.tw-sides>.tw-row .tw-sides-link{margin-left:auto}.tw-sides.is-linked .tw-sides-multi,.tw-sides:not(.is-linked)>.tw-row{display:none}.tw-sides-multi{display:flex;flex-direction:column;gap:6px;padding:6px 10px 10px 12px;background:var(--tw-surface);border-radius:var(--tw-radius)}.tw-sides-head{display:flex;align-items:center;gap:8px;min-height:20px}.tw-sides-multi .tw-fields,.tw-fields.tw-shadow-fields{grid-auto-flow:row;grid-template-columns:1fr 1fr}.tw-sides-sum{margin-left:auto;font-family:var(--tw-font-sans);font-size:12px;font-weight:500;color:var(--tw-text-tertiary);word-spacing:.1em}.tw-motion-chip{position:relative}.tw-motion-chip svg{display:block;width:100%;height:100%}.tw-motion-chip path{fill:none;stroke:var(--tw-accent, var(--tw-text-primary));stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.tw-motion-body,.tw-motion-pane{display:flex;flex-direction:column;gap:8px}.tw-motion-pop .tw-bezier-graph,.tw-motion-pop .tw-spring-viz{height:120px}.tw-motion-pane .tw-spring>.tw-row{display:none}.tw-motion-stage{display:flex;align-items:center;height:56px;padding:0 16px;border-radius:var(--tw-radius);background:var(--tw-surface);overflow:hidden;cursor:pointer}.tw-motion-box{width:24px;height:24px;border-radius:7px;background:var(--tw-accent, var(--tw-text-primary));will-change:transform}.tw-spring{display:flex;flex-direction:column;gap:6px}.tw-spring-viz{width:100%;height:96px;border-radius:var(--tw-radius);background:var(--tw-surface);overflow:hidden;cursor:crosshair;touch-action:none;transition:background .15s}@media(hover:hover)and (pointer:fine){.tw-spring-viz:hover{background:var(--tw-surface-hover)}}.tw-spring-viz.is-dragging{background:var(--tw-surface-hover);box-shadow:inset 0 0 0 1px var(--tw-border-hover)}.tw-spring-canvas{width:100%;height:100%;display:block}.tw-fields{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:6px}.tw-point{position:relative}.tw-point-preview{position:relative;width:18px;border-radius:2.5px;background:var(--tw-base);overflow:hidden}.tw-point-preview-dot{position:absolute;width:5px;height:5px;border-radius:999px;background:var(--tw-accent, var(--tw-text-primary));transform:translate(-50%,-50%)}.tw-point-body{display:flex;flex-direction:column;gap:8px;min-width:0}.tw-point-pop .tw-pad{max-width:none;margin:0}.tw-pad{position:relative;width:100%;max-width:176px;aspect-ratio:1;margin:0 auto 8px;border-radius:var(--tw-radius);background:var(--tw-base);box-shadow:inset 0 0 0 1px var(--tw-border);cursor:crosshair;touch-action:none;overflow:visible}.tw-pad-line{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.tw-pad-line line{stroke:var(--tw-accent, var(--tw-text-tertiary));stroke-width:1.5;vector-effect:non-scaling-stroke;stroke-linecap:round}.tw-pad-axis{position:absolute;background:var(--tw-border);pointer-events:none}.tw-pad-axis-x{left:0;right:0;top:50%;height:1px;transform:translateY(-50%)}.tw-pad-axis-y{top:0;bottom:0;left:50%;width:1px;transform:translate(-50%)}.tw-pad-thumb{position:absolute;width:14px;height:14px;border-radius:999px;background:var(--tw-accent, var(--tw-text-primary));border:2px solid var(--tw-base);box-shadow:0 0 0 1px var(--tw-border-hover),0 1px 3px #0000004d;transform:translate(-50%,-50%);pointer-events:none;transition:transform .18s var(--tw-ease-spring),box-shadow .18s}.tw-pad.is-grabbing .tw-pad-thumb{transform:translate(-50%,-50%) scale(1.28);box-shadow:0 0 0 1px var(--tw-border-hover),0 3px 9px #0006}.tw-field{display:flex;flex-direction:column;gap:4px;min-width:0}.tw-field-label{font-size:10px;font-weight:600;letter-spacing:.02em;color:var(--tw-text-tertiary);text-transform:uppercase}.tw-field .tw-num-wrap{background:var(--tw-base);border:1px solid var(--tw-border);border-radius:calc(var(--tw-radius) - 2px);padding:3px 4px;gap:2px;transition:border-color .15s}.tw-field .tw-num-wrap:focus-within{border-color:var(--tw-border-hover)}.tw-field .tw-num-wrap:has(>.tw-num:focus-visible:not(.tw-focus-quiet)),.tw-field .tw-num-wrap:has(>.tw-color-chan-input:focus-visible:not(.tw-focus-quiet)){outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:-1px}.tw-field .tw-num-wrap>.tw-num:focus-visible,.tw-field .tw-num-wrap>.tw-color-chan-input:focus-visible{outline:none}.tw-plot-field:has(>.tw-plot-input:focus-visible:not(.tw-focus-quiet)){outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:-2px}.tw-slider:has(.tw-slider-input:focus-visible:not(.tw-focus-quiet)){outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:-2px}.tw-wg-area:focus-visible,.tw-wg-hue:focus-visible,.tw-wg-alpha:focus-visible{outline:2px solid var(--tw-accent, var(--tw-text-focus));outline-offset:2px}.tw-field .tw-num{flex:1;width:auto;min-width:0}.tw-field .tw-num-grab{width:10px}.tw-bezier{display:flex;flex-direction:column;gap:6px}.tw-bezier-graph{position:relative;width:100%;height:96px;background:var(--tw-surface);border-radius:var(--tw-radius);overflow:hidden;touch-action:none}.tw-bezier-svg{position:absolute;inset:0;width:100%;height:100%;display:block}.tw-bezier-guide{stroke:var(--tw-border);stroke-width:1}.tw-bezier-diag{stroke:var(--tw-surface-active);stroke-width:1;stroke-dasharray:2 3}.tw-bezier-ctl{stroke:var(--tw-text-tertiary);stroke-width:1.5}.tw-bezier-curve{fill:none;stroke:var(--tw-accent, var(--tw-text-primary));stroke-width:2;stroke-linecap:round}.tw-bezier-handle{position:absolute;width:14px;height:14px;margin:0;padding:0;transform:translate(-50%,-50%);border-radius:999px;background:var(--tw-text-primary);border:2px solid var(--tw-base);box-shadow:0 1px 3px #0006;cursor:grab;touch-action:none;transition:transform .18s var(--tw-ease-spring),box-shadow .18s}@media(hover:hover)and (pointer:fine){.tw-bezier-handle:hover{transform:translate(-50%,-50%) scale(1.2)}}.tw-bezier-handle.is-dragging{cursor:grabbing;transform:translate(-50%,-50%) scale(1.3);box-shadow:0 3px 9px #00000073}.tw-bezier-fields{gap:4px}.tw-plot{display:flex;flex-direction:column;gap:6px}.tw-plot-label,.tw-spring-label,.tw-bezier-label{font-size:12px;font-weight:500;color:var(--tw-text-label);padding:0}.tw-plot-graph{position:relative;width:100%;height:140px;background:var(--tw-surface);border-radius:var(--tw-radius);overflow:hidden;box-shadow:inset 0 0 0 1px var(--tw-border)}.tw-plot-svg{position:absolute;inset:0;width:100%;height:100%;display:block}.tw-plot-axis{stroke:var(--tw-border);stroke-width:1}.tw-plot-curve{fill:none;stroke:var(--tw-accent, var(--tw-text-primary));stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.tw-plot-field{display:flex;align-items:center;gap:7px;height:var(--tw-row-height);padding:0 10px 0 12px;background:var(--tw-surface);border-radius:var(--tw-radius);box-shadow:inset 0 0 0 1px transparent;transition:box-shadow .15s}.tw-plot-field:focus-within{box-shadow:inset 0 0 0 1px var(--tw-border-hover)}.tw-plot-fx{flex:none;font-size:12px;color:var(--tw-text-tertiary);font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none}.tw-plot-input{flex:1;min-width:0;padding:0;background:none;border:none;outline:none;color:var(--tw-text-primary);font-family:var(--tw-font-mono, ui-monospace, "SF Mono", Menlo, monospace);font-size:12px}.tw-plot-input::placeholder{color:var(--tw-text-tertiary)}.tw-plot.is-invalid .tw-plot-curve{opacity:.25}.tw-plot.is-invalid .tw-plot-field{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--tw-danger) 60%,transparent)}.tw-plot.is-invalid .tw-plot-fx{color:color-mix(in srgb,var(--tw-danger) 80%,transparent)}@media(prefers-color-scheme:light){.tw-panel:where(:not([data-tw-scheme=dark]):not([data-tw-scheme=dark] *)),.tw-portal:where(:not([data-tw-scheme=dark]):not([data-tw-scheme=dark] *)){--tw-surface: rgba(255, 255, 255, .82);--tw-surface-hover: rgba(0, 0, 0, .04);--tw-surface-active: rgba(0, 0, 0, .1);--tw-text-root: #1a1a1a;--tw-text-section: rgba(0, 0, 0, .62);--tw-text-label: rgba(0, 0, 0, .58);--tw-text-focus: #000000;--tw-text-primary: rgba(0, 0, 0, .88);--tw-text-secondary: rgba(0, 0, 0, .58);--tw-text-tertiary: rgba(0, 0, 0, .54);--tw-border: rgba(0, 0, 0, .045);--tw-border-hover: rgba(0, 0, 0, .1);--tw-selection: rgba(0, 0, 0, .14);--tw-base: #f3f3f3;--tw-dropdown-bg: #f6f6f6;--tw-shadow-dropdown: 0 12px 32px -8px rgba(0, 0, 0, .14);--tw-shadow-panel: 0 0 0 1px var(--tw-border), 0 2px 8px -2px rgba(0, 0, 0, .08), 0 18px 44px -12px rgba(0, 0, 0, .16);--tw-shadow-panel-lifted: 0 0 0 1px var(--tw-border-hover), 0 6px 16px -3px rgba(0, 0, 0, .12), 0 30px 70px -16px rgba(0, 0, 0, .2);--tw-success: #15803d;--tw-danger: #c23232;color-scheme:light}.tw-slider-handle:where(:not([data-tw-scheme=dark] *)){box-shadow:0 0 0 .5px #00000014}}.tw-panel:where([data-tw-scheme=light],[data-tw-scheme=light] *),.tw-portal:where([data-tw-scheme=light],[data-tw-scheme=light] *){--tw-surface: rgba(255, 255, 255, .82);--tw-surface-hover: rgba(0, 0, 0, .04);--tw-surface-active: rgba(0, 0, 0, .1);--tw-text-root: #1a1a1a;--tw-text-section: rgba(0, 0, 0, .62);--tw-text-label: rgba(0, 0, 0, .58);--tw-text-focus: #000000;--tw-text-primary: rgba(0, 0, 0, .88);--tw-text-secondary: rgba(0, 0, 0, .58);--tw-text-tertiary: rgba(0, 0, 0, .54);--tw-border: rgba(0, 0, 0, .045);--tw-border-hover: rgba(0, 0, 0, .1);--tw-selection: rgba(0, 0, 0, .14);--tw-base: #f3f3f3;--tw-dropdown-bg: #f6f6f6;--tw-shadow-dropdown: 0 12px 32px -8px rgba(0, 0, 0, .14);--tw-shadow-panel: 0 0 0 1px var(--tw-border), 0 2px 8px -2px rgba(0, 0, 0, .08), 0 18px 44px -12px rgba(0, 0, 0, .16);--tw-shadow-panel-lifted: 0 0 0 1px var(--tw-border-hover), 0 6px 16px -3px rgba(0, 0, 0, .12), 0 30px 70px -16px rgba(0, 0, 0, .2);--tw-success: #15803d;--tw-danger: #c23232;color-scheme:light}.tw-slider-handle:where([data-tw-scheme=light] *){box-shadow:0 0 0 .5px #00000014}.tw-slider-value,.tw-slider-input,.tw-fps-val,.tw-num,.tw-grab-bubble,.tw-trigger-value,.tw-color-gamut,.tw-color-chan-input{font-variant-numeric:tabular-nums}@media(prefers-reduced-motion:reduce){.tw-panel,.tw-panel *,.tw-portal,.tw-portal *{transition:none!important}.tw-tabs-page[data-active=true],.tw-grab-bubble{animation:none}}@media(forced-colors:active){.tw-seg-pill,.tw-tabs-pill,.tw-slider-fill,.tw-radiogrid-btn[data-active=true]{outline:2px solid Highlight;outline-offset:-2px}.tw-gradient-stop[data-sel=true]{border-color:Highlight}.tw-select-option:focus-visible{outline:2px solid Highlight;outline-offset:-2px}}