@pieai/swimmer-ui-kit 1.11.3 → 2.0.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.
package/dist/index.js CHANGED
@@ -90,21 +90,21 @@ function O() {
90
90
  used: D
91
91
  };
92
92
  }
93
- function k(e) {
93
+ function ee(e) {
94
94
  E = Number.isFinite(e) ? Math.max(0, Math.floor(e)) : 0;
95
95
  }
96
- function A() {
96
+ function k() {
97
97
  return D >= E ? !1 : (D += 1, !0);
98
98
  }
99
- function ee() {
99
+ function te() {
100
100
  D > 0 && --D;
101
101
  }
102
- function te(e) {
102
+ function ne(e) {
103
103
  return !(e.renderer === "css" || !e.hasWebGL2 || e.prefersReducedMotion || !e.isInViewport);
104
104
  }
105
105
  //#endregion
106
106
  //#region src/liquidMetalWebGL.ts
107
- var j = "#version 300 es\nin vec2 position; void main(){ gl_Position = vec4(position,0.,1.); }", M = "#version 300 es\nprecision highp float;\nout vec4 o;\n\nuniform vec2 uC; // pill centre, device px\nuniform vec2 uHalf; // pill half-extent, device px\nuniform float uT; // seconds\nuniform float uHover; // 0..1\nuniform float uPress; // 0..1, eased\nuniform vec4 uRip[3]; // xy centre (button heights, +y down), z start, w live\nuniform vec4 uRipK; // speed, ring width, decay, amplitude\nuniform vec4 uRipK2; // facet depth, facet count, crest sharpness, emission\nuniform vec4 uPtr; // xy trailing cursor, z strength, w normalised speed\nuniform vec4 uPtrK; // radius, base amplitude, speed amplitude, rim lift\nuniform vec3 uAccent; // brand tint from computed --game-ui-liquid-metal-accent\n\n#define PI 3.14159265\n\nfloat sdPill(vec2 p, vec2 b, float r){\n vec2 q = abs(p) - b + r;\n return min(max(q.x,q.y),0.) + length(max(q,0.)) - r;\n}\n\n/* Expanding ring from each press, in button-height units. Three slots so a\n quick double-tap overlaps instead of cutting the first one off.\n\n Two things keep it from reading as a water ripple: the wavefront is\n faceted rather than circular — its radius is modulated by angle, and the\n facets rotate as it travels — and the crest profile is a cusp rather than\n a gaussian, so it lands as a crease in sheet metal instead of a soft swell. */\nfloat ripple(vec2 p, float t){\n float sum = 0.;\n for(int i = 0; i < 3; i++){\n if(uRip[i].w < 0.5) continue;\n float age = t - uRip[i].z;\n if(age < 0. || age > 4.) continue;\n vec2 rp = p - uRip[i].xy;\n float facet = 1. + uRipK2.x * cos(uRipK2.y * atan(rp.y, rp.x) + age * 2.1 + float(i) * 2.4);\n float x = (length(rp) - age * uRipK.x * facet) / uRipK.y;\n sum += exp(-pow(abs(x) + 1e-4, uRipK2.z)) * exp(-age * uRipK.z);\n }\n return sum;\n}\n\n/* A soft well under the cursor. It lags behind the real pointer and swells\n with speed, so moving across the button drags the metal rather than sliding\n a static blob over it. */\nfloat pointerW(vec2 p){\n if(uPtr.z < 0.001) return 0.;\n float d = length(p - uPtr.xy) / uPtrK.x;\n return exp(-d*d) * uPtr.z;\n}\n/* Displacing the sample point, not the field value, is what makes this read as\n liquid: the bands bulge and stretch around the cursor like a lens instead of\n just getting brighter under it. */\nvec2 pointerWarp(vec2 p){\n float w = pointerW(p);\n if(w <= 0.) return vec2(0.);\n return normalize(p - uPtr.xy + vec2(1e-5)) * w * (uPtrK.y + uPtrK.z * uPtr.w);\n}\n", N = `${M}
107
+ var A = "#version 300 es\nin vec2 position; void main(){ gl_Position = vec4(position,0.,1.); }", j = "#version 300 es\nprecision highp float;\nout vec4 o;\n\nuniform vec2 uC; // pill centre, device px\nuniform vec2 uHalf; // pill half-extent, device px\nuniform float uT; // seconds\nuniform float uHover; // 0..1\nuniform float uPress; // 0..1, eased\nuniform vec4 uRip[3]; // xy centre (button heights, +y down), z start, w live\nuniform vec4 uRipK; // speed, ring width, decay, amplitude\nuniform vec4 uRipK2; // facet depth, facet count, crest sharpness, emission\nuniform vec4 uPtr; // xy trailing cursor, z strength, w normalised speed\nuniform vec4 uPtrK; // radius, base amplitude, speed amplitude, rim lift\nuniform vec3 uAccent; // brand tint from computed --game-ui-liquid-metal-accent\n\n#define PI 3.14159265\n\nfloat sdPill(vec2 p, vec2 b, float r){\n vec2 q = abs(p) - b + r;\n return min(max(q.x,q.y),0.) + length(max(q,0.)) - r;\n}\n\n/* Expanding ring from each press, in button-height units. Three slots so a\n quick double-tap overlaps instead of cutting the first one off.\n\n Two things keep it from reading as a water ripple: the wavefront is\n faceted rather than circular — its radius is modulated by angle, and the\n facets rotate as it travels — and the crest profile is a cusp rather than\n a gaussian, so it lands as a crease in sheet metal instead of a soft swell. */\nfloat ripple(vec2 p, float t){\n float sum = 0.;\n for(int i = 0; i < 3; i++){\n if(uRip[i].w < 0.5) continue;\n float age = t - uRip[i].z;\n if(age < 0. || age > 4.) continue;\n vec2 rp = p - uRip[i].xy;\n float facet = 1. + uRipK2.x * cos(uRipK2.y * atan(rp.y, rp.x) + age * 2.1 + float(i) * 2.4);\n float x = (length(rp) - age * uRipK.x * facet) / uRipK.y;\n sum += exp(-pow(abs(x) + 1e-4, uRipK2.z)) * exp(-age * uRipK.z);\n }\n return sum;\n}\n\n/* A soft well under the cursor. It lags behind the real pointer and swells\n with speed, so moving across the button drags the metal rather than sliding\n a static blob over it. */\nfloat pointerW(vec2 p){\n if(uPtr.z < 0.001) return 0.;\n float d = length(p - uPtr.xy) / uPtrK.x;\n return exp(-d*d) * uPtr.z;\n}\n/* Displacing the sample point, not the field value, is what makes this read as\n liquid: the bands bulge and stretch around the cursor like a lens instead of\n just getting brighter under it. */\nvec2 pointerWarp(vec2 p){\n float w = pointerW(p);\n if(w <= 0.) return vec2(0.);\n return normalize(p - uPtr.xy + vec2(1e-5)) * w * (uPtrK.y + uPtrK.z * uPtr.w);\n}\n", M = `${j}
108
108
  uniform float uBw; // stroke half-width, device px
109
109
  uniform float uE[8]; // base, hot, chroma-across, chroma-along, speed,
110
110
  // topBias, press lift, ripple lift
@@ -174,7 +174,7 @@ void main(){
174
174
  // what make it metal, and replacing them with a flat accent would turn
175
175
  // the rim into a neon sticker.
176
176
  o.rgb *= mix(vec3(1.0), uAccent, 0.40);
177
- }`, ne = `${M}
177
+ }`, re = `${j}
178
178
  uniform float uP[21]; // tunables
179
179
 
180
180
  float h21(vec2 p){
@@ -296,7 +296,7 @@ void main(){
296
296
  col = col * (1. + rip * 1.15 + well * 0.60);
297
297
 
298
298
  o = vec4(col * pill * uHover, pill);
299
- }`, re = "#version 300 es\nprecision highp float;\nout vec4 o;\nuniform sampler2D uTex, uTex2;\nuniform vec2 uDstTexel; // 1 / destination size (maps dest fragCoord -> uv)\nuniform vec2 uSrcTexel; // 1 / source size (tap spacing)\nuniform float uAdd; // 1 to include uTex2\nvoid main(){\n vec2 uv = gl_FragCoord.xy * uDstTexel;\n // Taps sit a quarter of a *destination* texel out, so for a 2x reduction\n // they land exactly on the four source texel centres. Spacing them by a\n // whole source texel instead — as this did originally — skips every other\n // pixel, and any fine detail in the field folds down into low-frequency\n // moiré that no amount of subsequent blurring can remove.\n vec2 e = uDstTexel * 0.25;\n vec4 s = texture(uTex, uv + vec2(-e.x,-e.y)) + texture(uTex, uv + vec2( e.x,-e.y))\n + texture(uTex, uv + vec2(-e.x, e.y)) + texture(uTex, uv + vec2( e.x, e.y));\n s *= 0.25;\n if(uAdd > 0.5){\n vec4 r = texture(uTex2, uv + vec2(-e.x,-e.y)) + texture(uTex2, uv + vec2( e.x,-e.y))\n + texture(uTex2, uv + vec2(-e.x, e.y)) + texture(uTex2, uv + vec2( e.x, e.y));\n s.rgb += r.rgb * 0.25;\n }\n o = s;\n}", ie = "#version 300 es\nprecision highp float;\nout vec4 o;\nuniform sampler2D uTex; uniform vec2 uTexel; uniform vec2 uDir; uniform float uR;\nvoid main(){\n vec2 uv = gl_FragCoord.xy * uTexel;\n vec2 st = uTexel * uDir * uR;\n vec4 s = texture(uTex, uv) * 0.1964;\n s += (texture(uTex, uv + st*1.4118) + texture(uTex, uv - st*1.4118)) * 0.2969;\n s += (texture(uTex, uv + st*3.2941) + texture(uTex, uv - st*3.2941)) * 0.0944;\n s += (texture(uTex, uv + st*5.1765) + texture(uTex, uv - st*5.1765)) * 0.0104;\n o = s;\n}", ae = `${M}
299
+ }`, ie = "#version 300 es\nprecision highp float;\nout vec4 o;\nuniform sampler2D uTex, uTex2;\nuniform vec2 uDstTexel; // 1 / destination size (maps dest fragCoord -> uv)\nuniform vec2 uSrcTexel; // 1 / source size (tap spacing)\nuniform float uAdd; // 1 to include uTex2\nvoid main(){\n vec2 uv = gl_FragCoord.xy * uDstTexel;\n // Taps sit a quarter of a *destination* texel out, so for a 2x reduction\n // they land exactly on the four source texel centres. Spacing them by a\n // whole source texel instead — as this did originally — skips every other\n // pixel, and any fine detail in the field folds down into low-frequency\n // moiré that no amount of subsequent blurring can remove.\n vec2 e = uDstTexel * 0.25;\n vec4 s = texture(uTex, uv + vec2(-e.x,-e.y)) + texture(uTex, uv + vec2( e.x,-e.y))\n + texture(uTex, uv + vec2(-e.x, e.y)) + texture(uTex, uv + vec2( e.x, e.y));\n s *= 0.25;\n if(uAdd > 0.5){\n vec4 r = texture(uTex2, uv + vec2(-e.x,-e.y)) + texture(uTex2, uv + vec2( e.x,-e.y))\n + texture(uTex2, uv + vec2(-e.x, e.y)) + texture(uTex2, uv + vec2( e.x, e.y));\n s.rgb += r.rgb * 0.25;\n }\n o = s;\n}", ae = "#version 300 es\nprecision highp float;\nout vec4 o;\nuniform sampler2D uTex; uniform vec2 uTexel; uniform vec2 uDir; uniform float uR;\nvoid main(){\n vec2 uv = gl_FragCoord.xy * uTexel;\n vec2 st = uTexel * uDir * uR;\n vec4 s = texture(uTex, uv) * 0.1964;\n s += (texture(uTex, uv + st*1.4118) + texture(uTex, uv - st*1.4118)) * 0.2969;\n s += (texture(uTex, uv + st*3.2941) + texture(uTex, uv - st*3.2941)) * 0.0944;\n s += (texture(uTex, uv + st*5.1765) + texture(uTex, uv - st*5.1765)) * 0.0104;\n o = s;\n}", N = `${j}
300
300
  uniform sampler2D uSoft, uRim, uGlow;
301
301
  uniform vec2 uRes;
302
302
  uniform float uGlowGain, uGlowIn, uOccl, uDim, uPunch;
@@ -470,7 +470,7 @@ function he(e, t, n) {
470
470
  function F(e, t) {
471
471
  let n = e.createProgram();
472
472
  if (!n) throw Error("liquid-metal: createProgram returned null");
473
- if (e.attachShader(n, he(e, e.VERTEX_SHADER, j)), e.attachShader(n, he(e, e.FRAGMENT_SHADER, t)), e.bindAttribLocation(n, 0, "position"), e.linkProgram(n), !e.getProgramParameter(n, e.LINK_STATUS)) throw Error(e.getProgramInfoLog(n) ?? "liquid-metal: program link failed");
473
+ if (e.attachShader(n, he(e, e.VERTEX_SHADER, A)), e.attachShader(n, he(e, e.FRAGMENT_SHADER, t)), e.bindAttribLocation(n, 0, "position"), e.linkProgram(n), !e.getProgramParameter(n, e.LINK_STATUS)) throw Error(e.getProgramInfoLog(n) ?? "liquid-metal: program link failed");
474
474
  let r = {}, i = e.getProgramParameter(n, e.ACTIVE_UNIFORMS);
475
475
  for (let t = 0; t < i; t += 1) {
476
476
  let i = e.getActiveUniform(n, t);
@@ -482,7 +482,7 @@ function F(e, t) {
482
482
  };
483
483
  }
484
484
  function ge(e, t, n, r) {
485
- let i = F(e, ne), a = F(e, N), o = F(e, re), s = F(e, ie), c = F(e, ae), l = e.createVertexArray(), u = e.createBuffer();
485
+ let i = F(e, re), a = F(e, M), o = F(e, ie), s = F(e, ae), c = F(e, N), l = e.createVertexArray(), u = e.createBuffer();
486
486
  if (!l || !u) throw Error("liquid-metal: VAO/VBO unavailable");
487
487
  e.bindVertexArray(l), e.bindBuffer(e.ARRAY_BUFFER, u), e.bufferData(e.ARRAY_BUFFER, new Float32Array([
488
488
  -1,
@@ -508,7 +508,7 @@ function ge(e, t, n, r) {
508
508
  }
509
509
  let m = f(), h = f(), g = f(), _ = f(), v = f(), y = f(), b = 0, x = 0, S = 0, C = 0, w = 0, T = 0, E = 4, D = !0, O = document.createElement("span");
510
510
  O.setAttribute("aria-hidden", "true"), O.style.cssText = "position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;color:var(--game-ui-liquid-metal-accent)", r.appendChild(O);
511
- function k() {
511
+ function ee() {
512
512
  let e = n.getBoundingClientRect(), r = Math.min(window.devicePixelRatio || 1, 2), i = 900 / 516 * Math.max(e.height, 1), a = e.width + i * 2, o = e.height + i * 2;
513
513
  t.style.width = `${a}px`, t.style.height = `${o}px`;
514
514
  let s = Math.max(2, Math.round(a * r)), c = Math.max(2, Math.round(o * r));
@@ -518,10 +518,10 @@ function ge(e, t, n, r) {
518
518
  let d = Math.max(2, Math.ceil(b / E)), f = Math.max(2, Math.ceil(x / E));
519
519
  p(v, d, f), p(y, d, f), D = !1;
520
520
  }
521
- function A(t) {
521
+ function k(t) {
522
522
  e.bindFramebuffer(e.FRAMEBUFFER, t ? t.fbo : null), e.viewport(0, 0, t ? t.w : b, t ? t.h : x), e.drawArrays(e.TRIANGLES, 0, 3);
523
523
  }
524
- let ee = new Float32Array(se.length), te = new Float32Array(le.length), j = 0, M = 0, me = 0, he = performance.now(), ge = [
524
+ let te = new Float32Array(se.length), ne = new Float32Array(le.length), A = 0, j = 0, me = 0, he = performance.now(), ge = [
525
525
  0,
526
526
  1,
527
527
  2
@@ -530,145 +530,145 @@ function ge(e, t, n, r) {
530
530
  y: 0,
531
531
  t: -99,
532
532
  on: 0
533
- })), _e = /* @__PURE__ */ new Float32Array(12), I = 0, ve = 0, L = 0, R = {
533
+ })), I = /* @__PURE__ */ new Float32Array(12), L = 0, R = 0, z = 0, _e = {
534
534
  x: 0,
535
535
  y: 0
536
- }, z = {
536
+ }, B = {
537
537
  x: 0,
538
538
  y: 0
539
- }, ye = 0, be = 0, B = {
539
+ }, V = 0, ve = 0, H = {
540
540
  over: !1,
541
541
  press: !1,
542
542
  focus: !1
543
543
  };
544
- function V(e, t) {
545
- let n = ge[I];
546
- n && (I = (I + 1) % ge.length, n.x = e, n.y = t, n.t = me, n.on = 1);
544
+ function U(e, t) {
545
+ let n = ge[L];
546
+ n && (L = (L + 1) % ge.length, n.x = e, n.y = t, n.t = me, n.on = 1);
547
547
  }
548
- function H(e) {
548
+ function W(e) {
549
549
  let t = n.getBoundingClientRect(), r = t.height || 1;
550
550
  return [(e.clientX - (t.left + t.width / 2)) / r, (e.clientY - (t.top + t.height / 2)) / r];
551
551
  }
552
- function U() {
553
- M = B.over || B.press || B.focus ? 1 : 0, L = +!!B.press;
552
+ function ye() {
553
+ j = H.over || H.press || H.focus ? 1 : 0, z = +!!H.press;
554
554
  }
555
- let xe = window.matchMedia("(prefers-reduced-motion: reduce)"), Se = null, Ce = 0, we = !1, Te = !1;
556
- function Ee() {
555
+ let be = window.matchMedia("(prefers-reduced-motion: reduce)"), xe = null, Se = 0, Ce = !1, we = !1;
556
+ function Te() {
557
557
  let e = getComputedStyle(n);
558
558
  return ce.base = fe(e, "--game-ui-liquid-metal-rest", ce.base), ce.speed = fe(e, "--game-ui-liquid-metal-sweep-speed", ce.speed), oe.disp = fe(e, "--game-ui-liquid-metal-dispersion", oe.disp), ue.glow = fe(e, "--game-ui-liquid-metal-bloom", ue.glow), { accent: de(getComputedStyle(O).color) };
559
559
  }
560
- function De(t) {
561
- if (Ce = 0, we || Te) return;
560
+ function Ee(t) {
561
+ if (Se = 0, Ce || we) return;
562
562
  let r = (t - he) / 1e3;
563
563
  he = t;
564
564
  let l = Math.min(r, 1 / 20);
565
- xe.matches || (me += l);
566
- let u = M > j ? 1 - .0012 ** l : 1 - 12e-5 ** l;
567
- j += (M - j) * u, Math.abs(M - j) < 8e-4 && (j = M);
568
- let d = L > ve ? 1 - 1e-9 ** l : 1 - .004 ** l;
569
- ve += (L - ve) * d, Math.abs(L - ve) < .002 && (ve = L);
565
+ be.matches || (me += l);
566
+ let u = j > A ? 1 - .0012 ** l : 1 - 12e-5 ** l;
567
+ A += (j - A) * u, Math.abs(j - A) < 8e-4 && (A = j);
568
+ let d = z > R ? 1 - 1e-9 ** l : 1 - .004 ** l;
569
+ R += (z - R) * d, Math.abs(z - R) < .002 && (R = z);
570
570
  let f = !1;
571
571
  for (let e = 0; e < ge.length; e += 1) {
572
572
  let t = ge[e];
573
- t && (t.on && me - t.t > 4 && (t.on = 0), t.on && (f = !0), _e[e * 4] = t.x, _e[e * 4 + 1] = t.y, _e[e * 4 + 2] = t.t, _e[e * 4 + 3] = t.on);
573
+ t && (t.on && me - t.t > 4 && (t.on = 0), t.on && (f = !0), I[e * 4] = t.x, I[e * 4 + 1] = t.y, I[e * 4 + 2] = t.t, I[e * 4 + 3] = t.on);
574
574
  }
575
- let p = 1 - P.ptrLag ** +l, O = (R.x - z.x) * p, N = (R.y - z.y) * p;
576
- z.x += O, z.y += N;
577
- let ne = Math.min(Math.hypot(O, N) / Math.max(l, .001) / P.ptrVref, 1);
578
- be += (ne - be) * (1 - (ne > be ? .001 : .02) ** l);
579
- let re = B.over || B.press ? 1 : 0;
580
- ye += (re - ye) * (1 - .004 ** l), Math.abs(re - ye) < .002 && (ye = re), B.over = n.matches(":hover"), B.focus = n.matches(":focus-visible"), U(), D && k();
581
- let ie = xe.matches && !f && ye < .002 ? `${j}|${ve}|${b}|${x}` : null;
582
- if (ie !== null && ie === Se) {
583
- Ce = requestAnimationFrame(De);
575
+ let p = 1 - P.ptrLag ** +l, O = (_e.x - B.x) * p, M = (_e.y - B.y) * p;
576
+ B.x += O, B.y += M;
577
+ let re = Math.min(Math.hypot(O, M) / Math.max(l, .001) / P.ptrVref, 1);
578
+ ve += (re - ve) * (1 - (re > ve ? .001 : .02) ** l);
579
+ let ie = H.over || H.press ? 1 : 0;
580
+ V += (ie - V) * (1 - .004 ** l), Math.abs(ie - V) < .002 && (V = ie), H.over = n.matches(":hover"), H.focus = n.matches(":focus-visible"), ye(), D && ee();
581
+ let ae = be.matches && !f && V < .002 ? `${A}|${R}|${b}|${x}` : null;
582
+ if (ae !== null && ae === xe) {
583
+ Se = requestAnimationFrame(Ee);
584
584
  return;
585
585
  }
586
- Se = ie;
587
- let { accent: ae } = Ee();
588
- for (let e = 0; e < ee.length; e += 1) {
586
+ xe = ae;
587
+ let { accent: N } = Te();
588
+ for (let e = 0; e < te.length; e += 1) {
589
589
  let t = se[e];
590
- t && (ee[e] = oe[t]);
590
+ t && (te[e] = oe[t]);
591
591
  }
592
- for (let e = 0; e < te.length; e += 1) {
592
+ for (let e = 0; e < ne.length; e += 1) {
593
593
  let t = le[e];
594
- t && (te[e] = ce[t]);
594
+ t && (ne[e] = ce[t]);
595
595
  }
596
- let de = Math.max(C, 110), fe = Math.max(2.4, de / 516 * 3.2), F = pe(e, i.u), I = pe(e, a.u), V = pe(e, o.u), H = pe(e, s.u), W = pe(e, c.u);
597
- e.useProgram(i.p), F.f2("uC", w, T), F.f2("uHalf", S / 2, C / 2), F.f1("uT", me), F.f1("uHover", j), F.f1("uPress", ve), F.fv4("uRip", _e), F.f4("uRipK", P.speed, P.width, P.decay, P.amp), F.f4("uRipK2", P.facet, P.lobes, P.sharp, P.emit), F.f4("uPtr", z.x, z.y, ye, be), F.f4("uPtrK", P.ptrRad, P.ptrAmp, P.ptrFast, P.ptrRim), F.f3("uAccent", ae[0], ae[1], ae[2]), F.fv1("uP", ee), A(m), e.useProgram(a.p), I.f2("uC", w, T), I.f2("uHalf", S / 2, C / 2), I.f1("uT", me), I.f1("uBw", fe), I.f1("uPress", ve), I.fv4("uRip", _e), I.f4("uRipK", P.speed, P.width, P.decay, P.amp), I.f4("uRipK2", P.facet, P.lobes, P.sharp, P.emit), I.f4("uPtr", z.x, z.y, ye, be), I.f4("uPtrK", P.ptrRad, P.ptrAmp, P.ptrFast, P.ptrRim), I.f3("uAccent", ae[0], ae[1], ae[2]), I.fv1("uE", te), A(h), e.useProgram(o.p), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, m.tex), V.i1("uTex", 0), V.f1("uAdd", 0), V.f2("uDstTexel", 1 / g.w, 1 / g.h), V.f2("uSrcTexel", 1 / b, 1 / x), A(g), e.useProgram(s.p), H.i1("uTex", 0), H.f2("uTexel", 1 / g.w, 1 / g.h);
598
- let Oe = ue.soften * (de * .5) * .95;
599
- if (Oe > .1) {
600
- let t = Math.min(4, Math.max(1, Math.ceil(Oe / 3)));
601
- H.f1("uR", Oe / Math.sqrt(t) / 1.95);
602
- for (let n = 0; n < t; n += 1) e.bindTexture(e.TEXTURE_2D, g.tex), H.f2("uDir", 1, 0), A(_), e.bindTexture(e.TEXTURE_2D, _.tex), H.f2("uDir", 0, 1), A(g);
596
+ let de = Math.max(C, 110), fe = Math.max(2.4, de / 516 * 3.2), F = pe(e, i.u), L = pe(e, a.u), U = pe(e, o.u), W = pe(e, s.u), G = pe(e, c.u);
597
+ e.useProgram(i.p), F.f2("uC", w, T), F.f2("uHalf", S / 2, C / 2), F.f1("uT", me), F.f1("uHover", A), F.f1("uPress", R), F.fv4("uRip", I), F.f4("uRipK", P.speed, P.width, P.decay, P.amp), F.f4("uRipK2", P.facet, P.lobes, P.sharp, P.emit), F.f4("uPtr", B.x, B.y, V, ve), F.f4("uPtrK", P.ptrRad, P.ptrAmp, P.ptrFast, P.ptrRim), F.f3("uAccent", N[0], N[1], N[2]), F.fv1("uP", te), k(m), e.useProgram(a.p), L.f2("uC", w, T), L.f2("uHalf", S / 2, C / 2), L.f1("uT", me), L.f1("uBw", fe), L.f1("uPress", R), L.fv4("uRip", I), L.f4("uRipK", P.speed, P.width, P.decay, P.amp), L.f4("uRipK2", P.facet, P.lobes, P.sharp, P.emit), L.f4("uPtr", B.x, B.y, V, ve), L.f4("uPtrK", P.ptrRad, P.ptrAmp, P.ptrFast, P.ptrRim), L.f3("uAccent", N[0], N[1], N[2]), L.fv1("uE", ne), k(h), e.useProgram(o.p), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, m.tex), U.i1("uTex", 0), U.f1("uAdd", 0), U.f2("uDstTexel", 1 / g.w, 1 / g.h), U.f2("uSrcTexel", 1 / b, 1 / x), k(g), e.useProgram(s.p), W.i1("uTex", 0), W.f2("uTexel", 1 / g.w, 1 / g.h);
598
+ let De = ue.soften * (de * .5) * .95;
599
+ if (De > .1) {
600
+ let t = Math.min(4, Math.max(1, Math.ceil(De / 3)));
601
+ W.f1("uR", De / Math.sqrt(t) / 1.95);
602
+ for (let n = 0; n < t; n += 1) e.bindTexture(e.TEXTURE_2D, g.tex), W.f2("uDir", 1, 0), k(_), e.bindTexture(e.TEXTURE_2D, _.tex), W.f2("uDir", 0, 1), k(g);
603
603
  }
604
- e.useProgram(o.p), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, g.tex), e.activeTexture(e.TEXTURE1), e.bindTexture(e.TEXTURE_2D, h.tex), V.i1("uTex", 0), V.i1("uTex2", 1), V.f1("uAdd", 1), V.f2("uDstTexel", 1 / v.w, 1 / v.h), V.f2("uSrcTexel", 1 / g.w, 1 / g.h), A(v), e.useProgram(s.p), e.activeTexture(e.TEXTURE0), H.i1("uTex", 0), H.f2("uTexel", 1 / v.w, 1 / v.h);
605
- let ke = ue.glowR * (de / E) / 129;
604
+ e.useProgram(o.p), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, g.tex), e.activeTexture(e.TEXTURE1), e.bindTexture(e.TEXTURE_2D, h.tex), U.i1("uTex", 0), U.i1("uTex2", 1), U.f1("uAdd", 1), U.f2("uDstTexel", 1 / v.w, 1 / v.h), U.f2("uSrcTexel", 1 / g.w, 1 / g.h), k(v), e.useProgram(s.p), e.activeTexture(e.TEXTURE0), W.i1("uTex", 0), W.f2("uTexel", 1 / v.w, 1 / v.h);
605
+ let Oe = ue.glowR * (de / E) / 129;
606
606
  for (let t of [
607
607
  1,
608
608
  2.3,
609
609
  5.2,
610
610
  9
611
- ].map((e) => e * ke)) H.f1("uR", t), e.bindTexture(e.TEXTURE_2D, v.tex), H.f2("uDir", 1, 0), A(y), e.bindTexture(e.TEXTURE_2D, y.tex), H.f2("uDir", 0, 1), A(v);
612
- e.useProgram(c.p), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, g.tex), W.i1("uSoft", 0), e.activeTexture(e.TEXTURE1), e.bindTexture(e.TEXTURE_2D, h.tex), W.i1("uRim", 1), e.activeTexture(e.TEXTURE2), e.bindTexture(e.TEXTURE_2D, v.tex), W.i1("uGlow", 2), W.f2("uRes", b, x), W.f2("uC", w, T), W.f2("uHalf", S / 2, C / 2), W.f1("uT", me), W.fv4("uRip", _e), W.f4("uRipK", P.speed, P.width, P.decay, P.amp), W.f4("uRipK2", P.facet, P.lobes, P.sharp, P.emit), W.f3("uAccent", ae[0], ae[1], ae[2]), W.f1("uGlowGain", ue.glow), W.f1("uGlowIn", ue.glowIn), W.f1("uOccl", ue.occl), W.f1("uDim", oe.dim), W.f1("uPunch", ue.punch), A(null), Ce = requestAnimationFrame(De);
611
+ ].map((e) => e * Oe)) W.f1("uR", t), e.bindTexture(e.TEXTURE_2D, v.tex), W.f2("uDir", 1, 0), k(y), e.bindTexture(e.TEXTURE_2D, y.tex), W.f2("uDir", 0, 1), k(v);
612
+ e.useProgram(c.p), e.activeTexture(e.TEXTURE0), e.bindTexture(e.TEXTURE_2D, g.tex), G.i1("uSoft", 0), e.activeTexture(e.TEXTURE1), e.bindTexture(e.TEXTURE_2D, h.tex), G.i1("uRim", 1), e.activeTexture(e.TEXTURE2), e.bindTexture(e.TEXTURE_2D, v.tex), G.i1("uGlow", 2), G.f2("uRes", b, x), G.f2("uC", w, T), G.f2("uHalf", S / 2, C / 2), G.f1("uT", me), G.fv4("uRip", I), G.f4("uRipK", P.speed, P.width, P.decay, P.amp), G.f4("uRipK2", P.facet, P.lobes, P.sharp, P.emit), G.f3("uAccent", N[0], N[1], N[2]), G.f1("uGlowGain", ue.glow), G.f1("uGlowIn", ue.glowIn), G.f1("uOccl", ue.occl), G.f1("uDim", oe.dim), G.f1("uPunch", ue.punch), k(null), Se = requestAnimationFrame(Ee);
613
613
  }
614
- let W = (e) => {
614
+ let G = (e) => {
615
615
  if (e.pointerType !== "mouse") return;
616
- let [t, n] = H(e);
617
- R.x = t, R.y = n, z.x = t, z.y = n, be = 0, B.over = !0, U();
616
+ let [t, n] = W(e);
617
+ _e.x = t, _e.y = n, B.x = t, B.y = n, ve = 0, H.over = !0, ye();
618
+ }, De = (e) => {
619
+ e.pointerType === "mouse" && (H.over = !1, ye());
618
620
  }, Oe = (e) => {
619
- e.pointerType === "mouse" && (B.over = !1, U());
621
+ if (!H.over && !H.press) return;
622
+ let [t, n] = W(e);
623
+ _e.x = t, _e.y = n;
620
624
  }, ke = (e) => {
621
- if (!B.over && !B.press) return;
622
- let [t, n] = H(e);
623
- R.x = t, R.y = n;
624
- }, Ae = (e) => {
625
- let [t, n] = H(e);
626
- R.x = t, R.y = n, B.press = !0, U(), V(t, n);
625
+ let [t, n] = W(e);
626
+ _e.x = t, _e.y = n, H.press = !0, ye(), U(t, n);
627
+ }, Ae = () => {
628
+ H.press = !1, ye();
627
629
  }, je = () => {
628
- B.press = !1, U();
630
+ H.focus = n.matches(":focus-visible"), ye();
629
631
  }, Me = () => {
630
- B.focus = n.matches(":focus-visible"), U();
631
- }, Ne = () => {
632
- B.focus = !1, U();
632
+ H.focus = !1, ye();
633
+ }, Ne = (e) => {
634
+ e.key !== "Enter" && e.key !== " " || e.repeat || (H.press = !0, ye(), U(0, 0));
633
635
  }, Pe = (e) => {
634
- e.key !== "Enter" && e.key !== " " || e.repeat || (B.press = !0, U(), V(0, 0));
635
- }, Fe = (e) => {
636
- e.key !== "Enter" && e.key !== " " || (B.press = !1, U());
636
+ e.key !== "Enter" && e.key !== " " || (H.press = !1, ye());
637
637
  };
638
- n.addEventListener("pointerenter", W), n.addEventListener("pointerleave", Oe), window.addEventListener("pointermove", ke, { passive: !0 }), n.addEventListener("pointerdown", Ae), window.addEventListener("pointerup", je), window.addEventListener("pointercancel", je), n.addEventListener("focus", Me), n.addEventListener("blur", Ne), n.addEventListener("keydown", Pe), n.addEventListener("keyup", Fe);
639
- let Ie = new ResizeObserver(() => {
638
+ n.addEventListener("pointerenter", G), n.addEventListener("pointerleave", De), window.addEventListener("pointermove", Oe, { passive: !0 }), n.addEventListener("pointerdown", ke), window.addEventListener("pointerup", Ae), window.addEventListener("pointercancel", Ae), n.addEventListener("focus", je), n.addEventListener("blur", Me), n.addEventListener("keydown", Ne), n.addEventListener("keyup", Pe);
639
+ let Fe = new ResizeObserver(() => {
640
640
  D = !0;
641
641
  });
642
- return Ie.observe(r), Ie.observe(n), k(), Ce = requestAnimationFrame(De), {
642
+ return Fe.observe(r), Fe.observe(n), ee(), Se = requestAnimationFrame(Ee), {
643
643
  pause: () => {
644
- we = !0, Ce && cancelAnimationFrame(Ce), Ce = 0;
644
+ Ce = !0, Se && cancelAnimationFrame(Se), Se = 0;
645
645
  },
646
646
  resume: () => {
647
- Te || (we = !1, he = performance.now(), Se = null, Ce ||= requestAnimationFrame(De));
647
+ we || (Ce = !1, he = performance.now(), xe = null, Se ||= requestAnimationFrame(Ee));
648
648
  },
649
649
  dispose: () => {
650
- Te || (Te = !0, we = !0, Ce && cancelAnimationFrame(Ce), Ce = 0, Ie.disconnect(), n.removeEventListener("pointerenter", W), n.removeEventListener("pointerleave", Oe), window.removeEventListener("pointermove", ke), n.removeEventListener("pointerdown", Ae), window.removeEventListener("pointerup", je), window.removeEventListener("pointercancel", je), n.removeEventListener("focus", Me), n.removeEventListener("blur", Ne), n.removeEventListener("keydown", Pe), n.removeEventListener("keyup", Fe), O.remove(), e.getExtension("WEBGL_lose_context")?.loseContext());
650
+ we || (we = !0, Ce = !0, Se && cancelAnimationFrame(Se), Se = 0, Fe.disconnect(), n.removeEventListener("pointerenter", G), n.removeEventListener("pointerleave", De), window.removeEventListener("pointermove", Oe), n.removeEventListener("pointerdown", ke), window.removeEventListener("pointerup", Ae), window.removeEventListener("pointercancel", Ae), n.removeEventListener("focus", je), n.removeEventListener("blur", Me), n.removeEventListener("keydown", Ne), n.removeEventListener("keyup", Pe), O.remove(), e.getExtension("WEBGL_lose_context")?.loseContext());
651
651
  }
652
652
  };
653
653
  }
654
654
  //#endregion
655
655
  //#region src/LiquidMetalButton.tsx
656
- function _e({ children: e, className: r, onClick: i, sound: a = !1, type: o = "button", renderer: s = "auto", ...c }) {
656
+ function I({ children: e, className: r, onClick: i, sound: a = !1, type: o = "button", renderer: s = "auto", ...c }) {
657
657
  let u = p(null), d = p(null), f = p(null), [h, g] = m("css");
658
658
  l(() => {
659
659
  let e = u.current, t = d.current, n = f.current;
660
660
  if (!e || !t || !n) return;
661
661
  let r = window.matchMedia("(prefers-reduced-motion: reduce)"), i = !1, a = !1, o = null, c = !1, l = () => {
662
- o?.dispose(), o = null, a &&= (ee(), !1), c || g("css");
662
+ o?.dispose(), o = null, a &&= (te(), !1), c || g("css");
663
663
  }, p = () => {
664
- if (!(c || o) && te({
664
+ if (!(c || o) && ne({
665
665
  renderer: s,
666
666
  hasWebGL2: typeof WebGL2RenderingContext < "u",
667
667
  prefersReducedMotion: r.matches,
668
668
  isInViewport: i
669
- }) && A()) {
669
+ }) && k()) {
670
670
  if (a = !0, o = me(n, t, e), !o) {
671
- ee(), a = !1;
671
+ te(), a = !1;
672
672
  return;
673
673
  }
674
674
  g("webgl");
@@ -725,7 +725,7 @@ function _e({ children: e, className: r, onClick: i, sound: a = !1, type: o = "b
725
725
  }
726
726
  //#endregion
727
727
  //#region src/clay/tokens.ts
728
- var I = {
728
+ var L = {
729
729
  ink: "#3b2d23",
730
730
  inkMuted: "#786250",
731
731
  parchment: "#fff8ec",
@@ -748,7 +748,7 @@ var I = {
748
748
  overlayGlassText: "#fff6ee",
749
749
  liquidMetalFace: "#3a2518",
750
750
  liquidMetalInk: "#fff8ec"
751
- }, ve = {
751
+ }, R = {
752
752
  face: "var(--game-ui-liquid-metal-face)",
753
753
  ink: "var(--game-ui-liquid-metal-ink)",
754
754
  accent: "var(--game-ui-liquid-metal-accent)",
@@ -756,7 +756,7 @@ var I = {
756
756
  sweepSpeed: "var(--game-ui-liquid-metal-sweep-speed)",
757
757
  rest: "var(--game-ui-liquid-metal-rest)",
758
758
  bloom: "var(--game-ui-liquid-metal-bloom)"
759
- }, L = {
759
+ }, z = {
760
760
  morphShape: "var(--game-ui-liquid-gooey-morph-shape)",
761
761
  morphSpeed: "var(--game-ui-liquid-gooey-morph-speed)",
762
762
  morphBounce: "var(--game-ui-liquid-gooey-morph-bounce)",
@@ -840,7 +840,7 @@ var I = {
840
840
  dissolveStrength: "var(--game-ui-liquid-gooey-dissolve-strength)",
841
841
  dissolveSink: "var(--game-ui-liquid-gooey-dissolve-sink)",
842
842
  dissolveSeamBlur: "var(--game-ui-liquid-gooey-dissolve-seam-blur)"
843
- }, R = {
843
+ }, _e = {
844
844
  bg: "var(--game-ui-overlay-glass-bg)",
845
845
  bgHover: "var(--game-ui-overlay-glass-bg-hover)",
846
846
  bgStrong: "var(--game-ui-overlay-glass-bg-strong)",
@@ -852,7 +852,7 @@ var I = {
852
852
  blur: "var(--game-ui-overlay-glass-blur)",
853
853
  focusRing: "var(--game-ui-overlay-glass-focus-ring)",
854
854
  primaryFill: "var(--game-ui-overlay-glass-primary-fill)"
855
- }, z = {
855
+ }, B = {
856
856
  background: "var(--game-ui-bg)",
857
857
  playfieldScrim: "var(--game-ui-playfield-scrim)",
858
858
  surface: "var(--game-ui-surface)",
@@ -871,7 +871,7 @@ var I = {
871
871
  borderSubtle: "var(--game-ui-border-subtle)",
872
872
  borderStrong: "var(--game-ui-border-strong)",
873
873
  disabled: "var(--game-ui-disabled)"
874
- }, ye = {
874
+ }, V = {
875
875
  familyDisplay: "var(--game-ui-font-display)",
876
876
  familyBody: "var(--game-ui-font-body)",
877
877
  familyMono: "var(--game-ui-font-mono)",
@@ -889,7 +889,7 @@ var I = {
889
889
  weightBody: "var(--game-ui-weight-body)",
890
890
  weightStrong: "var(--game-ui-weight-strong)",
891
891
  weightTitle: "var(--game-ui-weight-title)"
892
- }, be = {
892
+ }, ve = {
893
893
  px2: "var(--game-ui-space-2)",
894
894
  px4: "var(--game-ui-space-4)",
895
895
  px6: "var(--game-ui-space-6)",
@@ -904,33 +904,33 @@ var I = {
904
904
  safeRight: "var(--game-ui-safe-right)",
905
905
  safeBottom: "var(--game-ui-safe-bottom)",
906
906
  safeLeft: "var(--game-ui-safe-left)"
907
- }, B = {
907
+ }, H = {
908
908
  bead: "var(--game-ui-radius-bead)",
909
909
  control: "var(--game-ui-radius-control)",
910
910
  card: "var(--game-ui-radius-card)",
911
911
  panel: "var(--game-ui-radius-panel)",
912
912
  modal: "var(--game-ui-radius-modal)"
913
- }, V = {
913
+ }, U = {
914
914
  button: "var(--game-ui-shadow-button)",
915
915
  panel: "var(--game-ui-shadow-panel)",
916
916
  modal: "var(--game-ui-shadow-modal)",
917
917
  inset: "var(--game-ui-shadow-inset)",
918
918
  stroke: "var(--game-ui-stroke)"
919
- }, H = {
919
+ }, W = {
920
920
  fast: "var(--game-ui-motion-fast)",
921
921
  base: "var(--game-ui-motion-base)",
922
922
  slow: "var(--game-ui-motion-slow)",
923
923
  easingPop: "var(--game-ui-ease-pop)",
924
924
  easingSoft: "var(--game-ui-ease-soft)",
925
925
  reducedMotion: "var(--game-ui-reduced-motion-policy)"
926
- }, U = {
926
+ }, ye = {
927
927
  playfield: "var(--game-ui-z-playfield)",
928
928
  hud: "var(--game-ui-z-hud)",
929
929
  sidebar: "var(--game-ui-z-sidebar)",
930
930
  overlay: "var(--game-ui-z-overlay)",
931
931
  modal: "var(--game-ui-z-modal)",
932
932
  toast: "var(--game-ui-z-toast)"
933
- }, xe = {
933
+ }, be = {
934
934
  touchMinimumPx: 44,
935
935
  touchPrimaryPx: 52,
936
936
  touchIconPx: 48,
@@ -941,7 +941,7 @@ var I = {
941
941
  desktopProofHeightPx: 900,
942
942
  mobileLandscapeProofWidthPx: 844,
943
943
  mobileLandscapeProofHeightPx: 390
944
- }, Se = {
944
+ }, xe = {
945
945
  iconSm: "var(--game-ui-asset-icon-sm)",
946
946
  iconMd: "var(--game-ui-asset-icon-md)",
947
947
  iconLg: "var(--game-ui-asset-icon-lg)",
@@ -953,58 +953,58 @@ var I = {
953
953
  terrainToolHitSize: "var(--game-ui-terrain-tool-hit-size)",
954
954
  buildRailCardSize: "var(--game-ui-build-rail-card-size)",
955
955
  brushNumberWidth: "var(--game-ui-brush-number-width)"
956
- }, Ce = {
957
- colors: I,
958
- semantic: z,
959
- typography: ye,
960
- spacing: be,
961
- radius: B,
962
- elevation: V,
963
- motion: H,
964
- layers: U,
965
- targets: xe,
966
- assetSizing: Se,
967
- overlayGlass: R,
968
- liquidMetal: ve,
969
- liquidGooey: L
970
- }, we = 2, Te = 48e4, Ee = 2, De = Te, W = 0;
971
- function Oe(e, t) {
956
+ }, Se = {
957
+ colors: L,
958
+ semantic: B,
959
+ typography: V,
960
+ spacing: ve,
961
+ radius: H,
962
+ elevation: U,
963
+ motion: W,
964
+ layers: ye,
965
+ targets: be,
966
+ assetSizing: xe,
967
+ overlayGlass: _e,
968
+ liquidMetal: R,
969
+ liquidGooey: z
970
+ }, Ce = 2, we = 48e4, Te = 2, Ee = we, G = 0;
971
+ function De(e, t) {
972
972
  return Number.isFinite(e) ? Math.max(0, Math.floor(e)) : t;
973
973
  }
974
- function ke() {
974
+ function Oe() {
975
975
  return {
976
- maxAnimatedGroups: Ee,
977
- maxFilterArea: De,
978
- activeGroups: W
976
+ maxAnimatedGroups: Te,
977
+ maxFilterArea: Ee,
978
+ activeGroups: G
979
979
  };
980
980
  }
981
- function Ae(e) {
981
+ function ke(e) {
982
982
  if (typeof e == "number") {
983
- Ee = Oe(e, 0);
983
+ Te = De(e, 0);
984
984
  return;
985
985
  }
986
- e.maxAnimatedGroups !== void 0 && (Ee = Oe(e.maxAnimatedGroups, 0)), e.maxFilterArea !== void 0 && (De = Oe(e.maxFilterArea, 0));
986
+ e.maxAnimatedGroups !== void 0 && (Te = De(e.maxAnimatedGroups, 0)), e.maxFilterArea !== void 0 && (Ee = De(e.maxFilterArea, 0));
987
987
  }
988
- function je(e) {
989
- return W >= Ee || (Number.isFinite(e) ? Math.max(0, e) : Infinity) > De ? !1 : (W += 1, !0);
988
+ function Ae(e) {
989
+ return G >= Te || (Number.isFinite(e) ? Math.max(0, e) : Infinity) > Ee ? !1 : (G += 1, !0);
990
990
  }
991
- function Me() {
992
- W > 0 && --W;
991
+ function je() {
992
+ G > 0 && --G;
993
993
  }
994
994
  //#endregion
995
995
  //#region src/liquidGooeyFilter.tsx
996
- var Ne = "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 60 -29.5", Pe = .5, Fe = {
996
+ var Me = "1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 60 -29.5", Ne = .5, Pe = {
997
997
  waviness: 6,
998
998
  wavinessFreq: .018
999
999
  };
1000
- function Ie(e) {
1000
+ function Fe(e) {
1001
1001
  return e.spread === 0 ? "shape" : "bin";
1002
1002
  }
1003
- function Le(e, t) {
1003
+ function Ie(e, t) {
1004
1004
  return t !== null || e.some((e) => e.spread !== 0);
1005
1005
  }
1006
- function Re({ index: n, shadow: r }) {
1007
- let i = [], a = Ie(r), o = a;
1006
+ function Le({ index: n, shadow: r }) {
1007
+ let i = [], a = Fe(r), o = a;
1008
1008
  return r.spread !== 0 && (i.push(/* @__PURE__ */ t("feMorphology", {
1009
1009
  in: o,
1010
1010
  operator: r.spread > 0 ? "erode" : "dilate",
@@ -1034,7 +1034,7 @@ function Re({ index: n, shadow: r }) {
1034
1034
  result: `shadow-${n}`
1035
1035
  }, "fill")), /* @__PURE__ */ t(e, { children: i });
1036
1036
  }
1037
- function ze({ index: n, shadow: r }) {
1037
+ function Re({ index: n, shadow: r }) {
1038
1038
  let i = [], a = "shape";
1039
1039
  return r.spread !== 0 && (i.push(/* @__PURE__ */ t("feMorphology", {
1040
1040
  in: "bin",
@@ -1060,7 +1060,7 @@ function ze({ index: n, shadow: r }) {
1060
1060
  result: `shadow-${n}`
1061
1061
  }, "fill")), /* @__PURE__ */ t(e, { children: i });
1062
1062
  }
1063
- function Be({ stroke: n }) {
1063
+ function ze({ stroke: n }) {
1064
1064
  let r = [];
1065
1065
  return r.push(/* @__PURE__ */ t("feMorphology", {
1066
1066
  in: "bin",
@@ -1082,7 +1082,7 @@ function Be({ stroke: n }) {
1082
1082
  result: "stroke-out"
1083
1083
  }, "fill")), /* @__PURE__ */ t(e, { children: r });
1084
1084
  }
1085
- function Ve({ blur: r, contrast: i, shadows: a, stroke: o, waviness: s = Fe.waviness, wavinessFreq: c = Fe.wavinessFreq }) {
1085
+ function Be({ blur: r, contrast: i, shadows: a, stroke: o, waviness: s = Pe.waviness, wavinessFreq: c = Pe.wavinessFreq }) {
1086
1086
  let l = Math.round((.5 - 5 / 12 * i) * 100) / 100, u = s > 0;
1087
1087
  return /* @__PURE__ */ n(e, { children: [
1088
1088
  /* @__PURE__ */ t("feGaussianBlur", {
@@ -1120,24 +1120,24 @@ function Ve({ blur: r, contrast: i, shadows: a, stroke: o, waviness: s = Fe.wavi
1120
1120
  }),
1121
1121
  /* @__PURE__ */ t("feGaussianBlur", {
1122
1122
  in: "shape-displaced",
1123
- stdDeviation: Pe,
1123
+ stdDeviation: Ne,
1124
1124
  result: "shape"
1125
1125
  })
1126
1126
  ] }) : null,
1127
- Le(a, o) ? /* @__PURE__ */ t("feColorMatrix", {
1127
+ Ie(a, o) ? /* @__PURE__ */ t("feColorMatrix", {
1128
1128
  in: "shape",
1129
1129
  type: "matrix",
1130
- values: Ne,
1130
+ values: Me,
1131
1131
  result: "bin"
1132
1132
  }) : null,
1133
- a.map((e, n) => e.inset ? /* @__PURE__ */ t(Re, {
1133
+ a.map((e, n) => e.inset ? /* @__PURE__ */ t(Le, {
1134
1134
  index: n,
1135
1135
  shadow: e
1136
- }, n) : /* @__PURE__ */ t(ze, {
1136
+ }, n) : /* @__PURE__ */ t(Re, {
1137
1137
  index: n,
1138
1138
  shadow: e
1139
1139
  }, n)),
1140
- o ? /* @__PURE__ */ t(Be, { stroke: o }) : null,
1140
+ o ? /* @__PURE__ */ t(ze, { stroke: o }) : null,
1141
1141
  a.length > 0 || o ? /* @__PURE__ */ n("feMerge", { children: [
1142
1142
  a.map((e, t) => e.inset ? -1 : t).filter((e) => e >= 0).reverse().map((e) => /* @__PURE__ */ t("feMergeNode", { in: `shadow-${e}` }, e)),
1143
1143
  /* @__PURE__ */ t("feMergeNode", { in: "shape" }),
@@ -1148,16 +1148,16 @@ function Ve({ blur: r, contrast: i, shadows: a, stroke: o, waviness: s = Fe.wavi
1148
1148
  }
1149
1149
  //#endregion
1150
1150
  //#region src/liquidGooeyWaviness.ts
1151
- var He = .3;
1152
- function Ue(e, t, n = He) {
1151
+ var Ve = .3;
1152
+ function He(e, t, n = Ve) {
1153
1153
  let r = Math.max(0, Number.isFinite(e) ? e : 0);
1154
1154
  if (n === !1) return r;
1155
- let i = Math.max(0, Number.isFinite(n) ? n : He), a = Math.max(0, Number.isFinite(t) ? t : 0);
1155
+ let i = Math.max(0, Number.isFinite(n) ? n : Ve), a = Math.max(0, Number.isFinite(t) ? t : 0);
1156
1156
  return a > 0 ? Math.min(r, a * i) : r;
1157
1157
  }
1158
1158
  //#endregion
1159
1159
  //#region src/liquidGooeyGeometry.ts
1160
- function We(e, t) {
1160
+ function Ue(e, t) {
1161
1161
  let n = 0, r = 0, i = e;
1162
1162
  for (; i && i !== t && t.contains(i);) n += i.offsetLeft, r += i.offsetTop, i = i.offsetParent;
1163
1163
  return {
@@ -1165,7 +1165,7 @@ function We(e, t) {
1165
1165
  y: r
1166
1166
  };
1167
1167
  }
1168
- function Ge(e, t, n) {
1168
+ function We(e, t, n) {
1169
1169
  let r = getComputedStyle(e), i = (e) => {
1170
1170
  let r = e.split(" ")[0] ?? "";
1171
1171
  return r.endsWith("%") ? (parseFloat(r) || 0) / 100 * Math.min(t, n) : parseFloat(r) || 0;
@@ -1177,7 +1177,7 @@ function Ge(e, t, n) {
1177
1177
  i(r.borderBottomLeftRadius)
1178
1178
  ];
1179
1179
  }
1180
- function Ke(e) {
1180
+ function Ge(e) {
1181
1181
  return typeof e == "number" ? [
1182
1182
  e,
1183
1183
  e,
@@ -1185,19 +1185,19 @@ function Ke(e) {
1185
1185
  e
1186
1186
  ] : e;
1187
1187
  }
1188
- function qe(e, t, n, r, i) {
1188
+ function Ke(e, t, n, r, i) {
1189
1189
  let [a, o, s, c] = i.map((e) => Math.max(0, e)), l = Math.min(1, n / Math.max(1e-6, a + o), n / Math.max(1e-6, c + s), r / Math.max(1e-6, a + c), r / Math.max(1e-6, o + s));
1190
1190
  return a *= l, o *= l, s *= l, c *= l, `M ${e + a} ${t} H ${e + n - o} A ${o} ${o} 0 0 1 ${e + n} ${t + o} V ${t + r - s} A ${s} ${s} 0 0 1 ${e + n - s} ${t + r} H ${e + c} A ${c} ${c} 0 0 1 ${e} ${t + r - c} V ${t + a} A ${a} ${a} 0 0 1 ${e + a} ${t} Z`;
1191
1191
  }
1192
1192
  //#endregion
1193
1193
  //#region src/liquidGooeyMove.ts
1194
- var Je = {
1194
+ var qe = {
1195
1195
  stiffness: 380,
1196
1196
  damping: 18,
1197
1197
  stretch: .18,
1198
1198
  tail: .46,
1199
1199
  force: .5
1200
- }, G = {
1200
+ }, K = {
1201
1201
  tailSpringStiffness: 170,
1202
1202
  tailSpringDamping: 22,
1203
1203
  stretchSpeed: 6e-4,
@@ -1221,67 +1221,67 @@ var Je = {
1221
1221
  settleSpeed: 1,
1222
1222
  integrationRate: 60
1223
1223
  };
1224
- function Ye(e, t = 0, n = 1) {
1224
+ function Je(e, t = 0, n = 1) {
1225
1225
  return Math.min(n, Math.max(t, e));
1226
1226
  }
1227
- function Xe(e, t) {
1227
+ function Ye(e, t) {
1228
1228
  return e !== void 0 && Number.isFinite(e) ? e : t;
1229
1229
  }
1230
- function Ze(e) {
1230
+ function Xe(e) {
1231
1231
  return /^var\((--[\w-]+)\)$/.exec(e.trim())?.[1] ?? null;
1232
1232
  }
1233
- function K(e, t, n) {
1234
- let r = e?.ownerDocument.defaultView, i = Ze(L[t]);
1233
+ function Ze(e, t, n) {
1234
+ let r = e?.ownerDocument.defaultView, i = Xe(z[t]);
1235
1235
  if (!r || !i) return n;
1236
1236
  let a = r.getComputedStyle(e).getPropertyValue(i), o = Number.parseFloat(a);
1237
1237
  return Number.isFinite(o) ? o : n;
1238
1238
  }
1239
1239
  function Qe(e) {
1240
- let t = (t, n) => K(e, t, n);
1240
+ let t = (t, n) => Ze(e, t, n);
1241
1241
  return {
1242
- stiffness: Math.max(.001, t("moveStiffness", Je.stiffness)),
1243
- damping: Math.max(0, t("moveDamping", Je.damping)),
1244
- stretch: Ye(t("moveStretch", Je.stretch)),
1245
- tail: Ye(t("moveTail", Je.tail)),
1246
- force: Ye(t("moveForce", Je.force)),
1247
- tailSpringStiffness: Math.max(.001, t("moveTailSpringStiffness", G.tailSpringStiffness)),
1248
- tailSpringDamping: Math.max(0, t("moveTailSpringDamping", G.tailSpringDamping)),
1249
- stretchSpeed: Math.max(0, t("moveStretchSpeed", G.stretchSpeed)),
1250
- stretchSquash: Math.max(0, t("moveStretchSquash", G.stretchSquash)),
1251
- speedThreshold: Math.max(0, t("moveSpeedThreshold", G.speedThreshold)),
1252
- tailOnsetSpeed: Math.max(0, t("moveTailOnsetSpeed", G.tailOnsetSpeed)),
1253
- tailOnsetRange: Math.max(.001, t("moveTailOnsetRange", G.tailOnsetRange)),
1254
- tailRamp: Math.max(0, t("moveTailRamp", G.tailRamp)),
1255
- tailMinRadius: Math.max(0, t("moveTailMinRadius", G.tailMinRadius)),
1256
- tailWobble: Math.max(0, t("moveTailWobble", G.tailWobble)),
1257
- tailPhaseSpeed: Math.max(0, t("moveTailPhaseSpeed", G.tailPhaseSpeed)),
1258
- tailMidpointA: Ye(t("moveTailMidpointA", G.tailMidpointA)),
1259
- tailMidpointB: Ye(t("moveTailMidpointB", G.tailMidpointB)),
1260
- tailMidRadiusA: Ye(t("moveTailMidRadiusA", G.tailMidRadiusA)),
1261
- tailMidRadiusB: Ye(t("moveTailMidRadiusB", G.tailMidRadiusB)),
1262
- tailWobblePhase: t("moveTailWobblePhase", G.tailWobblePhase),
1263
- minPerpendicular: Math.max(0, t("moveMinPerpendicular", G.minPerpendicular)),
1264
- lagBase: Math.max(0, t("moveLagBase", G.lagBase)),
1265
- lagForce: Math.max(0, t("moveLagForce", G.lagForce)),
1266
- settleDistance: Math.max(0, t("moveSettleDistance", G.settleDistance)),
1267
- settleSpeed: Math.max(0, t("moveSettleSpeed", G.settleSpeed)),
1268
- integrationRate: Math.max(1, t("moveIntegrationRate", G.integrationRate))
1242
+ stiffness: Math.max(.001, t("moveStiffness", qe.stiffness)),
1243
+ damping: Math.max(0, t("moveDamping", qe.damping)),
1244
+ stretch: Je(t("moveStretch", qe.stretch)),
1245
+ tail: Je(t("moveTail", qe.tail)),
1246
+ force: Je(t("moveForce", qe.force)),
1247
+ tailSpringStiffness: Math.max(.001, t("moveTailSpringStiffness", K.tailSpringStiffness)),
1248
+ tailSpringDamping: Math.max(0, t("moveTailSpringDamping", K.tailSpringDamping)),
1249
+ stretchSpeed: Math.max(0, t("moveStretchSpeed", K.stretchSpeed)),
1250
+ stretchSquash: Math.max(0, t("moveStretchSquash", K.stretchSquash)),
1251
+ speedThreshold: Math.max(0, t("moveSpeedThreshold", K.speedThreshold)),
1252
+ tailOnsetSpeed: Math.max(0, t("moveTailOnsetSpeed", K.tailOnsetSpeed)),
1253
+ tailOnsetRange: Math.max(.001, t("moveTailOnsetRange", K.tailOnsetRange)),
1254
+ tailRamp: Math.max(0, t("moveTailRamp", K.tailRamp)),
1255
+ tailMinRadius: Math.max(0, t("moveTailMinRadius", K.tailMinRadius)),
1256
+ tailWobble: Math.max(0, t("moveTailWobble", K.tailWobble)),
1257
+ tailPhaseSpeed: Math.max(0, t("moveTailPhaseSpeed", K.tailPhaseSpeed)),
1258
+ tailMidpointA: Je(t("moveTailMidpointA", K.tailMidpointA)),
1259
+ tailMidpointB: Je(t("moveTailMidpointB", K.tailMidpointB)),
1260
+ tailMidRadiusA: Je(t("moveTailMidRadiusA", K.tailMidRadiusA)),
1261
+ tailMidRadiusB: Je(t("moveTailMidRadiusB", K.tailMidRadiusB)),
1262
+ tailWobblePhase: t("moveTailWobblePhase", K.tailWobblePhase),
1263
+ minPerpendicular: Math.max(0, t("moveMinPerpendicular", K.minPerpendicular)),
1264
+ lagBase: Math.max(0, t("moveLagBase", K.lagBase)),
1265
+ lagForce: Math.max(0, t("moveLagForce", K.lagForce)),
1266
+ settleDistance: Math.max(0, t("moveSettleDistance", K.settleDistance)),
1267
+ settleSpeed: Math.max(0, t("moveSettleSpeed", K.settleSpeed)),
1268
+ integrationRate: Math.max(1, t("moveIntegrationRate", K.integrationRate))
1269
1269
  };
1270
1270
  }
1271
1271
  function $e(e, t) {
1272
1272
  return {
1273
- vertical: Ye(Xe(t?.vertical, K(e, "bendVertical", .6))),
1274
- horizontal: Ye(Xe(t?.horizontal, K(e, "bendHorizontal", .35))),
1275
- velocityVertical: Math.max(0, K(e, "bendVelocityVertical", .05)),
1276
- velocityHorizontal: Math.max(0, K(e, "bendVelocityHorizontal", .09)),
1277
- smoothing: Math.max(0, K(e, "bendSmoothing", 9)),
1278
- activeThreshold: Math.max(0, K(e, "bendActiveThreshold", .5)),
1279
- verticalCap: Math.max(0, K(e, "bendVerticalCap", .5)),
1280
- horizontalCap: Math.max(0, K(e, "bendHorizontalCap", .9)),
1281
- radiusMin: Math.max(0, K(e, "bendRadiusMin", .2)),
1282
- radiusMax: Math.max(0, K(e, "bendRadiusMax", 3)),
1283
- leadingCapFactor: Math.max(0, K(e, "bendLeadingCapFactor", .8)),
1284
- trailingCapFactor: Math.max(0, K(e, "bendTrailingCapFactor", 1.6))
1273
+ vertical: Je(Ye(t?.vertical, Ze(e, "bendVertical", .6))),
1274
+ horizontal: Je(Ye(t?.horizontal, Ze(e, "bendHorizontal", .35))),
1275
+ velocityVertical: Math.max(0, Ze(e, "bendVelocityVertical", .05)),
1276
+ velocityHorizontal: Math.max(0, Ze(e, "bendVelocityHorizontal", .09)),
1277
+ smoothing: Math.max(0, Ze(e, "bendSmoothing", 9)),
1278
+ activeThreshold: Math.max(0, Ze(e, "bendActiveThreshold", .5)),
1279
+ verticalCap: Math.max(0, Ze(e, "bendVerticalCap", .5)),
1280
+ horizontalCap: Math.max(0, Ze(e, "bendHorizontalCap", .9)),
1281
+ radiusMin: Math.max(0, Ze(e, "bendRadiusMin", .2)),
1282
+ radiusMax: Math.max(0, Ze(e, "bendRadiusMax", 3)),
1283
+ leadingCapFactor: Math.max(0, Ze(e, "bendLeadingCapFactor", .8)),
1284
+ trailingCapFactor: Math.max(0, Ze(e, "bendTrailingCapFactor", 1.6))
1285
1285
  };
1286
1286
  }
1287
1287
  function et(e, t, n, r, i, a) {
@@ -1289,7 +1289,7 @@ function et(e, t, n, r, i, a) {
1289
1289
  return [e + o * a, o];
1290
1290
  }
1291
1291
  function tt(e, t, n, r, i, a, o) {
1292
- let s = Math.max(0, Xe(a, 0)), c = Math.max(1, Math.ceil(s * o)), l = s / c, u = e, d = t;
1292
+ let s = Math.max(0, Ye(a, 0)), c = Math.max(1, Math.ceil(s * o)), l = s / c, u = e, d = t;
1293
1293
  for (; c-- > 0;) [u, d] = et(u, d, n, r, i, l);
1294
1294
  return [u, d];
1295
1295
  }
@@ -1318,7 +1318,7 @@ function q(e) {
1318
1318
  return Math.round(e * 10) / 10;
1319
1319
  }
1320
1320
  function at(e, t, n, r, i) {
1321
- let a = Math.max(.01, Xe(t.scale, 1));
1321
+ let a = Math.max(.01, Ye(t.scale, 1));
1322
1322
  [e.cx, e.vcx] = tt(e.cx, e.vcx, t.cx, i.stiffness, i.damping, r, i.integrationRate), [e.cy, e.vcy] = tt(e.cy, e.vcy, t.cy, i.stiffness, i.damping, r, i.integrationRate);
1323
1323
  let o = Math.hypot(e.vcx, e.vcy), s = 0, c = 1, l = 1;
1324
1324
  if (o > i.speedThreshold) {
@@ -1328,15 +1328,15 @@ function at(e, t, n, r, i) {
1328
1328
  e.tailInitialized ||= (e.tailX = e.cx, e.tailY = e.cy, !0), [e.tailX, e.tailVx] = tt(e.tailX, e.tailVx, e.cx, i.tailSpringStiffness, i.tailSpringDamping, r, i.integrationRate), [e.tailY, e.tailVy] = tt(e.tailY, e.tailVy, e.cy, i.tailSpringStiffness, i.tailSpringDamping, r, i.integrationRate);
1329
1329
  let u = Math.max(0, n.w * a), d = Math.max(0, n.h * a), f = o > .001 ? e.vcx / o : 1, p = o > .001 ? e.vcy / o : 0, m = Math.max(i.minPerpendicular, Math.abs(f) * d + Math.abs(p) * u), h = (Math.abs(f) * u + Math.abs(p) * d) / 2, g = m / 2, _ = e.tailX - e.cx, v = e.tailY - e.cy, y = Math.hypot(_, v), b = h + g * (i.lagBase + i.force * i.lagForce);
1330
1330
  y > b && y > 0 && (e.tailX = e.cx + _ / y * b, e.tailY = e.cy + v / y * b);
1331
- let x = Ye((o - i.tailOnsetSpeed) / i.tailOnsetRange), S = g * i.tail * x;
1331
+ let x = Je((o - i.tailOnsetSpeed) / i.tailOnsetRange), S = g * i.tail * x;
1332
1332
  e.tailR += (S - e.tailR) * Math.min(1, Math.max(0, r) * i.tailRamp);
1333
- let C = e.tailR >= i.tailMinRadius, w = e.cx, T = e.cy, E = e.cx, D = e.cy, O = 0, k = 0;
1333
+ let C = e.tailR >= i.tailMinRadius, w = e.cx, T = e.cy, E = e.cx, D = e.cy, O = 0, ee = 0;
1334
1334
  if (C) {
1335
- e.tailPhase += o * Math.max(0, Xe(r, 0)) * i.tailPhaseSpeed;
1335
+ e.tailPhase += o * Math.max(0, Ye(r, 0)) * i.tailPhaseSpeed;
1336
1336
  let t = e.tailR * i.tailWobble, n = -p, a = f, s = Math.sin(e.tailPhase) * t, c = Math.sin(e.tailPhase + i.tailWobblePhase) * -t;
1337
- w = e.cx + _ * i.tailMidpointA + n * s, T = e.cy + v * i.tailMidpointA + a * s, E = e.cx + _ * i.tailMidpointB + n * c, D = e.cy + v * i.tailMidpointB + a * c, O = e.tailR * i.tailMidRadiusA, k = e.tailR * i.tailMidRadiusB;
1337
+ w = e.cx + _ * i.tailMidpointA + n * s, T = e.cy + v * i.tailMidpointA + a * s, E = e.cx + _ * i.tailMidpointB + n * c, D = e.cy + v * i.tailMidpointB + a * c, O = e.tailR * i.tailMidRadiusA, ee = e.tailR * i.tailMidRadiusB;
1338
1338
  }
1339
- let A = {
1339
+ let k = {
1340
1340
  cx: q(e.tailX),
1341
1341
  cy: q(e.tailY),
1342
1342
  radius: C ? q(e.tailR) : 0,
@@ -1345,7 +1345,7 @@ function at(e, t, n, r, i) {
1345
1345
  midARadius: C ? q(O) : 0,
1346
1346
  midBCx: q(E),
1347
1347
  midBCy: q(D),
1348
- midBRadius: C ? q(k) : 0,
1348
+ midBRadius: C ? q(ee) : 0,
1349
1349
  visible: C,
1350
1350
  fingerprint: C ? [
1351
1351
  q(e.tailX),
@@ -1358,9 +1358,9 @@ function at(e, t, n, r, i) {
1358
1358
  ].join(",") : "hidden"
1359
1359
  };
1360
1360
  return {
1361
- path: qe(-n.w / 2, -n.h / 2, n.w, n.h, n.r),
1361
+ path: Ke(-n.w / 2, -n.h / 2, n.w, n.h, n.r),
1362
1362
  transform: `translate(${it(e.cx)} ${it(e.cy)}) ` + (o > i.speedThreshold ? `rotate(${it(s * 180 / Math.PI)}) scale(${it(c)} ${it(l)}) ` : "") + `scale(${it(a)})`,
1363
- tail: A,
1363
+ tail: k,
1364
1364
  moving: Math.hypot(e.cx - t.cx, e.cy - t.cy) > i.settleDistance || o > i.settleSpeed || e.tailR >= i.tailMinRadius
1365
1365
  };
1366
1366
  }
@@ -1388,13 +1388,13 @@ function lt(e, t) {
1388
1388
  return Math.min(e.w, e.h) * t.verticalCap * 2 * t.vertical;
1389
1389
  }
1390
1390
  function ut(e, t, n, r, i) {
1391
- let a = Math.max(1 / 240, Xe(r, 1 / 60));
1391
+ let a = Math.max(1 / 240, Ye(r, 1 / 60));
1392
1392
  e.initialized ||= (e.previousCx = t.cx, e.previousCy = t.cy, !0);
1393
1393
  let o = (t.cx - e.previousCx) / a, s = (t.cy - e.previousCy) / a;
1394
1394
  e.previousCx = t.cx, e.previousCy = t.cy, e.vcx = e.vcx * .7 + o * .3, e.vcy = e.vcy * .7 + s * .3, e.cx = t.cx, e.cy = t.cy;
1395
1395
  let c = Math.min(n.w, n.h), l = c * i.verticalCap, u = Math.max(-l, Math.min(l, e.vcy * i.velocityVertical)) * i.vertical, d = c * i.horizontalCap, f = Math.max(-d, Math.min(d, e.vcx * i.velocityHorizontal)) * i.horizontal;
1396
1396
  e.bendY += (u - e.bendY) * Math.min(1, a * i.smoothing), e.bendX += (f - e.bendX) * Math.min(1, a * i.smoothing);
1397
- let p = Math.abs(e.bendY) > i.activeThreshold || Math.abs(e.bendX) > i.activeThreshold, m = Math.min(...n.r), h = p ? ot(n.w, n.h, m, e.bendY, e.bendX, i) : qe(-n.w / 2, -n.h / 2, n.w, n.h, n.r), g = p ? `translate(${it(e.cx - n.w / 2)} ${it(e.cy - n.h / 2)}) scale(${it(t.scale)})` : `translate(${it(e.cx)} ${it(e.cy)}) scale(${it(t.scale)})`, _ = Math.round(e.bendX * 10) / 10, v = Math.round(e.bendY * 10) / 10;
1397
+ let p = Math.abs(e.bendY) > i.activeThreshold || Math.abs(e.bendX) > i.activeThreshold, m = Math.min(...n.r), h = p ? ot(n.w, n.h, m, e.bendY, e.bendX, i) : Ke(-n.w / 2, -n.h / 2, n.w, n.h, n.r), g = p ? `translate(${it(e.cx - n.w / 2)} ${it(e.cy - n.h / 2)}) scale(${it(t.scale)})` : `translate(${it(e.cx)} ${it(e.cy)}) scale(${it(t.scale)})`, _ = Math.round(e.bendX * 10) / 10, v = Math.round(e.bendY * 10) / 10;
1398
1398
  return {
1399
1399
  path: h,
1400
1400
  transform: g,
@@ -1431,13 +1431,13 @@ function mt(e, t = 0, n = 1) {
1431
1431
  return Math.min(n, Math.max(t, e));
1432
1432
  }
1433
1433
  function ht(e, t, n) {
1434
- let r = e?.ownerDocument.defaultView, i = ft(L[t]);
1434
+ let r = e?.ownerDocument.defaultView, i = ft(z[t]);
1435
1435
  if (!r || !i) return n;
1436
1436
  let a = Number.parseFloat(r.getComputedStyle(e).getPropertyValue(i));
1437
1437
  return Number.isFinite(a) ? a : n;
1438
1438
  }
1439
1439
  function gt(e, t, n) {
1440
- let r = e?.ownerDocument.defaultView, i = ft(L[t]);
1440
+ let r = e?.ownerDocument.defaultView, i = ft(z[t]);
1441
1441
  return !r || !i ? n : r.getComputedStyle(e).getPropertyValue(i).trim() || n;
1442
1442
  }
1443
1443
  function _t(e, t) {
@@ -1583,14 +1583,14 @@ function Dt(e, t, n, r, i) {
1583
1583
  }
1584
1584
  let w = Math.min(1, (Math.hypot(e.vcx, e.vcy) + Math.abs(e.vw) + Math.abs(e.vh)) / 420);
1585
1585
  e.motionEnv = Math.max(w, e.motionEnv - a * 1.9);
1586
- let T = e.motionEnv * e.motionEnv * Math.max(0, i.contentBlur), E = e.cornerStarted && r - e.cornerT0 < b + 80 || Math.abs(x - e.round01) > .004 || e.round01 > .004, D = Math.hypot(e.vcx, e.vcy), O = Math.abs(e.cx - o) < .05 && Math.abs(e.cy - s) < .05 && Math.abs(e.w - t.w) < .05 && Math.abs(e.h - t.h) < .05 && Math.abs(e.r - t.r) < .05 && D < 1 && Math.abs(e.vw) + Math.abs(e.vh) + Math.abs(e.vr) < 1 && e.motionEnv < .01 && !E, k = [
1586
+ let T = e.motionEnv * e.motionEnv * Math.max(0, i.contentBlur), E = e.cornerStarted && r - e.cornerT0 < b + 80 || Math.abs(x - e.round01) > .004 || e.round01 > .004, D = Math.hypot(e.vcx, e.vcy), O = Math.abs(e.cx - o) < .05 && Math.abs(e.cy - s) < .05 && Math.abs(e.w - t.w) < .05 && Math.abs(e.h - t.h) < .05 && Math.abs(e.r - t.r) < .05 && D < 1 && Math.abs(e.vw) + Math.abs(e.vh) + Math.abs(e.vr) < 1 && e.motionEnv < .01 && !E, ee = [
1587
1587
  C,
1588
1588
  C,
1589
1589
  C,
1590
1590
  C
1591
1591
  ];
1592
1592
  return {
1593
- path: qe(-e.w / 2, -e.h / 2, e.w, e.h, k),
1593
+ path: Ke(-e.w / 2, -e.h / 2, e.w, e.h, ee),
1594
1594
  transform: `translate(${Et(e.cx)} ${Et(e.cy)}) scale(${Et(t.scale)})`,
1595
1595
  contentBlur: T,
1596
1596
  moving: !O
@@ -1816,7 +1816,7 @@ var Gt = class {
1816
1816
  setFilterArea(e) {
1817
1817
  let t = Number.isFinite(e) ? Math.max(0, e) : Infinity;
1818
1818
  if (!(Math.abs(t - this.filterArea) < .5)) {
1819
- if (this.filterArea = t, this.claimed && t > ke().maxFilterArea) {
1819
+ if (this.filterArea = t, this.claimed && t > Oe().maxFilterArea) {
1820
1820
  for (let e of this.items.values()) this.snapEntry(e), this.resetMoveEntry(e), this.resetDynamicEntry(e);
1821
1821
  this.releaseClaim(), this.setMode(this.reducedMotion ? "reduced" : "static");
1822
1822
  }
@@ -1855,19 +1855,19 @@ var Gt = class {
1855
1855
  ensureClaim() {
1856
1856
  if (this.claimed) return !0;
1857
1857
  let e = this.getFilterArea();
1858
- return Number.isFinite(e) && (this.filterArea = Math.max(0, e)), je(this.filterArea) ? (this.claimed = !0, this.moveOptions = Qe(this.getGroup()), !0) : (this.warnBudgetFallback(), !1);
1858
+ return Number.isFinite(e) && (this.filterArea = Math.max(0, e)), Ae(this.filterArea) ? (this.claimed = !0, this.moveOptions = Qe(this.getGroup()), !0) : (this.warnBudgetFallback(), !1);
1859
1859
  }
1860
1860
  warnBudgetFallback() {
1861
1861
  if (this.budgetWarningEmitted) return;
1862
1862
  this.budgetWarningEmitted = !0;
1863
- let e = ke(), t = e.activeGroups >= e.maxAnimatedGroups ? "the active-group limit is reached" : "the filter-area limit is exceeded";
1863
+ let e = Oe(), t = e.activeGroups >= e.maxAnimatedGroups ? "the active-group limit is reached" : "the filter-area limit is exceeded";
1864
1864
  console.warn(`LiquidGroup: the liquid animation budget is insufficient (${t}); degrading to static rendering for this group.`);
1865
1865
  }
1866
1866
  revive() {
1867
1867
  this.disposed && (this.disposed = !1, this.mutationObserver = null, this.removeListeners.length = 0, this.lastFrameTime = null, this.budgetWarningEmitted = !1);
1868
1868
  }
1869
1869
  releaseClaim() {
1870
- this.claimed &&= (Me(), !1);
1870
+ this.claimed &&= (je(), !1);
1871
1871
  }
1872
1872
  isBend(e) {
1873
1873
  return e.config.effect === "bend";
@@ -1988,15 +1988,15 @@ var Gt = class {
1988
1988
  };
1989
1989
  }
1990
1990
  readBox(e, t) {
1991
- let n = e.host.firstElementChild ?? e.host, r = We(e.host, t), i = e.host.offsetWidth, a = e.host.offsetHeight;
1991
+ let n = e.host.firstElementChild ?? e.host, r = Ue(e.host, t), i = e.host.offsetWidth, a = e.host.offsetHeight;
1992
1992
  if (e.config.observe) {
1993
1993
  let o = n.getBoundingClientRect(), s = t.getBoundingClientRect();
1994
1994
  o.width > 0 || o.height > 0 ? (r = {
1995
1995
  x: o.left - s.left,
1996
1996
  y: o.top - s.top
1997
- }, i = o.width || n.offsetWidth, a = o.height || n.offsetHeight) : (r = We(n, t), i = n.offsetWidth || e.host.offsetWidth, a = n.offsetHeight || e.host.offsetHeight);
1997
+ }, i = o.width || n.offsetWidth, a = o.height || n.offsetHeight) : (r = Ue(n, t), i = n.offsetWidth || e.host.offsetWidth, a = n.offsetHeight || e.host.offsetHeight);
1998
1998
  }
1999
- let o = e.config.radius === void 0 ? Ge(n, i, a) : Ke(e.config.radius);
1999
+ let o = e.config.radius === void 0 ? We(n, i, a) : Ge(e.config.radius);
2000
2000
  return {
2001
2001
  x: r.x,
2002
2002
  y: r.y,
@@ -2044,7 +2044,7 @@ var Gt = class {
2044
2044
  };
2045
2045
  }
2046
2046
  paintEntry(e, t) {
2047
- let n = t.x + e.current.x + t.w * (1 - e.current.scale) / 2, r = t.y + e.current.y + t.h * (1 - e.current.scale) / 2, i = `translate(${Wt(n)} ${Wt(r)}) scale(${Wt(e.current.scale)})`, a = qe(0, 0, t.w, t.h, t.r), o = `${a}|${i}`;
2047
+ let n = t.x + e.current.x + t.w * (1 - e.current.scale) / 2, r = t.y + e.current.y + t.h * (1 - e.current.scale) / 2, i = `translate(${Wt(n)} ${Wt(r)}) scale(${Wt(e.current.scale)})`, a = Ke(0, 0, t.w, t.h, t.r), o = `${a}|${i}`;
2048
2048
  return e.lastPaint === o ? !1 : (e.lastPaint = o, e.blob.setAttribute("d", a), e.blob.setAttribute("transform", i), !0);
2049
2049
  }
2050
2050
  loop = (e) => {
@@ -2164,9 +2164,22 @@ function Yt(e) {
2164
2164
  color: r.join(" ") || "var(--game-ui-stroke, transparent)"
2165
2165
  };
2166
2166
  }
2167
+ function Xt(e) {
2168
+ return !e.inset && e.spread === 0 && (e.blur > 0 || e.x !== 0 || e.y !== 0);
2169
+ }
2170
+ function Zt(e) {
2171
+ let t = e.filter(Xt).map((e) => `drop-shadow(${e.x}px ${e.y}px ${e.blur}px ${e.color})`);
2172
+ return t.length > 0 ? t.join(" ") : void 0;
2173
+ }
2174
+ function Qt(e) {
2175
+ return e.filter((e) => !Xt(e));
2176
+ }
2177
+ function $t(e) {
2178
+ return e.reduce((e, t) => Math.max(e, Math.max(Math.abs(t.x), Math.abs(t.y)) + t.blur * 1.5 + Math.max(0, t.spread)), 0);
2179
+ }
2167
2180
  //#endregion
2168
2181
  //#region src/liquidGooeyImageMelt.tsx
2169
- var Xt = 24, Zt = 500, Qt = 16, $t = 6, en = {
2182
+ var en = 24, tn = 500, nn = 16, rn = 6, an = {
2170
2183
  blur: 7,
2171
2184
  contrast: 40,
2172
2185
  reach: .8,
@@ -2196,48 +2209,48 @@ var Xt = 24, Zt = 500, Qt = 16, $t = 6, en = {
2196
2209
  sink: .8,
2197
2210
  seamBlur: 12.8
2198
2211
  };
2199
- function tn(e, t = 0, n = 1) {
2212
+ function on(e, t = 0, n = 1) {
2200
2213
  return Math.min(n, Math.max(t, e));
2201
2214
  }
2202
- function nn(e, t) {
2215
+ function sn(e, t) {
2203
2216
  return e !== void 0 && Number.isFinite(e) ? e : t;
2204
2217
  }
2205
- function rn(e, t, n) {
2218
+ function cn(e, t, n) {
2206
2219
  let r = e?.ownerDocument.defaultView;
2207
2220
  if (!r) return n;
2208
- let i = L[t], a = /^var\((--[\w-]+)\)$/.exec(i)?.[1];
2221
+ let i = z[t], a = /^var\((--[\w-]+)\)$/.exec(i)?.[1];
2209
2222
  if (!a) return n;
2210
2223
  let o = Number.parseFloat(r.getComputedStyle(e).getPropertyValue(a));
2211
2224
  return Number.isFinite(o) ? o : n;
2212
2225
  }
2213
- function an(e, t = {}) {
2214
- let n = (n, r) => nn(t[n], rn(e, r, en[n]));
2226
+ function ln(e, t = {}) {
2227
+ let n = (n, r) => sn(t[n], cn(e, r, an[n]));
2215
2228
  return {
2216
2229
  blur: Math.max(0, n("blur", "meltBlur")),
2217
2230
  contrast: Math.max(1, n("contrast", "meltContrast")),
2218
2231
  reach: Math.max(0, n("reach", "meltReach")),
2219
2232
  fade: Math.max(0, n("fade", "meltFade")),
2220
2233
  warp: Math.max(0, n("warp", "meltWarp")),
2221
- mix: tn(n("mix", "meltMix")),
2234
+ mix: on(n("mix", "meltMix")),
2222
2235
  mixBlur: Math.max(0, n("mixBlur", "meltMixBlur")),
2223
2236
  gravity: Math.max(0, n("gravity", "meltGravity")),
2224
2237
  waviness: Math.max(0, n("waviness", "meltWaviness"))
2225
2238
  };
2226
2239
  }
2227
- function on(e, t) {
2240
+ function un(e, t) {
2228
2241
  let n = typeof t == "object" && t ? t : {}, r = (t, r, i) => {
2229
2242
  let a = n[t];
2230
- return nn(typeof a == "number" ? a : void 0, rn(e, r, i));
2231
- }, i = tn(typeof t == "number" ? t : r("strength", "dissolveStrength", J.strength));
2243
+ return sn(typeof a == "number" ? a : void 0, cn(e, r, i));
2244
+ }, i = on(typeof t == "number" ? t : r("strength", "dissolveStrength", J.strength));
2232
2245
  return {
2233
2246
  blur: Math.max(0, r("blur", "dissolveBlur", J.blur)),
2234
2247
  warp: Math.max(0, r("warp", "dissolveWarp", J.warp)),
2235
2248
  pull: Math.max(0, r("pull", "dissolvePull", J.pull)),
2236
2249
  range: Math.max(1, r("range", "dissolveRange", J.range)),
2237
2250
  zone: Math.max(1, r("zone", "dissolveZone", J.zone)),
2238
- mix: tn(r("mix", "dissolveMix", J.mix)),
2251
+ mix: on(r("mix", "dissolveMix", J.mix)),
2239
2252
  gravity: Math.max(0, r("gravity", "dissolveGravity", J.gravity)),
2240
- taper: tn(r("taper", "dissolveTaper", J.taper)),
2253
+ taper: on(r("taper", "dissolveTaper", J.taper)),
2241
2254
  warpFreq: Math.max(.2, r("warpFreq", "dissolveWarpFreq", J.warpFreq)),
2242
2255
  flowSpeed: Math.max(0, r("flowSpeed", "dissolveFlowSpeed", J.flowSpeed)),
2243
2256
  warpStyle: n.warpStyle ?? J.warpStyle,
@@ -2250,13 +2263,13 @@ function on(e, t) {
2250
2263
  seamBlur: Math.max(0, r("seamBlur", "dissolveSeamBlur", J.seamBlur))
2251
2264
  };
2252
2265
  }
2253
- function sn(e) {
2266
+ function dn(e) {
2254
2267
  return e ? e instanceof HTMLImageElement ? e : e.querySelector("img") : null;
2255
2268
  }
2256
- function cn(e) {
2269
+ function fn(e) {
2257
2270
  return e && (e.currentSrc || e.src) || null;
2258
2271
  }
2259
- function ln(e) {
2272
+ function pn(e) {
2260
2273
  return {
2261
2274
  maskImage: e.style.getPropertyValue("mask-image"),
2262
2275
  maskPriority: e.style.getPropertyPriority("mask-image"),
@@ -2264,11 +2277,11 @@ function ln(e) {
2264
2277
  webkitMaskPriority: e.style.getPropertyPriority("-webkit-mask-image")
2265
2278
  };
2266
2279
  }
2267
- function un(e) {
2280
+ function mn(e) {
2268
2281
  let t = e.image, n = e.previousMask;
2269
2282
  !t || !n || (n.maskImage ? t.style.setProperty("mask-image", n.maskImage, n.maskPriority) : t.style.removeProperty("mask-image"), n.webkitMaskImage ? t.style.setProperty("-webkit-mask-image", n.webkitMaskImage, n.webkitMaskPriority) : t.style.removeProperty("-webkit-mask-image"));
2270
2283
  }
2271
- function dn() {
2284
+ function hn() {
2272
2285
  let e = /* @__PURE__ */ new Set(), t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), r = 0, i = () => n.forEach((e) => e());
2273
2286
  return {
2274
2287
  registerMelt(t) {
@@ -2286,15 +2299,15 @@ function dn() {
2286
2299
  let n = {
2287
2300
  ...e,
2288
2301
  id: `dissolve-${++r}`,
2289
- previousMask: e.image ? ln(e.image) : null
2302
+ previousMask: e.image ? pn(e.image) : null
2290
2303
  };
2291
2304
  return t.add(n), i(), {
2292
2305
  update(e) {
2293
- let t = sn(n.el);
2294
- t !== n.image && (un(n), n.image = t, n.previousMask = t ? ln(t) : null), n.opts = on(n.el, e), i();
2306
+ let t = dn(n.el);
2307
+ t !== n.image && (mn(n), n.image = t, n.previousMask = t ? pn(t) : null), n.opts = un(n.el, e), i();
2295
2308
  },
2296
2309
  unregister() {
2297
- un(n), t.delete(n), i();
2310
+ mn(n), t.delete(n), i();
2298
2311
  }
2299
2312
  };
2300
2313
  },
@@ -2305,20 +2318,20 @@ function dn() {
2305
2318
  dissolveEntries: () => [...t]
2306
2319
  };
2307
2320
  }
2308
- function fn(e, t, n) {
2309
- let r = sn(t);
2321
+ function gn(e, t, n) {
2322
+ let r = dn(t);
2310
2323
  return r || console.warn("[swimmer-ui] `dissolve` needs an <img> inside the item; text and other DOM content stay unchanged."), e.registerDissolve({
2311
2324
  el: t,
2312
2325
  image: r,
2313
- opts: on(t, n)
2326
+ opts: un(t, n)
2314
2327
  });
2315
2328
  }
2316
- function pn({ src: e, options: n = {}, registry: r, children: i, forwardedRef: a, className: o, style: s, ...c }) {
2329
+ function _n({ src: e, options: n = {}, registry: r, children: i, forwardedRef: a, className: o, style: s, ...c }) {
2317
2330
  let l = p(null), u = JSON.stringify(n), f = p(!1), m = (e) => {
2318
2331
  l.current = e, typeof a == "function" ? a(e) : a && (a.current = e);
2319
2332
  };
2320
2333
  return d(() => {
2321
- let t = l.current, i = t?.firstElementChild, a = sn(i), o = e ?? cn(a);
2334
+ let t = l.current, i = t?.firstElementChild, a = dn(i), o = e ?? fn(a);
2322
2335
  if (!t || !i || !a || !o) {
2323
2336
  f.current || (f.current = !0, console.warn("[swimmer-ui] effect=\"melt\" needs an image: pass melt={{ src }} or put an <img> inside the item."));
2324
2337
  return;
@@ -2327,7 +2340,7 @@ function pn({ src: e, options: n = {}, registry: r, children: i, forwardedRef: a
2327
2340
  el: t,
2328
2341
  target: a,
2329
2342
  src: o,
2330
- opts: an(t, n)
2343
+ opts: ln(t, n)
2331
2344
  });
2332
2345
  }, [
2333
2346
  u,
@@ -2341,7 +2354,7 @@ function pn({ src: e, options: n = {}, registry: r, children: i, forwardedRef: a
2341
2354
  children: i
2342
2355
  });
2343
2356
  }
2344
- var mn = {
2357
+ var vn = {
2345
2358
  width: 0,
2346
2359
  height: 0,
2347
2360
  melt: null,
@@ -2351,28 +2364,28 @@ function Y(e, t = 2) {
2351
2364
  let n = 10 ** t;
2352
2365
  return Math.round(e * n) / n;
2353
2366
  }
2354
- function hn(e) {
2355
- let t = tn(e);
2367
+ function yn(e) {
2368
+ let t = on(e);
2356
2369
  return t * t * (3 - 2 * t);
2357
2370
  }
2358
- function gn(e, t) {
2371
+ function bn(e, t) {
2359
2372
  let n = Math.max(t.x - (e.x + e.w), e.x - (t.x + t.w), 0), r = Math.max(t.y - (e.y + e.h), e.y - (t.y + t.h), 0);
2360
2373
  return Math.hypot(n, r);
2361
2374
  }
2362
- function _n(e, t) {
2375
+ function xn(e, t) {
2363
2376
  return {
2364
2377
  x: e.x + e.w < t.x ? (e.x + e.w + t.x) / 2 : t.x + t.w < e.x ? (t.x + t.w + e.x) / 2 : (Math.max(e.x, t.x) + Math.min(e.x + e.w, t.x + t.w)) / 2,
2365
2378
  y: e.y + e.h < t.y ? (e.y + e.h + t.y) / 2 : t.y + t.h < e.y ? (t.y + t.h + e.y) / 2 : (Math.max(e.y, t.y) + Math.min(e.y + e.h, t.y + t.h)) / 2
2366
2379
  };
2367
2380
  }
2368
- function vn(e, t, n) {
2381
+ function Sn(e, t, n) {
2369
2382
  let r = e.ownerDocument.defaultView?.getComputedStyle(e).borderTopLeftRadius ?? "";
2370
2383
  return Math.max(0, Math.min(Number.parseFloat(r) || 0, t / 2, n / 2));
2371
2384
  }
2372
- function yn(e) {
2385
+ function Cn(e) {
2373
2386
  return e.getBoundingClientRect();
2374
2387
  }
2375
- function bn(e, t) {
2388
+ function wn(e, t) {
2376
2389
  let n = e.getBoundingClientRect();
2377
2390
  return {
2378
2391
  x: n.left - t.left,
@@ -2381,21 +2394,21 @@ function bn(e, t) {
2381
2394
  h: n.height
2382
2395
  };
2383
2396
  }
2384
- function xn(e, t) {
2385
- let n = bn(e, t);
2397
+ function Tn(e, t) {
2398
+ let n = wn(e, t);
2386
2399
  return {
2387
2400
  ...n,
2388
- r: vn(e, n.w, n.h)
2401
+ r: Sn(e, n.w, n.h)
2389
2402
  };
2390
2403
  }
2391
- function Sn(e) {
2404
+ function En(e) {
2392
2405
  return `${Y(e.x)}:${Y(e.y)}:${Y(e.w)}:${Y(e.h)}`;
2393
2406
  }
2394
- function Cn(e, t, n) {
2395
- let r = Math.max(1, e.offsetWidth || e.getBoundingClientRect().width), i = Math.max(1, e.offsetHeight || e.getBoundingClientRect().height), a = t ? Math.max(Xt, t.blur * 3, t.fade * 2, t.warp + t.waviness, t.mixBlur * 2, t.gravity * .5) : 0, o = n ? Math.max(Xt, n.blur * 3, n.warp + n.zone, n.gravity * .5, n.seamBlur * 3) : 0, s = Math.ceil(Math.max(a, o, Xt));
2407
+ function Dn(e, t, n) {
2408
+ let r = Math.max(1, e.offsetWidth || e.getBoundingClientRect().width), i = Math.max(1, e.offsetHeight || e.getBoundingClientRect().height), a = t ? Math.max(en, t.blur * 3, t.fade * 2, t.warp + t.waviness, t.mixBlur * 2, t.gravity * .5) : 0, o = n ? Math.max(en, n.blur * 3, n.warp + n.zone, n.gravity * .5, n.seamBlur * 3) : 0, s = Math.ceil(Math.max(a, o, en));
2396
2409
  return (r + s * 2) * (i + s * 2);
2397
2410
  }
2398
- function wn(e) {
2411
+ function On(e) {
2399
2412
  let t = e[0]?.opts;
2400
2413
  return t ? e.slice(1).reduce((e, t) => ({
2401
2414
  ...e,
@@ -2406,25 +2419,25 @@ function wn(e) {
2406
2419
  seamBlur: Math.max(e.seamBlur, t.opts.seamBlur)
2407
2420
  }), { ...t }) : null;
2408
2421
  }
2409
- function Tn(e, t, n, r, i, a, o, s, c) {
2422
+ function kn(e, t, n, r, i, a, o, s, c) {
2410
2423
  let l = Math.atan2(r, n) * 180 / Math.PI, u = Math.max(0, (s - 1) * Math.max(8, 2 * i)), d = Math.min(2.2, (Math.max(0, o) + u) / Math.max(8, 2 * i)) * (.5 + c), f = 1 + d, p = 1 / (1 + d * .35), m = e - n * (i + a), h = t - r * (i + a);
2411
2424
  return `translate(${Y(m)} ${Y(h)}) rotate(${Y(l)}) scale(${Y(f, 3)} ${Y(p, 3)}) rotate(${-Y(l)}) translate(${Y(-m)} ${Y(-h)})`;
2412
2425
  }
2413
- function En(e, t, n, r, i, a) {
2426
+ function An(e, t, n, r, i, a) {
2414
2427
  let o = t - e.x, s = n - e.y;
2415
2428
  if (Math.hypot(Math.max(e.x - t, t - (e.x + e.w), 0), Math.max(e.y - n, n - (e.y + e.h), 0)) > r + 2) return null;
2416
2429
  let c = Math.min(e.w, e.h) / 2, l = Math.min(Math.max(r, a * .75), c), u = Y(Math.max(0, 1 - Math.min(i, a) * 2.2), 2), d = Y((1 + 2 * u) / 3, 2), f = Math.max(Math.hypot(o, s), Math.hypot(o - e.w, s), Math.hypot(o, s - e.h), Math.hypot(o - e.w, s - e.h)) + 2;
2417
2430
  return `radial-gradient(circle at ${Y(o)}px ${Y(s)}px, rgba(255,255,255,${u}) ${Y(l * .2)}px, rgba(255,255,255,${d}) ${Y(l * .45)}px, #fff ${Y(l * .78)}px, #fff ${Y(f)}px)`;
2418
2431
  }
2419
- function Dn(e) {
2432
+ function jn(e) {
2420
2433
  if (e < .002) return "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1";
2421
2434
  let t = Y(1 + 4 * e, 3);
2422
2435
  return `0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ${t} 0 0 0 ${Y(1 - t * (.38 + .12 * e), 3)}`;
2423
2436
  }
2424
- function On(e) {
2437
+ function Mn(e) {
2425
2438
  return e.replace(/[^a-zA-Z0-9_-]/g, "");
2426
2439
  }
2427
- var kn = class {
2440
+ var Nn = class {
2428
2441
  registry;
2429
2442
  getGroup;
2430
2443
  onState;
@@ -2456,7 +2469,7 @@ var kn = class {
2456
2469
  if (!this.disposed) {
2457
2470
  this.disposed = !0, this.raf && cancelAnimationFrame(this.raf), this.raf = 0, this.awake = !1, this.resizeObserver?.disconnect(), this.mutationObserver?.disconnect(), this.removeListeners.forEach((e) => e()), this.removeListeners.length = 0;
2458
2471
  for (let e of this.registry.entries()) this.setMeltPainted(e, !1);
2459
- for (let e of this.registry.dissolveEntries()) un(e);
2472
+ for (let e of this.registry.dissolveEntries()) mn(e);
2460
2473
  this.releaseClaim(), this.observed.clear();
2461
2474
  }
2462
2475
  }
@@ -2470,7 +2483,7 @@ var kn = class {
2470
2483
  let t = /* @__PURE__ */ new Set(), n = (e) => {
2471
2484
  e && (t.add(e), this.observed.has(e) || this.resizeObserver?.observe(e));
2472
2485
  };
2473
- for (let e of this.registry.entries()) n(e.el), n(e.target), n(sn(e.target));
2486
+ for (let e of this.registry.entries()) n(e.el), n(e.target), n(dn(e.target));
2474
2487
  for (let e of this.registry.dissolveEntries()) n(e.el), n(e.image);
2475
2488
  for (let e of this.observed) t.has(e) || this.resizeObserver?.unobserve(e);
2476
2489
  this.observed.clear(), t.forEach((e) => this.observed.add(e)), !this.mutationObserver && typeof MutationObserver < "u" && (this.mutationObserver = new MutationObserver((e) => {
@@ -2506,14 +2519,14 @@ var kn = class {
2506
2519
  e.painted !== t && (e.painted = t, e.target.style.opacity = t ? "0" : e.previousOpacity);
2507
2520
  }
2508
2521
  releaseClaim() {
2509
- this.claimed &&= (Me(), !1);
2522
+ this.claimed &&= (je(), !1);
2510
2523
  }
2511
2524
  ensureClaim(e, t, n) {
2512
2525
  if (this.claimed) return !0;
2513
- if (!je(Cn(e, t, n))) {
2526
+ if (!Ae(Dn(e, t, n))) {
2514
2527
  if (!this.budgetWarningEmitted) {
2515
2528
  this.budgetWarningEmitted = !0;
2516
- let e = ke(), t = e.activeGroups >= e.maxAnimatedGroups ? "the active-group limit is reached" : "the filter-area limit is exceeded";
2529
+ let e = Oe(), t = e.activeGroups >= e.maxAnimatedGroups ? "the active-group limit is reached" : "the filter-area limit is exceeded";
2517
2530
  console.warn(`LiquidGroup: the Melt/dissolve image filter budget is insufficient (${t}); degrading to crisp imagery for this group.`);
2518
2531
  }
2519
2532
  return !1;
@@ -2524,7 +2537,7 @@ var kn = class {
2524
2537
  if (this.raf = 0, this.disposed) return;
2525
2538
  let t = this.registry.entries(), n = this.registry.dissolveEntries();
2526
2539
  if (t.length === 0 && n.length === 0) {
2527
- this.awake = !1, this.lastNow = 0, this.lastActivity = 0, this.meltPairKey = "", this.meltProximity = 0, this.lastStateKey && (this.lastStateKey = "", this.onState(mn)), this.releaseClaim();
2540
+ this.awake = !1, this.lastNow = 0, this.lastActivity = 0, this.meltPairKey = "", this.meltProximity = 0, this.lastStateKey && (this.lastStateKey = "", this.onState(vn)), this.releaseClaim();
2528
2541
  return;
2529
2542
  }
2530
2543
  let r = this.getGroup();
@@ -2534,23 +2547,23 @@ var kn = class {
2534
2547
  }
2535
2548
  let i = this.lastNow ? Math.min(.25, Math.max(1 / 240, (e - this.lastNow) / 1e3)) : 1 / 60;
2536
2549
  this.lastNow = e;
2537
- let a = yn(r), o = /* @__PURE__ */ new Map();
2538
- for (let e of r.querySelectorAll(".game-ui-liquid-item")) e.closest(".game-ui-liquid-group") === r && o.set(e, bn(e, a));
2550
+ let a = Cn(r), o = /* @__PURE__ */ new Map();
2551
+ for (let e of r.querySelectorAll(".game-ui-liquid-item")) e.closest(".game-ui-liquid-group") === r && o.set(e, wn(e, a));
2539
2552
  let s = t.slice(0, 2), c = s.map((e) => {
2540
- let t = o.get(e.el) ?? bn(e.el, a), n = cn(sn(e.target));
2553
+ let t = o.get(e.el) ?? wn(e.el, a), n = fn(dn(e.target));
2541
2554
  return n && (e.src = n), {
2542
2555
  ...t,
2543
- r: vn(e.target, t.w, t.h)
2556
+ r: Sn(e.target, t.w, t.h)
2544
2557
  };
2545
2558
  }), l = s.length === 2 && c.every((e) => e.w > 0 && e.h > 0), u = l ? s[0]?.opts ?? null : null, d = l ? `${s[0]?.id}|${s[1]?.id}` : "";
2546
2559
  d !== this.meltPairKey && (this.meltPairKey = d, this.meltProximity = 0);
2547
- let f = l && c[0] && c[1] ? hn(1 - gn(c[0], c[1]) / Math.max(8, u.blur * 2.6)) : 0;
2560
+ let f = l && c[0] && c[1] ? yn(1 - bn(c[0], c[1]) / Math.max(8, u.blur * 2.6)) : 0;
2548
2561
  this.meltProximity += (f - this.meltProximity) * (1 - Math.exp(-14 * i)), Math.abs(this.meltProximity - f) < .004 && (this.meltProximity = f);
2549
- let p = this.computeDissolves(n, o, a, i), m = l, h = p.visuals.length > 0, g = m || h, _ = wn(n);
2562
+ let p = this.computeDissolves(n, o, a, i), m = l, h = p.visuals.length > 0, g = m || h, _ = On(n);
2550
2563
  if (g && !this.ensureClaim(r, u, _)) {
2551
2564
  for (let e of t) this.setMeltPainted(e, !1);
2552
- for (let e of n) un(e);
2553
- this.onState(mn), this.lastStateKey = "", this.awake = !1, this.lastNow = 0;
2565
+ for (let e of n) mn(e);
2566
+ this.onState(vn), this.lastStateKey = "", this.awake = !1, this.lastNow = 0;
2554
2567
  return;
2555
2568
  }
2556
2569
  if (m) for (let [e, n] of t.entries()) this.setMeltPainted(n, e < 2);
@@ -2567,14 +2580,14 @@ var kn = class {
2567
2580
  srcA: s[0].src,
2568
2581
  srcB: s[1].src,
2569
2582
  opts: s[0].opts,
2570
- prox: tn(this.meltProximity)
2583
+ prox: on(this.meltProximity)
2571
2584
  } : null,
2572
2585
  dissolves: p.visuals
2573
2586
  }, y = this.renderStateKey(v), b = y !== this.lastStateKey;
2574
- b && (this.lastStateKey = y, this.onState(v), this.lastActivity = e), b || p.pending || e - this.lastActivity < Zt ? (this.awake = !0, this.raf = requestAnimationFrame(this.loop)) : (this.awake = !1, this.lastNow = 0);
2587
+ b && (this.lastStateKey = y, this.onState(v), this.lastActivity = e), b || p.pending || e - this.lastActivity < tn ? (this.awake = !0, this.raf = requestAnimationFrame(this.loop)) : (this.awake = !1, this.lastNow = 0);
2575
2588
  };
2576
2589
  renderStateKey(e) {
2577
- let t = e.melt ? `${e.melt.srcA}|${e.melt.srcB}|${Sn(e.melt.a)}|${Sn(e.melt.b)}|${Y(e.melt.prox, 3)}` : "", n = e.dissolves.map((e) => `${e.id}|${e.src}|${e.neighborSrc ?? ""}|${Sn(e.image)}|${Y(e.cx)}|${Y(e.cy)}|${Y(e.d, 2)}|${Y(e.opacity, 3)}|${Y(e.phase, 3)}|${e.mask ?? ""}`).join(";");
2590
+ let t = e.melt ? `${e.melt.srcA}|${e.melt.srcB}|${En(e.melt.a)}|${En(e.melt.b)}|${Y(e.melt.prox, 3)}` : "", n = e.dissolves.map((e) => `${e.id}|${e.src}|${e.neighborSrc ?? ""}|${En(e.image)}|${Y(e.cx)}|${Y(e.cy)}|${Y(e.d, 2)}|${Y(e.opacity, 3)}|${Y(e.phase, 3)}|${e.mask ?? ""}`).join(";");
2578
2591
  return `${e.width}x${e.height}|${t}|${n}`;
2579
2592
  }
2580
2593
  computeDissolves(e, t, n, r) {
@@ -2582,7 +2595,7 @@ var kn = class {
2582
2595
  for (let s of e) {
2583
2596
  let e = t.get(s.el), c = s.image;
2584
2597
  if (!e || !c) {
2585
- s.image && un(s);
2598
+ s.image && mn(s);
2586
2599
  continue;
2587
2600
  }
2588
2601
  let l = this.motions.get(s.id) ?? {
@@ -2598,7 +2611,7 @@ var kn = class {
2598
2611
  let u = Infinity, d = null, f = null;
2599
2612
  for (let [t, n] of o) {
2600
2613
  if (t === s.el) continue;
2601
- let r = gn(e, n);
2614
+ let r = bn(e, n);
2602
2615
  r < u && (u = r, d = n, f = t);
2603
2616
  }
2604
2617
  let p = 0, m = 0;
@@ -2608,11 +2621,11 @@ var kn = class {
2608
2621
  }
2609
2622
  let h = 0;
2610
2623
  if (d && u < s.opts.range && s.opts.active) {
2611
- let e = hn((1 - u / s.opts.range) / .65), t = hn((p - s.opts.sink * .2) / Math.max(.01, s.opts.sink * .8));
2624
+ let e = yn((1 - u / s.opts.range) / .65), t = yn((p - s.opts.sink * .2) / Math.max(.01, s.opts.sink * .8));
2612
2625
  h = e ** 1.25 * s.opts.strength * (1 - t);
2613
2626
  }
2614
- if (h >= l.fade) l.fade += (h - l.fade) * Math.min(1, r * Qt), l.release = null;
2615
- else if (h > .02) l.fade += (h - l.fade) * Math.min(1, r * $t), l.release = null;
2627
+ if (h >= l.fade) l.fade += (h - l.fade) * Math.min(1, r * nn), l.release = null;
2628
+ else if (h > .02) l.fade += (h - l.fade) * Math.min(1, r * rn), l.release = null;
2616
2629
  else if (l.fade > .001 || l.release) {
2617
2630
  l.release ||= {
2618
2631
  from: l.fade,
@@ -2622,26 +2635,26 @@ var kn = class {
2622
2635
  l.fade = l.release.from * (1 - t) ** 2;
2623
2636
  } else l.fade = 0;
2624
2637
  if (l.fade <= .001) {
2625
- l.fade = 0, un(s);
2638
+ l.fade = 0, mn(s);
2626
2639
  continue;
2627
2640
  }
2628
2641
  let g = d ?? l.contact;
2629
2642
  if (!g) continue;
2630
- let _ = _n(e, g);
2643
+ let _ = xn(e, g);
2631
2644
  l.contact = { ...g };
2632
- let v = hn(l.release ? l.release.from * (.55 + .45 * (1 - Math.min(1, l.release.elapsed / Math.max(40, s.opts.fadeMs)))) : l.fade), y = l.release ? Math.min(1, l.release.elapsed / Math.max(40, s.opts.fadeMs)) : 0;
2633
- l.opacity = l.release ? (1 - y) ** 2 : l.opacity + (1 - l.opacity) * Math.min(1, r * Qt);
2645
+ let v = yn(l.release ? l.release.from * (.55 + .45 * (1 - Math.min(1, l.release.elapsed / Math.max(40, s.opts.fadeMs)))) : l.fade), y = l.release ? Math.min(1, l.release.elapsed / Math.max(40, s.opts.fadeMs)) : 0;
2646
+ l.opacity = l.release ? (1 - y) ** 2 : l.opacity + (1 - l.opacity) * Math.min(1, r * nn);
2634
2647
  let b = Math.min(Math.min(e.w, e.h) * .9, s.opts.zone * (.7 + .6 * v)), x = l.previous, S = x ? Math.hypot(e.x - x.x, e.y - x.y) / Math.max(.001, r) : 0;
2635
2648
  l.previous = {
2636
2649
  x: e.x,
2637
2650
  y: e.y
2638
2651
  }, l.phase += Math.min(r, 1 / 24) * s.opts.flowSpeed * .12 * Math.min(1, S / 40);
2639
- let C = (g.x + g.w / 2 - _.x) / Math.max(.001, Math.hypot(g.x + g.w / 2 - _.x, g.y + g.h / 2 - _.y)), w = (g.y + g.h / 2 - _.y) / Math.max(.001, Math.hypot(g.x + g.w / 2 - _.x, g.y + g.h / 2 - _.y)), T = 1 + Math.min(1.8, u / Math.max(8, 2 * b)), E = xn(c, n), D = d && u < Math.max(10, s.opts.blur * 2.5) ? hn(1 - u / Math.max(10, s.opts.blur * 2.5)) : l.fade, O = En(E, _.x, _.y, b, l.fade, Math.max(D, m * .75));
2640
- O ? (c.style.setProperty("mask-image", O), c.style.setProperty("-webkit-mask-image", O)) : un(s);
2641
- let k = Math.atan2(w, C) * 180 / Math.PI, A = {
2652
+ let C = (g.x + g.w / 2 - _.x) / Math.max(.001, Math.hypot(g.x + g.w / 2 - _.x, g.y + g.h / 2 - _.y)), w = (g.y + g.h / 2 - _.y) / Math.max(.001, Math.hypot(g.x + g.w / 2 - _.x, g.y + g.h / 2 - _.y)), T = 1 + Math.min(1.8, u / Math.max(8, 2 * b)), E = Tn(c, n), D = d && u < Math.max(10, s.opts.blur * 2.5) ? yn(1 - u / Math.max(10, s.opts.blur * 2.5)) : l.fade, O = An(E, _.x, _.y, b, l.fade, Math.max(D, m * .75));
2653
+ O ? (c.style.setProperty("mask-image", O), c.style.setProperty("-webkit-mask-image", O)) : mn(s);
2654
+ let ee = Math.atan2(w, C) * 180 / Math.PI, k = {
2642
2655
  id: s.id,
2643
- src: cn(c) ?? c.src,
2644
- neighborSrc: f ? cn(sn(f)) : null,
2656
+ src: fn(c) ?? c.src,
2657
+ neighborSrc: f ? fn(dn(f)) : null,
2645
2658
  image: E,
2646
2659
  cx: _.x,
2647
2660
  cy: _.y,
@@ -2649,7 +2662,7 @@ var kn = class {
2649
2662
  opacity: l.opacity,
2650
2663
  phase: l.phase,
2651
2664
  structure: v,
2652
- angle: k,
2665
+ angle: ee,
2653
2666
  gravityX: C,
2654
2667
  gravityY: w,
2655
2668
  elongation: T,
@@ -2658,7 +2671,7 @@ var kn = class {
2658
2671
  options: s.opts,
2659
2672
  mask: O
2660
2673
  };
2661
- i.push(A), a = a || !!l.release || Math.abs(h - l.fade) > .004 || l.previous === null;
2674
+ i.push(k), a = a || !!l.release || Math.abs(h - l.fade) > .004 || l.previous === null;
2662
2675
  }
2663
2676
  return {
2664
2677
  visuals: i,
@@ -2666,8 +2679,8 @@ var kn = class {
2666
2679
  };
2667
2680
  }
2668
2681
  };
2669
- function An({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox: d }) {
2670
- let f = `lgm-${On(u())}`, { blur: p, contrast: m, reach: h, fade: g, warp: _, mix: v, mixBlur: y, gravity: b, waviness: x } = s, S = {
2682
+ function Pn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox: d }) {
2683
+ let f = `lgm-${Mn(u())}`, { blur: p, contrast: m, reach: h, fade: g, warp: _, mix: v, mixBlur: y, gravity: b, waviness: x } = s, S = {
2671
2684
  x: r.x + r.w / 2,
2672
2685
  y: r.y + r.h / 2
2673
2686
  }, C = {
@@ -2676,7 +2689,7 @@ function An({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2676
2689
  }, w = Math.hypot(r.w, r.h) / 2 * h * d, T = Math.hypot(i.w, i.h) / 2 * h * d, E = {
2677
2690
  x: (S.x + C.x) / 2,
2678
2691
  y: (S.y + C.y) / 2
2679
- }, D = C.x - S.x, O = C.y - S.y, k = Math.max(.001, Math.hypot(D, O)), A = -O / k, ee = D / k, te = Math.max(0, (r.w + i.w) / 2 - Math.abs(D)), j = Math.max(0, (r.h + i.h) / 2 - Math.abs(O)), M = .5 * (te * Math.abs(A) + j * Math.abs(ee)) * d, N = Math.round(Math.atan2(ee, A) * 180 / Math.PI), ne = Math.round(v * d * 100) / 100, re = Math.round((2 + (p - 2) * d) * 10) / 10, ie = Math.round(_ * d * 10) / 10, ae = Math.round(re * 2.5 * 10) / 10, oe = Math.round((.4 + (2 + p * .8) * d) * 10) / 10, se = `translate(${r.x}, ${r.y})`, ce = `translate(${i.x}, ${i.y})`;
2692
+ }, D = C.x - S.x, O = C.y - S.y, ee = Math.max(.001, Math.hypot(D, O)), k = -O / ee, te = D / ee, ne = Math.max(0, (r.w + i.w) / 2 - Math.abs(D)), A = Math.max(0, (r.h + i.h) / 2 - Math.abs(O)), j = .5 * (ne * Math.abs(k) + A * Math.abs(te)) * d, M = Math.round(Math.atan2(te, k) * 180 / Math.PI), re = Math.round(v * d * 100) / 100, ie = Math.round((2 + (p - 2) * d) * 10) / 10, ae = Math.round(_ * d * 10) / 10, N = Math.round(ie * 2.5 * 10) / 10, oe = Math.round((.4 + (2 + p * .8) * d) * 10) / 10, se = `translate(${r.x}, ${r.y})`, ce = `translate(${i.x}, ${i.y})`;
2680
2693
  return /* @__PURE__ */ n("svg", {
2681
2694
  "aria-hidden": "true",
2682
2695
  focusable: "false",
@@ -2726,7 +2739,7 @@ function An({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2726
2739
  children: [
2727
2740
  /* @__PURE__ */ t("feGaussianBlur", {
2728
2741
  in: "SourceGraphic",
2729
- stdDeviation: re,
2742
+ stdDeviation: ie,
2730
2743
  result: "b"
2731
2744
  }),
2732
2745
  /* @__PURE__ */ t("feColorMatrix", {
@@ -2737,7 +2750,7 @@ function An({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2737
2750
  }),
2738
2751
  /* @__PURE__ */ t("feGaussianBlur", {
2739
2752
  in: "SourceGraphic",
2740
- stdDeviation: ae,
2753
+ stdDeviation: N,
2741
2754
  result: "bc"
2742
2755
  }),
2743
2756
  /* @__PURE__ */ t("feComposite", {
@@ -2756,7 +2769,7 @@ function An({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2756
2769
  /* @__PURE__ */ t("feDisplacementMap", {
2757
2770
  in: "mix",
2758
2771
  in2: "wn",
2759
- scale: ie,
2772
+ scale: ae,
2760
2773
  xChannelSelector: "R",
2761
2774
  yChannelSelector: "G",
2762
2775
  result: "warped"
@@ -2793,7 +2806,7 @@ function An({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2793
2806
  height: "220%",
2794
2807
  children: /* @__PURE__ */ t("feGaussianBlur", { stdDeviation: g })
2795
2808
  }),
2796
- ne > .01 ? /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ n("filter", {
2809
+ re > .01 ? /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ n("filter", {
2797
2810
  id: `${f}-marble`,
2798
2811
  x: "-25%",
2799
2812
  y: "-25%",
@@ -2816,7 +2829,7 @@ function An({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2816
2829
  /* @__PURE__ */ t("feDisplacementMap", {
2817
2830
  in: "c",
2818
2831
  in2: "n1",
2819
- scale: ne * 90,
2832
+ scale: re * 90,
2820
2833
  xChannelSelector: "R",
2821
2834
  yChannelSelector: "G",
2822
2835
  result: "d1"
@@ -2831,7 +2844,7 @@ function An({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2831
2844
  /* @__PURE__ */ t("feDisplacementMap", {
2832
2845
  in: "d1",
2833
2846
  in2: "n2",
2834
- scale: ne * 50,
2847
+ scale: re * 50,
2835
2848
  xChannelSelector: "R",
2836
2849
  yChannelSelector: "G",
2837
2850
  result: "d2"
@@ -2855,7 +2868,7 @@ function An({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2855
2868
  }),
2856
2869
  /* @__PURE__ */ t("feGaussianBlur", {
2857
2870
  in: "SourceGraphic",
2858
- stdDeviation: re,
2871
+ stdDeviation: ie,
2859
2872
  result: "mb"
2860
2873
  }),
2861
2874
  /* @__PURE__ */ t("feColorMatrix", {
@@ -2874,7 +2887,7 @@ function An({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2874
2887
  /* @__PURE__ */ t("feDisplacementMap", {
2875
2888
  in: "mg",
2876
2889
  in2: "mwn",
2877
- scale: ie,
2890
+ scale: ae,
2878
2891
  xChannelSelector: "R",
2879
2892
  yChannelSelector: "G",
2880
2893
  result: "mshape"
@@ -2897,9 +2910,9 @@ function An({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2897
2910
  children: /* @__PURE__ */ t("ellipse", {
2898
2911
  cx: E.x,
2899
2912
  cy: E.y,
2900
- rx: (w + T) / 2 + M,
2913
+ rx: (w + T) / 2 + j,
2901
2914
  ry: (w + T) / 2 * b,
2902
- transform: `rotate(${N}, ${E.x}, ${E.y})`,
2915
+ transform: `rotate(${M}, ${E.x}, ${E.y})`,
2903
2916
  fill: "#fff"
2904
2917
  })
2905
2918
  })
@@ -2935,9 +2948,9 @@ function An({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2935
2948
  children: /* @__PURE__ */ t("ellipse", {
2936
2949
  cx: E.x,
2937
2950
  cy: E.y,
2938
- rx: T + M,
2951
+ rx: T + j,
2939
2952
  ry: T,
2940
- transform: `rotate(${N}, ${E.x}, ${E.y})`,
2953
+ transform: `rotate(${M}, ${E.x}, ${E.y})`,
2941
2954
  fill: "#000"
2942
2955
  })
2943
2956
  })]
@@ -2965,9 +2978,9 @@ function An({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2965
2978
  children: /* @__PURE__ */ t("ellipse", {
2966
2979
  cx: E.x,
2967
2980
  cy: E.y,
2968
- rx: w + M,
2981
+ rx: w + j,
2969
2982
  ry: w,
2970
- transform: `rotate(${N}, ${E.x}, ${E.y})`,
2983
+ transform: `rotate(${M}, ${E.x}, ${E.y})`,
2971
2984
  fill: "#000"
2972
2985
  })
2973
2986
  })]
@@ -2993,7 +3006,7 @@ function An({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2993
3006
  })
2994
3007
  })]
2995
3008
  }),
2996
- ne > .01 ? /* @__PURE__ */ t("g", {
3009
+ re > .01 ? /* @__PURE__ */ t("g", {
2997
3010
  mask: `url(#${f}-marblemask)`,
2998
3011
  children: /* @__PURE__ */ n("g", {
2999
3012
  filter: `url(#${f}-marble)`,
@@ -3043,10 +3056,10 @@ function An({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
3043
3056
  ]
3044
3057
  });
3045
3058
  }
3046
- function jn({ visuals: r }) {
3047
- let i = `lgd-${On(u())}`;
3059
+ function Fn({ visuals: r }) {
3060
+ let i = `lgd-${Mn(u())}`;
3048
3061
  return /* @__PURE__ */ t(e, { children: r.map((e) => {
3049
- let r = `${i}-${On(e.id)}`, a = `${r}-pattern`, o = `${r}-mask`, s = r + "-neighbor", c = e.image, l = e.elongation > 1.001 ? `translate(${Y(e.cx)} ${Y(e.cy)}) rotate(${Y(e.angle)}) scale(${Y(e.elongation, 3)} 1) rotate(${-Y(e.angle)}) translate(${Y(-e.cx)} ${Y(-e.cy)})` : void 0, u = e.d * e.elongation + e.options.blur * 2.5 + e.options.warp + e.options.gravity * .5 + 8, d = Math.min(.3, Math.max(.01, e.options.warpFreq / (e.options.zone * 1.1))), f = Tn(e.cx, e.cy, e.gravityX, e.gravityY, e.d, e.options.pull * e.structure, e.options.gravity * e.structure, e.elongation, e.options.taper);
3062
+ let r = `${i}-${Mn(e.id)}`, a = `${r}-pattern`, o = `${r}-mask`, s = r + "-neighbor", c = e.image, l = e.elongation > 1.001 ? `translate(${Y(e.cx)} ${Y(e.cy)}) rotate(${Y(e.angle)}) scale(${Y(e.elongation, 3)} 1) rotate(${-Y(e.angle)}) translate(${Y(-e.cx)} ${Y(-e.cy)})` : void 0, u = e.d * e.elongation + e.options.blur * 2.5 + e.options.warp + e.options.gravity * .5 + 8, d = Math.min(.3, Math.max(.01, e.options.warpFreq / (e.options.zone * 1.1))), f = kn(e.cx, e.cy, e.gravityX, e.gravityY, e.d, e.options.pull * e.structure, e.options.gravity * e.structure, e.elongation, e.options.taper);
3050
3063
  return /* @__PURE__ */ n("g", {
3051
3064
  "data-liquid-gooey-dissolve": "",
3052
3065
  children: [
@@ -3178,7 +3191,7 @@ function jn({ visuals: r }) {
3178
3191
  /* @__PURE__ */ t("feColorMatrix", {
3179
3192
  in: "erosion-noise",
3180
3193
  type: "matrix",
3181
- values: Dn(c),
3194
+ values: jn(c),
3182
3195
  result: "erosion"
3183
3196
  }),
3184
3197
  /* @__PURE__ */ t("feComposite", {
@@ -3250,10 +3263,10 @@ function jn({ visuals: r }) {
3250
3263
  }, e.id);
3251
3264
  }) });
3252
3265
  }
3253
- function Mn({ registry: e, getGroup: r }) {
3254
- let [i, a] = m(mn);
3266
+ function In({ registry: e, getGroup: r }) {
3267
+ let [i, a] = m(vn);
3255
3268
  return d(() => {
3256
- let t = new kn({
3269
+ let t = new Nn({
3257
3270
  registry: e,
3258
3271
  getGroup: r,
3259
3272
  onState: a
@@ -3275,42 +3288,42 @@ function Mn({ registry: e, getGroup: r }) {
3275
3288
  overflow: "visible",
3276
3289
  pointerEvents: "none"
3277
3290
  },
3278
- children: [i.melt ? /* @__PURE__ */ t(An, {
3291
+ children: [i.melt ? /* @__PURE__ */ t(Pn, {
3279
3292
  ...i.melt,
3280
3293
  width: i.width,
3281
3294
  height: i.height
3282
- }) : null, i.dissolves.length > 0 ? /* @__PURE__ */ t(jn, { visuals: i.dissolves }) : null]
3295
+ }) : null, i.dissolves.length > 0 ? /* @__PURE__ */ t(Fn, { visuals: i.dissolves }) : null]
3283
3296
  });
3284
3297
  }
3285
3298
  //#endregion
3286
3299
  //#region src/LiquidGroup.tsx
3287
- var Nn = i(null);
3288
- function Pn() {
3289
- let e = c(Nn);
3300
+ var Ln = i(null);
3301
+ function Rn() {
3302
+ let e = c(Ln);
3290
3303
  if (!e) throw Error("<LiquidGroup.Item> must be rendered inside <LiquidGroup>.");
3291
3304
  return e;
3292
3305
  }
3293
- function Fn(e) {
3306
+ function zn(e) {
3294
3307
  return e.replace(/[^a-zA-Z0-9_-]/g, "");
3295
3308
  }
3296
- function In(e, t) {
3309
+ function Bn(e, t) {
3297
3310
  return Number.isFinite(e) ? e : t;
3298
3311
  }
3299
- function Ln(e, t) {
3312
+ function Vn(e, t) {
3300
3313
  if (!e) return e;
3301
3314
  let n = /^var\((--[\w-]+)\)$/.exec(e.trim());
3302
3315
  if (!n || !t) return e;
3303
3316
  let r = t.ownerDocument.defaultView;
3304
3317
  return r && r.getComputedStyle(t).getPropertyValue(n[1] ?? "").trim() || e;
3305
3318
  }
3306
- function Rn(e, t, n) {
3307
- let r = Ln(e, t), i = Number.parseFloat(r ?? "");
3319
+ function Hn(e, t, n) {
3320
+ let r = Vn(e, t), i = Number.parseFloat(r ?? "");
3308
3321
  return Number.isFinite(i) ? i : n;
3309
3322
  }
3310
- function zn(...e) {
3323
+ function Un(...e) {
3311
3324
  return e.filter(Boolean).join(" ") || void 0;
3312
3325
  }
3313
- function Bn(e) {
3326
+ function Wn(e) {
3314
3327
  let t = { ...e };
3315
3328
  for (let e of [
3316
3329
  "children",
@@ -3329,56 +3342,53 @@ function Bn(e) {
3329
3342
  ]) delete t[e];
3330
3343
  return t;
3331
3344
  }
3332
- function Vn() {
3345
+ function Gn() {
3333
3346
  return typeof window > "u" || typeof window.matchMedia != "function" ? null : window.matchMedia("(prefers-reduced-motion: reduce)");
3334
3347
  }
3335
- function Hn() {
3336
- let [e, t] = m(() => Vn()?.matches ?? !1);
3348
+ function Kn() {
3349
+ let [e, t] = m(() => Gn()?.matches ?? !1);
3337
3350
  return l(() => {
3338
- let e = Vn();
3351
+ let e = Gn();
3339
3352
  if (!e) return;
3340
3353
  let n = (e) => t(e.matches);
3341
3354
  return t(e.matches), e.addEventListener("change", n), () => e.removeEventListener("change", n);
3342
3355
  }, []), e;
3343
3356
  }
3344
- function Un(e) {
3345
- return e.reduce((e, t) => Math.max(e, Math.max(Math.abs(t.x), Math.abs(t.y)) + t.blur * 1.5 + Math.max(0, t.spread)), 0);
3346
- }
3347
- var Wn = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-surface, var(--game-ui-panel-strong))", filterPadding: a = 24, shadow: o, stroke: c, waviness: h, wavinessFreq: g, wavinessClamp: _, motion: v = "auto", className: y, style: b, children: x, ...S }, C) {
3357
+ var qn = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-surface, var(--game-ui-panel-strong))", filterPadding: a = 24, shadow: o, stroke: c, waviness: h, wavinessFreq: g, wavinessClamp: _, motion: v = "auto", className: y, style: b, children: x, ...S }, C) {
3348
3358
  let w = p(null), [T, E] = m(null), [D, O] = m({
3349
3359
  w: 0,
3350
3360
  h: 0
3351
- }), [k, A] = m({
3352
- waviness: Fe.waviness,
3353
- wavinessFreq: Fe.wavinessFreq
3354
- }), [ee, te] = m(0), j = p(0), M = Hn(), N = v === "reduced" || M, [ne, re] = m(N ? "reduced" : "static"), ie = Math.max(0, In(e, 6)), ae = Math.max(1, In(r, 18)), oe = Math.max(0, In(a, 24)), se = Math.max(0, In(h ?? k.waviness, Fe.waviness)), ce = _ !== !1 && Math.max(0, In(_ ?? .3, He)), le = Ue(se, D.w > 0 && D.h > 0 ? Math.min(D.w, D.h) : 0, ce), ue = Math.max(0, In(g ?? k.wavinessFreq, Fe.wavinessFreq)), P = Ln(o, w.current), de = Ln(c, w.current), fe = f(() => Jt(P), [P]), pe = f(() => Yt(de), [de]), me = Math.ceil(ie * 3 + oe + Un(fe) + (pe ? pe.width : 0) + le + (le > 0 ? Math.ceil(Pe * 3) : 0)), he = p(me);
3355
- he.current = me;
3356
- let F = Math.ceil(me + ee), ge = p(F);
3361
+ }), [ee, k] = m({
3362
+ waviness: Pe.waviness,
3363
+ wavinessFreq: Pe.wavinessFreq
3364
+ }), [te, ne] = m(0), A = p(0), j = Kn(), M = v === "reduced" || j, [re, ie] = m(M ? "reduced" : "static"), ae = Math.max(0, Bn(e, 6)), N = Math.max(1, Bn(r, 18)), oe = Math.max(0, Bn(a, 24)), se = Math.max(0, Bn(h ?? ee.waviness, Pe.waviness)), ce = _ !== !1 && Math.max(0, Bn(_ ?? .3, Ve)), le = He(se, D.w > 0 && D.h > 0 ? Math.min(D.w, D.h) : 0, ce), ue = Math.max(0, Bn(g ?? ee.wavinessFreq, Pe.wavinessFreq)), P = Vn(o, w.current), de = Vn(c, w.current), fe = f(() => Jt(P), [P]), pe = f(() => Qt(fe), [fe]), me = f(() => Zt(fe), [fe]), he = f(() => Yt(de), [de]), F = Math.ceil(ae * 3 + oe + $t(pe) + (he ? he.width : 0) + le + (le > 0 ? Math.ceil(Ne * 3) : 0)), ge = p(F);
3357
3365
  ge.current = F;
3358
- let _e = `liquid-gooey-${Fn(u())}`, I = s((e) => {
3366
+ let I = Math.ceil(F + te), L = p(I);
3367
+ L.current = I;
3368
+ let R = `liquid-gooey-${zn(u())}`, _e = s((e) => {
3359
3369
  w.current = e, typeof C == "function" ? C(e) : C && (C.current = e);
3360
- }, [C]), ve = s((e) => E(e), []);
3370
+ }, [C]), B = s((e) => E(e), []);
3361
3371
  d(() => {
3362
3372
  let e = w.current;
3363
3373
  if (!e) return;
3364
3374
  let t = {
3365
- waviness: Math.max(0, h === void 0 ? Rn(L.waviness, e, Fe.waviness) : In(h, Fe.waviness)),
3366
- wavinessFreq: Math.max(0, g === void 0 ? Rn(L.wavinessFreq, e, Fe.wavinessFreq) : In(g, Fe.wavinessFreq))
3375
+ waviness: Math.max(0, h === void 0 ? Hn(z.waviness, e, Pe.waviness) : Bn(h, Pe.waviness)),
3376
+ wavinessFreq: Math.max(0, g === void 0 ? Hn(z.wavinessFreq, e, Pe.wavinessFreq) : Bn(g, Pe.wavinessFreq))
3367
3377
  };
3368
- A((e) => e.waviness === t.waviness && e.wavinessFreq === t.wavinessFreq ? e : t);
3378
+ k((e) => e.waviness === t.waviness && e.wavinessFreq === t.wavinessFreq ? e : t);
3369
3379
  }, [h, g]);
3370
- let R = f(() => new Gt({
3380
+ let V = f(() => new Gt({
3371
3381
  getGroup: () => w.current,
3372
3382
  getFilterArea: () => {
3373
3383
  let e = w.current;
3374
- return e ? (e.offsetWidth + (he.current + j.current) * 2) * (e.offsetHeight + (he.current + j.current) * 2) : 0;
3384
+ return e ? (e.offsetWidth + (ge.current + A.current) * 2) * (e.offsetHeight + (ge.current + A.current) * 2) : 0;
3375
3385
  },
3376
- onModeChange: re,
3386
+ onModeChange: ie,
3377
3387
  onFeaturePaddingChange: (e) => {
3378
- j.current = e, te((t) => Math.abs(t - e) < .5 ? t : e);
3388
+ A.current = e, ne((t) => Math.abs(t - e) < .5 ? t : e);
3379
3389
  },
3380
3390
  follow: v === "follow"
3381
- }), [v]), z = f(() => dn(), []);
3391
+ }), [v]), ve = f(() => hn(), []);
3382
3392
  d(() => {
3383
3393
  let e = w.current;
3384
3394
  if (!e) return;
@@ -3387,23 +3397,23 @@ var Wn = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-su
3387
3397
  w: e.offsetWidth,
3388
3398
  h: e.offsetHeight
3389
3399
  };
3390
- O((e) => e.w === t.w && e.h === t.h ? e : t), R.setFilterArea((t.w + ge.current * 2) * (t.h + ge.current * 2));
3400
+ O((e) => e.w === t.w && e.h === t.h ? e : t), V.setFilterArea((t.w + L.current * 2) * (t.h + L.current * 2));
3391
3401
  };
3392
3402
  if (t(), typeof ResizeObserver > "u") return;
3393
3403
  let n = new ResizeObserver(t);
3394
3404
  return n.observe(e), () => n.disconnect();
3395
- }, [R, F]), l(() => {
3396
- R.setReducedMotion(N);
3397
- }, [R, N]), l(() => () => R.dispose(), [R]);
3398
- let ye = Math.max(1, D.w), be = Math.max(1, D.h), B = zn("game-ui-liquid-group", y);
3405
+ }, [V, I]), l(() => {
3406
+ V.setReducedMotion(M);
3407
+ }, [V, M]), l(() => () => V.dispose(), [V]);
3408
+ let H = Math.max(1, D.w), U = Math.max(1, D.h), W = Un("game-ui-liquid-group", y);
3399
3409
  return /* @__PURE__ */ n("div", {
3400
3410
  ...S,
3401
- ref: I,
3402
- className: B,
3403
- "data-liquid-filter-area": Math.round((D.w + F * 2) * (D.h + F * 2)),
3404
- "data-liquid-filter-budget": Te,
3405
- "data-liquid-feature-padding": Math.round(ee * 10) / 10,
3406
- "data-liquid-motion": ne,
3411
+ ref: _e,
3412
+ className: W,
3413
+ "data-liquid-filter-area": Math.round((D.w + I * 2) * (D.h + I * 2)),
3414
+ "data-liquid-filter-budget": we,
3415
+ "data-liquid-feature-padding": Math.round(te * 10) / 10,
3416
+ "data-liquid-motion": re,
3407
3417
  "data-liquid-waviness": Math.round(le * 100) / 100,
3408
3418
  style: b,
3409
3419
  children: [
@@ -3412,39 +3422,40 @@ var Wn = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-su
3412
3422
  className: "game-ui-liquid-silhouette",
3413
3423
  "data-liquid-gooey-silhouette": "",
3414
3424
  focusable: "false",
3415
- viewBox: `0 0 ${ye} ${be}`,
3425
+ style: me ? { filter: me } : void 0,
3426
+ viewBox: `0 0 ${H} ${U}`,
3416
3427
  children: [/* @__PURE__ */ t("defs", { children: /* @__PURE__ */ t("filter", {
3417
3428
  colorInterpolationFilters: "sRGB",
3418
3429
  filterUnits: "userSpaceOnUse",
3419
- height: be + F * 2,
3420
- id: _e,
3421
- width: ye + F * 2,
3422
- x: -F,
3423
- y: -F,
3424
- children: /* @__PURE__ */ t(Ve, {
3425
- blur: ie,
3426
- contrast: ae,
3427
- shadows: fe,
3428
- stroke: pe,
3430
+ height: U + I * 2,
3431
+ id: R,
3432
+ width: H + I * 2,
3433
+ x: -I,
3434
+ y: -I,
3435
+ children: /* @__PURE__ */ t(Be, {
3436
+ blur: ae,
3437
+ contrast: N,
3438
+ shadows: pe,
3439
+ stroke: he,
3429
3440
  waviness: le,
3430
3441
  wavinessFreq: ue
3431
3442
  })
3432
3443
  }) }), /* @__PURE__ */ t("g", {
3433
- ref: ve,
3444
+ ref: B,
3434
3445
  fill: i,
3435
- filter: `url(#${_e})`
3446
+ filter: `url(#${R})`
3436
3447
  })]
3437
3448
  }),
3438
- /* @__PURE__ */ t(Mn, {
3439
- registry: z,
3449
+ /* @__PURE__ */ t(In, {
3450
+ registry: ve,
3440
3451
  getGroup: () => w.current
3441
3452
  }),
3442
- /* @__PURE__ */ t(Nn.Provider, {
3453
+ /* @__PURE__ */ t(Ln.Provider, {
3443
3454
  value: {
3444
3455
  portal: T,
3445
- engine: R,
3456
+ engine: V,
3446
3457
  follow: v === "follow",
3447
- imageMelt: z
3458
+ imageMelt: ve
3448
3459
  },
3449
3460
  children: /* @__PURE__ */ t("div", {
3450
3461
  className: "game-ui-liquid-content",
@@ -3453,24 +3464,24 @@ var Wn = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-su
3453
3464
  })
3454
3465
  ]
3455
3466
  });
3456
- }), Gn = a(function({ effect: r, melt: i, dissolve: a, x: o = 0, y: c = 0, scale: m = 1, transition: g, delay: _, radius: v, morph: y, bend: b, observe: x, className: S, style: C, children: w, ...T }, E) {
3457
- let { portal: D, engine: O, follow: k, imageMelt: A } = Pn(), ee = `liquid-item-${Fn(u())}`, te = p(null), j = p(null), M = p(null), N = p(null), ne = JSON.stringify(a ?? null), re = a !== void 0 && a !== !1, ie = f(() => {
3458
- let e = r === "morph" || r === "bend" ? r : void 0, t = e === "bend", n = r === "bend" || k && y === void 0 && r !== "morph" || re && y === void 0 && r !== "morph" ? void 0 : y ?? {}, i = {
3467
+ }), Jn = a(function({ effect: r, melt: i, dissolve: a, x: o = 0, y: c = 0, scale: m = 1, transition: g, delay: _, radius: v, morph: y, bend: b, observe: x, className: S, style: C, children: w, ...T }, E) {
3468
+ let { portal: D, engine: O, follow: ee, imageMelt: k } = Rn(), te = `liquid-item-${zn(u())}`, ne = p(null), A = p(null), j = p(null), M = p(null), re = JSON.stringify(a ?? null), ie = a !== void 0 && a !== !1, ae = f(() => {
3469
+ let e = r === "morph" || r === "bend" ? r : void 0, t = e === "bend", n = r === "bend" || ee && y === void 0 && r !== "morph" || ie && y === void 0 && r !== "morph" ? void 0 : y ?? {}, i = {
3459
3470
  ...e === void 0 ? {} : { effect: e },
3460
3471
  ...n === void 0 ? {} : { morph: n },
3461
3472
  ...b === void 0 ? {} : { bend: b },
3462
3473
  ...x === void 0 && !t ? {} : { observe: t || x },
3463
- x: In(o, 0),
3464
- y: In(c, 0),
3465
- scale: In(m, 1)
3474
+ x: Bn(o, 0),
3475
+ y: Bn(c, 0),
3476
+ scale: Bn(m, 1)
3466
3477
  };
3467
3478
  return g !== void 0 && (i.transition = g), _ !== void 0 && (i.delay = _), v !== void 0 && (i.radius = v), i;
3468
3479
  }, [
3469
3480
  b,
3470
3481
  _,
3471
3482
  r,
3472
- k,
3473
- re,
3483
+ ee,
3484
+ ie,
3474
3485
  y,
3475
3486
  x,
3476
3487
  v,
@@ -3479,66 +3490,76 @@ var Wn = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-su
3479
3490
  o,
3480
3491
  c
3481
3492
  ]);
3482
- M.current === null && (M.current = ie);
3483
- let ae = s((e) => {
3484
- te.current = e, typeof E == "function" ? E(e) : E && (E.current = e);
3493
+ j.current === null && (j.current = ae);
3494
+ let N = s((e) => {
3495
+ ne.current = e, typeof E == "function" ? E(e) : E && (E.current = e);
3485
3496
  }, [E]);
3486
3497
  return d(() => {
3487
- let e = te.current, t = j.current;
3488
- if (!(!D || !e || !t || !M.current)) return O.register({
3489
- id: ee,
3498
+ let e = ne.current, t = A.current;
3499
+ if (!(!D || !e || !t || !j.current)) return O.register({
3500
+ id: te,
3490
3501
  host: e,
3491
3502
  blob: t,
3492
- config: M.current
3503
+ config: j.current
3493
3504
  });
3494
3505
  }, [
3495
3506
  O,
3496
- ee,
3507
+ te,
3497
3508
  D
3498
3509
  ]), d(() => {
3499
- O.update(ee, ie);
3510
+ O.update(te, ae);
3500
3511
  }, [
3501
- ie,
3512
+ ae,
3502
3513
  O,
3503
- ee
3514
+ te
3504
3515
  ]), d(() => () => {
3505
- N.current?.unregister(), N.current = null;
3506
- }, [A]), d(() => {
3516
+ M.current?.unregister(), M.current = null;
3517
+ }, [k]), d(() => {
3507
3518
  if (r === "move" || a === void 0 || a === !1) {
3508
- N.current?.unregister(), N.current = null;
3519
+ M.current?.unregister(), M.current = null;
3509
3520
  return;
3510
3521
  }
3511
- let e = te.current;
3522
+ let e = ne.current;
3512
3523
  if (e) {
3513
- if (N.current) {
3514
- N.current.update(a);
3524
+ if (M.current) {
3525
+ M.current.update(a);
3515
3526
  return;
3516
3527
  }
3517
- N.current = fn(A, e, a);
3528
+ M.current = gn(k, e, a);
3518
3529
  }
3519
3530
  }, [
3520
- ne,
3531
+ re,
3521
3532
  r,
3522
- A
3523
- ]), l(() => {}, [r, re]), d(() => {}, []), /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ t("div", {
3533
+ k
3534
+ ]), l(() => {
3535
+ let e = r;
3536
+ e === "move" && console.warn("[swimmer-ui] effect=\"move\" is not an item effect. Use <LiquidGroup motion=\"follow\"> for selection and progress."), !(e !== "move" || !ie) && console.warn("[swimmer-ui] dissolve is ignored for effect=\"move\" because Move intentionally lags the measured image rect.");
3537
+ }, [r, ie]), d(() => {
3538
+ let e = ne.current;
3539
+ if (!e) return;
3540
+ let t = e.firstElementChild;
3541
+ if (!t) return;
3542
+ let n = window.getComputedStyle(t), r = n.borderStyle !== "none" && n.borderWidth !== "0px" && n.borderWidth !== "", i = n.outlineStyle !== "none" && n.outlineWidth !== "0px" && n.outlineWidth !== "", a = n.boxShadow && n.boxShadow !== "none";
3543
+ (r || i || a) && console.warn("LiquidGroup.Item children should not have their own border, outline, or box-shadow. They exist on the content layer and will not merge with the liquid silhouette. Use the `stroke` and `shadow` props on <LiquidGroup> instead.");
3544
+ }, []), /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ t("div", {
3524
3545
  ...T,
3525
- ref: ae,
3526
- className: zn("game-ui-liquid-item", S),
3546
+ ref: N,
3547
+ className: Un("game-ui-liquid-item", S),
3527
3548
  style: C,
3528
3549
  children: w
3529
3550
  }), D ? h(/* @__PURE__ */ t("path", {
3530
- ref: j,
3551
+ ref: A,
3531
3552
  d: "",
3532
3553
  "data-liquid-gooey-blob": ""
3533
3554
  }), D) : null] });
3534
- }), Kn = a(function(e, n) {
3535
- let { imageMelt: r } = Pn();
3536
- if (e.effect !== "melt") return /* @__PURE__ */ t(Gn, {
3555
+ }), Yn = a(function(e, n) {
3556
+ let { imageMelt: r } = Rn();
3557
+ if (e.effect !== "melt") return /* @__PURE__ */ t(Jn, {
3537
3558
  ...e,
3538
3559
  ref: n
3539
3560
  });
3540
- let i = Bn(e), a = e.children, o = { ...e.melt ?? {} }, s = o.src;
3541
- return delete o.src, /* @__PURE__ */ t(pn, {
3561
+ let i = Wn(e), a = e.children, o = { ...e.melt ?? {} }, s = o.src;
3562
+ return delete o.src, /* @__PURE__ */ t(_n, {
3542
3563
  ...i,
3543
3564
  registry: r,
3544
3565
  children: a,
@@ -3546,10 +3567,10 @@ var Wn = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-su
3546
3567
  ...s === void 0 ? {} : { src: s },
3547
3568
  ...n === void 0 ? {} : { forwardedRef: n }
3548
3569
  });
3549
- }), qn = Object.assign(Wn, { Item: Kn });
3570
+ }), Xn = Object.assign(qn, { Item: Yn });
3550
3571
  //#endregion
3551
3572
  //#region src/GameCallout.tsx
3552
- function Jn({ heading: e, children: r, tone: i = "info", className: a, ...o }) {
3573
+ function Zn({ heading: e, children: r, tone: i = "info", className: a, ...o }) {
3553
3574
  return /* @__PURE__ */ n("div", {
3554
3575
  className: [
3555
3576
  "game-ui-callout",
@@ -3570,7 +3591,7 @@ function Jn({ heading: e, children: r, tone: i = "info", className: a, ...o }) {
3570
3591
  }
3571
3592
  //#endregion
3572
3593
  //#region src/GameDialog.tsx
3573
- function Yn({ children: e, className: r, title: i }) {
3594
+ function Qn({ children: e, className: r, title: i }) {
3574
3595
  let a = u();
3575
3596
  return /* @__PURE__ */ n("section", {
3576
3597
  "aria-labelledby": a,
@@ -3588,7 +3609,7 @@ function Yn({ children: e, className: r, title: i }) {
3588
3609
  }
3589
3610
  //#endregion
3590
3611
  //#region src/GameHistoryPanel.tsx
3591
- function Xn({ entries: e, label: r }) {
3612
+ function $n({ entries: e, label: r }) {
3592
3613
  return /* @__PURE__ */ t("section", {
3593
3614
  "aria-label": r,
3594
3615
  className: "game-ui-history",
@@ -3604,7 +3625,7 @@ function Xn({ entries: e, label: r }) {
3604
3625
  }
3605
3626
  //#endregion
3606
3627
  //#region src/GameHudActions.tsx
3607
- function Zn({ children: e, className: n, label: r, ...i }) {
3628
+ function er({ children: e, className: n, label: r, ...i }) {
3608
3629
  return /* @__PURE__ */ t("nav", {
3609
3630
  "aria-label": r,
3610
3631
  className: ["game-ui-hud-actions", n].filter(Boolean).join(" "),
@@ -3624,7 +3645,7 @@ function X({ children: e, className: r, title: i, tone: a = "default", ...o }) {
3624
3645
  children: [i ? /* @__PURE__ */ t("h3", { children: i }) : null, e]
3625
3646
  });
3626
3647
  }
3627
- function Qn({ children: e, className: n, label: r, type: i = "button", ...a }) {
3648
+ function tr({ children: e, className: n, label: r, type: i = "button", ...a }) {
3628
3649
  return /* @__PURE__ */ t("button", {
3629
3650
  "aria-label": r,
3630
3651
  className: ["game-ui-icon-button", n].filter(Boolean).join(" "),
@@ -3633,7 +3654,7 @@ function Qn({ children: e, className: n, label: r, type: i = "button", ...a }) {
3633
3654
  children: e
3634
3655
  });
3635
3656
  }
3636
- function $n({ children: e, label: i }) {
3657
+ function nr({ children: e, label: i }) {
3637
3658
  let a = u();
3638
3659
  return /* @__PURE__ */ n("span", {
3639
3660
  className: "game-ui-tooltip",
@@ -3644,7 +3665,7 @@ function $n({ children: e, label: i }) {
3644
3665
  })]
3645
3666
  });
3646
3667
  }
3647
- function er({ activeId: e, id: n, onSelect: r, tabs: i }) {
3668
+ function rr({ activeId: e, id: n, onSelect: r, tabs: i }) {
3648
3669
  let a = u(), o = n ?? a;
3649
3670
  return /* @__PURE__ */ t("div", {
3650
3671
  className: "game-ui-tabs",
@@ -3684,10 +3705,10 @@ function er({ activeId: e, id: n, onSelect: r, tabs: i }) {
3684
3705
  }, n.id))
3685
3706
  });
3686
3707
  }
3687
- function tr(e, t) {
3708
+ function ir(e, t) {
3688
3709
  return e.x === t.x && e.y === t.y && e.width === t.width && e.height === t.height;
3689
3710
  }
3690
- function nr({ activeId: e, label: r, onSelect: i, options: a }) {
3711
+ function ar({ activeId: e, label: r, onSelect: i, options: a }) {
3691
3712
  let o = p(null), s = p([]), [c, l] = m({
3692
3713
  x: 0,
3693
3714
  y: 0,
@@ -3704,7 +3725,7 @@ function nr({ activeId: e, label: r, onSelect: i, options: a }) {
3704
3725
  width: r.width,
3705
3726
  height: r.height
3706
3727
  };
3707
- l((e) => tr(e, i) ? e : i);
3728
+ l((e) => ir(e, i) ? e : i);
3708
3729
  };
3709
3730
  if (n(), typeof ResizeObserver > "u") return;
3710
3731
  let r = new ResizeObserver(n);
@@ -3719,7 +3740,7 @@ function nr({ activeId: e, label: r, onSelect: i, options: a }) {
3719
3740
  className: "game-ui-segmented",
3720
3741
  role: "group",
3721
3742
  children: [
3722
- /* @__PURE__ */ t(qn, {
3743
+ /* @__PURE__ */ t(Xn, {
3723
3744
  "aria-hidden": "true",
3724
3745
  className: "game-ui-segmented-surface",
3725
3746
  fill: "var(--game-ui-surface-raised)",
@@ -3730,7 +3751,7 @@ function nr({ activeId: e, label: r, onSelect: i, options: a }) {
3730
3751
  pointerEvents: "none",
3731
3752
  position: "absolute"
3732
3753
  },
3733
- children: /* @__PURE__ */ t(qn.Item, {
3754
+ children: /* @__PURE__ */ t(Xn.Item, {
3734
3755
  style: {
3735
3756
  borderRadius: "var(--game-ui-radius-control)",
3736
3757
  inset: 0,
@@ -3739,7 +3760,7 @@ function nr({ activeId: e, label: r, onSelect: i, options: a }) {
3739
3760
  children: null
3740
3761
  })
3741
3762
  }),
3742
- c.width > 0 && c.height > 0 ? /* @__PURE__ */ t(qn, {
3763
+ c.width > 0 && c.height > 0 ? /* @__PURE__ */ t(Xn, {
3743
3764
  "aria-hidden": "true",
3744
3765
  className: "game-ui-segmented-follow",
3745
3766
  fill: "var(--game-ui-secondary)",
@@ -3750,7 +3771,7 @@ function nr({ activeId: e, label: r, onSelect: i, options: a }) {
3750
3771
  pointerEvents: "none",
3751
3772
  position: "absolute"
3752
3773
  },
3753
- children: /* @__PURE__ */ t(qn.Item, {
3774
+ children: /* @__PURE__ */ t(Xn.Item, {
3754
3775
  "aria-hidden": "true",
3755
3776
  style: {
3756
3777
  borderRadius: "var(--game-ui-radius-control)",
@@ -3779,7 +3800,7 @@ function nr({ activeId: e, label: r, onSelect: i, options: a }) {
3779
3800
  ]
3780
3801
  });
3781
3802
  }
3782
- function rr({ label: e, max: r, min: i, onChange: a, value: o }) {
3803
+ function or({ label: e, max: r, min: i, onChange: a, value: o }) {
3783
3804
  return /* @__PURE__ */ n("label", {
3784
3805
  className: "game-ui-slider",
3785
3806
  children: [/* @__PURE__ */ t("span", { children: e }), /* @__PURE__ */ t("input", {
@@ -3793,7 +3814,7 @@ function rr({ label: e, max: r, min: i, onChange: a, value: o }) {
3793
3814
  })]
3794
3815
  });
3795
3816
  }
3796
- function ir({ checked: e, disabled: r, label: i, onClick: a }) {
3817
+ function sr({ checked: e, disabled: r, label: i, onClick: a }) {
3797
3818
  return /* @__PURE__ */ n("button", {
3798
3819
  "aria-checked": e,
3799
3820
  className: "game-ui-toggle",
@@ -3807,7 +3828,7 @@ function ir({ checked: e, disabled: r, label: i, onClick: a }) {
3807
3828
  })]
3808
3829
  });
3809
3830
  }
3810
- function ar({ items: e, label: n, onSelect: r }) {
3831
+ function cr({ items: e, label: n, onSelect: r }) {
3811
3832
  return /* @__PURE__ */ t("div", {
3812
3833
  "aria-label": n,
3813
3834
  className: "game-ui-radial-menu",
@@ -3822,7 +3843,7 @@ function ar({ items: e, label: n, onSelect: r }) {
3822
3843
  }, e.id))
3823
3844
  });
3824
3845
  }
3825
- function or({ children: e, tone: n = "info" }) {
3846
+ function lr({ children: e, tone: n = "info" }) {
3826
3847
  return /* @__PURE__ */ t("div", {
3827
3848
  className: "game-ui-toast",
3828
3849
  "data-toast-tone": n,
@@ -3830,7 +3851,7 @@ function or({ children: e, tone: n = "info" }) {
3830
3851
  children: e
3831
3852
  });
3832
3853
  }
3833
- function sr({ actionLabel: e, children: r, title: i }) {
3854
+ function ur({ actionLabel: e, children: r, title: i }) {
3834
3855
  return /* @__PURE__ */ n("section", {
3835
3856
  "aria-label": i,
3836
3857
  className: "game-ui-prompt",
@@ -3842,7 +3863,7 @@ function sr({ actionLabel: e, children: r, title: i }) {
3842
3863
  }
3843
3864
  //#endregion
3844
3865
  //#region src/clay/assets.ts
3845
- var cr = "/assets/game/ui/clay/phase03-clay-kit", Z = (e) => `${cr}/${e}`, lr = {
3866
+ var dr = "/assets/game/ui/clay/phase03-clay-kit", Z = (e) => `${dr}/${e}`, fr = {
3846
3867
  ai: { line: Z("icons/function/brain-v1.png") },
3847
3868
  alert: {
3848
3869
  game: Z("components/common/alert-v1.png"),
@@ -3932,20 +3953,20 @@ var cr = "/assets/game/ui/clay/phase03-clay-kit", Z = (e) => `${cr}/${e}`, lr =
3932
3953
  game: Z("icons/common/target-v1.png"),
3933
3954
  line: Z("icons/function/target-v1.png")
3934
3955
  }
3935
- }, ur = Object.keys(lr), dr = cr;
3936
- function fr(e) {
3937
- let t = dr;
3956
+ }, pr = Object.keys(fr), mr = dr;
3957
+ function hr(e) {
3958
+ let t = mr;
3938
3959
  return !e || t === "/assets/game/ui/clay/phase03-clay-kit" ? e : e.startsWith("/assets/game/ui/clay/phase03-clay-kit") ? `${t}${e.slice(37)}` : e;
3939
3960
  }
3940
- function pr(e, t) {
3941
- let n = lr[e];
3942
- return fr(t === "line" ? n.line ?? n.game ?? "" : n.game ?? n.line ?? "");
3961
+ function gr(e, t) {
3962
+ let n = fr[e];
3963
+ return hr(t === "line" ? n.line ?? n.game ?? "" : n.game ?? n.line ?? "");
3943
3964
  }
3944
- function mr(e) {
3945
- let t = lr[e], n = [];
3965
+ function _r(e) {
3966
+ let t = fr[e], n = [];
3946
3967
  return t.game && n.push("game"), t.line && n.push("line"), n;
3947
3968
  }
3948
- var hr = {
3969
+ var vr = {
3949
3970
  anvil: Z("icons/common/anvil-v1.png"),
3950
3971
  arrow: Z("icons/common/arrow-v1.png"),
3951
3972
  bomb: Z("icons/common/bomb-v1.png"),
@@ -3972,7 +3993,7 @@ var hr = {
3972
3993
  swordB: Z("icons/common/sword-b-v1.png"),
3973
3994
  talaria: Z("icons/common/talaria-v1.png"),
3974
3995
  treasure: Z("icons/common/treasure-v1.png")
3975
- }, gr = Object.keys(hr), _r = {
3996
+ }, yr = Object.keys(vr), br = {
3976
3997
  buttons: {
3977
3998
  primary: Z("buttons/button-brown-large-v2.png"),
3978
3999
  blue: Z("buttons/button-blue-large-v2.png"),
@@ -3993,7 +4014,7 @@ var hr = {
3993
4014
  tabSelected: Z("components/common/tab-s-v1.png"),
3994
4015
  tabNormal: Z("components/common/tab-n-v1.png")
3995
4016
  },
3996
- icons: Object.fromEntries(ur.map((e) => [e, pr(e)])),
4017
+ icons: Object.fromEntries(pr.map((e) => [e, gr(e)])),
3997
4018
  catalog: {
3998
4019
  manifest: "/assets/game/ui/clay/asset-manifest.json",
3999
4020
  sourceCatalog: Z("catalog/phase03-clay-ui-catalog.json"),
@@ -4001,7 +4022,7 @@ var hr = {
4001
4022
  contactSheetComponents: Z("catalog/component-candidates-contact-sheet-v1.png"),
4002
4023
  contactSheetFunction: Z("catalog/function-icons-contact-sheet-v1.png")
4003
4024
  }
4004
- }, vr = {
4025
+ }, xr = {
4005
4026
  ai: "AI",
4006
4027
  alert: "!",
4007
4028
  card: "▣",
@@ -4037,72 +4058,72 @@ var hr = {
4037
4058
  timer: "◷",
4038
4059
  trophy: "★",
4039
4060
  vote: "⌾"
4040
- }, yr = {
4041
- ai: I.berry,
4042
- alert: I.red,
4043
- card: I.honey,
4044
- chat: I.sky,
4045
- check: I.green,
4046
- close: I.red,
4047
- coin: I.honey,
4048
- compass: I.teal,
4049
- copy: I.wood,
4050
- crown: I.honey,
4051
- energy: I.orange,
4052
- gem: I.sky,
4053
- gift: I.red,
4054
- globe: I.teal,
4055
- history: I.inkMuted,
4056
- redo: I.wood,
4057
- undo: I.wood,
4058
- home: I.wood,
4059
- hourglass: I.orange,
4060
- laurel: I.green,
4061
- lock: I.ink,
4062
- lucky: I.green,
4063
- mail: I.sky,
4064
- medal: I.honey,
4065
- mission: I.berry,
4066
- mobile: I.sky,
4067
- portal: I.teal,
4068
- scroll: I.berry,
4069
- settings: I.inkMuted,
4070
- shirt: I.sky,
4071
- shop: I.inkMuted,
4072
- smile: I.honey,
4073
- timer: I.orange,
4074
- trophy: I.honey,
4075
- vote: I.red
4061
+ }, Sr = {
4062
+ ai: L.berry,
4063
+ alert: L.red,
4064
+ card: L.honey,
4065
+ chat: L.sky,
4066
+ check: L.green,
4067
+ close: L.red,
4068
+ coin: L.honey,
4069
+ compass: L.teal,
4070
+ copy: L.wood,
4071
+ crown: L.honey,
4072
+ energy: L.orange,
4073
+ gem: L.sky,
4074
+ gift: L.red,
4075
+ globe: L.teal,
4076
+ history: L.inkMuted,
4077
+ redo: L.wood,
4078
+ undo: L.wood,
4079
+ home: L.wood,
4080
+ hourglass: L.orange,
4081
+ laurel: L.green,
4082
+ lock: L.ink,
4083
+ lucky: L.green,
4084
+ mail: L.sky,
4085
+ medal: L.honey,
4086
+ mission: L.berry,
4087
+ mobile: L.sky,
4088
+ portal: L.teal,
4089
+ scroll: L.berry,
4090
+ settings: L.inkMuted,
4091
+ shirt: L.sky,
4092
+ shop: L.inkMuted,
4093
+ smile: L.honey,
4094
+ timer: L.orange,
4095
+ trophy: L.honey,
4096
+ vote: L.red
4076
4097
  };
4077
- function br(e) {
4078
- let t = vr[e], n = yr[e], r = I.parchment, i = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 96"><defs><filter id="s" x="-20%" y="-20%" width="140%" height="140%"><feDropShadow dx="0" dy="5" stdDeviation="4" flood-color="#4c341c" flood-opacity=".22"/></filter></defs><rect x="10" y="8" width="76" height="76" rx="25" fill="${r}" filter="url(#s)"/><circle cx="48" cy="46" r="28" fill="${n}" opacity=".88"/><path d="M23 28c10-12 36-16 52 0" stroke="#fff" stroke-width="6" stroke-linecap="round" opacity=".38"/><text x="48" y="58" text-anchor="middle" font-family="system-ui,sans-serif" font-size="28" font-weight="900" fill="${r}">${t}</text></svg>`;
4098
+ function Cr(e) {
4099
+ let t = xr[e], n = Sr[e], r = L.parchment, i = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 96"><defs><filter id="s" x="-20%" y="-20%" width="140%" height="140%"><feDropShadow dx="0" dy="5" stdDeviation="4" flood-color="#4c341c" flood-opacity=".22"/></filter></defs><rect x="10" y="8" width="76" height="76" rx="25" fill="${r}" filter="url(#s)"/><circle cx="48" cy="46" r="28" fill="${n}" opacity=".88"/><path d="M23 28c10-12 36-16 52 0" stroke="#fff" stroke-width="6" stroke-linecap="round" opacity=".38"/><text x="48" y="58" text-anchor="middle" font-family="system-ui,sans-serif" font-size="28" font-weight="900" fill="${r}">${t}</text></svg>`;
4079
4100
  return `data:image/svg+xml,${encodeURIComponent(i)}`;
4080
4101
  }
4081
- var xr = "inline";
4082
- function Sr(e) {
4083
- xr = e;
4102
+ var wr = "inline";
4103
+ function Tr(e) {
4104
+ wr = e;
4084
4105
  }
4085
- function Cr() {
4086
- return xr;
4106
+ function Er() {
4107
+ return wr;
4087
4108
  }
4088
- function wr(e) {
4089
- dr = e.replace(/\/+$/, "");
4109
+ function Dr(e) {
4110
+ mr = e.replace(/\/+$/, "");
4090
4111
  }
4091
- function Tr() {
4092
- return dr;
4112
+ function Or() {
4113
+ return mr;
4093
4114
  }
4094
- var Er = !1;
4095
- function Dr() {
4096
- Er || (Er = !0, !(typeof console > "u") && console.warn("[SwimmerUIKit] Clay icons are rendering placeholders, not the icon set. The sculpted PNGs ship inside this package but must be served by your app:\n npx swimmer-ui-assets public\n setClayAssetMode('source') // once, at your entry\nCall setClayAssetMode('inline') explicitly to keep placeholders and silence this."));
4115
+ var kr = !1;
4116
+ function Ar() {
4117
+ kr || (kr = !0, !(typeof console > "u") && console.warn("[SwimmerUIKit] Clay icons are rendering placeholders, not the icon set. The sculpted PNGs ship inside this package but must be served by your app:\n npx swimmer-ui-assets public\n setClayAssetMode('source') // once, at your entry\nCall setClayAssetMode('inline') explicitly to keep placeholders and silence this."));
4097
4118
  }
4098
- function Or() {
4099
- Er = !0;
4119
+ function jr() {
4120
+ kr = !0;
4100
4121
  }
4101
- function kr(e, t = {}) {
4102
- return t.inline ?? xr === "inline" ? (Dr(), br(e)) : pr(e, t.style);
4122
+ function Mr(e, t = {}) {
4123
+ return t.inline ?? wr === "inline" ? (Ar(), Cr(e)) : gr(e, t.style);
4103
4124
  }
4104
- function Ar(e, t) {
4105
- return pr(e, t);
4125
+ function Nr(e, t) {
4126
+ return gr(e, t);
4106
4127
  }
4107
4128
  //#endregion
4108
4129
  //#region src/ClayComponents.tsx
@@ -4114,7 +4135,7 @@ function Q({ children: e, className: n, tone: r = "neutral" }) {
4114
4135
  });
4115
4136
  }
4116
4137
  function $({ className: e, icon: n, label: r, size: i = "md", style: a, useSourceAsset: o = !1 }) {
4117
- let s = ["game-ui-asset-icon", e].filter(Boolean).join(" "), c = r ? { "aria-label": r } : { "aria-hidden": !0 }, l = kr(n, {
4138
+ let s = ["game-ui-asset-icon", e].filter(Boolean).join(" "), c = r ? { "aria-label": r } : { "aria-hidden": !0 }, l = Mr(n, {
4118
4139
  ...a ? { style: a } : {},
4119
4140
  ...o ? { inline: !1 } : {}
4120
4141
  });
@@ -4129,7 +4150,7 @@ function $({ className: e, icon: n, label: r, size: i = "md", style: a, useSourc
4129
4150
  })
4130
4151
  });
4131
4152
  }
4132
- function jr({ actions: e, className: r, items: i, label: a }) {
4153
+ function Pr({ actions: e, className: r, items: i, label: a }) {
4133
4154
  return /* @__PURE__ */ n("section", {
4134
4155
  "aria-label": a,
4135
4156
  className: ["game-ui-hud", r].filter(Boolean).join(" "),
@@ -4152,7 +4173,7 @@ function jr({ actions: e, className: r, items: i, label: a }) {
4152
4173
  }) : null]
4153
4174
  });
4154
4175
  }
4155
- function Mr({ cards: e, className: r, label: i }) {
4176
+ function Fr({ cards: e, className: r, label: i }) {
4156
4177
  let a = ["game-ui-card-fan", r].filter(Boolean).join(" "), o = (e.length - 1) / 2;
4157
4178
  return /* @__PURE__ */ t("div", {
4158
4179
  "aria-label": i,
@@ -4175,7 +4196,7 @@ function Mr({ cards: e, className: r, label: i }) {
4175
4196
  }, e.id))
4176
4197
  });
4177
4198
  }
4178
- function Nr({ badge: e, className: r, icon: i, kicker: a, selected: o = !1, summary: s, title: c, tone: l = "daily", type: u = "button", ...d }) {
4199
+ function Ir({ badge: e, className: r, icon: i, kicker: a, selected: o = !1, summary: s, title: c, tone: l = "daily", type: u = "button", ...d }) {
4179
4200
  return /* @__PURE__ */ n("button", {
4180
4201
  "aria-pressed": o,
4181
4202
  className: ["game-ui-stage-tile", r].filter(Boolean).join(" "),
@@ -4202,15 +4223,15 @@ function Nr({ badge: e, className: r, icon: i, kicker: a, selected: o = !1, summ
4202
4223
  ]
4203
4224
  });
4204
4225
  }
4205
- function Pr() {
4226
+ function Lr() {
4206
4227
  return typeof window > "u" ? !1 : (window.matchMedia?.("(pointer: coarse), (max-width: 899px)").matches ?? window.innerWidth < 900) && window.innerHeight > window.innerWidth;
4207
4228
  }
4208
- function Fr({ body: e, cta: r, badgeLabel: i = "Landscape only", manualHint: a = "Rotate manually if this browser blocks automatic landscape lock.", preview: o = !1, title: s }) {
4209
- let [c, u] = m(o || Pr), [d, f] = m("");
4229
+ function Rr({ body: e, cta: r, badgeLabel: i = "Landscape only", manualHint: a = "Rotate manually if this browser blocks automatic landscape lock.", preview: o = !1, title: s }) {
4230
+ let [c, u] = m(o || Lr), [d, f] = m("");
4210
4231
  if (l(() => {
4211
4232
  if (o) return;
4212
4233
  let e = () => {
4213
- let e = Pr();
4234
+ let e = Lr();
4214
4235
  u(e), e || f("");
4215
4236
  };
4216
4237
  return e(), window.addEventListener("resize", e), window.addEventListener("orientationchange", e), () => {
@@ -4220,7 +4241,7 @@ function Fr({ body: e, cta: r, badgeLabel: i = "Landscape only", manualHint: a =
4220
4241
  let p = async () => {
4221
4242
  if (f(""), !o) try {
4222
4243
  let e = document.documentElement;
4223
- !document.fullscreenElement && e.requestFullscreen && await e.requestFullscreen(), await screen.orientation.lock?.("landscape-primary"), u(Pr());
4244
+ !document.fullscreenElement && e.requestFullscreen && await e.requestFullscreen(), await screen.orientation.lock?.("landscape-primary"), u(Lr());
4224
4245
  } catch {
4225
4246
  f(a);
4226
4247
  }
@@ -4251,7 +4272,7 @@ function Fr({ body: e, cta: r, badgeLabel: i = "Landscape only", manualHint: a =
4251
4272
  })
4252
4273
  });
4253
4274
  }
4254
- function Ir({ className: e, currentLabel: r, label: i, options: a, value: o, defaultValue: s, onSelect: c }) {
4275
+ function zr({ className: e, currentLabel: r, label: i, options: a, value: o, defaultValue: s, onSelect: c }) {
4255
4276
  let [l, d] = m(!1), [f, p] = m(s ?? a[0]?.id ?? ""), h = u(), g = ["game-ui-language-menu", e].filter(Boolean).join(" "), _ = o ?? f, v = a.find((e) => e.id === _), y = r ?? v?.label ?? a[0]?.label ?? "", b = (e) => {
4256
4277
  o === void 0 && p(e), c?.(e), d(!1);
4257
4278
  };
@@ -4283,34 +4304,34 @@ function Ir({ className: e, currentLabel: r, label: i, options: a, value: o, def
4283
4304
  }) : null]
4284
4305
  });
4285
4306
  }
4286
- function Lr({ label: e, tone: r = "loading" }) {
4307
+ function Br({ label: e, tone: r = "loading" }) {
4287
4308
  return /* @__PURE__ */ n("div", {
4288
4309
  className: "game-ui-loading-state",
4289
4310
  "data-loading-tone": r,
4290
4311
  role: r === "error" ? "alert" : "status",
4291
4312
  children: [/* @__PURE__ */ t("img", {
4292
4313
  alt: "",
4293
- src: kr(r === "error" ? "alert" : "timer")
4314
+ src: Mr(r === "error" ? "alert" : "timer")
4294
4315
  }), /* @__PURE__ */ t("span", { children: e })]
4295
4316
  });
4296
4317
  }
4297
- function Rr() {
4298
- return _r.catalog;
4318
+ function Vr() {
4319
+ return br.catalog;
4299
4320
  }
4300
4321
  //#endregion
4301
4322
  //#region src/FirstSessionGameShell.tsx
4302
- function zr({ fallback: e, slot: n }) {
4323
+ function Hr({ fallback: e, slot: n }) {
4303
4324
  return n ?? /* @__PURE__ */ t($, {
4304
4325
  icon: e,
4305
4326
  size: "sm"
4306
4327
  });
4307
4328
  }
4308
- function Br({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, iconSlots: o, labels: s, onHistory: c, onSettings: l, onWardrobe: u, playerName: d }) {
4329
+ function Ur({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, iconSlots: o, labels: s, onHistory: c, onSettings: l, onWardrobe: u, playerName: d }) {
4309
4330
  let f = ["swimmer-first-session-shell", i].filter(Boolean).join(" "), p = e ? `${r} 🔋` : s.guest ?? "guest";
4310
4331
  return /* @__PURE__ */ n("section", {
4311
4332
  "aria-label": s.shell,
4312
4333
  className: f,
4313
- children: [/* @__PURE__ */ t(jr, {
4334
+ children: [/* @__PURE__ */ t(Pr, {
4314
4335
  className: "swimmer-first-session-hud",
4315
4336
  items: [
4316
4337
  {
@@ -4342,7 +4363,7 @@ function Br({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4342
4363
  }
4343
4364
  ],
4344
4365
  label: s.hud,
4345
- actions: /* @__PURE__ */ n(Zn, {
4366
+ actions: /* @__PURE__ */ n(er, {
4346
4367
  className: "swimmer-first-session-hud-actions",
4347
4368
  label: s.tools,
4348
4369
  children: [
@@ -4350,7 +4371,7 @@ function Br({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4350
4371
  "aria-label": s.wardrobe,
4351
4372
  onClick: u,
4352
4373
  variant: "secondary",
4353
- children: [/* @__PURE__ */ t(zr, {
4374
+ children: [/* @__PURE__ */ t(Hr, {
4354
4375
  fallback: "shirt",
4355
4376
  slot: o?.wardrobe
4356
4377
  }), s.wardrobe]
@@ -4359,7 +4380,7 @@ function Br({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4359
4380
  "aria-label": s.settings,
4360
4381
  onClick: l,
4361
4382
  variant: "secondary",
4362
- children: [/* @__PURE__ */ t(zr, {
4383
+ children: [/* @__PURE__ */ t(Hr, {
4363
4384
  fallback: "settings",
4364
4385
  slot: o?.settings
4365
4386
  }), s.settings]
@@ -4368,7 +4389,7 @@ function Br({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4368
4389
  "aria-label": s.history,
4369
4390
  onClick: c,
4370
4391
  variant: "secondary",
4371
- children: [/* @__PURE__ */ t(zr, {
4392
+ children: [/* @__PURE__ */ t(Hr, {
4372
4393
  fallback: "history",
4373
4394
  slot: o?.history
4374
4395
  }), s.history]
@@ -4393,7 +4414,7 @@ function Br({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4393
4414
  }),
4394
4415
  /* @__PURE__ */ n("label", {
4395
4416
  className: "swimmer-first-session-input",
4396
- children: [/* @__PURE__ */ t(zr, {
4417
+ children: [/* @__PURE__ */ t(Hr, {
4397
4418
  fallback: "chat",
4398
4419
  slot: o?.input
4399
4420
  }), /* @__PURE__ */ t("span", { children: s.input })]
@@ -4401,7 +4422,7 @@ function Br({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4401
4422
  /* @__PURE__ */ n("button", {
4402
4423
  className: "swimmer-first-session-emote",
4403
4424
  type: "button",
4404
- children: [/* @__PURE__ */ t(zr, {
4425
+ children: [/* @__PURE__ */ t(Hr, {
4405
4426
  fallback: "smile",
4406
4427
  slot: o?.emote
4407
4428
  }), s.emote]
@@ -4410,7 +4431,7 @@ function Br({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4410
4431
  })]
4411
4432
  });
4412
4433
  }
4413
- function Vr({ labels: e, onDismiss: r, open: i }) {
4434
+ function Wr({ labels: e, onDismiss: r, open: i }) {
4414
4435
  return i ? /* @__PURE__ */ n("aside", {
4415
4436
  "aria-labelledby": "swimmer-first-session-onboarding-title",
4416
4437
  "aria-modal": "true",
@@ -4458,7 +4479,7 @@ function Vr({ labels: e, onDismiss: r, open: i }) {
4458
4479
  }
4459
4480
  //#endregion
4460
4481
  //#region src/GameForms.tsx
4461
- var Hr = a(function({ className: e, invalid: n, type: r = "text", ...i }, a) {
4482
+ var Gr = a(function({ className: e, invalid: n, type: r = "text", ...i }, a) {
4462
4483
  return /* @__PURE__ */ t("input", {
4463
4484
  className: ["game-ui-input", e].filter(Boolean).join(" "),
4464
4485
  "data-invalid": n ? "true" : void 0,
@@ -4466,7 +4487,7 @@ var Hr = a(function({ className: e, invalid: n, type: r = "text", ...i }, a) {
4466
4487
  type: r,
4467
4488
  ...i
4468
4489
  });
4469
- }), Ur = a(function({ className: e, invalid: n, rows: r = 3, ...i }, a) {
4490
+ }), Kr = a(function({ className: e, invalid: n, rows: r = 3, ...i }, a) {
4470
4491
  return /* @__PURE__ */ t("textarea", {
4471
4492
  className: [
4472
4493
  "game-ui-input",
@@ -4479,7 +4500,7 @@ var Hr = a(function({ className: e, invalid: n, type: r = "text", ...i }, a) {
4479
4500
  ...i
4480
4501
  });
4481
4502
  });
4482
- function Wr({ children: e, className: r, error: i, hint: a, label: o, required: s }) {
4503
+ function qr({ children: e, className: r, error: i, hint: a, label: o, required: s }) {
4483
4504
  return /* @__PURE__ */ n("label", {
4484
4505
  className: ["game-ui-field", r].filter(Boolean).join(" "),
4485
4506
  "data-invalid": i ? "true" : void 0,
@@ -4505,7 +4526,7 @@ function Wr({ children: e, className: r, error: i, hint: a, label: o, required:
4505
4526
  ]
4506
4527
  });
4507
4528
  }
4508
- function Gr({ className: e, label: r, ...i }) {
4529
+ function Jr({ className: e, label: r, ...i }) {
4509
4530
  return /* @__PURE__ */ n("label", {
4510
4531
  className: ["game-ui-checkbox", e].filter(Boolean).join(" "),
4511
4532
  children: [
@@ -4527,11 +4548,11 @@ function Gr({ className: e, label: r, ...i }) {
4527
4548
  }
4528
4549
  //#endregion
4529
4550
  //#region src/GameDisplay.tsx
4530
- function Kr(e) {
4551
+ function Yr(e) {
4531
4552
  let t = e.trim().split(/\s+/).filter(Boolean);
4532
4553
  return t.length === 0 ? "?" : t.slice(0, 2).map((e) => e[0] ?? "").join("").toUpperCase();
4533
4554
  }
4534
- function qr({ className: r, name: i, size: a = "md", src: o, status: s = "none" }) {
4555
+ function Xr({ className: r, name: i, size: a = "md", src: o, status: s = "none" }) {
4535
4556
  return /* @__PURE__ */ n("span", {
4536
4557
  className: ["game-ui-avatar", r].filter(Boolean).join(" "),
4537
4558
  "data-avatar-size": a,
@@ -4542,7 +4563,7 @@ function qr({ className: r, name: i, size: a = "md", src: o, status: s = "none"
4542
4563
  }) : /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ t("span", {
4543
4564
  "aria-hidden": "true",
4544
4565
  className: "game-ui-avatar-initials",
4545
- children: Kr(i)
4566
+ children: Yr(i)
4546
4567
  }), /* @__PURE__ */ t("span", {
4547
4568
  className: "game-ui-sr-only",
4548
4569
  children: i
@@ -4552,7 +4573,7 @@ function qr({ className: r, name: i, size: a = "md", src: o, status: s = "none"
4552
4573
  })]
4553
4574
  });
4554
4575
  }
4555
- function Jr({ className: e, label: r, max: i = 100, showValue: a = !1, tone: o = "accent", value: s, valueLabel: c }) {
4576
+ function Zr({ className: e, label: r, max: i = 100, showValue: a = !1, tone: o = "accent", value: s, valueLabel: c }) {
4556
4577
  let l = i <= 0 ? 100 : i, u = Math.max(0, Math.min(100, s / l * 100)), d = ["game-ui-progress", e].filter(Boolean).join(" "), f = !!c, p = {
4557
4578
  accent: "var(--game-ui-accent)",
4558
4579
  danger: "var(--game-ui-danger)",
@@ -4570,7 +4591,7 @@ function Jr({ className: e, label: r, max: i = 100, showValue: a = !1, tone: o =
4570
4591
  "aria-valuetext": f ? c : void 0,
4571
4592
  className: "game-ui-progress-track",
4572
4593
  role: "progressbar",
4573
- children: /* @__PURE__ */ t(qn, {
4594
+ children: /* @__PURE__ */ t(Xn, {
4574
4595
  "aria-hidden": "true",
4575
4596
  className: "game-ui-progress-liquid",
4576
4597
  fill: p,
@@ -4581,7 +4602,7 @@ function Jr({ className: e, label: r, max: i = 100, showValue: a = !1, tone: o =
4581
4602
  pointerEvents: "none",
4582
4603
  position: "absolute"
4583
4604
  },
4584
- children: /* @__PURE__ */ t(qn.Item, {
4605
+ children: /* @__PURE__ */ t(Xn.Item, {
4585
4606
  "aria-hidden": "true",
4586
4607
  className: "game-ui-progress-fill",
4587
4608
  style: {
@@ -4604,7 +4625,7 @@ function Jr({ className: e, label: r, max: i = 100, showValue: a = !1, tone: o =
4604
4625
  }) : null]
4605
4626
  });
4606
4627
  }
4607
- function Yr({ action: e, className: r, description: i, icon: a, title: o }) {
4628
+ function Qr({ action: e, className: r, description: i, icon: a, title: o }) {
4608
4629
  return /* @__PURE__ */ n("div", {
4609
4630
  className: ["game-ui-empty-state", r].filter(Boolean).join(" "),
4610
4631
  children: [
@@ -4629,7 +4650,7 @@ function Yr({ action: e, className: r, description: i, icon: a, title: o }) {
4629
4650
  }
4630
4651
  //#endregion
4631
4652
  //#region src/GameSurfacePack.tsx
4632
- function Xr({ assetLibrary: e, bottomBar: r, children: i, className: a, density: o = "comfortable", hud: s, layout: c = "auto", movementPad: l, overlay: u, sidePanel: d, title: f }) {
4653
+ function $r({ assetLibrary: e, bottomBar: r, children: i, className: a, density: o = "comfortable", hud: s, layout: c = "auto", movementPad: l, overlay: u, sidePanel: d, title: f }) {
4633
4654
  return /* @__PURE__ */ n("section", {
4634
4655
  "aria-label": f,
4635
4656
  className: ["game-ui-shell", a].filter(Boolean).join(" "),
@@ -4667,8 +4688,8 @@ function Xr({ assetLibrary: e, bottomBar: r, children: i, className: a, density:
4667
4688
  ]
4668
4689
  });
4669
4690
  }
4670
- var Zr = Xr;
4671
- function Qr({ className: e, density: r = "comfortable", facts: i, label: a, variant: o = "facts" }) {
4691
+ var ei = $r;
4692
+ function ti({ className: e, density: r = "comfortable", facts: i, label: a, variant: o = "facts" }) {
4672
4693
  return /* @__PURE__ */ t("section", {
4673
4694
  "aria-label": a,
4674
4695
  className: ["game-ui-fact-list", e].filter(Boolean).join(" "),
@@ -4697,9 +4718,9 @@ function Qr({ className: e, density: r = "comfortable", facts: i, label: a, vari
4697
4718
  }, e.id))
4698
4719
  });
4699
4720
  }
4700
- var $r = Qr;
4701
- function ei({ actions: r, className: i, density: a = "comfortable", iconLabelMode: o = "hidden", label: s, style: c = "button" }) {
4702
- return /* @__PURE__ */ n(Zn, {
4721
+ var ni = ti;
4722
+ function ri({ actions: r, className: i, density: a = "comfortable", iconLabelMode: o = "hidden", label: s, style: c = "button" }) {
4723
+ return /* @__PURE__ */ n(er, {
4703
4724
  className: ["game-ui-action-grid", i].filter(Boolean).join(" "),
4704
4725
  "data-icon-label-mode": c === "icon" ? o : void 0,
4705
4726
  label: s,
@@ -4724,7 +4745,7 @@ function ei({ actions: r, className: i, density: a = "comfortable", iconLabelMod
4724
4745
  }) : null,
4725
4746
  r.shortcut ? /* @__PURE__ */ t("kbd", { children: r.shortcut }) : null
4726
4747
  ] }), l = () => r.onAction?.(r.id);
4727
- return c === "icon" ? /* @__PURE__ */ t(Qn, {
4748
+ return c === "icon" ? /* @__PURE__ */ t(tr, {
4728
4749
  "aria-pressed": r.selected,
4729
4750
  className: "game-ui-action-grid-button",
4730
4751
  disabled: r.disabled,
@@ -4742,7 +4763,7 @@ function ei({ actions: r, className: i, density: a = "comfortable", iconLabelMod
4742
4763
  })]
4743
4764
  });
4744
4765
  }
4745
- var ti = [
4766
+ var ii = [
4746
4767
  {
4747
4768
  direction: "forward",
4748
4769
  label: "Move forward",
@@ -4767,7 +4788,7 @@ var ti = [
4767
4788
  shortcut: "S / ↓",
4768
4789
  symbol: "↓"
4769
4790
  }
4770
- ], ni = {
4791
+ ], ai = {
4771
4792
  ArrowUp: "forward",
4772
4793
  w: "forward",
4773
4794
  W: "forward",
@@ -4782,7 +4803,7 @@ var ti = [
4782
4803
  S: "backward",
4783
4804
  " ": "reset"
4784
4805
  };
4785
- function ri({ actions: e = ti, className: r, density: i = "comfortable", disabled: a = !1, helpText: o, label: s, layout: c = "dpad", onMove: l }) {
4806
+ function oi({ actions: e = ii, className: r, density: i = "comfortable", disabled: a = !1, helpText: o, label: s, layout: c = "dpad", onMove: l }) {
4786
4807
  let u = ["game-ui-movement-pad", r].filter(Boolean).join(" "), d = (e) => {
4787
4808
  a || l?.(e);
4788
4809
  };
@@ -4792,7 +4813,7 @@ function ri({ actions: e = ti, className: r, density: i = "comfortable", disable
4792
4813
  "data-density": i,
4793
4814
  "data-layout": c,
4794
4815
  onKeyDown: (t) => {
4795
- let n = ni[t.key];
4816
+ let n = ai[t.key];
4796
4817
  if (!n) return;
4797
4818
  let r = e.find((e) => e.direction === n);
4798
4819
  !r || r.disabled || a || (t.preventDefault(), d(n));
@@ -4800,7 +4821,7 @@ function ri({ actions: e = ti, className: r, density: i = "comfortable", disable
4800
4821
  tabIndex: 0,
4801
4822
  children: [/* @__PURE__ */ t("div", {
4802
4823
  className: "game-ui-movement-pad-grid",
4803
- children: e.map((e) => /* @__PURE__ */ n(Qn, {
4824
+ children: e.map((e) => /* @__PURE__ */ n(tr, {
4804
4825
  className: "game-ui-movement-button",
4805
4826
  "data-direction": e.direction,
4806
4827
  disabled: a || e.disabled,
@@ -4818,15 +4839,15 @@ function ri({ actions: e = ti, className: r, density: i = "comfortable", disable
4818
4839
  }), o ? /* @__PURE__ */ t("p", { children: o }) : null]
4819
4840
  });
4820
4841
  }
4821
- var ii = {
4842
+ var si = {
4822
4843
  generated: "Generated",
4823
4844
  imported: "Imported",
4824
4845
  starter: "Starter"
4825
- }, ai = {
4846
+ }, ci = {
4826
4847
  generated: "ai",
4827
4848
  imported: "warning",
4828
4849
  starter: "neutral"
4829
- }, oi = {
4850
+ }, li = {
4830
4851
  error: "danger",
4831
4852
  generating: "ai",
4832
4853
  missing: "danger",
@@ -4834,8 +4855,8 @@ var ii = {
4834
4855
  ready: "neutral",
4835
4856
  selected: "success"
4836
4857
  };
4837
- function si({ assetId: e, badges: r = [], cardLayout: i = "list", className: a, description: o, disabled: s, facts: c = [], icon: l = "gem", onClick: u, onSelect: d, selected: f = !1, source: p, sourceLabel: m, status: h = "ready", statusLabel: g, thumbnailAlt: _ = "", thumbnailSrc: v, title: y, type: b = "button", ...x }) {
4838
- let { "aria-label": S, ...C } = x, w = ["game-ui-asset-card", a].filter(Boolean).join(" "), T = m ?? ii[p], E = g ?? h;
4858
+ function ui({ assetId: e, badges: r = [], cardLayout: i = "list", className: a, description: o, disabled: s, facts: c = [], icon: l = "gem", onClick: u, onSelect: d, selected: f = !1, source: p, sourceLabel: m, status: h = "ready", statusLabel: g, thumbnailAlt: _ = "", thumbnailSrc: v, title: y, type: b = "button", ...x }) {
4859
+ let { "aria-label": S, ...C } = x, w = ["game-ui-asset-card", a].filter(Boolean).join(" "), T = m ?? si[p], E = g ?? h;
4839
4860
  return /* @__PURE__ */ n("button", {
4840
4861
  "aria-label": S ?? y,
4841
4862
  "aria-pressed": f,
@@ -4866,11 +4887,11 @@ function si({ assetId: e, badges: r = [], cardLayout: i = "list", className: a,
4866
4887
  className: "game-ui-asset-card-badges",
4867
4888
  children: [
4868
4889
  /* @__PURE__ */ t(Q, {
4869
- tone: ai[p],
4890
+ tone: ci[p],
4870
4891
  children: T
4871
4892
  }),
4872
4893
  /* @__PURE__ */ t(Q, {
4873
- tone: oi[h],
4894
+ tone: li[h],
4874
4895
  children: E
4875
4896
  }),
4876
4897
  r.map((e) => /* @__PURE__ */ t(Q, {
@@ -4889,7 +4910,7 @@ function si({ assetId: e, badges: r = [], cardLayout: i = "list", className: a,
4889
4910
  })]
4890
4911
  });
4891
4912
  }
4892
- function ci({ cardLayout: e = "auto", className: r, density: i = "comfortable", emptyAction: a, emptyDescription: o = "Assets will appear here when they are ready to place.", emptyTitle: s = "No assets ready", groups: c, label: l, onSelectAsset: u, selectedAssetId: d, subtitle: f, title: p }) {
4913
+ function di({ cardLayout: e = "auto", className: r, density: i = "comfortable", emptyAction: a, emptyDescription: o = "Assets will appear here when they are ready to place.", emptyTitle: s = "No assets ready", groups: c, label: l, onSelectAsset: u, selectedAssetId: d, subtitle: f, title: p }) {
4893
4914
  let m = ["game-ui-asset-library", r].filter(Boolean).join(" "), h = c.reduce((e, t) => e + t.assets.length, 0), g = c.reduce((e, t) => (t.assets.forEach((t) => {
4894
4915
  e[t.source] += 1;
4895
4916
  }), e), {
@@ -4914,15 +4935,15 @@ function ci({ cardLayout: e = "auto", className: r, density: i = "comfortable",
4914
4935
  "aria-label": "Asset source counts",
4915
4936
  className: "game-ui-asset-library-counts",
4916
4937
  children: Object.entries(g).map(([e, t]) => /* @__PURE__ */ n(Q, {
4917
- tone: ai[e],
4938
+ tone: ci[e],
4918
4939
  children: [
4919
- ii[e],
4940
+ si[e],
4920
4941
  " ",
4921
4942
  t
4922
4943
  ]
4923
4944
  }, e))
4924
4945
  }),
4925
- h === 0 ? /* @__PURE__ */ t(Yr, {
4946
+ h === 0 ? /* @__PURE__ */ t(Qr, {
4926
4947
  action: a,
4927
4948
  description: o,
4928
4949
  icon: "gem",
@@ -4934,13 +4955,13 @@ function ci({ cardLayout: e = "auto", className: r, density: i = "comfortable",
4934
4955
  className: "game-ui-asset-library-group",
4935
4956
  "data-asset-source": r.source,
4936
4957
  children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t("strong", { children: r.label }), r.source ? /* @__PURE__ */ t(Q, {
4937
- tone: ai[r.source],
4938
- children: ii[r.source]
4958
+ tone: ci[r.source],
4959
+ children: si[r.source]
4939
4960
  }) : null] }), /* @__PURE__ */ t("div", {
4940
4961
  className: "game-ui-asset-library-grid",
4941
4962
  children: r.assets.map((n) => {
4942
4963
  let r = e === "auto" ? n.cardLayout : e;
4943
- return /* @__PURE__ */ t(si, {
4964
+ return /* @__PURE__ */ t(ui, {
4944
4965
  ...n,
4945
4966
  ...r ? { cardLayout: r } : {},
4946
4967
  ...u ? { onSelect: u } : {},
@@ -4954,7 +4975,7 @@ function ci({ cardLayout: e = "auto", className: r, density: i = "comfortable",
4954
4975
  })
4955
4976
  });
4956
4977
  }
4957
- function li({ actions: e = [], capacityLabel: r = "Objects", className: i, density: a = "comfortable", maxObjects: o, objectActions: s = [], placedObjects: c, selectedLabel: l = "Selected", selectedTitle: u, statusLabel: d = "Status", statusTone: f = "neutral", statusValue: p = "Idle", title: m }) {
4978
+ function fi({ actions: e = [], capacityLabel: r = "Objects", className: i, density: a = "comfortable", maxObjects: o, objectActions: s = [], placedObjects: c, selectedLabel: l = "Selected", selectedTitle: u, statusLabel: d = "Status", statusTone: f = "neutral", statusValue: p = "Idle", title: m }) {
4958
4979
  let h = ["game-ui-placement-toolbar", i].filter(Boolean).join(" "), g = typeof c == "number" && typeof o == "number", _ = g && o > 0 ? Math.min(o, c) : 0;
4959
4980
  return /* @__PURE__ */ t(X, {
4960
4981
  className: h,
@@ -4963,7 +4984,7 @@ function li({ actions: e = [], capacityLabel: r = "Objects", className: i, densi
4963
4984
  children: /* @__PURE__ */ n("div", {
4964
4985
  "data-density": a,
4965
4986
  children: [
4966
- /* @__PURE__ */ t(Qr, {
4987
+ /* @__PURE__ */ t(ti, {
4967
4988
  density: a,
4968
4989
  facts: [{
4969
4990
  icon: "gem",
@@ -4979,19 +5000,19 @@ function li({ actions: e = [], capacityLabel: r = "Objects", className: i, densi
4979
5000
  }],
4980
5001
  label: `${m} facts`
4981
5002
  }),
4982
- g ? /* @__PURE__ */ t(Jr, {
5003
+ g ? /* @__PURE__ */ t(Zr, {
4983
5004
  label: r,
4984
5005
  max: o,
4985
5006
  showValue: !0,
4986
5007
  tone: _ >= o ? "warning" : "success",
4987
5008
  value: _
4988
5009
  }) : null,
4989
- e.length > 0 ? /* @__PURE__ */ t(ei, {
5010
+ e.length > 0 ? /* @__PURE__ */ t(ri, {
4990
5011
  actions: e,
4991
5012
  density: a,
4992
5013
  label: `${m} actions`
4993
5014
  }) : null,
4994
- s.length > 0 ? /* @__PURE__ */ t(ei, {
5015
+ s.length > 0 ? /* @__PURE__ */ t(ri, {
4995
5016
  actions: s,
4996
5017
  density: a,
4997
5018
  label: `${m} object actions`,
@@ -5001,7 +5022,7 @@ function li({ actions: e = [], capacityLabel: r = "Objects", className: i, densi
5001
5022
  })
5002
5023
  });
5003
5024
  }
5004
- var ui = li, di = {
5025
+ var pi = fi, mi = {
5005
5026
  build: "home",
5006
5027
  flatten: "card",
5007
5028
  inspect: "compass",
@@ -5011,7 +5032,7 @@ var ui = li, di = {
5011
5032
  raise: "energy",
5012
5033
  smooth: "lucky",
5013
5034
  terrain: "portal"
5014
- }, fi = {
5035
+ }, hi = {
5015
5036
  error: "danger",
5016
5037
  locked: "warning",
5017
5038
  missing: "danger",
@@ -5019,10 +5040,10 @@ var ui = li, di = {
5019
5040
  ready: "neutral",
5020
5041
  selected: "success"
5021
5042
  };
5022
- function pi(e, t, n, r) {
5043
+ function gi(e, t, n, r) {
5023
5044
  let i = {
5024
5045
  disabled: !!(r || e.disabled),
5025
- icon: e.icon ?? di[e.id] ?? "gem",
5046
+ icon: e.icon ?? mi[e.id] ?? "gem",
5026
5047
  id: e.id,
5027
5048
  label: e.label,
5028
5049
  selected: e.id === t,
@@ -5030,21 +5051,21 @@ function pi(e, t, n, r) {
5030
5051
  };
5031
5052
  return e.ariaLabel && (i.ariaLabel = e.ariaLabel), e.compactLabel && (i.compactLabel = e.compactLabel), e.meta && (i.meta = e.meta), e.shortcut && (i.shortcut = e.shortcut), n && (i.onAction = n), i;
5032
5053
  }
5033
- function mi(e, t, n) {
5054
+ function _i(e, t, n) {
5034
5055
  return Number.isNaN(e) ? t : Math.min(n, Math.max(t, e));
5035
5056
  }
5036
- function hi(e) {
5057
+ function vi(e) {
5037
5058
  return e;
5038
5059
  }
5039
- function gi(e, t) {
5060
+ function yi(e, t) {
5040
5061
  return e === "auto" ? t === "mobile" || t === "small-mobile" ? "caption" : "hidden" : e;
5041
5062
  }
5042
- function _i({ activeModeId: e, className: r, disabled: i = !1, label: a, modes: o, onModeChange: s, variant: c = "desktop", "data-testid": l }) {
5063
+ function bi({ activeModeId: e, className: r, disabled: i = !1, label: a, modes: o, onModeChange: s, variant: c = "desktop", "data-testid": l }) {
5043
5064
  return /* @__PURE__ */ n("section", {
5044
5065
  "aria-label": a,
5045
5066
  className: ["game-ui-terrain-mode-control", r].filter(Boolean).join(" "),
5046
5067
  "data-ui-hook": "terrain-mode-control",
5047
- "data-variant": hi(c),
5068
+ "data-variant": vi(c),
5048
5069
  "data-testid": l,
5049
5070
  children: [/* @__PURE__ */ t("span", {
5050
5071
  className: "game-ui-sr-only",
@@ -5066,7 +5087,7 @@ function _i({ activeModeId: e, className: r, disabled: i = !1, label: a, modes:
5066
5087
  type: "button",
5067
5088
  children: [
5068
5089
  /* @__PURE__ */ t($, {
5069
- icon: r.icon ?? di[r.id] ?? "portal",
5090
+ icon: r.icon ?? mi[r.id] ?? "portal",
5070
5091
  size: c === "small-mobile" ? "sm" : "md",
5071
5092
  style: "line"
5072
5093
  }),
@@ -5081,8 +5102,8 @@ function _i({ activeModeId: e, className: r, disabled: i = !1, label: a, modes:
5081
5102
  })]
5082
5103
  });
5083
5104
  }
5084
- function vi({ activeToolId: e, className: n, compactLabelMode: r = "auto", density: i = "comfortable", disabled: a = !1, label: o, onToolChange: s, tools: c, variant: l = "desktop", "data-testid": u }) {
5085
- let d = ["game-ui-terrain-tool-strip", n].filter(Boolean).join(" "), f = gi(r, l);
5105
+ function xi({ activeToolId: e, className: n, compactLabelMode: r = "auto", density: i = "comfortable", disabled: a = !1, label: o, onToolChange: s, tools: c, variant: l = "desktop", "data-testid": u }) {
5106
+ let d = ["game-ui-terrain-tool-strip", n].filter(Boolean).join(" "), f = yi(r, l);
5086
5107
  return /* @__PURE__ */ t("section", {
5087
5108
  "aria-label": o,
5088
5109
  className: d,
@@ -5091,8 +5112,8 @@ function vi({ activeToolId: e, className: n, compactLabelMode: r = "auto", densi
5091
5112
  "data-ui-hook": "terrain-tool-strip",
5092
5113
  "data-variant": l,
5093
5114
  "data-testid": u,
5094
- children: /* @__PURE__ */ t(ei, {
5095
- actions: c.map((t) => pi(t, e, s, a)),
5115
+ children: /* @__PURE__ */ t(ri, {
5116
+ actions: c.map((t) => gi(t, e, s, a)),
5096
5117
  density: i,
5097
5118
  iconLabelMode: f,
5098
5119
  label: o,
@@ -5100,18 +5121,18 @@ function vi({ activeToolId: e, className: n, compactLabelMode: r = "auto", densi
5100
5121
  })
5101
5122
  });
5102
5123
  }
5103
- function yi({ className: e, labels: r = {}, onRadiusChange: i, onStrengthChange: a, state: o, variant: s = "desktop", "data-testid": c }) {
5104
- let l = ["game-ui-brush-controls", e].filter(Boolean).join(" "), u = o.minRadius ?? 1, d = o.maxRadius ?? 8, f = o.radiusStep ?? .25, p = o.minStrength ?? 0, m = o.maxStrength ?? 1, h = o.strengthStep ?? .05, g = mi(o.radius, u, d), _ = mi(o.strength, p, m), v = !!o.disabled, y = (e) => {
5105
- i?.(mi(Number(e.currentTarget.value), u, d));
5124
+ function Si({ className: e, labels: r = {}, onRadiusChange: i, onStrengthChange: a, state: o, variant: s = "desktop", "data-testid": c }) {
5125
+ let l = ["game-ui-brush-controls", e].filter(Boolean).join(" "), u = o.minRadius ?? 1, d = o.maxRadius ?? 8, f = o.radiusStep ?? .25, p = o.minStrength ?? 0, m = o.maxStrength ?? 1, h = o.strengthStep ?? .05, g = _i(o.radius, u, d), _ = _i(o.strength, p, m), v = !!o.disabled, y = (e) => {
5126
+ i?.(_i(Number(e.currentTarget.value), u, d));
5106
5127
  }, b = (e) => {
5107
- a?.(mi(Number(e.currentTarget.value), p, m));
5128
+ a?.(_i(Number(e.currentTarget.value), p, m));
5108
5129
  };
5109
5130
  return /* @__PURE__ */ n("section", {
5110
5131
  className: l,
5111
5132
  "data-ui-hook": "brush-controls",
5112
5133
  "data-variant": s,
5113
5134
  "data-testid": c,
5114
- children: [/* @__PURE__ */ t(Wr, {
5135
+ children: [/* @__PURE__ */ t(qr, {
5115
5136
  ...r.radiusHint ? { hint: r.radiusHint } : {},
5116
5137
  label: r.radius ?? "Brush radius",
5117
5138
  children: /* @__PURE__ */ n("div", {
@@ -5141,7 +5162,7 @@ function yi({ className: e, labels: r = {}, onRadiusChange: i, onStrengthChange:
5141
5162
  value: g
5142
5163
  })]
5143
5164
  })
5144
- }), /* @__PURE__ */ t(Wr, {
5165
+ }), /* @__PURE__ */ t(qr, {
5145
5166
  ...r.strengthHint ? { hint: r.strengthHint } : {},
5146
5167
  label: r.strength ?? "Brush strength",
5147
5168
  children: /* @__PURE__ */ n("div", {
@@ -5174,7 +5195,7 @@ function yi({ className: e, labels: r = {}, onRadiusChange: i, onStrengthChange:
5174
5195
  })]
5175
5196
  });
5176
5197
  }
5177
- function bi({ activeMaterialId: e, className: r, disabled: i = !1, label: a, materials: o, onMaterialChange: s, variant: c = "desktop", "data-testid": l }) {
5198
+ function Ci({ activeMaterialId: e, className: r, disabled: i = !1, label: a, materials: o, onMaterialChange: s, variant: c = "desktop", "data-testid": l }) {
5178
5199
  return /* @__PURE__ */ t("section", {
5179
5200
  "aria-label": a,
5180
5201
  className: ["game-ui-material-swatches", r].filter(Boolean).join(" "),
@@ -5217,14 +5238,14 @@ function bi({ activeMaterialId: e, className: r, disabled: i = !1, label: a, mat
5217
5238
  })
5218
5239
  });
5219
5240
  }
5220
- function xi({ canRedo: e = !1, canUndo: n = !1, className: r, disabled: i = !1, label: a, onRedo: o, onUndo: s, redoLabel: c = "Redo", undoLabel: l = "Undo", variant: u = "desktop", "data-testid": d }) {
5241
+ function wi({ canRedo: e = !1, canUndo: n = !1, className: r, disabled: i = !1, label: a, onRedo: o, onUndo: s, redoLabel: c = "Redo", undoLabel: l = "Undo", variant: u = "desktop", "data-testid": d }) {
5221
5242
  return /* @__PURE__ */ t("section", {
5222
5243
  "aria-label": a,
5223
5244
  className: ["game-ui-undo-redo-actions", r].filter(Boolean).join(" "),
5224
5245
  "data-ui-hook": "undo-redo-actions",
5225
5246
  "data-variant": u,
5226
5247
  "data-testid": d,
5227
- children: /* @__PURE__ */ t(ei, {
5248
+ children: /* @__PURE__ */ t(ri, {
5228
5249
  actions: [{
5229
5250
  disabled: i || !n,
5230
5251
  icon: "undo",
@@ -5250,7 +5271,7 @@ function xi({ canRedo: e = !1, canUndo: n = !1, className: r, disabled: i = !1,
5250
5271
  })
5251
5272
  });
5252
5273
  }
5253
- function Si({ activeCategoryId: e, categories: r, className: i, density: a = "comfortable", emptyDescription: o = "Building pieces will appear here when a category is available.", emptyTitle: s = "No build pieces ready", label: c, onCategoryChange: l, onSelectItem: u, selectedItemId: d, title: f, variant: p = "desktop", "data-testid": m }) {
5274
+ function Ti({ activeCategoryId: e, categories: r, className: i, density: a = "comfortable", emptyDescription: o = "Building pieces will appear here when a category is available.", emptyTitle: s = "No build pieces ready", label: c, onCategoryChange: l, onSelectItem: u, selectedItemId: d, title: f, variant: p = "desktop", "data-testid": m }) {
5254
5275
  let h = ["game-ui-build-library", i].filter(Boolean).join(" "), g = r.filter((e) => !e.disabled), _ = r.find((t) => t.id === e) ?? g[0] ?? r[0], v = _?.items ?? [], y = p === "small-mobile";
5255
5276
  return /* @__PURE__ */ t(X, {
5256
5277
  className: h,
@@ -5280,7 +5301,7 @@ function Si({ activeCategoryId: e, categories: r, className: i, density: a = "co
5280
5301
  type: "button",
5281
5302
  children: [
5282
5303
  /* @__PURE__ */ t($, {
5283
- icon: e.icon ?? di[e.id] ?? "home",
5304
+ icon: e.icon ?? mi[e.id] ?? "home",
5284
5305
  size: "sm",
5285
5306
  style: "line"
5286
5307
  }),
@@ -5289,7 +5310,7 @@ function Si({ activeCategoryId: e, categories: r, className: i, density: a = "co
5289
5310
  ]
5290
5311
  }, e.id);
5291
5312
  })
5292
- }), v.length === 0 || !_ ? /* @__PURE__ */ t(Yr, {
5313
+ }), v.length === 0 || !_ ? /* @__PURE__ */ t(Qr, {
5293
5314
  description: o,
5294
5315
  icon: "home",
5295
5316
  title: s
@@ -5327,7 +5348,7 @@ function Si({ activeCategoryId: e, categories: r, className: i, density: a = "co
5327
5348
  /* @__PURE__ */ n("span", {
5328
5349
  className: "game-ui-build-item-badges",
5329
5350
  children: [/* @__PURE__ */ t(Q, {
5330
- tone: fi[i],
5351
+ tone: hi[i],
5331
5352
  children: i
5332
5353
  }), e.badges?.map((e) => /* @__PURE__ */ t(Q, {
5333
5354
  tone: e.tone ?? "neutral",
@@ -5345,7 +5366,7 @@ function Si({ activeCategoryId: e, categories: r, className: i, density: a = "co
5345
5366
  })
5346
5367
  });
5347
5368
  }
5348
- function Ci({ children: e, className: r, closeIcon: i = "close", closeLabel: a = "Close tools", disabled: o = !1, label: s, onOpenChange: c, open: l, panelId: u, title: d, triggerIcon: f = "settings", triggerLabel: p = "Tools", variant: m = "mobile", "data-testid": h }) {
5369
+ function Ei({ children: e, className: r, closeIcon: i = "close", closeLabel: a = "Close tools", disabled: o = !1, label: s, onOpenChange: c, open: l, panelId: u, title: d, triggerIcon: f = "settings", triggerLabel: p = "Tools", variant: m = "mobile", "data-testid": h }) {
5349
5370
  let g = ["game-ui-compact-game-drawer", r].filter(Boolean).join(" "), _ = u ?? `${d.toLowerCase().replace(/[^a-z0-9]+/g, "-") || "tools"}-drawer-panel`;
5350
5371
  return /* @__PURE__ */ n("aside", {
5351
5372
  "aria-label": s,
@@ -5380,7 +5401,7 @@ function Ci({ children: e, className: r, closeIcon: i = "close", closeLabel: a =
5380
5401
  })]
5381
5402
  });
5382
5403
  }
5383
- function wi({ status: e }) {
5404
+ function Di({ status: e }) {
5384
5405
  if (!e) return null;
5385
5406
  let r = typeof e.progressValue == "number" && typeof e.progressMax == "number", i = e.tone === "danger" ? "danger" : e.tone === "warning" ? "warning" : "success", a = e.progressMax ?? 100, o = e.progressValue ?? 0;
5386
5407
  return /* @__PURE__ */ n("div", {
@@ -5393,7 +5414,7 @@ function wi({ status: e }) {
5393
5414
  children: e.label
5394
5415
  }),
5395
5416
  e.description ? /* @__PURE__ */ t("p", { children: e.description }) : null,
5396
- r ? /* @__PURE__ */ t(Jr, {
5417
+ r ? /* @__PURE__ */ t(Zr, {
5397
5418
  label: e.progressLabel ?? e.label,
5398
5419
  max: a,
5399
5420
  showValue: !0,
@@ -5403,15 +5424,15 @@ function wi({ status: e }) {
5403
5424
  ]
5404
5425
  });
5405
5426
  }
5406
- function Ti({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, activeToolId: a, brush: o, buildCategories: s = [], density: c = "comfortable", disabled: l = !1, materials: u = [], modes: d, onBrushRadiusChange: f, onBrushStrengthChange: p, onBuildCategoryChange: m, onMaterialChange: h, onModeChange: g, onRedo: _, onSelectBuildItem: v, onToolChange: y, onUndo: b, selectedBuildItemId: x, status: S, toolCompactLabelMode: C = "auto", tools: w, undoRedo: T, variant: E = "desktop" }) {
5427
+ function Oi({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, activeToolId: a, brush: o, buildCategories: s = [], density: c = "comfortable", disabled: l = !1, materials: u = [], modes: d, onBrushRadiusChange: f, onBrushStrengthChange: p, onBuildCategoryChange: m, onMaterialChange: h, onModeChange: g, onRedo: _, onSelectBuildItem: v, onToolChange: y, onUndo: b, selectedBuildItemId: x, status: S, toolCompactLabelMode: C = "auto", tools: w, undoRedo: T, variant: E = "desktop" }) {
5407
5428
  return /* @__PURE__ */ n("div", {
5408
5429
  className: "game-ui-terrain-build-toolbox-body",
5409
5430
  "data-active-mode": i,
5410
5431
  "data-active-tool": a,
5411
5432
  "data-variant": E,
5412
5433
  children: [
5413
- /* @__PURE__ */ t(wi, { status: S }),
5414
- /* @__PURE__ */ t(_i, {
5434
+ /* @__PURE__ */ t(Di, { status: S }),
5435
+ /* @__PURE__ */ t(bi, {
5415
5436
  activeModeId: i,
5416
5437
  disabled: l,
5417
5438
  label: "Tool mode",
@@ -5422,7 +5443,7 @@ function Ti({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5422
5443
  /* @__PURE__ */ n("div", {
5423
5444
  className: "game-ui-terrain-build-main-grid",
5424
5445
  children: [
5425
- /* @__PURE__ */ t(vi, {
5446
+ /* @__PURE__ */ t(xi, {
5426
5447
  activeToolId: a,
5427
5448
  compactLabelMode: C,
5428
5449
  density: c,
@@ -5432,7 +5453,7 @@ function Ti({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5432
5453
  tools: w,
5433
5454
  variant: E
5434
5455
  }),
5435
- /* @__PURE__ */ t(xi, {
5456
+ /* @__PURE__ */ t(wi, {
5436
5457
  canRedo: T?.canRedo,
5437
5458
  canUndo: T?.canUndo,
5438
5459
  disabled: l,
@@ -5443,7 +5464,7 @@ function Ti({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5443
5464
  undoLabel: T?.undoLabel,
5444
5465
  variant: E
5445
5466
  }),
5446
- /* @__PURE__ */ t(yi, {
5467
+ /* @__PURE__ */ t(Si, {
5447
5468
  onRadiusChange: f,
5448
5469
  onStrengthChange: p,
5449
5470
  state: {
@@ -5452,7 +5473,7 @@ function Ti({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5452
5473
  },
5453
5474
  variant: E
5454
5475
  }),
5455
- u.length > 0 ? /* @__PURE__ */ t(bi, {
5476
+ u.length > 0 ? /* @__PURE__ */ t(Ci, {
5456
5477
  activeMaterialId: r,
5457
5478
  disabled: l,
5458
5479
  label: "Terrain materials",
@@ -5462,7 +5483,7 @@ function Ti({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5462
5483
  }) : null
5463
5484
  ]
5464
5485
  }),
5465
- s.length > 0 ? /* @__PURE__ */ t(Si, {
5486
+ s.length > 0 ? /* @__PURE__ */ t(Ti, {
5466
5487
  activeCategoryId: e,
5467
5488
  categories: s,
5468
5489
  density: c,
@@ -5476,12 +5497,12 @@ function Ti({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5476
5497
  ]
5477
5498
  });
5478
5499
  }
5479
- function Ei({ className: e, drawerOpen: n = !1, drawerTitle: r = "Terrain and build tools", label: i, onDrawerOpenChange: a, title: o, variant: s = "desktop", "data-testid": c, ...l }) {
5480
- let u = ["game-ui-terrain-build-toolbox", e].filter(Boolean).join(" "), d = /* @__PURE__ */ t(Ti, {
5500
+ function ki({ className: e, drawerOpen: n = !1, drawerTitle: r = "Terrain and build tools", label: i, onDrawerOpenChange: a, title: o, variant: s = "desktop", "data-testid": c, ...l }) {
5501
+ let u = ["game-ui-terrain-build-toolbox", e].filter(Boolean).join(" "), d = /* @__PURE__ */ t(Oi, {
5481
5502
  ...l,
5482
5503
  variant: s
5483
5504
  });
5484
- return s === "mobile" || s === "small-mobile" ? /* @__PURE__ */ t(Ci, {
5505
+ return s === "mobile" || s === "small-mobile" ? /* @__PURE__ */ t(Ei, {
5485
5506
  className: u,
5486
5507
  label: i,
5487
5508
  onOpenChange: a,
@@ -5506,7 +5527,7 @@ function Ei({ className: e, drawerOpen: n = !1, drawerTitle: r = "Terrain and bu
5506
5527
  }
5507
5528
  //#endregion
5508
5529
  //#region src/GameContractorTools.tsx
5509
- var Di = {
5530
+ var Ai = {
5510
5531
  accepted: "success",
5511
5532
  blocked: "danger",
5512
5533
  cancelled: "neutral",
@@ -5515,7 +5536,7 @@ var Di = {
5515
5536
  queued: "warning",
5516
5537
  readyForReview: "success",
5517
5538
  working: "ai"
5518
- }, Oi = {
5539
+ }, ji = {
5519
5540
  accepted: "check",
5520
5541
  blocked: "alert",
5521
5542
  cancelled: "close",
@@ -5524,26 +5545,26 @@ var Di = {
5524
5545
  queued: "hourglass",
5525
5546
  readyForReview: "vote",
5526
5547
  working: "energy"
5527
- }, ki = {
5548
+ }, Mi = {
5528
5549
  active: "ai",
5529
5550
  blocked: "danger",
5530
5551
  complete: "success",
5531
5552
  pending: "neutral"
5532
- }, Ai = {
5553
+ }, Ni = {
5533
5554
  blocked: "danger",
5534
5555
  done: "success",
5535
5556
  idle: "neutral",
5536
5557
  queued: "warning",
5537
5558
  working: "ai"
5538
- }, ji = {
5559
+ }, Pi = {
5539
5560
  "local-only": "Local only",
5540
5561
  mock: "Mock run",
5541
5562
  "paid-disabled": "Paid provider off"
5542
- }, Mi = {
5563
+ }, Fi = {
5543
5564
  "local-only": "success",
5544
5565
  mock: "ai",
5545
5566
  "paid-disabled": "warning"
5546
- }, Ni = {
5567
+ }, Ii = {
5547
5568
  accepted: [{
5548
5569
  id: "revert",
5549
5570
  label: "Revert",
@@ -5649,17 +5670,17 @@ var Di = {
5649
5670
  tone: "danger"
5650
5671
  }]
5651
5672
  };
5652
- function Pi(e, t) {
5673
+ function Li(e, t) {
5653
5674
  if (t) return t;
5654
5675
  switch (e) {
5655
5676
  case "readyForReview": return "Ready for review";
5656
5677
  default: return e.replace(/([A-Z])/g, " $1").replace(/^./, (e) => e.toUpperCase());
5657
5678
  }
5658
5679
  }
5659
- function Fi(e) {
5680
+ function Ri(e) {
5660
5681
  return e === "blocked" || e === "cancelled" ? "danger" : e === "accepted" || e === "readyForReview" ? "success" : e === "queued" || e === "draft" || e === "preview" ? "warning" : "accent";
5661
5682
  }
5662
- function Ii(e) {
5683
+ function zi(e) {
5663
5684
  switch (e) {
5664
5685
  case "accepted": return 100;
5665
5686
  case "blocked": return 42;
@@ -5671,7 +5692,7 @@ function Ii(e) {
5671
5692
  case "working": return 64;
5672
5693
  }
5673
5694
  }
5674
- function Li(e, t, n) {
5695
+ function Bi(e, t, n) {
5675
5696
  let r = {
5676
5697
  disabled: !!(n || e.disabled),
5677
5698
  id: e.id,
@@ -5680,14 +5701,14 @@ function Li(e, t, n) {
5680
5701
  };
5681
5702
  return e.icon && (r.icon = e.icon), e.ariaLabel && (r.ariaLabel = e.ariaLabel), e.meta && (r.meta = e.meta), t && (r.onAction = t), r;
5682
5703
  }
5683
- function Ri(e) {
5704
+ function Vi(e) {
5684
5705
  return e === "danger" || e === "warning" ? "alert" : "status";
5685
5706
  }
5686
- function zi(e) {
5707
+ function Hi(e) {
5687
5708
  return !!(e.before && e.after);
5688
5709
  }
5689
- function Bi({ className: e, label: r, max: i = 100, progressLabel: a = "Construction progress", showStatusBadge: o = !0, status: s, statusLabel: c, steps: l = [], validationWarnings: u = [], value: d, variant: f = "desktop", "data-testid": p }) {
5690
- let m = ["game-ui-construction-progress", e].filter(Boolean).join(" "), h = d ?? Ii(s), g = Pi(s, c);
5710
+ function Ui({ className: e, label: r, max: i = 100, progressLabel: a = "Construction progress", showStatusBadge: o = !0, status: s, statusLabel: c, steps: l = [], validationWarnings: u = [], value: d, variant: f = "desktop", "data-testid": p }) {
5711
+ let m = ["game-ui-construction-progress", e].filter(Boolean).join(" "), h = d ?? zi(s), g = Li(s, c);
5691
5712
  return /* @__PURE__ */ n("section", {
5692
5713
  "aria-label": r,
5693
5714
  className: m,
@@ -5699,18 +5720,18 @@ function Bi({ className: e, label: r, max: i = 100, progressLabel: a = "Construc
5699
5720
  /* @__PURE__ */ n("header", {
5700
5721
  className: "game-ui-construction-progress-header",
5701
5722
  children: [/* @__PURE__ */ n("span", { children: [/* @__PURE__ */ t($, {
5702
- icon: Oi[s],
5723
+ icon: ji[s],
5703
5724
  size: "sm"
5704
5725
  }), /* @__PURE__ */ t("strong", { children: a })] }), o ? /* @__PURE__ */ t(Q, {
5705
- tone: Di[s],
5726
+ tone: Ai[s],
5706
5727
  children: g
5707
5728
  }) : null]
5708
5729
  }),
5709
- /* @__PURE__ */ t(Jr, {
5730
+ /* @__PURE__ */ t(Zr, {
5710
5731
  label: a,
5711
5732
  max: i,
5712
5733
  showValue: !0,
5713
- tone: Fi(s),
5734
+ tone: Ri(s),
5714
5735
  value: h
5715
5736
  }),
5716
5737
  l.length > 0 ? /* @__PURE__ */ t("ol", {
@@ -5725,7 +5746,7 @@ function Bi({ className: e, label: r, max: i = 100, progressLabel: a = "Construc
5725
5746
  }),
5726
5747
  /* @__PURE__ */ n("span", { children: [/* @__PURE__ */ t("strong", { children: e.label }), e.caption ? /* @__PURE__ */ t("small", { children: e.caption }) : null] }),
5727
5748
  /* @__PURE__ */ t(Q, {
5728
- tone: ki[e.status],
5749
+ tone: Mi[e.status],
5729
5750
  children: e.status
5730
5751
  })
5731
5752
  ]
@@ -5737,7 +5758,7 @@ function Bi({ className: e, label: r, max: i = 100, progressLabel: a = "Construc
5737
5758
  children: u.map((e) => /* @__PURE__ */ n("div", {
5738
5759
  className: "game-ui-construction-warning",
5739
5760
  "data-warning-tone": e.tone ?? "warning",
5740
- role: Ri(e.tone),
5761
+ role: Vi(e.tone),
5741
5762
  children: [/* @__PURE__ */ t($, {
5742
5763
  icon: e.tone === "danger" || e.tone === "warning" ? "alert" : "check",
5743
5764
  size: "sm"
@@ -5747,8 +5768,8 @@ function Bi({ className: e, label: r, max: i = 100, progressLabel: a = "Construc
5747
5768
  ]
5748
5769
  });
5749
5770
  }
5750
- function Vi({ actions: e, className: r, disabled: i = !1, label: a, localOnlyLabel: o = "Local-only construction", onAction: s, providerMode: c, status: l, validationWarnings: u = [], variant: d = "desktop", "data-testid": f }) {
5751
- let p = ["game-ui-construction-approval-bar", r].filter(Boolean).join(" "), m = e ?? Ni[l], h = u.filter((e) => e.tone !== "success").length, g = m.map((e) => Li(e, s, i));
5771
+ function Wi({ actions: e, className: r, disabled: i = !1, label: a, localOnlyLabel: o = "Local-only construction", onAction: s, providerMode: c, status: l, validationWarnings: u = [], variant: d = "desktop", "data-testid": f }) {
5772
+ let p = ["game-ui-construction-approval-bar", r].filter(Boolean).join(" "), m = e ?? Ii[l], h = u.filter((e) => e.tone !== "success").length, g = m.map((e) => Bi(e, s, i));
5752
5773
  return /* @__PURE__ */ n("section", {
5753
5774
  "aria-label": a,
5754
5775
  className: p,
@@ -5759,8 +5780,8 @@ function Vi({ actions: e, className: r, disabled: i = !1, label: a, localOnlyLab
5759
5780
  children: [/* @__PURE__ */ n("div", {
5760
5781
  className: "game-ui-construction-approval-meta",
5761
5782
  children: [c ? /* @__PURE__ */ t(Q, {
5762
- tone: Mi[c],
5763
- children: ji[c]
5783
+ tone: Fi[c],
5784
+ children: Pi[c]
5764
5785
  }) : /* @__PURE__ */ t(Q, {
5765
5786
  tone: "success",
5766
5787
  children: o
@@ -5775,21 +5796,21 @@ function Vi({ actions: e, className: r, disabled: i = !1, label: a, localOnlyLab
5775
5796
  tone: "success",
5776
5797
  children: "Validation clear"
5777
5798
  })]
5778
- }), g.length > 0 ? /* @__PURE__ */ t(ei, {
5799
+ }), g.length > 0 ? /* @__PURE__ */ t(ri, {
5779
5800
  actions: g,
5780
5801
  density: d === "small-mobile" ? "dense" : "comfortable",
5781
5802
  label: `${a} actions`
5782
5803
  }) : null]
5783
5804
  });
5784
5805
  }
5785
- function Hi({ className: e, crew: r, emptyDescription: i = "Robot crew members appear here when a construction job starts.", emptyTitle: a = "No robot crew assigned", label: o, title: s, variant: c = "desktop", "data-testid": l }) {
5806
+ function Gi({ className: e, crew: r, emptyDescription: i = "Robot crew members appear here when a construction job starts.", emptyTitle: a = "No robot crew assigned", label: o, title: s, variant: c = "desktop", "data-testid": l }) {
5786
5807
  return /* @__PURE__ */ n("section", {
5787
5808
  "aria-label": o,
5788
5809
  className: ["game-ui-robot-crew-status", e].filter(Boolean).join(" "),
5789
5810
  "data-ui-hook": "robot-crew-status",
5790
5811
  "data-variant": c,
5791
5812
  "data-testid": l,
5792
- children: [s ? /* @__PURE__ */ t("header", { children: /* @__PURE__ */ t("strong", { children: s }) }) : null, r.length === 0 ? /* @__PURE__ */ t(Yr, {
5813
+ children: [s ? /* @__PURE__ */ t("header", { children: /* @__PURE__ */ t("strong", { children: s }) }) : null, r.length === 0 ? /* @__PURE__ */ t(Qr, {
5793
5814
  description: i,
5794
5815
  icon: "ai",
5795
5816
  title: a
@@ -5812,7 +5833,7 @@ function Hi({ className: e, crew: r, emptyDescription: i = "Robot crew members a
5812
5833
  ]
5813
5834
  }),
5814
5835
  /* @__PURE__ */ t(Q, {
5815
- tone: Ai[e.status],
5836
+ tone: Ni[e.status],
5816
5837
  children: e.status
5817
5838
  })
5818
5839
  ]
@@ -5820,7 +5841,7 @@ function Hi({ className: e, crew: r, emptyDescription: i = "Robot crew members a
5820
5841
  })]
5821
5842
  });
5822
5843
  }
5823
- function Ui({ activeView: e, after: r, before: i, className: a, label: o, onViewChange: s, variant: c = "desktop", "data-testid": l }) {
5844
+ function Ki({ activeView: e, after: r, before: i, className: a, label: o, onViewChange: s, variant: c = "desktop", "data-testid": l }) {
5824
5845
  let u = ["game-ui-before-after-toggle", a].filter(Boolean).join(" "), d = e === "before" ? i : r;
5825
5846
  return /* @__PURE__ */ n("section", {
5826
5847
  "aria-label": o,
@@ -5829,7 +5850,7 @@ function Ui({ activeView: e, after: r, before: i, className: a, label: o, onView
5829
5850
  "data-ui-hook": "before-after-toggle",
5830
5851
  "data-variant": c,
5831
5852
  "data-testid": l,
5832
- children: [/* @__PURE__ */ t(nr, {
5853
+ children: [/* @__PURE__ */ t(ar, {
5833
5854
  activeId: e,
5834
5855
  label: `${o} view`,
5835
5856
  ...s ? { onSelect: (e) => s(e) } : {},
@@ -5856,8 +5877,8 @@ function Ui({ activeView: e, after: r, before: i, className: a, label: o, onView
5856
5877
  })]
5857
5878
  });
5858
5879
  }
5859
- function Wi({ className: e, density: r = "comfortable", job: i, onAction: a, onSelect: o, selected: s = !1, showApprovalBar: c = !0, showBeforeAfter: l = !1, variant: u = "desktop", "data-testid": d }) {
5860
- let f = ["game-ui-construction-job-card", e].filter(Boolean).join(" "), p = Pi(i.status, i.statusLabel), m = u === "mobile" || u === "small-mobile", h = i.facts ?? [];
5880
+ function qi({ className: e, density: r = "comfortable", job: i, onAction: a, onSelect: o, selected: s = !1, showApprovalBar: c = !0, showBeforeAfter: l = !1, variant: u = "desktop", "data-testid": d }) {
5881
+ let f = ["game-ui-construction-job-card", e].filter(Boolean).join(" "), p = Li(i.status, i.statusLabel), m = u === "mobile" || u === "small-mobile", h = i.facts ?? [];
5861
5882
  return /* @__PURE__ */ n("article", {
5862
5883
  className: f,
5863
5884
  "data-density": r,
@@ -5877,19 +5898,19 @@ function Wi({ className: e, density: r = "comfortable", job: i, onAction: a, onS
5877
5898
  onClick: () => o?.(i.id),
5878
5899
  type: "button",
5879
5900
  children: [/* @__PURE__ */ t($, {
5880
- icon: Oi[i.status],
5901
+ icon: ji[i.status],
5881
5902
  size: m ? "sm" : "md"
5882
5903
  }), /* @__PURE__ */ n("span", { children: [/* @__PURE__ */ t("strong", { children: i.title }), i.description ? /* @__PURE__ */ t("small", { children: i.description }) : null] })]
5883
5904
  }), /* @__PURE__ */ n("span", {
5884
5905
  className: "game-ui-construction-job-badges",
5885
5906
  children: [
5886
5907
  /* @__PURE__ */ t(Q, {
5887
- tone: Di[i.status],
5908
+ tone: Ai[i.status],
5888
5909
  children: p
5889
5910
  }),
5890
5911
  i.providerMode ? /* @__PURE__ */ t(Q, {
5891
- tone: Mi[i.providerMode],
5892
- children: ji[i.providerMode]
5912
+ tone: Fi[i.providerMode],
5913
+ children: Pi[i.providerMode]
5893
5914
  }) : null,
5894
5915
  i.badges?.map((e) => /* @__PURE__ */ t(Q, {
5895
5916
  tone: e.tone ?? "neutral",
@@ -5907,7 +5928,7 @@ function Wi({ className: e, density: r = "comfortable", job: i, onAction: a, onS
5907
5928
  h.map((e) => /* @__PURE__ */ n("span", { children: [/* @__PURE__ */ t("small", { children: e.label }), /* @__PURE__ */ t("b", { children: e.value })] }, e.id))
5908
5929
  ]
5909
5930
  }),
5910
- /* @__PURE__ */ t(Bi, {
5931
+ /* @__PURE__ */ t(Ui, {
5911
5932
  label: `${i.title} progress`,
5912
5933
  progressLabel: i.progressLabel,
5913
5934
  status: i.status,
@@ -5918,19 +5939,19 @@ function Wi({ className: e, density: r = "comfortable", job: i, onAction: a, onS
5918
5939
  max: i.progressMax,
5919
5940
  variant: u
5920
5941
  }),
5921
- l && zi(i) ? /* @__PURE__ */ t(Ui, {
5942
+ l && Hi(i) ? /* @__PURE__ */ t(Ki, {
5922
5943
  activeView: "after",
5923
5944
  after: i.after,
5924
5945
  before: i.before,
5925
5946
  label: `${i.title} preview`,
5926
5947
  variant: u
5927
5948
  }) : null,
5928
- i.crew && i.crew.length > 0 ? /* @__PURE__ */ t(Hi, {
5949
+ i.crew && i.crew.length > 0 ? /* @__PURE__ */ t(Gi, {
5929
5950
  crew: i.crew,
5930
5951
  label: `${i.title} robot crew`,
5931
5952
  variant: u
5932
5953
  }) : null,
5933
- c ? /* @__PURE__ */ t(Vi, {
5954
+ c ? /* @__PURE__ */ t(Wi, {
5934
5955
  actions: i.actions,
5935
5956
  label: `${i.title} approval`,
5936
5957
  onAction: (e) => a?.(e, i.id),
@@ -5942,8 +5963,8 @@ function Wi({ className: e, density: r = "comfortable", job: i, onAction: a, onS
5942
5963
  ]
5943
5964
  });
5944
5965
  }
5945
- function Gi({ children: e, className: n, closeLabel: r = "Close jobs", disabled: i = !1, jobs: a = [], label: o, onAction: s, onOpenChange: c, onSelectJob: l, open: u, panelId: d = "game-compact-job-drawer-panel", selectedJobId: f, title: p, triggerLabel: m = "Construction jobs", variant: h = "mobile", "data-testid": g }) {
5946
- return /* @__PURE__ */ t(Ci, {
5966
+ function Ji({ children: e, className: n, closeLabel: r = "Close jobs", disabled: i = !1, jobs: a = [], label: o, onAction: s, onOpenChange: c, onSelectJob: l, open: u, panelId: d = "game-compact-job-drawer-panel", selectedJobId: f, title: p, triggerLabel: m = "Construction jobs", variant: h = "mobile", "data-testid": g }) {
5967
+ return /* @__PURE__ */ t(Ei, {
5947
5968
  className: ["game-ui-compact-job-drawer", n].filter(Boolean).join(" "),
5948
5969
  closeLabel: r,
5949
5970
  disabled: i,
@@ -5959,7 +5980,7 @@ function Gi({ children: e, className: n, closeLabel: r = "Close jobs", disabled:
5959
5980
  children: e ?? /* @__PURE__ */ t("div", {
5960
5981
  className: "game-ui-compact-job-drawer-list",
5961
5982
  tabIndex: 0,
5962
- children: a.map((e) => /* @__PURE__ */ t(Wi, {
5983
+ children: a.map((e) => /* @__PURE__ */ t(qi, {
5963
5984
  density: "dense",
5964
5985
  job: e,
5965
5986
  onAction: s,
@@ -5971,7 +5992,7 @@ function Gi({ children: e, className: n, closeLabel: r = "Close jobs", disabled:
5971
5992
  })
5972
5993
  });
5973
5994
  }
5974
- function Ki({ activePreviewView: e = "after", className: r, density: i = "comfortable", drawerOpen: a = !1, emptyDescription: o = "Draft construction jobs will appear here before any provider call is allowed.", emptyTitle: s = "No construction jobs", jobs: c, label: l, onAction: u, onDrawerOpenChange: d, onPreviewViewChange: f, onSelectJob: p, selectedJobId: m, subtitle: h, title: g, variant: _ = "desktop", "data-testid": v }) {
5995
+ function Yi({ activePreviewView: e = "after", className: r, density: i = "comfortable", drawerOpen: a = !1, emptyDescription: o = "Draft construction jobs will appear here before any provider call is allowed.", emptyTitle: s = "No construction jobs", jobs: c, label: l, onAction: u, onDrawerOpenChange: d, onPreviewViewChange: f, onSelectJob: p, selectedJobId: m, subtitle: h, title: g, variant: _ = "desktop", "data-testid": v }) {
5975
5996
  let y = ["game-ui-contractor-panel", r].filter(Boolean).join(" "), b = c.find((e) => e.id === m) ?? c[0];
5976
5997
  return _ === "mobile" || _ === "small-mobile" ? /* @__PURE__ */ n("section", {
5977
5998
  "aria-label": l,
@@ -5980,7 +6001,7 @@ function Ki({ activePreviewView: e = "after", className: r, density: i = "comfor
5980
6001
  "data-variant": _,
5981
6002
  "data-testid": v,
5982
6003
  children: [
5983
- /* @__PURE__ */ t(Gi, {
6004
+ /* @__PURE__ */ t(Ji, {
5984
6005
  jobs: c,
5985
6006
  label: `${l} drawer`,
5986
6007
  onAction: u,
@@ -5992,16 +6013,16 @@ function Ki({ activePreviewView: e = "after", className: r, density: i = "comfor
5992
6013
  triggerLabel: "Contractor",
5993
6014
  variant: _
5994
6015
  }),
5995
- b && !a ? /* @__PURE__ */ t(Wi, {
6016
+ b && !a ? /* @__PURE__ */ t(qi, {
5996
6017
  density: "dense",
5997
6018
  job: b,
5998
6019
  onAction: u,
5999
6020
  onSelect: p,
6000
6021
  selected: !0,
6001
- showBeforeAfter: zi(b),
6022
+ showBeforeAfter: Hi(b),
6002
6023
  variant: _
6003
6024
  }) : null,
6004
- b ? null : /* @__PURE__ */ t(Yr, {
6025
+ b ? null : /* @__PURE__ */ t(Qr, {
6005
6026
  description: o,
6006
6027
  icon: "energy",
6007
6028
  title: s
@@ -6022,7 +6043,7 @@ function Ki({ activePreviewView: e = "after", className: r, density: i = "comfor
6022
6043
  className: "game-ui-contractor-panel-subtitle",
6023
6044
  children: h
6024
6045
  }) : null,
6025
- c.length === 0 ? /* @__PURE__ */ t(Yr, {
6046
+ c.length === 0 ? /* @__PURE__ */ t(Qr, {
6026
6047
  description: o,
6027
6048
  icon: "energy",
6028
6049
  title: s
@@ -6033,7 +6054,7 @@ function Ki({ activePreviewView: e = "after", className: r, density: i = "comfor
6033
6054
  "aria-label": "Construction job queue",
6034
6055
  className: "game-ui-contractor-job-list",
6035
6056
  tabIndex: 0,
6036
- children: c.map((e) => /* @__PURE__ */ t(Wi, {
6057
+ children: c.map((e) => /* @__PURE__ */ t(qi, {
6037
6058
  density: i,
6038
6059
  job: e,
6039
6060
  onAction: u,
@@ -6046,7 +6067,7 @@ function Ki({ activePreviewView: e = "after", className: r, density: i = "comfor
6046
6067
  className: "game-ui-contractor-detail",
6047
6068
  "aria-label": `${b.title} detail`,
6048
6069
  children: [
6049
- /* @__PURE__ */ t(Bi, {
6070
+ /* @__PURE__ */ t(Ui, {
6050
6071
  label: `${b.title} progress detail`,
6051
6072
  progressLabel: b.progressLabel,
6052
6073
  status: b.status,
@@ -6057,7 +6078,7 @@ function Ki({ activePreviewView: e = "after", className: r, density: i = "comfor
6057
6078
  max: b.progressMax,
6058
6079
  variant: _
6059
6080
  }),
6060
- zi(b) ? /* @__PURE__ */ t(Ui, {
6081
+ Hi(b) ? /* @__PURE__ */ t(Ki, {
6061
6082
  activeView: e,
6062
6083
  after: b.after,
6063
6084
  before: b.before,
@@ -6065,13 +6086,13 @@ function Ki({ activePreviewView: e = "after", className: r, density: i = "comfor
6065
6086
  onViewChange: f,
6066
6087
  variant: _
6067
6088
  }) : null,
6068
- /* @__PURE__ */ t(Hi, {
6089
+ /* @__PURE__ */ t(Gi, {
6069
6090
  crew: b.crew ?? [],
6070
6091
  label: `${b.title} robot crew`,
6071
6092
  title: "Robot crew",
6072
6093
  variant: _
6073
6094
  }),
6074
- /* @__PURE__ */ t(Vi, {
6095
+ /* @__PURE__ */ t(Wi, {
6075
6096
  actions: b.actions,
6076
6097
  label: `${b.title} approval`,
6077
6098
  onAction: u ? (e) => u(e, b.id) : void 0,
@@ -6089,16 +6110,16 @@ function Ki({ activePreviewView: e = "after", className: r, density: i = "comfor
6089
6110
  }
6090
6111
  //#endregion
6091
6112
  //#region src/GamePanelSystem.tsx
6092
- function qi(...e) {
6113
+ function Xi(...e) {
6093
6114
  return e.filter(Boolean).join(" ");
6094
6115
  }
6095
- var Ji = {
6116
+ var Zi = {
6096
6117
  collapse: "Collapse",
6097
6118
  expand: "Expand"
6098
6119
  };
6099
- function Yi({ actions: e, children: r, className: i, defaultOpen: a = !0, labels: o, onOpenChange: s, open: c, title: l, tone: d = "default", ...f }) {
6120
+ function Qi({ actions: e, children: r, className: i, defaultOpen: a = !0, labels: o, onOpenChange: s, open: c, title: l, tone: d = "default", ...f }) {
6100
6121
  let p = u(), [h, g] = m(a), _ = c ?? h, v = {
6101
- ...Ji,
6122
+ ...Zi,
6102
6123
  ...o
6103
6124
  }, y = () => {
6104
6125
  let e = !_;
@@ -6106,7 +6127,7 @@ function Yi({ actions: e, children: r, className: i, defaultOpen: a = !0, labels
6106
6127
  };
6107
6128
  return /* @__PURE__ */ n("section", {
6108
6129
  ...f,
6109
- className: qi("game-ui-collapsible", i),
6130
+ className: Xi("game-ui-collapsible", i),
6110
6131
  "data-open": _,
6111
6132
  "data-panel-tone": d,
6112
6133
  children: [/* @__PURE__ */ n("header", {
@@ -6145,13 +6166,13 @@ function Yi({ actions: e, children: r, className: i, defaultOpen: a = !0, labels
6145
6166
  })]
6146
6167
  });
6147
6168
  }
6148
- var Xi = {
6169
+ var $i = {
6149
6170
  close: "Close",
6150
6171
  maximize: "Maximize",
6151
6172
  minimize: "Minimize",
6152
6173
  restore: "Restore"
6153
6174
  };
6154
- function Zi({ kind: e }) {
6175
+ function ea({ kind: e }) {
6155
6176
  return /* @__PURE__ */ t("svg", {
6156
6177
  "aria-hidden": "true",
6157
6178
  fill: "none",
@@ -6171,9 +6192,9 @@ function Zi({ kind: e }) {
6171
6192
  })
6172
6193
  });
6173
6194
  }
6174
- function Qi({ allowMaximize: e = !0, allowMinimize: r = !0, children: i, className: a, defaultState: o = "normal", footer: s, icon: c, labels: l, onClose: u, onStateChange: d, state: f, title: p, ...h }) {
6195
+ function ta({ allowMaximize: e = !0, allowMinimize: r = !0, children: i, className: a, defaultState: o = "normal", footer: s, icon: c, labels: l, onClose: u, onStateChange: d, state: f, title: p, ...h }) {
6175
6196
  let [g, _] = m(o), v = f ?? g, y = {
6176
- ...Xi,
6197
+ ...$i,
6177
6198
  ...l
6178
6199
  }, b = (e) => {
6179
6200
  f === void 0 && _(e), d?.(e);
@@ -6181,7 +6202,7 @@ function Qi({ allowMaximize: e = !0, allowMinimize: r = !0, children: i, classNa
6181
6202
  return /* @__PURE__ */ n("section", {
6182
6203
  ...h,
6183
6204
  "aria-label": p,
6184
- className: qi("game-ui-window", a),
6205
+ className: Xi("game-ui-window", a),
6185
6206
  "data-window-state": v,
6186
6207
  role: "group",
6187
6208
  children: [/* @__PURE__ */ n("header", {
@@ -6204,21 +6225,21 @@ function Qi({ allowMaximize: e = !0, allowMinimize: r = !0, children: i, classNa
6204
6225
  className: "game-ui-icon-button game-ui-window-button",
6205
6226
  onClick: () => b(x ? "normal" : "minimized"),
6206
6227
  type: "button",
6207
- children: /* @__PURE__ */ t(Zi, { kind: x ? "restore" : "minimize" })
6228
+ children: /* @__PURE__ */ t(ea, { kind: x ? "restore" : "minimize" })
6208
6229
  }) : null,
6209
6230
  e ? /* @__PURE__ */ t("button", {
6210
6231
  "aria-label": S ? y.restore : y.maximize,
6211
6232
  className: "game-ui-icon-button game-ui-window-button",
6212
6233
  onClick: () => b(S ? "normal" : "maximized"),
6213
6234
  type: "button",
6214
- children: /* @__PURE__ */ t(Zi, { kind: S ? "restore" : "maximize" })
6235
+ children: /* @__PURE__ */ t(ea, { kind: S ? "restore" : "maximize" })
6215
6236
  }) : null,
6216
6237
  u ? /* @__PURE__ */ t("button", {
6217
6238
  "aria-label": y.close,
6218
6239
  className: "game-ui-icon-button game-ui-window-button",
6219
6240
  onClick: u,
6220
6241
  type: "button",
6221
- children: /* @__PURE__ */ t(Zi, { kind: "close" })
6242
+ children: /* @__PURE__ */ t(ea, { kind: "close" })
6222
6243
  }) : null
6223
6244
  ]
6224
6245
  })
@@ -6238,14 +6259,14 @@ function Qi({ allowMaximize: e = !0, allowMinimize: r = !0, children: i, classNa
6238
6259
  })]
6239
6260
  });
6240
6261
  }
6241
- function $i({ children: e, className: r, closeLabel: i = "Close", closeOnBackdrop: a = !0, footer: o, onClose: s, open: c, position: d = "center", size: f = "md", title: m }) {
6262
+ function na({ children: e, className: r, closeLabel: i = "Close", closeOnBackdrop: a = !0, footer: o, onClose: s, open: c, position: d = "center", size: f = "md", title: m }) {
6242
6263
  let h = p(null), g = u();
6243
6264
  return l(() => {
6244
6265
  let e = h.current;
6245
6266
  e && (c && !e.open && e.showModal(), !c && e.open && e.close());
6246
6267
  }, [c]), /* @__PURE__ */ t("dialog", {
6247
6268
  "aria-labelledby": g,
6248
- className: qi("game-ui-modal", r),
6269
+ className: Xi("game-ui-modal", r),
6249
6270
  "data-position": d,
6250
6271
  "data-size": f,
6251
6272
  onCancel: (e) => {
@@ -6269,7 +6290,7 @@ function $i({ children: e, className: r, closeLabel: i = "Close", closeOnBackdro
6269
6290
  className: "game-ui-icon-button game-ui-window-button",
6270
6291
  onClick: s,
6271
6292
  type: "button",
6272
- children: /* @__PURE__ */ t(Zi, { kind: "close" })
6293
+ children: /* @__PURE__ */ t(ea, { kind: "close" })
6273
6294
  })]
6274
6295
  }),
6275
6296
  /* @__PURE__ */ t("div", {
@@ -6286,7 +6307,7 @@ function $i({ children: e, className: r, closeLabel: i = "Close", closeOnBackdro
6286
6307
  }
6287
6308
  //#endregion
6288
6309
  //#region src/previewStates.ts
6289
- var ea = [
6310
+ var ra = [
6290
6311
  {
6291
6312
  id: "history-human-long",
6292
6313
  kind: "human",
@@ -6308,23 +6329,23 @@ var ea = [
6308
6329
  speaker: "Table",
6309
6330
  text: "Three votes are locked. One more read can still change the pact."
6310
6331
  }
6311
- ], ta = {
6312
- ...z,
6313
- ...ye,
6314
- ...be,
6332
+ ], ia = {
6315
6333
  ...B,
6316
6334
  ...V,
6335
+ ...ve,
6317
6336
  ...H,
6318
6337
  ...U,
6319
- ...Se,
6320
- ...L
6321
- }, na = {
6338
+ ...W,
6339
+ ...ye,
6340
+ ...xe,
6341
+ ...z
6342
+ }, aa = {
6322
6343
  toneAttr: "data-game-ui-tone",
6323
6344
  toneGlass: "glass",
6324
6345
  densityAttr: "data-game-ui-density",
6325
6346
  densityCompact: "compact",
6326
6347
  scopeClass: "game-ui-overlay-scope"
6327
- }, ra = xe, ia = /* @__PURE__ */ "--game-ui-bg.--game-ui-surface.--game-ui-surface-raised.--game-ui-panel.--game-ui-panel-strong.--game-ui-panel-deep.--game-ui-text.--game-ui-text-muted.--game-ui-accent.--game-ui-accent-bright.--game-ui-secondary.--game-ui-success.--game-ui-success-bright.--game-ui-danger.--game-ui-danger-bright.--game-ui-warning.--game-ui-focus-ring.--game-ui-border-subtle.--game-ui-border-strong.--game-ui-disabled.--game-ui-ink-deep.--game-ui-border-ink.--game-ui-wood.--game-ui-ink-title.--game-ui-ink-heading.--game-ui-liquid-metal-face.--game-ui-liquid-metal-ink".split("."), aa = {
6348
+ }, oa = be, sa = /* @__PURE__ */ "--game-ui-bg.--game-ui-surface.--game-ui-surface-raised.--game-ui-panel.--game-ui-panel-strong.--game-ui-panel-deep.--game-ui-text.--game-ui-text-muted.--game-ui-accent.--game-ui-accent-bright.--game-ui-secondary.--game-ui-success.--game-ui-success-bright.--game-ui-danger.--game-ui-danger-bright.--game-ui-warning.--game-ui-focus-ring.--game-ui-border-subtle.--game-ui-border-strong.--game-ui-disabled.--game-ui-ink-deep.--game-ui-border-ink.--game-ui-wood.--game-ui-ink-title.--game-ui-ink-heading.--game-ui-liquid-metal-face.--game-ui-liquid-metal-ink".split("."), ca = {
6328
6349
  en: {
6329
6350
  triggerLabel: "EN",
6330
6351
  langMenuLabel: "Preview language",
@@ -6526,7 +6547,7 @@ var ea = [
6526
6547
  hint: "Rotate manually if this browser blocks automatic landscape lock."
6527
6548
  },
6528
6549
  historyLabel: "Round history",
6529
- history: ea
6550
+ history: ra
6530
6551
  },
6531
6552
  "zh-CN": {
6532
6553
  triggerLabel: "中",
@@ -6753,61 +6774,61 @@ var ea = [
6753
6774
  }
6754
6775
  ]
6755
6776
  }
6756
- }, oa = i(aa.en), sa = () => c(oa), ca = [
6777
+ }, la = i(ca.en), ua = () => c(la), da = [
6757
6778
  {
6758
6779
  id: "colors",
6759
- tokens: I
6780
+ tokens: L
6760
6781
  },
6761
6782
  {
6762
6783
  id: "semantic",
6763
- tokens: z
6784
+ tokens: B
6764
6785
  },
6765
6786
  {
6766
6787
  id: "typography",
6767
- tokens: ye
6788
+ tokens: V
6768
6789
  },
6769
6790
  {
6770
6791
  id: "spacing",
6771
- tokens: be
6792
+ tokens: ve
6772
6793
  },
6773
6794
  {
6774
6795
  id: "radius",
6775
- tokens: B
6796
+ tokens: H
6776
6797
  },
6777
6798
  {
6778
6799
  id: "elevation",
6779
- tokens: V
6800
+ tokens: U
6780
6801
  },
6781
6802
  {
6782
6803
  id: "motion",
6783
- tokens: H
6804
+ tokens: W
6784
6805
  },
6785
6806
  {
6786
6807
  id: "overlayGlass",
6787
- tokens: R
6808
+ tokens: _e
6788
6809
  },
6789
6810
  {
6790
6811
  id: "liquidMetal",
6791
- tokens: ve
6812
+ tokens: R
6792
6813
  },
6793
6814
  {
6794
6815
  id: "liquidGooey",
6795
- tokens: L
6816
+ tokens: z
6796
6817
  },
6797
6818
  {
6798
6819
  id: "layers",
6799
- tokens: U
6820
+ tokens: ye
6800
6821
  },
6801
6822
  {
6802
6823
  id: "targets",
6803
- tokens: xe
6824
+ tokens: be
6804
6825
  },
6805
6826
  {
6806
6827
  id: "assetSizing",
6807
- tokens: Se
6828
+ tokens: xe
6808
6829
  }
6809
6830
  ];
6810
- function la({ id: e, label: r, tokens: i }) {
6831
+ function fa({ id: e, label: r, tokens: i }) {
6811
6832
  return /* @__PURE__ */ n("article", {
6812
6833
  className: "game-ui-token-card",
6813
6834
  children: [/* @__PURE__ */ t("h3", { children: r }), /* @__PURE__ */ t("div", {
@@ -6819,18 +6840,18 @@ function la({ id: e, label: r, tokens: i }) {
6819
6840
  })]
6820
6841
  });
6821
6842
  }
6822
- function ua() {
6843
+ function pa() {
6823
6844
  return /* @__PURE__ */ t("div", {
6824
6845
  "aria-label": "Clay color swatches",
6825
6846
  className: "game-ui-swatch-grid",
6826
- children: Object.entries(I).map(([e, r]) => /* @__PURE__ */ n("figure", {
6847
+ children: Object.entries(L).map(([e, r]) => /* @__PURE__ */ n("figure", {
6827
6848
  className: "game-ui-swatch",
6828
6849
  children: [/* @__PURE__ */ t("span", { style: { background: r } }), /* @__PURE__ */ n("figcaption", { children: [/* @__PURE__ */ t("strong", { children: e }), /* @__PURE__ */ t("code", { children: r })] })]
6829
6850
  }, e))
6830
6851
  });
6831
6852
  }
6832
- function da() {
6833
- let { type: e } = sa();
6853
+ function ma() {
6854
+ let { type: e } = ua();
6834
6855
  return /* @__PURE__ */ n("div", {
6835
6856
  className: "game-ui-type-scale",
6836
6857
  children: [
@@ -6845,8 +6866,8 @@ function da() {
6845
6866
  ]
6846
6867
  });
6847
6868
  }
6848
- function fa() {
6849
- let { buttons: e } = sa();
6869
+ function ha() {
6870
+ let { buttons: e } = ua();
6850
6871
  return /* @__PURE__ */ n(X, {
6851
6872
  title: e.panelTitle,
6852
6873
  tone: "strong",
@@ -6884,9 +6905,9 @@ function fa() {
6884
6905
  /* @__PURE__ */ n("div", {
6885
6906
  className: "game-ui-component-row",
6886
6907
  children: [
6887
- /* @__PURE__ */ t($n, {
6908
+ /* @__PURE__ */ t(nr, {
6888
6909
  label: e.settingsTip,
6889
- children: /* @__PURE__ */ t(Qn, {
6910
+ children: /* @__PURE__ */ t(tr, {
6890
6911
  label: e.settingsTip,
6891
6912
  children: /* @__PURE__ */ t($, {
6892
6913
  icon: "settings",
@@ -6894,7 +6915,7 @@ function fa() {
6894
6915
  })
6895
6916
  })
6896
6917
  }),
6897
- /* @__PURE__ */ t(Qn, {
6918
+ /* @__PURE__ */ t(tr, {
6898
6919
  label: e.copyInvite,
6899
6920
  children: /* @__PURE__ */ t($, {
6900
6921
  icon: "copy",
@@ -6915,7 +6936,7 @@ function fa() {
6915
6936
  })
6916
6937
  ]
6917
6938
  }),
6918
- /* @__PURE__ */ t(nr, {
6939
+ /* @__PURE__ */ t(ar, {
6919
6940
  activeId: "live",
6920
6941
  label: e.segmentedLabel,
6921
6942
  options: [
@@ -6933,7 +6954,7 @@ function fa() {
6933
6954
  }
6934
6955
  ]
6935
6956
  }),
6936
- /* @__PURE__ */ t(er, {
6957
+ /* @__PURE__ */ t(rr, {
6937
6958
  activeId: "portal",
6938
6959
  tabs: [
6939
6960
  {
@@ -6950,7 +6971,7 @@ function fa() {
6950
6971
  }
6951
6972
  ]
6952
6973
  }),
6953
- /* @__PURE__ */ t(ar, {
6974
+ /* @__PURE__ */ t(cr, {
6954
6975
  items: [
6955
6976
  {
6956
6977
  id: "wave",
@@ -6967,28 +6988,28 @@ function fa() {
6967
6988
  ],
6968
6989
  label: e.radialLabel
6969
6990
  }),
6970
- /* @__PURE__ */ t(rr, {
6991
+ /* @__PURE__ */ t(or, {
6971
6992
  label: e.sliderLabel,
6972
6993
  max: 100,
6973
6994
  min: 0,
6974
6995
  value: 68
6975
6996
  }),
6976
- /* @__PURE__ */ t(ir, {
6997
+ /* @__PURE__ */ t(sr, {
6977
6998
  checked: !0,
6978
6999
  label: e.toggleLabel
6979
7000
  })
6980
7001
  ]
6981
7002
  });
6982
7003
  }
6983
- function pa() {
6984
- let { hud: e, tiles: r } = sa();
7004
+ function ga() {
7005
+ let { hud: e, tiles: r } = ua();
6985
7006
  return /* @__PURE__ */ n("div", {
6986
7007
  className: "game-ui-stage-demo",
6987
7008
  children: [/* @__PURE__ */ n("div", {
6988
7009
  "aria-label": "Clay world HUD preview",
6989
7010
  className: "game-ui-stage-world",
6990
7011
  children: [
6991
- /* @__PURE__ */ t(jr, {
7012
+ /* @__PURE__ */ t(Pr, {
6992
7013
  label: e.label,
6993
7014
  items: [
6994
7015
  {
@@ -7011,15 +7032,15 @@ function pa() {
7011
7032
  value: "02:46"
7012
7033
  }
7013
7034
  ],
7014
- actions: /* @__PURE__ */ n(Zn, {
7035
+ actions: /* @__PURE__ */ n(er, {
7015
7036
  label: e.tools,
7016
- children: [/* @__PURE__ */ t(Qn, {
7037
+ children: [/* @__PURE__ */ t(tr, {
7017
7038
  label: e.history,
7018
7039
  children: /* @__PURE__ */ t($, {
7019
7040
  icon: "scroll",
7020
7041
  size: "sm"
7021
7042
  })
7022
- }), /* @__PURE__ */ t(Qn, {
7043
+ }), /* @__PURE__ */ t(tr, {
7023
7044
  label: e.settings,
7024
7045
  children: /* @__PURE__ */ t($, {
7025
7046
  icon: "settings",
@@ -7059,7 +7080,7 @@ function pa() {
7059
7080
  }), /* @__PURE__ */ n("div", {
7060
7081
  className: "game-ui-stage-sidecar",
7061
7082
  children: [
7062
- /* @__PURE__ */ t(Nr, {
7083
+ /* @__PURE__ */ t(Ir, {
7063
7084
  badge: r.daily.badge,
7064
7085
  icon: "scroll",
7065
7086
  kicker: r.daily.kicker,
@@ -7068,7 +7089,7 @@ function pa() {
7068
7089
  title: r.daily.title,
7069
7090
  tone: "daily"
7070
7091
  }),
7071
- /* @__PURE__ */ t(Nr, {
7092
+ /* @__PURE__ */ t(Ir, {
7072
7093
  badge: r.portal.badge,
7073
7094
  icon: "portal",
7074
7095
  kicker: r.portal.kicker,
@@ -7076,7 +7097,7 @@ function pa() {
7076
7097
  title: r.portal.title,
7077
7098
  tone: "portal"
7078
7099
  }),
7079
- /* @__PURE__ */ t(Nr, {
7100
+ /* @__PURE__ */ t(Ir, {
7080
7101
  icon: "energy",
7081
7102
  kicker: r.host.kicker,
7082
7103
  summary: r.host.summary,
@@ -7087,21 +7108,21 @@ function pa() {
7087
7108
  })]
7088
7109
  });
7089
7110
  }
7090
- function ma() {
7091
- let { hud: e, buttons: r } = sa(), i = (i) => {
7111
+ function _a() {
7112
+ let { hud: e, buttons: r } = ua(), i = (i) => {
7092
7113
  let a = i === "glass";
7093
7114
  return /* @__PURE__ */ n("div", {
7094
7115
  "aria-label": a ? "Overlay glass HUD" : "Default clay HUD",
7095
7116
  className: [
7096
7117
  "game-ui-stage-world",
7097
7118
  "game-ui-overlay-glass-proof",
7098
- a ? na.scopeClass : void 0
7119
+ a ? aa.scopeClass : void 0
7099
7120
  ].filter(Boolean).join(" "),
7100
7121
  ...a ? {
7101
- [na.toneAttr]: na.toneGlass,
7102
- [na.densityAttr]: na.densityCompact
7122
+ [aa.toneAttr]: aa.toneGlass,
7123
+ [aa.densityAttr]: aa.densityCompact
7103
7124
  } : {},
7104
- children: [/* @__PURE__ */ t(jr, {
7125
+ children: [/* @__PURE__ */ t(Pr, {
7105
7126
  label: e.label,
7106
7127
  items: [
7107
7128
  {
@@ -7124,15 +7145,15 @@ function ma() {
7124
7145
  value: "02:46"
7125
7146
  }
7126
7147
  ],
7127
- actions: /* @__PURE__ */ n(Zn, {
7148
+ actions: /* @__PURE__ */ n(er, {
7128
7149
  label: e.tools,
7129
- children: [/* @__PURE__ */ t(Qn, {
7150
+ children: [/* @__PURE__ */ t(tr, {
7130
7151
  label: e.history,
7131
7152
  children: /* @__PURE__ */ t($, {
7132
7153
  icon: "scroll",
7133
7154
  size: "sm"
7134
7155
  })
7135
- }), /* @__PURE__ */ t(Qn, {
7156
+ }), /* @__PURE__ */ t(tr, {
7136
7157
  label: e.settings,
7137
7158
  children: /* @__PURE__ */ t($, {
7138
7159
  icon: "settings",
@@ -7153,7 +7174,7 @@ function ma() {
7153
7174
  tone: "success",
7154
7175
  children: r.readyBadge
7155
7176
  }),
7156
- /* @__PURE__ */ t(Jr, {
7177
+ /* @__PURE__ */ t(Zr, {
7157
7178
  label: e.reveal,
7158
7179
  value: 68
7159
7180
  })
@@ -7191,22 +7212,22 @@ function ma() {
7191
7212
  children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t("strong", { children: "Overlay glass + compact" }), /* @__PURE__ */ n("span", {
7192
7213
  className: "game-ui-small-copy",
7193
7214
  children: [
7194
- na.toneAttr,
7215
+ aa.toneAttr,
7195
7216
  "=\"",
7196
- na.toneGlass,
7217
+ aa.toneGlass,
7197
7218
  "\" ·",
7198
7219
  " ",
7199
- na.densityAttr,
7220
+ aa.densityAttr,
7200
7221
  "=\"",
7201
- na.densityCompact,
7222
+ aa.densityCompact,
7202
7223
  "\""
7203
7224
  ]
7204
7225
  })] }), i("glass")]
7205
7226
  })]
7206
7227
  });
7207
7228
  }
7208
- function ha() {
7209
- let { liquidMetal: e } = sa();
7229
+ function va() {
7230
+ let { liquidMetal: e } = ua();
7210
7231
  return /* @__PURE__ */ n("div", {
7211
7232
  className: "game-ui-liquid-metal-compare",
7212
7233
  children: [/* @__PURE__ */ t(X, {
@@ -7214,7 +7235,7 @@ function ha() {
7214
7235
  tone: "strong",
7215
7236
  children: /* @__PURE__ */ t("div", {
7216
7237
  className: "game-ui-liquid-metal-stage",
7217
- children: /* @__PURE__ */ t(_e, {
7238
+ children: /* @__PURE__ */ t(I, {
7218
7239
  renderer: "css",
7219
7240
  children: e.cta
7220
7241
  })
@@ -7224,7 +7245,7 @@ function ha() {
7224
7245
  tone: "strong",
7225
7246
  children: /* @__PURE__ */ t("div", {
7226
7247
  className: "game-ui-liquid-metal-stage",
7227
- children: /* @__PURE__ */ t(_e, {
7248
+ children: /* @__PURE__ */ t(I, {
7228
7249
  renderer: "webgl",
7229
7250
  children: e.cta
7230
7251
  })
@@ -7232,13 +7253,13 @@ function ha() {
7232
7253
  })]
7233
7254
  });
7234
7255
  }
7235
- function ga() {
7236
- let { modals: e } = sa();
7256
+ function ya() {
7257
+ let { modals: e } = ua();
7237
7258
  return /* @__PURE__ */ n("div", {
7238
7259
  className: "game-ui-preview-two-up",
7239
- children: [/* @__PURE__ */ n(Yn, {
7260
+ children: [/* @__PURE__ */ n(Qn, {
7240
7261
  title: e.dialogTitle,
7241
- children: [/* @__PURE__ */ t("p", { children: e.dialogBody }), /* @__PURE__ */ n(Zn, {
7262
+ children: [/* @__PURE__ */ t("p", { children: e.dialogBody }), /* @__PURE__ */ n(er, {
7242
7263
  label: e.actionsLabel,
7243
7264
  children: [/* @__PURE__ */ t(w, {
7244
7265
  variant: "primary",
@@ -7252,16 +7273,16 @@ function ga() {
7252
7273
  title: e.panelTitle,
7253
7274
  tone: "strong",
7254
7275
  children: [
7255
- /* @__PURE__ */ t(or, {
7276
+ /* @__PURE__ */ t(lr, {
7256
7277
  tone: "success",
7257
7278
  children: e.toastOk
7258
7279
  }),
7259
- /* @__PURE__ */ t(or, {
7280
+ /* @__PURE__ */ t(lr, {
7260
7281
  tone: "danger",
7261
7282
  children: e.toastErr
7262
7283
  }),
7263
- /* @__PURE__ */ t(Lr, { label: e.loading }),
7264
- /* @__PURE__ */ t(Lr, {
7284
+ /* @__PURE__ */ t(Br, { label: e.loading }),
7285
+ /* @__PURE__ */ t(Br, {
7265
7286
  label: e.loadingErr,
7266
7287
  tone: "error"
7267
7288
  })
@@ -7269,14 +7290,14 @@ function ga() {
7269
7290
  })]
7270
7291
  });
7271
7292
  }
7272
- function _a() {
7273
- let { cards: e } = sa();
7293
+ function ba() {
7294
+ let { cards: e } = ua();
7274
7295
  return /* @__PURE__ */ n("div", {
7275
7296
  className: "game-ui-preview-two-up",
7276
7297
  children: [/* @__PURE__ */ t(X, {
7277
7298
  title: e.fanTitle,
7278
7299
  tone: "strong",
7279
- children: /* @__PURE__ */ t(Mr, {
7300
+ children: /* @__PURE__ */ t(Fr, {
7280
7301
  label: e.fanLabel,
7281
7302
  cards: [
7282
7303
  {
@@ -7308,16 +7329,16 @@ function _a() {
7308
7329
  }), /* @__PURE__ */ n("div", {
7309
7330
  className: "game-ui-asset-path-grid",
7310
7331
  children: [
7311
- /* @__PURE__ */ t("code", { children: _r.catalog.manifest }),
7312
- /* @__PURE__ */ t("code", { children: _r.catalog.sourceCatalog }),
7313
- /* @__PURE__ */ t("code", { children: _r.buttons.primary }),
7314
- /* @__PURE__ */ t("code", { children: _r.icons.trophy })
7332
+ /* @__PURE__ */ t("code", { children: br.catalog.manifest }),
7333
+ /* @__PURE__ */ t("code", { children: br.catalog.sourceCatalog }),
7334
+ /* @__PURE__ */ t("code", { children: br.buttons.primary }),
7335
+ /* @__PURE__ */ t("code", { children: br.icons.trophy })
7315
7336
  ]
7316
7337
  })]
7317
7338
  })]
7318
7339
  });
7319
7340
  }
7320
- var va = [
7341
+ var xa = [
7321
7342
  {
7322
7343
  id: "terrain",
7323
7344
  label: "Terrain",
@@ -7333,7 +7354,7 @@ var va = [
7333
7354
  label: "Place",
7334
7355
  icon: "gem"
7335
7356
  }
7336
- ], ya = [
7357
+ ], Sa = [
7337
7358
  {
7338
7359
  id: "raise",
7339
7360
  label: "Raise",
@@ -7359,7 +7380,7 @@ var va = [
7359
7380
  label: "Paint",
7360
7381
  shortcut: "5"
7361
7382
  }
7362
- ], ba = [
7383
+ ], Ca = [
7363
7384
  {
7364
7385
  id: "grass",
7365
7386
  label: "Grass",
@@ -7375,7 +7396,7 @@ var va = [
7375
7396
  label: "Path",
7376
7397
  color: "#b98d5d"
7377
7398
  }
7378
- ], xa = [{
7399
+ ], wa = [{
7379
7400
  id: "foundation",
7380
7401
  label: "Foundation",
7381
7402
  icon: "home",
@@ -7394,10 +7415,10 @@ var va = [
7394
7415
  status: "ready"
7395
7416
  }]
7396
7417
  }];
7397
- function Sa() {
7418
+ function Ta() {
7398
7419
  return /* @__PURE__ */ n("div", {
7399
7420
  className: "game-ui-preview-two-up",
7400
- children: [/* @__PURE__ */ t(Ei, {
7421
+ children: [/* @__PURE__ */ t(ki, {
7401
7422
  activeBuildCategoryId: "foundation",
7402
7423
  activeMaterialId: "grass",
7403
7424
  activeModeId: "terrain",
@@ -7406,10 +7427,10 @@ function Sa() {
7406
7427
  radius: 2.75,
7407
7428
  strength: .45
7408
7429
  },
7409
- buildCategories: xa,
7430
+ buildCategories: wa,
7410
7431
  label: "Desktop terrain and build tools",
7411
- materials: ba,
7412
- modes: va,
7432
+ materials: Ca,
7433
+ modes: xa,
7413
7434
  selectedBuildItemId: "floor-2x2",
7414
7435
  status: {
7415
7436
  label: "Ready",
@@ -7420,12 +7441,12 @@ function Sa() {
7420
7441
  progressValue: 68
7421
7442
  },
7422
7443
  title: "Island tools",
7423
- tools: ya,
7444
+ tools: Sa,
7424
7445
  undoRedo: {
7425
7446
  canRedo: !1,
7426
7447
  canUndo: !0
7427
7448
  }
7428
- }), /* @__PURE__ */ t(Ei, {
7449
+ }), /* @__PURE__ */ t(ki, {
7429
7450
  activeBuildCategoryId: "foundation",
7430
7451
  activeMaterialId: "path",
7431
7452
  activeModeId: "terrain",
@@ -7434,11 +7455,11 @@ function Sa() {
7434
7455
  radius: 1.5,
7435
7456
  strength: .3
7436
7457
  },
7437
- buildCategories: xa,
7458
+ buildCategories: wa,
7438
7459
  drawerOpen: !0,
7439
7460
  label: "Small mobile terrain drawer",
7440
- materials: ba,
7441
- modes: va,
7461
+ materials: Ca,
7462
+ modes: xa,
7442
7463
  selectedBuildItemId: "floor-2x2",
7443
7464
  status: {
7444
7465
  label: "Blocked",
@@ -7446,7 +7467,7 @@ function Sa() {
7446
7467
  description: "This edit would bury a placed object."
7447
7468
  },
7448
7469
  title: "Tools",
7449
- tools: ya,
7470
+ tools: Sa,
7450
7471
  undoRedo: {
7451
7472
  canRedo: !0,
7452
7473
  canUndo: !0
@@ -7455,7 +7476,7 @@ function Sa() {
7455
7476
  })]
7456
7477
  });
7457
7478
  }
7458
- function Ca({ label: e, mode: r }) {
7479
+ function Ea({ label: e, mode: r }) {
7459
7480
  return /* @__PURE__ */ n("div", {
7460
7481
  className: "game-ui-construction-preview-card",
7461
7482
  "data-preview": r,
@@ -7469,7 +7490,7 @@ function Ca({ label: e, mode: r }) {
7469
7490
  ]
7470
7491
  });
7471
7492
  }
7472
- var wa = [
7493
+ var Da = [
7473
7494
  {
7474
7495
  id: "preview-deck",
7475
7496
  title: "Deck robot crew",
@@ -7530,7 +7551,7 @@ var wa = [
7530
7551
  before: {
7531
7552
  label: "Before",
7532
7553
  caption: "Uneven terrain pad.",
7533
- content: /* @__PURE__ */ t(Ca, {
7554
+ content: /* @__PURE__ */ t(Ea, {
7534
7555
  label: "Rough pad",
7535
7556
  mode: "before"
7536
7557
  })
@@ -7538,7 +7559,7 @@ var wa = [
7538
7559
  after: {
7539
7560
  label: "After",
7540
7561
  caption: "Flattened foundation pad with safe clearance.",
7541
- content: /* @__PURE__ */ t(Ca, {
7562
+ content: /* @__PURE__ */ t(Ea, {
7542
7563
  label: "Foundation ready",
7543
7564
  mode: "after"
7544
7565
  })
@@ -7567,19 +7588,19 @@ var wa = [
7567
7588
  }]
7568
7589
  }
7569
7590
  ];
7570
- function Ta() {
7591
+ function Oa() {
7571
7592
  return /* @__PURE__ */ n("div", {
7572
7593
  className: "game-ui-preview-two-up",
7573
- children: [/* @__PURE__ */ t(Ki, {
7574
- jobs: wa,
7594
+ children: [/* @__PURE__ */ t(Yi, {
7595
+ jobs: Da,
7575
7596
  label: "AI contractor jobs",
7576
7597
  selectedJobId: "review-house-pad",
7577
7598
  subtitle: "Official contractor UI covers drafts, previews, robot work, validation, review, and local-only provider boundaries.",
7578
7599
  title: "AI contractor",
7579
7600
  variant: "desktop"
7580
- }), /* @__PURE__ */ t(Ki, {
7601
+ }), /* @__PURE__ */ t(Yi, {
7581
7602
  drawerOpen: !0,
7582
- jobs: wa,
7603
+ jobs: Da,
7583
7604
  label: "Small mobile contractor jobs",
7584
7605
  selectedJobId: "blocked-fence",
7585
7606
  title: "Contractor",
@@ -7587,10 +7608,10 @@ function Ta() {
7587
7608
  })]
7588
7609
  });
7589
7610
  }
7590
- function Ea() {
7591
- return /* @__PURE__ */ t(Xr, {
7611
+ function ka() {
7612
+ return /* @__PURE__ */ t($r, {
7592
7613
  title: "OwnMySpace island editor preview",
7593
- hud: /* @__PURE__ */ t(Qr, {
7614
+ hud: /* @__PURE__ */ t(ti, {
7594
7615
  label: "Island facts",
7595
7616
  facts: [
7596
7617
  {
@@ -7614,11 +7635,11 @@ function Ea() {
7614
7635
  }
7615
7636
  ]
7616
7637
  }),
7617
- movementPad: /* @__PURE__ */ t(ri, {
7638
+ movementPad: /* @__PURE__ */ t(oi, {
7618
7639
  helpText: "WASD or arrows",
7619
7640
  label: "Move avatar"
7620
7641
  }),
7621
- assetLibrary: /* @__PURE__ */ t(ci, {
7642
+ assetLibrary: /* @__PURE__ */ t(di, {
7622
7643
  label: "Placeable assets",
7623
7644
  title: "Assets",
7624
7645
  subtitle: "Starter, generated, and imported assets stay visibly distinct but share one placement path.",
@@ -7665,7 +7686,7 @@ function Ea() {
7665
7686
  }
7666
7687
  ]
7667
7688
  }),
7668
- bottomBar: /* @__PURE__ */ t(li, {
7689
+ bottomBar: /* @__PURE__ */ t(fi, {
7669
7690
  title: "Placement",
7670
7691
  selectedTitle: "Manual chair",
7671
7692
  placedObjects: 3,
@@ -7701,7 +7722,7 @@ function Ea() {
7701
7722
  })
7702
7723
  });
7703
7724
  }
7704
- var Da = [{
7725
+ var Aa = [{
7705
7726
  id: "starter",
7706
7727
  label: "Starter pieces",
7707
7728
  source: "starter",
@@ -7732,7 +7753,7 @@ var Da = [{
7732
7753
  }
7733
7754
  ]
7734
7755
  }];
7735
- function Oa() {
7756
+ function ja() {
7736
7757
  return /* @__PURE__ */ t("div", {
7737
7758
  className: "game-ui-asset-compression-repro",
7738
7759
  "aria-label": "Asset card compression repro",
@@ -7756,9 +7777,9 @@ function Oa() {
7756
7777
  className: "game-ui-asset-compression-repro-surface",
7757
7778
  "data-repro-surface": e.id,
7758
7779
  style: { "--repro-width": e.width },
7759
- children: [/* @__PURE__ */ t(Q, { children: e.label }), /* @__PURE__ */ t(ci, {
7780
+ children: [/* @__PURE__ */ t(Q, { children: e.label }), /* @__PURE__ */ t(di, {
7760
7781
  density: "dense",
7761
- groups: Da,
7782
+ groups: Aa,
7762
7783
  label: `${e.label} assets`,
7763
7784
  selectedAssetId: "asset-repro-chair",
7764
7785
  title: "Build"
@@ -7766,13 +7787,13 @@ function Oa() {
7766
7787
  }, e.id))
7767
7788
  });
7768
7789
  }
7769
- function ka() {
7770
- let { firstSession: e } = sa();
7790
+ function Ma() {
7791
+ let { firstSession: e } = ua();
7771
7792
  return /* @__PURE__ */ n("div", {
7772
7793
  className: "game-ui-first-session-preview",
7773
7794
  children: [/* @__PURE__ */ t("div", {
7774
7795
  className: "game-ui-first-session-world",
7775
- children: /* @__PURE__ */ t(Br, {
7796
+ children: /* @__PURE__ */ t(Ur, {
7776
7797
  authenticated: !0,
7777
7798
  batteryCount: 5,
7778
7799
  dailyStreak: 3,
@@ -7806,7 +7827,7 @@ function ka() {
7806
7827
  })
7807
7828
  }), /* @__PURE__ */ t("div", {
7808
7829
  className: "game-ui-first-session-modal-slot",
7809
- children: /* @__PURE__ */ t(Vr, {
7830
+ children: /* @__PURE__ */ t(Wr, {
7810
7831
  open: !0,
7811
7832
  onDismiss: () => void 0,
7812
7833
  labels: {
@@ -7834,46 +7855,46 @@ function ka() {
7834
7855
  })]
7835
7856
  });
7836
7857
  }
7837
- function Aa() {
7838
- let { responsive: e } = sa();
7858
+ function Na() {
7859
+ let { responsive: e } = ua();
7839
7860
  return /* @__PURE__ */ n("div", {
7840
7861
  className: "game-ui-proof-frames",
7841
7862
  children: [/* @__PURE__ */ n("article", {
7842
7863
  className: "game-ui-proof-frame is-desktop",
7843
- children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t(Q, { children: e.desktop }), /* @__PURE__ */ t("strong", { children: "1440×900" })] }), /* @__PURE__ */ t(pa, {})]
7864
+ children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t(Q, { children: e.desktop }), /* @__PURE__ */ t("strong", { children: "1440×900" })] }), /* @__PURE__ */ t(ga, {})]
7844
7865
  }), /* @__PURE__ */ n("article", {
7845
7866
  className: "game-ui-proof-frame is-mobile-landscape",
7846
- children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t(Q, { children: e.mobileLandscape }), /* @__PURE__ */ t("strong", { children: "844×390" })] }), /* @__PURE__ */ t(pa, {})]
7867
+ children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t(Q, { children: e.mobileLandscape }), /* @__PURE__ */ t("strong", { children: "844×390" })] }), /* @__PURE__ */ t(ga, {})]
7847
7868
  })]
7848
7869
  });
7849
7870
  }
7850
- function ja() {
7851
- let { forms: e } = sa();
7871
+ function Pa() {
7872
+ let { forms: e } = ua();
7852
7873
  return /* @__PURE__ */ n("div", {
7853
7874
  className: "game-ui-preview-two-up",
7854
7875
  children: [/* @__PURE__ */ n(X, {
7855
7876
  title: e.formsTitle,
7856
7877
  tone: "strong",
7857
7878
  children: [
7858
- /* @__PURE__ */ t(Wr, {
7879
+ /* @__PURE__ */ t(qr, {
7859
7880
  hint: e.roomCodeHint,
7860
7881
  label: e.roomCodeLabel,
7861
- children: /* @__PURE__ */ t(Hr, { placeholder: e.roomCodePlaceholder })
7882
+ children: /* @__PURE__ */ t(Gr, { placeholder: e.roomCodePlaceholder })
7862
7883
  }),
7863
- /* @__PURE__ */ t(Wr, {
7884
+ /* @__PURE__ */ t(qr, {
7864
7885
  label: e.nameLabel,
7865
7886
  required: !0,
7866
- children: /* @__PURE__ */ t(Hr, { placeholder: e.namePlaceholder })
7887
+ children: /* @__PURE__ */ t(Gr, { placeholder: e.namePlaceholder })
7867
7888
  }),
7868
- /* @__PURE__ */ t(Wr, {
7889
+ /* @__PURE__ */ t(qr, {
7869
7890
  error: e.readError,
7870
7891
  label: e.readLabel,
7871
- children: /* @__PURE__ */ t(Ur, {
7892
+ children: /* @__PURE__ */ t(Kr, {
7872
7893
  invalid: !0,
7873
7894
  placeholder: e.readPlaceholder
7874
7895
  })
7875
7896
  }),
7876
- /* @__PURE__ */ t(Gr, {
7897
+ /* @__PURE__ */ t(Jr, {
7877
7898
  defaultChecked: !0,
7878
7899
  label: e.rememberLabel
7879
7900
  })
@@ -7885,38 +7906,38 @@ function ja() {
7885
7906
  /* @__PURE__ */ n("div", {
7886
7907
  className: "game-ui-component-row",
7887
7908
  children: [
7888
- /* @__PURE__ */ t(qr, {
7909
+ /* @__PURE__ */ t(Xr, {
7889
7910
  name: "Mika Ono",
7890
7911
  status: "online"
7891
7912
  }),
7892
- /* @__PURE__ */ t(qr, {
7913
+ /* @__PURE__ */ t(Xr, {
7893
7914
  name: "River",
7894
7915
  size: "lg",
7895
7916
  status: "busy"
7896
7917
  }),
7897
- /* @__PURE__ */ t(qr, {
7918
+ /* @__PURE__ */ t(Xr, {
7898
7919
  name: "Noa",
7899
7920
  status: "away"
7900
7921
  }),
7901
- /* @__PURE__ */ t(qr, {
7922
+ /* @__PURE__ */ t(Xr, {
7902
7923
  name: e.guestName,
7903
7924
  size: "sm"
7904
7925
  })
7905
7926
  ]
7906
7927
  }),
7907
- /* @__PURE__ */ t(Jr, {
7928
+ /* @__PURE__ */ t(Zr, {
7908
7929
  label: e.revealLabel,
7909
7930
  showValue: !0,
7910
7931
  value: 64
7911
7932
  }),
7912
- /* @__PURE__ */ t(Jr, {
7933
+ /* @__PURE__ */ t(Zr, {
7913
7934
  label: e.batteryLabel,
7914
7935
  max: 20,
7915
7936
  showValue: !0,
7916
7937
  tone: "success",
7917
7938
  value: 14
7918
7939
  }),
7919
- /* @__PURE__ */ t(Yr, {
7940
+ /* @__PURE__ */ t(Qr, {
7920
7941
  action: /* @__PURE__ */ t(w, {
7921
7942
  variant: "primary",
7922
7943
  children: e.emptyCta
@@ -7929,8 +7950,8 @@ function ja() {
7929
7950
  })]
7930
7951
  });
7931
7952
  }
7932
- var Ma = ur.filter((e) => mr(e).includes("game")), Na = ur.filter((e) => mr(e).includes("line"));
7933
- function Pa({ names: e, style: r }) {
7953
+ var Fa = pr.filter((e) => _r(e).includes("game")), Ia = pr.filter((e) => _r(e).includes("line"));
7954
+ function La({ names: e, style: r }) {
7934
7955
  return /* @__PURE__ */ t("div", {
7935
7956
  className: "game-ui-icon-grid",
7936
7957
  children: e.map((e) => /* @__PURE__ */ n("figure", {
@@ -7943,10 +7964,10 @@ function Pa({ names: e, style: r }) {
7943
7964
  }, `${r}-${e}`))
7944
7965
  });
7945
7966
  }
7946
- function Fa() {
7967
+ function Ra() {
7947
7968
  return /* @__PURE__ */ t("div", {
7948
7969
  className: "game-ui-icon-grid",
7949
- children: gr.map((e) => /* @__PURE__ */ n("figure", {
7970
+ children: yr.map((e) => /* @__PURE__ */ n("figure", {
7950
7971
  className: "game-ui-icon-cell",
7951
7972
  children: [/* @__PURE__ */ t("span", {
7952
7973
  className: "game-ui-asset-icon",
@@ -7955,14 +7976,14 @@ function Fa() {
7955
7976
  "aria-hidden": !0,
7956
7977
  children: /* @__PURE__ */ t("img", {
7957
7978
  alt: "",
7958
- src: hr[e]
7979
+ src: vr[e]
7959
7980
  })
7960
7981
  }), /* @__PURE__ */ t("figcaption", { children: e })]
7961
7982
  }, `sprite-${e}`))
7962
7983
  });
7963
7984
  }
7964
- function Ia() {
7965
- let { gallery: e } = sa();
7985
+ function za() {
7986
+ let { gallery: e } = ua();
7966
7987
  return /* @__PURE__ */ n("div", {
7967
7988
  className: "game-ui-icon-gallery",
7968
7989
  children: [
@@ -7977,8 +7998,8 @@ function Ia() {
7977
7998
  className: "game-ui-small-copy",
7978
7999
  children: e.gameHint
7979
8000
  })]
7980
- }), /* @__PURE__ */ t(Pa, {
7981
- names: Ma,
8001
+ }), /* @__PURE__ */ t(La, {
8002
+ names: Fa,
7982
8003
  style: "game"
7983
8004
  })]
7984
8005
  }),
@@ -7990,8 +8011,8 @@ function Ia() {
7990
8011
  className: "game-ui-small-copy",
7991
8012
  children: e.lineHint
7992
8013
  })]
7993
- }), /* @__PURE__ */ t(Pa, {
7994
- names: Na,
8014
+ }), /* @__PURE__ */ t(La, {
8015
+ names: Ia,
7995
8016
  style: "line"
7996
8017
  })]
7997
8018
  }),
@@ -8006,16 +8027,16 @@ function Ia() {
8006
8027
  className: "game-ui-small-copy",
8007
8028
  children: e.spriteHint
8008
8029
  })]
8009
- }), /* @__PURE__ */ t(Fa, {})]
8030
+ }), /* @__PURE__ */ t(Ra, {})]
8010
8031
  })
8011
8032
  ]
8012
8033
  });
8013
8034
  }
8014
- function La({ title: e, body: r }) {
8015
- let [i, a] = m("en"), o = aa[i], s = e && i === "en" ? e : o.heroTitle, c = r && i === "en" ? r : o.heroBody;
8035
+ function Ba({ title: e, body: r }) {
8036
+ let [i, a] = m("en"), o = ca[i], s = e && i === "en" ? e : o.heroTitle, c = r && i === "en" ? r : o.heroBody;
8016
8037
  return l(() => (document.documentElement.dataset.gameUiPreview = "clay", () => {
8017
8038
  delete document.documentElement.dataset.gameUiPreview;
8018
- }), []), /* @__PURE__ */ t(oa.Provider, {
8039
+ }), []), /* @__PURE__ */ t(la.Provider, {
8019
8040
  value: o,
8020
8041
  children: /* @__PURE__ */ n("main", {
8021
8042
  "aria-label": "Swimmer UI Kit clay preview",
@@ -8028,7 +8049,7 @@ function La({ title: e, body: r }) {
8028
8049
  tone: "ai",
8029
8050
  children: "@pieai/swimmer-ui-kit"
8030
8051
  }),
8031
- /* @__PURE__ */ t(Ir, {
8052
+ /* @__PURE__ */ t(zr, {
8032
8053
  currentLabel: o.triggerLabel,
8033
8054
  label: o.langMenuLabel,
8034
8055
  onSelect: (e) => a(e),
@@ -8055,10 +8076,10 @@ function La({ title: e, body: r }) {
8055
8076
  id: "game-ui-preview-token-title",
8056
8077
  children: o.sections.tokens
8057
8078
  }),
8058
- /* @__PURE__ */ t(ua, {}),
8079
+ /* @__PURE__ */ t(pa, {}),
8059
8080
  /* @__PURE__ */ t("div", {
8060
8081
  className: "game-ui-token-ledger",
8061
- children: ca.map((e) => /* @__PURE__ */ t(la, {
8082
+ children: da.map((e) => /* @__PURE__ */ t(fa, {
8062
8083
  id: e.id,
8063
8084
  label: o.tokenGroups[e.id] ?? e.id,
8064
8085
  tokens: e.tokens
@@ -8078,7 +8099,7 @@ function La({ title: e, body: r }) {
8078
8099
  className: "game-ui-small-copy",
8079
8100
  children: o.iconsIntro
8080
8101
  }),
8081
- /* @__PURE__ */ t(Ia, {})
8102
+ /* @__PURE__ */ t(za, {})
8082
8103
  ]
8083
8104
  }),
8084
8105
  /* @__PURE__ */ n("section", {
@@ -8087,7 +8108,7 @@ function La({ title: e, body: r }) {
8087
8108
  children: [/* @__PURE__ */ t("h2", {
8088
8109
  id: "game-ui-preview-type-title",
8089
8110
  children: o.sections.typography
8090
- }), /* @__PURE__ */ t(da, {})]
8111
+ }), /* @__PURE__ */ t(ma, {})]
8091
8112
  }),
8092
8113
  /* @__PURE__ */ n("section", {
8093
8114
  "aria-labelledby": "game-ui-preview-components-title",
@@ -8097,11 +8118,11 @@ function La({ title: e, body: r }) {
8097
8118
  id: "game-ui-preview-components-title",
8098
8119
  children: o.sections.components
8099
8120
  }),
8100
- /* @__PURE__ */ t(fa, {}),
8101
- /* @__PURE__ */ t(pa, {}),
8121
+ /* @__PURE__ */ t(ha, {}),
8102
8122
  /* @__PURE__ */ t(ga, {}),
8103
- /* @__PURE__ */ t(_a, {}),
8104
- /* @__PURE__ */ t(Xn, {
8123
+ /* @__PURE__ */ t(ya, {}),
8124
+ /* @__PURE__ */ t(ba, {}),
8125
+ /* @__PURE__ */ t($n, {
8105
8126
  entries: o.history,
8106
8127
  label: o.historyLabel
8107
8128
  })
@@ -8113,7 +8134,7 @@ function La({ title: e, body: r }) {
8113
8134
  children: [/* @__PURE__ */ t("h2", {
8114
8135
  id: "game-ui-preview-forms-title",
8115
8136
  children: o.sections.forms
8116
- }), /* @__PURE__ */ t(ja, {})]
8137
+ }), /* @__PURE__ */ t(Pa, {})]
8117
8138
  }),
8118
8139
  /* @__PURE__ */ n("section", {
8119
8140
  "aria-labelledby": "game-ui-preview-overlay-glass-title",
@@ -8127,7 +8148,7 @@ function La({ title: e, body: r }) {
8127
8148
  className: "game-ui-small-copy",
8128
8149
  children: "Official HUD-on-scene tone: dark translucent glass, thin light border, no clay cast shadow, compact density. Use on any container that wraps scene-overlay chrome (3D tavern, cinematic stage). Nest inside light or night theme."
8129
8150
  }),
8130
- /* @__PURE__ */ t(ma, {})
8151
+ /* @__PURE__ */ t(_a, {})
8131
8152
  ]
8132
8153
  }),
8133
8154
  /* @__PURE__ */ n("section", {
@@ -8142,7 +8163,7 @@ function La({ title: e, body: r }) {
8142
8163
  className: "game-ui-small-copy",
8143
8164
  children: o.liquidMetal.body
8144
8165
  }),
8145
- /* @__PURE__ */ t(ha, {})
8166
+ /* @__PURE__ */ t(va, {})
8146
8167
  ]
8147
8168
  }),
8148
8169
  /* @__PURE__ */ n("section", {
@@ -8151,7 +8172,7 @@ function La({ title: e, body: r }) {
8151
8172
  children: [/* @__PURE__ */ t("h2", {
8152
8173
  id: "game-ui-preview-ownmyspace-title",
8153
8174
  children: "OwnMySpace game surface pack"
8154
- }), /* @__PURE__ */ t(Ea, {})]
8175
+ }), /* @__PURE__ */ t(ka, {})]
8155
8176
  }),
8156
8177
  /* @__PURE__ */ n("section", {
8157
8178
  "aria-labelledby": "game-ui-preview-terrain-build-title",
@@ -8165,7 +8186,7 @@ function La({ title: e, body: r }) {
8165
8186
  className: "game-ui-small-copy",
8166
8187
  children: "Official terrain controls cover mode, brush, material, undo/redo, build library, status, progress, and compact mobile drawer surfaces."
8167
8188
  }),
8168
- /* @__PURE__ */ t(Sa, {})
8189
+ /* @__PURE__ */ t(Ta, {})
8169
8190
  ]
8170
8191
  }),
8171
8192
  /* @__PURE__ */ n("section", {
@@ -8180,7 +8201,7 @@ function La({ title: e, body: r }) {
8180
8201
  className: "game-ui-small-copy",
8181
8202
  children: "Official construction surfaces cover job queue states, before/after review, robot crew status, validation warnings, approval actions, and local-only provider badges."
8182
8203
  }),
8183
- /* @__PURE__ */ t(Ta, {})
8204
+ /* @__PURE__ */ t(Oa, {})
8184
8205
  ]
8185
8206
  }),
8186
8207
  /* @__PURE__ */ n("section", {
@@ -8195,7 +8216,7 @@ function La({ title: e, body: r }) {
8195
8216
  className: "game-ui-small-copy",
8196
8217
  children: "Official asset cards must stay visually complete when a game shell uses dense, narrow, or rail-style inventory slots."
8197
8218
  }),
8198
- /* @__PURE__ */ t(Oa, {})
8219
+ /* @__PURE__ */ t(ja, {})
8199
8220
  ]
8200
8221
  }),
8201
8222
  /* @__PURE__ */ n("section", {
@@ -8204,7 +8225,7 @@ function La({ title: e, body: r }) {
8204
8225
  children: [/* @__PURE__ */ t("h2", {
8205
8226
  id: "game-ui-preview-first-session-title",
8206
8227
  children: o.sections.firstSession
8207
- }), /* @__PURE__ */ t(ka, {})]
8228
+ }), /* @__PURE__ */ t(Ma, {})]
8208
8229
  }),
8209
8230
  /* @__PURE__ */ n("section", {
8210
8231
  "aria-labelledby": "game-ui-preview-orientation-title",
@@ -8212,7 +8233,7 @@ function La({ title: e, body: r }) {
8212
8233
  children: [/* @__PURE__ */ t("h2", {
8213
8234
  id: "game-ui-preview-orientation-title",
8214
8235
  children: o.sections.orientation
8215
- }), /* @__PURE__ */ t(Fr, {
8236
+ }), /* @__PURE__ */ t(Rr, {
8216
8237
  badgeLabel: o.orientation.badge,
8217
8238
  body: o.orientation.body,
8218
8239
  cta: o.orientation.cta,
@@ -8227,11 +8248,11 @@ function La({ title: e, body: r }) {
8227
8248
  children: [/* @__PURE__ */ t("h2", {
8228
8249
  id: "game-ui-preview-responsive-title",
8229
8250
  children: o.sections.responsive
8230
- }), /* @__PURE__ */ t(Aa, {})]
8251
+ }), /* @__PURE__ */ t(Na, {})]
8231
8252
  })
8232
8253
  ]
8233
8254
  })
8234
8255
  });
8235
8256
  }
8236
8257
  //#endregion
8237
- export { _r as CLAY_ASSETS, cr as CLAY_ASSET_BASE_PATH, Se as CLAY_ASSET_SIZE_TOKENS, I as CLAY_COLOR_TOKENS, V as CLAY_ELEVATION_TOKENS, hr as CLAY_GAME_SPRITES, gr as CLAY_GAME_SPRITE_NAMES, ur as CLAY_ICON_NAMES, lr as CLAY_ICON_VARIANTS, U as CLAY_LAYER_TOKENS, L as CLAY_LIQUID_GOOEY_TOKENS, L as GAME_UI_LIQUID_GOOEY_TOKENS, ve as CLAY_LIQUID_METAL_TOKENS, ve as GAME_UI_LIQUID_METAL_TOKENS, H as CLAY_MOTION_TOKENS, R as CLAY_OVERLAY_GLASS_TOKENS, R as GAME_UI_OVERLAY_GLASS_TOKENS, B as CLAY_RADIUS_TOKENS, z as CLAY_SEMANTIC_TOKENS, be as CLAY_SPACE_TOKENS, xe as CLAY_TARGET_TOKENS, ye as CLAY_TYPE_TOKENS, Ce as CLAY_UI_TOKENS, we as DEFAULT_LIQUID_GOOEY_ANIMATION_BUDGET, Te as DEFAULT_LIQUID_GOOEY_FILTER_AREA_BUDGET, T as DEFAULT_LIQUID_METAL_CONTEXT_BUDGET, J as DISSOLVE_DEFAULTS, Br as FirstSessionHud, Vr as FirstSessionOnboarding, na as GAME_UI_OVERLAY, ea as GAME_UI_PREVIEW_MESSAGES, ra as GAME_UI_TARGETS, ia as GAME_UI_THEME_CONTRACT, ta as GAME_UI_TOKENS, ei as GameActionGrid, si as GameAssetCard, $ as GameAssetIcon, ci as GameAssetLibrary, qr as GameAvatar, Q as GameBadge, Ui as GameBeforeAfterToggle, yi as GameBrushControls, Si as GameBuildLibrary, w as GameButton, Jn as GameCallout, Mr as GameCardFan, Gr as GameCheckbox, Yi as GameCollapsiblePanel, Ci as GameCompactGameDrawer, Gi as GameCompactJobDrawer, Vi as GameConstructionApprovalBar, Wi as GameConstructionJobCard, Bi as GameConstructionProgress, Ki as GameContractorPanel, Yn as GameDialog, Yr as GameEmptyState, Qr as GameFactList, Wr as GameField, Xn as GameHistoryPanel, jr as GameHud, Zn as GameHudActions, Qn as GameIconButton, Hr as GameInput, Ir as GameLanguageMenu, Lr as GameLoadingState, bi as GameMaterialSwatches, $i as GameModal, ri as GameMovementPad, ui as GameObjectToolbar, Fr as GameOrientationGate, X as GamePanel, li as GamePlacementToolbar, Jr as GameProgress, sr as GamePrompt, ar as GameRadialMenu, Hi as GameRobotCrewStatus, Zr as GameSceneHudLayout, nr as GameSegmentedControl, Xr as GameShell, rr as GameSlider, Nr as GameStageTile, $r as GameStatList, er as GameTabs, Ei as GameTerrainBuildToolbox, _i as GameTerrainModeControl, vi as GameTerrainToolStrip, Ur as GameTextArea, or as GameToast, ir as GameToggle, $n as GameTooltip, La as GameUiPreview, xi as GameUndoRedoActions, Qi as GameWindowPanel, en as IMAGE_MELT_DEFAULTS, He as LIQUID_GOOEY_WAVINESS_MAX_FRACTION, qn as LiquidGroup, Kn as LiquidItem, _e as LiquidMetalButton, Or as acknowledgeClayPlaceholders, Tr as getClayAssetBasePath, Cr as getClayAssetMode, Rr as getClayCatalogPaths, kr as getClayIconPath, mr as getClayIconStyles, Ar as getClaySourceAssetPath, ke as getLiquidGooeyBudget, O as getLiquidMetalContextBudget, C as playGameInteractionSound, S as playGameInteractionSoundForContext, on as resolveDissolveOptions, wr as setClayAssetBasePath, Sr as setClayAssetMode, Ae as setLiquidGooeyBudget, k as setLiquidMetalContextBudget };
8258
+ export { br as CLAY_ASSETS, dr as CLAY_ASSET_BASE_PATH, xe as CLAY_ASSET_SIZE_TOKENS, L as CLAY_COLOR_TOKENS, U as CLAY_ELEVATION_TOKENS, vr as CLAY_GAME_SPRITES, yr as CLAY_GAME_SPRITE_NAMES, pr as CLAY_ICON_NAMES, fr as CLAY_ICON_VARIANTS, ye as CLAY_LAYER_TOKENS, z as CLAY_LIQUID_GOOEY_TOKENS, z as GAME_UI_LIQUID_GOOEY_TOKENS, R as CLAY_LIQUID_METAL_TOKENS, R as GAME_UI_LIQUID_METAL_TOKENS, W as CLAY_MOTION_TOKENS, _e as CLAY_OVERLAY_GLASS_TOKENS, _e as GAME_UI_OVERLAY_GLASS_TOKENS, H as CLAY_RADIUS_TOKENS, B as CLAY_SEMANTIC_TOKENS, ve as CLAY_SPACE_TOKENS, be as CLAY_TARGET_TOKENS, V as CLAY_TYPE_TOKENS, Se as CLAY_UI_TOKENS, Ce as DEFAULT_LIQUID_GOOEY_ANIMATION_BUDGET, we as DEFAULT_LIQUID_GOOEY_FILTER_AREA_BUDGET, T as DEFAULT_LIQUID_METAL_CONTEXT_BUDGET, J as DISSOLVE_DEFAULTS, Ur as FirstSessionHud, Wr as FirstSessionOnboarding, aa as GAME_UI_OVERLAY, ra as GAME_UI_PREVIEW_MESSAGES, oa as GAME_UI_TARGETS, sa as GAME_UI_THEME_CONTRACT, ia as GAME_UI_TOKENS, ri as GameActionGrid, ui as GameAssetCard, $ as GameAssetIcon, di as GameAssetLibrary, Xr as GameAvatar, Q as GameBadge, Ki as GameBeforeAfterToggle, Si as GameBrushControls, Ti as GameBuildLibrary, w as GameButton, Zn as GameCallout, Fr as GameCardFan, Jr as GameCheckbox, Qi as GameCollapsiblePanel, Ei as GameCompactGameDrawer, Ji as GameCompactJobDrawer, Wi as GameConstructionApprovalBar, qi as GameConstructionJobCard, Ui as GameConstructionProgress, Yi as GameContractorPanel, Qn as GameDialog, Qr as GameEmptyState, ti as GameFactList, qr as GameField, $n as GameHistoryPanel, Pr as GameHud, er as GameHudActions, tr as GameIconButton, Gr as GameInput, zr as GameLanguageMenu, Br as GameLoadingState, Ci as GameMaterialSwatches, na as GameModal, oi as GameMovementPad, pi as GameObjectToolbar, Rr as GameOrientationGate, X as GamePanel, fi as GamePlacementToolbar, Zr as GameProgress, ur as GamePrompt, cr as GameRadialMenu, Gi as GameRobotCrewStatus, ei as GameSceneHudLayout, ar as GameSegmentedControl, $r as GameShell, or as GameSlider, Ir as GameStageTile, ni as GameStatList, rr as GameTabs, ki as GameTerrainBuildToolbox, bi as GameTerrainModeControl, xi as GameTerrainToolStrip, Kr as GameTextArea, lr as GameToast, sr as GameToggle, nr as GameTooltip, Ba as GameUiPreview, wi as GameUndoRedoActions, ta as GameWindowPanel, an as IMAGE_MELT_DEFAULTS, Ve as LIQUID_GOOEY_WAVINESS_MAX_FRACTION, Xn as LiquidGroup, Yn as LiquidItem, I as LiquidMetalButton, jr as acknowledgeClayPlaceholders, Or as getClayAssetBasePath, Er as getClayAssetMode, Vr as getClayCatalogPaths, Mr as getClayIconPath, _r as getClayIconStyles, Nr as getClaySourceAssetPath, Oe as getLiquidGooeyBudget, O as getLiquidMetalContextBudget, C as playGameInteractionSound, S as playGameInteractionSoundForContext, un as resolveDissolveOptions, Dr as setClayAssetBasePath, Tr as setClayAssetMode, ke as setLiquidGooeyBudget, ee as setLiquidMetalContextBudget };