@pieai/swimmer-ui-kit 1.11.2 → 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 j() {
99
+ function te() {
100
100
  D > 0 && --D;
101
101
  }
102
- function ee(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 M = "#version 300 es\nin vec2 position; void main(){ gl_Position = vec4(position,0.,1.); }", N = "#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", P = `${N}
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
- }`, te = `${N}
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
- }`, ne = "#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}", re = "#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}", ie = `${N}
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;
@@ -345,7 +345,7 @@ void main(){
345
345
  // CSS underneath, and this layer adds light on top of them
346
346
  float a = clamp(max(rgb.r, max(rgb.g, rgb.b)), 0., 1.);
347
347
  o = vec4(min(rgb, vec3(1.)), a);
348
- }`, ae = {
348
+ }`, oe = {
349
349
  valFreq: .5,
350
350
  valAmp: .55,
351
351
  dens: 2.4,
@@ -367,7 +367,7 @@ void main(){
367
367
  litLo: -.26,
368
368
  litHi: .1,
369
369
  dim: .44
370
- }, oe = Object.keys(ae), se = {
370
+ }, se = Object.keys(oe), ce = {
371
371
  base: .2,
372
372
  hot: .82,
373
373
  chromA: .42,
@@ -376,14 +376,14 @@ void main(){
376
376
  top: .35,
377
377
  press: .85,
378
378
  ripple: 1.6
379
- }, ce = Object.keys(se), le = {
379
+ }, le = Object.keys(ce), ue = {
380
380
  glow: 1.95,
381
381
  glowR: 1.3,
382
382
  glowIn: .3,
383
383
  occl: .62,
384
384
  soften: .24,
385
385
  punch: 1.5
386
- }, F = {
386
+ }, P = {
387
387
  speed: 1.85,
388
388
  width: .2,
389
389
  decay: 1.35,
@@ -399,7 +399,7 @@ void main(){
399
399
  ptrLag: .0016,
400
400
  ptrVref: 4.5
401
401
  };
402
- function ue(e) {
402
+ function de(e) {
403
403
  let t = e.trim(), n = /^#([0-9a-f]{3,8})$/i.exec(t);
404
404
  if (n?.[1]) {
405
405
  let e = n[1];
@@ -424,11 +424,11 @@ function ue(e) {
424
424
  1
425
425
  ];
426
426
  }
427
- function de(e, t, n) {
427
+ function fe(e, t, n) {
428
428
  let r = Number.parseFloat(e.getPropertyValue(t).trim());
429
429
  return Number.isFinite(r) ? r : n;
430
430
  }
431
- function fe(e, t) {
431
+ function pe(e, t) {
432
432
  let n = (e) => t[e] ?? null;
433
433
  return {
434
434
  f1: (t, r) => e.uniform1f(n(t), r),
@@ -440,7 +440,7 @@ function fe(e, t) {
440
440
  i1: (t, r) => e.uniform1i(n(t), r)
441
441
  };
442
442
  }
443
- function pe(e, t, n) {
443
+ function me(e, t, n) {
444
444
  if (typeof e.getContext != "function") return null;
445
445
  let r = null;
446
446
  try {
@@ -456,21 +456,21 @@ function pe(e, t, n) {
456
456
  if (!r) return null;
457
457
  let i = r;
458
458
  try {
459
- return he(i, e, t, n);
459
+ return ge(i, e, t, n);
460
460
  } catch {
461
461
  return i.getExtension("WEBGL_lose_context")?.loseContext(), null;
462
462
  }
463
463
  }
464
- function me(e, t, n) {
464
+ function he(e, t, n) {
465
465
  let r = e.createShader(t);
466
466
  if (!r) throw Error("liquid-metal: createShader returned null");
467
467
  if (e.shaderSource(r, n), e.compileShader(r), !e.getShaderParameter(r, e.COMPILE_STATUS)) throw Error(e.getShaderInfoLog(r) ?? "liquid-metal: shader compile failed");
468
468
  return r;
469
469
  }
470
- function I(e, t) {
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, me(e, e.VERTEX_SHADER, M)), e.attachShader(n, me(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);
@@ -481,8 +481,8 @@ function I(e, t) {
481
481
  u: r
482
482
  };
483
483
  }
484
- function he(e, t, n, r) {
485
- let i = I(e, te), a = I(e, P), o = I(e, ne), s = I(e, re), c = I(e, ie), l = e.createVertexArray(), u = e.createBuffer();
484
+ function ge(e, t, n, r) {
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 he(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 he(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 j = new Float32Array(oe.length), ee = new Float32Array(ce.length), M = 0, N = 0, pe = 0, me = performance.now(), he = [
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,100 +530,100 @@ function he(e, t, n, r) {
530
530
  y: 0,
531
531
  t: -99,
532
532
  on: 0
533
- })), ge = /* @__PURE__ */ new Float32Array(12), L = 0, R = 0, z = 0, B = {
533
+ })), I = /* @__PURE__ */ new Float32Array(12), L = 0, R = 0, z = 0, _e = {
534
534
  x: 0,
535
535
  y: 0
536
- }, V = {
536
+ }, B = {
537
537
  x: 0,
538
538
  y: 0
539
- }, _e = 0, ve = 0, H = {
539
+ }, V = 0, ve = 0, H = {
540
540
  over: !1,
541
541
  press: !1,
542
542
  focus: !1
543
543
  };
544
544
  function U(e, t) {
545
- let n = he[L];
546
- n && (L = (L + 1) % he.length, n.x = e, n.y = t, n.t = pe, n.on = 1);
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
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
552
  function ye() {
553
- N = H.over || H.press || H.focus ? 1 : 0, z = +!!H.press;
553
+ j = H.over || H.press || H.focus ? 1 : 0, z = +!!H.press;
554
554
  }
555
555
  let be = window.matchMedia("(prefers-reduced-motion: reduce)"), xe = null, Se = 0, Ce = !1, we = !1;
556
556
  function Te() {
557
557
  let e = getComputedStyle(n);
558
- return se.base = de(e, "--game-ui-liquid-metal-rest", se.base), se.speed = de(e, "--game-ui-liquid-metal-sweep-speed", se.speed), ae.disp = de(e, "--game-ui-liquid-metal-dispersion", ae.disp), le.glow = de(e, "--game-ui-liquid-metal-bloom", le.glow), { accent: ue(getComputedStyle(O).color) };
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
560
  function Ee(t) {
561
561
  if (Se = 0, Ce || we) return;
562
- let r = (t - me) / 1e3;
563
- me = t;
562
+ let r = (t - he) / 1e3;
563
+ he = t;
564
564
  let l = Math.min(r, 1 / 20);
565
- be.matches || (pe += l);
566
- let u = N > M ? 1 - .0012 ** l : 1 - 12e-5 ** l;
567
- M += (N - M) * u, Math.abs(N - M) < 8e-4 && (M = N);
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
568
  let d = z > R ? 1 - 1e-9 ** l : 1 - .004 ** l;
569
569
  R += (z - R) * d, Math.abs(z - R) < .002 && (R = z);
570
570
  let f = !1;
571
- for (let e = 0; e < he.length; e += 1) {
572
- let t = he[e];
573
- t && (t.on && pe - t.t > 4 && (t.on = 0), t.on && (f = !0), ge[e * 4] = t.x, ge[e * 4 + 1] = t.y, ge[e * 4 + 2] = t.t, ge[e * 4 + 3] = t.on);
571
+ for (let e = 0; e < ge.length; e += 1) {
572
+ let t = ge[e];
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 - F.ptrLag ** +l, O = (B.x - V.x) * p, P = (B.y - V.y) * p;
576
- V.x += O, V.y += P;
577
- let te = Math.min(Math.hypot(O, P) / Math.max(l, .001) / F.ptrVref, 1);
578
- ve += (te - ve) * (1 - (te > ve ? .001 : .02) ** l);
579
- let ne = H.over || H.press ? 1 : 0;
580
- _e += (ne - _e) * (1 - .004 ** l), Math.abs(ne - _e) < .002 && (_e = ne), H.over = n.matches(":hover"), H.focus = n.matches(":focus-visible"), ye(), D && k();
581
- let re = be.matches && !f && _e < .002 ? `${M}|${R}|${b}|${x}` : null;
582
- if (re !== null && re === xe) {
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
583
  Se = requestAnimationFrame(Ee);
584
584
  return;
585
585
  }
586
- xe = re;
587
- let { accent: ie } = Te();
588
- for (let e = 0; e < j.length; e += 1) {
589
- let t = oe[e];
590
- t && (j[e] = ae[t]);
586
+ xe = ae;
587
+ let { accent: N } = Te();
588
+ for (let e = 0; e < te.length; e += 1) {
589
+ let t = se[e];
590
+ t && (te[e] = oe[t]);
591
591
  }
592
- for (let e = 0; e < ee.length; e += 1) {
593
- let t = ce[e];
594
- t && (ee[e] = se[t]);
592
+ for (let e = 0; e < ne.length; e += 1) {
593
+ let t = le[e];
594
+ t && (ne[e] = ce[t]);
595
595
  }
596
- let ue = Math.max(C, 110), de = Math.max(2.4, ue / 516 * 3.2), I = fe(e, i.u), L = fe(e, a.u), U = fe(e, o.u), W = fe(e, s.u), G = fe(e, c.u);
597
- e.useProgram(i.p), I.f2("uC", w, T), I.f2("uHalf", S / 2, C / 2), I.f1("uT", pe), I.f1("uHover", M), I.f1("uPress", R), I.fv4("uRip", ge), I.f4("uRipK", F.speed, F.width, F.decay, F.amp), I.f4("uRipK2", F.facet, F.lobes, F.sharp, F.emit), I.f4("uPtr", V.x, V.y, _e, ve), I.f4("uPtrK", F.ptrRad, F.ptrAmp, F.ptrFast, F.ptrRim), I.f3("uAccent", ie[0], ie[1], ie[2]), I.fv1("uP", j), A(m), e.useProgram(a.p), L.f2("uC", w, T), L.f2("uHalf", S / 2, C / 2), L.f1("uT", pe), L.f1("uBw", de), L.f1("uPress", R), L.fv4("uRip", ge), L.f4("uRipK", F.speed, F.width, F.decay, F.amp), L.f4("uRipK2", F.facet, F.lobes, F.sharp, F.emit), L.f4("uPtr", V.x, V.y, _e, ve), L.f4("uPtrK", F.ptrRad, F.ptrAmp, F.ptrFast, F.ptrRim), L.f3("uAccent", ie[0], ie[1], ie[2]), L.fv1("uE", ee), A(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), A(g), e.useProgram(s.p), W.i1("uTex", 0), W.f2("uTexel", 1 / g.w, 1 / g.h);
598
- let De = le.soften * (ue * .5) * .95;
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
599
  if (De > .1) {
600
600
  let t = Math.min(4, Math.max(1, Math.ceil(De / 3)));
601
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), A(_), e.bindTexture(e.TEXTURE_2D, _.tex), W.f2("uDir", 0, 1), A(g);
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), 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), A(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 = le.glowR * (ue / 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 * Oe)) W.f1("uR", t), e.bindTexture(e.TEXTURE_2D, v.tex), W.f2("uDir", 1, 0), A(y), e.bindTexture(e.TEXTURE_2D, y.tex), W.f2("uDir", 0, 1), A(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", pe), G.fv4("uRip", ge), G.f4("uRipK", F.speed, F.width, F.decay, F.amp), G.f4("uRipK2", F.facet, F.lobes, F.sharp, F.emit), G.f3("uAccent", ie[0], ie[1], ie[2]), G.f1("uGlowGain", le.glow), G.f1("uGlowIn", le.glowIn), G.f1("uOccl", le.occl), G.f1("uDim", ae.dim), G.f1("uPunch", le.punch), A(null), Se = requestAnimationFrame(Ee);
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
614
  let G = (e) => {
615
615
  if (e.pointerType !== "mouse") return;
616
616
  let [t, n] = W(e);
617
- B.x = t, B.y = n, V.x = t, V.y = n, ve = 0, H.over = !0, ye();
617
+ _e.x = t, _e.y = n, B.x = t, B.y = n, ve = 0, H.over = !0, ye();
618
618
  }, De = (e) => {
619
619
  e.pointerType === "mouse" && (H.over = !1, ye());
620
620
  }, Oe = (e) => {
621
621
  if (!H.over && !H.press) return;
622
622
  let [t, n] = W(e);
623
- B.x = t, B.y = n;
623
+ _e.x = t, _e.y = n;
624
624
  }, ke = (e) => {
625
625
  let [t, n] = W(e);
626
- B.x = t, B.y = n, H.press = !0, ye(), U(t, n);
626
+ _e.x = t, _e.y = n, H.press = !0, ye(), U(t, n);
627
627
  }, Ae = () => {
628
628
  H.press = !1, ye();
629
629
  }, je = () => {
@@ -639,12 +639,12 @@ function he(e, t, n, r) {
639
639
  let Fe = new ResizeObserver(() => {
640
640
  D = !0;
641
641
  });
642
- return Fe.observe(r), Fe.observe(n), k(), Se = requestAnimationFrame(Ee), {
642
+ return Fe.observe(r), Fe.observe(n), ee(), Se = requestAnimationFrame(Ee), {
643
643
  pause: () => {
644
644
  Ce = !0, Se && cancelAnimationFrame(Se), Se = 0;
645
645
  },
646
646
  resume: () => {
647
- we || (Ce = !1, me = performance.now(), xe = null, Se ||= requestAnimationFrame(Ee));
647
+ we || (Ce = !1, he = performance.now(), xe = null, Se ||= requestAnimationFrame(Ee));
648
648
  },
649
649
  dispose: () => {
650
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());
@@ -653,22 +653,22 @@ function he(e, t, n, r) {
653
653
  }
654
654
  //#endregion
655
655
  //#region src/LiquidMetalButton.tsx
656
- function ge({ 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 &&= (j(), !1), c || g("css");
662
+ o?.dispose(), o = null, a &&= (te(), !1), c || g("css");
663
663
  }, p = () => {
664
- if (!(c || o) && ee({
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()) {
670
- if (a = !0, o = pe(n, t, e), !o) {
671
- j(), a = !1;
669
+ }) && k()) {
670
+ if (a = !0, o = me(n, t, e), !o) {
671
+ te(), a = !1;
672
672
  return;
673
673
  }
674
674
  g("webgl");
@@ -840,7 +840,7 @@ var L = {
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
- }, B = {
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 L = {
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
- }, V = {
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 L = {
871
871
  borderSubtle: "var(--game-ui-border-subtle)",
872
872
  borderStrong: "var(--game-ui-border-strong)",
873
873
  disabled: "var(--game-ui-disabled)"
874
- }, _e = {
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)",
@@ -955,8 +955,8 @@ var L = {
955
955
  brushNumberWidth: "var(--game-ui-brush-number-width)"
956
956
  }, Se = {
957
957
  colors: L,
958
- semantic: V,
959
- typography: _e,
958
+ semantic: B,
959
+ typography: V,
960
960
  spacing: ve,
961
961
  radius: H,
962
962
  elevation: U,
@@ -964,7 +964,7 @@ var L = {
964
964
  layers: ye,
965
965
  targets: be,
966
966
  assetSizing: xe,
967
- overlayGlass: B,
967
+ overlayGlass: _e,
968
968
  liquidMetal: R,
969
969
  liquidGooey: z
970
970
  }, Ce = 2, we = 48e4, Te = 2, Ee = we, G = 0;
@@ -997,25 +997,31 @@ 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 Fe({ index: n, shadow: r }) {
1001
- let i = [], a = "bin";
1000
+ function Fe(e) {
1001
+ return e.spread === 0 ? "shape" : "bin";
1002
+ }
1003
+ function Ie(e, t) {
1004
+ return t !== null || e.some((e) => e.spread !== 0);
1005
+ }
1006
+ function Le({ index: n, shadow: r }) {
1007
+ let i = [], a = Fe(r), o = a;
1002
1008
  return r.spread !== 0 && (i.push(/* @__PURE__ */ t("feMorphology", {
1003
- in: a,
1009
+ in: o,
1004
1010
  operator: r.spread > 0 ? "erode" : "dilate",
1005
1011
  radius: Math.abs(r.spread),
1006
1012
  result: `shadow-${n}-erode`
1007
- }, "erode")), a = `shadow-${n}-erode`), (r.x !== 0 || r.y !== 0) && (i.push(/* @__PURE__ */ t("feOffset", {
1008
- in: a,
1013
+ }, "erode")), o = `shadow-${n}-erode`), (r.x !== 0 || r.y !== 0) && (i.push(/* @__PURE__ */ t("feOffset", {
1014
+ in: o,
1009
1015
  dx: r.x,
1010
1016
  dy: r.y,
1011
1017
  result: `shadow-${n}-offset`
1012
- }, "offset")), a = `shadow-${n}-offset`), r.blur > 0 && (i.push(/* @__PURE__ */ t("feGaussianBlur", {
1013
- in: a,
1018
+ }, "offset")), o = `shadow-${n}-offset`), r.blur > 0 && (i.push(/* @__PURE__ */ t("feGaussianBlur", {
1019
+ in: o,
1014
1020
  stdDeviation: r.blur / 2,
1015
1021
  result: `shadow-${n}-blur`
1016
- }, "blur")), a = `shadow-${n}-blur`), i.push(/* @__PURE__ */ t("feComposite", {
1017
- in: "bin",
1018
- in2: a,
1022
+ }, "blur")), o = `shadow-${n}-blur`), i.push(/* @__PURE__ */ t("feComposite", {
1023
+ in: a,
1024
+ in2: o,
1019
1025
  operator: "out",
1020
1026
  result: `shadow-${n}-band`
1021
1027
  }, "band"), /* @__PURE__ */ t("feFlood", {
@@ -1028,7 +1034,7 @@ function Fe({ index: n, shadow: r }) {
1028
1034
  result: `shadow-${n}`
1029
1035
  }, "fill")), /* @__PURE__ */ t(e, { children: i });
1030
1036
  }
1031
- function Ie({ index: n, shadow: r }) {
1037
+ function Re({ index: n, shadow: r }) {
1032
1038
  let i = [], a = "shape";
1033
1039
  return r.spread !== 0 && (i.push(/* @__PURE__ */ t("feMorphology", {
1034
1040
  in: "bin",
@@ -1054,7 +1060,7 @@ function Ie({ index: n, shadow: r }) {
1054
1060
  result: `shadow-${n}`
1055
1061
  }, "fill")), /* @__PURE__ */ t(e, { children: i });
1056
1062
  }
1057
- function Le({ stroke: n }) {
1063
+ function ze({ stroke: n }) {
1058
1064
  let r = [];
1059
1065
  return r.push(/* @__PURE__ */ t("feMorphology", {
1060
1066
  in: "bin",
@@ -1076,7 +1082,7 @@ function Le({ stroke: n }) {
1076
1082
  result: "stroke-out"
1077
1083
  }, "fill")), /* @__PURE__ */ t(e, { children: r });
1078
1084
  }
1079
- function Re({ blur: r, contrast: i, shadows: a, stroke: o, waviness: s = Pe.waviness, wavinessFreq: c = Pe.wavinessFreq }) {
1085
+ function Be({ blur: r, contrast: i, shadows: a, stroke: o, waviness: s = Pe.waviness, wavinessFreq: c = Pe.wavinessFreq }) {
1080
1086
  let l = Math.round((.5 - 5 / 12 * i) * 100) / 100, u = s > 0;
1081
1087
  return /* @__PURE__ */ n(e, { children: [
1082
1088
  /* @__PURE__ */ t("feGaussianBlur", {
@@ -1118,20 +1124,20 @@ function Re({ blur: r, contrast: i, shadows: a, stroke: o, waviness: s = Pe.wavi
1118
1124
  result: "shape"
1119
1125
  })
1120
1126
  ] }) : null,
1121
- o !== null || a.some((e) => e.inset || e.spread !== 0) ? /* @__PURE__ */ t("feColorMatrix", {
1127
+ Ie(a, o) ? /* @__PURE__ */ t("feColorMatrix", {
1122
1128
  in: "shape",
1123
1129
  type: "matrix",
1124
1130
  values: Me,
1125
1131
  result: "bin"
1126
1132
  }) : null,
1127
- a.map((e, n) => e.inset ? /* @__PURE__ */ t(Fe, {
1133
+ a.map((e, n) => e.inset ? /* @__PURE__ */ t(Le, {
1128
1134
  index: n,
1129
1135
  shadow: e
1130
- }, n) : /* @__PURE__ */ t(Ie, {
1136
+ }, n) : /* @__PURE__ */ t(Re, {
1131
1137
  index: n,
1132
1138
  shadow: e
1133
1139
  }, n)),
1134
- o ? /* @__PURE__ */ t(Le, { stroke: o }) : null,
1140
+ o ? /* @__PURE__ */ t(ze, { stroke: o }) : null,
1135
1141
  a.length > 0 || o ? /* @__PURE__ */ n("feMerge", { children: [
1136
1142
  a.map((e, t) => e.inset ? -1 : t).filter((e) => e >= 0).reverse().map((e) => /* @__PURE__ */ t("feMergeNode", { in: `shadow-${e}` }, e)),
1137
1143
  /* @__PURE__ */ t("feMergeNode", { in: "shape" }),
@@ -1142,16 +1148,16 @@ function Re({ blur: r, contrast: i, shadows: a, stroke: o, waviness: s = Pe.wavi
1142
1148
  }
1143
1149
  //#endregion
1144
1150
  //#region src/liquidGooeyWaviness.ts
1145
- var ze = .3;
1146
- function Be(e, t, n = ze) {
1151
+ var Ve = .3;
1152
+ function He(e, t, n = Ve) {
1147
1153
  let r = Math.max(0, Number.isFinite(e) ? e : 0);
1148
1154
  if (n === !1) return r;
1149
- let i = Math.max(0, Number.isFinite(n) ? n : ze), 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);
1150
1156
  return a > 0 ? Math.min(r, a * i) : r;
1151
1157
  }
1152
1158
  //#endregion
1153
1159
  //#region src/liquidGooeyGeometry.ts
1154
- function Ve(e, t) {
1160
+ function Ue(e, t) {
1155
1161
  let n = 0, r = 0, i = e;
1156
1162
  for (; i && i !== t && t.contains(i);) n += i.offsetLeft, r += i.offsetTop, i = i.offsetParent;
1157
1163
  return {
@@ -1159,7 +1165,7 @@ function Ve(e, t) {
1159
1165
  y: r
1160
1166
  };
1161
1167
  }
1162
- function He(e, t, n) {
1168
+ function We(e, t, n) {
1163
1169
  let r = getComputedStyle(e), i = (e) => {
1164
1170
  let r = e.split(" ")[0] ?? "";
1165
1171
  return r.endsWith("%") ? (parseFloat(r) || 0) / 100 * Math.min(t, n) : parseFloat(r) || 0;
@@ -1171,7 +1177,7 @@ function He(e, t, n) {
1171
1177
  i(r.borderBottomLeftRadius)
1172
1178
  ];
1173
1179
  }
1174
- function Ue(e) {
1180
+ function Ge(e) {
1175
1181
  return typeof e == "number" ? [
1176
1182
  e,
1177
1183
  e,
@@ -1179,13 +1185,13 @@ function Ue(e) {
1179
1185
  e
1180
1186
  ] : e;
1181
1187
  }
1182
- function We(e, t, n, r, i) {
1188
+ function Ke(e, t, n, r, i) {
1183
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));
1184
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`;
1185
1191
  }
1186
1192
  //#endregion
1187
1193
  //#region src/liquidGooeyMove.ts
1188
- var Ge = {
1194
+ var qe = {
1189
1195
  stiffness: 380,
1190
1196
  damping: 18,
1191
1197
  stretch: .18,
@@ -1215,29 +1221,29 @@ var Ge = {
1215
1221
  settleSpeed: 1,
1216
1222
  integrationRate: 60
1217
1223
  };
1218
- function Ke(e, t = 0, n = 1) {
1224
+ function Je(e, t = 0, n = 1) {
1219
1225
  return Math.min(n, Math.max(t, e));
1220
1226
  }
1221
- function qe(e, t) {
1227
+ function Ye(e, t) {
1222
1228
  return e !== void 0 && Number.isFinite(e) ? e : t;
1223
1229
  }
1224
- function Je(e) {
1230
+ function Xe(e) {
1225
1231
  return /^var\((--[\w-]+)\)$/.exec(e.trim())?.[1] ?? null;
1226
1232
  }
1227
- function Ye(e, t, n) {
1228
- let r = e?.ownerDocument.defaultView, i = Je(z[t]);
1233
+ function Ze(e, t, n) {
1234
+ let r = e?.ownerDocument.defaultView, i = Xe(z[t]);
1229
1235
  if (!r || !i) return n;
1230
1236
  let a = r.getComputedStyle(e).getPropertyValue(i), o = Number.parseFloat(a);
1231
1237
  return Number.isFinite(o) ? o : n;
1232
1238
  }
1233
- function Xe(e) {
1234
- let t = (t, n) => Ye(e, t, n);
1239
+ function Qe(e) {
1240
+ let t = (t, n) => Ze(e, t, n);
1235
1241
  return {
1236
- stiffness: Math.max(.001, t("moveStiffness", Ge.stiffness)),
1237
- damping: Math.max(0, t("moveDamping", Ge.damping)),
1238
- stretch: Ke(t("moveStretch", Ge.stretch)),
1239
- tail: Ke(t("moveTail", Ge.tail)),
1240
- force: Ke(t("moveForce", Ge.force)),
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)),
1241
1247
  tailSpringStiffness: Math.max(.001, t("moveTailSpringStiffness", K.tailSpringStiffness)),
1242
1248
  tailSpringDamping: Math.max(0, t("moveTailSpringDamping", K.tailSpringDamping)),
1243
1249
  stretchSpeed: Math.max(0, t("moveStretchSpeed", K.stretchSpeed)),
@@ -1249,10 +1255,10 @@ function Xe(e) {
1249
1255
  tailMinRadius: Math.max(0, t("moveTailMinRadius", K.tailMinRadius)),
1250
1256
  tailWobble: Math.max(0, t("moveTailWobble", K.tailWobble)),
1251
1257
  tailPhaseSpeed: Math.max(0, t("moveTailPhaseSpeed", K.tailPhaseSpeed)),
1252
- tailMidpointA: Ke(t("moveTailMidpointA", K.tailMidpointA)),
1253
- tailMidpointB: Ke(t("moveTailMidpointB", K.tailMidpointB)),
1254
- tailMidRadiusA: Ke(t("moveTailMidRadiusA", K.tailMidRadiusA)),
1255
- tailMidRadiusB: Ke(t("moveTailMidRadiusB", K.tailMidRadiusB)),
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)),
1256
1262
  tailWobblePhase: t("moveTailWobblePhase", K.tailWobblePhase),
1257
1263
  minPerpendicular: Math.max(0, t("moveMinPerpendicular", K.minPerpendicular)),
1258
1264
  lagBase: Math.max(0, t("moveLagBase", K.lagBase)),
@@ -1262,32 +1268,32 @@ function Xe(e) {
1262
1268
  integrationRate: Math.max(1, t("moveIntegrationRate", K.integrationRate))
1263
1269
  };
1264
1270
  }
1265
- function Ze(e, t) {
1271
+ function $e(e, t) {
1266
1272
  return {
1267
- vertical: Ke(qe(t?.vertical, Ye(e, "bendVertical", .6))),
1268
- horizontal: Ke(qe(t?.horizontal, Ye(e, "bendHorizontal", .35))),
1269
- velocityVertical: Math.max(0, Ye(e, "bendVelocityVertical", .05)),
1270
- velocityHorizontal: Math.max(0, Ye(e, "bendVelocityHorizontal", .09)),
1271
- smoothing: Math.max(0, Ye(e, "bendSmoothing", 9)),
1272
- activeThreshold: Math.max(0, Ye(e, "bendActiveThreshold", .5)),
1273
- verticalCap: Math.max(0, Ye(e, "bendVerticalCap", .5)),
1274
- horizontalCap: Math.max(0, Ye(e, "bendHorizontalCap", .9)),
1275
- radiusMin: Math.max(0, Ye(e, "bendRadiusMin", .2)),
1276
- radiusMax: Math.max(0, Ye(e, "bendRadiusMax", 3)),
1277
- leadingCapFactor: Math.max(0, Ye(e, "bendLeadingCapFactor", .8)),
1278
- trailingCapFactor: Math.max(0, Ye(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))
1279
1285
  };
1280
1286
  }
1281
- function Qe(e, t, n, r, i, a) {
1287
+ function et(e, t, n, r, i, a) {
1282
1288
  let o = t + (r * (n - e) - i * t) * a;
1283
1289
  return [e + o * a, o];
1284
1290
  }
1285
- function $e(e, t, n, r, i, a, o) {
1286
- let s = Math.max(0, qe(a, 0)), c = Math.max(1, Math.ceil(s * o)), l = s / c, u = e, d = t;
1287
- for (; c-- > 0;) [u, d] = Qe(u, d, n, r, i, l);
1291
+ function tt(e, t, n, r, i, a, o) {
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
+ for (; c-- > 0;) [u, d] = et(u, d, n, r, i, l);
1288
1294
  return [u, d];
1289
1295
  }
1290
- function et(e) {
1296
+ function nt(e) {
1291
1297
  return {
1292
1298
  cx: e.cx,
1293
1299
  cy: e.cy,
@@ -1302,35 +1308,35 @@ function et(e) {
1302
1308
  tailInitialized: !0
1303
1309
  };
1304
1310
  }
1305
- function tt(e, t) {
1311
+ function rt(e, t) {
1306
1312
  e.cx = t.cx, e.cy = t.cy, e.vcx = 0, e.vcy = 0, e.tailX = t.cx, e.tailY = t.cy, e.tailVx = 0, e.tailVy = 0, e.tailR = 0, e.tailPhase = 0, e.tailInitialized = !0;
1307
1313
  }
1308
- function nt(e) {
1314
+ function it(e) {
1309
1315
  return String(Math.round(e * 1e3) / 1e3);
1310
1316
  }
1311
1317
  function q(e) {
1312
1318
  return Math.round(e * 10) / 10;
1313
1319
  }
1314
- function rt(e, t, n, r, i) {
1315
- let a = Math.max(.01, qe(t.scale, 1));
1316
- [e.cx, e.vcx] = $e(e.cx, e.vcx, t.cx, i.stiffness, i.damping, r, i.integrationRate), [e.cy, e.vcy] = $e(e.cy, e.vcy, t.cy, i.stiffness, i.damping, r, i.integrationRate);
1320
+ function at(e, t, n, r, i) {
1321
+ let a = Math.max(.01, Ye(t.scale, 1));
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);
1317
1323
  let o = Math.hypot(e.vcx, e.vcy), s = 0, c = 1, l = 1;
1318
1324
  if (o > i.speedThreshold) {
1319
1325
  let t = Math.min(i.stretch, o * i.stretchSpeed);
1320
1326
  s = Math.round(Math.atan2(e.vcy, e.vcx) * 100) / 100, c = 1 + t, l = 1 / (1 + t * i.stretchSquash);
1321
1327
  }
1322
- e.tailInitialized ||= (e.tailX = e.cx, e.tailY = e.cy, !0), [e.tailX, e.tailVx] = $e(e.tailX, e.tailVx, e.cx, i.tailSpringStiffness, i.tailSpringDamping, r, i.integrationRate), [e.tailY, e.tailVy] = $e(e.tailY, e.tailVy, e.cy, i.tailSpringStiffness, i.tailSpringDamping, r, i.integrationRate);
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);
1323
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);
1324
1330
  y > b && y > 0 && (e.tailX = e.cx + _ / y * b, e.tailY = e.cy + v / y * b);
1325
- let x = Ke((o - i.tailOnsetSpeed) / i.tailOnsetRange), S = g * i.tail * x;
1331
+ let x = Je((o - i.tailOnsetSpeed) / i.tailOnsetRange), S = g * i.tail * x;
1326
1332
  e.tailR += (S - e.tailR) * Math.min(1, Math.max(0, r) * i.tailRamp);
1327
- 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;
1328
1334
  if (C) {
1329
- e.tailPhase += o * Math.max(0, qe(r, 0)) * i.tailPhaseSpeed;
1335
+ e.tailPhase += o * Math.max(0, Ye(r, 0)) * i.tailPhaseSpeed;
1330
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;
1331
- 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;
1332
1338
  }
1333
- let A = {
1339
+ let k = {
1334
1340
  cx: q(e.tailX),
1335
1341
  cy: q(e.tailY),
1336
1342
  radius: C ? q(e.tailR) : 0,
@@ -1339,7 +1345,7 @@ function rt(e, t, n, r, i) {
1339
1345
  midARadius: C ? q(O) : 0,
1340
1346
  midBCx: q(E),
1341
1347
  midBCy: q(D),
1342
- midBRadius: C ? q(k) : 0,
1348
+ midBRadius: C ? q(ee) : 0,
1343
1349
  visible: C,
1344
1350
  fingerprint: C ? [
1345
1351
  q(e.tailX),
@@ -1352,17 +1358,17 @@ function rt(e, t, n, r, i) {
1352
1358
  ].join(",") : "hidden"
1353
1359
  };
1354
1360
  return {
1355
- path: We(-n.w / 2, -n.h / 2, n.w, n.h, n.r),
1356
- transform: `translate(${nt(e.cx)} ${nt(e.cy)}) ` + (o > i.speedThreshold ? `rotate(${nt(s * 180 / Math.PI)}) scale(${nt(c)} ${nt(l)}) ` : "") + `scale(${nt(a)})`,
1357
- tail: A,
1361
+ path: Ke(-n.w / 2, -n.h / 2, n.w, n.h, n.r),
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: k,
1358
1364
  moving: Math.hypot(e.cx - t.cx, e.cy - t.cy) > i.settleDistance || o > i.settleSpeed || e.tailR >= i.tailMinRadius
1359
1365
  };
1360
1366
  }
1361
- function it(e, t, n, r, i, a) {
1367
+ function ot(e, t, n, r, i, a) {
1362
1368
  let o = Math.min(Math.max(0, n), e / 2, t / 2), s = Math.round(r * 2 * 10) / 10, c = Math.max(o * a.radiusMin, Math.min(o * a.radiusMax, i > 0 ? o - a.leadingCapFactor * i : o + a.trailingCapFactor * -i)), l = Math.max(o * a.radiusMin, Math.min(o * a.radiusMax, i > 0 ? o + a.trailingCapFactor * i : o - a.leadingCapFactor * -i)), u = .5523, d = (e) => Math.round(e * 10) / 10;
1363
1369
  return `M ${d(l)} 0 Q ${d(e / 2)} ${d(s)} ${d(e - c)} 0 C ${d(e - c + u * c)} 0 ${d(e)} ${d(o - u * o)} ${d(e)} ${d(o)} L ${d(e)} ${d(t - o)} C ${d(e)} ${d(t - o + u * o)} ${d(e - c + u * c)} ${d(t)} ${d(e - c)} ${d(t)} Q ${d(e / 2)} ${d(t + r * 2)} ${d(l)} ${d(t)} C ${d(l - u * l)} ${d(t)} 0 ${d(t - o + u * o)} 0 ${d(t - o)} L 0 ${d(o)} C 0 ${d(o - u * o)} ${d(l - u * l)} 0 ${d(l)} 0 Z`;
1364
1370
  }
1365
- function at(e) {
1371
+ function st(e) {
1366
1372
  return {
1367
1373
  cx: e.cx,
1368
1374
  cy: e.cy,
@@ -1375,20 +1381,20 @@ function at(e) {
1375
1381
  initialized: !1
1376
1382
  };
1377
1383
  }
1378
- function ot(e, t) {
1384
+ function ct(e, t) {
1379
1385
  e.cx = t.cx, e.cy = t.cy, e.previousCx = t.cx, e.previousCy = t.cy, e.vcx = 0, e.vcy = 0, e.bendY = 0, e.bendX = 0, e.initialized = !0;
1380
1386
  }
1381
- function st(e, t) {
1387
+ function lt(e, t) {
1382
1388
  return Math.min(e.w, e.h) * t.verticalCap * 2 * t.vertical;
1383
1389
  }
1384
- function ct(e, t, n, r, i) {
1385
- let a = Math.max(1 / 240, qe(r, 1 / 60));
1390
+ function ut(e, t, n, r, i) {
1391
+ let a = Math.max(1 / 240, Ye(r, 1 / 60));
1386
1392
  e.initialized ||= (e.previousCx = t.cx, e.previousCy = t.cy, !0);
1387
1393
  let o = (t.cx - e.previousCx) / a, s = (t.cy - e.previousCy) / a;
1388
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;
1389
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;
1390
1396
  e.bendY += (u - e.bendY) * Math.min(1, a * i.smoothing), e.bendX += (f - e.bendX) * Math.min(1, a * i.smoothing);
1391
- let p = Math.abs(e.bendY) > i.activeThreshold || Math.abs(e.bendX) > i.activeThreshold, m = Math.min(...n.r), h = p ? it(n.w, n.h, m, e.bendY, e.bendX, i) : We(-n.w / 2, -n.h / 2, n.w, n.h, n.r), g = p ? `translate(${nt(e.cx - n.w / 2)} ${nt(e.cy - n.h / 2)}) scale(${nt(t.scale)})` : `translate(${nt(e.cx)} ${nt(e.cy)}) scale(${nt(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;
1392
1398
  return {
1393
1399
  path: h,
1394
1400
  transform: g,
@@ -1400,7 +1406,7 @@ function ct(e, t, n, r, i) {
1400
1406
  }
1401
1407
  //#endregion
1402
1408
  //#region src/liquidGooeyEvolve.ts
1403
- var lt = {
1409
+ var dt = {
1404
1410
  massStiffness: 320,
1405
1411
  massDamping: 17,
1406
1412
  sizeStiffness: 170,
@@ -1415,41 +1421,41 @@ var lt = {
1415
1421
  anticipation: 90,
1416
1422
  travel: 32
1417
1423
  };
1418
- function ut(e) {
1424
+ function ft(e) {
1419
1425
  return /^var\((--[\w-]+)\)$/.exec(e.trim())?.[1] ?? null;
1420
1426
  }
1421
- function dt(e, t) {
1427
+ function pt(e, t) {
1422
1428
  return e !== void 0 && Number.isFinite(e) ? e : t;
1423
1429
  }
1424
- function ft(e, t = 0, n = 1) {
1430
+ function mt(e, t = 0, n = 1) {
1425
1431
  return Math.min(n, Math.max(t, e));
1426
1432
  }
1427
- function pt(e, t, n) {
1428
- let r = e?.ownerDocument.defaultView, i = ut(z[t]);
1433
+ function ht(e, t, n) {
1434
+ let r = e?.ownerDocument.defaultView, i = ft(z[t]);
1429
1435
  if (!r || !i) return n;
1430
1436
  let a = Number.parseFloat(r.getComputedStyle(e).getPropertyValue(i));
1431
1437
  return Number.isFinite(a) ? a : n;
1432
1438
  }
1433
- function mt(e, t, n) {
1434
- let r = e?.ownerDocument.defaultView, i = ut(z[t]);
1439
+ function gt(e, t, n) {
1440
+ let r = e?.ownerDocument.defaultView, i = ft(z[t]);
1435
1441
  return !r || !i ? n : r.getComputedStyle(e).getPropertyValue(i).trim() || n;
1436
1442
  }
1437
- function ht(e, t) {
1438
- let n = (t, n) => pt(e, t, n), r = {
1439
- massStiffness: Math.max(.001, n("evolveMassStiffness", lt.massStiffness)),
1440
- massDamping: Math.max(0, n("evolveMassDamping", lt.massDamping)),
1441
- sizeStiffness: Math.max(.001, n("evolveSizeStiffness", lt.sizeStiffness)),
1442
- sizeDamping: Math.max(0, n("evolveSizeDamping", lt.sizeDamping)),
1443
- radiusStiffness: Math.max(.001, n("evolveRadiusStiffness", lt.radiusStiffness)),
1444
- radiusDamping: Math.max(0, n("evolveRadiusDamping", lt.radiusDamping)),
1445
- contentBlur: Math.max(0, n("evolveContentBlur", lt.contentBlur)),
1446
- roundness: ft(n("evolveRoundness", lt.roundness)),
1447
- cornerDuration: Math.max(0, n("evolveCornerDuration", lt.cornerDuration)),
1448
- cornerDelay: Math.max(0, n("evolveCornerDelay", lt.cornerDelay)),
1449
- cornerEase: mt(e, "evolveCornerEase", lt.cornerEase),
1450
- anticipation: Math.max(0, n("evolveAnticipation", lt.anticipation)),
1451
- travel: Math.max(0, n("evolveTravel", lt.travel))
1452
- }, i = Math.max(.25, dt(t?.speed, n("morphSpeed", 1))), a = ft(dt(t?.bounce, n("morphBounce", .5))), o = (e) => Math.max(.12, 1 - 1.1 * ft(e)), s = o(a) / o(.5);
1443
+ function _t(e, t) {
1444
+ let n = (t, n) => ht(e, t, n), r = {
1445
+ massStiffness: Math.max(.001, n("evolveMassStiffness", dt.massStiffness)),
1446
+ massDamping: Math.max(0, n("evolveMassDamping", dt.massDamping)),
1447
+ sizeStiffness: Math.max(.001, n("evolveSizeStiffness", dt.sizeStiffness)),
1448
+ sizeDamping: Math.max(0, n("evolveSizeDamping", dt.sizeDamping)),
1449
+ radiusStiffness: Math.max(.001, n("evolveRadiusStiffness", dt.radiusStiffness)),
1450
+ radiusDamping: Math.max(0, n("evolveRadiusDamping", dt.radiusDamping)),
1451
+ contentBlur: Math.max(0, n("evolveContentBlur", dt.contentBlur)),
1452
+ roundness: mt(n("evolveRoundness", dt.roundness)),
1453
+ cornerDuration: Math.max(0, n("evolveCornerDuration", dt.cornerDuration)),
1454
+ cornerDelay: Math.max(0, n("evolveCornerDelay", dt.cornerDelay)),
1455
+ cornerEase: gt(e, "evolveCornerEase", dt.cornerEase),
1456
+ anticipation: Math.max(0, n("evolveAnticipation", dt.anticipation)),
1457
+ travel: Math.max(0, n("evolveTravel", dt.travel))
1458
+ }, i = Math.max(.25, pt(t?.speed, n("morphSpeed", 1))), a = mt(pt(t?.bounce, n("morphBounce", .5))), o = (e) => Math.max(.12, 1 - 1.1 * mt(e)), s = o(a) / o(.5);
1453
1459
  return {
1454
1460
  massStiffness: r.massStiffness * i * i,
1455
1461
  massDamping: r.massDamping * i * s,
@@ -1457,7 +1463,7 @@ function ht(e, t) {
1457
1463
  sizeDamping: r.sizeDamping * i * s,
1458
1464
  radiusStiffness: r.radiusStiffness * i * i,
1459
1465
  radiusDamping: r.radiusDamping * i,
1460
- contentBlur: Math.max(0, dt(t?.contentBlur, r.contentBlur)),
1466
+ contentBlur: Math.max(0, pt(t?.contentBlur, r.contentBlur)),
1461
1467
  roundness: r.roundness,
1462
1468
  cornerDuration: r.cornerDuration / i,
1463
1469
  cornerDelay: r.cornerDelay,
@@ -1467,14 +1473,14 @@ function ht(e, t) {
1467
1473
  ...t?.advanced ?? {}
1468
1474
  };
1469
1475
  }
1470
- function gt(e, t) {
1471
- return t?.shape === void 0 ? pt(e, "morphShape", 1) >= .5 : t.shape;
1476
+ function vt(e, t) {
1477
+ return t?.shape === void 0 ? ht(e, "morphShape", 1) >= .5 : t.shape;
1472
1478
  }
1473
- function _t(e, t) {
1474
- let n = ht(e, t), r = Math.max(0, pt(e, "contentBlurAreaMultiplier", 3));
1479
+ function yt(e, t) {
1480
+ let n = _t(e, t), r = Math.max(0, ht(e, "contentBlurAreaMultiplier", 3));
1475
1481
  return n.contentBlur * r;
1476
1482
  }
1477
- function vt(e) {
1483
+ function bt(e) {
1478
1484
  return {
1479
1485
  cx: e.cx,
1480
1486
  cy: e.cy,
@@ -1499,7 +1505,7 @@ function vt(e) {
1499
1505
  round01: 0
1500
1506
  };
1501
1507
  }
1502
- function yt(e, t) {
1508
+ function xt(e, t) {
1503
1509
  e.cx = t.cx, e.cy = t.cy, e.w = t.w, e.h = t.h, e.r = t.r, e.vcx = 0, e.vcy = 0, e.vw = 0, e.vh = 0, e.vr = 0, e.motionEnv = 0, e.tPrev = {
1504
1510
  cx: t.cx,
1505
1511
  cy: t.cy
@@ -1508,18 +1514,18 @@ function yt(e, t) {
1508
1514
  h: t.h
1509
1515
  }, e.morphActive = !1, e.round01 = 0;
1510
1516
  }
1511
- function bt(e, t, n, r, i, a) {
1517
+ function St(e, t, n, r, i, a) {
1512
1518
  let o = t + (r * (n - e) - i * t) * a;
1513
1519
  return [e + o * a, o];
1514
1520
  }
1515
- function xt(e, t, n, r, i, a) {
1516
- let o = Math.max(0, dt(a, 0)), s = Math.max(1, Math.ceil(o * 60)), c = o / s, l = e, u = t;
1517
- for (; s-- > 0;) [l, u] = bt(l, u, n, r, i, c);
1521
+ function Ct(e, t, n, r, i, a) {
1522
+ let o = Math.max(0, pt(a, 0)), s = Math.max(1, Math.ceil(o * 60)), c = o / s, l = e, u = t;
1523
+ for (; s-- > 0;) [l, u] = St(l, u, n, r, i, c);
1518
1524
  return [l, u];
1519
1525
  }
1520
- var St = /* @__PURE__ */ new Map();
1521
- function Ct(e) {
1522
- let t = St.get(e);
1526
+ var wt = /* @__PURE__ */ new Map();
1527
+ function Tt(e) {
1528
+ let t = wt.get(e);
1523
1529
  if (t) return t;
1524
1530
  let n = /cubic-bezier\(([^)]+)\)/.exec(e);
1525
1531
  if (n) {
@@ -1535,14 +1541,14 @@ function Ct(e) {
1535
1541
  let s = (n + o) / 2;
1536
1542
  return 3 * s * (1 - s) * (1 - s) * r + 3 * s * s * (1 - s) * a + s ** 3;
1537
1543
  };
1538
- } else t = e === "ease-in-out" ? Ct("cubic-bezier(0.42, 0, 0.58, 1)") : (e) => ft(e);
1539
- return St.set(e, t), t;
1544
+ } else t = e === "ease-in-out" ? Tt("cubic-bezier(0.42, 0, 0.58, 1)") : (e) => mt(e);
1545
+ return wt.set(e, t), t;
1540
1546
  }
1541
- function wt(e) {
1547
+ function Et(e) {
1542
1548
  return String(Math.round(e * 1e3) / 1e3);
1543
1549
  }
1544
- function Tt(e, t, n, r, i) {
1545
- let a = Math.max(0, dt(n, 0)), o = t.cx, s = t.cy;
1550
+ function Dt(e, t, n, r, i) {
1551
+ let a = Math.max(0, pt(n, 0)), o = t.cx, s = t.cy;
1546
1552
  e.tPrev ||= {
1547
1553
  cx: o,
1548
1554
  cy: s
@@ -1557,7 +1563,7 @@ function Tt(e, t, n, r, i) {
1557
1563
  let g = Math.max(0, i.anticipation) / 1e3, _ = g > 0 ? 1 - Math.exp(-a / g) : 1;
1558
1564
  e.lead01 += (+(f > .5) - e.lead01) * _;
1559
1565
  let v = Math.min(Math.max(0, i.travel) * e.lead01, f);
1560
- [e.cx, e.vcx] = xt(e.cx, e.vcx, o + m * v, i.massStiffness, i.massDamping, a), [e.cy, e.vcy] = xt(e.cy, e.vcy, s + h * v, i.massStiffness, i.massDamping, a), [e.w, e.vw] = xt(e.w, e.vw, t.w, i.sizeStiffness, i.sizeDamping, a), [e.h, e.vh] = xt(e.h, e.vh, t.h, i.sizeStiffness, i.sizeDamping, a), [e.r, e.vr] = xt(e.r, e.vr, t.r, i.radiusStiffness, i.radiusDamping, a);
1566
+ [e.cx, e.vcx] = Ct(e.cx, e.vcx, o + m * v, i.massStiffness, i.massDamping, a), [e.cy, e.vcy] = Ct(e.cy, e.vcy, s + h * v, i.massStiffness, i.massDamping, a), [e.w, e.vw] = Ct(e.w, e.vw, t.w, i.sizeStiffness, i.sizeDamping, a), [e.h, e.vh] = Ct(e.h, e.vh, t.h, i.sizeStiffness, i.sizeDamping, a), [e.r, e.vr] = Ct(e.r, e.vr, t.r, i.radiusStiffness, i.radiusDamping, a);
1561
1567
  let y = e.lastTargetSize;
1562
1568
  (y ? Math.abs(t.w - y.w) + Math.abs(t.h - y.h) : 0) > .5 ? (e.morphActive ||= (e.cornerT0 = r, e.cornerStarted = !0, !0), e.lastTargetMoveT = r) : e.morphActive && r - e.lastTargetMoveT > 150 && r - e.cornerT0 > Math.max(0, i.cornerDelay) + Math.max(1, i.cornerDuration) && (e.morphActive = !1), e.lastTargetSize = {
1563
1569
  w: t.w,
@@ -1565,8 +1571,8 @@ function Tt(e, t, n, r, i) {
1565
1571
  };
1566
1572
  let b = Math.max(0, i.cornerDelay) + Math.max(1, i.cornerDuration), x = 0;
1567
1573
  if (e.cornerStarted && i.roundness > 0 && r - e.cornerT0 < b) {
1568
- let t = ft((r - e.cornerT0 - Math.max(0, i.cornerDelay)) / Math.max(1, i.cornerDuration));
1569
- x = ft((1 - Ct(i.cornerEase)(t)) * i.roundness);
1574
+ let t = mt((r - e.cornerT0 - Math.max(0, i.cornerDelay)) / Math.max(1, i.cornerDuration));
1575
+ x = mt((1 - Tt(i.cornerEase)(t)) * i.roundness);
1570
1576
  }
1571
1577
  let S = a * 8;
1572
1578
  e.round01 += Math.max(-S, Math.min(S, x - e.round01));
@@ -1577,22 +1583,22 @@ function Tt(e, t, n, r, i) {
1577
1583
  }
1578
1584
  let w = Math.min(1, (Math.hypot(e.vcx, e.vcy) + Math.abs(e.vw) + Math.abs(e.vh)) / 420);
1579
1585
  e.motionEnv = Math.max(w, e.motionEnv - a * 1.9);
1580
- 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 = [
1581
1587
  C,
1582
1588
  C,
1583
1589
  C,
1584
1590
  C
1585
1591
  ];
1586
1592
  return {
1587
- path: We(-e.w / 2, -e.h / 2, e.w, e.h, k),
1588
- transform: `translate(${wt(e.cx)} ${wt(e.cy)}) scale(${wt(t.scale)})`,
1593
+ path: Ke(-e.w / 2, -e.h / 2, e.w, e.h, ee),
1594
+ transform: `translate(${Et(e.cx)} ${Et(e.cy)}) scale(${Et(t.scale)})`,
1589
1595
  contentBlur: T,
1590
1596
  moving: !O
1591
1597
  };
1592
1598
  }
1593
1599
  //#endregion
1594
1600
  //#region src/liquidGooeySpring.ts
1595
- var Et = {
1601
+ var Ot = {
1596
1602
  snappy: {
1597
1603
  stiffness: 480,
1598
1604
  damping: 34,
@@ -1608,16 +1614,16 @@ var Et = {
1608
1614
  damping: 17,
1609
1615
  mass: 1
1610
1616
  }
1611
- }, Dt = 1 / 240;
1612
- function Ot(e) {
1617
+ }, kt = 1 / 240;
1618
+ function At(e) {
1613
1619
  let t = 0, n = 0, r = 0, i = -1, a = 0, o = [0];
1614
1620
  for (; r < 10;) {
1615
1621
  let s = (-e.stiffness * (t - 1) - e.damping * n) / e.mass;
1616
- if (n += s * Dt, t += n * Dt, r += Dt, o.push(t), t > a && (a = t), Math.abs(t - 1) < .001 && Math.abs(n) < .02) {
1622
+ if (n += s * kt, t += n * kt, r += kt, o.push(t), t > a && (a = t), Math.abs(t - 1) < .001 && Math.abs(n) < .02) {
1617
1623
  if (i < 0 && (i = r), r - i >= .064) break;
1618
1624
  } else i = -1;
1619
1625
  }
1620
- let s = i > 0 ? i : r, c = Math.round(Math.min(120, Math.max(24, s * 90))), l = Math.min(o.length - 1, s / Dt), u = [];
1626
+ let s = i > 0 ? i : r, c = Math.round(Math.min(120, Math.max(24, s * 90))), l = Math.min(o.length - 1, s / kt), u = [];
1621
1627
  for (let e = 0; e <= c; e += 1) {
1622
1628
  let t = Math.min(o.length - 1, Math.round(e / c * l));
1623
1629
  u.push(Math.round((o[t] ?? 1) * 1e4) / 1e4);
@@ -1628,13 +1634,13 @@ function Ot(e) {
1628
1634
  overshoots: a > 1.001
1629
1635
  };
1630
1636
  }
1631
- var kt = null;
1632
- function At() {
1633
- return kt === null && (kt = typeof CSS < "u" && typeof CSS.supports == "function" && CSS.supports("transition-timing-function", "linear(0, 1)")), kt;
1637
+ var jt = null;
1638
+ function Mt() {
1639
+ return jt === null && (jt = typeof CSS < "u" && typeof CSS.supports == "function" && CSS.supports("transition-timing-function", "linear(0, 1)")), jt;
1634
1640
  }
1635
- var jt = /* @__PURE__ */ new Map(), Mt = /* @__PURE__ */ new Map();
1636
- function Nt(e) {
1637
- let t = Mt.get(e);
1641
+ var Nt = /* @__PURE__ */ new Map(), Pt = /* @__PURE__ */ new Map();
1642
+ function Ft(e) {
1643
+ let t = Pt.get(e);
1638
1644
  if (t) return t;
1639
1645
  let n = /^linear\(([^)]+)\)$/.exec(e.trim()), r = /^cubic-bezier\(([^)]+)\)$/.exec(e.trim()), i;
1640
1646
  if (n) {
@@ -1658,10 +1664,10 @@ function Nt(e) {
1658
1664
  let s = (i + o) / 2;
1659
1665
  return 3 * s * (1 - s) * (1 - s) * t + 3 * s * s * (1 - s) * a + s ** 3;
1660
1666
  };
1661
- } else i = e === "ease" ? Nt("cubic-bezier(0.25, 0.1, 0.25, 1)") : e === "ease-in" ? Nt("cubic-bezier(0.42, 0, 1, 1)") : e === "ease-out" ? Nt("cubic-bezier(0, 0, 0.58, 1)") : e === "ease-in-out" ? Nt("cubic-bezier(0.42, 0, 0.58, 1)") : (e) => Math.min(1, Math.max(0, e));
1662
- return Mt.set(e, i), i;
1667
+ } else i = e === "ease" ? Ft("cubic-bezier(0.25, 0.1, 0.25, 1)") : e === "ease-in" ? Ft("cubic-bezier(0.42, 0, 1, 1)") : e === "ease-out" ? Ft("cubic-bezier(0, 0, 0.58, 1)") : e === "ease-in-out" ? Ft("cubic-bezier(0.42, 0, 0.58, 1)") : (e) => Math.min(1, Math.max(0, e));
1668
+ return Pt.set(e, i), i;
1663
1669
  }
1664
- function Pt(e, t = !1) {
1670
+ function It(e, t = !1) {
1665
1671
  if (t) return {
1666
1672
  duration: 0,
1667
1673
  easing: "linear"
@@ -1671,58 +1677,58 @@ function Pt(e, t = !1) {
1671
1677
  duration: Math.max(0, n.duration),
1672
1678
  easing: n.ease ?? "cubic-bezier(0.22, 1, 0.36, 1)"
1673
1679
  };
1674
- let r = typeof n == "string" ? Et[n] : {
1680
+ let r = typeof n == "string" ? Ot[n] : {
1675
1681
  stiffness: 300,
1676
1682
  damping: 24,
1677
1683
  mass: 1,
1678
1684
  ...n
1679
- }, i = `${r.stiffness}/${r.damping}/${r.mass}/${At()}`, a = jt.get(i);
1685
+ }, i = `${r.stiffness}/${r.damping}/${r.mass}/${Mt()}`, a = Nt.get(i);
1680
1686
  if (!a) {
1681
- let e = Ot(r);
1687
+ let e = At(r);
1682
1688
  a = {
1683
1689
  duration: Math.round(e.duration * 1e3),
1684
- easing: At() ? `linear(${e.values.join(", ")})` : e.overshoots ? "cubic-bezier(0.34, 1.56, 0.64, 1)" : "cubic-bezier(0.22, 1, 0.36, 1)"
1685
- }, jt.set(i, a);
1690
+ easing: Mt() ? `linear(${e.values.join(", ")})` : e.overshoots ? "cubic-bezier(0.34, 1.56, 0.64, 1)" : "cubic-bezier(0.22, 1, 0.36, 1)"
1691
+ }, Nt.set(i, a);
1686
1692
  }
1687
1693
  return a;
1688
1694
  }
1689
1695
  //#endregion
1690
1696
  //#region src/liquidGooeyEngine.ts
1691
- function Ft(e, t) {
1697
+ function Lt(e, t) {
1692
1698
  return e !== void 0 && Number.isFinite(e) ? e : t;
1693
1699
  }
1694
- function It(e) {
1700
+ function Rt(e) {
1695
1701
  let t = {
1696
1702
  observe: e.observe ?? !1,
1697
- x: Ft(e.x, 0),
1698
- y: Ft(e.y, 0),
1699
- scale: Math.max(.01, Ft(e.scale, 1))
1703
+ x: Lt(e.x, 0),
1704
+ y: Lt(e.y, 0),
1705
+ scale: Math.max(.01, Lt(e.scale, 1))
1700
1706
  };
1701
- return e.effect !== void 0 && (t.effect = e.effect), e.morph !== void 0 && (t.morph = e.morph), e.bend !== void 0 && (t.bend = e.bend), e.transition !== void 0 && (t.transition = e.transition), e.delay !== void 0 && (t.delay = Math.max(0, Ft(e.delay, 0))), e.radius !== void 0 && (t.radius = e.radius), t;
1707
+ return e.effect !== void 0 && (t.effect = e.effect), e.morph !== void 0 && (t.morph = e.morph), e.bend !== void 0 && (t.bend = e.bend), e.transition !== void 0 && (t.transition = e.transition), e.delay !== void 0 && (t.delay = Math.max(0, Lt(e.delay, 0))), e.radius !== void 0 && (t.radius = e.radius), t;
1702
1708
  }
1703
- function Lt(e) {
1709
+ function zt(e) {
1704
1710
  return {
1705
1711
  x: e.x,
1706
1712
  y: e.y,
1707
1713
  scale: e.scale
1708
1714
  };
1709
1715
  }
1710
- function Rt(e, t) {
1716
+ function Bt(e, t) {
1711
1717
  return e.x === t.x && e.y === t.y && e.scale === t.scale;
1712
1718
  }
1713
- function zt(e, t) {
1714
- return e.effect === t.effect && e.observe === t.observe && JSON.stringify(e.morph) === JSON.stringify(t.morph) && JSON.stringify(e.bend) === JSON.stringify(t.bend) && JSON.stringify(e.transition) === JSON.stringify(t.transition) && e.delay === t.delay && Bt(e.radius) === Bt(t.radius);
1719
+ function Vt(e, t) {
1720
+ return e.effect === t.effect && e.observe === t.observe && JSON.stringify(e.morph) === JSON.stringify(t.morph) && JSON.stringify(e.bend) === JSON.stringify(t.bend) && JSON.stringify(e.transition) === JSON.stringify(t.transition) && e.delay === t.delay && Ht(e.radius) === Ht(t.radius);
1715
1721
  }
1716
- function Bt(e) {
1722
+ function Ht(e) {
1717
1723
  return e === void 0 ? "" : JSON.stringify(e);
1718
1724
  }
1719
- function Vt(e, t) {
1725
+ function Ut(e, t) {
1720
1726
  return !!(e && Math.abs(e.x - t.x) < .01 && Math.abs(e.y - t.y) < .01 && Math.abs(e.w - t.w) < .01 && Math.abs(e.h - t.h) < .01 && e.r.every((e, n) => Math.abs(e - (t.r[n] ?? 0)) < .01));
1721
1727
  }
1722
- function Ht(e) {
1728
+ function Wt(e) {
1723
1729
  return String(Math.round(e * 1e3) / 1e3);
1724
1730
  }
1725
- var Ut = class {
1731
+ var Gt = class {
1726
1732
  getGroup;
1727
1733
  getFilterArea;
1728
1734
  onModeChange;
@@ -1752,11 +1758,11 @@ var Ut = class {
1752
1758
  }
1753
1759
  register(e) {
1754
1760
  this.revive(), this.unregister(e.id);
1755
- let t = It(e.config), n = {
1761
+ let t = Rt(e.config), n = {
1756
1762
  ...e,
1757
1763
  config: t,
1758
- target: Lt(t),
1759
- current: Lt(t),
1764
+ target: zt(t),
1765
+ current: zt(t),
1760
1766
  motion: null,
1761
1767
  lastBox: null,
1762
1768
  lastPaint: null,
@@ -1778,7 +1784,7 @@ var Ut = class {
1778
1784
  update(e, t) {
1779
1785
  let n = this.items.get(e);
1780
1786
  if (!n) return;
1781
- let r = It(t), i = Lt(r), a = !Rt(n.target, i), o = !zt(n.config, r);
1787
+ let r = Rt(t), i = zt(r), a = !Bt(n.target, i), o = !Vt(n.config, r);
1782
1788
  if (n.config = r, this.updateFeaturePadding(), !a) {
1783
1789
  o && (n.lastPaint = null, this.isDynamic(n) || this.resetDynamicEntry(n), r.effect === "bend" && this.writeBendVars(n, 0, 0), this.isDynamic(n) && !this.reducedMotion && (this.ensureClaim() ? this.setMode("animated") : (this.snapEntry(n), this.resetDynamicEntry(n), this.setMode("static"))), this.touch(), this.wake());
1784
1790
  return;
@@ -1786,13 +1792,13 @@ var Ut = class {
1786
1792
  let s = this.now();
1787
1793
  if (this.advanceEntry(n, s), n.target = i, this.reducedMotion) this.snapEntry(n), this.resetMoveEntry(n), this.resetDynamicEntry(n), this.setMode("reduced");
1788
1794
  else {
1789
- let e = Pt(r.transition), t = e.duration > 0;
1795
+ let e = It(r.transition), t = e.duration > 0;
1790
1796
  !(t || this.follow || this.isDynamic(n)) || !this.ensureClaim() ? (this.snapEntry(n), this.resetMoveEntry(n), this.resetDynamicEntry(n), this.setMode("static")) : !t || r.observe ? (n.current = { ...i }, n.motion = null, n.host.style.willChange = "", n.lastPaint = null, this.applyHost(n), this.setMode("animated")) : (n.motion = {
1791
1797
  from: { ...n.current },
1792
1798
  to: { ...i },
1793
1799
  start: s + (r.delay ?? 0),
1794
1800
  duration: e.duration,
1795
- ease: Nt(e.easing)
1801
+ ease: Ft(e.easing)
1796
1802
  }, n.host.style.willChange = r.observe ? "" : "transform", this.setMode("animated"));
1797
1803
  }
1798
1804
  this.touch(s), this.needsPaint = !0, this.wake();
@@ -1849,7 +1855,7 @@ var Ut = class {
1849
1855
  ensureClaim() {
1850
1856
  if (this.claimed) return !0;
1851
1857
  let e = this.getFilterArea();
1852
- return Number.isFinite(e) && (this.filterArea = Math.max(0, e)), Ae(this.filterArea) ? (this.claimed = !0, this.moveOptions = Xe(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);
1853
1859
  }
1854
1860
  warnBudgetFallback() {
1855
1861
  if (this.budgetWarningEmitted) return;
@@ -1867,7 +1873,7 @@ var Ut = class {
1867
1873
  return e.config.effect === "bend";
1868
1874
  }
1869
1875
  isShape(e) {
1870
- return !this.isBend(e) && e.config.morph !== void 0 && gt(this.getGroup(), e.config.morph);
1876
+ return !this.isBend(e) && e.config.morph !== void 0 && vt(this.getGroup(), e.config.morph);
1871
1877
  }
1872
1878
  isDynamic(e) {
1873
1879
  return this.isBend(e) || this.isShape(e);
@@ -1890,7 +1896,7 @@ var Ut = class {
1890
1896
  let e = 0;
1891
1897
  for (let t of this.items.values()) {
1892
1898
  let n = this.featureBox(t);
1893
- this.isBend(t) ? e = Math.max(e, st(n, Ze(this.getGroup(), t.config.bend))) : this.isShape(t) && (e = Math.max(e, _t(this.getGroup(), t.config.morph)));
1899
+ this.isBend(t) ? e = Math.max(e, lt(n, $e(this.getGroup(), t.config.bend))) : this.isShape(t) && (e = Math.max(e, yt(this.getGroup(), t.config.morph)));
1894
1900
  }
1895
1901
  Math.abs(e - this.featurePadding) < .5 || (this.featurePadding = e, this.onFeaturePaddingChange?.(e));
1896
1902
  }
@@ -1903,7 +1909,7 @@ var Ut = class {
1903
1909
  this.clearContentBlur(e);
1904
1910
  return;
1905
1911
  }
1906
- let r = e.baseContentFilter.trim(), i = `${r && r !== "none" ? `${r} ` : ""}blur(${Ht(n)}px)`;
1912
+ let r = e.baseContentFilter.trim(), i = `${r && r !== "none" ? `${r} ` : ""}blur(${Wt(n)}px)`;
1907
1913
  e.lastContentFilter !== i && (e.host.style.filter = i, e.lastContentFilter = i, e.contentBlurred = !0);
1908
1914
  }
1909
1915
  clearBendVars(e) {
@@ -1946,7 +1952,7 @@ var Ut = class {
1946
1952
  e.ownTransform && e.host.style.transform === e.ownTransform && e.host.style.removeProperty("transform"), e.ownTransform = "";
1947
1953
  return;
1948
1954
  }
1949
- let t = `translate(${Ht(e.current.x)}px, ${Ht(e.current.y)}px) scale(${Ht(e.current.scale)})`;
1955
+ let t = `translate(${Wt(e.current.x)}px, ${Wt(e.current.y)}px) scale(${Wt(e.current.scale)})`;
1950
1956
  e.ownTransform !== t && (e.ownTransform = t, e.host.style.transform = t);
1951
1957
  }
1952
1958
  createTailElements(e) {
@@ -1982,15 +1988,15 @@ var Ut = class {
1982
1988
  };
1983
1989
  }
1984
1990
  readBox(e, t) {
1985
- let n = e.host.firstElementChild ?? e.host, r = Ve(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;
1986
1992
  if (e.config.observe) {
1987
1993
  let o = n.getBoundingClientRect(), s = t.getBoundingClientRect();
1988
1994
  o.width > 0 || o.height > 0 ? (r = {
1989
1995
  x: o.left - s.left,
1990
1996
  y: o.top - s.top
1991
- }, i = o.width || n.offsetWidth, a = o.height || n.offsetHeight) : (r = Ve(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);
1992
1998
  }
1993
- let o = e.config.radius === void 0 ? He(n, i, a) : Ue(e.config.radius);
1999
+ let o = e.config.radius === void 0 ? We(n, i, a) : Ge(e.config.radius);
1994
2000
  return {
1995
2001
  x: r.x,
1996
2002
  y: r.y,
@@ -2012,8 +2018,8 @@ var Ut = class {
2012
2018
  }
2013
2019
  paintEvolveEntry(e, t, n, r) {
2014
2020
  let i = this.dynamicTarget(e, t);
2015
- e.evolve ||= vt(i), (this.reducedMotion || !this.claimed && !r) && yt(e.evolve, i);
2016
- let a = ht(this.getGroup(), e.config.morph), o = Tt(e.evolve, i, this.reducedMotion || !this.claimed && !r ? 0 : n, this.now(), a), s = `${o.path}|${o.transform}`, c = !1;
2021
+ e.evolve ||= bt(i), (this.reducedMotion || !this.claimed && !r) && xt(e.evolve, i);
2022
+ let a = _t(this.getGroup(), e.config.morph), o = Dt(e.evolve, i, this.reducedMotion || !this.claimed && !r ? 0 : n, this.now(), a), s = `${o.path}|${o.transform}`, c = !1;
2017
2023
  return e.lastPaint !== s && (e.lastPaint = s, e.blob.setAttribute("d", o.path), e.blob.setAttribute("transform", o.transform), c = !0), this.hideTail(e), this.writeContentBlur(e, o.contentBlur), {
2018
2024
  changed: c,
2019
2025
  moving: !this.reducedMotion && this.claimed && o.moving
@@ -2021,8 +2027,8 @@ var Ut = class {
2021
2027
  }
2022
2028
  paintBendEntry(e, t, n, r) {
2023
2029
  let i = this.dynamicTarget(e, t);
2024
- e.bendState ||= at(i), (this.reducedMotion || !this.claimed && !r) && ot(e.bendState, i);
2025
- let a = Ze(this.getGroup(), e.config.bend), o = ct(e.bendState, i, t, this.reducedMotion || !this.claimed && !r ? 0 : n, a), s = !1;
2030
+ e.bendState ||= st(i), (this.reducedMotion || !this.claimed && !r) && ct(e.bendState, i);
2031
+ let a = $e(this.getGroup(), e.config.bend), o = ut(e.bendState, i, t, this.reducedMotion || !this.claimed && !r ? 0 : n, a), s = !1;
2026
2032
  return e.lastPaint !== o.fingerprint && (e.lastPaint = o.fingerprint, e.blob.setAttribute("d", o.path), e.blob.setAttribute("transform", o.transform), s = !0), this.hideTail(e), this.clearContentBlur(e), this.writeBendVars(e, o.bendX, o.bendY), {
2027
2033
  changed: s,
2028
2034
  moving: !this.reducedMotion && this.claimed && o.moving
@@ -2030,15 +2036,15 @@ var Ut = class {
2030
2036
  }
2031
2037
  paintFollowEntry(e, t, n, r, i) {
2032
2038
  let a = this.moveTarget(e, t);
2033
- !i && r && !this.reducedMotion && !this.claimed && (this.ensureClaim() ? this.setMode("animated") : (this.resetMoveEntry(e), e.move = et(a))), e.move ||= et(a), this.reducedMotion && tt(e.move, a);
2034
- let o = this.moveOptions ??= Xe(this.getGroup()), s = rt(e.move, a, t, this.reducedMotion ? 0 : n, o), c = `${s.path}|${s.transform}`, l = !1;
2039
+ !i && r && !this.reducedMotion && !this.claimed && (this.ensureClaim() ? this.setMode("animated") : (this.resetMoveEntry(e), e.move = nt(a))), e.move ||= nt(a), this.reducedMotion && rt(e.move, a);
2040
+ let o = this.moveOptions ??= Qe(this.getGroup()), s = at(e.move, a, t, this.reducedMotion ? 0 : n, o), c = `${s.path}|${s.transform}`, l = !1;
2035
2041
  return e.lastPaint !== c && (e.lastPaint = c, e.blob.setAttribute("d", s.path), e.blob.setAttribute("transform", s.transform), l = !0), this.paintTail(e, s.tail) && (l = !0), {
2036
2042
  changed: l,
2037
2043
  moving: !this.reducedMotion && s.moving && this.claimed
2038
2044
  };
2039
2045
  }
2040
2046
  paintEntry(e, t) {
2041
- 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(${Ht(n)} ${Ht(r)}) scale(${Ht(e.current.scale)})`, a = We(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}`;
2042
2048
  return e.lastPaint === o ? !1 : (e.lastPaint = o, e.blob.setAttribute("d", a), e.blob.setAttribute("transform", i), !0);
2043
2049
  }
2044
2050
  loop = (e) => {
@@ -2057,7 +2063,7 @@ var Ut = class {
2057
2063
  for (let t of this.items.values()) {
2058
2064
  let n = e.get(t.id);
2059
2065
  if (!n) continue;
2060
- let r = t.lastBox === null, s = !Vt(t.lastBox, n);
2066
+ let r = t.lastBox === null, s = !Ut(t.lastBox, n);
2061
2067
  r && a.add(t.id), s && o.add(t.id), s && (t.lastBox = n, t.lastPaint = null, i = !0);
2062
2068
  }
2063
2069
  this.updateFeaturePadding();
@@ -2125,18 +2131,18 @@ var Ut = class {
2125
2131
  };
2126
2132
  //#endregion
2127
2133
  //#region src/liquidGooeyShadow.ts
2128
- function Wt(e, t) {
2134
+ function Kt(e, t) {
2129
2135
  let n = [], r = 0, i = "";
2130
2136
  for (let a of e) a === "(" ? r += 1 : a === ")" && --r, r === 0 && (t === "," ? a === "," : /\s/.test(a)) ? (i.trim() && n.push(i.trim()), i = "") : i += a;
2131
2137
  return i.trim() && n.push(i.trim()), n;
2132
2138
  }
2133
- var Gt = /^[+-]?(\d+\.?\d*|\.\d+)(px)?$/;
2134
- function Kt(e) {
2139
+ var qt = /^[+-]?(\d+\.?\d*|\.\d+)(px)?$/;
2140
+ function Jt(e) {
2135
2141
  if (!e || e.trim() === "" || e.trim() === "none") return [];
2136
2142
  let t = [];
2137
- for (let n of Wt(e, ",")) {
2138
- let e = Wt(n, " "), r = e.includes("inset"), i = [], a = [];
2139
- for (let t of e) t !== "inset" && (i.length < 4 && Gt.test(t) ? i.push(parseFloat(t)) : a.push(t));
2143
+ for (let n of Kt(e, ",")) {
2144
+ let e = Kt(n, " "), r = e.includes("inset"), i = [], a = [];
2145
+ for (let t of e) t !== "inset" && (i.length < 4 && qt.test(t) ? i.push(parseFloat(t)) : a.push(t));
2140
2146
  let [o = 0, s = 0, c = 0, l = 0] = i;
2141
2147
  t.push({
2142
2148
  x: o,
@@ -2149,18 +2155,31 @@ function Kt(e) {
2149
2155
  }
2150
2156
  return t;
2151
2157
  }
2152
- function qt(e) {
2158
+ function Yt(e) {
2153
2159
  if (!e || e.trim() === "" || e.trim() === "none") return null;
2154
- let t = Wt(e, " "), n = 0, r = [];
2155
- for (let e of t) e !== "solid" && (n === 0 && Gt.test(e) ? n = parseFloat(e) : r.push(e));
2160
+ let t = Kt(e, " "), n = 0, r = [];
2161
+ for (let e of t) e !== "solid" && (n === 0 && qt.test(e) ? n = parseFloat(e) : r.push(e));
2156
2162
  return {
2157
2163
  width: n,
2158
2164
  color: r.join(" ") || "var(--game-ui-stroke, transparent)"
2159
2165
  };
2160
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
+ }
2161
2180
  //#endregion
2162
2181
  //#region src/liquidGooeyImageMelt.tsx
2163
- var Jt = 24, Yt = 500, Xt = 16, Zt = 6, Qt = {
2182
+ var en = 24, tn = 500, nn = 16, rn = 6, an = {
2164
2183
  blur: 7,
2165
2184
  contrast: 40,
2166
2185
  reach: .8,
@@ -2190,13 +2209,13 @@ var Jt = 24, Yt = 500, Xt = 16, Zt = 6, Qt = {
2190
2209
  sink: .8,
2191
2210
  seamBlur: 12.8
2192
2211
  };
2193
- function $t(e, t = 0, n = 1) {
2212
+ function on(e, t = 0, n = 1) {
2194
2213
  return Math.min(n, Math.max(t, e));
2195
2214
  }
2196
- function en(e, t) {
2215
+ function sn(e, t) {
2197
2216
  return e !== void 0 && Number.isFinite(e) ? e : t;
2198
2217
  }
2199
- function tn(e, t, n) {
2218
+ function cn(e, t, n) {
2200
2219
  let r = e?.ownerDocument.defaultView;
2201
2220
  if (!r) return n;
2202
2221
  let i = z[t], a = /^var\((--[\w-]+)\)$/.exec(i)?.[1];
@@ -2204,34 +2223,34 @@ function tn(e, t, n) {
2204
2223
  let o = Number.parseFloat(r.getComputedStyle(e).getPropertyValue(a));
2205
2224
  return Number.isFinite(o) ? o : n;
2206
2225
  }
2207
- function nn(e, t = {}) {
2208
- let n = (n, r) => en(t[n], tn(e, r, Qt[n]));
2226
+ function ln(e, t = {}) {
2227
+ let n = (n, r) => sn(t[n], cn(e, r, an[n]));
2209
2228
  return {
2210
2229
  blur: Math.max(0, n("blur", "meltBlur")),
2211
2230
  contrast: Math.max(1, n("contrast", "meltContrast")),
2212
2231
  reach: Math.max(0, n("reach", "meltReach")),
2213
2232
  fade: Math.max(0, n("fade", "meltFade")),
2214
2233
  warp: Math.max(0, n("warp", "meltWarp")),
2215
- mix: $t(n("mix", "meltMix")),
2234
+ mix: on(n("mix", "meltMix")),
2216
2235
  mixBlur: Math.max(0, n("mixBlur", "meltMixBlur")),
2217
2236
  gravity: Math.max(0, n("gravity", "meltGravity")),
2218
2237
  waviness: Math.max(0, n("waviness", "meltWaviness"))
2219
2238
  };
2220
2239
  }
2221
- function rn(e, t) {
2240
+ function un(e, t) {
2222
2241
  let n = typeof t == "object" && t ? t : {}, r = (t, r, i) => {
2223
2242
  let a = n[t];
2224
- return en(typeof a == "number" ? a : void 0, tn(e, r, i));
2225
- }, i = $t(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));
2226
2245
  return {
2227
2246
  blur: Math.max(0, r("blur", "dissolveBlur", J.blur)),
2228
2247
  warp: Math.max(0, r("warp", "dissolveWarp", J.warp)),
2229
2248
  pull: Math.max(0, r("pull", "dissolvePull", J.pull)),
2230
2249
  range: Math.max(1, r("range", "dissolveRange", J.range)),
2231
2250
  zone: Math.max(1, r("zone", "dissolveZone", J.zone)),
2232
- mix: $t(r("mix", "dissolveMix", J.mix)),
2251
+ mix: on(r("mix", "dissolveMix", J.mix)),
2233
2252
  gravity: Math.max(0, r("gravity", "dissolveGravity", J.gravity)),
2234
- taper: $t(r("taper", "dissolveTaper", J.taper)),
2253
+ taper: on(r("taper", "dissolveTaper", J.taper)),
2235
2254
  warpFreq: Math.max(.2, r("warpFreq", "dissolveWarpFreq", J.warpFreq)),
2236
2255
  flowSpeed: Math.max(0, r("flowSpeed", "dissolveFlowSpeed", J.flowSpeed)),
2237
2256
  warpStyle: n.warpStyle ?? J.warpStyle,
@@ -2244,13 +2263,13 @@ function rn(e, t) {
2244
2263
  seamBlur: Math.max(0, r("seamBlur", "dissolveSeamBlur", J.seamBlur))
2245
2264
  };
2246
2265
  }
2247
- function an(e) {
2266
+ function dn(e) {
2248
2267
  return e ? e instanceof HTMLImageElement ? e : e.querySelector("img") : null;
2249
2268
  }
2250
- function on(e) {
2269
+ function fn(e) {
2251
2270
  return e && (e.currentSrc || e.src) || null;
2252
2271
  }
2253
- function sn(e) {
2272
+ function pn(e) {
2254
2273
  return {
2255
2274
  maskImage: e.style.getPropertyValue("mask-image"),
2256
2275
  maskPriority: e.style.getPropertyPriority("mask-image"),
@@ -2258,11 +2277,11 @@ function sn(e) {
2258
2277
  webkitMaskPriority: e.style.getPropertyPriority("-webkit-mask-image")
2259
2278
  };
2260
2279
  }
2261
- function cn(e) {
2280
+ function mn(e) {
2262
2281
  let t = e.image, n = e.previousMask;
2263
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"));
2264
2283
  }
2265
- function ln() {
2284
+ function hn() {
2266
2285
  let e = /* @__PURE__ */ new Set(), t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), r = 0, i = () => n.forEach((e) => e());
2267
2286
  return {
2268
2287
  registerMelt(t) {
@@ -2280,15 +2299,15 @@ function ln() {
2280
2299
  let n = {
2281
2300
  ...e,
2282
2301
  id: `dissolve-${++r}`,
2283
- previousMask: e.image ? sn(e.image) : null
2302
+ previousMask: e.image ? pn(e.image) : null
2284
2303
  };
2285
2304
  return t.add(n), i(), {
2286
2305
  update(e) {
2287
- let t = an(n.el);
2288
- t !== n.image && (cn(n), n.image = t, n.previousMask = t ? sn(t) : null), n.opts = rn(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();
2289
2308
  },
2290
2309
  unregister() {
2291
- cn(n), t.delete(n), i();
2310
+ mn(n), t.delete(n), i();
2292
2311
  }
2293
2312
  };
2294
2313
  },
@@ -2299,20 +2318,20 @@ function ln() {
2299
2318
  dissolveEntries: () => [...t]
2300
2319
  };
2301
2320
  }
2302
- function un(e, t, n) {
2303
- let r = an(t);
2321
+ function gn(e, t, n) {
2322
+ let r = dn(t);
2304
2323
  return r || console.warn("[swimmer-ui] `dissolve` needs an <img> inside the item; text and other DOM content stay unchanged."), e.registerDissolve({
2305
2324
  el: t,
2306
2325
  image: r,
2307
- opts: rn(t, n)
2326
+ opts: un(t, n)
2308
2327
  });
2309
2328
  }
2310
- function dn({ 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 }) {
2311
2330
  let l = p(null), u = JSON.stringify(n), f = p(!1), m = (e) => {
2312
2331
  l.current = e, typeof a == "function" ? a(e) : a && (a.current = e);
2313
2332
  };
2314
2333
  return d(() => {
2315
- let t = l.current, i = t?.firstElementChild, a = an(i), o = e ?? on(a);
2334
+ let t = l.current, i = t?.firstElementChild, a = dn(i), o = e ?? fn(a);
2316
2335
  if (!t || !i || !a || !o) {
2317
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."));
2318
2337
  return;
@@ -2321,7 +2340,7 @@ function dn({ src: e, options: n = {}, registry: r, children: i, forwardedRef: a
2321
2340
  el: t,
2322
2341
  target: a,
2323
2342
  src: o,
2324
- opts: nn(t, n)
2343
+ opts: ln(t, n)
2325
2344
  });
2326
2345
  }, [
2327
2346
  u,
@@ -2335,7 +2354,7 @@ function dn({ src: e, options: n = {}, registry: r, children: i, forwardedRef: a
2335
2354
  children: i
2336
2355
  });
2337
2356
  }
2338
- var fn = {
2357
+ var vn = {
2339
2358
  width: 0,
2340
2359
  height: 0,
2341
2360
  melt: null,
@@ -2345,28 +2364,28 @@ function Y(e, t = 2) {
2345
2364
  let n = 10 ** t;
2346
2365
  return Math.round(e * n) / n;
2347
2366
  }
2348
- function pn(e) {
2349
- let t = $t(e);
2367
+ function yn(e) {
2368
+ let t = on(e);
2350
2369
  return t * t * (3 - 2 * t);
2351
2370
  }
2352
- function mn(e, t) {
2371
+ function bn(e, t) {
2353
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);
2354
2373
  return Math.hypot(n, r);
2355
2374
  }
2356
- function hn(e, t) {
2375
+ function xn(e, t) {
2357
2376
  return {
2358
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,
2359
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
2360
2379
  };
2361
2380
  }
2362
- function gn(e, t, n) {
2381
+ function Sn(e, t, n) {
2363
2382
  let r = e.ownerDocument.defaultView?.getComputedStyle(e).borderTopLeftRadius ?? "";
2364
2383
  return Math.max(0, Math.min(Number.parseFloat(r) || 0, t / 2, n / 2));
2365
2384
  }
2366
- function _n(e) {
2385
+ function Cn(e) {
2367
2386
  return e.getBoundingClientRect();
2368
2387
  }
2369
- function vn(e, t) {
2388
+ function wn(e, t) {
2370
2389
  let n = e.getBoundingClientRect();
2371
2390
  return {
2372
2391
  x: n.left - t.left,
@@ -2375,21 +2394,21 @@ function vn(e, t) {
2375
2394
  h: n.height
2376
2395
  };
2377
2396
  }
2378
- function yn(e, t) {
2379
- let n = vn(e, t);
2397
+ function Tn(e, t) {
2398
+ let n = wn(e, t);
2380
2399
  return {
2381
2400
  ...n,
2382
- r: gn(e, n.w, n.h)
2401
+ r: Sn(e, n.w, n.h)
2383
2402
  };
2384
2403
  }
2385
- function bn(e) {
2404
+ function En(e) {
2386
2405
  return `${Y(e.x)}:${Y(e.y)}:${Y(e.w)}:${Y(e.h)}`;
2387
2406
  }
2388
- function xn(e, t, n) {
2389
- let r = Math.max(1, e.offsetWidth || e.getBoundingClientRect().width), i = Math.max(1, e.offsetHeight || e.getBoundingClientRect().height), a = t ? Math.max(Jt, t.blur * 3, t.fade * 2, t.warp + t.waviness, t.mixBlur * 2, t.gravity * .5) : 0, o = n ? Math.max(Jt, n.blur * 3, n.warp + n.zone, n.gravity * .5, n.seamBlur * 3) : 0, s = Math.ceil(Math.max(a, o, Jt));
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));
2390
2409
  return (r + s * 2) * (i + s * 2);
2391
2410
  }
2392
- function Sn(e) {
2411
+ function On(e) {
2393
2412
  let t = e[0]?.opts;
2394
2413
  return t ? e.slice(1).reduce((e, t) => ({
2395
2414
  ...e,
@@ -2400,25 +2419,25 @@ function Sn(e) {
2400
2419
  seamBlur: Math.max(e.seamBlur, t.opts.seamBlur)
2401
2420
  }), { ...t }) : null;
2402
2421
  }
2403
- function Cn(e, t, n, r, i, a, o, s, c) {
2422
+ function kn(e, t, n, r, i, a, o, s, c) {
2404
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);
2405
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)})`;
2406
2425
  }
2407
- function wn(e, t, n, r, i, a) {
2426
+ function An(e, t, n, r, i, a) {
2408
2427
  let o = t - e.x, s = n - e.y;
2409
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;
2410
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;
2411
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)`;
2412
2431
  }
2413
- function Tn(e) {
2432
+ function jn(e) {
2414
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";
2415
2434
  let t = Y(1 + 4 * e, 3);
2416
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)}`;
2417
2436
  }
2418
- function En(e) {
2437
+ function Mn(e) {
2419
2438
  return e.replace(/[^a-zA-Z0-9_-]/g, "");
2420
2439
  }
2421
- var Dn = class {
2440
+ var Nn = class {
2422
2441
  registry;
2423
2442
  getGroup;
2424
2443
  onState;
@@ -2450,7 +2469,7 @@ var Dn = class {
2450
2469
  if (!this.disposed) {
2451
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;
2452
2471
  for (let e of this.registry.entries()) this.setMeltPainted(e, !1);
2453
- for (let e of this.registry.dissolveEntries()) cn(e);
2472
+ for (let e of this.registry.dissolveEntries()) mn(e);
2454
2473
  this.releaseClaim(), this.observed.clear();
2455
2474
  }
2456
2475
  }
@@ -2464,7 +2483,7 @@ var Dn = class {
2464
2483
  let t = /* @__PURE__ */ new Set(), n = (e) => {
2465
2484
  e && (t.add(e), this.observed.has(e) || this.resizeObserver?.observe(e));
2466
2485
  };
2467
- for (let e of this.registry.entries()) n(e.el), n(e.target), n(an(e.target));
2486
+ for (let e of this.registry.entries()) n(e.el), n(e.target), n(dn(e.target));
2468
2487
  for (let e of this.registry.dissolveEntries()) n(e.el), n(e.image);
2469
2488
  for (let e of this.observed) t.has(e) || this.resizeObserver?.unobserve(e);
2470
2489
  this.observed.clear(), t.forEach((e) => this.observed.add(e)), !this.mutationObserver && typeof MutationObserver < "u" && (this.mutationObserver = new MutationObserver((e) => {
@@ -2504,7 +2523,7 @@ var Dn = class {
2504
2523
  }
2505
2524
  ensureClaim(e, t, n) {
2506
2525
  if (this.claimed) return !0;
2507
- if (!Ae(xn(e, t, n))) {
2526
+ if (!Ae(Dn(e, t, n))) {
2508
2527
  if (!this.budgetWarningEmitted) {
2509
2528
  this.budgetWarningEmitted = !0;
2510
2529
  let e = Oe(), t = e.activeGroups >= e.maxAnimatedGroups ? "the active-group limit is reached" : "the filter-area limit is exceeded";
@@ -2518,7 +2537,7 @@ var Dn = class {
2518
2537
  if (this.raf = 0, this.disposed) return;
2519
2538
  let t = this.registry.entries(), n = this.registry.dissolveEntries();
2520
2539
  if (t.length === 0 && n.length === 0) {
2521
- this.awake = !1, this.lastNow = 0, this.lastActivity = 0, this.meltPairKey = "", this.meltProximity = 0, this.lastStateKey && (this.lastStateKey = "", this.onState(fn)), 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();
2522
2541
  return;
2523
2542
  }
2524
2543
  let r = this.getGroup();
@@ -2528,23 +2547,23 @@ var Dn = class {
2528
2547
  }
2529
2548
  let i = this.lastNow ? Math.min(.25, Math.max(1 / 240, (e - this.lastNow) / 1e3)) : 1 / 60;
2530
2549
  this.lastNow = e;
2531
- let a = _n(r), o = /* @__PURE__ */ new Map();
2532
- for (let e of r.querySelectorAll(".game-ui-liquid-item")) e.closest(".game-ui-liquid-group") === r && o.set(e, vn(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));
2533
2552
  let s = t.slice(0, 2), c = s.map((e) => {
2534
- let t = o.get(e.el) ?? vn(e.el, a), n = on(an(e.target));
2553
+ let t = o.get(e.el) ?? wn(e.el, a), n = fn(dn(e.target));
2535
2554
  return n && (e.src = n), {
2536
2555
  ...t,
2537
- r: gn(e.target, t.w, t.h)
2556
+ r: Sn(e.target, t.w, t.h)
2538
2557
  };
2539
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}` : "";
2540
2559
  d !== this.meltPairKey && (this.meltPairKey = d, this.meltProximity = 0);
2541
- let f = l && c[0] && c[1] ? pn(1 - mn(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;
2542
2561
  this.meltProximity += (f - this.meltProximity) * (1 - Math.exp(-14 * i)), Math.abs(this.meltProximity - f) < .004 && (this.meltProximity = f);
2543
- let p = this.computeDissolves(n, o, a, i), m = l, h = p.visuals.length > 0, g = m || h, _ = Sn(n);
2562
+ let p = this.computeDissolves(n, o, a, i), m = l, h = p.visuals.length > 0, g = m || h, _ = On(n);
2544
2563
  if (g && !this.ensureClaim(r, u, _)) {
2545
2564
  for (let e of t) this.setMeltPainted(e, !1);
2546
- for (let e of n) cn(e);
2547
- this.onState(fn), 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;
2548
2567
  return;
2549
2568
  }
2550
2569
  if (m) for (let [e, n] of t.entries()) this.setMeltPainted(n, e < 2);
@@ -2561,14 +2580,14 @@ var Dn = class {
2561
2580
  srcA: s[0].src,
2562
2581
  srcB: s[1].src,
2563
2582
  opts: s[0].opts,
2564
- prox: $t(this.meltProximity)
2583
+ prox: on(this.meltProximity)
2565
2584
  } : null,
2566
2585
  dissolves: p.visuals
2567
2586
  }, y = this.renderStateKey(v), b = y !== this.lastStateKey;
2568
- b && (this.lastStateKey = y, this.onState(v), this.lastActivity = e), b || p.pending || e - this.lastActivity < Yt ? (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);
2569
2588
  };
2570
2589
  renderStateKey(e) {
2571
- let t = e.melt ? `${e.melt.srcA}|${e.melt.srcB}|${bn(e.melt.a)}|${bn(e.melt.b)}|${Y(e.melt.prox, 3)}` : "", n = e.dissolves.map((e) => `${e.id}|${e.src}|${e.neighborSrc ?? ""}|${bn(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(";");
2572
2591
  return `${e.width}x${e.height}|${t}|${n}`;
2573
2592
  }
2574
2593
  computeDissolves(e, t, n, r) {
@@ -2576,7 +2595,7 @@ var Dn = class {
2576
2595
  for (let s of e) {
2577
2596
  let e = t.get(s.el), c = s.image;
2578
2597
  if (!e || !c) {
2579
- s.image && cn(s);
2598
+ s.image && mn(s);
2580
2599
  continue;
2581
2600
  }
2582
2601
  let l = this.motions.get(s.id) ?? {
@@ -2592,7 +2611,7 @@ var Dn = class {
2592
2611
  let u = Infinity, d = null, f = null;
2593
2612
  for (let [t, n] of o) {
2594
2613
  if (t === s.el) continue;
2595
- let r = mn(e, n);
2614
+ let r = bn(e, n);
2596
2615
  r < u && (u = r, d = n, f = t);
2597
2616
  }
2598
2617
  let p = 0, m = 0;
@@ -2602,11 +2621,11 @@ var Dn = class {
2602
2621
  }
2603
2622
  let h = 0;
2604
2623
  if (d && u < s.opts.range && s.opts.active) {
2605
- let e = pn((1 - u / s.opts.range) / .65), t = pn((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));
2606
2625
  h = e ** 1.25 * s.opts.strength * (1 - t);
2607
2626
  }
2608
- if (h >= l.fade) l.fade += (h - l.fade) * Math.min(1, r * Xt), l.release = null;
2609
- else if (h > .02) l.fade += (h - l.fade) * Math.min(1, r * Zt), 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;
2610
2629
  else if (l.fade > .001 || l.release) {
2611
2630
  l.release ||= {
2612
2631
  from: l.fade,
@@ -2616,26 +2635,26 @@ var Dn = class {
2616
2635
  l.fade = l.release.from * (1 - t) ** 2;
2617
2636
  } else l.fade = 0;
2618
2637
  if (l.fade <= .001) {
2619
- l.fade = 0, cn(s);
2638
+ l.fade = 0, mn(s);
2620
2639
  continue;
2621
2640
  }
2622
2641
  let g = d ?? l.contact;
2623
2642
  if (!g) continue;
2624
- let _ = hn(e, g);
2643
+ let _ = xn(e, g);
2625
2644
  l.contact = { ...g };
2626
- let v = pn(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;
2627
- l.opacity = l.release ? (1 - y) ** 2 : l.opacity + (1 - l.opacity) * Math.min(1, r * Xt);
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);
2628
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;
2629
2648
  l.previous = {
2630
2649
  x: e.x,
2631
2650
  y: e.y
2632
2651
  }, l.phase += Math.min(r, 1 / 24) * s.opts.flowSpeed * .12 * Math.min(1, S / 40);
2633
- 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 = yn(c, n), D = d && u < Math.max(10, s.opts.blur * 2.5) ? pn(1 - u / Math.max(10, s.opts.blur * 2.5)) : l.fade, O = wn(E, _.x, _.y, b, l.fade, Math.max(D, m * .75));
2634
- O ? (c.style.setProperty("mask-image", O), c.style.setProperty("-webkit-mask-image", O)) : cn(s);
2635
- 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 = {
2636
2655
  id: s.id,
2637
- src: on(c) ?? c.src,
2638
- neighborSrc: f ? on(an(f)) : null,
2656
+ src: fn(c) ?? c.src,
2657
+ neighborSrc: f ? fn(dn(f)) : null,
2639
2658
  image: E,
2640
2659
  cx: _.x,
2641
2660
  cy: _.y,
@@ -2643,7 +2662,7 @@ var Dn = class {
2643
2662
  opacity: l.opacity,
2644
2663
  phase: l.phase,
2645
2664
  structure: v,
2646
- angle: k,
2665
+ angle: ee,
2647
2666
  gravityX: C,
2648
2667
  gravityY: w,
2649
2668
  elongation: T,
@@ -2652,7 +2671,7 @@ var Dn = class {
2652
2671
  options: s.opts,
2653
2672
  mask: O
2654
2673
  };
2655
- 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;
2656
2675
  }
2657
2676
  return {
2658
2677
  visuals: i,
@@ -2660,8 +2679,8 @@ var Dn = class {
2660
2679
  };
2661
2680
  }
2662
2681
  };
2663
- function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox: d }) {
2664
- let f = `lgm-${En(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 = {
2665
2684
  x: r.x + r.w / 2,
2666
2685
  y: r.y + r.h / 2
2667
2686
  }, C = {
@@ -2670,7 +2689,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2670
2689
  }, w = Math.hypot(r.w, r.h) / 2 * h * d, T = Math.hypot(i.w, i.h) / 2 * h * d, E = {
2671
2690
  x: (S.x + C.x) / 2,
2672
2691
  y: (S.y + C.y) / 2
2673
- }, D = C.x - S.x, O = C.y - S.y, k = Math.max(.001, Math.hypot(D, O)), A = -O / k, j = D / k, ee = Math.max(0, (r.w + i.w) / 2 - Math.abs(D)), M = Math.max(0, (r.h + i.h) / 2 - Math.abs(O)), N = .5 * (ee * Math.abs(A) + M * Math.abs(j)) * d, P = Math.round(Math.atan2(j, A) * 180 / Math.PI), te = Math.round(v * d * 100) / 100, ne = Math.round((2 + (p - 2) * d) * 10) / 10, re = Math.round(_ * d * 10) / 10, ie = Math.round(ne * 2.5 * 10) / 10, ae = Math.round((.4 + (2 + p * .8) * d) * 10) / 10, oe = `translate(${r.x}, ${r.y})`, se = `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})`;
2674
2693
  return /* @__PURE__ */ n("svg", {
2675
2694
  "aria-hidden": "true",
2676
2695
  focusable: "false",
@@ -2720,7 +2739,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2720
2739
  children: [
2721
2740
  /* @__PURE__ */ t("feGaussianBlur", {
2722
2741
  in: "SourceGraphic",
2723
- stdDeviation: ne,
2742
+ stdDeviation: ie,
2724
2743
  result: "b"
2725
2744
  }),
2726
2745
  /* @__PURE__ */ t("feColorMatrix", {
@@ -2731,7 +2750,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2731
2750
  }),
2732
2751
  /* @__PURE__ */ t("feGaussianBlur", {
2733
2752
  in: "SourceGraphic",
2734
- stdDeviation: ie,
2753
+ stdDeviation: N,
2735
2754
  result: "bc"
2736
2755
  }),
2737
2756
  /* @__PURE__ */ t("feComposite", {
@@ -2750,7 +2769,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2750
2769
  /* @__PURE__ */ t("feDisplacementMap", {
2751
2770
  in: "mix",
2752
2771
  in2: "wn",
2753
- scale: re,
2772
+ scale: ae,
2754
2773
  xChannelSelector: "R",
2755
2774
  yChannelSelector: "G",
2756
2775
  result: "warped"
@@ -2787,7 +2806,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2787
2806
  height: "220%",
2788
2807
  children: /* @__PURE__ */ t("feGaussianBlur", { stdDeviation: g })
2789
2808
  }),
2790
- te > .01 ? /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ n("filter", {
2809
+ re > .01 ? /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ n("filter", {
2791
2810
  id: `${f}-marble`,
2792
2811
  x: "-25%",
2793
2812
  y: "-25%",
@@ -2810,7 +2829,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2810
2829
  /* @__PURE__ */ t("feDisplacementMap", {
2811
2830
  in: "c",
2812
2831
  in2: "n1",
2813
- scale: te * 90,
2832
+ scale: re * 90,
2814
2833
  xChannelSelector: "R",
2815
2834
  yChannelSelector: "G",
2816
2835
  result: "d1"
@@ -2825,7 +2844,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2825
2844
  /* @__PURE__ */ t("feDisplacementMap", {
2826
2845
  in: "d1",
2827
2846
  in2: "n2",
2828
- scale: te * 50,
2847
+ scale: re * 50,
2829
2848
  xChannelSelector: "R",
2830
2849
  yChannelSelector: "G",
2831
2850
  result: "d2"
@@ -2849,7 +2868,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2849
2868
  }),
2850
2869
  /* @__PURE__ */ t("feGaussianBlur", {
2851
2870
  in: "SourceGraphic",
2852
- stdDeviation: ne,
2871
+ stdDeviation: ie,
2853
2872
  result: "mb"
2854
2873
  }),
2855
2874
  /* @__PURE__ */ t("feColorMatrix", {
@@ -2868,7 +2887,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2868
2887
  /* @__PURE__ */ t("feDisplacementMap", {
2869
2888
  in: "mg",
2870
2889
  in2: "mwn",
2871
- scale: re,
2890
+ scale: ae,
2872
2891
  xChannelSelector: "R",
2873
2892
  yChannelSelector: "G",
2874
2893
  result: "mshape"
@@ -2891,9 +2910,9 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2891
2910
  children: /* @__PURE__ */ t("ellipse", {
2892
2911
  cx: E.x,
2893
2912
  cy: E.y,
2894
- rx: (w + T) / 2 + N,
2913
+ rx: (w + T) / 2 + j,
2895
2914
  ry: (w + T) / 2 * b,
2896
- transform: `rotate(${P}, ${E.x}, ${E.y})`,
2915
+ transform: `rotate(${M}, ${E.x}, ${E.y})`,
2897
2916
  fill: "#fff"
2898
2917
  })
2899
2918
  })
@@ -2904,7 +2923,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2904
2923
  y: "-40%",
2905
2924
  width: "180%",
2906
2925
  height: "180%",
2907
- children: /* @__PURE__ */ t("feGaussianBlur", { stdDeviation: ae })
2926
+ children: /* @__PURE__ */ t("feGaussianBlur", { stdDeviation: oe })
2908
2927
  }),
2909
2928
  /* @__PURE__ */ n("mask", {
2910
2929
  id: `${f}-ma`,
@@ -2916,7 +2935,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2916
2935
  children: [/* @__PURE__ */ t("g", {
2917
2936
  filter: `url(#${f}-edge)`,
2918
2937
  children: /* @__PURE__ */ t("g", {
2919
- transform: oe,
2938
+ transform: se,
2920
2939
  children: /* @__PURE__ */ t("rect", {
2921
2940
  width: r.w,
2922
2941
  height: r.h,
@@ -2929,9 +2948,9 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2929
2948
  children: /* @__PURE__ */ t("ellipse", {
2930
2949
  cx: E.x,
2931
2950
  cy: E.y,
2932
- rx: T + N,
2951
+ rx: T + j,
2933
2952
  ry: T,
2934
- transform: `rotate(${P}, ${E.x}, ${E.y})`,
2953
+ transform: `rotate(${M}, ${E.x}, ${E.y})`,
2935
2954
  fill: "#000"
2936
2955
  })
2937
2956
  })]
@@ -2946,7 +2965,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2946
2965
  children: [/* @__PURE__ */ t("g", {
2947
2966
  filter: `url(#${f}-edge)`,
2948
2967
  children: /* @__PURE__ */ t("g", {
2949
- transform: se,
2968
+ transform: ce,
2950
2969
  children: /* @__PURE__ */ t("rect", {
2951
2970
  width: i.w,
2952
2971
  height: i.h,
@@ -2959,9 +2978,9 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2959
2978
  children: /* @__PURE__ */ t("ellipse", {
2960
2979
  cx: E.x,
2961
2980
  cy: E.y,
2962
- rx: w + N,
2981
+ rx: w + j,
2963
2982
  ry: w,
2964
- transform: `rotate(${P}, ${E.x}, ${E.y})`,
2983
+ transform: `rotate(${M}, ${E.x}, ${E.y})`,
2965
2984
  fill: "#000"
2966
2985
  })
2967
2986
  })]
@@ -2970,7 +2989,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2970
2989
  /* @__PURE__ */ n("g", {
2971
2990
  filter: `url(#${f}-goo)`,
2972
2991
  children: [/* @__PURE__ */ t("g", {
2973
- transform: oe,
2992
+ transform: se,
2974
2993
  children: /* @__PURE__ */ t("rect", {
2975
2994
  width: r.w,
2976
2995
  height: r.h,
@@ -2978,7 +2997,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2978
2997
  fill: `url(#${f}-pa)`
2979
2998
  })
2980
2999
  }), /* @__PURE__ */ t("g", {
2981
- transform: se,
3000
+ transform: ce,
2982
3001
  children: /* @__PURE__ */ t("rect", {
2983
3002
  width: i.w,
2984
3003
  height: i.h,
@@ -2987,12 +3006,12 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2987
3006
  })
2988
3007
  })]
2989
3008
  }),
2990
- te > .01 ? /* @__PURE__ */ t("g", {
3009
+ re > .01 ? /* @__PURE__ */ t("g", {
2991
3010
  mask: `url(#${f}-marblemask)`,
2992
3011
  children: /* @__PURE__ */ n("g", {
2993
3012
  filter: `url(#${f}-marble)`,
2994
3013
  children: [/* @__PURE__ */ t("g", {
2995
- transform: oe,
3014
+ transform: se,
2996
3015
  children: /* @__PURE__ */ t("rect", {
2997
3016
  width: r.w,
2998
3017
  height: r.h,
@@ -3000,7 +3019,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
3000
3019
  fill: `url(#${f}-pa)`
3001
3020
  })
3002
3021
  }), /* @__PURE__ */ t("g", {
3003
- transform: se,
3022
+ transform: ce,
3004
3023
  children: /* @__PURE__ */ t("rect", {
3005
3024
  width: i.w,
3006
3025
  height: i.h,
@@ -3013,7 +3032,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
3013
3032
  /* @__PURE__ */ t("g", {
3014
3033
  mask: `url(#${f}-ma)`,
3015
3034
  children: /* @__PURE__ */ t("g", {
3016
- transform: oe,
3035
+ transform: se,
3017
3036
  children: /* @__PURE__ */ t("rect", {
3018
3037
  width: r.w,
3019
3038
  height: r.h,
@@ -3025,7 +3044,7 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
3025
3044
  /* @__PURE__ */ t("g", {
3026
3045
  mask: `url(#${f}-mb)`,
3027
3046
  children: /* @__PURE__ */ t("g", {
3028
- transform: se,
3047
+ transform: ce,
3029
3048
  children: /* @__PURE__ */ t("rect", {
3030
3049
  width: i.w,
3031
3050
  height: i.h,
@@ -3037,10 +3056,10 @@ function On({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
3037
3056
  ]
3038
3057
  });
3039
3058
  }
3040
- function kn({ visuals: r }) {
3041
- let i = `lgd-${En(u())}`;
3059
+ function Fn({ visuals: r }) {
3060
+ let i = `lgd-${Mn(u())}`;
3042
3061
  return /* @__PURE__ */ t(e, { children: r.map((e) => {
3043
- let r = `${i}-${En(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 = Cn(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);
3044
3063
  return /* @__PURE__ */ n("g", {
3045
3064
  "data-liquid-gooey-dissolve": "",
3046
3065
  children: [
@@ -3172,7 +3191,7 @@ function kn({ visuals: r }) {
3172
3191
  /* @__PURE__ */ t("feColorMatrix", {
3173
3192
  in: "erosion-noise",
3174
3193
  type: "matrix",
3175
- values: Tn(c),
3194
+ values: jn(c),
3176
3195
  result: "erosion"
3177
3196
  }),
3178
3197
  /* @__PURE__ */ t("feComposite", {
@@ -3244,10 +3263,10 @@ function kn({ visuals: r }) {
3244
3263
  }, e.id);
3245
3264
  }) });
3246
3265
  }
3247
- function An({ registry: e, getGroup: r }) {
3248
- let [i, a] = m(fn);
3266
+ function In({ registry: e, getGroup: r }) {
3267
+ let [i, a] = m(vn);
3249
3268
  return d(() => {
3250
- let t = new Dn({
3269
+ let t = new Nn({
3251
3270
  registry: e,
3252
3271
  getGroup: r,
3253
3272
  onState: a
@@ -3269,42 +3288,42 @@ function An({ registry: e, getGroup: r }) {
3269
3288
  overflow: "visible",
3270
3289
  pointerEvents: "none"
3271
3290
  },
3272
- children: [i.melt ? /* @__PURE__ */ t(On, {
3291
+ children: [i.melt ? /* @__PURE__ */ t(Pn, {
3273
3292
  ...i.melt,
3274
3293
  width: i.width,
3275
3294
  height: i.height
3276
- }) : null, i.dissolves.length > 0 ? /* @__PURE__ */ t(kn, { visuals: i.dissolves }) : null]
3295
+ }) : null, i.dissolves.length > 0 ? /* @__PURE__ */ t(Fn, { visuals: i.dissolves }) : null]
3277
3296
  });
3278
3297
  }
3279
3298
  //#endregion
3280
3299
  //#region src/LiquidGroup.tsx
3281
- var jn = i(null);
3282
- function Mn() {
3283
- let e = c(jn);
3300
+ var Ln = i(null);
3301
+ function Rn() {
3302
+ let e = c(Ln);
3284
3303
  if (!e) throw Error("<LiquidGroup.Item> must be rendered inside <LiquidGroup>.");
3285
3304
  return e;
3286
3305
  }
3287
- function Nn(e) {
3306
+ function zn(e) {
3288
3307
  return e.replace(/[^a-zA-Z0-9_-]/g, "");
3289
3308
  }
3290
- function Pn(e, t) {
3309
+ function Bn(e, t) {
3291
3310
  return Number.isFinite(e) ? e : t;
3292
3311
  }
3293
- function Fn(e, t) {
3312
+ function Vn(e, t) {
3294
3313
  if (!e) return e;
3295
3314
  let n = /^var\((--[\w-]+)\)$/.exec(e.trim());
3296
3315
  if (!n || !t) return e;
3297
3316
  let r = t.ownerDocument.defaultView;
3298
3317
  return r && r.getComputedStyle(t).getPropertyValue(n[1] ?? "").trim() || e;
3299
3318
  }
3300
- function In(e, t, n) {
3301
- let r = Fn(e, t), i = Number.parseFloat(r ?? "");
3319
+ function Hn(e, t, n) {
3320
+ let r = Vn(e, t), i = Number.parseFloat(r ?? "");
3302
3321
  return Number.isFinite(i) ? i : n;
3303
3322
  }
3304
- function Ln(...e) {
3323
+ function Un(...e) {
3305
3324
  return e.filter(Boolean).join(" ") || void 0;
3306
3325
  }
3307
- function Rn(e) {
3326
+ function Wn(e) {
3308
3327
  let t = { ...e };
3309
3328
  for (let e of [
3310
3329
  "children",
@@ -3323,56 +3342,53 @@ function Rn(e) {
3323
3342
  ]) delete t[e];
3324
3343
  return t;
3325
3344
  }
3326
- function zn() {
3345
+ function Gn() {
3327
3346
  return typeof window > "u" || typeof window.matchMedia != "function" ? null : window.matchMedia("(prefers-reduced-motion: reduce)");
3328
3347
  }
3329
- function Bn() {
3330
- let [e, t] = m(() => zn()?.matches ?? !1);
3348
+ function Kn() {
3349
+ let [e, t] = m(() => Gn()?.matches ?? !1);
3331
3350
  return l(() => {
3332
- let e = zn();
3351
+ let e = Gn();
3333
3352
  if (!e) return;
3334
3353
  let n = (e) => t(e.matches);
3335
3354
  return t(e.matches), e.addEventListener("change", n), () => e.removeEventListener("change", n);
3336
3355
  }, []), e;
3337
3356
  }
3338
- function Vn(e) {
3339
- 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);
3340
- }
3341
- var Hn = 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) {
3342
3358
  let w = p(null), [T, E] = m(null), [D, O] = m({
3343
3359
  w: 0,
3344
3360
  h: 0
3345
- }), [k, A] = m({
3361
+ }), [ee, k] = m({
3346
3362
  waviness: Pe.waviness,
3347
3363
  wavinessFreq: Pe.wavinessFreq
3348
- }), [j, ee] = m(0), M = p(0), N = Bn(), P = v === "reduced" || N, [te, ne] = m(P ? "reduced" : "static"), re = Math.max(0, Pn(e, 6)), ie = Math.max(1, Pn(r, 18)), ae = Math.max(0, Pn(a, 24)), oe = Math.max(0, Pn(h ?? k.waviness, Pe.waviness)), se = _ !== !1 && Math.max(0, Pn(_ ?? .3, ze)), ce = Be(oe, D.w > 0 && D.h > 0 ? Math.min(D.w, D.h) : 0, se), le = Math.max(0, Pn(g ?? k.wavinessFreq, Pe.wavinessFreq)), F = Fn(o, w.current), ue = Fn(c, w.current), de = f(() => Kt(F), [F]), fe = f(() => qt(ue), [ue]), pe = Math.ceil(re * 3 + ae + Vn(de) + (fe ? fe.width : 0) + ce + (ce > 0 ? Math.ceil(Ne * 3) : 0)), me = p(pe);
3349
- me.current = pe;
3350
- let I = Math.ceil(pe + j), he = p(I);
3351
- he.current = I;
3352
- let ge = `liquid-gooey-${Nn(u())}`, L = s((e) => {
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);
3365
+ ge.current = F;
3366
+ let I = Math.ceil(F + te), L = p(I);
3367
+ L.current = I;
3368
+ let R = `liquid-gooey-${zn(u())}`, _e = s((e) => {
3353
3369
  w.current = e, typeof C == "function" ? C(e) : C && (C.current = e);
3354
- }, [C]), R = s((e) => E(e), []);
3370
+ }, [C]), B = s((e) => E(e), []);
3355
3371
  d(() => {
3356
3372
  let e = w.current;
3357
3373
  if (!e) return;
3358
3374
  let t = {
3359
- waviness: Math.max(0, h === void 0 ? In(z.waviness, e, Pe.waviness) : Pn(h, Pe.waviness)),
3360
- wavinessFreq: Math.max(0, g === void 0 ? In(z.wavinessFreq, e, Pe.wavinessFreq) : Pn(g, Pe.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))
3361
3377
  };
3362
- 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);
3363
3379
  }, [h, g]);
3364
- let B = f(() => new Ut({
3380
+ let V = f(() => new Gt({
3365
3381
  getGroup: () => w.current,
3366
3382
  getFilterArea: () => {
3367
3383
  let e = w.current;
3368
- return e ? (e.offsetWidth + (me.current + M.current) * 2) * (e.offsetHeight + (me.current + M.current) * 2) : 0;
3384
+ return e ? (e.offsetWidth + (ge.current + A.current) * 2) * (e.offsetHeight + (ge.current + A.current) * 2) : 0;
3369
3385
  },
3370
- onModeChange: ne,
3386
+ onModeChange: ie,
3371
3387
  onFeaturePaddingChange: (e) => {
3372
- M.current = e, ee((t) => Math.abs(t - e) < .5 ? t : e);
3388
+ A.current = e, ne((t) => Math.abs(t - e) < .5 ? t : e);
3373
3389
  },
3374
3390
  follow: v === "follow"
3375
- }), [v]), V = f(() => ln(), []);
3391
+ }), [v]), ve = f(() => hn(), []);
3376
3392
  d(() => {
3377
3393
  let e = w.current;
3378
3394
  if (!e) return;
@@ -3381,24 +3397,24 @@ var Hn = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-su
3381
3397
  w: e.offsetWidth,
3382
3398
  h: e.offsetHeight
3383
3399
  };
3384
- O((e) => e.w === t.w && e.h === t.h ? e : t), B.setFilterArea((t.w + he.current * 2) * (t.h + he.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));
3385
3401
  };
3386
3402
  if (t(), typeof ResizeObserver > "u") return;
3387
3403
  let n = new ResizeObserver(t);
3388
3404
  return n.observe(e), () => n.disconnect();
3389
- }, [B, I]), l(() => {
3390
- B.setReducedMotion(P);
3391
- }, [B, P]), l(() => () => B.dispose(), [B]);
3392
- let _e = Math.max(1, D.w), ve = Math.max(1, D.h), H = Ln("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);
3393
3409
  return /* @__PURE__ */ n("div", {
3394
3410
  ...S,
3395
- ref: L,
3396
- className: H,
3411
+ ref: _e,
3412
+ className: W,
3397
3413
  "data-liquid-filter-area": Math.round((D.w + I * 2) * (D.h + I * 2)),
3398
3414
  "data-liquid-filter-budget": we,
3399
- "data-liquid-feature-padding": Math.round(j * 10) / 10,
3400
- "data-liquid-motion": te,
3401
- "data-liquid-waviness": Math.round(ce * 100) / 100,
3415
+ "data-liquid-feature-padding": Math.round(te * 10) / 10,
3416
+ "data-liquid-motion": re,
3417
+ "data-liquid-waviness": Math.round(le * 100) / 100,
3402
3418
  style: b,
3403
3419
  children: [
3404
3420
  /* @__PURE__ */ n("svg", {
@@ -3406,39 +3422,40 @@ var Hn = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-su
3406
3422
  className: "game-ui-liquid-silhouette",
3407
3423
  "data-liquid-gooey-silhouette": "",
3408
3424
  focusable: "false",
3409
- viewBox: `0 0 ${_e} ${ve}`,
3425
+ style: me ? { filter: me } : void 0,
3426
+ viewBox: `0 0 ${H} ${U}`,
3410
3427
  children: [/* @__PURE__ */ t("defs", { children: /* @__PURE__ */ t("filter", {
3411
3428
  colorInterpolationFilters: "sRGB",
3412
3429
  filterUnits: "userSpaceOnUse",
3413
- height: ve + I * 2,
3414
- id: ge,
3415
- width: _e + I * 2,
3430
+ height: U + I * 2,
3431
+ id: R,
3432
+ width: H + I * 2,
3416
3433
  x: -I,
3417
3434
  y: -I,
3418
- children: /* @__PURE__ */ t(Re, {
3419
- blur: re,
3420
- contrast: ie,
3421
- shadows: de,
3422
- stroke: fe,
3423
- waviness: ce,
3424
- wavinessFreq: le
3435
+ children: /* @__PURE__ */ t(Be, {
3436
+ blur: ae,
3437
+ contrast: N,
3438
+ shadows: pe,
3439
+ stroke: he,
3440
+ waviness: le,
3441
+ wavinessFreq: ue
3425
3442
  })
3426
3443
  }) }), /* @__PURE__ */ t("g", {
3427
- ref: R,
3444
+ ref: B,
3428
3445
  fill: i,
3429
- filter: `url(#${ge})`
3446
+ filter: `url(#${R})`
3430
3447
  })]
3431
3448
  }),
3432
- /* @__PURE__ */ t(An, {
3433
- registry: V,
3449
+ /* @__PURE__ */ t(In, {
3450
+ registry: ve,
3434
3451
  getGroup: () => w.current
3435
3452
  }),
3436
- /* @__PURE__ */ t(jn.Provider, {
3453
+ /* @__PURE__ */ t(Ln.Provider, {
3437
3454
  value: {
3438
3455
  portal: T,
3439
- engine: B,
3456
+ engine: V,
3440
3457
  follow: v === "follow",
3441
- imageMelt: V
3458
+ imageMelt: ve
3442
3459
  },
3443
3460
  children: /* @__PURE__ */ t("div", {
3444
3461
  className: "game-ui-liquid-content",
@@ -3447,24 +3464,24 @@ var Hn = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-su
3447
3464
  })
3448
3465
  ]
3449
3466
  });
3450
- }), Un = 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) {
3451
- let { portal: D, engine: O, follow: k, imageMelt: A } = Mn(), j = `liquid-item-${Nn(u())}`, ee = p(null), M = p(null), N = p(null), P = p(null), te = JSON.stringify(a ?? null), ne = a !== void 0 && a !== !1, re = f(() => {
3452
- let e = r === "morph" || r === "bend" ? r : void 0, t = e === "bend", n = r === "bend" || k && y === void 0 && r !== "morph" || ne && 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 = {
3453
3470
  ...e === void 0 ? {} : { effect: e },
3454
3471
  ...n === void 0 ? {} : { morph: n },
3455
3472
  ...b === void 0 ? {} : { bend: b },
3456
3473
  ...x === void 0 && !t ? {} : { observe: t || x },
3457
- x: Pn(o, 0),
3458
- y: Pn(c, 0),
3459
- scale: Pn(m, 1)
3474
+ x: Bn(o, 0),
3475
+ y: Bn(c, 0),
3476
+ scale: Bn(m, 1)
3460
3477
  };
3461
3478
  return g !== void 0 && (i.transition = g), _ !== void 0 && (i.delay = _), v !== void 0 && (i.radius = v), i;
3462
3479
  }, [
3463
3480
  b,
3464
3481
  _,
3465
3482
  r,
3466
- k,
3467
- ne,
3483
+ ee,
3484
+ ie,
3468
3485
  y,
3469
3486
  x,
3470
3487
  v,
@@ -3473,66 +3490,76 @@ var Hn = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-su
3473
3490
  o,
3474
3491
  c
3475
3492
  ]);
3476
- N.current === null && (N.current = re);
3477
- let ie = s((e) => {
3478
- ee.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);
3479
3496
  }, [E]);
3480
3497
  return d(() => {
3481
- let e = ee.current, t = M.current;
3482
- if (!(!D || !e || !t || !N.current)) return O.register({
3483
- id: j,
3498
+ let e = ne.current, t = A.current;
3499
+ if (!(!D || !e || !t || !j.current)) return O.register({
3500
+ id: te,
3484
3501
  host: e,
3485
3502
  blob: t,
3486
- config: N.current
3503
+ config: j.current
3487
3504
  });
3488
3505
  }, [
3489
3506
  O,
3490
- j,
3507
+ te,
3491
3508
  D
3492
3509
  ]), d(() => {
3493
- O.update(j, re);
3510
+ O.update(te, ae);
3494
3511
  }, [
3495
- re,
3512
+ ae,
3496
3513
  O,
3497
- j
3514
+ te
3498
3515
  ]), d(() => () => {
3499
- P.current?.unregister(), P.current = null;
3500
- }, [A]), d(() => {
3516
+ M.current?.unregister(), M.current = null;
3517
+ }, [k]), d(() => {
3501
3518
  if (r === "move" || a === void 0 || a === !1) {
3502
- P.current?.unregister(), P.current = null;
3519
+ M.current?.unregister(), M.current = null;
3503
3520
  return;
3504
3521
  }
3505
- let e = ee.current;
3522
+ let e = ne.current;
3506
3523
  if (e) {
3507
- if (P.current) {
3508
- P.current.update(a);
3524
+ if (M.current) {
3525
+ M.current.update(a);
3509
3526
  return;
3510
3527
  }
3511
- P.current = un(A, e, a);
3528
+ M.current = gn(k, e, a);
3512
3529
  }
3513
3530
  }, [
3514
- te,
3531
+ re,
3515
3532
  r,
3516
- A
3517
- ]), l(() => {}, [r, ne]), 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", {
3518
3545
  ...T,
3519
- ref: ie,
3520
- className: Ln("game-ui-liquid-item", S),
3546
+ ref: N,
3547
+ className: Un("game-ui-liquid-item", S),
3521
3548
  style: C,
3522
3549
  children: w
3523
3550
  }), D ? h(/* @__PURE__ */ t("path", {
3524
- ref: M,
3551
+ ref: A,
3525
3552
  d: "",
3526
3553
  "data-liquid-gooey-blob": ""
3527
3554
  }), D) : null] });
3528
- }), Wn = a(function(e, n) {
3529
- let { imageMelt: r } = Mn();
3530
- if (e.effect !== "melt") return /* @__PURE__ */ t(Un, {
3555
+ }), Yn = a(function(e, n) {
3556
+ let { imageMelt: r } = Rn();
3557
+ if (e.effect !== "melt") return /* @__PURE__ */ t(Jn, {
3531
3558
  ...e,
3532
3559
  ref: n
3533
3560
  });
3534
- let i = Rn(e), a = e.children, o = { ...e.melt ?? {} }, s = o.src;
3535
- return delete o.src, /* @__PURE__ */ t(dn, {
3561
+ let i = Wn(e), a = e.children, o = { ...e.melt ?? {} }, s = o.src;
3562
+ return delete o.src, /* @__PURE__ */ t(_n, {
3536
3563
  ...i,
3537
3564
  registry: r,
3538
3565
  children: a,
@@ -3540,10 +3567,10 @@ var Hn = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-su
3540
3567
  ...s === void 0 ? {} : { src: s },
3541
3568
  ...n === void 0 ? {} : { forwardedRef: n }
3542
3569
  });
3543
- }), Gn = Object.assign(Hn, { Item: Wn });
3570
+ }), Xn = Object.assign(qn, { Item: Yn });
3544
3571
  //#endregion
3545
3572
  //#region src/GameCallout.tsx
3546
- function Kn({ heading: e, children: r, tone: i = "info", className: a, ...o }) {
3573
+ function Zn({ heading: e, children: r, tone: i = "info", className: a, ...o }) {
3547
3574
  return /* @__PURE__ */ n("div", {
3548
3575
  className: [
3549
3576
  "game-ui-callout",
@@ -3564,7 +3591,7 @@ function Kn({ heading: e, children: r, tone: i = "info", className: a, ...o }) {
3564
3591
  }
3565
3592
  //#endregion
3566
3593
  //#region src/GameDialog.tsx
3567
- function qn({ children: e, className: r, title: i }) {
3594
+ function Qn({ children: e, className: r, title: i }) {
3568
3595
  let a = u();
3569
3596
  return /* @__PURE__ */ n("section", {
3570
3597
  "aria-labelledby": a,
@@ -3582,7 +3609,7 @@ function qn({ children: e, className: r, title: i }) {
3582
3609
  }
3583
3610
  //#endregion
3584
3611
  //#region src/GameHistoryPanel.tsx
3585
- function Jn({ entries: e, label: r }) {
3612
+ function $n({ entries: e, label: r }) {
3586
3613
  return /* @__PURE__ */ t("section", {
3587
3614
  "aria-label": r,
3588
3615
  className: "game-ui-history",
@@ -3598,7 +3625,7 @@ function Jn({ entries: e, label: r }) {
3598
3625
  }
3599
3626
  //#endregion
3600
3627
  //#region src/GameHudActions.tsx
3601
- function Yn({ children: e, className: n, label: r, ...i }) {
3628
+ function er({ children: e, className: n, label: r, ...i }) {
3602
3629
  return /* @__PURE__ */ t("nav", {
3603
3630
  "aria-label": r,
3604
3631
  className: ["game-ui-hud-actions", n].filter(Boolean).join(" "),
@@ -3618,7 +3645,7 @@ function X({ children: e, className: r, title: i, tone: a = "default", ...o }) {
3618
3645
  children: [i ? /* @__PURE__ */ t("h3", { children: i }) : null, e]
3619
3646
  });
3620
3647
  }
3621
- function Xn({ children: e, className: n, label: r, type: i = "button", ...a }) {
3648
+ function tr({ children: e, className: n, label: r, type: i = "button", ...a }) {
3622
3649
  return /* @__PURE__ */ t("button", {
3623
3650
  "aria-label": r,
3624
3651
  className: ["game-ui-icon-button", n].filter(Boolean).join(" "),
@@ -3627,7 +3654,7 @@ function Xn({ children: e, className: n, label: r, type: i = "button", ...a }) {
3627
3654
  children: e
3628
3655
  });
3629
3656
  }
3630
- function Zn({ children: e, label: i }) {
3657
+ function nr({ children: e, label: i }) {
3631
3658
  let a = u();
3632
3659
  return /* @__PURE__ */ n("span", {
3633
3660
  className: "game-ui-tooltip",
@@ -3638,7 +3665,7 @@ function Zn({ children: e, label: i }) {
3638
3665
  })]
3639
3666
  });
3640
3667
  }
3641
- function Qn({ activeId: e, id: n, onSelect: r, tabs: i }) {
3668
+ function rr({ activeId: e, id: n, onSelect: r, tabs: i }) {
3642
3669
  let a = u(), o = n ?? a;
3643
3670
  return /* @__PURE__ */ t("div", {
3644
3671
  className: "game-ui-tabs",
@@ -3678,10 +3705,10 @@ function Qn({ activeId: e, id: n, onSelect: r, tabs: i }) {
3678
3705
  }, n.id))
3679
3706
  });
3680
3707
  }
3681
- function $n(e, t) {
3708
+ function ir(e, t) {
3682
3709
  return e.x === t.x && e.y === t.y && e.width === t.width && e.height === t.height;
3683
3710
  }
3684
- function er({ activeId: e, label: r, onSelect: i, options: a }) {
3711
+ function ar({ activeId: e, label: r, onSelect: i, options: a }) {
3685
3712
  let o = p(null), s = p([]), [c, l] = m({
3686
3713
  x: 0,
3687
3714
  y: 0,
@@ -3698,7 +3725,7 @@ function er({ activeId: e, label: r, onSelect: i, options: a }) {
3698
3725
  width: r.width,
3699
3726
  height: r.height
3700
3727
  };
3701
- l((e) => $n(e, i) ? e : i);
3728
+ l((e) => ir(e, i) ? e : i);
3702
3729
  };
3703
3730
  if (n(), typeof ResizeObserver > "u") return;
3704
3731
  let r = new ResizeObserver(n);
@@ -3713,7 +3740,7 @@ function er({ activeId: e, label: r, onSelect: i, options: a }) {
3713
3740
  className: "game-ui-segmented",
3714
3741
  role: "group",
3715
3742
  children: [
3716
- /* @__PURE__ */ t(Gn, {
3743
+ /* @__PURE__ */ t(Xn, {
3717
3744
  "aria-hidden": "true",
3718
3745
  className: "game-ui-segmented-surface",
3719
3746
  fill: "var(--game-ui-surface-raised)",
@@ -3724,7 +3751,7 @@ function er({ activeId: e, label: r, onSelect: i, options: a }) {
3724
3751
  pointerEvents: "none",
3725
3752
  position: "absolute"
3726
3753
  },
3727
- children: /* @__PURE__ */ t(Gn.Item, {
3754
+ children: /* @__PURE__ */ t(Xn.Item, {
3728
3755
  style: {
3729
3756
  borderRadius: "var(--game-ui-radius-control)",
3730
3757
  inset: 0,
@@ -3733,7 +3760,7 @@ function er({ activeId: e, label: r, onSelect: i, options: a }) {
3733
3760
  children: null
3734
3761
  })
3735
3762
  }),
3736
- c.width > 0 && c.height > 0 ? /* @__PURE__ */ t(Gn, {
3763
+ c.width > 0 && c.height > 0 ? /* @__PURE__ */ t(Xn, {
3737
3764
  "aria-hidden": "true",
3738
3765
  className: "game-ui-segmented-follow",
3739
3766
  fill: "var(--game-ui-secondary)",
@@ -3744,7 +3771,7 @@ function er({ activeId: e, label: r, onSelect: i, options: a }) {
3744
3771
  pointerEvents: "none",
3745
3772
  position: "absolute"
3746
3773
  },
3747
- children: /* @__PURE__ */ t(Gn.Item, {
3774
+ children: /* @__PURE__ */ t(Xn.Item, {
3748
3775
  "aria-hidden": "true",
3749
3776
  style: {
3750
3777
  borderRadius: "var(--game-ui-radius-control)",
@@ -3773,7 +3800,7 @@ function er({ activeId: e, label: r, onSelect: i, options: a }) {
3773
3800
  ]
3774
3801
  });
3775
3802
  }
3776
- function tr({ label: e, max: r, min: i, onChange: a, value: o }) {
3803
+ function or({ label: e, max: r, min: i, onChange: a, value: o }) {
3777
3804
  return /* @__PURE__ */ n("label", {
3778
3805
  className: "game-ui-slider",
3779
3806
  children: [/* @__PURE__ */ t("span", { children: e }), /* @__PURE__ */ t("input", {
@@ -3787,7 +3814,7 @@ function tr({ label: e, max: r, min: i, onChange: a, value: o }) {
3787
3814
  })]
3788
3815
  });
3789
3816
  }
3790
- function nr({ checked: e, disabled: r, label: i, onClick: a }) {
3817
+ function sr({ checked: e, disabled: r, label: i, onClick: a }) {
3791
3818
  return /* @__PURE__ */ n("button", {
3792
3819
  "aria-checked": e,
3793
3820
  className: "game-ui-toggle",
@@ -3801,7 +3828,7 @@ function nr({ checked: e, disabled: r, label: i, onClick: a }) {
3801
3828
  })]
3802
3829
  });
3803
3830
  }
3804
- function rr({ items: e, label: n, onSelect: r }) {
3831
+ function cr({ items: e, label: n, onSelect: r }) {
3805
3832
  return /* @__PURE__ */ t("div", {
3806
3833
  "aria-label": n,
3807
3834
  className: "game-ui-radial-menu",
@@ -3816,7 +3843,7 @@ function rr({ items: e, label: n, onSelect: r }) {
3816
3843
  }, e.id))
3817
3844
  });
3818
3845
  }
3819
- function ir({ children: e, tone: n = "info" }) {
3846
+ function lr({ children: e, tone: n = "info" }) {
3820
3847
  return /* @__PURE__ */ t("div", {
3821
3848
  className: "game-ui-toast",
3822
3849
  "data-toast-tone": n,
@@ -3824,7 +3851,7 @@ function ir({ children: e, tone: n = "info" }) {
3824
3851
  children: e
3825
3852
  });
3826
3853
  }
3827
- function ar({ actionLabel: e, children: r, title: i }) {
3854
+ function ur({ actionLabel: e, children: r, title: i }) {
3828
3855
  return /* @__PURE__ */ n("section", {
3829
3856
  "aria-label": i,
3830
3857
  className: "game-ui-prompt",
@@ -3836,7 +3863,7 @@ function ar({ actionLabel: e, children: r, title: i }) {
3836
3863
  }
3837
3864
  //#endregion
3838
3865
  //#region src/clay/assets.ts
3839
- var or = "/assets/game/ui/clay/phase03-clay-kit", Z = (e) => `${or}/${e}`, sr = {
3866
+ var dr = "/assets/game/ui/clay/phase03-clay-kit", Z = (e) => `${dr}/${e}`, fr = {
3840
3867
  ai: { line: Z("icons/function/brain-v1.png") },
3841
3868
  alert: {
3842
3869
  game: Z("components/common/alert-v1.png"),
@@ -3926,20 +3953,20 @@ var or = "/assets/game/ui/clay/phase03-clay-kit", Z = (e) => `${or}/${e}`, sr =
3926
3953
  game: Z("icons/common/target-v1.png"),
3927
3954
  line: Z("icons/function/target-v1.png")
3928
3955
  }
3929
- }, cr = Object.keys(sr), lr = or;
3930
- function ur(e) {
3931
- let t = lr;
3956
+ }, pr = Object.keys(fr), mr = dr;
3957
+ function hr(e) {
3958
+ let t = mr;
3932
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;
3933
3960
  }
3934
- function dr(e, t) {
3935
- let n = sr[e];
3936
- return ur(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 ?? "");
3937
3964
  }
3938
- function fr(e) {
3939
- let t = sr[e], n = [];
3965
+ function _r(e) {
3966
+ let t = fr[e], n = [];
3940
3967
  return t.game && n.push("game"), t.line && n.push("line"), n;
3941
3968
  }
3942
- var pr = {
3969
+ var vr = {
3943
3970
  anvil: Z("icons/common/anvil-v1.png"),
3944
3971
  arrow: Z("icons/common/arrow-v1.png"),
3945
3972
  bomb: Z("icons/common/bomb-v1.png"),
@@ -3966,7 +3993,7 @@ var pr = {
3966
3993
  swordB: Z("icons/common/sword-b-v1.png"),
3967
3994
  talaria: Z("icons/common/talaria-v1.png"),
3968
3995
  treasure: Z("icons/common/treasure-v1.png")
3969
- }, mr = Object.keys(pr), hr = {
3996
+ }, yr = Object.keys(vr), br = {
3970
3997
  buttons: {
3971
3998
  primary: Z("buttons/button-brown-large-v2.png"),
3972
3999
  blue: Z("buttons/button-blue-large-v2.png"),
@@ -3987,7 +4014,7 @@ var pr = {
3987
4014
  tabSelected: Z("components/common/tab-s-v1.png"),
3988
4015
  tabNormal: Z("components/common/tab-n-v1.png")
3989
4016
  },
3990
- icons: Object.fromEntries(cr.map((e) => [e, dr(e)])),
4017
+ icons: Object.fromEntries(pr.map((e) => [e, gr(e)])),
3991
4018
  catalog: {
3992
4019
  manifest: "/assets/game/ui/clay/asset-manifest.json",
3993
4020
  sourceCatalog: Z("catalog/phase03-clay-ui-catalog.json"),
@@ -3995,7 +4022,7 @@ var pr = {
3995
4022
  contactSheetComponents: Z("catalog/component-candidates-contact-sheet-v1.png"),
3996
4023
  contactSheetFunction: Z("catalog/function-icons-contact-sheet-v1.png")
3997
4024
  }
3998
- }, gr = {
4025
+ }, xr = {
3999
4026
  ai: "AI",
4000
4027
  alert: "!",
4001
4028
  card: "▣",
@@ -4031,7 +4058,7 @@ var pr = {
4031
4058
  timer: "◷",
4032
4059
  trophy: "★",
4033
4060
  vote: "⌾"
4034
- }, _r = {
4061
+ }, Sr = {
4035
4062
  ai: L.berry,
4036
4063
  alert: L.red,
4037
4064
  card: L.honey,
@@ -4068,35 +4095,35 @@ var pr = {
4068
4095
  trophy: L.honey,
4069
4096
  vote: L.red
4070
4097
  };
4071
- function vr(e) {
4072
- let t = gr[e], n = _r[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>`;
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>`;
4073
4100
  return `data:image/svg+xml,${encodeURIComponent(i)}`;
4074
4101
  }
4075
- var yr = "inline";
4076
- function br(e) {
4077
- yr = e;
4102
+ var wr = "inline";
4103
+ function Tr(e) {
4104
+ wr = e;
4078
4105
  }
4079
- function xr() {
4080
- return yr;
4106
+ function Er() {
4107
+ return wr;
4081
4108
  }
4082
- function Sr(e) {
4083
- lr = e.replace(/\/+$/, "");
4109
+ function Dr(e) {
4110
+ mr = e.replace(/\/+$/, "");
4084
4111
  }
4085
- function Cr() {
4086
- return lr;
4112
+ function Or() {
4113
+ return mr;
4087
4114
  }
4088
- var wr = !1;
4089
- function Tr() {
4090
- wr || (wr = !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."));
4091
4118
  }
4092
- function Er() {
4093
- wr = !0;
4119
+ function jr() {
4120
+ kr = !0;
4094
4121
  }
4095
- function Dr(e, t = {}) {
4096
- return t.inline ?? yr === "inline" ? (Tr(), vr(e)) : dr(e, t.style);
4122
+ function Mr(e, t = {}) {
4123
+ return t.inline ?? wr === "inline" ? (Ar(), Cr(e)) : gr(e, t.style);
4097
4124
  }
4098
- function Or(e, t) {
4099
- return dr(e, t);
4125
+ function Nr(e, t) {
4126
+ return gr(e, t);
4100
4127
  }
4101
4128
  //#endregion
4102
4129
  //#region src/ClayComponents.tsx
@@ -4108,7 +4135,7 @@ function Q({ children: e, className: n, tone: r = "neutral" }) {
4108
4135
  });
4109
4136
  }
4110
4137
  function $({ className: e, icon: n, label: r, size: i = "md", style: a, useSourceAsset: o = !1 }) {
4111
- let s = ["game-ui-asset-icon", e].filter(Boolean).join(" "), c = r ? { "aria-label": r } : { "aria-hidden": !0 }, l = Dr(n, {
4138
+ let s = ["game-ui-asset-icon", e].filter(Boolean).join(" "), c = r ? { "aria-label": r } : { "aria-hidden": !0 }, l = Mr(n, {
4112
4139
  ...a ? { style: a } : {},
4113
4140
  ...o ? { inline: !1 } : {}
4114
4141
  });
@@ -4123,7 +4150,7 @@ function $({ className: e, icon: n, label: r, size: i = "md", style: a, useSourc
4123
4150
  })
4124
4151
  });
4125
4152
  }
4126
- function kr({ actions: e, className: r, items: i, label: a }) {
4153
+ function Pr({ actions: e, className: r, items: i, label: a }) {
4127
4154
  return /* @__PURE__ */ n("section", {
4128
4155
  "aria-label": a,
4129
4156
  className: ["game-ui-hud", r].filter(Boolean).join(" "),
@@ -4146,7 +4173,7 @@ function kr({ actions: e, className: r, items: i, label: a }) {
4146
4173
  }) : null]
4147
4174
  });
4148
4175
  }
4149
- function Ar({ cards: e, className: r, label: i }) {
4176
+ function Fr({ cards: e, className: r, label: i }) {
4150
4177
  let a = ["game-ui-card-fan", r].filter(Boolean).join(" "), o = (e.length - 1) / 2;
4151
4178
  return /* @__PURE__ */ t("div", {
4152
4179
  "aria-label": i,
@@ -4169,7 +4196,7 @@ function Ar({ cards: e, className: r, label: i }) {
4169
4196
  }, e.id))
4170
4197
  });
4171
4198
  }
4172
- function jr({ 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 }) {
4173
4200
  return /* @__PURE__ */ n("button", {
4174
4201
  "aria-pressed": o,
4175
4202
  className: ["game-ui-stage-tile", r].filter(Boolean).join(" "),
@@ -4196,15 +4223,15 @@ function jr({ badge: e, className: r, icon: i, kicker: a, selected: o = !1, summ
4196
4223
  ]
4197
4224
  });
4198
4225
  }
4199
- function Mr() {
4226
+ function Lr() {
4200
4227
  return typeof window > "u" ? !1 : (window.matchMedia?.("(pointer: coarse), (max-width: 899px)").matches ?? window.innerWidth < 900) && window.innerHeight > window.innerWidth;
4201
4228
  }
4202
- function Nr({ body: e, cta: r, badgeLabel: i = "Landscape only", manualHint: a = "Rotate manually if this browser blocks automatic landscape lock.", preview: o = !1, title: s }) {
4203
- let [c, u] = m(o || Mr), [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("");
4204
4231
  if (l(() => {
4205
4232
  if (o) return;
4206
4233
  let e = () => {
4207
- let e = Mr();
4234
+ let e = Lr();
4208
4235
  u(e), e || f("");
4209
4236
  };
4210
4237
  return e(), window.addEventListener("resize", e), window.addEventListener("orientationchange", e), () => {
@@ -4214,7 +4241,7 @@ function Nr({ body: e, cta: r, badgeLabel: i = "Landscape only", manualHint: a =
4214
4241
  let p = async () => {
4215
4242
  if (f(""), !o) try {
4216
4243
  let e = document.documentElement;
4217
- !document.fullscreenElement && e.requestFullscreen && await e.requestFullscreen(), await screen.orientation.lock?.("landscape-primary"), u(Mr());
4244
+ !document.fullscreenElement && e.requestFullscreen && await e.requestFullscreen(), await screen.orientation.lock?.("landscape-primary"), u(Lr());
4218
4245
  } catch {
4219
4246
  f(a);
4220
4247
  }
@@ -4245,7 +4272,7 @@ function Nr({ body: e, cta: r, badgeLabel: i = "Landscape only", manualHint: a =
4245
4272
  })
4246
4273
  });
4247
4274
  }
4248
- function Pr({ 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 }) {
4249
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) => {
4250
4277
  o === void 0 && p(e), c?.(e), d(!1);
4251
4278
  };
@@ -4277,34 +4304,34 @@ function Pr({ className: e, currentLabel: r, label: i, options: a, value: o, def
4277
4304
  }) : null]
4278
4305
  });
4279
4306
  }
4280
- function Fr({ label: e, tone: r = "loading" }) {
4307
+ function Br({ label: e, tone: r = "loading" }) {
4281
4308
  return /* @__PURE__ */ n("div", {
4282
4309
  className: "game-ui-loading-state",
4283
4310
  "data-loading-tone": r,
4284
4311
  role: r === "error" ? "alert" : "status",
4285
4312
  children: [/* @__PURE__ */ t("img", {
4286
4313
  alt: "",
4287
- src: Dr(r === "error" ? "alert" : "timer")
4314
+ src: Mr(r === "error" ? "alert" : "timer")
4288
4315
  }), /* @__PURE__ */ t("span", { children: e })]
4289
4316
  });
4290
4317
  }
4291
- function Ir() {
4292
- return hr.catalog;
4318
+ function Vr() {
4319
+ return br.catalog;
4293
4320
  }
4294
4321
  //#endregion
4295
4322
  //#region src/FirstSessionGameShell.tsx
4296
- function Lr({ fallback: e, slot: n }) {
4323
+ function Hr({ fallback: e, slot: n }) {
4297
4324
  return n ?? /* @__PURE__ */ t($, {
4298
4325
  icon: e,
4299
4326
  size: "sm"
4300
4327
  });
4301
4328
  }
4302
- function Rr({ 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 }) {
4303
4330
  let f = ["swimmer-first-session-shell", i].filter(Boolean).join(" "), p = e ? `${r} 🔋` : s.guest ?? "guest";
4304
4331
  return /* @__PURE__ */ n("section", {
4305
4332
  "aria-label": s.shell,
4306
4333
  className: f,
4307
- children: [/* @__PURE__ */ t(kr, {
4334
+ children: [/* @__PURE__ */ t(Pr, {
4308
4335
  className: "swimmer-first-session-hud",
4309
4336
  items: [
4310
4337
  {
@@ -4336,7 +4363,7 @@ function Rr({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4336
4363
  }
4337
4364
  ],
4338
4365
  label: s.hud,
4339
- actions: /* @__PURE__ */ n(Yn, {
4366
+ actions: /* @__PURE__ */ n(er, {
4340
4367
  className: "swimmer-first-session-hud-actions",
4341
4368
  label: s.tools,
4342
4369
  children: [
@@ -4344,7 +4371,7 @@ function Rr({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4344
4371
  "aria-label": s.wardrobe,
4345
4372
  onClick: u,
4346
4373
  variant: "secondary",
4347
- children: [/* @__PURE__ */ t(Lr, {
4374
+ children: [/* @__PURE__ */ t(Hr, {
4348
4375
  fallback: "shirt",
4349
4376
  slot: o?.wardrobe
4350
4377
  }), s.wardrobe]
@@ -4353,7 +4380,7 @@ function Rr({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4353
4380
  "aria-label": s.settings,
4354
4381
  onClick: l,
4355
4382
  variant: "secondary",
4356
- children: [/* @__PURE__ */ t(Lr, {
4383
+ children: [/* @__PURE__ */ t(Hr, {
4357
4384
  fallback: "settings",
4358
4385
  slot: o?.settings
4359
4386
  }), s.settings]
@@ -4362,7 +4389,7 @@ function Rr({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4362
4389
  "aria-label": s.history,
4363
4390
  onClick: c,
4364
4391
  variant: "secondary",
4365
- children: [/* @__PURE__ */ t(Lr, {
4392
+ children: [/* @__PURE__ */ t(Hr, {
4366
4393
  fallback: "history",
4367
4394
  slot: o?.history
4368
4395
  }), s.history]
@@ -4387,7 +4414,7 @@ function Rr({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4387
4414
  }),
4388
4415
  /* @__PURE__ */ n("label", {
4389
4416
  className: "swimmer-first-session-input",
4390
- children: [/* @__PURE__ */ t(Lr, {
4417
+ children: [/* @__PURE__ */ t(Hr, {
4391
4418
  fallback: "chat",
4392
4419
  slot: o?.input
4393
4420
  }), /* @__PURE__ */ t("span", { children: s.input })]
@@ -4395,7 +4422,7 @@ function Rr({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4395
4422
  /* @__PURE__ */ n("button", {
4396
4423
  className: "swimmer-first-session-emote",
4397
4424
  type: "button",
4398
- children: [/* @__PURE__ */ t(Lr, {
4425
+ children: [/* @__PURE__ */ t(Hr, {
4399
4426
  fallback: "smile",
4400
4427
  slot: o?.emote
4401
4428
  }), s.emote]
@@ -4404,7 +4431,7 @@ function Rr({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4404
4431
  })]
4405
4432
  });
4406
4433
  }
4407
- function zr({ labels: e, onDismiss: r, open: i }) {
4434
+ function Wr({ labels: e, onDismiss: r, open: i }) {
4408
4435
  return i ? /* @__PURE__ */ n("aside", {
4409
4436
  "aria-labelledby": "swimmer-first-session-onboarding-title",
4410
4437
  "aria-modal": "true",
@@ -4452,7 +4479,7 @@ function zr({ labels: e, onDismiss: r, open: i }) {
4452
4479
  }
4453
4480
  //#endregion
4454
4481
  //#region src/GameForms.tsx
4455
- var Br = 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) {
4456
4483
  return /* @__PURE__ */ t("input", {
4457
4484
  className: ["game-ui-input", e].filter(Boolean).join(" "),
4458
4485
  "data-invalid": n ? "true" : void 0,
@@ -4460,7 +4487,7 @@ var Br = a(function({ className: e, invalid: n, type: r = "text", ...i }, a) {
4460
4487
  type: r,
4461
4488
  ...i
4462
4489
  });
4463
- }), Vr = a(function({ className: e, invalid: n, rows: r = 3, ...i }, a) {
4490
+ }), Kr = a(function({ className: e, invalid: n, rows: r = 3, ...i }, a) {
4464
4491
  return /* @__PURE__ */ t("textarea", {
4465
4492
  className: [
4466
4493
  "game-ui-input",
@@ -4473,7 +4500,7 @@ var Br = a(function({ className: e, invalid: n, type: r = "text", ...i }, a) {
4473
4500
  ...i
4474
4501
  });
4475
4502
  });
4476
- function Hr({ 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 }) {
4477
4504
  return /* @__PURE__ */ n("label", {
4478
4505
  className: ["game-ui-field", r].filter(Boolean).join(" "),
4479
4506
  "data-invalid": i ? "true" : void 0,
@@ -4499,7 +4526,7 @@ function Hr({ children: e, className: r, error: i, hint: a, label: o, required:
4499
4526
  ]
4500
4527
  });
4501
4528
  }
4502
- function Ur({ className: e, label: r, ...i }) {
4529
+ function Jr({ className: e, label: r, ...i }) {
4503
4530
  return /* @__PURE__ */ n("label", {
4504
4531
  className: ["game-ui-checkbox", e].filter(Boolean).join(" "),
4505
4532
  children: [
@@ -4521,11 +4548,11 @@ function Ur({ className: e, label: r, ...i }) {
4521
4548
  }
4522
4549
  //#endregion
4523
4550
  //#region src/GameDisplay.tsx
4524
- function Wr(e) {
4551
+ function Yr(e) {
4525
4552
  let t = e.trim().split(/\s+/).filter(Boolean);
4526
4553
  return t.length === 0 ? "?" : t.slice(0, 2).map((e) => e[0] ?? "").join("").toUpperCase();
4527
4554
  }
4528
- function Gr({ 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" }) {
4529
4556
  return /* @__PURE__ */ n("span", {
4530
4557
  className: ["game-ui-avatar", r].filter(Boolean).join(" "),
4531
4558
  "data-avatar-size": a,
@@ -4536,7 +4563,7 @@ function Gr({ className: r, name: i, size: a = "md", src: o, status: s = "none"
4536
4563
  }) : /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ t("span", {
4537
4564
  "aria-hidden": "true",
4538
4565
  className: "game-ui-avatar-initials",
4539
- children: Wr(i)
4566
+ children: Yr(i)
4540
4567
  }), /* @__PURE__ */ t("span", {
4541
4568
  className: "game-ui-sr-only",
4542
4569
  children: i
@@ -4546,7 +4573,7 @@ function Gr({ className: r, name: i, size: a = "md", src: o, status: s = "none"
4546
4573
  })]
4547
4574
  });
4548
4575
  }
4549
- function Kr({ 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 }) {
4550
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 = {
4551
4578
  accent: "var(--game-ui-accent)",
4552
4579
  danger: "var(--game-ui-danger)",
@@ -4564,7 +4591,7 @@ function Kr({ className: e, label: r, max: i = 100, showValue: a = !1, tone: o =
4564
4591
  "aria-valuetext": f ? c : void 0,
4565
4592
  className: "game-ui-progress-track",
4566
4593
  role: "progressbar",
4567
- children: /* @__PURE__ */ t(Gn, {
4594
+ children: /* @__PURE__ */ t(Xn, {
4568
4595
  "aria-hidden": "true",
4569
4596
  className: "game-ui-progress-liquid",
4570
4597
  fill: p,
@@ -4575,7 +4602,7 @@ function Kr({ className: e, label: r, max: i = 100, showValue: a = !1, tone: o =
4575
4602
  pointerEvents: "none",
4576
4603
  position: "absolute"
4577
4604
  },
4578
- children: /* @__PURE__ */ t(Gn.Item, {
4605
+ children: /* @__PURE__ */ t(Xn.Item, {
4579
4606
  "aria-hidden": "true",
4580
4607
  className: "game-ui-progress-fill",
4581
4608
  style: {
@@ -4598,7 +4625,7 @@ function Kr({ className: e, label: r, max: i = 100, showValue: a = !1, tone: o =
4598
4625
  }) : null]
4599
4626
  });
4600
4627
  }
4601
- function qr({ action: e, className: r, description: i, icon: a, title: o }) {
4628
+ function Qr({ action: e, className: r, description: i, icon: a, title: o }) {
4602
4629
  return /* @__PURE__ */ n("div", {
4603
4630
  className: ["game-ui-empty-state", r].filter(Boolean).join(" "),
4604
4631
  children: [
@@ -4623,7 +4650,7 @@ function qr({ action: e, className: r, description: i, icon: a, title: o }) {
4623
4650
  }
4624
4651
  //#endregion
4625
4652
  //#region src/GameSurfacePack.tsx
4626
- function Jr({ 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 }) {
4627
4654
  return /* @__PURE__ */ n("section", {
4628
4655
  "aria-label": f,
4629
4656
  className: ["game-ui-shell", a].filter(Boolean).join(" "),
@@ -4661,8 +4688,8 @@ function Jr({ assetLibrary: e, bottomBar: r, children: i, className: a, density:
4661
4688
  ]
4662
4689
  });
4663
4690
  }
4664
- var Yr = Jr;
4665
- function Xr({ 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" }) {
4666
4693
  return /* @__PURE__ */ t("section", {
4667
4694
  "aria-label": a,
4668
4695
  className: ["game-ui-fact-list", e].filter(Boolean).join(" "),
@@ -4691,9 +4718,9 @@ function Xr({ className: e, density: r = "comfortable", facts: i, label: a, vari
4691
4718
  }, e.id))
4692
4719
  });
4693
4720
  }
4694
- var Zr = Xr;
4695
- function Qr({ actions: r, className: i, density: a = "comfortable", iconLabelMode: o = "hidden", label: s, style: c = "button" }) {
4696
- return /* @__PURE__ */ n(Yn, {
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, {
4697
4724
  className: ["game-ui-action-grid", i].filter(Boolean).join(" "),
4698
4725
  "data-icon-label-mode": c === "icon" ? o : void 0,
4699
4726
  label: s,
@@ -4718,7 +4745,7 @@ function Qr({ actions: r, className: i, density: a = "comfortable", iconLabelMod
4718
4745
  }) : null,
4719
4746
  r.shortcut ? /* @__PURE__ */ t("kbd", { children: r.shortcut }) : null
4720
4747
  ] }), l = () => r.onAction?.(r.id);
4721
- return c === "icon" ? /* @__PURE__ */ t(Xn, {
4748
+ return c === "icon" ? /* @__PURE__ */ t(tr, {
4722
4749
  "aria-pressed": r.selected,
4723
4750
  className: "game-ui-action-grid-button",
4724
4751
  disabled: r.disabled,
@@ -4736,7 +4763,7 @@ function Qr({ actions: r, className: i, density: a = "comfortable", iconLabelMod
4736
4763
  })]
4737
4764
  });
4738
4765
  }
4739
- var $r = [
4766
+ var ii = [
4740
4767
  {
4741
4768
  direction: "forward",
4742
4769
  label: "Move forward",
@@ -4761,7 +4788,7 @@ var $r = [
4761
4788
  shortcut: "S / ↓",
4762
4789
  symbol: "↓"
4763
4790
  }
4764
- ], ei = {
4791
+ ], ai = {
4765
4792
  ArrowUp: "forward",
4766
4793
  w: "forward",
4767
4794
  W: "forward",
@@ -4776,7 +4803,7 @@ var $r = [
4776
4803
  S: "backward",
4777
4804
  " ": "reset"
4778
4805
  };
4779
- function ti({ actions: e = $r, 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 }) {
4780
4807
  let u = ["game-ui-movement-pad", r].filter(Boolean).join(" "), d = (e) => {
4781
4808
  a || l?.(e);
4782
4809
  };
@@ -4786,7 +4813,7 @@ function ti({ actions: e = $r, className: r, density: i = "comfortable", disable
4786
4813
  "data-density": i,
4787
4814
  "data-layout": c,
4788
4815
  onKeyDown: (t) => {
4789
- let n = ei[t.key];
4816
+ let n = ai[t.key];
4790
4817
  if (!n) return;
4791
4818
  let r = e.find((e) => e.direction === n);
4792
4819
  !r || r.disabled || a || (t.preventDefault(), d(n));
@@ -4794,7 +4821,7 @@ function ti({ actions: e = $r, className: r, density: i = "comfortable", disable
4794
4821
  tabIndex: 0,
4795
4822
  children: [/* @__PURE__ */ t("div", {
4796
4823
  className: "game-ui-movement-pad-grid",
4797
- children: e.map((e) => /* @__PURE__ */ n(Xn, {
4824
+ children: e.map((e) => /* @__PURE__ */ n(tr, {
4798
4825
  className: "game-ui-movement-button",
4799
4826
  "data-direction": e.direction,
4800
4827
  disabled: a || e.disabled,
@@ -4812,15 +4839,15 @@ function ti({ actions: e = $r, className: r, density: i = "comfortable", disable
4812
4839
  }), o ? /* @__PURE__ */ t("p", { children: o }) : null]
4813
4840
  });
4814
4841
  }
4815
- var ni = {
4842
+ var si = {
4816
4843
  generated: "Generated",
4817
4844
  imported: "Imported",
4818
4845
  starter: "Starter"
4819
- }, ri = {
4846
+ }, ci = {
4820
4847
  generated: "ai",
4821
4848
  imported: "warning",
4822
4849
  starter: "neutral"
4823
- }, ii = {
4850
+ }, li = {
4824
4851
  error: "danger",
4825
4852
  generating: "ai",
4826
4853
  missing: "danger",
@@ -4828,8 +4855,8 @@ var ni = {
4828
4855
  ready: "neutral",
4829
4856
  selected: "success"
4830
4857
  };
4831
- function ai({ 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 }) {
4832
- let { "aria-label": S, ...C } = x, w = ["game-ui-asset-card", a].filter(Boolean).join(" "), T = m ?? ni[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;
4833
4860
  return /* @__PURE__ */ n("button", {
4834
4861
  "aria-label": S ?? y,
4835
4862
  "aria-pressed": f,
@@ -4860,11 +4887,11 @@ function ai({ assetId: e, badges: r = [], cardLayout: i = "list", className: a,
4860
4887
  className: "game-ui-asset-card-badges",
4861
4888
  children: [
4862
4889
  /* @__PURE__ */ t(Q, {
4863
- tone: ri[p],
4890
+ tone: ci[p],
4864
4891
  children: T
4865
4892
  }),
4866
4893
  /* @__PURE__ */ t(Q, {
4867
- tone: ii[h],
4894
+ tone: li[h],
4868
4895
  children: E
4869
4896
  }),
4870
4897
  r.map((e) => /* @__PURE__ */ t(Q, {
@@ -4883,7 +4910,7 @@ function ai({ assetId: e, badges: r = [], cardLayout: i = "list", className: a,
4883
4910
  })]
4884
4911
  });
4885
4912
  }
4886
- function oi({ 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 }) {
4887
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) => {
4888
4915
  e[t.source] += 1;
4889
4916
  }), e), {
@@ -4908,15 +4935,15 @@ function oi({ cardLayout: e = "auto", className: r, density: i = "comfortable",
4908
4935
  "aria-label": "Asset source counts",
4909
4936
  className: "game-ui-asset-library-counts",
4910
4937
  children: Object.entries(g).map(([e, t]) => /* @__PURE__ */ n(Q, {
4911
- tone: ri[e],
4938
+ tone: ci[e],
4912
4939
  children: [
4913
- ni[e],
4940
+ si[e],
4914
4941
  " ",
4915
4942
  t
4916
4943
  ]
4917
4944
  }, e))
4918
4945
  }),
4919
- h === 0 ? /* @__PURE__ */ t(qr, {
4946
+ h === 0 ? /* @__PURE__ */ t(Qr, {
4920
4947
  action: a,
4921
4948
  description: o,
4922
4949
  icon: "gem",
@@ -4928,13 +4955,13 @@ function oi({ cardLayout: e = "auto", className: r, density: i = "comfortable",
4928
4955
  className: "game-ui-asset-library-group",
4929
4956
  "data-asset-source": r.source,
4930
4957
  children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t("strong", { children: r.label }), r.source ? /* @__PURE__ */ t(Q, {
4931
- tone: ri[r.source],
4932
- children: ni[r.source]
4958
+ tone: ci[r.source],
4959
+ children: si[r.source]
4933
4960
  }) : null] }), /* @__PURE__ */ t("div", {
4934
4961
  className: "game-ui-asset-library-grid",
4935
4962
  children: r.assets.map((n) => {
4936
4963
  let r = e === "auto" ? n.cardLayout : e;
4937
- return /* @__PURE__ */ t(ai, {
4964
+ return /* @__PURE__ */ t(ui, {
4938
4965
  ...n,
4939
4966
  ...r ? { cardLayout: r } : {},
4940
4967
  ...u ? { onSelect: u } : {},
@@ -4948,7 +4975,7 @@ function oi({ cardLayout: e = "auto", className: r, density: i = "comfortable",
4948
4975
  })
4949
4976
  });
4950
4977
  }
4951
- function si({ 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 }) {
4952
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;
4953
4980
  return /* @__PURE__ */ t(X, {
4954
4981
  className: h,
@@ -4957,7 +4984,7 @@ function si({ actions: e = [], capacityLabel: r = "Objects", className: i, densi
4957
4984
  children: /* @__PURE__ */ n("div", {
4958
4985
  "data-density": a,
4959
4986
  children: [
4960
- /* @__PURE__ */ t(Xr, {
4987
+ /* @__PURE__ */ t(ti, {
4961
4988
  density: a,
4962
4989
  facts: [{
4963
4990
  icon: "gem",
@@ -4973,19 +5000,19 @@ function si({ actions: e = [], capacityLabel: r = "Objects", className: i, densi
4973
5000
  }],
4974
5001
  label: `${m} facts`
4975
5002
  }),
4976
- g ? /* @__PURE__ */ t(Kr, {
5003
+ g ? /* @__PURE__ */ t(Zr, {
4977
5004
  label: r,
4978
5005
  max: o,
4979
5006
  showValue: !0,
4980
5007
  tone: _ >= o ? "warning" : "success",
4981
5008
  value: _
4982
5009
  }) : null,
4983
- e.length > 0 ? /* @__PURE__ */ t(Qr, {
5010
+ e.length > 0 ? /* @__PURE__ */ t(ri, {
4984
5011
  actions: e,
4985
5012
  density: a,
4986
5013
  label: `${m} actions`
4987
5014
  }) : null,
4988
- s.length > 0 ? /* @__PURE__ */ t(Qr, {
5015
+ s.length > 0 ? /* @__PURE__ */ t(ri, {
4989
5016
  actions: s,
4990
5017
  density: a,
4991
5018
  label: `${m} object actions`,
@@ -4995,7 +5022,7 @@ function si({ actions: e = [], capacityLabel: r = "Objects", className: i, densi
4995
5022
  })
4996
5023
  });
4997
5024
  }
4998
- var ci = si, li = {
5025
+ var pi = fi, mi = {
4999
5026
  build: "home",
5000
5027
  flatten: "card",
5001
5028
  inspect: "compass",
@@ -5005,7 +5032,7 @@ var ci = si, li = {
5005
5032
  raise: "energy",
5006
5033
  smooth: "lucky",
5007
5034
  terrain: "portal"
5008
- }, ui = {
5035
+ }, hi = {
5009
5036
  error: "danger",
5010
5037
  locked: "warning",
5011
5038
  missing: "danger",
@@ -5013,10 +5040,10 @@ var ci = si, li = {
5013
5040
  ready: "neutral",
5014
5041
  selected: "success"
5015
5042
  };
5016
- function di(e, t, n, r) {
5043
+ function gi(e, t, n, r) {
5017
5044
  let i = {
5018
5045
  disabled: !!(r || e.disabled),
5019
- icon: e.icon ?? li[e.id] ?? "gem",
5046
+ icon: e.icon ?? mi[e.id] ?? "gem",
5020
5047
  id: e.id,
5021
5048
  label: e.label,
5022
5049
  selected: e.id === t,
@@ -5024,21 +5051,21 @@ function di(e, t, n, r) {
5024
5051
  };
5025
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;
5026
5053
  }
5027
- function fi(e, t, n) {
5054
+ function _i(e, t, n) {
5028
5055
  return Number.isNaN(e) ? t : Math.min(n, Math.max(t, e));
5029
5056
  }
5030
- function pi(e) {
5057
+ function vi(e) {
5031
5058
  return e;
5032
5059
  }
5033
- function mi(e, t) {
5060
+ function yi(e, t) {
5034
5061
  return e === "auto" ? t === "mobile" || t === "small-mobile" ? "caption" : "hidden" : e;
5035
5062
  }
5036
- function hi({ 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 }) {
5037
5064
  return /* @__PURE__ */ n("section", {
5038
5065
  "aria-label": a,
5039
5066
  className: ["game-ui-terrain-mode-control", r].filter(Boolean).join(" "),
5040
5067
  "data-ui-hook": "terrain-mode-control",
5041
- "data-variant": pi(c),
5068
+ "data-variant": vi(c),
5042
5069
  "data-testid": l,
5043
5070
  children: [/* @__PURE__ */ t("span", {
5044
5071
  className: "game-ui-sr-only",
@@ -5060,7 +5087,7 @@ function hi({ activeModeId: e, className: r, disabled: i = !1, label: a, modes:
5060
5087
  type: "button",
5061
5088
  children: [
5062
5089
  /* @__PURE__ */ t($, {
5063
- icon: r.icon ?? li[r.id] ?? "portal",
5090
+ icon: r.icon ?? mi[r.id] ?? "portal",
5064
5091
  size: c === "small-mobile" ? "sm" : "md",
5065
5092
  style: "line"
5066
5093
  }),
@@ -5075,8 +5102,8 @@ function hi({ activeModeId: e, className: r, disabled: i = !1, label: a, modes:
5075
5102
  })]
5076
5103
  });
5077
5104
  }
5078
- function gi({ 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 }) {
5079
- let d = ["game-ui-terrain-tool-strip", n].filter(Boolean).join(" "), f = mi(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);
5080
5107
  return /* @__PURE__ */ t("section", {
5081
5108
  "aria-label": o,
5082
5109
  className: d,
@@ -5085,8 +5112,8 @@ function gi({ activeToolId: e, className: n, compactLabelMode: r = "auto", densi
5085
5112
  "data-ui-hook": "terrain-tool-strip",
5086
5113
  "data-variant": l,
5087
5114
  "data-testid": u,
5088
- children: /* @__PURE__ */ t(Qr, {
5089
- actions: c.map((t) => di(t, e, s, a)),
5115
+ children: /* @__PURE__ */ t(ri, {
5116
+ actions: c.map((t) => gi(t, e, s, a)),
5090
5117
  density: i,
5091
5118
  iconLabelMode: f,
5092
5119
  label: o,
@@ -5094,18 +5121,18 @@ function gi({ activeToolId: e, className: n, compactLabelMode: r = "auto", densi
5094
5121
  })
5095
5122
  });
5096
5123
  }
5097
- function _i({ className: e, labels: r = {}, onRadiusChange: i, onStrengthChange: a, state: o, variant: s = "desktop", "data-testid": c }) {
5098
- 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 = fi(o.radius, u, d), _ = fi(o.strength, p, m), v = !!o.disabled, y = (e) => {
5099
- i?.(fi(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));
5100
5127
  }, b = (e) => {
5101
- a?.(fi(Number(e.currentTarget.value), p, m));
5128
+ a?.(_i(Number(e.currentTarget.value), p, m));
5102
5129
  };
5103
5130
  return /* @__PURE__ */ n("section", {
5104
5131
  className: l,
5105
5132
  "data-ui-hook": "brush-controls",
5106
5133
  "data-variant": s,
5107
5134
  "data-testid": c,
5108
- children: [/* @__PURE__ */ t(Hr, {
5135
+ children: [/* @__PURE__ */ t(qr, {
5109
5136
  ...r.radiusHint ? { hint: r.radiusHint } : {},
5110
5137
  label: r.radius ?? "Brush radius",
5111
5138
  children: /* @__PURE__ */ n("div", {
@@ -5135,7 +5162,7 @@ function _i({ className: e, labels: r = {}, onRadiusChange: i, onStrengthChange:
5135
5162
  value: g
5136
5163
  })]
5137
5164
  })
5138
- }), /* @__PURE__ */ t(Hr, {
5165
+ }), /* @__PURE__ */ t(qr, {
5139
5166
  ...r.strengthHint ? { hint: r.strengthHint } : {},
5140
5167
  label: r.strength ?? "Brush strength",
5141
5168
  children: /* @__PURE__ */ n("div", {
@@ -5168,7 +5195,7 @@ function _i({ className: e, labels: r = {}, onRadiusChange: i, onStrengthChange:
5168
5195
  })]
5169
5196
  });
5170
5197
  }
5171
- function vi({ 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 }) {
5172
5199
  return /* @__PURE__ */ t("section", {
5173
5200
  "aria-label": a,
5174
5201
  className: ["game-ui-material-swatches", r].filter(Boolean).join(" "),
@@ -5211,14 +5238,14 @@ function vi({ activeMaterialId: e, className: r, disabled: i = !1, label: a, mat
5211
5238
  })
5212
5239
  });
5213
5240
  }
5214
- function yi({ 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 }) {
5215
5242
  return /* @__PURE__ */ t("section", {
5216
5243
  "aria-label": a,
5217
5244
  className: ["game-ui-undo-redo-actions", r].filter(Boolean).join(" "),
5218
5245
  "data-ui-hook": "undo-redo-actions",
5219
5246
  "data-variant": u,
5220
5247
  "data-testid": d,
5221
- children: /* @__PURE__ */ t(Qr, {
5248
+ children: /* @__PURE__ */ t(ri, {
5222
5249
  actions: [{
5223
5250
  disabled: i || !n,
5224
5251
  icon: "undo",
@@ -5244,7 +5271,7 @@ function yi({ canRedo: e = !1, canUndo: n = !1, className: r, disabled: i = !1,
5244
5271
  })
5245
5272
  });
5246
5273
  }
5247
- function bi({ 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 }) {
5248
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";
5249
5276
  return /* @__PURE__ */ t(X, {
5250
5277
  className: h,
@@ -5274,7 +5301,7 @@ function bi({ activeCategoryId: e, categories: r, className: i, density: a = "co
5274
5301
  type: "button",
5275
5302
  children: [
5276
5303
  /* @__PURE__ */ t($, {
5277
- icon: e.icon ?? li[e.id] ?? "home",
5304
+ icon: e.icon ?? mi[e.id] ?? "home",
5278
5305
  size: "sm",
5279
5306
  style: "line"
5280
5307
  }),
@@ -5283,7 +5310,7 @@ function bi({ activeCategoryId: e, categories: r, className: i, density: a = "co
5283
5310
  ]
5284
5311
  }, e.id);
5285
5312
  })
5286
- }), v.length === 0 || !_ ? /* @__PURE__ */ t(qr, {
5313
+ }), v.length === 0 || !_ ? /* @__PURE__ */ t(Qr, {
5287
5314
  description: o,
5288
5315
  icon: "home",
5289
5316
  title: s
@@ -5321,7 +5348,7 @@ function bi({ activeCategoryId: e, categories: r, className: i, density: a = "co
5321
5348
  /* @__PURE__ */ n("span", {
5322
5349
  className: "game-ui-build-item-badges",
5323
5350
  children: [/* @__PURE__ */ t(Q, {
5324
- tone: ui[i],
5351
+ tone: hi[i],
5325
5352
  children: i
5326
5353
  }), e.badges?.map((e) => /* @__PURE__ */ t(Q, {
5327
5354
  tone: e.tone ?? "neutral",
@@ -5339,7 +5366,7 @@ function bi({ activeCategoryId: e, categories: r, className: i, density: a = "co
5339
5366
  })
5340
5367
  });
5341
5368
  }
5342
- function xi({ 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 }) {
5343
5370
  let g = ["game-ui-compact-game-drawer", r].filter(Boolean).join(" "), _ = u ?? `${d.toLowerCase().replace(/[^a-z0-9]+/g, "-") || "tools"}-drawer-panel`;
5344
5371
  return /* @__PURE__ */ n("aside", {
5345
5372
  "aria-label": s,
@@ -5374,7 +5401,7 @@ function xi({ children: e, className: r, closeIcon: i = "close", closeLabel: a =
5374
5401
  })]
5375
5402
  });
5376
5403
  }
5377
- function Si({ status: e }) {
5404
+ function Di({ status: e }) {
5378
5405
  if (!e) return null;
5379
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;
5380
5407
  return /* @__PURE__ */ n("div", {
@@ -5387,7 +5414,7 @@ function Si({ status: e }) {
5387
5414
  children: e.label
5388
5415
  }),
5389
5416
  e.description ? /* @__PURE__ */ t("p", { children: e.description }) : null,
5390
- r ? /* @__PURE__ */ t(Kr, {
5417
+ r ? /* @__PURE__ */ t(Zr, {
5391
5418
  label: e.progressLabel ?? e.label,
5392
5419
  max: a,
5393
5420
  showValue: !0,
@@ -5397,15 +5424,15 @@ function Si({ status: e }) {
5397
5424
  ]
5398
5425
  });
5399
5426
  }
5400
- function Ci({ 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" }) {
5401
5428
  return /* @__PURE__ */ n("div", {
5402
5429
  className: "game-ui-terrain-build-toolbox-body",
5403
5430
  "data-active-mode": i,
5404
5431
  "data-active-tool": a,
5405
5432
  "data-variant": E,
5406
5433
  children: [
5407
- /* @__PURE__ */ t(Si, { status: S }),
5408
- /* @__PURE__ */ t(hi, {
5434
+ /* @__PURE__ */ t(Di, { status: S }),
5435
+ /* @__PURE__ */ t(bi, {
5409
5436
  activeModeId: i,
5410
5437
  disabled: l,
5411
5438
  label: "Tool mode",
@@ -5416,7 +5443,7 @@ function Ci({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5416
5443
  /* @__PURE__ */ n("div", {
5417
5444
  className: "game-ui-terrain-build-main-grid",
5418
5445
  children: [
5419
- /* @__PURE__ */ t(gi, {
5446
+ /* @__PURE__ */ t(xi, {
5420
5447
  activeToolId: a,
5421
5448
  compactLabelMode: C,
5422
5449
  density: c,
@@ -5426,7 +5453,7 @@ function Ci({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5426
5453
  tools: w,
5427
5454
  variant: E
5428
5455
  }),
5429
- /* @__PURE__ */ t(yi, {
5456
+ /* @__PURE__ */ t(wi, {
5430
5457
  canRedo: T?.canRedo,
5431
5458
  canUndo: T?.canUndo,
5432
5459
  disabled: l,
@@ -5437,7 +5464,7 @@ function Ci({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5437
5464
  undoLabel: T?.undoLabel,
5438
5465
  variant: E
5439
5466
  }),
5440
- /* @__PURE__ */ t(_i, {
5467
+ /* @__PURE__ */ t(Si, {
5441
5468
  onRadiusChange: f,
5442
5469
  onStrengthChange: p,
5443
5470
  state: {
@@ -5446,7 +5473,7 @@ function Ci({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5446
5473
  },
5447
5474
  variant: E
5448
5475
  }),
5449
- u.length > 0 ? /* @__PURE__ */ t(vi, {
5476
+ u.length > 0 ? /* @__PURE__ */ t(Ci, {
5450
5477
  activeMaterialId: r,
5451
5478
  disabled: l,
5452
5479
  label: "Terrain materials",
@@ -5456,7 +5483,7 @@ function Ci({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5456
5483
  }) : null
5457
5484
  ]
5458
5485
  }),
5459
- s.length > 0 ? /* @__PURE__ */ t(bi, {
5486
+ s.length > 0 ? /* @__PURE__ */ t(Ti, {
5460
5487
  activeCategoryId: e,
5461
5488
  categories: s,
5462
5489
  density: c,
@@ -5470,12 +5497,12 @@ function Ci({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5470
5497
  ]
5471
5498
  });
5472
5499
  }
5473
- function wi({ className: e, drawerOpen: n = !1, drawerTitle: r = "Terrain and build tools", label: i, onDrawerOpenChange: a, title: o, variant: s = "desktop", "data-testid": c, ...l }) {
5474
- let u = ["game-ui-terrain-build-toolbox", e].filter(Boolean).join(" "), d = /* @__PURE__ */ t(Ci, {
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, {
5475
5502
  ...l,
5476
5503
  variant: s
5477
5504
  });
5478
- return s === "mobile" || s === "small-mobile" ? /* @__PURE__ */ t(xi, {
5505
+ return s === "mobile" || s === "small-mobile" ? /* @__PURE__ */ t(Ei, {
5479
5506
  className: u,
5480
5507
  label: i,
5481
5508
  onOpenChange: a,
@@ -5500,7 +5527,7 @@ function wi({ className: e, drawerOpen: n = !1, drawerTitle: r = "Terrain and bu
5500
5527
  }
5501
5528
  //#endregion
5502
5529
  //#region src/GameContractorTools.tsx
5503
- var Ti = {
5530
+ var Ai = {
5504
5531
  accepted: "success",
5505
5532
  blocked: "danger",
5506
5533
  cancelled: "neutral",
@@ -5509,7 +5536,7 @@ var Ti = {
5509
5536
  queued: "warning",
5510
5537
  readyForReview: "success",
5511
5538
  working: "ai"
5512
- }, Ei = {
5539
+ }, ji = {
5513
5540
  accepted: "check",
5514
5541
  blocked: "alert",
5515
5542
  cancelled: "close",
@@ -5518,26 +5545,26 @@ var Ti = {
5518
5545
  queued: "hourglass",
5519
5546
  readyForReview: "vote",
5520
5547
  working: "energy"
5521
- }, Di = {
5548
+ }, Mi = {
5522
5549
  active: "ai",
5523
5550
  blocked: "danger",
5524
5551
  complete: "success",
5525
5552
  pending: "neutral"
5526
- }, Oi = {
5553
+ }, Ni = {
5527
5554
  blocked: "danger",
5528
5555
  done: "success",
5529
5556
  idle: "neutral",
5530
5557
  queued: "warning",
5531
5558
  working: "ai"
5532
- }, ki = {
5559
+ }, Pi = {
5533
5560
  "local-only": "Local only",
5534
5561
  mock: "Mock run",
5535
5562
  "paid-disabled": "Paid provider off"
5536
- }, Ai = {
5563
+ }, Fi = {
5537
5564
  "local-only": "success",
5538
5565
  mock: "ai",
5539
5566
  "paid-disabled": "warning"
5540
- }, ji = {
5567
+ }, Ii = {
5541
5568
  accepted: [{
5542
5569
  id: "revert",
5543
5570
  label: "Revert",
@@ -5643,17 +5670,17 @@ var Ti = {
5643
5670
  tone: "danger"
5644
5671
  }]
5645
5672
  };
5646
- function Mi(e, t) {
5673
+ function Li(e, t) {
5647
5674
  if (t) return t;
5648
5675
  switch (e) {
5649
5676
  case "readyForReview": return "Ready for review";
5650
5677
  default: return e.replace(/([A-Z])/g, " $1").replace(/^./, (e) => e.toUpperCase());
5651
5678
  }
5652
5679
  }
5653
- function Ni(e) {
5680
+ function Ri(e) {
5654
5681
  return e === "blocked" || e === "cancelled" ? "danger" : e === "accepted" || e === "readyForReview" ? "success" : e === "queued" || e === "draft" || e === "preview" ? "warning" : "accent";
5655
5682
  }
5656
- function Pi(e) {
5683
+ function zi(e) {
5657
5684
  switch (e) {
5658
5685
  case "accepted": return 100;
5659
5686
  case "blocked": return 42;
@@ -5665,7 +5692,7 @@ function Pi(e) {
5665
5692
  case "working": return 64;
5666
5693
  }
5667
5694
  }
5668
- function Fi(e, t, n) {
5695
+ function Bi(e, t, n) {
5669
5696
  let r = {
5670
5697
  disabled: !!(n || e.disabled),
5671
5698
  id: e.id,
@@ -5674,14 +5701,14 @@ function Fi(e, t, n) {
5674
5701
  };
5675
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;
5676
5703
  }
5677
- function Ii(e) {
5704
+ function Vi(e) {
5678
5705
  return e === "danger" || e === "warning" ? "alert" : "status";
5679
5706
  }
5680
- function Li(e) {
5707
+ function Hi(e) {
5681
5708
  return !!(e.before && e.after);
5682
5709
  }
5683
- function Ri({ 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 }) {
5684
- let m = ["game-ui-construction-progress", e].filter(Boolean).join(" "), h = d ?? Pi(s), g = Mi(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);
5685
5712
  return /* @__PURE__ */ n("section", {
5686
5713
  "aria-label": r,
5687
5714
  className: m,
@@ -5693,18 +5720,18 @@ function Ri({ className: e, label: r, max: i = 100, progressLabel: a = "Construc
5693
5720
  /* @__PURE__ */ n("header", {
5694
5721
  className: "game-ui-construction-progress-header",
5695
5722
  children: [/* @__PURE__ */ n("span", { children: [/* @__PURE__ */ t($, {
5696
- icon: Ei[s],
5723
+ icon: ji[s],
5697
5724
  size: "sm"
5698
5725
  }), /* @__PURE__ */ t("strong", { children: a })] }), o ? /* @__PURE__ */ t(Q, {
5699
- tone: Ti[s],
5726
+ tone: Ai[s],
5700
5727
  children: g
5701
5728
  }) : null]
5702
5729
  }),
5703
- /* @__PURE__ */ t(Kr, {
5730
+ /* @__PURE__ */ t(Zr, {
5704
5731
  label: a,
5705
5732
  max: i,
5706
5733
  showValue: !0,
5707
- tone: Ni(s),
5734
+ tone: Ri(s),
5708
5735
  value: h
5709
5736
  }),
5710
5737
  l.length > 0 ? /* @__PURE__ */ t("ol", {
@@ -5719,7 +5746,7 @@ function Ri({ className: e, label: r, max: i = 100, progressLabel: a = "Construc
5719
5746
  }),
5720
5747
  /* @__PURE__ */ n("span", { children: [/* @__PURE__ */ t("strong", { children: e.label }), e.caption ? /* @__PURE__ */ t("small", { children: e.caption }) : null] }),
5721
5748
  /* @__PURE__ */ t(Q, {
5722
- tone: Di[e.status],
5749
+ tone: Mi[e.status],
5723
5750
  children: e.status
5724
5751
  })
5725
5752
  ]
@@ -5731,7 +5758,7 @@ function Ri({ className: e, label: r, max: i = 100, progressLabel: a = "Construc
5731
5758
  children: u.map((e) => /* @__PURE__ */ n("div", {
5732
5759
  className: "game-ui-construction-warning",
5733
5760
  "data-warning-tone": e.tone ?? "warning",
5734
- role: Ii(e.tone),
5761
+ role: Vi(e.tone),
5735
5762
  children: [/* @__PURE__ */ t($, {
5736
5763
  icon: e.tone === "danger" || e.tone === "warning" ? "alert" : "check",
5737
5764
  size: "sm"
@@ -5741,8 +5768,8 @@ function Ri({ className: e, label: r, max: i = 100, progressLabel: a = "Construc
5741
5768
  ]
5742
5769
  });
5743
5770
  }
5744
- function zi({ 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 }) {
5745
- let p = ["game-ui-construction-approval-bar", r].filter(Boolean).join(" "), m = e ?? ji[l], h = u.filter((e) => e.tone !== "success").length, g = m.map((e) => Fi(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));
5746
5773
  return /* @__PURE__ */ n("section", {
5747
5774
  "aria-label": a,
5748
5775
  className: p,
@@ -5753,8 +5780,8 @@ function zi({ actions: e, className: r, disabled: i = !1, label: a, localOnlyLab
5753
5780
  children: [/* @__PURE__ */ n("div", {
5754
5781
  className: "game-ui-construction-approval-meta",
5755
5782
  children: [c ? /* @__PURE__ */ t(Q, {
5756
- tone: Ai[c],
5757
- children: ki[c]
5783
+ tone: Fi[c],
5784
+ children: Pi[c]
5758
5785
  }) : /* @__PURE__ */ t(Q, {
5759
5786
  tone: "success",
5760
5787
  children: o
@@ -5769,21 +5796,21 @@ function zi({ actions: e, className: r, disabled: i = !1, label: a, localOnlyLab
5769
5796
  tone: "success",
5770
5797
  children: "Validation clear"
5771
5798
  })]
5772
- }), g.length > 0 ? /* @__PURE__ */ t(Qr, {
5799
+ }), g.length > 0 ? /* @__PURE__ */ t(ri, {
5773
5800
  actions: g,
5774
5801
  density: d === "small-mobile" ? "dense" : "comfortable",
5775
5802
  label: `${a} actions`
5776
5803
  }) : null]
5777
5804
  });
5778
5805
  }
5779
- function Bi({ 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 }) {
5780
5807
  return /* @__PURE__ */ n("section", {
5781
5808
  "aria-label": o,
5782
5809
  className: ["game-ui-robot-crew-status", e].filter(Boolean).join(" "),
5783
5810
  "data-ui-hook": "robot-crew-status",
5784
5811
  "data-variant": c,
5785
5812
  "data-testid": l,
5786
- children: [s ? /* @__PURE__ */ t("header", { children: /* @__PURE__ */ t("strong", { children: s }) }) : null, r.length === 0 ? /* @__PURE__ */ t(qr, {
5813
+ children: [s ? /* @__PURE__ */ t("header", { children: /* @__PURE__ */ t("strong", { children: s }) }) : null, r.length === 0 ? /* @__PURE__ */ t(Qr, {
5787
5814
  description: i,
5788
5815
  icon: "ai",
5789
5816
  title: a
@@ -5806,7 +5833,7 @@ function Bi({ className: e, crew: r, emptyDescription: i = "Robot crew members a
5806
5833
  ]
5807
5834
  }),
5808
5835
  /* @__PURE__ */ t(Q, {
5809
- tone: Oi[e.status],
5836
+ tone: Ni[e.status],
5810
5837
  children: e.status
5811
5838
  })
5812
5839
  ]
@@ -5814,7 +5841,7 @@ function Bi({ className: e, crew: r, emptyDescription: i = "Robot crew members a
5814
5841
  })]
5815
5842
  });
5816
5843
  }
5817
- function Vi({ 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 }) {
5818
5845
  let u = ["game-ui-before-after-toggle", a].filter(Boolean).join(" "), d = e === "before" ? i : r;
5819
5846
  return /* @__PURE__ */ n("section", {
5820
5847
  "aria-label": o,
@@ -5823,7 +5850,7 @@ function Vi({ activeView: e, after: r, before: i, className: a, label: o, onView
5823
5850
  "data-ui-hook": "before-after-toggle",
5824
5851
  "data-variant": c,
5825
5852
  "data-testid": l,
5826
- children: [/* @__PURE__ */ t(er, {
5853
+ children: [/* @__PURE__ */ t(ar, {
5827
5854
  activeId: e,
5828
5855
  label: `${o} view`,
5829
5856
  ...s ? { onSelect: (e) => s(e) } : {},
@@ -5850,8 +5877,8 @@ function Vi({ activeView: e, after: r, before: i, className: a, label: o, onView
5850
5877
  })]
5851
5878
  });
5852
5879
  }
5853
- function Hi({ 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 }) {
5854
- let f = ["game-ui-construction-job-card", e].filter(Boolean).join(" "), p = Mi(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 ?? [];
5855
5882
  return /* @__PURE__ */ n("article", {
5856
5883
  className: f,
5857
5884
  "data-density": r,
@@ -5871,19 +5898,19 @@ function Hi({ className: e, density: r = "comfortable", job: i, onAction: a, onS
5871
5898
  onClick: () => o?.(i.id),
5872
5899
  type: "button",
5873
5900
  children: [/* @__PURE__ */ t($, {
5874
- icon: Ei[i.status],
5901
+ icon: ji[i.status],
5875
5902
  size: m ? "sm" : "md"
5876
5903
  }), /* @__PURE__ */ n("span", { children: [/* @__PURE__ */ t("strong", { children: i.title }), i.description ? /* @__PURE__ */ t("small", { children: i.description }) : null] })]
5877
5904
  }), /* @__PURE__ */ n("span", {
5878
5905
  className: "game-ui-construction-job-badges",
5879
5906
  children: [
5880
5907
  /* @__PURE__ */ t(Q, {
5881
- tone: Ti[i.status],
5908
+ tone: Ai[i.status],
5882
5909
  children: p
5883
5910
  }),
5884
5911
  i.providerMode ? /* @__PURE__ */ t(Q, {
5885
- tone: Ai[i.providerMode],
5886
- children: ki[i.providerMode]
5912
+ tone: Fi[i.providerMode],
5913
+ children: Pi[i.providerMode]
5887
5914
  }) : null,
5888
5915
  i.badges?.map((e) => /* @__PURE__ */ t(Q, {
5889
5916
  tone: e.tone ?? "neutral",
@@ -5901,7 +5928,7 @@ function Hi({ className: e, density: r = "comfortable", job: i, onAction: a, onS
5901
5928
  h.map((e) => /* @__PURE__ */ n("span", { children: [/* @__PURE__ */ t("small", { children: e.label }), /* @__PURE__ */ t("b", { children: e.value })] }, e.id))
5902
5929
  ]
5903
5930
  }),
5904
- /* @__PURE__ */ t(Ri, {
5931
+ /* @__PURE__ */ t(Ui, {
5905
5932
  label: `${i.title} progress`,
5906
5933
  progressLabel: i.progressLabel,
5907
5934
  status: i.status,
@@ -5912,19 +5939,19 @@ function Hi({ className: e, density: r = "comfortable", job: i, onAction: a, onS
5912
5939
  max: i.progressMax,
5913
5940
  variant: u
5914
5941
  }),
5915
- l && Li(i) ? /* @__PURE__ */ t(Vi, {
5942
+ l && Hi(i) ? /* @__PURE__ */ t(Ki, {
5916
5943
  activeView: "after",
5917
5944
  after: i.after,
5918
5945
  before: i.before,
5919
5946
  label: `${i.title} preview`,
5920
5947
  variant: u
5921
5948
  }) : null,
5922
- i.crew && i.crew.length > 0 ? /* @__PURE__ */ t(Bi, {
5949
+ i.crew && i.crew.length > 0 ? /* @__PURE__ */ t(Gi, {
5923
5950
  crew: i.crew,
5924
5951
  label: `${i.title} robot crew`,
5925
5952
  variant: u
5926
5953
  }) : null,
5927
- c ? /* @__PURE__ */ t(zi, {
5954
+ c ? /* @__PURE__ */ t(Wi, {
5928
5955
  actions: i.actions,
5929
5956
  label: `${i.title} approval`,
5930
5957
  onAction: (e) => a?.(e, i.id),
@@ -5936,8 +5963,8 @@ function Hi({ className: e, density: r = "comfortable", job: i, onAction: a, onS
5936
5963
  ]
5937
5964
  });
5938
5965
  }
5939
- function Ui({ 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 }) {
5940
- return /* @__PURE__ */ t(xi, {
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, {
5941
5968
  className: ["game-ui-compact-job-drawer", n].filter(Boolean).join(" "),
5942
5969
  closeLabel: r,
5943
5970
  disabled: i,
@@ -5953,7 +5980,7 @@ function Ui({ children: e, className: n, closeLabel: r = "Close jobs", disabled:
5953
5980
  children: e ?? /* @__PURE__ */ t("div", {
5954
5981
  className: "game-ui-compact-job-drawer-list",
5955
5982
  tabIndex: 0,
5956
- children: a.map((e) => /* @__PURE__ */ t(Hi, {
5983
+ children: a.map((e) => /* @__PURE__ */ t(qi, {
5957
5984
  density: "dense",
5958
5985
  job: e,
5959
5986
  onAction: s,
@@ -5965,7 +5992,7 @@ function Ui({ children: e, className: n, closeLabel: r = "Close jobs", disabled:
5965
5992
  })
5966
5993
  });
5967
5994
  }
5968
- function Wi({ 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 }) {
5969
5996
  let y = ["game-ui-contractor-panel", r].filter(Boolean).join(" "), b = c.find((e) => e.id === m) ?? c[0];
5970
5997
  return _ === "mobile" || _ === "small-mobile" ? /* @__PURE__ */ n("section", {
5971
5998
  "aria-label": l,
@@ -5974,7 +6001,7 @@ function Wi({ activePreviewView: e = "after", className: r, density: i = "comfor
5974
6001
  "data-variant": _,
5975
6002
  "data-testid": v,
5976
6003
  children: [
5977
- /* @__PURE__ */ t(Ui, {
6004
+ /* @__PURE__ */ t(Ji, {
5978
6005
  jobs: c,
5979
6006
  label: `${l} drawer`,
5980
6007
  onAction: u,
@@ -5986,16 +6013,16 @@ function Wi({ activePreviewView: e = "after", className: r, density: i = "comfor
5986
6013
  triggerLabel: "Contractor",
5987
6014
  variant: _
5988
6015
  }),
5989
- b && !a ? /* @__PURE__ */ t(Hi, {
6016
+ b && !a ? /* @__PURE__ */ t(qi, {
5990
6017
  density: "dense",
5991
6018
  job: b,
5992
6019
  onAction: u,
5993
6020
  onSelect: p,
5994
6021
  selected: !0,
5995
- showBeforeAfter: Li(b),
6022
+ showBeforeAfter: Hi(b),
5996
6023
  variant: _
5997
6024
  }) : null,
5998
- b ? null : /* @__PURE__ */ t(qr, {
6025
+ b ? null : /* @__PURE__ */ t(Qr, {
5999
6026
  description: o,
6000
6027
  icon: "energy",
6001
6028
  title: s
@@ -6016,7 +6043,7 @@ function Wi({ activePreviewView: e = "after", className: r, density: i = "comfor
6016
6043
  className: "game-ui-contractor-panel-subtitle",
6017
6044
  children: h
6018
6045
  }) : null,
6019
- c.length === 0 ? /* @__PURE__ */ t(qr, {
6046
+ c.length === 0 ? /* @__PURE__ */ t(Qr, {
6020
6047
  description: o,
6021
6048
  icon: "energy",
6022
6049
  title: s
@@ -6027,7 +6054,7 @@ function Wi({ activePreviewView: e = "after", className: r, density: i = "comfor
6027
6054
  "aria-label": "Construction job queue",
6028
6055
  className: "game-ui-contractor-job-list",
6029
6056
  tabIndex: 0,
6030
- children: c.map((e) => /* @__PURE__ */ t(Hi, {
6057
+ children: c.map((e) => /* @__PURE__ */ t(qi, {
6031
6058
  density: i,
6032
6059
  job: e,
6033
6060
  onAction: u,
@@ -6040,7 +6067,7 @@ function Wi({ activePreviewView: e = "after", className: r, density: i = "comfor
6040
6067
  className: "game-ui-contractor-detail",
6041
6068
  "aria-label": `${b.title} detail`,
6042
6069
  children: [
6043
- /* @__PURE__ */ t(Ri, {
6070
+ /* @__PURE__ */ t(Ui, {
6044
6071
  label: `${b.title} progress detail`,
6045
6072
  progressLabel: b.progressLabel,
6046
6073
  status: b.status,
@@ -6051,7 +6078,7 @@ function Wi({ activePreviewView: e = "after", className: r, density: i = "comfor
6051
6078
  max: b.progressMax,
6052
6079
  variant: _
6053
6080
  }),
6054
- Li(b) ? /* @__PURE__ */ t(Vi, {
6081
+ Hi(b) ? /* @__PURE__ */ t(Ki, {
6055
6082
  activeView: e,
6056
6083
  after: b.after,
6057
6084
  before: b.before,
@@ -6059,13 +6086,13 @@ function Wi({ activePreviewView: e = "after", className: r, density: i = "comfor
6059
6086
  onViewChange: f,
6060
6087
  variant: _
6061
6088
  }) : null,
6062
- /* @__PURE__ */ t(Bi, {
6089
+ /* @__PURE__ */ t(Gi, {
6063
6090
  crew: b.crew ?? [],
6064
6091
  label: `${b.title} robot crew`,
6065
6092
  title: "Robot crew",
6066
6093
  variant: _
6067
6094
  }),
6068
- /* @__PURE__ */ t(zi, {
6095
+ /* @__PURE__ */ t(Wi, {
6069
6096
  actions: b.actions,
6070
6097
  label: `${b.title} approval`,
6071
6098
  onAction: u ? (e) => u(e, b.id) : void 0,
@@ -6083,16 +6110,16 @@ function Wi({ activePreviewView: e = "after", className: r, density: i = "comfor
6083
6110
  }
6084
6111
  //#endregion
6085
6112
  //#region src/GamePanelSystem.tsx
6086
- function Gi(...e) {
6113
+ function Xi(...e) {
6087
6114
  return e.filter(Boolean).join(" ");
6088
6115
  }
6089
- var Ki = {
6116
+ var Zi = {
6090
6117
  collapse: "Collapse",
6091
6118
  expand: "Expand"
6092
6119
  };
6093
- function qi({ 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 }) {
6094
6121
  let p = u(), [h, g] = m(a), _ = c ?? h, v = {
6095
- ...Ki,
6122
+ ...Zi,
6096
6123
  ...o
6097
6124
  }, y = () => {
6098
6125
  let e = !_;
@@ -6100,7 +6127,7 @@ function qi({ actions: e, children: r, className: i, defaultOpen: a = !0, labels
6100
6127
  };
6101
6128
  return /* @__PURE__ */ n("section", {
6102
6129
  ...f,
6103
- className: Gi("game-ui-collapsible", i),
6130
+ className: Xi("game-ui-collapsible", i),
6104
6131
  "data-open": _,
6105
6132
  "data-panel-tone": d,
6106
6133
  children: [/* @__PURE__ */ n("header", {
@@ -6139,13 +6166,13 @@ function qi({ actions: e, children: r, className: i, defaultOpen: a = !0, labels
6139
6166
  })]
6140
6167
  });
6141
6168
  }
6142
- var Ji = {
6169
+ var $i = {
6143
6170
  close: "Close",
6144
6171
  maximize: "Maximize",
6145
6172
  minimize: "Minimize",
6146
6173
  restore: "Restore"
6147
6174
  };
6148
- function Yi({ kind: e }) {
6175
+ function ea({ kind: e }) {
6149
6176
  return /* @__PURE__ */ t("svg", {
6150
6177
  "aria-hidden": "true",
6151
6178
  fill: "none",
@@ -6165,9 +6192,9 @@ function Yi({ kind: e }) {
6165
6192
  })
6166
6193
  });
6167
6194
  }
6168
- function Xi({ 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 }) {
6169
6196
  let [g, _] = m(o), v = f ?? g, y = {
6170
- ...Ji,
6197
+ ...$i,
6171
6198
  ...l
6172
6199
  }, b = (e) => {
6173
6200
  f === void 0 && _(e), d?.(e);
@@ -6175,7 +6202,7 @@ function Xi({ allowMaximize: e = !0, allowMinimize: r = !0, children: i, classNa
6175
6202
  return /* @__PURE__ */ n("section", {
6176
6203
  ...h,
6177
6204
  "aria-label": p,
6178
- className: Gi("game-ui-window", a),
6205
+ className: Xi("game-ui-window", a),
6179
6206
  "data-window-state": v,
6180
6207
  role: "group",
6181
6208
  children: [/* @__PURE__ */ n("header", {
@@ -6198,21 +6225,21 @@ function Xi({ allowMaximize: e = !0, allowMinimize: r = !0, children: i, classNa
6198
6225
  className: "game-ui-icon-button game-ui-window-button",
6199
6226
  onClick: () => b(x ? "normal" : "minimized"),
6200
6227
  type: "button",
6201
- children: /* @__PURE__ */ t(Yi, { kind: x ? "restore" : "minimize" })
6228
+ children: /* @__PURE__ */ t(ea, { kind: x ? "restore" : "minimize" })
6202
6229
  }) : null,
6203
6230
  e ? /* @__PURE__ */ t("button", {
6204
6231
  "aria-label": S ? y.restore : y.maximize,
6205
6232
  className: "game-ui-icon-button game-ui-window-button",
6206
6233
  onClick: () => b(S ? "normal" : "maximized"),
6207
6234
  type: "button",
6208
- children: /* @__PURE__ */ t(Yi, { kind: S ? "restore" : "maximize" })
6235
+ children: /* @__PURE__ */ t(ea, { kind: S ? "restore" : "maximize" })
6209
6236
  }) : null,
6210
6237
  u ? /* @__PURE__ */ t("button", {
6211
6238
  "aria-label": y.close,
6212
6239
  className: "game-ui-icon-button game-ui-window-button",
6213
6240
  onClick: u,
6214
6241
  type: "button",
6215
- children: /* @__PURE__ */ t(Yi, { kind: "close" })
6242
+ children: /* @__PURE__ */ t(ea, { kind: "close" })
6216
6243
  }) : null
6217
6244
  ]
6218
6245
  })
@@ -6232,14 +6259,14 @@ function Xi({ allowMaximize: e = !0, allowMinimize: r = !0, children: i, classNa
6232
6259
  })]
6233
6260
  });
6234
6261
  }
6235
- function Zi({ 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 }) {
6236
6263
  let h = p(null), g = u();
6237
6264
  return l(() => {
6238
6265
  let e = h.current;
6239
6266
  e && (c && !e.open && e.showModal(), !c && e.open && e.close());
6240
6267
  }, [c]), /* @__PURE__ */ t("dialog", {
6241
6268
  "aria-labelledby": g,
6242
- className: Gi("game-ui-modal", r),
6269
+ className: Xi("game-ui-modal", r),
6243
6270
  "data-position": d,
6244
6271
  "data-size": f,
6245
6272
  onCancel: (e) => {
@@ -6263,7 +6290,7 @@ function Zi({ children: e, className: r, closeLabel: i = "Close", closeOnBackdro
6263
6290
  className: "game-ui-icon-button game-ui-window-button",
6264
6291
  onClick: s,
6265
6292
  type: "button",
6266
- children: /* @__PURE__ */ t(Yi, { kind: "close" })
6293
+ children: /* @__PURE__ */ t(ea, { kind: "close" })
6267
6294
  })]
6268
6295
  }),
6269
6296
  /* @__PURE__ */ t("div", {
@@ -6280,7 +6307,7 @@ function Zi({ children: e, className: r, closeLabel: i = "Close", closeOnBackdro
6280
6307
  }
6281
6308
  //#endregion
6282
6309
  //#region src/previewStates.ts
6283
- var Qi = [
6310
+ var ra = [
6284
6311
  {
6285
6312
  id: "history-human-long",
6286
6313
  kind: "human",
@@ -6302,9 +6329,9 @@ var Qi = [
6302
6329
  speaker: "Table",
6303
6330
  text: "Three votes are locked. One more read can still change the pact."
6304
6331
  }
6305
- ], $i = {
6332
+ ], ia = {
6333
+ ...B,
6306
6334
  ...V,
6307
- ..._e,
6308
6335
  ...ve,
6309
6336
  ...H,
6310
6337
  ...U,
@@ -6312,13 +6339,13 @@ var Qi = [
6312
6339
  ...ye,
6313
6340
  ...xe,
6314
6341
  ...z
6315
- }, ea = {
6342
+ }, aa = {
6316
6343
  toneAttr: "data-game-ui-tone",
6317
6344
  toneGlass: "glass",
6318
6345
  densityAttr: "data-game-ui-density",
6319
6346
  densityCompact: "compact",
6320
6347
  scopeClass: "game-ui-overlay-scope"
6321
- }, ta = be, na = /* @__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("."), ra = {
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 = {
6322
6349
  en: {
6323
6350
  triggerLabel: "EN",
6324
6351
  langMenuLabel: "Preview language",
@@ -6520,7 +6547,7 @@ var Qi = [
6520
6547
  hint: "Rotate manually if this browser blocks automatic landscape lock."
6521
6548
  },
6522
6549
  historyLabel: "Round history",
6523
- history: Qi
6550
+ history: ra
6524
6551
  },
6525
6552
  "zh-CN": {
6526
6553
  triggerLabel: "中",
@@ -6747,18 +6774,18 @@ var Qi = [
6747
6774
  }
6748
6775
  ]
6749
6776
  }
6750
- }, ia = i(ra.en), aa = () => c(ia), oa = [
6777
+ }, la = i(ca.en), ua = () => c(la), da = [
6751
6778
  {
6752
6779
  id: "colors",
6753
6780
  tokens: L
6754
6781
  },
6755
6782
  {
6756
6783
  id: "semantic",
6757
- tokens: V
6784
+ tokens: B
6758
6785
  },
6759
6786
  {
6760
6787
  id: "typography",
6761
- tokens: _e
6788
+ tokens: V
6762
6789
  },
6763
6790
  {
6764
6791
  id: "spacing",
@@ -6778,7 +6805,7 @@ var Qi = [
6778
6805
  },
6779
6806
  {
6780
6807
  id: "overlayGlass",
6781
- tokens: B
6808
+ tokens: _e
6782
6809
  },
6783
6810
  {
6784
6811
  id: "liquidMetal",
@@ -6801,7 +6828,7 @@ var Qi = [
6801
6828
  tokens: xe
6802
6829
  }
6803
6830
  ];
6804
- function sa({ id: e, label: r, tokens: i }) {
6831
+ function fa({ id: e, label: r, tokens: i }) {
6805
6832
  return /* @__PURE__ */ n("article", {
6806
6833
  className: "game-ui-token-card",
6807
6834
  children: [/* @__PURE__ */ t("h3", { children: r }), /* @__PURE__ */ t("div", {
@@ -6813,7 +6840,7 @@ function sa({ id: e, label: r, tokens: i }) {
6813
6840
  })]
6814
6841
  });
6815
6842
  }
6816
- function ca() {
6843
+ function pa() {
6817
6844
  return /* @__PURE__ */ t("div", {
6818
6845
  "aria-label": "Clay color swatches",
6819
6846
  className: "game-ui-swatch-grid",
@@ -6823,8 +6850,8 @@ function ca() {
6823
6850
  }, e))
6824
6851
  });
6825
6852
  }
6826
- function la() {
6827
- let { type: e } = aa();
6853
+ function ma() {
6854
+ let { type: e } = ua();
6828
6855
  return /* @__PURE__ */ n("div", {
6829
6856
  className: "game-ui-type-scale",
6830
6857
  children: [
@@ -6839,8 +6866,8 @@ function la() {
6839
6866
  ]
6840
6867
  });
6841
6868
  }
6842
- function ua() {
6843
- let { buttons: e } = aa();
6869
+ function ha() {
6870
+ let { buttons: e } = ua();
6844
6871
  return /* @__PURE__ */ n(X, {
6845
6872
  title: e.panelTitle,
6846
6873
  tone: "strong",
@@ -6878,9 +6905,9 @@ function ua() {
6878
6905
  /* @__PURE__ */ n("div", {
6879
6906
  className: "game-ui-component-row",
6880
6907
  children: [
6881
- /* @__PURE__ */ t(Zn, {
6908
+ /* @__PURE__ */ t(nr, {
6882
6909
  label: e.settingsTip,
6883
- children: /* @__PURE__ */ t(Xn, {
6910
+ children: /* @__PURE__ */ t(tr, {
6884
6911
  label: e.settingsTip,
6885
6912
  children: /* @__PURE__ */ t($, {
6886
6913
  icon: "settings",
@@ -6888,7 +6915,7 @@ function ua() {
6888
6915
  })
6889
6916
  })
6890
6917
  }),
6891
- /* @__PURE__ */ t(Xn, {
6918
+ /* @__PURE__ */ t(tr, {
6892
6919
  label: e.copyInvite,
6893
6920
  children: /* @__PURE__ */ t($, {
6894
6921
  icon: "copy",
@@ -6909,7 +6936,7 @@ function ua() {
6909
6936
  })
6910
6937
  ]
6911
6938
  }),
6912
- /* @__PURE__ */ t(er, {
6939
+ /* @__PURE__ */ t(ar, {
6913
6940
  activeId: "live",
6914
6941
  label: e.segmentedLabel,
6915
6942
  options: [
@@ -6927,7 +6954,7 @@ function ua() {
6927
6954
  }
6928
6955
  ]
6929
6956
  }),
6930
- /* @__PURE__ */ t(Qn, {
6957
+ /* @__PURE__ */ t(rr, {
6931
6958
  activeId: "portal",
6932
6959
  tabs: [
6933
6960
  {
@@ -6944,7 +6971,7 @@ function ua() {
6944
6971
  }
6945
6972
  ]
6946
6973
  }),
6947
- /* @__PURE__ */ t(rr, {
6974
+ /* @__PURE__ */ t(cr, {
6948
6975
  items: [
6949
6976
  {
6950
6977
  id: "wave",
@@ -6961,28 +6988,28 @@ function ua() {
6961
6988
  ],
6962
6989
  label: e.radialLabel
6963
6990
  }),
6964
- /* @__PURE__ */ t(tr, {
6991
+ /* @__PURE__ */ t(or, {
6965
6992
  label: e.sliderLabel,
6966
6993
  max: 100,
6967
6994
  min: 0,
6968
6995
  value: 68
6969
6996
  }),
6970
- /* @__PURE__ */ t(nr, {
6997
+ /* @__PURE__ */ t(sr, {
6971
6998
  checked: !0,
6972
6999
  label: e.toggleLabel
6973
7000
  })
6974
7001
  ]
6975
7002
  });
6976
7003
  }
6977
- function da() {
6978
- let { hud: e, tiles: r } = aa();
7004
+ function ga() {
7005
+ let { hud: e, tiles: r } = ua();
6979
7006
  return /* @__PURE__ */ n("div", {
6980
7007
  className: "game-ui-stage-demo",
6981
7008
  children: [/* @__PURE__ */ n("div", {
6982
7009
  "aria-label": "Clay world HUD preview",
6983
7010
  className: "game-ui-stage-world",
6984
7011
  children: [
6985
- /* @__PURE__ */ t(kr, {
7012
+ /* @__PURE__ */ t(Pr, {
6986
7013
  label: e.label,
6987
7014
  items: [
6988
7015
  {
@@ -7005,15 +7032,15 @@ function da() {
7005
7032
  value: "02:46"
7006
7033
  }
7007
7034
  ],
7008
- actions: /* @__PURE__ */ n(Yn, {
7035
+ actions: /* @__PURE__ */ n(er, {
7009
7036
  label: e.tools,
7010
- children: [/* @__PURE__ */ t(Xn, {
7037
+ children: [/* @__PURE__ */ t(tr, {
7011
7038
  label: e.history,
7012
7039
  children: /* @__PURE__ */ t($, {
7013
7040
  icon: "scroll",
7014
7041
  size: "sm"
7015
7042
  })
7016
- }), /* @__PURE__ */ t(Xn, {
7043
+ }), /* @__PURE__ */ t(tr, {
7017
7044
  label: e.settings,
7018
7045
  children: /* @__PURE__ */ t($, {
7019
7046
  icon: "settings",
@@ -7053,7 +7080,7 @@ function da() {
7053
7080
  }), /* @__PURE__ */ n("div", {
7054
7081
  className: "game-ui-stage-sidecar",
7055
7082
  children: [
7056
- /* @__PURE__ */ t(jr, {
7083
+ /* @__PURE__ */ t(Ir, {
7057
7084
  badge: r.daily.badge,
7058
7085
  icon: "scroll",
7059
7086
  kicker: r.daily.kicker,
@@ -7062,7 +7089,7 @@ function da() {
7062
7089
  title: r.daily.title,
7063
7090
  tone: "daily"
7064
7091
  }),
7065
- /* @__PURE__ */ t(jr, {
7092
+ /* @__PURE__ */ t(Ir, {
7066
7093
  badge: r.portal.badge,
7067
7094
  icon: "portal",
7068
7095
  kicker: r.portal.kicker,
@@ -7070,7 +7097,7 @@ function da() {
7070
7097
  title: r.portal.title,
7071
7098
  tone: "portal"
7072
7099
  }),
7073
- /* @__PURE__ */ t(jr, {
7100
+ /* @__PURE__ */ t(Ir, {
7074
7101
  icon: "energy",
7075
7102
  kicker: r.host.kicker,
7076
7103
  summary: r.host.summary,
@@ -7081,21 +7108,21 @@ function da() {
7081
7108
  })]
7082
7109
  });
7083
7110
  }
7084
- function fa() {
7085
- let { hud: e, buttons: r } = aa(), i = (i) => {
7111
+ function _a() {
7112
+ let { hud: e, buttons: r } = ua(), i = (i) => {
7086
7113
  let a = i === "glass";
7087
7114
  return /* @__PURE__ */ n("div", {
7088
7115
  "aria-label": a ? "Overlay glass HUD" : "Default clay HUD",
7089
7116
  className: [
7090
7117
  "game-ui-stage-world",
7091
7118
  "game-ui-overlay-glass-proof",
7092
- a ? ea.scopeClass : void 0
7119
+ a ? aa.scopeClass : void 0
7093
7120
  ].filter(Boolean).join(" "),
7094
7121
  ...a ? {
7095
- [ea.toneAttr]: ea.toneGlass,
7096
- [ea.densityAttr]: ea.densityCompact
7122
+ [aa.toneAttr]: aa.toneGlass,
7123
+ [aa.densityAttr]: aa.densityCompact
7097
7124
  } : {},
7098
- children: [/* @__PURE__ */ t(kr, {
7125
+ children: [/* @__PURE__ */ t(Pr, {
7099
7126
  label: e.label,
7100
7127
  items: [
7101
7128
  {
@@ -7118,15 +7145,15 @@ function fa() {
7118
7145
  value: "02:46"
7119
7146
  }
7120
7147
  ],
7121
- actions: /* @__PURE__ */ n(Yn, {
7148
+ actions: /* @__PURE__ */ n(er, {
7122
7149
  label: e.tools,
7123
- children: [/* @__PURE__ */ t(Xn, {
7150
+ children: [/* @__PURE__ */ t(tr, {
7124
7151
  label: e.history,
7125
7152
  children: /* @__PURE__ */ t($, {
7126
7153
  icon: "scroll",
7127
7154
  size: "sm"
7128
7155
  })
7129
- }), /* @__PURE__ */ t(Xn, {
7156
+ }), /* @__PURE__ */ t(tr, {
7130
7157
  label: e.settings,
7131
7158
  children: /* @__PURE__ */ t($, {
7132
7159
  icon: "settings",
@@ -7147,7 +7174,7 @@ function fa() {
7147
7174
  tone: "success",
7148
7175
  children: r.readyBadge
7149
7176
  }),
7150
- /* @__PURE__ */ t(Kr, {
7177
+ /* @__PURE__ */ t(Zr, {
7151
7178
  label: e.reveal,
7152
7179
  value: 68
7153
7180
  })
@@ -7185,22 +7212,22 @@ function fa() {
7185
7212
  children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t("strong", { children: "Overlay glass + compact" }), /* @__PURE__ */ n("span", {
7186
7213
  className: "game-ui-small-copy",
7187
7214
  children: [
7188
- ea.toneAttr,
7215
+ aa.toneAttr,
7189
7216
  "=\"",
7190
- ea.toneGlass,
7217
+ aa.toneGlass,
7191
7218
  "\" ·",
7192
7219
  " ",
7193
- ea.densityAttr,
7220
+ aa.densityAttr,
7194
7221
  "=\"",
7195
- ea.densityCompact,
7222
+ aa.densityCompact,
7196
7223
  "\""
7197
7224
  ]
7198
7225
  })] }), i("glass")]
7199
7226
  })]
7200
7227
  });
7201
7228
  }
7202
- function pa() {
7203
- let { liquidMetal: e } = aa();
7229
+ function va() {
7230
+ let { liquidMetal: e } = ua();
7204
7231
  return /* @__PURE__ */ n("div", {
7205
7232
  className: "game-ui-liquid-metal-compare",
7206
7233
  children: [/* @__PURE__ */ t(X, {
@@ -7208,7 +7235,7 @@ function pa() {
7208
7235
  tone: "strong",
7209
7236
  children: /* @__PURE__ */ t("div", {
7210
7237
  className: "game-ui-liquid-metal-stage",
7211
- children: /* @__PURE__ */ t(ge, {
7238
+ children: /* @__PURE__ */ t(I, {
7212
7239
  renderer: "css",
7213
7240
  children: e.cta
7214
7241
  })
@@ -7218,7 +7245,7 @@ function pa() {
7218
7245
  tone: "strong",
7219
7246
  children: /* @__PURE__ */ t("div", {
7220
7247
  className: "game-ui-liquid-metal-stage",
7221
- children: /* @__PURE__ */ t(ge, {
7248
+ children: /* @__PURE__ */ t(I, {
7222
7249
  renderer: "webgl",
7223
7250
  children: e.cta
7224
7251
  })
@@ -7226,13 +7253,13 @@ function pa() {
7226
7253
  })]
7227
7254
  });
7228
7255
  }
7229
- function ma() {
7230
- let { modals: e } = aa();
7256
+ function ya() {
7257
+ let { modals: e } = ua();
7231
7258
  return /* @__PURE__ */ n("div", {
7232
7259
  className: "game-ui-preview-two-up",
7233
- children: [/* @__PURE__ */ n(qn, {
7260
+ children: [/* @__PURE__ */ n(Qn, {
7234
7261
  title: e.dialogTitle,
7235
- children: [/* @__PURE__ */ t("p", { children: e.dialogBody }), /* @__PURE__ */ n(Yn, {
7262
+ children: [/* @__PURE__ */ t("p", { children: e.dialogBody }), /* @__PURE__ */ n(er, {
7236
7263
  label: e.actionsLabel,
7237
7264
  children: [/* @__PURE__ */ t(w, {
7238
7265
  variant: "primary",
@@ -7246,16 +7273,16 @@ function ma() {
7246
7273
  title: e.panelTitle,
7247
7274
  tone: "strong",
7248
7275
  children: [
7249
- /* @__PURE__ */ t(ir, {
7276
+ /* @__PURE__ */ t(lr, {
7250
7277
  tone: "success",
7251
7278
  children: e.toastOk
7252
7279
  }),
7253
- /* @__PURE__ */ t(ir, {
7280
+ /* @__PURE__ */ t(lr, {
7254
7281
  tone: "danger",
7255
7282
  children: e.toastErr
7256
7283
  }),
7257
- /* @__PURE__ */ t(Fr, { label: e.loading }),
7258
- /* @__PURE__ */ t(Fr, {
7284
+ /* @__PURE__ */ t(Br, { label: e.loading }),
7285
+ /* @__PURE__ */ t(Br, {
7259
7286
  label: e.loadingErr,
7260
7287
  tone: "error"
7261
7288
  })
@@ -7263,14 +7290,14 @@ function ma() {
7263
7290
  })]
7264
7291
  });
7265
7292
  }
7266
- function ha() {
7267
- let { cards: e } = aa();
7293
+ function ba() {
7294
+ let { cards: e } = ua();
7268
7295
  return /* @__PURE__ */ n("div", {
7269
7296
  className: "game-ui-preview-two-up",
7270
7297
  children: [/* @__PURE__ */ t(X, {
7271
7298
  title: e.fanTitle,
7272
7299
  tone: "strong",
7273
- children: /* @__PURE__ */ t(Ar, {
7300
+ children: /* @__PURE__ */ t(Fr, {
7274
7301
  label: e.fanLabel,
7275
7302
  cards: [
7276
7303
  {
@@ -7302,16 +7329,16 @@ function ha() {
7302
7329
  }), /* @__PURE__ */ n("div", {
7303
7330
  className: "game-ui-asset-path-grid",
7304
7331
  children: [
7305
- /* @__PURE__ */ t("code", { children: hr.catalog.manifest }),
7306
- /* @__PURE__ */ t("code", { children: hr.catalog.sourceCatalog }),
7307
- /* @__PURE__ */ t("code", { children: hr.buttons.primary }),
7308
- /* @__PURE__ */ t("code", { children: hr.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 })
7309
7336
  ]
7310
7337
  })]
7311
7338
  })]
7312
7339
  });
7313
7340
  }
7314
- var ga = [
7341
+ var xa = [
7315
7342
  {
7316
7343
  id: "terrain",
7317
7344
  label: "Terrain",
@@ -7327,7 +7354,7 @@ var ga = [
7327
7354
  label: "Place",
7328
7355
  icon: "gem"
7329
7356
  }
7330
- ], _a = [
7357
+ ], Sa = [
7331
7358
  {
7332
7359
  id: "raise",
7333
7360
  label: "Raise",
@@ -7353,7 +7380,7 @@ var ga = [
7353
7380
  label: "Paint",
7354
7381
  shortcut: "5"
7355
7382
  }
7356
- ], va = [
7383
+ ], Ca = [
7357
7384
  {
7358
7385
  id: "grass",
7359
7386
  label: "Grass",
@@ -7369,7 +7396,7 @@ var ga = [
7369
7396
  label: "Path",
7370
7397
  color: "#b98d5d"
7371
7398
  }
7372
- ], ya = [{
7399
+ ], wa = [{
7373
7400
  id: "foundation",
7374
7401
  label: "Foundation",
7375
7402
  icon: "home",
@@ -7388,10 +7415,10 @@ var ga = [
7388
7415
  status: "ready"
7389
7416
  }]
7390
7417
  }];
7391
- function ba() {
7418
+ function Ta() {
7392
7419
  return /* @__PURE__ */ n("div", {
7393
7420
  className: "game-ui-preview-two-up",
7394
- children: [/* @__PURE__ */ t(wi, {
7421
+ children: [/* @__PURE__ */ t(ki, {
7395
7422
  activeBuildCategoryId: "foundation",
7396
7423
  activeMaterialId: "grass",
7397
7424
  activeModeId: "terrain",
@@ -7400,10 +7427,10 @@ function ba() {
7400
7427
  radius: 2.75,
7401
7428
  strength: .45
7402
7429
  },
7403
- buildCategories: ya,
7430
+ buildCategories: wa,
7404
7431
  label: "Desktop terrain and build tools",
7405
- materials: va,
7406
- modes: ga,
7432
+ materials: Ca,
7433
+ modes: xa,
7407
7434
  selectedBuildItemId: "floor-2x2",
7408
7435
  status: {
7409
7436
  label: "Ready",
@@ -7414,12 +7441,12 @@ function ba() {
7414
7441
  progressValue: 68
7415
7442
  },
7416
7443
  title: "Island tools",
7417
- tools: _a,
7444
+ tools: Sa,
7418
7445
  undoRedo: {
7419
7446
  canRedo: !1,
7420
7447
  canUndo: !0
7421
7448
  }
7422
- }), /* @__PURE__ */ t(wi, {
7449
+ }), /* @__PURE__ */ t(ki, {
7423
7450
  activeBuildCategoryId: "foundation",
7424
7451
  activeMaterialId: "path",
7425
7452
  activeModeId: "terrain",
@@ -7428,11 +7455,11 @@ function ba() {
7428
7455
  radius: 1.5,
7429
7456
  strength: .3
7430
7457
  },
7431
- buildCategories: ya,
7458
+ buildCategories: wa,
7432
7459
  drawerOpen: !0,
7433
7460
  label: "Small mobile terrain drawer",
7434
- materials: va,
7435
- modes: ga,
7461
+ materials: Ca,
7462
+ modes: xa,
7436
7463
  selectedBuildItemId: "floor-2x2",
7437
7464
  status: {
7438
7465
  label: "Blocked",
@@ -7440,7 +7467,7 @@ function ba() {
7440
7467
  description: "This edit would bury a placed object."
7441
7468
  },
7442
7469
  title: "Tools",
7443
- tools: _a,
7470
+ tools: Sa,
7444
7471
  undoRedo: {
7445
7472
  canRedo: !0,
7446
7473
  canUndo: !0
@@ -7449,7 +7476,7 @@ function ba() {
7449
7476
  })]
7450
7477
  });
7451
7478
  }
7452
- function xa({ label: e, mode: r }) {
7479
+ function Ea({ label: e, mode: r }) {
7453
7480
  return /* @__PURE__ */ n("div", {
7454
7481
  className: "game-ui-construction-preview-card",
7455
7482
  "data-preview": r,
@@ -7463,7 +7490,7 @@ function xa({ label: e, mode: r }) {
7463
7490
  ]
7464
7491
  });
7465
7492
  }
7466
- var Sa = [
7493
+ var Da = [
7467
7494
  {
7468
7495
  id: "preview-deck",
7469
7496
  title: "Deck robot crew",
@@ -7524,7 +7551,7 @@ var Sa = [
7524
7551
  before: {
7525
7552
  label: "Before",
7526
7553
  caption: "Uneven terrain pad.",
7527
- content: /* @__PURE__ */ t(xa, {
7554
+ content: /* @__PURE__ */ t(Ea, {
7528
7555
  label: "Rough pad",
7529
7556
  mode: "before"
7530
7557
  })
@@ -7532,7 +7559,7 @@ var Sa = [
7532
7559
  after: {
7533
7560
  label: "After",
7534
7561
  caption: "Flattened foundation pad with safe clearance.",
7535
- content: /* @__PURE__ */ t(xa, {
7562
+ content: /* @__PURE__ */ t(Ea, {
7536
7563
  label: "Foundation ready",
7537
7564
  mode: "after"
7538
7565
  })
@@ -7561,19 +7588,19 @@ var Sa = [
7561
7588
  }]
7562
7589
  }
7563
7590
  ];
7564
- function Ca() {
7591
+ function Oa() {
7565
7592
  return /* @__PURE__ */ n("div", {
7566
7593
  className: "game-ui-preview-two-up",
7567
- children: [/* @__PURE__ */ t(Wi, {
7568
- jobs: Sa,
7594
+ children: [/* @__PURE__ */ t(Yi, {
7595
+ jobs: Da,
7569
7596
  label: "AI contractor jobs",
7570
7597
  selectedJobId: "review-house-pad",
7571
7598
  subtitle: "Official contractor UI covers drafts, previews, robot work, validation, review, and local-only provider boundaries.",
7572
7599
  title: "AI contractor",
7573
7600
  variant: "desktop"
7574
- }), /* @__PURE__ */ t(Wi, {
7601
+ }), /* @__PURE__ */ t(Yi, {
7575
7602
  drawerOpen: !0,
7576
- jobs: Sa,
7603
+ jobs: Da,
7577
7604
  label: "Small mobile contractor jobs",
7578
7605
  selectedJobId: "blocked-fence",
7579
7606
  title: "Contractor",
@@ -7581,10 +7608,10 @@ function Ca() {
7581
7608
  })]
7582
7609
  });
7583
7610
  }
7584
- function wa() {
7585
- return /* @__PURE__ */ t(Jr, {
7611
+ function ka() {
7612
+ return /* @__PURE__ */ t($r, {
7586
7613
  title: "OwnMySpace island editor preview",
7587
- hud: /* @__PURE__ */ t(Xr, {
7614
+ hud: /* @__PURE__ */ t(ti, {
7588
7615
  label: "Island facts",
7589
7616
  facts: [
7590
7617
  {
@@ -7608,11 +7635,11 @@ function wa() {
7608
7635
  }
7609
7636
  ]
7610
7637
  }),
7611
- movementPad: /* @__PURE__ */ t(ti, {
7638
+ movementPad: /* @__PURE__ */ t(oi, {
7612
7639
  helpText: "WASD or arrows",
7613
7640
  label: "Move avatar"
7614
7641
  }),
7615
- assetLibrary: /* @__PURE__ */ t(oi, {
7642
+ assetLibrary: /* @__PURE__ */ t(di, {
7616
7643
  label: "Placeable assets",
7617
7644
  title: "Assets",
7618
7645
  subtitle: "Starter, generated, and imported assets stay visibly distinct but share one placement path.",
@@ -7659,7 +7686,7 @@ function wa() {
7659
7686
  }
7660
7687
  ]
7661
7688
  }),
7662
- bottomBar: /* @__PURE__ */ t(si, {
7689
+ bottomBar: /* @__PURE__ */ t(fi, {
7663
7690
  title: "Placement",
7664
7691
  selectedTitle: "Manual chair",
7665
7692
  placedObjects: 3,
@@ -7695,7 +7722,7 @@ function wa() {
7695
7722
  })
7696
7723
  });
7697
7724
  }
7698
- var Ta = [{
7725
+ var Aa = [{
7699
7726
  id: "starter",
7700
7727
  label: "Starter pieces",
7701
7728
  source: "starter",
@@ -7726,7 +7753,7 @@ var Ta = [{
7726
7753
  }
7727
7754
  ]
7728
7755
  }];
7729
- function Ea() {
7756
+ function ja() {
7730
7757
  return /* @__PURE__ */ t("div", {
7731
7758
  className: "game-ui-asset-compression-repro",
7732
7759
  "aria-label": "Asset card compression repro",
@@ -7750,9 +7777,9 @@ function Ea() {
7750
7777
  className: "game-ui-asset-compression-repro-surface",
7751
7778
  "data-repro-surface": e.id,
7752
7779
  style: { "--repro-width": e.width },
7753
- children: [/* @__PURE__ */ t(Q, { children: e.label }), /* @__PURE__ */ t(oi, {
7780
+ children: [/* @__PURE__ */ t(Q, { children: e.label }), /* @__PURE__ */ t(di, {
7754
7781
  density: "dense",
7755
- groups: Ta,
7782
+ groups: Aa,
7756
7783
  label: `${e.label} assets`,
7757
7784
  selectedAssetId: "asset-repro-chair",
7758
7785
  title: "Build"
@@ -7760,13 +7787,13 @@ function Ea() {
7760
7787
  }, e.id))
7761
7788
  });
7762
7789
  }
7763
- function Da() {
7764
- let { firstSession: e } = aa();
7790
+ function Ma() {
7791
+ let { firstSession: e } = ua();
7765
7792
  return /* @__PURE__ */ n("div", {
7766
7793
  className: "game-ui-first-session-preview",
7767
7794
  children: [/* @__PURE__ */ t("div", {
7768
7795
  className: "game-ui-first-session-world",
7769
- children: /* @__PURE__ */ t(Rr, {
7796
+ children: /* @__PURE__ */ t(Ur, {
7770
7797
  authenticated: !0,
7771
7798
  batteryCount: 5,
7772
7799
  dailyStreak: 3,
@@ -7800,7 +7827,7 @@ function Da() {
7800
7827
  })
7801
7828
  }), /* @__PURE__ */ t("div", {
7802
7829
  className: "game-ui-first-session-modal-slot",
7803
- children: /* @__PURE__ */ t(zr, {
7830
+ children: /* @__PURE__ */ t(Wr, {
7804
7831
  open: !0,
7805
7832
  onDismiss: () => void 0,
7806
7833
  labels: {
@@ -7828,46 +7855,46 @@ function Da() {
7828
7855
  })]
7829
7856
  });
7830
7857
  }
7831
- function Oa() {
7832
- let { responsive: e } = aa();
7858
+ function Na() {
7859
+ let { responsive: e } = ua();
7833
7860
  return /* @__PURE__ */ n("div", {
7834
7861
  className: "game-ui-proof-frames",
7835
7862
  children: [/* @__PURE__ */ n("article", {
7836
7863
  className: "game-ui-proof-frame is-desktop",
7837
- children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t(Q, { children: e.desktop }), /* @__PURE__ */ t("strong", { children: "1440×900" })] }), /* @__PURE__ */ t(da, {})]
7864
+ children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t(Q, { children: e.desktop }), /* @__PURE__ */ t("strong", { children: "1440×900" })] }), /* @__PURE__ */ t(ga, {})]
7838
7865
  }), /* @__PURE__ */ n("article", {
7839
7866
  className: "game-ui-proof-frame is-mobile-landscape",
7840
- children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t(Q, { children: e.mobileLandscape }), /* @__PURE__ */ t("strong", { children: "844×390" })] }), /* @__PURE__ */ t(da, {})]
7867
+ children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t(Q, { children: e.mobileLandscape }), /* @__PURE__ */ t("strong", { children: "844×390" })] }), /* @__PURE__ */ t(ga, {})]
7841
7868
  })]
7842
7869
  });
7843
7870
  }
7844
- function ka() {
7845
- let { forms: e } = aa();
7871
+ function Pa() {
7872
+ let { forms: e } = ua();
7846
7873
  return /* @__PURE__ */ n("div", {
7847
7874
  className: "game-ui-preview-two-up",
7848
7875
  children: [/* @__PURE__ */ n(X, {
7849
7876
  title: e.formsTitle,
7850
7877
  tone: "strong",
7851
7878
  children: [
7852
- /* @__PURE__ */ t(Hr, {
7879
+ /* @__PURE__ */ t(qr, {
7853
7880
  hint: e.roomCodeHint,
7854
7881
  label: e.roomCodeLabel,
7855
- children: /* @__PURE__ */ t(Br, { placeholder: e.roomCodePlaceholder })
7882
+ children: /* @__PURE__ */ t(Gr, { placeholder: e.roomCodePlaceholder })
7856
7883
  }),
7857
- /* @__PURE__ */ t(Hr, {
7884
+ /* @__PURE__ */ t(qr, {
7858
7885
  label: e.nameLabel,
7859
7886
  required: !0,
7860
- children: /* @__PURE__ */ t(Br, { placeholder: e.namePlaceholder })
7887
+ children: /* @__PURE__ */ t(Gr, { placeholder: e.namePlaceholder })
7861
7888
  }),
7862
- /* @__PURE__ */ t(Hr, {
7889
+ /* @__PURE__ */ t(qr, {
7863
7890
  error: e.readError,
7864
7891
  label: e.readLabel,
7865
- children: /* @__PURE__ */ t(Vr, {
7892
+ children: /* @__PURE__ */ t(Kr, {
7866
7893
  invalid: !0,
7867
7894
  placeholder: e.readPlaceholder
7868
7895
  })
7869
7896
  }),
7870
- /* @__PURE__ */ t(Ur, {
7897
+ /* @__PURE__ */ t(Jr, {
7871
7898
  defaultChecked: !0,
7872
7899
  label: e.rememberLabel
7873
7900
  })
@@ -7879,38 +7906,38 @@ function ka() {
7879
7906
  /* @__PURE__ */ n("div", {
7880
7907
  className: "game-ui-component-row",
7881
7908
  children: [
7882
- /* @__PURE__ */ t(Gr, {
7909
+ /* @__PURE__ */ t(Xr, {
7883
7910
  name: "Mika Ono",
7884
7911
  status: "online"
7885
7912
  }),
7886
- /* @__PURE__ */ t(Gr, {
7913
+ /* @__PURE__ */ t(Xr, {
7887
7914
  name: "River",
7888
7915
  size: "lg",
7889
7916
  status: "busy"
7890
7917
  }),
7891
- /* @__PURE__ */ t(Gr, {
7918
+ /* @__PURE__ */ t(Xr, {
7892
7919
  name: "Noa",
7893
7920
  status: "away"
7894
7921
  }),
7895
- /* @__PURE__ */ t(Gr, {
7922
+ /* @__PURE__ */ t(Xr, {
7896
7923
  name: e.guestName,
7897
7924
  size: "sm"
7898
7925
  })
7899
7926
  ]
7900
7927
  }),
7901
- /* @__PURE__ */ t(Kr, {
7928
+ /* @__PURE__ */ t(Zr, {
7902
7929
  label: e.revealLabel,
7903
7930
  showValue: !0,
7904
7931
  value: 64
7905
7932
  }),
7906
- /* @__PURE__ */ t(Kr, {
7933
+ /* @__PURE__ */ t(Zr, {
7907
7934
  label: e.batteryLabel,
7908
7935
  max: 20,
7909
7936
  showValue: !0,
7910
7937
  tone: "success",
7911
7938
  value: 14
7912
7939
  }),
7913
- /* @__PURE__ */ t(qr, {
7940
+ /* @__PURE__ */ t(Qr, {
7914
7941
  action: /* @__PURE__ */ t(w, {
7915
7942
  variant: "primary",
7916
7943
  children: e.emptyCta
@@ -7923,8 +7950,8 @@ function ka() {
7923
7950
  })]
7924
7951
  });
7925
7952
  }
7926
- var Aa = cr.filter((e) => fr(e).includes("game")), ja = cr.filter((e) => fr(e).includes("line"));
7927
- function Ma({ 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 }) {
7928
7955
  return /* @__PURE__ */ t("div", {
7929
7956
  className: "game-ui-icon-grid",
7930
7957
  children: e.map((e) => /* @__PURE__ */ n("figure", {
@@ -7937,10 +7964,10 @@ function Ma({ names: e, style: r }) {
7937
7964
  }, `${r}-${e}`))
7938
7965
  });
7939
7966
  }
7940
- function Na() {
7967
+ function Ra() {
7941
7968
  return /* @__PURE__ */ t("div", {
7942
7969
  className: "game-ui-icon-grid",
7943
- children: mr.map((e) => /* @__PURE__ */ n("figure", {
7970
+ children: yr.map((e) => /* @__PURE__ */ n("figure", {
7944
7971
  className: "game-ui-icon-cell",
7945
7972
  children: [/* @__PURE__ */ t("span", {
7946
7973
  className: "game-ui-asset-icon",
@@ -7949,14 +7976,14 @@ function Na() {
7949
7976
  "aria-hidden": !0,
7950
7977
  children: /* @__PURE__ */ t("img", {
7951
7978
  alt: "",
7952
- src: pr[e]
7979
+ src: vr[e]
7953
7980
  })
7954
7981
  }), /* @__PURE__ */ t("figcaption", { children: e })]
7955
7982
  }, `sprite-${e}`))
7956
7983
  });
7957
7984
  }
7958
- function Pa() {
7959
- let { gallery: e } = aa();
7985
+ function za() {
7986
+ let { gallery: e } = ua();
7960
7987
  return /* @__PURE__ */ n("div", {
7961
7988
  className: "game-ui-icon-gallery",
7962
7989
  children: [
@@ -7971,8 +7998,8 @@ function Pa() {
7971
7998
  className: "game-ui-small-copy",
7972
7999
  children: e.gameHint
7973
8000
  })]
7974
- }), /* @__PURE__ */ t(Ma, {
7975
- names: Aa,
8001
+ }), /* @__PURE__ */ t(La, {
8002
+ names: Fa,
7976
8003
  style: "game"
7977
8004
  })]
7978
8005
  }),
@@ -7984,8 +8011,8 @@ function Pa() {
7984
8011
  className: "game-ui-small-copy",
7985
8012
  children: e.lineHint
7986
8013
  })]
7987
- }), /* @__PURE__ */ t(Ma, {
7988
- names: ja,
8014
+ }), /* @__PURE__ */ t(La, {
8015
+ names: Ia,
7989
8016
  style: "line"
7990
8017
  })]
7991
8018
  }),
@@ -8000,16 +8027,16 @@ function Pa() {
8000
8027
  className: "game-ui-small-copy",
8001
8028
  children: e.spriteHint
8002
8029
  })]
8003
- }), /* @__PURE__ */ t(Na, {})]
8030
+ }), /* @__PURE__ */ t(Ra, {})]
8004
8031
  })
8005
8032
  ]
8006
8033
  });
8007
8034
  }
8008
- function Fa({ title: e, body: r }) {
8009
- let [i, a] = m("en"), o = ra[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;
8010
8037
  return l(() => (document.documentElement.dataset.gameUiPreview = "clay", () => {
8011
8038
  delete document.documentElement.dataset.gameUiPreview;
8012
- }), []), /* @__PURE__ */ t(ia.Provider, {
8039
+ }), []), /* @__PURE__ */ t(la.Provider, {
8013
8040
  value: o,
8014
8041
  children: /* @__PURE__ */ n("main", {
8015
8042
  "aria-label": "Swimmer UI Kit clay preview",
@@ -8022,7 +8049,7 @@ function Fa({ title: e, body: r }) {
8022
8049
  tone: "ai",
8023
8050
  children: "@pieai/swimmer-ui-kit"
8024
8051
  }),
8025
- /* @__PURE__ */ t(Pr, {
8052
+ /* @__PURE__ */ t(zr, {
8026
8053
  currentLabel: o.triggerLabel,
8027
8054
  label: o.langMenuLabel,
8028
8055
  onSelect: (e) => a(e),
@@ -8049,10 +8076,10 @@ function Fa({ title: e, body: r }) {
8049
8076
  id: "game-ui-preview-token-title",
8050
8077
  children: o.sections.tokens
8051
8078
  }),
8052
- /* @__PURE__ */ t(ca, {}),
8079
+ /* @__PURE__ */ t(pa, {}),
8053
8080
  /* @__PURE__ */ t("div", {
8054
8081
  className: "game-ui-token-ledger",
8055
- children: oa.map((e) => /* @__PURE__ */ t(sa, {
8082
+ children: da.map((e) => /* @__PURE__ */ t(fa, {
8056
8083
  id: e.id,
8057
8084
  label: o.tokenGroups[e.id] ?? e.id,
8058
8085
  tokens: e.tokens
@@ -8072,7 +8099,7 @@ function Fa({ title: e, body: r }) {
8072
8099
  className: "game-ui-small-copy",
8073
8100
  children: o.iconsIntro
8074
8101
  }),
8075
- /* @__PURE__ */ t(Pa, {})
8102
+ /* @__PURE__ */ t(za, {})
8076
8103
  ]
8077
8104
  }),
8078
8105
  /* @__PURE__ */ n("section", {
@@ -8081,7 +8108,7 @@ function Fa({ title: e, body: r }) {
8081
8108
  children: [/* @__PURE__ */ t("h2", {
8082
8109
  id: "game-ui-preview-type-title",
8083
8110
  children: o.sections.typography
8084
- }), /* @__PURE__ */ t(la, {})]
8111
+ }), /* @__PURE__ */ t(ma, {})]
8085
8112
  }),
8086
8113
  /* @__PURE__ */ n("section", {
8087
8114
  "aria-labelledby": "game-ui-preview-components-title",
@@ -8091,11 +8118,11 @@ function Fa({ title: e, body: r }) {
8091
8118
  id: "game-ui-preview-components-title",
8092
8119
  children: o.sections.components
8093
8120
  }),
8094
- /* @__PURE__ */ t(ua, {}),
8095
- /* @__PURE__ */ t(da, {}),
8096
- /* @__PURE__ */ t(ma, {}),
8097
8121
  /* @__PURE__ */ t(ha, {}),
8098
- /* @__PURE__ */ t(Jn, {
8122
+ /* @__PURE__ */ t(ga, {}),
8123
+ /* @__PURE__ */ t(ya, {}),
8124
+ /* @__PURE__ */ t(ba, {}),
8125
+ /* @__PURE__ */ t($n, {
8099
8126
  entries: o.history,
8100
8127
  label: o.historyLabel
8101
8128
  })
@@ -8107,7 +8134,7 @@ function Fa({ title: e, body: r }) {
8107
8134
  children: [/* @__PURE__ */ t("h2", {
8108
8135
  id: "game-ui-preview-forms-title",
8109
8136
  children: o.sections.forms
8110
- }), /* @__PURE__ */ t(ka, {})]
8137
+ }), /* @__PURE__ */ t(Pa, {})]
8111
8138
  }),
8112
8139
  /* @__PURE__ */ n("section", {
8113
8140
  "aria-labelledby": "game-ui-preview-overlay-glass-title",
@@ -8121,7 +8148,7 @@ function Fa({ title: e, body: r }) {
8121
8148
  className: "game-ui-small-copy",
8122
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."
8123
8150
  }),
8124
- /* @__PURE__ */ t(fa, {})
8151
+ /* @__PURE__ */ t(_a, {})
8125
8152
  ]
8126
8153
  }),
8127
8154
  /* @__PURE__ */ n("section", {
@@ -8136,7 +8163,7 @@ function Fa({ title: e, body: r }) {
8136
8163
  className: "game-ui-small-copy",
8137
8164
  children: o.liquidMetal.body
8138
8165
  }),
8139
- /* @__PURE__ */ t(pa, {})
8166
+ /* @__PURE__ */ t(va, {})
8140
8167
  ]
8141
8168
  }),
8142
8169
  /* @__PURE__ */ n("section", {
@@ -8145,7 +8172,7 @@ function Fa({ title: e, body: r }) {
8145
8172
  children: [/* @__PURE__ */ t("h2", {
8146
8173
  id: "game-ui-preview-ownmyspace-title",
8147
8174
  children: "OwnMySpace game surface pack"
8148
- }), /* @__PURE__ */ t(wa, {})]
8175
+ }), /* @__PURE__ */ t(ka, {})]
8149
8176
  }),
8150
8177
  /* @__PURE__ */ n("section", {
8151
8178
  "aria-labelledby": "game-ui-preview-terrain-build-title",
@@ -8159,7 +8186,7 @@ function Fa({ title: e, body: r }) {
8159
8186
  className: "game-ui-small-copy",
8160
8187
  children: "Official terrain controls cover mode, brush, material, undo/redo, build library, status, progress, and compact mobile drawer surfaces."
8161
8188
  }),
8162
- /* @__PURE__ */ t(ba, {})
8189
+ /* @__PURE__ */ t(Ta, {})
8163
8190
  ]
8164
8191
  }),
8165
8192
  /* @__PURE__ */ n("section", {
@@ -8174,7 +8201,7 @@ function Fa({ title: e, body: r }) {
8174
8201
  className: "game-ui-small-copy",
8175
8202
  children: "Official construction surfaces cover job queue states, before/after review, robot crew status, validation warnings, approval actions, and local-only provider badges."
8176
8203
  }),
8177
- /* @__PURE__ */ t(Ca, {})
8204
+ /* @__PURE__ */ t(Oa, {})
8178
8205
  ]
8179
8206
  }),
8180
8207
  /* @__PURE__ */ n("section", {
@@ -8189,7 +8216,7 @@ function Fa({ title: e, body: r }) {
8189
8216
  className: "game-ui-small-copy",
8190
8217
  children: "Official asset cards must stay visually complete when a game shell uses dense, narrow, or rail-style inventory slots."
8191
8218
  }),
8192
- /* @__PURE__ */ t(Ea, {})
8219
+ /* @__PURE__ */ t(ja, {})
8193
8220
  ]
8194
8221
  }),
8195
8222
  /* @__PURE__ */ n("section", {
@@ -8198,7 +8225,7 @@ function Fa({ title: e, body: r }) {
8198
8225
  children: [/* @__PURE__ */ t("h2", {
8199
8226
  id: "game-ui-preview-first-session-title",
8200
8227
  children: o.sections.firstSession
8201
- }), /* @__PURE__ */ t(Da, {})]
8228
+ }), /* @__PURE__ */ t(Ma, {})]
8202
8229
  }),
8203
8230
  /* @__PURE__ */ n("section", {
8204
8231
  "aria-labelledby": "game-ui-preview-orientation-title",
@@ -8206,7 +8233,7 @@ function Fa({ title: e, body: r }) {
8206
8233
  children: [/* @__PURE__ */ t("h2", {
8207
8234
  id: "game-ui-preview-orientation-title",
8208
8235
  children: o.sections.orientation
8209
- }), /* @__PURE__ */ t(Nr, {
8236
+ }), /* @__PURE__ */ t(Rr, {
8210
8237
  badgeLabel: o.orientation.badge,
8211
8238
  body: o.orientation.body,
8212
8239
  cta: o.orientation.cta,
@@ -8221,11 +8248,11 @@ function Fa({ title: e, body: r }) {
8221
8248
  children: [/* @__PURE__ */ t("h2", {
8222
8249
  id: "game-ui-preview-responsive-title",
8223
8250
  children: o.sections.responsive
8224
- }), /* @__PURE__ */ t(Oa, {})]
8251
+ }), /* @__PURE__ */ t(Na, {})]
8225
8252
  })
8226
8253
  ]
8227
8254
  })
8228
8255
  });
8229
8256
  }
8230
8257
  //#endregion
8231
- export { hr as CLAY_ASSETS, or as CLAY_ASSET_BASE_PATH, xe as CLAY_ASSET_SIZE_TOKENS, L as CLAY_COLOR_TOKENS, U as CLAY_ELEVATION_TOKENS, pr as CLAY_GAME_SPRITES, mr as CLAY_GAME_SPRITE_NAMES, cr as CLAY_ICON_NAMES, sr 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, B as CLAY_OVERLAY_GLASS_TOKENS, B as GAME_UI_OVERLAY_GLASS_TOKENS, H as CLAY_RADIUS_TOKENS, V as CLAY_SEMANTIC_TOKENS, ve as CLAY_SPACE_TOKENS, be as CLAY_TARGET_TOKENS, _e 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, Rr as FirstSessionHud, zr as FirstSessionOnboarding, ea as GAME_UI_OVERLAY, Qi as GAME_UI_PREVIEW_MESSAGES, ta as GAME_UI_TARGETS, na as GAME_UI_THEME_CONTRACT, $i as GAME_UI_TOKENS, Qr as GameActionGrid, ai as GameAssetCard, $ as GameAssetIcon, oi as GameAssetLibrary, Gr as GameAvatar, Q as GameBadge, Vi as GameBeforeAfterToggle, _i as GameBrushControls, bi as GameBuildLibrary, w as GameButton, Kn as GameCallout, Ar as GameCardFan, Ur as GameCheckbox, qi as GameCollapsiblePanel, xi as GameCompactGameDrawer, Ui as GameCompactJobDrawer, zi as GameConstructionApprovalBar, Hi as GameConstructionJobCard, Ri as GameConstructionProgress, Wi as GameContractorPanel, qn as GameDialog, qr as GameEmptyState, Xr as GameFactList, Hr as GameField, Jn as GameHistoryPanel, kr as GameHud, Yn as GameHudActions, Xn as GameIconButton, Br as GameInput, Pr as GameLanguageMenu, Fr as GameLoadingState, vi as GameMaterialSwatches, Zi as GameModal, ti as GameMovementPad, ci as GameObjectToolbar, Nr as GameOrientationGate, X as GamePanel, si as GamePlacementToolbar, Kr as GameProgress, ar as GamePrompt, rr as GameRadialMenu, Bi as GameRobotCrewStatus, Yr as GameSceneHudLayout, er as GameSegmentedControl, Jr as GameShell, tr as GameSlider, jr as GameStageTile, Zr as GameStatList, Qn as GameTabs, wi as GameTerrainBuildToolbox, hi as GameTerrainModeControl, gi as GameTerrainToolStrip, Vr as GameTextArea, ir as GameToast, nr as GameToggle, Zn as GameTooltip, Fa as GameUiPreview, yi as GameUndoRedoActions, Xi as GameWindowPanel, Qt as IMAGE_MELT_DEFAULTS, ze as LIQUID_GOOEY_WAVINESS_MAX_FRACTION, Gn as LiquidGroup, Wn as LiquidItem, ge as LiquidMetalButton, Er as acknowledgeClayPlaceholders, Cr as getClayAssetBasePath, xr as getClayAssetMode, Ir as getClayCatalogPaths, Dr as getClayIconPath, fr as getClayIconStyles, Or as getClaySourceAssetPath, Oe as getLiquidGooeyBudget, O as getLiquidMetalContextBudget, C as playGameInteractionSound, S as playGameInteractionSoundForContext, rn as resolveDissolveOptions, Sr as setClayAssetBasePath, br as setClayAssetMode, ke 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 };