tweakit 0.1.0

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.
Files changed (34) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +44 -0
  3. package/THIRD-PARTY-NOTICES.md +75 -0
  4. package/dist/tweaks/bezier-ZSQNFANZ.js +1 -0
  5. package/dist/tweaks/chunk-EVLD7DUH.js +1 -0
  6. package/dist/tweaks/chunk-GJESM23Q.js +1 -0
  7. package/dist/tweaks/colour-W46T6NIC.js +1 -0
  8. package/dist/tweaks/core.js +1 -0
  9. package/dist/tweaks/gradient-YEKTFEP4.js +1 -0
  10. package/dist/tweaks/image-VKNBVMVK.js +1 -0
  11. package/dist/tweaks/interval-7OUK7M7J.js +1 -0
  12. package/dist/tweaks/monitor-CY7CABK6.js +2 -0
  13. package/dist/tweaks/plot-X5IZM3QU.js +2 -0
  14. package/dist/tweaks/point-23BHLSGI.js +1 -0
  15. package/dist/tweaks/spring-Z2SKXUVV.js +1 -0
  16. package/dist/tweaks/tabs-CGHJ2VS2.js +1 -0
  17. package/dist/tweaks.css +1 -0
  18. package/dist/tweaks.js +3 -0
  19. package/dist/types/tweaks/controls/bezier.d.ts +1 -0
  20. package/dist/types/tweaks/controls/colour.d.ts +14 -0
  21. package/dist/types/tweaks/controls/gradient.d.ts +1 -0
  22. package/dist/types/tweaks/controls/image.d.ts +1 -0
  23. package/dist/types/tweaks/controls/interval.d.ts +1 -0
  24. package/dist/types/tweaks/controls/monitor.d.ts +1 -0
  25. package/dist/types/tweaks/controls/plot.d.ts +1 -0
  26. package/dist/types/tweaks/controls/point.d.ts +1 -0
  27. package/dist/types/tweaks/controls/spring.d.ts +1 -0
  28. package/dist/types/tweaks/controls/tabs.d.ts +1 -0
  29. package/dist/types/tweaks/core.d.ts +4 -0
  30. package/dist/types/tweaks/shared.d.ts +77 -0
  31. package/dist/types/tweaks/single.d.ts +12 -0
  32. package/dist/types/tweaks/types.d.ts +264 -0
  33. package/dist/types/wide-gamut.d.ts +121 -0
  34. package/package.json +57 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ryan Kiley
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,44 @@
1
+ # Tweakit
2
+
3
+ A dependency-free, code-split, real-time **parameter panel**. Hand it a plain schema and
4
+ it builds a live control for each value — sliders, toggles, dropdowns, a wide-gamut OKLCH
5
+ color picker, gradient and cubic-bézier editors, a spring tuner, monitors, a 2D point pad,
6
+ and more.
7
+
8
+ **[Docs & live examples →](https://ryankiley.github.io/tweakit/)**
9
+
10
+ ## Use
11
+
12
+ ```js
13
+ import { tweaks } from "tweakit";
14
+ import "tweakit/css";
15
+
16
+ const panel = tweaks("Card", {
17
+ blur: [24, 0, 100, 1], // slider
18
+ visible: true, // checkbox
19
+ blend: ["normal", "multiply"], // list
20
+ tint: "#7C5CFF", // wide-gamut color picker
21
+ });
22
+ document.body.append(panel.el);
23
+ panel.on((values) => { /* values.blur, values.tint, … */ });
24
+ ```
25
+
26
+ Everything else — every control live, the panel API, theming, markup-driven panels, and
27
+ the two builds (one inlined file vs the code-split entry) — is on the
28
+ **[docs site](https://ryankiley.github.io/tweakit/)**.
29
+
30
+ ## Develop
31
+
32
+ ```
33
+ npm install
34
+ npm run build
35
+ npm test
36
+ ```
37
+
38
+ Contributions welcome — see [CONTRIBUTING.md](CONTRIBUTING.md); report security issues per
39
+ [SECURITY.md](SECURITY.md).
40
+
41
+ ## Credits
42
+
43
+ Inspired by Tweakpane and dialkit. Toolbar and control icons from Lucide / Feather — see
44
+ [THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md).
@@ -0,0 +1,75 @@
1
+ # Third-party notices
2
+
3
+ Tweakit ships **no runtime dependencies**. Its toolbar and control icons,
4
+ however, are inline SVGs adapted from the **Lucide** icon set and, upstream of
5
+ Lucide, the **Feather** icon set. They were hand-inlined as SVG template literals
6
+ and in a few cases lightly modified (two paths merged into one `d`, a radius nudged,
7
+ a polygon redrawn as a path), but they remain derivative works and are redistributed
8
+ here under the original licenses reproduced below.
9
+
10
+ | Icon constant | Origin | License |
11
+ | --- | --- | --- |
12
+ | `ICON_CHECK` | Lucide `check` (← Feather) | MIT |
13
+ | `ICON_CHEVRON` | Lucide `chevron-down` (← Feather) | MIT |
14
+ | `ICON_INFO` | Lucide `info` (← Feather) | MIT |
15
+ | `ICON_X` | Lucide `x` (← Feather), two paths merged | MIT |
16
+ | `ICON_PLUS` | Lucide `plus` (← Feather), two paths merged | MIT |
17
+ | `ICON_SEARCH` | Lucide `search` (← Feather), radius nudged | MIT |
18
+ | `ICON_COPY` | Feather `copy` | MIT |
19
+ | `ICON_PRESETS` | Feather `layers`, redrawn as a path | MIT |
20
+ | `ICON_RESET` | Lucide `rotate-ccw` | ISC |
21
+ | `ICON_GRIP` | original to this project | — |
22
+
23
+ - Lucide — <https://lucide.dev> — © Lucide Icons and Contributors (ISC)
24
+ - Feather — <https://feathericons.com> — © 2013–present Cole Bemis (MIT)
25
+
26
+ The verbatim Lucide `LICENSE` follows; it bundles the ISC notice (for Lucide originals
27
+ such as `rotate-ccw`) and the Feather MIT notice (© Cole Bemis). That MIT notice covers
28
+ every Feather-derived icon above — including `copy` and `layers`, which come straight
29
+ from Feather rather than via Lucide's enumerated list.
30
+
31
+ ---
32
+
33
+ ISC License
34
+
35
+ Copyright (c) 2026 Lucide Icons and Contributors
36
+
37
+ Permission to use, copy, modify, and/or distribute this software for any
38
+ purpose with or without fee is hereby granted, provided that the above
39
+ copyright notice and this permission notice appear in all copies.
40
+
41
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
42
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
43
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
44
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
45
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
46
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
47
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
48
+
49
+ ---
50
+
51
+ The following Lucide icons are derived from the Feather project:
52
+
53
+ airplay, alert-circle, alert-octagon, alert-triangle, aperture, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, calendar, cast, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, circle, clipboard, clock, code, columns, command, compass, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, crosshair, database, divide-circle, divide-square, dollar-sign, download, external-link, feather, frown, hash, headphones, help-circle, info, italic, key, layout, life-buoy, link-2, link, loader, lock, log-in, log-out, maximize, meh, minimize, minimize-2, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, move, music, navigation-2, navigation, octagon, pause-circle, percent, plus-circle, plus-square, plus, power, radio, rss, search, server, share, shopping-bag, sidebar, smartphone, smile, square, table-2, tablet, target, terminal, trash-2, trash, triangle, tv, type, upload, x-circle, x-octagon, x-square, x, zoom-in, zoom-out
54
+
55
+ The MIT License (MIT) (for the icons listed above)
56
+
57
+ Copyright (c) 2013-present Cole Bemis
58
+
59
+ Permission is hereby granted, free of charge, to any person obtaining a copy
60
+ of this software and associated documentation files (the "Software"), to deal
61
+ in the Software without restriction, including without limitation the rights
62
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
63
+ copies of the Software, and to permit persons to whom the Software is
64
+ furnished to do so, subject to the following conditions:
65
+
66
+ The above copyright notice and this permission notice shall be included in all
67
+ copies or substantial portions of the Software.
68
+
69
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
70
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
71
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
72
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
73
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
74
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
75
+ SOFTWARE.
@@ -0,0 +1 @@
1
+ import{M as K,O,b as N,j as C,k as a,l as L,q as k,r as q,u as J}from"./chunk-GJESM23Q.js";function U(Y,M){let P=[.25,.1,.25,1],s=Array.isArray(Y.value)&&Y.value.length===4?Y.value.map(Number):P.slice();s.some(e=>!Number.isFinite(e))&&(s=P.slice());let d=-.25,A=1.25,R=A-d,l=8,B=C("div","tw-bezier"),b=C("div","tw-bezier-graph"),m=a("svg","tw-bezier-svg");m.setAttribute("preserveAspectRatio","none");let X=a("line","tw-bezier-guide"),G=a("line","tw-bezier-guide"),H=a("line","tw-bezier-diag"),W=a("line","tw-bezier-ctl"),S=a("line","tw-bezier-ctl"),I=a("path","tw-bezier-curve");m.append(X,G,H,W,S,I);let g=L("tw-bezier-handle");g.setAttribute("aria-label","Control point 1");let f=L("tw-bezier-handle");f.setAttribute("aria-label","Control point 2"),b.append(m,g,f);let T=C("div","tw-fields tw-bezier-fields");B.append(b,T);let p=0,z=0,$=e=>l+e*(p-2*l),F=e=>z-l-(e-d)/R*(z-2*l),w=(e,i,t,o,r)=>{e.setAttribute("x1",i),e.setAttribute("y1",t),e.setAttribute("x2",o),e.setAttribute("y2",r)},h=()=>{if(p=b.offsetWidth,z=b.offsetHeight,p<2)return;m.setAttribute("viewBox",`0 0 ${p} ${z}`);let[e,i,t,o]=s,r=$(0),n=F(0),c=$(1),u=F(1),y=$(e),x=F(i),v=$(t),D=F(o);w(X,l,n,p-l,n),w(G,l,u,p-l,u),w(H,r,n,c,u),w(W,r,n,y,x),w(S,c,u,v,D),I.setAttribute("d",`M${r},${n} C${y},${x} ${v},${D} ${c},${u}`),g.style.left=y+"px",g.style.top=x+"px",f.style.left=v+"px",f.style.top=D+"px"},E=[{label:"X1",i:0,lo:0,hi:1},{label:"Y1",i:1,lo:d,hi:A},{label:"X2",i:2,lo:0,hi:1},{label:"Y2",i:3,lo:d,hi:A}],Q=E.map(e=>{let i=K({label:e.label,value:s[e.i],step:.01,min:e.lo,max:e.hi},t=>{s[e.i]=t,h(),M(s.slice())});return T.append(i.el),i}),V=()=>Q.forEach((e,i)=>e.set(s[E[i].i])),j=(e,i)=>{let t=null,o=0,r=0,n=1;J(e,{onDown:c=>{c.preventDefault(),t=b.getBoundingClientRect(),o=b.offsetWidth||t.width,r=b.offsetHeight||t.height,n=t.width/o,e.classList.add("is-dragging"),e.focus({focusVisible:!1})},onMove:c=>{let u=(c.clientX-t.left)/n,y=(c.clientY-t.top)/n,x=N((u-l)/(o-2*l),0,1),v=N(d+(r-l-y)/(r-2*l)*R,d,A);s[i*2]=+x.toFixed(2),s[i*2+1]=+v.toFixed(2),h(),V(),M(s.slice())},onEnd:()=>{t=null,e.classList.remove("is-dragging")}})};return j(g,0),j(f,1),k(h),q(B,[[window,"resize"],[window,"tw-reflow"]],h),{el:B,set:e=>{if(Array.isArray(e)&&e.length===4){let i=e.map(Number);if(i.some(t=>!Number.isFinite(t)))return;s=i.map((t,o)=>N(t,E[o].lo,E[o].hi)),h(),V()}},get:()=>s.slice()}}O("cubicbezier",U);
@@ -0,0 +1 @@
1
+ import{E as Ut,L as jt,M as qt,O as Jt,b as f,j as x,m as zt,t as Vt,v as mt,w as gt}from"./chunk-GJESM23Q.js";var N0=180/Math.PI,xt=Math.PI/180,A=(t,e)=>[t[0][0]*e[0]+t[0][1]*e[1]+t[0][2]*e[2],t[1][0]*e[0]+t[1][1]*e[1]+t[1][2]*e[2],t[2][0]*e[0]+t[2][1]*e[1]+t[2][2]*e[2]],r0=(t,e)=>{let n=[[0,0,0],[0,0,0],[0,0,0]];for(let o=0;o<3;o++)for(let s=0;s<3;s++)n[o][s]=t[o][0]*e[0][s]+t[o][1]*e[1][s]+t[o][2]*e[2][s];return n},M=t=>t==null||Number.isNaN(t)?0:t,H0=(t,e,n)=>Math.min(n,Math.max(e,t)),ft=t=>{let e=Math.abs(t);return e<=.04045?t/12.92:Math.sign(t)*((e+.055)/1.055)**2.4},q=t=>{let e=Math.abs(t);return e<=.0031308?t*12.92:Math.sign(t)*(1.055*e**(1/2.4)-.055)},kt=1.09929682680944,c0=.018053968510807,B0=t=>{let e=Math.abs(t);return e<c0*4.5?t/4.5:Math.sign(t)*((e+kt-1)/kt)**(1/.45)},Ht=t=>{let e=Math.abs(t);return e<c0?t*4.5:Math.sign(t)*(kt*e**.45-(kt-1))},l0=1/512,D0=t=>{let e=Math.abs(t);return e<=l0*16?t/16:Math.sign(t)*e**1.8},I0=t=>{let e=Math.abs(t);return e>=l0?Math.sign(t)*e**(1/1.8):16*t},Ot=[[.41239079926595934,.357584339383878,.1804807884018343],[.21263900587151027,.715168678767756,.07219231536073371],[.01933081871559182,.11919477979462598,.9505321522496607]],ot=[[3.2409699419045226,-1.537383177570094,-.4986107602930034],[-.9692436362808796,1.8759675015077202,.04155505740717559],[.05563007969699366,-.20397695888897652,1.0569715142428786]],F0=[[.4865709486482162,.26566769316909306,.19821728523436247],[.2289745640697488,.6917385218365064,.079286914093745],[0,.04511338185890264,1.043944368900976]],Bt=[[2.493496911941425,-.9313836179191239,-.40271078445071684],[-.8294889695615747,1.7626640603183463,.023624685841943577],[.03584583024378447,-.07617238926804182,.9568845240076872]],G0=[[.6369580483012914,.14461690358620832,.16888097516417205],[.2627002120112671,.6779980715188708,.05930171646986196],[0,.028072693049087428,1.060985057710791]],Dt=[[1.7166511879712674,-.35567078377639233,-.25336628137365974],[-.6666843518324892,1.6164812366349395,.01576854581391113],[.017639857445310783,-.042770613257808524,.9421031212354738]],P0=[[.7977604896723027,.13518583717574031,.0313493495815248],[.2880711282292934,.7118432178101014,8565396060525902e-20],[0,0,.8251046025104601]],X0=[[1.3457989731028281,-.25558010007997534,-.05110628506753401],[-.5446224939028347,1.5082327413132781,.02053603239147973],[0,0,1.2119675456389454]],i0=[[1.0479298208405488,.022946793341019088,-.05019222954313557],[.029627815688159344,.990434484573249,-.01707382502938514],[-.009243058152591178,.015055144896577895,.7518742899580008]],h0=[[.9554734527042182,-.023098536874261423,.0632593086610217],[-.028369706963208136,1.0099954580058226,.021041398966943008],[.012314001688319899,-.020507696433477912,1.3303659366080753]],Y0=[[.819022437996703,.3619062600528904,-.1288737815209879],[.0329836539323885,.9292868615863434,.0361446663506424],[.0481771893596242,.2642395317527308,.6335478284694309]],It=[[1.2268798758459243,-.5578149944602171,.2813910456659647],[-.0405757452148008,1.112286803280317,-.0717110580655164],[-.0763729366746601,-.4214933324022432,1.5869240198367816]],Z0=[[.210454268309314,.7936177747023054,-.0040720430116193],[1.9779985324311684,-2.42859224204858,.450593709617411],[.0259040424655478,.7827717124575296,-.8086757549230774]],y=[[1,.3963377773761749,.2158037573099136],[1,-.1055613458156586,-.0638541728258133],[1,-.0894841775298119,-1.2914855480194092]],dt=216/24389,st=24389/27,J=[.3457/.3585,1,(1-.3457-.3585)/.3585],U=(t,e,n)=>A(n,[e(t[0]),e(t[1]),e(t[2])]),j=(t,e,n)=>{let o=A(n,t);return[e(o[0]),e(o[1]),e(o[2])]},Qt=t=>{let e=A(y,t);return A(It,[e[0]**3,e[1]**3,e[2]**3])},t0=t=>{let e=A(Y0,t);return A(Z0,[Math.cbrt(e[0]),Math.cbrt(e[1]),Math.cbrt(e[2])])};function e0(t){let[e,n,o]=t,s=(e+16)/116,a=n/500+s,r=s-o/200,u=a**3>dt?a**3:(116*a-16)/st,i=e>st*dt?s**3:e/st,p=r**3>dt?r**3:(116*r-16)/st;return A(h0,[u*J[0],i*J[1],p*J[2]])}function n0(t){let e=A(i0,t),n=r=>r>dt?Math.cbrt(r):(st*r+16)/116,o=n(e[0]/J[0]),s=n(e[1]/J[1]),a=n(e[2]/J[2]);return[116*s-16,500*(o-s),200*(s-a)]}var wt=t=>{let e=Math.hypot(t[1],t[2]),n=Math.atan2(t[2],t[1])*N0;return n<0&&(n+=360),[t[0],e,n]},Mt=t=>[t[0],t[1]*Math.cos(t[2]*xt),t[1]*Math.sin(t[2]*xt)];function u0(t){let e=((Number.isNaN(t[0])?0:t[0])%360+360)%360,n=t[1]/100,o=t[2]/100,s=a=>{let r=(a+e/30)%12,u=n*Math.min(o,1-o);return o-u*Math.max(-1,Math.min(r-3,9-r,1))};return[s(0),s(8),s(4)]}function p0(t){let e=Math.max(...t),n=Math.min(...t),o=e-n;if(o===0)return NaN;let s;return e===t[0]?s=(t[1]-t[2])/o+(t[1]<t[2]?6:0):e===t[1]?s=(t[2]-t[0])/o+2:s=(t[0]-t[1])/o+4,s*60}function W0(t){let e=Math.max(...t),n=Math.min(...t),o=(n+e)/2,s=p0(t),a=e===n||o===0||o===1?0:(e-o)/Math.min(o,1-o);return a<0&&(s+=180,a=-a),s>=360&&(s-=360),[s,a*100,o*100]}function K0(t){let e=t[1]/100,n=t[2]/100;if(e+n>=1){let a=e/(e+n);return[a,a,a]}let o=u0([t[0],100,50]),s=1-e-n;return[o[0]*s+e,o[1]*s+e,o[2]*s+e]}var z0=t=>[p0(t),Math.min(...t)*100,(1-Math.max(...t))*100];function V0(t,e){switch(e){case"srgb":return U(t,ft,Ot);case"p3":return U(t,ft,F0);case"rec2020":return U(t,B0,G0);case"prophoto-rgb":return A(h0,U(t,D0,P0));case"oklab":return Qt(t);case"oklch":return Qt(Mt(t));case"lab":return e0(t);case"lch":return e0(Mt(t));case"hsl":return U(u0(t),ft,Ot);case"hwb":return U(K0(t),ft,Ot)}}function U0(t,e){switch(e){case"srgb":return j(t,q,ot);case"p3":return j(t,q,Bt);case"rec2020":return j(t,Ht,Dt);case"prophoto-rgb":return j(A(i0,t),I0,X0);case"oklab":return t0(t);case"oklch":return wt(t0(t));case"lab":return n0(t);case"lch":return wt(n0(t));case"hsl":return W0(j(t,q,ot));case"hwb":return z0(j(t,q,ot))}}function w(t,e,n){return e===n?[t[0],t[1],t[2]]:e==="oklch"&&n==="oklab"?Mt(t):e==="oklab"&&n==="oklch"?wt(t):e==="lch"&&n==="lab"?Mt(t):e==="lab"&&n==="lch"?wt(t):U0(V0(t,e),n)}var Q=75e-6;function Nt(t,e){return w(t,"oklch",e).every(o=>o>=-Q&&o<=1+Q)}var s0=t=>t.map(e=>Math.min(1,Math.max(0,e))),o0=(t,e)=>Math.hypot(t[0]-e[0],t[1]-e[1],t[2]-e[2]);function $t(t,e){if(Nt(t,e))return w(t,"oklch",e);let n=t[0];if(n>=1)return[1,1,1];if(n<=0)return[0,0,0];let o=.02,s=1e-4,a=[t[0],t[1],t[2]],r=0,u=t[1],i=!0,p=s0(w(a,"oklch",e));if(o0(w(p,e,"oklab"),w(t,"oklch","oklab"))<o)return p;for(;u-r>s;){let h=(r+u)/2;a[1]=h;let g=w(a,"oklch",e);if(i&&g.every(_=>_>=-Q&&_<=1+Q)){r=h;continue}p=s0(g);let b=o0(w(p,e,"oklab"),w(a,"oklch","oklab"));if(b<o){if(o-b<s)return p;i=!1,r=h}else u=h}return p}function at(t,e){let n=t*xt,o=Math.cos(n),s=Math.sin(n),a=o*y[0][1]+s*y[0][2],r=o*y[1][1]+s*y[1][2],u=o*y[2][1]+s*y[2][2],i=r0(e==="p3"?Bt:e==="rec2020"?Dt:ot,It),p=e==="rec2020"?Ht:q,h=-Q,g=1+Q;return(b,_)=>{let T=b+_*a,E=b+_*r,k=b+_*u,$=T**3,v=E**3,H=k**3,C=p(i[0][0]*$+i[0][1]*v+i[0][2]*H);if(C<h||C>g)return!1;let tt=p(i[1][0]*$+i[1][1]*v+i[1][2]*H);if(tt<h||tt>g)return!1;let Z=p(i[2][0]*$+i[2][1]*v+i[2][2]*H);return Z>=h&&Z<=g}}function b0(t,e){let n=t*xt,o=Math.cos(n),s=Math.sin(n),a=o*y[0][1]+s*y[0][2],r=o*y[1][1]+s*y[1][2],u=o*y[2][1]+s*y[2][2],i=r0(e==="p3"?Bt:e==="rec2020"?Dt:ot,It),p=e==="rec2020"?Ht:q;return(h,g,b)=>{let _=h+g*a,T=h+g*r,E=h+g*u,k=_**3,$=T**3,v=E**3;b[0]=p(i[0][0]*k+i[0][1]*$+i[0][2]*v),b[1]=p(i[1][0]*k+i[1][1]*$+i[1][2]*v),b[2]=p(i[2][0]*k+i[2][1]*$+i[2][2]*v)}}function rt(t,e,n=.5){if(!t(e,0))return 0;let o=0;for(let s=0;s<16;s++){let a=(o+n)/2;t(e,a)?o=a:n=a}return o}var X=t=>Math.round(Math.min(1,Math.max(0,t))*255).toString(16).padStart(2,"0"),j0=t=>`#${X(t[0])}${X(t[1])}${X(t[2])}`,_t=(t,e,n)=>j0($t([t,e,n],"srgb"));function m0(t){let e=String(t).replace("#","").trim();if(e.length===3&&(e=e.split("").map(o=>o+o).join("")),e.length<6)return[.7,.1,280];let n=[parseInt(e.slice(0,2),16)/255,parseInt(e.slice(2,4),16)/255,parseInt(e.slice(4,6),16)/255];return w(n,"srgb","oklch").map(M)}var vt=["hex","srgb","css","hsl","hwb","oklch","oklab","lch","lab","p3","rec2020"],g0={hex:"HEX",srgb:"RGB",css:"CSS",hsl:"HSL",hwb:"HWB",oklch:"OKLCH",oklab:"OKLab",lch:"LCH",lab:"Lab",p3:"P3",rec2020:"Rec2020"},f0=["srgb","css","hsl","hwb","hex"],Ft=t=>!f0.includes(t),d0=t=>t==="hex"||t==="css"?"srgb":t,q0={hex:"srgb",srgb:"srgb",css:"srgb",hsl:"hsl",hwb:"hwb",oklch:"oklch",oklab:"oklab",lch:"lch",lab:"lab",p3:"display-p3",rec2020:"rec2020"},he=t=>q0[t]||"oklch",J0={srgb:"srgb",hsl:"hsl",hwb:"hwb",oklch:"oklch",oklab:"oklab",lch:"lch",lab:"lab","display-p3":"p3",rec2020:"rec2020"},ue=t=>J0[t]||"oklch",Q0=.5,ct={oklch:[{k:"L",min:0,max:100,step:1,scale:100},{k:"C",min:0,max:Q0,step:.01,scale:1},{k:"H",min:0,max:360,step:1,scale:1}],oklab:[{k:"L",min:0,max:100,step:1,scale:100},{k:"a",min:-.4,max:.4,step:.01,scale:1},{k:"b",min:-.4,max:.4,step:.01,scale:1}],lch:[{k:"L",min:0,max:100,step:1,scale:1},{k:"C",min:0,max:150,step:1,scale:1},{k:"H",min:0,max:360,step:1,scale:1}],lab:[{k:"L",min:0,max:100,step:1,scale:1},{k:"a",min:-125,max:125,step:1,scale:1},{k:"b",min:-125,max:125,step:1,scale:1}],srgb:[{k:"R",min:0,max:255,step:1,scale:255},{k:"G",min:0,max:255,step:1,scale:255},{k:"B",min:0,max:255,step:1,scale:255}],css:[{k:"R",min:0,max:255,step:1,scale:255},{k:"G",min:0,max:255,step:1,scale:255},{k:"B",min:0,max:255,step:1,scale:255}],hsl:[{k:"H",min:0,max:360,step:1,scale:1},{k:"S",min:0,max:100,step:1,scale:1},{k:"L",min:0,max:100,step:1,scale:1}],hwb:[{k:"H",min:0,max:360,step:1,scale:1},{k:"W",min:0,max:100,step:1,scale:1},{k:"B",min:0,max:100,step:1,scale:1}],p3:[{k:"R",min:0,max:1,step:.01,scale:1},{k:"G",min:0,max:1,step:.01,scale:1},{k:"B",min:0,max:1,step:.01,scale:1}],rec2020:[{k:"R",min:0,max:1,step:.01,scale:1},{k:"G",min:0,max:1,step:.01,scale:1},{k:"B",min:0,max:1,step:.01,scale:1}]},te=t=>t>=1?0:t>=.1?1:t>=.01?2:3,x0=(t,e,n)=>e==="oklch"?[t[0],t[1],t[2]]:f0.includes(n)?e==="srgb"?$t(t,"srgb"):w($t(t,"srgb"),"srgb",e):w(t,"oklch",e);function Ct(t,e){let n=x0(t,d0(e),e);return ct[e].map((o,s)=>{let a=M(n[s])*o.scale;return H0(Math.abs(a)<.5*o.step?0:a,o.min,o.max)})}function k0(t,e,n,o){let s=d0(e),a=x0(t,s,e).map(M);a[n]=o/ct[e][n].scale;let r=w(a,s,"oklch");return[M(r[0]),M(r[1]),M(r[2])]}function w0(t,e){if(!Ft(e))return"sRGB";let n=$t(t,"srgb");return Math.max(...n)<.03||Math.min(...n)>.97||Nt(t,"srgb")?"sRGB":Nt(t,"p3")?"P3":"wide"}function Gt(t,e){if(e==="hex")return _t(t[0],t[1],t[2]);let n=ct[e],o=Ct(t,e),s=a=>o[a].toFixed(te(n[a].step));return e==="css"?`${s(0)}, ${s(1)}, ${s(2)}`:e==="oklch"||e==="oklab"||e==="lch"||e==="lab"?`${s(0)}% ${s(1)} ${s(2)}`:e==="hsl"||e==="hwb"?`${s(0)} ${s(1)}% ${s(2)}%`:`${s(0)} ${s(1)} ${s(2)}`}var a0=(t,e)=>e==="hex"?t:e==="srgb"?`rgb(${t})`:e==="css"?`rgba(${t}, 1)`:e==="hsl"?`hsl(${t})`:e==="hwb"?`hwb(${t})`:e==="p3"?`color(display-p3 ${t})`:e==="rec2020"?`color(rec2020 ${t})`:`${e}(${t})`;function M0(t,e,n){let o=M(n);if(e==="hex")return _t(t[0],t[1],t[2])+(o<.999?X(o):"");let s=Gt(t,e);if(o>=.999)return a0(s,e);let a=+o.toFixed(3);return e==="css"?`rgba(${s}, ${a})`:a0(`${s} / ${a}`,e)}var _0=(()=>{try{return document.createElement("canvas").getContext("2d",{colorSpace:"display-p3"})?.getContextAttributes?.().colorSpace==="display-p3"}catch{return!1}})(),Pt=_0?{colorSpace:"display-p3"}:{},ee=_0?"p3":"srgb",Et=(t,e)=>{let n=t.length-1,o=Math.max(0,Math.min(n,e*n)),s=Math.floor(o),a=o-s;return t[s]*(1-a)+t[Math.min(s+1,n)]*a},ne=(t,e)=>{let n=at(t,e),o=new Float64Array(128);for(let s=0;s<128;s++)o[s]=rt(n,s/127);return o},se="repeating-conic-gradient(#6b6b6b 0% 25%, #9a9a9a 0% 50%) 0 0 / 8px 8px",oe={srgb:"srgb","display-p3":"p3",rec2020:"rec2020","prophoto-rgb":"prophoto-rgb"},$0=t=>{let e=/^([+-]?(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?)(deg|grad|rad|turn)$/i.exec(t);if(!e)return M(parseFloat(t));let n=parseFloat(e[1]);return e[2].toLowerCase()==="turn"?n*360:e[2].toLowerCase()==="grad"?n*.9:e[2].toLowerCase()==="rad"?n*180/Math.PI:n};function Y(t){if(t=String(t??"").trim(),/^#?([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t)){let u=t.replace("#",""),i=1;u.length===4?(i=parseInt(u[3]+u[3],16)/255,u=u.slice(0,3)):u.length===8&&(i=parseInt(u.slice(6,8),16)/255,u=u.slice(0,6));let[p,h,g]=m0("#"+u);return[p,h,g,i]}let e=t.match(/^(oklch|oklab|lch|lab|color)\(\s*([^)]*?)\s*\)$/i);if(e){let u=e[1].toLowerCase(),[i,p]=e[2].split("/").map(k=>k.trim()),h=i.split(/\s+/).filter(Boolean),g=u;if(u==="color"&&(g=oe[(h[0]||"").toLowerCase()],h=h.slice(1),!g))return[.7,.1,280,1];let b=(k,$=1)=>!k||k==="none"?0:M(parseFloat(k))*(/%$/.test(k)?$:1),_=p?f(b(p,.01),0,1):1,T=u==="lab"?[f(b(h[0]),0,100),b(h[1],1.25),b(h[2],1.25)]:u==="lch"?[f(b(h[0]),0,100),Math.max(0,b(h[1],1.5)),$0(h[2]||"0")]:u==="color"?[b(h[0],.01),b(h[1],.01),b(h[2],.01)]:u==="oklab"?[f(b(h[0],.01),0,1),b(h[1],.004),b(h[2],.004)]:[f(b(h[0],.01),0,1),Math.max(0,b(h[1],.004)),$0(h[2]||"0")],E=g==="oklch"?T:w(T,g,"oklch");return[M(E[0]),M(E[1]),(M(E[2])%360+360)%360,_]}let n=Y._c2d||(Y._c2d=document.createElement("canvas").getContext("2d"));n.fillStyle="#000",n.fillStyle=t;let o=n.fillStyle;if(o[0]==="#")return Y(o);let s=o.match(/^rgba?\(([^)]*)\)/i),a=((s?s[1]:"").match(/-?[\d.]+(?:e[+-]?\d+)?/gi)||[0,0,0]).map(Number),r=w([a[0]/255,a[1]/255,a[2]/255],"srgb","oklch");return[M(r[0]),M(r[1]),M(r[2]),a[3]!=null?f(M(a[3]),0,1):1]}function ae(t,e){let[n,o,s,a]=Y(t.value||"#7c5cff"),r=vt.includes(t.mode)?t.mode:"oklch",u=NaN,i=null,p=[],h=NaN,g="",b=()=>M0([n,o,s],r,a),_=x("div","tw-color-body"),T=x("div","tw-wg-area"),E=document.createElement("canvas");E.className="tw-wg-canvas";let k=x("div","tw-wg-thumb");T.append(E,k);let $=x("div","tw-wg-hue"),v=document.createElement("canvas");v.className="tw-wg-hue-canvas";let H=x("div","tw-wg-hue-thumb");$.append(v,H);let C=x("div","tw-wg-alpha"),tt=x("div","tw-wg-alpha-grad"),Z=x("div","tw-wg-hue-thumb");C.append(tt,Z),C.tabIndex=0,C.setAttribute("role","slider"),C.setAttribute("aria-label","Alpha"),C.setAttribute("aria-valuemin","0"),C.setAttribute("aria-valuemax","1");let Xt=x("div","tw-color-mode-row"),B=x("select","tw-color-mode");B.setAttribute("aria-label","Color mode"),vt.forEach(c=>{let l=document.createElement("option");l.value=c,l.textContent=g0[c],B.append(l)}),B.value=r;let Yt=x("span","tw-color-gamut");Xt.append(B,Yt);let D=x("div","tw-color-channels");_.append(T,$,C,Xt,D);let L=E.getContext("2d",Pt),Zt=v.getContext("2d"),W=document.createElement("canvas"),v0=W.getContext("2d",Pt),Lt=null,lt=()=>{let c=T.getBoundingClientRect(),l=Math.round(c.width),m=Math.round(c.height);if(l<2)return;let d=window.devicePixelRatio||1,S=Ft(r)?"p3":"srgb",O=ne(s,S);i=O;let N=Math.round(l*d),ht=Math.round(m*d),F=Math.max(1,Math.round(N/4)),z=Math.max(1,Math.round(ht/4));(W.width!==F||W.height!==z)&&(W.width=F,W.height=z,Lt=new ImageData(F,z,Pt));let ut=Lt.data,S0=z>1?1/(z-1):0,R0=F>1?1/(F-1):0,A0=b0(s,ee),pt=[0,0,0];for(let G=0;G<z;G++){let bt=1-G*S0,St=Et(O,bt);for(let P=0;P<F;P++){A0(bt,P*R0*St,pt);let V=(G*F+P)*4;ut[V]=Math.round(f(pt[0],0,1)*255),ut[V+1]=Math.round(f(pt[1],0,1)*255),ut[V+2]=Math.round(f(pt[2],0,1)*255),ut[V+3]=255}}if(v0.putImageData(Lt,0,0),E.width=N,E.height=ht,L.imageSmoothingEnabled=!0,L.drawImage(W,0,0,N,ht),S!=="srgb"){let G=(bt,St,P,V)=>{let O0=at(s,bt),Rt=[];for(let R=0;R<=100;R++){let nt=R/100,At=Et(O,nt);if(At<=0)continue;let Kt=rt(O0,nt,At);Kt<=0||Rt.push([Math.min(Kt/At*N,N-P*d/2),(1-nt)*ht])}Rt.length<2||(L.save(),L.strokeStyle=St,L.lineWidth=P*d,L.lineJoin=L.lineCap="round",L.setLineDash(V.map(R=>R*d)),L.beginPath(),Rt.forEach((R,nt)=>nt?L.lineTo(R[0],R[1]):L.moveTo(R[0],R[1])),L.stroke(),L.restore())};G("srgb","rgba(255,255,255,0.7)",1.5,[]),G("p3","rgba(255,255,255,0.4)",1,[3,3])}u=s},yt=.7,Wt=0,C0=()=>{let c=$.getBoundingClientRect(),l=Math.max(1,Math.round(c.width)),m=Math.max(1,Math.round(c.height));if(l<2||l===Wt&&v.width===l)return;Wt=l,v.width=l,v.height=m;let d=yt;for(let S=0;S<l;S++){let O=S/(l-1)*360,N=w([d,rt(at(O,"srgb"),d),O],"oklch","srgb");Zt.fillStyle=`rgb(${f(N[0]*255,0,255)|0},${f(N[1]*255,0,255)|0},${f(N[2]*255,0,255)|0})`,Zt.fillRect(S,0,1,m)}},I=()=>{let c=i?Et(i,n):.4,l=d=>`${f(d,0,1)*100}%`,m=(d,S)=>{let O=f(d,0,1);return`calc(${O*100}% + ${(.5-O)*S}px)`};if(k.style.left=l(c>0?o/c:0),k.style.top=l(1-n),H.style.left=m(s/360,16),Z.style.left=m(a,16),C.setAttribute("aria-valuenow",String(+a.toFixed(2))),tt.style.background=`linear-gradient(to right, oklch(${n} ${o} ${s} / 0), oklch(${n} ${o} ${s}))`,k.style.background=`oklch(${n} ${o} ${s})`,Z.style.background=`linear-gradient(oklch(${n} ${o} ${s} / ${a}), oklch(${n} ${o} ${s} / ${a})), var(--tw-dropdown-bg)`,s!==h){let d=w([yt,rt(at(s,"srgb"),yt),s],"oklch","srgb");g=`rgb(${f(d[0]*255,0,255)|0} ${f(d[1]*255,0,255)|0} ${f(d[2]*255,0,255)|0})`,h=s}H.style.background=g},et=()=>{if(Yt.textContent=w0([n,o,s],r),r==="hex"){let c=D.querySelector(".tw-color-chan-input");c&&document.activeElement!==c&&(c.value=_t(n,o,s)+(a<.999?X(a):""))}else{let c=Ct([n,o,s],r);p.forEach((l,m)=>{l.el.contains(document.activeElement)||l.set(c[m])})}},E0=()=>{C0(),lt(),I()},K=()=>e(b()),it=c=>{c&&s!==u&&lt(),I(),et()},Tt=()=>{if(D.replaceChildren(),p=[],r==="hex"){D.classList.add("tw-color-channels--hex");let c=x("div","tw-color-chan"),l=x("input","tw-color-chan-input");l.type="text",l.spellcheck=!1,l.setAttribute("aria-label","Hex color"),Vt(l),l.addEventListener("change",()=>{let m=l.value.trim();/^#?([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(m)&&([n,o,s,a]=Y(m),it(!0),K())}),l.addEventListener("keydown",m=>{m.key==="Enter"&&l.blur()}),c.append(zt("span","tw-color-chan-label","HEX"),l),D.append(c)}else{D.classList.remove("tw-color-channels--hex");let c=Ct([n,o,s],r);ct[r].forEach((l,m)=>{let d=qt({label:l.k,value:c[m],min:l.min,max:l.max,step:l.step},S=>{[n,o,s]=k0([n,o,s],r,m,f(S,l.min,l.max)),it(!0),K()});p.push(d),D.append(d.el)})}et()},L0=c=>gt(c,T);mt(T,c=>{let[l,m]=L0(c);n=1-m,o=l*(i?Et(i,n):.4),I(),et(),K()});let y0=c=>gt(c,$)[0]*360;mt($,c=>{s=y0(c),it(!0),K()});let T0=c=>gt(c,C)[0];return mt(C,c=>{a=T0(c),I(),et(),K()}),C.addEventListener("keydown",c=>{let l=c.shiftKey?.1:.01,m=a;switch(c.key){case"ArrowRight":case"ArrowUp":m+=l;break;case"ArrowLeft":case"ArrowDown":m-=l;break;case"Home":m=0;break;case"End":m=1;break;default:return}c.preventDefault(),a=f(m,0,1),I(),et(),K()}),B.addEventListener("change",()=>{r=B.value,Tt(),lt(),I(),t.onMode&&t.onMode()}),Tt(),{el:_,set:c=>{let l=document.activeElement;l&&_.contains(l)&&l.blur(),[n,o,s,a]=Y(c),it(!0)},get:()=>b(),mode:()=>r,setMode:c=>{c===r||!vt.includes(c)||(r=c,B.value=c,Tt(),lt(),I())},reflow:E0,swatchCss:()=>`linear-gradient(oklch(${n} ${o} ${s} / ${a}), oklch(${n} ${o} ${s} / ${a})), ${se}`,valueText:()=>Gt([n,o,s],r)+(a<.999?r==="hex"?X(a):` / ${+a.toFixed(2)}`:"")}}function re(t,e){let{root:n,trigger:o,right:s}=jt("tw-color",t.label||"Colour"),a=x("span","tw-trigger-chip tw-color-swatch"),r=x("span","tw-trigger-value");s.append(a,r);let u=x("div","tw-color-pop"),i=()=>{a.style.background=p.swatchCss(),r.textContent=p.valueText()},p=ae({value:t.value,onMode:()=>i()},h=>{i(),e(h)});return u.append(p.el),n.append(u),Ut(n,o,u,{width:240,fallbackH:340,gap:6,onOpen:p.reflow,onReflow:p.reflow}),i(),{el:n,set:h=>{p.set(h),i()},get:()=>p.get()}}var ge=(t,e,n,o)=>o<.999?`oklch(${+t.toFixed(4)} ${+e.toFixed(4)} ${+n.toFixed(2)} / ${+o.toFixed(3)})`:`oklch(${+t.toFixed(4)} ${+e.toFixed(4)} ${+n.toFixed(2)})`;Jt("color",re);export{he as a,ue as b,se as c,Y as d,ae as e,ge as f};
@@ -0,0 +1 @@
1
+ var S=t=>t.replace(/([A-Z])/g," $1").replace(/^./,e=>e.toUpperCase()).trim(),g=(t,e,n)=>Math.min(n,Math.max(e,t)),K=t=>typeof t=="string"&&(/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(t.trim())||/^(oklch|oklab|rgba?|hsla?|hwb|lab|lch|color)\(/i.test(t.trim())),E=t=>{let e=String(t),n=/e-(\d+)$/i.exec(e);if(n)return Number(n[1])+(e.split("e")[0].split(".")[1]||"").length;let r=e.indexOf(".");return r===-1?0:e.length-r-1},F=(t,e,n)=>n>0?Number((e+Math.round((t-e)/n)*n).toFixed(E(n))):t,U=(t,e)=>{let n=e-t;return n<=1?.01:n<=10?.1:n<=100?1:10},Y=t=>t>=0?[0,t<=1?1:t*3||100]:[t>=-1?-1:t*3,0],L=t=>t==null?void 0:typeof t=="object"?t.value:t,I=t=>t==null?"":typeof t=="string"?S(t):typeof t=="object"?t.label??String(t.value):String(t),P="http://www.w3.org/2000/svg",p=(t,e,n)=>{let r=document.createElement(t);return e&&(r.className=e),n!=null&&(r.innerHTML=n),r},Z=(t,e)=>{let n=document.createElementNS(P,t);return e&&n.setAttribute("class",e),n},A=(t,e)=>{let n=p("button",t,e);return n.type="button",n},k=(t,e,n)=>{let r=p(t,e);return r.textContent=n,r},J=(t,e)=>getComputedStyle(t).getPropertyValue(e).trim(),Q=t=>{let e=getComputedStyle(t),n=r=>e.getPropertyValue(r).trim();return n("--tw-accent")||n("--tw-text-primary")||"#fff"},N=t=>["pointerdown","pointermove","pointerup"].forEach(e=>t.addEventListener(e,n=>n.stopPropagation())),tt=t=>{requestAnimationFrame(t),document.fonts&&document.fonts.ready&&document.fonts.ready.then(t)},et=(t,e,n)=>{let r=o=>{if(!t.isConnected)return i();n(o)},i=()=>e.forEach(([o,s])=>o.removeEventListener(s,r));return e.forEach(([o,s])=>o.addEventListener(s,r)),i},nt=(t,e)=>{t.addEventListener("pointerenter",()=>{t.classList.add("is-hover"),e&&e()}),t.addEventListener("pointerleave",()=>t.classList.remove("is-hover"))},y=!1;typeof document<"u"&&(document.addEventListener("pointerdown",()=>{y=!0},!0),document.addEventListener("keydown",()=>{y=!1},!0));var R=t=>{t.addEventListener("focus",()=>t.classList.toggle("tw-focus-quiet",y)),t.addEventListener("blur",()=>t.classList.remove("tw-focus-quiet"))};function T(t,{onDown:e,onMove:n,onEnd:r}={}){let i=null,o=s=>{i===null||s.pointerId!==i||(i=null,r&&r(s))};t.addEventListener("pointerdown",s=>{if(!(s.button!==0||i!==null)){i=s.pointerId;try{t.setPointerCapture(s.pointerId)}catch{}e&&e(s)}}),t.addEventListener("pointermove",s=>{if(s.pointerId===i){if(s.buttons===0)return o(s);n&&n(s)}}),t.addEventListener("pointerup",o),t.addEventListener("pointercancel",o),t.addEventListener("lostpointercapture",o)}var rt=(t,e)=>T(t,{onDown:n=>{t.classList.add("is-grabbing"),e(n)},onMove:e,onEnd:()=>t.classList.remove("is-grabbing")}),it=(t,e)=>{let n=e.getBoundingClientRect();return[g((t.clientX-n.left)/n.width,0,1),g((t.clientY-n.top)/n.height,0,1)]},ot=(t,e,n=1/0)=>{let r=t.getBoundingClientRect(),i=Math.min(window.devicePixelRatio||1,n);return t.width=r.width*i,t.height=r.height*i,e.setTransform(i,0,0,i,0,0),[r.width,r.height]},O=(t,e,{width:n,fallbackH:r=300,gap:i=6,align:o="start",prefer:s="below"}={})=>{let c=t.getBoundingClientRect();n==="match"&&(e.style.width=c.width+"px");let w=n==="match"?c.width:e.offsetWidth||n||0,m=o==="end"?c.right-w:o==="center"?c.left+c.width/2-w/2:c.left;e.style.left=Math.max(8,Math.min(m,window.innerWidth-w-8))+"px";let f=e.offsetHeight||r,d=window.innerHeight-c.bottom,l=c.top,a=f+12,u=d>=a,v=l>=a,M=(s==="above"?v||!u&&l>=d:!u&&(v||l>d))?c.top-f-i:c.bottom+i;e.style.top=g(M,i,window.innerHeight-f-i)+"px"},$={accent:"--tw-accent",onAccent:"--tw-on-accent",base:"--tw-base",dropdownBg:"--tw-dropdown-bg",surface:"--tw-surface",surfaceHover:"--tw-surface-hover",surfaceActive:"--tw-surface-active",border:"--tw-border",borderHover:"--tw-border-hover",selection:"--tw-selection",title:"--tw-text-root",section:"--tw-text-section",text:"--tw-text-primary",label:"--tw-text-label",textMuted:"--tw-text-secondary",textFaint:"--tw-text-tertiary",focus:"--tw-text-focus",success:"--tw-success",danger:"--tw-danger",shadow:"--tw-shadow-dropdown",shadowPanel:"--tw-shadow-panel",shadowPanelLifted:"--tw-shadow-panel-lifted",font:"--tw-font-sans",fontMono:"--tw-font-mono",radius:"--tw-radius",density:"--tw-row-height"},H=new Set(["radius","density"]),b=t=>(t/=255,t<=.03928?t/12.92:((t+.055)/1.055)**2.4),X=t=>{t=String(t).trim();let e=/^#([0-9a-f]{3})$/i.exec(t);if(e)return e[1].split("").map(n=>parseInt(n+n,16));if(e=/^#([0-9a-f]{6})$/i.exec(t),e)return[0,2,4].map(n=>parseInt(e[1].slice(n,n+2),16));if(e=/^rgba?\(([^)]+)\)/i.exec(t),e){let n=e[1].split(/[\s,/]+/).filter(Boolean).map(parseFloat);return[n[0],n[1],n[2]]}return null},_=t=>{let e=X(t);if(!e||e.some(r=>!Number.isFinite(r)))return"#ffffff";let n=.2126*b(e[0])+.7152*b(e[1])+.0722*b(e[2]);return 1.05/(n+.05)>=(n+.05)/.0571?"#ffffff":"#161616"},st=t=>{if(!t||typeof t!="object")return null;let e={};for(let[n,r]of Object.entries(t)){if(n.startsWith("--")){e[n]=String(r);continue}let i=$[n];i&&(e[i]=H.has(n)&&typeof r=="number"?`${r}px`:String(r))}return e["--tw-accent"]&&!e["--tw-on-accent"]&&(e["--tw-on-accent"]=_(e["--tw-accent"])),Object.keys(e).length?e:null},V=(t,e)=>{if(t){if(t._twAppliedVars)for(let n of t._twAppliedVars)t.style.removeProperty(n);if(t._twAppliedVars=e?Object.keys(e):null,e)for(let n in e)t.style.setProperty(n,e[n])}},B=(t,e)=>{let n=e?.closest('[data-tw-scheme="light"]')?"light":e?.closest('[data-tw-scheme="dark"]')?"dark":null;n?t.setAttribute("data-tw-scheme",n):t.removeAttribute("data-tw-scheme")},x=(t,e)=>{V(t,e?.closest(".tw-panel")?._twTheme),B(t,e)},h=null,at=()=>{h&&h()};function ct(t,e,n,r={}){let i=!1,o=null;n.classList.add("tw-portal"),n.addEventListener("pointerdown",u=>e.closest(".tw-panel")?._twEditPointer?.(u),!0),N(n);let s=()=>O(e,n,{width:r.width,fallbackH:r.fallbackH,gap:r.gap,align:r.align}),c=()=>{if(i){if(!t.isConnected)return a();s(),r.onReflow&&r.onReflow()}},w=u=>{!t.contains(u.target)&&!n.contains(u.target)&&a()},m=u=>{u.key==="Escape"&&i&&(a(),e.focus())},f=()=>x(n,t),d=u=>{u.every(v=>v.target===n)||f()},l=()=>{h&&h!==a&&h(),h=a,i=!0,t.classList.add("is-open"),e.setAttribute("aria-expanded","true"),document.body.appendChild(n),x(n,t),window.addEventListener("tw-retheme",f),typeof MutationObserver=="function"&&(o=new MutationObserver(d),o.observe(document.documentElement,{subtree:!0,attributes:!0,attributeFilter:["data-tw-scheme"]})),s(),requestAnimationFrame(()=>{n.classList.add("is-open"),r.onOpen&&r.onOpen(),s()}),requestAnimationFrame(function u(){if(i){if(!t.isConnected)return a();requestAnimationFrame(u)}}),setTimeout(()=>document.addEventListener("pointerdown",w,!0),0),document.addEventListener("keydown",m),window.addEventListener("scroll",c,!0),window.addEventListener("resize",c)},a=()=>{h===a&&(h=null),n.contains(document.activeElement)&&e.focus(),i=!1,t.classList.remove("is-open"),n.classList.remove("is-open"),e.setAttribute("aria-expanded","false"),document.removeEventListener("pointerdown",w,!0),document.removeEventListener("keydown",m),window.removeEventListener("scroll",c,!0),window.removeEventListener("resize",c),window.removeEventListener("tw-retheme",f),o&&(o.disconnect(),o=null),setTimeout(()=>{i||n.remove()},200)};return e.addEventListener("click",()=>i?a():l()),{open:l,close:a,isOpen:()=>i,reflow:c}}var lt=(t,e)=>{if(t=t.toLowerCase(),t.includes(e))return!0;if(e.length<3)return!1;let n=e.length,r=t.length,i=new Array(r+1).fill(0);for(let o=1;o<=n;o++){let s=[o];for(let c=1;c<=r;c++)s[c]=Math.min(i[c]+1,s[c-1]+1,i[c-1]+(e[o-1]===t[c-1]?0:1));i=s}return Math.min(...i)<=(e.length<6?1:2)},j=typeof matchMedia=="function"?matchMedia("(prefers-reduced-motion: reduce)"):{matches:!1},z=(t,e)=>{j.matches||typeof t.animate!="function"||(t.style.transformOrigin=e>0?"left center":"right center",t.animate([{transform:"scaleX(1)"},{transform:"scaleX(1.18)"},{transform:"scaleX(1)"}],{duration:300,easing:"cubic-bezier(0.22, 1, 0.36, 1)"}))},dt=(t,e,n)=>{let r=t.querySelector('[data-active="true"]');if(!r)return;let i=r.offsetLeft,o=r.offsetWidth,s=parseFloat(e.style.left);e.style.left=i+"px",e.style.width=o+"px",n&&Number.isFinite(s)&&s!==i&&z(e,i>s?1:-1)},ut=(t,e)=>t.forEach(n=>{let r=n.dataset.value===String(e);n.dataset.active=String(r),n.setAttribute("aria-checked",String(r)),n.tabIndex=r?0:-1}),ft=(t,e,n)=>{let r=A(t);return r.setAttribute("role","radio"),r.textContent=I(e),r.dataset.value=L(e),r._twVal=L(e),r.addEventListener("click",()=>n(r._twVal)),r},wt=(t,e,n,r=0)=>{switch(t){case"ArrowRight":return(e+1)%n;case"ArrowLeft":return(e-1+n)%n;case"ArrowDown":return r<0?-1:r?e+r<n?e+r:e:(e+1)%n;case"ArrowUp":return r<0?-1:r?e-r>=0?e-r:e:(e-1+n)%n;case"Home":return 0;case"End":return n-1}return-1},mt=(t,e)=>{let n=p("div",t),r=A("tw-trigger");r.setAttribute("aria-expanded","false");let i=p("span","tw-trigger-right");return r.append(k("span","tw-trigger-label",e),i),n.append(r),{root:n,trigger:r,right:i}};function D(){let t=null,e=0,n=0,r=0;return{show(i,o,s){t=p("div","tw-grab-guide tw-portal"),t.innerHTML='<span class="tw-grab-line"></span><span class="tw-grab-dot"></span><span class="tw-grab-arrow"></span><span class="tw-grab-bubble"></span>',e=o,n=i,r=s??i,t.children[1].style.cssText=`left:${i}px;top:${e}px`,document.body.appendChild(t)},move(i,o){t&&(t.children[0].style.cssText=`left:${Math.min(n,i)}px;top:${e}px;width:${Math.abs(i-n)}px`,t.children[2].style.cssText=`left:${i}px;top:${e}px;transform:translate(-50%,-50%) scaleX(${i>=n?1:-1})`,t.children[3].style.cssText=`left:${r}px;top:${e-16}px`,t.children[3].textContent=o)},hide(){t&&(t.remove(),t=null)}}}function G(t,e,n,r,i,o){let s=0,c=0,w=null,m=1,f=D();t.addEventListener("pointerdown",l=>{if(l.button!==0||w!==null)return;l.preventDefault(),w=l.pointerId,s=l.clientX,c=r(),m=1,t.classList.add("is-dragging");try{t.setPointerCapture(l.pointerId)}catch{}let a=e.getBoundingClientRect();f.show(l.clientX,a.top+a.height/2,a.left+a.width/2),f.move(l.clientX,o())}),t.addEventListener("pointermove",l=>{if(l.pointerId!==w)return;if(l.buttons===0){d(l);return}let a=l.shiftKey?10:l.altKey?.1:1;a!==m&&(m=a,s=l.clientX,c=r()),i(c+(l.clientX-s)*n*a),f.move(l.clientX,o())});let d=l=>{w===null||l.pointerId!==w||(w=null,t.classList.remove("is-dragging"),f.hide())};t.addEventListener("pointerup",d),t.addEventListener("pointercancel",d),t.addEventListener("lostpointercapture",d)}function pt(t,e){let n=Number.isFinite(+t.step)&&+t.step>0?+t.step:1,r=E(n),i=+t.min,o=+t.max;if(Number.isFinite(i)&&Number.isFinite(o)&&o<i){let a=i;i=o,o=a}let s=a=>{let u=F(a,Number.isFinite(i)?i:0,n);return t.soft||(Number.isFinite(i)&&(u=Math.max(i,u)),Number.isFinite(o)&&(u=Math.min(o,u))),u},c=s(Number.isFinite(+t.value)?+t.value:0),w=p("div",t.row?"tw-row":"tw-field"),m=p("div","tw-num-wrap"),f=p("span","tw-num-grab",W);f.setAttribute("aria-hidden","true"),f.title="Drag to adjust";let d=p("input","tw-num");d.type="text",d.inputMode="decimal",d.setAttribute("aria-label",t.label),d.value=c.toFixed(r),R(d),m.append(f,d),w.append(k("span",t.row?"tw-row-label":"tw-field-label",t.label),m);let l=(a,u=!0)=>{a=+a,Number.isFinite(a)&&(c=s(a),d.value=c.toFixed(r),u&&e&&e(c))};return d.addEventListener("change",()=>{let a=parseFloat(d.value);l(isNaN(a)?c:a)}),d.addEventListener("keydown",a=>{a.key==="Enter"&&d.blur()}),G(f,m,n,()=>c,l,()=>d.value),{el:w,set:a=>l(a,!1),get:()=>c}}var W='<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" aria-hidden="true"><path d="M6 4v8M10 4v8"/></svg>',ht=t=>({el:t,set:()=>{},get:()=>{}}),C={},vt=(t,e)=>{C[t]=e},bt=t=>C[t];export{S as a,g as b,K as c,E as d,F as e,U as f,Y as g,L as h,I as i,p as j,Z as k,A as l,k as m,J as n,Q as o,N as p,tt as q,et as r,nt as s,R as t,T as u,rt as v,it as w,ot as x,O as y,st as z,V as A,B,x as C,at as D,ct as E,lt as F,j as G,dt as H,ut as I,ft as J,wt as K,mt as L,pt as M,ht as N,vt as O,bt as P};
@@ -0,0 +1 @@
1
+ import{c as a,d as b,e as c,f as d}from"./chunk-EVLD7DUH.js";import"./chunk-GJESM23Q.js";export{a as CHECKER,c as createPickerBody,d as oklchStr,b as parseColor};
@@ -0,0 +1 @@
1
+ import{A as Jt,B as he,C as Gt,D as ge,E as Ut,F as jt,G as ye,H as we,I as Zt,J as Qt,K as te,M as ve,N as Bt,O as st,P as Dt,a as Wt,b as $,c as ce,d as de,e as pe,f as xt,g as zt,h as kt,i as ue,j as w,l as ut,m as J,p as fe,q as Vt,r as It,s as me,t as Rt,y as be,z as Kt}from"./chunk-GJESM23Q.js";var ee={interval:()=>import("./interval-7OUK7M7J.js"),color:()=>import("./colour-W46T6NIC.js"),gradient:()=>import("./gradient-YEKTFEP4.js"),tabs:()=>import("./tabs-CGHJ2VS2.js"),image:()=>import("./image-VKNBVMVK.js"),fpsgraph:()=>import("./monitor-CY7CABK6.js"),monitor:()=>import("./monitor-CY7CABK6.js"),spring:()=>import("./spring-Z2SKXUVV.js"),cubicbezier:()=>import("./bezier-ZSQNFANZ.js"),point:()=>import("./point-23BHLSGI.js"),plot:()=>import("./plot-X5IZM3QU.js")},$t={},qe=t=>Dt(t)||!ee[t]?null:$t[t]||($t[t]=ee[t]().catch(e=>{throw delete $t[t],console.error(`[tweaks] control chunk "${t}" failed to load:`,e),e})),ne=(t,e=new Set)=>{for(let s of t)if(s&&(ee[s.type]&&e.add(s.type),s.children&&ne(s.children,e),s.pages))for(let n of s.pages)ne(n.children,e);return e},Ne=t=>{let e=[...ne(t)].map(qe).filter(Boolean);return e.length?Promise.all(e):null};function Ht(t,e,s=0){if(t==="__proto__"||t==="constructor"||t==="prototype")return null;let n=He(t,e,s);return n&&e&&typeof e=="object"&&(typeof e.render=="function"&&(n.render=e.render),e.disabled!=null&&(n.disabled=e.disabled),e.hint!=null&&(n.hint=String(e.hint))),n}var Lt=t=>t&&typeof t=="object",re=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),xe=(t,e)=>t!==e&&!(Lt(t)&&Lt(e)&&JSON.stringify(t)===JSON.stringify(e)),ke=(t,e,s)=>Array.isArray(t.options)&&{type:"radiogrid",key:e,label:s,options:t.options,value:t.value??kt(t.options[0]),cols:t.cols},Le={slider:(t,e,s)=>{let n=t.min??0,r=t.max??1;return{type:"slider",key:e,label:s,value:t.value??n,min:n,max:r,step:t.step??xt(n,r),soft:t.soft}},number:(t,e,s)=>({type:"number",key:e,label:s,value:t.value??0,min:t.min,max:t.max,step:t.step??1,soft:t.soft}),checkbox:(t,e,s)=>({type:"checkbox",key:e,label:s,value:!!t.value}),radiogrid:ke,segmented:ke,list:(t,e,s)=>Array.isArray(t.options)&&{type:"list",key:e,label:s,options:t.options,value:t.value??kt(t.options[0])},color:(t,e,s)=>({type:"color",key:e,label:t.label||s,value:t.value}),text:(t,e,s)=>({type:"text",key:e,label:s,value:t.value??"",rows:t.rows,placeholder:t.placeholder}),interval:(t,e,s)=>{let n=t.min??0,r=t.max??1;return{type:"interval",key:e,label:s,value:(Array.isArray(t.value)?t.value:[n,r]).map(Number),min:n,max:r,step:t.step??xt(n,r)}},spring:(t,e,s)=>{let n=Lt(t.value)?t.value:t;return{type:"spring",key:e,label:s,value:{stiffness:n.stiffness??300,damping:n.damping??26,mass:n.mass??1}}},cubicbezier:(t,e,s)=>({type:"cubicbezier",key:e,label:s,value:Array.isArray(t.value)&&t.value.length===4?t.value.map(Number):[.25,.1,.25,1]}),point:(t,e,s)=>Array.isArray(t.components)&&{type:"point",key:e,label:s,components:t.components,pad:t.pad,invertY:t.invertY,value:Object.fromEntries(t.components.map(n=>[n.key,n.value??0]))},gradient:(t,e,s)=>({type:"gradient",key:e,label:s,value:t.value??t.stops??null}),image:(t,e,s)=>({type:"image",key:e,label:s,value:t.value||""}),plot:(t,e,s)=>{let n=t.expr!=null?String(t.expr):typeof t.fn=="function"?"":"sin(x)";return{type:"plot",key:e,label:s,value:n,expr:n,fn:typeof t.fn=="function"?t.fn:null,xMin:t.xMin??t.min??-10,xMax:t.xMax??t.max??10,yMin:t.yMin,yMax:t.yMax,samples:t.samples,editable:t.editable}},fpsgraph:(t,e,s)=>({type:"fpsgraph",key:e,label:t.label||s}),monitor:(t,e,s)=>({type:"monitor",key:e,label:s,get:t.get,value:t.value,graph:t.graph,view:t.view,min:t.min,max:t.max,interval:t.interval,rows:t.rows,decimals:t.decimals}),buttongroup:(t,e,s)=>({type:"buttongroup",key:e,label:s,buttons:t.buttons}),separator:(t,e,s)=>({type:"separator",key:e,label:s}),tabs:(t,e,s,n)=>{if(!t.pages||typeof t.pages!="object")return!1;let r=new Set;return{type:"tabs",key:e,label:s,pages:Object.entries(t.pages).map(([o,b])=>{let k=o.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"tab",g=k,y=2;for(;r.has(g);)g=`${k}-${y++}`;return r.add(g),{key:g,title:o,children:Object.entries(b).map(([L,v])=>Ht(L,v,(n||0)+1)).filter(Boolean)}})}}};function He(t,e,s=0){if(s>64)return null;let n=Wt(t);if(Lt(e)&&!Array.isArray(e)&&re(Le,e.type)){let r;try{r=Le[e.type](e,t,n,s)}catch(o){return console.error(`[tweaks] malformed "${e.type}" schema value for "${t}" \u2014 control skipped:`,o),null}if(r)return r}if(Array.isArray(e)&&Array.isArray(e[0])&&e[0].length===2&&typeof e[0][0]=="number"){let r=Number.isFinite(+e[1])?+e[1]:+e[0][0],o=Number.isFinite(+e[2])?+e[2]:+e[0][1];return{type:"interval",key:t,label:n,value:e[0].map(Number),min:r,max:o,step:e[3]??xt(r,o)}}if(Array.isArray(e)&&e.length<=4&&typeof e[0]=="number"){let r=e[0],[o,b]=zt(r),k=e.length>1?e[1]:o,g=e.length>2?e[2]:b;return{type:"slider",key:t,label:n,value:r,min:k,max:g,step:e[3]??xt(k,g)}}if(typeof e=="number"){let[r,o]=zt(e);return{type:"slider",key:t,label:n,value:e,min:r,max:o,step:xt(r,o)}}return typeof e=="boolean"?{type:"checkbox",key:t,label:n,value:e}:Array.isArray(e)?{type:"list",key:t,label:n,options:e,value:kt(e[0])}:Lt(e)&&typeof e.action=="function"?{type:"button",key:t,label:e.label||n,action:e.action}:Lt(e)&&Array.isArray(e.options)?{type:"list",key:t,label:n,options:e.options,value:e.value??kt(e.options[0])}:ce(e)?{type:"color",key:t,label:n,value:e}:typeof e=="string"?{type:"text",key:t,label:n,value:e}:Lt(e)?{type:"folder",key:t,label:n,children:Object.entries(e).filter(([r,o])=>!(r==="render"&&typeof o=="function")&&!((r==="disabled"||r==="hint")&&o!=null)).map(([r,o])=>Ht(r,o,s+1)).filter(Boolean)}:null}var Xe=3,Ee=32,Ae=200,Se=8;function Ye(t,e){let s=t.label,n=+t.min,r=+t.max,o=+t.step;if(Number.isFinite(n)||(n=0),Number.isFinite(r)||(r=n+100),r<n){let a=n;n=r,r=a}(!(o>0)||o>r-n)&&(o=xt(n,r));let b=(r-n)/o<=6,k=Number.isFinite(+t.value)?+t.value:n,g=t.soft&&!b?k:$(k,n,r),y=0,L=de(o),v=w("div","tw-slider-wrap"),p=w("div","tw-slider"),V=w("div","tw-slider-hashmarks"),m=w("div","tw-slider-fill"),S=w("div","tw-slider-handle"),X=J("span","tw-slider-label",s),M=w("span","tw-slider-value");p.append(V,m,S,X,M),v.append(p),p.tabIndex=0,p.setAttribute("role","slider"),p.setAttribute("aria-label",s),p.setAttribute("aria-valuemin",String(n)),p.setAttribute("aria-valuemax",String(r));let rt=a=>pe(a,n,o),Et=b?Array.from({length:Math.max(0,Math.round((r-n)/o)-1)},(a,E)=>(E+1)*o/(r-n)*100):[];for(let a of Et){let E=w("div","tw-slider-hashmark");E.style.left=a+"%",V.append(E)}let G=()=>{let a=$((g-n)/(r-n||1)*100,0,100),E=y?` + ${y.toFixed(1)}px`:"",_=`${a}%${E}`;m.style.width=y?`calc(${_})`:a+"%",S.style.left=`max(5px, calc(${_} - 9px))`;let H=rt(g),W=H.toFixed(L);M.textContent=W,p.setAttribute("aria-valuenow",String(H)),p.setAttribute("aria-valuetext",W);let vt=v.offsetWidth;if(vt){let c=Math.max(5,a/100*vt+y-9),A=0,x=X.offsetLeft,T=x+X.offsetWidth,d=M.offsetLeft,i=d+M.offsetWidth,f=c<T&&c+3>x,u=c<i+A&&c+3>d-A;p.classList.toggle("is-dodge",f||u)}};G();let N=null,lt=1,et=null,ct=!0,h,B=null,ot=null,At="width 0.34s cubic-bezier(0.34,1.2,0.64,1)",yt="left 0.34s cubic-bezier(0.34,1.2,0.64,1), opacity 0.15s, transform 0.2s cubic-bezier(0.22,1,0.36,1)",ft=.2,K=a=>{if(!N)return g;let E=v.offsetWidth||N.width,_=$((a-N.left)/lt/E,0,1);return $(n+_*(r-n),n,r)},it=a=>{let E=0;a<N.left?E=-Se*Math.sqrt(Math.min(Math.max(0,N.left-a-Ee)/Ae,1)):a>N.right&&(E=Se*Math.sqrt(Math.min(Math.max(0,a-N.right-Ee)/Ae,1))),p.style.width=`calc(100% + ${Math.abs(E)}px)`,p.style.transform=E<0?`translateX(${E}px)`:""},nt=(a,E=!0)=>{a=+a,Number.isFinite(a)&&(g=b?$(rt(a),n,r):t.soft?a:$(a,n,r),G(),E&&e(rt(g)))},Y=Math.max(1,Math.round((r-n)/o)),mt=.2,Ot=.3,Pt=520,dt=27,bt=a=>(a-n)/o,I=0,U=0,Z=0,pt=!1,St=null,Ct=g,D=0,q=()=>{Z&&cancelAnimationFrame(Z),Z=0,D=0},Q=a=>{if(!p.isConnected){q();return}let E=D?Math.min((a-D)/1e3,.05):1/60;D=a;let _=v.offsetWidth||N&&N.width||1,H=bt($(Ct,n,r)),W=$(Math.round(H+mt),0,Y),vt=pt?W+Ot*$(H-W,-.5,.5):W,tt=E,Mt=1/240;for(;tt>1e-4;){let c=Math.min(Mt,tt);tt-=c;let A=Pt*(vt-I)-dt*U;U+=A*c,I+=U*c,I<0&&(I=0,U=0),I>Y&&(I=Y,U=0)}y=(I-W)*o/(r-n||1)*_,g=$(n+W*o,n,r),G(),W!==St&&(St=W,e(rt(g))),!pt&&Math.abs(U)<.004&&Math.abs(I-W)<.004?(I=W,U=0,y=0,G(),q(),p.classList.remove("is-active")):Z=requestAnimationFrame(Q)},Tt=a=>{I=bt(g),U=0,pt=!0,St=Math.round(bt(g)),Ct=K(a),Z||(Z=requestAnimationFrame(Q))};p.addEventListener("pointerdown",a=>{if(!M.classList.contains("is-editing")&&!(a.button!==0||et)){a.preventDefault(),p.focus({focusVisible:!1}),ot=a.pointerId;try{a.target.setPointerCapture(a.pointerId)}catch{}clearTimeout(h),p.style.transition="",et={x:a.clientX,y:a.clientY},ct=!0,p.classList.add("is-active"),N=v.getBoundingClientRect(),lt=N.width/(v.offsetWidth||N.width),b?(m.style.transition="",S.style.transition="",Tt(a.clientX)):(m.style.transition=At,S.style.transition=yt,nt(K(a.clientX)))}}),p.addEventListener("pointermove",a=>{if(!(!et||a.pointerId!==ot)){if(a.buttons===0){wt();return}if(ct&&Math.hypot(a.clientX-et.x,a.clientY-et.y)>Xe&&(ct=!1,p.classList.add("is-dragging"),b||(m.style.transition="",S.style.transition="")),!ct)if(it(a.clientX),b)Ct=K(a.clientX);else{let E;if(a.altKey){B||(B={x:a.clientX,v:g});let _=v.offsetWidth||N.width;E=$(B.v+(a.clientX-B.x)/_*(r-n)*ft,n,r)}else B=null,E=K(a.clientX);nt(E)}a.clientX>=N.left&&a.clientX<=N.right&&(p.style.width="",p.style.transform="")}});let wt=a=>{!et||a&&a.pointerId!==ot||(b?(pt=!1,p.classList.remove("is-dragging"),Z||(Z=requestAnimationFrame(Q))):(h=setTimeout(()=>{m.style.transition="",S.style.transition=""},360),p.classList.remove("is-active","is-dragging")),p.style.transition="width 0.35s cubic-bezier(0.22,1,0.36,1), transform 0.35s cubic-bezier(0.22,1,0.36,1)",p.style.width="",p.style.transform="",setTimeout(()=>{p.style.transition=""},360),et=null,B=null,ot=null)};p.addEventListener("pointerup",wt),p.addEventListener("pointercancel",wt),p.addEventListener("lostpointercapture",wt),me(p,G),Vt(G),It(p,[[window,"resize"]],G),p.addEventListener("keydown",a=>{b&&(q(),y=0);let E=a.shiftKey?10:1,_=(r-n)/10||o*10,H=g;switch(a.key){case"ArrowRight":case"ArrowUp":H=g+o*E;break;case"ArrowLeft":case"ArrowDown":H=g-o*E;break;case"PageUp":H=g+_;break;case"PageDown":H=g-_;break;case"Home":H=n;break;case"End":H=r;break;default:return}a.preventDefault(),nt($(H,n,r))});let Nt;return M.addEventListener("mouseenter",()=>{Nt=setTimeout(()=>M.classList.add("is-editable"),800)}),M.addEventListener("mouseleave",()=>{clearTimeout(Nt),M.classList.contains("is-editing")||M.classList.remove("is-editable")}),M.addEventListener("pointerdown",a=>{a.pointerType&&a.pointerType!=="mouse"?(M.classList.add("is-editable"),a.stopPropagation()):M.classList.contains("is-editable")&&a.stopPropagation()}),M.addEventListener("click",()=>{if(!M.classList.contains("is-editable"))return;let a=w("input","tw-slider-input");a.type="text",a.inputMode="decimal",a.value=rt(g).toFixed(L),M.classList.add("is-editing"),M.replaceWith(a),a.focus(),a.select();let E=()=>{let _=parseFloat(a.value);isNaN(_)||nt(t.soft?_:$(_,n,r)),a.replaceWith(M),M.classList.remove("is-editing","is-editable")};a.addEventListener("pointerdown",_=>_.stopPropagation()),a.addEventListener("blur",E),a.addEventListener("keydown",_=>{_.key==="Enter"?E():_.key==="Escape"&&(a.replaceWith(M),M.classList.remove("is-editing","is-editable"))})}),{el:v,set:a=>nt(a,!1),get:()=>rt(g)}}function We(t,e,s,n){let r=w("div","tw-seg");r.setAttribute("role","radiogroup"),n&&r.setAttribute("aria-label",n);let o=w("div","tw-seg-pill");r.append(o);let b=t.map(L=>{let v=Qt("tw-seg-btn",L,p=>y(p));return r.append(v),v}),k=L=>we(r,o,L),g=()=>{Zt(b,e),k(!0)},y=(L,v=!0)=>{e=L,g(),v&&s(L)};return r.addEventListener("keydown",L=>{let v=b.findIndex(V=>V.dataset.value===String(e));if(v<0)return;let p=te(L.key,v,b.length);p<0||(L.preventDefault(),y(b[p]._twVal),b[p].focus())}),g(),Vt(()=>{k(),r.classList.add("is-ready")}),{el:r,set:L=>y(L,!1),get:()=>e}}function ze(t,e){let s=w("div","tw-row"),n=We([{value:"off",label:"Off"},{value:"on",label:"On"}],t.value?"on":"off",r=>e(r==="on"),t.label);return s.append(J("span","tw-row-label",t.label),n.el),{el:s,set:r=>n.set(r?"on":"off"),get:()=>n.get()==="on"}}function Ve(t,e){let s=t.options||[],n=Math.min(3,Math.max(2,t.cols||(s.length<=3?s.length:s.length===4?2:3))),r=w("div","tw-radiogrid"),o=w("div","tw-radiogrid-grid");o.style.setProperty("--tw-rg-cols",n),o.setAttribute("role","radiogroup"),o.setAttribute("aria-label",t.label);let b=t.value??kt(s[0]),k=s.map(L=>{let v=Qt("tw-radiogrid-btn",L,p=>y(p));return o.append(v),v}),g=()=>Zt(k,b),y=(L,v=!0)=>{b=L,g(),v&&e(L)};return o.addEventListener("keydown",L=>{let v=k.findIndex(V=>V.dataset.value===String(b));if(v<0)return;let p=te(L.key,v,k.length,n);p<0||(L.preventDefault(),p!==v&&(y(k[p]._twVal),k[p].focus()))}),g(),r.append(J("span","tw-radiogrid-label",t.label),o),{el:r,set:L=>y(L,!1),get:()=>b}}var Ke='<svg class="tw-select-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>';function Je(t,e){let s=t.value,n=t.options.map(m=>({value:kt(m),label:ue(m)})),r=w("div","tw-select"),o=ut("tw-select-trigger");o.setAttribute("aria-haspopup","listbox"),o.setAttribute("aria-expanded","false");let b=w("span","tw-select-right"),k=w("span","tw-select-value");b.append(k),b.insertAdjacentHTML("beforeend",Ke),o.append(J("span","tw-select-label",t.label),b);let g=w("div","tw-select-dropdown");g.setAttribute("role","listbox");let y=n.map(m=>{let S=ut("tw-select-option");return S.setAttribute("role","option"),S.textContent=m.label,S.dataset.value=m.value,S.addEventListener("click",()=>{v(m.value),p.close()}),g.append(S),S});r.append(o,g);let L=()=>{k.textContent=(n.find(m=>m.value===s)||{}).label??s,y.forEach(m=>{let S=m.dataset.value===String(s);m.dataset.selected=String(S),m.setAttribute("aria-selected",String(S))})},v=(m,S=!0)=>{s=m,L(),S&&e(m)},p=Ut(r,o,g,{width:"match",fallbackH:200,gap:4,onOpen:()=>(y.find(m=>m.dataset.value===String(s))||y[0])?.focus()});o.addEventListener("keydown",m=>{!p.isOpen()&&(m.key==="ArrowDown"||m.key==="ArrowUp")&&(m.preventDefault(),p.open())}),g.addEventListener("keydown",m=>{let S=y.indexOf(document.activeElement),X=S;if(m.key==="ArrowDown")X=S<0?0:Math.min(y.length-1,S+1);else if(m.key==="ArrowUp")X=S<0?y.length-1:Math.max(0,S-1);else if(m.key==="Home")X=0;else if(m.key==="End")X=y.length-1;else return;m.preventDefault(),y[X]?.focus()});let V=m=>{p.isOpen()&&!r.contains(m.relatedTarget)&&!g.contains(m.relatedTarget)&&p.close()};return o.addEventListener("focusout",V),g.addEventListener("focusout",V),L(),{el:r,set:m=>v(m,!1),get:()=>s}}function Ge(t){let e=J("button","tw-button",t.label);return e.type="button",e.addEventListener("click",()=>t.action&&t.action()),Bt(e)}function Ue(t){let e=w("div","tw-row tw-buttongroup");t.label&&e.append(J("span","tw-row-label",t.label));let s=w("div","tw-buttongroup-btns"),n=Array.isArray(t.buttons)?t.buttons.map(r=>[r.label,r.action]):Object.entries(t.buttons||{});for(let[r,o]of n){let b=J("button","tw-buttongroup-btn",r);b.type="button",b.addEventListener("click",()=>typeof o=="function"&&o()),s.append(b)}return e.append(s),Bt(e)}var Ze=()=>Bt(w("div","tw-separator"));function Qe(t,e){let s=t.value??"",n=t.rows>0,r=w("div",n?"tw-row tw-row-multiline":"tw-row"),o=w(n?"textarea":"input",n?"tw-text tw-textarea":"tw-text");return n?o.rows=t.rows:o.type="text",o.value=s,Rt(o),t.placeholder&&(o.placeholder=t.placeholder),o.addEventListener("input",()=>{s=o.value,e(s)}),r.append(J("span","tw-row-label",t.label),o),{el:r,set:b=>{s=b==null?"":String(b),o.value=s},get:()=>s}}var tn=(t,e)=>ve({...t,row:!0},e);function oe(t){let e=w("div","tw-folder"),s=ut("tw-folder-header");s.setAttribute("aria-expanded","true"),s.append(J("span","tw-folder-title",t.label)),s.insertAdjacentHTML("beforeend",an);let n=w("div","tw-folder-body"),r=w("div","tw-controls");return n.append(r),e.append(s,n),s.addEventListener("click",()=>{let o=e.classList.toggle("is-collapsed");s.setAttribute("aria-expanded",o?"false":"true")}),{el:e,body:r}}var en=new Set(["button","fpsgraph","monitor","buttongroup","separator"]);function se(t,e){let s=Dt(t.type);if(!s)return null;try{return s(t,e)}catch(n){return console.error("[tweaks] control failed to build:",t&&t.type,n),null}}var nn='<svg class="tw-toolbar-btn__copy" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="9" y="9" width="13" height="13" rx="2"/><path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"/></svg>',sn='<svg class="tw-toolbar-btn__check" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 6 9 17l-5-5"/></svg>',rn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8M3 3v5h5"/></svg>',on='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="11" cy="11" r="7"/><path d="m21 21-4.3-4.3"/></svg>',an='<svg class="tw-chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m6 9 6 6 6-6"/></svg>',ln='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="m12 2 9 5-9 5-9-5 9-5Z"/><path d="m3 12 9 5 9-5"/><path d="m3 17 9 5 9-5"/></svg>',cn='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M18 6 6 18M6 6l12 12"/></svg>',Ce='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg>',qt=(t,e,s)=>{let n=ut("tw-toolbar-btn"+(t?" "+t:""),e);return n.title=s,n.setAttribute("aria-label",s),n},Fe=()=>qt("tw-toolbar-btn--swap",`<span class="tw-toolbar-btn__icons">${nn}${sn}</span>`,"Copy values"),Ie=()=>qt("tw-toolbar-btn--reset",rn,"Reset"),Re=t=>{t.classList.add("is-copied"),clearTimeout(t._t),t._t=setTimeout(()=>t.classList.remove("is-copied"),1400)},je=t=>{let e=t.querySelector("svg");t._spinSettle||(t._spinSettle=()=>{clearTimeout(t._t),t.classList.remove("is-spinning"),e.style.transition="none",e.style.setProperty("--tw-spin","0deg"),e.getBoundingClientRect(),e.style.transition=""},e.addEventListener("transitionend",n=>{n.propertyName==="transform"&&t.classList.contains("is-spinning")&&performance.now()-t._spinT>250&&t._spinSettle()})),t._spinT=performance.now(),e.style.setProperty("--tw-spin",`${(parseFloat(e.style.getPropertyValue("--tw-spin"))||0)-360}deg`),t.classList.add("is-spinning"),clearTimeout(t._t);let s=()=>{e.getAnimations&&e.getAnimations().length?t._t=setTimeout(s,250):t._spinSettle()};t._t=setTimeout(s,600)},ht=null,Te=0;function gt(t,e){ht||(ht=w("div","tw-toast tw-portal"),ht.setAttribute("role","status"),document.body.appendChild(ht)),ht.textContent=t,Gt(ht,e),ht.classList.add("is-open"),clearTimeout(Te),Te=setTimeout(()=>ht.classList.remove("is-open"),1600)}var z=null,ie=0,Me=null,ae=t=>{t.key==="Escape"&&le()},le=()=>{clearTimeout(ie),document.removeEventListener("keydown",ae),z&&z.classList.remove("is-open")};function dn(t,e){z||(z=w("div","tw-tip tw-portal"),z.setAttribute("role","tooltip"),document.body.appendChild(z)),clearTimeout(ie),z.textContent=e,Gt(z,t);let s=z.classList.contains("is-open");z.style.visibility="hidden",z.classList.add("is-open"),be(t,z,{align:"center",prefer:"above",gap:8}),z.style.visibility="",document.addEventListener("keydown",ae),Me=t,s||requestAnimationFrame(function n(){if(z.classList.contains("is-open")){if(!Me.isConnected)return le();requestAnimationFrame(n)}})}function _e(){z&&(ie=setTimeout(()=>{z.classList.remove("is-open"),document.removeEventListener("keydown",ae)},80))}function Be(t,e){let s=t.querySelector(".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")||t,n=s.closest("button"),r=n?w("span","tw-hint",Ce):ut("tw-hint",Ce),o=()=>dn(r,e);if(n){r.setAttribute("aria-hidden","true");let b=n.getAttribute("aria-description");n.setAttribute("aria-description",b?`${b}. ${e}`:e)}else r.setAttribute("aria-label",e),r.addEventListener("focus",o),r.addEventListener("blur",_e),r.addEventListener("keydown",b=>{(b.key==="Enter"||b.key===" ")&&b.stopPropagation()});r.addEventListener("pointerenter",o),r.addEventListener("pointerleave",_e),r.addEventListener("pointerdown",b=>b.stopPropagation()),r.addEventListener("click",b=>{b.preventDefault(),b.stopPropagation()}),s.appendChild(r)}async function De(t){try{return await navigator.clipboard.writeText(t),!0}catch{}let e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.top="-9999px",document.body.appendChild(e),e.focus(),e.select();let s=!1;try{s=document.execCommand("copy")}catch{}return document.body.removeChild(e),s}st("slider",Ye);st("checkbox",ze);st("radiogrid",Ve);st("list",Je);st("button",Ge);st("buttongroup",Ue);st("separator",Ze);st("text",Qe);st("number",tn);st("folder",oe);function mn(t,e,s={}){let n=Object.entries(e).filter(([c])=>c!=="_last"||(console.warn('[tweaks] "_last" is reserved (the changed-key channel) \u2014 schema entry skipped'),!1)).map(([c,A])=>Ht(c,A)).filter(Boolean),r={},o=[],b=new Set,k=new Set,g=[],y=!1,L=!1,v=[],p=null,V=()=>{},m=()=>({}),S=()=>!1,X=()=>!1,M=()=>{},rt=()=>{},Et=()=>{},G=()=>{k.forEach(c=>{try{c(r,r._last)}catch(A){console.error("[tweaks] listener threw:",A)}}),V()},N=s.persist?`tw:${s.persist===!0?t:s.persist}`:null,lt=N?`${N}:presets`:null,et=c=>{try{return JSON.parse(localStorage.getItem(c)||"null")}catch{return null}},ct=(c,A)=>{try{localStorage.setItem(c,JSON.stringify(A))}catch{}},h=w("div","tw-panel");h.dataset.mode="inline",fe(h);let B=w("div","tw-header"),ot=ut("tw-header-toggle");ot.setAttribute("aria-expanded","true"),ot.append(J("span","tw-title",t));let At=w("div","tw-toolbar"),yt=Fe(),ft=Ie(),K=null;N&&(K=qt("",ln,"Presets"),K.setAttribute("aria-haspopup","menu"),K.setAttribute("aria-expanded","false"),At.append(K));let it=!!s.filter,nt=it?qt("",on,"Filter controls"):null,Y=it?w("input","tw-search"):null;it&&(Y.type="text",Y.placeholder="Filter\u2026",Y.spellcheck=!1,Y.setAttribute("aria-label","Filter controls"),Rt(Y),At.append(nt)),At.append(yt,ft),B.append(ot),it&&B.append(Y),s.toolbar!==!1&&B.append(At);for(let c of[yt,ft,K,nt])c&&(c.disabled=!0);let mt=!1;ot.addEventListener("click",()=>{if(mt){mt=!1;return}let c=h.classList.toggle("is-collapsed");ot.setAttribute("aria-expanded",c?"false":"true"),h.dataset.mode==="floating"&&setTimeout(()=>{h.dataset.mode==="floating"&&h.isConnected&&(Tt(),Q())},270)});let Ot=w("div","tw-body"),Pt=w("div","tw-controls");Ot.append(Pt),h.append(B,Ot);let dt=Kt(s.theme);Jt(h,dt),h._twTheme=dt;let bt=s.draggable!==!1,I=8,U=28,Z=()=>({maxX:Math.max(I,window.innerWidth-h.offsetWidth-I),maxY:Math.max(I,window.innerHeight-h.offsetHeight-I)}),pt=N?`${N}:pos`:null,St=(bt||s.floating)&&pt?et(pt):null,Ct=St||(typeof s.floating=="object"?s.floating:null)||{x:16,y:16},D=+Ct.x||16,q=+Ct.y||16,Q=()=>{h.style.left=D+"px",h.style.top=q+"px"},Tt=()=>{let{maxX:c,maxY:A}=Z();D=$(D,I,c),q=$(q,I,A)};(bt||s.floating)&&(s.floating||St)&&(h.dataset.mode="floating",Tt(),Q(),requestAnimationFrame(()=>{!y&&h.dataset.mode==="floating"&&h.isConnected&&(Tt(),Q())}));let wt=c=>{c.set(c.def),c.target[c.key]=c.get(),r._last=c.key,G()},Nt=(c,A)=>{let x=c.querySelector(".tw-slider-value")||c.querySelector(".tw-row-label, .tw-select-label, .tw-trigger-label, .tw-radiogrid-label, .tw-field-label")||c;x.classList.add("tw-resettable"),x.title="Double-click or hold to reset";let T=0,d=0,i=0,f=!1,u=()=>{T&&(clearTimeout(T),T=0,x.classList.remove("tw-reset-holding"))};x.addEventListener("pointerdown",l=>{l.stopPropagation(),f=!1,!(l.pointerType!=="touch"&&l.pointerType!=="pen")&&(d=l.clientX,i=l.clientY,x.classList.add("tw-reset-holding"),T=setTimeout(()=>{T=0,x.classList.remove("tw-reset-holding","is-editable"),f=!0,wt(A)},500))}),x.addEventListener("pointermove",l=>{T&&Math.abs(l.clientX-d)+Math.abs(l.clientY-i)>8&&u()}),x.addEventListener("pointerup",u),x.addEventListener("pointercancel",u),x.addEventListener("pointerleave",u),x.addEventListener("contextmenu",l=>{f&&l.preventDefault()}),x.addEventListener("click",l=>{f&&(l.preventDefault(),l.stopImmediatePropagation(),f=!1)},!0),x.addEventListener("dblclick",l=>{l.preventDefault(),l.stopPropagation(),wt(A)})},a=[],E=(c,A)=>{A.hint&&Be(c,A.hint),(A.render||A.disabled!=null)&&a.push({node:c,m:A})},_=[],H=[],W=(c,A,x,T=[],d=null)=>{for(let i of A){if(i.type==="tabs"){let l={};b.add(l),x[i.key]=l;let F=Dt("tabs"),R=F&&F(i);if(!R)continue;i.pages.forEach((C,j)=>{let O={};b.add(O),l[C.key]=O,W(R.bodies[j],C.children,O,[...T,i.key,C.key])}),E(R.el,i),c.append(R.el);continue}if(i.type==="folder"){let l={};b.add(l),x[i.key]=l;let F=oe(i),R=it?{el:F.el,label:i.label,body:F.body}:null;R&&H.push(R),W(F.body,i.children,l,[...T,i.key],R),E(F.el,i),c.append(F.el);continue}if(en.has(i.type)){let l=se(i,()=>{});l&&(it&&i.type!=="separator"&&_.push({el:l.el,label:i.label,folder:d}),E(l.el,i),c.append(l.el));continue}let f=se(i,l=>{xe(x[i.key],l)&&(x[i.key]=l,r._last=i.key,G())});if(!f)continue;re(x,i.key)&&f.set(x[i.key]),x[i.key]=f.get();let u={target:x,key:i.key,set:f.set,get:f.get,def:i.value,path:[...T,i.key]};o.push(u),Nt(f.el,u),E(f.el,i),it&&_.push({el:f.el,label:i.label,folder:d}),c.append(f.el)}},vt=()=>{if(y)return;if(W(Pt,n,r),a.length){let d=new Map;for(let u of o)d.has(u.key)||d.set(u.key,u);let i=u=>{let l=d.get(u);return l?l.target[l.key]:r[u]},f=()=>{for(let{node:u,m:l}of a)try{if(l.render&&u.classList.toggle("tw-cond-hidden",!l.render(i)),l.disabled!=null){let F=typeof l.disabled=="function"?l.disabled(i):l.disabled;u.classList.toggle("is-disabled",!!F),u.inert=!!F}}catch{}};k.add(f),f()}if(it){let d=f=>{let u=f.trim().toLowerCase();if(!u){_.forEach(l=>l.el.classList.remove("tw-filter-hidden")),H.forEach(l=>l.el.classList.remove("tw-filter-hidden"));return}for(let l of _){let F=l.folder&&jt(l.folder.label,u);l.el.classList.toggle("tw-filter-hidden",!(jt(l.label,u)||F))}for(let l of H.slice().reverse()){let F=[...l.body.children].some(R=>!R.classList.contains("tw-filter-hidden"));l.el.classList.toggle("tw-filter-hidden",!(jt(l.label,u)||F))}},i=()=>{h.classList.remove("is-searching"),Y.value="",d("")};nt.addEventListener("click",()=>{h.classList.toggle("is-searching")?(Y.focus(),Y.select()):i()}),Y.addEventListener("input",()=>d(Y.value)),Y.addEventListener("keydown",f=>{f.key==="Escape"&&(i(),nt.focus())})}let c=(d,i)=>i.reduce((f,u)=>f?.[u],d),A=function(d,i){return d==="_last"&&this===r?void 0:i},x=()=>JSON.parse(JSON.stringify(r,A)),T=(d,i=!0)=>{if(!(!d||typeof d!="object")){for(let f of o){let u=c(d,f.path);u!==void 0&&(f.set(u),f.target[f.key]=f.get())}r._last=void 0,i&&G()}};if(N){let d;V=()=>{clearTimeout(d),d=setTimeout(()=>ct(N,x()),150)},g.push(()=>clearTimeout(d)),T(et(N))}if(m=()=>{let d=lt?et(lt):null;return Object.assign(Object.create(null),d&&typeof d=="object"?d:{})},S=d=>{if(!lt||!d)return!1;let i=m();return i[d]=x(),ct(lt,i),!0},X=d=>{let i=m();return i[d]?(T(i[d]),!0):!1},M=d=>{if(!lt)return;let i=m();delete i[d],ct(lt,i)},bt||s.floating){if(bt){h.dataset.draggable="true";let C=w("span","tw-grabber");C.setAttribute("aria-hidden","true"),B.prepend(C)}let d=()=>{if(h.dataset.mode==="floating")return;let C=h.getBoundingClientRect();D=C.left,q=C.top,h.parentNode&&(p=w("span","tw-lift-slot"),p.style.width=C.width+"px",p.style.height=C.height+"px",p.setAttribute("aria-hidden","true"),h.before(p)),he(h,h),document.body.appendChild(h),h.dataset.mode="floating",Q()},i=null,f=0,u=0,l=0,F=0;B.addEventListener("pointerdown",C=>{if(!(C.button!==0||i!==null||C.target.closest(".tw-toolbar, input, textarea, select")))if(i=C.pointerId,f=C.clientX,u=C.clientY,mt=!1,h.classList.add("is-grabbing"),h.style.transition){let j=getComputedStyle(h);D=parseFloat(j.left)||D,q=parseFloat(j.top)||q,h.style.transition="",Q()}else h.style.transition=""}),B.addEventListener("pointermove",C=>{if(C.pointerId!==i)return;let j=C.clientX-f,O=C.clientY-u;if(!mt){if(Math.abs(j)+Math.abs(O)<4)return;mt=!0,d(),l=D,F=q;try{B.setPointerCapture(i)}catch{}h.classList.add("is-dragging")}let{maxX:at,maxY:Ft}=Z();D=$(l+j,I,at),q=$(F+O,I,Ft),Q()});let R=C=>{if(C.pointerId===i){try{B.releasePointerCapture(i)}catch{}if(i=null,mt){let{maxX:j,maxY:O}=Z();D<=I+U?D=I:D>=j-U&&(D=j),q<=I+U?q=I:q>=O-U&&(q=O),ye.matches||(h.style.transition="left 0.32s var(--tw-ease-spring), top 0.32s var(--tw-ease-spring)",setTimeout(()=>{h.style.transition=""},340)),Q(),pt&&ct(pt,{x:D,y:q})}h.classList.remove("is-dragging","is-grabbing")}};B.addEventListener("pointerup",R),B.addEventListener("pointercancel",R),B.addEventListener("lostpointercapture",R),g.push(It(h,[[window,"resize"]],()=>{h.dataset.mode==="floating"&&(Tt(),Q())}))}if(K){let d=w("div","tw-presets-menu"),i=w("div","tw-presets-save"),f=w("input","tw-presets-input");f.type="text",f.placeholder="Preset name\u2026",f.spellcheck=!1,f.setAttribute("aria-label","New preset name"),Rt(f);let u=J("button","tw-presets-savebtn","Save");u.type="button",i.append(f,u);let l=w("div","tw-presets-list");d.append(i,l);let F=()=>{let j=m(),O=Object.keys(j);if(l.replaceChildren(),!O.length)return l.append(J("div","tw-presets-empty","No presets yet"));for(let at of O){let Ft=w("div","tw-presets-row"),Xt=J("button","tw-presets-load",at);Xt.type="button",Xt.addEventListener("click",()=>{X(at),C.close(),gt(`Loaded \u201C${at}\u201D`,h)});let Yt=ut("tw-presets-del",cn);Yt.setAttribute("aria-label",`Delete preset ${at}`),Yt.addEventListener("click",$e=>{$e.stopPropagation(),M(at),F()}),Ft.append(Xt,Yt),l.append(Ft)}},R=()=>{let j=f.value.trim();if(!j){f.focus();return}S(j),f.value="",F(),gt(`Saved \u201C${j}\u201D`,h)},C=Ut(K,K,d,{width:208,fallbackH:160,gap:6,align:"end",onOpen:()=>{F(),f.focus()}});u.addEventListener("click",R),f.addEventListener("keydown",j=>{j.key==="Enter"&&R()})}if(yt.addEventListener("click",async()=>{await De(JSON.stringify(r,A,2))?(Re(yt),gt(`${t} values copied`,h)):gt("Copy failed",h)}),ft.addEventListener("click",()=>{if(je(ft),typeof s.onReset=="function")return s.onReset();o.forEach(d=>{d.set(d.def),d.target[d.key]=d.get()}),r._last=void 0,G()}),s.onEditStart||s.onEditEnd){let d=".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,f=()=>{document.removeEventListener("pointerup",f,!0),document.removeEventListener("pointercancel",f,!0),i&&(i=!1,s.onEditEnd&&s.onEditEnd())},u=l=>{i||!l.target.closest(d)||(i=!0,s.onEditStart&&s.onEditStart(),document.addEventListener("pointerup",f,!0),document.addEventListener("pointercancel",f,!0))};h.addEventListener("pointerdown",u),h._twEditPointer=u,g.push(f)}if(s.undo){let d=[x()],i=0,f=!1,u=0,l=()=>{u=0;let O=x();JSON.stringify(O)!==JSON.stringify(d[i])&&(d=d.slice(0,i+1),d.push(O),i=d.length-1)},F=()=>{f||(clearTimeout(u),u=setTimeout(l,350))},R=()=>{u&&(clearTimeout(u),l())};k.add(F);let C=O=>{f=!0,T(d[O]),f=!1,i=O};rt=()=>{R(),i>0&&C(i-1)},Et=()=>{R(),i<d.length-1&&C(i+1)};let j=()=>h.matches(":hover")||h.contains(document.activeElement);g.push(It(h,[[document,"keydown"]],O=>{if(!j()||!(O.metaKey||O.ctrlKey))return;let at=O.key.toLowerCase();at==="z"?(O.preventDefault(),O.shiftKey?Et():rt()):at==="y"&&(O.preventDefault(),Et())}))}L=!0;for(let[d,i]of v.splice(0))tt.set(d,i);for(let d of[yt,ft,K,nt])d&&(d.disabled=!1)},tt={el:h,params:r,on(c){return y?()=>{}:(k.add(c),()=>k.delete(c))},set(c,A){if(y)return;let x=String(c).split(".");if(x.some(u=>u==="__proto__"||u==="constructor"||u==="prototype"))return console.warn(`[tweaks] set("${c}") ignored \u2014 reserved key`);if(!L)return void v.push([String(c),A]);let T;if(x.length>1){let u=r;for(let l=0;l<x.length-1&&u;l++)u=u[x[l]],b.has(u)||(u=null);if(T=u&&o.find(l=>l.target===u&&l.key===x[x.length-1]),!T)return console.warn(`[tweaks] set("${c}") \u2014 no control at that path`)}else{let u=o.filter(l=>l.key===c);if(u.length>1)return console.warn(`[tweaks] set("${c}") is ambiguous \u2014 ${u.length} controls share that key; use a dotted path (e.g. "${u[0].path.join(".")}")`);T=u[0]}let d=T?T.target:r,i=T?T.key:c,f=d[i];if(T)T.set(A),d[i]=T.get();else{if(b.has(r[c]))return console.warn(`[tweaks] set("${c}") ignored \u2014 it's a folder/tabs group; set its children instead`);r[c]=A}xe(f,d[i])&&(r._last=i,G())},reset(){y||ft.click()},setTheme(c){if(!y){if(dt)for(let A in dt)h.style.removeProperty(A);dt=Kt(c),h._twTheme=dt,Jt(h,dt),window.dispatchEvent(new Event("tw-retheme"))}},savePreset:c=>!y&&S(c),loadPreset:c=>!y&&X(c),deletePreset:c=>{y||M(c)},presets:()=>y?[]:Object.keys(m()),undo:()=>{y||rt()},redo:()=>{y||Et()},destroy(){if(!y){y=!0,ge(),le();for(let c of g.splice(0))try{c()}catch{}k.clear(),p&&(p.remove(),p=null),h.remove()}}},Mt=Ne(n);return Mt?(tt.ready=h.ready=Mt.then(vt).then(()=>tt),tt.ready.catch(()=>{})):(vt(),tt.ready=h.ready=Promise.resolve(tt)),tt}var Oe={slider:t=>({value:P(t.value),min:P(t.min)??0,max:P(t.max)??100,step:P(t.step),soft:Pe(t.soft)}),checkbox:t=>t.options?{type:"radiogrid",options:_t(t.options),value:t.value,cols:P(t.cols)}:{value:t.checked==="true"},radiogrid:t=>({options:_t(t.options),value:t.value,cols:P(t.cols)}),list:t=>({options:_t(t.options),value:t.value}),color:t=>({value:t.value||"#7c5cff"}),button:(t,e,s)=>({action:()=>gt(`${s} pressed`,e)}),buttongroup:(t,e)=>({buttons:_t(t.buttons).map(s=>({label:s,action:()=>gt(`${s} pressed`,e)}))}),separator:()=>({}),number:t=>({value:P(t.value),min:P(t.min),max:P(t.max),step:P(t.step)}),text:t=>({value:t.value??"",placeholder:t.placeholder,rows:P(t.rows)}),image:t=>({value:t.value}),fpsgraph:t=>({label:t.label||"FPS"}),interval:t=>({value:t.value?t.value.split(",").map(Number):void 0,min:P(t.min),max:P(t.max),step:P(t.step)}),spring:t=>({stiffness:P(t.stiffness),damping:P(t.damping),mass:P(t.mass)}),cubicbezier:t=>({value:t.value?t.value.split(",").map(Number):void 0}),point:t=>{let e=(t.value||"").split(",").map(s=>parseFloat(s));return{components:_t(t.components||"X,Y").map((s,n)=>({key:s.toLowerCase(),label:s,value:isNaN(e[n])?0:e[n],step:P(t.step)??1,min:P(t.min),max:P(t.max)})),pad:Pe(t.pad),invertY:t.invertY==="true"}},plot:t=>({expr:t.expr,xMin:P(t.xmin),xMax:P(t.xmax),yMin:P(t.ymin),yMax:P(t.ymax),samples:P(t.samples),editable:t.editable!=="false"})},P=t=>t==null?void 0:+t,Pe=t=>t==="true"||t==="",_t=t=>(t||"").split(",").map(e=>e.trim()).filter(Boolean),pn=t=>{let e=t.dataset,s=e.tw;if(!re(Oe,s))return null;let n=e.label||Wt(e.key||s),r=Oe[s](e,t,n),o=Ht("v",{type:s,...r});return o&&(o.label=r.label||n),o};async function un(t=document){t.querySelectorAll('.tw-panel[data-mode="inline"]:not([data-tw-panel-bound])').forEach(n=>{let r=n.querySelector(":scope > .tw-header"),o=n.querySelector(":scope > .tw-controls");if(!r||!o)return;n.setAttribute("data-tw-panel-bound","");let b=w("div","tw-body");n.insertBefore(b,o),b.append(o);let k=r.querySelector(".tw-header-toggle"),g=r.querySelector(".tw-title");if(!k&&g&&(k=ut("tw-header-toggle"),g.replaceWith(k),k.append(g)),!!k&&(k.setAttribute("aria-expanded","true"),k.addEventListener("click",()=>{let y=n.classList.toggle("is-collapsed");k.setAttribute("aria-expanded",y?"false":"true")}),!r.querySelector(".tw-toolbar"))){let y=g&&g.textContent||"Panel",L=w("div","tw-toolbar"),v=Fe(),p=Ie();L.append(v,p),r.append(L);let V=()=>[...n.querySelectorAll("[data-tw]")].map(m=>m._tw).filter(m=>m&&m.ctrl.get()!==void 0);v.addEventListener("click",async()=>{let m={};for(let X of V())m[X.key]=X.ctrl.get();await De(JSON.stringify(m,null,2))?(Re(v),gt(`${y} values copied`,n)):gt("Copy failed",n)}),p.addEventListener("click",()=>{je(p);for(let m of V())m.ctrl.set(m.def),m.host.dataset.value=m.ctrl.get()})}}),t.querySelectorAll('[data-tw="folder"]:not([data-tw-bound])').forEach(n=>{n.setAttribute("data-tw-bound","");let r=oe({label:n.dataset.label||"Folder"});[...n.children].forEach(o=>r.body.append(o)),n.append(r.el)});let e=[...t.querySelectorAll("[data-tw]:not([data-tw-bound])")].map(n=>({host:n,meta:pn(n)})).filter(n=>n.meta);e.forEach(({host:n})=>n.setAttribute("data-tw-bound",""));let s=Ne(e.map(n=>n.meta));s&&await s.catch(()=>{});for(let{host:n,meta:r}of e){let o=se(r,b=>n.dataset.value=b);o&&(n.append(o.el),n.dataset.hint&&Be(o.el,n.dataset.hint),n._tw={ctrl:o,def:r.value,key:r.label,host:n})}}if(typeof document<"u"){let t=()=>un(document);document.readyState==="loading"?document.addEventListener("DOMContentLoaded",t):t()}export{un as enhance,mn as tweaks};
@@ -0,0 +1 @@
1
+ import{a as Y,b as P,c as z,d as L,e as U,f as V}from"./chunk-EVLD7DUH.js";import{E as j,L as K,O as N,b as p,j as g,l as D,u as X}from"./chunk-GJESM23Q.js";var st='<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" aria-hidden="true"><path d="M12 5v14M5 12h14"/></svg>',q=a=>a&&!Array.isArray(a)&&typeof a.interpolation=="string"?a.interpolation:null;function J(a){let C=[{color:"oklch(0.72 0.19 25)",pos:0},{color:"oklch(0.72 0.16 280)",pos:1}],s=((Array.isArray(a)?a:a&&Array.isArray(a.stops)?a.stops:null)||[]).map(c=>Array.isArray(c)?{color:String(c[0]),pos:p(+c[1]||0,0,1)}:c&&typeof c=="object"?{color:String(c.color),pos:p(+c.pos||0,0,1)}:null).filter(Boolean);return s.length>=2?s:C}function lt(a,C){let l=J(a.value),s=l[0],{root:c,trigger:Q,right:T}=K("tw-gradient",a.label||"Gradient"),R=g("span","tw-gradient-count"),F=g("span","tw-trigger-chip tw-gradient-preview");T.append(R,F);let k=g("div","tw-color-pop tw-gradient-pop"),H=g("div","tw-gradient-bar-row"),E=g("div","tw-gradient-bar"),I=g("div","tw-gradient-grad"),h=g("div","tw-gradient-rail");E.append(I,h);let m=D("tw-gradient-add",st);m.title="Add a stop after the selected one",m.setAttribute("aria-label","Add a colour stop after the selected one"),H.append(E,m);let v=()=>[...l].sort((t,o)=>t.pos-o.pos),W=()=>v().map(t=>`${t.color} ${(t.pos*100).toFixed(1)}%`).join(", "),O=()=>Y(u.mode()),Z=()=>`linear-gradient(in ${O()} to right, ${W()})`,d=()=>{let t=Z();I.style.background=t,F.style.background=`${t}, ${z}`},A=()=>{R.textContent=`${l.length} stop${l.length===1?"":"s"}`},_=()=>({stops:v().map(t=>({color:t.color,pos:+t.pos.toFixed(4)})),interpolation:O()}),w=()=>C(_()),x=t=>[...h.children].find(o=>o._stop===t),u=U({value:s.color,mode:P(q(a.value)||"oklab"),onMode:()=>{d(),w()}},t=>{s.color=t,x(s)?.style.setProperty("--stop",t),d(),w()});k.append(H,u.el),c.append(k);let tt=()=>{for(let t of h.children)t.dataset.sel=String(t._stop===s)},M=()=>{h.replaceChildren();for(let t of l){let o=D("tw-gradient-stop");o._stop=t,o.style.left=t.pos*100+"%",o.style.setProperty("--stop",t.color),o.dataset.sel=String(t===s),o.setAttribute("aria-label","Colour stop");let n=!1;X(o,{onDown:e=>{e.preventDefault(),e.stopPropagation(),o.focus({focusVisible:!1}),$(t,!1),n=!1},onMove:e=>{let r=h.getBoundingClientRect();t.pos=p((e.clientX-r.left)/(r.width||1),0,1),o.style.left=t.pos*100+"%",d(),w(),n=l.length>2&&(e.clientY<r.top-24||e.clientY>r.bottom+24),o.dataset.removing=String(n)},onEnd:()=>{n?B(t):o.dataset.removing="false"}}),o.addEventListener("dblclick",e=>{e.preventDefault(),B(t)}),o.addEventListener("keydown",e=>{let r=e.key==="ArrowLeft"?-1:e.key==="ArrowRight"?1:0;r&&(e.preventDefault(),t.pos=p(t.pos+r*(e.shiftKey?.1:.01),0,1),o.style.left=t.pos*100+"%",d(),w())}),h.append(o)}},$=(t,o)=>{t!==s&&(u.set(t.color),s=t),o?M():tt()},ot=t=>{let o=h.getBoundingClientRect();return p((t-o.left)/(o.width||1),0,1)},et=t=>{let o=v(),n=o[0],e=o[o.length-1];for(let f=0;f<o.length-1;f++)if(t>=o[f].pos&&t<=o[f+1].pos){n=o[f],e=o[f+1];break}let r=e.pos>n.pos?p((t-n.pos)/(e.pos-n.pos),0,1):0,i=L(n.color),y=L(e.color),S=f=>f[1]<1e-4,b=y[2]-i[2];b>180?b-=360:b<-180&&(b+=360),(S(i)||S(y))&&(b=0);let nt=(((S(i)&&!S(y)?y[2]:i[2])+b*r)%360+360)%360;return V(i[0]+(y[0]-i[0])*r,i[1]+(y[1]-i[1])*r,nt,i[3]+(y[3]-i[3])*r)},B=t=>{if(l.length<=2)return;let o=l.indexOf(t);if(o<0)return;l.splice(o,1);let n=s===t?l[Math.max(0,o-1)]:s;d(),$(n,!0),A(),w(),x(s)?.focus()},G=t=>{let o={color:et(t),pos:p(t,0,1)};return l.push(o),d(),$(o,!0),A(),w(),o},rt=()=>{let t=v(),o=t.indexOf(s);o<0&&(o=0);let n=o<t.length-1?(t[o].pos+t[o+1].pos)/2:o>0?(t[o-1].pos+t[o].pos)/2:p(t[o].pos+.1,0,1);G(n)};return m.addEventListener("click",t=>{t.stopPropagation(),rt()}),E.addEventListener("dblclick",t=>{t.target.closest(".tw-gradient-stop")||(t.preventDefault(),G(ot(t.clientX)))}),k.tabIndex=-1,k.addEventListener("keydown",t=>{(t.key==="Delete"||t.key==="Backspace")&&!/^(input|textarea|select)$/i.test(t.target.tagName)&&l.length>2&&(t.preventDefault(),B(s))}),j(c,Q,k,{width:260,fallbackH:392,gap:6,onOpen:()=>u.reflow(),onReflow:()=>u.reflow()}),M(),d(),A(),{el:c,set:t=>{let o=q(t);o&&u.setMode(P(o));let n=J(t).sort((e,r)=>e.pos-r.pos);if(n.length===l.length)v().forEach((e,r)=>{e.color=n[r].color,e.pos=n[r].pos;let i=x(e);i&&(i.style.left=e.pos*100+"%",i.style.setProperty("--stop",e.color))});else{let e=s.pos;l=n,s=l.reduce((r,i)=>Math.abs(i.pos-e)<Math.abs(r.pos-e)?i:r,l[0]),M()}d(),A(),u.set(s.color)},get:()=>_()}}N("gradient",lt);
@@ -0,0 +1 @@
1
+ import{O as f,j as s,l as g,m as u}from"./chunk-GJESM23Q.js";function m(o,v){let t=o.value||"",a=s("div","tw-row tw-image-row"),n=g("tw-image-drop");n.setAttribute("aria-label",`${o.label}: choose an image`);let d=s("span","tw-image-thumb"),c=s("span","tw-image-text");n.append(d,c);let r=s("input","tw-image-input");r.type="file",r.accept="image/*",a.append(u("span","tw-row-label",o.label),n,r);let i=()=>{n.dataset.set=t?"true":"false",d.style.backgroundImage=t?`url("${t}")`:"",c.textContent=t?"Replace":"Drop or choose"},p=e=>{if(!e||!e.type.startsWith("image/"))return;let l=new FileReader;l.onload=()=>{t=String(l.result),i(),v(t)},l.readAsDataURL(e)};return n.addEventListener("click",()=>r.click()),r.addEventListener("change",()=>{r.files[0]&&p(r.files[0])}),a.addEventListener("dragover",e=>{e.preventDefault(),a.dataset.over="true"}),a.addEventListener("dragleave",()=>{a.dataset.over="false"}),a.addEventListener("drop",e=>{e.preventDefault(),a.dataset.over="false",e.dataTransfer.files[0]&&p(e.dataTransfer.files[0])}),i(),{el:a,set:e=>{t=e||"",i()},get:()=>t}}f("image",m);
@@ -0,0 +1 @@
1
+ import{O as G,b as c,d as z,e as B,f as O,j as m,m as T,q as U,r as V,s as j}from"./chunk-GJESM23Q.js";function tt(d,J){let M=d.label,i=+d.min,n=+d.max,f=+d.step,x=+(d.value&&d.value[0]),L=+(d.value&&d.value[1]);if(Number.isFinite(i)||(i=Number.isFinite(x)?x:0),Number.isFinite(n)||(n=Number.isFinite(L)?L:1),n<i){let t=i;i=n,n=t}(!(f>0)||f>n-i)&&(f=O(i,n));let I=z(f),w=t=>B(t,i,f),s=c(w(Number.isFinite(x)?x:i),i,n),r=c(w(Number.isFinite(L)?L:n),i,n);if(s>r){let t=s;s=r,r=t}let g=m("div","tw-slider-wrap"),l=m("div","tw-slider tw-interval"),k=m("div","tw-slider-fill"),p=m("div","tw-slider-handle"),v=m("div","tw-slider-handle"),N=T("span","tw-slider-label",M),y=m("span","tw-slider-value");l.append(k,p,v,N,y),g.append(l),[["minimum",p],["maximum",v]].forEach(([t,e])=>{e.tabIndex=0,e.setAttribute("role","slider"),e.setAttribute("aria-label",`${M} ${t}`),e.setAttribute("aria-valuemin",String(i)),e.setAttribute("aria-valuemax",String(n))});let A=t=>(t-i)/(n-i||1)*100,b=()=>{let t=A(s),e=A(r);k.style.left=t+"%",k.style.width=Math.max(0,e-t)+"%",p.style.left=`clamp(5px, calc(${t}% - 1.5px), calc(100% - 9px))`,v.style.left=`clamp(5px, calc(${e}% - 1.5px), calc(100% - 9px))`,y.textContent=`${s.toFixed(I)} \u2013 ${r.toFixed(I)}`,p.setAttribute("aria-valuenow",String(s)),v.setAttribute("aria-valuenow",String(r));let a=g.offsetWidth;if(a){let o=N.offsetLeft,Y=o+N.offsetWidth,D=y.offsetLeft,Z=D+y.offsetWidth,X=_=>{let K=_/100*a,P=K-1.5,q=K+1.5;return P<Y&&q>o||P<Z&&q>D};p.classList.toggle("is-dodge",X(A(s))),v.classList.toggle("is-dodge",X(A(r)))}};b();let S=()=>J([s,r]),W=t=>{s=c(Math.min(w(t),r),i,n),b()},$=t=>{r=c(Math.max(w(t),s),i,n),b()},u=null,C=1,h=null,E=null,Q=t=>{let e=g.offsetWidth||u.width,a=c((t-u.left)/C/e,0,1);return c(i+a*(n-i),i,n)},R=t=>{let e=Q(t);h||(h=e<s?"lo":e>r?"hi":Math.abs(e-s)<=Math.abs(e-r)?"lo":"hi"),h==="lo"?W(e):$(e),S()};l.addEventListener("pointerdown",t=>{if(!(t.button!==0||u)){t.preventDefault();try{t.target.setPointerCapture(t.pointerId)}catch{}E=t.pointerId,u=g.getBoundingClientRect(),C=u.width/(g.offsetWidth||u.width),l.classList.add("is-active","is-dragging"),h=null,R(t.clientX),(h==="lo"?p:v).focus({focusVisible:!1})}}),l.addEventListener("pointermove",t=>{if(!(!u||t.pointerId!==E)){if(t.buttons===0){F();return}R(t.clientX)}});let F=t=>{t&&t.pointerId!==E||(u=null,h=null,E=null,l.classList.remove("is-active","is-dragging"))};l.addEventListener("pointerup",F),l.addEventListener("pointercancel",F),l.addEventListener("lostpointercapture",F),j(l,b),U(b),V(l,[[window,"resize"],[window,"tw-reflow"]],b);let H=t=>e=>{let a=e.shiftKey?10:1,o=t==="lo"?s:r;switch(e.key){case"ArrowRight":case"ArrowUp":o+=f*a;break;case"ArrowLeft":case"ArrowDown":o-=f*a;break;case"Home":o=t==="lo"?i:s;break;case"End":o=t==="lo"?r:n;break;default:return}e.preventDefault(),t==="lo"?W(o):$(o),S()};return p.addEventListener("keydown",H("lo")),v.addEventListener("keydown",H("hi")),{el:g,set:t=>{if(Array.isArray(t)){let e=+t[0],a=+t[1];if(!Number.isFinite(e)||!Number.isFinite(a))return;s=c(w(Math.min(e,a)),i,n),r=c(w(Math.max(e,a)),i,n),b()}},get:()=>[s,r]}}G("interval",tt);
@@ -0,0 +1,2 @@
1
+ import{N as M,O as P,b as R,j as I,m as L,o as q,x as S}from"./chunk-GJESM23Q.js";function J(t){let N=I("div","tw-fps"),k=L("span","tw-fps-val","\u2014"),d=document.createElement("canvas");d.className="tw-fps-canvas",N.append(L("span","tw-fps-label",t.label||"FPS"),k,d);let s=d.getContext("2d"),m=80,i=new Array(m).fill(0),C=120,w=0,r=0,b=0,v=0,E=0,y=!1,a=()=>{[v,E]=S(d,s,2)},l=()=>{if(v){s.clearRect(0,0,v,E),s.strokeStyle=q(N),s.lineWidth=1.5,s.lineJoin="round",s.beginPath();for(let o=0;o<m;o++){let u=i[(w+o)%m],h=o/(m-1)*v,g=E-Math.min(u/C,1)*E;o?s.lineTo(h,g):s.moveTo(h,g)}s.stroke()}},p=o=>{if(!d.isConnected){if(y){window.removeEventListener("resize",a),window.removeEventListener("tw-reflow",a),b=0;return}r=0,b=requestAnimationFrame(p);return}if(y||(y=!0,a()),r){let u=1e3/(o-r);i[w]=u,w=(w+1)%m,k.textContent=Math.round(u),l()}r=o,b=requestAnimationFrame(p)};return requestAnimationFrame(()=>{a(),b=requestAnimationFrame(p)}),window.addEventListener("resize",a),window.addEventListener("tw-reflow",a),M(N)}function W(t){let N=typeof t.get=="function"?t.get:()=>t.value,k=Math.max(30,Number.isFinite(+t.interval)?+t.interval:200),d;try{d=N()}catch{}let s=typeof d=="number",m=t.view==="graph"||s&&t.graph!==!1&&t.view!=="text"&&t.rows==null,i=I("div","tw-fps tw-monitor"),C=L("span","tw-fps-val","\u2014");i.append(L("span","tw-fps-label",t.label||"Monitor"),C);let w=0,r=()=>{},b=!1,v=e=>typeof e=="number"?Number.isInteger(e)?String(e):e.toFixed(t.decimals??2):String(e),E=()=>{w&&clearInterval(w),w=0,window.removeEventListener("resize",r),window.removeEventListener("tw-reflow",r)},y=e=>{w=setInterval(()=>{if(!i.isConnected){b&&E();return}b=!0;let c;try{c=N()}catch{return}e(c)},k)};if(!m&&t.rows){C.remove();let e=Math.max(1,Math.floor(+t.rows)||1),c=I("pre","tw-monitor-buffer");c.style.setProperty("--tw-monitor-rows",e),i.append(c);let F=[];return y(z=>{for(F.push(v(z));F.length>e;)F.shift();c.textContent=F.join(`
2
+ `)}),M(i)}if(!m)return y(e=>{C.textContent=v(e)}),M(i);let a=document.createElement("canvas");a.className="tw-fps-canvas",i.append(a);let l=a.getContext("2d"),p=80,o=new Array(p).fill(NaN),u=0,h=0,g=0;r=()=>{[h,g]=S(a,l,2)};let T=()=>{if(h||r(),!h)return;let e=t.min,c=t.max;if(e==null||c==null){let n=1/0,f=-1/0;for(let x of o)Number.isNaN(x)||(x<n&&(n=x),x>f&&(f=x));n===1/0?(n=0,f=1):n===f&&(n-=.5,f+=.5);let A=(f-n)*.1;e==null&&(e=n-A),c==null&&(c=f+A)}let F=c-e||1;l.clearRect(0,0,h,g),l.strokeStyle=q(i),l.lineWidth=1.5,l.lineJoin="round",l.beginPath();let z=!1;for(let n=0;n<p;n++){let f=o[(u+n)%p];if(Number.isNaN(f))continue;let A=n/(p-1)*h,x=g-R((f-e)/F,0,1)*g;z?l.lineTo(A,x):(l.moveTo(A,x),z=!0)}l.stroke()};return y(e=>{typeof e=="number"&&(o[u]=e,u=(u+1)%p,C.textContent=v(e),T())}),requestAnimationFrame(()=>{r(),T()}),window.addEventListener("resize",r),window.addEventListener("tw-reflow",r),M(i)}P("fpsgraph",J);P("monitor",W);
@@ -0,0 +1,2 @@
1
+ import{O as Z,b as $,j as m,k as P,m as B,q as H,r as Y}from"./chunk-GJESM23Q.js";var W=Object.assign(Object.create(null),{sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,atan2:Math.atan2,sinh:Math.sinh,cosh:Math.cosh,tanh:Math.tanh,sqrt:Math.sqrt,cbrt:Math.cbrt,abs:Math.abs,exp:Math.exp,log:Math.log,ln:Math.log,log10:Math.log10,log2:Math.log2,floor:Math.floor,ceil:Math.ceil,round:Math.round,sign:Math.sign,trunc:Math.trunc,min:Math.min,max:Math.max,pow:Math.pow,hypot:Math.hypot,mod:(i,f)=>i%f,clamp:(i,f,o)=>Math.min(Math.max(i,f),o)}),D=Object.assign(Object.create(null),{pi:Math.PI,e:Math.E,tau:Math.PI*2,phi:(1+Math.sqrt(5))/2});function j(i){if(typeof i!="string"||!i.trim()||i.length>512)return null;let f=i,o=[],p=/\d*\.?\d+(?:[eE][+-]?\d+)?/y,x=/[A-Za-z_]\w*/y,u=0;for(;u<f.length;){let t=f[u];if(t===" "||t===" "||t===`
2
+ `){u++;continue}if(t>="0"&&t<="9"||t==="."&&f[u+1]>="0"&&f[u+1]<="9"){p.lastIndex=u;let n=p.exec(f);if(!n||n.index!==u)return null;o.push({t:"num",v:parseFloat(n[0])}),u=p.lastIndex;continue}if(t>="A"&&t<="Z"||t>="a"&&t<="z"||t==="_"){x.lastIndex=u;let n=x.exec(f);o.push({t:"id",v:n[0]}),u=x.lastIndex;continue}if(t==="*"&&f[u+1]==="*"){o.push({t:"op",v:"^"}),u+=2;continue}if("+-*/%^".includes(t)){o.push({t:"op",v:t}),u++;continue}if(t==="("){o.push({t:"lp"}),u++;continue}if(t===")"){o.push({t:"rp"}),u++;continue}if(t===","){o.push({t:"comma"}),u++;continue}return null}if(!o.length)return null;let b=0,e=()=>o[b],c=t=>{let n=o[b];return!n||t&&n.t!==t?null:(b++,n)},d=()=>{let t=g();if(!t)return null;for(;e()&&e().t==="op"&&(e().v==="+"||e().v==="-");){let n=c("op").v,l=g();if(!l)return null;let a=t;t=n==="+"?s=>a(s)+l(s):s=>a(s)-l(s)}return t},g=()=>{let t=M();if(!t)return null;for(;e()&&e().t==="op"&&(e().v==="*"||e().v==="/"||e().v==="%");){let n=c("op").v,l=M();if(!l)return null;let a=t;t=n==="*"?s=>a(s)*l(s):n==="/"?s=>a(s)/l(s):s=>a(s)%l(s)}return t},M=()=>{if(e()&&e().t==="op"&&(e().v==="-"||e().v==="+")){let t=c("op").v,n=M();return n?t==="-"?l=>-n(l):n:null}return k()},k=()=>{let t=I();if(!t)return null;if(e()&&e().t==="op"&&e().v==="^"){c("op");let n=M();return n?l=>Math.pow(t(l),n(l)):null}return t},I=()=>{let t=e();if(!t)return null;if(t.t==="num")return c("num"),()=>t.v;if(t.t==="lp"){c("lp");let n=d();return!n||!c("rp")?null:n}if(t.t==="id"){c("id");let n=t.v.toLowerCase();if(e()&&e().t==="lp"){let l=W[n];if(!l)return null;c("lp");let a=[];if(e()&&e().t!=="rp")do{let s=d();if(!s)return null;a.push(s)}while(c("comma"));return c("rp")?s=>l(...a.map(y=>y(s))):null}if(n==="x")return l=>l;if(n in D){let l=D[n];return()=>l}return null}return null},N=d();return N&&b===o.length?N:null}function X(i,f){let o=Number(i.xMin),p=Number(i.xMax);if(Number.isFinite(o)||(o=-10),Number.isFinite(p)||(p=10),p<o){let a=o;o=p,p=a}p===o&&(o-=1,p+=1);let x=Math.max(2,Math.min(4096,i.samples|0||256)),u=Number.isFinite(i.yMin)&&Number.isFinite(i.yMax)&&+i.yMax>+i.yMin,b=i.editable!==!1&&!i.fn,e=i.expr!=null?String(i.expr):"",c=typeof i.fn=="function"?i.fn:j(e),d=m("div","tw-plot");i.label&&d.append(B("div","tw-plot-label",i.label));let g=m("div","tw-plot-graph"),M=P("svg","tw-plot-svg");M.setAttribute("preserveAspectRatio","none");let k=P("line","tw-plot-axis"),I=P("line","tw-plot-axis"),N=P("path","tw-plot-curve");M.append(k,I,N),g.append(M),d.append(g);let t=null;if(b){let a=m("div","tw-plot-field");t=m("input","tw-plot-input"),t.type="text",t.value=e,t.spellcheck=!1,t.autocapitalize="off",t.autocomplete="off",t.setAttribute("aria-label",`${i.label||"Plot"} \u2014 expression in x`),a.append(m("span","tw-plot-fx","y ="),t),d.append(a)}let n=6,l=()=>{let a=g.getBoundingClientRect(),s=a.width,y=a.height;if(s<2)return;M.setAttribute("viewBox",`0 0 ${s} ${y}`);let O=typeof c=="function",z=[],v=1/0,A=-1/0;if(O)for(let r=0;r<x;r++){let w=o+(p-o)*(r/(x-1)),h;try{h=c(w)}catch{h=NaN}z.push(h),Number.isFinite(h)&&(h<v&&(v=h),h>A&&(A=h))}let F=i.yMin,L=i.yMax;if(!u)if(!Number.isFinite(v)||v===A){let r=Number.isFinite(v)?v:0;F=r-1,L=r+1}else{let r=(A-v)*.12;F=v-r,L=A+r}let C=r=>n+(r-o)/(p-o)*(s-2*n),E=r=>y-n-(r-F)/(L-F)*(y-2*n),_=(r,w,h,S,U,T)=>{r.style.display=T?"":"none",T&&(r.setAttribute("x1",w),r.setAttribute("y1",h),r.setAttribute("x2",S),r.setAttribute("y2",U))};_(k,n,E(0),s-n,E(0),F<=0&&L>=0),_(I,C(0),n,C(0),y-n,o<=0&&p>=0);let q="",R=!1;if(O)for(let r=0;r<x;r++){let w=z[r];if(!Number.isFinite(w)){R=!1;continue}let h=C(o+(p-o)*(r/(x-1))),S=$(E(w),-1e4,1e4);q+=(R?"L":"M")+h.toFixed(1)+","+S.toFixed(1)+" ",R=!0}N.setAttribute("d",q),d.classList.toggle("is-invalid",b&&!O)};return b&&t.addEventListener("input",()=>{e=t.value;let a=j(e);a?c=a:c=null,l(),f(e)}),H(l),Y(d,[[window,"resize"],[window,"tw-reflow"]],l),{el:d,get:()=>e,set:a=>{a!=null&&(e=String(a),t&&(t.value=e),i.fn||(c=j(e)),l())}}}Z("plot",X);export{j as compileExpr};
@@ -0,0 +1 @@
1
+ import{E as L,L as V,M as q,O as z,b as R,d as X,j as n,k as P,v as $,w as B}from"./chunk-GJESM23Q.js";function N(s,G){let o=s.components,{root:m,trigger:I,right:J}=V("tw-point",s.label||"Point"),Y=n("span","tw-trigger-value"),k=n("div","tw-trigger-chip tw-point-preview"),l=n("div","tw-point-preview-dot");k.append(l),J.append(Y,k);let b=n("div","tw-color-pop tw-point-pop"),h=n("div","tw-point-body");b.append(h);let E=s.pad!==!1&&o.length>=2,O=o[0],S=o[1],x=O?.min??-1,A=O?.max??1,f=S?.min??-1,F=S?.max??1,w=(t,e,c)=>c>e?R((t-e)/(c-e),0,1):.5,r=null,u=null,a=null;if(E){r=n("div","tw-pad"),u=n("div","tw-pad-thumb");let t=P("svg","tw-pad-line");t.setAttribute("viewBox","0 0 100 100"),t.setAttribute("preserveAspectRatio","none"),a=P("line"),t.append(a);let e=w(0,f,F);a.setAttribute("x1",w(0,x,A)*100),a.setAttribute("y1",(s.invertY?e:1-e)*100),r.append(n("div","tw-pad-axis tw-pad-axis-x"),n("div","tw-pad-axis tw-pad-axis-y"),t,u),h.append(r)}let D=n("div","tw-fields");h.append(D);let d=()=>{C(),M()},T=()=>G(j()),i=o.map(t=>{let e=q({label:t.label,value:t.value??0,step:t.step??1,min:t.min,max:t.max},()=>{d(),T()});return D.append(e.el),e}),j=()=>Object.fromEntries(o.map((t,e)=>[t.key,i[e].get()])),K=(t,e)=>(+t).toFixed(X(e??1)),M=()=>{Y.textContent=o.map((t,e)=>K(i[e].get(),t.step)).join(", ")},C=()=>{l.style.left="50%",l.style.top="50%"};if(E){let e=p=>`calc(${(p*100).toFixed(2)}% + ${((.5-p)*5).toFixed(2)}px)`;C=()=>{let p=w(i[0].get(),x,A),y=w(i[1].get(),f,F),v=s.invertY?y:1-y,g=p*100,H=v*100;u.style.left=g+"%",u.style.top=H+"%",l.style.left=e(p),l.style.top=e(v),a.setAttribute("x2",g),a.setAttribute("y2",H)},$(r,p=>{let[y,v]=B(p,r),g=s.invertY?v:1-v;i[0].set(x+y*(A-x)),i[1].set(f+g*(F-f)),d(),T()})}return m.append(b),L(m,I,b,{width:216,fallbackH:240,gap:6,onOpen:d}),d(),{el:m,set:t=>{t&&o.forEach((e,c)=>{t[e.key]!=null&&i[c].set(t[e.key])}),d()},get:j}}z("point",N);
@@ -0,0 +1 @@
1
+ import{M as y,O as L,b as R,j as T,n as q,o as A,q as P,r as X,u as _}from"./chunk-GJESM23Q.js";function F(v,b,m,w=64){let e=Math.sqrt(v/m),s=b/(2*Math.sqrt(v*m)),c=Math.min(2.2,9/Math.max(s*e,.5)),d=[];for(let p=0;p<w;p++){let t=p/(w-1)*c,o;if(s<1-1e-4){let l=e*Math.sqrt(1-s*s);o=1-Math.exp(-s*e*t)*(Math.cos(l*t)+s*e/l*Math.sin(l*t))}else if(s<=1+1e-4)o=1-Math.exp(-e*t)*(1+e*t);else{let l=Math.sqrt(s*s-1),r=e*(s+l),g=e*(s-l);o=1-(r*Math.exp(-g*t)-g*Math.exp(-r*t))/(r-g)}d.push(o)}return d}function I(v,b){let m=(n,a,i)=>Number.isFinite(+n)?Math.max(a,+n):i,w=n=>({stiffness:m(n.stiffness,1,300),damping:m(n.damping,.5,26),mass:m(n.mass,.1,1)}),e=w({stiffness:300,damping:26,mass:1,...v.value||{}}),s=T("div","tw-spring"),c=T("div","tw-spring-viz"),d=document.createElement("canvas");d.className="tw-spring-canvas",c.append(d);let p=T("div","tw-fields");s.append(c,p);let t=d.getContext("2d"),o=()=>{let n=c.getBoundingClientRect(),a=Math.max(1,Math.round(n.width)),i=Math.max(1,Math.round(n.height));if(a<2)return;let f=window.devicePixelRatio||1;d.width=a*f,d.height=i*f,t.setTransform(f,0,0,f,0,0),t.clearRect(0,0,a,i);let C=F(e.stiffness,e.damping,e.mass,Math.max(160,Math.round(a*f))),B=Math.max(1.05,...C),M=6,E=u=>M+u/(C.length-1)*(a-2*M),x=u=>i-M-u/B*(i-2*M);t.strokeStyle=q(s,"--tw-surface-active")||"rgba(255,255,255,0.1)",t.lineWidth=1,t.beginPath(),t.moveTo(M,x(1)),t.lineTo(a-M,x(1)),t.stroke(),t.strokeStyle=A(s),t.lineWidth=1.5,t.lineJoin=t.lineCap="round",t.beginPath(),C.forEach((u,S)=>S?t.lineTo(E(S),x(u)):t.moveTo(E(S),x(u))),t.stroke()},l=()=>b({...e}),r={};[["stiffness","Stiffness",1],["damping","Damping",.5],["mass","Mass",.1]].forEach(([n,a,i])=>{r[n]=y({label:a,value:e[n],step:i,min:i},f=>{e[n]=f,o(),l()}),p.append(r[n].el)});let g=1,N=500,z=1,k=40,h=null,D=n=>{if(!h)return;let a=R((n.clientX-h.left)/h.width,0,1),i=R((n.clientY-h.top)/h.height,0,1);e.stiffness=Math.round(g+a*(N-g)),e.damping=Math.round((z+i*(k-z))*10)/10,r.stiffness.set(e.stiffness),r.damping.set(e.damping),o(),l()};return _(c,{onDown:n=>{n.preventDefault(),h=c.getBoundingClientRect(),c.classList.add("is-dragging"),D(n)},onMove:D,onEnd:()=>{h=null,c.classList.remove("is-dragging")}}),P(o),X(d,[[window,"resize"],[window,"tw-reflow"],[matchMedia("(prefers-color-scheme: dark)"),"change"],[window,"tw-retheme"]],o),{el:s,set:n=>{e=w({...e,...n||{}}),Object.keys(r).forEach(a=>r[a].set(e[a])),o()},get:()=>({...e})}}L("spring",I);
@@ -0,0 +1 @@
1
+ import{H as w,K as f,O as A,j as r,m as v,q as g}from"./chunk-GJESM23Q.js";var S=0;function $(m){let o=`tw-tabs-${++S}`,b=r("div","tw-tabs"),s=r("div","tw-tabs-bar");s.setAttribute("role","tablist");let c=r("div","tw-tabs-pill");s.append(c);let l=r("div","tw-tabs-pages"),d=[],i=m.pages.map((a,e)=>{let t=v("button","tw-tabs-tab",a.title);t.type="button",t.setAttribute("role","tab"),t.dataset.active=String(e===0),t.setAttribute("aria-selected",String(e===0)),t.tabIndex=e===0?0:-1,t.id=`${o}-tab-${e}`,t.setAttribute("aria-controls",`${o}-page-${e}`);let n=r("div","tw-tabs-page tw-controls");return n.dataset.active=String(e===0),n.setAttribute("role","tabpanel"),n.id=`${o}-page-${e}`,n.setAttribute("aria-labelledby",t.id),d.push(n),l.append(n),t.addEventListener("click",()=>u(e)),s.append(t),t});b.append(s,l);let p=a=>w(s,c,a);function u(a){i.forEach((e,t)=>{e.dataset.active=String(t===a),e.setAttribute("aria-selected",String(t===a)),e.tabIndex=t===a?0:-1}),d.forEach((e,t)=>e.dataset.active=String(t===a)),p(!0),requestAnimationFrame(()=>window.dispatchEvent(new Event("tw-reflow")))}return s.addEventListener("keydown",a=>{let e=i.findIndex(n=>n.dataset.active==="true");if(e<0)return;let t=f(a.key,e,i.length,-1);t<0||(a.preventDefault(),u(t),i[t].focus())}),g(p),{el:b,bodies:d}}A("tabs",$);
@@ -0,0 +1 @@
1
+ .tw-panel{--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-dropdown-bg: #292929;--tw-radius: 8px;--tw-row-height: 32px;--tw-shadow-dropdown: 0 12px 32px -8px rgba(0, 0, 0, .6);--tw-shadow-panel: 0 0 0 1px rgba(255, 255, 255, .07), 0 2px 6px -1px rgba(0, 0, 0, .5), 0 16px 32px -8px rgba(0, 0, 0, .6), 0 32px 64px -16px rgba(0, 0, 0, .55), inset 0 1px 0 rgba(255, 255, 255, .09);--tw-shadow-panel-lifted: 0 0 0 1px rgba(255, 255, 255, .1), 0 6px 16px -3px rgba(0, 0, 0, .6), 0 36px 80px -18px rgba(0, 0, 0, .72), inset 0 1px 0 rgba(255, 255, 255, .12);--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);font-family:var(--tw-font-sans);line-height:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:248px;box-sizing:border-box;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}.tw-panel ::selection,.tw-color-pop ::selection,.tw-select-dropdown ::selection,.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-color-pop,.tw-select-dropdown,.tw-grab-guide,.tw-presets-menu,.tw-tip,.tw-toast{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{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)}.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)}.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:hover,.tw-hint:focus-visible{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:6px 9px;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:7px 14px;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 cubic-bezier(.4,0,.2,1)}.tw-body>.tw-controls{overflow-x:visible;overflow-y:clip;min-height: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-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)}.tw-toolbar-btn:hover{background:var(--tw-surface-hover);color:var(--tw-text-primary)}.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 cubic-bezier(.4,0,.2,1),transform .25s cubic-bezier(.4,0,.2,1),filter .25s cubic-bezier(.4,0,.2,1)}.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)}.tw-toolbar-btn--reset:hover svg{--tw-wind: 22deg}.tw-toolbar-btn--reset.is-spinning svg{transition-duration:.5s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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-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,.tw-image-drop: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-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 cubic-bezier(.22,1,.36,1)}.tw-slider:hover .tw-slider-handle,.tw-slider.is-hover .tw-slider-handle,.tw-slider:focus-within .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,.tw-slider:hover.is-dodge .tw-slider-handle,.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-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-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;min-width:0;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 4px;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}.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)}.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-btns{display:flex;gap:4px;flex:1;min-width:0;margin-right:-6px}.tw-buttongroup-btn{flex:1 1 0;min-width:0;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)}.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;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;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)}.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-shrink:0}.tw-select-right{display:flex;align-items:center;gap:8px;min-width:0}.tw-select-value{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:block;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}.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-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}.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}.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)}.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)}.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-shrink:0}.tw-trigger-right{display:flex;align-items:center;gap:8px;min-width:0}.tw-trigger-value{font-family:var(--tw-font-sans);word-spacing:.14em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:15ch}.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)}.tw-trigger:hover .tw-trigger-chip,.is-open>.tw-trigger .tw-trigger-chip{transform:scale(1.14)}.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-color-pop,.tw-select-dropdown,.tw-grab-guide,.tw-presets-menu,.tw-tip,.tw-toast{--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-label: rgba(255, 255, 255, .64);--tw-text-primary: rgba(255, 255, 255, .92);--tw-text-focus: #ffffff;--tw-text-tertiary: rgba(255, 255, 255, .5);--tw-border: rgba(255, 255, 255, .045);--tw-border-hover: rgba(255, 255, 255, .11);--tw-selection: rgba(255, 255, 255, .22);--tw-dropdown-bg: #292929;--tw-base: #242424;--tw-radius: 8px;--tw-shadow-dropdown: 0 12px 32px -8px rgba(0, 0, 0, .6);--tw-font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--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);font-family:var(--tw-font-sans);-webkit-font-smoothing:antialiased;box-sizing:border-box}.tw-color-pop *,.tw-color-pop *:before,.tw-color-pop *:after,.tw-select-dropdown *,.tw-select-dropdown *:before,.tw-select-dropdown *:after,.tw-presets-menu *,.tw-presets-menu *:before,.tw-presets-menu *:after,.tw-grab-guide *,.tw-grab-guide *:before,.tw-grab-guide *: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}.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:repeating-conic-gradient(#6b6b6b 0% 25%,#9a9a9a 0% 50%) 0 0 / 10px 10px}.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-count{font-family:var(--tw-font-sans);font-size:11px;font-weight:500;color:var(--tw-text-tertiary);flex-shrink:0}.tw-gradient-preview{width:48px;background:repeating-conic-gradient(#6b6b6b 0% 25%,#9a9a9a 0% 50%) 0 0 / 8px 8px}.tw-trigger:hover .tw-gradient-preview,.is-open>.tw-trigger .tw-gradient-preview{transform:scale(1.07)}.tw-gradient-pop{width:260px}.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:repeating-conic-gradient(#6b6b6b 0% 25%,#9a9a9a 0% 50%) 0 0 / 8px 8px}.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: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:hover{background:var(--tw-surface-hover)}.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)}.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-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-input{display:none}.tw-image-drop{display:flex;align-items:center;gap:7px;min-width:0;height:24px;padding:0 9px 0 4px;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;transition:background .15s,color .15s,transform .2s var(--tw-ease-spring)}.tw-image-drop:hover{background:var(--tw-surface-hover);color:var(--tw-text-primary)}.tw-image-drop:active{transform:scale(.97);transition:background .15s,color .15s,transform .08s ease-out}.tw-image-row[data-over=true]{outline:1.5px dashed var(--tw-border-hover);outline-offset:-2px;background:var(--tw-surface-hover)}.tw-image-row[data-over=true] .tw-image-drop{transform:scale(1.04);background:var(--tw-surface-hover);color:var(--tw-text-primary)}.tw-image-thumb{width:18px;height:18px;flex-shrink:0;border-radius:calc(var(--tw-radius) - 4px);background:var(--tw-base) center / cover no-repeat;box-shadow:inset 0 0 0 1px var(--tw-border);transition:transform .2s var(--tw-ease-spring)}.tw-image-drop:hover .tw-image-thumb{transform:scale(1.08)}.tw-image-drop[data-set=false] .tw-image-thumb{background:repeating-conic-gradient(#6b6b6b 0% 25%,#9a9a9a 0% 50%) 0 0 / 6px 6px}.tw-image-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.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-num-wrap .tw-num{flex:0 0 auto;width:6ch}.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:hover,.tw-num-grab.is-dragging{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}.tw-folder-header{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;padding:3px 2px;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}.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:-3.75px}.tw-folder.is-collapsed .tw-folder-header .tw-chevron{transform:rotate(-90deg)}.tw-folder-body{display:grid;grid-template-rows:1fr;transition:grid-template-rows .26s cubic-bezier(.22,1,.36,1)}.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;padding-top:6px;opacity:1;transition:opacity .26s cubic-bezier(.22,1,.36,1)}.tw-folder.is-collapsed .tw-folder-body>.tw-controls{opacity:0}.tw-spring{display:flex;flex-direction:column;gap:8px;background:var(--tw-surface);border-radius:var(--tw-radius);padding:8px}.tw-spring-viz{width:100%;height:56px;border-radius:calc(var(--tw-radius) - 2px);background:var(--tw-base);overflow:hidden;box-shadow:inset 0 0 0 1px var(--tw-border);cursor:crosshair;touch-action:none}.tw-spring-viz.is-dragging{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:3px;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{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:140px;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}.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:5px}.tw-plot{display:flex;flex-direction:column;gap:6px}.tw-plot-label{font-size:12px;font-weight:500;color:var(--tw-text-label);padding:0 12px}.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;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-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}:is(.tw-color-pop,.tw-select-dropdown,.tw-grab-guide,.tw-presets-menu,.tw-tip,.tw-toast):where(: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-label: rgba(0, 0, 0, .58);--tw-text-primary: rgba(0, 0, 0, .88);--tw-text-focus: #000000;--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-dropdown-bg: #f6f6f6;--tw-base: #f3f3f3;--tw-shadow-dropdown: 0 12px 32px -8px rgba(0, 0, 0, .14);color-scheme:light}}.tw-panel: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}:is(.tw-color-pop,.tw-select-dropdown,.tw-grab-guide,.tw-presets-menu,.tw-tip,.tw-toast):where([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-label: rgba(0, 0, 0, .58);--tw-text-primary: rgba(0, 0, 0, .88);--tw-text-focus: #000000;--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-dropdown-bg: #f6f6f6;--tw-base: #f3f3f3;--tw-shadow-dropdown: 0 12px 32px -8px rgba(0, 0, 0, .14);color-scheme:light}.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}}