@pieai/swimmer-ui-kit 1.11.1 → 1.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/CHANGELOG.md +28 -29
  2. package/dist/index.js +738 -741
  3. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -90,21 +90,21 @@ function O() {
90
90
  used: D
91
91
  };
92
92
  }
93
- function ee(e) {
93
+ function k(e) {
94
94
  E = Number.isFinite(e) ? Math.max(0, Math.floor(e)) : 0;
95
95
  }
96
- function k() {
96
+ function A() {
97
97
  return D >= E ? !1 : (D += 1, !0);
98
98
  }
99
- function A() {
99
+ function j() {
100
100
  D > 0 && --D;
101
101
  }
102
- function te(e) {
102
+ function ee(e) {
103
103
  return !(e.renderer === "css" || !e.hasWebGL2 || e.prefersReducedMotion || !e.isInViewport);
104
104
  }
105
105
  //#endregion
106
106
  //#region src/liquidMetalWebGL.ts
107
- var j = "#version 300 es\nin vec2 position; void main(){ gl_Position = vec4(position,0.,1.); }", M = "#version 300 es\nprecision highp float;\nout vec4 o;\n\nuniform vec2 uC; // pill centre, device px\nuniform vec2 uHalf; // pill half-extent, device px\nuniform float uT; // seconds\nuniform float uHover; // 0..1\nuniform float uPress; // 0..1, eased\nuniform vec4 uRip[3]; // xy centre (button heights, +y down), z start, w live\nuniform vec4 uRipK; // speed, ring width, decay, amplitude\nuniform vec4 uRipK2; // facet depth, facet count, crest sharpness, emission\nuniform vec4 uPtr; // xy trailing cursor, z strength, w normalised speed\nuniform vec4 uPtrK; // radius, base amplitude, speed amplitude, rim lift\nuniform vec3 uAccent; // brand tint from computed --game-ui-liquid-metal-accent\n\n#define PI 3.14159265\n\nfloat sdPill(vec2 p, vec2 b, float r){\n vec2 q = abs(p) - b + r;\n return min(max(q.x,q.y),0.) + length(max(q,0.)) - r;\n}\n\n/* Expanding ring from each press, in button-height units. Three slots so a\n quick double-tap overlaps instead of cutting the first one off.\n\n Two things keep it from reading as a water ripple: the wavefront is\n faceted rather than circular — its radius is modulated by angle, and the\n facets rotate as it travels — and the crest profile is a cusp rather than\n a gaussian, so it lands as a crease in sheet metal instead of a soft swell. */\nfloat ripple(vec2 p, float t){\n float sum = 0.;\n for(int i = 0; i < 3; i++){\n if(uRip[i].w < 0.5) continue;\n float age = t - uRip[i].z;\n if(age < 0. || age > 4.) continue;\n vec2 rp = p - uRip[i].xy;\n float facet = 1. + uRipK2.x * cos(uRipK2.y * atan(rp.y, rp.x) + age * 2.1 + float(i) * 2.4);\n float x = (length(rp) - age * uRipK.x * facet) / uRipK.y;\n sum += exp(-pow(abs(x) + 1e-4, uRipK2.z)) * exp(-age * uRipK.z);\n }\n return sum;\n}\n\n/* A soft well under the cursor. It lags behind the real pointer and swells\n with speed, so moving across the button drags the metal rather than sliding\n a static blob over it. */\nfloat pointerW(vec2 p){\n if(uPtr.z < 0.001) return 0.;\n float d = length(p - uPtr.xy) / uPtrK.x;\n return exp(-d*d) * uPtr.z;\n}\n/* Displacing the sample point, not the field value, is what makes this read as\n liquid: the bands bulge and stretch around the cursor like a lens instead of\n just getting brighter under it. */\nvec2 pointerWarp(vec2 p){\n float w = pointerW(p);\n if(w <= 0.) return vec2(0.);\n return normalize(p - uPtr.xy + vec2(1e-5)) * w * (uPtrK.y + uPtrK.z * uPtr.w);\n}\n", N = `${M}
107
+ var 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}
108
108
  uniform float uBw; // stroke half-width, device px
109
109
  uniform float uE[8]; // base, hot, chroma-across, chroma-along, speed,
110
110
  // topBias, press lift, ripple lift
@@ -174,7 +174,7 @@ void main(){
174
174
  // what make it metal, and replacing them with a flat accent would turn
175
175
  // the rim into a neon sticker.
176
176
  o.rgb *= mix(vec3(1.0), uAccent, 0.40);
177
- }`, ne = `${M}
177
+ }`, te = `${N}
178
178
  uniform float uP[21]; // tunables
179
179
 
180
180
  float h21(vec2 p){
@@ -296,7 +296,7 @@ void main(){
296
296
  col = col * (1. + rip * 1.15 + well * 0.60);
297
297
 
298
298
  o = vec4(col * pill * uHover, pill);
299
- }`, re = "#version 300 es\nprecision highp float;\nout vec4 o;\nuniform sampler2D uTex, uTex2;\nuniform vec2 uDstTexel; // 1 / destination size (maps dest fragCoord -> uv)\nuniform vec2 uSrcTexel; // 1 / source size (tap spacing)\nuniform float uAdd; // 1 to include uTex2\nvoid main(){\n vec2 uv = gl_FragCoord.xy * uDstTexel;\n // Taps sit a quarter of a *destination* texel out, so for a 2x reduction\n // they land exactly on the four source texel centres. Spacing them by a\n // whole source texel instead — as this did originally — skips every other\n // pixel, and any fine detail in the field folds down into low-frequency\n // moiré that no amount of subsequent blurring can remove.\n vec2 e = uDstTexel * 0.25;\n vec4 s = texture(uTex, uv + vec2(-e.x,-e.y)) + texture(uTex, uv + vec2( e.x,-e.y))\n + texture(uTex, uv + vec2(-e.x, e.y)) + texture(uTex, uv + vec2( e.x, e.y));\n s *= 0.25;\n if(uAdd > 0.5){\n vec4 r = texture(uTex2, uv + vec2(-e.x,-e.y)) + texture(uTex2, uv + vec2( e.x,-e.y))\n + texture(uTex2, uv + vec2(-e.x, e.y)) + texture(uTex2, uv + vec2( e.x, e.y));\n s.rgb += r.rgb * 0.25;\n }\n o = s;\n}", ie = "#version 300 es\nprecision highp float;\nout vec4 o;\nuniform sampler2D uTex; uniform vec2 uTexel; uniform vec2 uDir; uniform float uR;\nvoid main(){\n vec2 uv = gl_FragCoord.xy * uTexel;\n vec2 st = uTexel * uDir * uR;\n vec4 s = texture(uTex, uv) * 0.1964;\n s += (texture(uTex, uv + st*1.4118) + texture(uTex, uv - st*1.4118)) * 0.2969;\n s += (texture(uTex, uv + st*3.2941) + texture(uTex, uv - st*3.2941)) * 0.0944;\n s += (texture(uTex, uv + st*5.1765) + texture(uTex, uv - st*5.1765)) * 0.0104;\n o = s;\n}", ae = `${M}
299
+ }`, 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}
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
- }`, oe = {
348
+ }`, ae = {
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
- }, se = Object.keys(oe), ce = {
370
+ }, oe = Object.keys(ae), se = {
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
- }, le = Object.keys(ce), ue = {
379
+ }, ce = Object.keys(se), le = {
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
- }, P = {
386
+ }, F = {
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 de(e) {
402
+ function ue(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 de(e) {
424
424
  1
425
425
  ];
426
426
  }
427
- function fe(e, t, n) {
427
+ function de(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 pe(e, t) {
431
+ function fe(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 pe(e, t) {
440
440
  i1: (t, r) => e.uniform1i(n(t), r)
441
441
  };
442
442
  }
443
- function me(e, t, n) {
443
+ function pe(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 me(e, t, n) {
456
456
  if (!r) return null;
457
457
  let i = r;
458
458
  try {
459
- return ge(i, e, t, n);
459
+ return he(i, e, t, n);
460
460
  } catch {
461
461
  return i.getExtension("WEBGL_lose_context")?.loseContext(), null;
462
462
  }
463
463
  }
464
- function he(e, t, n) {
464
+ function me(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 F(e, t) {
470
+ function I(e, t) {
471
471
  let n = e.createProgram();
472
472
  if (!n) throw Error("liquid-metal: createProgram returned null");
473
- if (e.attachShader(n, he(e, e.VERTEX_SHADER, j)), e.attachShader(n, he(e, e.FRAGMENT_SHADER, t)), e.bindAttribLocation(n, 0, "position"), e.linkProgram(n), !e.getProgramParameter(n, e.LINK_STATUS)) throw Error(e.getProgramInfoLog(n) ?? "liquid-metal: program link failed");
473
+ if (e.attachShader(n, 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");
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 F(e, t) {
481
481
  u: r
482
482
  };
483
483
  }
484
- function ge(e, t, n, r) {
485
- let i = F(e, ne), a = F(e, N), o = F(e, re), s = F(e, ie), c = F(e, ae), l = e.createVertexArray(), u = e.createBuffer();
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();
486
486
  if (!l || !u) throw Error("liquid-metal: VAO/VBO unavailable");
487
487
  e.bindVertexArray(l), e.bindBuffer(e.ARRAY_BUFFER, u), e.bufferData(e.ARRAY_BUFFER, new Float32Array([
488
488
  -1,
@@ -508,7 +508,7 @@ function ge(e, t, n, r) {
508
508
  }
509
509
  let m = f(), h = f(), g = f(), _ = f(), v = f(), y = f(), b = 0, x = 0, S = 0, C = 0, w = 0, T = 0, E = 4, D = !0, O = document.createElement("span");
510
510
  O.setAttribute("aria-hidden", "true"), O.style.cssText = "position:absolute;width:0;height:0;overflow:hidden;pointer-events:none;color:var(--game-ui-liquid-metal-accent)", r.appendChild(O);
511
- function ee() {
511
+ function k() {
512
512
  let e = n.getBoundingClientRect(), r = Math.min(window.devicePixelRatio || 1, 2), i = 900 / 516 * Math.max(e.height, 1), a = e.width + i * 2, o = e.height + i * 2;
513
513
  t.style.width = `${a}px`, t.style.height = `${o}px`;
514
514
  let s = Math.max(2, Math.round(a * r)), c = Math.max(2, Math.round(o * r));
@@ -518,10 +518,10 @@ function ge(e, t, n, r) {
518
518
  let d = Math.max(2, Math.ceil(b / E)), f = Math.max(2, Math.ceil(x / E));
519
519
  p(v, d, f), p(y, d, f), D = !1;
520
520
  }
521
- function k(t) {
521
+ function A(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 A = new Float32Array(se.length), te = new Float32Array(le.length), j = 0, M = 0, me = 0, he = performance.now(), ge = [
524
+ let j = new Float32Array(oe.length), ee = new Float32Array(ce.length), M = 0, N = 0, pe = 0, me = performance.now(), he = [
525
525
  0,
526
526
  1,
527
527
  2
@@ -530,100 +530,100 @@ function ge(e, t, n, r) {
530
530
  y: 0,
531
531
  t: -99,
532
532
  on: 0
533
- })), _e = /* @__PURE__ */ new Float32Array(12), I = 0, L = 0, R = 0, z = {
533
+ })), ge = /* @__PURE__ */ new Float32Array(12), L = 0, R = 0, z = 0, B = {
534
534
  x: 0,
535
535
  y: 0
536
- }, B = {
536
+ }, V = {
537
537
  x: 0,
538
538
  y: 0
539
- }, V = 0, ve = 0, H = {
539
+ }, _e = 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 = ge[I];
546
- n && (I = (I + 1) % ge.length, n.x = e, n.y = t, n.t = me, n.on = 1);
545
+ let n = he[L];
546
+ n && (L = (L + 1) % he.length, n.x = e, n.y = t, n.t = pe, 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
- M = H.over || H.press || H.focus ? 1 : 0, R = +!!H.press;
553
+ N = 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 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) };
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) };
559
559
  }
560
560
  function Ee(t) {
561
561
  if (Se = 0, Ce || we) return;
562
- let r = (t - he) / 1e3;
563
- he = t;
562
+ let r = (t - me) / 1e3;
563
+ me = t;
564
564
  let l = Math.min(r, 1 / 20);
565
- be.matches || (me += l);
566
- let u = M > j ? 1 - .0012 ** l : 1 - 12e-5 ** l;
567
- j += (M - j) * u, Math.abs(M - j) < 8e-4 && (j = M);
568
- let d = R > L ? 1 - 1e-9 ** l : 1 - .004 ** l;
569
- L += (R - L) * d, Math.abs(R - L) < .002 && (L = R);
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);
568
+ let d = z > R ? 1 - 1e-9 ** l : 1 - .004 ** l;
569
+ R += (z - R) * d, Math.abs(z - R) < .002 && (R = z);
570
570
  let f = !1;
571
- 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), _e[e * 4] = t.x, _e[e * 4 + 1] = t.y, _e[e * 4 + 2] = t.t, _e[e * 4 + 3] = t.on);
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);
574
574
  }
575
- let p = 1 - P.ptrLag ** +l, O = (z.x - B.x) * p, N = (z.y - B.y) * p;
576
- B.x += O, B.y += N;
577
- let ne = Math.min(Math.hypot(O, N) / Math.max(l, .001) / P.ptrVref, 1);
578
- ve += (ne - ve) * (1 - (ne > ve ? .001 : .02) ** l);
579
- let re = H.over || H.press ? 1 : 0;
580
- V += (re - V) * (1 - .004 ** l), Math.abs(re - V) < .002 && (V = re), H.over = n.matches(":hover"), H.focus = n.matches(":focus-visible"), ye(), D && ee();
581
- let ie = be.matches && !f && V < .002 ? `${j}|${L}|${b}|${x}` : null;
582
- if (ie !== null && ie === xe) {
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) {
583
583
  Se = requestAnimationFrame(Ee);
584
584
  return;
585
585
  }
586
- xe = ie;
587
- let { accent: ae } = Te();
588
- for (let e = 0; e < A.length; e += 1) {
589
- let t = se[e];
590
- t && (A[e] = oe[t]);
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]);
591
591
  }
592
- for (let e = 0; e < te.length; e += 1) {
593
- let t = le[e];
594
- t && (te[e] = ce[t]);
592
+ for (let e = 0; e < ee.length; e += 1) {
593
+ let t = ce[e];
594
+ t && (ee[e] = se[t]);
595
595
  }
596
- let de = Math.max(C, 110), fe = Math.max(2.4, de / 516 * 3.2), F = pe(e, i.u), I = pe(e, a.u), 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", j), F.f1("uPress", L), F.fv4("uRip", _e), F.f4("uRipK", P.speed, P.width, P.decay, P.amp), F.f4("uRipK2", P.facet, P.lobes, P.sharp, P.emit), F.f4("uPtr", B.x, B.y, V, ve), F.f4("uPtrK", P.ptrRad, P.ptrAmp, P.ptrFast, P.ptrRim), F.f3("uAccent", ae[0], ae[1], ae[2]), F.fv1("uP", A), k(m), e.useProgram(a.p), I.f2("uC", w, T), I.f2("uHalf", S / 2, C / 2), I.f1("uT", me), I.f1("uBw", fe), I.f1("uPress", L), I.fv4("uRip", _e), I.f4("uRipK", P.speed, P.width, P.decay, P.amp), I.f4("uRipK2", P.facet, P.lobes, P.sharp, P.emit), I.f4("uPtr", B.x, B.y, V, ve), I.f4("uPtrK", P.ptrRad, P.ptrAmp, P.ptrFast, P.ptrRim), I.f3("uAccent", ae[0], ae[1], ae[2]), I.fv1("uE", te), 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;
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;
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), k(_), e.bindTexture(e.TEXTURE_2D, _.tex), W.f2("uDir", 0, 1), k(g);
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);
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), 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;
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;
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), 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", _e), 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", ae[0], ae[1], ae[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);
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);
613
613
  }
614
614
  let G = (e) => {
615
615
  if (e.pointerType !== "mouse") return;
616
616
  let [t, n] = W(e);
617
- z.x = t, z.y = n, B.x = t, B.y = n, ve = 0, H.over = !0, ye();
617
+ B.x = t, B.y = n, V.x = t, V.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
- z.x = t, z.y = n;
623
+ B.x = t, B.y = n;
624
624
  }, ke = (e) => {
625
625
  let [t, n] = W(e);
626
- z.x = t, z.y = n, H.press = !0, ye(), U(t, n);
626
+ B.x = t, B.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 ge(e, t, n, r) {
639
639
  let Fe = new ResizeObserver(() => {
640
640
  D = !0;
641
641
  });
642
- return Fe.observe(r), Fe.observe(n), ee(), Se = requestAnimationFrame(Ee), {
642
+ return Fe.observe(r), Fe.observe(n), k(), Se = requestAnimationFrame(Ee), {
643
643
  pause: () => {
644
644
  Ce = !0, Se && cancelAnimationFrame(Se), Se = 0;
645
645
  },
646
646
  resume: () => {
647
- we || (Ce = !1, he = performance.now(), xe = null, Se ||= requestAnimationFrame(Ee));
647
+ we || (Ce = !1, me = 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 ge(e, t, n, r) {
653
653
  }
654
654
  //#endregion
655
655
  //#region src/LiquidMetalButton.tsx
656
- function _e({ children: e, className: r, onClick: i, sound: a = !1, type: o = "button", renderer: s = "auto", ...c }) {
656
+ function ge({ 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 &&= (A(), !1), c || g("css");
662
+ o?.dispose(), o = null, a &&= (j(), !1), c || g("css");
663
663
  }, p = () => {
664
- if (!(c || o) && te({
664
+ if (!(c || o) && ee({
665
665
  renderer: s,
666
666
  hasWebGL2: typeof WebGL2RenderingContext < "u",
667
667
  prefersReducedMotion: r.matches,
668
668
  isInViewport: i
669
- }) && k()) {
670
- if (a = !0, o = me(n, t, e), !o) {
671
- A(), a = !1;
669
+ }) && A()) {
670
+ if (a = !0, o = pe(n, t, e), !o) {
671
+ j(), a = !1;
672
672
  return;
673
673
  }
674
674
  g("webgl");
@@ -725,7 +725,7 @@ function _e({ children: e, className: r, onClick: i, sound: a = !1, type: o = "b
725
725
  }
726
726
  //#endregion
727
727
  //#region src/clay/tokens.ts
728
- var I = {
728
+ var L = {
729
729
  ink: "#3b2d23",
730
730
  inkMuted: "#786250",
731
731
  parchment: "#fff8ec",
@@ -748,7 +748,7 @@ var I = {
748
748
  overlayGlassText: "#fff6ee",
749
749
  liquidMetalFace: "#3a2518",
750
750
  liquidMetalInk: "#fff8ec"
751
- }, L = {
751
+ }, R = {
752
752
  face: "var(--game-ui-liquid-metal-face)",
753
753
  ink: "var(--game-ui-liquid-metal-ink)",
754
754
  accent: "var(--game-ui-liquid-metal-accent)",
@@ -756,7 +756,7 @@ var I = {
756
756
  sweepSpeed: "var(--game-ui-liquid-metal-sweep-speed)",
757
757
  rest: "var(--game-ui-liquid-metal-rest)",
758
758
  bloom: "var(--game-ui-liquid-metal-bloom)"
759
- }, R = {
759
+ }, z = {
760
760
  morphShape: "var(--game-ui-liquid-gooey-morph-shape)",
761
761
  morphSpeed: "var(--game-ui-liquid-gooey-morph-speed)",
762
762
  morphBounce: "var(--game-ui-liquid-gooey-morph-bounce)",
@@ -840,7 +840,7 @@ var I = {
840
840
  dissolveStrength: "var(--game-ui-liquid-gooey-dissolve-strength)",
841
841
  dissolveSink: "var(--game-ui-liquid-gooey-dissolve-sink)",
842
842
  dissolveSeamBlur: "var(--game-ui-liquid-gooey-dissolve-seam-blur)"
843
- }, z = {
843
+ }, B = {
844
844
  bg: "var(--game-ui-overlay-glass-bg)",
845
845
  bgHover: "var(--game-ui-overlay-glass-bg-hover)",
846
846
  bgStrong: "var(--game-ui-overlay-glass-bg-strong)",
@@ -852,7 +852,7 @@ var I = {
852
852
  blur: "var(--game-ui-overlay-glass-blur)",
853
853
  focusRing: "var(--game-ui-overlay-glass-focus-ring)",
854
854
  primaryFill: "var(--game-ui-overlay-glass-primary-fill)"
855
- }, B = {
855
+ }, V = {
856
856
  background: "var(--game-ui-bg)",
857
857
  playfieldScrim: "var(--game-ui-playfield-scrim)",
858
858
  surface: "var(--game-ui-surface)",
@@ -871,7 +871,7 @@ var I = {
871
871
  borderSubtle: "var(--game-ui-border-subtle)",
872
872
  borderStrong: "var(--game-ui-border-strong)",
873
873
  disabled: "var(--game-ui-disabled)"
874
- }, V = {
874
+ }, _e = {
875
875
  familyDisplay: "var(--game-ui-font-display)",
876
876
  familyBody: "var(--game-ui-font-body)",
877
877
  familyMono: "var(--game-ui-font-mono)",
@@ -954,9 +954,9 @@ var I = {
954
954
  buildRailCardSize: "var(--game-ui-build-rail-card-size)",
955
955
  brushNumberWidth: "var(--game-ui-brush-number-width)"
956
956
  }, Se = {
957
- colors: I,
958
- semantic: B,
959
- typography: V,
957
+ colors: L,
958
+ semantic: V,
959
+ typography: _e,
960
960
  spacing: ve,
961
961
  radius: H,
962
962
  elevation: U,
@@ -964,9 +964,9 @@ var I = {
964
964
  layers: ye,
965
965
  targets: be,
966
966
  assetSizing: xe,
967
- overlayGlass: z,
968
- liquidMetal: L,
969
- liquidGooey: R
967
+ overlayGlass: B,
968
+ liquidMetal: R,
969
+ liquidGooey: z
970
970
  }, Ce = 2, we = 48e4, Te = 2, Ee = we, G = 0;
971
971
  function De(e, t) {
972
972
  return Number.isFinite(e) ? Math.max(0, Math.floor(e)) : t;
@@ -1225,7 +1225,7 @@ function Je(e) {
1225
1225
  return /^var\((--[\w-]+)\)$/.exec(e.trim())?.[1] ?? null;
1226
1226
  }
1227
1227
  function Ye(e, t, n) {
1228
- let r = e?.ownerDocument.defaultView, i = Je(R[t]);
1228
+ let r = e?.ownerDocument.defaultView, i = Je(z[t]);
1229
1229
  if (!r || !i) return n;
1230
1230
  let a = r.getComputedStyle(e).getPropertyValue(i), o = Number.parseFloat(a);
1231
1231
  return Number.isFinite(o) ? o : n;
@@ -1324,13 +1324,13 @@ function rt(e, t, n, r, i) {
1324
1324
  y > b && y > 0 && (e.tailX = e.cx + _ / y * b, e.tailY = e.cy + v / y * b);
1325
1325
  let x = Ke((o - i.tailOnsetSpeed) / i.tailOnsetRange), S = g * i.tail * x;
1326
1326
  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, ee = 0;
1327
+ let C = e.tailR >= i.tailMinRadius, w = e.cx, T = e.cy, E = e.cx, D = e.cy, O = 0, k = 0;
1328
1328
  if (C) {
1329
1329
  e.tailPhase += o * Math.max(0, qe(r, 0)) * i.tailPhaseSpeed;
1330
1330
  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, ee = e.tailR * i.tailMidRadiusB;
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;
1332
1332
  }
1333
- let k = {
1333
+ let A = {
1334
1334
  cx: q(e.tailX),
1335
1335
  cy: q(e.tailY),
1336
1336
  radius: C ? q(e.tailR) : 0,
@@ -1339,7 +1339,7 @@ function rt(e, t, n, r, i) {
1339
1339
  midARadius: C ? q(O) : 0,
1340
1340
  midBCx: q(E),
1341
1341
  midBCy: q(D),
1342
- midBRadius: C ? q(ee) : 0,
1342
+ midBRadius: C ? q(k) : 0,
1343
1343
  visible: C,
1344
1344
  fingerprint: C ? [
1345
1345
  q(e.tailX),
@@ -1354,7 +1354,7 @@ function rt(e, t, n, r, i) {
1354
1354
  return {
1355
1355
  path: We(-n.w / 2, -n.h / 2, n.w, n.h, n.r),
1356
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: k,
1357
+ tail: A,
1358
1358
  moving: Math.hypot(e.cx - t.cx, e.cy - t.cy) > i.settleDistance || o > i.settleSpeed || e.tailR >= i.tailMinRadius
1359
1359
  };
1360
1360
  }
@@ -1425,13 +1425,13 @@ function ft(e, t = 0, n = 1) {
1425
1425
  return Math.min(n, Math.max(t, e));
1426
1426
  }
1427
1427
  function pt(e, t, n) {
1428
- let r = e?.ownerDocument.defaultView, i = ut(R[t]);
1428
+ let r = e?.ownerDocument.defaultView, i = ut(z[t]);
1429
1429
  if (!r || !i) return n;
1430
1430
  let a = Number.parseFloat(r.getComputedStyle(e).getPropertyValue(i));
1431
1431
  return Number.isFinite(a) ? a : n;
1432
1432
  }
1433
1433
  function mt(e, t, n) {
1434
- let r = e?.ownerDocument.defaultView, i = ut(R[t]);
1434
+ let r = e?.ownerDocument.defaultView, i = ut(z[t]);
1435
1435
  return !r || !i ? n : r.getComputedStyle(e).getPropertyValue(i).trim() || n;
1436
1436
  }
1437
1437
  function ht(e, t) {
@@ -1577,14 +1577,14 @@ function Tt(e, t, n, r, i) {
1577
1577
  }
1578
1578
  let w = Math.min(1, (Math.hypot(e.vcx, e.vcy) + Math.abs(e.vw) + Math.abs(e.vh)) / 420);
1579
1579
  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, ee = [
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 = [
1581
1581
  C,
1582
1582
  C,
1583
1583
  C,
1584
1584
  C
1585
1585
  ];
1586
1586
  return {
1587
- path: We(-e.w / 2, -e.h / 2, e.w, e.h, ee),
1587
+ path: We(-e.w / 2, -e.h / 2, e.w, e.h, k),
1588
1588
  transform: `translate(${wt(e.cx)} ${wt(e.cy)}) scale(${wt(t.scale)})`,
1589
1589
  contentBlur: T,
1590
1590
  moving: !O
@@ -1852,7 +1852,7 @@ var Ut = class {
1852
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);
1853
1853
  }
1854
1854
  warnBudgetFallback() {
1855
- if (this.budgetWarningEmitted || !0) return;
1855
+ if (this.budgetWarningEmitted) return;
1856
1856
  this.budgetWarningEmitted = !0;
1857
1857
  let e = Oe(), t = e.activeGroups >= e.maxAnimatedGroups ? "the active-group limit is reached" : "the filter-area limit is exceeded";
1858
1858
  console.warn(`LiquidGroup: the liquid animation budget is insufficient (${t}); degrading to static rendering for this group.`);
@@ -2190,51 +2190,48 @@ var Jt = 24, Yt = 500, Xt = 16, Zt = 6, Qt = {
2190
2190
  sink: .8,
2191
2191
  seamBlur: 12.8
2192
2192
  };
2193
- function $t() {
2194
- return !1;
2195
- }
2196
- function en(e, t = 0, n = 1) {
2193
+ function $t(e, t = 0, n = 1) {
2197
2194
  return Math.min(n, Math.max(t, e));
2198
2195
  }
2199
- function tn(e, t) {
2196
+ function en(e, t) {
2200
2197
  return e !== void 0 && Number.isFinite(e) ? e : t;
2201
2198
  }
2202
- function nn(e, t, n) {
2199
+ function tn(e, t, n) {
2203
2200
  let r = e?.ownerDocument.defaultView;
2204
2201
  if (!r) return n;
2205
- let i = R[t], a = /^var\((--[\w-]+)\)$/.exec(i)?.[1];
2202
+ let i = z[t], a = /^var\((--[\w-]+)\)$/.exec(i)?.[1];
2206
2203
  if (!a) return n;
2207
2204
  let o = Number.parseFloat(r.getComputedStyle(e).getPropertyValue(a));
2208
2205
  return Number.isFinite(o) ? o : n;
2209
2206
  }
2210
- function rn(e, t = {}) {
2211
- let n = (n, r) => tn(t[n], nn(e, r, Qt[n]));
2207
+ function nn(e, t = {}) {
2208
+ let n = (n, r) => en(t[n], tn(e, r, Qt[n]));
2212
2209
  return {
2213
2210
  blur: Math.max(0, n("blur", "meltBlur")),
2214
2211
  contrast: Math.max(1, n("contrast", "meltContrast")),
2215
2212
  reach: Math.max(0, n("reach", "meltReach")),
2216
2213
  fade: Math.max(0, n("fade", "meltFade")),
2217
2214
  warp: Math.max(0, n("warp", "meltWarp")),
2218
- mix: en(n("mix", "meltMix")),
2215
+ mix: $t(n("mix", "meltMix")),
2219
2216
  mixBlur: Math.max(0, n("mixBlur", "meltMixBlur")),
2220
2217
  gravity: Math.max(0, n("gravity", "meltGravity")),
2221
2218
  waviness: Math.max(0, n("waviness", "meltWaviness"))
2222
2219
  };
2223
2220
  }
2224
- function an(e, t) {
2221
+ function rn(e, t) {
2225
2222
  let n = typeof t == "object" && t ? t : {}, r = (t, r, i) => {
2226
2223
  let a = n[t];
2227
- return tn(typeof a == "number" ? a : void 0, nn(e, r, i));
2228
- }, i = en(typeof t == "number" ? t : r("strength", "dissolveStrength", J.strength));
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));
2229
2226
  return {
2230
2227
  blur: Math.max(0, r("blur", "dissolveBlur", J.blur)),
2231
2228
  warp: Math.max(0, r("warp", "dissolveWarp", J.warp)),
2232
2229
  pull: Math.max(0, r("pull", "dissolvePull", J.pull)),
2233
2230
  range: Math.max(1, r("range", "dissolveRange", J.range)),
2234
2231
  zone: Math.max(1, r("zone", "dissolveZone", J.zone)),
2235
- mix: en(r("mix", "dissolveMix", J.mix)),
2232
+ mix: $t(r("mix", "dissolveMix", J.mix)),
2236
2233
  gravity: Math.max(0, r("gravity", "dissolveGravity", J.gravity)),
2237
- taper: en(r("taper", "dissolveTaper", J.taper)),
2234
+ taper: $t(r("taper", "dissolveTaper", J.taper)),
2238
2235
  warpFreq: Math.max(.2, r("warpFreq", "dissolveWarpFreq", J.warpFreq)),
2239
2236
  flowSpeed: Math.max(0, r("flowSpeed", "dissolveFlowSpeed", J.flowSpeed)),
2240
2237
  warpStyle: n.warpStyle ?? J.warpStyle,
@@ -2247,13 +2244,13 @@ function an(e, t) {
2247
2244
  seamBlur: Math.max(0, r("seamBlur", "dissolveSeamBlur", J.seamBlur))
2248
2245
  };
2249
2246
  }
2250
- function on(e) {
2247
+ function an(e) {
2251
2248
  return e ? e instanceof HTMLImageElement ? e : e.querySelector("img") : null;
2252
2249
  }
2253
- function sn(e) {
2250
+ function on(e) {
2254
2251
  return e && (e.currentSrc || e.src) || null;
2255
2252
  }
2256
- function cn(e) {
2253
+ function sn(e) {
2257
2254
  return {
2258
2255
  maskImage: e.style.getPropertyValue("mask-image"),
2259
2256
  maskPriority: e.style.getPropertyPriority("mask-image"),
@@ -2261,11 +2258,11 @@ function cn(e) {
2261
2258
  webkitMaskPriority: e.style.getPropertyPriority("-webkit-mask-image")
2262
2259
  };
2263
2260
  }
2264
- function ln(e) {
2261
+ function cn(e) {
2265
2262
  let t = e.image, n = e.previousMask;
2266
2263
  !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"));
2267
2264
  }
2268
- function un() {
2265
+ function ln() {
2269
2266
  let e = /* @__PURE__ */ new Set(), t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), r = 0, i = () => n.forEach((e) => e());
2270
2267
  return {
2271
2268
  registerMelt(t) {
@@ -2283,15 +2280,15 @@ function un() {
2283
2280
  let n = {
2284
2281
  ...e,
2285
2282
  id: `dissolve-${++r}`,
2286
- previousMask: e.image ? cn(e.image) : null
2283
+ previousMask: e.image ? sn(e.image) : null
2287
2284
  };
2288
2285
  return t.add(n), i(), {
2289
2286
  update(e) {
2290
- let t = on(n.el);
2291
- t !== n.image && (ln(n), n.image = t, n.previousMask = t ? cn(t) : null), n.opts = an(n.el, e), i();
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();
2292
2289
  },
2293
2290
  unregister() {
2294
- ln(n), t.delete(n), i();
2291
+ cn(n), t.delete(n), i();
2295
2292
  }
2296
2293
  };
2297
2294
  },
@@ -2302,29 +2299,29 @@ function un() {
2302
2299
  dissolveEntries: () => [...t]
2303
2300
  };
2304
2301
  }
2305
- function dn(e, t, n) {
2306
- let r = on(t);
2307
- return !r && $t() && console.warn("[swimmer-ui] `dissolve` needs an <img> inside the item; text and other DOM content stay unchanged."), e.registerDissolve({
2302
+ function un(e, t, n) {
2303
+ let r = an(t);
2304
+ return r || console.warn("[swimmer-ui] `dissolve` needs an <img> inside the item; text and other DOM content stay unchanged."), e.registerDissolve({
2308
2305
  el: t,
2309
2306
  image: r,
2310
- opts: an(t, n)
2307
+ opts: rn(t, n)
2311
2308
  });
2312
2309
  }
2313
- function fn({ src: e, options: n = {}, registry: r, children: i, forwardedRef: a, className: o, style: s, ...c }) {
2310
+ function dn({ src: e, options: n = {}, registry: r, children: i, forwardedRef: a, className: o, style: s, ...c }) {
2314
2311
  let l = p(null), u = JSON.stringify(n), f = p(!1), m = (e) => {
2315
2312
  l.current = e, typeof a == "function" ? a(e) : a && (a.current = e);
2316
2313
  };
2317
2314
  return d(() => {
2318
- let t = l.current, i = t?.firstElementChild, a = on(i), o = e ?? sn(a);
2315
+ let t = l.current, i = t?.firstElementChild, a = an(i), o = e ?? on(a);
2319
2316
  if (!t || !i || !a || !o) {
2320
- $t() && !f.current && (f.current = !0, console.warn("[swimmer-ui] effect=\"melt\" needs an image: pass melt={{ src }} or put an <img> inside the item."));
2317
+ f.current || (f.current = !0, console.warn("[swimmer-ui] effect=\"melt\" needs an image: pass melt={{ src }} or put an <img> inside the item."));
2321
2318
  return;
2322
2319
  }
2323
2320
  return r.registerMelt({
2324
2321
  el: t,
2325
2322
  target: a,
2326
2323
  src: o,
2327
- opts: rn(t, n)
2324
+ opts: nn(t, n)
2328
2325
  });
2329
2326
  }, [
2330
2327
  u,
@@ -2338,7 +2335,7 @@ function fn({ src: e, options: n = {}, registry: r, children: i, forwardedRef: a
2338
2335
  children: i
2339
2336
  });
2340
2337
  }
2341
- var pn = {
2338
+ var fn = {
2342
2339
  width: 0,
2343
2340
  height: 0,
2344
2341
  melt: null,
@@ -2348,28 +2345,28 @@ function Y(e, t = 2) {
2348
2345
  let n = 10 ** t;
2349
2346
  return Math.round(e * n) / n;
2350
2347
  }
2351
- function mn(e) {
2352
- let t = en(e);
2348
+ function pn(e) {
2349
+ let t = $t(e);
2353
2350
  return t * t * (3 - 2 * t);
2354
2351
  }
2355
- function hn(e, t) {
2352
+ function mn(e, t) {
2356
2353
  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);
2357
2354
  return Math.hypot(n, r);
2358
2355
  }
2359
- function gn(e, t) {
2356
+ function hn(e, t) {
2360
2357
  return {
2361
2358
  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,
2362
2359
  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
2363
2360
  };
2364
2361
  }
2365
- function _n(e, t, n) {
2362
+ function gn(e, t, n) {
2366
2363
  let r = e.ownerDocument.defaultView?.getComputedStyle(e).borderTopLeftRadius ?? "";
2367
2364
  return Math.max(0, Math.min(Number.parseFloat(r) || 0, t / 2, n / 2));
2368
2365
  }
2369
- function vn(e) {
2366
+ function _n(e) {
2370
2367
  return e.getBoundingClientRect();
2371
2368
  }
2372
- function yn(e, t) {
2369
+ function vn(e, t) {
2373
2370
  let n = e.getBoundingClientRect();
2374
2371
  return {
2375
2372
  x: n.left - t.left,
@@ -2378,21 +2375,21 @@ function yn(e, t) {
2378
2375
  h: n.height
2379
2376
  };
2380
2377
  }
2381
- function bn(e, t) {
2382
- let n = yn(e, t);
2378
+ function yn(e, t) {
2379
+ let n = vn(e, t);
2383
2380
  return {
2384
2381
  ...n,
2385
- r: _n(e, n.w, n.h)
2382
+ r: gn(e, n.w, n.h)
2386
2383
  };
2387
2384
  }
2388
- function xn(e) {
2385
+ function bn(e) {
2389
2386
  return `${Y(e.x)}:${Y(e.y)}:${Y(e.w)}:${Y(e.h)}`;
2390
2387
  }
2391
- function Sn(e, t, n) {
2388
+ function xn(e, t, n) {
2392
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));
2393
2390
  return (r + s * 2) * (i + s * 2);
2394
2391
  }
2395
- function Cn(e) {
2392
+ function Sn(e) {
2396
2393
  let t = e[0]?.opts;
2397
2394
  return t ? e.slice(1).reduce((e, t) => ({
2398
2395
  ...e,
@@ -2403,25 +2400,25 @@ function Cn(e) {
2403
2400
  seamBlur: Math.max(e.seamBlur, t.opts.seamBlur)
2404
2401
  }), { ...t }) : null;
2405
2402
  }
2406
- function wn(e, t, n, r, i, a, o, s, c) {
2403
+ function Cn(e, t, n, r, i, a, o, s, c) {
2407
2404
  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);
2408
2405
  return `translate(${Y(m)} ${Y(h)}) rotate(${Y(l)}) scale(${Y(f, 3)} ${Y(p, 3)}) rotate(${-Y(l)}) translate(${Y(-m)} ${Y(-h)})`;
2409
2406
  }
2410
- function Tn(e, t, n, r, i, a) {
2407
+ function wn(e, t, n, r, i, a) {
2411
2408
  let o = t - e.x, s = n - e.y;
2412
2409
  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;
2413
2410
  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;
2414
2411
  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)`;
2415
2412
  }
2416
- function En(e) {
2413
+ function Tn(e) {
2417
2414
  if (e < .002) return "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1";
2418
2415
  let t = Y(1 + 4 * e, 3);
2419
2416
  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)}`;
2420
2417
  }
2421
- function Dn(e) {
2418
+ function En(e) {
2422
2419
  return e.replace(/[^a-zA-Z0-9_-]/g, "");
2423
2420
  }
2424
- var On = class {
2421
+ var Dn = class {
2425
2422
  registry;
2426
2423
  getGroup;
2427
2424
  onState;
@@ -2453,7 +2450,7 @@ var On = class {
2453
2450
  if (!this.disposed) {
2454
2451
  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;
2455
2452
  for (let e of this.registry.entries()) this.setMeltPainted(e, !1);
2456
- for (let e of this.registry.dissolveEntries()) ln(e);
2453
+ for (let e of this.registry.dissolveEntries()) cn(e);
2457
2454
  this.releaseClaim(), this.observed.clear();
2458
2455
  }
2459
2456
  }
@@ -2467,7 +2464,7 @@ var On = class {
2467
2464
  let t = /* @__PURE__ */ new Set(), n = (e) => {
2468
2465
  e && (t.add(e), this.observed.has(e) || this.resizeObserver?.observe(e));
2469
2466
  };
2470
- for (let e of this.registry.entries()) n(e.el), n(e.target), n(on(e.target));
2467
+ for (let e of this.registry.entries()) n(e.el), n(e.target), n(an(e.target));
2471
2468
  for (let e of this.registry.dissolveEntries()) n(e.el), n(e.image);
2472
2469
  for (let e of this.observed) t.has(e) || this.resizeObserver?.unobserve(e);
2473
2470
  this.observed.clear(), t.forEach((e) => this.observed.add(e)), !this.mutationObserver && typeof MutationObserver < "u" && (this.mutationObserver = new MutationObserver((e) => {
@@ -2507,8 +2504,8 @@ var On = class {
2507
2504
  }
2508
2505
  ensureClaim(e, t, n) {
2509
2506
  if (this.claimed) return !0;
2510
- if (!Ae(Sn(e, t, n))) {
2511
- if (!this.budgetWarningEmitted && $t()) {
2507
+ if (!Ae(xn(e, t, n))) {
2508
+ if (!this.budgetWarningEmitted) {
2512
2509
  this.budgetWarningEmitted = !0;
2513
2510
  let e = Oe(), t = e.activeGroups >= e.maxAnimatedGroups ? "the active-group limit is reached" : "the filter-area limit is exceeded";
2514
2511
  console.warn(`LiquidGroup: the Melt/dissolve image filter budget is insufficient (${t}); degrading to crisp imagery for this group.`);
@@ -2521,7 +2518,7 @@ var On = class {
2521
2518
  if (this.raf = 0, this.disposed) return;
2522
2519
  let t = this.registry.entries(), n = this.registry.dissolveEntries();
2523
2520
  if (t.length === 0 && n.length === 0) {
2524
- this.awake = !1, this.lastNow = 0, this.lastActivity = 0, this.meltPairKey = "", this.meltProximity = 0, this.lastStateKey && (this.lastStateKey = "", this.onState(pn)), this.releaseClaim();
2521
+ this.awake = !1, this.lastNow = 0, this.lastActivity = 0, this.meltPairKey = "", this.meltProximity = 0, this.lastStateKey && (this.lastStateKey = "", this.onState(fn)), this.releaseClaim();
2525
2522
  return;
2526
2523
  }
2527
2524
  let r = this.getGroup();
@@ -2531,23 +2528,23 @@ var On = class {
2531
2528
  }
2532
2529
  let i = this.lastNow ? Math.min(.25, Math.max(1 / 240, (e - this.lastNow) / 1e3)) : 1 / 60;
2533
2530
  this.lastNow = e;
2534
- let a = vn(r), o = /* @__PURE__ */ new Map();
2535
- for (let e of r.querySelectorAll(".game-ui-liquid-item")) e.closest(".game-ui-liquid-group") === r && o.set(e, yn(e, a));
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));
2536
2533
  let s = t.slice(0, 2), c = s.map((e) => {
2537
- let t = o.get(e.el) ?? yn(e.el, a), n = sn(on(e.target));
2534
+ let t = o.get(e.el) ?? vn(e.el, a), n = on(an(e.target));
2538
2535
  return n && (e.src = n), {
2539
2536
  ...t,
2540
- r: _n(e.target, t.w, t.h)
2537
+ r: gn(e.target, t.w, t.h)
2541
2538
  };
2542
2539
  }), 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}` : "";
2543
2540
  d !== this.meltPairKey && (this.meltPairKey = d, this.meltProximity = 0);
2544
- let f = l && c[0] && c[1] ? mn(1 - hn(c[0], c[1]) / Math.max(8, u.blur * 2.6)) : 0;
2541
+ let f = l && c[0] && c[1] ? pn(1 - mn(c[0], c[1]) / Math.max(8, u.blur * 2.6)) : 0;
2545
2542
  this.meltProximity += (f - this.meltProximity) * (1 - Math.exp(-14 * i)), Math.abs(this.meltProximity - f) < .004 && (this.meltProximity = f);
2546
- let p = this.computeDissolves(n, o, a, i), m = l, h = p.visuals.length > 0, g = m || h, _ = Cn(n);
2543
+ let p = this.computeDissolves(n, o, a, i), m = l, h = p.visuals.length > 0, g = m || h, _ = Sn(n);
2547
2544
  if (g && !this.ensureClaim(r, u, _)) {
2548
2545
  for (let e of t) this.setMeltPainted(e, !1);
2549
- for (let e of n) ln(e);
2550
- this.onState(pn), this.lastStateKey = "", this.awake = !1, this.lastNow = 0;
2546
+ for (let e of n) cn(e);
2547
+ this.onState(fn), this.lastStateKey = "", this.awake = !1, this.lastNow = 0;
2551
2548
  return;
2552
2549
  }
2553
2550
  if (m) for (let [e, n] of t.entries()) this.setMeltPainted(n, e < 2);
@@ -2564,14 +2561,14 @@ var On = class {
2564
2561
  srcA: s[0].src,
2565
2562
  srcB: s[1].src,
2566
2563
  opts: s[0].opts,
2567
- prox: en(this.meltProximity)
2564
+ prox: $t(this.meltProximity)
2568
2565
  } : null,
2569
2566
  dissolves: p.visuals
2570
2567
  }, y = this.renderStateKey(v), b = y !== this.lastStateKey;
2571
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);
2572
2569
  };
2573
2570
  renderStateKey(e) {
2574
- let t = e.melt ? `${e.melt.srcA}|${e.melt.srcB}|${xn(e.melt.a)}|${xn(e.melt.b)}|${Y(e.melt.prox, 3)}` : "", n = e.dissolves.map((e) => `${e.id}|${e.src}|${e.neighborSrc ?? ""}|${xn(e.image)}|${Y(e.cx)}|${Y(e.cy)}|${Y(e.d, 2)}|${Y(e.opacity, 3)}|${Y(e.phase, 3)}|${e.mask ?? ""}`).join(";");
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(";");
2575
2572
  return `${e.width}x${e.height}|${t}|${n}`;
2576
2573
  }
2577
2574
  computeDissolves(e, t, n, r) {
@@ -2579,7 +2576,7 @@ var On = class {
2579
2576
  for (let s of e) {
2580
2577
  let e = t.get(s.el), c = s.image;
2581
2578
  if (!e || !c) {
2582
- s.image && ln(s);
2579
+ s.image && cn(s);
2583
2580
  continue;
2584
2581
  }
2585
2582
  let l = this.motions.get(s.id) ?? {
@@ -2595,7 +2592,7 @@ var On = class {
2595
2592
  let u = Infinity, d = null, f = null;
2596
2593
  for (let [t, n] of o) {
2597
2594
  if (t === s.el) continue;
2598
- let r = hn(e, n);
2595
+ let r = mn(e, n);
2599
2596
  r < u && (u = r, d = n, f = t);
2600
2597
  }
2601
2598
  let p = 0, m = 0;
@@ -2605,7 +2602,7 @@ var On = class {
2605
2602
  }
2606
2603
  let h = 0;
2607
2604
  if (d && u < s.opts.range && s.opts.active) {
2608
- let e = mn((1 - u / s.opts.range) / .65), t = mn((p - s.opts.sink * .2) / Math.max(.01, s.opts.sink * .8));
2605
+ let e = pn((1 - u / s.opts.range) / .65), t = pn((p - s.opts.sink * .2) / Math.max(.01, s.opts.sink * .8));
2609
2606
  h = e ** 1.25 * s.opts.strength * (1 - t);
2610
2607
  }
2611
2608
  if (h >= l.fade) l.fade += (h - l.fade) * Math.min(1, r * Xt), l.release = null;
@@ -2619,26 +2616,26 @@ var On = class {
2619
2616
  l.fade = l.release.from * (1 - t) ** 2;
2620
2617
  } else l.fade = 0;
2621
2618
  if (l.fade <= .001) {
2622
- l.fade = 0, ln(s);
2619
+ l.fade = 0, cn(s);
2623
2620
  continue;
2624
2621
  }
2625
2622
  let g = d ?? l.contact;
2626
2623
  if (!g) continue;
2627
- let _ = gn(e, g);
2624
+ let _ = hn(e, g);
2628
2625
  l.contact = { ...g };
2629
- let v = mn(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;
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;
2630
2627
  l.opacity = l.release ? (1 - y) ** 2 : l.opacity + (1 - l.opacity) * Math.min(1, r * Xt);
2631
2628
  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;
2632
2629
  l.previous = {
2633
2630
  x: e.x,
2634
2631
  y: e.y
2635
2632
  }, l.phase += Math.min(r, 1 / 24) * s.opts.flowSpeed * .12 * Math.min(1, S / 40);
2636
- 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 = bn(c, n), D = d && u < Math.max(10, s.opts.blur * 2.5) ? mn(1 - u / Math.max(10, s.opts.blur * 2.5)) : l.fade, O = Tn(E, _.x, _.y, b, l.fade, Math.max(D, m * .75));
2637
- O ? (c.style.setProperty("mask-image", O), c.style.setProperty("-webkit-mask-image", O)) : ln(s);
2638
- let ee = Math.atan2(w, C) * 180 / Math.PI, k = {
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 = {
2639
2636
  id: s.id,
2640
- src: sn(c) ?? c.src,
2641
- neighborSrc: f ? sn(on(f)) : null,
2637
+ src: on(c) ?? c.src,
2638
+ neighborSrc: f ? on(an(f)) : null,
2642
2639
  image: E,
2643
2640
  cx: _.x,
2644
2641
  cy: _.y,
@@ -2646,7 +2643,7 @@ var On = class {
2646
2643
  opacity: l.opacity,
2647
2644
  phase: l.phase,
2648
2645
  structure: v,
2649
- angle: ee,
2646
+ angle: k,
2650
2647
  gravityX: C,
2651
2648
  gravityY: w,
2652
2649
  elongation: T,
@@ -2655,7 +2652,7 @@ var On = class {
2655
2652
  options: s.opts,
2656
2653
  mask: O
2657
2654
  };
2658
- i.push(k), a = a || !!l.release || Math.abs(h - l.fade) > .004 || l.previous === null;
2655
+ i.push(A), a = a || !!l.release || Math.abs(h - l.fade) > .004 || l.previous === null;
2659
2656
  }
2660
2657
  return {
2661
2658
  visuals: i,
@@ -2663,8 +2660,8 @@ var On = class {
2663
2660
  };
2664
2661
  }
2665
2662
  };
2666
- function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox: d }) {
2667
- let f = `lgm-${Dn(u())}`, { blur: p, contrast: m, reach: h, fade: g, warp: _, mix: v, mixBlur: y, gravity: b, waviness: x } = s, S = {
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 = {
2668
2665
  x: r.x + r.w / 2,
2669
2666
  y: r.y + r.h / 2
2670
2667
  }, C = {
@@ -2673,7 +2670,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2673
2670
  }, w = Math.hypot(r.w, r.h) / 2 * h * d, T = Math.hypot(i.w, i.h) / 2 * h * d, E = {
2674
2671
  x: (S.x + C.x) / 2,
2675
2672
  y: (S.y + C.y) / 2
2676
- }, D = C.x - S.x, O = C.y - S.y, ee = Math.max(.001, Math.hypot(D, O)), k = -O / ee, A = D / ee, te = Math.max(0, (r.w + i.w) / 2 - Math.abs(D)), j = Math.max(0, (r.h + i.h) / 2 - Math.abs(O)), M = .5 * (te * Math.abs(k) + j * Math.abs(A)) * d, N = Math.round(Math.atan2(A, k) * 180 / Math.PI), ne = Math.round(v * d * 100) / 100, re = Math.round((2 + (p - 2) * d) * 10) / 10, ie = Math.round(_ * d * 10) / 10, ae = Math.round(re * 2.5 * 10) / 10, oe = Math.round((.4 + (2 + p * .8) * d) * 10) / 10, se = `translate(${r.x}, ${r.y})`, ce = `translate(${i.x}, ${i.y})`;
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})`;
2677
2674
  return /* @__PURE__ */ n("svg", {
2678
2675
  "aria-hidden": "true",
2679
2676
  focusable: "false",
@@ -2723,7 +2720,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2723
2720
  children: [
2724
2721
  /* @__PURE__ */ t("feGaussianBlur", {
2725
2722
  in: "SourceGraphic",
2726
- stdDeviation: re,
2723
+ stdDeviation: ne,
2727
2724
  result: "b"
2728
2725
  }),
2729
2726
  /* @__PURE__ */ t("feColorMatrix", {
@@ -2734,7 +2731,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2734
2731
  }),
2735
2732
  /* @__PURE__ */ t("feGaussianBlur", {
2736
2733
  in: "SourceGraphic",
2737
- stdDeviation: ae,
2734
+ stdDeviation: ie,
2738
2735
  result: "bc"
2739
2736
  }),
2740
2737
  /* @__PURE__ */ t("feComposite", {
@@ -2753,7 +2750,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2753
2750
  /* @__PURE__ */ t("feDisplacementMap", {
2754
2751
  in: "mix",
2755
2752
  in2: "wn",
2756
- scale: ie,
2753
+ scale: re,
2757
2754
  xChannelSelector: "R",
2758
2755
  yChannelSelector: "G",
2759
2756
  result: "warped"
@@ -2790,7 +2787,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2790
2787
  height: "220%",
2791
2788
  children: /* @__PURE__ */ t("feGaussianBlur", { stdDeviation: g })
2792
2789
  }),
2793
- ne > .01 ? /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ n("filter", {
2790
+ te > .01 ? /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ n("filter", {
2794
2791
  id: `${f}-marble`,
2795
2792
  x: "-25%",
2796
2793
  y: "-25%",
@@ -2813,7 +2810,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2813
2810
  /* @__PURE__ */ t("feDisplacementMap", {
2814
2811
  in: "c",
2815
2812
  in2: "n1",
2816
- scale: ne * 90,
2813
+ scale: te * 90,
2817
2814
  xChannelSelector: "R",
2818
2815
  yChannelSelector: "G",
2819
2816
  result: "d1"
@@ -2828,7 +2825,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2828
2825
  /* @__PURE__ */ t("feDisplacementMap", {
2829
2826
  in: "d1",
2830
2827
  in2: "n2",
2831
- scale: ne * 50,
2828
+ scale: te * 50,
2832
2829
  xChannelSelector: "R",
2833
2830
  yChannelSelector: "G",
2834
2831
  result: "d2"
@@ -2852,7 +2849,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2852
2849
  }),
2853
2850
  /* @__PURE__ */ t("feGaussianBlur", {
2854
2851
  in: "SourceGraphic",
2855
- stdDeviation: re,
2852
+ stdDeviation: ne,
2856
2853
  result: "mb"
2857
2854
  }),
2858
2855
  /* @__PURE__ */ t("feColorMatrix", {
@@ -2871,7 +2868,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2871
2868
  /* @__PURE__ */ t("feDisplacementMap", {
2872
2869
  in: "mg",
2873
2870
  in2: "mwn",
2874
- scale: ie,
2871
+ scale: re,
2875
2872
  xChannelSelector: "R",
2876
2873
  yChannelSelector: "G",
2877
2874
  result: "mshape"
@@ -2894,9 +2891,9 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2894
2891
  children: /* @__PURE__ */ t("ellipse", {
2895
2892
  cx: E.x,
2896
2893
  cy: E.y,
2897
- rx: (w + T) / 2 + M,
2894
+ rx: (w + T) / 2 + N,
2898
2895
  ry: (w + T) / 2 * b,
2899
- transform: `rotate(${N}, ${E.x}, ${E.y})`,
2896
+ transform: `rotate(${P}, ${E.x}, ${E.y})`,
2900
2897
  fill: "#fff"
2901
2898
  })
2902
2899
  })
@@ -2907,7 +2904,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2907
2904
  y: "-40%",
2908
2905
  width: "180%",
2909
2906
  height: "180%",
2910
- children: /* @__PURE__ */ t("feGaussianBlur", { stdDeviation: oe })
2907
+ children: /* @__PURE__ */ t("feGaussianBlur", { stdDeviation: ae })
2911
2908
  }),
2912
2909
  /* @__PURE__ */ n("mask", {
2913
2910
  id: `${f}-ma`,
@@ -2919,7 +2916,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2919
2916
  children: [/* @__PURE__ */ t("g", {
2920
2917
  filter: `url(#${f}-edge)`,
2921
2918
  children: /* @__PURE__ */ t("g", {
2922
- transform: se,
2919
+ transform: oe,
2923
2920
  children: /* @__PURE__ */ t("rect", {
2924
2921
  width: r.w,
2925
2922
  height: r.h,
@@ -2932,9 +2929,9 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2932
2929
  children: /* @__PURE__ */ t("ellipse", {
2933
2930
  cx: E.x,
2934
2931
  cy: E.y,
2935
- rx: T + M,
2932
+ rx: T + N,
2936
2933
  ry: T,
2937
- transform: `rotate(${N}, ${E.x}, ${E.y})`,
2934
+ transform: `rotate(${P}, ${E.x}, ${E.y})`,
2938
2935
  fill: "#000"
2939
2936
  })
2940
2937
  })]
@@ -2949,7 +2946,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2949
2946
  children: [/* @__PURE__ */ t("g", {
2950
2947
  filter: `url(#${f}-edge)`,
2951
2948
  children: /* @__PURE__ */ t("g", {
2952
- transform: ce,
2949
+ transform: se,
2953
2950
  children: /* @__PURE__ */ t("rect", {
2954
2951
  width: i.w,
2955
2952
  height: i.h,
@@ -2962,9 +2959,9 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2962
2959
  children: /* @__PURE__ */ t("ellipse", {
2963
2960
  cx: E.x,
2964
2961
  cy: E.y,
2965
- rx: w + M,
2962
+ rx: w + N,
2966
2963
  ry: w,
2967
- transform: `rotate(${N}, ${E.x}, ${E.y})`,
2964
+ transform: `rotate(${P}, ${E.x}, ${E.y})`,
2968
2965
  fill: "#000"
2969
2966
  })
2970
2967
  })]
@@ -2973,7 +2970,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2973
2970
  /* @__PURE__ */ n("g", {
2974
2971
  filter: `url(#${f}-goo)`,
2975
2972
  children: [/* @__PURE__ */ t("g", {
2976
- transform: se,
2973
+ transform: oe,
2977
2974
  children: /* @__PURE__ */ t("rect", {
2978
2975
  width: r.w,
2979
2976
  height: r.h,
@@ -2981,7 +2978,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2981
2978
  fill: `url(#${f}-pa)`
2982
2979
  })
2983
2980
  }), /* @__PURE__ */ t("g", {
2984
- transform: ce,
2981
+ transform: se,
2985
2982
  children: /* @__PURE__ */ t("rect", {
2986
2983
  width: i.w,
2987
2984
  height: i.h,
@@ -2990,12 +2987,12 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
2990
2987
  })
2991
2988
  })]
2992
2989
  }),
2993
- ne > .01 ? /* @__PURE__ */ t("g", {
2990
+ te > .01 ? /* @__PURE__ */ t("g", {
2994
2991
  mask: `url(#${f}-marblemask)`,
2995
2992
  children: /* @__PURE__ */ n("g", {
2996
2993
  filter: `url(#${f}-marble)`,
2997
2994
  children: [/* @__PURE__ */ t("g", {
2998
- transform: se,
2995
+ transform: oe,
2999
2996
  children: /* @__PURE__ */ t("rect", {
3000
2997
  width: r.w,
3001
2998
  height: r.h,
@@ -3003,7 +3000,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
3003
3000
  fill: `url(#${f}-pa)`
3004
3001
  })
3005
3002
  }), /* @__PURE__ */ t("g", {
3006
- transform: ce,
3003
+ transform: se,
3007
3004
  children: /* @__PURE__ */ t("rect", {
3008
3005
  width: i.w,
3009
3006
  height: i.h,
@@ -3016,7 +3013,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
3016
3013
  /* @__PURE__ */ t("g", {
3017
3014
  mask: `url(#${f}-ma)`,
3018
3015
  children: /* @__PURE__ */ t("g", {
3019
- transform: se,
3016
+ transform: oe,
3020
3017
  children: /* @__PURE__ */ t("rect", {
3021
3018
  width: r.w,
3022
3019
  height: r.h,
@@ -3028,7 +3025,7 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
3028
3025
  /* @__PURE__ */ t("g", {
3029
3026
  mask: `url(#${f}-mb)`,
3030
3027
  children: /* @__PURE__ */ t("g", {
3031
- transform: ce,
3028
+ transform: se,
3032
3029
  children: /* @__PURE__ */ t("rect", {
3033
3030
  width: i.w,
3034
3031
  height: i.h,
@@ -3040,10 +3037,10 @@ function kn({ a: r, b: i, srcA: a, srcB: o, opts: s, width: c, height: l, prox:
3040
3037
  ]
3041
3038
  });
3042
3039
  }
3043
- function An({ visuals: r }) {
3044
- let i = `lgd-${Dn(u())}`;
3040
+ function kn({ visuals: r }) {
3041
+ let i = `lgd-${En(u())}`;
3045
3042
  return /* @__PURE__ */ t(e, { children: r.map((e) => {
3046
- let r = `${i}-${Dn(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 = wn(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);
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);
3047
3044
  return /* @__PURE__ */ n("g", {
3048
3045
  "data-liquid-gooey-dissolve": "",
3049
3046
  children: [
@@ -3175,7 +3172,7 @@ function An({ visuals: r }) {
3175
3172
  /* @__PURE__ */ t("feColorMatrix", {
3176
3173
  in: "erosion-noise",
3177
3174
  type: "matrix",
3178
- values: En(c),
3175
+ values: Tn(c),
3179
3176
  result: "erosion"
3180
3177
  }),
3181
3178
  /* @__PURE__ */ t("feComposite", {
@@ -3247,10 +3244,10 @@ function An({ visuals: r }) {
3247
3244
  }, e.id);
3248
3245
  }) });
3249
3246
  }
3250
- function jn({ registry: e, getGroup: r }) {
3251
- let [i, a] = m(pn);
3247
+ function An({ registry: e, getGroup: r }) {
3248
+ let [i, a] = m(fn);
3252
3249
  return d(() => {
3253
- let t = new On({
3250
+ let t = new Dn({
3254
3251
  registry: e,
3255
3252
  getGroup: r,
3256
3253
  onState: a
@@ -3272,42 +3269,42 @@ function jn({ registry: e, getGroup: r }) {
3272
3269
  overflow: "visible",
3273
3270
  pointerEvents: "none"
3274
3271
  },
3275
- children: [i.melt ? /* @__PURE__ */ t(kn, {
3272
+ children: [i.melt ? /* @__PURE__ */ t(On, {
3276
3273
  ...i.melt,
3277
3274
  width: i.width,
3278
3275
  height: i.height
3279
- }) : null, i.dissolves.length > 0 ? /* @__PURE__ */ t(An, { visuals: i.dissolves }) : null]
3276
+ }) : null, i.dissolves.length > 0 ? /* @__PURE__ */ t(kn, { visuals: i.dissolves }) : null]
3280
3277
  });
3281
3278
  }
3282
3279
  //#endregion
3283
3280
  //#region src/LiquidGroup.tsx
3284
- var Mn = i(null);
3285
- function Nn() {
3286
- let e = c(Mn);
3281
+ var jn = i(null);
3282
+ function Mn() {
3283
+ let e = c(jn);
3287
3284
  if (!e) throw Error("<LiquidGroup.Item> must be rendered inside <LiquidGroup>.");
3288
3285
  return e;
3289
3286
  }
3290
- function Pn(e) {
3287
+ function Nn(e) {
3291
3288
  return e.replace(/[^a-zA-Z0-9_-]/g, "");
3292
3289
  }
3293
- function Fn(e, t) {
3290
+ function Pn(e, t) {
3294
3291
  return Number.isFinite(e) ? e : t;
3295
3292
  }
3296
- function In(e, t) {
3293
+ function Fn(e, t) {
3297
3294
  if (!e) return e;
3298
3295
  let n = /^var\((--[\w-]+)\)$/.exec(e.trim());
3299
3296
  if (!n || !t) return e;
3300
3297
  let r = t.ownerDocument.defaultView;
3301
3298
  return r && r.getComputedStyle(t).getPropertyValue(n[1] ?? "").trim() || e;
3302
3299
  }
3303
- function Ln(e, t, n) {
3304
- let r = In(e, t), i = Number.parseFloat(r ?? "");
3300
+ function In(e, t, n) {
3301
+ let r = Fn(e, t), i = Number.parseFloat(r ?? "");
3305
3302
  return Number.isFinite(i) ? i : n;
3306
3303
  }
3307
- function Rn(...e) {
3304
+ function Ln(...e) {
3308
3305
  return e.filter(Boolean).join(" ") || void 0;
3309
3306
  }
3310
- function zn(e) {
3307
+ function Rn(e) {
3311
3308
  let t = { ...e };
3312
3309
  for (let e of [
3313
3310
  "children",
@@ -3326,56 +3323,56 @@ function zn(e) {
3326
3323
  ]) delete t[e];
3327
3324
  return t;
3328
3325
  }
3329
- function Bn() {
3326
+ function zn() {
3330
3327
  return typeof window > "u" || typeof window.matchMedia != "function" ? null : window.matchMedia("(prefers-reduced-motion: reduce)");
3331
3328
  }
3332
- function Vn() {
3333
- let [e, t] = m(() => Bn()?.matches ?? !1);
3329
+ function Bn() {
3330
+ let [e, t] = m(() => zn()?.matches ?? !1);
3334
3331
  return l(() => {
3335
- let e = Bn();
3332
+ let e = zn();
3336
3333
  if (!e) return;
3337
3334
  let n = (e) => t(e.matches);
3338
3335
  return t(e.matches), e.addEventListener("change", n), () => e.removeEventListener("change", n);
3339
3336
  }, []), e;
3340
3337
  }
3341
- function Hn(e) {
3338
+ function Vn(e) {
3342
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);
3343
3340
  }
3344
- var Un = 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) {
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) {
3345
3342
  let w = p(null), [T, E] = m(null), [D, O] = m({
3346
3343
  w: 0,
3347
3344
  h: 0
3348
- }), [ee, k] = m({
3345
+ }), [k, A] = m({
3349
3346
  waviness: Pe.waviness,
3350
3347
  wavinessFreq: Pe.wavinessFreq
3351
- }), [A, te] = m(0), j = p(0), M = Vn(), N = v === "reduced" || M, [ne, re] = m(N ? "reduced" : "static"), ie = Math.max(0, Fn(e, 6)), ae = Math.max(1, Fn(r, 18)), oe = Math.max(0, Fn(a, 24)), se = Math.max(0, Fn(h ?? ee.waviness, Pe.waviness)), ce = _ !== !1 && Math.max(0, Fn(_ ?? .3, ze)), le = Be(se, D.w > 0 && D.h > 0 ? Math.min(D.w, D.h) : 0, ce), ue = Math.max(0, Fn(g ?? ee.wavinessFreq, Pe.wavinessFreq)), P = In(o, w.current), de = In(c, w.current), fe = f(() => Kt(P), [P]), pe = f(() => qt(de), [de]), me = Math.ceil(ie * 3 + oe + Hn(fe) + (pe ? pe.width : 0) + le + (le > 0 ? Math.ceil(Ne * 3) : 0)), he = p(me);
3352
- he.current = me;
3353
- let F = Math.ceil(me + A), ge = p(F);
3354
- ge.current = F;
3355
- let _e = `liquid-gooey-${Pn(u())}`, I = s((e) => {
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) => {
3356
3353
  w.current = e, typeof C == "function" ? C(e) : C && (C.current = e);
3357
- }, [C]), L = s((e) => E(e), []);
3354
+ }, [C]), R = s((e) => E(e), []);
3358
3355
  d(() => {
3359
3356
  let e = w.current;
3360
3357
  if (!e) return;
3361
3358
  let t = {
3362
- waviness: Math.max(0, h === void 0 ? Ln(R.waviness, e, Pe.waviness) : Fn(h, Pe.waviness)),
3363
- wavinessFreq: Math.max(0, g === void 0 ? Ln(R.wavinessFreq, e, Pe.wavinessFreq) : Fn(g, Pe.wavinessFreq))
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))
3364
3361
  };
3365
- k((e) => e.waviness === t.waviness && e.wavinessFreq === t.wavinessFreq ? e : t);
3362
+ A((e) => e.waviness === t.waviness && e.wavinessFreq === t.wavinessFreq ? e : t);
3366
3363
  }, [h, g]);
3367
- let z = f(() => new Ut({
3364
+ let B = f(() => new Ut({
3368
3365
  getGroup: () => w.current,
3369
3366
  getFilterArea: () => {
3370
3367
  let e = w.current;
3371
- return e ? (e.offsetWidth + (he.current + j.current) * 2) * (e.offsetHeight + (he.current + j.current) * 2) : 0;
3368
+ return e ? (e.offsetWidth + (me.current + M.current) * 2) * (e.offsetHeight + (me.current + M.current) * 2) : 0;
3372
3369
  },
3373
- onModeChange: re,
3370
+ onModeChange: ne,
3374
3371
  onFeaturePaddingChange: (e) => {
3375
- j.current = e, te((t) => Math.abs(t - e) < .5 ? t : e);
3372
+ M.current = e, ee((t) => Math.abs(t - e) < .5 ? t : e);
3376
3373
  },
3377
3374
  follow: v === "follow"
3378
- }), [v]), B = f(() => un(), []);
3375
+ }), [v]), V = f(() => ln(), []);
3379
3376
  d(() => {
3380
3377
  let e = w.current;
3381
3378
  if (!e) return;
@@ -3384,24 +3381,24 @@ var Un = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-su
3384
3381
  w: e.offsetWidth,
3385
3382
  h: e.offsetHeight
3386
3383
  };
3387
- O((e) => e.w === t.w && e.h === t.h ? e : t), z.setFilterArea((t.w + ge.current * 2) * (t.h + ge.current * 2));
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));
3388
3385
  };
3389
3386
  if (t(), typeof ResizeObserver > "u") return;
3390
3387
  let n = new ResizeObserver(t);
3391
3388
  return n.observe(e), () => n.disconnect();
3392
- }, [z, F]), l(() => {
3393
- z.setReducedMotion(N);
3394
- }, [z, N]), l(() => () => z.dispose(), [z]);
3395
- let V = Math.max(1, D.w), ve = Math.max(1, D.h), H = Rn("game-ui-liquid-group", y);
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);
3396
3393
  return /* @__PURE__ */ n("div", {
3397
3394
  ...S,
3398
- ref: I,
3395
+ ref: L,
3399
3396
  className: H,
3400
- "data-liquid-filter-area": Math.round((D.w + F * 2) * (D.h + F * 2)),
3397
+ "data-liquid-filter-area": Math.round((D.w + I * 2) * (D.h + I * 2)),
3401
3398
  "data-liquid-filter-budget": we,
3402
- "data-liquid-feature-padding": Math.round(A * 10) / 10,
3403
- "data-liquid-motion": ne,
3404
- "data-liquid-waviness": Math.round(le * 100) / 100,
3399
+ "data-liquid-feature-padding": Math.round(j * 10) / 10,
3400
+ "data-liquid-motion": te,
3401
+ "data-liquid-waviness": Math.round(ce * 100) / 100,
3405
3402
  style: b,
3406
3403
  children: [
3407
3404
  /* @__PURE__ */ n("svg", {
@@ -3409,39 +3406,39 @@ var Un = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-su
3409
3406
  className: "game-ui-liquid-silhouette",
3410
3407
  "data-liquid-gooey-silhouette": "",
3411
3408
  focusable: "false",
3412
- viewBox: `0 0 ${V} ${ve}`,
3409
+ viewBox: `0 0 ${_e} ${ve}`,
3413
3410
  children: [/* @__PURE__ */ t("defs", { children: /* @__PURE__ */ t("filter", {
3414
3411
  colorInterpolationFilters: "sRGB",
3415
3412
  filterUnits: "userSpaceOnUse",
3416
- height: ve + F * 2,
3417
- id: _e,
3418
- width: V + F * 2,
3419
- x: -F,
3420
- y: -F,
3413
+ height: ve + I * 2,
3414
+ id: ge,
3415
+ width: _e + I * 2,
3416
+ x: -I,
3417
+ y: -I,
3421
3418
  children: /* @__PURE__ */ t(Re, {
3422
- blur: ie,
3423
- contrast: ae,
3424
- shadows: fe,
3425
- stroke: pe,
3426
- waviness: le,
3427
- wavinessFreq: ue
3419
+ blur: re,
3420
+ contrast: ie,
3421
+ shadows: de,
3422
+ stroke: fe,
3423
+ waviness: ce,
3424
+ wavinessFreq: le
3428
3425
  })
3429
3426
  }) }), /* @__PURE__ */ t("g", {
3430
- ref: L,
3427
+ ref: R,
3431
3428
  fill: i,
3432
- filter: `url(#${_e})`
3429
+ filter: `url(#${ge})`
3433
3430
  })]
3434
3431
  }),
3435
- /* @__PURE__ */ t(jn, {
3436
- registry: B,
3432
+ /* @__PURE__ */ t(An, {
3433
+ registry: V,
3437
3434
  getGroup: () => w.current
3438
3435
  }),
3439
- /* @__PURE__ */ t(Mn.Provider, {
3436
+ /* @__PURE__ */ t(jn.Provider, {
3440
3437
  value: {
3441
3438
  portal: T,
3442
- engine: z,
3439
+ engine: B,
3443
3440
  follow: v === "follow",
3444
- imageMelt: B
3441
+ imageMelt: V
3445
3442
  },
3446
3443
  children: /* @__PURE__ */ t("div", {
3447
3444
  className: "game-ui-liquid-content",
@@ -3450,24 +3447,24 @@ var Un = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-su
3450
3447
  })
3451
3448
  ]
3452
3449
  });
3453
- }), Wn = 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) {
3454
- let { portal: D, engine: O, follow: ee, imageMelt: k } = Nn(), A = `liquid-item-${Pn(u())}`, te = p(null), j = p(null), M = p(null), N = p(null), ne = JSON.stringify(a ?? null), re = a !== void 0 && a !== !1, ie = f(() => {
3455
- let e = r === "morph" || r === "bend" ? r : void 0, t = e === "bend", n = r === "bend" || ee && y === void 0 && r !== "morph" || re && y === void 0 && r !== "morph" ? void 0 : y ?? {}, i = {
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 = {
3456
3453
  ...e === void 0 ? {} : { effect: e },
3457
3454
  ...n === void 0 ? {} : { morph: n },
3458
3455
  ...b === void 0 ? {} : { bend: b },
3459
3456
  ...x === void 0 && !t ? {} : { observe: t || x },
3460
- x: Fn(o, 0),
3461
- y: Fn(c, 0),
3462
- scale: Fn(m, 1)
3457
+ x: Pn(o, 0),
3458
+ y: Pn(c, 0),
3459
+ scale: Pn(m, 1)
3463
3460
  };
3464
3461
  return g !== void 0 && (i.transition = g), _ !== void 0 && (i.delay = _), v !== void 0 && (i.radius = v), i;
3465
3462
  }, [
3466
3463
  b,
3467
3464
  _,
3468
3465
  r,
3469
- ee,
3470
- re,
3466
+ k,
3467
+ ne,
3471
3468
  y,
3472
3469
  x,
3473
3470
  v,
@@ -3476,66 +3473,66 @@ var Un = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-su
3476
3473
  o,
3477
3474
  c
3478
3475
  ]);
3479
- M.current === null && (M.current = ie);
3480
- let ae = s((e) => {
3481
- te.current = e, typeof E == "function" ? E(e) : E && (E.current = e);
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);
3482
3479
  }, [E]);
3483
3480
  return d(() => {
3484
- let e = te.current, t = j.current;
3485
- if (!(!D || !e || !t || !M.current)) return O.register({
3486
- id: A,
3481
+ let e = ee.current, t = M.current;
3482
+ if (!(!D || !e || !t || !N.current)) return O.register({
3483
+ id: j,
3487
3484
  host: e,
3488
3485
  blob: t,
3489
- config: M.current
3486
+ config: N.current
3490
3487
  });
3491
3488
  }, [
3492
3489
  O,
3493
- A,
3490
+ j,
3494
3491
  D
3495
3492
  ]), d(() => {
3496
- O.update(A, ie);
3493
+ O.update(j, re);
3497
3494
  }, [
3498
- ie,
3495
+ re,
3499
3496
  O,
3500
- A
3497
+ j
3501
3498
  ]), d(() => () => {
3502
- N.current?.unregister(), N.current = null;
3503
- }, [k]), d(() => {
3499
+ P.current?.unregister(), P.current = null;
3500
+ }, [A]), d(() => {
3504
3501
  if (r === "move" || a === void 0 || a === !1) {
3505
- N.current?.unregister(), N.current = null;
3502
+ P.current?.unregister(), P.current = null;
3506
3503
  return;
3507
3504
  }
3508
- let e = te.current;
3505
+ let e = ee.current;
3509
3506
  if (e) {
3510
- if (N.current) {
3511
- N.current.update(a);
3507
+ if (P.current) {
3508
+ P.current.update(a);
3512
3509
  return;
3513
3510
  }
3514
- N.current = dn(k, e, a);
3511
+ P.current = un(A, e, a);
3515
3512
  }
3516
3513
  }, [
3517
- ne,
3514
+ te,
3518
3515
  r,
3519
- k
3520
- ]), l(() => {}, [r, re]), d(() => {}, []), /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ t("div", {
3516
+ A
3517
+ ]), l(() => {}, [r, ne]), d(() => {}, []), /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ t("div", {
3521
3518
  ...T,
3522
- ref: ae,
3523
- className: Rn("game-ui-liquid-item", S),
3519
+ ref: ie,
3520
+ className: Ln("game-ui-liquid-item", S),
3524
3521
  style: C,
3525
3522
  children: w
3526
3523
  }), D ? h(/* @__PURE__ */ t("path", {
3527
- ref: j,
3524
+ ref: M,
3528
3525
  d: "",
3529
3526
  "data-liquid-gooey-blob": ""
3530
3527
  }), D) : null] });
3531
- }), Gn = a(function(e, n) {
3532
- let { imageMelt: r } = Nn();
3533
- if (e.effect !== "melt") return /* @__PURE__ */ t(Wn, {
3528
+ }), Wn = a(function(e, n) {
3529
+ let { imageMelt: r } = Mn();
3530
+ if (e.effect !== "melt") return /* @__PURE__ */ t(Un, {
3534
3531
  ...e,
3535
3532
  ref: n
3536
3533
  });
3537
- let i = zn(e), a = e.children, o = { ...e.melt ?? {} }, s = o.src;
3538
- return delete o.src, /* @__PURE__ */ t(fn, {
3534
+ let i = Rn(e), a = e.children, o = { ...e.melt ?? {} }, s = o.src;
3535
+ return delete o.src, /* @__PURE__ */ t(dn, {
3539
3536
  ...i,
3540
3537
  registry: r,
3541
3538
  children: a,
@@ -3543,10 +3540,10 @@ var Un = a(function({ blur: e = 6, contrast: r = 18, fill: i = "var(--game-ui-su
3543
3540
  ...s === void 0 ? {} : { src: s },
3544
3541
  ...n === void 0 ? {} : { forwardedRef: n }
3545
3542
  });
3546
- }), Kn = Object.assign(Un, { Item: Gn });
3543
+ }), Gn = Object.assign(Hn, { Item: Wn });
3547
3544
  //#endregion
3548
3545
  //#region src/GameCallout.tsx
3549
- function qn({ heading: e, children: r, tone: i = "info", className: a, ...o }) {
3546
+ function Kn({ heading: e, children: r, tone: i = "info", className: a, ...o }) {
3550
3547
  return /* @__PURE__ */ n("div", {
3551
3548
  className: [
3552
3549
  "game-ui-callout",
@@ -3567,7 +3564,7 @@ function qn({ heading: e, children: r, tone: i = "info", className: a, ...o }) {
3567
3564
  }
3568
3565
  //#endregion
3569
3566
  //#region src/GameDialog.tsx
3570
- function Jn({ children: e, className: r, title: i }) {
3567
+ function qn({ children: e, className: r, title: i }) {
3571
3568
  let a = u();
3572
3569
  return /* @__PURE__ */ n("section", {
3573
3570
  "aria-labelledby": a,
@@ -3585,7 +3582,7 @@ function Jn({ children: e, className: r, title: i }) {
3585
3582
  }
3586
3583
  //#endregion
3587
3584
  //#region src/GameHistoryPanel.tsx
3588
- function Yn({ entries: e, label: r }) {
3585
+ function Jn({ entries: e, label: r }) {
3589
3586
  return /* @__PURE__ */ t("section", {
3590
3587
  "aria-label": r,
3591
3588
  className: "game-ui-history",
@@ -3601,7 +3598,7 @@ function Yn({ entries: e, label: r }) {
3601
3598
  }
3602
3599
  //#endregion
3603
3600
  //#region src/GameHudActions.tsx
3604
- function Xn({ children: e, className: n, label: r, ...i }) {
3601
+ function Yn({ children: e, className: n, label: r, ...i }) {
3605
3602
  return /* @__PURE__ */ t("nav", {
3606
3603
  "aria-label": r,
3607
3604
  className: ["game-ui-hud-actions", n].filter(Boolean).join(" "),
@@ -3621,7 +3618,7 @@ function X({ children: e, className: r, title: i, tone: a = "default", ...o }) {
3621
3618
  children: [i ? /* @__PURE__ */ t("h3", { children: i }) : null, e]
3622
3619
  });
3623
3620
  }
3624
- function Zn({ children: e, className: n, label: r, type: i = "button", ...a }) {
3621
+ function Xn({ children: e, className: n, label: r, type: i = "button", ...a }) {
3625
3622
  return /* @__PURE__ */ t("button", {
3626
3623
  "aria-label": r,
3627
3624
  className: ["game-ui-icon-button", n].filter(Boolean).join(" "),
@@ -3630,7 +3627,7 @@ function Zn({ children: e, className: n, label: r, type: i = "button", ...a }) {
3630
3627
  children: e
3631
3628
  });
3632
3629
  }
3633
- function Qn({ children: e, label: i }) {
3630
+ function Zn({ children: e, label: i }) {
3634
3631
  let a = u();
3635
3632
  return /* @__PURE__ */ n("span", {
3636
3633
  className: "game-ui-tooltip",
@@ -3641,7 +3638,7 @@ function Qn({ children: e, label: i }) {
3641
3638
  })]
3642
3639
  });
3643
3640
  }
3644
- function $n({ activeId: e, id: n, onSelect: r, tabs: i }) {
3641
+ function Qn({ activeId: e, id: n, onSelect: r, tabs: i }) {
3645
3642
  let a = u(), o = n ?? a;
3646
3643
  return /* @__PURE__ */ t("div", {
3647
3644
  className: "game-ui-tabs",
@@ -3681,10 +3678,10 @@ function $n({ activeId: e, id: n, onSelect: r, tabs: i }) {
3681
3678
  }, n.id))
3682
3679
  });
3683
3680
  }
3684
- function er(e, t) {
3681
+ function $n(e, t) {
3685
3682
  return e.x === t.x && e.y === t.y && e.width === t.width && e.height === t.height;
3686
3683
  }
3687
- function tr({ activeId: e, label: r, onSelect: i, options: a }) {
3684
+ function er({ activeId: e, label: r, onSelect: i, options: a }) {
3688
3685
  let o = p(null), s = p([]), [c, l] = m({
3689
3686
  x: 0,
3690
3687
  y: 0,
@@ -3701,7 +3698,7 @@ function tr({ activeId: e, label: r, onSelect: i, options: a }) {
3701
3698
  width: r.width,
3702
3699
  height: r.height
3703
3700
  };
3704
- l((e) => er(e, i) ? e : i);
3701
+ l((e) => $n(e, i) ? e : i);
3705
3702
  };
3706
3703
  if (n(), typeof ResizeObserver > "u") return;
3707
3704
  let r = new ResizeObserver(n);
@@ -3716,7 +3713,7 @@ function tr({ activeId: e, label: r, onSelect: i, options: a }) {
3716
3713
  className: "game-ui-segmented",
3717
3714
  role: "group",
3718
3715
  children: [
3719
- /* @__PURE__ */ t(Kn, {
3716
+ /* @__PURE__ */ t(Gn, {
3720
3717
  "aria-hidden": "true",
3721
3718
  className: "game-ui-segmented-surface",
3722
3719
  fill: "var(--game-ui-surface-raised)",
@@ -3727,7 +3724,7 @@ function tr({ activeId: e, label: r, onSelect: i, options: a }) {
3727
3724
  pointerEvents: "none",
3728
3725
  position: "absolute"
3729
3726
  },
3730
- children: /* @__PURE__ */ t(Kn.Item, {
3727
+ children: /* @__PURE__ */ t(Gn.Item, {
3731
3728
  style: {
3732
3729
  borderRadius: "var(--game-ui-radius-control)",
3733
3730
  inset: 0,
@@ -3736,7 +3733,7 @@ function tr({ activeId: e, label: r, onSelect: i, options: a }) {
3736
3733
  children: null
3737
3734
  })
3738
3735
  }),
3739
- c.width > 0 && c.height > 0 ? /* @__PURE__ */ t(Kn, {
3736
+ c.width > 0 && c.height > 0 ? /* @__PURE__ */ t(Gn, {
3740
3737
  "aria-hidden": "true",
3741
3738
  className: "game-ui-segmented-follow",
3742
3739
  fill: "var(--game-ui-secondary)",
@@ -3747,7 +3744,7 @@ function tr({ activeId: e, label: r, onSelect: i, options: a }) {
3747
3744
  pointerEvents: "none",
3748
3745
  position: "absolute"
3749
3746
  },
3750
- children: /* @__PURE__ */ t(Kn.Item, {
3747
+ children: /* @__PURE__ */ t(Gn.Item, {
3751
3748
  "aria-hidden": "true",
3752
3749
  style: {
3753
3750
  borderRadius: "var(--game-ui-radius-control)",
@@ -3776,7 +3773,7 @@ function tr({ activeId: e, label: r, onSelect: i, options: a }) {
3776
3773
  ]
3777
3774
  });
3778
3775
  }
3779
- function nr({ label: e, max: r, min: i, onChange: a, value: o }) {
3776
+ function tr({ label: e, max: r, min: i, onChange: a, value: o }) {
3780
3777
  return /* @__PURE__ */ n("label", {
3781
3778
  className: "game-ui-slider",
3782
3779
  children: [/* @__PURE__ */ t("span", { children: e }), /* @__PURE__ */ t("input", {
@@ -3790,7 +3787,7 @@ function nr({ label: e, max: r, min: i, onChange: a, value: o }) {
3790
3787
  })]
3791
3788
  });
3792
3789
  }
3793
- function rr({ checked: e, disabled: r, label: i, onClick: a }) {
3790
+ function nr({ checked: e, disabled: r, label: i, onClick: a }) {
3794
3791
  return /* @__PURE__ */ n("button", {
3795
3792
  "aria-checked": e,
3796
3793
  className: "game-ui-toggle",
@@ -3804,7 +3801,7 @@ function rr({ checked: e, disabled: r, label: i, onClick: a }) {
3804
3801
  })]
3805
3802
  });
3806
3803
  }
3807
- function ir({ items: e, label: n, onSelect: r }) {
3804
+ function rr({ items: e, label: n, onSelect: r }) {
3808
3805
  return /* @__PURE__ */ t("div", {
3809
3806
  "aria-label": n,
3810
3807
  className: "game-ui-radial-menu",
@@ -3819,7 +3816,7 @@ function ir({ items: e, label: n, onSelect: r }) {
3819
3816
  }, e.id))
3820
3817
  });
3821
3818
  }
3822
- function ar({ children: e, tone: n = "info" }) {
3819
+ function ir({ children: e, tone: n = "info" }) {
3823
3820
  return /* @__PURE__ */ t("div", {
3824
3821
  className: "game-ui-toast",
3825
3822
  "data-toast-tone": n,
@@ -3827,7 +3824,7 @@ function ar({ children: e, tone: n = "info" }) {
3827
3824
  children: e
3828
3825
  });
3829
3826
  }
3830
- function or({ actionLabel: e, children: r, title: i }) {
3827
+ function ar({ actionLabel: e, children: r, title: i }) {
3831
3828
  return /* @__PURE__ */ n("section", {
3832
3829
  "aria-label": i,
3833
3830
  className: "game-ui-prompt",
@@ -3839,7 +3836,7 @@ function or({ actionLabel: e, children: r, title: i }) {
3839
3836
  }
3840
3837
  //#endregion
3841
3838
  //#region src/clay/assets.ts
3842
- var sr = "/assets/game/ui/clay/phase03-clay-kit", Z = (e) => `${sr}/${e}`, cr = {
3839
+ var or = "/assets/game/ui/clay/phase03-clay-kit", Z = (e) => `${or}/${e}`, sr = {
3843
3840
  ai: { line: Z("icons/function/brain-v1.png") },
3844
3841
  alert: {
3845
3842
  game: Z("components/common/alert-v1.png"),
@@ -3929,20 +3926,20 @@ var sr = "/assets/game/ui/clay/phase03-clay-kit", Z = (e) => `${sr}/${e}`, cr =
3929
3926
  game: Z("icons/common/target-v1.png"),
3930
3927
  line: Z("icons/function/target-v1.png")
3931
3928
  }
3932
- }, lr = Object.keys(cr), ur = sr;
3933
- function dr(e) {
3934
- let t = ur;
3929
+ }, cr = Object.keys(sr), lr = or;
3930
+ function ur(e) {
3931
+ let t = lr;
3935
3932
  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;
3936
3933
  }
3937
- function fr(e, t) {
3938
- let n = cr[e];
3939
- return dr(t === "line" ? n.line ?? n.game ?? "" : n.game ?? n.line ?? "");
3934
+ function dr(e, t) {
3935
+ let n = sr[e];
3936
+ return ur(t === "line" ? n.line ?? n.game ?? "" : n.game ?? n.line ?? "");
3940
3937
  }
3941
- function pr(e) {
3942
- let t = cr[e], n = [];
3938
+ function fr(e) {
3939
+ let t = sr[e], n = [];
3943
3940
  return t.game && n.push("game"), t.line && n.push("line"), n;
3944
3941
  }
3945
- var mr = {
3942
+ var pr = {
3946
3943
  anvil: Z("icons/common/anvil-v1.png"),
3947
3944
  arrow: Z("icons/common/arrow-v1.png"),
3948
3945
  bomb: Z("icons/common/bomb-v1.png"),
@@ -3969,7 +3966,7 @@ var mr = {
3969
3966
  swordB: Z("icons/common/sword-b-v1.png"),
3970
3967
  talaria: Z("icons/common/talaria-v1.png"),
3971
3968
  treasure: Z("icons/common/treasure-v1.png")
3972
- }, hr = Object.keys(mr), gr = {
3969
+ }, mr = Object.keys(pr), hr = {
3973
3970
  buttons: {
3974
3971
  primary: Z("buttons/button-brown-large-v2.png"),
3975
3972
  blue: Z("buttons/button-blue-large-v2.png"),
@@ -3990,7 +3987,7 @@ var mr = {
3990
3987
  tabSelected: Z("components/common/tab-s-v1.png"),
3991
3988
  tabNormal: Z("components/common/tab-n-v1.png")
3992
3989
  },
3993
- icons: Object.fromEntries(lr.map((e) => [e, fr(e)])),
3990
+ icons: Object.fromEntries(cr.map((e) => [e, dr(e)])),
3994
3991
  catalog: {
3995
3992
  manifest: "/assets/game/ui/clay/asset-manifest.json",
3996
3993
  sourceCatalog: Z("catalog/phase03-clay-ui-catalog.json"),
@@ -3998,7 +3995,7 @@ var mr = {
3998
3995
  contactSheetComponents: Z("catalog/component-candidates-contact-sheet-v1.png"),
3999
3996
  contactSheetFunction: Z("catalog/function-icons-contact-sheet-v1.png")
4000
3997
  }
4001
- }, _r = {
3998
+ }, gr = {
4002
3999
  ai: "AI",
4003
4000
  alert: "!",
4004
4001
  card: "▣",
@@ -4034,72 +4031,72 @@ var mr = {
4034
4031
  timer: "◷",
4035
4032
  trophy: "★",
4036
4033
  vote: "⌾"
4037
- }, vr = {
4038
- ai: I.berry,
4039
- alert: I.red,
4040
- card: I.honey,
4041
- chat: I.sky,
4042
- check: I.green,
4043
- close: I.red,
4044
- coin: I.honey,
4045
- compass: I.teal,
4046
- copy: I.wood,
4047
- crown: I.honey,
4048
- energy: I.orange,
4049
- gem: I.sky,
4050
- gift: I.red,
4051
- globe: I.teal,
4052
- history: I.inkMuted,
4053
- redo: I.wood,
4054
- undo: I.wood,
4055
- home: I.wood,
4056
- hourglass: I.orange,
4057
- laurel: I.green,
4058
- lock: I.ink,
4059
- lucky: I.green,
4060
- mail: I.sky,
4061
- medal: I.honey,
4062
- mission: I.berry,
4063
- mobile: I.sky,
4064
- portal: I.teal,
4065
- scroll: I.berry,
4066
- settings: I.inkMuted,
4067
- shirt: I.sky,
4068
- shop: I.inkMuted,
4069
- smile: I.honey,
4070
- timer: I.orange,
4071
- trophy: I.honey,
4072
- vote: I.red
4034
+ }, _r = {
4035
+ ai: L.berry,
4036
+ alert: L.red,
4037
+ card: L.honey,
4038
+ chat: L.sky,
4039
+ check: L.green,
4040
+ close: L.red,
4041
+ coin: L.honey,
4042
+ compass: L.teal,
4043
+ copy: L.wood,
4044
+ crown: L.honey,
4045
+ energy: L.orange,
4046
+ gem: L.sky,
4047
+ gift: L.red,
4048
+ globe: L.teal,
4049
+ history: L.inkMuted,
4050
+ redo: L.wood,
4051
+ undo: L.wood,
4052
+ home: L.wood,
4053
+ hourglass: L.orange,
4054
+ laurel: L.green,
4055
+ lock: L.ink,
4056
+ lucky: L.green,
4057
+ mail: L.sky,
4058
+ medal: L.honey,
4059
+ mission: L.berry,
4060
+ mobile: L.sky,
4061
+ portal: L.teal,
4062
+ scroll: L.berry,
4063
+ settings: L.inkMuted,
4064
+ shirt: L.sky,
4065
+ shop: L.inkMuted,
4066
+ smile: L.honey,
4067
+ timer: L.orange,
4068
+ trophy: L.honey,
4069
+ vote: L.red
4073
4070
  };
4074
- function yr(e) {
4075
- let t = _r[e], n = vr[e], r = I.parchment, i = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 96 96"><defs><filter id="s" x="-20%" y="-20%" width="140%" height="140%"><feDropShadow dx="0" dy="5" stdDeviation="4" flood-color="#4c341c" flood-opacity=".22"/></filter></defs><rect x="10" y="8" width="76" height="76" rx="25" fill="${r}" filter="url(#s)"/><circle cx="48" cy="46" r="28" fill="${n}" opacity=".88"/><path d="M23 28c10-12 36-16 52 0" stroke="#fff" stroke-width="6" stroke-linecap="round" opacity=".38"/><text x="48" y="58" text-anchor="middle" font-family="system-ui,sans-serif" font-size="28" font-weight="900" fill="${r}">${t}</text></svg>`;
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>`;
4076
4073
  return `data:image/svg+xml,${encodeURIComponent(i)}`;
4077
4074
  }
4078
- var br = "inline";
4079
- function xr(e) {
4080
- br = e;
4075
+ var yr = "inline";
4076
+ function br(e) {
4077
+ yr = e;
4081
4078
  }
4082
- function Sr() {
4083
- return br;
4079
+ function xr() {
4080
+ return yr;
4084
4081
  }
4085
- function Cr(e) {
4086
- ur = e.replace(/\/+$/, "");
4082
+ function Sr(e) {
4083
+ lr = e.replace(/\/+$/, "");
4087
4084
  }
4088
- function wr() {
4089
- return ur;
4085
+ function Cr() {
4086
+ return lr;
4090
4087
  }
4091
- var Tr = !1;
4092
- function Er() {
4093
- Tr || (Tr = !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."));
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."));
4094
4091
  }
4095
- function Dr() {
4096
- Tr = !0;
4092
+ function Er() {
4093
+ wr = !0;
4097
4094
  }
4098
- function Or(e, t = {}) {
4099
- return t.inline ?? br === "inline" ? (Er(), yr(e)) : fr(e, t.style);
4095
+ function Dr(e, t = {}) {
4096
+ return t.inline ?? yr === "inline" ? (Tr(), vr(e)) : dr(e, t.style);
4100
4097
  }
4101
- function kr(e, t) {
4102
- return fr(e, t);
4098
+ function Or(e, t) {
4099
+ return dr(e, t);
4103
4100
  }
4104
4101
  //#endregion
4105
4102
  //#region src/ClayComponents.tsx
@@ -4111,7 +4108,7 @@ function Q({ children: e, className: n, tone: r = "neutral" }) {
4111
4108
  });
4112
4109
  }
4113
4110
  function $({ className: e, icon: n, label: r, size: i = "md", style: a, useSourceAsset: o = !1 }) {
4114
- let s = ["game-ui-asset-icon", e].filter(Boolean).join(" "), c = r ? { "aria-label": r } : { "aria-hidden": !0 }, l = Or(n, {
4111
+ let s = ["game-ui-asset-icon", e].filter(Boolean).join(" "), c = r ? { "aria-label": r } : { "aria-hidden": !0 }, l = Dr(n, {
4115
4112
  ...a ? { style: a } : {},
4116
4113
  ...o ? { inline: !1 } : {}
4117
4114
  });
@@ -4126,7 +4123,7 @@ function $({ className: e, icon: n, label: r, size: i = "md", style: a, useSourc
4126
4123
  })
4127
4124
  });
4128
4125
  }
4129
- function Ar({ actions: e, className: r, items: i, label: a }) {
4126
+ function kr({ actions: e, className: r, items: i, label: a }) {
4130
4127
  return /* @__PURE__ */ n("section", {
4131
4128
  "aria-label": a,
4132
4129
  className: ["game-ui-hud", r].filter(Boolean).join(" "),
@@ -4149,7 +4146,7 @@ function Ar({ actions: e, className: r, items: i, label: a }) {
4149
4146
  }) : null]
4150
4147
  });
4151
4148
  }
4152
- function jr({ cards: e, className: r, label: i }) {
4149
+ function Ar({ cards: e, className: r, label: i }) {
4153
4150
  let a = ["game-ui-card-fan", r].filter(Boolean).join(" "), o = (e.length - 1) / 2;
4154
4151
  return /* @__PURE__ */ t("div", {
4155
4152
  "aria-label": i,
@@ -4172,7 +4169,7 @@ function jr({ cards: e, className: r, label: i }) {
4172
4169
  }, e.id))
4173
4170
  });
4174
4171
  }
4175
- function Mr({ badge: e, className: r, icon: i, kicker: a, selected: o = !1, summary: s, title: c, tone: l = "daily", type: u = "button", ...d }) {
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 }) {
4176
4173
  return /* @__PURE__ */ n("button", {
4177
4174
  "aria-pressed": o,
4178
4175
  className: ["game-ui-stage-tile", r].filter(Boolean).join(" "),
@@ -4199,15 +4196,15 @@ function Mr({ badge: e, className: r, icon: i, kicker: a, selected: o = !1, summ
4199
4196
  ]
4200
4197
  });
4201
4198
  }
4202
- function Nr() {
4199
+ function Mr() {
4203
4200
  return typeof window > "u" ? !1 : (window.matchMedia?.("(pointer: coarse), (max-width: 899px)").matches ?? window.innerWidth < 900) && window.innerHeight > window.innerWidth;
4204
4201
  }
4205
- function Pr({ body: e, cta: r, badgeLabel: i = "Landscape only", manualHint: a = "Rotate manually if this browser blocks automatic landscape lock.", preview: o = !1, title: s }) {
4206
- let [c, u] = m(o || Nr), [d, f] = m("");
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("");
4207
4204
  if (l(() => {
4208
4205
  if (o) return;
4209
4206
  let e = () => {
4210
- let e = Nr();
4207
+ let e = Mr();
4211
4208
  u(e), e || f("");
4212
4209
  };
4213
4210
  return e(), window.addEventListener("resize", e), window.addEventListener("orientationchange", e), () => {
@@ -4217,7 +4214,7 @@ function Pr({ body: e, cta: r, badgeLabel: i = "Landscape only", manualHint: a =
4217
4214
  let p = async () => {
4218
4215
  if (f(""), !o) try {
4219
4216
  let e = document.documentElement;
4220
- !document.fullscreenElement && e.requestFullscreen && await e.requestFullscreen(), await screen.orientation.lock?.("landscape-primary"), u(Nr());
4217
+ !document.fullscreenElement && e.requestFullscreen && await e.requestFullscreen(), await screen.orientation.lock?.("landscape-primary"), u(Mr());
4221
4218
  } catch {
4222
4219
  f(a);
4223
4220
  }
@@ -4248,7 +4245,7 @@ function Pr({ body: e, cta: r, badgeLabel: i = "Landscape only", manualHint: a =
4248
4245
  })
4249
4246
  });
4250
4247
  }
4251
- function Fr({ className: e, currentLabel: r, label: i, options: a, value: o, defaultValue: s, onSelect: c }) {
4248
+ function Pr({ className: e, currentLabel: r, label: i, options: a, value: o, defaultValue: s, onSelect: c }) {
4252
4249
  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) => {
4253
4250
  o === void 0 && p(e), c?.(e), d(!1);
4254
4251
  };
@@ -4280,34 +4277,34 @@ function Fr({ className: e, currentLabel: r, label: i, options: a, value: o, def
4280
4277
  }) : null]
4281
4278
  });
4282
4279
  }
4283
- function Ir({ label: e, tone: r = "loading" }) {
4280
+ function Fr({ label: e, tone: r = "loading" }) {
4284
4281
  return /* @__PURE__ */ n("div", {
4285
4282
  className: "game-ui-loading-state",
4286
4283
  "data-loading-tone": r,
4287
4284
  role: r === "error" ? "alert" : "status",
4288
4285
  children: [/* @__PURE__ */ t("img", {
4289
4286
  alt: "",
4290
- src: Or(r === "error" ? "alert" : "timer")
4287
+ src: Dr(r === "error" ? "alert" : "timer")
4291
4288
  }), /* @__PURE__ */ t("span", { children: e })]
4292
4289
  });
4293
4290
  }
4294
- function Lr() {
4295
- return gr.catalog;
4291
+ function Ir() {
4292
+ return hr.catalog;
4296
4293
  }
4297
4294
  //#endregion
4298
4295
  //#region src/FirstSessionGameShell.tsx
4299
- function Rr({ fallback: e, slot: n }) {
4296
+ function Lr({ fallback: e, slot: n }) {
4300
4297
  return n ?? /* @__PURE__ */ t($, {
4301
4298
  icon: e,
4302
4299
  size: "sm"
4303
4300
  });
4304
4301
  }
4305
- function zr({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, iconSlots: o, labels: s, onHistory: c, onSettings: l, onWardrobe: u, playerName: d }) {
4302
+ function Rr({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, iconSlots: o, labels: s, onHistory: c, onSettings: l, onWardrobe: u, playerName: d }) {
4306
4303
  let f = ["swimmer-first-session-shell", i].filter(Boolean).join(" "), p = e ? `${r} 🔋` : s.guest ?? "guest";
4307
4304
  return /* @__PURE__ */ n("section", {
4308
4305
  "aria-label": s.shell,
4309
4306
  className: f,
4310
- children: [/* @__PURE__ */ t(Ar, {
4307
+ children: [/* @__PURE__ */ t(kr, {
4311
4308
  className: "swimmer-first-session-hud",
4312
4309
  items: [
4313
4310
  {
@@ -4339,7 +4336,7 @@ function zr({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4339
4336
  }
4340
4337
  ],
4341
4338
  label: s.hud,
4342
- actions: /* @__PURE__ */ n(Xn, {
4339
+ actions: /* @__PURE__ */ n(Yn, {
4343
4340
  className: "swimmer-first-session-hud-actions",
4344
4341
  label: s.tools,
4345
4342
  children: [
@@ -4347,7 +4344,7 @@ function zr({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4347
4344
  "aria-label": s.wardrobe,
4348
4345
  onClick: u,
4349
4346
  variant: "secondary",
4350
- children: [/* @__PURE__ */ t(Rr, {
4347
+ children: [/* @__PURE__ */ t(Lr, {
4351
4348
  fallback: "shirt",
4352
4349
  slot: o?.wardrobe
4353
4350
  }), s.wardrobe]
@@ -4356,7 +4353,7 @@ function zr({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4356
4353
  "aria-label": s.settings,
4357
4354
  onClick: l,
4358
4355
  variant: "secondary",
4359
- children: [/* @__PURE__ */ t(Rr, {
4356
+ children: [/* @__PURE__ */ t(Lr, {
4360
4357
  fallback: "settings",
4361
4358
  slot: o?.settings
4362
4359
  }), s.settings]
@@ -4365,7 +4362,7 @@ function zr({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4365
4362
  "aria-label": s.history,
4366
4363
  onClick: c,
4367
4364
  variant: "secondary",
4368
- children: [/* @__PURE__ */ t(Rr, {
4365
+ children: [/* @__PURE__ */ t(Lr, {
4369
4366
  fallback: "history",
4370
4367
  slot: o?.history
4371
4368
  }), s.history]
@@ -4390,7 +4387,7 @@ function zr({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4390
4387
  }),
4391
4388
  /* @__PURE__ */ n("label", {
4392
4389
  className: "swimmer-first-session-input",
4393
- children: [/* @__PURE__ */ t(Rr, {
4390
+ children: [/* @__PURE__ */ t(Lr, {
4394
4391
  fallback: "chat",
4395
4392
  slot: o?.input
4396
4393
  }), /* @__PURE__ */ t("span", { children: s.input })]
@@ -4398,7 +4395,7 @@ function zr({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4398
4395
  /* @__PURE__ */ n("button", {
4399
4396
  className: "swimmer-first-session-emote",
4400
4397
  type: "button",
4401
- children: [/* @__PURE__ */ t(Rr, {
4398
+ children: [/* @__PURE__ */ t(Lr, {
4402
4399
  fallback: "smile",
4403
4400
  slot: o?.emote
4404
4401
  }), s.emote]
@@ -4407,7 +4404,7 @@ function zr({ authenticated: e, batteryCount: r, className: i, dailyStreak: a, i
4407
4404
  })]
4408
4405
  });
4409
4406
  }
4410
- function Br({ labels: e, onDismiss: r, open: i }) {
4407
+ function zr({ labels: e, onDismiss: r, open: i }) {
4411
4408
  return i ? /* @__PURE__ */ n("aside", {
4412
4409
  "aria-labelledby": "swimmer-first-session-onboarding-title",
4413
4410
  "aria-modal": "true",
@@ -4455,7 +4452,7 @@ function Br({ labels: e, onDismiss: r, open: i }) {
4455
4452
  }
4456
4453
  //#endregion
4457
4454
  //#region src/GameForms.tsx
4458
- var Vr = a(function({ className: e, invalid: n, type: r = "text", ...i }, a) {
4455
+ var Br = a(function({ className: e, invalid: n, type: r = "text", ...i }, a) {
4459
4456
  return /* @__PURE__ */ t("input", {
4460
4457
  className: ["game-ui-input", e].filter(Boolean).join(" "),
4461
4458
  "data-invalid": n ? "true" : void 0,
@@ -4463,7 +4460,7 @@ var Vr = a(function({ className: e, invalid: n, type: r = "text", ...i }, a) {
4463
4460
  type: r,
4464
4461
  ...i
4465
4462
  });
4466
- }), Hr = a(function({ className: e, invalid: n, rows: r = 3, ...i }, a) {
4463
+ }), Vr = a(function({ className: e, invalid: n, rows: r = 3, ...i }, a) {
4467
4464
  return /* @__PURE__ */ t("textarea", {
4468
4465
  className: [
4469
4466
  "game-ui-input",
@@ -4476,7 +4473,7 @@ var Vr = a(function({ className: e, invalid: n, type: r = "text", ...i }, a) {
4476
4473
  ...i
4477
4474
  });
4478
4475
  });
4479
- function Ur({ children: e, className: r, error: i, hint: a, label: o, required: s }) {
4476
+ function Hr({ children: e, className: r, error: i, hint: a, label: o, required: s }) {
4480
4477
  return /* @__PURE__ */ n("label", {
4481
4478
  className: ["game-ui-field", r].filter(Boolean).join(" "),
4482
4479
  "data-invalid": i ? "true" : void 0,
@@ -4502,7 +4499,7 @@ function Ur({ children: e, className: r, error: i, hint: a, label: o, required:
4502
4499
  ]
4503
4500
  });
4504
4501
  }
4505
- function Wr({ className: e, label: r, ...i }) {
4502
+ function Ur({ className: e, label: r, ...i }) {
4506
4503
  return /* @__PURE__ */ n("label", {
4507
4504
  className: ["game-ui-checkbox", e].filter(Boolean).join(" "),
4508
4505
  children: [
@@ -4524,11 +4521,11 @@ function Wr({ className: e, label: r, ...i }) {
4524
4521
  }
4525
4522
  //#endregion
4526
4523
  //#region src/GameDisplay.tsx
4527
- function Gr(e) {
4524
+ function Wr(e) {
4528
4525
  let t = e.trim().split(/\s+/).filter(Boolean);
4529
4526
  return t.length === 0 ? "?" : t.slice(0, 2).map((e) => e[0] ?? "").join("").toUpperCase();
4530
4527
  }
4531
- function Kr({ className: r, name: i, size: a = "md", src: o, status: s = "none" }) {
4528
+ function Gr({ className: r, name: i, size: a = "md", src: o, status: s = "none" }) {
4532
4529
  return /* @__PURE__ */ n("span", {
4533
4530
  className: ["game-ui-avatar", r].filter(Boolean).join(" "),
4534
4531
  "data-avatar-size": a,
@@ -4539,7 +4536,7 @@ function Kr({ className: r, name: i, size: a = "md", src: o, status: s = "none"
4539
4536
  }) : /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ t("span", {
4540
4537
  "aria-hidden": "true",
4541
4538
  className: "game-ui-avatar-initials",
4542
- children: Gr(i)
4539
+ children: Wr(i)
4543
4540
  }), /* @__PURE__ */ t("span", {
4544
4541
  className: "game-ui-sr-only",
4545
4542
  children: i
@@ -4549,7 +4546,7 @@ function Kr({ className: r, name: i, size: a = "md", src: o, status: s = "none"
4549
4546
  })]
4550
4547
  });
4551
4548
  }
4552
- function qr({ className: e, label: r, max: i = 100, showValue: a = !1, tone: o = "accent", value: s, valueLabel: c }) {
4549
+ function Kr({ className: e, label: r, max: i = 100, showValue: a = !1, tone: o = "accent", value: s, valueLabel: c }) {
4553
4550
  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 = {
4554
4551
  accent: "var(--game-ui-accent)",
4555
4552
  danger: "var(--game-ui-danger)",
@@ -4567,7 +4564,7 @@ function qr({ className: e, label: r, max: i = 100, showValue: a = !1, tone: o =
4567
4564
  "aria-valuetext": f ? c : void 0,
4568
4565
  className: "game-ui-progress-track",
4569
4566
  role: "progressbar",
4570
- children: /* @__PURE__ */ t(Kn, {
4567
+ children: /* @__PURE__ */ t(Gn, {
4571
4568
  "aria-hidden": "true",
4572
4569
  className: "game-ui-progress-liquid",
4573
4570
  fill: p,
@@ -4578,7 +4575,7 @@ function qr({ className: e, label: r, max: i = 100, showValue: a = !1, tone: o =
4578
4575
  pointerEvents: "none",
4579
4576
  position: "absolute"
4580
4577
  },
4581
- children: /* @__PURE__ */ t(Kn.Item, {
4578
+ children: /* @__PURE__ */ t(Gn.Item, {
4582
4579
  "aria-hidden": "true",
4583
4580
  className: "game-ui-progress-fill",
4584
4581
  style: {
@@ -4601,7 +4598,7 @@ function qr({ className: e, label: r, max: i = 100, showValue: a = !1, tone: o =
4601
4598
  }) : null]
4602
4599
  });
4603
4600
  }
4604
- function Jr({ action: e, className: r, description: i, icon: a, title: o }) {
4601
+ function qr({ action: e, className: r, description: i, icon: a, title: o }) {
4605
4602
  return /* @__PURE__ */ n("div", {
4606
4603
  className: ["game-ui-empty-state", r].filter(Boolean).join(" "),
4607
4604
  children: [
@@ -4626,7 +4623,7 @@ function Jr({ action: e, className: r, description: i, icon: a, title: o }) {
4626
4623
  }
4627
4624
  //#endregion
4628
4625
  //#region src/GameSurfacePack.tsx
4629
- function Yr({ assetLibrary: e, bottomBar: r, children: i, className: a, density: o = "comfortable", hud: s, layout: c = "auto", movementPad: l, overlay: u, sidePanel: d, title: f }) {
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 }) {
4630
4627
  return /* @__PURE__ */ n("section", {
4631
4628
  "aria-label": f,
4632
4629
  className: ["game-ui-shell", a].filter(Boolean).join(" "),
@@ -4664,8 +4661,8 @@ function Yr({ assetLibrary: e, bottomBar: r, children: i, className: a, density:
4664
4661
  ]
4665
4662
  });
4666
4663
  }
4667
- var Xr = Yr;
4668
- function Zr({ className: e, density: r = "comfortable", facts: i, label: a, variant: o = "facts" }) {
4664
+ var Yr = Jr;
4665
+ function Xr({ className: e, density: r = "comfortable", facts: i, label: a, variant: o = "facts" }) {
4669
4666
  return /* @__PURE__ */ t("section", {
4670
4667
  "aria-label": a,
4671
4668
  className: ["game-ui-fact-list", e].filter(Boolean).join(" "),
@@ -4694,9 +4691,9 @@ function Zr({ className: e, density: r = "comfortable", facts: i, label: a, vari
4694
4691
  }, e.id))
4695
4692
  });
4696
4693
  }
4697
- var Qr = Zr;
4698
- function $r({ actions: r, className: i, density: a = "comfortable", iconLabelMode: o = "hidden", label: s, style: c = "button" }) {
4699
- return /* @__PURE__ */ n(Xn, {
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, {
4700
4697
  className: ["game-ui-action-grid", i].filter(Boolean).join(" "),
4701
4698
  "data-icon-label-mode": c === "icon" ? o : void 0,
4702
4699
  label: s,
@@ -4721,7 +4718,7 @@ function $r({ actions: r, className: i, density: a = "comfortable", iconLabelMod
4721
4718
  }) : null,
4722
4719
  r.shortcut ? /* @__PURE__ */ t("kbd", { children: r.shortcut }) : null
4723
4720
  ] }), l = () => r.onAction?.(r.id);
4724
- return c === "icon" ? /* @__PURE__ */ t(Zn, {
4721
+ return c === "icon" ? /* @__PURE__ */ t(Xn, {
4725
4722
  "aria-pressed": r.selected,
4726
4723
  className: "game-ui-action-grid-button",
4727
4724
  disabled: r.disabled,
@@ -4739,7 +4736,7 @@ function $r({ actions: r, className: i, density: a = "comfortable", iconLabelMod
4739
4736
  })]
4740
4737
  });
4741
4738
  }
4742
- var ei = [
4739
+ var $r = [
4743
4740
  {
4744
4741
  direction: "forward",
4745
4742
  label: "Move forward",
@@ -4764,7 +4761,7 @@ var ei = [
4764
4761
  shortcut: "S / ↓",
4765
4762
  symbol: "↓"
4766
4763
  }
4767
- ], ti = {
4764
+ ], ei = {
4768
4765
  ArrowUp: "forward",
4769
4766
  w: "forward",
4770
4767
  W: "forward",
@@ -4779,7 +4776,7 @@ var ei = [
4779
4776
  S: "backward",
4780
4777
  " ": "reset"
4781
4778
  };
4782
- function ni({ actions: e = ei, className: r, density: i = "comfortable", disabled: a = !1, helpText: o, label: s, layout: c = "dpad", onMove: l }) {
4779
+ function ti({ actions: e = $r, className: r, density: i = "comfortable", disabled: a = !1, helpText: o, label: s, layout: c = "dpad", onMove: l }) {
4783
4780
  let u = ["game-ui-movement-pad", r].filter(Boolean).join(" "), d = (e) => {
4784
4781
  a || l?.(e);
4785
4782
  };
@@ -4789,7 +4786,7 @@ function ni({ actions: e = ei, className: r, density: i = "comfortable", disable
4789
4786
  "data-density": i,
4790
4787
  "data-layout": c,
4791
4788
  onKeyDown: (t) => {
4792
- let n = ti[t.key];
4789
+ let n = ei[t.key];
4793
4790
  if (!n) return;
4794
4791
  let r = e.find((e) => e.direction === n);
4795
4792
  !r || r.disabled || a || (t.preventDefault(), d(n));
@@ -4797,7 +4794,7 @@ function ni({ actions: e = ei, className: r, density: i = "comfortable", disable
4797
4794
  tabIndex: 0,
4798
4795
  children: [/* @__PURE__ */ t("div", {
4799
4796
  className: "game-ui-movement-pad-grid",
4800
- children: e.map((e) => /* @__PURE__ */ n(Zn, {
4797
+ children: e.map((e) => /* @__PURE__ */ n(Xn, {
4801
4798
  className: "game-ui-movement-button",
4802
4799
  "data-direction": e.direction,
4803
4800
  disabled: a || e.disabled,
@@ -4815,15 +4812,15 @@ function ni({ actions: e = ei, className: r, density: i = "comfortable", disable
4815
4812
  }), o ? /* @__PURE__ */ t("p", { children: o }) : null]
4816
4813
  });
4817
4814
  }
4818
- var ri = {
4815
+ var ni = {
4819
4816
  generated: "Generated",
4820
4817
  imported: "Imported",
4821
4818
  starter: "Starter"
4822
- }, ii = {
4819
+ }, ri = {
4823
4820
  generated: "ai",
4824
4821
  imported: "warning",
4825
4822
  starter: "neutral"
4826
- }, ai = {
4823
+ }, ii = {
4827
4824
  error: "danger",
4828
4825
  generating: "ai",
4829
4826
  missing: "danger",
@@ -4831,8 +4828,8 @@ var ri = {
4831
4828
  ready: "neutral",
4832
4829
  selected: "success"
4833
4830
  };
4834
- function oi({ 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 }) {
4835
- let { "aria-label": S, ...C } = x, w = ["game-ui-asset-card", a].filter(Boolean).join(" "), T = m ?? ri[p], E = g ?? h;
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;
4836
4833
  return /* @__PURE__ */ n("button", {
4837
4834
  "aria-label": S ?? y,
4838
4835
  "aria-pressed": f,
@@ -4863,11 +4860,11 @@ function oi({ assetId: e, badges: r = [], cardLayout: i = "list", className: a,
4863
4860
  className: "game-ui-asset-card-badges",
4864
4861
  children: [
4865
4862
  /* @__PURE__ */ t(Q, {
4866
- tone: ii[p],
4863
+ tone: ri[p],
4867
4864
  children: T
4868
4865
  }),
4869
4866
  /* @__PURE__ */ t(Q, {
4870
- tone: ai[h],
4867
+ tone: ii[h],
4871
4868
  children: E
4872
4869
  }),
4873
4870
  r.map((e) => /* @__PURE__ */ t(Q, {
@@ -4886,7 +4883,7 @@ function oi({ assetId: e, badges: r = [], cardLayout: i = "list", className: a,
4886
4883
  })]
4887
4884
  });
4888
4885
  }
4889
- function si({ 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 }) {
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 }) {
4890
4887
  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) => {
4891
4888
  e[t.source] += 1;
4892
4889
  }), e), {
@@ -4911,15 +4908,15 @@ function si({ cardLayout: e = "auto", className: r, density: i = "comfortable",
4911
4908
  "aria-label": "Asset source counts",
4912
4909
  className: "game-ui-asset-library-counts",
4913
4910
  children: Object.entries(g).map(([e, t]) => /* @__PURE__ */ n(Q, {
4914
- tone: ii[e],
4911
+ tone: ri[e],
4915
4912
  children: [
4916
- ri[e],
4913
+ ni[e],
4917
4914
  " ",
4918
4915
  t
4919
4916
  ]
4920
4917
  }, e))
4921
4918
  }),
4922
- h === 0 ? /* @__PURE__ */ t(Jr, {
4919
+ h === 0 ? /* @__PURE__ */ t(qr, {
4923
4920
  action: a,
4924
4921
  description: o,
4925
4922
  icon: "gem",
@@ -4931,13 +4928,13 @@ function si({ cardLayout: e = "auto", className: r, density: i = "comfortable",
4931
4928
  className: "game-ui-asset-library-group",
4932
4929
  "data-asset-source": r.source,
4933
4930
  children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t("strong", { children: r.label }), r.source ? /* @__PURE__ */ t(Q, {
4934
- tone: ii[r.source],
4935
- children: ri[r.source]
4931
+ tone: ri[r.source],
4932
+ children: ni[r.source]
4936
4933
  }) : null] }), /* @__PURE__ */ t("div", {
4937
4934
  className: "game-ui-asset-library-grid",
4938
4935
  children: r.assets.map((n) => {
4939
4936
  let r = e === "auto" ? n.cardLayout : e;
4940
- return /* @__PURE__ */ t(oi, {
4937
+ return /* @__PURE__ */ t(ai, {
4941
4938
  ...n,
4942
4939
  ...r ? { cardLayout: r } : {},
4943
4940
  ...u ? { onSelect: u } : {},
@@ -4951,7 +4948,7 @@ function si({ cardLayout: e = "auto", className: r, density: i = "comfortable",
4951
4948
  })
4952
4949
  });
4953
4950
  }
4954
- function ci({ 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 }) {
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 }) {
4955
4952
  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;
4956
4953
  return /* @__PURE__ */ t(X, {
4957
4954
  className: h,
@@ -4960,7 +4957,7 @@ function ci({ actions: e = [], capacityLabel: r = "Objects", className: i, densi
4960
4957
  children: /* @__PURE__ */ n("div", {
4961
4958
  "data-density": a,
4962
4959
  children: [
4963
- /* @__PURE__ */ t(Zr, {
4960
+ /* @__PURE__ */ t(Xr, {
4964
4961
  density: a,
4965
4962
  facts: [{
4966
4963
  icon: "gem",
@@ -4976,19 +4973,19 @@ function ci({ actions: e = [], capacityLabel: r = "Objects", className: i, densi
4976
4973
  }],
4977
4974
  label: `${m} facts`
4978
4975
  }),
4979
- g ? /* @__PURE__ */ t(qr, {
4976
+ g ? /* @__PURE__ */ t(Kr, {
4980
4977
  label: r,
4981
4978
  max: o,
4982
4979
  showValue: !0,
4983
4980
  tone: _ >= o ? "warning" : "success",
4984
4981
  value: _
4985
4982
  }) : null,
4986
- e.length > 0 ? /* @__PURE__ */ t($r, {
4983
+ e.length > 0 ? /* @__PURE__ */ t(Qr, {
4987
4984
  actions: e,
4988
4985
  density: a,
4989
4986
  label: `${m} actions`
4990
4987
  }) : null,
4991
- s.length > 0 ? /* @__PURE__ */ t($r, {
4988
+ s.length > 0 ? /* @__PURE__ */ t(Qr, {
4992
4989
  actions: s,
4993
4990
  density: a,
4994
4991
  label: `${m} object actions`,
@@ -4998,7 +4995,7 @@ function ci({ actions: e = [], capacityLabel: r = "Objects", className: i, densi
4998
4995
  })
4999
4996
  });
5000
4997
  }
5001
- var li = ci, ui = {
4998
+ var ci = si, li = {
5002
4999
  build: "home",
5003
5000
  flatten: "card",
5004
5001
  inspect: "compass",
@@ -5008,7 +5005,7 @@ var li = ci, ui = {
5008
5005
  raise: "energy",
5009
5006
  smooth: "lucky",
5010
5007
  terrain: "portal"
5011
- }, di = {
5008
+ }, ui = {
5012
5009
  error: "danger",
5013
5010
  locked: "warning",
5014
5011
  missing: "danger",
@@ -5016,10 +5013,10 @@ var li = ci, ui = {
5016
5013
  ready: "neutral",
5017
5014
  selected: "success"
5018
5015
  };
5019
- function fi(e, t, n, r) {
5016
+ function di(e, t, n, r) {
5020
5017
  let i = {
5021
5018
  disabled: !!(r || e.disabled),
5022
- icon: e.icon ?? ui[e.id] ?? "gem",
5019
+ icon: e.icon ?? li[e.id] ?? "gem",
5023
5020
  id: e.id,
5024
5021
  label: e.label,
5025
5022
  selected: e.id === t,
@@ -5027,21 +5024,21 @@ function fi(e, t, n, r) {
5027
5024
  };
5028
5025
  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;
5029
5026
  }
5030
- function pi(e, t, n) {
5027
+ function fi(e, t, n) {
5031
5028
  return Number.isNaN(e) ? t : Math.min(n, Math.max(t, e));
5032
5029
  }
5033
- function mi(e) {
5030
+ function pi(e) {
5034
5031
  return e;
5035
5032
  }
5036
- function hi(e, t) {
5033
+ function mi(e, t) {
5037
5034
  return e === "auto" ? t === "mobile" || t === "small-mobile" ? "caption" : "hidden" : e;
5038
5035
  }
5039
- function gi({ activeModeId: e, className: r, disabled: i = !1, label: a, modes: o, onModeChange: s, variant: c = "desktop", "data-testid": l }) {
5036
+ function hi({ activeModeId: e, className: r, disabled: i = !1, label: a, modes: o, onModeChange: s, variant: c = "desktop", "data-testid": l }) {
5040
5037
  return /* @__PURE__ */ n("section", {
5041
5038
  "aria-label": a,
5042
5039
  className: ["game-ui-terrain-mode-control", r].filter(Boolean).join(" "),
5043
5040
  "data-ui-hook": "terrain-mode-control",
5044
- "data-variant": mi(c),
5041
+ "data-variant": pi(c),
5045
5042
  "data-testid": l,
5046
5043
  children: [/* @__PURE__ */ t("span", {
5047
5044
  className: "game-ui-sr-only",
@@ -5063,7 +5060,7 @@ function gi({ activeModeId: e, className: r, disabled: i = !1, label: a, modes:
5063
5060
  type: "button",
5064
5061
  children: [
5065
5062
  /* @__PURE__ */ t($, {
5066
- icon: r.icon ?? ui[r.id] ?? "portal",
5063
+ icon: r.icon ?? li[r.id] ?? "portal",
5067
5064
  size: c === "small-mobile" ? "sm" : "md",
5068
5065
  style: "line"
5069
5066
  }),
@@ -5078,8 +5075,8 @@ function gi({ activeModeId: e, className: r, disabled: i = !1, label: a, modes:
5078
5075
  })]
5079
5076
  });
5080
5077
  }
5081
- function _i({ 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 }) {
5082
- let d = ["game-ui-terrain-tool-strip", n].filter(Boolean).join(" "), f = hi(r, l);
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);
5083
5080
  return /* @__PURE__ */ t("section", {
5084
5081
  "aria-label": o,
5085
5082
  className: d,
@@ -5088,8 +5085,8 @@ function _i({ activeToolId: e, className: n, compactLabelMode: r = "auto", densi
5088
5085
  "data-ui-hook": "terrain-tool-strip",
5089
5086
  "data-variant": l,
5090
5087
  "data-testid": u,
5091
- children: /* @__PURE__ */ t($r, {
5092
- actions: c.map((t) => fi(t, e, s, a)),
5088
+ children: /* @__PURE__ */ t(Qr, {
5089
+ actions: c.map((t) => di(t, e, s, a)),
5093
5090
  density: i,
5094
5091
  iconLabelMode: f,
5095
5092
  label: o,
@@ -5097,18 +5094,18 @@ function _i({ activeToolId: e, className: n, compactLabelMode: r = "auto", densi
5097
5094
  })
5098
5095
  });
5099
5096
  }
5100
- function vi({ className: e, labels: r = {}, onRadiusChange: i, onStrengthChange: a, state: o, variant: s = "desktop", "data-testid": c }) {
5101
- 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 = pi(o.radius, u, d), _ = pi(o.strength, p, m), v = !!o.disabled, y = (e) => {
5102
- i?.(pi(Number(e.currentTarget.value), u, d));
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));
5103
5100
  }, b = (e) => {
5104
- a?.(pi(Number(e.currentTarget.value), p, m));
5101
+ a?.(fi(Number(e.currentTarget.value), p, m));
5105
5102
  };
5106
5103
  return /* @__PURE__ */ n("section", {
5107
5104
  className: l,
5108
5105
  "data-ui-hook": "brush-controls",
5109
5106
  "data-variant": s,
5110
5107
  "data-testid": c,
5111
- children: [/* @__PURE__ */ t(Ur, {
5108
+ children: [/* @__PURE__ */ t(Hr, {
5112
5109
  ...r.radiusHint ? { hint: r.radiusHint } : {},
5113
5110
  label: r.radius ?? "Brush radius",
5114
5111
  children: /* @__PURE__ */ n("div", {
@@ -5138,7 +5135,7 @@ function vi({ className: e, labels: r = {}, onRadiusChange: i, onStrengthChange:
5138
5135
  value: g
5139
5136
  })]
5140
5137
  })
5141
- }), /* @__PURE__ */ t(Ur, {
5138
+ }), /* @__PURE__ */ t(Hr, {
5142
5139
  ...r.strengthHint ? { hint: r.strengthHint } : {},
5143
5140
  label: r.strength ?? "Brush strength",
5144
5141
  children: /* @__PURE__ */ n("div", {
@@ -5171,7 +5168,7 @@ function vi({ className: e, labels: r = {}, onRadiusChange: i, onStrengthChange:
5171
5168
  })]
5172
5169
  });
5173
5170
  }
5174
- function yi({ activeMaterialId: e, className: r, disabled: i = !1, label: a, materials: o, onMaterialChange: s, variant: c = "desktop", "data-testid": l }) {
5171
+ function vi({ activeMaterialId: e, className: r, disabled: i = !1, label: a, materials: o, onMaterialChange: s, variant: c = "desktop", "data-testid": l }) {
5175
5172
  return /* @__PURE__ */ t("section", {
5176
5173
  "aria-label": a,
5177
5174
  className: ["game-ui-material-swatches", r].filter(Boolean).join(" "),
@@ -5214,14 +5211,14 @@ function yi({ activeMaterialId: e, className: r, disabled: i = !1, label: a, mat
5214
5211
  })
5215
5212
  });
5216
5213
  }
5217
- function bi({ 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 }) {
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 }) {
5218
5215
  return /* @__PURE__ */ t("section", {
5219
5216
  "aria-label": a,
5220
5217
  className: ["game-ui-undo-redo-actions", r].filter(Boolean).join(" "),
5221
5218
  "data-ui-hook": "undo-redo-actions",
5222
5219
  "data-variant": u,
5223
5220
  "data-testid": d,
5224
- children: /* @__PURE__ */ t($r, {
5221
+ children: /* @__PURE__ */ t(Qr, {
5225
5222
  actions: [{
5226
5223
  disabled: i || !n,
5227
5224
  icon: "undo",
@@ -5247,7 +5244,7 @@ function bi({ canRedo: e = !1, canUndo: n = !1, className: r, disabled: i = !1,
5247
5244
  })
5248
5245
  });
5249
5246
  }
5250
- function xi({ 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 }) {
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 }) {
5251
5248
  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";
5252
5249
  return /* @__PURE__ */ t(X, {
5253
5250
  className: h,
@@ -5277,7 +5274,7 @@ function xi({ activeCategoryId: e, categories: r, className: i, density: a = "co
5277
5274
  type: "button",
5278
5275
  children: [
5279
5276
  /* @__PURE__ */ t($, {
5280
- icon: e.icon ?? ui[e.id] ?? "home",
5277
+ icon: e.icon ?? li[e.id] ?? "home",
5281
5278
  size: "sm",
5282
5279
  style: "line"
5283
5280
  }),
@@ -5286,7 +5283,7 @@ function xi({ activeCategoryId: e, categories: r, className: i, density: a = "co
5286
5283
  ]
5287
5284
  }, e.id);
5288
5285
  })
5289
- }), v.length === 0 || !_ ? /* @__PURE__ */ t(Jr, {
5286
+ }), v.length === 0 || !_ ? /* @__PURE__ */ t(qr, {
5290
5287
  description: o,
5291
5288
  icon: "home",
5292
5289
  title: s
@@ -5324,7 +5321,7 @@ function xi({ activeCategoryId: e, categories: r, className: i, density: a = "co
5324
5321
  /* @__PURE__ */ n("span", {
5325
5322
  className: "game-ui-build-item-badges",
5326
5323
  children: [/* @__PURE__ */ t(Q, {
5327
- tone: di[i],
5324
+ tone: ui[i],
5328
5325
  children: i
5329
5326
  }), e.badges?.map((e) => /* @__PURE__ */ t(Q, {
5330
5327
  tone: e.tone ?? "neutral",
@@ -5342,7 +5339,7 @@ function xi({ activeCategoryId: e, categories: r, className: i, density: a = "co
5342
5339
  })
5343
5340
  });
5344
5341
  }
5345
- function Si({ 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 }) {
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 }) {
5346
5343
  let g = ["game-ui-compact-game-drawer", r].filter(Boolean).join(" "), _ = u ?? `${d.toLowerCase().replace(/[^a-z0-9]+/g, "-") || "tools"}-drawer-panel`;
5347
5344
  return /* @__PURE__ */ n("aside", {
5348
5345
  "aria-label": s,
@@ -5377,7 +5374,7 @@ function Si({ children: e, className: r, closeIcon: i = "close", closeLabel: a =
5377
5374
  })]
5378
5375
  });
5379
5376
  }
5380
- function Ci({ status: e }) {
5377
+ function Si({ status: e }) {
5381
5378
  if (!e) return null;
5382
5379
  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;
5383
5380
  return /* @__PURE__ */ n("div", {
@@ -5390,7 +5387,7 @@ function Ci({ status: e }) {
5390
5387
  children: e.label
5391
5388
  }),
5392
5389
  e.description ? /* @__PURE__ */ t("p", { children: e.description }) : null,
5393
- r ? /* @__PURE__ */ t(qr, {
5390
+ r ? /* @__PURE__ */ t(Kr, {
5394
5391
  label: e.progressLabel ?? e.label,
5395
5392
  max: a,
5396
5393
  showValue: !0,
@@ -5400,15 +5397,15 @@ function Ci({ status: e }) {
5400
5397
  ]
5401
5398
  });
5402
5399
  }
5403
- function wi({ 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" }) {
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" }) {
5404
5401
  return /* @__PURE__ */ n("div", {
5405
5402
  className: "game-ui-terrain-build-toolbox-body",
5406
5403
  "data-active-mode": i,
5407
5404
  "data-active-tool": a,
5408
5405
  "data-variant": E,
5409
5406
  children: [
5410
- /* @__PURE__ */ t(Ci, { status: S }),
5411
- /* @__PURE__ */ t(gi, {
5407
+ /* @__PURE__ */ t(Si, { status: S }),
5408
+ /* @__PURE__ */ t(hi, {
5412
5409
  activeModeId: i,
5413
5410
  disabled: l,
5414
5411
  label: "Tool mode",
@@ -5419,7 +5416,7 @@ function wi({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5419
5416
  /* @__PURE__ */ n("div", {
5420
5417
  className: "game-ui-terrain-build-main-grid",
5421
5418
  children: [
5422
- /* @__PURE__ */ t(_i, {
5419
+ /* @__PURE__ */ t(gi, {
5423
5420
  activeToolId: a,
5424
5421
  compactLabelMode: C,
5425
5422
  density: c,
@@ -5429,7 +5426,7 @@ function wi({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5429
5426
  tools: w,
5430
5427
  variant: E
5431
5428
  }),
5432
- /* @__PURE__ */ t(bi, {
5429
+ /* @__PURE__ */ t(yi, {
5433
5430
  canRedo: T?.canRedo,
5434
5431
  canUndo: T?.canUndo,
5435
5432
  disabled: l,
@@ -5440,7 +5437,7 @@ function wi({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5440
5437
  undoLabel: T?.undoLabel,
5441
5438
  variant: E
5442
5439
  }),
5443
- /* @__PURE__ */ t(vi, {
5440
+ /* @__PURE__ */ t(_i, {
5444
5441
  onRadiusChange: f,
5445
5442
  onStrengthChange: p,
5446
5443
  state: {
@@ -5449,7 +5446,7 @@ function wi({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5449
5446
  },
5450
5447
  variant: E
5451
5448
  }),
5452
- u.length > 0 ? /* @__PURE__ */ t(yi, {
5449
+ u.length > 0 ? /* @__PURE__ */ t(vi, {
5453
5450
  activeMaterialId: r,
5454
5451
  disabled: l,
5455
5452
  label: "Terrain materials",
@@ -5459,7 +5456,7 @@ function wi({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5459
5456
  }) : null
5460
5457
  ]
5461
5458
  }),
5462
- s.length > 0 ? /* @__PURE__ */ t(xi, {
5459
+ s.length > 0 ? /* @__PURE__ */ t(bi, {
5463
5460
  activeCategoryId: e,
5464
5461
  categories: s,
5465
5462
  density: c,
@@ -5473,12 +5470,12 @@ function wi({ activeBuildCategoryId: e, activeMaterialId: r, activeModeId: i, ac
5473
5470
  ]
5474
5471
  });
5475
5472
  }
5476
- function Ti({ className: e, drawerOpen: n = !1, drawerTitle: r = "Terrain and build tools", label: i, onDrawerOpenChange: a, title: o, variant: s = "desktop", "data-testid": c, ...l }) {
5477
- let u = ["game-ui-terrain-build-toolbox", e].filter(Boolean).join(" "), d = /* @__PURE__ */ t(wi, {
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, {
5478
5475
  ...l,
5479
5476
  variant: s
5480
5477
  });
5481
- return s === "mobile" || s === "small-mobile" ? /* @__PURE__ */ t(Si, {
5478
+ return s === "mobile" || s === "small-mobile" ? /* @__PURE__ */ t(xi, {
5482
5479
  className: u,
5483
5480
  label: i,
5484
5481
  onOpenChange: a,
@@ -5503,7 +5500,7 @@ function Ti({ className: e, drawerOpen: n = !1, drawerTitle: r = "Terrain and bu
5503
5500
  }
5504
5501
  //#endregion
5505
5502
  //#region src/GameContractorTools.tsx
5506
- var Ei = {
5503
+ var Ti = {
5507
5504
  accepted: "success",
5508
5505
  blocked: "danger",
5509
5506
  cancelled: "neutral",
@@ -5512,7 +5509,7 @@ var Ei = {
5512
5509
  queued: "warning",
5513
5510
  readyForReview: "success",
5514
5511
  working: "ai"
5515
- }, Di = {
5512
+ }, Ei = {
5516
5513
  accepted: "check",
5517
5514
  blocked: "alert",
5518
5515
  cancelled: "close",
@@ -5521,26 +5518,26 @@ var Ei = {
5521
5518
  queued: "hourglass",
5522
5519
  readyForReview: "vote",
5523
5520
  working: "energy"
5524
- }, Oi = {
5521
+ }, Di = {
5525
5522
  active: "ai",
5526
5523
  blocked: "danger",
5527
5524
  complete: "success",
5528
5525
  pending: "neutral"
5529
- }, ki = {
5526
+ }, Oi = {
5530
5527
  blocked: "danger",
5531
5528
  done: "success",
5532
5529
  idle: "neutral",
5533
5530
  queued: "warning",
5534
5531
  working: "ai"
5535
- }, Ai = {
5532
+ }, ki = {
5536
5533
  "local-only": "Local only",
5537
5534
  mock: "Mock run",
5538
5535
  "paid-disabled": "Paid provider off"
5539
- }, ji = {
5536
+ }, Ai = {
5540
5537
  "local-only": "success",
5541
5538
  mock: "ai",
5542
5539
  "paid-disabled": "warning"
5543
- }, Mi = {
5540
+ }, ji = {
5544
5541
  accepted: [{
5545
5542
  id: "revert",
5546
5543
  label: "Revert",
@@ -5646,17 +5643,17 @@ var Ei = {
5646
5643
  tone: "danger"
5647
5644
  }]
5648
5645
  };
5649
- function Ni(e, t) {
5646
+ function Mi(e, t) {
5650
5647
  if (t) return t;
5651
5648
  switch (e) {
5652
5649
  case "readyForReview": return "Ready for review";
5653
5650
  default: return e.replace(/([A-Z])/g, " $1").replace(/^./, (e) => e.toUpperCase());
5654
5651
  }
5655
5652
  }
5656
- function Pi(e) {
5653
+ function Ni(e) {
5657
5654
  return e === "blocked" || e === "cancelled" ? "danger" : e === "accepted" || e === "readyForReview" ? "success" : e === "queued" || e === "draft" || e === "preview" ? "warning" : "accent";
5658
5655
  }
5659
- function Fi(e) {
5656
+ function Pi(e) {
5660
5657
  switch (e) {
5661
5658
  case "accepted": return 100;
5662
5659
  case "blocked": return 42;
@@ -5668,7 +5665,7 @@ function Fi(e) {
5668
5665
  case "working": return 64;
5669
5666
  }
5670
5667
  }
5671
- function Ii(e, t, n) {
5668
+ function Fi(e, t, n) {
5672
5669
  let r = {
5673
5670
  disabled: !!(n || e.disabled),
5674
5671
  id: e.id,
@@ -5677,14 +5674,14 @@ function Ii(e, t, n) {
5677
5674
  };
5678
5675
  return e.icon && (r.icon = e.icon), e.ariaLabel && (r.ariaLabel = e.ariaLabel), e.meta && (r.meta = e.meta), t && (r.onAction = t), r;
5679
5676
  }
5680
- function Li(e) {
5677
+ function Ii(e) {
5681
5678
  return e === "danger" || e === "warning" ? "alert" : "status";
5682
5679
  }
5683
- function Ri(e) {
5680
+ function Li(e) {
5684
5681
  return !!(e.before && e.after);
5685
5682
  }
5686
- function zi({ 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 }) {
5687
- let m = ["game-ui-construction-progress", e].filter(Boolean).join(" "), h = d ?? Fi(s), g = Ni(s, c);
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);
5688
5685
  return /* @__PURE__ */ n("section", {
5689
5686
  "aria-label": r,
5690
5687
  className: m,
@@ -5696,18 +5693,18 @@ function zi({ className: e, label: r, max: i = 100, progressLabel: a = "Construc
5696
5693
  /* @__PURE__ */ n("header", {
5697
5694
  className: "game-ui-construction-progress-header",
5698
5695
  children: [/* @__PURE__ */ n("span", { children: [/* @__PURE__ */ t($, {
5699
- icon: Di[s],
5696
+ icon: Ei[s],
5700
5697
  size: "sm"
5701
5698
  }), /* @__PURE__ */ t("strong", { children: a })] }), o ? /* @__PURE__ */ t(Q, {
5702
- tone: Ei[s],
5699
+ tone: Ti[s],
5703
5700
  children: g
5704
5701
  }) : null]
5705
5702
  }),
5706
- /* @__PURE__ */ t(qr, {
5703
+ /* @__PURE__ */ t(Kr, {
5707
5704
  label: a,
5708
5705
  max: i,
5709
5706
  showValue: !0,
5710
- tone: Pi(s),
5707
+ tone: Ni(s),
5711
5708
  value: h
5712
5709
  }),
5713
5710
  l.length > 0 ? /* @__PURE__ */ t("ol", {
@@ -5722,7 +5719,7 @@ function zi({ className: e, label: r, max: i = 100, progressLabel: a = "Construc
5722
5719
  }),
5723
5720
  /* @__PURE__ */ n("span", { children: [/* @__PURE__ */ t("strong", { children: e.label }), e.caption ? /* @__PURE__ */ t("small", { children: e.caption }) : null] }),
5724
5721
  /* @__PURE__ */ t(Q, {
5725
- tone: Oi[e.status],
5722
+ tone: Di[e.status],
5726
5723
  children: e.status
5727
5724
  })
5728
5725
  ]
@@ -5734,7 +5731,7 @@ function zi({ className: e, label: r, max: i = 100, progressLabel: a = "Construc
5734
5731
  children: u.map((e) => /* @__PURE__ */ n("div", {
5735
5732
  className: "game-ui-construction-warning",
5736
5733
  "data-warning-tone": e.tone ?? "warning",
5737
- role: Li(e.tone),
5734
+ role: Ii(e.tone),
5738
5735
  children: [/* @__PURE__ */ t($, {
5739
5736
  icon: e.tone === "danger" || e.tone === "warning" ? "alert" : "check",
5740
5737
  size: "sm"
@@ -5744,8 +5741,8 @@ function zi({ className: e, label: r, max: i = 100, progressLabel: a = "Construc
5744
5741
  ]
5745
5742
  });
5746
5743
  }
5747
- function Bi({ 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 }) {
5748
- let p = ["game-ui-construction-approval-bar", r].filter(Boolean).join(" "), m = e ?? Mi[l], h = u.filter((e) => e.tone !== "success").length, g = m.map((e) => Ii(e, s, i));
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));
5749
5746
  return /* @__PURE__ */ n("section", {
5750
5747
  "aria-label": a,
5751
5748
  className: p,
@@ -5756,8 +5753,8 @@ function Bi({ actions: e, className: r, disabled: i = !1, label: a, localOnlyLab
5756
5753
  children: [/* @__PURE__ */ n("div", {
5757
5754
  className: "game-ui-construction-approval-meta",
5758
5755
  children: [c ? /* @__PURE__ */ t(Q, {
5759
- tone: ji[c],
5760
- children: Ai[c]
5756
+ tone: Ai[c],
5757
+ children: ki[c]
5761
5758
  }) : /* @__PURE__ */ t(Q, {
5762
5759
  tone: "success",
5763
5760
  children: o
@@ -5772,21 +5769,21 @@ function Bi({ actions: e, className: r, disabled: i = !1, label: a, localOnlyLab
5772
5769
  tone: "success",
5773
5770
  children: "Validation clear"
5774
5771
  })]
5775
- }), g.length > 0 ? /* @__PURE__ */ t($r, {
5772
+ }), g.length > 0 ? /* @__PURE__ */ t(Qr, {
5776
5773
  actions: g,
5777
5774
  density: d === "small-mobile" ? "dense" : "comfortable",
5778
5775
  label: `${a} actions`
5779
5776
  }) : null]
5780
5777
  });
5781
5778
  }
5782
- function Vi({ 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 }) {
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 }) {
5783
5780
  return /* @__PURE__ */ n("section", {
5784
5781
  "aria-label": o,
5785
5782
  className: ["game-ui-robot-crew-status", e].filter(Boolean).join(" "),
5786
5783
  "data-ui-hook": "robot-crew-status",
5787
5784
  "data-variant": c,
5788
5785
  "data-testid": l,
5789
- children: [s ? /* @__PURE__ */ t("header", { children: /* @__PURE__ */ t("strong", { children: s }) }) : null, r.length === 0 ? /* @__PURE__ */ t(Jr, {
5786
+ children: [s ? /* @__PURE__ */ t("header", { children: /* @__PURE__ */ t("strong", { children: s }) }) : null, r.length === 0 ? /* @__PURE__ */ t(qr, {
5790
5787
  description: i,
5791
5788
  icon: "ai",
5792
5789
  title: a
@@ -5809,7 +5806,7 @@ function Vi({ className: e, crew: r, emptyDescription: i = "Robot crew members a
5809
5806
  ]
5810
5807
  }),
5811
5808
  /* @__PURE__ */ t(Q, {
5812
- tone: ki[e.status],
5809
+ tone: Oi[e.status],
5813
5810
  children: e.status
5814
5811
  })
5815
5812
  ]
@@ -5817,7 +5814,7 @@ function Vi({ className: e, crew: r, emptyDescription: i = "Robot crew members a
5817
5814
  })]
5818
5815
  });
5819
5816
  }
5820
- function Hi({ activeView: e, after: r, before: i, className: a, label: o, onViewChange: s, variant: c = "desktop", "data-testid": l }) {
5817
+ function Vi({ activeView: e, after: r, before: i, className: a, label: o, onViewChange: s, variant: c = "desktop", "data-testid": l }) {
5821
5818
  let u = ["game-ui-before-after-toggle", a].filter(Boolean).join(" "), d = e === "before" ? i : r;
5822
5819
  return /* @__PURE__ */ n("section", {
5823
5820
  "aria-label": o,
@@ -5826,7 +5823,7 @@ function Hi({ activeView: e, after: r, before: i, className: a, label: o, onView
5826
5823
  "data-ui-hook": "before-after-toggle",
5827
5824
  "data-variant": c,
5828
5825
  "data-testid": l,
5829
- children: [/* @__PURE__ */ t(tr, {
5826
+ children: [/* @__PURE__ */ t(er, {
5830
5827
  activeId: e,
5831
5828
  label: `${o} view`,
5832
5829
  ...s ? { onSelect: (e) => s(e) } : {},
@@ -5853,8 +5850,8 @@ function Hi({ activeView: e, after: r, before: i, className: a, label: o, onView
5853
5850
  })]
5854
5851
  });
5855
5852
  }
5856
- function Ui({ 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 }) {
5857
- let f = ["game-ui-construction-job-card", e].filter(Boolean).join(" "), p = Ni(i.status, i.statusLabel), m = u === "mobile" || u === "small-mobile", h = i.facts ?? [];
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 ?? [];
5858
5855
  return /* @__PURE__ */ n("article", {
5859
5856
  className: f,
5860
5857
  "data-density": r,
@@ -5874,19 +5871,19 @@ function Ui({ className: e, density: r = "comfortable", job: i, onAction: a, onS
5874
5871
  onClick: () => o?.(i.id),
5875
5872
  type: "button",
5876
5873
  children: [/* @__PURE__ */ t($, {
5877
- icon: Di[i.status],
5874
+ icon: Ei[i.status],
5878
5875
  size: m ? "sm" : "md"
5879
5876
  }), /* @__PURE__ */ n("span", { children: [/* @__PURE__ */ t("strong", { children: i.title }), i.description ? /* @__PURE__ */ t("small", { children: i.description }) : null] })]
5880
5877
  }), /* @__PURE__ */ n("span", {
5881
5878
  className: "game-ui-construction-job-badges",
5882
5879
  children: [
5883
5880
  /* @__PURE__ */ t(Q, {
5884
- tone: Ei[i.status],
5881
+ tone: Ti[i.status],
5885
5882
  children: p
5886
5883
  }),
5887
5884
  i.providerMode ? /* @__PURE__ */ t(Q, {
5888
- tone: ji[i.providerMode],
5889
- children: Ai[i.providerMode]
5885
+ tone: Ai[i.providerMode],
5886
+ children: ki[i.providerMode]
5890
5887
  }) : null,
5891
5888
  i.badges?.map((e) => /* @__PURE__ */ t(Q, {
5892
5889
  tone: e.tone ?? "neutral",
@@ -5904,7 +5901,7 @@ function Ui({ className: e, density: r = "comfortable", job: i, onAction: a, onS
5904
5901
  h.map((e) => /* @__PURE__ */ n("span", { children: [/* @__PURE__ */ t("small", { children: e.label }), /* @__PURE__ */ t("b", { children: e.value })] }, e.id))
5905
5902
  ]
5906
5903
  }),
5907
- /* @__PURE__ */ t(zi, {
5904
+ /* @__PURE__ */ t(Ri, {
5908
5905
  label: `${i.title} progress`,
5909
5906
  progressLabel: i.progressLabel,
5910
5907
  status: i.status,
@@ -5915,19 +5912,19 @@ function Ui({ className: e, density: r = "comfortable", job: i, onAction: a, onS
5915
5912
  max: i.progressMax,
5916
5913
  variant: u
5917
5914
  }),
5918
- l && Ri(i) ? /* @__PURE__ */ t(Hi, {
5915
+ l && Li(i) ? /* @__PURE__ */ t(Vi, {
5919
5916
  activeView: "after",
5920
5917
  after: i.after,
5921
5918
  before: i.before,
5922
5919
  label: `${i.title} preview`,
5923
5920
  variant: u
5924
5921
  }) : null,
5925
- i.crew && i.crew.length > 0 ? /* @__PURE__ */ t(Vi, {
5922
+ i.crew && i.crew.length > 0 ? /* @__PURE__ */ t(Bi, {
5926
5923
  crew: i.crew,
5927
5924
  label: `${i.title} robot crew`,
5928
5925
  variant: u
5929
5926
  }) : null,
5930
- c ? /* @__PURE__ */ t(Bi, {
5927
+ c ? /* @__PURE__ */ t(zi, {
5931
5928
  actions: i.actions,
5932
5929
  label: `${i.title} approval`,
5933
5930
  onAction: (e) => a?.(e, i.id),
@@ -5939,8 +5936,8 @@ function Ui({ className: e, density: r = "comfortable", job: i, onAction: a, onS
5939
5936
  ]
5940
5937
  });
5941
5938
  }
5942
- function Wi({ 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 }) {
5943
- return /* @__PURE__ */ t(Si, {
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, {
5944
5941
  className: ["game-ui-compact-job-drawer", n].filter(Boolean).join(" "),
5945
5942
  closeLabel: r,
5946
5943
  disabled: i,
@@ -5956,7 +5953,7 @@ function Wi({ children: e, className: n, closeLabel: r = "Close jobs", disabled:
5956
5953
  children: e ?? /* @__PURE__ */ t("div", {
5957
5954
  className: "game-ui-compact-job-drawer-list",
5958
5955
  tabIndex: 0,
5959
- children: a.map((e) => /* @__PURE__ */ t(Ui, {
5956
+ children: a.map((e) => /* @__PURE__ */ t(Hi, {
5960
5957
  density: "dense",
5961
5958
  job: e,
5962
5959
  onAction: s,
@@ -5968,7 +5965,7 @@ function Wi({ children: e, className: n, closeLabel: r = "Close jobs", disabled:
5968
5965
  })
5969
5966
  });
5970
5967
  }
5971
- function Gi({ 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 }) {
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 }) {
5972
5969
  let y = ["game-ui-contractor-panel", r].filter(Boolean).join(" "), b = c.find((e) => e.id === m) ?? c[0];
5973
5970
  return _ === "mobile" || _ === "small-mobile" ? /* @__PURE__ */ n("section", {
5974
5971
  "aria-label": l,
@@ -5977,7 +5974,7 @@ function Gi({ activePreviewView: e = "after", className: r, density: i = "comfor
5977
5974
  "data-variant": _,
5978
5975
  "data-testid": v,
5979
5976
  children: [
5980
- /* @__PURE__ */ t(Wi, {
5977
+ /* @__PURE__ */ t(Ui, {
5981
5978
  jobs: c,
5982
5979
  label: `${l} drawer`,
5983
5980
  onAction: u,
@@ -5989,16 +5986,16 @@ function Gi({ activePreviewView: e = "after", className: r, density: i = "comfor
5989
5986
  triggerLabel: "Contractor",
5990
5987
  variant: _
5991
5988
  }),
5992
- b && !a ? /* @__PURE__ */ t(Ui, {
5989
+ b && !a ? /* @__PURE__ */ t(Hi, {
5993
5990
  density: "dense",
5994
5991
  job: b,
5995
5992
  onAction: u,
5996
5993
  onSelect: p,
5997
5994
  selected: !0,
5998
- showBeforeAfter: Ri(b),
5995
+ showBeforeAfter: Li(b),
5999
5996
  variant: _
6000
5997
  }) : null,
6001
- b ? null : /* @__PURE__ */ t(Jr, {
5998
+ b ? null : /* @__PURE__ */ t(qr, {
6002
5999
  description: o,
6003
6000
  icon: "energy",
6004
6001
  title: s
@@ -6019,7 +6016,7 @@ function Gi({ activePreviewView: e = "after", className: r, density: i = "comfor
6019
6016
  className: "game-ui-contractor-panel-subtitle",
6020
6017
  children: h
6021
6018
  }) : null,
6022
- c.length === 0 ? /* @__PURE__ */ t(Jr, {
6019
+ c.length === 0 ? /* @__PURE__ */ t(qr, {
6023
6020
  description: o,
6024
6021
  icon: "energy",
6025
6022
  title: s
@@ -6030,7 +6027,7 @@ function Gi({ activePreviewView: e = "after", className: r, density: i = "comfor
6030
6027
  "aria-label": "Construction job queue",
6031
6028
  className: "game-ui-contractor-job-list",
6032
6029
  tabIndex: 0,
6033
- children: c.map((e) => /* @__PURE__ */ t(Ui, {
6030
+ children: c.map((e) => /* @__PURE__ */ t(Hi, {
6034
6031
  density: i,
6035
6032
  job: e,
6036
6033
  onAction: u,
@@ -6043,7 +6040,7 @@ function Gi({ activePreviewView: e = "after", className: r, density: i = "comfor
6043
6040
  className: "game-ui-contractor-detail",
6044
6041
  "aria-label": `${b.title} detail`,
6045
6042
  children: [
6046
- /* @__PURE__ */ t(zi, {
6043
+ /* @__PURE__ */ t(Ri, {
6047
6044
  label: `${b.title} progress detail`,
6048
6045
  progressLabel: b.progressLabel,
6049
6046
  status: b.status,
@@ -6054,7 +6051,7 @@ function Gi({ activePreviewView: e = "after", className: r, density: i = "comfor
6054
6051
  max: b.progressMax,
6055
6052
  variant: _
6056
6053
  }),
6057
- Ri(b) ? /* @__PURE__ */ t(Hi, {
6054
+ Li(b) ? /* @__PURE__ */ t(Vi, {
6058
6055
  activeView: e,
6059
6056
  after: b.after,
6060
6057
  before: b.before,
@@ -6062,13 +6059,13 @@ function Gi({ activePreviewView: e = "after", className: r, density: i = "comfor
6062
6059
  onViewChange: f,
6063
6060
  variant: _
6064
6061
  }) : null,
6065
- /* @__PURE__ */ t(Vi, {
6062
+ /* @__PURE__ */ t(Bi, {
6066
6063
  crew: b.crew ?? [],
6067
6064
  label: `${b.title} robot crew`,
6068
6065
  title: "Robot crew",
6069
6066
  variant: _
6070
6067
  }),
6071
- /* @__PURE__ */ t(Bi, {
6068
+ /* @__PURE__ */ t(zi, {
6072
6069
  actions: b.actions,
6073
6070
  label: `${b.title} approval`,
6074
6071
  onAction: u ? (e) => u(e, b.id) : void 0,
@@ -6086,16 +6083,16 @@ function Gi({ activePreviewView: e = "after", className: r, density: i = "comfor
6086
6083
  }
6087
6084
  //#endregion
6088
6085
  //#region src/GamePanelSystem.tsx
6089
- function Ki(...e) {
6086
+ function Gi(...e) {
6090
6087
  return e.filter(Boolean).join(" ");
6091
6088
  }
6092
- var qi = {
6089
+ var Ki = {
6093
6090
  collapse: "Collapse",
6094
6091
  expand: "Expand"
6095
6092
  };
6096
- function Ji({ actions: e, children: r, className: i, defaultOpen: a = !0, labels: o, onOpenChange: s, open: c, title: l, tone: d = "default", ...f }) {
6093
+ function qi({ actions: e, children: r, className: i, defaultOpen: a = !0, labels: o, onOpenChange: s, open: c, title: l, tone: d = "default", ...f }) {
6097
6094
  let p = u(), [h, g] = m(a), _ = c ?? h, v = {
6098
- ...qi,
6095
+ ...Ki,
6099
6096
  ...o
6100
6097
  }, y = () => {
6101
6098
  let e = !_;
@@ -6103,7 +6100,7 @@ function Ji({ actions: e, children: r, className: i, defaultOpen: a = !0, labels
6103
6100
  };
6104
6101
  return /* @__PURE__ */ n("section", {
6105
6102
  ...f,
6106
- className: Ki("game-ui-collapsible", i),
6103
+ className: Gi("game-ui-collapsible", i),
6107
6104
  "data-open": _,
6108
6105
  "data-panel-tone": d,
6109
6106
  children: [/* @__PURE__ */ n("header", {
@@ -6142,13 +6139,13 @@ function Ji({ actions: e, children: r, className: i, defaultOpen: a = !0, labels
6142
6139
  })]
6143
6140
  });
6144
6141
  }
6145
- var Yi = {
6142
+ var Ji = {
6146
6143
  close: "Close",
6147
6144
  maximize: "Maximize",
6148
6145
  minimize: "Minimize",
6149
6146
  restore: "Restore"
6150
6147
  };
6151
- function Xi({ kind: e }) {
6148
+ function Yi({ kind: e }) {
6152
6149
  return /* @__PURE__ */ t("svg", {
6153
6150
  "aria-hidden": "true",
6154
6151
  fill: "none",
@@ -6168,9 +6165,9 @@ function Xi({ kind: e }) {
6168
6165
  })
6169
6166
  });
6170
6167
  }
6171
- function Zi({ 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 }) {
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 }) {
6172
6169
  let [g, _] = m(o), v = f ?? g, y = {
6173
- ...Yi,
6170
+ ...Ji,
6174
6171
  ...l
6175
6172
  }, b = (e) => {
6176
6173
  f === void 0 && _(e), d?.(e);
@@ -6178,7 +6175,7 @@ function Zi({ allowMaximize: e = !0, allowMinimize: r = !0, children: i, classNa
6178
6175
  return /* @__PURE__ */ n("section", {
6179
6176
  ...h,
6180
6177
  "aria-label": p,
6181
- className: Ki("game-ui-window", a),
6178
+ className: Gi("game-ui-window", a),
6182
6179
  "data-window-state": v,
6183
6180
  role: "group",
6184
6181
  children: [/* @__PURE__ */ n("header", {
@@ -6201,21 +6198,21 @@ function Zi({ allowMaximize: e = !0, allowMinimize: r = !0, children: i, classNa
6201
6198
  className: "game-ui-icon-button game-ui-window-button",
6202
6199
  onClick: () => b(x ? "normal" : "minimized"),
6203
6200
  type: "button",
6204
- children: /* @__PURE__ */ t(Xi, { kind: x ? "restore" : "minimize" })
6201
+ children: /* @__PURE__ */ t(Yi, { kind: x ? "restore" : "minimize" })
6205
6202
  }) : null,
6206
6203
  e ? /* @__PURE__ */ t("button", {
6207
6204
  "aria-label": S ? y.restore : y.maximize,
6208
6205
  className: "game-ui-icon-button game-ui-window-button",
6209
6206
  onClick: () => b(S ? "normal" : "maximized"),
6210
6207
  type: "button",
6211
- children: /* @__PURE__ */ t(Xi, { kind: S ? "restore" : "maximize" })
6208
+ children: /* @__PURE__ */ t(Yi, { kind: S ? "restore" : "maximize" })
6212
6209
  }) : null,
6213
6210
  u ? /* @__PURE__ */ t("button", {
6214
6211
  "aria-label": y.close,
6215
6212
  className: "game-ui-icon-button game-ui-window-button",
6216
6213
  onClick: u,
6217
6214
  type: "button",
6218
- children: /* @__PURE__ */ t(Xi, { kind: "close" })
6215
+ children: /* @__PURE__ */ t(Yi, { kind: "close" })
6219
6216
  }) : null
6220
6217
  ]
6221
6218
  })
@@ -6235,14 +6232,14 @@ function Zi({ allowMaximize: e = !0, allowMinimize: r = !0, children: i, classNa
6235
6232
  })]
6236
6233
  });
6237
6234
  }
6238
- function Qi({ children: e, className: r, closeLabel: i = "Close", closeOnBackdrop: a = !0, footer: o, onClose: s, open: c, position: d = "center", size: f = "md", title: m }) {
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 }) {
6239
6236
  let h = p(null), g = u();
6240
6237
  return l(() => {
6241
6238
  let e = h.current;
6242
6239
  e && (c && !e.open && e.showModal(), !c && e.open && e.close());
6243
6240
  }, [c]), /* @__PURE__ */ t("dialog", {
6244
6241
  "aria-labelledby": g,
6245
- className: Ki("game-ui-modal", r),
6242
+ className: Gi("game-ui-modal", r),
6246
6243
  "data-position": d,
6247
6244
  "data-size": f,
6248
6245
  onCancel: (e) => {
@@ -6266,7 +6263,7 @@ function Qi({ children: e, className: r, closeLabel: i = "Close", closeOnBackdro
6266
6263
  className: "game-ui-icon-button game-ui-window-button",
6267
6264
  onClick: s,
6268
6265
  type: "button",
6269
- children: /* @__PURE__ */ t(Xi, { kind: "close" })
6266
+ children: /* @__PURE__ */ t(Yi, { kind: "close" })
6270
6267
  })]
6271
6268
  }),
6272
6269
  /* @__PURE__ */ t("div", {
@@ -6283,7 +6280,7 @@ function Qi({ children: e, className: r, closeLabel: i = "Close", closeOnBackdro
6283
6280
  }
6284
6281
  //#endregion
6285
6282
  //#region src/previewStates.ts
6286
- var $i = [
6283
+ var Qi = [
6287
6284
  {
6288
6285
  id: "history-human-long",
6289
6286
  kind: "human",
@@ -6305,23 +6302,23 @@ var $i = [
6305
6302
  speaker: "Table",
6306
6303
  text: "Three votes are locked. One more read can still change the pact."
6307
6304
  }
6308
- ], ea = {
6309
- ...B,
6305
+ ], $i = {
6310
6306
  ...V,
6307
+ ..._e,
6311
6308
  ...ve,
6312
6309
  ...H,
6313
6310
  ...U,
6314
6311
  ...W,
6315
6312
  ...ye,
6316
6313
  ...xe,
6317
- ...R
6318
- }, ta = {
6314
+ ...z
6315
+ }, ea = {
6319
6316
  toneAttr: "data-game-ui-tone",
6320
6317
  toneGlass: "glass",
6321
6318
  densityAttr: "data-game-ui-density",
6322
6319
  densityCompact: "compact",
6323
6320
  scopeClass: "game-ui-overlay-scope"
6324
- }, na = be, ra = /* @__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("."), ia = {
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 = {
6325
6322
  en: {
6326
6323
  triggerLabel: "EN",
6327
6324
  langMenuLabel: "Preview language",
@@ -6523,7 +6520,7 @@ var $i = [
6523
6520
  hint: "Rotate manually if this browser blocks automatic landscape lock."
6524
6521
  },
6525
6522
  historyLabel: "Round history",
6526
- history: $i
6523
+ history: Qi
6527
6524
  },
6528
6525
  "zh-CN": {
6529
6526
  triggerLabel: "中",
@@ -6750,18 +6747,18 @@ var $i = [
6750
6747
  }
6751
6748
  ]
6752
6749
  }
6753
- }, aa = i(ia.en), oa = () => c(aa), sa = [
6750
+ }, ia = i(ra.en), aa = () => c(ia), oa = [
6754
6751
  {
6755
6752
  id: "colors",
6756
- tokens: I
6753
+ tokens: L
6757
6754
  },
6758
6755
  {
6759
6756
  id: "semantic",
6760
- tokens: B
6757
+ tokens: V
6761
6758
  },
6762
6759
  {
6763
6760
  id: "typography",
6764
- tokens: V
6761
+ tokens: _e
6765
6762
  },
6766
6763
  {
6767
6764
  id: "spacing",
@@ -6781,15 +6778,15 @@ var $i = [
6781
6778
  },
6782
6779
  {
6783
6780
  id: "overlayGlass",
6784
- tokens: z
6781
+ tokens: B
6785
6782
  },
6786
6783
  {
6787
6784
  id: "liquidMetal",
6788
- tokens: L
6785
+ tokens: R
6789
6786
  },
6790
6787
  {
6791
6788
  id: "liquidGooey",
6792
- tokens: R
6789
+ tokens: z
6793
6790
  },
6794
6791
  {
6795
6792
  id: "layers",
@@ -6804,7 +6801,7 @@ var $i = [
6804
6801
  tokens: xe
6805
6802
  }
6806
6803
  ];
6807
- function ca({ id: e, label: r, tokens: i }) {
6804
+ function sa({ id: e, label: r, tokens: i }) {
6808
6805
  return /* @__PURE__ */ n("article", {
6809
6806
  className: "game-ui-token-card",
6810
6807
  children: [/* @__PURE__ */ t("h3", { children: r }), /* @__PURE__ */ t("div", {
@@ -6816,18 +6813,18 @@ function ca({ id: e, label: r, tokens: i }) {
6816
6813
  })]
6817
6814
  });
6818
6815
  }
6819
- function la() {
6816
+ function ca() {
6820
6817
  return /* @__PURE__ */ t("div", {
6821
6818
  "aria-label": "Clay color swatches",
6822
6819
  className: "game-ui-swatch-grid",
6823
- children: Object.entries(I).map(([e, r]) => /* @__PURE__ */ n("figure", {
6820
+ children: Object.entries(L).map(([e, r]) => /* @__PURE__ */ n("figure", {
6824
6821
  className: "game-ui-swatch",
6825
6822
  children: [/* @__PURE__ */ t("span", { style: { background: r } }), /* @__PURE__ */ n("figcaption", { children: [/* @__PURE__ */ t("strong", { children: e }), /* @__PURE__ */ t("code", { children: r })] })]
6826
6823
  }, e))
6827
6824
  });
6828
6825
  }
6829
- function ua() {
6830
- let { type: e } = oa();
6826
+ function la() {
6827
+ let { type: e } = aa();
6831
6828
  return /* @__PURE__ */ n("div", {
6832
6829
  className: "game-ui-type-scale",
6833
6830
  children: [
@@ -6842,8 +6839,8 @@ function ua() {
6842
6839
  ]
6843
6840
  });
6844
6841
  }
6845
- function da() {
6846
- let { buttons: e } = oa();
6842
+ function ua() {
6843
+ let { buttons: e } = aa();
6847
6844
  return /* @__PURE__ */ n(X, {
6848
6845
  title: e.panelTitle,
6849
6846
  tone: "strong",
@@ -6881,9 +6878,9 @@ function da() {
6881
6878
  /* @__PURE__ */ n("div", {
6882
6879
  className: "game-ui-component-row",
6883
6880
  children: [
6884
- /* @__PURE__ */ t(Qn, {
6881
+ /* @__PURE__ */ t(Zn, {
6885
6882
  label: e.settingsTip,
6886
- children: /* @__PURE__ */ t(Zn, {
6883
+ children: /* @__PURE__ */ t(Xn, {
6887
6884
  label: e.settingsTip,
6888
6885
  children: /* @__PURE__ */ t($, {
6889
6886
  icon: "settings",
@@ -6891,7 +6888,7 @@ function da() {
6891
6888
  })
6892
6889
  })
6893
6890
  }),
6894
- /* @__PURE__ */ t(Zn, {
6891
+ /* @__PURE__ */ t(Xn, {
6895
6892
  label: e.copyInvite,
6896
6893
  children: /* @__PURE__ */ t($, {
6897
6894
  icon: "copy",
@@ -6912,7 +6909,7 @@ function da() {
6912
6909
  })
6913
6910
  ]
6914
6911
  }),
6915
- /* @__PURE__ */ t(tr, {
6912
+ /* @__PURE__ */ t(er, {
6916
6913
  activeId: "live",
6917
6914
  label: e.segmentedLabel,
6918
6915
  options: [
@@ -6930,7 +6927,7 @@ function da() {
6930
6927
  }
6931
6928
  ]
6932
6929
  }),
6933
- /* @__PURE__ */ t($n, {
6930
+ /* @__PURE__ */ t(Qn, {
6934
6931
  activeId: "portal",
6935
6932
  tabs: [
6936
6933
  {
@@ -6947,7 +6944,7 @@ function da() {
6947
6944
  }
6948
6945
  ]
6949
6946
  }),
6950
- /* @__PURE__ */ t(ir, {
6947
+ /* @__PURE__ */ t(rr, {
6951
6948
  items: [
6952
6949
  {
6953
6950
  id: "wave",
@@ -6964,28 +6961,28 @@ function da() {
6964
6961
  ],
6965
6962
  label: e.radialLabel
6966
6963
  }),
6967
- /* @__PURE__ */ t(nr, {
6964
+ /* @__PURE__ */ t(tr, {
6968
6965
  label: e.sliderLabel,
6969
6966
  max: 100,
6970
6967
  min: 0,
6971
6968
  value: 68
6972
6969
  }),
6973
- /* @__PURE__ */ t(rr, {
6970
+ /* @__PURE__ */ t(nr, {
6974
6971
  checked: !0,
6975
6972
  label: e.toggleLabel
6976
6973
  })
6977
6974
  ]
6978
6975
  });
6979
6976
  }
6980
- function fa() {
6981
- let { hud: e, tiles: r } = oa();
6977
+ function da() {
6978
+ let { hud: e, tiles: r } = aa();
6982
6979
  return /* @__PURE__ */ n("div", {
6983
6980
  className: "game-ui-stage-demo",
6984
6981
  children: [/* @__PURE__ */ n("div", {
6985
6982
  "aria-label": "Clay world HUD preview",
6986
6983
  className: "game-ui-stage-world",
6987
6984
  children: [
6988
- /* @__PURE__ */ t(Ar, {
6985
+ /* @__PURE__ */ t(kr, {
6989
6986
  label: e.label,
6990
6987
  items: [
6991
6988
  {
@@ -7008,15 +7005,15 @@ function fa() {
7008
7005
  value: "02:46"
7009
7006
  }
7010
7007
  ],
7011
- actions: /* @__PURE__ */ n(Xn, {
7008
+ actions: /* @__PURE__ */ n(Yn, {
7012
7009
  label: e.tools,
7013
- children: [/* @__PURE__ */ t(Zn, {
7010
+ children: [/* @__PURE__ */ t(Xn, {
7014
7011
  label: e.history,
7015
7012
  children: /* @__PURE__ */ t($, {
7016
7013
  icon: "scroll",
7017
7014
  size: "sm"
7018
7015
  })
7019
- }), /* @__PURE__ */ t(Zn, {
7016
+ }), /* @__PURE__ */ t(Xn, {
7020
7017
  label: e.settings,
7021
7018
  children: /* @__PURE__ */ t($, {
7022
7019
  icon: "settings",
@@ -7056,7 +7053,7 @@ function fa() {
7056
7053
  }), /* @__PURE__ */ n("div", {
7057
7054
  className: "game-ui-stage-sidecar",
7058
7055
  children: [
7059
- /* @__PURE__ */ t(Mr, {
7056
+ /* @__PURE__ */ t(jr, {
7060
7057
  badge: r.daily.badge,
7061
7058
  icon: "scroll",
7062
7059
  kicker: r.daily.kicker,
@@ -7065,7 +7062,7 @@ function fa() {
7065
7062
  title: r.daily.title,
7066
7063
  tone: "daily"
7067
7064
  }),
7068
- /* @__PURE__ */ t(Mr, {
7065
+ /* @__PURE__ */ t(jr, {
7069
7066
  badge: r.portal.badge,
7070
7067
  icon: "portal",
7071
7068
  kicker: r.portal.kicker,
@@ -7073,7 +7070,7 @@ function fa() {
7073
7070
  title: r.portal.title,
7074
7071
  tone: "portal"
7075
7072
  }),
7076
- /* @__PURE__ */ t(Mr, {
7073
+ /* @__PURE__ */ t(jr, {
7077
7074
  icon: "energy",
7078
7075
  kicker: r.host.kicker,
7079
7076
  summary: r.host.summary,
@@ -7084,21 +7081,21 @@ function fa() {
7084
7081
  })]
7085
7082
  });
7086
7083
  }
7087
- function pa() {
7088
- let { hud: e, buttons: r } = oa(), i = (i) => {
7084
+ function fa() {
7085
+ let { hud: e, buttons: r } = aa(), i = (i) => {
7089
7086
  let a = i === "glass";
7090
7087
  return /* @__PURE__ */ n("div", {
7091
7088
  "aria-label": a ? "Overlay glass HUD" : "Default clay HUD",
7092
7089
  className: [
7093
7090
  "game-ui-stage-world",
7094
7091
  "game-ui-overlay-glass-proof",
7095
- a ? ta.scopeClass : void 0
7092
+ a ? ea.scopeClass : void 0
7096
7093
  ].filter(Boolean).join(" "),
7097
7094
  ...a ? {
7098
- [ta.toneAttr]: ta.toneGlass,
7099
- [ta.densityAttr]: ta.densityCompact
7095
+ [ea.toneAttr]: ea.toneGlass,
7096
+ [ea.densityAttr]: ea.densityCompact
7100
7097
  } : {},
7101
- children: [/* @__PURE__ */ t(Ar, {
7098
+ children: [/* @__PURE__ */ t(kr, {
7102
7099
  label: e.label,
7103
7100
  items: [
7104
7101
  {
@@ -7121,15 +7118,15 @@ function pa() {
7121
7118
  value: "02:46"
7122
7119
  }
7123
7120
  ],
7124
- actions: /* @__PURE__ */ n(Xn, {
7121
+ actions: /* @__PURE__ */ n(Yn, {
7125
7122
  label: e.tools,
7126
- children: [/* @__PURE__ */ t(Zn, {
7123
+ children: [/* @__PURE__ */ t(Xn, {
7127
7124
  label: e.history,
7128
7125
  children: /* @__PURE__ */ t($, {
7129
7126
  icon: "scroll",
7130
7127
  size: "sm"
7131
7128
  })
7132
- }), /* @__PURE__ */ t(Zn, {
7129
+ }), /* @__PURE__ */ t(Xn, {
7133
7130
  label: e.settings,
7134
7131
  children: /* @__PURE__ */ t($, {
7135
7132
  icon: "settings",
@@ -7150,7 +7147,7 @@ function pa() {
7150
7147
  tone: "success",
7151
7148
  children: r.readyBadge
7152
7149
  }),
7153
- /* @__PURE__ */ t(qr, {
7150
+ /* @__PURE__ */ t(Kr, {
7154
7151
  label: e.reveal,
7155
7152
  value: 68
7156
7153
  })
@@ -7188,22 +7185,22 @@ function pa() {
7188
7185
  children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t("strong", { children: "Overlay glass + compact" }), /* @__PURE__ */ n("span", {
7189
7186
  className: "game-ui-small-copy",
7190
7187
  children: [
7191
- ta.toneAttr,
7188
+ ea.toneAttr,
7192
7189
  "=\"",
7193
- ta.toneGlass,
7190
+ ea.toneGlass,
7194
7191
  "\" ·",
7195
7192
  " ",
7196
- ta.densityAttr,
7193
+ ea.densityAttr,
7197
7194
  "=\"",
7198
- ta.densityCompact,
7195
+ ea.densityCompact,
7199
7196
  "\""
7200
7197
  ]
7201
7198
  })] }), i("glass")]
7202
7199
  })]
7203
7200
  });
7204
7201
  }
7205
- function ma() {
7206
- let { liquidMetal: e } = oa();
7202
+ function pa() {
7203
+ let { liquidMetal: e } = aa();
7207
7204
  return /* @__PURE__ */ n("div", {
7208
7205
  className: "game-ui-liquid-metal-compare",
7209
7206
  children: [/* @__PURE__ */ t(X, {
@@ -7211,7 +7208,7 @@ function ma() {
7211
7208
  tone: "strong",
7212
7209
  children: /* @__PURE__ */ t("div", {
7213
7210
  className: "game-ui-liquid-metal-stage",
7214
- children: /* @__PURE__ */ t(_e, {
7211
+ children: /* @__PURE__ */ t(ge, {
7215
7212
  renderer: "css",
7216
7213
  children: e.cta
7217
7214
  })
@@ -7221,7 +7218,7 @@ function ma() {
7221
7218
  tone: "strong",
7222
7219
  children: /* @__PURE__ */ t("div", {
7223
7220
  className: "game-ui-liquid-metal-stage",
7224
- children: /* @__PURE__ */ t(_e, {
7221
+ children: /* @__PURE__ */ t(ge, {
7225
7222
  renderer: "webgl",
7226
7223
  children: e.cta
7227
7224
  })
@@ -7229,13 +7226,13 @@ function ma() {
7229
7226
  })]
7230
7227
  });
7231
7228
  }
7232
- function ha() {
7233
- let { modals: e } = oa();
7229
+ function ma() {
7230
+ let { modals: e } = aa();
7234
7231
  return /* @__PURE__ */ n("div", {
7235
7232
  className: "game-ui-preview-two-up",
7236
- children: [/* @__PURE__ */ n(Jn, {
7233
+ children: [/* @__PURE__ */ n(qn, {
7237
7234
  title: e.dialogTitle,
7238
- children: [/* @__PURE__ */ t("p", { children: e.dialogBody }), /* @__PURE__ */ n(Xn, {
7235
+ children: [/* @__PURE__ */ t("p", { children: e.dialogBody }), /* @__PURE__ */ n(Yn, {
7239
7236
  label: e.actionsLabel,
7240
7237
  children: [/* @__PURE__ */ t(w, {
7241
7238
  variant: "primary",
@@ -7249,16 +7246,16 @@ function ha() {
7249
7246
  title: e.panelTitle,
7250
7247
  tone: "strong",
7251
7248
  children: [
7252
- /* @__PURE__ */ t(ar, {
7249
+ /* @__PURE__ */ t(ir, {
7253
7250
  tone: "success",
7254
7251
  children: e.toastOk
7255
7252
  }),
7256
- /* @__PURE__ */ t(ar, {
7253
+ /* @__PURE__ */ t(ir, {
7257
7254
  tone: "danger",
7258
7255
  children: e.toastErr
7259
7256
  }),
7260
- /* @__PURE__ */ t(Ir, { label: e.loading }),
7261
- /* @__PURE__ */ t(Ir, {
7257
+ /* @__PURE__ */ t(Fr, { label: e.loading }),
7258
+ /* @__PURE__ */ t(Fr, {
7262
7259
  label: e.loadingErr,
7263
7260
  tone: "error"
7264
7261
  })
@@ -7266,14 +7263,14 @@ function ha() {
7266
7263
  })]
7267
7264
  });
7268
7265
  }
7269
- function ga() {
7270
- let { cards: e } = oa();
7266
+ function ha() {
7267
+ let { cards: e } = aa();
7271
7268
  return /* @__PURE__ */ n("div", {
7272
7269
  className: "game-ui-preview-two-up",
7273
7270
  children: [/* @__PURE__ */ t(X, {
7274
7271
  title: e.fanTitle,
7275
7272
  tone: "strong",
7276
- children: /* @__PURE__ */ t(jr, {
7273
+ children: /* @__PURE__ */ t(Ar, {
7277
7274
  label: e.fanLabel,
7278
7275
  cards: [
7279
7276
  {
@@ -7305,16 +7302,16 @@ function ga() {
7305
7302
  }), /* @__PURE__ */ n("div", {
7306
7303
  className: "game-ui-asset-path-grid",
7307
7304
  children: [
7308
- /* @__PURE__ */ t("code", { children: gr.catalog.manifest }),
7309
- /* @__PURE__ */ t("code", { children: gr.catalog.sourceCatalog }),
7310
- /* @__PURE__ */ t("code", { children: gr.buttons.primary }),
7311
- /* @__PURE__ */ t("code", { children: gr.icons.trophy })
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 })
7312
7309
  ]
7313
7310
  })]
7314
7311
  })]
7315
7312
  });
7316
7313
  }
7317
- var _a = [
7314
+ var ga = [
7318
7315
  {
7319
7316
  id: "terrain",
7320
7317
  label: "Terrain",
@@ -7330,7 +7327,7 @@ var _a = [
7330
7327
  label: "Place",
7331
7328
  icon: "gem"
7332
7329
  }
7333
- ], va = [
7330
+ ], _a = [
7334
7331
  {
7335
7332
  id: "raise",
7336
7333
  label: "Raise",
@@ -7356,7 +7353,7 @@ var _a = [
7356
7353
  label: "Paint",
7357
7354
  shortcut: "5"
7358
7355
  }
7359
- ], ya = [
7356
+ ], va = [
7360
7357
  {
7361
7358
  id: "grass",
7362
7359
  label: "Grass",
@@ -7372,7 +7369,7 @@ var _a = [
7372
7369
  label: "Path",
7373
7370
  color: "#b98d5d"
7374
7371
  }
7375
- ], ba = [{
7372
+ ], ya = [{
7376
7373
  id: "foundation",
7377
7374
  label: "Foundation",
7378
7375
  icon: "home",
@@ -7391,10 +7388,10 @@ var _a = [
7391
7388
  status: "ready"
7392
7389
  }]
7393
7390
  }];
7394
- function xa() {
7391
+ function ba() {
7395
7392
  return /* @__PURE__ */ n("div", {
7396
7393
  className: "game-ui-preview-two-up",
7397
- children: [/* @__PURE__ */ t(Ti, {
7394
+ children: [/* @__PURE__ */ t(wi, {
7398
7395
  activeBuildCategoryId: "foundation",
7399
7396
  activeMaterialId: "grass",
7400
7397
  activeModeId: "terrain",
@@ -7403,10 +7400,10 @@ function xa() {
7403
7400
  radius: 2.75,
7404
7401
  strength: .45
7405
7402
  },
7406
- buildCategories: ba,
7403
+ buildCategories: ya,
7407
7404
  label: "Desktop terrain and build tools",
7408
- materials: ya,
7409
- modes: _a,
7405
+ materials: va,
7406
+ modes: ga,
7410
7407
  selectedBuildItemId: "floor-2x2",
7411
7408
  status: {
7412
7409
  label: "Ready",
@@ -7417,12 +7414,12 @@ function xa() {
7417
7414
  progressValue: 68
7418
7415
  },
7419
7416
  title: "Island tools",
7420
- tools: va,
7417
+ tools: _a,
7421
7418
  undoRedo: {
7422
7419
  canRedo: !1,
7423
7420
  canUndo: !0
7424
7421
  }
7425
- }), /* @__PURE__ */ t(Ti, {
7422
+ }), /* @__PURE__ */ t(wi, {
7426
7423
  activeBuildCategoryId: "foundation",
7427
7424
  activeMaterialId: "path",
7428
7425
  activeModeId: "terrain",
@@ -7431,11 +7428,11 @@ function xa() {
7431
7428
  radius: 1.5,
7432
7429
  strength: .3
7433
7430
  },
7434
- buildCategories: ba,
7431
+ buildCategories: ya,
7435
7432
  drawerOpen: !0,
7436
7433
  label: "Small mobile terrain drawer",
7437
- materials: ya,
7438
- modes: _a,
7434
+ materials: va,
7435
+ modes: ga,
7439
7436
  selectedBuildItemId: "floor-2x2",
7440
7437
  status: {
7441
7438
  label: "Blocked",
@@ -7443,7 +7440,7 @@ function xa() {
7443
7440
  description: "This edit would bury a placed object."
7444
7441
  },
7445
7442
  title: "Tools",
7446
- tools: va,
7443
+ tools: _a,
7447
7444
  undoRedo: {
7448
7445
  canRedo: !0,
7449
7446
  canUndo: !0
@@ -7452,7 +7449,7 @@ function xa() {
7452
7449
  })]
7453
7450
  });
7454
7451
  }
7455
- function Sa({ label: e, mode: r }) {
7452
+ function xa({ label: e, mode: r }) {
7456
7453
  return /* @__PURE__ */ n("div", {
7457
7454
  className: "game-ui-construction-preview-card",
7458
7455
  "data-preview": r,
@@ -7466,7 +7463,7 @@ function Sa({ label: e, mode: r }) {
7466
7463
  ]
7467
7464
  });
7468
7465
  }
7469
- var Ca = [
7466
+ var Sa = [
7470
7467
  {
7471
7468
  id: "preview-deck",
7472
7469
  title: "Deck robot crew",
@@ -7527,7 +7524,7 @@ var Ca = [
7527
7524
  before: {
7528
7525
  label: "Before",
7529
7526
  caption: "Uneven terrain pad.",
7530
- content: /* @__PURE__ */ t(Sa, {
7527
+ content: /* @__PURE__ */ t(xa, {
7531
7528
  label: "Rough pad",
7532
7529
  mode: "before"
7533
7530
  })
@@ -7535,7 +7532,7 @@ var Ca = [
7535
7532
  after: {
7536
7533
  label: "After",
7537
7534
  caption: "Flattened foundation pad with safe clearance.",
7538
- content: /* @__PURE__ */ t(Sa, {
7535
+ content: /* @__PURE__ */ t(xa, {
7539
7536
  label: "Foundation ready",
7540
7537
  mode: "after"
7541
7538
  })
@@ -7564,19 +7561,19 @@ var Ca = [
7564
7561
  }]
7565
7562
  }
7566
7563
  ];
7567
- function wa() {
7564
+ function Ca() {
7568
7565
  return /* @__PURE__ */ n("div", {
7569
7566
  className: "game-ui-preview-two-up",
7570
- children: [/* @__PURE__ */ t(Gi, {
7571
- jobs: Ca,
7567
+ children: [/* @__PURE__ */ t(Wi, {
7568
+ jobs: Sa,
7572
7569
  label: "AI contractor jobs",
7573
7570
  selectedJobId: "review-house-pad",
7574
7571
  subtitle: "Official contractor UI covers drafts, previews, robot work, validation, review, and local-only provider boundaries.",
7575
7572
  title: "AI contractor",
7576
7573
  variant: "desktop"
7577
- }), /* @__PURE__ */ t(Gi, {
7574
+ }), /* @__PURE__ */ t(Wi, {
7578
7575
  drawerOpen: !0,
7579
- jobs: Ca,
7576
+ jobs: Sa,
7580
7577
  label: "Small mobile contractor jobs",
7581
7578
  selectedJobId: "blocked-fence",
7582
7579
  title: "Contractor",
@@ -7584,10 +7581,10 @@ function wa() {
7584
7581
  })]
7585
7582
  });
7586
7583
  }
7587
- function Ta() {
7588
- return /* @__PURE__ */ t(Yr, {
7584
+ function wa() {
7585
+ return /* @__PURE__ */ t(Jr, {
7589
7586
  title: "OwnMySpace island editor preview",
7590
- hud: /* @__PURE__ */ t(Zr, {
7587
+ hud: /* @__PURE__ */ t(Xr, {
7591
7588
  label: "Island facts",
7592
7589
  facts: [
7593
7590
  {
@@ -7611,11 +7608,11 @@ function Ta() {
7611
7608
  }
7612
7609
  ]
7613
7610
  }),
7614
- movementPad: /* @__PURE__ */ t(ni, {
7611
+ movementPad: /* @__PURE__ */ t(ti, {
7615
7612
  helpText: "WASD or arrows",
7616
7613
  label: "Move avatar"
7617
7614
  }),
7618
- assetLibrary: /* @__PURE__ */ t(si, {
7615
+ assetLibrary: /* @__PURE__ */ t(oi, {
7619
7616
  label: "Placeable assets",
7620
7617
  title: "Assets",
7621
7618
  subtitle: "Starter, generated, and imported assets stay visibly distinct but share one placement path.",
@@ -7662,7 +7659,7 @@ function Ta() {
7662
7659
  }
7663
7660
  ]
7664
7661
  }),
7665
- bottomBar: /* @__PURE__ */ t(ci, {
7662
+ bottomBar: /* @__PURE__ */ t(si, {
7666
7663
  title: "Placement",
7667
7664
  selectedTitle: "Manual chair",
7668
7665
  placedObjects: 3,
@@ -7698,7 +7695,7 @@ function Ta() {
7698
7695
  })
7699
7696
  });
7700
7697
  }
7701
- var Ea = [{
7698
+ var Ta = [{
7702
7699
  id: "starter",
7703
7700
  label: "Starter pieces",
7704
7701
  source: "starter",
@@ -7729,7 +7726,7 @@ var Ea = [{
7729
7726
  }
7730
7727
  ]
7731
7728
  }];
7732
- function Da() {
7729
+ function Ea() {
7733
7730
  return /* @__PURE__ */ t("div", {
7734
7731
  className: "game-ui-asset-compression-repro",
7735
7732
  "aria-label": "Asset card compression repro",
@@ -7753,9 +7750,9 @@ function Da() {
7753
7750
  className: "game-ui-asset-compression-repro-surface",
7754
7751
  "data-repro-surface": e.id,
7755
7752
  style: { "--repro-width": e.width },
7756
- children: [/* @__PURE__ */ t(Q, { children: e.label }), /* @__PURE__ */ t(si, {
7753
+ children: [/* @__PURE__ */ t(Q, { children: e.label }), /* @__PURE__ */ t(oi, {
7757
7754
  density: "dense",
7758
- groups: Ea,
7755
+ groups: Ta,
7759
7756
  label: `${e.label} assets`,
7760
7757
  selectedAssetId: "asset-repro-chair",
7761
7758
  title: "Build"
@@ -7763,13 +7760,13 @@ function Da() {
7763
7760
  }, e.id))
7764
7761
  });
7765
7762
  }
7766
- function Oa() {
7767
- let { firstSession: e } = oa();
7763
+ function Da() {
7764
+ let { firstSession: e } = aa();
7768
7765
  return /* @__PURE__ */ n("div", {
7769
7766
  className: "game-ui-first-session-preview",
7770
7767
  children: [/* @__PURE__ */ t("div", {
7771
7768
  className: "game-ui-first-session-world",
7772
- children: /* @__PURE__ */ t(zr, {
7769
+ children: /* @__PURE__ */ t(Rr, {
7773
7770
  authenticated: !0,
7774
7771
  batteryCount: 5,
7775
7772
  dailyStreak: 3,
@@ -7803,7 +7800,7 @@ function Oa() {
7803
7800
  })
7804
7801
  }), /* @__PURE__ */ t("div", {
7805
7802
  className: "game-ui-first-session-modal-slot",
7806
- children: /* @__PURE__ */ t(Br, {
7803
+ children: /* @__PURE__ */ t(zr, {
7807
7804
  open: !0,
7808
7805
  onDismiss: () => void 0,
7809
7806
  labels: {
@@ -7831,46 +7828,46 @@ function Oa() {
7831
7828
  })]
7832
7829
  });
7833
7830
  }
7834
- function ka() {
7835
- let { responsive: e } = oa();
7831
+ function Oa() {
7832
+ let { responsive: e } = aa();
7836
7833
  return /* @__PURE__ */ n("div", {
7837
7834
  className: "game-ui-proof-frames",
7838
7835
  children: [/* @__PURE__ */ n("article", {
7839
7836
  className: "game-ui-proof-frame is-desktop",
7840
- children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t(Q, { children: e.desktop }), /* @__PURE__ */ t("strong", { children: "1440×900" })] }), /* @__PURE__ */ t(fa, {})]
7837
+ children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t(Q, { children: e.desktop }), /* @__PURE__ */ t("strong", { children: "1440×900" })] }), /* @__PURE__ */ t(da, {})]
7841
7838
  }), /* @__PURE__ */ n("article", {
7842
7839
  className: "game-ui-proof-frame is-mobile-landscape",
7843
- children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t(Q, { children: e.mobileLandscape }), /* @__PURE__ */ t("strong", { children: "844×390" })] }), /* @__PURE__ */ t(fa, {})]
7840
+ children: [/* @__PURE__ */ n("header", { children: [/* @__PURE__ */ t(Q, { children: e.mobileLandscape }), /* @__PURE__ */ t("strong", { children: "844×390" })] }), /* @__PURE__ */ t(da, {})]
7844
7841
  })]
7845
7842
  });
7846
7843
  }
7847
- function Aa() {
7848
- let { forms: e } = oa();
7844
+ function ka() {
7845
+ let { forms: e } = aa();
7849
7846
  return /* @__PURE__ */ n("div", {
7850
7847
  className: "game-ui-preview-two-up",
7851
7848
  children: [/* @__PURE__ */ n(X, {
7852
7849
  title: e.formsTitle,
7853
7850
  tone: "strong",
7854
7851
  children: [
7855
- /* @__PURE__ */ t(Ur, {
7852
+ /* @__PURE__ */ t(Hr, {
7856
7853
  hint: e.roomCodeHint,
7857
7854
  label: e.roomCodeLabel,
7858
- children: /* @__PURE__ */ t(Vr, { placeholder: e.roomCodePlaceholder })
7855
+ children: /* @__PURE__ */ t(Br, { placeholder: e.roomCodePlaceholder })
7859
7856
  }),
7860
- /* @__PURE__ */ t(Ur, {
7857
+ /* @__PURE__ */ t(Hr, {
7861
7858
  label: e.nameLabel,
7862
7859
  required: !0,
7863
- children: /* @__PURE__ */ t(Vr, { placeholder: e.namePlaceholder })
7860
+ children: /* @__PURE__ */ t(Br, { placeholder: e.namePlaceholder })
7864
7861
  }),
7865
- /* @__PURE__ */ t(Ur, {
7862
+ /* @__PURE__ */ t(Hr, {
7866
7863
  error: e.readError,
7867
7864
  label: e.readLabel,
7868
- children: /* @__PURE__ */ t(Hr, {
7865
+ children: /* @__PURE__ */ t(Vr, {
7869
7866
  invalid: !0,
7870
7867
  placeholder: e.readPlaceholder
7871
7868
  })
7872
7869
  }),
7873
- /* @__PURE__ */ t(Wr, {
7870
+ /* @__PURE__ */ t(Ur, {
7874
7871
  defaultChecked: !0,
7875
7872
  label: e.rememberLabel
7876
7873
  })
@@ -7882,38 +7879,38 @@ function Aa() {
7882
7879
  /* @__PURE__ */ n("div", {
7883
7880
  className: "game-ui-component-row",
7884
7881
  children: [
7885
- /* @__PURE__ */ t(Kr, {
7882
+ /* @__PURE__ */ t(Gr, {
7886
7883
  name: "Mika Ono",
7887
7884
  status: "online"
7888
7885
  }),
7889
- /* @__PURE__ */ t(Kr, {
7886
+ /* @__PURE__ */ t(Gr, {
7890
7887
  name: "River",
7891
7888
  size: "lg",
7892
7889
  status: "busy"
7893
7890
  }),
7894
- /* @__PURE__ */ t(Kr, {
7891
+ /* @__PURE__ */ t(Gr, {
7895
7892
  name: "Noa",
7896
7893
  status: "away"
7897
7894
  }),
7898
- /* @__PURE__ */ t(Kr, {
7895
+ /* @__PURE__ */ t(Gr, {
7899
7896
  name: e.guestName,
7900
7897
  size: "sm"
7901
7898
  })
7902
7899
  ]
7903
7900
  }),
7904
- /* @__PURE__ */ t(qr, {
7901
+ /* @__PURE__ */ t(Kr, {
7905
7902
  label: e.revealLabel,
7906
7903
  showValue: !0,
7907
7904
  value: 64
7908
7905
  }),
7909
- /* @__PURE__ */ t(qr, {
7906
+ /* @__PURE__ */ t(Kr, {
7910
7907
  label: e.batteryLabel,
7911
7908
  max: 20,
7912
7909
  showValue: !0,
7913
7910
  tone: "success",
7914
7911
  value: 14
7915
7912
  }),
7916
- /* @__PURE__ */ t(Jr, {
7913
+ /* @__PURE__ */ t(qr, {
7917
7914
  action: /* @__PURE__ */ t(w, {
7918
7915
  variant: "primary",
7919
7916
  children: e.emptyCta
@@ -7926,8 +7923,8 @@ function Aa() {
7926
7923
  })]
7927
7924
  });
7928
7925
  }
7929
- var ja = lr.filter((e) => pr(e).includes("game")), Ma = lr.filter((e) => pr(e).includes("line"));
7930
- function Na({ names: e, style: r }) {
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 }) {
7931
7928
  return /* @__PURE__ */ t("div", {
7932
7929
  className: "game-ui-icon-grid",
7933
7930
  children: e.map((e) => /* @__PURE__ */ n("figure", {
@@ -7940,10 +7937,10 @@ function Na({ names: e, style: r }) {
7940
7937
  }, `${r}-${e}`))
7941
7938
  });
7942
7939
  }
7943
- function Pa() {
7940
+ function Na() {
7944
7941
  return /* @__PURE__ */ t("div", {
7945
7942
  className: "game-ui-icon-grid",
7946
- children: hr.map((e) => /* @__PURE__ */ n("figure", {
7943
+ children: mr.map((e) => /* @__PURE__ */ n("figure", {
7947
7944
  className: "game-ui-icon-cell",
7948
7945
  children: [/* @__PURE__ */ t("span", {
7949
7946
  className: "game-ui-asset-icon",
@@ -7952,14 +7949,14 @@ function Pa() {
7952
7949
  "aria-hidden": !0,
7953
7950
  children: /* @__PURE__ */ t("img", {
7954
7951
  alt: "",
7955
- src: mr[e]
7952
+ src: pr[e]
7956
7953
  })
7957
7954
  }), /* @__PURE__ */ t("figcaption", { children: e })]
7958
7955
  }, `sprite-${e}`))
7959
7956
  });
7960
7957
  }
7961
- function Fa() {
7962
- let { gallery: e } = oa();
7958
+ function Pa() {
7959
+ let { gallery: e } = aa();
7963
7960
  return /* @__PURE__ */ n("div", {
7964
7961
  className: "game-ui-icon-gallery",
7965
7962
  children: [
@@ -7974,8 +7971,8 @@ function Fa() {
7974
7971
  className: "game-ui-small-copy",
7975
7972
  children: e.gameHint
7976
7973
  })]
7977
- }), /* @__PURE__ */ t(Na, {
7978
- names: ja,
7974
+ }), /* @__PURE__ */ t(Ma, {
7975
+ names: Aa,
7979
7976
  style: "game"
7980
7977
  })]
7981
7978
  }),
@@ -7987,8 +7984,8 @@ function Fa() {
7987
7984
  className: "game-ui-small-copy",
7988
7985
  children: e.lineHint
7989
7986
  })]
7990
- }), /* @__PURE__ */ t(Na, {
7991
- names: Ma,
7987
+ }), /* @__PURE__ */ t(Ma, {
7988
+ names: ja,
7992
7989
  style: "line"
7993
7990
  })]
7994
7991
  }),
@@ -8003,16 +8000,16 @@ function Fa() {
8003
8000
  className: "game-ui-small-copy",
8004
8001
  children: e.spriteHint
8005
8002
  })]
8006
- }), /* @__PURE__ */ t(Pa, {})]
8003
+ }), /* @__PURE__ */ t(Na, {})]
8007
8004
  })
8008
8005
  ]
8009
8006
  });
8010
8007
  }
8011
- function Ia({ title: e, body: r }) {
8012
- let [i, a] = m("en"), o = ia[i], s = e && i === "en" ? e : o.heroTitle, c = r && i === "en" ? r : o.heroBody;
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;
8013
8010
  return l(() => (document.documentElement.dataset.gameUiPreview = "clay", () => {
8014
8011
  delete document.documentElement.dataset.gameUiPreview;
8015
- }), []), /* @__PURE__ */ t(aa.Provider, {
8012
+ }), []), /* @__PURE__ */ t(ia.Provider, {
8016
8013
  value: o,
8017
8014
  children: /* @__PURE__ */ n("main", {
8018
8015
  "aria-label": "Swimmer UI Kit clay preview",
@@ -8025,7 +8022,7 @@ function Ia({ title: e, body: r }) {
8025
8022
  tone: "ai",
8026
8023
  children: "@pieai/swimmer-ui-kit"
8027
8024
  }),
8028
- /* @__PURE__ */ t(Fr, {
8025
+ /* @__PURE__ */ t(Pr, {
8029
8026
  currentLabel: o.triggerLabel,
8030
8027
  label: o.langMenuLabel,
8031
8028
  onSelect: (e) => a(e),
@@ -8052,10 +8049,10 @@ function Ia({ title: e, body: r }) {
8052
8049
  id: "game-ui-preview-token-title",
8053
8050
  children: o.sections.tokens
8054
8051
  }),
8055
- /* @__PURE__ */ t(la, {}),
8052
+ /* @__PURE__ */ t(ca, {}),
8056
8053
  /* @__PURE__ */ t("div", {
8057
8054
  className: "game-ui-token-ledger",
8058
- children: sa.map((e) => /* @__PURE__ */ t(ca, {
8055
+ children: oa.map((e) => /* @__PURE__ */ t(sa, {
8059
8056
  id: e.id,
8060
8057
  label: o.tokenGroups[e.id] ?? e.id,
8061
8058
  tokens: e.tokens
@@ -8075,7 +8072,7 @@ function Ia({ title: e, body: r }) {
8075
8072
  className: "game-ui-small-copy",
8076
8073
  children: o.iconsIntro
8077
8074
  }),
8078
- /* @__PURE__ */ t(Fa, {})
8075
+ /* @__PURE__ */ t(Pa, {})
8079
8076
  ]
8080
8077
  }),
8081
8078
  /* @__PURE__ */ n("section", {
@@ -8084,7 +8081,7 @@ function Ia({ title: e, body: r }) {
8084
8081
  children: [/* @__PURE__ */ t("h2", {
8085
8082
  id: "game-ui-preview-type-title",
8086
8083
  children: o.sections.typography
8087
- }), /* @__PURE__ */ t(ua, {})]
8084
+ }), /* @__PURE__ */ t(la, {})]
8088
8085
  }),
8089
8086
  /* @__PURE__ */ n("section", {
8090
8087
  "aria-labelledby": "game-ui-preview-components-title",
@@ -8094,11 +8091,11 @@ function Ia({ title: e, body: r }) {
8094
8091
  id: "game-ui-preview-components-title",
8095
8092
  children: o.sections.components
8096
8093
  }),
8094
+ /* @__PURE__ */ t(ua, {}),
8097
8095
  /* @__PURE__ */ t(da, {}),
8098
- /* @__PURE__ */ t(fa, {}),
8096
+ /* @__PURE__ */ t(ma, {}),
8099
8097
  /* @__PURE__ */ t(ha, {}),
8100
- /* @__PURE__ */ t(ga, {}),
8101
- /* @__PURE__ */ t(Yn, {
8098
+ /* @__PURE__ */ t(Jn, {
8102
8099
  entries: o.history,
8103
8100
  label: o.historyLabel
8104
8101
  })
@@ -8110,7 +8107,7 @@ function Ia({ title: e, body: r }) {
8110
8107
  children: [/* @__PURE__ */ t("h2", {
8111
8108
  id: "game-ui-preview-forms-title",
8112
8109
  children: o.sections.forms
8113
- }), /* @__PURE__ */ t(Aa, {})]
8110
+ }), /* @__PURE__ */ t(ka, {})]
8114
8111
  }),
8115
8112
  /* @__PURE__ */ n("section", {
8116
8113
  "aria-labelledby": "game-ui-preview-overlay-glass-title",
@@ -8124,7 +8121,7 @@ function Ia({ title: e, body: r }) {
8124
8121
  className: "game-ui-small-copy",
8125
8122
  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."
8126
8123
  }),
8127
- /* @__PURE__ */ t(pa, {})
8124
+ /* @__PURE__ */ t(fa, {})
8128
8125
  ]
8129
8126
  }),
8130
8127
  /* @__PURE__ */ n("section", {
@@ -8139,7 +8136,7 @@ function Ia({ title: e, body: r }) {
8139
8136
  className: "game-ui-small-copy",
8140
8137
  children: o.liquidMetal.body
8141
8138
  }),
8142
- /* @__PURE__ */ t(ma, {})
8139
+ /* @__PURE__ */ t(pa, {})
8143
8140
  ]
8144
8141
  }),
8145
8142
  /* @__PURE__ */ n("section", {
@@ -8148,7 +8145,7 @@ function Ia({ title: e, body: r }) {
8148
8145
  children: [/* @__PURE__ */ t("h2", {
8149
8146
  id: "game-ui-preview-ownmyspace-title",
8150
8147
  children: "OwnMySpace game surface pack"
8151
- }), /* @__PURE__ */ t(Ta, {})]
8148
+ }), /* @__PURE__ */ t(wa, {})]
8152
8149
  }),
8153
8150
  /* @__PURE__ */ n("section", {
8154
8151
  "aria-labelledby": "game-ui-preview-terrain-build-title",
@@ -8162,7 +8159,7 @@ function Ia({ title: e, body: r }) {
8162
8159
  className: "game-ui-small-copy",
8163
8160
  children: "Official terrain controls cover mode, brush, material, undo/redo, build library, status, progress, and compact mobile drawer surfaces."
8164
8161
  }),
8165
- /* @__PURE__ */ t(xa, {})
8162
+ /* @__PURE__ */ t(ba, {})
8166
8163
  ]
8167
8164
  }),
8168
8165
  /* @__PURE__ */ n("section", {
@@ -8177,7 +8174,7 @@ function Ia({ title: e, body: r }) {
8177
8174
  className: "game-ui-small-copy",
8178
8175
  children: "Official construction surfaces cover job queue states, before/after review, robot crew status, validation warnings, approval actions, and local-only provider badges."
8179
8176
  }),
8180
- /* @__PURE__ */ t(wa, {})
8177
+ /* @__PURE__ */ t(Ca, {})
8181
8178
  ]
8182
8179
  }),
8183
8180
  /* @__PURE__ */ n("section", {
@@ -8192,7 +8189,7 @@ function Ia({ title: e, body: r }) {
8192
8189
  className: "game-ui-small-copy",
8193
8190
  children: "Official asset cards must stay visually complete when a game shell uses dense, narrow, or rail-style inventory slots."
8194
8191
  }),
8195
- /* @__PURE__ */ t(Da, {})
8192
+ /* @__PURE__ */ t(Ea, {})
8196
8193
  ]
8197
8194
  }),
8198
8195
  /* @__PURE__ */ n("section", {
@@ -8201,7 +8198,7 @@ function Ia({ title: e, body: r }) {
8201
8198
  children: [/* @__PURE__ */ t("h2", {
8202
8199
  id: "game-ui-preview-first-session-title",
8203
8200
  children: o.sections.firstSession
8204
- }), /* @__PURE__ */ t(Oa, {})]
8201
+ }), /* @__PURE__ */ t(Da, {})]
8205
8202
  }),
8206
8203
  /* @__PURE__ */ n("section", {
8207
8204
  "aria-labelledby": "game-ui-preview-orientation-title",
@@ -8209,7 +8206,7 @@ function Ia({ title: e, body: r }) {
8209
8206
  children: [/* @__PURE__ */ t("h2", {
8210
8207
  id: "game-ui-preview-orientation-title",
8211
8208
  children: o.sections.orientation
8212
- }), /* @__PURE__ */ t(Pr, {
8209
+ }), /* @__PURE__ */ t(Nr, {
8213
8210
  badgeLabel: o.orientation.badge,
8214
8211
  body: o.orientation.body,
8215
8212
  cta: o.orientation.cta,
@@ -8224,11 +8221,11 @@ function Ia({ title: e, body: r }) {
8224
8221
  children: [/* @__PURE__ */ t("h2", {
8225
8222
  id: "game-ui-preview-responsive-title",
8226
8223
  children: o.sections.responsive
8227
- }), /* @__PURE__ */ t(ka, {})]
8224
+ }), /* @__PURE__ */ t(Oa, {})]
8228
8225
  })
8229
8226
  ]
8230
8227
  })
8231
8228
  });
8232
8229
  }
8233
8230
  //#endregion
8234
- export { gr as CLAY_ASSETS, sr as CLAY_ASSET_BASE_PATH, xe as CLAY_ASSET_SIZE_TOKENS, I as CLAY_COLOR_TOKENS, U as CLAY_ELEVATION_TOKENS, mr as CLAY_GAME_SPRITES, hr as CLAY_GAME_SPRITE_NAMES, lr as CLAY_ICON_NAMES, cr as CLAY_ICON_VARIANTS, ye as CLAY_LAYER_TOKENS, R as CLAY_LIQUID_GOOEY_TOKENS, R as GAME_UI_LIQUID_GOOEY_TOKENS, L as CLAY_LIQUID_METAL_TOKENS, L as GAME_UI_LIQUID_METAL_TOKENS, W as CLAY_MOTION_TOKENS, z as CLAY_OVERLAY_GLASS_TOKENS, z 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, zr as FirstSessionHud, Br as FirstSessionOnboarding, ta as GAME_UI_OVERLAY, $i as GAME_UI_PREVIEW_MESSAGES, na as GAME_UI_TARGETS, ra as GAME_UI_THEME_CONTRACT, ea as GAME_UI_TOKENS, $r as GameActionGrid, oi as GameAssetCard, $ as GameAssetIcon, si as GameAssetLibrary, Kr as GameAvatar, Q as GameBadge, Hi as GameBeforeAfterToggle, vi as GameBrushControls, xi as GameBuildLibrary, w as GameButton, qn as GameCallout, jr as GameCardFan, Wr as GameCheckbox, Ji as GameCollapsiblePanel, Si as GameCompactGameDrawer, Wi as GameCompactJobDrawer, Bi as GameConstructionApprovalBar, Ui as GameConstructionJobCard, zi as GameConstructionProgress, Gi as GameContractorPanel, Jn as GameDialog, Jr as GameEmptyState, Zr as GameFactList, Ur as GameField, Yn as GameHistoryPanel, Ar as GameHud, Xn as GameHudActions, Zn as GameIconButton, Vr as GameInput, Fr as GameLanguageMenu, Ir as GameLoadingState, yi as GameMaterialSwatches, Qi as GameModal, ni as GameMovementPad, li as GameObjectToolbar, Pr as GameOrientationGate, X as GamePanel, ci as GamePlacementToolbar, qr as GameProgress, or as GamePrompt, ir as GameRadialMenu, Vi as GameRobotCrewStatus, Xr as GameSceneHudLayout, tr as GameSegmentedControl, Yr as GameShell, nr as GameSlider, Mr as GameStageTile, Qr as GameStatList, $n as GameTabs, Ti as GameTerrainBuildToolbox, gi as GameTerrainModeControl, _i as GameTerrainToolStrip, Hr as GameTextArea, ar as GameToast, rr as GameToggle, Qn as GameTooltip, Ia as GameUiPreview, bi as GameUndoRedoActions, Zi as GameWindowPanel, Qt as IMAGE_MELT_DEFAULTS, ze as LIQUID_GOOEY_WAVINESS_MAX_FRACTION, Kn as LiquidGroup, Gn as LiquidItem, _e as LiquidMetalButton, Dr as acknowledgeClayPlaceholders, wr as getClayAssetBasePath, Sr as getClayAssetMode, Lr as getClayCatalogPaths, Or as getClayIconPath, pr as getClayIconStyles, kr as getClaySourceAssetPath, Oe as getLiquidGooeyBudget, O as getLiquidMetalContextBudget, C as playGameInteractionSound, S as playGameInteractionSoundForContext, an as resolveDissolveOptions, Cr as setClayAssetBasePath, xr as setClayAssetMode, ke as setLiquidGooeyBudget, ee as setLiquidMetalContextBudget };
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 };