@keenmate/web-multiselect 2.0.0-rc05 → 2.0.0-rc07

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,10 @@
1
- var lo = Object.defineProperty;
2
- var ts = (s) => {
1
+ var co = Object.defineProperty;
2
+ var ss = (s) => {
3
3
  throw TypeError(s);
4
4
  };
5
- var co = (s, e, t) => e in s ? lo(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
6
- var m = (s, e, t) => co(s, typeof e != "symbol" ? e + "" : e, t), Tt = (s, e, t) => e.has(s) || ts("Cannot " + t);
7
- var p = (s, e, t) => (Tt(s, e, "read from private field"), t ? t.call(s) : e.get(s)), L = (s, e, t) => e.has(s) ? ts("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(s) : e.set(s, t), $ = (s, e, t, o) => (Tt(s, e, "write to private field"), o ? o.call(s, t) : e.set(s, t), t), w = (s, e, t) => (Tt(s, e, "access private method"), t);
5
+ var ho = (s, e, t) => e in s ? co(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
6
+ var m = (s, e, t) => ho(s, typeof e != "symbol" ? e + "" : e, t), Tt = (s, e, t) => e.has(s) || ss("Cannot " + t);
7
+ var p = (s, e, t) => (Tt(s, e, "read from private field"), t ? t.call(s) : e.get(s)), E = (s, e, t) => e.has(s) ? ss("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(s) : e.set(s, t), N = (s, e, t, o) => (Tt(s, e, "write to private field"), o ? o.call(s, t) : e.set(s, t), t), x = (s, e, t) => (Tt(s, e, "access private method"), t);
8
8
  function F(s, e = {}) {
9
9
  const t = new Set(s), o = e.shouldNullOnInvalid ? null : e.default ?? null;
10
10
  return {
@@ -20,7 +20,7 @@ function F(s, e = {}) {
20
20
  }
21
21
  };
22
22
  }
23
- function q(s = {}) {
23
+ function X(s = {}) {
24
24
  const e = (o) => (s.min == null || o >= s.min) && (s.max == null || o <= s.max), t = s.default;
25
25
  return {
26
26
  fromAttribute(o) {
@@ -37,7 +37,7 @@ function q(s = {}) {
37
37
  }
38
38
  };
39
39
  }
40
- function E(s = {}) {
40
+ function A(s = {}) {
41
41
  const e = s.isNullable === !0, t = s.default ?? (e ? null : ""), o = (i) => s.shouldTrim ? i.trim() : i;
42
42
  return {
43
43
  fromAttribute(i) {
@@ -54,11 +54,11 @@ function E(s = {}) {
54
54
  }
55
55
  };
56
56
  }
57
- const ho = /* @__PURE__ */ new Set(["", "true", "1", "yes", "on"]), uo = /* @__PURE__ */ new Set(["false", "0", "no", "off"]);
58
- function H(s = "presence") {
57
+ const uo = /* @__PURE__ */ new Set(["", "true", "1", "yes", "on"]), mo = /* @__PURE__ */ new Set(["false", "0", "no", "off"]);
58
+ function B(s = "presence") {
59
59
  const e = (t) => {
60
60
  const o = t.trim().toLowerCase();
61
- return ho.has(o) ? !0 : uo.has(o) ? !1 : null;
61
+ return uo.has(o) ? !0 : mo.has(o) ? !1 : null;
62
62
  };
63
63
  return {
64
64
  fromAttribute(t) {
@@ -81,7 +81,7 @@ function H(s = "presence") {
81
81
  }
82
82
  };
83
83
  }
84
- function mo(s = {}) {
84
+ function po(s = {}) {
85
85
  const e = s.default;
86
86
  return {
87
87
  fromAttribute(t) {
@@ -101,7 +101,7 @@ function mo(s = {}) {
101
101
  }
102
102
  };
103
103
  }
104
- function po(s = {}) {
104
+ function fo(s = {}) {
105
105
  const e = s.default ?? [], t = (o) => Array.isArray(o) && (!s.validateItem || o.every(s.validateItem));
106
106
  return {
107
107
  fromAttribute(o) {
@@ -121,22 +121,22 @@ function po(s = {}) {
121
121
  }
122
122
  };
123
123
  }
124
- function fo() {
124
+ function go() {
125
125
  return {
126
126
  validate(s) {
127
127
  return s == null || typeof s == "function";
128
128
  }
129
129
  };
130
130
  }
131
- function go(s, e, t) {
131
+ function bo(s, e, t) {
132
132
  const o = s.converter, i = o != null && o.fromAttribute ? o.fromAttribute(e, t, s.attribute ?? s.configKey) : e ?? s.default;
133
133
  return { configKey: s.configKey, field: s.field, value: i, on: s.on ?? "update" };
134
134
  }
135
- function bo(s, e) {
135
+ function vo(s, e) {
136
136
  const t = s.converter;
137
137
  return t != null && t.validate && !t.validate(e) ? null : { configKey: s.configKey, field: s.field, value: e, on: s.on ?? "update" };
138
138
  }
139
- function vo() {
139
+ function yo() {
140
140
  const s = /* @__PURE__ */ new Set();
141
141
  let e = !1;
142
142
  const t = () => {
@@ -164,7 +164,7 @@ function vo() {
164
164
  }
165
165
  };
166
166
  }
167
- const Ps = {
167
+ const Ms = {
168
168
  pointer: "fine",
169
169
  hasCoarsePointer: !1,
170
170
  canHover: !0,
@@ -176,27 +176,27 @@ const Ps = {
176
176
  os: "unknown",
177
177
  isApple: !1,
178
178
  isAndroid: !1
179
- }, yo = { mobile: 640, tablet: 1024, desktop: 1 / 0 };
180
- let Ot = wo(yo);
179
+ }, wo = { mobile: 640, tablet: 1024, desktop: 1 / 0 };
180
+ let It = xo(wo);
181
181
  const Fe = /* @__PURE__ */ new Set();
182
182
  let Ce = null, ht = [], lt = !1;
183
- function wo(s) {
183
+ function xo(s) {
184
184
  return Object.entries(s).sort((e, t) => e[1] - t[1]);
185
185
  }
186
- function xo(s) {
187
- for (const [t, o] of Ot)
186
+ function _o(s) {
187
+ for (const [t, o] of It)
188
188
  if (s <= o)
189
189
  return t;
190
- const e = Ot[Ot.length - 1];
190
+ const e = It[It.length - 1];
191
191
  return e ? e[0] : "desktop";
192
192
  }
193
- function Gt() {
193
+ function Xt() {
194
194
  return typeof window < "u" && typeof window.matchMedia == "function";
195
195
  }
196
- function ss() {
196
+ function os() {
197
197
  return typeof navigator < "u" && (navigator.maxTouchPoints ?? 0) > 1;
198
198
  }
199
- function _o() {
199
+ function ko() {
200
200
  var o;
201
201
  if (typeof navigator > "u")
202
202
  return "unknown";
@@ -207,26 +207,26 @@ function _o() {
207
207
  if (e.includes("ios"))
208
208
  return "ios";
209
209
  if (e.includes("mac"))
210
- return ss() ? "ios" : "macos";
210
+ return os() ? "ios" : "macos";
211
211
  if (e.includes("windows"))
212
212
  return "windows";
213
213
  if (e.includes("linux"))
214
214
  return "linux";
215
215
  }
216
216
  const t = navigator.userAgent ?? "";
217
- return /android/i.test(t) ? "android" : /iphone|ipod|ipad/i.test(t) ? "ios" : /macintosh|mac os x/i.test(t) ? ss() ? "ios" : "macos" : /windows/i.test(t) ? "windows" : /linux/i.test(t) ? "linux" : "unknown";
217
+ return /android/i.test(t) ? "android" : /iphone|ipod|ipad/i.test(t) ? "ios" : /macintosh|mac os x/i.test(t) ? os() ? "ios" : "macos" : /windows/i.test(t) ? "windows" : /linux/i.test(t) ? "linux" : "unknown";
218
218
  }
219
- let ko;
220
- function Co() {
221
- return ko ?? (ko = _o());
219
+ let Co;
220
+ function So() {
221
+ return Co ?? (Co = ko());
222
222
  }
223
223
  function Re(s) {
224
- return Gt() && window.matchMedia(s).matches;
224
+ return Xt() && window.matchMedia(s).matches;
225
225
  }
226
226
  function qt() {
227
- if (!Gt())
228
- return { ...Ps };
229
- const s = Re("(any-pointer: coarse)"), e = Re("(pointer: coarse)"), t = Re("(pointer: fine)"), o = Re("(hover: hover)"), i = e ? "coarse" : t ? "fine" : "none", r = window.innerWidth, n = window.innerHeight, a = Co();
227
+ if (!Xt())
228
+ return { ...Ms };
229
+ const s = Re("(any-pointer: coarse)"), e = Re("(pointer: coarse)"), t = Re("(pointer: fine)"), o = Re("(hover: hover)"), i = e ? "coarse" : t ? "fine" : "none", r = window.innerWidth, n = window.innerHeight, a = So();
230
230
  return {
231
231
  pointer: i,
232
232
  hasCoarsePointer: s,
@@ -235,42 +235,42 @@ function qt() {
235
235
  orientation: Re("(orientation: portrait)") ? "portrait" : "landscape",
236
236
  viewportWidth: r,
237
237
  viewportHeight: n,
238
- breakpoint: xo(r),
238
+ breakpoint: _o(r),
239
239
  os: a,
240
240
  isApple: a === "ios" || a === "macos",
241
241
  isAndroid: a === "android"
242
242
  };
243
243
  }
244
- function So(s, e) {
244
+ function To(s, e) {
245
245
  return s.pointer === e.pointer && s.hasCoarsePointer === e.hasCoarsePointer && s.canHover === e.canHover && s.isTouchPrimary === e.isTouchPrimary && s.orientation === e.orientation && s.viewportWidth === e.viewportWidth && s.viewportHeight === e.viewportHeight && s.breakpoint === e.breakpoint;
246
246
  }
247
- function Et() {
247
+ function At() {
248
248
  const s = qt();
249
- if (!(Ce && So(Ce, s))) {
249
+ if (!(Ce && To(Ce, s))) {
250
250
  Ce = s;
251
251
  for (const e of [...Fe])
252
252
  e(s);
253
253
  }
254
254
  }
255
- const ut = () => Et(), Ms = () => {
255
+ const ut = () => At(), Ls = () => {
256
256
  if (typeof requestAnimationFrame == "function") {
257
257
  if (lt)
258
258
  return;
259
259
  lt = !0, requestAnimationFrame(() => {
260
- lt = !1, Et();
260
+ lt = !1, At();
261
261
  });
262
262
  } else
263
- Et();
263
+ At();
264
264
  };
265
- function To(s) {
265
+ function Io(s) {
266
266
  typeof s.addEventListener == "function" ? s.addEventListener("change", ut) : typeof s.addListener == "function" && s.addListener(ut);
267
267
  }
268
268
  function Oo(s) {
269
269
  typeof s.removeEventListener == "function" ? s.removeEventListener("change", ut) : typeof s.removeListener == "function" && s.removeListener(ut);
270
270
  }
271
- function Io() {
272
- if (!Gt()) {
273
- Ce = { ...Ps };
271
+ function Po() {
272
+ if (!Xt()) {
273
+ Ce = { ...Ms };
274
274
  return;
275
275
  }
276
276
  ht = [
@@ -281,49 +281,49 @@ function Io() {
281
281
  window.matchMedia("(orientation: portrait)")
282
282
  ];
283
283
  for (const s of ht)
284
- To(s);
285
- typeof window.addEventListener == "function" && window.addEventListener("resize", Ms), Ce = qt();
284
+ Io(s);
285
+ typeof window.addEventListener == "function" && window.addEventListener("resize", Ls), Ce = qt();
286
286
  }
287
- function Po() {
287
+ function Mo() {
288
288
  for (const s of ht)
289
289
  Oo(s);
290
- ht = [], typeof window < "u" && typeof window.removeEventListener == "function" && window.removeEventListener("resize", Ms), lt = !1, Ce = null;
290
+ ht = [], typeof window < "u" && typeof window.removeEventListener == "function" && window.removeEventListener("resize", Ls), lt = !1, Ce = null;
291
291
  }
292
- function At() {
292
+ function zt() {
293
293
  return Ce ?? qt();
294
294
  }
295
- function Mo(s, e = {}) {
295
+ function Lo(s, e = {}) {
296
296
  const t = Fe.size === 0;
297
- Fe.add(s), t && Io(), e.immediate !== !1 && s(At());
297
+ Fe.add(s), t && Po(), e.immediate !== !1 && s(zt());
298
298
  let o = !0;
299
299
  return () => {
300
- o && (o = !1, Fe.delete(s), Fe.size === 0 && Po());
300
+ o && (o = !1, Fe.delete(s), Fe.size === 0 && Mo());
301
301
  };
302
302
  }
303
- const Lo = 600;
304
- function Eo(s) {
305
- return s.isTouchPrimary ? Math.min(s.viewportWidth, s.viewportHeight) < Lo ? "mobile" : "tablet" : "desktop";
303
+ const Eo = 600;
304
+ function Ao(s) {
305
+ return s.isTouchPrimary ? Math.min(s.viewportWidth, s.viewportHeight) < Eo ? "mobile" : "tablet" : "desktop";
306
306
  }
307
307
  const mt = /* @__PURE__ */ new Map();
308
- function Ao(s, e) {
308
+ function zo(s, e) {
309
309
  let t = mt.get(s);
310
310
  t || mt.set(s, t = /* @__PURE__ */ new Set()), t.add(e);
311
311
  }
312
- function zo(s, e) {
312
+ function No(s, e) {
313
313
  var t;
314
314
  (t = mt.get(s)) == null || t.delete(e);
315
315
  }
316
- function $o(s) {
316
+ function Do(s) {
317
317
  return Array.from(mt.get(s) ?? []);
318
318
  }
319
- const Ls = /* @__PURE__ */ new Map();
320
- function Do(s, e) {
321
- Ls.set(s.toLowerCase(), e);
319
+ const Es = /* @__PURE__ */ new Map();
320
+ function $o(s, e) {
321
+ Es.set(s.toLowerCase(), e);
322
322
  }
323
323
  function Vo(s) {
324
- return Ls.get(s.toLowerCase());
324
+ return Es.get(s.toLowerCase());
325
325
  }
326
- function No(s, e, t, o = {}) {
326
+ function Ro(s, e, t, o = {}) {
327
327
  return s.dispatchEvent(new CustomEvent(e, {
328
328
  detail: t,
329
329
  bubbles: o.bubbles ?? !0,
@@ -331,44 +331,44 @@ function No(s, e, t, o = {}) {
331
331
  cancelable: o.cancelable ?? !1
332
332
  }));
333
333
  }
334
- function Ro(s) {
335
- return s.split(/[-_]/).filter(Boolean).map((e) => e[0].toUpperCase() + e.slice(1)).join("");
336
- }
337
334
  function Ho(s) {
338
- return `on${Ro(s)}`;
335
+ return s.split(/[-_]/).filter(Boolean).map((e) => e[0].toUpperCase() + e.slice(1)).join("");
339
336
  }
340
337
  function Bo(s) {
338
+ return `on${Ho(s)}`;
339
+ }
340
+ function Ko(s) {
341
341
  return s ? s.map((e) => {
342
- const t = typeof e == "string" ? { name: e } : e, o = t.property === !1 ? null : t.property ?? Ho(t.name);
342
+ const t = typeof e == "string" ? { name: e } : e, o = t.property === !1 ? null : t.property ?? Bo(t.name);
343
343
  return { name: t.name, property: o, bubbles: t.bubbles, composed: t.composed, cancelable: t.cancelable };
344
344
  }) : [];
345
345
  }
346
- const Ko = typeof HTMLElement < "u" ? HTMLElement : class {
347
- }, os = /* @__PURE__ */ new WeakSet();
348
- let Fo = 0;
349
- const Wo = { trace() {
346
+ const Fo = typeof HTMLElement < "u" ? HTMLElement : class {
347
+ }, is = /* @__PURE__ */ new WeakSet();
348
+ let Wo = 0;
349
+ const jo = { trace() {
350
350
  }, debug() {
351
351
  }, info() {
352
352
  }, warn() {
353
353
  }, error() {
354
- } }, jo = new Proxy({}, { get: () => Wo });
355
- var he, Je, ve, Qe, ye, Ze, yt, we, ue, xe, _e, Pe, Me, Le, Ee, wt, se, Ae, O, Es, As, zs, X, $s, Ds, $t, Dt, We, Vt, Vs;
356
- const qe = class qe extends Ko {
354
+ } }, Uo = new Proxy({}, { get: () => jo });
355
+ var he, Je, ve, Qe, ye, Ze, yt, we, ue, xe, _e, Pe, Me, Le, Ee, wt, se, Ae, T, As, zs, Ns, Y, Ds, $s, Dt, $t, We, Vt, Vs;
356
+ const Xe = class Xe extends Fo {
357
357
  constructor() {
358
358
  super();
359
- L(this, O);
360
- L(this, he, {});
361
- L(this, Je, /* @__PURE__ */ new Map());
362
- L(this, ve, /* @__PURE__ */ new Map());
363
- L(this, Qe, /* @__PURE__ */ new Map());
359
+ E(this, T);
360
+ E(this, he, {});
361
+ E(this, Je, /* @__PURE__ */ new Map());
362
+ E(this, ve, /* @__PURE__ */ new Map());
363
+ E(this, Qe, /* @__PURE__ */ new Map());
364
364
  /** Live handler currently bound via each managed `on<Name>` property, keyed by event name. */
365
- L(this, ye, /* @__PURE__ */ new Map());
366
- L(this, Ze, vo());
367
- L(this, yt, () => w(this, O, Vt).call(this));
368
- L(this, we, null);
369
- L(this, ue, !1);
370
- L(this, xe, []);
371
- L(this, _e, !1);
365
+ E(this, ye, /* @__PURE__ */ new Map());
366
+ E(this, Ze, yo());
367
+ E(this, yt, () => x(this, T, Vt).call(this));
368
+ E(this, we, null);
369
+ E(this, ue, !1);
370
+ E(this, xe, []);
371
+ E(this, _e, !1);
372
372
  /**
373
373
  * configKeys that carried a value assigned BEFORE the element was upgraded
374
374
  * (`el.foo = …` before its class was defined). The browser fires the initial
@@ -378,21 +378,21 @@ const qe = class qe extends Ko {
378
378
  * guarantee); post-connect attribute changes react normally. Cleared on first
379
379
  * connect.
380
380
  */
381
- L(this, Pe, null);
382
- L(this, Me, !1);
381
+ E(this, Pe, null);
382
+ E(this, Me, !1);
383
383
  /** Unsubscribe from the environment observable; set only while connected AND `environmentChanged` is overridden. */
384
- L(this, Le);
385
- L(this, Ee);
386
- L(this, wt);
387
- L(this, se);
388
- L(this, Ae);
389
- const t = this.constructor, o = t.inputs ?? [], i = Bo(t.events);
390
- w(this, O, zs).call(this, o, i);
384
+ E(this, Le);
385
+ E(this, Ee);
386
+ E(this, wt);
387
+ E(this, se);
388
+ E(this, Ae);
389
+ const t = this.constructor, o = t.inputs ?? [], i = Ko(t.events);
390
+ x(this, T, Ns).call(this, o, i);
391
391
  for (const r of o)
392
392
  p(this, Je).set(r.configKey, r), r.attribute && p(this, ve).set(r.attribute, r);
393
393
  for (const r of i)
394
394
  p(this, Qe).set(r.name, r);
395
- w(this, O, Es).call(this, o), w(this, O, $s).call(this, o), w(this, O, Ds).call(this, i);
395
+ x(this, T, As).call(this, o), x(this, T, Ds).call(this, o), x(this, T, $s).call(this, i);
396
396
  }
397
397
  static get observedAttributes() {
398
398
  const t = (this.inputs ?? []).filter((o) => o.attribute).map((o) => o.attribute);
@@ -412,31 +412,31 @@ const qe = class qe extends Ko {
412
412
  return;
413
413
  let n;
414
414
  try {
415
- n = go(r, i, this);
415
+ n = bo(r, i, this);
416
416
  } catch (l) {
417
- w(this, O, X).call(this, `converter for "${r.configKey}" threw parsing attribute ${t}="${i}"; using default`, l), n = w(this, O, As).call(this, r);
417
+ x(this, T, Y).call(this, `converter for "${r.configKey}" threw parsing attribute ${t}="${i}"; using default`, l), n = x(this, T, zs).call(this, r);
418
418
  }
419
- w(this, O, Dt).call(this, n);
419
+ x(this, T, $t).call(this, n);
420
420
  }
421
421
  connectedCallback() {
422
- Ao(this.localName, this), p(this, _e) || ($(this, _e, !0), $(this, Pe, null), $(this, ue, !0)), w(this, O, We).call(this), this.connect(), this.environmentChanged !== qe.prototype.environmentChanged && $(this, Le, Mo((t) => this.environmentChanged(t)));
422
+ zo(this.localName, this), p(this, _e) || (N(this, _e, !0), N(this, Pe, null), N(this, ue, !0)), x(this, T, We).call(this), this.connect(), this.environmentChanged !== Xe.prototype.environmentChanged && N(this, Le, Lo((t) => this.environmentChanged(t)));
423
423
  }
424
424
  disconnectedCallback() {
425
425
  var t;
426
- zo(this.localName, this), (t = p(this, Le)) == null || t.call(this), $(this, Le, void 0), this.disconnect();
426
+ No(this.localName, this), (t = p(this, Le)) == null || t.call(this), N(this, Le, void 0), this.disconnect();
427
427
  }
428
428
  // ── public batching API ─────────────────────────────────────────────────
429
429
  /** Apply many inputs (by `configKey` or attribute name) as ONE reinit/update. */
430
430
  setAttributes(t) {
431
431
  for (const [o, i] of Object.entries(t)) {
432
432
  const r = p(this, Je).get(o) ?? p(this, ve).get(o);
433
- r && w(this, O, $t).call(this, r, i);
433
+ r && x(this, T, Dt).call(this, r, i);
434
434
  }
435
- w(this, O, We).call(this);
435
+ x(this, T, We).call(this);
436
436
  }
437
437
  /** Run `fn` and coalesce every input change it makes into a single reinit/update. */
438
438
  batch(t) {
439
- t(), w(this, O, We).call(this);
439
+ t(), x(this, T, We).call(this);
440
440
  }
441
441
  /**
442
442
  * Apply any pending input writes **synchronously, now** — running the
@@ -452,7 +452,7 @@ const qe = class qe extends Ko {
452
452
  * `await whenSettled()` between the two.
453
453
  */
454
454
  flush() {
455
- w(this, O, We).call(this);
455
+ x(this, T, We).call(this);
456
456
  }
457
457
  /**
458
458
  * Resolves once the element is **settled** — i.e. every staged input change
@@ -492,9 +492,9 @@ const qe = class qe extends Ko {
492
492
  return p(this, Ae);
493
493
  const t = Vo(this.localName);
494
494
  if (!t)
495
- return jo;
496
- const o = p(this, wt) ?? $(this, wt, `${this.localName}#${this.id || ++Fo}`);
497
- return $(this, Ae, t.forInstance(o, () => p(this, se)));
495
+ return Uo;
496
+ const o = p(this, wt) ?? N(this, wt, `${this.localName}#${this.id || ++Wo}`);
497
+ return N(this, Ae, t.forInstance(o, () => p(this, se)));
498
498
  }
499
499
  /**
500
500
  * Turn on verbose logging for THIS element only (default `debug`), independent
@@ -502,11 +502,11 @@ const qe = class qe extends Ko {
502
502
  * picks one instance. Pairs with {@link disableLogging}.
503
503
  */
504
504
  enableLogging(t = "debug") {
505
- $(this, se, t);
505
+ N(this, se, t);
506
506
  }
507
507
  /** Clear this element's logging override (falls back to the type-level level). */
508
508
  disableLogging() {
509
- $(this, se, void 0);
509
+ N(this, se, void 0);
510
510
  }
511
511
  /** Whether this element has an active logging override (not unset/`silent`). */
512
512
  get isLoggingEnabled() {
@@ -596,7 +596,7 @@ const qe = class qe extends Ko {
596
596
  if (typeof this.attachInternals != "function")
597
597
  return null;
598
598
  try {
599
- return $(this, Ee, this.attachInternals());
599
+ return N(this, Ee, this.attachInternals());
600
600
  } catch {
601
601
  return null;
602
602
  }
@@ -627,7 +627,7 @@ const qe = class qe extends Ko {
627
627
  */
628
628
  emit(t, o, i) {
629
629
  const r = p(this, Qe).get(t);
630
- return No(this, t, o, {
630
+ return Ro(this, t, o, {
631
631
  bubbles: (i == null ? void 0 : i.bubbles) ?? (r == null ? void 0 : r.bubbles),
632
632
  composed: (i == null ? void 0 : i.composed) ?? (r == null ? void 0 : r.composed),
633
633
  cancelable: (i == null ? void 0 : i.cancelable) ?? (r == null ? void 0 : r.cancelable)
@@ -665,8 +665,8 @@ const qe = class qe extends Ko {
665
665
  }
666
666
  }
667
667
  };
668
- he = new WeakMap(), Je = new WeakMap(), ve = new WeakMap(), Qe = new WeakMap(), ye = new WeakMap(), Ze = new WeakMap(), yt = new WeakMap(), we = new WeakMap(), ue = new WeakMap(), xe = new WeakMap(), _e = new WeakMap(), Pe = new WeakMap(), Me = new WeakMap(), Le = new WeakMap(), Ee = new WeakMap(), wt = new WeakMap(), se = new WeakMap(), Ae = new WeakMap(), O = new WeakSet(), // ── internals ─────────────────────────────────────────────────────────────
669
- Es = function(t) {
668
+ he = new WeakMap(), Je = new WeakMap(), ve = new WeakMap(), Qe = new WeakMap(), ye = new WeakMap(), Ze = new WeakMap(), yt = new WeakMap(), we = new WeakMap(), ue = new WeakMap(), xe = new WeakMap(), _e = new WeakMap(), Pe = new WeakMap(), Me = new WeakMap(), Le = new WeakMap(), Ee = new WeakMap(), wt = new WeakMap(), se = new WeakMap(), Ae = new WeakMap(), T = new WeakSet(), // ── internals ─────────────────────────────────────────────────────────────
669
+ As = function(t) {
670
670
  var o;
671
671
  for (const i of t) {
672
672
  let r = i.default;
@@ -674,48 +674,48 @@ Es = function(t) {
674
674
  try {
675
675
  r = i.converter.fromAttribute(null, this, i.attribute ?? i.configKey);
676
676
  } catch (n) {
677
- w(this, O, X).call(this, `converter for "${i.configKey}" threw computing its default; using \`default\``, n), r = i.default;
677
+ x(this, T, Y).call(this, `converter for "${i.configKey}" threw computing its default; using \`default\``, n), r = i.default;
678
678
  }
679
679
  p(this, he)[i.configKey] = r, i.field && (this[i.field] = r);
680
680
  }
681
- }, As = function(t) {
681
+ }, zs = function(t) {
682
682
  return { configKey: t.configKey, field: t.field, value: t.default, on: t.on ?? "update" };
683
683
  }, /** Sanity-check the input + event tables once per class; warn (never throw) on mistakes. */
684
- zs = function(t, o) {
684
+ Ns = function(t, o) {
685
685
  var l;
686
686
  const i = this.constructor;
687
- if (os.has(i))
687
+ if (is.has(i))
688
688
  return;
689
- os.add(i);
689
+ is.add(i);
690
690
  const r = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set();
691
691
  for (const c of t)
692
- r.has(c.configKey) && w(this, O, X).call(this, `invalid input table: duplicate configKey "${c.configKey}"`), r.add(c.configKey), c.attribute && (n.has(c.attribute) && w(this, O, X).call(this, `invalid input table: duplicate attribute "${c.attribute}"`), n.add(c.attribute)), c.reflect && !c.attribute && w(this, O, X).call(this, `invalid input table: "${c.configKey}" has reflect:true but no attribute to reflect to`), c.reflect && !((l = c.converter) != null && l.toAttribute) && w(this, O, X).call(this, `invalid input table: "${c.configKey}" has reflect:true but its converter has no toAttribute`);
692
+ r.has(c.configKey) && x(this, T, Y).call(this, `invalid input table: duplicate configKey "${c.configKey}"`), r.add(c.configKey), c.attribute && (n.has(c.attribute) && x(this, T, Y).call(this, `invalid input table: duplicate attribute "${c.attribute}"`), n.add(c.attribute)), c.reflect && !c.attribute && x(this, T, Y).call(this, `invalid input table: "${c.configKey}" has reflect:true but no attribute to reflect to`), c.reflect && !((l = c.converter) != null && l.toAttribute) && x(this, T, Y).call(this, `invalid input table: "${c.configKey}" has reflect:true but its converter has no toAttribute`);
693
693
  const a = /* @__PURE__ */ new Set();
694
694
  for (const c of o)
695
- a.has(c.name) && w(this, O, X).call(this, `invalid event table: duplicate event "${c.name}"`), a.add(c.name), /^[a-z][a-z0-9-]*$/.test(c.name) || w(this, O, X).call(this, `invalid event table: event "${c.name}" should be lowercase kebab-case (e.g. "date-select")`), c.property && r.has(c.property) && w(this, O, X).call(this, `invalid event table: event "${c.name}" property "${c.property}" collides with an input configKey`);
695
+ a.has(c.name) && x(this, T, Y).call(this, `invalid event table: duplicate event "${c.name}"`), a.add(c.name), /^[a-z][a-z0-9-]*$/.test(c.name) || x(this, T, Y).call(this, `invalid event table: event "${c.name}" should be lowercase kebab-case (e.g. "date-select")`), c.property && r.has(c.property) && x(this, T, Y).call(this, `invalid event table: event "${c.name}" property "${c.property}" collides with an input configKey`);
696
696
  }, /**
697
697
  * Always-on console warning for input validation failures. Deliberately uses
698
698
  * `console.warn` directly — NOT the (future) categorized logger — so rejected
699
699
  * inputs surface even when logging is disabled.
700
700
  */
701
- X = function(t, ...o) {
701
+ Y = function(t, ...o) {
702
702
  console.warn(`[BlissElement] <${this.localName ?? "unknown"}> ${t}`, ...o);
703
- }, $s = function(t) {
703
+ }, Ds = function(t) {
704
704
  for (const o of t) {
705
705
  const i = o.configKey, r = Object.prototype.hasOwnProperty.call(this, i), n = r ? this[i] : void 0;
706
706
  r && delete this[i], Object.defineProperty(this, i, {
707
707
  configurable: !0,
708
708
  enumerable: !0,
709
709
  get: () => p(this, he)[i],
710
- set: (a) => w(this, O, $t).call(this, o, a)
711
- }), r && ((p(this, Pe) ?? $(this, Pe, /* @__PURE__ */ new Set())).add(i), this[i] = n);
710
+ set: (a) => x(this, T, Dt).call(this, o, a)
711
+ }), r && ((p(this, Pe) ?? N(this, Pe, /* @__PURE__ */ new Set())).add(i), this[i] = n);
712
712
  }
713
713
  }, /**
714
714
  * Install a managed `on<Name>` handler property per event. Assigning it
715
715
  * (de)registers a real listener for the event, so the property behaves like
716
716
  * `addEventListener(name, …)` and its handler receives the `CustomEvent`.
717
717
  */
718
- Ds = function(t) {
718
+ $s = function(t) {
719
719
  for (const o of t) {
720
720
  const i = o.property;
721
721
  if (!i)
@@ -735,52 +735,52 @@ Ds = function(t) {
735
735
  }
736
736
  }), n && (this[i] = a);
737
737
  }
738
- }, $t = function(t, o) {
738
+ }, Dt = function(t, o) {
739
739
  var r;
740
- const i = bo(t, o);
740
+ const i = vo(t, o);
741
741
  if (!i) {
742
- w(this, O, X).call(this, `rejected invalid value for property "${t.configKey}"; keeping previous value`, o);
742
+ x(this, T, Y).call(this, `rejected invalid value for property "${t.configKey}"; keeping previous value`, o);
743
743
  return;
744
744
  }
745
- if (w(this, O, Dt).call(this, i), t.reflect && t.attribute && ((r = t.converter) != null && r.toAttribute)) {
745
+ if (x(this, T, $t).call(this, i), t.reflect && t.attribute && ((r = t.converter) != null && r.toAttribute)) {
746
746
  const n = t.converter.toAttribute(i.value);
747
- $(this, Me, !0);
747
+ N(this, Me, !0);
748
748
  try {
749
749
  n === null ? this.removeAttribute(t.attribute) : this.setAttribute(t.attribute, n);
750
750
  } finally {
751
- $(this, Me, !1);
751
+ N(this, Me, !1);
752
752
  }
753
753
  }
754
- }, Dt = function(t) {
755
- p(this, he)[t.configKey] = t.value, t.field && (this[t.field] = t.value), t.on !== "none" && (t.on === "reinit" && $(this, ue, !0), (p(this, we) ?? $(this, we, {}))[t.configKey] = t.value, p(this, Ze).schedule(p(this, yt)));
754
+ }, $t = function(t) {
755
+ p(this, he)[t.configKey] = t.value, t.field && (this[t.field] = t.value), t.on !== "none" && (t.on === "reinit" && N(this, ue, !0), (p(this, we) ?? N(this, we, {}))[t.configKey] = t.value, p(this, Ze).schedule(p(this, yt)));
756
756
  }, /** Cancel any queued microtask and flush pending changes synchronously now. */
757
757
  We = function() {
758
- p(this, Ze).cancel(), w(this, O, Vt).call(this);
758
+ p(this, Ze).cancel(), x(this, T, Vt).call(this);
759
759
  }, Vt = function() {
760
760
  if (!this.isConnected)
761
761
  return;
762
762
  const t = p(this, ue), o = p(this, we);
763
- $(this, ue, !1), $(this, we, null), t ? this.reinit() : o && Object.keys(o).length > 0 && this.update(o), w(this, O, Vs).call(this);
763
+ N(this, ue, !1), N(this, we, null), t ? this.reinit() : o && Object.keys(o).length > 0 && this.update(o), x(this, T, Vs).call(this);
764
764
  }, /** Resolve everyone awaiting {@link whenSettled} for the flush that just ran. */
765
765
  Vs = function() {
766
766
  if (p(this, xe).length === 0)
767
767
  return;
768
768
  const t = p(this, xe);
769
- $(this, xe, []);
769
+ N(this, xe, []);
770
770
  for (const o of t)
771
771
  o();
772
772
  }, /** The opt-in input table. Subclasses set this to enable attribute/property reactivity. */
773
- m(qe, "inputs"), /**
773
+ m(Xe, "inputs"), /**
774
774
  * The opt-in event table (SPEC §12.5). Each entry (a bare name, or an
775
775
  * {@link EventDef} for overrides) declares an outward notification that
776
776
  * {@link emit} can fire and installs a managed `on<Name>` handler property.
777
777
  */
778
- m(qe, "events");
779
- let zt = qe;
780
- function is(s, e, t) {
778
+ m(Xe, "events");
779
+ let Nt = Xe;
780
+ function rs(s, e, t) {
781
781
  typeof customElements > "u" || customElements.get(s) || customElements.define(s, e, t);
782
782
  }
783
- function Uo(s) {
783
+ function Go(s) {
784
784
  return {
785
785
  enableLogging: (e) => s.enableLogging(e),
786
786
  disableLogging: () => s.disableLogging(),
@@ -789,19 +789,19 @@ function Uo(s) {
789
789
  getCategories: () => [...s.LOGGING_CATEGORIES]
790
790
  };
791
791
  }
792
- function Go(s, e, t) {
792
+ function Xo(s, e, t) {
793
793
  const { config: o, logging: i, shouldAutoDefine: r = !0 } = t;
794
- i && Do(s, i);
794
+ i && $o(s, i);
795
795
  const n = {
796
796
  version: () => o.version,
797
797
  config: o,
798
- ...i ? { logging: Uo(i) } : {},
799
- register: () => is(s, e),
800
- getInstances: () => $o(s)
798
+ ...i ? { logging: Go(i) } : {},
799
+ register: () => rs(s, e),
800
+ getInstances: () => Do(s)
801
801
  };
802
- return typeof window < "u" && ((window.components ?? (window.components = {}))[s] = n), r && is(s, e), n;
802
+ return typeof window < "u" && ((window.components ?? (window.components = {}))[s] = n), r && rs(s, e), n;
803
803
  }
804
- const rs = /* @__PURE__ */ new Map(), ns = /* @__PURE__ */ new WeakMap();
804
+ const ns = /* @__PURE__ */ new Map(), as = /* @__PURE__ */ new WeakMap();
805
805
  let ot;
806
806
  function qo(s) {
807
807
  if (typeof CSSStyleSheet > "u" || !("adoptedStyleSheets" in s))
@@ -817,8 +817,8 @@ function qo(s) {
817
817
  function Yo(s, ...e) {
818
818
  if (typeof document > "u")
819
819
  return;
820
- let t = ns.get(s);
821
- t || ns.set(s, t = /* @__PURE__ */ new Set());
820
+ let t = as.get(s);
821
+ t || as.set(s, t = /* @__PURE__ */ new Set());
822
822
  const o = e.filter((r) => r && !t.has(r));
823
823
  if (o.length === 0)
824
824
  return;
@@ -826,8 +826,8 @@ function Yo(s, ...e) {
826
826
  t.add(r);
827
827
  if (qo(s)) {
828
828
  const r = o.map((n) => {
829
- let a = rs.get(n);
830
- return a || (a = new CSSStyleSheet(), a.replaceSync(n), rs.set(n, a)), a;
829
+ let a = ns.get(n);
830
+ return a || (a = new CSSStyleSheet(), a.replaceSync(n), ns.set(n, a)), a;
831
831
  });
832
832
  s.adoptedStyleSheets = [...s.adoptedStyleSheets, ...r];
833
833
  return;
@@ -838,7 +838,7 @@ function Yo(s, ...e) {
838
838
  n.textContent = r, i.appendChild(n);
839
839
  }
840
840
  }
841
- function Xo(s, e = {}) {
841
+ function Jo(s, e = {}) {
842
842
  const t = e.position ?? "last", o = s.head ?? s;
843
843
  let i = null;
844
844
  const r = () => typeof document > "u" ? null : (i || (i = document.createElement("style"), e.className && (i.className = e.className)), i.parentNode !== o && (t === "first" && o.firstChild ? o.insertBefore(i, o.firstChild) : o.appendChild(i)), i), n = () => {
@@ -859,48 +859,55 @@ function Xo(s, e = {}) {
859
859
  }
860
860
  };
861
861
  }
862
- function Ns(s) {
862
+ function Rs(s) {
863
863
  return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
864
864
  }
865
- function Jo(s, e) {
866
- const t = /* @__PURE__ */ new Set(), o = new RegExp(`var\\(\\s*(${Ns(e)}[a-z0-9-]+)`, "gi");
865
+ function Qo(s, e) {
866
+ const t = /* @__PURE__ */ new Set(), o = new RegExp(`var\\(\\s*(${Rs(e)}[a-z0-9-]+)`, "gi");
867
867
  let i;
868
868
  for (; i = o.exec(s); )
869
869
  i[1] && t.add(i[1]);
870
870
  return t;
871
871
  }
872
- function Qo(s, e) {
873
- const t = /* @__PURE__ */ new Set(), o = new RegExp(`(${Ns(e)}[a-z0-9-]+)\\s*:`, "gi");
872
+ function Zo(s, e) {
873
+ const t = /* @__PURE__ */ new Set(), o = new RegExp(`(${Rs(e)}[a-z0-9-]+)\\s*:`, "gi");
874
874
  let i;
875
875
  for (; i = o.exec(s); )
876
876
  i[1] && t.add(i[1]);
877
877
  return [...t];
878
878
  }
879
- function Zo(s, e, t = {}) {
879
+ function ei(s, e, t = {}) {
880
880
  const o = t.minScore ?? 3, i = t.limit ?? 3, r = new Set(s.split("-").filter(Boolean));
881
881
  return [...e].map((n) => ({ k: n, score: n.split("-").filter((a) => r.has(a)).length })).filter((n) => n.score >= o).sort((n, a) => a.score - n.score).slice(0, i).map((n) => n.k);
882
882
  }
883
- function ei(s, e) {
883
+ function ti(s, e) {
884
884
  if (e.consumed.size === 0)
885
885
  return [];
886
886
  const t = [];
887
- for (const o of Qo(s, e.prefix))
888
- e.consumed.has(o) || t.push({ name: o, suggestions: Zo(o, e.consumed, { minScore: e.minScore }) });
887
+ for (const o of Zo(s, e.prefix))
888
+ e.consumed.has(o) || t.push({ name: o, suggestions: ei(o, e.consumed, { minScore: e.minScore }) });
889
889
  return t;
890
890
  }
891
- const ti = {
891
+ const si = {
892
892
  mobile: "fullscreen",
893
893
  tablet: "floating",
894
894
  desktop: "floating"
895
895
  };
896
- function si(s, e, t = {}) {
896
+ function oi(s, e, t = {}) {
897
897
  if (s !== "auto")
898
898
  return s;
899
- const o = Eo(e);
900
- return t[o] ?? ti[o];
899
+ const o = Ao(e);
900
+ return t[o] ?? si[o];
901
+ }
902
+ function Ot(s) {
903
+ return {
904
+ presentation: s,
905
+ isFullscreen: s === "fullscreen",
906
+ isModal: s === "modal"
907
+ };
901
908
  }
902
909
  let He = 0, it = null;
903
- function oi() {
910
+ function ii() {
904
911
  if (typeof document > "u")
905
912
  return () => {
906
913
  };
@@ -910,7 +917,7 @@ function oi() {
910
917
  s || (s = !0, He = Math.max(0, He - 1), He === 0 && it !== null && (document.body.style.overflow = it, it = null));
911
918
  };
912
919
  }
913
- function ii(s) {
920
+ function ri(s) {
914
921
  const e = typeof window < "u" ? window.visualViewport : null;
915
922
  if (!e)
916
923
  return () => {
@@ -932,20 +939,20 @@ const j = {
932
939
  WARN: 3,
933
940
  ERROR: 4,
934
941
  SILENT: 5
935
- }, as = ["trace", "debug", "info", "warn", "error"], pt = () => {
942
+ }, ls = ["trace", "debug", "info", "warn", "error"], pt = () => {
936
943
  };
937
- let ri = "km-log";
938
- function ls(s) {
944
+ let ni = "km-log";
945
+ function cs(s) {
939
946
  const t = console[s];
940
947
  return typeof t == "function" ? t.bind(console) : pt;
941
948
  }
942
- function ni(s) {
949
+ function ai(s) {
943
950
  if (s === "debug" && (s = "log"), typeof console > "u")
944
951
  return pt;
945
952
  const e = console;
946
- return e[s] !== void 0 ? ls(s) : e.log !== void 0 ? ls("log") : pt;
953
+ return e[s] !== void 0 ? cs(s) : e.log !== void 0 ? cs("log") : pt;
947
954
  }
948
- const ai = (s) => ni(s);
955
+ const li = (s) => ai(s);
949
956
  function Be(s) {
950
957
  let e = s;
951
958
  const t = j;
@@ -955,7 +962,7 @@ function Be(s) {
955
962
  }
956
963
  let de;
957
964
  const ft = {};
958
- class Rs {
965
+ class Hs {
959
966
  constructor(e, t) {
960
967
  m(this, "name");
961
968
  m(this, "levels", j);
@@ -978,13 +985,13 @@ class Rs {
978
985
  o != null && (this.userLevel = Be(o)), this.replaceLoggingMethods();
979
986
  }
980
987
  storageKey() {
981
- return typeof this.name == "string" ? `${ri}:${this.name}` : void 0;
988
+ return typeof this.name == "string" ? `${ni}:${this.name}` : void 0;
982
989
  }
983
990
  persist(e) {
984
991
  const t = this.storageKey();
985
992
  if (typeof window > "u" || !t)
986
993
  return;
987
- const o = (as[e] ?? "silent").toUpperCase();
994
+ const o = (ls[e] ?? "silent").toUpperCase();
988
995
  try {
989
996
  window.localStorage[t] = o;
990
997
  } catch {
@@ -1012,7 +1019,7 @@ class Rs {
1012
1019
  }
1013
1020
  replaceLoggingMethods() {
1014
1021
  const e = this.getLevel();
1015
- as.forEach((t, o) => {
1022
+ ls.forEach((t, o) => {
1016
1023
  this[t] = o < e ? pt : this.methodFactory(t, e, this.name);
1017
1024
  }), this.log = this.debug;
1018
1025
  }
@@ -1040,14 +1047,14 @@ class Rs {
1040
1047
  ft[e].rebuild();
1041
1048
  }
1042
1049
  }
1043
- de = new Rs(void 0, ai);
1044
- function li(s) {
1050
+ de = new Hs(void 0, li);
1051
+ function ci(s) {
1045
1052
  if (typeof s != "string" || s === "")
1046
1053
  throw new TypeError("You must supply a non-empty name when creating a logger.");
1047
1054
  let e = ft[s];
1048
- return e || (e = ft[s] = new Rs(s, de.methodFactory)), e;
1055
+ return e || (e = ft[s] = new Hs(s, de.methodFactory)), e;
1049
1056
  }
1050
- const ci = ["INIT", "DATA", "UI"], di = "debug", cs = [
1057
+ const di = ["INIT", "DATA", "UI"], hi = "debug", ds = [
1051
1058
  "#4c8bf5",
1052
1059
  // blue
1053
1060
  "#2ea043",
@@ -1064,43 +1071,43 @@ const ci = ["INIT", "DATA", "UI"], di = "debug", cs = [
1064
1071
  // teal
1065
1072
  "#8a6d3b"
1066
1073
  // brown
1067
- ], ds = /* @__PURE__ */ new WeakSet();
1068
- function hi(s, e, t) {
1069
- if (ds.has(s))
1074
+ ], hs = /* @__PURE__ */ new WeakSet();
1075
+ function ui(s, e, t) {
1076
+ if (hs.has(s))
1070
1077
  return;
1071
- ds.add(s);
1078
+ hs.add(s);
1072
1079
  const o = s.methodFactory, i = `color:${t};font-weight:bold`;
1073
1080
  s.methodFactory = (r, n, a) => {
1074
1081
  const l = o(r, n, a);
1075
1082
  return (...c) => l(`%c[${e}]`, i, ...c);
1076
1083
  }, s.setLevel(s.getLevel(), !1);
1077
1084
  }
1078
- function ui(s) {
1085
+ function mi(s) {
1079
1086
  return typeof s == "number" ? s : j[s.toUpperCase()] ?? j.SILENT;
1080
1087
  }
1081
- const mi = [
1088
+ const pi = [
1082
1089
  ["trace", j.TRACE, "debug"],
1083
1090
  ["debug", j.DEBUG, "debug"],
1084
1091
  ["info", j.INFO, "info"],
1085
1092
  ["warn", j.WARN, "warn"],
1086
1093
  ["error", j.ERROR, "error"]
1087
1094
  ];
1088
- function pi(s, e, t) {
1095
+ function fi(s, e, t) {
1089
1096
  const o = `color:${s.color};font-weight:bold`, i = "color:#888", r = {};
1090
- for (const [n, a, l] of mi)
1097
+ for (const [n, a, l] of pi)
1091
1098
  r[n] = (...c) => {
1092
- const d = t(), h = Math.min(s.logger.getLevel(), d == null ? j.SILENT : ui(d));
1099
+ const d = t(), h = Math.min(s.logger.getLevel(), d == null ? j.SILENT : mi(d));
1093
1100
  if (a < h)
1094
1101
  return;
1095
1102
  (console[l] ?? console.log).bind(console)(`%c[${s.label}]%c ${e}`, o, i, ...c);
1096
1103
  };
1097
1104
  return r;
1098
1105
  }
1099
- function fi(s, e = ci) {
1106
+ function gi(s, e = di) {
1100
1107
  const t = {}, o = {};
1101
1108
  e.forEach((r, n) => {
1102
- const a = `${s}:${r}`, l = cs[n % cs.length], c = li(a);
1103
- hi(c, a, l), t[r] = c, o[r] = { label: a, color: l, logger: c };
1109
+ const a = `${s}:${r}`, l = ds[n % ds.length], c = ci(a);
1110
+ ui(c, a, l), t[r] = c, o[r] = { label: a, color: l, logger: c };
1104
1111
  });
1105
1112
  const i = (r) => {
1106
1113
  for (const n of e)
@@ -1109,7 +1116,7 @@ function fi(s, e = ci) {
1109
1116
  return {
1110
1117
  loggers: t,
1111
1118
  LOGGING_CATEGORIES: e,
1112
- enableLogging(r = di) {
1119
+ enableLogging(r = hi) {
1113
1120
  i(r);
1114
1121
  },
1115
1122
  disableLogging() {
@@ -1125,7 +1132,7 @@ function fi(s, e = ci) {
1125
1132
  forInstance(r, n) {
1126
1133
  const a = {};
1127
1134
  for (const l of e)
1128
- a[l] = pi(o[l], r, n);
1135
+ a[l] = fi(o[l], r, n);
1129
1136
  return a;
1130
1137
  }
1131
1138
  };
@@ -1133,13 +1140,13 @@ function fi(s, e = ci) {
1133
1140
  const pe = Math.min, ie = Math.max, gt = Math.round, rt = Math.floor, re = (s) => ({
1134
1141
  x: s,
1135
1142
  y: s
1136
- }), gi = {
1143
+ }), bi = {
1137
1144
  left: "right",
1138
1145
  right: "left",
1139
1146
  bottom: "top",
1140
1147
  top: "bottom"
1141
1148
  };
1142
- function Hs(s, e, t) {
1149
+ function Bs(s, e, t) {
1143
1150
  return ie(s, pe(e, t));
1144
1151
  }
1145
1152
  function De(s, e) {
@@ -1148,10 +1155,10 @@ function De(s, e) {
1148
1155
  function Se(s) {
1149
1156
  return s.split("-")[0];
1150
1157
  }
1151
- function Ve(s) {
1158
+ function $e(s) {
1152
1159
  return s.split("-")[1];
1153
1160
  }
1154
- function Bs(s) {
1161
+ function Ks(s) {
1155
1162
  return s === "x" ? "y" : "x";
1156
1163
  }
1157
1164
  function Yt(s) {
@@ -1161,45 +1168,45 @@ function oe(s) {
1161
1168
  const e = s[0];
1162
1169
  return e === "t" || e === "b" ? "y" : "x";
1163
1170
  }
1164
- function Xt(s) {
1165
- return Bs(oe(s));
1171
+ function Jt(s) {
1172
+ return Ks(oe(s));
1166
1173
  }
1167
- function bi(s, e, t) {
1174
+ function vi(s, e, t) {
1168
1175
  t === void 0 && (t = !1);
1169
- const o = Ve(s), i = Xt(s), r = Yt(i);
1176
+ const o = $e(s), i = Jt(s), r = Yt(i);
1170
1177
  let n = i === "x" ? o === (t ? "end" : "start") ? "right" : "left" : o === "start" ? "bottom" : "top";
1171
1178
  return e.reference[r] > e.floating[r] && (n = bt(n)), [n, bt(n)];
1172
1179
  }
1173
- function vi(s) {
1180
+ function yi(s) {
1174
1181
  const e = bt(s);
1175
- return [Nt(s), e, Nt(e)];
1182
+ return [Rt(s), e, Rt(e)];
1176
1183
  }
1177
- function Nt(s) {
1184
+ function Rt(s) {
1178
1185
  return s.includes("start") ? s.replace("start", "end") : s.replace("end", "start");
1179
1186
  }
1180
- const hs = ["left", "right"], us = ["right", "left"], yi = ["top", "bottom"], wi = ["bottom", "top"];
1181
- function xi(s, e, t) {
1187
+ const us = ["left", "right"], ms = ["right", "left"], wi = ["top", "bottom"], xi = ["bottom", "top"];
1188
+ function _i(s, e, t) {
1182
1189
  switch (s) {
1183
1190
  case "top":
1184
1191
  case "bottom":
1185
- return t ? e ? us : hs : e ? hs : us;
1192
+ return t ? e ? ms : us : e ? us : ms;
1186
1193
  case "left":
1187
1194
  case "right":
1188
- return e ? yi : wi;
1195
+ return e ? wi : xi;
1189
1196
  default:
1190
1197
  return [];
1191
1198
  }
1192
1199
  }
1193
- function _i(s, e, t, o) {
1194
- const i = Ve(s);
1195
- let r = xi(Se(s), t === "start", o);
1196
- return i && (r = r.map((n) => n + "-" + i), e && (r = r.concat(r.map(Nt)))), r;
1200
+ function ki(s, e, t, o) {
1201
+ const i = $e(s);
1202
+ let r = _i(Se(s), t === "start", o);
1203
+ return i && (r = r.map((n) => n + "-" + i), e && (r = r.concat(r.map(Rt)))), r;
1197
1204
  }
1198
1205
  function bt(s) {
1199
1206
  const e = Se(s);
1200
- return gi[e] + s.slice(e.length);
1207
+ return bi[e] + s.slice(e.length);
1201
1208
  }
1202
- function ki(s) {
1209
+ function Ci(s) {
1203
1210
  var e, t, o, i;
1204
1211
  return {
1205
1212
  top: (e = s.top) != null ? e : 0,
@@ -1208,8 +1215,8 @@ function ki(s) {
1208
1215
  left: (i = s.left) != null ? i : 0
1209
1216
  };
1210
1217
  }
1211
- function Ks(s) {
1212
- return typeof s != "number" ? ki(s) : {
1218
+ function Fs(s) {
1219
+ return typeof s != "number" ? Ci(s) : {
1213
1220
  top: s,
1214
1221
  right: s,
1215
1222
  bottom: s,
@@ -1234,12 +1241,12 @@ function vt(s) {
1234
1241
  y: t
1235
1242
  };
1236
1243
  }
1237
- function ms(s, e, t) {
1244
+ function ps(s, e, t) {
1238
1245
  let {
1239
1246
  reference: o,
1240
1247
  floating: i
1241
1248
  } = s;
1242
- const r = oe(e), n = Xt(e), a = Yt(n), l = Se(e), c = r === "y", d = o.x + o.width / 2 - i.width / 2, h = o.y + o.height / 2 - i.height / 2, f = o[a] / 2 - i[a] / 2;
1249
+ const r = oe(e), n = Jt(e), a = Yt(n), l = Se(e), c = r === "y", d = o.x + o.width / 2 - i.width / 2, h = o.y + o.height / 2 - i.height / 2, f = o[a] / 2 - i[a] / 2;
1243
1250
  let u;
1244
1251
  switch (l) {
1245
1252
  case "top":
@@ -1272,10 +1279,10 @@ function ms(s, e, t) {
1272
1279
  y: o.y
1273
1280
  };
1274
1281
  }
1275
- const g = Ve(e);
1282
+ const g = $e(e);
1276
1283
  return g && (u[n] += f * (g === "end" ? 1 : -1) * (t && c ? -1 : 1)), u;
1277
1284
  }
1278
- async function Ci(s, e) {
1285
+ async function Si(s, e) {
1279
1286
  var t;
1280
1287
  e === void 0 && (e = {});
1281
1288
  const {
@@ -1291,33 +1298,33 @@ async function Ci(s, e) {
1291
1298
  elementContext: h = "floating",
1292
1299
  altBoundary: f = !1,
1293
1300
  padding: u = 0
1294
- } = De(e, s), g = Ks(u), y = a[f ? h === "floating" ? "reference" : "floating" : h], b = vt(await r.getClippingRect({
1301
+ } = De(e, s), g = Fs(u), y = a[f ? h === "floating" ? "reference" : "floating" : h], v = vt(await r.getClippingRect({
1295
1302
  element: (t = await (r.isElement == null ? void 0 : r.isElement(y))) == null || t ? y : y.contextElement || await (r.getDocumentElement == null ? void 0 : r.getDocumentElement(a.floating)),
1296
1303
  boundary: c,
1297
1304
  rootBoundary: d,
1298
1305
  strategy: l
1299
- })), x = h === "floating" ? {
1306
+ })), w = h === "floating" ? {
1300
1307
  x: o,
1301
1308
  y: i,
1302
1309
  width: n.floating.width,
1303
1310
  height: n.floating.height
1304
- } : n.reference, C = await (r.getOffsetParent == null ? void 0 : r.getOffsetParent(a.floating)), _ = await (r.isElement == null ? void 0 : r.isElement(C)) && await (r.getScale == null ? void 0 : r.getScale(C)) || {
1311
+ } : n.reference, k = await (r.getOffsetParent == null ? void 0 : r.getOffsetParent(a.floating)), P = await (r.isElement == null ? void 0 : r.isElement(k)) && await (r.getScale == null ? void 0 : r.getScale(k)) || {
1305
1312
  x: 1,
1306
1313
  y: 1
1307
- }, N = vt(r.convertOffsetParentRelativeRectToViewportRelativeRect ? await r.convertOffsetParentRelativeRectToViewportRelativeRect({
1314
+ }, M = vt(r.convertOffsetParentRelativeRectToViewportRelativeRect ? await r.convertOffsetParentRelativeRectToViewportRelativeRect({
1308
1315
  elements: a,
1309
- rect: x,
1310
- offsetParent: C,
1316
+ rect: w,
1317
+ offsetParent: k,
1311
1318
  strategy: l
1312
- }) : x);
1319
+ }) : w);
1313
1320
  return {
1314
- top: (b.top - N.top + g.top) / _.y,
1315
- bottom: (N.bottom - b.bottom + g.bottom) / _.y,
1316
- left: (b.left - N.left + g.left) / _.x,
1317
- right: (N.right - b.right + g.right) / _.x
1321
+ top: (v.top - M.top + g.top) / P.y,
1322
+ bottom: (M.bottom - v.bottom + g.bottom) / P.y,
1323
+ left: (v.left - M.left + g.left) / P.x,
1324
+ right: (M.right - v.right + g.right) / P.x
1318
1325
  };
1319
1326
  }
1320
- const Si = 50, Ti = async (s, e, t) => {
1327
+ const Ti = 50, Ii = async (s, e, t) => {
1321
1328
  const {
1322
1329
  placement: o = "bottom",
1323
1330
  strategy: i = "absolute",
@@ -1325,7 +1332,7 @@ const Si = 50, Ti = async (s, e, t) => {
1325
1332
  platform: n
1326
1333
  } = t, a = n.detectOverflow ? n : {
1327
1334
  ...n,
1328
- detectOverflow: Ci
1335
+ detectOverflow: Si
1329
1336
  }, l = await (n.isRTL == null ? void 0 : n.isRTL(e));
1330
1337
  let c = await n.getElementRects({
1331
1338
  reference: s,
@@ -1334,21 +1341,21 @@ const Si = 50, Ti = async (s, e, t) => {
1334
1341
  }), {
1335
1342
  x: d,
1336
1343
  y: h
1337
- } = ms(c, o, l), f = o, u = 0;
1344
+ } = ps(c, o, l), f = o, u = 0;
1338
1345
  const g = {};
1339
- for (let v = 0; v < r.length; v++) {
1340
- const y = r[v];
1346
+ for (let b = 0; b < r.length; b++) {
1347
+ const y = r[b];
1341
1348
  if (!y)
1342
1349
  continue;
1343
1350
  const {
1344
- name: b,
1345
- fn: x
1351
+ name: v,
1352
+ fn: w
1346
1353
  } = y, {
1347
- x: C,
1348
- y: _,
1349
- data: N,
1350
- reset: z
1351
- } = await x({
1354
+ x: k,
1355
+ y: P,
1356
+ data: M,
1357
+ reset: $
1358
+ } = await w({
1352
1359
  x: d,
1353
1360
  y: h,
1354
1361
  initialPlacement: o,
@@ -1362,17 +1369,17 @@ const Si = 50, Ti = async (s, e, t) => {
1362
1369
  floating: e
1363
1370
  }
1364
1371
  });
1365
- d = C ?? d, h = _ ?? h, g[b] = {
1366
- ...g[b],
1367
- ...N
1368
- }, z && u < Si && (u++, typeof z == "object" && (z.placement && (f = z.placement), z.rects && (c = z.rects === !0 ? await n.getElementRects({
1372
+ d = k ?? d, h = P ?? h, g[v] = {
1373
+ ...g[v],
1374
+ ...M
1375
+ }, $ && u < Ti && (u++, typeof $ == "object" && ($.placement && (f = $.placement), $.rects && (c = $.rects === !0 ? await n.getElementRects({
1369
1376
  reference: s,
1370
1377
  floating: e,
1371
1378
  strategy: i
1372
- }) : z.rects), {
1379
+ }) : $.rects), {
1373
1380
  x: d,
1374
1381
  y: h
1375
- } = ms(c, f, l)), v = -1);
1382
+ } = ps(c, f, l)), b = -1);
1376
1383
  }
1377
1384
  return {
1378
1385
  x: d,
@@ -1399,26 +1406,26 @@ const Si = 50, Ti = async (s, e, t) => {
1399
1406
  } = De(s, e) || {};
1400
1407
  if (c == null)
1401
1408
  return {};
1402
- const h = Ks(d), f = {
1409
+ const h = Fs(d), f = {
1403
1410
  x: t,
1404
1411
  y: o
1405
- }, u = Xt(i), g = Yt(u), v = await n.getDimensions(c), y = u === "y", b = y ? "top" : "left", x = y ? "bottom" : "right", C = y ? "clientHeight" : "clientWidth", _ = r.reference[g] + r.reference[u] - f[u] - r.floating[g], N = f[u] - r.reference[u], z = await (n.getOffsetParent == null ? void 0 : n.getOffsetParent(c));
1406
- let K = z ? z[C] : 0;
1407
- (!K || !await (n.isElement == null ? void 0 : n.isElement(z))) && (K = a.floating[C] || r.floating[g]);
1408
- const G = _ / 2 - N / 2, M = K / 2 - v[g] / 2 - 1, S = pe(h[b], M), I = pe(h[x], M), P = K - v[g] - I, V = K / 2 - v[g] / 2 + G, T = Hs(S, V, P), R = !l.arrow && Ve(i) != null && V !== T && r.reference[g] / 2 - (V < S ? S : I) - v[g] / 2 < 0, te = R ? V < S ? V - S : V - P : 0;
1412
+ }, u = Jt(i), g = Yt(u), b = await n.getDimensions(c), y = u === "y", v = y ? "top" : "left", w = y ? "bottom" : "right", k = y ? "clientHeight" : "clientWidth", P = r.reference[g] + r.reference[u] - f[u] - r.floating[g], M = f[u] - r.reference[u], $ = await (n.getOffsetParent == null ? void 0 : n.getOffsetParent(c));
1413
+ let R = $ ? $[k] : 0;
1414
+ (!R || !await (n.isElement == null ? void 0 : n.isElement($))) && (R = a.floating[k] || r.floating[g]);
1415
+ const G = P / 2 - M / 2, L = R / 2 - b[g] / 2 - 1, C = pe(h[v], L), I = pe(h[w], L), O = R - b[g] - I, V = R / 2 - b[g] / 2 + G, S = Bs(C, V, O), H = !l.arrow && $e(i) != null && V !== S && r.reference[g] / 2 - (V < C ? C : I) - b[g] / 2 < 0, te = H ? V < C ? V - C : V - O : 0;
1409
1416
  return {
1410
1417
  [u]: f[u] + te,
1411
1418
  data: {
1412
- [u]: T,
1413
- centerOffset: V - T - te,
1414
- ...R && {
1419
+ [u]: S,
1420
+ centerOffset: V - S - te,
1421
+ ...H && {
1415
1422
  alignmentOffset: te
1416
1423
  }
1417
1424
  },
1418
- reset: R
1425
+ reset: H
1419
1426
  };
1420
1427
  }
1421
- }), Ii = function(s) {
1428
+ }), Pi = function(s) {
1422
1429
  return s === void 0 && (s = {}), {
1423
1430
  name: "flip",
1424
1431
  options: s,
@@ -1437,51 +1444,51 @@ const Si = 50, Ti = async (s, e, t) => {
1437
1444
  fallbackPlacements: f,
1438
1445
  fallbackStrategy: u = "bestFit",
1439
1446
  fallbackAxisSideDirection: g = "none",
1440
- flipAlignment: v = !0,
1447
+ flipAlignment: b = !0,
1441
1448
  ...y
1442
1449
  } = De(s, e);
1443
1450
  if ((t = r.arrow) != null && t.alignmentOffset)
1444
1451
  return {};
1445
- const b = Se(i), x = oe(a), C = Se(a) === a, _ = await (l.isRTL == null ? void 0 : l.isRTL(c.floating)), N = f || (C || !v ? [bt(a)] : vi(a)), z = g !== "none";
1446
- !f && z && N.push(..._i(a, v, g, _));
1447
- const K = [a, ...N], G = await l.detectOverflow(e, y), M = [];
1448
- let S = ((o = r.flip) == null ? void 0 : o.overflows) || [];
1449
- if (d && M.push(G[b]), h) {
1450
- const T = bi(i, n, _);
1451
- M.push(G[T[0]], G[T[1]]);
1452
+ const v = Se(i), w = oe(a), k = Se(a) === a, P = await (l.isRTL == null ? void 0 : l.isRTL(c.floating)), M = f || (k || !b ? [bt(a)] : yi(a)), $ = g !== "none";
1453
+ !f && $ && M.push(...ki(a, b, g, P));
1454
+ const R = [a, ...M], G = await l.detectOverflow(e, y), L = [];
1455
+ let C = ((o = r.flip) == null ? void 0 : o.overflows) || [];
1456
+ if (d && L.push(G[v]), h) {
1457
+ const S = vi(i, n, P);
1458
+ L.push(G[S[0]], G[S[1]]);
1452
1459
  }
1453
- if (S = [...S, {
1460
+ if (C = [...C, {
1454
1461
  placement: i,
1455
- overflows: M
1456
- }], !M.every((T) => T <= 0)) {
1457
- var I, P;
1458
- const T = (((I = r.flip) == null ? void 0 : I.index) || 0) + 1, R = K[T];
1459
- if (R && (!(h === "alignment" ? x !== oe(R) : !1) || // We leave the current main axis only if every placement on that axis
1462
+ overflows: L
1463
+ }], !L.every((S) => S <= 0)) {
1464
+ var I, O;
1465
+ const S = (((I = r.flip) == null ? void 0 : I.index) || 0) + 1, H = R[S];
1466
+ if (H && (!(h === "alignment" ? w !== oe(H) : !1) || // We leave the current main axis only if every placement on that axis
1460
1467
  // overflows the main axis.
1461
- S.every((Y) => oe(Y.placement) === x ? Y.overflows[0] > 0 : !0)))
1468
+ C.every((q) => oe(q.placement) === w ? q.overflows[0] > 0 : !0)))
1462
1469
  return {
1463
1470
  data: {
1464
- index: T,
1465
- overflows: S
1471
+ index: S,
1472
+ overflows: C
1466
1473
  },
1467
1474
  reset: {
1468
- placement: R
1475
+ placement: H
1469
1476
  }
1470
1477
  };
1471
- let te = (P = S.filter((ge) => ge.overflows[0] <= 0).sort((ge, Y) => ge.overflows[1] - Y.overflows[1])[0]) == null ? void 0 : P.placement;
1478
+ let te = (O = C.filter((ge) => ge.overflows[0] <= 0).sort((ge, q) => ge.overflows[1] - q.overflows[1])[0]) == null ? void 0 : O.placement;
1472
1479
  if (!te)
1473
1480
  switch (u) {
1474
1481
  case "bestFit": {
1475
1482
  var V;
1476
- const ge = (V = S.filter((Y) => {
1477
- if (z) {
1478
- const le = oe(Y.placement);
1479
- return le === x || // Create a bias to the `y` side axis due to horizontal
1483
+ const ge = (V = C.filter((q) => {
1484
+ if ($) {
1485
+ const le = oe(q.placement);
1486
+ return le === w || // Create a bias to the `y` side axis due to horizontal
1480
1487
  // reading directions favoring greater width.
1481
1488
  le === "y";
1482
1489
  }
1483
1490
  return !0;
1484
- }).map((Y) => [Y.placement, Y.overflows.filter((le) => le > 0).reduce((le, ao) => le + ao, 0)]).sort((Y, le) => Y[1] - le[1])[0]) == null ? void 0 : V[0];
1491
+ }).map((q) => [q.placement, q.overflows.filter((le) => le > 0).reduce((le, lo) => le + lo, 0)]).sort((q, le) => q[1] - le[1])[0]) == null ? void 0 : V[0];
1485
1492
  ge && (te = ge);
1486
1493
  break;
1487
1494
  }
@@ -1499,13 +1506,13 @@ const Si = 50, Ti = async (s, e, t) => {
1499
1506
  return {};
1500
1507
  }
1501
1508
  };
1502
- }, Pi = /* @__PURE__ */ new Set(["left", "top"]);
1503
- async function Mi(s, e) {
1509
+ }, Mi = /* @__PURE__ */ new Set(["left", "top"]);
1510
+ async function Li(s, e) {
1504
1511
  const {
1505
1512
  placement: t,
1506
1513
  platform: o,
1507
1514
  elements: i
1508
- } = s, r = await (o.isRTL == null ? void 0 : o.isRTL(i.floating)), n = Se(t), a = Ve(t), l = oe(t) === "y", c = Pi.has(n) ? -1 : 1, d = r && l ? -1 : 1, h = De(e, s);
1515
+ } = s, r = await (o.isRTL == null ? void 0 : o.isRTL(i.floating)), n = Se(t), a = $e(t), l = oe(t) === "y", c = Mi.has(n) ? -1 : 1, d = r && l ? -1 : 1, h = De(e, s);
1509
1516
  let {
1510
1517
  mainAxis: f,
1511
1518
  crossAxis: u,
@@ -1527,7 +1534,7 @@ async function Mi(s, e) {
1527
1534
  y: u * d
1528
1535
  };
1529
1536
  }
1530
- const Li = function(s) {
1537
+ const Ei = function(s) {
1531
1538
  return s === void 0 && (s = 0), {
1532
1539
  name: "offset",
1533
1540
  options: s,
@@ -1538,7 +1545,7 @@ const Li = function(s) {
1538
1545
  y: r,
1539
1546
  placement: n,
1540
1547
  middlewareData: a
1541
- } = e, l = await Mi(e, s);
1548
+ } = e, l = await Li(e, s);
1542
1549
  return n === ((t = a.offset) == null ? void 0 : t.placement) && (o = a.arrow) != null && o.alignmentOffset ? {} : {
1543
1550
  x: i + l.x,
1544
1551
  y: r + l.y,
@@ -1549,7 +1556,7 @@ const Li = function(s) {
1549
1556
  };
1550
1557
  }
1551
1558
  };
1552
- }, Ei = function(s) {
1559
+ }, Ai = function(s) {
1553
1560
  return s === void 0 && (s = {}), {
1554
1561
  name: "shift",
1555
1562
  options: s,
@@ -1563,14 +1570,14 @@ const Li = function(s) {
1563
1570
  mainAxis: n = !0,
1564
1571
  crossAxis: a = !1,
1565
1572
  limiter: l = {
1566
- fn: (x) => {
1573
+ fn: (w) => {
1567
1574
  let {
1568
- x: C,
1569
- y: _
1570
- } = x;
1575
+ x: k,
1576
+ y: P
1577
+ } = w;
1571
1578
  return {
1572
- x: C,
1573
- y: _
1579
+ x: k,
1580
+ y: P
1574
1581
  };
1575
1582
  }
1576
1583
  },
@@ -1578,20 +1585,20 @@ const Li = function(s) {
1578
1585
  } = De(s, e), d = {
1579
1586
  x: t,
1580
1587
  y: o
1581
- }, h = await r.detectOverflow(e, c), f = oe(i), u = Bs(f);
1582
- let g = d[u], v = d[f];
1583
- const y = (x, C) => Hs(C + h[x === "y" ? "top" : "left"], C, C - h[x === "y" ? "bottom" : "right"]);
1584
- n && (g = y(u, g)), a && (v = y(f, v));
1585
- const b = l.fn({
1588
+ }, h = await r.detectOverflow(e, c), f = oe(i), u = Ks(f);
1589
+ let g = d[u], b = d[f];
1590
+ const y = (w, k) => Bs(k + h[w === "y" ? "top" : "left"], k, k - h[w === "y" ? "bottom" : "right"]);
1591
+ n && (g = y(u, g)), a && (b = y(f, b));
1592
+ const v = l.fn({
1586
1593
  ...e,
1587
1594
  [u]: g,
1588
- [f]: v
1595
+ [f]: b
1589
1596
  });
1590
1597
  return {
1591
- ...b,
1598
+ ...v,
1592
1599
  data: {
1593
- x: b.x - t,
1594
- y: b.y - o,
1600
+ x: v.x - t,
1601
+ y: v.y - o,
1595
1602
  enabled: {
1596
1603
  [u]: n,
1597
1604
  [f]: a
@@ -1600,7 +1607,7 @@ const Li = function(s) {
1600
1607
  };
1601
1608
  }
1602
1609
  };
1603
- }, Ai = function(s) {
1610
+ }, zi = function(s) {
1604
1611
  return s === void 0 && (s = {}), {
1605
1612
  name: "size",
1606
1613
  options: s,
@@ -1614,18 +1621,18 @@ const Li = function(s) {
1614
1621
  apply: n = () => {
1615
1622
  },
1616
1623
  ...a
1617
- } = De(s, e), l = await i.detectOverflow(e, a), c = Se(t), d = Ve(t), h = oe(t) === "y", {
1624
+ } = De(s, e), l = await i.detectOverflow(e, a), c = Se(t), d = $e(t), h = oe(t) === "y", {
1618
1625
  width: f,
1619
1626
  height: u
1620
1627
  } = o.floating;
1621
- let g, v;
1622
- c === "top" || c === "bottom" ? (g = c, v = d === (await (i.isRTL == null ? void 0 : i.isRTL(r.floating)) ? "start" : "end") ? "left" : "right") : (v = c, g = d === "end" ? "top" : "bottom");
1623
- const y = u - l.top - l.bottom, b = f - l.left - l.right, x = pe(u - l[g], y), C = pe(f - l[v], b), _ = e.middlewareData.shift, N = !_;
1624
- let z = x, K = C;
1625
- _ != null && _.enabled.x && (K = b), _ != null && _.enabled.y && (z = y), N && !d && (h ? K = f - 2 * ie(l.left, l.right) : z = u - 2 * ie(l.top, l.bottom)), await n({
1628
+ let g, b;
1629
+ c === "top" || c === "bottom" ? (g = c, b = d === (await (i.isRTL == null ? void 0 : i.isRTL(r.floating)) ? "start" : "end") ? "left" : "right") : (b = c, g = d === "end" ? "top" : "bottom");
1630
+ const y = u - l.top - l.bottom, v = f - l.left - l.right, w = pe(u - l[g], y), k = pe(f - l[b], v), P = e.middlewareData.shift, M = !P;
1631
+ let $ = w, R = k;
1632
+ P != null && P.enabled.x && (R = v), P != null && P.enabled.y && ($ = y), M && !d && (h ? R = f - 2 * ie(l.left, l.right) : $ = u - 2 * ie(l.top, l.bottom)), await n({
1626
1633
  ...e,
1627
- availableWidth: K,
1628
- availableHeight: z
1634
+ availableWidth: R,
1635
+ availableHeight: $
1629
1636
  });
1630
1637
  const G = await i.getDimensions(r.floating);
1631
1638
  return f !== G.width || u !== G.height ? {
@@ -1639,8 +1646,8 @@ const Li = function(s) {
1639
1646
  function xt() {
1640
1647
  return typeof window < "u";
1641
1648
  }
1642
- function Ne(s) {
1643
- return Fs(s) ? (s.nodeName || "").toLowerCase() : "#document";
1649
+ function Ve(s) {
1650
+ return Ws(s) ? (s.nodeName || "").toLowerCase() : "#document";
1644
1651
  }
1645
1652
  function U(s) {
1646
1653
  var e;
@@ -1648,9 +1655,9 @@ function U(s) {
1648
1655
  }
1649
1656
  function ne(s) {
1650
1657
  var e;
1651
- return (e = (Fs(s) ? s.ownerDocument : s.document) || window.document) == null ? void 0 : e.documentElement;
1658
+ return (e = (Ws(s) ? s.ownerDocument : s.document) || window.document) == null ? void 0 : e.documentElement;
1652
1659
  }
1653
- function Fs(s) {
1660
+ function Ws(s) {
1654
1661
  return xt() ? s instanceof Node || s instanceof U(s).Node : !1;
1655
1662
  }
1656
1663
  function Z(s) {
@@ -1659,7 +1666,7 @@ function Z(s) {
1659
1666
  function fe(s) {
1660
1667
  return xt() ? s instanceof HTMLElement || s instanceof U(s).HTMLElement : !1;
1661
1668
  }
1662
- function ps(s) {
1669
+ function fs(s) {
1663
1670
  return !xt() || typeof ShadowRoot > "u" ? !1 : s instanceof ShadowRoot || s instanceof U(s).ShadowRoot;
1664
1671
  }
1665
1672
  function _t(s) {
@@ -1671,8 +1678,8 @@ function _t(s) {
1671
1678
  } = ee(s);
1672
1679
  return /auto|scroll|overlay|hidden|clip/.test(e + o + t) && i !== "inline" && i !== "contents";
1673
1680
  }
1674
- function zi(s) {
1675
- return /^(table|td|th)$/.test(Ne(s));
1681
+ function Ni(s) {
1682
+ return /^(table|td|th)$/.test(Ve(s));
1676
1683
  }
1677
1684
  function kt(s) {
1678
1685
  try {
@@ -1686,16 +1693,16 @@ function kt(s) {
1686
1693
  return !1;
1687
1694
  }
1688
1695
  }
1689
- const $i = /transform|translate|scale|rotate|perspective|filter/, Di = /paint|layout|strict|content/, be = (s) => !!s && s !== "none";
1690
- let It;
1691
- function Jt(s) {
1696
+ const Di = /transform|translate|scale|rotate|perspective|filter/, $i = /paint|layout|strict|content/, be = (s) => !!s && s !== "none";
1697
+ let Pt;
1698
+ function Qt(s) {
1692
1699
  const e = Z(s) ? ee(s) : s;
1693
- return be(e.transform) || be(e.translate) || be(e.scale) || be(e.rotate) || be(e.perspective) || !Qt() && (be(e.backdropFilter) || be(e.filter)) || $i.test(e.willChange || "") || Di.test(e.contain || "");
1700
+ return be(e.transform) || be(e.translate) || be(e.scale) || be(e.rotate) || be(e.perspective) || !Zt() && (be(e.backdropFilter) || be(e.filter)) || Di.test(e.willChange || "") || $i.test(e.contain || "");
1694
1701
  }
1695
1702
  function Vi(s) {
1696
1703
  let e = Te(s);
1697
- for (; fe(e) && !Ye(e); ) {
1698
- if (Jt(e))
1704
+ for (; fe(e) && !qe(e); ) {
1705
+ if (Qt(e))
1699
1706
  return e;
1700
1707
  if (kt(e))
1701
1708
  return null;
@@ -1703,11 +1710,11 @@ function Vi(s) {
1703
1710
  }
1704
1711
  return null;
1705
1712
  }
1706
- function Qt() {
1707
- return It == null && (It = typeof CSS < "u" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none")), It;
1713
+ function Zt() {
1714
+ return Pt == null && (Pt = typeof CSS < "u" && CSS.supports && CSS.supports("-webkit-backdrop-filter", "none")), Pt;
1708
1715
  }
1709
- function Ye(s) {
1710
- return /^(html|body|#document)$/.test(Ne(s));
1716
+ function qe(s) {
1717
+ return /^(html|body|#document)$/.test(Ve(s));
1711
1718
  }
1712
1719
  function ee(s) {
1713
1720
  return U(s).getComputedStyle(s);
@@ -1722,35 +1729,35 @@ function Ct(s) {
1722
1729
  };
1723
1730
  }
1724
1731
  function Te(s) {
1725
- if (Ne(s) === "html")
1732
+ if (Ve(s) === "html")
1726
1733
  return s;
1727
1734
  const e = (
1728
1735
  // Step into the shadow DOM of the parent of a slotted node.
1729
1736
  s.assignedSlot || // DOM Element detected.
1730
1737
  s.parentNode || // ShadowRoot detected.
1731
- ps(s) && s.host || // Fallback.
1738
+ fs(s) && s.host || // Fallback.
1732
1739
  ne(s)
1733
1740
  );
1734
- return ps(e) ? e.host : e;
1741
+ return fs(e) ? e.host : e;
1735
1742
  }
1736
- function Ws(s) {
1743
+ function js(s) {
1737
1744
  const e = Te(s);
1738
- return Ye(e) ? (s.ownerDocument || s).body : fe(e) && _t(e) ? e : Ws(e);
1745
+ return qe(e) ? (s.ownerDocument || s).body : fe(e) && _t(e) ? e : js(e);
1739
1746
  }
1740
- function Xe(s, e, t) {
1747
+ function Ye(s, e, t) {
1741
1748
  var o;
1742
1749
  e === void 0 && (e = []), t === void 0 && (t = !0);
1743
- const i = Ws(s), r = i === ((o = s.ownerDocument) == null ? void 0 : o.body), n = U(i);
1750
+ const i = js(s), r = i === ((o = s.ownerDocument) == null ? void 0 : o.body), n = U(i);
1744
1751
  if (r) {
1745
- const a = Rt(n);
1746
- return e.concat(n, n.visualViewport || [], _t(i) ? i : [], a && t ? Xe(a) : []);
1752
+ const a = Ht(n);
1753
+ return e.concat(n, n.visualViewport || [], _t(i) ? i : [], a && t ? Ye(a) : []);
1747
1754
  } else
1748
- return e.concat(i, Xe(i, [], t));
1755
+ return e.concat(i, Ye(i, [], t));
1749
1756
  }
1750
- function Rt(s) {
1757
+ function Ht(s) {
1751
1758
  return s.parent && Object.getPrototypeOf(s.parent) ? s.frameElement : null;
1752
1759
  }
1753
- function js(s) {
1760
+ function Us(s) {
1754
1761
  const e = ee(s);
1755
1762
  let t = parseFloat(e.width) || 0, o = parseFloat(e.height) || 0;
1756
1763
  const i = fe(s), r = i ? s.offsetWidth : t, n = i ? s.offsetHeight : o, a = gt(t) !== r || gt(o) !== n;
@@ -1760,48 +1767,48 @@ function js(s) {
1760
1767
  $: a
1761
1768
  };
1762
1769
  }
1763
- function Zt(s) {
1770
+ function es(s) {
1764
1771
  return Z(s) ? s : s.contextElement;
1765
1772
  }
1766
- function Ie(s) {
1767
- const e = Zt(s);
1773
+ function Oe(s) {
1774
+ const e = es(s);
1768
1775
  if (!fe(e))
1769
1776
  return re(1);
1770
1777
  const t = e.getBoundingClientRect(), {
1771
1778
  width: o,
1772
1779
  height: i,
1773
1780
  $: r
1774
- } = js(e);
1781
+ } = Us(e);
1775
1782
  let n = (r ? gt(t.width) : t.width) / o, a = (r ? gt(t.height) : t.height) / i;
1776
1783
  return (!n || !Number.isFinite(n)) && (n = 1), (!a || !Number.isFinite(a)) && (a = 1), {
1777
1784
  x: n,
1778
1785
  y: a
1779
1786
  };
1780
1787
  }
1781
- const Ni = /* @__PURE__ */ re(0);
1782
- function Us(s) {
1788
+ const Ri = /* @__PURE__ */ re(0);
1789
+ function Gs(s) {
1783
1790
  const e = U(s);
1784
- return !Qt() || !e.visualViewport ? Ni : {
1791
+ return !Zt() || !e.visualViewport ? Ri : {
1785
1792
  x: e.visualViewport.offsetLeft,
1786
1793
  y: e.visualViewport.offsetTop
1787
1794
  };
1788
1795
  }
1789
- function Ri(s, e, t) {
1796
+ function Hi(s, e, t) {
1790
1797
  return e === void 0 && (e = !1), !!t && e && t === U(s);
1791
1798
  }
1792
- function Oe(s, e, t, o) {
1799
+ function Ie(s, e, t, o) {
1793
1800
  e === void 0 && (e = !1), t === void 0 && (t = !1);
1794
- const i = s.getBoundingClientRect(), r = Zt(s);
1801
+ const i = s.getBoundingClientRect(), r = es(s);
1795
1802
  let n = re(1);
1796
- e && (o ? Z(o) && (n = Ie(o)) : n = Ie(s));
1797
- const a = Ri(r, t, o) ? Us(r) : re(0);
1803
+ e && (o ? Z(o) && (n = Oe(o)) : n = Oe(s));
1804
+ const a = Hi(r, t, o) ? Gs(r) : re(0);
1798
1805
  let l = (i.left + a.x) / n.x, c = (i.top + a.y) / n.y, d = i.width / n.x, h = i.height / n.y;
1799
1806
  if (r && o) {
1800
1807
  const f = U(r), u = Z(o) ? U(o) : o;
1801
- let g = f, v = Rt(g);
1802
- for (; v && u !== g; ) {
1803
- const y = Ie(v), b = v.getBoundingClientRect(), x = ee(v), C = b.left + (v.clientLeft + parseFloat(x.paddingLeft)) * y.x, _ = b.top + (v.clientTop + parseFloat(x.paddingTop)) * y.y;
1804
- l *= y.x, c *= y.y, d *= y.x, h *= y.y, l += C, c += _, g = U(v), v = Rt(g);
1808
+ let g = f, b = Ht(g);
1809
+ for (; b && u !== g; ) {
1810
+ const y = Oe(b), v = b.getBoundingClientRect(), w = ee(b), k = v.left + (b.clientLeft + parseFloat(w.paddingLeft)) * y.x, P = v.top + (b.clientTop + parseFloat(w.paddingTop)) * y.y;
1811
+ l *= y.x, c *= y.y, d *= y.x, h *= y.y, l += k, c += P, g = U(b), b = Ht(g);
1805
1812
  }
1806
1813
  }
1807
1814
  return vt({
@@ -1813,16 +1820,16 @@ function Oe(s, e, t, o) {
1813
1820
  }
1814
1821
  function St(s, e) {
1815
1822
  const t = Ct(s).scrollLeft;
1816
- return e ? e.left + t : Oe(ne(s)).left + t;
1823
+ return e ? e.left + t : Ie(ne(s)).left + t;
1817
1824
  }
1818
- function Gs(s, e) {
1825
+ function Xs(s, e) {
1819
1826
  const t = s.getBoundingClientRect(), o = t.left + e.scrollLeft - St(s, t), i = t.top + e.scrollTop;
1820
1827
  return {
1821
1828
  x: o,
1822
1829
  y: i
1823
1830
  };
1824
1831
  }
1825
- function Hi(s) {
1832
+ function Bi(s) {
1826
1833
  let {
1827
1834
  elements: e,
1828
1835
  rect: t,
@@ -1837,11 +1844,11 @@ function Hi(s) {
1837
1844
  scrollTop: 0
1838
1845
  }, c = re(1);
1839
1846
  const d = re(0), h = fe(o);
1840
- if ((h || !r) && ((Ne(o) !== "body" || _t(n)) && (l = Ct(o)), h)) {
1841
- const u = Oe(o);
1842
- c = Ie(o), d.x = u.x + o.clientLeft, d.y = u.y + o.clientTop;
1847
+ if ((h || !r) && ((Ve(o) !== "body" || _t(n)) && (l = Ct(o)), h)) {
1848
+ const u = Ie(o);
1849
+ c = Oe(o), d.x = u.x + o.clientLeft, d.y = u.y + o.clientTop;
1843
1850
  }
1844
- const f = n && !h && !r ? Gs(n, l) : re(0);
1851
+ const f = n && !h && !r ? Xs(n, l) : re(0);
1845
1852
  return {
1846
1853
  width: t.width * c.x,
1847
1854
  height: t.height * c.y,
@@ -1849,10 +1856,10 @@ function Hi(s) {
1849
1856
  y: t.y * c.y - l.scrollTop * c.y + d.y + f.y
1850
1857
  };
1851
1858
  }
1852
- function Bi(s) {
1859
+ function Ki(s) {
1853
1860
  return s.getClientRects ? Array.from(s.getClientRects()) : [];
1854
1861
  }
1855
- function Ki(s) {
1862
+ function Fi(s) {
1856
1863
  const e = Ct(s), t = s.ownerDocument.body, o = ie(s.scrollWidth, s.clientWidth, t.scrollWidth, t.clientWidth), i = ie(s.scrollHeight, s.clientHeight, t.scrollHeight, t.clientHeight);
1857
1864
  let r = -e.scrollLeft + St(s);
1858
1865
  const n = -e.scrollTop;
@@ -1863,18 +1870,18 @@ function Ki(s) {
1863
1870
  y: n
1864
1871
  };
1865
1872
  }
1866
- const Fi = 25;
1867
- function Wi(s, e, t) {
1873
+ const Wi = 25;
1874
+ function ji(s, e, t) {
1868
1875
  t === void 0 && (t = "viewport");
1869
1876
  const o = t === "layoutViewport", i = U(s), r = ne(s), n = i.visualViewport;
1870
1877
  let a = r.clientWidth, l = r.clientHeight, c = 0, d = 0;
1871
1878
  if (n) {
1872
- const f = !Qt() || e === "fixed";
1879
+ const f = !Zt() || e === "fixed";
1873
1880
  o ? f || (c = -n.offsetLeft, d = -n.offsetTop) : (a = n.width, l = n.height, f && (c = n.offsetLeft, d = n.offsetTop));
1874
1881
  }
1875
1882
  if (St(r) <= 0) {
1876
- const f = r.ownerDocument, u = f.body, g = getComputedStyle(u), v = f.compatMode === "CSS1Compat" && parseFloat(g.marginLeft) + parseFloat(g.marginRight) || 0, y = Math.abs(r.clientWidth - u.clientWidth - v), b = getComputedStyle(r).scrollbarGutter === "stable both-edges" ? y / 2 : y;
1877
- b <= Fi && (a -= b);
1883
+ const f = r.ownerDocument, u = f.body, g = getComputedStyle(u), b = f.compatMode === "CSS1Compat" && parseFloat(g.marginLeft) + parseFloat(g.marginRight) || 0, y = Math.abs(r.clientWidth - u.clientWidth - b), v = getComputedStyle(r).scrollbarGutter === "stable both-edges" ? y / 2 : y;
1884
+ v <= Wi && (a -= v);
1878
1885
  }
1879
1886
  return {
1880
1887
  width: a,
@@ -1883,8 +1890,8 @@ function Wi(s, e, t) {
1883
1890
  y: d
1884
1891
  };
1885
1892
  }
1886
- function ji(s, e) {
1887
- const t = Oe(s, !0, e === "fixed"), o = t.top + s.clientTop, i = t.left + s.clientLeft, r = Ie(s), n = s.clientWidth * r.x, a = s.clientHeight * r.y, l = i * r.x, c = o * r.y;
1893
+ function Ui(s, e) {
1894
+ const t = Ie(s, !0, e === "fixed"), o = t.top + s.clientTop, i = t.left + s.clientLeft, r = Oe(s), n = s.clientWidth * r.x, a = s.clientHeight * r.y, l = i * r.x, c = o * r.y;
1888
1895
  return {
1889
1896
  width: n,
1890
1897
  height: a,
@@ -1892,16 +1899,16 @@ function ji(s, e) {
1892
1899
  y: c
1893
1900
  };
1894
1901
  }
1895
- function fs(s, e, t) {
1902
+ function gs(s, e, t) {
1896
1903
  let o;
1897
1904
  if (e === "viewport" || e === "layoutViewport")
1898
- o = Wi(s, t, e);
1905
+ o = ji(s, t, e);
1899
1906
  else if (e === "document")
1900
- o = Ki(ne(s));
1907
+ o = Fi(ne(s));
1901
1908
  else if (Z(e))
1902
- o = ji(e, t);
1909
+ o = Ui(e, t);
1903
1910
  else {
1904
- const i = Us(s);
1911
+ const i = Gs(s);
1905
1912
  o = {
1906
1913
  x: e.x - i.x,
1907
1914
  y: e.y - i.y,
@@ -1911,30 +1918,30 @@ function fs(s, e, t) {
1911
1918
  }
1912
1919
  return vt(o);
1913
1920
  }
1914
- function Ui(s, e) {
1921
+ function Gi(s, e) {
1915
1922
  const t = e.get(s);
1916
1923
  if (t)
1917
1924
  return t;
1918
- let o = Xe(s, [], !1).filter((a) => Z(a) && Ne(a) !== "body"), i = null;
1925
+ let o = Ye(s, [], !1).filter((a) => Z(a) && Ve(a) !== "body"), i = null;
1919
1926
  const r = ee(s).position === "fixed";
1920
1927
  let n = r ? Te(s) : s;
1921
- for (; Z(n) && !Ye(n); ) {
1922
- const a = ee(n), l = Jt(n), c = i ? i.position : r ? "fixed" : "";
1928
+ for (; Z(n) && !qe(n); ) {
1929
+ const a = ee(n), l = Qt(n), c = i ? i.position : r ? "fixed" : "";
1923
1930
  !l && (c === "fixed" || c === "absolute" && a.position === "static") ? o = o.filter((h) => h !== n) : i = a, n = Te(n);
1924
1931
  }
1925
1932
  return e.set(s, o), o;
1926
1933
  }
1927
- function Gi(s) {
1934
+ function Xi(s) {
1928
1935
  let {
1929
1936
  element: e,
1930
1937
  boundary: t,
1931
1938
  rootBoundary: o,
1932
1939
  strategy: i
1933
1940
  } = s;
1934
- const n = [...t === "clippingAncestors" ? kt(e) ? [] : Ui(e, this._c) : [].concat(t), o], a = fs(e, n[0], i);
1941
+ const n = [...t === "clippingAncestors" ? kt(e) ? [] : Gi(e, this._c) : [].concat(t), o], a = gs(e, n[0], i);
1935
1942
  let l = a.top, c = a.right, d = a.bottom, h = a.left;
1936
1943
  for (let f = 1; f < n.length; f++) {
1937
- const u = fs(e, n[f], i);
1944
+ const u = gs(e, n[f], i);
1938
1945
  l = ie(u.top, l), c = pe(u.right, c), d = pe(u.bottom, d), h = ie(u.left, h);
1939
1946
  }
1940
1947
  return {
@@ -1948,25 +1955,25 @@ function qi(s) {
1948
1955
  const {
1949
1956
  width: e,
1950
1957
  height: t
1951
- } = js(s);
1958
+ } = Us(s);
1952
1959
  return {
1953
1960
  width: e,
1954
1961
  height: t
1955
1962
  };
1956
1963
  }
1957
1964
  function Yi(s, e, t) {
1958
- const o = fe(e), i = ne(e), r = t === "fixed", n = Oe(s, !0, r, e);
1965
+ const o = fe(e), i = ne(e), r = t === "fixed", n = Ie(s, !0, r, e);
1959
1966
  let a = {
1960
1967
  scrollLeft: 0,
1961
1968
  scrollTop: 0
1962
1969
  };
1963
1970
  const l = re(0);
1964
- if ((o || !r) && ((Ne(e) !== "body" || _t(i)) && (a = Ct(e)), o)) {
1965
- const f = Oe(e, !0, r, e);
1971
+ if ((o || !r) && ((Ve(e) !== "body" || _t(i)) && (a = Ct(e)), o)) {
1972
+ const f = Ie(e, !0, r, e);
1966
1973
  l.x = f.x + e.clientLeft, l.y = f.y + e.clientTop;
1967
1974
  }
1968
1975
  !o && i && (l.x = St(i));
1969
- const c = i && !o && !r ? Gs(i, a) : re(0), d = n.left + a.scrollLeft - l.x - c.x, h = n.top + a.scrollTop - l.y - c.y;
1976
+ const c = i && !o && !r ? Xs(i, a) : re(0), d = n.left + a.scrollLeft - l.x - c.x, h = n.top + a.scrollTop - l.y - c.y;
1970
1977
  return {
1971
1978
  x: d,
1972
1979
  y: h,
@@ -1974,10 +1981,10 @@ function Yi(s, e, t) {
1974
1981
  height: n.height
1975
1982
  };
1976
1983
  }
1977
- function Pt(s) {
1984
+ function Mt(s) {
1978
1985
  return ee(s).position === "static";
1979
1986
  }
1980
- function gs(s, e) {
1987
+ function bs(s, e) {
1981
1988
  if (!fe(s) || ee(s).position === "fixed")
1982
1989
  return null;
1983
1990
  if (e)
@@ -1991,19 +1998,19 @@ function qs(s, e) {
1991
1998
  return t;
1992
1999
  if (!fe(s)) {
1993
2000
  let i = Te(s);
1994
- for (; i && !Ye(i); ) {
1995
- if (Z(i) && !Pt(i))
2001
+ for (; i && !qe(i); ) {
2002
+ if (Z(i) && !Mt(i))
1996
2003
  return i;
1997
2004
  i = Te(i);
1998
2005
  }
1999
2006
  return t;
2000
2007
  }
2001
- let o = gs(s, e);
2002
- for (; o && zi(o) && Pt(o); )
2003
- o = gs(o, e);
2004
- return o && Ye(o) && Pt(o) && !Jt(o) ? t : o || Vi(s) || t;
2008
+ let o = bs(s, e);
2009
+ for (; o && Ni(o) && Mt(o); )
2010
+ o = bs(o, e);
2011
+ return o && qe(o) && Mt(o) && !Qt(o) ? t : o || Vi(s) || t;
2005
2012
  }
2006
- const Xi = async function(s) {
2013
+ const Ji = async function(s) {
2007
2014
  const e = this.getOffsetParent || qs, t = this.getDimensions, o = await t(s.floating);
2008
2015
  return {
2009
2016
  reference: Yi(s.reference, await e(s.floating), s.strategy),
@@ -2015,25 +2022,25 @@ const Xi = async function(s) {
2015
2022
  }
2016
2023
  };
2017
2024
  };
2018
- function Ji(s) {
2025
+ function Qi(s) {
2019
2026
  return ee(s).direction === "rtl";
2020
2027
  }
2021
2028
  const Ys = {
2022
- convertOffsetParentRelativeRectToViewportRelativeRect: Hi,
2029
+ convertOffsetParentRelativeRectToViewportRelativeRect: Bi,
2023
2030
  getDocumentElement: ne,
2024
- getClippingRect: Gi,
2031
+ getClippingRect: Xi,
2025
2032
  getOffsetParent: qs,
2026
- getElementRects: Xi,
2027
- getClientRects: Bi,
2033
+ getElementRects: Ji,
2034
+ getClientRects: Ki,
2028
2035
  getDimensions: qi,
2029
- getScale: Ie,
2036
+ getScale: Oe,
2030
2037
  isElement: Z,
2031
- isRTL: Ji
2038
+ isRTL: Qi
2032
2039
  };
2033
- function Xs(s, e) {
2040
+ function Js(s, e) {
2034
2041
  return s.x === e.x && s.y === e.y && s.width === e.width && s.height === e.height;
2035
2042
  }
2036
- function Qi(s, e, t) {
2043
+ function Zi(s, e, t) {
2037
2044
  let o = null, i;
2038
2045
  const r = ne(s);
2039
2046
  function n() {
@@ -2045,37 +2052,37 @@ function Qi(s, e, t) {
2045
2052
  const f = s.getBoundingClientRect(), {
2046
2053
  left: u,
2047
2054
  top: g,
2048
- width: v,
2055
+ width: b,
2049
2056
  height: y
2050
2057
  } = f;
2051
- if (d || e(), !v || !y)
2058
+ if (d || e(), !b || !y)
2052
2059
  return;
2053
- const b = rt(g), x = rt(r.clientWidth - (u + v)), C = rt(r.clientHeight - (g + y)), _ = rt(u), z = {
2054
- rootMargin: -b + "px " + -x + "px " + -C + "px " + -_ + "px",
2060
+ const v = rt(g), w = rt(r.clientWidth - (u + b)), k = rt(r.clientHeight - (g + y)), P = rt(u), $ = {
2061
+ rootMargin: -v + "px " + -w + "px " + -k + "px " + -P + "px",
2055
2062
  threshold: ie(0, pe(1, h)) || 1
2056
2063
  };
2057
- let K = !0;
2058
- function G(M) {
2059
- const S = M[0].intersectionRatio;
2060
- if (!Xs(f, s.getBoundingClientRect()))
2064
+ let R = !0;
2065
+ function G(L) {
2066
+ const C = L[0].intersectionRatio;
2067
+ if (!Js(f, s.getBoundingClientRect()))
2061
2068
  return a();
2062
- if (S !== h) {
2063
- if (!K)
2069
+ if (C !== h) {
2070
+ if (!R)
2064
2071
  return a();
2065
- S ? a(!1, S) : i = setTimeout(() => {
2072
+ C ? a(!1, C) : i = setTimeout(() => {
2066
2073
  a(!1, 1e-7);
2067
2074
  }, 1e3);
2068
2075
  }
2069
- K = !1;
2076
+ R = !1;
2070
2077
  }
2071
2078
  try {
2072
2079
  o = new IntersectionObserver(G, {
2073
- ...z,
2080
+ ...$,
2074
2081
  // Handle <iframe>s
2075
2082
  root: r.ownerDocument
2076
2083
  });
2077
2084
  } catch {
2078
- o = new IntersectionObserver(G, z);
2085
+ o = new IntersectionObserver(G, $);
2079
2086
  }
2080
2087
  o.observe(s);
2081
2088
  }
@@ -2084,7 +2091,7 @@ function Qi(s, e, t) {
2084
2091
  l.removeEventListener("resize", c), n();
2085
2092
  };
2086
2093
  }
2087
- function Zi(s, e, t, o) {
2094
+ function er(s, e, t, o) {
2088
2095
  o === void 0 && (o = {});
2089
2096
  const {
2090
2097
  ancestorScroll: i = !0,
@@ -2092,63 +2099,63 @@ function Zi(s, e, t, o) {
2092
2099
  elementResize: n = typeof ResizeObserver == "function",
2093
2100
  layoutShift: a = typeof IntersectionObserver == "function",
2094
2101
  animationFrame: l = !1
2095
- } = o, c = Zt(s), d = i || r ? [...c ? Xe(c) : [], ...e ? Xe(e) : []] : [];
2096
- d.forEach((b) => {
2097
- i && b.addEventListener("scroll", t), r && b.addEventListener("resize", t);
2102
+ } = o, c = es(s), d = i || r ? [...c ? Ye(c) : [], ...e ? Ye(e) : []] : [];
2103
+ d.forEach((v) => {
2104
+ i && v.addEventListener("scroll", t), r && v.addEventListener("resize", t);
2098
2105
  });
2099
- const h = c && a ? Qi(c, t, r) : null;
2106
+ const h = c && a ? Zi(c, t, r) : null;
2100
2107
  let f = -1, u = null;
2101
- n && (u = new ResizeObserver((b) => {
2102
- let [x] = b;
2103
- x && x.target === c && u && e && (u.unobserve(e), cancelAnimationFrame(f), f = requestAnimationFrame(() => {
2104
- var C;
2105
- (C = u) == null || C.observe(e);
2108
+ n && (u = new ResizeObserver((v) => {
2109
+ let [w] = v;
2110
+ w && w.target === c && u && e && (u.unobserve(e), cancelAnimationFrame(f), f = requestAnimationFrame(() => {
2111
+ var k;
2112
+ (k = u) == null || k.observe(e);
2106
2113
  })), t();
2107
2114
  }), c && !l && u.observe(c), e && u.observe(e));
2108
- let g, v = l ? Oe(s) : null;
2115
+ let g, b = l ? Ie(s) : null;
2109
2116
  l && y();
2110
2117
  function y() {
2111
- const b = Oe(s);
2112
- v && !Xs(v, b) && t(), v = b, g = requestAnimationFrame(y);
2118
+ const v = Ie(s);
2119
+ b && !Js(b, v) && t(), b = v, g = requestAnimationFrame(y);
2113
2120
  }
2114
2121
  return t(), () => {
2115
- var b;
2116
- d.forEach((x) => {
2117
- i && x.removeEventListener("scroll", t), r && x.removeEventListener("resize", t);
2118
- }), h == null || h(), (b = u) == null || b.disconnect(), u = null, l && cancelAnimationFrame(g);
2122
+ var v;
2123
+ d.forEach((w) => {
2124
+ i && w.removeEventListener("scroll", t), r && w.removeEventListener("resize", t);
2125
+ }), h == null || h(), (v = u) == null || v.disconnect(), u = null, l && cancelAnimationFrame(g);
2119
2126
  };
2120
2127
  }
2121
- const er = Li, tr = Ei, sr = Ii, Mt = Ai, or = Oi, ir = (s, e, t) => {
2128
+ const tr = Ei, sr = Ai, or = Pi, Lt = zi, ir = Oi, rr = (s, e, t) => {
2122
2129
  const o = /* @__PURE__ */ new Map(), i = t ?? {}, r = {
2123
2130
  ...Ys,
2124
2131
  ...i.platform,
2125
2132
  _c: o
2126
2133
  };
2127
- return Ti(s, e, {
2134
+ return Ii(s, e, {
2128
2135
  ...i,
2129
2136
  platform: r
2130
2137
  });
2131
2138
  };
2132
- function Ht(s) {
2139
+ function Bt(s) {
2133
2140
  const e = s.parentNode ?? null;
2134
2141
  return e instanceof ShadowRoot ? e.host : e;
2135
2142
  }
2136
- function rr(s) {
2143
+ function nr(s) {
2137
2144
  if (s.transform !== "none" || s.perspective !== "none" || s.filter !== "none")
2138
2145
  return !0;
2139
2146
  const e = s.backdropFilter;
2140
2147
  return !!(e && e !== "none" || s.willChange && /\b(transform|filter|perspective)\b/.test(s.willChange));
2141
2148
  }
2142
- function bs(s) {
2143
- let e = Ht(s);
2149
+ function vs(s) {
2150
+ let e = Bt(s);
2144
2151
  for (; e && !(e === document.body || e === document.documentElement); ) {
2145
- if (e instanceof Element && rr(getComputedStyle(e)))
2152
+ if (e instanceof Element && nr(getComputedStyle(e)))
2146
2153
  return e;
2147
- e = Ht(e);
2154
+ e = Bt(e);
2148
2155
  }
2149
2156
  return window;
2150
2157
  }
2151
- function nr(s, e, t) {
2158
+ function ar(s, e, t) {
2152
2159
  let o = s;
2153
2160
  for (; o && !(o === document.body || o === document.documentElement); ) {
2154
2161
  if (o instanceof Element) {
@@ -2156,11 +2163,11 @@ function nr(s, e, t) {
2156
2163
  if (Math.abs(i.x - e) < 2 && Math.abs(i.y - t) < 2)
2157
2164
  return o;
2158
2165
  }
2159
- o = Ht(o);
2166
+ o = Bt(o);
2160
2167
  }
2161
2168
  return null;
2162
2169
  }
2163
- function ar(s) {
2170
+ function lr(s) {
2164
2171
  const e = getComputedStyle(s), t = [];
2165
2172
  e.transform !== "none" && t.push(`transform: ${e.transform}`), e.perspective !== "none" && t.push(`perspective: ${e.perspective}`), e.filter !== "none" && t.push(`filter: ${e.filter}`);
2166
2173
  const o = e.backdropFilter;
@@ -2168,11 +2175,11 @@ function ar(s) {
2168
2175
  const i = e.containerType;
2169
2176
  return i && i !== "normal" && t.push(`container-type: ${i}`), t.join("; ");
2170
2177
  }
2171
- function lr(s) {
2178
+ function cr(s) {
2172
2179
  const e = s.id ? `#${s.id}` : "", t = typeof s.className == "string" && s.className ? "." + s.className.split(/\s+/).filter(Boolean).slice(0, 2).join(".") : "";
2173
2180
  return `<${s.tagName.toLowerCase()}${e}${t}>`;
2174
2181
  }
2175
- function cr(s) {
2182
+ function dr(s) {
2176
2183
  const e = s.tolerance ?? 1.5;
2177
2184
  let t = 0, o = 0;
2178
2185
  if (s.offsetParent instanceof Element) {
@@ -2182,46 +2189,46 @@ function cr(s) {
2182
2189
  const i = s.panel.getBoundingClientRect(), r = i.x - (t + s.expectedX), n = i.y - (o + s.expectedY);
2183
2190
  if (Math.abs(r) < e && Math.abs(n) < e)
2184
2191
  return null;
2185
- const a = nr(s.reference, r, n);
2192
+ const a = ar(s.reference, r, n);
2186
2193
  return {
2187
2194
  driftX: r,
2188
2195
  driftY: n,
2189
2196
  culprit: a,
2190
- culpritDescription: a ? lr(a) : "an ancestor element (could not auto-identify)",
2191
- culpritCss: a ? ar(a) : ""
2197
+ culpritDescription: a ? cr(a) : "an ancestor element (could not auto-identify)",
2198
+ culpritCss: a ? lr(a) : ""
2192
2199
  };
2193
2200
  }
2194
- function dr(s, e) {
2201
+ function hr(s, e) {
2195
2202
  var i;
2196
2203
  const t = (i = s.closest) == null ? void 0 : i.call(s, "[data-theme]"), o = t == null ? void 0 : t.getAttribute("data-theme");
2197
2204
  o != null && e.setAttribute("data-theme", o);
2198
2205
  }
2199
- const hr = { top: "bottom", right: "left", bottom: "top", left: "right" };
2200
- function ur(s, e, t) {
2206
+ const ur = { top: "bottom", right: "left", bottom: "top", left: "right" };
2207
+ function mr(s, e, t) {
2201
2208
  if (!t)
2202
2209
  return;
2203
- const o = e.split("-")[0], i = hr[o];
2210
+ const o = e.split("-")[0], i = ur[o];
2204
2211
  s.style.left = t.x != null ? `${t.x}px` : "", s.style.top = t.y != null ? `${t.y}px` : "", s.style.right = "", s.style.bottom = "", s.style[i] = `-${s.offsetWidth / 2}px`;
2205
2212
  }
2206
- function vs(s, e) {
2207
- const t = [er(s.offset ?? 4)];
2213
+ function ys(s, e) {
2214
+ const t = [tr(s.offset ?? 4)];
2208
2215
  if (s.matchWidth) {
2209
2216
  const i = s.matchWidth;
2210
- t.push(Mt({
2217
+ t.push(Lt({
2211
2218
  apply({ rects: r, elements: n }) {
2212
2219
  const a = `${r.reference.width}px`;
2213
2220
  i === "exact" ? n.floating.style.width = a : n.floating.style.minWidth = a;
2214
2221
  }
2215
2222
  }));
2216
2223
  }
2217
- e && t.push(sr({
2224
+ e && t.push(or({
2218
2225
  ...s.lockPlacement === !0 ? { fallbackStrategy: "initialPlacement" } : {},
2219
2226
  ...s.flipPadding != null ? { padding: s.flipPadding } : {}
2220
2227
  }));
2221
2228
  const o = s.shift ?? 8;
2222
- if (o !== !1 && t.push(tr({ padding: o })), s.maxHeight) {
2229
+ if (o !== !1 && t.push(sr({ padding: o })), s.maxHeight) {
2223
2230
  const i = typeof s.maxHeight == "object" ? s.maxHeight.padding : void 0;
2224
- t.push(Mt({
2231
+ t.push(Lt({
2225
2232
  padding: i,
2226
2233
  apply({ availableHeight: r, elements: n }) {
2227
2234
  n.floating.style.maxHeight = `${Math.max(0, r)}px`;
@@ -2230,90 +2237,90 @@ function vs(s, e) {
2230
2237
  }
2231
2238
  if (s.maxWidth) {
2232
2239
  const i = typeof s.maxWidth == "object" ? s.maxWidth.padding : void 0;
2233
- t.push(Mt({
2240
+ t.push(Lt({
2234
2241
  padding: i,
2235
2242
  apply({ availableWidth: r, elements: n }) {
2236
2243
  n.floating.style.maxWidth = `${Math.max(0, r)}px`;
2237
2244
  }
2238
2245
  }));
2239
2246
  }
2240
- return s.arrow && t.push(or({ element: s.arrow.element, padding: s.arrow.padding })), t;
2247
+ return s.arrow && t.push(ir({ element: s.arrow.element, padding: s.arrow.padding })), t;
2241
2248
  }
2242
2249
  function Ue(s, e, t = {}) {
2243
2250
  const o = t.strategy ?? "fixed";
2244
- t.inheritThemeFrom && dr(t.inheritThemeFrom, s), s.style.position = o, s.style.left = "0", s.style.top = "0";
2245
- let i = t.placement ?? "bottom-start", r = t.flip ?? !0, n = vs(t, r);
2251
+ t.inheritThemeFrom && hr(t.inheritThemeFrom, s), s.style.position = o, s.style.left = "0", s.style.top = "0";
2252
+ let i = t.placement ?? "bottom-start", r = t.flip ?? !0, n = ys(t, r);
2246
2253
  const a = t.lockPlacement === "freeze";
2247
2254
  let l = !1;
2248
- const c = !!t.fixedContainingBlock && !t.platform, d = t.platform ?? (c ? { ...Ys, getOffsetParent: () => bs(s) } : void 0), h = () => {
2255
+ const c = !!t.fixedContainingBlock && !t.platform, d = t.platform ?? (c ? { ...Ys, getOffsetParent: () => vs(s) } : void 0), h = () => {
2249
2256
  var u;
2250
- (u = t.beforeCompute) == null || u.call(t), ir(e, s, {
2257
+ (u = t.beforeCompute) == null || u.call(t), rr(e, s, {
2251
2258
  placement: i,
2252
2259
  strategy: o,
2253
2260
  middleware: n,
2254
2261
  ...d ? { platform: d } : {}
2255
- }).then(({ x: g, y: v, placement: y, middlewareData: b }) => {
2256
- var x, C;
2257
- if (s.style.left = `${g}px`, s.style.top = `${v}px`, t.arrow && ur(t.arrow.element, y, b.arrow), a && !l && (l = !0, i = y, r = !1, n = vs(t, !1)), (x = t.onPlaced) == null || x.call(t, y), (C = t.onComputed) == null || C.call(t, { x: g, y: v, placement: y }), t.onDrift && e instanceof Element) {
2258
- const _ = c ? bs(s) : window, N = cr({ panel: s, reference: e, expectedX: g, expectedY: v, offsetParent: _ });
2259
- N && t.onDrift(N);
2262
+ }).then(({ x: g, y: b, placement: y, middlewareData: v }) => {
2263
+ var w, k;
2264
+ if (s.style.left = `${g}px`, s.style.top = `${b}px`, t.arrow && mr(t.arrow.element, y, v.arrow), a && !l && (l = !0, i = y, r = !1, n = ys(t, !1)), (w = t.onPlaced) == null || w.call(t, y), (k = t.onComputed) == null || k.call(t, { x: g, y: b, placement: y }), t.onDrift && e instanceof Element) {
2265
+ const P = c ? vs(s) : window, M = dr({ panel: s, reference: e, expectedX: g, expectedY: b, offsetParent: P });
2266
+ M && t.onDrift(M);
2260
2267
  }
2261
2268
  });
2262
2269
  };
2263
2270
  let f;
2264
- return t.autoUpdate ?? !0 ? f = Zi(e, s, h, t.autoUpdateOptions) : h(), {
2271
+ return t.autoUpdate ?? !0 ? f = er(e, s, h, t.autoUpdateOptions) : h(), {
2265
2272
  update: h,
2266
2273
  destroy() {
2267
2274
  f == null || f(), f = void 0;
2268
2275
  }
2269
2276
  };
2270
2277
  }
2271
- function mr(s) {
2278
+ function pr(s) {
2272
2279
  return typeof s == "number" ? { show: s, hide: s } : { show: (s == null ? void 0 : s.show) ?? 0, hide: (s == null ? void 0 : s.hide) ?? 0 };
2273
2280
  }
2274
- function pr(s) {
2275
- const e = s.container ?? document.body, t = s.placement ?? "top", o = s.visibleClass ?? "is-visible", i = mr(s.delay), r = document.createElement("div");
2281
+ function fr(s) {
2282
+ const e = s.container ?? document.body, t = s.placement ?? "top", o = s.visibleClass ?? "is-visible", i = pr(s.delay), r = document.createElement("div");
2276
2283
  r.setAttribute("role", "tooltip"), s.cssClass && (r.className = s.cssClass), typeof s.content == "string" ? r.textContent = s.content : r.append(s.content);
2277
2284
  let n, a = !1, l, c, d;
2278
2285
  const h = {
2279
2286
  getBoundingClientRect: () => d ?? s.trigger.getBoundingClientRect(),
2280
2287
  contextElement: s.trigger
2281
- }, f = (x) => {
2282
- d = new DOMRect(x.clientX, x.clientY, 0, 0), n == null || n.update();
2288
+ }, f = (w) => {
2289
+ d = new DOMRect(w.clientX, w.clientY, 0, 0), n == null || n.update();
2283
2290
  }, u = () => {
2284
2291
  l && clearTimeout(l), c && clearTimeout(c), l = c = void 0;
2285
2292
  }, g = () => {
2286
- var C;
2293
+ var k;
2287
2294
  if (u(), a)
2288
2295
  return;
2289
- (C = s.onBeforeShow) == null || C.call(s), a = !0, e.append(r);
2290
- const x = s.followCursor ? h : s.trigger;
2291
- n = Ue(r, x, {
2296
+ (k = s.onBeforeShow) == null || k.call(s), a = !0, e.append(r);
2297
+ const w = s.followCursor ? h : s.trigger;
2298
+ n = Ue(r, w, {
2292
2299
  placement: t,
2293
2300
  strategy: s.strategy,
2294
2301
  offset: s.offset ?? 8,
2295
2302
  inheritThemeFrom: s.inheritThemeFrom ?? s.trigger
2296
2303
  }), s.followCursor && s.trigger.addEventListener("mousemove", f), r.classList.add(o);
2297
- }, v = () => {
2304
+ }, b = () => {
2298
2305
  u(), a && (a = !1, r.classList.remove(o), s.followCursor && s.trigger.removeEventListener("mousemove", f), n == null || n.destroy(), n = void 0, r.remove());
2299
2306
  }, y = () => {
2300
2307
  u(), i.show > 0 ? l = setTimeout(g, i.show) : g();
2301
- }, b = () => {
2302
- u(), i.hide > 0 ? c = setTimeout(v, i.hide) : v();
2308
+ }, v = () => {
2309
+ u(), i.hide > 0 ? c = setTimeout(b, i.hide) : b();
2303
2310
  };
2304
- return s.trigger.addEventListener("mouseenter", y), s.trigger.addEventListener("mouseleave", b), s.trigger.addEventListener("focusin", y), s.trigger.addEventListener("focusout", b), {
2311
+ return s.trigger.addEventListener("mouseenter", y), s.trigger.addEventListener("mouseleave", v), s.trigger.addEventListener("focusin", y), s.trigger.addEventListener("focusout", v), {
2305
2312
  element: r,
2306
2313
  get isVisible() {
2307
2314
  return a;
2308
2315
  },
2309
2316
  show: g,
2310
- hide: v,
2317
+ hide: b,
2311
2318
  destroy() {
2312
- s.trigger.removeEventListener("mouseenter", y), s.trigger.removeEventListener("mouseleave", b), s.trigger.removeEventListener("focusin", y), s.trigger.removeEventListener("focusout", b), v();
2319
+ s.trigger.removeEventListener("mouseenter", y), s.trigger.removeEventListener("mouseleave", v), s.trigger.removeEventListener("focusin", y), s.trigger.removeEventListener("focusout", v), b();
2313
2320
  }
2314
2321
  };
2315
2322
  }
2316
- function fr(s) {
2323
+ function gr(s) {
2317
2324
  const e = s.container ?? document.body;
2318
2325
  let t, o = !1;
2319
2326
  const i = s.inheritThemeFrom ?? (s.reference instanceof HTMLElement ? s.reference : void 0);
@@ -2348,21 +2355,21 @@ function fr(s) {
2348
2355
  }
2349
2356
  };
2350
2357
  }
2351
- const Js = ["INIT", "DATA", "UI", "INTERACTION"], ae = fi("MULTISELECT", Js), nt = ae.loggers.INIT, B = ae.loggers.DATA, Q = ae.loggers.UI, W = ae.loggers.INTERACTION, zr = Js.map((s) => `MULTISELECT:${s}`);
2352
- function $r() {
2358
+ const Qs = ["INIT", "DATA", "UI", "INTERACTION"], ae = gi("MULTISELECT", Qs), nt = ae.loggers.INIT, K = ae.loggers.DATA, Q = ae.loggers.UI, W = ae.loggers.INTERACTION, Nr = Qs.map((s) => `MULTISELECT:${s}`);
2359
+ function Dr() {
2353
2360
  ae.enableLogging();
2354
2361
  }
2355
- function Dr() {
2362
+ function $r() {
2356
2363
  ae.disableLogging();
2357
2364
  }
2358
2365
  function Vr(s) {
2359
2366
  ae.setLogLevel(s);
2360
2367
  }
2361
- function Nr(s, e) {
2368
+ function Rr(s, e) {
2362
2369
  const t = s.includes(":") ? s.split(":").pop() : s;
2363
2370
  ae.setCategoryLevel(t, e);
2364
2371
  }
2365
- class ys {
2372
+ class ws {
2366
2373
  constructor(e) {
2367
2374
  m(this, "container");
2368
2375
  m(this, "wrapper");
@@ -2484,7 +2491,7 @@ class ys {
2484
2491
  this.container.removeEventListener("scroll", this.scrollHandler), this.resizeObserver && this.resizeObserver.disconnect(), this.container.innerHTML = "";
2485
2492
  }
2486
2493
  }
2487
- function ws(s) {
2494
+ function xs(s) {
2488
2495
  return {
2489
2496
  treeId: "",
2490
2497
  id: -1,
@@ -2500,114 +2507,114 @@ function ws(s) {
2500
2507
  };
2501
2508
  }
2502
2509
  const je = (s) => !s || typeof s == "string" && s.trim() === "";
2503
- function gr(s, e = ".") {
2510
+ function br(s, e = ".") {
2504
2511
  if (!s || typeof s != "string") return null;
2505
2512
  const t = s.lastIndexOf(e);
2506
2513
  return t === -1 ? "" : s.substring(0, t);
2507
2514
  }
2508
- function xs(s, e, t = ".") {
2515
+ function _s(s, e, t = ".") {
2509
2516
  return je(e) ? s : s.startsWith(e + t) ? s.substring(e.length + t.length) : s;
2510
2517
  }
2511
- function _s(s, e = 0, t = 1, o = ".") {
2518
+ function ks(s, e = 0, t = 1, o = ".") {
2512
2519
  return s.split(o).slice(e, e + t).join(o);
2513
2520
  }
2514
- function br(s, e) {
2521
+ function vr(s, e) {
2515
2522
  return s.split(e).length;
2516
2523
  }
2517
2524
  function ce(s, e) {
2518
2525
  return s[e];
2519
2526
  }
2520
- function vr(s = {}) {
2521
- const e = s.idMember, t = s.pathMember, o = s.getPathCallback, i = s.parentPathMember, r = s.levelMember, n = s.hasChildrenMember, a = s.isSelectableMember, l = s.getIsSelectableCallback, c = s.treeId || "multiselect-tree", d = s.orderMember, h = s.getDisplayValueCallback, f = je(i), u = je(r), g = je(n), v = je(a), y = "x", b = s.treePathSeparator || ".", x = ws();
2522
- let C = 0, _ = null;
2523
- const N = (M) => o ? o(M) : t ? ce(M, t) : void 0, z = {
2524
- treePathSeparator: b,
2525
- root: x,
2527
+ function yr(s = {}) {
2528
+ const e = s.idMember, t = s.pathMember, o = s.getPathCallback, i = s.parentPathMember, r = s.levelMember, n = s.hasChildrenMember, a = s.isSelectableMember, l = s.getIsSelectableCallback, c = s.treeId || "multiselect-tree", d = s.orderMember, h = s.getDisplayValueCallback, f = je(i), u = je(r), g = je(n), b = je(a), y = "x", v = s.treePathSeparator || ".", w = xs();
2529
+ let k = 0, P = null;
2530
+ const M = (L) => o ? o(L) : t ? ce(L, t) : void 0, $ = {
2531
+ treePathSeparator: v,
2532
+ root: w,
2526
2533
  get tree() {
2527
- return Object.values(x.children);
2534
+ return Object.values(w.children);
2528
2535
  },
2529
2536
  /**
2530
2537
  * Every node in depth-first render order (a parent immediately precedes
2531
2538
  * its subtree). Computed once per `insertArray` and cached.
2532
2539
  */
2533
2540
  get flatNodes() {
2534
- if (_) return _;
2535
- const M = [], S = s.isSorted ?? !1, I = s.sortCallback;
2536
- function P(V) {
2537
- let T = Object.values(V.children);
2538
- S && I && T.length > 0 && (T = I(T));
2539
- for (const R of T)
2540
- M.push(R), R.hasChildren && P(R);
2541
+ if (P) return P;
2542
+ const L = [], C = s.isSorted ?? !1, I = s.sortCallback;
2543
+ function O(V) {
2544
+ let S = Object.values(V.children);
2545
+ C && I && S.length > 0 && (S = I(S));
2546
+ for (const H of S)
2547
+ L.push(H), H.hasChildren && O(H);
2541
2548
  }
2542
- return P(x), _ = M, M;
2549
+ return O(w), P = L, L;
2543
2550
  },
2544
- insertArray(M) {
2545
- M = M || [], x.children = {}, C = 0, _ = null;
2546
- const S = [];
2547
- let I = M.map((P, V) => {
2548
- const T = ws();
2549
- T.treeId = c, T.id = e ? ce(P, e) : void 0;
2550
- const R = N(P);
2551
- return R == null || R === "" || typeof R != "string" ? (S.push(`index ${V}`), null) : (T.path = R, (T.id === void 0 || T.id === -1) && (T.id = R), f ? T.parentPath = gr(T.path, b) : T.parentPath = ce(P, i), T.pathSegment = _s(
2552
- xs(T.path, T.parentPath ?? "", b),
2551
+ insertArray(L) {
2552
+ L = L || [], w.children = {}, k = 0, P = null;
2553
+ const C = [];
2554
+ let I = L.map((O, V) => {
2555
+ const S = xs();
2556
+ S.treeId = c, S.id = e ? ce(O, e) : void 0;
2557
+ const H = M(O);
2558
+ return H == null || H === "" || typeof H != "string" ? (C.push(`index ${V}`), null) : (S.path = H, (S.id === void 0 || S.id === -1) && (S.id = H), f ? S.parentPath = br(S.path, v) : S.parentPath = ce(O, i), S.pathSegment = ks(
2559
+ _s(S.path, S.parentPath ?? "", v),
2553
2560
  0,
2554
2561
  1,
2555
- b
2556
- ), u ? T.level = br(T.path, b) : T.level = ce(P, r), g || (T.hasChildren = ce(P, n)), T.data = P, T);
2557
- }).filter((P) => P !== null);
2562
+ v
2563
+ ), u ? S.level = vr(S.path, v) : S.level = ce(O, r), g || (S.hasChildren = ce(O, n)), S.data = O, S);
2564
+ }).filter((O) => O !== null);
2558
2565
  s.isSorted || (s.sortCallback ? I = s.sortCallback(I) : I = G(I));
2559
- for (const P of I)
2560
- K(P.parentPath ?? "", P);
2561
- if (l || !v)
2562
- for (const P of I)
2566
+ for (const O of I)
2567
+ R(O.parentPath ?? "", O);
2568
+ if (l || !b)
2569
+ for (const O of I)
2563
2570
  if (l)
2564
- P.isSelectable = l(P) !== !1;
2571
+ O.isSelectable = l(O) !== !1;
2565
2572
  else {
2566
- const V = ce(P.data, a);
2567
- P.isSelectable = V == null ? !0 : !!V;
2573
+ const V = ce(O.data, a);
2574
+ O.isSelectable = V == null ? !0 : !!V;
2568
2575
  }
2569
- S.length > 0 && console.warn(
2570
- `[ltree ${c}] ${S.length} option(s) had an invalid path and were skipped (pathMember="${t}"). Offending: ${S.slice(0, 5).join(", ")}` + (S.length > 5 ? ", …" : "")
2576
+ C.length > 0 && console.warn(
2577
+ `[ltree ${c}] ${C.length} option(s) had an invalid path and were skipped (pathMember="${t}"). Offending: ${C.slice(0, 5).join(", ")}` + (C.length > 5 ? ", …" : "")
2571
2578
  );
2572
2579
  },
2573
- getNodeByPath(M, S) {
2574
- let I = S || x;
2575
- if (M) {
2576
- const P = M.split(b);
2577
- for (let V = 0; V < P.length; V++) {
2578
- const T = y + P[V];
2579
- if (!I.children.hasOwnProperty(T))
2580
+ getNodeByPath(L, C) {
2581
+ let I = C || w;
2582
+ if (L) {
2583
+ const O = L.split(v);
2584
+ for (let V = 0; V < O.length; V++) {
2585
+ const S = y + O[V];
2586
+ if (!I.children.hasOwnProperty(S))
2580
2587
  return null;
2581
- I = I.children[T];
2588
+ I = I.children[S];
2582
2589
  }
2583
2590
  }
2584
2591
  return I;
2585
2592
  }
2586
2593
  };
2587
- function K(M, S) {
2588
- const I = z.getNodeByPath(M);
2594
+ function R(L, C) {
2595
+ const I = $.getNodeByPath(L);
2589
2596
  if (!I)
2590
- return `Node: ${S.path} - Could not find parent node: ${M}`;
2591
- u && (S.level = (I.level || 0) + 1);
2592
- const P = y + _s(xs(S.path, M, b), 0, 1, b);
2593
- return I.children.hasOwnProperty(P) || (I.children[P] = S, g && !I.hasChildren && (I.hasChildren = !0), C = Math.max(C, S.level || 0)), null;
2594
- }
2595
- function G(M) {
2596
- return M.sort((S, I) => {
2597
- const P = S.level || 0, V = I.level || 0;
2598
- if (P !== V) return P - V;
2599
- if (S.parentPath !== I.parentPath)
2600
- return S.parentPath ? I.parentPath ? S.parentPath.localeCompare(I.parentPath) : 1 : -1;
2601
- if (d && S.data && I.data) {
2602
- const T = ce(S.data, d) ?? 0, R = ce(I.data, d) ?? 0;
2603
- if (T !== R) return T - R;
2597
+ return `Node: ${C.path} - Could not find parent node: ${L}`;
2598
+ u && (C.level = (I.level || 0) + 1);
2599
+ const O = y + ks(_s(C.path, L, v), 0, 1, v);
2600
+ return I.children.hasOwnProperty(O) || (I.children[O] = C, g && !I.hasChildren && (I.hasChildren = !0), k = Math.max(k, C.level || 0)), null;
2601
+ }
2602
+ function G(L) {
2603
+ return L.sort((C, I) => {
2604
+ const O = C.level || 0, V = I.level || 0;
2605
+ if (O !== V) return O - V;
2606
+ if (C.parentPath !== I.parentPath)
2607
+ return C.parentPath ? I.parentPath ? C.parentPath.localeCompare(I.parentPath) : 1 : -1;
2608
+ if (d && C.data && I.data) {
2609
+ const S = ce(C.data, d) ?? 0, H = ce(I.data, d) ?? 0;
2610
+ if (S !== H) return S - H;
2604
2611
  }
2605
- return h ? h(S).localeCompare(h(I)) : S.path.localeCompare(I.path);
2612
+ return h ? h(C).localeCompare(h(I)) : C.path.localeCompare(I.path);
2606
2613
  });
2607
2614
  }
2608
- return z;
2615
+ return $;
2609
2616
  }
2610
- function ks(s, e) {
2617
+ function Cs(s, e) {
2611
2618
  const t = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Set(), r = (l) => String(e(l.data)), n = (l) => {
2612
2619
  t.set(r(l), l);
2613
2620
  const c = [];
@@ -2619,7 +2626,7 @@ function ks(s, e) {
2619
2626
  for (const l of a) n(l);
2620
2627
  return { nodeByValue: t, atomsUnder: o, atomPaths: i, roots: a };
2621
2628
  }
2622
- function es(s, e, t) {
2629
+ function ts(s, e, t) {
2623
2630
  const o = s.atomsUnder.get(e.path);
2624
2631
  if (!o || o.length === 0) return "unchecked";
2625
2632
  let i = 0;
@@ -2635,17 +2642,17 @@ function Ke(s, e) {
2635
2642
  }
2636
2643
  return t;
2637
2644
  }
2638
- function yr(s, e, t) {
2639
- const o = s.atomsUnder.get(e.path) ?? [], i = new Set(t), r = es(s, e, t), n = [], a = [];
2645
+ function wr(s, e, t) {
2646
+ const o = s.atomsUnder.get(e.path) ?? [], i = new Set(t), r = ts(s, e, t), n = [], a = [];
2640
2647
  if (r === "checked")
2641
2648
  for (const l of o) i.delete(l) && a.push(l);
2642
2649
  else
2643
2650
  for (const l of o) i.has(l) || (i.add(l), n.push(l));
2644
2651
  return { checkedAtoms: i, addedAtoms: n, removedAtoms: a };
2645
2652
  }
2646
- function Lt(s, e, t, o) {
2653
+ function Et(s, e, t, o) {
2647
2654
  const i = (a) => String(o(a.data)), r = [], n = (a) => {
2648
- const l = es(s, a, e);
2655
+ const l = ts(s, a, e);
2649
2656
  if (l === "unchecked") return;
2650
2657
  const c = a.isSelectable !== !1, d = Object.values(a.children);
2651
2658
  if (t === "leaves") {
@@ -2667,7 +2674,7 @@ function Lt(s, e, t, o) {
2667
2674
  for (const a of s.roots) n(a);
2668
2675
  return r;
2669
2676
  }
2670
- class wr {
2677
+ class xr {
2671
2678
  constructor(e, t = {}) {
2672
2679
  m(this, "element");
2673
2680
  m(this, "instanceId");
@@ -2717,6 +2724,10 @@ class wr {
2717
2724
  // Inline ✕ inside the fullscreen search box that clears the term. Shown only while
2718
2725
  // there's text; touch has no keyboard Escape, so this is the way to reset a search.
2719
2726
  m(this, "fullscreenSearchClear", null);
2727
+ // Leading mode toggle inside the fullscreen search box (opt-in via
2728
+ // isSearchModeToggleShown) that flips searchMode filter<->navigate live. Its icon
2729
+ // reflects the current mode; clicking re-projects the current term in place.
2730
+ m(this, "fullscreenModeToggle", null);
2720
2731
  // Navigate-mode match navigator shown under the fullscreen search box: a result
2721
2732
  // count ("3 of 12") plus prev/next buttons that step through matches. Touch has no
2722
2733
  // Ctrl+Arrow shortcut, so these buttons are the on-screen substitute. Only built in
@@ -2728,6 +2739,9 @@ class wr {
2728
2739
  // Releases this instance's page-scroll lock (null when not locked). The core
2729
2740
  // helper is ref-counted; we hold at most one lock per instance. See lockBodyScroll().
2730
2741
  m(this, "bodyScrollUnlock", null);
2742
+ // Saved inline `overflow-x` of <html> while a fullscreen sheet clamps the host
2743
+ // document's horizontal overflow (null when not clamped). See clampDocumentOverflowX().
2744
+ m(this, "overflowXClamp", null);
2731
2745
  // Detaches the visualViewport listener that shrinks the fullscreen sheet to sit
2732
2746
  // above the soft keyboard (null when not attached). See observeKeyboardInset().
2733
2747
  m(this, "keyboardInsetCleanup", null);
@@ -2784,7 +2798,7 @@ class wr {
2784
2798
  this.element = e, this.instanceId = `MS-${Math.random().toString(36).slice(2, 11)}`, this.options = {
2785
2799
  // String options
2786
2800
  searchHint: e.dataset.searchHint || "",
2787
- searchPlaceholder: e.dataset.searchPlaceholder || "Search...",
2801
+ searchPlaceholder: e.dataset.searchPlaceholder || void 0,
2788
2802
  selectPlaceholder: e.dataset.selectPlaceholder || "Pick an option...",
2789
2803
  noDataPlaceholder: e.dataset.noDataPlaceholder || void 0,
2790
2804
  dropdownMinWidth: e.dataset.dropdownMinWidth || void 0,
@@ -2811,6 +2825,7 @@ class wr {
2811
2825
  isSearchEnabled: e.dataset.enableSearch !== "false",
2812
2826
  isAddNewAllowed: e.dataset.allowAddNew === "true",
2813
2827
  isCounterShown: e.dataset.showCounter === "true",
2828
+ isSearchModeToggleShown: e.dataset.showSearchModeToggle === "true",
2814
2829
  isKeepOptionsOnSearch: e.dataset.keepOptionsOnSearch !== "false",
2815
2830
  shouldKeepSearchOnClose: e.dataset.keepSearchOnClose !== "false",
2816
2831
  // Data and callbacks
@@ -2971,7 +2986,7 @@ class wr {
2971
2986
  try {
2972
2987
  this.allOptions = JSON.parse(e);
2973
2988
  } catch (t) {
2974
- B.error(`[${this.instanceId}] Failed to parse data-options:`, t), this.allOptions = [];
2989
+ K.error(`[${this.instanceId}] Failed to parse data-options:`, t), this.allOptions = [];
2975
2990
  }
2976
2991
  else this.options.options && (this.allOptions = this.options.options);
2977
2992
  this.filteredOptions = [...this.allOptions], this.isTreeMode() && this.buildTree();
@@ -2985,7 +3000,7 @@ class wr {
2985
3000
  }
2986
3001
  /** (Re)build the ltree from `allOptions` and derive the visible flat list. */
2987
3002
  buildTree() {
2988
- this.tree = vr({
3003
+ this.tree = yr({
2989
3004
  idMember: this.options.valueMember,
2990
3005
  pathMember: this.options.pathMember,
2991
3006
  getPathCallback: this.options.getPathCallback,
@@ -2997,7 +3012,7 @@ class wr {
2997
3012
  treePathSeparator: this.options.treePathSeparator,
2998
3013
  treeId: this.instanceId,
2999
3014
  getDisplayValueCallback: (e) => this.getItemDisplayValue(e.data)
3000
- }), this.tree.insertArray(this.allOptions), this.cascadeIndex = this.isCascadeMode() ? ks(this.tree, (e) => String(this.getItemValue(e))) : null, this.rebuildTreeVisible();
3015
+ }), this.tree.insertArray(this.allOptions), this.cascadeIndex = this.isCascadeMode() ? Cs(this.tree, (e) => String(this.getItemValue(e))) : null, this.rebuildTreeVisible();
3001
3016
  }
3002
3017
  /**
3003
3018
  * Whether cascade checkbox mode is active: a multi-select tree with
@@ -3020,7 +3035,7 @@ class wr {
3020
3035
  * so badges / form / change events reflect the policy (rolled-up branches, etc.).
3021
3036
  */
3022
3037
  toggleTreeCascade(e) {
3023
- const t = this.cascadeIndex, o = Ke(t, this.selectedValues), { checkedAtoms: i } = yr(t, e, o);
3038
+ const t = this.cascadeIndex, o = Ke(t, this.selectedValues), { checkedAtoms: i } = wr(t, e, o);
3024
3039
  this.commitCascadeAtoms(i);
3025
3040
  }
3026
3041
  /**
@@ -3031,7 +3046,7 @@ class wr {
3031
3046
  */
3032
3047
  commitCascadeAtoms(e) {
3033
3048
  var l;
3034
- const t = this.cascadeIndex, o = Lt(
3049
+ const t = this.cascadeIndex, o = Et(
3035
3050
  t,
3036
3051
  e,
3037
3052
  this.cascadePolicy(),
@@ -3056,7 +3071,7 @@ class wr {
3056
3071
  */
3057
3072
  counterSelection() {
3058
3073
  if (this.isCascadeMode() && this.cascadeIndex) {
3059
- const e = Lt(
3074
+ const e = Et(
3060
3075
  this.cascadeIndex,
3061
3076
  this.cascadeCheckedAtoms,
3062
3077
  "rolled-up",
@@ -3137,6 +3152,27 @@ class wr {
3137
3152
  const n = t.filter((a) => r.has(a.path));
3138
3153
  this.treeNodes = n, this.filteredOptions = n.map((a) => a.data);
3139
3154
  }
3155
+ /**
3156
+ * Tree + `search-mode="navigate"`: keep the ENTIRE tree visible (the tree is always
3157
+ * fully expanded, so `flatNodes` is the whole thing) and record which visible rows
3158
+ * match the term in `matchingIndices` — the flat-list navigate behavior, but over
3159
+ * `treeNodes`. Filter mode collapses the hierarchy to matches + ancestors; navigate
3160
+ * mode instead leaves the structure intact so the user can jump between matches
3161
+ * (Ctrl+Arrow on desktop, the fullscreen navigator on touch). Returns the index of
3162
+ * the first match, or -1 (no term / no matches), so the caller can set focus.
3163
+ */
3164
+ rebuildTreeVisibleForNavigate() {
3165
+ if (this.matchingIndices.clear(), !this.tree)
3166
+ return this.treeNodes = [], this.filteredOptions = [], -1;
3167
+ const e = this.tree.flatNodes;
3168
+ this.treeNodes = e, this.filteredOptions = e.map((i) => i.data);
3169
+ const t = (this.searchTerm || "").trim().toLowerCase();
3170
+ if (!t) return -1;
3171
+ let o = -1;
3172
+ return e.forEach((i, r) => {
3173
+ this.getItemSearchValue(i.data).toLowerCase().includes(t) && (this.matchingIndices.add(r), o === -1 && (o = r));
3174
+ }), o;
3175
+ }
3140
3176
  /**
3141
3177
  * (Re)compute `isRTL` from the host's `dir` (or an RTL ancestor) and derive the
3142
3178
  * direction-mirrored badges position. Pure state — callers apply the DOM effects
@@ -3267,7 +3303,7 @@ class wr {
3267
3303
  }
3268
3304
  const e = this.scaledOptionHeight(), t = this.options.virtualScrollBuffer ?? 10;
3269
3305
  requestAnimationFrame(() => {
3270
- this.optionsContainer && (this.virtualScroll ? (this.virtualScroll.setItemHeight(e), this.virtualScroll.setItems(this.filteredOptions)) : this.virtualScroll = new ys({
3306
+ this.optionsContainer && (this.virtualScroll ? (this.virtualScroll.setItemHeight(e), this.virtualScroll.setItems(this.filteredOptions)) : this.virtualScroll = new ws({
3271
3307
  container: this.optionsContainer,
3272
3308
  itemHeight: e,
3273
3309
  items: this.filteredOptions,
@@ -3301,14 +3337,14 @@ class wr {
3301
3337
  if (!(d.getIsVisibleCallback ? d.getIsVisibleCallback(this) : d.isVisible ?? !0)) return;
3302
3338
  let u;
3303
3339
  d.getIsDisabledCallback ? u = d.getIsDisabledCallback(this) : d.isDisabled !== void 0 ? u = d.isDisabled : u = this.getBuiltInActionDisabled(d.action);
3304
- const g = u ? " disabled" : "", v = d.getTextCallback ? d.getTextCallback(this) : d.text;
3340
+ const g = u ? " disabled" : "", b = d.getTextCallback ? d.getTextCallback(this) : d.text;
3305
3341
  let y = "";
3306
3342
  if (d.getClassCallback) {
3307
- const C = d.getClassCallback(this);
3308
- y = Array.isArray(C) ? ` ${C.join(" ")}` : C ? ` ${C}` : "";
3343
+ const k = d.getClassCallback(this);
3344
+ y = Array.isArray(k) ? ` ${k.join(" ")}` : k ? ` ${k}` : "";
3309
3345
  } else d.cssClass && (y = ` ${d.cssClass}`);
3310
- const b = Math.max(1, Math.floor(d.row ?? 1)), x = `<button type="button"${g} class="ms__action-btn${y}" data-action="${d.action}" data-button-index="${h}">${v}</button>`;
3311
- l.has(b) || l.set(b, []), l.get(b).push(x);
3346
+ const v = Math.max(1, Math.floor(d.row ?? 1)), w = `<button type="button"${g} class="ms__action-btn${y}" data-action="${d.action}" data-button-index="${h}">${b}</button>`;
3347
+ l.has(v) || l.set(v, []), l.get(v).push(w);
3312
3348
  }), l.size === 0) return "";
3313
3349
  const c = Array.from(l.keys()).sort((d, h) => d - h).map((d) => `<div class="ms__actions-row" data-row="${d}">${l.get(d).join("")}</div>`).join("");
3314
3350
  return `<div class="ms__actions${i}${r}${n}${a}">${c}</div>`;
@@ -3325,9 +3361,10 @@ class wr {
3325
3361
  isFocused: c,
3326
3362
  isMatched: d,
3327
3363
  isDisabled: a,
3364
+ ...Ot(this.presentationMode),
3328
3365
  isTreeNode: !1
3329
- }, v = this.options.renderOptionContentCallback(e, g);
3330
- typeof v == "string" ? u += v : u += v.outerHTML;
3366
+ }, b = this.options.renderOptionContentCallback(e, g);
3367
+ typeof b == "string" ? u += b : u += b.outerHTML;
3331
3368
  } else
3332
3369
  r && (u += `<span class="ms__option-icon">${r}</span>`), u += '<div class="ms__option-text">', u += `<div class="ms__option-title">${this.highlightMatch(i, this.searchTerm)}</div>`, n && (u += `<div class="ms__option-subtitle">${n}</div>`), u += "</div>";
3333
3370
  return u += this.renderOptionInfoButton(), u += "</div>", u += "</div>", u;
@@ -3351,33 +3388,34 @@ class wr {
3351
3388
  * chevron/toggle — every node is just a normal, selectable option.
3352
3389
  */
3353
3390
  renderTreeNode(e, t) {
3354
- const o = e.data, i = this.getItemValue(o), r = this.getItemDisplayValue(o), n = this.getItemIcon(o), a = this.getItemSubtitle(o), l = this.getItemDisabled(o), c = this.isCascadeMode() && this.cascadeIndex, d = c ? es(this.cascadeIndex, e, this.cascadeCheckedAtoms) : null, h = c ? d === "checked" : this.selectedValues.has(String(i)), f = d === "indeterminate", u = t === this.focusedIndex, g = e.isSelectable !== !1, v = e.level ?? 1, y = Math.max(0, v - 1), b = ["ms__option", "ms__option--tree"];
3355
- b.push(e.hasChildren ? "ms__option--tree-branch" : "ms__option--tree-leaf"), h && b.push("ms__option--selected"), f && b.push("ms__option--indeterminate"), u && b.push("ms__option--focused"), l && b.push("ms__option--disabled"), g || b.push("ms__option--tree-unselectable");
3356
- const x = this.options.checkboxAlign && this.options.checkboxAlign !== "center" ? ` data-checkbox-align="${this.options.checkboxAlign}"` : "", C = g ? "" : ' data-selectable="false"';
3357
- let _ = `<div class="${b.join(" ")}" data-value="${i}" data-index="${t}" data-path="${e.path}" data-level="${v}" style="--ms-tree-depth: ${y};"${x}${C}>`;
3358
- if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && g && (_ += `<input type="checkbox" class="${f ? "ms__checkbox ms__checkbox--indeterminate" : "ms__checkbox"}" ${h ? "checked" : ""}${f ? ' aria-checked="mixed"' : ""} ${l ? "disabled" : ""}>`), _ += '<div class="ms__option-content">', this.options.renderOptionContentCallback) {
3359
- const N = {
3391
+ const o = e.data, i = this.getItemValue(o), r = this.getItemDisplayValue(o), n = this.getItemIcon(o), a = this.getItemSubtitle(o), l = this.getItemDisabled(o), c = this.isCascadeMode() && this.cascadeIndex, d = c ? ts(this.cascadeIndex, e, this.cascadeCheckedAtoms) : null, h = c ? d === "checked" : this.selectedValues.has(String(i)), f = d === "indeterminate", u = t === this.focusedIndex, g = this.matchingIndices.has(t), b = e.isSelectable !== !1, y = e.level ?? 1, v = Math.max(0, y - 1), w = ["ms__option", "ms__option--tree"];
3392
+ w.push(e.hasChildren ? "ms__option--tree-branch" : "ms__option--tree-leaf"), h && w.push("ms__option--selected"), f && w.push("ms__option--indeterminate"), u && w.push("ms__option--focused"), g && w.push("ms__option--matched"), l && w.push("ms__option--disabled"), b || w.push("ms__option--tree-unselectable");
3393
+ const k = this.options.checkboxAlign && this.options.checkboxAlign !== "center" ? ` data-checkbox-align="${this.options.checkboxAlign}"` : "", P = b ? "" : ' data-selectable="false"';
3394
+ let M = `<div class="${w.join(" ")}" data-value="${i}" data-index="${t}" data-path="${e.path}" data-level="${y}" style="--ms-tree-depth: ${v};"${k}${P}>`;
3395
+ if (this.options.isCheckboxesShown && this.options.isMultipleEnabled && b && (M += `<input type="checkbox" class="${f ? "ms__checkbox ms__checkbox--indeterminate" : "ms__checkbox"}" ${h ? "checked" : ""}${f ? ' aria-checked="mixed"' : ""} ${l ? "disabled" : ""}>`), M += '<div class="ms__option-content">', this.options.renderOptionContentCallback) {
3396
+ const $ = {
3360
3397
  index: t,
3361
3398
  isSelected: h,
3362
3399
  isFocused: u,
3363
- isMatched: !1,
3400
+ isMatched: g,
3364
3401
  isDisabled: l,
3402
+ ...Ot(this.presentationMode),
3365
3403
  // Tree metadata — lets the callback branch on depth / branch-vs-leaf /
3366
3404
  // tristate without re-deriving any of it from the raw data item.
3367
3405
  isTreeNode: !0,
3368
3406
  isBranch: e.hasChildren,
3369
3407
  isLeaf: !e.hasChildren,
3370
3408
  childCount: Object.keys(e.children).length,
3371
- level: v,
3372
- depth: y,
3409
+ level: y,
3410
+ depth: v,
3373
3411
  path: e.path,
3374
- isSelectable: g,
3412
+ isSelectable: b,
3375
3413
  isIndeterminate: f
3376
- }, z = this.options.renderOptionContentCallback(o, N);
3377
- _ += typeof z == "string" ? z : z.outerHTML;
3414
+ }, R = this.options.renderOptionContentCallback(o, $);
3415
+ M += typeof R == "string" ? R : R.outerHTML;
3378
3416
  } else
3379
- n && (_ += `<span class="ms__option-icon">${n}</span>`), _ += '<div class="ms__option-text">', _ += `<div class="ms__option-title">${this.highlightMatch(r, this.searchTerm)}</div>`, a && (_ += `<div class="ms__option-subtitle">${a}</div>`), _ += "</div>";
3380
- return _ += this.renderOptionInfoButton(), _ += "</div>", _ += "</div>", _;
3417
+ n && (M += `<span class="ms__option-icon">${n}</span>`), M += '<div class="ms__option-text">', M += `<div class="ms__option-title">${this.highlightMatch(r, this.searchTerm)}</div>`, a && (M += `<div class="ms__option-subtitle">${a}</div>`), M += "</div>";
3418
+ return M += this.renderOptionInfoButton(), M += "</div>", M += "</div>", M;
3381
3419
  }
3382
3420
  highlightMatch(e, t) {
3383
3421
  if (!t) return e;
@@ -3401,7 +3439,22 @@ class wr {
3401
3439
  * search is unusable → the search placeholder.
3402
3440
  */
3403
3441
  getPlaceholderText() {
3404
- return this.options.noDataPlaceholder && this.allOptions.length === 0 ? this.options.noDataPlaceholder : this.isSearchUsable ? this.options.searchPlaceholder : this.options.selectPlaceholder || this.options.searchPlaceholder;
3442
+ return this.options.noDataPlaceholder && this.allOptions.length === 0 ? this.options.noDataPlaceholder : this.isSearchUsable ? this.getSearchPlaceholder() : this.options.selectPlaceholder || this.getSearchPlaceholder();
3443
+ }
3444
+ /**
3445
+ * The search field placeholder. An explicit `searchPlaceholder` always wins and stays
3446
+ * fixed. Otherwise the default is "Search..." — except when the in-overlay mode toggle
3447
+ * is enabled (`isSearchModeToggleShown`), where it becomes mode-aware so the field labels
3448
+ * the current behavior: "Search…" in navigate mode, "Filter…" in filter mode. Refreshed
3449
+ * on a live mode switch (see setSearchModeLive → refreshSearchPlaceholder).
3450
+ */
3451
+ getSearchPlaceholder() {
3452
+ return this.options.searchPlaceholder ? this.options.searchPlaceholder : this.options.isSearchModeToggleShown ? (this.options.searchMode || "filter") === "navigate" ? "Search…" : "Filter…" : "Search...";
3453
+ }
3454
+ /** Re-apply the (possibly mode-aware) placeholder to the live inputs after a mode switch. */
3455
+ refreshSearchPlaceholder() {
3456
+ const e = this.getPlaceholderText();
3457
+ this.input && (this.input.placeholder = e), this.fullscreenSearchInput && (this.fullscreenSearchInput.placeholder = e);
3405
3458
  }
3406
3459
  renderBadges() {
3407
3460
  this.destroyAllBadgeTooltips();
@@ -3510,14 +3563,14 @@ class wr {
3510
3563
  if (this.options.beforeSearchCallback) {
3511
3564
  const o = this.options.beforeSearchCallback(e);
3512
3565
  if (o === null) {
3513
- B.debug(`[${this.instanceId}] beforeSearchCallback blocked search for term:`, e), this.abortInFlightSearch(), this.matchingIndices.clear(), this.isTreeMode() ? (this.searchTerm = "", this.rebuildTreeVisible()) : this.filteredOptions = [...this.allOptions], this.renderDropdown();
3566
+ K.debug(`[${this.instanceId}] beforeSearchCallback blocked search for term:`, e), this.abortInFlightSearch(), this.matchingIndices.clear(), this.isTreeMode() ? (this.searchTerm = "", this.rebuildTreeVisible()) : this.filteredOptions = [...this.allOptions], this.renderDropdown();
3514
3567
  return;
3515
3568
  }
3516
- t = o, t !== e && B.debug(`[${this.instanceId}] beforeSearchCallback transformed: "${e}" -> "${t}"`);
3569
+ t = o, t !== e && K.debug(`[${this.instanceId}] beforeSearchCallback transformed: "${e}" -> "${t}"`);
3517
3570
  }
3518
3571
  if (this.options.searchCallback) {
3519
3572
  if (t.length < this.options.minSearchLength) {
3520
- this.abortInFlightSearch(), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? (this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(this.allOptions) : this.filteredOptions = [...this.allOptions], B.debug(`[${this.instanceId}] Search term below minimum, showing ${this.allOptions.length} initial options`)) : (this.filteredOptions = [], this.isTreeMode() && (this.treeNodes = [])), this.matchingIndices.clear(), this.renderDropdown();
3573
+ this.abortInFlightSearch(), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? (this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(this.allOptions) : this.filteredOptions = [...this.allOptions], K.debug(`[${this.instanceId}] Search term below minimum, showing ${this.allOptions.length} initial options`)) : (this.filteredOptions = [], this.isTreeMode() && (this.treeNodes = [])), this.matchingIndices.clear(), this.renderDropdown();
3521
3574
  return;
3522
3575
  }
3523
3576
  this.searchDebounceTimer && (clearTimeout(this.searchDebounceTimer), this.searchDebounceTimer = void 0);
@@ -3527,21 +3580,26 @@ class wr {
3527
3580
  }, o) : await this.performAsyncSearch(e, t);
3528
3581
  } else {
3529
3582
  if (this.isTreeMode()) {
3530
- this.rebuildTreeVisible(), this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown();
3583
+ if ((this.options.searchMode || "filter") === "navigate") {
3584
+ const o = this.rebuildTreeVisibleForNavigate();
3585
+ this.searchTerm.trim() ? o >= 0 && (this.focusedIndex = o) : this.focusedIndex = -1, this.renderDropdown(), this.focusedIndex >= 0 && this.scrollToFocused(), this.updateFullscreenNav();
3586
+ return;
3587
+ }
3588
+ this.rebuildTreeVisible(), this.matchingIndices.clear(), this.focusedIndex = this.searchTerm.trim() && this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown();
3531
3589
  return;
3532
3590
  }
3533
3591
  if (!t)
3534
- this.filteredOptions = [...this.allOptions], this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1;
3592
+ this.filteredOptions = [...this.allOptions], this.matchingIndices.clear(), this.focusedIndex = -1;
3535
3593
  else {
3536
3594
  const o = this.options.searchMode || "filter", i = t.toLowerCase();
3537
3595
  if (o === "filter")
3538
- this.filteredOptions = this.allOptions.filter((r) => this.getItemSearchValue(r).toLowerCase().includes(i)), this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1, B.debug(`[${this.instanceId}] Filter mode: ${this.filteredOptions.length} matches for "${t}"`);
3596
+ this.filteredOptions = this.allOptions.filter((r) => this.getItemSearchValue(r).toLowerCase().includes(i)), this.matchingIndices.clear(), this.focusedIndex = this.filteredOptions.length > 0 ? 0 : -1, K.debug(`[${this.instanceId}] Filter mode: ${this.filteredOptions.length} matches for "${t}"`);
3539
3597
  else {
3540
3598
  this.filteredOptions = [...this.allOptions], this.matchingIndices.clear();
3541
3599
  let r = -1;
3542
3600
  this.allOptions.forEach((n, a) => {
3543
3601
  this.getItemSearchValue(n).toLowerCase().includes(i) && (this.matchingIndices.add(a), r === -1 && (r = a));
3544
- }), r >= 0 ? (this.focusedIndex = r, B.debug(`[${this.instanceId}] Navigate mode: ${this.matchingIndices.size} matches, jumped to index ${r}`)) : B.debug(`[${this.instanceId}] Navigate mode: No matches found, keeping previous focus`);
3602
+ }), r >= 0 ? (this.focusedIndex = r, K.debug(`[${this.instanceId}] Navigate mode: ${this.matchingIndices.size} matches, jumped to index ${r}`)) : K.debug(`[${this.instanceId}] Navigate mode: No matches found, keeping previous focus`);
3545
3603
  }
3546
3604
  }
3547
3605
  this.renderDropdown(), this.options.searchMode === "navigate" && this.focusedIndex >= 0 && this.scrollToFocused(), this.updateFullscreenNav();
@@ -3565,15 +3623,15 @@ class wr {
3565
3623
  async performAsyncSearch(e, t) {
3566
3624
  this.abortInFlightSearch();
3567
3625
  const o = new AbortController();
3568
- this.searchAbortController = o, this.isLoading = !0, this.renderDropdown(), B.debug(`[${this.instanceId}] Loading data for search term:`, t);
3626
+ this.searchAbortController = o, this.isLoading = !0, this.renderDropdown(), K.debug(`[${this.instanceId}] Loading data for search term:`, t);
3569
3627
  try {
3570
3628
  const i = await this.options.searchCallback(t, o.signal);
3571
3629
  if (o.signal.aborted || this.searchTerm !== e) return;
3572
3630
  const r = i || [];
3573
- this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(r) : this.filteredOptions = [...r], this.isLoading = !1, this.matchingIndices.clear(), this.focusedIndex = this.options.isSearchEnabled && this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown(), B.debug(`[${this.instanceId}] Loaded ${r.length} results`);
3631
+ this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(r) : this.filteredOptions = [...r], this.isLoading = !1, this.matchingIndices.clear(), this.focusedIndex = this.options.isSearchEnabled && this.filteredOptions.length > 0 ? 0 : -1, this.renderDropdown(), K.debug(`[${this.instanceId}] Loaded ${r.length} results`);
3574
3632
  } catch (i) {
3575
3633
  if (o.signal.aborted) return;
3576
- B.error(`[${this.instanceId}] Error loading data:`, i), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(this.allOptions) : this.filteredOptions = [...this.allOptions] : (this.filteredOptions = [], this.isTreeMode() && (this.treeNodes = [])), this.matchingIndices.clear(), this.renderDropdown();
3634
+ K.error(`[${this.instanceId}] Error loading data:`, i), this.isLoading = !1, this.options.isKeepOptionsOnSearch ? this.isTreeMode() ? this.rebuildTreeVisibleFromMatches(this.allOptions) : this.filteredOptions = [...this.allOptions] : (this.filteredOptions = [], this.isTreeMode() && (this.treeNodes = [])), this.matchingIndices.clear(), this.renderDropdown();
3577
3635
  } finally {
3578
3636
  this.searchAbortController === o && (this.searchAbortController = void 0);
3579
3637
  }
@@ -3815,11 +3873,11 @@ class wr {
3815
3873
  async handleAddNew(e) {
3816
3874
  if (this.options.addNewCallback)
3817
3875
  try {
3818
- B.debug(`[${this.instanceId}] Adding new option:`, e);
3876
+ K.debug(`[${this.instanceId}] Adding new option:`, e);
3819
3877
  const t = await this.options.addNewCallback(e);
3820
3878
  this.allOptions.push(t), this.filteredOptions.push(t), this.selectOption(t), this.input.value = "", this.renderDropdown(), this.renderBadges(), this.options.isCloseOnSelect && this.close();
3821
3879
  } catch (t) {
3822
- B.error(`[${this.instanceId}] Error adding new option:`, t);
3880
+ K.error(`[${this.instanceId}] Error adding new option:`, t);
3823
3881
  }
3824
3882
  }
3825
3883
  selectOption(e) {
@@ -3967,12 +4025,38 @@ class wr {
3967
4025
  * and a redundant call is a no-op rather than acquiring a second.
3968
4026
  */
3969
4027
  lockBodyScroll() {
3970
- this.bodyScrollUnlock || (this.bodyScrollUnlock = oi());
4028
+ this.bodyScrollUnlock || (this.bodyScrollUnlock = ii());
3971
4029
  }
3972
4030
  /** Restore page scroll (no-op if it wasn't locked). */
3973
4031
  unlockBodyScroll() {
3974
4032
  this.bodyScrollUnlock && (this.bodyScrollUnlock(), this.bodyScrollUnlock = null);
3975
4033
  }
4034
+ /**
4035
+ * Clip the host document's horizontal overflow while a fullscreen sheet is open.
4036
+ *
4037
+ * A page that overflows horizontally (e.g. an unbreakable-wide token in a heading)
4038
+ * makes the mobile browser SHRINK-TO-FIT: it zooms the page out so the overflow fits,
4039
+ * which desyncs the visual viewport from the layout viewport. Our fullscreen sheet is
4040
+ * `position: fixed` — anchored to the LAYOUT viewport — so under that zoom it no longer
4041
+ * lands flush against the physical screen edges, and the top slips under the system bar
4042
+ * (looks like "the bar covers the sheet"). This is NOT a safe-area problem; safe-area
4043
+ * insets are 0 in that state. Clamping `overflow-x: hidden` on <html>/<body> removes the
4044
+ * overflow, so the browser drops the zoom and the sheet sits flush. Complements
4045
+ * lockBodyScroll() (vertical axis); the saved inline value is restored on close.
4046
+ *
4047
+ * Only <html> is touched (not <body>): clipping the root's horizontal overflow is
4048
+ * enough to collapse the scrollWidth and cancel the shrink-to-fit, and it avoids
4049
+ * conflicting with core's lockBodyScroll(), which owns <body>'s `overflow`. Idempotent.
4050
+ */
4051
+ clampDocumentOverflowX() {
4052
+ if (this.overflowXClamp || typeof document > "u") return;
4053
+ const e = document.documentElement;
4054
+ this.overflowXClamp = { html: e.style.overflowX }, e.style.overflowX = "hidden";
4055
+ }
4056
+ /** Restore the <html> `overflow-x` clamped by clampDocumentOverflowX() (no-op if unset). */
4057
+ releaseDocumentOverflowX() {
4058
+ !this.overflowXClamp || typeof document > "u" || (document.documentElement.style.overflowX = this.overflowXClamp.html, this.overflowXClamp = null);
4059
+ }
3976
4060
  /**
3977
4061
  * While the fullscreen dropdown is open, keep it sitting above the soft keyboard.
3978
4062
  * Delegates to core's `observeKeyboardInset` (which tracks `window.visualViewport`
@@ -3980,7 +4064,7 @@ class wr {
3980
4064
  * we just hold the returned cleanup. No-op where `visualViewport` is unavailable.
3981
4065
  */
3982
4066
  observeKeyboardInset() {
3983
- this.keyboardInsetCleanup = ii(this.dropdown);
4067
+ this.keyboardInsetCleanup = ri(this.dropdown);
3984
4068
  }
3985
4069
  /** Detach keyboard-inset tracking and restore the panel's CSS-driven geometry. */
3986
4070
  unobserveKeyboardInset() {
@@ -4041,11 +4125,11 @@ class wr {
4041
4125
  /** Stand up the fullscreen dropdown overlay: modifier class, header, scroll lock, focus. */
4042
4126
  enterFullscreen() {
4043
4127
  var e;
4044
- this.clearFloatingInlineGeometry(this.dropdown), this.dropdown.classList.add("ms__dropdown--fullscreen"), this.buildFullscreenHeader(), this.lockBodyScroll(), this.pushOverlayHistory(), this.observeKeyboardInset(), this.fullscreenSearchInput && (this.fullscreenSearchInput.value = this.searchTerm), this.updateFullscreenSearchClear(), this.options.fullscreenAutofocus ? (e = this.fullscreenSearchInput) == null || e.focus() : this.input.blur();
4128
+ this.clearFloatingInlineGeometry(this.dropdown), this.dropdown.classList.add("ms__dropdown--fullscreen"), this.buildFullscreenHeader(), this.lockBodyScroll(), this.clampDocumentOverflowX(), this.pushOverlayHistory(), this.observeKeyboardInset(), this.fullscreenSearchInput && (this.fullscreenSearchInput.value = this.searchTerm), this.updateFullscreenSearchClear(), this.options.fullscreenAutofocus ? (e = this.fullscreenSearchInput) == null || e.focus() : this.input.blur();
4045
4129
  }
4046
4130
  /** Tear down the fullscreen dropdown chrome and restore page scroll (no-op if floating). */
4047
4131
  exitFullscreen() {
4048
- this.unobserveKeyboardInset(), this.popOverlayHistory(), this.dropdown.classList.remove("ms__dropdown--fullscreen"), this.fullscreenHeader && (this.fullscreenHeader.remove(), this.fullscreenHeader = null, this.fullscreenSearchInput = null, this.fullscreenSearchClear = null, this.fullscreenNav = null, this.fullscreenNavCount = null, this.fullscreenNavPrev = null, this.fullscreenNavNext = null), this.unlockBodyScroll();
4132
+ this.unobserveKeyboardInset(), this.popOverlayHistory(), this.dropdown.classList.remove("ms__dropdown--fullscreen"), this.fullscreenHeader && (this.fullscreenHeader.remove(), this.fullscreenHeader = null, this.fullscreenSearchInput = null, this.fullscreenSearchClear = null, this.fullscreenModeToggle = null, this.fullscreenNav = null, this.fullscreenNavCount = null, this.fullscreenNavPrev = null, this.fullscreenNavNext = null), this.unlockBodyScroll(), this.releaseDocumentOverflowX();
4049
4133
  }
4050
4134
  /**
4051
4135
  * Back-gesture handling for the fullscreen sheet. On open we push a history entry
@@ -4060,7 +4144,7 @@ class wr {
4060
4144
  /** Back gesture/button fired: our pushed entry is already gone, so just close the
4061
4145
  * sheet — WITHOUT popping history again (popOverlayHistory becomes a no-op). */
4062
4146
  handleOverlayPopstate() {
4063
- this.overlayHistoryActive && (this.overlayHistoryActive = !1, window.removeEventListener("popstate", this.onOverlayPopstate), this.isOpen && this.close());
4147
+ this.overlayHistoryActive && (this.overlayHistoryActive = !1, window.removeEventListener("popstate", this.onOverlayPopstate), this.isOpen ? this.close() : this.showSelectedPopover && this.hideSelectedPopover());
4064
4148
  }
4065
4149
  /** Programmatic close: remove the listener and pop the entry we pushed (so the
4066
4150
  * history stack returns to its pre-open state). No-op if a Back gesture already
@@ -4080,7 +4164,10 @@ class wr {
4080
4164
  const e = document.createElement("div");
4081
4165
  if (e.className = "ms__fullscreen-header", this.options.isSearchEnabled && this.options.searchInputMode !== "hidden") {
4082
4166
  const o = document.createElement("div");
4083
- o.className = "ms__fullscreen-search-wrapper";
4167
+ if (o.className = "ms__fullscreen-search-wrapper", this.options.isSearchModeToggleShown) {
4168
+ const r = document.createElement("button");
4169
+ r.type = "button", r.className = "ms__fullscreen-mode-toggle", r.addEventListener("mousedown", (n) => n.preventDefault()), r.addEventListener("click", () => this.toggleSearchModeLive()), o.appendChild(r), this.fullscreenModeToggle = r;
4170
+ }
4084
4171
  const i = document.createElement("input");
4085
4172
  if (i.type = "text", i.className = "ms__fullscreen-search", i.placeholder = this.getPlaceholderText(), i.autocomplete = "off", this.options.searchInputMode === "readonly" && (i.readOnly = !0), i.addEventListener("input", (r) => {
4086
4173
  const n = r.target.value;
@@ -4092,19 +4179,53 @@ class wr {
4092
4179
  e.appendChild(o);
4093
4180
  }
4094
4181
  const t = document.createElement("button");
4095
- if (t.type = "button", t.className = "ms__fullscreen-close", t.setAttribute("aria-label", "Close"), t.addEventListener("click", () => this.close()), e.appendChild(t), this.options.isSearchEnabled && (this.options.searchMode || "filter") === "navigate") {
4096
- const o = document.createElement("div");
4097
- o.className = "ms__fullscreen-nav";
4098
- const i = document.createElement("span");
4099
- i.className = "ms__fullscreen-nav-count", o.appendChild(i);
4100
- const r = document.createElement("div");
4101
- r.className = "ms__fullscreen-nav-controls";
4102
- const n = document.createElement("button");
4103
- n.type = "button", n.className = "ms__fullscreen-nav-btn ms__fullscreen-nav-btn--prev", n.setAttribute("aria-label", "Previous match"), n.addEventListener("click", () => this.focusPreviousMatch());
4104
- const a = document.createElement("button");
4105
- a.type = "button", a.className = "ms__fullscreen-nav-btn ms__fullscreen-nav-btn--next", a.setAttribute("aria-label", "Next match"), a.addEventListener("click", () => this.focusNextMatch()), r.appendChild(n), r.appendChild(a), o.appendChild(r), e.appendChild(o), this.fullscreenNav = o, this.fullscreenNavCount = i, this.fullscreenNavPrev = n, this.fullscreenNavNext = a;
4106
- }
4107
- this.dropdown.insertBefore(e, this.dropdownInner), this.fullscreenHeader = e, this.updateFullscreenNav(), this.updateFullscreenSearchClear();
4182
+ t.type = "button", t.className = "ms__fullscreen-close", t.setAttribute("aria-label", "Close"), t.addEventListener("click", () => this.close()), e.appendChild(t), this.dropdown.insertBefore(e, this.dropdownInner), this.fullscreenHeader = e, this.options.isSearchEnabled && (this.options.searchMode || "filter") === "navigate" && this.ensureFullscreenNav(), this.updateFullscreenModeToggle(), this.updateFullscreenNav(), this.updateFullscreenSearchClear();
4183
+ }
4184
+ /** Build the navigate-mode match navigator (count + prev/next) and append it to the
4185
+ * fullscreen header, once. No-op if already built or the header isn't present. The
4186
+ * nav wraps onto its own full-width row under the search box (header is flex-wrap;
4187
+ * the nav takes 100% basis). */
4188
+ ensureFullscreenNav() {
4189
+ if (this.fullscreenNav || !this.fullscreenHeader) return;
4190
+ const e = document.createElement("div");
4191
+ e.className = "ms__fullscreen-nav";
4192
+ const t = document.createElement("span");
4193
+ t.className = "ms__fullscreen-nav-count", e.appendChild(t);
4194
+ const o = document.createElement("div");
4195
+ o.className = "ms__fullscreen-nav-controls";
4196
+ const i = document.createElement("button");
4197
+ i.type = "button", i.className = "ms__fullscreen-nav-btn ms__fullscreen-nav-btn--prev", i.setAttribute("aria-label", "Previous match"), i.addEventListener("click", () => this.focusPreviousMatch());
4198
+ const r = document.createElement("button");
4199
+ r.type = "button", r.className = "ms__fullscreen-nav-btn ms__fullscreen-nav-btn--next", r.setAttribute("aria-label", "Next match"), r.addEventListener("click", () => this.focusNextMatch()), o.appendChild(i), o.appendChild(r), e.appendChild(o), this.fullscreenHeader.appendChild(e), this.fullscreenNav = e, this.fullscreenNavCount = t, this.fullscreenNavPrev = i, this.fullscreenNavNext = r;
4200
+ }
4201
+ /** Remove the match navigator (switching to filter mode, which has no jump UI). */
4202
+ removeFullscreenNav() {
4203
+ this.fullscreenNav && (this.fullscreenNav.remove(), this.fullscreenNav = null, this.fullscreenNavCount = null, this.fullscreenNavPrev = null, this.fullscreenNavNext = null);
4204
+ }
4205
+ /** Flip searchMode filter<->navigate from the in-overlay toggle. */
4206
+ toggleSearchModeLive() {
4207
+ const e = (this.options.searchMode || "filter") === "navigate" ? "filter" : "navigate";
4208
+ this.setSearchModeLive(e);
4209
+ }
4210
+ /**
4211
+ * Switch searchMode in place — the overlay's toggle path. The `search-mode` attribute
4212
+ * is reinit-on-change (it rebuilds and closes the overlay); this instead mutates the
4213
+ * live config, adds/removes the match navigator to match, and re-projects the current
4214
+ * term under the new mode (filter narrows the list / navigate keeps all + highlights),
4215
+ * all without tearing the open sheet down. Focus stays on the search field.
4216
+ */
4217
+ setSearchModeLive(e) {
4218
+ var t;
4219
+ (this.options.searchMode || "filter") !== e && (this.options.searchMode = e, e === "navigate" ? this.ensureFullscreenNav() : this.removeFullscreenNav(), this.updateFullscreenModeToggle(), this.refreshSearchPlaceholder(), this.handleSearch(this.searchTerm), (t = this.fullscreenSearchInput) == null || t.focus());
4220
+ }
4221
+ /** Sync the mode toggle's icon (via data-mode) and labels with the current searchMode.
4222
+ * No-op when the toggle isn't built (opt-out, floating panel, or search hidden). */
4223
+ updateFullscreenModeToggle() {
4224
+ if (!this.fullscreenModeToggle) return;
4225
+ const e = this.options.searchMode || "filter";
4226
+ this.fullscreenModeToggle.dataset.mode = e;
4227
+ const t = e === "navigate" ? "filter" : "navigate";
4228
+ this.fullscreenModeToggle.setAttribute("aria-label", `Switch to ${t} mode`), this.fullscreenModeToggle.setAttribute("title", `Switch to ${t} mode`), this.fullscreenModeToggle.setAttribute("aria-pressed", String(e === "navigate"));
4108
4229
  }
4109
4230
  /**
4110
4231
  * Sync the fullscreen match navigator (navigate mode only) with the current search
@@ -4166,7 +4287,7 @@ class wr {
4166
4287
  this.selectedValues.add(String(o));
4167
4288
  }), this.reconcileSelectedOptions(), this.renderBadges();
4168
4289
  } catch (t) {
4169
- B.error(`[${this.instanceId}] Failed to parse initial values:`, t);
4290
+ K.error(`[${this.instanceId}] Failed to parse initial values:`, t);
4170
4291
  }
4171
4292
  }
4172
4293
  /**
@@ -4190,11 +4311,11 @@ class wr {
4190
4311
  showPopover() {
4191
4312
  Q.debug(`[${this.instanceId}] showPopover() called`), this.isOpen && this.close(), this.hideMessage(), this.showSelectedPopover = !0, this.renderSelectedPopover(), this.selectedPopover.classList.add("ms__selected-popover--visible");
4192
4313
  const e = this.options.virtualScrollThreshold ?? 100;
4193
- this.selectedValues.size >= e && this.selectedPopover.classList.add("ms__selected-popover--virtual"), this.presentationMode === "fullscreen" ? (this.selectedPopover.classList.add("ms__selected-popover--fullscreen"), this.lockBodyScroll()) : this.positionSelectedPopover();
4314
+ this.selectedValues.size >= e && this.selectedPopover.classList.add("ms__selected-popover--virtual"), this.presentationMode === "fullscreen" ? (this.selectedPopover.classList.add("ms__selected-popover--fullscreen"), this.lockBodyScroll(), this.clampDocumentOverflowX(), this.pushOverlayHistory()) : this.positionSelectedPopover();
4194
4315
  }
4195
4316
  hideSelectedPopover() {
4196
4317
  var e;
4197
- Q.debug(`[${this.instanceId}] hideSelectedPopover() called`), this.showSelectedPopover = !1, this.selectedPopover.classList.remove("ms__selected-popover--visible"), this.selectedPopover.classList.remove("ms__selected-popover--virtual"), this.selectedPopover.classList.remove("ms__selected-popover--fullscreen"), this.unlockBodyScroll(), this.hideMessage(), this.selectedPopoverPlacement = null, this.selectedPopoverVirtualScroll && (this.selectedPopoverVirtualScroll.destroy(), this.selectedPopoverVirtualScroll = null, this.selectedPopoverContainer = null), this.selectedPopoverCleanup && (this.selectedPopoverCleanup(), this.selectedPopoverCleanup = null);
4318
+ Q.debug(`[${this.instanceId}] hideSelectedPopover() called`), this.showSelectedPopover = !1, this.selectedPopover.classList.remove("ms__selected-popover--visible"), this.selectedPopover.classList.remove("ms__selected-popover--virtual"), this.selectedPopover.classList.remove("ms__selected-popover--fullscreen"), this.unlockBodyScroll(), this.releaseDocumentOverflowX(), this.popOverlayHistory(), this.hideMessage(), this.selectedPopoverPlacement = null, this.selectedPopoverVirtualScroll && (this.selectedPopoverVirtualScroll.destroy(), this.selectedPopoverVirtualScroll = null, this.selectedPopoverContainer = null), this.selectedPopoverCleanup && (this.selectedPopoverCleanup(), this.selectedPopoverCleanup = null);
4198
4319
  for (const t of Array.from(this.tooltips.keys()))
4199
4320
  t.startsWith("popover-") && ((e = this.tooltips.get(t)) == null || e.destroy(), this.tooltips.delete(t));
4200
4321
  }
@@ -4231,7 +4352,7 @@ class wr {
4231
4352
  if (!this.selectedPopoverContainer) return;
4232
4353
  const o = this.scaledBadgeHeight(), i = Math.round(4 * this.fullscreenScale()), r = o + i, n = this.options.virtualScrollBuffer ?? 10;
4233
4354
  requestAnimationFrame(() => {
4234
- this.selectedPopoverContainer && (this.selectedPopoverVirtualScroll ? this.selectedPopoverVirtualScroll.setItems(e) : this.selectedPopoverVirtualScroll = new ys({
4355
+ this.selectedPopoverContainer && (this.selectedPopoverVirtualScroll ? this.selectedPopoverVirtualScroll.setItems(e) : this.selectedPopoverVirtualScroll = new ws({
4235
4356
  container: this.selectedPopoverContainer,
4236
4357
  itemHeight: r,
4237
4358
  items: e,
@@ -4253,28 +4374,31 @@ class wr {
4253
4374
  * accessible name stay in sync.
4254
4375
  */
4255
4376
  renderBadgeHTML(e, t) {
4256
- const o = this.getItemValue(e);
4257
- let i;
4258
- const r = t.isInPopover ? this.options.renderSelectedItemContentCallback : void 0;
4259
- if (r) {
4260
- const c = r(e);
4261
- i = typeof c == "string" ? c : c.outerHTML;
4377
+ const o = this.getItemValue(e), i = {
4378
+ ...t,
4379
+ ...Ot(this.presentationMode)
4380
+ };
4381
+ let r;
4382
+ const n = t.isInPopover ? this.options.renderSelectedItemContentCallback : void 0;
4383
+ if (n) {
4384
+ const d = n(e);
4385
+ r = typeof d == "string" ? d : d.outerHTML;
4262
4386
  } else if (this.options.renderBadgeContentCallback) {
4263
- const c = this.options.renderBadgeContentCallback(e, t);
4264
- i = typeof c == "string" ? c : c.outerHTML;
4387
+ const d = this.options.renderBadgeContentCallback(e, i);
4388
+ r = typeof d == "string" ? d : d.outerHTML;
4265
4389
  } else
4266
- i = this.getItemBadgeDisplayValue(e);
4267
- const n = t.isInPopover ? this.options.getSelectedItemClassCallback || this.options.getBadgeClassCallback : this.options.getBadgeClassCallback;
4268
- let a = "ms__badge";
4269
- if (n) {
4270
- const c = n(e), d = Array.isArray(c) ? c : [c];
4271
- a += " " + d.filter((h) => h).join(" ");
4390
+ r = this.getItemBadgeDisplayValue(e);
4391
+ const a = t.isInPopover ? this.options.getSelectedItemClassCallback || this.options.getBadgeClassCallback : this.options.getBadgeClassCallback;
4392
+ let l = "ms__badge";
4393
+ if (a) {
4394
+ const d = a(e), h = Array.isArray(d) ? d : [d];
4395
+ l += " " + h.filter((f) => f).join(" ");
4272
4396
  }
4273
- const l = this.getItemBadgeDisplayValue(e);
4397
+ const c = this.getItemBadgeDisplayValue(e);
4274
4398
  return `
4275
- <div class="${a}">
4276
- <span class="ms__badge-text">${i}</span>
4277
- <button type="button" class="ms__badge-remove" data-value="${o}" aria-label="Remove ${l}"></button>
4399
+ <div class="${l}">
4400
+ <span class="ms__badge-text">${r}</span>
4401
+ <button type="button" class="ms__badge-remove" data-value="${o}" aria-label="Remove ${c}"></button>
4278
4402
  </div>
4279
4403
  `;
4280
4404
  }
@@ -4357,9 +4481,9 @@ class wr {
4357
4481
  if (t !== o) return !1;
4358
4482
  Object.assign(this.options, e);
4359
4483
  const i = "pathMember" in e || "getPathCallback" in e || "parentPathMember" in e || "levelMember" in e || "hasChildrenMember" in e || "treePathSeparator" in e || "isTreeEnabled" in e || "isSelectableMember" in e || "getIsSelectableCallback" in e;
4360
- if ("options" in e && e.options !== void 0 ? (this.allOptions = e.options, this.reconcileSelectedOptions(), this.isTreeMode() ? this.buildTree() : this.filteredOptions = this.searchTerm ? this.filteredOptions : [...this.allOptions]) : i && (this.isTreeMode() ? this.buildTree() : this.filteredOptions = this.searchTerm ? this.filteredOptions : [...this.allOptions]), ("checkboxMode" in e || "cascadeSelectPolicy" in e) && !i && !("options" in e) && this.isTreeMode() && (this.cascadeIndex = this.isCascadeMode() ? ks(this.tree, (a) => String(this.getItemValue(a))) : null, this.isCascadeMode() && this.cascadeIndex)) {
4484
+ if ("options" in e && e.options !== void 0 ? (this.allOptions = e.options, this.reconcileSelectedOptions(), this.isTreeMode() ? this.buildTree() : this.filteredOptions = this.searchTerm ? this.filteredOptions : [...this.allOptions]) : i && (this.isTreeMode() ? this.buildTree() : this.filteredOptions = this.searchTerm ? this.filteredOptions : [...this.allOptions]), ("checkboxMode" in e || "cascadeSelectPolicy" in e) && !i && !("options" in e) && this.isTreeMode() && (this.cascadeIndex = this.isCascadeMode() ? Cs(this.tree, (a) => String(this.getItemValue(a))) : null, this.isCascadeMode() && this.cascadeIndex)) {
4361
4485
  this.cascadeCheckedAtoms = Ke(this.cascadeIndex, this.selectedValues);
4362
- const a = Lt(
4486
+ const a = Et(
4363
4487
  this.cascadeIndex,
4364
4488
  this.cascadeCheckedAtoms,
4365
4489
  this.cascadePolicy(),
@@ -4411,7 +4535,7 @@ class wr {
4411
4535
  spawnTooltip(e) {
4412
4536
  var r;
4413
4537
  (r = this.tooltips.get(e.id)) == null || r.destroy();
4414
- const t = this.element.getRootNode(), o = t instanceof ShadowRoot ? t : null, i = pr({
4538
+ const t = this.element.getRootNode(), o = t instanceof ShadowRoot ? t : null, i = fr({
4415
4539
  trigger: e.trigger,
4416
4540
  container: this.options.container ?? o ?? document.body,
4417
4541
  content: e.content,
@@ -4558,7 +4682,7 @@ ${o}` : t;
4558
4682
  const n = document.createElement("div");
4559
4683
  n.className = "ms__option-tooltip ms__option-tooltip--fullscreen", typeof r == "string" ? n.textContent = r : n.appendChild(r);
4560
4684
  const a = this.element.getRootNode(), l = a instanceof ShadowRoot ? a : null, c = this.options.container ?? l ?? document.body;
4561
- this.labelRevealTrigger = e, this.labelRevealPanel = n, this.labelRevealPopover = fr({
4685
+ this.labelRevealTrigger = e, this.labelRevealPanel = n, this.labelRevealPopover = gr({
4562
4686
  reference: e,
4563
4687
  panel: n,
4564
4688
  container: c,
@@ -4669,7 +4793,7 @@ ${o}` : t;
4669
4793
  this.destroyAllTooltips(), this.hideLabelReveal(), this.hideMessage(), this.searchDebounceTimer && (clearTimeout(this.searchDebounceTimer), this.searchDebounceTimer = void 0), this.abortInFlightSearch(), this.dropdownCleanup && this.dropdownCleanup(), this.hintCleanup && this.hintCleanup(), this.selectedPopoverCleanup && this.selectedPopoverCleanup(), this.overlayHistoryActive && (this.overlayHistoryActive = !1, typeof window < "u" && window.removeEventListener("popstate", this.onOverlayPopstate)), this.exitFullscreen(), this.documentClickHandler && (document.removeEventListener("click", this.documentClickHandler), this.documentClickHandler = null), this.documentKeydownHandler && (document.removeEventListener("keydown", this.documentKeydownHandler), this.documentKeydownHandler = null), this.virtualScroll && (this.virtualScroll.destroy(), this.virtualScroll = null), this.dropdown && this.dropdown.remove(), this.hint && this.hint.remove(), this.selectedPopover && this.selectedPopover.remove(), this.element.innerHTML = "", this.element.classList.remove("ms", "ms--open", "ms--no-checkboxes"), nt.info(`[${this.instanceId}] Component destroyed`);
4670
4794
  }
4671
4795
  }
4672
- function xr() {
4796
+ function _r() {
4673
4797
  return {
4674
4798
  fromAttribute(s) {
4675
4799
  if (s === null || s.trim() === "") return [];
@@ -4690,29 +4814,29 @@ function xr() {
4690
4814
  }
4691
4815
  };
4692
4816
  }
4693
- const _r = ["json", "csv", "plain"], Cs = ",", Ss = `
4817
+ const kr = ["json", "csv", "plain"], Ss = ",", Ts = `
4694
4818
  `;
4695
- function kr(s, e, t = {}) {
4819
+ function Cr(s, e, t = {}) {
4696
4820
  if (s == null || s.trim() === "") return { options: [] };
4697
- const o = Ts(t.splitter ?? Cs) || Cs, i = Ts(t.rowSplitter ?? Ss) || Ss;
4821
+ const o = Is(t.splitter ?? Ss) || Ss, i = Is(t.rowSplitter ?? Ts) || Ts;
4698
4822
  switch (e) {
4699
4823
  case "csv":
4700
- return Tr(s, o, i);
4824
+ return Ir(s, o, i);
4701
4825
  case "plain":
4702
- return Sr(s, o, i);
4826
+ return Tr(s, o, i);
4703
4827
  case "json":
4704
4828
  default:
4705
- return Cr(s);
4829
+ return Sr(s);
4706
4830
  }
4707
4831
  }
4708
- function Ts(s) {
4832
+ function Is(s) {
4709
4833
  return s.replace(
4710
4834
  /\\[ntr\\]/g,
4711
4835
  (e) => e === "\\n" ? `
4712
4836
  ` : e === "\\t" ? " " : e === "\\r" ? "\r" : "\\"
4713
4837
  );
4714
4838
  }
4715
- function Cr(s) {
4839
+ function Sr(s) {
4716
4840
  let e;
4717
4841
  try {
4718
4842
  e = JSON.parse(s);
@@ -4721,10 +4845,10 @@ function Cr(s) {
4721
4845
  }
4722
4846
  return Array.isArray(e) ? { options: e } : { options: [], error: "data-options JSON must be an array" };
4723
4847
  }
4724
- function Sr(s, e, t) {
4848
+ function Tr(s, e, t) {
4725
4849
  return { options: s.split(t).flatMap((i) => i.split(e)).map((i) => i.trim()).filter((i) => i.length > 0).map((i) => [i, i]) };
4726
4850
  }
4727
- function Tr(s, e, t) {
4851
+ function Ir(s, e, t) {
4728
4852
  const o = Or(s, e, t).filter((n) => !(n.length === 1 && n[0].trim() === ""));
4729
4853
  if (o.length < 2)
4730
4854
  return { options: [], error: "data-options CSV needs a header row and at least one data row" };
@@ -4749,7 +4873,7 @@ function Or(s, e, t) {
4749
4873
  }
4750
4874
  return i.push(r), o.push(i), o;
4751
4875
  }
4752
- const Qs = `@layer variables,component,overrides;@layer variables{:host{display:block;--ms-rem: 10px;font-family:var(--ms-font-family, var(--base-font-family, inherit));--ms-accent-color: var(--base-accent-color, #3b82f6);--ms-accent-color-hover: var(--base-accent-color-hover, #2563eb);--ms-accent-color-active: var(--base-accent-color-active, #1d4ed8);--ms-accent-color-light: var(--base-accent-color-light, light-dark(#eff6ff, #1e3a5f));--ms-accent-color-light-hover: var(--base-accent-color-light-hover, light-dark(#e0f2fe, #264a73));--ms-text-color-1: var(--base-text-color-1, light-dark(#111827, #f5f5f5));--ms-text-color-2: var(--base-text-color-2, light-dark(#353b47, #d4d4d4));--ms-text-color-3: var(--base-text-color-3, light-dark(#6b7280, #a3a3a3));--ms-text-color-4: var(--base-text-color-4, light-dark(#a0a3a9, #737373));--ms-text-color-on-accent: var(--base-text-color-on-accent, #ffffff);--ms-text-primary: var(--ms-text-color-1);--ms-text-secondary: var(--ms-text-color-3);--ms-primary-bg: var(--base-hover-bg, color-mix(in srgb, var(--ms-text-color-1) 8%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-primary-bg-hover: var(--base-active-bg, color-mix(in srgb, var(--ms-text-color-1) 14%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-border-color: var(--base-border-color, light-dark(#e5e7eb, #3a3a3a));--ms-border: var(--base-border, 1px solid var(--ms-border-color));--ms-input-bg: var(--base-input-bg, light-dark(#ffffff, #1a1a1a));--ms-input-color: var(--base-input-color, var(--ms-text-color-1));--ms-input-border: var(--base-input-border, 1px solid var(--ms-border-color));--ms-input-border-hover: var(--base-input-border-hover, 1px solid var(--ms-accent-color));--ms-input-border-focus: var(--base-input-border-focus, 1px solid var(--ms-accent-color));--ms-input-placeholder-color: var(--base-input-placeholder-color, var(--ms-text-color-4));--ms-input-bg-disabled: var(--base-input-bg-disabled, rgba(107, 114, 128, .05));--ms-toggle-icon-color: var(--ms-text-color-3);--ms-toggle-icon-color-open: var(--ms-text-color-3);--ms-counter-badge-bg: var(--ms-accent-color);--ms-counter-badge-bg-hover: var(--ms-accent-color-hover);--ms-counter-badge-color: var(--ms-text-color-on-accent);--ms-hint-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-hint-color: var(--ms-text-color-4);--ms-hint-border-color: var(--ms-border-color);--ms-dropdown-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-dropdown-text-color: var(--ms-text-color-1);--ms-dropdown-border-color: var(--ms-border-color);--ms-dropdown-box-shadow-semantic: var(--base-dropdown-box-shadow, 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1));--ms-actions-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-actions-border-color: var(--ms-border-color);--ms-action-button-bg: transparent;--ms-action-button-bg-hover: var(--ms-primary-bg);--ms-action-button-border-color: var(--ms-border-color);--ms-action-button-border-color-hover: var(--ms-accent-color);--ms-action-button-color: var(--ms-text-color-1);--ms-group-border-color: var(--ms-border-color);--ms-option-text-color: var(--ms-text-color-1);--ms-option-bg: transparent;--ms-option-bg-hover: var(--ms-primary-bg);--ms-option-color-hover: inherit;--ms-option-bg-focused: var(--ms-primary-bg);--ms-option-color-focused: inherit;--ms-option-outline-color-focused: var(--ms-accent-color);--ms-option-bg-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-option-bg-matched: color-mix(in srgb, var(--ms-accent-color) 8%, transparent);--ms-option-color-matched: inherit;--ms-option-border-matched-color: color-mix(in srgb, var(--ms-accent-color) 40%, transparent);--ms-option-title-color: var(--ms-text-color-1);--ms-option-subtitle-color: var(--ms-text-color-3);--ms-option-mark-bg: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-option-mark-color: inherit;--ms-loading-color: var(--ms-text-color-3);--ms-badge-bg: var(--ms-accent-color-light);--ms-badge-bg-hover: var(--base-hover-bg, var(--ms-accent-color-light-hover));--ms-badge-bg-active: var(--ms-accent-color-light-hover);--ms-badge-text-bg-hover: var(--base-hover-bg, var(--ms-accent-color-light-hover));--ms-badge-text-color-hover: var(--ms-badge-text-color);--ms-badge-counter-border-color: var(--ms-border-color);--ms-badge-counter-text-bg: var(--ms-primary-bg-hover);--ms-badge-counter-text-color: var(--ms-text-color-1);--ms-badge-counter-remove-bg: var(--ms-text-color-3);--ms-badge-counter-remove-bg-hover: var(--ms-text-color-1);--ms-badge-counter-remove-color: var(--ms-text-color-on-accent);--ms-counter-wrapper-border-color: var(--ms-border-color);--ms-count-clear-bg-hover: var(--ms-accent-color);--ms-tooltip-bg: var(--base-tooltip-bg, var(--base-inverse-bg, light-dark(#333333, #f5f5f5)));--ms-tooltip-text-color: var(--base-tooltip-text-color, light-dark(#ffffff, #1a1a1a));--ms-selected-popover-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-selected-popover-border-color: var(--ms-border-color);--ms-selected-popover-header-border-color: var(--ms-border-color);--ms-selected-popover-close-bg-hover: var(--ms-accent-color);--ms-input-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-input-padding-right: calc(4 * var(--ms-rem));--ms-input-padding-h: calc(1.2 * var(--ms-rem));--ms-input-height: calc(var(--base-input-size-md-height, 3.5) * var(--ms-rem));--ms-input-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-input-border-width: 1px;--ms-input-border-radius: var(--ms-border-radius-md);--ms-input-text: var(--ms-text-color-1);--ms-input-bg-disabled: rgba(107, 114, 128, .05);--ms-toggle-right: calc(1.2 * var(--ms-rem));--ms-toggle-color: var(--ms-text-color-3);--ms-transform-center-y: translateY(-50%);--ms-transform-rotate-180: 180deg;--ms-counter-offset: calc(3.2 * var(--ms-rem));--ms-counter-padding: calc(.2 * var(--ms-rem)) calc(.4 * var(--ms-rem));--ms-counter-bg: var(--ms-accent-color);--ms-counter-color: var(--ms-text-color-on-accent);--ms-counter-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-counter-font-weight: var(--base-font-weight-semibold, 600);--ms-counter-border-radius: var(--ms-border-radius-sm);--ms-counter-bg-hover: var(--ms-accent-color-hover);--ms-transform-scale-hover: 1.1;--ms-hint-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-hint-border: 1px solid var(--ms-hint-border-color);--ms-hint-border-radius: var(--ms-border-radius-lg);--ms-hint-box-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ms-hint-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-dropdown-border: var(--base-dropdown-border, 1px solid var(--ms-dropdown-border-color));--ms-dropdown-border-radius: var(--ms-border-radius-lg);--ms-dropdown-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-input-current-width: auto;--ms-dropdown-width: var(--ms-input-current-width);--ms-options-max-height: calc(32 * var(--ms-rem));--ms-option-color: var(--ms-text-color-1);--ms-z-index-dropdown: 9999;--ms-z-index-sticky: 1;--ms-z-index-fullscreen: 10001;--ms-z-index-fullscreen-tooltip: 10002;--ms-fullscreen-rem: 12px;--ms-fullscreen-bg: var(--ms-dropdown-bg);--ms-fullscreen-text-color: var(--ms-dropdown-text-color);--ms-fullscreen-header-bg: var(--ms-dropdown-bg);--ms-fullscreen-header-border: 1px solid var(--ms-dropdown-border-color);--ms-fullscreen-header-gap: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-v: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-h: calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding: var(--ms-fullscreen-header-padding-v) var(--ms-fullscreen-header-padding-h);--ms-fullscreen-header-min-height: calc(5.6 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-size: calc(1.7 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-weight: var(--base-font-weight-semibold, 600);--ms-fullscreen-search-border: var(--ms-input-border);--ms-fullscreen-search-border-radius: var(--ms-input-border-radius);--ms-fullscreen-search-padding: calc(.8 * var(--ms-fullscreen-rem)) calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-search-font-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-icon-size: calc(1.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-inset: calc(.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-gutter: calc(3.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-search-clear-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-size: calc(3.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-color: var(--ms-dropdown-text-color);--ms-fullscreen-close-bg: transparent;--ms-fullscreen-close-border: none;--ms-fullscreen-close-border-radius: 50%;--ms-fullscreen-close-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-edge-nudge: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-icon-size: calc(1.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-color: var(--ms-accent-color);--ms-fullscreen-info-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-gap: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-padding-top: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-font-size: calc(1.3 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-nav-btn-size: calc(3.2 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-color: var(--ms-dropdown-text-color);--ms-fullscreen-nav-btn-bg: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-btn-bg-hover: var(--ms-accent-color-light, var(--ms-option-bg-matched, transparent));--ms-icon-chevron: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M5 15l7-7 7 7' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/></svg>");--ms-icon-info: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><circle cx='12' cy='12' r='9' fill='none' stroke='black' stroke-width='2'/><circle cx='12' cy='7.5' r='1.3' fill='black'/><path d='M12 11v6' stroke='black' stroke-width='2' stroke-linecap='round' fill='none'/></svg>");--ms-fullscreen-tree-base-indent: calc(.7 * var(--ms-fullscreen-rem));--ms-fullscreen-tree-indent: calc(1.2 * var(--ms-fullscreen-rem));--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-actions-border-bottom: 1px solid var(--ms-actions-border-color);--ms-action-btn-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-action-btn-border: var(--ms-border);--ms-action-btn-border-radius: var(--ms-border-radius-sm);--ms-action-btn-bg: transparent;--ms-action-btn-color: inherit;--ms-action-btn-bg-hover: var(--ms-primary-bg);--ms-action-btn-border-color-hover: var(--ms-accent-color);--ms-transform-scale-active: .98;--ms-options-padding: 0;--ms-group-border-top: 1px solid var(--ms-group-border-color);--ms-group-margin-top: calc(.4 * var(--ms-rem));--ms-group-padding-top: calc(.4 * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-font-weight: var(--base-font-weight-semibold, 600);--ms-group-label-color: var(--ms-text-color-3);--ms-group-label-transform: uppercase;--ms-group-label-letter-spacing: .05em;--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-padding-h: calc(1.2 * var(--ms-rem));--ms-option-min-height: auto;--ms-option-outline-focused: 2px solid var(--ms-option-outline-color-focused);--ms-option-focus-outline-offset: -2px;--ms-option-border-matched: 3px solid var(--ms-option-border-matched-color);--ms-option-bg-focused-hover: var(--ms-primary-bg);--ms-option-bg-matched-hover: color-mix(in srgb, var(--ms-accent-color) 12%, transparent);--ms-option-bg-selected-focused: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-bg-selected-matched: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-disabled-bg: var(--base-disabled-bg, transparent);--ms-option-bg-disabled-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-disabled-opacity: .5;--ms-option-content-gap: calc(.8 * var(--ms-rem));--ms-option-icon-size: calc(2 * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-mark-font-weight: var(--base-font-weight-semibold, 600);--ms-option-title-white-space: normal;--ms-option-title-overflow: visible;--ms-option-title-text-overflow: clip;--ms-option-subtitle-margin-top: calc(.4 * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-subtitle-line-height: var(--base-line-height-tight, 1.25);--ms-checkbox-margin-top: calc(.2 * var(--ms-rem));--ms-checkbox-margin-right: 0;--ms-checkbox-margin-bottom: 0;--ms-checkbox-margin-left: 0;--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-checkbox-scale: 1;--ms-checkbox-align: center;--ms-checkbox-bg: var(--ms-input-bg);--ms-checkbox-border-width: 1px;--ms-checkbox-border-color: var(--base-checkbox-border-color, #8f8f8f);--ms-checkbox-border: var(--ms-checkbox-border-width) solid var(--ms-checkbox-border-color);--ms-checkbox-border-radius: calc(.3 * var(--ms-rem));--ms-checkbox-checkmark-thickness: 2.5px;--ms-checkbox-checked-bg: var(--ms-accent-color);--ms-checkbox-checked-border: var(--ms-checkbox-border-width) solid var(--ms-accent-color);--ms-checkbox-checkmark-color: var(--ms-text-color-on-accent);--ms-checkbox-hover-border-color: var(--ms-accent-color);--ms-checkbox-disabled-bg: var(--ms-primary-bg);--ms-checkbox-disabled-border: var(--ms-checkbox-border-width) solid var(--ms-border-color);--ms-checkbox-checked-bg-hover: var(--ms-accent-color-hover);--ms-checkbox-checked-border-color-hover: var(--ms-accent-color-hover);--ms-state-min-height: calc(8 * var(--ms-rem));--ms-empty-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-empty-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-empty-color: var(--ms-text-color-3);--ms-loader-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-loader-gap: calc(.8 * var(--ms-rem));--ms-loading-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-loading-text-color: var(--ms-text-color-3);--ms-badges-gap: calc(.8 * var(--ms-rem));--ms-badges-margin-bottom: calc(.8 * var(--ms-rem));--ms-badges-margin-top: calc(.8 * var(--ms-rem));--ms-badges-margin-left: calc(.4 * var(--ms-rem));--ms-badges-margin-right: calc(.4 * var(--ms-rem));--ms-inline-align: center;--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(2.7 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-font-weight: var(--base-font-weight-semibold, 600);--ms-badge-border-radius: var(--ms-border-radius-sm);--ms-order-first: -1;--ms-badge-text-padding: 0 calc(.8 * var(--ms-rem));--ms-badge-text-bg: var(--ms-accent-color-light);--ms-badge-text-color: var(--ms-accent-color);--ms-badge-text-border: none;--ms-badge-remove-width: calc(2.7 * var(--ms-rem));--ms-badge-remove-bg: var(--ms-accent-color);--ms-badge-remove-color: var(--ms-text-color-on-accent);--ms-badge-remove-border: none;--ms-badge-remove-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-remove-bg-hover: var(--ms-accent-color-hover);--ms-badge-remove-box-shadow-focus: 0 0 0 2px color-mix(in srgb, var(--ms-accent-color) 50%, transparent);--ms-badge-remove-icon-size: calc(1 * var(--ms-rem));--ms-icon-remove: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M6 6L18 18M18 6L6 18' stroke='black' stroke-width='2.5' stroke-linecap='round' fill='none'/></svg>");--ms-icon-search-clear: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m13.5 8.5-5 5'/><path d='m8.5 8.5 5 5'/><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>");--ms-badge-counter-bg: transparent;--ms-badge-counter-border: 1px solid var(--ms-badge-counter-border-color);--ms-badge-counter-border-radius: var(--ms-border-radius-sm);--ms-more-badge-bg: var(--ms-accent-color-light);--ms-more-badge-hover-bg: var(--ms-badge-bg-hover);--ms-more-badge-active-bg: var(--ms-accent-color-light-hover);--ms-count-display-margin-bottom: calc(.8 * var(--ms-rem));--ms-count-display-margin-top: calc(.8 * var(--ms-rem));--ms-count-display-margin-left: calc(.8 * var(--ms-rem));--ms-count-display-margin-right: calc(.8 * var(--ms-rem));--ms-counter-wrapper-bg: transparent;--ms-counter-wrapper-border: var(--ms-border);--ms-counter-wrapper-border-radius: var(--ms-border-radius-sm);--ms-counter-wrapper-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-counter-wrapper-gap: calc(.4 * var(--ms-rem));--ms-counter-wrapper-bg-hover: var(--ms-primary-bg);--ms-counter-wrapper-border-color-hover: var(--ms-accent-color);--ms-count-text-bg: transparent;--ms-count-text-border: none;--ms-count-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-count-text-color: var(--ms-text-color-1);--ms-count-clear-size: calc(1.6 * var(--ms-rem));--ms-count-clear-bg: transparent;--ms-count-clear-color: var(--ms-text-color-3);--ms-count-clear-font-size: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-count-clear-border-radius: var(--ms-border-radius-sm);--ms-count-clear-bg-hover: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-count-clear-color-hover: var(--ms-accent-color);--ms-count-clear-icon-size: calc(1.4 * var(--ms-rem));--ms-icon-clear: var(--ms-icon-remove);--ms-tooltip-color: var(--ms-tooltip-text-color);--ms-tooltip-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tooltip-border-radius: var(--ms-border-radius-lg);--ms-tooltip-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-tooltip-max-width: calc(32 * var(--ms-rem));--ms-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ms-tooltip-z-index: 10000;--ms-option-tooltip-bg: var(--ms-tooltip-bg);--ms-option-tooltip-text-color: var(--ms-tooltip-text-color);--ms-option-tooltip-padding: var(--ms-tooltip-padding);--ms-option-tooltip-border-radius: var(--ms-tooltip-border-radius);--ms-option-tooltip-font-size: var(--ms-tooltip-font-size);--ms-option-tooltip-max-width: var(--ms-tooltip-max-width);--ms-option-tooltip-shadow: var(--ms-tooltip-shadow);--ms-option-tooltip-z-index: var(--ms-tooltip-z-index);--ms-message-bg: var(--ms-message-info-bg);--ms-message-color: var(--ms-message-info-color);--ms-message-border: 1px solid transparent;--ms-message-border-radius: var(--ms-border-radius-lg);--ms-message-padding: calc(1 * var(--ms-rem)) calc(1.4 * var(--ms-rem));--ms-message-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-message-font-weight: var(--base-font-weight-medium, 500);--ms-message-max-width: calc(40 * var(--ms-rem));--ms-message-shadow: 0 4px 16px rgb(0 0 0 / .18);--ms-message-fullscreen-offset: calc(2.4 * var(--ms-fullscreen-rem));--ms-message-z-index: var(--ms-z-index-fullscreen-tooltip);--ms-message-info-bg: var(--ms-tooltip-bg);--ms-message-info-color: var(--ms-tooltip-text-color);--ms-message-warning-bg: var(--base-warning-bg, #f59e0b);--ms-message-warning-color: var(--base-warning-color, #1a1a1a);--ms-message-error-bg: var(--base-danger-bg, #ef4444);--ms-message-error-color: var(--base-danger-color, #ffffff);--ms-message-success-bg: var(--base-success-bg, #10b981);--ms-message-success-color: var(--base-success-color, #ffffff);--ms-z-index-popover: 10000;--ms-selected-popover-width: calc(32 * var(--ms-rem));--ms-selected-popover-max-height: calc(32 * var(--ms-rem));--ms-selected-popover-border: 1px solid var(--ms-selected-popover-border-color);--ms-selected-popover-border-radius: var(--ms-border-radius-lg);--ms-selected-popover-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-selected-popover-header-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-selected-popover-header-bg: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-selected-popover-header-border-bottom: 1px solid var(--ms-selected-popover-header-border-color);--ms-selected-popover-header-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-selected-popover-header-font-weight: var(--base-font-weight-semibold, 600);--ms-selected-popover-header-color: var(--ms-text-color-1);--ms-popover-close-size: calc(2.4 * var(--ms-rem));--ms-selected-popover-close-bg: transparent;--ms-selected-popover-close-color: var(--ms-text-color-3);--ms-selected-popover-close-font-size: calc(var(--base-font-size-xl, 2) * var(--ms-rem));--ms-selected-popover-close-border-radius: var(--ms-border-radius-sm);--ms-selected-popover-close-bg-hover: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-selected-popover-close-color-hover: var(--ms-accent-color);--ms-selected-popover-close-icon-size: calc(1.4 * var(--ms-rem));--ms-selected-popover-body-gap: calc(.4 * var(--ms-rem));--ms-selected-popover-body-padding: calc(.8 * var(--ms-rem));--ms-selected-popover-body-max-height: calc(28.8 * var(--ms-rem));--ms-font-size-2xs: calc(var(--base-font-size-2xs, 1) * var(--ms-rem));--ms-font-size-xs: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-font-size-sm: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-font-size-base: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-font-size-lg: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-font-weight-normal: var(--base-font-weight-normal, 400);--ms-font-weight-medium: var(--base-font-weight-medium, 500);--ms-font-weight-semibold: var(--base-font-weight-semibold, 600);--ms-line-height-none: 1;--ms-line-height-tight: var(--base-line-height-tight, 1.25);--ms-line-height-normal: var(--base-line-height-normal, 1.5);--ms-line-height-relaxed: var(--base-line-height-relaxed, 1.75);--ms-border-radius-sm: calc(var(--base-border-radius-sm, .4) * var(--ms-rem));--ms-border-radius-md: calc(var(--base-border-radius-md, .6) * var(--ms-rem));--ms-border-radius-lg: calc(var(--base-border-radius-lg, .8) * var(--ms-rem));--ms-border-radius: var(--ms-border-radius-md);--ms-spacing-xs: calc(.4 * var(--ms-rem));--ms-spacing-sm: calc(.8 * var(--ms-rem));--ms-spacing-md: calc(1.2 * var(--ms-rem));--ms-spacing-lg: calc(1.6 * var(--ms-rem));--ms-transition-fast: .15s;--ms-transition-normal: .2s;--ms-easing-snappy: cubic-bezier(.4, 0, .2, 1);--ms-placeholder-opacity: .6;--ms-disabled-input-opacity: .6;--ms-scrollbar-width: 8px;--ms-scrollbar-track-bg: transparent;--ms-scrollbar-thumb-bg: var(--ms-border-color);--ms-scrollbar-thumb-bg-hover: var(--ms-text-color-3);--ms-scrollbar-thumb-border-radius: 4px;--ms-debug-bg: var(--base-elevated-bg, light-dark(#f9fafb, #2b2b2b));--ms-debug-border-color: var(--ms-border-color);--ms-debug-text-color: var(--ms-text-color-1);--ms-debug-border-radius: var(--ms-border-radius-md);--ms-debug-summary-color: var(--ms-accent-color);--ms-debug-summary-bg-hover: var(--ms-primary-bg);--ms-debug-summary-outline-color: var(--ms-accent-color);--ms-debug-summary-border-radius: var(--ms-border-radius-sm);--ms-debug-stats-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-debug-stats-border-radius: var(--ms-border-radius-sm);--ms-debug-bullet-color: var(--ms-accent-color)}}@layer component{web-multiselect:not(:defined){display:block;min-height:calc(3.5 * var(--ms-rem));color:transparent!important;background:transparent}:host{-webkit-tap-highlight-color:transparent}.ms__wrapper{display:flex;flex-direction:column;align-items:stretch}.ms__wrapper--inline{flex-direction:row;align-items:var(--ms-inline-align, center)}.ms{position:relative;width:100%}}@layer component{.ms__input-wrapper{position:relative;display:flex;align-items:center}.ms__input{box-sizing:border-box;width:100%;font-family:inherit;height:var(--ms-input-height);padding:var(--ms-input-padding);padding-inline-end:var(--ms-input-padding-right);font-size:var(--ms-input-font-size);border:var(--ms-input-border);border-radius:var(--ms-input-border-radius);background:var(--ms-input-bg);color:var(--ms-input-color);cursor:pointer;transition:border var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__input:hover:not(:focus):not(:disabled){border:var(--ms-input-border-hover)}.ms__input:focus{outline:none;border:var(--ms-input-border-focus)}.ms__input::placeholder{color:var(--ms-input-placeholder-color);opacity:0;transition:opacity var(--ms-transition-fast) var(--ms-easing-snappy)}:host([data-ready]) .ms__input::placeholder{opacity:var(--ms-placeholder-opacity)}.ms__toggle{position:absolute;inset-inline-end:var(--ms-toggle-right);top:50%;transform:var(--ms-transform-center-y);pointer-events:none;color:var(--ms-toggle-icon-color);transition:transform var(--ms-transition-fast) var(--ms-easing-snappy)}.ms--open .ms__toggle{transform:var(--ms-transform-center-y) rotate(var(--ms-transform-rotate-180));color:var(--ms-toggle-icon-color-open)}.ms__counter{position:absolute;inset-inline-end:var(--ms-counter-offset);top:50%;transform:var(--ms-transform-center-y);padding:var(--ms-counter-padding);background:var(--ms-counter-badge-bg);color:var(--ms-counter-badge-color);font-size:var(--ms-counter-font-size);font-weight:var(--ms-counter-font-weight);border-radius:var(--ms-counter-border-radius);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter:hover{background:var(--ms-counter-badge-bg-hover);transform:var(--ms-transform-center-y) scale(var(--ms-transform-scale-hover))}.ms__actions{display:flex;flex-direction:column;gap:var(--ms-actions-gap);padding:var(--ms-actions-padding)}.ms__actions--top{border-bottom:var(--ms-actions-border-bottom)}.ms__actions--bottom{flex-direction:column-reverse;border-top:var(--ms-actions-border-bottom)}.ms__actions-row{display:flex;flex-wrap:nowrap;gap:var(--ms-actions-gap)}.ms__actions--wrap .ms__actions-row{flex-wrap:wrap}.ms__actions--sticky{position:sticky;z-index:var(--ms-z-index-sticky);background:var(--ms-actions-bg)}.ms__actions--sticky.ms__actions--top{top:0}.ms__actions--sticky.ms__actions--bottom{bottom:0}.ms__actions--align-stretch .ms__action-btn{flex:1}.ms__actions--align-left .ms__actions-row{justify-content:flex-start}.ms__actions--align-right .ms__actions-row{justify-content:flex-end}.ms__actions--align-center .ms__actions-row{justify-content:center}.ms__actions--align-space-between .ms__actions-row{justify-content:space-between}.ms__action-btn{font-family:inherit;padding:var(--ms-action-btn-padding);font-size:var(--ms-action-btn-font-size);border:var(--ms-action-btn-border);border-radius:var(--ms-action-btn-border-radius);background:var(--ms-action-button-bg);color:var(--ms-action-button-color);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}@media (hover: hover){.ms__action-btn:hover{background:var(--ms-action-button-bg-hover);border-color:var(--ms-action-button-border-color-hover)}}.ms__action-btn:active{transform:scale(var(--ms-transform-scale-active))}.ms__action-btn:disabled,.ms__action-btn[disabled]{opacity:var(--ms-disabled-opacity);cursor:not-allowed;pointer-events:none}}@layer component{.ms__hint{display:none;position:fixed;z-index:var(--ms-z-index-popover);padding:var(--ms-hint-padding);background:var(--ms-hint-bg);border:var(--ms-hint-border);border-radius:var(--ms-hint-border-radius);box-shadow:var(--ms-hint-box-shadow);font-size:var(--ms-hint-font-size);color:var(--ms-hint-color);line-height:var(--ms-line-height-relaxed);max-width:100%}.ms__hint--visible{display:block}.ms__dropdown{display:none;position:fixed;font-family:inherit;z-index:var(--ms-z-index-dropdown);background:var(--ms-dropdown-bg);border:var(--ms-dropdown-border);border-radius:var(--ms-dropdown-border-radius);box-shadow:var(--ms-dropdown-box-shadow);width:var(--ms-dropdown-width);max-height:var(--ms-options-max-height);overflow:hidden;color:var(--ms-dropdown-text-color)}.ms__dropdown--visible{display:flex;flex-direction:column}.ms__dropdown--fullscreen,.ms__selected-popover--fullscreen{--ms-rem: var(--ms-fullscreen-rem);--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tree-base-indent: var(--ms-fullscreen-tree-base-indent);--ms-tree-indent: var(--ms-fullscreen-tree-indent)}.ms__selected-popover--fullscreen{--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(4.2 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-badge-text-padding: 0 calc(1.2 * var(--ms-rem));--ms-badge-remove-width: calc(3.6 * var(--ms-rem));--ms-badge-remove-icon-size: calc(1.2 * var(--ms-rem));--ms-badge-remove-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-action-btn-padding: calc(.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{position:fixed;top:0;inset-inline-start:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__dropdown--fullscreen .ms__dropdown-inner{display:flex;flex-direction:column;flex:1;min-height:0;max-height:none;overflow:hidden}.ms__dropdown--fullscreen .ms__options{flex:1 1 0;min-height:0;height:auto;max-height:none;overflow-y:auto;padding-bottom:var(--ms-option-gap)}.ms__dropdown--fullscreen .ms__actions{flex:0 0 auto}.ms__fullscreen-header,.ms__selected-popover--fullscreen .ms__selected-popover-header{flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:var(--ms-fullscreen-header-gap);min-height:var(--ms-fullscreen-header-min-height);padding:var(--ms-fullscreen-header-padding);background:var(--ms-fullscreen-header-bg);border-bottom:var(--ms-fullscreen-header-border)}.ms__fullscreen-nav{flex:0 0 100%;display:flex;align-items:center;justify-content:space-between;gap:var(--ms-fullscreen-nav-gap);padding-top:var(--ms-fullscreen-nav-padding-top)}.ms__fullscreen-nav-count{font-size:var(--ms-fullscreen-nav-count-font-size);color:var(--ms-fullscreen-nav-count-color)}.ms__fullscreen-nav-controls{display:flex;align-items:center;gap:var(--ms-fullscreen-nav-gap)}.ms__fullscreen-nav-btn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-nav-btn-size);height:var(--ms-fullscreen-nav-btn-size);padding:0;color:var(--ms-fullscreen-nav-btn-color);background:var(--ms-fullscreen-nav-btn-bg);border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-nav-btn:hover:not(:disabled){background:var(--ms-fullscreen-nav-btn-bg-hover)}.ms__fullscreen-nav-btn:disabled{opacity:.4;cursor:default}.ms__fullscreen-nav-btn:before{content:"";display:block;width:var(--ms-fullscreen-nav-btn-icon-size);height:var(--ms-fullscreen-nav-btn-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-chevron) center / contain no-repeat;mask:var(--ms-icon-chevron) center / contain no-repeat}.ms__fullscreen-nav-btn--next:before{transform:scaleY(-1)}.ms__fullscreen-header>.ms__fullscreen-search-wrapper,.ms__selected-popover--fullscreen .ms__selected-popover-header>span{flex:1 1 auto;min-width:0}.ms__fullscreen-search-wrapper{position:relative;display:flex}.ms__selected-popover--fullscreen .ms__selected-popover-header{font-size:var(--ms-fullscreen-title-font-size);font-weight:var(--ms-fullscreen-title-font-weight);color:var(--ms-fullscreen-text-color)}.ms__fullscreen-search{flex:1 1 auto;min-width:0;font-family:inherit;font-size:var(--ms-fullscreen-search-font-size);color:inherit;background:transparent;border:var(--ms-fullscreen-search-border);border-radius:var(--ms-fullscreen-search-border-radius);padding:var(--ms-fullscreen-search-padding);padding-inline-end:var(--ms-fullscreen-search-clear-gutter)}.ms__fullscreen-search:focus{outline:none;border:var(--ms-input-border-focus)}.ms__fullscreen-search-clear{position:absolute;inset-inline-end:var(--ms-fullscreen-search-clear-inset);top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-search-clear-size);height:var(--ms-fullscreen-search-clear-size);padding:0;color:var(--ms-fullscreen-search-clear-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-search-clear:hover{background:var(--ms-fullscreen-search-clear-bg-hover)}.ms__fullscreen-search-clear:before{content:"";display:block;width:var(--ms-fullscreen-search-clear-icon-size);height:var(--ms-fullscreen-search-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-search-clear) center / contain no-repeat;mask:var(--ms-icon-search-clear) center / contain no-repeat}.ms__fullscreen-close,.ms__selected-popover--fullscreen .ms__selected-popover-close{flex:0 0 auto;position:relative;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-close-size);height:var(--ms-fullscreen-close-size);margin-inline-end:calc(-1 * var(--ms-fullscreen-close-edge-nudge));padding:0;color:var(--ms-fullscreen-close-color);background:var(--ms-fullscreen-close-bg);border:var(--ms-fullscreen-close-border);border-radius:var(--ms-fullscreen-close-border-radius);cursor:pointer}.ms__fullscreen-close:after,.ms__selected-popover--fullscreen .ms__selected-popover-close:after{content:"";position:absolute;inset-block-start:calc(-1 * var(--ms-fullscreen-close-size));inset-block-end:calc(-1 * var(--ms-fullscreen-header-padding-v));inset-inline-end:calc(-1 * var(--ms-fullscreen-header-padding-h));inset-inline-start:calc(-1 * var(--ms-fullscreen-header-gap))}.ms__fullscreen-close:hover,.ms__selected-popover--fullscreen .ms__selected-popover-close:hover{background:var(--ms-fullscreen-close-bg-hover);color:var(--ms-fullscreen-close-color)}.ms__fullscreen-close:before,.ms__selected-popover--fullscreen .ms__selected-popover-close:before{content:"";display:block;width:var(--ms-fullscreen-close-icon-size);height:var(--ms-fullscreen-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__dropdown--fullscreen .ms__option-info{flex:0 0 auto;display:none;align-items:center;justify-content:center;width:var(--ms-fullscreen-info-size);height:var(--ms-fullscreen-info-size);margin-inline-start:var(--ms-option-gap);padding:0;color:var(--ms-fullscreen-info-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__dropdown--fullscreen .ms__option--truncated .ms__option-info{display:inline-flex}@media (hover: hover){.ms__dropdown--fullscreen .ms__option-info:hover{background:var(--ms-fullscreen-info-bg-hover)}}.ms__dropdown--fullscreen .ms__option-info:before{content:"";display:block;width:var(--ms-fullscreen-info-icon-size);height:var(--ms-fullscreen-info-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-info) center / contain no-repeat;mask:var(--ms-icon-info) center / contain no-repeat}.ms__dropdown-inner{flex:1;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__dropdown-inner::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__dropdown-inner::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__dropdown--virtual{max-height:none}.ms__dropdown--virtual .ms__dropdown-inner{overflow-y:visible}.ms__badge-tooltip{position:fixed;z-index:var(--ms-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-tooltip-bg);color:var(--ms-tooltip-text-color);padding:var(--ms-tooltip-padding);border-radius:var(--ms-tooltip-border-radius);font-size:var(--ms-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-tooltip-shadow);pointer-events:none}.ms__badge-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip{position:fixed;z-index:var(--ms-option-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-option-tooltip-bg);color:var(--ms-option-tooltip-text-color);padding:var(--ms-option-tooltip-padding);border-radius:var(--ms-option-tooltip-border-radius);font-size:var(--ms-option-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-option-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-option-tooltip-shadow);pointer-events:none}.ms__option-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip--fullscreen{z-index:var(--ms-z-index-fullscreen-tooltip)}.ms__message{position:fixed;z-index:var(--ms-message-z-index);box-sizing:border-box;max-width:var(--ms-message-max-width);padding:var(--ms-message-padding);font-family:inherit;font-size:var(--ms-message-font-size);font-weight:var(--ms-message-font-weight);line-height:var(--ms-line-height-normal);color:var(--ms-message-color);background:var(--ms-message-bg);border:var(--ms-message-border);border-radius:var(--ms-message-border-radius);box-shadow:var(--ms-message-shadow);cursor:pointer;opacity:0;transition:opacity var(--ms-transition-normal) ease;-webkit-tap-highlight-color:transparent}.ms__message--visible{opacity:1}.ms__message--info{background:var(--ms-message-info-bg);color:var(--ms-message-info-color)}.ms__message--warning{background:var(--ms-message-warning-bg);color:var(--ms-message-warning-color)}.ms__message--error{background:var(--ms-message-error-bg);color:var(--ms-message-error-color)}.ms__message--success{background:var(--ms-message-success-bg);color:var(--ms-message-success-color)}.ms__message--fullscreen{left:50%;right:auto;bottom:calc(var(--ms-message-fullscreen-offset) + env(safe-area-inset-bottom));transform:translate(-50%);max-width:min(var(--ms-message-max-width),calc(100vw - 4 * var(--ms-fullscreen-rem)));padding:calc(1 * var(--ms-fullscreen-rem)) calc(1.4 * var(--ms-fullscreen-rem));font-size:calc(var(--base-font-size-sm, 1.4) * var(--ms-fullscreen-rem))}.ms__selected-popover{display:none;position:fixed;z-index:var(--ms-z-index-popover);background:var(--ms-selected-popover-bg);border:var(--ms-selected-popover-border);border-radius:var(--ms-selected-popover-border-radius);box-shadow:var(--ms-selected-popover-box-shadow);width:var(--ms-selected-popover-width);max-height:var(--ms-selected-popover-max-height);overflow:hidden}.ms__selected-popover--visible{display:flex;flex-direction:column}.ms__selected-popover--virtual{display:block;overflow:visible;max-height:none}.ms__selected-popover--fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;overflow:hidden;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__selected-popover--fullscreen .ms__selected-popover-body{flex:1 1 0;min-height:0;max-height:none}.ms__selected-popover-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ms-selected-popover-header-padding);background:var(--ms-selected-popover-header-bg);border-bottom:var(--ms-selected-popover-header-border-bottom);font-size:var(--ms-selected-popover-header-font-size);font-weight:var(--ms-selected-popover-header-font-weight);color:var(--ms-selected-popover-header-color)}.ms__selected-popover-close{display:flex;align-items:center;justify-content:center;width:var(--ms-popover-close-size);height:var(--ms-popover-close-size);padding:0;border:none;background:var(--ms-selected-popover-close-bg);color:var(--ms-selected-popover-close-color);font-size:var(--ms-selected-popover-close-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-selected-popover-close-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__selected-popover-close:hover{background:var(--ms-selected-popover-close-bg-hover);color:var(--ms-selected-popover-close-color-hover)}.ms__selected-popover-close:before{content:"";display:block;width:var(--ms-selected-popover-close-icon-size);height:var(--ms-selected-popover-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__selected-popover-body{display:flex;flex-direction:column;gap:var(--ms-selected-popover-body-gap);padding:var(--ms-selected-popover-body-padding);overflow-y:auto;max-height:var(--ms-selected-popover-body-max-height);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__selected-popover-body::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__selected-popover-body::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__selected-popover-body .ms__badge{width:100%;min-height:fit-content;line-height:var(--ms-line-height-relaxed);flex-shrink:0}.ms__selected-popover-body .ms__badge-text{flex:1;min-width:0;white-space:normal;word-wrap:break-word}.ms__selected-popover-body--virtual{display:block;max-height:none;padding:0}.ms__selected-popover-body--virtual .ms__badge{height:var(--ms-badge-height-virtual, 36px);min-height:var(--ms-badge-height-virtual, 36px);max-height:var(--ms-badge-height-virtual, 36px);margin-bottom:var(--ms-selected-popover-body-gap);overflow:hidden;box-sizing:border-box}.ms__selected-popover-body--virtual .ms__badge-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}@layer component{.ms--disabled .ms__input{opacity:var(--ms-disabled-input-opacity);cursor:not-allowed;background:var(--ms-input-bg-disabled)}.ms--disabled .ms__toggle{opacity:var(--ms-disabled-input-opacity)}.ms--no-checkboxes .ms__option{gap:0;padding-inline-start:var(--ms-option-padding-h)}.ms--no-checkboxes .ms__option-content{padding-inline-start:0}}@layer component;@layer component{.ms__badges{display:flex;flex-wrap:wrap;gap:var(--ms-badges-gap);padding:0}.ms__badges:empty{display:none}.ms__badges--bottom{margin-top:var(--ms-badges-margin-bottom)}.ms__badges--top{margin-bottom:var(--ms-badges-margin-top);order:var(--ms-order-first)}.ms__badges--left{order:var(--ms-order-first);margin-right:var(--ms-badges-margin-left);justify-content:flex-end}.ms__badges--right{margin-left:var(--ms-badges-margin-right);justify-content:flex-start}.ms__badge{display:inline-flex;align-items:center;height:var(--ms-badge-height);font-size:var(--ms-badge-font-size);font-weight:var(--ms-badge-font-weight);line-height:var(--ms-line-height-none);border-radius:var(--ms-badge-border-radius);overflow:hidden;max-width:100%}.ms__badge-text{display:flex;align-items:center;box-sizing:border-box;height:100%;padding:var(--ms-badge-text-padding);background:var(--ms-badge-text-bg);color:var(--ms-badge-text-color);border:var(--ms-badge-text-border);border-inline-end:none;border-start-start-radius:var(--ms-badge-border-radius);border-end-start-radius:var(--ms-badge-border-radius);border-start-end-radius:0;border-end-end-radius:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background-color var(--ms-transition-normal) ease,color var(--ms-transition-normal) ease}.ms__badge:hover .ms__badge-text{background:var(--ms-badge-text-bg-hover, var(--ms-badge-text-bg));color:var(--ms-badge-text-color-hover, var(--ms-badge-text-color))}.ms__badge-remove{display:flex;align-items:center;justify-content:center;box-sizing:border-box;font-family:inherit;width:var(--ms-badge-remove-width);height:100%;flex-shrink:0;background:var(--ms-badge-remove-bg);color:var(--ms-badge-remove-color);border:var(--ms-badge-remove-border);border-inline-start:none;border-start-end-radius:var(--ms-badge-border-radius);border-end-end-radius:var(--ms-badge-border-radius);border-start-start-radius:0;border-end-start-radius:0;cursor:pointer;transition:background-color var(--ms-transition-normal) ease;font-size:var(--ms-badge-remove-font-size)}.ms__badge-remove:hover{background:var(--ms-badge-remove-bg-hover)}.ms__badge-remove:focus{outline:none}.ms__badge-remove:focus-visible{outline:none;box-shadow:var(--ms-badge-remove-box-shadow-focus)}.ms__badge-remove:before{content:"";display:block;width:var(--ms-badge-remove-icon-size);height:var(--ms-badge-remove-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__badge--counter{cursor:pointer}.ms__badge--counter .ms__badge-text{background:var(--ms-badge-counter-text-bg);color:var(--ms-badge-counter-text-color);border:var(--ms-badge-counter-border);border-inline-end:none}.ms__badge--counter .ms__badge-remove{background:var(--ms-badge-counter-remove-bg);color:var(--ms-badge-counter-remove-color);border:var(--ms-badge-counter-border);border-inline-start:none}.ms__badge--counter .ms__badge-remove:hover{background:var(--ms-badge-counter-remove-bg-hover)}.ms__badge--more,.ms__badge[data-action=show-selected]{cursor:pointer}}@layer component{.ms__count-display{display:flex;align-items:center}.ms__count-display:empty{display:none}.ms__count-display--bottom{margin-top:var(--ms-count-display-margin-bottom)}.ms__count-display--top{margin-bottom:var(--ms-count-display-margin-top);order:var(--ms-order-first)}.ms__count-display--left{order:var(--ms-order-first);margin-right:var(--ms-count-display-margin-left);justify-content:flex-start}.ms__count-display--right{margin-left:var(--ms-count-display-margin-right);justify-content:flex-end}.ms__counter-wrapper{display:inline-flex;align-items:center;gap:var(--ms-counter-wrapper-gap);background:var(--ms-counter-wrapper-bg);border:var(--ms-counter-wrapper-border);border-radius:var(--ms-counter-wrapper-border-radius);padding:var(--ms-counter-wrapper-padding);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter-wrapper:hover{background:var(--ms-counter-wrapper-bg-hover);border-color:var(--ms-counter-wrapper-border-color-hover)}.ms__count-text{display:inline-flex;align-items:center;background:var(--ms-count-text-bg);border:var(--ms-count-text-border);padding:0;font-size:var(--ms-count-text-font-size);color:var(--ms-count-text-color);cursor:pointer;transition:color var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--ms-count-clear-size);height:var(--ms-count-clear-size);padding:0;border:none;background:var(--ms-count-clear-bg);color:var(--ms-count-clear-color);font-size:var(--ms-count-clear-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-count-clear-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear:hover{background:var(--ms-count-clear-bg-hover);color:var(--ms-count-clear-color-hover)}.ms__count-clear:before{content:"";display:block;width:var(--ms-count-clear-icon-size);height:var(--ms-count-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-clear) center / contain no-repeat;mask:var(--ms-icon-clear) center / contain no-repeat}}@layer component{.ms__debug-info{margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-bg);border:1px solid var(--ms-debug-border-color);border-radius:var(--ms-debug-border-radius);font-size:calc(1.2 * var(--ms-rem));color:var(--ms-debug-text-color)}.ms__debug-info details summary{cursor:pointer;font-weight:600;color:var(--ms-debug-summary-color);-webkit-user-select:none;user-select:none;padding:calc(.4 * var(--ms-rem));border-radius:var(--ms-debug-summary-border-radius)}.ms__debug-info details summary:hover{background-color:var(--ms-debug-summary-bg-hover)}.ms__debug-info details summary:focus{outline:2px solid var(--ms-debug-summary-outline-color);outline-offset:2px}.ms__debug-info .ms__debug-stats{display:flex;flex-direction:column;gap:calc(.4 * var(--ms-rem));margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-stats-bg);border-radius:var(--ms-debug-stats-border-radius)}.ms__debug-info .ms__debug-stats span{display:flex;justify-content:space-between;padding:2px 4px;font-family:monospace;font-size:calc(1 * var(--ms-rem))}.ms__debug-info .ms__debug-stats span:before{content:"•";margin-inline-end:calc(.4 * var(--ms-rem));color:var(--ms-debug-bullet-color)}}@layer component{.ms__options{padding:var(--ms-options-padding);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__options::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__options::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__options--virtual .ms__option,.ms__options--fixed-height .ms__option{height:var(--ms-option-height, 50px);min-height:var(--ms-option-height, 50px);max-height:var(--ms-option-height, 50px);overflow:hidden;box-sizing:border-box}.ms__group+.ms__group{border-top:var(--ms-group-border-top);margin-top:var(--ms-group-margin-top);padding-top:var(--ms-group-padding-top)}.ms__group-label{padding:var(--ms-group-label-padding);font-size:var(--ms-group-label-font-size);font-weight:var(--ms-group-label-font-weight);color:var(--ms-group-label-color);text-transform:var(--ms-group-label-transform);letter-spacing:var(--ms-group-label-letter-spacing)}.ms__option{display:flex;align-items:var(--ms-checkbox-align, center);gap:var(--ms-option-gap);padding:var(--ms-option-padding);min-height:var(--ms-option-min-height, auto);color:var(--ms-option-text-color);background:var(--ms-option-bg);cursor:pointer;user-select:none;-webkit-user-select:none}@media (hover: hover){.ms__option:hover{background:var(--ms-option-bg-hover);color:var(--ms-option-color-hover, inherit)}}.ms__option--focused{background:var(--ms-option-bg-focused);color:var(--ms-option-color-focused, inherit);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--matched{background:var(--ms-option-bg-matched);color:var(--ms-option-color-matched, inherit);border-inline-start:var(--ms-option-border-matched)}.ms__option--selected{background:var(--ms-option-bg-selected)}@media (hover: hover){.ms__option--selected:hover{background:var(--ms-option-bg-selected-hover, var(--ms-option-bg-selected))}}.ms__option--disabled{opacity:var(--ms-disabled-opacity);cursor:not-allowed;background:var(--ms-option-disabled-bg)}.ms__option--disabled:hover{background:var(--ms-option-disabled-bg)}@media (hover: hover){.ms__option--focused:hover{background:var(--ms-option-bg-focused-hover);color:var(--ms-option-color-focused-hover, var(--ms-option-color-focused, var(--ms-option-text-color)))}}.ms__option--matched:hover{background:var(--ms-option-bg-matched-hover);color:var(--ms-option-color-matched-hover, var(--ms-option-color-matched, var(--ms-option-text-color)))}.ms__option--selected.ms__option--focused{background:var(--ms-option-bg-selected-focused);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--selected.ms__option--matched{background:var(--ms-option-bg-selected-matched);border-inline-start:var(--ms-option-border-matched)}.ms__option--disabled.ms__option--selected{background:var(--ms-option-bg-disabled-selected)}.ms__option--disabled.ms__option--focused{outline:none}.ms__option[data-checkbox-align=top]{--ms-checkbox-align: flex-start}.ms__option[data-checkbox-align=bottom]{--ms-checkbox-align: flex-end}.ms__checkbox{appearance:none;-webkit-appearance:none;-moz-appearance:none;flex-shrink:0;position:relative;margin-top:var(--ms-checkbox-margin-top);margin-inline-end:var(--ms-checkbox-margin-right);margin-bottom:var(--ms-checkbox-margin-bottom);margin-inline-start:var(--ms-checkbox-margin-left);width:var(--ms-checkbox-size);height:var(--ms-checkbox-size);transform:scale(var(--ms-checkbox-scale));transform-origin:top left;cursor:pointer;background:var(--ms-checkbox-bg);border:var(--ms-checkbox-border);border-radius:var(--ms-checkbox-border-radius);transition:background-color .15s ease,border-color .15s ease}.ms__checkbox:after{content:"";position:absolute;display:none;left:50%;top:40%;width:30%;height:55%;transform:translate(-50%,-50%) rotate(45deg);border:solid var(--ms-checkbox-checkmark-color);border-width:0 var(--ms-checkbox-checkmark-thickness, 2px) var(--ms-checkbox-checkmark-thickness, 2px) 0}.ms__checkbox:hover:not(:disabled){border-color:var(--ms-checkbox-hover-border-color)}.ms__checkbox:checked{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox:checked:after{display:block}.ms__checkbox--indeterminate{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox--indeterminate:after{display:block;top:50%;left:50%;width:55%;height:0;transform:translate(-50%,-50%);border:none;border-bottom:var(--ms-checkbox-checkmark-thickness, 2px) solid var(--ms-checkbox-checkmark-color)}.ms__checkbox--indeterminate:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:checked:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:focus-visible{outline:2px solid var(--ms-checkbox-checked-bg);outline-offset:2px}.ms__checkbox:disabled{cursor:not-allowed;background:var(--ms-checkbox-disabled-bg);border:var(--ms-checkbox-disabled-border);opacity:.6}.ms__checkbox:disabled:checked{background:var(--ms-checkbox-disabled-bg)}.ms__option--disabled .ms__checkbox{cursor:not-allowed}.ms__option-content{flex:1;display:flex;align-items:center;gap:var(--ms-option-content-gap);min-width:0}.ms__option-icon{flex-shrink:0;width:var(--ms-option-icon-size);height:var(--ms-option-icon-size);display:flex;align-items:center;justify-content:center;font-size:var(--ms-option-icon-font-size)}.ms__option-icon svg{width:100%;height:100%;fill:currentColor}.ms__option-text{flex:1;min-width:0}.ms__option-title{font-size:var(--ms-option-title-font-size);color:var(--ms-option-title-color);line-height:var(--ms-line-height-relaxed);white-space:var(--ms-option-title-white-space, normal);overflow:var(--ms-option-title-overflow, visible);text-overflow:var(--ms-option-title-text-overflow, clip)}@media (hover: hover){.ms__option:hover .ms__option-title{color:var(--ms-option-title-color-hover, var(--ms-option-title-color))}}.ms__option--selected .ms__option-title{color:var(--ms-option-title-color-selected, var(--ms-option-title-color))}@media (hover: hover){.ms__option--selected:hover .ms__option-title{color:var(--ms-option-title-color-selected-hover, var(--ms-option-title-color-selected, var(--ms-option-title-color)))}}.ms__option-title mark{background:var(--ms-option-mark-bg);color:var(--ms-option-mark-color);font-weight:var(--ms-option-mark-font-weight)}.ms__option-subtitle{margin-top:var(--ms-option-subtitle-margin-top);font-size:var(--ms-option-subtitle-font-size);color:var(--ms-option-subtitle-color);line-height:var(--ms-option-subtitle-line-height)}@media (hover: hover){.ms__option:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-hover, var(--ms-option-subtitle-color))}}.ms__option--selected .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color))}@media (hover: hover){.ms__option--selected:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected-hover, var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color)))}}.ms__empty{display:flex;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-empty-padding);text-align:center;font-size:var(--ms-empty-font-size);color:var(--ms-empty-color)}.ms__loader{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-loader-padding);gap:var(--ms-loader-gap)}.ms__loading-text{font-size:var(--ms-loading-text-font-size);color:var(--ms-loading-color)}}@layer component{.ms--rtl .ms__badges{direction:rtl}.ms--rtl .ms__badges--right{margin-left:0;margin-right:var(--ms-badges-margin-right)}.ms--rtl .ms__badges--left{margin-right:0;margin-left:var(--ms-badges-margin-left)}.ms--rtl .ms__count-display{direction:rtl}.ms--rtl .ms__count-display--right{margin-left:0;margin-right:var(--ms-count-display-margin-right)}.ms--rtl .ms__count-display--left{margin-right:0;margin-left:var(--ms-count-display-margin-left)}}@layer component{.ms__option--tree{padding-inline-start:calc(var(--ms-tree-base-indent, .75rem) + var(--ms-tree-depth, 0) * var(--ms-tree-indent, 1.25rem))}.ms__option--tree-unselectable{cursor:default}.ms__option--tree-unselectable:hover{background:transparent}}@layer overrides{:host-context([data-theme="dark"]),:host-context([data-bs-theme="dark"]),:host-context(.dark){color-scheme:dark}:host-context([data-theme="light"]),:host-context([data-bs-theme="light"]),:host-context(.light){color-scheme:light}:host([data-theme="dark"]){color-scheme:dark}:host([data-theme="light"]){color-scheme:light}}`, Os = [
4876
+ const Zs = `@layer variables,component,overrides;@layer variables{:host{display:block;--ms-rem: 10px;font-family:var(--ms-font-family, var(--base-font-family, inherit));--ms-accent-color: var(--base-accent-color, #3b82f6);--ms-accent-color-hover: var(--base-accent-color-hover, #2563eb);--ms-accent-color-active: var(--base-accent-color-active, #1d4ed8);--ms-accent-color-light: var(--base-accent-color-light, light-dark(#eff6ff, #1e3a5f));--ms-accent-color-light-hover: var(--base-accent-color-light-hover, light-dark(#e0f2fe, #264a73));--ms-text-color-1: var(--base-text-color-1, light-dark(#111827, #f5f5f5));--ms-text-color-2: var(--base-text-color-2, light-dark(#353b47, #d4d4d4));--ms-text-color-3: var(--base-text-color-3, light-dark(#6b7280, #a3a3a3));--ms-text-color-4: var(--base-text-color-4, light-dark(#a0a3a9, #737373));--ms-text-color-on-accent: var(--base-text-color-on-accent, #ffffff);--ms-text-primary: var(--ms-text-color-1);--ms-text-secondary: var(--ms-text-color-3);--ms-primary-bg: var(--base-hover-bg, color-mix(in srgb, var(--ms-text-color-1) 8%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-primary-bg-hover: var(--base-active-bg, color-mix(in srgb, var(--ms-text-color-1) 14%, var(--base-main-bg, light-dark(#ffffff, #1a1a1a))));--ms-border-color: var(--base-border-color, light-dark(#cbd5e1, #52525b));--ms-border: var(--base-border, 1px solid var(--ms-border-color));--ms-input-bg: var(--base-input-bg, light-dark(#ffffff, #1a1a1a));--ms-input-color: var(--base-input-color, var(--ms-text-color-1));--ms-input-border: var(--base-input-border, 1px solid var(--ms-border-color));--ms-input-border-hover: var(--base-input-border-hover, 1px solid var(--ms-accent-color));--ms-input-border-focus: var(--base-input-border-focus, 1px solid var(--ms-accent-color));--ms-input-placeholder-color: var(--base-input-placeholder-color, var(--ms-text-color-4));--ms-input-bg-disabled: var(--base-input-bg-disabled, rgba(107, 114, 128, .05));--ms-toggle-icon-color: var(--ms-text-color-3);--ms-toggle-icon-color-open: var(--ms-text-color-3);--ms-counter-badge-bg: var(--ms-accent-color);--ms-counter-badge-bg-hover: var(--ms-accent-color-hover);--ms-counter-badge-color: var(--ms-text-color-on-accent);--ms-hint-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-hint-color: var(--ms-text-color-4);--ms-hint-border-color: var(--ms-border-color);--ms-dropdown-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-dropdown-text-color: var(--ms-text-color-1);--ms-dropdown-border-color: var(--ms-border-color);--ms-dropdown-box-shadow-semantic: var(--base-dropdown-box-shadow, 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1));--ms-actions-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-actions-border-color: var(--ms-border-color);--ms-action-button-bg: transparent;--ms-action-button-bg-hover: var(--ms-primary-bg);--ms-action-button-border-color: var(--ms-border-color);--ms-action-button-border-color-hover: var(--ms-accent-color);--ms-action-button-color: var(--ms-text-color-1);--ms-group-border-color: var(--ms-border-color);--ms-option-text-color: var(--ms-text-color-1);--ms-option-bg: transparent;--ms-option-bg-hover: var(--ms-primary-bg);--ms-option-color-hover: inherit;--ms-option-bg-focused: var(--ms-primary-bg);--ms-option-color-focused: inherit;--ms-option-outline-color-focused: var(--ms-accent-color);--ms-option-bg-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-option-bg-matched: color-mix(in srgb, var(--ms-accent-color) 8%, transparent);--ms-option-color-matched: inherit;--ms-option-border-matched-color: color-mix(in srgb, var(--ms-accent-color) 40%, transparent);--ms-option-title-color: var(--ms-text-color-1);--ms-option-subtitle-color: var(--ms-text-color-3);--ms-option-mark-bg: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-option-mark-color: inherit;--ms-loading-color: var(--ms-text-color-3);--ms-badge-bg: var(--ms-accent-color-light);--ms-badge-bg-hover: var(--base-hover-bg, var(--ms-accent-color-light-hover));--ms-badge-bg-active: var(--ms-accent-color-light-hover);--ms-badge-text-bg-hover: var(--base-hover-bg, var(--ms-accent-color-light-hover));--ms-badge-text-color-hover: var(--ms-badge-text-color);--ms-badge-counter-border-color: var(--ms-border-color);--ms-badge-counter-text-bg: var(--ms-primary-bg-hover);--ms-badge-counter-text-color: var(--ms-text-color-1);--ms-badge-counter-remove-bg: var(--ms-text-color-3);--ms-badge-counter-remove-bg-hover: var(--ms-text-color-1);--ms-badge-counter-remove-color: var(--ms-text-color-on-accent);--ms-counter-wrapper-border-color: var(--ms-border-color);--ms-count-clear-bg-hover: var(--ms-accent-color);--ms-tooltip-bg: var(--base-tooltip-bg, var(--base-inverse-bg, light-dark(#333333, #f5f5f5)));--ms-tooltip-text-color: var(--base-tooltip-text-color, light-dark(#ffffff, #1a1a1a));--ms-selected-popover-bg: var(--base-dropdown-bg, var(--base-elevated-bg, light-dark(#ffffff, #1a1a1a)));--ms-selected-popover-border-color: var(--ms-border-color);--ms-selected-popover-header-border-color: var(--ms-border-color);--ms-selected-popover-close-bg-hover: var(--ms-accent-color);--ms-input-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-input-padding-right: calc(4 * var(--ms-rem));--ms-input-padding-h: calc(1.2 * var(--ms-rem));--ms-input-height: calc(var(--base-input-size-md-height, 3.5) * var(--ms-rem));--ms-input-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-input-border-width: 1px;--ms-input-border-radius: var(--ms-border-radius-md);--ms-input-text: var(--ms-text-color-1);--ms-input-bg-disabled: rgba(107, 114, 128, .05);--ms-toggle-right: calc(1.2 * var(--ms-rem));--ms-toggle-color: var(--ms-text-color-3);--ms-transform-center-y: translateY(-50%);--ms-transform-rotate-180: 180deg;--ms-counter-offset: calc(3.2 * var(--ms-rem));--ms-counter-padding: calc(.2 * var(--ms-rem)) calc(.4 * var(--ms-rem));--ms-counter-bg: var(--ms-accent-color);--ms-counter-color: var(--ms-text-color-on-accent);--ms-counter-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-counter-font-weight: var(--base-font-weight-semibold, 600);--ms-counter-border-radius: var(--ms-border-radius-sm);--ms-counter-bg-hover: var(--ms-accent-color-hover);--ms-transform-scale-hover: 1.1;--ms-hint-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-hint-border: 1px solid var(--ms-hint-border-color);--ms-hint-border-radius: var(--ms-border-radius-lg);--ms-hint-box-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--ms-hint-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-dropdown-border: var(--base-dropdown-border, 1px solid var(--ms-dropdown-border-color));--ms-dropdown-border-radius: var(--ms-border-radius-lg);--ms-dropdown-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-input-current-width: auto;--ms-dropdown-width: var(--ms-input-current-width);--ms-options-max-height: calc(32 * var(--ms-rem));--ms-option-color: var(--ms-text-color-1);--ms-z-index-dropdown: 9999;--ms-z-index-sticky: 1;--ms-z-index-fullscreen: 10001;--ms-z-index-fullscreen-tooltip: 10002;--ms-fullscreen-rem: 12px;--ms-fullscreen-bg: var(--ms-dropdown-bg);--ms-fullscreen-text-color: var(--ms-dropdown-text-color);--ms-fullscreen-header-bg: var(--ms-dropdown-bg);--ms-fullscreen-header-border: 1px solid var(--ms-dropdown-border-color);--ms-fullscreen-header-gap: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-v: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding-h: calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-header-padding: var(--ms-fullscreen-header-padding-v) var(--ms-fullscreen-header-padding-h);--ms-fullscreen-header-min-height: calc(5.6 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-size: calc(1.7 * var(--ms-fullscreen-rem));--ms-fullscreen-title-font-weight: var(--base-font-weight-semibold, 600);--ms-fullscreen-search-border: var(--ms-input-border);--ms-fullscreen-search-border-radius: var(--ms-input-border-radius);--ms-fullscreen-search-padding: calc(.8 * var(--ms-fullscreen-rem)) calc(1.2 * var(--ms-fullscreen-rem));--ms-fullscreen-search-font-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-icon-size: calc(1.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-inset: calc(.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-gutter: calc(3.4 * var(--ms-fullscreen-rem));--ms-fullscreen-search-clear-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-search-clear-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-mode-toggle-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-mode-toggle-icon-size: calc(1.5 * var(--ms-fullscreen-rem));--ms-fullscreen-mode-toggle-gap: calc(.4 * var(--ms-fullscreen-rem));--ms-fullscreen-mode-toggle-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-mode-toggle-bg: transparent;--ms-fullscreen-mode-toggle-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-size: calc(3.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-close-color: var(--ms-dropdown-text-color);--ms-fullscreen-close-bg: transparent;--ms-fullscreen-close-border: none;--ms-fullscreen-close-border-radius: 50%;--ms-fullscreen-close-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-close-edge-nudge: calc(.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-size: calc(2.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-icon-size: calc(1.8 * var(--ms-fullscreen-rem));--ms-fullscreen-info-color: var(--ms-accent-color);--ms-fullscreen-info-bg-hover: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-gap: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-padding-top: calc(.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-font-size: calc(1.3 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-count-color: var(--ms-text-muted-color, var(--ms-dropdown-text-color));--ms-fullscreen-nav-btn-size: calc(3.2 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-icon-size: calc(1.6 * var(--ms-fullscreen-rem));--ms-fullscreen-nav-btn-color: var(--ms-dropdown-text-color);--ms-fullscreen-nav-btn-bg: var(--ms-option-bg-matched, transparent);--ms-fullscreen-nav-btn-bg-hover: color-mix(in srgb, var(--ms-accent-color) 22%, transparent);--ms-icon-chevron: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M5 15l7-7 7 7' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/></svg>");--ms-icon-info: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><circle cx='12' cy='12' r='9' fill='none' stroke='black' stroke-width='2'/><circle cx='12' cy='7.5' r='1.3' fill='black'/><path d='M12 11v6' stroke='black' stroke-width='2' stroke-linecap='round' fill='none'/></svg>");--ms-fullscreen-tree-base-indent: calc(.7 * var(--ms-fullscreen-rem));--ms-fullscreen-tree-indent: calc(1.2 * var(--ms-fullscreen-rem));--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-actions-border-bottom: 1px solid var(--ms-actions-border-color);--ms-action-btn-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-action-btn-border: var(--ms-border);--ms-action-btn-border-radius: var(--ms-border-radius-sm);--ms-action-btn-bg: transparent;--ms-action-btn-color: inherit;--ms-action-btn-bg-hover: var(--ms-primary-bg);--ms-action-btn-border-color-hover: var(--ms-accent-color);--ms-transform-scale-active: .98;--ms-options-padding: 0;--ms-group-border-top: 1px solid var(--ms-group-border-color);--ms-group-margin-top: calc(.4 * var(--ms-rem));--ms-group-padding-top: calc(.4 * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-font-weight: var(--base-font-weight-semibold, 600);--ms-group-label-color: var(--ms-text-color-3);--ms-group-label-transform: uppercase;--ms-group-label-letter-spacing: .05em;--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-padding-h: calc(1.2 * var(--ms-rem));--ms-option-min-height: auto;--ms-option-outline-focused: 2px solid var(--ms-option-outline-color-focused);--ms-option-focus-outline-offset: -2px;--ms-option-border-matched: 3px solid var(--ms-option-border-matched-color);--ms-option-bg-focused-hover: var(--ms-primary-bg);--ms-option-bg-matched-hover: color-mix(in srgb, var(--ms-accent-color) 12%, transparent);--ms-option-bg-selected-focused: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-bg-selected-matched: color-mix(in srgb, var(--ms-accent-color) 15%, transparent);--ms-option-disabled-bg: var(--base-disabled-bg, transparent);--ms-option-bg-disabled-selected: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-disabled-opacity: .5;--ms-option-content-gap: calc(.8 * var(--ms-rem));--ms-option-icon-size: calc(2 * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-mark-font-weight: var(--base-font-weight-semibold, 600);--ms-option-title-white-space: normal;--ms-option-title-overflow: visible;--ms-option-title-text-overflow: clip;--ms-option-subtitle-margin-top: calc(.4 * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-subtitle-line-height: var(--base-line-height-tight, 1.25);--ms-checkbox-margin-top: 0;--ms-checkbox-margin-right: 0;--ms-checkbox-margin-bottom: 0;--ms-checkbox-margin-left: 0;--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-checkbox-scale: 1;--ms-checkbox-align: center;--ms-checkbox-bg: var(--ms-input-bg);--ms-checkbox-border-width: 1px;--ms-checkbox-border-color: var(--base-checkbox-border-color, #8f8f8f);--ms-checkbox-border: var(--ms-checkbox-border-width) solid var(--ms-checkbox-border-color);--ms-checkbox-border-radius: calc(.3 * var(--ms-rem));--ms-checkbox-checkmark-thickness: 2.5px;--ms-checkbox-checked-bg: var(--ms-accent-color);--ms-checkbox-checked-border: var(--ms-checkbox-border-width) solid var(--ms-accent-color);--ms-checkbox-checkmark-color: var(--ms-text-color-on-accent);--ms-checkbox-hover-border-color: var(--ms-accent-color);--ms-checkbox-disabled-bg: var(--ms-primary-bg);--ms-checkbox-disabled-border: var(--ms-checkbox-border-width) solid var(--ms-border-color);--ms-checkbox-checked-bg-hover: var(--ms-accent-color-hover);--ms-checkbox-checked-border-color-hover: var(--ms-accent-color-hover);--ms-state-min-height: calc(8 * var(--ms-rem));--ms-empty-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-empty-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-empty-color: var(--ms-text-color-3);--ms-loader-padding: calc(1.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-loader-gap: calc(.8 * var(--ms-rem));--ms-loading-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-loading-text-color: var(--ms-text-color-3);--ms-badges-gap: calc(.8 * var(--ms-rem));--ms-badges-margin-bottom: calc(.8 * var(--ms-rem));--ms-badges-margin-top: calc(.8 * var(--ms-rem));--ms-badges-margin-left: calc(.4 * var(--ms-rem));--ms-badges-margin-right: calc(.4 * var(--ms-rem));--ms-inline-align: center;--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(2.7 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-font-weight: var(--base-font-weight-semibold, 600);--ms-badge-border-radius: var(--ms-border-radius-sm);--ms-order-first: -1;--ms-badge-text-padding: 0 calc(.8 * var(--ms-rem));--ms-badge-text-bg: var(--ms-accent-color-light);--ms-badge-text-color: var(--ms-accent-color);--ms-badge-text-border: none;--ms-badge-remove-width: calc(2.7 * var(--ms-rem));--ms-badge-remove-bg: var(--ms-accent-color);--ms-badge-remove-color: var(--ms-text-color-on-accent);--ms-badge-remove-border: none;--ms-badge-remove-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-badge-remove-bg-hover: var(--ms-accent-color-hover);--ms-badge-remove-box-shadow-focus: 0 0 0 2px color-mix(in srgb, var(--ms-accent-color) 50%, transparent);--ms-badge-remove-icon-size: calc(1 * var(--ms-rem));--ms-icon-remove: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path d='M6 6L18 18M18 6L6 18' stroke='black' stroke-width='2.5' stroke-linecap='round' fill='none'/></svg>");--ms-icon-search-clear: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m13.5 8.5-5 5'/><path d='m8.5 8.5 5 5'/><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>");--ms-icon-search: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>");--ms-icon-filter: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polygon points='22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3'/></svg>");--ms-badge-counter-bg: transparent;--ms-badge-counter-border: 1px solid var(--ms-badge-counter-border-color);--ms-badge-counter-border-radius: var(--ms-border-radius-sm);--ms-more-badge-bg: var(--ms-accent-color-light);--ms-more-badge-hover-bg: var(--ms-badge-bg-hover);--ms-more-badge-active-bg: var(--ms-accent-color-light-hover);--ms-count-display-margin-bottom: calc(.8 * var(--ms-rem));--ms-count-display-margin-top: calc(.8 * var(--ms-rem));--ms-count-display-margin-left: calc(.8 * var(--ms-rem));--ms-count-display-margin-right: calc(.8 * var(--ms-rem));--ms-counter-wrapper-bg: transparent;--ms-counter-wrapper-border: var(--ms-border);--ms-counter-wrapper-border-radius: var(--ms-border-radius-sm);--ms-counter-wrapper-padding: calc(.4 * var(--ms-rem)) calc(.8 * var(--ms-rem));--ms-counter-wrapper-gap: calc(.4 * var(--ms-rem));--ms-counter-wrapper-bg-hover: var(--ms-primary-bg);--ms-counter-wrapper-border-color-hover: var(--ms-accent-color);--ms-count-text-bg: transparent;--ms-count-text-border: none;--ms-count-text-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-count-text-color: var(--ms-text-color-1);--ms-count-clear-size: calc(1.6 * var(--ms-rem));--ms-count-clear-bg: transparent;--ms-count-clear-color: var(--ms-text-color-3);--ms-count-clear-font-size: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-count-clear-border-radius: var(--ms-border-radius-sm);--ms-count-clear-bg-hover: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-count-clear-color-hover: var(--ms-accent-color);--ms-count-clear-icon-size: calc(1.4 * var(--ms-rem));--ms-icon-clear: var(--ms-icon-remove);--ms-tooltip-color: var(--ms-tooltip-text-color);--ms-tooltip-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tooltip-border-radius: var(--ms-border-radius-lg);--ms-tooltip-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-tooltip-max-width: calc(32 * var(--ms-rem));--ms-tooltip-shadow: 0 2px 8px rgba(0, 0, 0, .15);--ms-tooltip-z-index: 10000;--ms-option-tooltip-bg: var(--ms-tooltip-bg);--ms-option-tooltip-text-color: var(--ms-tooltip-text-color);--ms-option-tooltip-padding: var(--ms-tooltip-padding);--ms-option-tooltip-border-radius: var(--ms-tooltip-border-radius);--ms-option-tooltip-font-size: var(--ms-tooltip-font-size);--ms-option-tooltip-max-width: var(--ms-tooltip-max-width);--ms-option-tooltip-shadow: var(--ms-tooltip-shadow);--ms-option-tooltip-z-index: var(--ms-tooltip-z-index);--ms-message-bg: var(--ms-message-info-bg);--ms-message-color: var(--ms-message-info-color);--ms-message-border: 1px solid transparent;--ms-message-border-radius: var(--ms-border-radius-lg);--ms-message-padding: calc(1 * var(--ms-rem)) calc(1.4 * var(--ms-rem));--ms-message-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-message-font-weight: var(--base-font-weight-medium, 500);--ms-message-max-width: calc(40 * var(--ms-rem));--ms-message-shadow: 0 4px 16px rgb(0 0 0 / .18);--ms-message-fullscreen-offset: calc(2.4 * var(--ms-fullscreen-rem));--ms-message-z-index: var(--ms-z-index-fullscreen-tooltip);--ms-message-info-bg: var(--ms-tooltip-bg);--ms-message-info-color: var(--ms-tooltip-text-color);--ms-message-warning-bg: var(--base-warning-bg, #f59e0b);--ms-message-warning-color: var(--base-warning-color, #1a1a1a);--ms-message-error-bg: var(--base-danger-bg, #ef4444);--ms-message-error-color: var(--base-danger-color, #ffffff);--ms-message-success-bg: var(--base-success-bg, #10b981);--ms-message-success-color: var(--base-success-color, #ffffff);--ms-z-index-popover: 10000;--ms-selected-popover-width: calc(32 * var(--ms-rem));--ms-selected-popover-max-height: calc(32 * var(--ms-rem));--ms-selected-popover-border: 1px solid var(--ms-selected-popover-border-color);--ms-selected-popover-border-radius: var(--ms-border-radius-lg);--ms-selected-popover-box-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--ms-selected-popover-header-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-selected-popover-header-bg: color-mix(in srgb, var(--ms-accent-color) 10%, transparent);--ms-selected-popover-header-border-bottom: 1px solid var(--ms-selected-popover-header-border-color);--ms-selected-popover-header-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-selected-popover-header-font-weight: var(--base-font-weight-semibold, 600);--ms-selected-popover-header-color: var(--ms-text-color-1);--ms-popover-close-size: calc(2.4 * var(--ms-rem));--ms-selected-popover-close-bg: transparent;--ms-selected-popover-close-color: var(--ms-text-color-3);--ms-selected-popover-close-font-size: calc(var(--base-font-size-xl, 2) * var(--ms-rem));--ms-selected-popover-close-border-radius: var(--ms-border-radius-sm);--ms-selected-popover-close-bg-hover: color-mix(in srgb, var(--ms-accent-color) 20%, transparent);--ms-selected-popover-close-color-hover: var(--ms-accent-color);--ms-selected-popover-close-icon-size: calc(1.4 * var(--ms-rem));--ms-selected-popover-body-gap: calc(.4 * var(--ms-rem));--ms-selected-popover-body-padding: calc(.8 * var(--ms-rem));--ms-selected-popover-body-max-height: calc(28.8 * var(--ms-rem));--ms-font-size-2xs: calc(var(--base-font-size-2xs, 1) * var(--ms-rem));--ms-font-size-xs: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-font-size-sm: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-font-size-base: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-font-size-lg: calc(var(--base-font-size-lg, 1.8) * var(--ms-rem));--ms-font-weight-normal: var(--base-font-weight-normal, 400);--ms-font-weight-medium: var(--base-font-weight-medium, 500);--ms-font-weight-semibold: var(--base-font-weight-semibold, 600);--ms-line-height-none: 1;--ms-line-height-tight: var(--base-line-height-tight, 1.25);--ms-line-height-normal: var(--base-line-height-normal, 1.5);--ms-line-height-relaxed: var(--base-line-height-relaxed, 1.75);--ms-border-radius-sm: calc(var(--base-border-radius-sm, .4) * var(--ms-rem));--ms-border-radius-md: calc(var(--base-border-radius-md, .6) * var(--ms-rem));--ms-border-radius-lg: calc(var(--base-border-radius-lg, .8) * var(--ms-rem));--ms-border-radius: var(--ms-border-radius-md);--ms-spacing-xs: calc(.4 * var(--ms-rem));--ms-spacing-sm: calc(.8 * var(--ms-rem));--ms-spacing-md: calc(1.2 * var(--ms-rem));--ms-spacing-lg: calc(1.6 * var(--ms-rem));--ms-transition-fast: .15s;--ms-transition-normal: .2s;--ms-easing-snappy: cubic-bezier(.4, 0, .2, 1);--ms-placeholder-opacity: .6;--ms-disabled-input-opacity: .6;--ms-scrollbar-width: 8px;--ms-scrollbar-track-bg: transparent;--ms-scrollbar-thumb-bg: var(--ms-border-color);--ms-scrollbar-thumb-bg-hover: var(--ms-text-color-3);--ms-scrollbar-thumb-border-radius: 4px;--ms-debug-bg: var(--base-elevated-bg, light-dark(#f9fafb, #2b2b2b));--ms-debug-border-color: var(--ms-border-color);--ms-debug-text-color: var(--ms-text-color-1);--ms-debug-border-radius: var(--ms-border-radius-md);--ms-debug-summary-color: var(--ms-accent-color);--ms-debug-summary-bg-hover: var(--ms-primary-bg);--ms-debug-summary-outline-color: var(--ms-accent-color);--ms-debug-summary-border-radius: var(--ms-border-radius-sm);--ms-debug-stats-bg: var(--base-main-bg, light-dark(#ffffff, #1a1a1a));--ms-debug-stats-border-radius: var(--ms-border-radius-sm);--ms-debug-bullet-color: var(--ms-accent-color)}}@layer component{web-multiselect:not(:defined){display:block;min-height:calc(3.5 * var(--ms-rem));color:transparent!important;background:transparent}:host{-webkit-tap-highlight-color:transparent}.ms__wrapper{display:flex;flex-direction:column;align-items:stretch}.ms__wrapper--inline{flex-direction:row;align-items:var(--ms-inline-align, center)}.ms{position:relative;width:100%}}@layer component{.ms__input-wrapper{position:relative;display:flex;align-items:center}.ms__input{box-sizing:border-box;width:100%;font-family:inherit;height:var(--ms-input-height);padding:var(--ms-input-padding);padding-inline-end:var(--ms-input-padding-right);font-size:var(--ms-input-font-size);border:var(--ms-input-border);border-radius:var(--ms-input-border-radius);background:var(--ms-input-bg);color:var(--ms-input-color);cursor:pointer;transition:border var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__input:hover:not(:focus):not(:disabled){border:var(--ms-input-border-hover)}.ms__input:focus{outline:none;border:var(--ms-input-border-focus)}.ms__input::placeholder{color:var(--ms-input-placeholder-color);opacity:0;transition:opacity var(--ms-transition-fast) var(--ms-easing-snappy)}:host([data-ready]) .ms__input::placeholder{opacity:var(--ms-placeholder-opacity)}.ms__toggle{position:absolute;inset-inline-end:var(--ms-toggle-right);top:50%;transform:var(--ms-transform-center-y);pointer-events:none;color:var(--ms-toggle-icon-color);transition:transform var(--ms-transition-fast) var(--ms-easing-snappy)}.ms--open .ms__toggle{transform:var(--ms-transform-center-y) rotate(var(--ms-transform-rotate-180));color:var(--ms-toggle-icon-color-open)}.ms__counter{position:absolute;inset-inline-end:var(--ms-counter-offset);top:50%;transform:var(--ms-transform-center-y);padding:var(--ms-counter-padding);background:var(--ms-counter-badge-bg);color:var(--ms-counter-badge-color);font-size:var(--ms-counter-font-size);font-weight:var(--ms-counter-font-weight);border-radius:var(--ms-counter-border-radius);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter:hover{background:var(--ms-counter-badge-bg-hover);transform:var(--ms-transform-center-y) scale(var(--ms-transform-scale-hover))}.ms__actions{display:flex;flex-direction:column;gap:var(--ms-actions-gap);padding:var(--ms-actions-padding)}.ms__actions--top{border-bottom:var(--ms-actions-border-bottom)}.ms__actions--bottom{flex-direction:column-reverse;border-top:var(--ms-actions-border-bottom)}.ms__actions-row{display:flex;flex-wrap:nowrap;gap:var(--ms-actions-gap)}.ms__actions--wrap .ms__actions-row{flex-wrap:wrap}.ms__actions--sticky{position:sticky;z-index:var(--ms-z-index-sticky);background:var(--ms-actions-bg)}.ms__actions--sticky.ms__actions--top{top:0}.ms__actions--sticky.ms__actions--bottom{bottom:0}.ms__actions--align-stretch .ms__action-btn{flex:1}.ms__actions--align-left .ms__actions-row{justify-content:flex-start}.ms__actions--align-right .ms__actions-row{justify-content:flex-end}.ms__actions--align-center .ms__actions-row{justify-content:center}.ms__actions--align-space-between .ms__actions-row{justify-content:space-between}.ms__action-btn{font-family:inherit;padding:var(--ms-action-btn-padding);font-size:var(--ms-action-btn-font-size);border:var(--ms-action-btn-border);border-radius:var(--ms-action-btn-border-radius);background:var(--ms-action-button-bg);color:var(--ms-action-button-color);cursor:pointer;transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}@media (hover: hover){.ms__action-btn:hover{background:var(--ms-action-button-bg-hover);border-color:var(--ms-action-button-border-color-hover)}}.ms__action-btn:active{transform:scale(var(--ms-transform-scale-active))}.ms__action-btn:disabled,.ms__action-btn[disabled]{opacity:var(--ms-disabled-opacity);cursor:not-allowed;pointer-events:none}}@layer component{.ms__hint{display:none;position:fixed;z-index:var(--ms-z-index-popover);padding:var(--ms-hint-padding);background:var(--ms-hint-bg);border:var(--ms-hint-border);border-radius:var(--ms-hint-border-radius);box-shadow:var(--ms-hint-box-shadow);font-size:var(--ms-hint-font-size);color:var(--ms-hint-color);line-height:var(--ms-line-height-relaxed);max-width:100%}.ms__hint--visible{display:block}.ms__dropdown{display:none;position:fixed;font-family:inherit;z-index:var(--ms-z-index-dropdown);background:var(--ms-dropdown-bg);border:var(--ms-dropdown-border);border-radius:var(--ms-dropdown-border-radius);box-shadow:var(--ms-dropdown-box-shadow);width:var(--ms-dropdown-width);max-height:var(--ms-options-max-height);overflow:hidden;color:var(--ms-dropdown-text-color)}.ms__dropdown--visible{display:flex;flex-direction:column}.ms__dropdown--fullscreen,.ms__selected-popover--fullscreen{--ms-rem: var(--ms-fullscreen-rem);--ms-option-padding: calc(.8 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-option-gap: calc(.8 * var(--ms-rem));--ms-option-title-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-option-subtitle-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-option-icon-font-size: calc(var(--base-font-size-base, 1.6) * var(--ms-rem));--ms-checkbox-size: calc(1.6 * var(--ms-rem));--ms-group-label-font-size: calc(var(--base-font-size-xs, 1.2) * var(--ms-rem));--ms-group-label-padding: calc(.4 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-tree-base-indent: var(--ms-fullscreen-tree-base-indent);--ms-tree-indent: var(--ms-fullscreen-tree-indent)}.ms__selected-popover--fullscreen{--ms-badge-gap: calc(.8 * var(--ms-rem));--ms-badge-height: calc(4.2 * var(--ms-rem));--ms-badge-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem));--ms-badge-text-padding: 0 calc(1.2 * var(--ms-rem));--ms-badge-remove-width: calc(3.6 * var(--ms-rem));--ms-badge-remove-icon-size: calc(1.2 * var(--ms-rem));--ms-badge-remove-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{--ms-actions-gap: calc(.4 * var(--ms-rem));--ms-actions-padding: calc(.8 * var(--ms-rem));--ms-action-btn-padding: calc(.6 * var(--ms-rem)) calc(1.2 * var(--ms-rem));--ms-action-btn-font-size: calc(var(--base-font-size-sm, 1.4) * var(--ms-rem))}.ms__dropdown--fullscreen{position:fixed;top:0;inset-inline-start:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__dropdown--fullscreen .ms__dropdown-inner{display:flex;flex-direction:column;flex:1;min-height:0;max-height:none;overflow:hidden}.ms__dropdown--fullscreen .ms__options{flex:1 1 0;min-height:0;height:auto;max-height:none;overflow-y:auto;padding-bottom:var(--ms-option-gap)}.ms__dropdown--fullscreen .ms__actions{flex:0 0 auto}.ms__fullscreen-header,.ms__selected-popover--fullscreen .ms__selected-popover-header{flex:0 0 auto;display:flex;align-items:center;flex-wrap:wrap;gap:var(--ms-fullscreen-header-gap);min-height:var(--ms-fullscreen-header-min-height);padding:var(--ms-fullscreen-header-padding);background:var(--ms-fullscreen-header-bg);border-bottom:var(--ms-fullscreen-header-border)}.ms__fullscreen-header{align-content:flex-start}.ms__fullscreen-header>.ms__fullscreen-search-wrapper{min-height:var(--ms-fullscreen-header-min-height)}.ms__fullscreen-nav{flex:0 0 100%;display:flex;align-items:center;justify-content:space-between;gap:var(--ms-fullscreen-nav-gap);padding-top:var(--ms-fullscreen-nav-padding-top)}.ms__fullscreen-nav-count{font-size:var(--ms-fullscreen-nav-count-font-size);color:var(--ms-fullscreen-nav-count-color)}.ms__fullscreen-nav-controls{display:flex;align-items:center;gap:var(--ms-fullscreen-nav-gap)}.ms__fullscreen-nav-btn{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-nav-btn-size);height:var(--ms-fullscreen-nav-btn-size);padding:0;color:var(--ms-fullscreen-nav-btn-color);background:var(--ms-fullscreen-nav-btn-bg);border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-nav-btn:hover:not(:disabled){background:var(--ms-fullscreen-nav-btn-bg-hover)}.ms__fullscreen-nav-btn:disabled{opacity:.4;cursor:default}.ms__fullscreen-nav-btn:before{content:"";display:block;width:var(--ms-fullscreen-nav-btn-icon-size);height:var(--ms-fullscreen-nav-btn-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-chevron) center / contain no-repeat;mask:var(--ms-icon-chevron) center / contain no-repeat}.ms__fullscreen-nav-btn--next:before{transform:scaleY(-1)}.ms__fullscreen-header>.ms__fullscreen-search-wrapper,.ms__selected-popover--fullscreen .ms__selected-popover-header>span{flex:1 1 auto;min-width:0}.ms__fullscreen-search-wrapper{position:relative;display:flex;align-items:center}.ms__selected-popover--fullscreen .ms__selected-popover-header{font-size:var(--ms-fullscreen-title-font-size);font-weight:var(--ms-fullscreen-title-font-weight);color:var(--ms-fullscreen-text-color)}.ms__fullscreen-search{flex:1 1 auto;min-width:0;font-family:inherit;font-size:var(--ms-fullscreen-search-font-size);color:inherit;background:transparent;border:var(--ms-fullscreen-search-border);border-radius:var(--ms-fullscreen-search-border-radius);padding:var(--ms-fullscreen-search-padding);padding-inline-end:var(--ms-fullscreen-search-clear-gutter)}.ms__fullscreen-search:focus{outline:none;border:var(--ms-input-border-focus)}.ms__fullscreen-search-clear{position:absolute;inset-inline-end:var(--ms-fullscreen-search-clear-inset);top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-search-clear-size);height:var(--ms-fullscreen-search-clear-size);padding:0;color:var(--ms-fullscreen-search-clear-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-search-clear:hover{background:var(--ms-fullscreen-search-clear-bg-hover)}.ms__fullscreen-search-clear:before{content:"";display:block;width:var(--ms-fullscreen-search-clear-icon-size);height:var(--ms-fullscreen-search-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-search-clear) center / contain no-repeat;mask:var(--ms-icon-search-clear) center / contain no-repeat}.ms__fullscreen-mode-toggle{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-mode-toggle-size);height:var(--ms-fullscreen-mode-toggle-size);margin-inline-end:var(--ms-fullscreen-mode-toggle-gap);padding:0;color:var(--ms-fullscreen-mode-toggle-color);background:var(--ms-fullscreen-mode-toggle-bg);border:none;border-radius:50%;cursor:pointer}.ms__fullscreen-mode-toggle:hover{background:var(--ms-fullscreen-mode-toggle-bg-hover)}.ms__fullscreen-mode-toggle:before{content:"";display:block;width:var(--ms-fullscreen-mode-toggle-icon-size);height:var(--ms-fullscreen-mode-toggle-icon-size);background-color:currentColor;-webkit-mask:var(--ms-fullscreen-mode-toggle-icon, var(--ms-icon-search)) center / contain no-repeat;mask:var(--ms-fullscreen-mode-toggle-icon, var(--ms-icon-search)) center / contain no-repeat}.ms__fullscreen-mode-toggle[data-mode=navigate]{--ms-fullscreen-mode-toggle-icon: var(--ms-icon-search)}.ms__fullscreen-mode-toggle[data-mode=filter]{--ms-fullscreen-mode-toggle-icon: var(--ms-icon-filter)}.ms__fullscreen-close,.ms__selected-popover--fullscreen .ms__selected-popover-close{flex:0 0 auto;position:relative;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:var(--ms-fullscreen-close-size);height:var(--ms-fullscreen-close-size);margin-inline-end:calc(-1 * var(--ms-fullscreen-close-edge-nudge));padding:0;color:var(--ms-fullscreen-close-color);background:var(--ms-fullscreen-close-bg);border:var(--ms-fullscreen-close-border);border-radius:var(--ms-fullscreen-close-border-radius);cursor:pointer}.ms__fullscreen-close:after,.ms__selected-popover--fullscreen .ms__selected-popover-close:after{content:"";position:absolute;inset-block-start:calc(-1 * var(--ms-fullscreen-close-size));inset-block-end:calc(-1 * var(--ms-fullscreen-header-padding-v));inset-inline-end:calc(-1 * var(--ms-fullscreen-header-padding-h));inset-inline-start:calc(-1 * var(--ms-fullscreen-header-gap))}.ms__fullscreen-close:hover,.ms__selected-popover--fullscreen .ms__selected-popover-close:hover{background:var(--ms-fullscreen-close-bg-hover);color:var(--ms-fullscreen-close-color)}.ms__fullscreen-close:before,.ms__selected-popover--fullscreen .ms__selected-popover-close:before{content:"";display:block;width:var(--ms-fullscreen-close-icon-size);height:var(--ms-fullscreen-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__dropdown--fullscreen .ms__option-info{flex:0 0 auto;display:none;align-items:center;justify-content:center;width:var(--ms-fullscreen-info-size);height:var(--ms-fullscreen-info-size);margin-inline-start:var(--ms-option-gap);padding:0;color:var(--ms-fullscreen-info-color);background:transparent;border:none;border-radius:50%;cursor:pointer}.ms__dropdown--fullscreen .ms__option--truncated .ms__option-info{display:inline-flex}@media (hover: hover){.ms__dropdown--fullscreen .ms__option-info:hover{background:var(--ms-fullscreen-info-bg-hover)}}.ms__dropdown--fullscreen .ms__option-info:before{content:"";display:block;width:var(--ms-fullscreen-info-icon-size);height:var(--ms-fullscreen-info-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-info) center / contain no-repeat;mask:var(--ms-icon-info) center / contain no-repeat}.ms__dropdown-inner{flex:1;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__dropdown-inner::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__dropdown-inner::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__dropdown-inner::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__dropdown--virtual{max-height:none}.ms__dropdown--virtual .ms__dropdown-inner{overflow-y:visible}.ms__badge-tooltip{position:fixed;z-index:var(--ms-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-tooltip-bg);color:var(--ms-tooltip-text-color);padding:var(--ms-tooltip-padding);border-radius:var(--ms-tooltip-border-radius);font-size:var(--ms-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-tooltip-shadow);pointer-events:none}.ms__badge-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip{position:fixed;z-index:var(--ms-option-tooltip-z-index);opacity:0;visibility:hidden;transition:opacity var(--ms-transition-normal) ease,visibility var(--ms-transition-normal) ease;background:var(--ms-option-tooltip-bg);color:var(--ms-option-tooltip-text-color);padding:var(--ms-option-tooltip-padding);border-radius:var(--ms-option-tooltip-border-radius);font-size:var(--ms-option-tooltip-font-size);line-height:var(--ms-line-height-relaxed);max-width:var(--ms-option-tooltip-max-width);word-wrap:break-word;white-space:pre-wrap;box-shadow:var(--ms-option-tooltip-shadow);pointer-events:none}.ms__option-tooltip--visible{opacity:1;visibility:visible}.ms__option-tooltip--fullscreen{z-index:var(--ms-z-index-fullscreen-tooltip)}.ms__message{position:fixed;z-index:var(--ms-message-z-index);box-sizing:border-box;max-width:var(--ms-message-max-width);padding:var(--ms-message-padding);font-family:inherit;font-size:var(--ms-message-font-size);font-weight:var(--ms-message-font-weight);line-height:var(--ms-line-height-normal);color:var(--ms-message-color);background:var(--ms-message-bg);border:var(--ms-message-border);border-radius:var(--ms-message-border-radius);box-shadow:var(--ms-message-shadow);cursor:pointer;opacity:0;transition:opacity var(--ms-transition-normal) ease;-webkit-tap-highlight-color:transparent}.ms__message--visible{opacity:1}.ms__message--info{background:var(--ms-message-info-bg);color:var(--ms-message-info-color)}.ms__message--warning{background:var(--ms-message-warning-bg);color:var(--ms-message-warning-color)}.ms__message--error{background:var(--ms-message-error-bg);color:var(--ms-message-error-color)}.ms__message--success{background:var(--ms-message-success-bg);color:var(--ms-message-success-color)}.ms__message--fullscreen{left:50%;right:auto;bottom:calc(var(--ms-message-fullscreen-offset) + env(safe-area-inset-bottom));transform:translate(-50%);max-width:min(var(--ms-message-max-width),calc(100vw - 4 * var(--ms-fullscreen-rem)));padding:calc(1 * var(--ms-fullscreen-rem)) calc(1.4 * var(--ms-fullscreen-rem));font-size:calc(var(--base-font-size-sm, 1.4) * var(--ms-fullscreen-rem))}.ms__selected-popover{display:none;position:fixed;z-index:var(--ms-z-index-popover);background:var(--ms-selected-popover-bg);border:var(--ms-selected-popover-border);border-radius:var(--ms-selected-popover-border-radius);box-shadow:var(--ms-selected-popover-box-shadow);width:var(--ms-selected-popover-width);max-height:var(--ms-selected-popover-max-height);overflow:hidden}.ms__selected-popover--visible{display:flex;flex-direction:column}.ms__selected-popover--virtual{display:block;overflow:visible;max-height:none}.ms__selected-popover--fullscreen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;border:none;border-radius:0;overflow:hidden;background:var(--ms-fullscreen-bg);color:var(--ms-fullscreen-text-color);z-index:var(--ms-z-index-fullscreen);box-sizing:border-box;padding-top:env(safe-area-inset-top);padding-right:env(safe-area-inset-right);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left)}.ms__selected-popover--fullscreen .ms__selected-popover-body{flex:1 1 0;min-height:0;max-height:none}.ms__selected-popover-header{display:flex;align-items:center;justify-content:space-between;padding:var(--ms-selected-popover-header-padding);background:var(--ms-selected-popover-header-bg);border-bottom:var(--ms-selected-popover-header-border-bottom);font-size:var(--ms-selected-popover-header-font-size);font-weight:var(--ms-selected-popover-header-font-weight);color:var(--ms-selected-popover-header-color)}.ms__selected-popover-close{display:flex;align-items:center;justify-content:center;width:var(--ms-popover-close-size);height:var(--ms-popover-close-size);padding:0;border:none;background:var(--ms-selected-popover-close-bg);color:var(--ms-selected-popover-close-color);font-size:var(--ms-selected-popover-close-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-selected-popover-close-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__selected-popover-close:hover{background:var(--ms-selected-popover-close-bg-hover);color:var(--ms-selected-popover-close-color-hover)}.ms__selected-popover-close:before{content:"";display:block;width:var(--ms-selected-popover-close-icon-size);height:var(--ms-selected-popover-close-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__selected-popover-body{display:flex;flex-direction:column;gap:var(--ms-selected-popover-body-gap);padding:var(--ms-selected-popover-body-padding);overflow-y:auto;max-height:var(--ms-selected-popover-body-max-height);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__selected-popover-body::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__selected-popover-body::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__selected-popover-body::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__selected-popover-body .ms__badge{width:100%;min-height:fit-content;line-height:var(--ms-line-height-relaxed);flex-shrink:0}.ms__selected-popover-body .ms__badge-text{flex:1;min-width:0;white-space:normal;word-wrap:break-word}.ms__selected-popover-body--virtual{display:block;max-height:none;padding:0}.ms__selected-popover-body--virtual .ms__badge{height:var(--ms-badge-height-virtual, 36px);min-height:var(--ms-badge-height-virtual, 36px);max-height:var(--ms-badge-height-virtual, 36px);margin-bottom:var(--ms-selected-popover-body-gap);overflow:hidden;box-sizing:border-box}.ms__selected-popover-body--virtual .ms__badge-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}@layer component{.ms--disabled .ms__input{opacity:var(--ms-disabled-input-opacity);cursor:not-allowed;background:var(--ms-input-bg-disabled)}.ms--disabled .ms__toggle{opacity:var(--ms-disabled-input-opacity)}.ms--no-checkboxes .ms__option{gap:0;padding-inline-start:var(--ms-option-padding-h)}.ms--no-checkboxes .ms__option-content{padding-inline-start:0}}@layer component;@layer component{.ms__badges{display:flex;flex-wrap:wrap;gap:var(--ms-badges-gap);padding:0}.ms__badges:empty{display:none}.ms__badges--bottom{margin-top:var(--ms-badges-margin-bottom)}.ms__badges--top{margin-bottom:var(--ms-badges-margin-top);order:var(--ms-order-first)}.ms__badges--left{order:var(--ms-order-first);margin-right:var(--ms-badges-margin-left);justify-content:flex-end}.ms__badges--right{margin-left:var(--ms-badges-margin-right);justify-content:flex-start}.ms__badge{display:inline-flex;align-items:center;height:var(--ms-badge-height);font-size:var(--ms-badge-font-size);font-weight:var(--ms-badge-font-weight);line-height:var(--ms-line-height-none);border-radius:var(--ms-badge-border-radius);overflow:hidden;max-width:100%}.ms__badge-text{display:flex;align-items:center;box-sizing:border-box;height:100%;padding:var(--ms-badge-text-padding);background:var(--ms-badge-text-bg);color:var(--ms-badge-text-color);border:var(--ms-badge-text-border);border-inline-end:none;border-start-start-radius:var(--ms-badge-border-radius);border-end-start-radius:var(--ms-badge-border-radius);border-start-end-radius:0;border-end-end-radius:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background-color var(--ms-transition-normal) ease,color var(--ms-transition-normal) ease}.ms__badge:hover .ms__badge-text{background:var(--ms-badge-text-bg-hover, var(--ms-badge-text-bg));color:var(--ms-badge-text-color-hover, var(--ms-badge-text-color))}.ms__badge-remove{display:flex;align-items:center;justify-content:center;box-sizing:border-box;font-family:inherit;width:var(--ms-badge-remove-width);height:100%;flex-shrink:0;background:var(--ms-badge-remove-bg);color:var(--ms-badge-remove-color);border:var(--ms-badge-remove-border);border-inline-start:none;border-start-end-radius:var(--ms-badge-border-radius);border-end-end-radius:var(--ms-badge-border-radius);border-start-start-radius:0;border-end-start-radius:0;cursor:pointer;transition:background-color var(--ms-transition-normal) ease;font-size:var(--ms-badge-remove-font-size)}.ms__badge-remove:hover{background:var(--ms-badge-remove-bg-hover)}.ms__badge-remove:focus{outline:none}.ms__badge-remove:focus-visible{outline:none;box-shadow:var(--ms-badge-remove-box-shadow-focus)}.ms__badge-remove:before{content:"";display:block;width:var(--ms-badge-remove-icon-size);height:var(--ms-badge-remove-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-remove) center / contain no-repeat;mask:var(--ms-icon-remove) center / contain no-repeat}.ms__badge--counter{cursor:pointer}.ms__badge--counter .ms__badge-text{background:var(--ms-badge-counter-text-bg);color:var(--ms-badge-counter-text-color);border:var(--ms-badge-counter-border);border-inline-end:none}.ms__badge--counter .ms__badge-remove{background:var(--ms-badge-counter-remove-bg);color:var(--ms-badge-counter-remove-color);border:var(--ms-badge-counter-border);border-inline-start:none}.ms__badge--counter .ms__badge-remove:hover{background:var(--ms-badge-counter-remove-bg-hover)}.ms__badge--more,.ms__badge[data-action=show-selected]{cursor:pointer}}@layer component{.ms__count-display{display:flex;align-items:center}.ms__count-display:empty{display:none}.ms__count-display--bottom{margin-top:var(--ms-count-display-margin-bottom)}.ms__count-display--top{margin-bottom:var(--ms-count-display-margin-top);order:var(--ms-order-first)}.ms__count-display--left{order:var(--ms-order-first);margin-right:var(--ms-count-display-margin-left);justify-content:flex-start}.ms__count-display--right{margin-left:var(--ms-count-display-margin-right);justify-content:flex-end}.ms__counter-wrapper{display:inline-flex;align-items:center;gap:var(--ms-counter-wrapper-gap);background:var(--ms-counter-wrapper-bg);border:var(--ms-counter-wrapper-border);border-radius:var(--ms-counter-wrapper-border-radius);padding:var(--ms-counter-wrapper-padding);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__counter-wrapper:hover{background:var(--ms-counter-wrapper-bg-hover);border-color:var(--ms-counter-wrapper-border-color-hover)}.ms__count-text{display:inline-flex;align-items:center;background:var(--ms-count-text-bg);border:var(--ms-count-text-border);padding:0;font-size:var(--ms-count-text-font-size);color:var(--ms-count-text-color);cursor:pointer;transition:color var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--ms-count-clear-size);height:var(--ms-count-clear-size);padding:0;border:none;background:var(--ms-count-clear-bg);color:var(--ms-count-clear-color);font-size:var(--ms-count-clear-font-size);line-height:var(--ms-line-height-none);cursor:pointer;border-radius:var(--ms-count-clear-border-radius);transition:all var(--ms-transition-fast) var(--ms-easing-snappy)}.ms__count-clear:hover{background:var(--ms-count-clear-bg-hover);color:var(--ms-count-clear-color-hover)}.ms__count-clear:before{content:"";display:block;width:var(--ms-count-clear-icon-size);height:var(--ms-count-clear-icon-size);background-color:currentColor;-webkit-mask:var(--ms-icon-clear) center / contain no-repeat;mask:var(--ms-icon-clear) center / contain no-repeat}}@layer component{.ms__debug-info{margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-bg);border:1px solid var(--ms-debug-border-color);border-radius:var(--ms-debug-border-radius);font-size:calc(1.2 * var(--ms-rem));color:var(--ms-debug-text-color)}.ms__debug-info details summary{cursor:pointer;font-weight:600;color:var(--ms-debug-summary-color);-webkit-user-select:none;user-select:none;padding:calc(.4 * var(--ms-rem));border-radius:var(--ms-debug-summary-border-radius)}.ms__debug-info details summary:hover{background-color:var(--ms-debug-summary-bg-hover)}.ms__debug-info details summary:focus{outline:2px solid var(--ms-debug-summary-outline-color);outline-offset:2px}.ms__debug-info .ms__debug-stats{display:flex;flex-direction:column;gap:calc(.4 * var(--ms-rem));margin-top:calc(.4 * var(--ms-rem));padding:calc(.4 * var(--ms-rem));background-color:var(--ms-debug-stats-bg);border-radius:var(--ms-debug-stats-border-radius)}.ms__debug-info .ms__debug-stats span{display:flex;justify-content:space-between;padding:2px 4px;font-family:monospace;font-size:calc(1 * var(--ms-rem))}.ms__debug-info .ms__debug-stats span:before{content:"•";margin-inline-end:calc(.4 * var(--ms-rem));color:var(--ms-debug-bullet-color)}}@layer component{.ms__options{padding:var(--ms-options-padding);scrollbar-width:thin;scrollbar-color:var(--ms-scrollbar-thumb-bg) var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar{width:var(--ms-scrollbar-width)}.ms__options::-webkit-scrollbar-track{background:var(--ms-scrollbar-track-bg)}.ms__options::-webkit-scrollbar-thumb{background:var(--ms-scrollbar-thumb-bg);border-radius:var(--ms-scrollbar-thumb-border-radius)}.ms__options::-webkit-scrollbar-thumb:hover{background:var(--ms-scrollbar-thumb-bg-hover)}.ms__options--virtual .ms__option,.ms__options--fixed-height .ms__option{height:var(--ms-option-height, 50px);min-height:var(--ms-option-height, 50px);max-height:var(--ms-option-height, 50px);overflow:hidden;box-sizing:border-box}.ms__group+.ms__group{border-top:var(--ms-group-border-top);margin-top:var(--ms-group-margin-top);padding-top:var(--ms-group-padding-top)}.ms__group-label{padding:var(--ms-group-label-padding);font-size:var(--ms-group-label-font-size);font-weight:var(--ms-group-label-font-weight);color:var(--ms-group-label-color);text-transform:var(--ms-group-label-transform);letter-spacing:var(--ms-group-label-letter-spacing)}.ms__option{display:flex;align-items:var(--ms-checkbox-align, center);gap:var(--ms-option-gap);padding:var(--ms-option-padding);position:relative;min-height:var(--ms-option-min-height, auto);color:var(--ms-option-text-color);background:var(--ms-option-bg);cursor:pointer;user-select:none;-webkit-user-select:none}@media (hover: hover){.ms__option:hover{background:var(--ms-option-bg-hover);color:var(--ms-option-color-hover, inherit)}}.ms__option--focused{background:var(--ms-option-bg-focused);color:var(--ms-option-color-focused, inherit);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--matched{background:var(--ms-option-bg-matched);color:var(--ms-option-color-matched, inherit)}.ms__option--matched:before{content:"";position:absolute;inset-block:0;inset-inline-start:0;border-inline-start:var(--ms-option-border-matched);pointer-events:none}.ms__option--selected{background:var(--ms-option-bg-selected)}@media (hover: hover){.ms__option--selected:hover{background:var(--ms-option-bg-selected-hover, var(--ms-option-bg-selected))}}.ms__option--disabled{opacity:var(--ms-disabled-opacity);cursor:not-allowed;background:var(--ms-option-disabled-bg)}.ms__option--disabled:hover{background:var(--ms-option-disabled-bg)}@media (hover: hover){.ms__option--focused:hover{background:var(--ms-option-bg-focused-hover);color:var(--ms-option-color-focused-hover, var(--ms-option-color-focused, var(--ms-option-text-color)))}}.ms__option--matched:hover{background:var(--ms-option-bg-matched-hover);color:var(--ms-option-color-matched-hover, var(--ms-option-color-matched, var(--ms-option-text-color)))}.ms__option--selected.ms__option--focused{background:var(--ms-option-bg-selected-focused);outline:var(--ms-option-outline-focused);outline-offset:var(--ms-option-focus-outline-offset)}.ms__option--selected.ms__option--matched{background:var(--ms-option-bg-selected-matched)}.ms__option--disabled.ms__option--selected{background:var(--ms-option-bg-disabled-selected)}.ms__option--disabled.ms__option--focused{outline:none}.ms__option[data-checkbox-align=top]{--ms-checkbox-align: flex-start;--ms-checkbox-margin-top: calc(.2 * var(--ms-rem))}.ms__option[data-checkbox-align=bottom]{--ms-checkbox-align: flex-end}.ms__checkbox{appearance:none;-webkit-appearance:none;-moz-appearance:none;flex-shrink:0;position:relative;margin-top:var(--ms-checkbox-margin-top);margin-inline-end:var(--ms-checkbox-margin-right);margin-bottom:var(--ms-checkbox-margin-bottom);margin-inline-start:var(--ms-checkbox-margin-left);width:var(--ms-checkbox-size);height:var(--ms-checkbox-size);transform:scale(var(--ms-checkbox-scale));transform-origin:top left;cursor:pointer;background:var(--ms-checkbox-bg);border:var(--ms-checkbox-border);border-radius:var(--ms-checkbox-border-radius);transition:background-color .15s ease,border-color .15s ease}.ms__checkbox:after{content:"";position:absolute;display:none;left:50%;top:40%;width:30%;height:55%;transform:translate(-50%,-50%) rotate(45deg);border:solid var(--ms-checkbox-checkmark-color);border-width:0 var(--ms-checkbox-checkmark-thickness, 2px) var(--ms-checkbox-checkmark-thickness, 2px) 0}.ms__checkbox:hover:not(:disabled){border-color:var(--ms-checkbox-hover-border-color)}.ms__checkbox:checked{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox:checked:after{display:block}.ms__checkbox--indeterminate{background:var(--ms-checkbox-checked-bg);border:var(--ms-checkbox-checked-border)}.ms__checkbox--indeterminate:after{display:block;top:50%;left:50%;width:55%;height:0;transform:translate(-50%,-50%);border:none;border-bottom:var(--ms-checkbox-checkmark-thickness, 2px) solid var(--ms-checkbox-checkmark-color)}.ms__checkbox--indeterminate:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:checked:hover:not(:disabled){background:var(--ms-checkbox-checked-bg-hover);border-color:var(--ms-checkbox-checked-border-color-hover)}.ms__checkbox:focus-visible{outline:2px solid var(--ms-checkbox-checked-bg);outline-offset:2px}.ms__checkbox:disabled{cursor:not-allowed;background:var(--ms-checkbox-disabled-bg);border:var(--ms-checkbox-disabled-border);opacity:.6}.ms__checkbox:disabled:checked{background:var(--ms-checkbox-disabled-bg)}.ms__option--disabled .ms__checkbox{cursor:not-allowed}.ms__option-content{flex:1;display:flex;align-items:center;gap:var(--ms-option-content-gap);min-width:0}.ms__option-icon{flex-shrink:0;width:var(--ms-option-icon-size);height:var(--ms-option-icon-size);display:flex;align-items:center;justify-content:center;font-size:var(--ms-option-icon-font-size)}.ms__option-icon svg{width:100%;height:100%;fill:currentColor}.ms__option-text{flex:1;min-width:0}.ms__option-title{font-size:var(--ms-option-title-font-size);color:var(--ms-option-title-color);line-height:var(--ms-line-height-relaxed);white-space:var(--ms-option-title-white-space, normal);overflow:var(--ms-option-title-overflow, visible);text-overflow:var(--ms-option-title-text-overflow, clip)}@media (hover: hover){.ms__option:hover .ms__option-title{color:var(--ms-option-title-color-hover, var(--ms-option-title-color))}}.ms__option--selected .ms__option-title{color:var(--ms-option-title-color-selected, var(--ms-option-title-color))}@media (hover: hover){.ms__option--selected:hover .ms__option-title{color:var(--ms-option-title-color-selected-hover, var(--ms-option-title-color-selected, var(--ms-option-title-color)))}}.ms__option-title mark{background:var(--ms-option-mark-bg);color:var(--ms-option-mark-color);font-weight:var(--ms-option-mark-font-weight)}.ms__option-subtitle{margin-top:var(--ms-option-subtitle-margin-top);font-size:var(--ms-option-subtitle-font-size);color:var(--ms-option-subtitle-color);line-height:var(--ms-option-subtitle-line-height)}@media (hover: hover){.ms__option:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-hover, var(--ms-option-subtitle-color))}}.ms__option--selected .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color))}@media (hover: hover){.ms__option--selected:hover .ms__option-subtitle{color:var(--ms-option-subtitle-color-selected-hover, var(--ms-option-subtitle-color-selected, var(--ms-option-subtitle-color)))}}.ms__empty{display:flex;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-empty-padding);text-align:center;font-size:var(--ms-empty-font-size);color:var(--ms-empty-color)}.ms__loader{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:var(--ms-state-min-height);padding:var(--ms-loader-padding);gap:var(--ms-loader-gap)}.ms__loading-text{font-size:var(--ms-loading-text-font-size);color:var(--ms-loading-color)}}@layer component{.ms--rtl .ms__badges{direction:rtl}.ms--rtl .ms__badges--right{margin-left:0;margin-right:var(--ms-badges-margin-right)}.ms--rtl .ms__badges--left{margin-right:0;margin-left:var(--ms-badges-margin-left)}.ms--rtl .ms__count-display{direction:rtl}.ms--rtl .ms__count-display--right{margin-left:0;margin-right:var(--ms-count-display-margin-right)}.ms--rtl .ms__count-display--left{margin-right:0;margin-left:var(--ms-count-display-margin-left)}}@layer component{.ms__option--tree{padding-inline-start:calc(var(--ms-tree-base-indent, .75rem) + var(--ms-tree-depth, 0) * var(--ms-tree-indent, 1.25rem))}.ms__option--tree-unselectable{cursor:default}.ms__option--tree-unselectable:hover{background:transparent}}@layer overrides{:host-context([data-theme="dark"]),:host-context([data-bs-theme="dark"]),:host-context(.dark){color-scheme:dark}:host-context([data-theme="light"]),:host-context([data-bs-theme="light"]),:host-context(.light){color-scheme:light}:host([data-theme="dark"]){color-scheme:dark}:host([data-theme="light"]){color-scheme:light}}`, Os = [
4753
4877
  "top",
4754
4878
  "top-start",
4755
4879
  "top-end",
@@ -4762,39 +4886,39 @@ const Qs = `@layer variables,component,overrides;@layer variables{:host{display:
4762
4886
  "right",
4763
4887
  "right-start",
4764
4888
  "right-end"
4765
- ], D = () => fo(), Ir = [
4889
+ ], D = () => go(), Pr = [
4766
4890
  // ── Strings (cosmetic → update). Optional ones are nullable: absent → null ─
4767
- { configKey: "searchHint", attribute: "search-hint", converter: E({ isNullable: !0 }), on: "update", description: "Small hint text shown beneath the search input." },
4768
- { configKey: "searchPlaceholder", attribute: "search-placeholder", converter: E({ default: "Search..." }), on: "update", description: "Placeholder text for the search input." },
4769
- { configKey: "selectPlaceholder", attribute: "select-placeholder", converter: E({ default: "Pick an option..." }), on: "update", description: "Placeholder shown on the control when nothing is selected." },
4770
- { configKey: "noDataPlaceholder", attribute: "no-data-placeholder", converter: E({ isNullable: !0 }), on: "update", description: "Text shown when there are no options at all." },
4771
- { configKey: "dropdownMinWidth", attribute: "dropdown-min-width", converter: E({ isNullable: !0 }), on: "update", description: "Minimum width of the dropdown panel (any CSS length)." },
4772
- { configKey: "dropdownMaxWidth", attribute: "dropdown-max-width", converter: E({ isNullable: !0 }), on: "update", description: "Maximum width of the dropdown panel (any CSS length)." },
4773
- { configKey: "maxHeight", attribute: "max-height", converter: E({ default: "20rem" }), on: "update", description: "Maximum height of the dropdown list before it scrolls." },
4774
- { configKey: "emptyMessage", attribute: "empty-message", converter: E({ default: "No results found" }), on: "update", description: "Message shown when a search yields no matches." },
4775
- { configKey: "loadingMessage", attribute: "loading-message", converter: E({ default: "Loading..." }), on: "update", description: "Message shown while options are loading." },
4776
- { configKey: "removeButtonTooltipText", attribute: "remove-button-tooltip-text", converter: E({ isNullable: !0 }), on: "update", description: "Tooltip text for a badge remove (×) button." },
4777
- { configKey: "formFieldId", attribute: "name", converter: E({ isNullable: !0 }), on: "reinit", description: "HTML form field name/id used for the hidden input(s)." },
4891
+ { configKey: "searchHint", attribute: "search-hint", converter: A({ isNullable: !0 }), on: "update", description: "Small hint text shown beneath the search input." },
4892
+ { configKey: "searchPlaceholder", attribute: "search-placeholder", converter: A({ isNullable: !0 }), on: "update", description: 'Placeholder text for the search input. When unset it defaults to "Search..."; if `show-search-mode-toggle` is on, the default instead becomes mode-aware ("Search…" in navigate, "Filter…" in filter). An explicit value always wins and stays fixed.' },
4893
+ { configKey: "selectPlaceholder", attribute: "select-placeholder", converter: A({ default: "Pick an option..." }), on: "update", description: "Placeholder shown on the control when nothing is selected." },
4894
+ { configKey: "noDataPlaceholder", attribute: "no-data-placeholder", converter: A({ isNullable: !0 }), on: "update", description: "Text shown when there are no options at all." },
4895
+ { configKey: "dropdownMinWidth", attribute: "dropdown-min-width", converter: A({ isNullable: !0 }), on: "update", description: "Minimum width of the dropdown panel (any CSS length)." },
4896
+ { configKey: "dropdownMaxWidth", attribute: "dropdown-max-width", converter: A({ isNullable: !0 }), on: "update", description: "Maximum width of the dropdown panel (any CSS length)." },
4897
+ { configKey: "maxHeight", attribute: "max-height", converter: A({ default: "20rem" }), on: "update", description: "Maximum height of the dropdown list before it scrolls." },
4898
+ { configKey: "emptyMessage", attribute: "empty-message", converter: A({ default: "No results found" }), on: "update", description: "Message shown when a search yields no matches." },
4899
+ { configKey: "loadingMessage", attribute: "loading-message", converter: A({ default: "Loading..." }), on: "update", description: "Message shown while options are loading." },
4900
+ { configKey: "removeButtonTooltipText", attribute: "remove-button-tooltip-text", converter: A({ isNullable: !0 }), on: "update", description: "Tooltip text for a badge remove (×) button." },
4901
+ { configKey: "formFieldId", attribute: "name", converter: A({ isNullable: !0 }), on: "reinit", description: "HTML form field name/id used for the hidden input(s)." },
4778
4902
  // ── CSS-var sugar (mirrored to a host style prop in reinit()/update()) ────
4779
- { configKey: "dropdownWidth", attribute: "dropdown-width", converter: E({ isNullable: !0 }), on: "update", description: "Fixed dropdown width; mirrored to the `--ms-dropdown-width` CSS variable." },
4780
- { configKey: "selectedPopoverWidth", attribute: "selected-popover-width", converter: E({ isNullable: !0 }), on: "update", description: "Selected-items popover width; mirrored to `--ms-selected-popover-width`." },
4903
+ { configKey: "dropdownWidth", attribute: "dropdown-width", converter: A({ isNullable: !0 }), on: "update", description: "Fixed dropdown width; mirrored to the `--ms-dropdown-width` CSS variable." },
4904
+ { configKey: "selectedPopoverWidth", attribute: "selected-popover-width", converter: A({ isNullable: !0 }), on: "update", description: "Selected-items popover width; mirrored to `--ms-selected-popover-width`." },
4781
4905
  // ── Member properties (structural → reinit; optional → nullable) ─────────
4782
- { configKey: "valueMember", attribute: "value-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name on an option object that holds its value." },
4783
- { configKey: "displayValueMember", attribute: "display-value-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option display label." },
4784
- { configKey: "searchValueMember", attribute: "search-value-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name searched against (falls back to the display value)." },
4785
- { configKey: "iconMember", attribute: "icon-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option icon." },
4786
- { configKey: "subtitleMember", attribute: "subtitle-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option subtitle." },
4787
- { configKey: "fullTitleMember", attribute: "full-title-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option full/long title." },
4788
- { configKey: "groupMember", attribute: "group-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name used to group options under headers." },
4789
- { configKey: "disabledMember", attribute: "disabled-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that marks an option disabled." },
4906
+ { configKey: "valueMember", attribute: "value-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name on an option object that holds its value." },
4907
+ { configKey: "displayValueMember", attribute: "display-value-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option display label." },
4908
+ { configKey: "searchValueMember", attribute: "search-value-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name searched against (falls back to the display value)." },
4909
+ { configKey: "iconMember", attribute: "icon-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option icon." },
4910
+ { configKey: "subtitleMember", attribute: "subtitle-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option subtitle." },
4911
+ { configKey: "fullTitleMember", attribute: "full-title-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that holds an option full/long title." },
4912
+ { configKey: "groupMember", attribute: "group-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name used to group options under headers." },
4913
+ { configKey: "disabledMember", attribute: "disabled-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name that marks an option disabled." },
4790
4914
  // ── Tree of options (structural → reinit; optional → nullable) ───────────
4791
- { configKey: "pathMember", attribute: "path-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node materialized tree path." },
4792
- { configKey: "parentPathMember", attribute: "parent-path-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node parent path." },
4793
- { configKey: "levelMember", attribute: "level-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node depth level." },
4794
- { configKey: "hasChildrenMember", attribute: "has-children-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name flagging that a node has children." },
4795
- { configKey: "isSelectableMember", attribute: "is-selectable-member", converter: E({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name marking whether a node can be selected." },
4796
- { configKey: "treePathSeparator", attribute: "tree-path-separator", converter: E({ default: "." }), reflect: !0, on: "reinit", description: "Separator between segments in a materialized tree path." },
4797
- { configKey: "isTreeEnabled", converter: H("tristate"), on: "reinit", type: "boolean", description: "Force tree mode on/off. Property-only; when unset (null) tree mode auto-enables if a path source (path-member / getPathCallback) is present." },
4915
+ { configKey: "pathMember", attribute: "path-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node materialized tree path." },
4916
+ { configKey: "parentPathMember", attribute: "parent-path-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node parent path." },
4917
+ { configKey: "levelMember", attribute: "level-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name holding a node depth level." },
4918
+ { configKey: "hasChildrenMember", attribute: "has-children-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name flagging that a node has children." },
4919
+ { configKey: "isSelectableMember", attribute: "is-selectable-member", converter: A({ isNullable: !0 }), reflect: !0, on: "reinit", description: "Property name marking whether a node can be selected." },
4920
+ { configKey: "treePathSeparator", attribute: "tree-path-separator", converter: A({ default: "." }), reflect: !0, on: "reinit", description: "Separator between segments in a materialized tree path." },
4921
+ { configKey: "isTreeEnabled", converter: B("tristate"), on: "reinit", type: "boolean", description: "Force tree mode on/off. Property-only; when unset (null) tree mode auto-enables if a path source (path-member / getPathCallback) is present." },
4798
4922
  {
4799
4923
  configKey: "checkboxMode",
4800
4924
  attribute: "checkbox-mode",
@@ -4835,52 +4959,53 @@ const Qs = `@layer variables,component,overrides;@layer variables{:host{display:
4835
4959
  {
4836
4960
  configKey: "fullscreenAutofocus",
4837
4961
  attribute: "fullscreen-autofocus",
4838
- converter: H("default-false"),
4962
+ converter: B("default-false"),
4839
4963
  on: "update",
4840
4964
  description: "In the phone fullscreen overlay, auto-focus the search field on open (pops the soft keyboard immediately). Default `false`: the sheet opens with the list visible and the keyboard closed, appearing only when the user taps the search. Set `true` to type-to-filter right away. No effect in the floating presentation."
4841
4965
  },
4842
4966
  // ── Numbers ──────────────────────────────────────────────────────────────
4843
- { configKey: "badgesThreshold", attribute: "badges-threshold", converter: q(), on: "update", description: "Threshold at which badges collapse to a count/compact view." },
4844
- { configKey: "badgesMaxVisible", attribute: "badges-max-visible", converter: q(), on: "update", description: "Maximum number of badges rendered before overflow." },
4845
- { configKey: "minSearchLength", attribute: "min-search-length", converter: q({ default: 0 }), on: "update", description: "Minimum characters before searching/filtering starts." },
4846
- { configKey: "searchDebounce", attribute: "search-debounce", converter: q({ default: 0 }), on: "update", description: "Debounce delay in ms applied to the search input." },
4847
- { configKey: "virtualScrollThreshold", attribute: "virtual-scroll-threshold", converter: q({ default: 100 }), on: "reinit", description: "Option count above which virtual scrolling turns on." },
4848
- { configKey: "optionHeight", attribute: "option-height", converter: q({ default: 50 }), on: "update", description: "Fixed row height in px used by virtual scrolling." },
4849
- { configKey: "badgeHeight", attribute: "badge-height", converter: q({ default: 36 }), on: "update", description: "Fixed badge height in px used for layout/virtualization." },
4850
- { configKey: "virtualScrollBuffer", attribute: "virtual-scroll-buffer", converter: q({ default: 10 }), on: "update", description: "Extra rows rendered above/below the viewport when virtualizing." },
4851
- { configKey: "badgeTooltipDelay", attribute: "badge-tooltip-delay", converter: q({ default: 100 }), on: "update", description: "Delay in ms before a badge tooltip appears." },
4852
- { configKey: "badgeTooltipOffset", attribute: "badge-tooltip-offset", converter: q({ default: 8 }), on: "update", description: "Gap in px between a badge and its tooltip." },
4853
- { configKey: "optionTooltipDelay", attribute: "option-tooltip-delay", converter: q(), on: "update", description: "Delay in ms before an option tooltip appears (falls back to badgeTooltipDelay)." },
4854
- { configKey: "optionTooltipOffset", attribute: "option-tooltip-offset", converter: q(), on: "update", description: "Gap in px between an option and its tooltip." },
4967
+ { configKey: "badgesThreshold", attribute: "badges-threshold", converter: X(), on: "update", description: "Threshold at which badges collapse to a count/compact view." },
4968
+ { configKey: "badgesMaxVisible", attribute: "badges-max-visible", converter: X(), on: "update", description: "Maximum number of badges rendered before overflow." },
4969
+ { configKey: "minSearchLength", attribute: "min-search-length", converter: X({ default: 0 }), on: "update", description: "Minimum characters before searching/filtering starts." },
4970
+ { configKey: "searchDebounce", attribute: "search-debounce", converter: X({ default: 0 }), on: "update", description: "Debounce delay in ms applied to the search input." },
4971
+ { configKey: "virtualScrollThreshold", attribute: "virtual-scroll-threshold", converter: X({ default: 100 }), on: "reinit", description: "Option count above which virtual scrolling turns on." },
4972
+ { configKey: "optionHeight", attribute: "option-height", converter: X({ default: 50 }), on: "update", description: "Fixed row height in px used by virtual scrolling." },
4973
+ { configKey: "badgeHeight", attribute: "badge-height", converter: X({ default: 36 }), on: "update", description: "Fixed badge height in px used for layout/virtualization." },
4974
+ { configKey: "virtualScrollBuffer", attribute: "virtual-scroll-buffer", converter: X({ default: 10 }), on: "update", description: "Extra rows rendered above/below the viewport when virtualizing." },
4975
+ { configKey: "badgeTooltipDelay", attribute: "badge-tooltip-delay", converter: X({ default: 100 }), on: "update", description: "Delay in ms before a badge tooltip appears." },
4976
+ { configKey: "badgeTooltipOffset", attribute: "badge-tooltip-offset", converter: X({ default: 8 }), on: "update", description: "Gap in px between a badge and its tooltip." },
4977
+ { configKey: "optionTooltipDelay", attribute: "option-tooltip-delay", converter: X(), on: "update", description: "Delay in ms before an option tooltip appears (falls back to badgeTooltipDelay)." },
4978
+ { configKey: "optionTooltipOffset", attribute: "option-tooltip-offset", converter: X(), on: "update", description: "Gap in px between an option and its tooltip." },
4855
4979
  // ── Booleans (default true) ──────────────────────────────────────────────
4856
- { configKey: "isMultipleEnabled", attribute: "multiple", converter: H("default-true"), on: "reinit", description: "Allow selecting multiple options. When off, selecting one replaces the previous." },
4857
- { configKey: "isGroupsAllowed", attribute: "allow-groups", converter: H("default-true"), on: "reinit", description: "Allow grouping options under group headers." },
4858
- { configKey: "isCheckboxesShown", attribute: "show-checkboxes", converter: H("default-true"), on: "reinit", description: "Show a checkbox on each option." },
4859
- { configKey: "isActionsSticky", attribute: "sticky-actions", converter: H("default-true"), on: "update", description: "Keep the action bar pinned while the list scrolls." },
4860
- { configKey: "isPlacementLocked", attribute: "lock-placement", converter: H("default-true"), on: "update", description: "Keep the dropdown initial placement instead of flipping when it fits." },
4861
- { configKey: "isSearchEnabled", attribute: "enable-search", converter: H("default-true"), on: "reinit", description: "Show the search input." },
4862
- { configKey: "isKeepOptionsOnSearch", attribute: "keep-options-on-search", converter: H("default-true"), on: "update", description: "Keep already-selected options visible while filtering." },
4863
- { configKey: "shouldKeepSearchOnClose", attribute: "should-keep-search-on-close", converter: H("default-true"), on: "update", description: "Preserve the search text after the dropdown closes." },
4980
+ { configKey: "isMultipleEnabled", attribute: "multiple", converter: B("default-true"), on: "reinit", description: "Allow selecting multiple options. When off, selecting one replaces the previous." },
4981
+ { configKey: "isGroupsAllowed", attribute: "allow-groups", converter: B("default-true"), on: "reinit", description: "Allow grouping options under group headers." },
4982
+ { configKey: "isCheckboxesShown", attribute: "show-checkboxes", converter: B("default-true"), on: "reinit", description: "Show a checkbox on each option." },
4983
+ { configKey: "isActionsSticky", attribute: "sticky-actions", converter: B("default-true"), on: "update", description: "Keep the action bar pinned while the list scrolls." },
4984
+ { configKey: "isPlacementLocked", attribute: "lock-placement", converter: B("default-true"), on: "update", description: "Keep the dropdown initial placement instead of flipping when it fits." },
4985
+ { configKey: "isSearchEnabled", attribute: "enable-search", converter: B("default-true"), on: "reinit", description: "Show the search input." },
4986
+ { configKey: "isKeepOptionsOnSearch", attribute: "keep-options-on-search", converter: B("default-true"), on: "update", description: "Keep already-selected options visible while filtering." },
4987
+ { configKey: "shouldKeepSearchOnClose", attribute: "should-keep-search-on-close", converter: B("default-true"), on: "update", description: "Preserve the search text after the dropdown closes." },
4864
4988
  // ── Booleans (default false) ─────────────────────────────────────────────
4865
- { configKey: "isCloseOnSelect", attribute: "close-on-select", converter: H("default-false"), on: "update", description: "Close the dropdown immediately after a selection." },
4866
- { configKey: "isAddNewAllowed", attribute: "allow-add-new", converter: H("default-false"), on: "reinit", description: "Allow adding a new option from the search text." },
4867
- { configKey: "isCounterShown", attribute: "show-counter", converter: H("default-false"), on: "update", description: "Show a selected-count indicator." },
4868
- { configKey: "isBadgeFullTitleShown", attribute: "show-badge-full-title", converter: H("default-false"), on: "update", description: "Show the full title on badges instead of the short label." },
4869
- { configKey: "isVirtualScrollEnabled", attribute: "enable-virtual-scroll", converter: H("default-false"), on: "reinit", description: "Force virtual scrolling on regardless of the threshold." },
4870
- { configKey: "isBadgeTooltipsEnabled", attribute: "enable-badge-tooltips", converter: H("default-false"), on: "update", description: "Enable tooltips on badges." },
4871
- { configKey: "isOptionTooltipsEnabled", attribute: "enable-option-tooltips", converter: H("default-false"), on: "update", description: "Enable tooltips on options." },
4872
- { configKey: "isOptionTooltipFollowCursor", attribute: "option-tooltip-follow-cursor", converter: H("default-false"), on: "update", description: "Make option tooltips follow the pointer." },
4989
+ { configKey: "isCloseOnSelect", attribute: "close-on-select", converter: B("default-false"), on: "update", description: "Close the dropdown immediately after a selection." },
4990
+ { configKey: "isAddNewAllowed", attribute: "allow-add-new", converter: B("default-false"), on: "reinit", description: "Allow adding a new option from the search text." },
4991
+ { configKey: "isCounterShown", attribute: "show-counter", converter: B("default-false"), on: "update", description: "Show a selected-count indicator." },
4992
+ { configKey: "isBadgeFullTitleShown", attribute: "show-badge-full-title", converter: B("default-false"), on: "update", description: "Show the full title on badges instead of the short label." },
4993
+ { configKey: "isVirtualScrollEnabled", attribute: "enable-virtual-scroll", converter: B("default-false"), on: "reinit", description: "Force virtual scrolling on regardless of the threshold." },
4994
+ { configKey: "isBadgeTooltipsEnabled", attribute: "enable-badge-tooltips", converter: B("default-false"), on: "update", description: "Enable tooltips on badges." },
4995
+ { configKey: "isOptionTooltipsEnabled", attribute: "enable-option-tooltips", converter: B("default-false"), on: "update", description: "Enable tooltips on options." },
4996
+ { configKey: "isOptionTooltipFollowCursor", attribute: "option-tooltip-follow-cursor", converter: B("default-false"), on: "update", description: "Make option tooltips follow the pointer." },
4997
+ { configKey: "isSearchModeToggleShown", attribute: "show-search-mode-toggle", converter: B("default-false"), on: "update", description: "Show a clickable toggle in the phone fullscreen overlay search header that flips `search-mode` between `filter` and `navigate` live. Fullscreen-only; no effect in the floating presentation or when search is disabled." },
4873
4998
  // ── Special attributes ───────────────────────────────────────────────────
4874
- { configKey: "initialValues", attribute: "initial-values", converter: xr(), default: [], on: "reinit", type: "Array<string | number>", description: 'Values selected on first render. Accepts a JSON array (`["a","b"]`) or a bare CSV (`a,b,c`).' },
4875
- { configKey: "showDebugInfo", attribute: "show-debug-info", converter: H("default-false"), on: "update", description: "Render an in-component debug panel.", deprecated: "Use per-instance logging (el.enableLogging()) instead." },
4999
+ { configKey: "initialValues", attribute: "initial-values", converter: _r(), default: [], on: "reinit", type: "Array<string | number>", description: 'Values selected on first render. Accepts a JSON array (`["a","b"]`) or a bare CSV (`a,b,c`).' },
5000
+ { configKey: "showDebugInfo", attribute: "show-debug-info", converter: B("default-false"), on: "update", description: "Render an in-component debug panel.", deprecated: "Use per-instance logging (el.enableLogging()) instead." },
4876
5001
  // ── Complex property (data) ──────────────────────────────────────────────
4877
- { configKey: "options", converter: po(), on: "reinit", type: "ReadonlyArray<Record<string, unknown>>", description: "The array of option objects to render. The JS API — assign `el.options` directly. For HTML authoring use the `data-options` attribute (parsed per `data-options-format`) or declarative <option> children; both feed the same list and take precedence over this property in the order: <option> children > property > data-options." },
4878
- { configKey: "optionsSource", attribute: "data-options", converter: E({ isNullable: !0 }), on: "reinit", type: "string", description: "HTML-authoring source for the option list, parsed per `data-options-format`. Reactive: changing either attribute re-renders. Prefer the `options` property in JS; a set `options` property and declarative <option> children both win over this." },
4879
- { configKey: "optionsFormat", attribute: "data-options-format", converter: F(_r, { default: "json" }), on: "reinit", type: "'json' | 'csv' | 'plain'", description: "How to parse the `data-options` attribute: `json` (a JSON array of objects or [value, label] tuples), `csv` (rows split on `data-options-row-splitter`, cells on `data-options-splitter`; the first row is a header — map columns via *-member), or `plain` (bare values split on both splitters -> [value, label] tuples, value === label). Default `json`." },
4880
- { configKey: "optionsSplitter", attribute: "data-options-splitter", converter: E({ default: "," }), on: "reinit", type: "string", description: 'Field/cell delimiter for the `csv` and `plain` `data-options` formats. Default `,`. Escapes `\\t` `\\n` `\\r` are honoured (e.g. `data-options-splitter="\\t"` for TSV). Ignored for `json`.' },
4881
- { configKey: "optionsRowSplitter", attribute: "data-options-row-splitter", converter: E({ default: `
5002
+ { configKey: "options", converter: fo(), on: "reinit", type: "ReadonlyArray<Record<string, unknown>>", description: "The array of option objects to render. The JS API — assign `el.options` directly. For HTML authoring use the `data-options` attribute (parsed per `data-options-format`) or declarative <option> children; both feed the same list and take precedence over this property in the order: <option> children > property > data-options." },
5003
+ { configKey: "optionsSource", attribute: "data-options", converter: A({ isNullable: !0 }), on: "reinit", type: "string", description: "HTML-authoring source for the option list, parsed per `data-options-format`. Reactive: changing either attribute re-renders. Prefer the `options` property in JS; a set `options` property and declarative <option> children both win over this." },
5004
+ { configKey: "optionsFormat", attribute: "data-options-format", converter: F(kr, { default: "json" }), on: "reinit", type: "'json' | 'csv' | 'plain'", description: "How to parse the `data-options` attribute: `json` (a JSON array of objects or [value, label] tuples), `csv` (rows split on `data-options-row-splitter`, cells on `data-options-splitter`; the first row is a header — map columns via *-member), or `plain` (bare values split on both splitters -> [value, label] tuples, value === label). Default `json`." },
5005
+ { configKey: "optionsSplitter", attribute: "data-options-splitter", converter: A({ default: "," }), on: "reinit", type: "string", description: 'Field/cell delimiter for the `csv` and `plain` `data-options` formats. Default `,`. Escapes `\\t` `\\n` `\\r` are honoured (e.g. `data-options-splitter="\\t"` for TSV). Ignored for `json`.' },
5006
+ { configKey: "optionsRowSplitter", attribute: "data-options-row-splitter", converter: A({ default: `
4882
5007
  ` }), on: "reinit", type: "string", description: 'Row/record delimiter for the `csv` and `plain` `data-options` formats. Default newline. Escapes honoured (e.g. `data-options-row-splitter=";"` for single-line data). Ignored for `json`.' },
4883
- { configKey: "actionButtons", converter: mo({ validate: (s) => Array.isArray(s) }), on: "reinit", type: "Array<Record<string, unknown>>", description: "Custom action buttons for the dropdown footer/header. Property-only; when unset the default Select-All / Clear buttons apply." },
5008
+ { configKey: "actionButtons", converter: po({ validate: (s) => Array.isArray(s) }), on: "reinit", type: "Array<Record<string, unknown>>", description: "Custom action buttons for the dropdown footer/header. Property-only; when unset the default Select-All / Clear buttons apply." },
4884
5009
  // ── Callbacks: data shape (structural → reinit) ──────────────────────────
4885
5010
  { configKey: "getValueCallback", converter: D(), on: "reinit", type: "(item: unknown) => string | number", description: "Extract an option value (overrides valueMember)." },
4886
5011
  { configKey: "getPathCallback", converter: D(), on: "reinit", type: "(item: unknown) => string", description: "Extract a node tree path (enables tree mode; overrides pathMember)." },
@@ -4913,19 +5038,19 @@ const Qs = `@layer variables,component,overrides;@layer variables{:host{display:
4913
5038
  { configKey: "beforeSelectCallback", converter: D(), on: "update", type: "(option: unknown, selectedOptions: unknown[]) => boolean | string | void", description: "Runs before selecting; return false to veto, or a string to veto and show it as a message." },
4914
5039
  { configKey: "beforeDeselectCallback", converter: D(), on: "update", type: "(option: unknown, selectedOptions: unknown[]) => boolean | string | void", description: "Runs before deselecting; return false to veto, or a string to veto and show it as a message." },
4915
5040
  { configKey: "addNewCallback", converter: D(), on: "update", type: "(value: string) => unknown | Promise<unknown>", description: "Create a new option from the typed text." }
4916
- ], Pr = [
5041
+ ], Mr = [
4917
5042
  { name: "select", description: "An option was selected. `detail.option` is the selected option; `detail.selectedOptions`/`detail.selectedValues` are the full selection." },
4918
5043
  { name: "deselect", description: "An option was removed from the selection. `detail.option` is that option." },
4919
5044
  { name: "change", description: "The selection changed. `detail.selectedOptions`/`detail.selectedValues` are the full selection." }
4920
- ], Is = /* @__PURE__ */ new Set(["dropdownWidth", "selectedPopoverWidth", "showDebugInfo", "initialValues", "optionsSource", "optionsFormat", "optionsSplitter", "optionsRowSplitter", "mobilePresentation"]), at = {
5045
+ ], Ps = /* @__PURE__ */ new Set(["dropdownWidth", "selectedPopoverWidth", "showDebugInfo", "initialValues", "optionsSource", "optionsFormat", "optionsSplitter", "optionsRowSplitter", "mobilePresentation"]), at = {
4921
5046
  dropdownWidth: "--ms-dropdown-width",
4922
5047
  selectedPopoverWidth: "--ms-selected-popover-width"
4923
5048
  };
4924
- let Mr = null;
4925
- function Lr() {
4926
- return Mr ?? (Mr = Jo(Qs, "--ms-"));
5049
+ let Lr = null;
5050
+ function Er() {
5051
+ return Lr ?? (Lr = Qo(Zs, "--ms-"));
4927
5052
  }
4928
- const Er = [
5053
+ const Ar = [
4929
5054
  { key: "valueMember", member: "value", callbackKey: "getValueCallback" },
4930
5055
  { key: "displayValueMember", member: "label", callbackKey: "getDisplayValueCallback" },
4931
5056
  { key: "groupMember", member: "group", callbackKey: "getGroupCallback" },
@@ -4933,23 +5058,23 @@ const Er = [
4933
5058
  { key: "subtitleMember", member: "subtitle", callbackKey: "getSubtitleCallback" },
4934
5059
  { key: "disabledMember", member: "disabled", callbackKey: "getDisabledCallback" }
4935
5060
  ];
4936
- var J, A, me, et, tt, st, ze, $e, ke, k, ct, Bt, Kt, Zs, eo, to, dt, Ft, so, oo, io, Wt, ro, no, jt, Ut;
4937
- class Ge extends zt {
5061
+ var J, z, me, et, tt, st, ze, Ne, ke, _, ct, Kt, Ft, eo, to, so, dt, Wt, oo, io, ro, jt, no, ao, Ut, Gt;
5062
+ class Ge extends Nt {
4938
5063
  constructor() {
4939
5064
  super();
4940
- L(this, k);
4941
- L(this, J);
4942
- L(this, A);
4943
- L(this, me);
4944
- L(this, et, null);
5065
+ E(this, _);
5066
+ E(this, J);
5067
+ E(this, z);
5068
+ E(this, me);
5069
+ E(this, et, null);
4945
5070
  // Dev-mode customStylesCallback lint: unknown --ms-* names already warned about.
4946
- L(this, tt, /* @__PURE__ */ new Set());
5071
+ E(this, tt, /* @__PURE__ */ new Set());
4947
5072
  // Declarative <option>/<optgroup> state (parsed once from light DOM).
4948
- L(this, st, !1);
4949
- L(this, ze, !1);
4950
- L(this, $e);
4951
- L(this, ke);
4952
- $(this, J, this.attachShadow({ mode: "open" })), Yo(p(this, J), Qs), typeof requestAnimationFrame == "function" ? requestAnimationFrame(() => this.setAttribute("data-ready", "")) : this.setAttribute("data-ready", "");
5073
+ E(this, st, !1);
5074
+ E(this, ze, !1);
5075
+ E(this, Ne);
5076
+ E(this, ke);
5077
+ N(this, J, this.attachShadow({ mode: "open" })), Yo(p(this, J), Zs), typeof requestAnimationFrame == "function" ? requestAnimationFrame(() => this.setAttribute("data-ready", "")) : this.setAttribute("data-ready", "");
4953
5078
  }
4954
5079
  /**
4955
5080
  * Called by the browser when the surrounding <form> is reset. Clears the
@@ -4957,7 +5082,7 @@ class Ge extends zt {
4957
5082
  */
4958
5083
  formResetCallback() {
4959
5084
  var t;
4960
- (t = p(this, A)) == null || t.clearAll();
5085
+ (t = p(this, z)) == null || t.clearAll();
4961
5086
  }
4962
5087
  // ── core lifecycle hooks ──────────────────────────────────────────────────
4963
5088
  /** Runtime writing-direction switch (core observes `dir`): re-mirror the live
@@ -4966,28 +5091,28 @@ class Ge extends zt {
4966
5091
  * and the panels' explicit `dir`). The initial direction is read by the build. */
4967
5092
  directionChanged(t) {
4968
5093
  var o;
4969
- (o = p(this, A)) == null || o.refreshDirection();
5094
+ (o = p(this, z)) == null || o.refreshDirection();
4970
5095
  }
4971
5096
  /** Structural change (or first connect): mirror CSS vars, then (re)build the picker. */
4972
5097
  reinit() {
4973
- w(this, k, oo).call(this), this.isConnected && w(this, k, Bt).call(this);
5098
+ x(this, _, io).call(this), this.isConnected && x(this, _, Kt).call(this);
4974
5099
  }
4975
5100
  /** Cosmetic change: mirror CSS vars / custom styles / debug, patch the picker in place. */
4976
5101
  update(t) {
4977
- w(this, k, io).call(this, t), "customStylesCallback" in t && w(this, k, Ft).call(this), "showDebugInfo" in t && w(this, k, jt).call(this);
5102
+ x(this, _, ro).call(this, t), "customStylesCallback" in t && x(this, _, Wt).call(this), "showDebugInfo" in t && x(this, _, Ut).call(this);
4978
5103
  const o = {};
4979
5104
  for (const [i, r] of Object.entries(t))
4980
- Is.has(i) || (o[i] = r === null ? void 0 : r);
4981
- p(this, A) && Object.keys(o).length > 0 && (p(this, A).updateOptions(o) || w(this, k, Bt).call(this)), "mobilePresentation" in t && w(this, k, ct).call(this, At());
5105
+ Ps.has(i) || (o[i] = r === null ? void 0 : r);
5106
+ p(this, z) && Object.keys(o).length > 0 && (p(this, z).updateOptions(o) || x(this, _, Kt).call(this)), "mobilePresentation" in t && x(this, _, ct).call(this, zt());
4982
5107
  }
4983
5108
  /** Activate: ensure the picker exists (a DOM move destroyed it in disconnect()). */
4984
5109
  connect() {
4985
- p(this, A) || w(this, k, Kt).call(this);
5110
+ p(this, z) || x(this, _, Ft).call(this);
4986
5111
  }
4987
5112
  /** Deactivate: tear the picker down (rebuilt on the next connect). */
4988
5113
  disconnect() {
4989
5114
  var t;
4990
- (t = p(this, A)) == null || t.destroy(), $(this, A, void 0);
5115
+ (t = p(this, z)) == null || t.destroy(), N(this, z, void 0);
4991
5116
  }
4992
5117
  /**
4993
5118
  * Device/viewport/orientation changed (core §12.9). Overriding this opts the
@@ -4998,7 +5123,7 @@ class Ge extends zt {
4998
5123
  * set before the dropdown can open.
4999
5124
  */
5000
5125
  environmentChanged(t) {
5001
- w(this, k, ct).call(this, t);
5126
+ x(this, _, ct).call(this, t);
5002
5127
  }
5003
5128
  // ── non-input public API ──────────────────────────────────────────────────
5004
5129
  /** Form field name (mirrors the `name` attribute → `formFieldId`). */
@@ -5010,21 +5135,21 @@ class Ge extends zt {
5010
5135
  }
5011
5136
  get selectedValue() {
5012
5137
  var t;
5013
- return this.flush(), ((t = p(this, A)) == null ? void 0 : t.selectedValue) ?? null;
5138
+ return this.flush(), ((t = p(this, z)) == null ? void 0 : t.selectedValue) ?? null;
5014
5139
  }
5015
5140
  get selectedItem() {
5016
5141
  var t;
5017
- return this.flush(), ((t = p(this, A)) == null ? void 0 : t.selectedItem) ?? null;
5142
+ return this.flush(), ((t = p(this, z)) == null ? void 0 : t.selectedItem) ?? null;
5018
5143
  }
5019
5144
  getSelected() {
5020
- return this.flush(), p(this, A) ? p(this, A).getSelected() : [];
5145
+ return this.flush(), p(this, z) ? p(this, z).getSelected() : [];
5021
5146
  }
5022
5147
  setSelected(t, o = {}) {
5023
5148
  var i;
5024
- this.flush(), (i = p(this, A)) == null || i.setSelected(t, o);
5149
+ this.flush(), (i = p(this, z)) == null || i.setSelected(t, o);
5025
5150
  }
5026
5151
  getValue() {
5027
- return this.flush(), p(this, A) ? p(this, A).getValue() : null;
5152
+ return this.flush(), p(this, z) ? p(this, z).getValue() : null;
5028
5153
  }
5029
5154
  /**
5030
5155
  * Surface a transient message ("toast") on top of the component — visible even in the
@@ -5035,92 +5160,92 @@ class Ge extends zt {
5035
5160
  */
5036
5161
  showMessage(t, o) {
5037
5162
  var i;
5038
- this.flush(), (i = p(this, A)) == null || i.showMessage(t, o);
5163
+ this.flush(), (i = p(this, z)) == null || i.showMessage(t, o);
5039
5164
  }
5040
5165
  /** Dismiss the transient message shown by {@link showMessage}, if any. */
5041
5166
  hideMessage() {
5042
5167
  var t;
5043
- (t = p(this, A)) == null || t.hideMessage();
5168
+ (t = p(this, z)) == null || t.hideMessage();
5044
5169
  }
5045
5170
  destroy() {
5046
5171
  var t;
5047
- (t = p(this, A)) == null || t.destroy();
5172
+ (t = p(this, z)) == null || t.destroy();
5048
5173
  }
5049
5174
  }
5050
- J = new WeakMap(), A = new WeakMap(), me = new WeakMap(), et = new WeakMap(), tt = new WeakMap(), st = new WeakMap(), ze = new WeakMap(), $e = new WeakMap(), ke = new WeakMap(), k = new WeakSet(), /** Resolve `mobile-presentation` against `env` and relay it to the live picker. */
5175
+ J = new WeakMap(), z = new WeakMap(), me = new WeakMap(), et = new WeakMap(), tt = new WeakMap(), st = new WeakMap(), ze = new WeakMap(), Ne = new WeakMap(), ke = new WeakMap(), _ = new WeakSet(), /** Resolve `mobile-presentation` against `env` and relay it to the live picker. */
5051
5176
  ct = function(t) {
5052
5177
  var r;
5053
- const o = this.config.mobilePresentation ?? "auto", i = si(o, t);
5054
- (r = p(this, A)) == null || r.setPresentation(i === "modal" ? "fullscreen" : i);
5178
+ const o = this.config.mobilePresentation ?? "auto", i = oi(o, t);
5179
+ (r = p(this, z)) == null || r.setPresentation(i === "modal" ? "fullscreen" : i);
5055
5180
  }, // ── picker lifecycle ──────────────────────────────────────────────────────
5056
- Bt = function() {
5181
+ Kt = function() {
5057
5182
  var t;
5058
- (t = p(this, A)) == null || t.destroy(), $(this, A, void 0), w(this, k, Kt).call(this);
5059
- }, Kt = function() {
5060
- w(this, k, Zs).call(this), w(this, k, ro).call(this);
5061
- const t = w(this, k, eo).call(this), o = w(this, k, to).call(this);
5062
- o && o.length > 0 ? p(this, me).dataset.initialValues = JSON.stringify(o) : delete p(this, me).dataset.initialValues, $(this, A, new wr(p(this, me), t)), w(this, k, Ft).call(this), w(this, k, jt).call(this), w(this, k, ct).call(this, At());
5063
- }, Zs = function() {
5183
+ (t = p(this, z)) == null || t.destroy(), N(this, z, void 0), x(this, _, Ft).call(this);
5184
+ }, Ft = function() {
5185
+ x(this, _, eo).call(this), x(this, _, no).call(this);
5186
+ const t = x(this, _, to).call(this), o = x(this, _, so).call(this);
5187
+ o && o.length > 0 ? p(this, me).dataset.initialValues = JSON.stringify(o) : delete p(this, me).dataset.initialValues, N(this, z, new xr(p(this, me), t)), x(this, _, Wt).call(this), x(this, _, Ut).call(this), x(this, _, ct).call(this, zt());
5188
+ }, eo = function() {
5064
5189
  if (p(this, me)) return;
5065
5190
  const t = document.createElement("div");
5066
- t.setAttribute("data-multiselect", ""), this.className && (t.className = this.className), p(this, J).appendChild(t), $(this, et, Xo(p(this, J), { position: "first", className: "ms-custom-styles" })), $(this, me, t);
5191
+ t.setAttribute("data-multiselect", ""), this.className && (t.className = this.className), p(this, J).appendChild(t), N(this, et, Jo(p(this, J), { position: "first", className: "ms-custom-styles" })), N(this, me, t);
5067
5192
  }, /**
5068
5193
  * Build the picker config from the merged `this.config`, minus the keys the
5069
5194
  * picker doesn't own, plus the runtime wiring (event bridges, container, host,
5070
5195
  * declarative option data + member defaults, counter default).
5071
5196
  */
5072
- eo = function() {
5197
+ to = function() {
5073
5198
  const t = { ...this.config };
5074
- for (const i of Is) delete t[i];
5199
+ for (const i of Ps) delete t[i];
5075
5200
  for (const i of Object.keys(t))
5076
5201
  t[i] === null && delete t[i];
5077
5202
  let o = t.options;
5078
- if (p(this, ze) && p(this, $e))
5079
- o && o.length > 0 && B.warn("[MultiSelectElement] Both declarative <option> elements and programmatic .options detected. Using declarative options."), o = p(this, $e);
5203
+ if (p(this, ze) && p(this, Ne))
5204
+ o && o.length > 0 && K.warn("[MultiSelectElement] Both declarative <option> elements and programmatic .options detected. Using declarative options."), o = p(this, Ne);
5080
5205
  else if (!o || o.length === 0) {
5081
5206
  const i = this.config.optionsSource;
5082
5207
  if (i != null) {
5083
- const r = this.config.optionsFormat ?? "json", { options: n, error: a } = kr(i, r, {
5208
+ const r = this.config.optionsFormat ?? "json", { options: n, error: a } = Cr(i, r, {
5084
5209
  splitter: this.config.optionsSplitter,
5085
5210
  rowSplitter: this.config.optionsRowSplitter
5086
5211
  });
5087
- a && B.error(`[MultiSelectElement] ${a}`), o = n;
5212
+ a && K.error(`[MultiSelectElement] ${a}`), o = n;
5088
5213
  }
5089
5214
  }
5090
5215
  if (t.options = o, p(this, ze))
5091
- for (const { key: i, member: r, callbackKey: n } of Er)
5216
+ for (const { key: i, member: r, callbackKey: n } of Ar)
5092
5217
  t[i] === void 0 && !t[n] && (t[i] = r);
5093
5218
  return t.getCounterCallback || (t.getCounterCallback = (i, r) => r !== void 0 ? `+${r} more` : `${i} selected`), t.onSelect = (i) => {
5094
5219
  var r;
5095
5220
  this.emit("select", {
5096
5221
  option: i,
5097
- selectedOptions: ((r = p(this, A)) == null ? void 0 : r.getSelected()) ?? [],
5098
- selectedValues: w(this, k, dt).call(this)
5222
+ selectedOptions: ((r = p(this, z)) == null ? void 0 : r.getSelected()) ?? [],
5223
+ selectedValues: x(this, _, dt).call(this)
5099
5224
  });
5100
5225
  }, t.onDeselect = (i) => {
5101
5226
  var r;
5102
5227
  this.emit("deselect", {
5103
5228
  option: i,
5104
- selectedOptions: ((r = p(this, A)) == null ? void 0 : r.getSelected()) ?? [],
5105
- selectedValues: w(this, k, dt).call(this)
5229
+ selectedOptions: ((r = p(this, z)) == null ? void 0 : r.getSelected()) ?? [],
5230
+ selectedValues: x(this, _, dt).call(this)
5106
5231
  });
5107
5232
  }, t.onChange = (i) => {
5108
5233
  this.emit("change", {
5109
5234
  selectedOptions: i,
5110
- selectedValues: w(this, k, dt).call(this)
5235
+ selectedValues: x(this, _, dt).call(this)
5111
5236
  });
5112
5237
  }, t.container = p(this, J), t.hostElement = this, t;
5113
- }, to = function() {
5238
+ }, so = function() {
5114
5239
  if (p(this, ke) && p(this, ke).length > 0)
5115
5240
  return p(this, ke);
5116
5241
  const t = this.config.initialValues;
5117
5242
  return t && t.length > 0 ? t : void 0;
5118
5243
  }, dt = function() {
5119
5244
  var o;
5120
- const t = (o = p(this, A)) == null ? void 0 : o.getValue();
5245
+ const t = (o = p(this, z)) == null ? void 0 : o.getValue();
5121
5246
  return t == null ? [] : Array.isArray(t) ? t : [t];
5122
5247
  }, // ── §12.8 custom styles ───────────────────────────────────────────────────
5123
- Ft = function() {
5248
+ Wt = function() {
5124
5249
  const t = p(this, et);
5125
5250
  if (!t) return;
5126
5251
  const o = this.config.customStylesCallback;
@@ -5130,9 +5255,9 @@ Ft = function() {
5130
5255
  }
5131
5256
  try {
5132
5257
  const i = o();
5133
- t.set(i), i && w(this, k, so).call(this, i);
5258
+ t.set(i), i && x(this, _, oo).call(this, i);
5134
5259
  } catch (i) {
5135
- B.warn("[MultiSelectElement] customStylesCallback threw", i), t.clear();
5260
+ K.warn("[MultiSelectElement] customStylesCallback threw", i), t.clear();
5136
5261
  }
5137
5262
  }, /**
5138
5263
  * Dev-only lint: warn when `customStylesCallback` *sets* a `--ms-*` variable
@@ -5143,28 +5268,28 @@ Ft = function() {
5143
5268
  * De-duped per instance. If you genuinely define a `--ms-*` var for your own
5144
5269
  * custom-rendered content, ignore the warning (or use a different prefix).
5145
5270
  */
5146
- so = function(t) {
5147
- const o = Lr();
5271
+ oo = function(t) {
5272
+ const o = Er();
5148
5273
  if (o.size !== 0)
5149
- for (const { name: i, suggestions: r } of ei(t, { prefix: "--ms-", consumed: o }))
5274
+ for (const { name: i, suggestions: r } of ti(t, { prefix: "--ms-", consumed: o }))
5150
5275
  p(this, tt).has(i) || (p(this, tt).add(i), console.warn(
5151
5276
  `[web-multiselect] customStylesCallback sets "${i}", which no web-multiselect style consumes — it will have no effect.` + (r.length ? ` Did you mean: ${r.join(", ")}?` : "") + " (If it's for your own custom-rendered content, ignore this.)"
5152
5277
  ));
5153
5278
  }, // ── CSS-var sugar ─────────────────────────────────────────────────────────
5154
- oo = function() {
5155
- for (const t of Object.keys(at)) w(this, k, Wt).call(this, at[t], this.config[t]);
5156
- }, io = function(t) {
5279
+ io = function() {
5280
+ for (const t of Object.keys(at)) x(this, _, jt).call(this, at[t], this.config[t]);
5281
+ }, ro = function(t) {
5157
5282
  for (const o of Object.keys(at))
5158
- o in t && w(this, k, Wt).call(this, at[o], t[o]);
5159
- }, Wt = function(t, o) {
5283
+ o in t && x(this, _, jt).call(this, at[o], t[o]);
5284
+ }, jt = function(t, o) {
5160
5285
  o == null || o === "" ? this.style.removeProperty(t) : this.style.setProperty(t, String(o));
5161
5286
  }, // ── declarative <option> parsing (light DOM, once) ────────────────────────
5162
- ro = function() {
5287
+ no = function() {
5163
5288
  if (p(this, st)) return;
5164
- $(this, st, !0);
5165
- const t = w(this, k, no).call(this);
5166
- t && ($(this, $e, t), $(this, ze, !0));
5167
- }, no = function() {
5289
+ N(this, st, !0);
5290
+ const t = x(this, _, ao).call(this);
5291
+ t && (N(this, Ne, t), N(this, ze, !0));
5292
+ }, ao = function() {
5168
5293
  const t = Array.from(this.children);
5169
5294
  if (t.length === 0) return null;
5170
5295
  const o = [];
@@ -5175,7 +5300,7 @@ ro = function() {
5175
5300
  value: n.value || ((c = n.textContent) == null ? void 0 : c.trim()) || "",
5176
5301
  label: ((d = n.textContent) == null ? void 0 : d.trim()) || n.value || ""
5177
5302
  };
5178
- a && (l.group = a), n.hasAttribute("selected") && (p(this, ke) ?? $(this, ke, [])).push(l.value), n.hasAttribute("disabled") && (l.disabled = !0), n.hasAttribute("data-icon") && (l.icon = n.getAttribute("data-icon")), n.hasAttribute("data-subtitle") && (l.subtitle = n.getAttribute("data-subtitle")), o.push(l), i = !0;
5303
+ a && (l.group = a), n.hasAttribute("selected") && (p(this, ke) ?? N(this, ke, [])).push(l.value), n.hasAttribute("disabled") && (l.disabled = !0), n.hasAttribute("data-icon") && (l.icon = n.getAttribute("data-icon")), n.hasAttribute("data-subtitle") && (l.subtitle = n.getAttribute("data-subtitle")), o.push(l), i = !0;
5179
5304
  };
5180
5305
  for (const n of t)
5181
5306
  if (n.tagName === "OPTION")
@@ -5186,12 +5311,12 @@ ro = function() {
5186
5311
  r(c, l);
5187
5312
  }
5188
5313
  if (!i) return null;
5189
- B.debug(`[MultiSelectElement] Parsed ${o.length} declarative options from Light DOM`);
5314
+ K.debug(`[MultiSelectElement] Parsed ${o.length} declarative options from Light DOM`);
5190
5315
  for (const n of t)
5191
5316
  (n.tagName === "OPTION" || n.tagName === "OPTGROUP") && n.remove();
5192
5317
  return o;
5193
5318
  }, // ── debug panel (deprecated; kept for back-compat) ────────────────────────
5194
- jt = function() {
5319
+ Ut = function() {
5195
5320
  const t = p(this, J).querySelector(".ms__debug-info");
5196
5321
  if (t && t.remove(), !this.config.showDebugInfo) return;
5197
5322
  const o = document.createElement("div");
@@ -5199,12 +5324,12 @@ jt = function() {
5199
5324
  const i = document.createElement("details"), r = document.createElement("summary");
5200
5325
  r.textContent = "Debug Info";
5201
5326
  const n = document.createElement("div");
5202
- n.className = "ms__debug-stats", i.appendChild(r), i.appendChild(n), o.appendChild(i), p(this, J).appendChild(o), w(this, k, Ut).call(this);
5203
- }, Ut = function() {
5327
+ n.className = "ms__debug-stats", i.appendChild(r), i.appendChild(n), o.appendChild(i), p(this, J).appendChild(o), x(this, _, Gt).call(this);
5328
+ }, Gt = function() {
5204
5329
  var l, c, d, h;
5205
5330
  const t = p(this, J).querySelector(".ms__debug-stats");
5206
- if (!t || !p(this, A)) return;
5207
- const o = "2.0.0-rc05", i = typeof window < "u" && ((c = (l = window.components) == null ? void 0 : l["web-multiselect"]) == null ? void 0 : c.getInstances().length) || 0, r = p(this, A).getSelected().length, n = ((d = this.config.options) == null ? void 0 : d.length) || 0, a = p(this, A);
5331
+ if (!t || !p(this, z)) return;
5332
+ const o = "2.0.0-rc07", i = typeof window < "u" && ((c = (l = window.components) == null ? void 0 : l["web-multiselect"]) == null ? void 0 : c.getInstances().length) || 0, r = p(this, z).getSelected().length, n = ((d = this.config.options) == null ? void 0 : d.length) || 0, a = p(this, z);
5208
5333
  t.innerHTML = `
5209
5334
  <span>Version: ${o}</span>
5210
5335
  <span>Total Instances: ${i}</span>
@@ -5215,16 +5340,16 @@ jt = function() {
5215
5340
  <span>Search: ${a.searchTerm || "none"}</span>
5216
5341
  <span>Loading: ${a.isLoading ? "Yes" : "No"}</span>
5217
5342
  `, setTimeout(() => {
5218
- this.config.showDebugInfo && w(this, k, Ut).call(this);
5343
+ this.config.showDebugInfo && x(this, _, Gt).call(this);
5219
5344
  }, 500);
5220
5345
  }, // Opt into the form-associated custom element lifecycle so form.reset() and
5221
5346
  // form.elements see the control.
5222
- m(Ge, "formAssociated", !0), m(Ge, "inputs", Ir), m(Ge, "events", Pr);
5347
+ m(Ge, "formAssociated", !0), m(Ge, "inputs", Pr), m(Ge, "events", Mr);
5223
5348
  typeof customElements < "u" && !customElements.get("web-multiselect") && customElements.define("web-multiselect", Ge);
5224
- Go("web-multiselect", Ge, {
5349
+ Xo("web-multiselect", Ge, {
5225
5350
  config: {
5226
5351
  name: "@keenmate/web-multiselect",
5227
- version: "2.0.0-rc05",
5352
+ version: "2.0.0-rc07",
5228
5353
  author: "Keenmate",
5229
5354
  license: "MIT",
5230
5355
  repository: "git+https://github.com/keenmate/web-multiselect.git",
@@ -5233,17 +5358,17 @@ Go("web-multiselect", Ge, {
5233
5358
  logging: ae
5234
5359
  });
5235
5360
  export {
5236
- zr as LOGGING_CATEGORIES,
5361
+ Nr as LOGGING_CATEGORIES,
5237
5362
  Ge as MultiSelectElement,
5238
- _r as OPTIONS_FORMATS,
5239
- wr as WebMultiSelect,
5240
- B as dataLogger,
5241
- Dr as disableLogging,
5242
- $r as enableLogging,
5363
+ kr as OPTIONS_FORMATS,
5364
+ xr as WebMultiSelect,
5365
+ K as dataLogger,
5366
+ $r as disableLogging,
5367
+ Dr as enableLogging,
5243
5368
  nt as initLogger,
5244
5369
  W as interactionLogger,
5245
- kr as parseOptionsData,
5246
- Nr as setCategoryLevel,
5370
+ Cr as parseOptionsData,
5371
+ Rr as setCategoryLevel,
5247
5372
  Vr as setLogLevel,
5248
5373
  Q as uiLogger
5249
5374
  };