{"version":3,"sources":["jsdelivr-header.js","/npm/@indux/indux@0.5.14/dist/indux.quickstart.js"],"names":[],"mappings":"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","file":"/npm/@indux/indux@0.5.14/dist/indux.quickstart.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@indux/indux@0.5.14/dist/indux.quickstart.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/*  Indux JS - Quickstart\n/*  By Andrew Matlock under MIT license\n/*  https://indux.build\n/*\n/*  Contains all Indux plugins bundled with:\n/*  - Alpine JS (alpinejs.dev)\n/*  - Iconify (iconify.design)\n/*  - Tailwind CSS (modified Play CDN script) (tailwindcss.com)\n/*\n/*  With on-demand reference to:\n/*  - js-yaml (https://nodeca.github.io/js-yaml)\n/*  - Marked JS (https://marked.js.org)\n/*\n/*  Some plugins use Indux CSS styles.\n*/\n\n\n(function () {\n  'use strict';\n\n  var tailwind_v4_1 = {};\n\n  /* Tailwind CSS (Play CDN) v4.1.0 */\n\n  var hasRequiredTailwind_v4_1;\n\n  function requireTailwind_v4_1 () {\n  \tif (hasRequiredTailwind_v4_1) return tailwind_v4_1;\n  \thasRequiredTailwind_v4_1 = 1;\n   (() => {\n  \t  var Yt = \"4.1.7\"; var Pe = 92, We = 47, qe = 42, Oi = 34, _i = 39, zi = 58, He = 59, ne = 10, Ge = 13, Oe = 32, Ye = 9, Jt = 123, yt = 125, Ct = 40, Qt = 41, Ki = 91, Di = 93, Zt = 45, xt = 64, Ui = 33; function Se(t, r) { let i = r?.from ? { file: r.from, code: t } : null; t[0] === \"\\uFEFF\" && (t = \" \" + t.slice(1)); let e = [], o = [], s = [], a = null, f = null, u = \"\", c = \"\", g = 0, p; for (let m = 0; m < t.length; m++) { let v = t.charCodeAt(m); if (!(v === Ge && (p = t.charCodeAt(m + 1), p === ne))) if (v === Pe) u === \"\" && (g = m), u += t.slice(m, m + 2), m += 1; else if (v === We && t.charCodeAt(m + 1) === qe) { let k = m; for (let y = m + 2; y < t.length; y++)if (p = t.charCodeAt(y), p === Pe) y += 1; else if (p === qe && t.charCodeAt(y + 1) === We) { m = y + 1; break } let x = t.slice(k, m + 1); if (x.charCodeAt(2) === Ui) { let y = Je(x.slice(2, -2)); o.push(y), i && (y.src = [i, k, m + 1], y.dst = [i, k, m + 1]); } } else if (v === _i || v === Oi) { let k = m; for (let x = m + 1; x < t.length; x++)if (p = t.charCodeAt(x), p === Pe) x += 1; else if (p === v) { m = x; break } else { if (p === He && (t.charCodeAt(x + 1) === ne || t.charCodeAt(x + 1) === Ge && t.charCodeAt(x + 2) === ne)) throw new Error(`Unterminated string: ${t.slice(k, x + 1) + String.fromCharCode(v)}`); if (p === ne || p === Ge && t.charCodeAt(x + 1) === ne) throw new Error(`Unterminated string: ${t.slice(k, x) + String.fromCharCode(v)}`) } u += t.slice(k, m + 1); } else { if ((v === Oe || v === ne || v === Ye) && (p = t.charCodeAt(m + 1)) && (p === Oe || p === ne || p === Ye || p === Ge && (p = t.charCodeAt(m + 2)) && p == ne)) continue; if (v === ne) { if (u.length === 0) continue; p = u.charCodeAt(u.length - 1), p !== Oe && p !== ne && p !== Ye && (u += \" \"); } else if (v === Zt && t.charCodeAt(m + 1) === Zt && u.length === 0) { let k = \"\", x = m, y = -1; for (let b = m + 2; b < t.length; b++)if (p = t.charCodeAt(b), p === Pe) b += 1; else if (p === We && t.charCodeAt(b + 1) === qe) { for (let V = b + 2; V < t.length; V++)if (p = t.charCodeAt(V), p === Pe) V += 1; else if (p === qe && t.charCodeAt(V + 1) === We) { b = V + 1; break } } else if (y === -1 && p === zi) y = u.length + b - x; else if (p === He && k.length === 0) { u += t.slice(x, b), m = b; break } else if (p === Ct) k += \")\"; else if (p === Ki) k += \"]\"; else if (p === Jt) k += \"}\"; else if ((p === yt || t.length - 1 === b) && k.length === 0) { m = b - 1, u += t.slice(x, b); break } else (p === Qt || p === Di || p === yt) && k.length > 0 && t[b] === k[k.length - 1] && (k = k.slice(0, -1)); let N = At(u, y); if (!N) throw new Error(\"Invalid custom property, expected a value\"); i && (N.src = [i, x, m], N.dst = [i, x, m]), a ? a.nodes.push(N) : e.push(N), u = \"\"; } else if (v === He && u.charCodeAt(0) === xt) f = _e(u), i && (f.src = [i, g, m], f.dst = [i, g, m]), a ? a.nodes.push(f) : e.push(f), u = \"\", f = null; else if (v === He && c[c.length - 1] !== \")\") { let k = At(u); if (!k) throw u.length === 0 ? new Error(\"Unexpected semicolon\") : new Error(`Invalid declaration: \\`${u.trim()}\\``); i && (k.src = [i, g, m], k.dst = [i, g, m]), a ? a.nodes.push(k) : e.push(k), u = \"\"; } else if (v === Jt && c[c.length - 1] !== \")\") c += \"}\", f = G(u.trim()), i && (f.src = [i, g, m], f.dst = [i, g, m]), a && a.nodes.push(f), s.push(a), a = f, u = \"\", f = null; else if (v === yt && c[c.length - 1] !== \")\") { if (c === \"\") throw new Error(\"Missing opening {\"); if (c = c.slice(0, -1), u.length > 0) if (u.charCodeAt(0) === xt) f = _e(u), i && (f.src = [i, g, m], f.dst = [i, g, m]), a ? a.nodes.push(f) : e.push(f), u = \"\", f = null; else { let x = u.indexOf(\":\"); if (a) { let y = At(u, x); if (!y) throw new Error(`Invalid declaration: \\`${u.trim()}\\``); i && (y.src = [i, g, m], y.dst = [i, g, m]), a.nodes.push(y); } } let k = s.pop() ?? null; k === null && a && e.push(a), a = k, u = \"\", f = null; } else if (v === Ct) c += \")\", u += \"(\"; else if (v === Qt) { if (c[c.length - 1] !== \")\") throw new Error(\"Missing opening (\"); c = c.slice(0, -1), u += \")\"; } else { if (u.length === 0 && (v === Oe || v === ne || v === Ye)) continue; u === \"\" && (g = m), u += String.fromCharCode(v); } } } if (u.charCodeAt(0) === xt) { let m = _e(u); i && (m.src = [i, g, t.length], m.dst = [i, g, t.length]), e.push(m); } if (c.length > 0 && a) { if (a.kind === \"rule\") throw new Error(`Missing closing } at ${a.selector}`); if (a.kind === \"at-rule\") throw new Error(`Missing closing } at ${a.name} ${a.params}`) } return o.length > 0 ? o.concat(e) : e } function _e(t, r = []) { let i = t, e = \"\"; for (let o = 5; o < t.length; o++) { let s = t.charCodeAt(o); if (s === Oe || s === Ct) { i = t.slice(0, o), e = t.slice(o); break } } return F(i.trim(), e.trim(), r) } function At(t, r = t.indexOf(\":\")) { if (r === -1) return null; let i = t.indexOf(\"!important\", r + 1); return l(t.slice(0, r).trim(), t.slice(r + 1, i === -1 ? t.length : i).trim(), i !== -1) } function me(t) { if (arguments.length === 0) throw new TypeError(\"`CSS.escape` requires an argument.\"); let r = String(t), i = r.length, e = -1, o, s = \"\", a = r.charCodeAt(0); if (i === 1 && a === 45) return \"\\\\\" + r; for (; ++e < i;) { if (o = r.charCodeAt(e), o === 0) { s += \"\\uFFFD\"; continue } if (o >= 1 && o <= 31 || o === 127 || e === 0 && o >= 48 && o <= 57 || e === 1 && o >= 48 && o <= 57 && a === 45) { s += \"\\\\\" + o.toString(16) + \" \"; continue } if (o >= 128 || o === 45 || o === 95 || o >= 48 && o <= 57 || o >= 65 && o <= 90 || o >= 97 && o <= 122) { s += r.charAt(e); continue } s += \"\\\\\" + r.charAt(e); } return s } function ve(t) { return t.replace(/\\\\([\\dA-Fa-f]{1,6}[\\t\\n\\f\\r ]?|[\\S\\s])/g, r => r.length > 2 ? String.fromCodePoint(Number.parseInt(r.slice(1).trim(), 16)) : r[1]) } var er = new Map([[\"--font\", [\"--font-weight\", \"--font-size\"]], [\"--inset\", [\"--inset-shadow\", \"--inset-ring\"]], [\"--text\", [\"--text-color\", \"--text-decoration-color\", \"--text-decoration-thickness\", \"--text-indent\", \"--text-shadow\", \"--text-underline-offset\"]]]); function Xt(t, r) { return (er.get(r) ?? []).some(i => t === i || t.startsWith(`${i}-`)) } var Qe = class { constructor(r = new Map, i = new Set([])) { this.values = r; this.keyframes = i; } prefix = null; add(r, i, e = 0, o) { if (r.endsWith(\"-*\")) { if (i !== \"initial\") throw new Error(`Invalid theme value \\`${i}\\` for namespace \\`${r}\\``); r === \"--*\" ? this.values.clear() : this.clearNamespace(r.slice(0, -2), 0); } if (e & 4) { let s = this.values.get(r); if (s && !(s.options & 4)) return } i === \"initial\" ? this.values.delete(r) : this.values.set(r, { value: i, options: e, src: o }); } keysInNamespaces(r) { let i = []; for (let e of r) { let o = `${e}-`; for (let s of this.values.keys()) s.startsWith(o) && s.indexOf(\"--\", 2) === -1 && (Xt(s, e) || i.push(s.slice(o.length))); } return i } get(r) { for (let i of r) { let e = this.values.get(i); if (e) return e.value } return null } hasDefault(r) { return (this.getOptions(r) & 4) === 4 } getOptions(r) { return r = ve(this.#r(r)), this.values.get(r)?.options ?? 0 } entries() { return this.prefix ? Array.from(this.values, r => (r[0] = this.prefixKey(r[0]), r)) : this.values.entries() } prefixKey(r) { return this.prefix ? `--${this.prefix}-${r.slice(2)}` : r } #r(r) { return this.prefix ? `--${r.slice(3 + this.prefix.length)}` : r } clearNamespace(r, i) { let e = er.get(r) ?? []; e: for (let o of this.values.keys()) if (o.startsWith(r)) { if (i !== 0 && (this.getOptions(o) & i) !== i) continue; for (let s of e) if (o.startsWith(s)) continue e; this.values.delete(o); } } #e(r, i) { for (let e of i) { let o = r !== null ? `${e}-${r}` : e; if (!this.values.has(o)) if (r !== null && r.includes(\".\")) { if (o = `${e}-${r.replaceAll(\".\", \"_\")}`, !this.values.has(o)) continue } else continue; if (!Xt(o, e)) return o } return null } #t(r) { let i = this.values.get(r); if (!i) return null; let e = null; return i.options & 2 && (e = i.value), `var(${me(this.prefixKey(r))}${e ? `, ${e}` : \"\"})` } markUsedVariable(r) { let i = ve(this.#r(r)), e = this.values.get(i); if (!e) return false; let o = e.options & 16; return e.options |= 16, !o } resolve(r, i, e = 0) { let o = this.#e(r, i); if (!o) return null; let s = this.values.get(o); return (e | s.options) & 1 ? s.value : this.#t(o) } resolveValue(r, i) { let e = this.#e(r, i); return e ? this.values.get(e).value : null } resolveWith(r, i, e = []) { let o = this.#e(r, i); if (!o) return null; let s = {}; for (let f of e) { let u = `${o}${f}`, c = this.values.get(u); c && (c.options & 1 ? s[f] = c.value : s[f] = this.#t(u)); } let a = this.values.get(o); return a.options & 1 ? [a.value, s] : [this.#t(o), s] } namespace(r) { let i = new Map, e = `${r}-`; for (let [o, s] of this.values) o === r ? i.set(null, s.value) : o.startsWith(`${e}-`) ? i.set(o.slice(r.length), s.value) : o.startsWith(e) && i.set(o.slice(e.length), s.value); return i } addKeyframes(r) { this.keyframes.add(r); } getKeyframes() { return Array.from(this.keyframes) } }; var B = class extends Map { constructor(i) { super(); this.factory = i; } get(i) { let e = super.get(i); return e === void 0 && (e = this.factory(i, this), this.set(i, e)), e } }; function $t(t) { return { kind: \"word\", value: t } } function ji(t, r) { return { kind: \"function\", value: t, nodes: r } } function Li(t) { return { kind: \"separator\", value: t } } function ee(t, r, i = null) { for (let e = 0; e < t.length; e++) { let o = t[e], s = false, a = 0, f = r(o, { parent: i, replaceWith(u) { s || (s = true, Array.isArray(u) ? u.length === 0 ? (t.splice(e, 1), a = 0) : u.length === 1 ? (t[e] = u[0], a = 1) : (t.splice(e, 1, ...u), a = u.length) : t[e] = u); } }) ?? 0; if (s) { f === 0 ? e-- : e += a - 1; continue } if (f === 2) return 2; if (f !== 1 && o.kind === \"function\" && ee(o.nodes, r, o) === 2) return 2 } } function J(t) { let r = \"\"; for (let i of t) switch (i.kind) { case \"word\": case \"separator\": { r += i.value; break } case \"function\": r += i.value + \"(\" + J(i.nodes) + \")\"; }return r } var tr = 92, Ii = 41, rr = 58, ir = 44, Fi = 34, or = 61, nr = 62, lr = 60, ar = 10, Mi = 40, Bi = 39, sr = 47, ur = 32, cr = 9; function W(t) {\n  \t    t = t.replaceAll(`\\r\n`, `\n`); let r = [], i = [], e = null, o = \"\", s; for (let a = 0; a < t.length; a++) { let f = t.charCodeAt(a); switch (f) { case tr: { o += t[a] + t[a + 1], a++; break } case rr: case ir: case or: case nr: case lr: case ar: case sr: case ur: case cr: { if (o.length > 0) { let p = $t(o); e ? e.nodes.push(p) : r.push(p), o = \"\"; } let u = a, c = a + 1; for (; c < t.length && (s = t.charCodeAt(c), !(s !== rr && s !== ir && s !== or && s !== nr && s !== lr && s !== ar && s !== sr && s !== ur && s !== cr)); c++); a = c - 1; let g = Li(t.slice(u, c)); e ? e.nodes.push(g) : r.push(g); break } case Bi: case Fi: { let u = a; for (let c = a + 1; c < t.length; c++)if (s = t.charCodeAt(c), s === tr) c += 1; else if (s === f) { a = c; break } o += t.slice(u, a + 1); break } case Mi: { let u = ji(o, []); o = \"\", e ? e.nodes.push(u) : r.push(u), i.push(u), e = u; break } case Ii: { let u = i.pop(); if (o.length > 0) { let c = $t(o); u.nodes.push(c), o = \"\"; } i.length > 0 ? e = i[i.length - 1] : e = null; break } default: o += String.fromCharCode(f); } } return o.length > 0 && r.push($t(o)), r\n  \t  } function Ze(t) { let r = []; return ee(W(t), i => { if (!(i.kind !== \"function\" || i.value !== \"var\")) return ee(i.nodes, e => { e.kind !== \"word\" || e.value[0] !== \"-\" || e.value[1] !== \"-\" || r.push(e.value); }), 1 }), r } var qi = 64; function M(t, r = []) { return { kind: \"rule\", selector: t, nodes: r } } function F(t, r = \"\", i = []) { return { kind: \"at-rule\", name: t, params: r, nodes: i } } function G(t, r = []) { return t.charCodeAt(0) === qi ? _e(t, r) : M(t, r) } function l(t, r, i = false) { return { kind: \"declaration\", property: t, value: r, important: i } } function Je(t) { return { kind: \"comment\", value: t } } function ue(t, r) { return { kind: \"context\", context: t, nodes: r } } function j(t) { return { kind: \"at-root\", nodes: t } } function U(t, r, i = [], e = {}) { for (let o = 0; o < t.length; o++) { let s = t[o], a = i[i.length - 1] ?? null; if (s.kind === \"context\") { if (U(s.nodes, r, i, { ...e, ...s.context }) === 2) return 2; continue } i.push(s); let f = false, u = 0, c = r(s, { parent: a, context: e, path: i, replaceWith(g) { f || (f = true, Array.isArray(g) ? g.length === 0 ? (t.splice(o, 1), u = 0) : g.length === 1 ? (t[o] = g[0], u = 1) : (t.splice(o, 1, ...g), u = g.length) : (t[o] = g, u = 1)); } }) ?? 0; if (i.pop(), f) { c === 0 ? o-- : o += u - 1; continue } if (c === 2) return 2; if (c !== 1 && \"nodes\" in s) { i.push(s); let g = U(s.nodes, r, i, e); if (i.pop(), g === 2) return 2 } } } function Xe(t, r, i = [], e = {}) { for (let o = 0; o < t.length; o++) { let s = t[o], a = i[i.length - 1] ?? null; if (s.kind === \"rule\" || s.kind === \"at-rule\") i.push(s), Xe(s.nodes, r, i, e), i.pop(); else if (s.kind === \"context\") { Xe(s.nodes, r, i, { ...e, ...s.context }); continue } i.push(s), r(s, { parent: a, context: e, path: i, replaceWith(f) { Array.isArray(f) ? f.length === 0 ? t.splice(o, 1) : f.length === 1 ? t[o] = f[0] : t.splice(o, 1, ...f) : t[o] = f, o += f.length - 1; } }), i.pop(); } } function be(t, r, i = 3) { let e = [], o = new Set, s = new B(() => new Set), a = new B(() => new Set), f = new Set, u = new Set, c = [], g = [], p = new B(() => new Set); function m(k, x, y = {}, N = 0) { if (k.kind === \"declaration\") { if (k.property === \"--tw-sort\" || k.value === void 0 || k.value === null) return; if (y.theme && k.property[0] === \"-\" && k.property[1] === \"-\") { if (k.value === \"initial\") { k.value = void 0; return } y.keyframes || s.get(x).add(k); } if (k.value.includes(\"var(\")) if (y.theme && k.property[0] === \"-\" && k.property[1] === \"-\") for (let b of Ze(k.value)) p.get(b).add(k.property); else r.trackUsedVariables(k.value); if (k.property === \"animation\") for (let b of fr(k.value)) u.add(b); i & 2 && k.value.includes(\"color-mix(\") && a.get(x).add(k), x.push(k); } else if (k.kind === \"rule\") if (k.selector === \"&\") for (let b of k.nodes) { let V = []; m(b, V, y, N + 1), V.length > 0 && x.push(...V); } else { let b = { ...k, nodes: [] }; for (let V of k.nodes) m(V, b.nodes, y, N + 1); b.nodes.length > 0 && x.push(b); } else if (k.kind === \"at-rule\" && k.name === \"@property\" && N === 0) { if (o.has(k.params)) return; if (i & 1) { let V = k.params, R = null, D = false; for (let L of k.nodes) L.kind === \"declaration\" && (L.property === \"initial-value\" ? R = L.value : L.property === \"inherits\" && (D = L.value === \"true\")); let _ = l(V, R ?? \"initial\"); _.src = k.src, D ? c.push(_) : g.push(_); } o.add(k.params); let b = { ...k, nodes: [] }; for (let V of k.nodes) m(V, b.nodes, y, N + 1); x.push(b); } else if (k.kind === \"at-rule\") { k.name === \"@keyframes\" && (y = { ...y, keyframes: true }); let b = { ...k, nodes: [] }; for (let V of k.nodes) m(V, b.nodes, y, N + 1); k.name === \"@keyframes\" && y.theme && f.add(b), (b.nodes.length > 0 || b.name === \"@layer\" || b.name === \"@charset\" || b.name === \"@custom-media\" || b.name === \"@namespace\" || b.name === \"@import\") && x.push(b); } else if (k.kind === \"at-root\") for (let b of k.nodes) { let V = []; m(b, V, y, 0); for (let R of V) e.push(R); } else if (k.kind === \"context\") { if (k.context.reference) return; for (let b of k.nodes) m(b, x, { ...y, ...k.context }, N); } else k.kind === \"comment\" && x.push(k); } let v = []; for (let k of t) m(k, v, {}, 0); e: for (let [k, x] of s) for (let y of x) { if (dr(y.property, r.theme, p)) { if (y.property.startsWith(r.theme.prefixKey(\"--animate-\"))) for (let V of fr(y.value)) u.add(V); continue } let b = k.indexOf(y); if (k.splice(b, 1), k.length === 0) { let V = Hi(v, R => R.kind === \"rule\" && R.nodes === k); if (!V || V.length === 0) continue e; V.unshift({ kind: \"at-root\", nodes: v }); do { let R = V.pop(); if (!R) break; let D = V[V.length - 1]; if (!D || D.kind !== \"at-root\" && D.kind !== \"at-rule\") break; let _ = D.nodes.indexOf(R); if (_ === -1) break; D.nodes.splice(_, 1); } while (true); continue e } } for (let k of f) if (!u.has(k.params)) { let x = e.indexOf(k); e.splice(x, 1); } if (v = v.concat(e), i & 2) for (let [k, x] of a) for (let y of x) { let N = k.indexOf(y); if (N === -1 || y.value == null) continue; let b = W(y.value), V = false; if (ee(b, (_, { replaceWith: L }) => { if (_.kind !== \"function\" || _.value !== \"color-mix\") return; let O = false, H = false; if (ee(_.nodes, (I, { replaceWith: q }) => { if (I.kind == \"word\" && I.value.toLowerCase() === \"currentcolor\") { H = true, V = true; return } let X = I, oe = null, n = new Set; do { if (X.kind !== \"function\" || X.value !== \"var\") return; let d = X.nodes[0]; if (!d || d.kind !== \"word\") return; let h = d.value; if (n.has(h)) { O = true; return } if (n.add(h), V = true, oe = r.theme.resolveValue(null, [d.value]), !oe) { O = true; return } if (oe.toLowerCase() === \"currentcolor\") { H = true; return } oe.startsWith(\"var(\") ? X = W(oe)[0] : X = null; } while (X); q({ kind: \"word\", value: oe }); }), O || H) { let I = _.nodes.findIndex(X => X.kind === \"separator\" && X.value.trim().includes(\",\")); if (I === -1) return; let q = _.nodes.length > I ? _.nodes[I + 1] : null; if (!q) return; L(q); } else if (V) { let I = _.nodes[2]; I.kind === \"word\" && (I.value === \"oklab\" || I.value === \"oklch\" || I.value === \"lab\" || I.value === \"lch\") && (I.value = \"srgb\"); } }), !V) continue; let R = { ...y, value: J(b) }, D = G(\"@supports (color: color-mix(in lab, red, red))\", [y]); D.src = y.src, k.splice(N, 1, R, D); } if (i & 1) { let k = []; if (c.length > 0) { let x = G(\":root, :host\", c); x.src = c[0].src, k.push(x); } if (g.length > 0) { let x = G(\"*, ::before, ::after, ::backdrop\", g); x.src = g[0].src, k.push(x); } if (k.length > 0) { let x = v.findIndex(b => !(b.kind === \"comment\" || b.kind === \"at-rule\" && (b.name === \"@charset\" || b.name === \"@import\"))), y = F(\"@layer\", \"properties\", []); y.src = k[0].src, v.splice(x < 0 ? v.length : x, 0, y); let N = G(\"@layer properties\", [F(\"@supports\", \"((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b))))\", k)]); N.src = k[0].src, N.nodes[0].src = k[0].src, v.push(N); } } return v } function le(t, r) {\n  \t    let i = 0, e = { file: null, code: \"\" }; function o(a, f = 0) {\n  \t      let u = \"\", c = \"  \".repeat(f); if (a.kind === \"declaration\") {\n  \t        if (u += `${c}${a.property}: ${a.value}${a.important ? \" !important\" : \"\"};\n`, r) { i += c.length; let g = i; i += a.property.length, i += 2, i += a.value?.length ?? 0, a.important && (i += 11); let p = i; i += 2, a.dst = [e, g, p]; }\n  \t      } else if (a.kind === \"rule\") {\n  \t        if (u += `${c}${a.selector} {\n`, r) { i += c.length; let g = i; i += a.selector.length, i += 1; let p = i; a.dst = [e, g, p], i += 2; } for (let g of a.nodes) u += o(g, f + 1); u += `${c}}\n`, r && (i += c.length, i += 2);\n  \t      } else if (a.kind === \"at-rule\") {\n  \t        if (a.nodes.length === 0) {\n  \t          let g = `${c}${a.name} ${a.params};\n`; if (r) { i += c.length; let p = i; i += a.name.length, i += 1, i += a.params.length; let m = i; i += 2, a.dst = [e, p, m]; } return g\n  \t        } if (u += `${c}${a.name}${a.params ? ` ${a.params} ` : \" \"}{\n`, r) { i += c.length; let g = i; i += a.name.length, a.params && (i += 1, i += a.params.length), i += 1; let p = i; a.dst = [e, g, p], i += 2; } for (let g of a.nodes) u += o(g, f + 1); u += `${c}}\n`, r && (i += c.length, i += 2);\n  \t      } else if (a.kind === \"comment\") {\n  \t        if (u += `${c}/*${a.value}*/\n`, r) { i += c.length; let g = i; i += 2 + a.value.length + 2; let p = i; a.dst = [e, g, p], i += 1; }\n  \t      } else if (a.kind === \"context\" || a.kind === \"at-root\") return \"\"; return u\n  \t    } let s = \"\"; for (let a of t) s += o(a, 0); return e.code = s, s\n  \t  } function Hi(t, r) { let i = []; return U(t, (e, { path: o }) => { if (r(e)) return i = [...o], 2 }), i } function dr(t, r, i, e = new Set) { if (e.has(t) || (e.add(t), r.getOptions(t) & 24)) return true; { let s = i.get(t) ?? []; for (let a of s) if (dr(a, r, i, e)) return true } return false } function fr(t) { return t.split(/[\\s,]+/) } var Nt = [\"calc\", \"min\", \"max\", \"clamp\", \"mod\", \"rem\", \"sin\", \"cos\", \"tan\", \"asin\", \"acos\", \"atan\", \"atan2\", \"pow\", \"sqrt\", \"hypot\", \"log\", \"exp\", \"round\"], tt = [\"anchor-size\"], pr = new RegExp(`(${tt.join(\"|\")})\\\\(`, \"g\"); function ze(t) { return t.indexOf(\"(\") !== -1 && Nt.some(r => t.includes(`${r}(`)) } function mr(t) { if (!Nt.some(o => t.includes(o))) return t; let r = false; tt.some(o => t.includes(o)) && (pr.lastIndex = 0, t = t.replace(pr, (o, s) => (r = true, `$${tt.indexOf(s)}$(`))); let i = \"\", e = []; for (let o = 0; o < t.length; o++) { let s = t[o]; if (s === \"(\") { i += s; let a = o; for (let u = o - 1; u >= 0; u--) { let c = t.charCodeAt(u); if (c >= 48 && c <= 57) a = u; else if (c >= 97 && c <= 122) a = u; else break } let f = t.slice(a, o); if (Nt.includes(f)) { e.unshift(true); continue } else if (e[0] && f === \"\") { e.unshift(true); continue } e.unshift(false); continue } else if (s === \")\") i += s, e.shift(); else if (s === \",\" && e[0]) { i += \", \"; continue } else { if (s === \" \" && e[0] && i[i.length - 1] === \" \") continue; if ((s === \"+\" || s === \"*\" || s === \"/\" || s === \"-\") && e[0]) { let a = i.trimEnd(), f = a[a.length - 1]; if (f === \"+\" || f === \"*\" || f === \"/\" || f === \"-\") { i += s; continue } else if (f === \"(\" || f === \",\") { i += s; continue } else t[o - 1] === \" \" ? i += `${s} ` : i += ` ${s} `; } else if (e[0] && t.startsWith(\"to-zero\", o)) { let a = o; o += 7, i += t.slice(a, o + 1); } else i += s; } } return r ? i.replace(/\\$(\\d+)\\$/g, (o, s) => tt[s] ?? o) : i } function ge(t) { if (t.indexOf(\"(\") === -1) return $e(t); let r = W(t); return Vt(r), t = J(r), t = mr(t), t } function $e(t, r = false) { let i = \"\"; for (let e = 0; e < t.length; e++) { let o = t[e]; o === \"\\\\\" && t[e + 1] === \"_\" ? (i += \"_\", e += 1) : o === \"_\" && !r ? i += \" \" : i += o; } return i } function Vt(t) { for (let r of t) switch (r.kind) { case \"function\": { if (r.value === \"url\" || r.value.endsWith(\"_url\")) { r.value = $e(r.value); break } if (r.value === \"var\" || r.value.endsWith(\"_var\") || r.value === \"theme\" || r.value.endsWith(\"_theme\")) { r.value = $e(r.value); for (let i = 0; i < r.nodes.length; i++) { if (i == 0 && r.nodes[i].kind === \"word\") { r.nodes[i].value = $e(r.nodes[i].value, true); continue } Vt([r.nodes[i]]); } break } r.value = $e(r.value), Vt(r.nodes); break } case \"separator\": case \"word\": { r.value = $e(r.value); break } default: Yi(r); } } function Yi(t) { throw new Error(`Unexpected value: ${t}`) } var Tt = new Uint8Array(256); function fe(t) { let r = 0, i = t.length; for (let e = 0; e < i; e++) { let o = t.charCodeAt(e); switch (o) { case 92: e += 1; break; case 39: case 34: for (; ++e < i;) { let s = t.charCodeAt(e); if (s === 92) { e += 1; continue } if (s === o) break } break; case 40: Tt[r] = 41, r++; break; case 91: Tt[r] = 93, r++; break; case 123: break; case 93: case 125: case 41: if (r === 0) return false; r > 0 && o === Tt[r - 1] && r--; break; case 59: if (r === 0) return false; break } } return true } var rt = new Uint8Array(256); function z(t, r) { let i = 0, e = [], o = 0, s = t.length, a = r.charCodeAt(0); for (let f = 0; f < s; f++) { let u = t.charCodeAt(f); if (i === 0 && u === a) { e.push(t.slice(o, f)), o = f + 1; continue } switch (u) { case 92: f += 1; break; case 39: case 34: for (; ++f < s;) { let c = t.charCodeAt(f); if (c === 92) { f += 1; continue } if (c === u) break } break; case 40: rt[i] = 41, i++; break; case 91: rt[i] = 93, i++; break; case 123: rt[i] = 125, i++; break; case 93: case 125: case 41: i > 0 && u === rt[i - 1] && i--; break } } return e.push(t.slice(o)), e } var Ji = 58, gr = 45, hr = 97, kr = 122; function* vr(t, r) { let i = z(t, \":\"); if (r.theme.prefix) { if (i.length === 1 || i[0] !== r.theme.prefix) return null; i.shift(); } let e = i.pop(), o = []; for (let p = i.length - 1; p >= 0; --p) { let m = r.parseVariant(i[p]); if (m === null) return; o.push(m); } let s = false; e[e.length - 1] === \"!\" ? (s = true, e = e.slice(0, -1)) : e[0] === \"!\" && (s = true, e = e.slice(1)), r.utilities.has(e, \"static\") && !e.includes(\"[\") && (yield { kind: \"static\", root: e, variants: o, important: s, raw: t }); let [a, f = null, u] = z(e, \"/\"); if (u) return; let c = f === null ? null : Et(f); if (f !== null && c === null) return; if (a[0] === \"[\") { if (a[a.length - 1] !== \"]\") return; let p = a.charCodeAt(1); if (p !== gr && !(p >= hr && p <= kr)) return; a = a.slice(1, -1); let m = a.indexOf(\":\"); if (m === -1 || m === 0 || m === a.length - 1) return; let v = a.slice(0, m), k = ge(a.slice(m + 1)); if (!fe(k)) return; yield { kind: \"arbitrary\", property: v, value: k, modifier: c, variants: o, important: s, raw: t }; return } let g; if (a[a.length - 1] === \"]\") { let p = a.indexOf(\"-[\"); if (p === -1) return; let m = a.slice(0, p); if (!r.utilities.has(m, \"functional\")) return; let v = a.slice(p + 1); g = [[m, v]]; } else if (a[a.length - 1] === \")\") { let p = a.indexOf(\"-(\"); if (p === -1) return; let m = a.slice(0, p); if (!r.utilities.has(m, \"functional\")) return; let v = a.slice(p + 2, -1), k = z(v, \":\"), x = null; if (k.length === 2 && (x = k[0], v = k[1]), v[0] !== \"-\" || v[1] !== \"-\" || !fe(v)) return; g = [[m, x === null ? `[var(${v})]` : `[${x}:var(${v})]`]]; } else g = br(a, p => r.utilities.has(p, \"functional\")); for (let [p, m] of g) { let v = { kind: \"functional\", root: p, modifier: c, value: null, variants: o, important: s, raw: t }; if (m === null) { yield v; continue } { let k = m.indexOf(\"[\"); if (k !== -1) { if (m[m.length - 1] !== \"]\") return; let y = ge(m.slice(k + 1, -1)); if (!fe(y)) continue; let N = \"\"; for (let b = 0; b < y.length; b++) { let V = y.charCodeAt(b); if (V === Ji) { N = y.slice(0, b), y = y.slice(b + 1); break } if (!(V === gr || V >= hr && V <= kr)) break } if (y.length === 0 || y.trim().length === 0) continue; v.value = { kind: \"arbitrary\", dataType: N || null, value: y }; } else { let y = f === null || v.modifier?.kind === \"arbitrary\" ? null : `${m}/${f}`; v.value = { kind: \"named\", value: m, fraction: y }; } } yield v; } } function Et(t) { if (t[0] === \"[\" && t[t.length - 1] === \"]\") { let r = ge(t.slice(1, -1)); return !fe(r) || r.length === 0 || r.trim().length === 0 ? null : { kind: \"arbitrary\", value: r } } return t[0] === \"(\" && t[t.length - 1] === \")\" ? (t = t.slice(1, -1), t[0] !== \"-\" || t[1] !== \"-\" || !fe(t) ? null : (t = `var(${t})`, { kind: \"arbitrary\", value: ge(t) })) : { kind: \"named\", value: t } } function wr(t, r) { if (t[0] === \"[\" && t[t.length - 1] === \"]\") { if (t[1] === \"@\" && t.includes(\"&\")) return null; let i = ge(t.slice(1, -1)); if (!fe(i) || i.length === 0 || i.trim().length === 0) return null; let e = i[0] === \">\" || i[0] === \"+\" || i[0] === \"~\"; return !e && i[0] !== \"@\" && !i.includes(\"&\") && (i = `&:is(${i})`), { kind: \"arbitrary\", selector: i, relative: e } } { let [i, e = null, o] = z(t, \"/\"); if (o) return null; let s = br(i, a => r.variants.has(a)); for (let [a, f] of s) switch (r.variants.kind(a)) { case \"static\": return f !== null || e !== null ? null : { kind: \"static\", root: a }; case \"functional\": { let u = e === null ? null : Et(e); if (e !== null && u === null) return null; if (f === null) return { kind: \"functional\", root: a, modifier: u, value: null }; if (f[f.length - 1] === \"]\") { if (f[0] !== \"[\") continue; let c = ge(f.slice(1, -1)); return !fe(c) || c.length === 0 || c.trim().length === 0 ? null : { kind: \"functional\", root: a, modifier: u, value: { kind: \"arbitrary\", value: c } } } if (f[f.length - 1] === \")\") { if (f[0] !== \"(\") continue; let c = ge(f.slice(1, -1)); return !fe(c) || c.length === 0 || c.trim().length === 0 || c[0] !== \"-\" || c[1] !== \"-\" ? null : { kind: \"functional\", root: a, modifier: u, value: { kind: \"arbitrary\", value: `var(${c})` } } } return { kind: \"functional\", root: a, modifier: u, value: { kind: \"named\", value: f } } } case \"compound\": { if (f === null) return null; let u = r.parseVariant(f); if (u === null || !r.variants.compoundsWith(a, u)) return null; let c = e === null ? null : Et(e); return e !== null && c === null ? null : { kind: \"compound\", root: a, modifier: c, variant: u } } } } return null } function* br(t, r) { r(t) && (yield [t, null]); let i = t.lastIndexOf(\"-\"); for (; i > 0;) { let e = t.slice(0, i); if (r(e)) { let o = [e, t.slice(i + 1)]; if (o[1] === \"\") break; yield o; } i = t.lastIndexOf(\"-\", i - 1); } t[0] === \"@\" && r(\"@\") && (yield [\"@\", t.slice(1)]); } function yr(t, r) { let i = []; for (let o of r.variants) i.unshift(it(o)); t.theme.prefix && i.unshift(t.theme.prefix); let e = \"\"; if (r.kind === \"static\" && (e += r.root), r.kind === \"functional\" && (e += r.root, r.value)) if (r.value.kind === \"arbitrary\") { if (r.value !== null) { let o = Pt(r.value.value), s = o ? r.value.value.slice(4, -1) : r.value.value, [a, f] = o ? [\"(\", \")\"] : [\"[\", \"]\"]; r.value.dataType ? e += `-${a}${r.value.dataType}:${Ne(s)}${f}` : e += `-${a}${Ne(s)}${f}`; } } else r.value.kind === \"named\" && (e += `-${r.value.value}`); return r.kind === \"arbitrary\" && (e += `[${r.property}:${Ne(r.value)}]`), (r.kind === \"arbitrary\" || r.kind === \"functional\") && (e += xr(r.modifier)), r.important && (e += \"!\"), i.push(e), i.join(\":\") } function xr(t) { if (t === null) return \"\"; let r = Pt(t.value), i = r ? t.value.slice(4, -1) : t.value, [e, o] = r ? [\"(\", \")\"] : [\"[\", \"]\"]; return t.kind === \"arbitrary\" ? `/${e}${Ne(i)}${o}` : t.kind === \"named\" ? `/${t.value}` : \"\" } function it(t) { if (t.kind === \"static\") return t.root; if (t.kind === \"arbitrary\") return `[${Ne(Xi(t.selector))}]`; let r = \"\"; if (t.kind === \"functional\") { r += t.root; let i = t.root !== \"@\"; if (t.value) if (t.value.kind === \"arbitrary\") { let e = Pt(t.value.value), o = e ? t.value.value.slice(4, -1) : t.value.value, [s, a] = e ? [\"(\", \")\"] : [\"[\", \"]\"]; r += `${i ? \"-\" : \"\"}${s}${Ne(o)}${a}`; } else t.value.kind === \"named\" && (r += `${i ? \"-\" : \"\"}${t.value.value}`); } return t.kind === \"compound\" && (r += t.root, r += \"-\", r += it(t.variant)), (t.kind === \"functional\" || t.kind === \"compound\") && (r += xr(t.modifier)), r } var Qi = new B(t => { let r = W(t), i = new Set; return ee(r, (e, { parent: o }) => { let s = o === null ? r : o.nodes ?? []; if (e.kind === \"word\" && (e.value === \"+\" || e.value === \"-\" || e.value === \"*\" || e.value === \"/\")) { let a = s.indexOf(e) ?? -1; if (a === -1) return; let f = s[a - 1]; if (f?.kind !== \"separator\" || f.value !== \" \") return; let u = s[a + 1]; if (u?.kind !== \"separator\" || u.value !== \" \") return; i.add(f), i.add(u); } else e.kind === \"separator\" && e.value.trim() === \"/\" ? e.value = \"/\" : e.kind === \"separator\" && e.value.length > 0 && e.value.trim() === \"\" ? (s[0] === e || s[s.length - 1] === e) && i.add(e) : e.kind === \"separator\" && e.value.trim() === \",\" && (e.value = \",\"); }), i.size > 0 && ee(r, (e, { replaceWith: o }) => { i.has(e) && (i.delete(e), o([])); }), Rt(r), J(r) }); function Ne(t) { return Qi.get(t) } var Zi = new B(t => { let r = W(t); return r.length === 3 && r[0].kind === \"word\" && r[0].value === \"&\" && r[1].kind === \"separator\" && r[1].value === \":\" && r[2].kind === \"function\" && r[2].value === \"is\" ? J(r[2].nodes) : t }); function Xi(t) { return Zi.get(t) } function Rt(t) { for (let r of t) switch (r.kind) { case \"function\": { if (r.value === \"url\" || r.value.endsWith(\"_url\")) { r.value = Ke(r.value); break } if (r.value === \"var\" || r.value.endsWith(\"_var\") || r.value === \"theme\" || r.value.endsWith(\"_theme\")) { r.value = Ke(r.value); for (let i = 0; i < r.nodes.length; i++)Rt([r.nodes[i]]); break } r.value = Ke(r.value), Rt(r.nodes); break } case \"separator\": r.value = Ke(r.value); break; case \"word\": { (r.value[0] !== \"-\" || r.value[1] !== \"-\") && (r.value = Ke(r.value)); break } default: to(r); } } var eo = new B(t => { let r = W(t); return r.length === 1 && r[0].kind === \"function\" && r[0].value === \"var\" }); function Pt(t) { return eo.get(t) } function to(t) { throw new Error(`Unexpected value: ${t}`) } function Ke(t) { return t.replaceAll(\"_\", String.raw`\\_`).replaceAll(\" \", \"_\") } function ye(t, r, i) { if (t === r) return 0; let e = t.indexOf(\"(\"), o = r.indexOf(\"(\"), s = e === -1 ? t.replace(/[\\d.]+/g, \"\") : t.slice(0, e), a = o === -1 ? r.replace(/[\\d.]+/g, \"\") : r.slice(0, o), f = (s === a ? 0 : s < a ? -1 : 1) || (i === \"asc\" ? parseInt(t) - parseInt(r) : parseInt(r) - parseInt(t)); return Number.isNaN(f) ? t < r ? -1 : 1 : f } var ro = new Set([\"black\", \"silver\", \"gray\", \"white\", \"maroon\", \"red\", \"purple\", \"fuchsia\", \"green\", \"lime\", \"olive\", \"yellow\", \"navy\", \"blue\", \"teal\", \"aqua\", \"aliceblue\", \"antiquewhite\", \"aqua\", \"aquamarine\", \"azure\", \"beige\", \"bisque\", \"black\", \"blanchedalmond\", \"blue\", \"blueviolet\", \"brown\", \"burlywood\", \"cadetblue\", \"chartreuse\", \"chocolate\", \"coral\", \"cornflowerblue\", \"cornsilk\", \"crimson\", \"cyan\", \"darkblue\", \"darkcyan\", \"darkgoldenrod\", \"darkgray\", \"darkgreen\", \"darkgrey\", \"darkkhaki\", \"darkmagenta\", \"darkolivegreen\", \"darkorange\", \"darkorchid\", \"darkred\", \"darksalmon\", \"darkseagreen\", \"darkslateblue\", \"darkslategray\", \"darkslategrey\", \"darkturquoise\", \"darkviolet\", \"deeppink\", \"deepskyblue\", \"dimgray\", \"dimgrey\", \"dodgerblue\", \"firebrick\", \"floralwhite\", \"forestgreen\", \"fuchsia\", \"gainsboro\", \"ghostwhite\", \"gold\", \"goldenrod\", \"gray\", \"green\", \"greenyellow\", \"grey\", \"honeydew\", \"hotpink\", \"indianred\", \"indigo\", \"ivory\", \"khaki\", \"lavender\", \"lavenderblush\", \"lawngreen\", \"lemonchiffon\", \"lightblue\", \"lightcoral\", \"lightcyan\", \"lightgoldenrodyellow\", \"lightgray\", \"lightgreen\", \"lightgrey\", \"lightpink\", \"lightsalmon\", \"lightseagreen\", \"lightskyblue\", \"lightslategray\", \"lightslategrey\", \"lightsteelblue\", \"lightyellow\", \"lime\", \"limegreen\", \"linen\", \"magenta\", \"maroon\", \"mediumaquamarine\", \"mediumblue\", \"mediumorchid\", \"mediumpurple\", \"mediumseagreen\", \"mediumslateblue\", \"mediumspringgreen\", \"mediumturquoise\", \"mediumvioletred\", \"midnightblue\", \"mintcream\", \"mistyrose\", \"moccasin\", \"navajowhite\", \"navy\", \"oldlace\", \"olive\", \"olivedrab\", \"orange\", \"orangered\", \"orchid\", \"palegoldenrod\", \"palegreen\", \"paleturquoise\", \"palevioletred\", \"papayawhip\", \"peachpuff\", \"peru\", \"pink\", \"plum\", \"powderblue\", \"purple\", \"rebeccapurple\", \"red\", \"rosybrown\", \"royalblue\", \"saddlebrown\", \"salmon\", \"sandybrown\", \"seagreen\", \"seashell\", \"sienna\", \"silver\", \"skyblue\", \"slateblue\", \"slategray\", \"slategrey\", \"snow\", \"springgreen\", \"steelblue\", \"tan\", \"teal\", \"thistle\", \"tomato\", \"turquoise\", \"violet\", \"wheat\", \"white\", \"whitesmoke\", \"yellow\", \"yellowgreen\", \"transparent\", \"currentcolor\", \"canvas\", \"canvastext\", \"linktext\", \"visitedtext\", \"activetext\", \"buttonface\", \"buttontext\", \"buttonborder\", \"field\", \"fieldtext\", \"highlight\", \"highlighttext\", \"selecteditem\", \"selecteditemtext\", \"mark\", \"marktext\", \"graytext\", \"accentcolor\", \"accentcolortext\"]), io = /^(rgba?|hsla?|hwb|color|(ok)?(lab|lch)|light-dark|color-mix)\\(/i; function Ar(t) { return t.charCodeAt(0) === 35 || io.test(t) || ro.has(t.toLowerCase()) } var oo = { color: Ar, length: ot, percentage: Ot, ratio: vo, number: Sr, integer: E, url: Cr, position: yo, \"bg-size\": xo, \"line-width\": lo, image: uo, \"family-name\": fo, \"generic-name\": co, \"absolute-size\": po, \"relative-size\": mo, angle: So, vector: No }; function Y(t, r) { if (t.startsWith(\"var(\")) return null; for (let i of r) if (oo[i]?.(t)) return i; return null } var no = /^url\\(.*\\)$/; function Cr(t) { return no.test(t) } function lo(t) { return z(t, \" \").every(r => ot(r) || Sr(r) || r === \"thin\" || r === \"medium\" || r === \"thick\") } var ao = /^(?:element|image|cross-fade|image-set)\\(/, so = /^(repeating-)?(conic|linear|radial)-gradient\\(/; function uo(t) { let r = 0; for (let i of z(t, \",\")) if (!i.startsWith(\"var(\")) { if (Cr(i)) { r += 1; continue } if (so.test(i)) { r += 1; continue } if (ao.test(i)) { r += 1; continue } return false } return r > 0 } function co(t) { return t === \"serif\" || t === \"sans-serif\" || t === \"monospace\" || t === \"cursive\" || t === \"fantasy\" || t === \"system-ui\" || t === \"ui-serif\" || t === \"ui-sans-serif\" || t === \"ui-monospace\" || t === \"ui-rounded\" || t === \"math\" || t === \"emoji\" || t === \"fangsong\" } function fo(t) { let r = 0; for (let i of z(t, \",\")) { let e = i.charCodeAt(0); if (e >= 48 && e <= 57) return false; i.startsWith(\"var(\") || (r += 1); } return r > 0 } function po(t) { return t === \"xx-small\" || t === \"x-small\" || t === \"small\" || t === \"medium\" || t === \"large\" || t === \"x-large\" || t === \"xx-large\" || t === \"xxx-large\" } function mo(t) { return t === \"larger\" || t === \"smaller\" } var de = /[+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?/, go = new RegExp(`^${de.source}$`); function Sr(t) { return go.test(t) || ze(t) } var ho = new RegExp(`^${de.source}%$`); function Ot(t) { return ho.test(t) || ze(t) } var ko = new RegExp(`^${de.source}s*/s*${de.source}$`); function vo(t) { return ko.test(t) || ze(t) } var wo = [\"cm\", \"mm\", \"Q\", \"in\", \"pc\", \"pt\", \"px\", \"em\", \"ex\", \"ch\", \"rem\", \"lh\", \"rlh\", \"vw\", \"vh\", \"vmin\", \"vmax\", \"vb\", \"vi\", \"svw\", \"svh\", \"lvw\", \"lvh\", \"dvw\", \"dvh\", \"cqw\", \"cqh\", \"cqi\", \"cqb\", \"cqmin\", \"cqmax\"], bo = new RegExp(`^${de.source}(${wo.join(\"|\")})$`); function ot(t) { return bo.test(t) || ze(t) } function yo(t) { let r = 0; for (let i of z(t, \" \")) { if (i === \"center\" || i === \"top\" || i === \"right\" || i === \"bottom\" || i === \"left\") { r += 1; continue } if (!i.startsWith(\"var(\")) { if (ot(i) || Ot(i)) { r += 1; continue } return false } } return r > 0 } function xo(t) { let r = 0; for (let i of z(t, \",\")) { if (i === \"cover\" || i === \"contain\") { r += 1; continue } let e = z(i, \" \"); if (e.length !== 1 && e.length !== 2) return false; if (e.every(o => o === \"auto\" || ot(o) || Ot(o))) { r += 1; continue } } return r > 0 } var Ao = [\"deg\", \"rad\", \"grad\", \"turn\"], Co = new RegExp(`^${de.source}(${Ao.join(\"|\")})$`); function So(t) { return Co.test(t) } var $o = new RegExp(`^${de.source} +${de.source} +${de.source}$`); function No(t) { return $o.test(t) } function E(t) { let r = Number(t); return Number.isInteger(r) && r >= 0 && String(r) === String(t) } function _t(t) { let r = Number(t); return Number.isInteger(r) && r > 0 && String(r) === String(t) } function xe(t) { return $r(t, .25) } function nt(t) { return $r(t, .25) } function $r(t, r) { let i = Number(t); return i >= 0 && i % r === 0 && String(i) === String(t) } var Vo = new Set([\"inset\", \"inherit\", \"initial\", \"revert\", \"unset\"]), Nr = /^-?(\\d+|\\.\\d+)(.*?)$/g; function De(t, r) { return z(t, \",\").map(e => { e = e.trim(); let o = z(e, \" \").filter(c => c.trim() !== \"\"), s = null, a = null, f = null; for (let c of o) Vo.has(c) || (Nr.test(c) ? (a === null ? a = c : f === null && (f = c), Nr.lastIndex = 0) : s === null && (s = c)); if (a === null || f === null) return e; let u = r(s ?? \"currentcolor\"); return s !== null ? e.replace(s, u) : `${e} ${u}` }).join(\", \") } var To = /^-?[a-z][a-zA-Z0-9/%._-]*$/, Eo = /^-?[a-z][a-zA-Z0-9/%._-]*-\\*$/, at = [\"0\", \"0.5\", \"1\", \"1.5\", \"2\", \"2.5\", \"3\", \"3.5\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\", \"14\", \"16\", \"20\", \"24\", \"28\", \"32\", \"36\", \"40\", \"44\", \"48\", \"52\", \"56\", \"60\", \"64\", \"72\", \"80\", \"96\"], zt = class { utilities = new B(() => []); completions = new Map; static(r, i) { this.utilities.get(r).push({ kind: \"static\", compileFn: i }); } functional(r, i, e) { this.utilities.get(r).push({ kind: \"functional\", compileFn: i, options: e }); } has(r, i) { return this.utilities.has(r) && this.utilities.get(r).some(e => e.kind === i) } get(r) { return this.utilities.has(r) ? this.utilities.get(r) : [] } getCompletions(r) { return this.completions.get(r)?.() ?? [] } suggest(r, i) { this.completions.set(r, i); } keys(r) { let i = []; for (let [e, o] of this.utilities.entries()) for (let s of o) if (s.kind === r) { i.push(e); break } return i } }; function S(t, r, i) { return F(\"@property\", t, [l(\"syntax\", i ? `\"${i}\"` : '\"*\"'), l(\"inherits\", \"false\"), ...r ? [l(\"initial-value\", r)] : []]) } function Q(t, r) { if (r === null) return t; let i = Number(r); return Number.isNaN(i) || (r = `${i * 100}%`), r === \"100%\" ? t : `color-mix(in oklab, ${t} ${r}, transparent)` } function Tr(t, r) { let i = Number(r); return Number.isNaN(i) || (r = `${i * 100}%`), `oklab(from ${t} l a b / ${r})` } function Z(t, r, i) { if (!r) return t; if (r.kind === \"arbitrary\") return Q(t, r.value); let e = i.resolve(r.value, [\"--opacity\"]); return e ? Q(t, e) : nt(r.value) ? Q(t, `${r.value}%`) : null } function te(t, r, i) { let e = null; switch (t.value.value) { case \"inherit\": { e = \"inherit\"; break } case \"transparent\": { e = \"transparent\"; break } case \"current\": { e = \"currentcolor\"; break } default: { e = r.resolve(t.value.value, i); break } }return e ? Z(e, t.modifier, r) : null } var Er = /(\\d+)_(\\d+)/g; function Rr(t) { let r = new zt; function i(n, d) { function* h(w) { for (let C of t.keysInNamespaces(w)) yield C.replace(Er, (P, $, T) => `${$}.${T}`); } let A = [\"1/2\", \"1/3\", \"2/3\", \"1/4\", \"2/4\", \"3/4\", \"1/5\", \"2/5\", \"3/5\", \"4/5\", \"1/6\", \"2/6\", \"3/6\", \"4/6\", \"5/6\", \"1/12\", \"2/12\", \"3/12\", \"4/12\", \"5/12\", \"6/12\", \"7/12\", \"8/12\", \"9/12\", \"10/12\", \"11/12\"]; r.suggest(n, () => { let w = []; for (let C of d()) { if (typeof C == \"string\") { w.push({ values: [C], modifiers: [] }); continue } let P = [...C.values ?? [], ...h(C.valueThemeKeys ?? [])], $ = [...C.modifiers ?? [], ...h(C.modifierThemeKeys ?? [])]; C.supportsFractions && P.push(...A), C.hasDefaultValue && P.unshift(null), w.push({ supportsNegative: C.supportsNegative, values: P, modifiers: $ }); } return w }); } function e(n, d) { r.static(n, () => d.map(h => typeof h == \"function\" ? h() : l(h[0], h[1]))); } function o(n, d) { function h({ negative: A }) { return w => { let C = null, P = null; if (w.value) if (w.value.kind === \"arbitrary\") { if (w.modifier) return; C = w.value.value, P = w.value.dataType; } else { if (C = t.resolve(w.value.fraction ?? w.value.value, d.themeKeys ?? []), C === null && d.supportsFractions && w.value.fraction) { let [$, T] = z(w.value.fraction, \"/\"); if (!E($) || !E(T)) return; C = `calc(${w.value.fraction} * 100%)`; } if (C === null && A && d.handleNegativeBareValue) { if (C = d.handleNegativeBareValue(w.value), !C?.includes(\"/\") && w.modifier) return; if (C !== null) return d.handle(C, null) } if (C === null && d.handleBareValue && (C = d.handleBareValue(w.value), !C?.includes(\"/\") && w.modifier)) return } else { if (w.modifier) return; C = d.defaultValue !== void 0 ? d.defaultValue : t.resolve(null, d.themeKeys ?? []); } if (C !== null) return d.handle(A ? `calc(${C} * -1)` : C, P) } } d.supportsNegative && r.functional(`-${n}`, h({ negative: true })), r.functional(n, h({ negative: false })), i(n, () => [{ supportsNegative: d.supportsNegative, valueThemeKeys: d.themeKeys ?? [], hasDefaultValue: d.defaultValue !== void 0 && d.defaultValue !== null, supportsFractions: d.supportsFractions }]); } function s(n, d) { r.functional(n, h => { if (!h.value) return; let A = null; if (h.value.kind === \"arbitrary\" ? (A = h.value.value, A = Z(A, h.modifier, t)) : A = te(h, t, d.themeKeys), A !== null) return d.handle(A) }), i(n, () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: d.themeKeys, modifiers: Array.from({ length: 21 }, (h, A) => `${A * 5}`) }]); } function a(n, d, h, { supportsNegative: A = false, supportsFractions: w = false } = {}) { A && r.static(`-${n}-px`, () => h(\"-1px\")), r.static(`${n}-px`, () => h(\"1px\")), o(n, { themeKeys: d, supportsFractions: w, supportsNegative: A, defaultValue: null, handleBareValue: ({ value: C }) => { let P = t.resolve(null, [\"--spacing\"]); return !P || !xe(C) ? null : `calc(${P} * ${C})` }, handleNegativeBareValue: ({ value: C }) => { let P = t.resolve(null, [\"--spacing\"]); return !P || !xe(C) ? null : `calc(${P} * -${C})` }, handle: h }), i(n, () => [{ values: t.get([\"--spacing\"]) ? at : [], supportsNegative: A, supportsFractions: w, valueThemeKeys: d }]); } e(\"sr-only\", [[\"position\", \"absolute\"], [\"width\", \"1px\"], [\"height\", \"1px\"], [\"padding\", \"0\"], [\"margin\", \"-1px\"], [\"overflow\", \"hidden\"], [\"clip\", \"rect(0, 0, 0, 0)\"], [\"white-space\", \"nowrap\"], [\"border-width\", \"0\"]]), e(\"not-sr-only\", [[\"position\", \"static\"], [\"width\", \"auto\"], [\"height\", \"auto\"], [\"padding\", \"0\"], [\"margin\", \"0\"], [\"overflow\", \"visible\"], [\"clip\", \"auto\"], [\"white-space\", \"normal\"]]), e(\"pointer-events-none\", [[\"pointer-events\", \"none\"]]), e(\"pointer-events-auto\", [[\"pointer-events\", \"auto\"]]), e(\"visible\", [[\"visibility\", \"visible\"]]), e(\"invisible\", [[\"visibility\", \"hidden\"]]), e(\"collapse\", [[\"visibility\", \"collapse\"]]), e(\"static\", [[\"position\", \"static\"]]), e(\"fixed\", [[\"position\", \"fixed\"]]), e(\"absolute\", [[\"position\", \"absolute\"]]), e(\"relative\", [[\"position\", \"relative\"]]), e(\"sticky\", [[\"position\", \"sticky\"]]); for (let [n, d] of [[\"inset\", \"inset\"], [\"inset-x\", \"inset-inline\"], [\"inset-y\", \"inset-block\"], [\"start\", \"inset-inline-start\"], [\"end\", \"inset-inline-end\"], [\"top\", \"top\"], [\"right\", \"right\"], [\"bottom\", \"bottom\"], [\"left\", \"left\"]]) e(`${n}-auto`, [[d, \"auto\"]]), e(`${n}-full`, [[d, \"100%\"]]), e(`-${n}-full`, [[d, \"-100%\"]]), a(n, [\"--inset\", \"--spacing\"], h => [l(d, h)], { supportsNegative: true, supportsFractions: true }); e(\"isolate\", [[\"isolation\", \"isolate\"]]), e(\"isolation-auto\", [[\"isolation\", \"auto\"]]), e(\"z-auto\", [[\"z-index\", \"auto\"]]), o(\"z\", { supportsNegative: true, handleBareValue: ({ value: n }) => E(n) ? n : null, themeKeys: [\"--z-index\"], handle: n => [l(\"z-index\", n)] }), i(\"z\", () => [{ supportsNegative: true, values: [\"0\", \"10\", \"20\", \"30\", \"40\", \"50\"], valueThemeKeys: [\"--z-index\"] }]), e(\"order-first\", [[\"order\", \"-9999\"]]), e(\"order-last\", [[\"order\", \"9999\"]]), e(\"order-none\", [[\"order\", \"0\"]]), o(\"order\", { supportsNegative: true, handleBareValue: ({ value: n }) => E(n) ? n : null, themeKeys: [\"--order\"], handle: n => [l(\"order\", n)] }), i(\"order\", () => [{ supportsNegative: true, values: Array.from({ length: 12 }, (n, d) => `${d + 1}`), valueThemeKeys: [\"--order\"] }]), e(\"col-auto\", [[\"grid-column\", \"auto\"]]), o(\"col\", { supportsNegative: true, handleBareValue: ({ value: n }) => E(n) ? n : null, themeKeys: [\"--grid-column\"], handle: n => [l(\"grid-column\", n)] }), e(\"col-span-full\", [[\"grid-column\", \"1 / -1\"]]), o(\"col-span\", { handleBareValue: ({ value: n }) => E(n) ? n : null, handle: n => [l(\"grid-column\", `span ${n} / span ${n}`)] }), e(\"col-start-auto\", [[\"grid-column-start\", \"auto\"]]), o(\"col-start\", { supportsNegative: true, handleBareValue: ({ value: n }) => E(n) ? n : null, themeKeys: [\"--grid-column-start\"], handle: n => [l(\"grid-column-start\", n)] }), e(\"col-end-auto\", [[\"grid-column-end\", \"auto\"]]), o(\"col-end\", { supportsNegative: true, handleBareValue: ({ value: n }) => E(n) ? n : null, themeKeys: [\"--grid-column-end\"], handle: n => [l(\"grid-column-end\", n)] }), i(\"col-span\", () => [{ values: Array.from({ length: 12 }, (n, d) => `${d + 1}`), valueThemeKeys: [] }]), i(\"col-start\", () => [{ supportsNegative: true, values: Array.from({ length: 13 }, (n, d) => `${d + 1}`), valueThemeKeys: [\"--grid-column-start\"] }]), i(\"col-end\", () => [{ supportsNegative: true, values: Array.from({ length: 13 }, (n, d) => `${d + 1}`), valueThemeKeys: [\"--grid-column-end\"] }]), e(\"row-auto\", [[\"grid-row\", \"auto\"]]), o(\"row\", { supportsNegative: true, handleBareValue: ({ value: n }) => E(n) ? n : null, themeKeys: [\"--grid-row\"], handle: n => [l(\"grid-row\", n)] }), e(\"row-span-full\", [[\"grid-row\", \"1 / -1\"]]), o(\"row-span\", { themeKeys: [], handleBareValue: ({ value: n }) => E(n) ? n : null, handle: n => [l(\"grid-row\", `span ${n} / span ${n}`)] }), e(\"row-start-auto\", [[\"grid-row-start\", \"auto\"]]), o(\"row-start\", { supportsNegative: true, handleBareValue: ({ value: n }) => E(n) ? n : null, themeKeys: [\"--grid-row-start\"], handle: n => [l(\"grid-row-start\", n)] }), e(\"row-end-auto\", [[\"grid-row-end\", \"auto\"]]), o(\"row-end\", { supportsNegative: true, handleBareValue: ({ value: n }) => E(n) ? n : null, themeKeys: [\"--grid-row-end\"], handle: n => [l(\"grid-row-end\", n)] }), i(\"row-span\", () => [{ values: Array.from({ length: 12 }, (n, d) => `${d + 1}`), valueThemeKeys: [] }]), i(\"row-start\", () => [{ supportsNegative: true, values: Array.from({ length: 13 }, (n, d) => `${d + 1}`), valueThemeKeys: [\"--grid-row-start\"] }]), i(\"row-end\", () => [{ supportsNegative: true, values: Array.from({ length: 13 }, (n, d) => `${d + 1}`), valueThemeKeys: [\"--grid-row-end\"] }]), e(\"float-start\", [[\"float\", \"inline-start\"]]), e(\"float-end\", [[\"float\", \"inline-end\"]]), e(\"float-right\", [[\"float\", \"right\"]]), e(\"float-left\", [[\"float\", \"left\"]]), e(\"float-none\", [[\"float\", \"none\"]]), e(\"clear-start\", [[\"clear\", \"inline-start\"]]), e(\"clear-end\", [[\"clear\", \"inline-end\"]]), e(\"clear-right\", [[\"clear\", \"right\"]]), e(\"clear-left\", [[\"clear\", \"left\"]]), e(\"clear-both\", [[\"clear\", \"both\"]]), e(\"clear-none\", [[\"clear\", \"none\"]]); for (let [n, d] of [[\"m\", \"margin\"], [\"mx\", \"margin-inline\"], [\"my\", \"margin-block\"], [\"ms\", \"margin-inline-start\"], [\"me\", \"margin-inline-end\"], [\"mt\", \"margin-top\"], [\"mr\", \"margin-right\"], [\"mb\", \"margin-bottom\"], [\"ml\", \"margin-left\"]]) e(`${n}-auto`, [[d, \"auto\"]]), a(n, [\"--margin\", \"--spacing\"], h => [l(d, h)], { supportsNegative: true }); e(\"box-border\", [[\"box-sizing\", \"border-box\"]]), e(\"box-content\", [[\"box-sizing\", \"content-box\"]]), e(\"line-clamp-none\", [[\"overflow\", \"visible\"], [\"display\", \"block\"], [\"-webkit-box-orient\", \"horizontal\"], [\"-webkit-line-clamp\", \"unset\"]]), o(\"line-clamp\", { themeKeys: [\"--line-clamp\"], handleBareValue: ({ value: n }) => E(n) ? n : null, handle: n => [l(\"overflow\", \"hidden\"), l(\"display\", \"-webkit-box\"), l(\"-webkit-box-orient\", \"vertical\"), l(\"-webkit-line-clamp\", n)] }), i(\"line-clamp\", () => [{ values: [\"1\", \"2\", \"3\", \"4\", \"5\", \"6\"], valueThemeKeys: [\"--line-clamp\"] }]), e(\"block\", [[\"display\", \"block\"]]), e(\"inline-block\", [[\"display\", \"inline-block\"]]), e(\"inline\", [[\"display\", \"inline\"]]), e(\"hidden\", [[\"display\", \"none\"]]), e(\"inline-flex\", [[\"display\", \"inline-flex\"]]), e(\"table\", [[\"display\", \"table\"]]), e(\"inline-table\", [[\"display\", \"inline-table\"]]), e(\"table-caption\", [[\"display\", \"table-caption\"]]), e(\"table-cell\", [[\"display\", \"table-cell\"]]), e(\"table-column\", [[\"display\", \"table-column\"]]), e(\"table-column-group\", [[\"display\", \"table-column-group\"]]), e(\"table-footer-group\", [[\"display\", \"table-footer-group\"]]), e(\"table-header-group\", [[\"display\", \"table-header-group\"]]), e(\"table-row-group\", [[\"display\", \"table-row-group\"]]), e(\"table-row\", [[\"display\", \"table-row\"]]), e(\"flow-root\", [[\"display\", \"flow-root\"]]), e(\"flex\", [[\"display\", \"flex\"]]), e(\"grid\", [[\"display\", \"grid\"]]), e(\"inline-grid\", [[\"display\", \"inline-grid\"]]), e(\"contents\", [[\"display\", \"contents\"]]), e(\"list-item\", [[\"display\", \"list-item\"]]), e(\"field-sizing-content\", [[\"field-sizing\", \"content\"]]), e(\"field-sizing-fixed\", [[\"field-sizing\", \"fixed\"]]), e(\"aspect-auto\", [[\"aspect-ratio\", \"auto\"]]), e(\"aspect-square\", [[\"aspect-ratio\", \"1 / 1\"]]), o(\"aspect\", { themeKeys: [\"--aspect\"], handleBareValue: ({ fraction: n }) => { if (n === null) return null; let [d, h] = z(n, \"/\"); return !E(d) || !E(h) ? null : n }, handle: n => [l(\"aspect-ratio\", n)] }); for (let [n, d] of [[\"full\", \"100%\"], [\"svw\", \"100svw\"], [\"lvw\", \"100lvw\"], [\"dvw\", \"100dvw\"], [\"svh\", \"100svh\"], [\"lvh\", \"100lvh\"], [\"dvh\", \"100dvh\"], [\"min\", \"min-content\"], [\"max\", \"max-content\"], [\"fit\", \"fit-content\"]]) e(`size-${n}`, [[\"--tw-sort\", \"size\"], [\"width\", d], [\"height\", d]]), e(`w-${n}`, [[\"width\", d]]), e(`h-${n}`, [[\"height\", d]]), e(`min-w-${n}`, [[\"min-width\", d]]), e(`min-h-${n}`, [[\"min-height\", d]]), e(`max-w-${n}`, [[\"max-width\", d]]), e(`max-h-${n}`, [[\"max-height\", d]]); e(\"size-auto\", [[\"--tw-sort\", \"size\"], [\"width\", \"auto\"], [\"height\", \"auto\"]]), e(\"w-auto\", [[\"width\", \"auto\"]]), e(\"h-auto\", [[\"height\", \"auto\"]]), e(\"min-w-auto\", [[\"min-width\", \"auto\"]]), e(\"min-h-auto\", [[\"min-height\", \"auto\"]]), e(\"h-lh\", [[\"height\", \"1lh\"]]), e(\"min-h-lh\", [[\"min-height\", \"1lh\"]]), e(\"max-h-lh\", [[\"max-height\", \"1lh\"]]), e(\"w-screen\", [[\"width\", \"100vw\"]]), e(\"min-w-screen\", [[\"min-width\", \"100vw\"]]), e(\"max-w-screen\", [[\"max-width\", \"100vw\"]]), e(\"h-screen\", [[\"height\", \"100vh\"]]), e(\"min-h-screen\", [[\"min-height\", \"100vh\"]]), e(\"max-h-screen\", [[\"max-height\", \"100vh\"]]), e(\"max-w-none\", [[\"max-width\", \"none\"]]), e(\"max-h-none\", [[\"max-height\", \"none\"]]), a(\"size\", [\"--size\", \"--spacing\"], n => [l(\"--tw-sort\", \"size\"), l(\"width\", n), l(\"height\", n)], { supportsFractions: true }); for (let [n, d, h] of [[\"w\", [\"--width\", \"--spacing\", \"--container\"], \"width\"], [\"min-w\", [\"--min-width\", \"--spacing\", \"--container\"], \"min-width\"], [\"max-w\", [\"--max-width\", \"--spacing\", \"--container\"], \"max-width\"], [\"h\", [\"--height\", \"--spacing\"], \"height\"], [\"min-h\", [\"--min-height\", \"--height\", \"--spacing\"], \"min-height\"], [\"max-h\", [\"--max-height\", \"--height\", \"--spacing\"], \"max-height\"]]) a(n, d, A => [l(h, A)], { supportsFractions: true }); r.static(\"container\", () => { let n = [...t.namespace(\"--breakpoint\").values()]; n.sort((h, A) => ye(h, A, \"asc\")); let d = [l(\"--tw-sort\", \"--tw-container-component\"), l(\"width\", \"100%\")]; for (let h of n) d.push(F(\"@media\", `(width >= ${h})`, [l(\"max-width\", h)])); return d }), e(\"flex-auto\", [[\"flex\", \"auto\"]]), e(\"flex-initial\", [[\"flex\", \"0 auto\"]]), e(\"flex-none\", [[\"flex\", \"none\"]]), r.functional(\"flex\", n => { if (n.value) { if (n.value.kind === \"arbitrary\") return n.modifier ? void 0 : [l(\"flex\", n.value.value)]; if (n.value.fraction) { let [d, h] = z(n.value.fraction, \"/\"); return !E(d) || !E(h) ? void 0 : [l(\"flex\", `calc(${n.value.fraction} * 100%)`)] } if (E(n.value.value)) return n.modifier ? void 0 : [l(\"flex\", n.value.value)] } }), i(\"flex\", () => [{ supportsFractions: true }]), o(\"shrink\", { defaultValue: \"1\", handleBareValue: ({ value: n }) => E(n) ? n : null, handle: n => [l(\"flex-shrink\", n)] }), o(\"grow\", { defaultValue: \"1\", handleBareValue: ({ value: n }) => E(n) ? n : null, handle: n => [l(\"flex-grow\", n)] }), i(\"shrink\", () => [{ values: [\"0\"], valueThemeKeys: [], hasDefaultValue: true }]), i(\"grow\", () => [{ values: [\"0\"], valueThemeKeys: [], hasDefaultValue: true }]), e(\"basis-auto\", [[\"flex-basis\", \"auto\"]]), e(\"basis-full\", [[\"flex-basis\", \"100%\"]]), a(\"basis\", [\"--flex-basis\", \"--spacing\", \"--container\"], n => [l(\"flex-basis\", n)], { supportsFractions: true }), e(\"table-auto\", [[\"table-layout\", \"auto\"]]), e(\"table-fixed\", [[\"table-layout\", \"fixed\"]]), e(\"caption-top\", [[\"caption-side\", \"top\"]]), e(\"caption-bottom\", [[\"caption-side\", \"bottom\"]]), e(\"border-collapse\", [[\"border-collapse\", \"collapse\"]]), e(\"border-separate\", [[\"border-collapse\", \"separate\"]]); let f = () => j([S(\"--tw-border-spacing-x\", \"0\", \"<length>\"), S(\"--tw-border-spacing-y\", \"0\", \"<length>\")]); a(\"border-spacing\", [\"--border-spacing\", \"--spacing\"], n => [f(), l(\"--tw-border-spacing-x\", n), l(\"--tw-border-spacing-y\", n), l(\"border-spacing\", \"var(--tw-border-spacing-x) var(--tw-border-spacing-y)\")]), a(\"border-spacing-x\", [\"--border-spacing\", \"--spacing\"], n => [f(), l(\"--tw-border-spacing-x\", n), l(\"border-spacing\", \"var(--tw-border-spacing-x) var(--tw-border-spacing-y)\")]), a(\"border-spacing-y\", [\"--border-spacing\", \"--spacing\"], n => [f(), l(\"--tw-border-spacing-y\", n), l(\"border-spacing\", \"var(--tw-border-spacing-x) var(--tw-border-spacing-y)\")]), e(\"origin-center\", [[\"transform-origin\", \"center\"]]), e(\"origin-top\", [[\"transform-origin\", \"top\"]]), e(\"origin-top-right\", [[\"transform-origin\", \"top right\"]]), e(\"origin-right\", [[\"transform-origin\", \"right\"]]), e(\"origin-bottom-right\", [[\"transform-origin\", \"bottom right\"]]), e(\"origin-bottom\", [[\"transform-origin\", \"bottom\"]]), e(\"origin-bottom-left\", [[\"transform-origin\", \"bottom left\"]]), e(\"origin-left\", [[\"transform-origin\", \"left\"]]), e(\"origin-top-left\", [[\"transform-origin\", \"top left\"]]), o(\"origin\", { themeKeys: [\"--transform-origin\"], handle: n => [l(\"transform-origin\", n)] }), e(\"perspective-origin-center\", [[\"perspective-origin\", \"center\"]]), e(\"perspective-origin-top\", [[\"perspective-origin\", \"top\"]]), e(\"perspective-origin-top-right\", [[\"perspective-origin\", \"top right\"]]), e(\"perspective-origin-right\", [[\"perspective-origin\", \"right\"]]), e(\"perspective-origin-bottom-right\", [[\"perspective-origin\", \"bottom right\"]]), e(\"perspective-origin-bottom\", [[\"perspective-origin\", \"bottom\"]]), e(\"perspective-origin-bottom-left\", [[\"perspective-origin\", \"bottom left\"]]), e(\"perspective-origin-left\", [[\"perspective-origin\", \"left\"]]), e(\"perspective-origin-top-left\", [[\"perspective-origin\", \"top left\"]]), o(\"perspective-origin\", { themeKeys: [\"--perspective-origin\"], handle: n => [l(\"perspective-origin\", n)] }), e(\"perspective-none\", [[\"perspective\", \"none\"]]), o(\"perspective\", { themeKeys: [\"--perspective\"], handle: n => [l(\"perspective\", n)] }); let u = () => j([S(\"--tw-translate-x\", \"0\"), S(\"--tw-translate-y\", \"0\"), S(\"--tw-translate-z\", \"0\")]); e(\"translate-none\", [[\"translate\", \"none\"]]), e(\"-translate-full\", [u, [\"--tw-translate-x\", \"-100%\"], [\"--tw-translate-y\", \"-100%\"], [\"translate\", \"var(--tw-translate-x) var(--tw-translate-y)\"]]), e(\"translate-full\", [u, [\"--tw-translate-x\", \"100%\"], [\"--tw-translate-y\", \"100%\"], [\"translate\", \"var(--tw-translate-x) var(--tw-translate-y)\"]]), a(\"translate\", [\"--translate\", \"--spacing\"], n => [u(), l(\"--tw-translate-x\", n), l(\"--tw-translate-y\", n), l(\"translate\", \"var(--tw-translate-x) var(--tw-translate-y)\")], { supportsNegative: true, supportsFractions: true }); for (let n of [\"x\", \"y\"]) e(`-translate-${n}-full`, [u, [`--tw-translate-${n}`, \"-100%\"], [\"translate\", \"var(--tw-translate-x) var(--tw-translate-y)\"]]), e(`translate-${n}-full`, [u, [`--tw-translate-${n}`, \"100%\"], [\"translate\", \"var(--tw-translate-x) var(--tw-translate-y)\"]]), a(`translate-${n}`, [\"--translate\", \"--spacing\"], d => [u(), l(`--tw-translate-${n}`, d), l(\"translate\", \"var(--tw-translate-x) var(--tw-translate-y)\")], { supportsNegative: true, supportsFractions: true }); a(\"translate-z\", [\"--translate\", \"--spacing\"], n => [u(), l(\"--tw-translate-z\", n), l(\"translate\", \"var(--tw-translate-x) var(--tw-translate-y) var(--tw-translate-z)\")], { supportsNegative: true }), e(\"translate-3d\", [u, [\"translate\", \"var(--tw-translate-x) var(--tw-translate-y) var(--tw-translate-z)\"]]); let c = () => j([S(\"--tw-scale-x\", \"1\"), S(\"--tw-scale-y\", \"1\"), S(\"--tw-scale-z\", \"1\")]); e(\"scale-none\", [[\"scale\", \"none\"]]); function g({ negative: n }) { return d => { if (!d.value || d.modifier) return; let h; return d.value.kind === \"arbitrary\" ? (h = d.value.value, h = n ? `calc(${h} * -1)` : h, [l(\"scale\", h)]) : (h = t.resolve(d.value.value, [\"--scale\"]), !h && E(d.value.value) && (h = `${d.value.value}%`), h ? (h = n ? `calc(${h} * -1)` : h, [c(), l(\"--tw-scale-x\", h), l(\"--tw-scale-y\", h), l(\"--tw-scale-z\", h), l(\"scale\", \"var(--tw-scale-x) var(--tw-scale-y)\")]) : void 0) } } r.functional(\"-scale\", g({ negative: true })), r.functional(\"scale\", g({ negative: false })), i(\"scale\", () => [{ supportsNegative: true, values: [\"0\", \"50\", \"75\", \"90\", \"95\", \"100\", \"105\", \"110\", \"125\", \"150\", \"200\"], valueThemeKeys: [\"--scale\"] }]); for (let n of [\"x\", \"y\", \"z\"]) o(`scale-${n}`, { supportsNegative: true, themeKeys: [\"--scale\"], handleBareValue: ({ value: d }) => E(d) ? `${d}%` : null, handle: d => [c(), l(`--tw-scale-${n}`, d), l(\"scale\", `var(--tw-scale-x) var(--tw-scale-y)${n === \"z\" ? \" var(--tw-scale-z)\" : \"\"}`)] }), i(`scale-${n}`, () => [{ supportsNegative: true, values: [\"0\", \"50\", \"75\", \"90\", \"95\", \"100\", \"105\", \"110\", \"125\", \"150\", \"200\"], valueThemeKeys: [\"--scale\"] }]); e(\"scale-3d\", [c, [\"scale\", \"var(--tw-scale-x) var(--tw-scale-y) var(--tw-scale-z)\"]]), e(\"rotate-none\", [[\"rotate\", \"none\"]]); function p({ negative: n }) { return d => { if (!d.value || d.modifier) return; let h; if (d.value.kind === \"arbitrary\") { h = d.value.value; let A = d.value.dataType ?? Y(h, [\"angle\", \"vector\"]); if (A === \"vector\") return [l(\"rotate\", `${h} var(--tw-rotate)`)]; if (A !== \"angle\") return [l(\"rotate\", n ? `calc(${h} * -1)` : h)] } else if (h = t.resolve(d.value.value, [\"--rotate\"]), !h && E(d.value.value) && (h = `${d.value.value}deg`), !h) return; return [l(\"rotate\", n ? `calc(${h} * -1)` : h)] } } r.functional(\"-rotate\", p({ negative: true })), r.functional(\"rotate\", p({ negative: false })), i(\"rotate\", () => [{ supportsNegative: true, values: [\"0\", \"1\", \"2\", \"3\", \"6\", \"12\", \"45\", \"90\", \"180\"], valueThemeKeys: [\"--rotate\"] }]); { let n = [\"var(--tw-rotate-x,)\", \"var(--tw-rotate-y,)\", \"var(--tw-rotate-z,)\", \"var(--tw-skew-x,)\", \"var(--tw-skew-y,)\"].join(\" \"), d = () => j([S(\"--tw-rotate-x\"), S(\"--tw-rotate-y\"), S(\"--tw-rotate-z\"), S(\"--tw-skew-x\"), S(\"--tw-skew-y\")]); for (let h of [\"x\", \"y\", \"z\"]) o(`rotate-${h}`, { supportsNegative: true, themeKeys: [\"--rotate\"], handleBareValue: ({ value: A }) => E(A) ? `${A}deg` : null, handle: A => [d(), l(`--tw-rotate-${h}`, `rotate${h.toUpperCase()}(${A})`), l(\"transform\", n)] }), i(`rotate-${h}`, () => [{ supportsNegative: true, values: [\"0\", \"1\", \"2\", \"3\", \"6\", \"12\", \"45\", \"90\", \"180\"], valueThemeKeys: [\"--rotate\"] }]); o(\"skew\", { supportsNegative: true, themeKeys: [\"--skew\"], handleBareValue: ({ value: h }) => E(h) ? `${h}deg` : null, handle: h => [d(), l(\"--tw-skew-x\", `skewX(${h})`), l(\"--tw-skew-y\", `skewY(${h})`), l(\"transform\", n)] }), o(\"skew-x\", { supportsNegative: true, themeKeys: [\"--skew\"], handleBareValue: ({ value: h }) => E(h) ? `${h}deg` : null, handle: h => [d(), l(\"--tw-skew-x\", `skewX(${h})`), l(\"transform\", n)] }), o(\"skew-y\", { supportsNegative: true, themeKeys: [\"--skew\"], handleBareValue: ({ value: h }) => E(h) ? `${h}deg` : null, handle: h => [d(), l(\"--tw-skew-y\", `skewY(${h})`), l(\"transform\", n)] }), i(\"skew\", () => [{ supportsNegative: true, values: [\"0\", \"1\", \"2\", \"3\", \"6\", \"12\"], valueThemeKeys: [\"--skew\"] }]), i(\"skew-x\", () => [{ supportsNegative: true, values: [\"0\", \"1\", \"2\", \"3\", \"6\", \"12\"], valueThemeKeys: [\"--skew\"] }]), i(\"skew-y\", () => [{ supportsNegative: true, values: [\"0\", \"1\", \"2\", \"3\", \"6\", \"12\"], valueThemeKeys: [\"--skew\"] }]), r.functional(\"transform\", h => { if (h.modifier) return; let A = null; if (h.value ? h.value.kind === \"arbitrary\" && (A = h.value.value) : A = n, A !== null) return [d(), l(\"transform\", A)] }), i(\"transform\", () => [{ hasDefaultValue: true }]), e(\"transform-cpu\", [[\"transform\", n]]), e(\"transform-gpu\", [[\"transform\", `translateZ(0) ${n}`]]), e(\"transform-none\", [[\"transform\", \"none\"]]); } e(\"transform-flat\", [[\"transform-style\", \"flat\"]]), e(\"transform-3d\", [[\"transform-style\", \"preserve-3d\"]]), e(\"transform-content\", [[\"transform-box\", \"content-box\"]]), e(\"transform-border\", [[\"transform-box\", \"border-box\"]]), e(\"transform-fill\", [[\"transform-box\", \"fill-box\"]]), e(\"transform-stroke\", [[\"transform-box\", \"stroke-box\"]]), e(\"transform-view\", [[\"transform-box\", \"view-box\"]]), e(\"backface-visible\", [[\"backface-visibility\", \"visible\"]]), e(\"backface-hidden\", [[\"backface-visibility\", \"hidden\"]]); for (let n of [\"auto\", \"default\", \"pointer\", \"wait\", \"text\", \"move\", \"help\", \"not-allowed\", \"none\", \"context-menu\", \"progress\", \"cell\", \"crosshair\", \"vertical-text\", \"alias\", \"copy\", \"no-drop\", \"grab\", \"grabbing\", \"all-scroll\", \"col-resize\", \"row-resize\", \"n-resize\", \"e-resize\", \"s-resize\", \"w-resize\", \"ne-resize\", \"nw-resize\", \"se-resize\", \"sw-resize\", \"ew-resize\", \"ns-resize\", \"nesw-resize\", \"nwse-resize\", \"zoom-in\", \"zoom-out\"]) e(`cursor-${n}`, [[\"cursor\", n]]); o(\"cursor\", { themeKeys: [\"--cursor\"], handle: n => [l(\"cursor\", n)] }); for (let n of [\"auto\", \"none\", \"manipulation\"]) e(`touch-${n}`, [[\"touch-action\", n]]); let m = () => j([S(\"--tw-pan-x\"), S(\"--tw-pan-y\"), S(\"--tw-pinch-zoom\")]); for (let n of [\"x\", \"left\", \"right\"]) e(`touch-pan-${n}`, [m, [\"--tw-pan-x\", `pan-${n}`], [\"touch-action\", \"var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)\"]]); for (let n of [\"y\", \"up\", \"down\"]) e(`touch-pan-${n}`, [m, [\"--tw-pan-y\", `pan-${n}`], [\"touch-action\", \"var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)\"]]); e(\"touch-pinch-zoom\", [m, [\"--tw-pinch-zoom\", \"pinch-zoom\"], [\"touch-action\", \"var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)\"]]); for (let n of [\"none\", \"text\", \"all\", \"auto\"]) e(`select-${n}`, [[\"-webkit-user-select\", n], [\"user-select\", n]]); e(\"resize-none\", [[\"resize\", \"none\"]]), e(\"resize-x\", [[\"resize\", \"horizontal\"]]), e(\"resize-y\", [[\"resize\", \"vertical\"]]), e(\"resize\", [[\"resize\", \"both\"]]), e(\"snap-none\", [[\"scroll-snap-type\", \"none\"]]); let v = () => j([S(\"--tw-scroll-snap-strictness\", \"proximity\", \"*\")]); for (let n of [\"x\", \"y\", \"both\"]) e(`snap-${n}`, [v, [\"scroll-snap-type\", `${n} var(--tw-scroll-snap-strictness)`]]); e(\"snap-mandatory\", [v, [\"--tw-scroll-snap-strictness\", \"mandatory\"]]), e(\"snap-proximity\", [v, [\"--tw-scroll-snap-strictness\", \"proximity\"]]), e(\"snap-align-none\", [[\"scroll-snap-align\", \"none\"]]), e(\"snap-start\", [[\"scroll-snap-align\", \"start\"]]), e(\"snap-end\", [[\"scroll-snap-align\", \"end\"]]), e(\"snap-center\", [[\"scroll-snap-align\", \"center\"]]), e(\"snap-normal\", [[\"scroll-snap-stop\", \"normal\"]]), e(\"snap-always\", [[\"scroll-snap-stop\", \"always\"]]); for (let [n, d] of [[\"scroll-m\", \"scroll-margin\"], [\"scroll-mx\", \"scroll-margin-inline\"], [\"scroll-my\", \"scroll-margin-block\"], [\"scroll-ms\", \"scroll-margin-inline-start\"], [\"scroll-me\", \"scroll-margin-inline-end\"], [\"scroll-mt\", \"scroll-margin-top\"], [\"scroll-mr\", \"scroll-margin-right\"], [\"scroll-mb\", \"scroll-margin-bottom\"], [\"scroll-ml\", \"scroll-margin-left\"]]) a(n, [\"--scroll-margin\", \"--spacing\"], h => [l(d, h)], { supportsNegative: true }); for (let [n, d] of [[\"scroll-p\", \"scroll-padding\"], [\"scroll-px\", \"scroll-padding-inline\"], [\"scroll-py\", \"scroll-padding-block\"], [\"scroll-ps\", \"scroll-padding-inline-start\"], [\"scroll-pe\", \"scroll-padding-inline-end\"], [\"scroll-pt\", \"scroll-padding-top\"], [\"scroll-pr\", \"scroll-padding-right\"], [\"scroll-pb\", \"scroll-padding-bottom\"], [\"scroll-pl\", \"scroll-padding-left\"]]) a(n, [\"--scroll-padding\", \"--spacing\"], h => [l(d, h)]); e(\"list-inside\", [[\"list-style-position\", \"inside\"]]), e(\"list-outside\", [[\"list-style-position\", \"outside\"]]), e(\"list-none\", [[\"list-style-type\", \"none\"]]), e(\"list-disc\", [[\"list-style-type\", \"disc\"]]), e(\"list-decimal\", [[\"list-style-type\", \"decimal\"]]), o(\"list\", { themeKeys: [\"--list-style-type\"], handle: n => [l(\"list-style-type\", n)] }), e(\"list-image-none\", [[\"list-style-image\", \"none\"]]), o(\"list-image\", { themeKeys: [\"--list-style-image\"], handle: n => [l(\"list-style-image\", n)] }), e(\"appearance-none\", [[\"appearance\", \"none\"]]), e(\"appearance-auto\", [[\"appearance\", \"auto\"]]), e(\"scheme-normal\", [[\"color-scheme\", \"normal\"]]), e(\"scheme-dark\", [[\"color-scheme\", \"dark\"]]), e(\"scheme-light\", [[\"color-scheme\", \"light\"]]), e(\"scheme-light-dark\", [[\"color-scheme\", \"light dark\"]]), e(\"scheme-only-dark\", [[\"color-scheme\", \"only dark\"]]), e(\"scheme-only-light\", [[\"color-scheme\", \"only light\"]]), e(\"columns-auto\", [[\"columns\", \"auto\"]]), o(\"columns\", { themeKeys: [\"--columns\", \"--container\"], handleBareValue: ({ value: n }) => E(n) ? n : null, handle: n => [l(\"columns\", n)] }), i(\"columns\", () => [{ values: Array.from({ length: 12 }, (n, d) => `${d + 1}`), valueThemeKeys: [\"--columns\", \"--container\"] }]); for (let n of [\"auto\", \"avoid\", \"all\", \"avoid-page\", \"page\", \"left\", \"right\", \"column\"]) e(`break-before-${n}`, [[\"break-before\", n]]); for (let n of [\"auto\", \"avoid\", \"avoid-page\", \"avoid-column\"]) e(`break-inside-${n}`, [[\"break-inside\", n]]); for (let n of [\"auto\", \"avoid\", \"all\", \"avoid-page\", \"page\", \"left\", \"right\", \"column\"]) e(`break-after-${n}`, [[\"break-after\", n]]); e(\"grid-flow-row\", [[\"grid-auto-flow\", \"row\"]]), e(\"grid-flow-col\", [[\"grid-auto-flow\", \"column\"]]), e(\"grid-flow-dense\", [[\"grid-auto-flow\", \"dense\"]]), e(\"grid-flow-row-dense\", [[\"grid-auto-flow\", \"row dense\"]]), e(\"grid-flow-col-dense\", [[\"grid-auto-flow\", \"column dense\"]]), e(\"auto-cols-auto\", [[\"grid-auto-columns\", \"auto\"]]), e(\"auto-cols-min\", [[\"grid-auto-columns\", \"min-content\"]]), e(\"auto-cols-max\", [[\"grid-auto-columns\", \"max-content\"]]), e(\"auto-cols-fr\", [[\"grid-auto-columns\", \"minmax(0, 1fr)\"]]), o(\"auto-cols\", { themeKeys: [\"--grid-auto-columns\"], handle: n => [l(\"grid-auto-columns\", n)] }), e(\"auto-rows-auto\", [[\"grid-auto-rows\", \"auto\"]]), e(\"auto-rows-min\", [[\"grid-auto-rows\", \"min-content\"]]), e(\"auto-rows-max\", [[\"grid-auto-rows\", \"max-content\"]]), e(\"auto-rows-fr\", [[\"grid-auto-rows\", \"minmax(0, 1fr)\"]]), o(\"auto-rows\", { themeKeys: [\"--grid-auto-rows\"], handle: n => [l(\"grid-auto-rows\", n)] }), e(\"grid-cols-none\", [[\"grid-template-columns\", \"none\"]]), e(\"grid-cols-subgrid\", [[\"grid-template-columns\", \"subgrid\"]]), o(\"grid-cols\", { themeKeys: [\"--grid-template-columns\"], handleBareValue: ({ value: n }) => _t(n) ? `repeat(${n}, minmax(0, 1fr))` : null, handle: n => [l(\"grid-template-columns\", n)] }), e(\"grid-rows-none\", [[\"grid-template-rows\", \"none\"]]), e(\"grid-rows-subgrid\", [[\"grid-template-rows\", \"subgrid\"]]), o(\"grid-rows\", { themeKeys: [\"--grid-template-rows\"], handleBareValue: ({ value: n }) => _t(n) ? `repeat(${n}, minmax(0, 1fr))` : null, handle: n => [l(\"grid-template-rows\", n)] }), i(\"grid-cols\", () => [{ values: Array.from({ length: 12 }, (n, d) => `${d + 1}`), valueThemeKeys: [\"--grid-template-columns\"] }]), i(\"grid-rows\", () => [{ values: Array.from({ length: 12 }, (n, d) => `${d + 1}`), valueThemeKeys: [\"--grid-template-rows\"] }]), e(\"flex-row\", [[\"flex-direction\", \"row\"]]), e(\"flex-row-reverse\", [[\"flex-direction\", \"row-reverse\"]]), e(\"flex-col\", [[\"flex-direction\", \"column\"]]), e(\"flex-col-reverse\", [[\"flex-direction\", \"column-reverse\"]]), e(\"flex-wrap\", [[\"flex-wrap\", \"wrap\"]]), e(\"flex-nowrap\", [[\"flex-wrap\", \"nowrap\"]]), e(\"flex-wrap-reverse\", [[\"flex-wrap\", \"wrap-reverse\"]]), e(\"place-content-center\", [[\"place-content\", \"center\"]]), e(\"place-content-start\", [[\"place-content\", \"start\"]]), e(\"place-content-end\", [[\"place-content\", \"end\"]]), e(\"place-content-center-safe\", [[\"place-content\", \"safe center\"]]), e(\"place-content-end-safe\", [[\"place-content\", \"safe end\"]]), e(\"place-content-between\", [[\"place-content\", \"space-between\"]]), e(\"place-content-around\", [[\"place-content\", \"space-around\"]]), e(\"place-content-evenly\", [[\"place-content\", \"space-evenly\"]]), e(\"place-content-baseline\", [[\"place-content\", \"baseline\"]]), e(\"place-content-stretch\", [[\"place-content\", \"stretch\"]]), e(\"place-items-center\", [[\"place-items\", \"center\"]]), e(\"place-items-start\", [[\"place-items\", \"start\"]]), e(\"place-items-end\", [[\"place-items\", \"end\"]]), e(\"place-items-center-safe\", [[\"place-items\", \"safe center\"]]), e(\"place-items-end-safe\", [[\"place-items\", \"safe end\"]]), e(\"place-items-baseline\", [[\"place-items\", \"baseline\"]]), e(\"place-items-stretch\", [[\"place-items\", \"stretch\"]]), e(\"content-normal\", [[\"align-content\", \"normal\"]]), e(\"content-center\", [[\"align-content\", \"center\"]]), e(\"content-start\", [[\"align-content\", \"flex-start\"]]), e(\"content-end\", [[\"align-content\", \"flex-end\"]]), e(\"content-center-safe\", [[\"align-content\", \"safe center\"]]), e(\"content-end-safe\", [[\"align-content\", \"safe flex-end\"]]), e(\"content-between\", [[\"align-content\", \"space-between\"]]), e(\"content-around\", [[\"align-content\", \"space-around\"]]), e(\"content-evenly\", [[\"align-content\", \"space-evenly\"]]), e(\"content-baseline\", [[\"align-content\", \"baseline\"]]), e(\"content-stretch\", [[\"align-content\", \"stretch\"]]), e(\"items-center\", [[\"align-items\", \"center\"]]), e(\"items-start\", [[\"align-items\", \"flex-start\"]]), e(\"items-end\", [[\"align-items\", \"flex-end\"]]), e(\"items-center-safe\", [[\"align-items\", \"safe center\"]]), e(\"items-end-safe\", [[\"align-items\", \"safe flex-end\"]]), e(\"items-baseline\", [[\"align-items\", \"baseline\"]]), e(\"items-baseline-last\", [[\"align-items\", \"last baseline\"]]), e(\"items-stretch\", [[\"align-items\", \"stretch\"]]), e(\"justify-normal\", [[\"justify-content\", \"normal\"]]), e(\"justify-center\", [[\"justify-content\", \"center\"]]), e(\"justify-start\", [[\"justify-content\", \"flex-start\"]]), e(\"justify-end\", [[\"justify-content\", \"flex-end\"]]), e(\"justify-center-safe\", [[\"justify-content\", \"safe center\"]]), e(\"justify-end-safe\", [[\"justify-content\", \"safe flex-end\"]]), e(\"justify-between\", [[\"justify-content\", \"space-between\"]]), e(\"justify-around\", [[\"justify-content\", \"space-around\"]]), e(\"justify-evenly\", [[\"justify-content\", \"space-evenly\"]]), e(\"justify-baseline\", [[\"justify-content\", \"baseline\"]]), e(\"justify-stretch\", [[\"justify-content\", \"stretch\"]]), e(\"justify-items-normal\", [[\"justify-items\", \"normal\"]]), e(\"justify-items-center\", [[\"justify-items\", \"center\"]]), e(\"justify-items-start\", [[\"justify-items\", \"start\"]]), e(\"justify-items-end\", [[\"justify-items\", \"end\"]]), e(\"justify-items-center-safe\", [[\"justify-items\", \"safe center\"]]), e(\"justify-items-end-safe\", [[\"justify-items\", \"safe end\"]]), e(\"justify-items-stretch\", [[\"justify-items\", \"stretch\"]]), a(\"gap\", [\"--gap\", \"--spacing\"], n => [l(\"gap\", n)]), a(\"gap-x\", [\"--gap\", \"--spacing\"], n => [l(\"column-gap\", n)]), a(\"gap-y\", [\"--gap\", \"--spacing\"], n => [l(\"row-gap\", n)]), a(\"space-x\", [\"--space\", \"--spacing\"], n => [j([S(\"--tw-space-x-reverse\", \"0\")]), M(\":where(& > :not(:last-child))\", [l(\"--tw-sort\", \"row-gap\"), l(\"--tw-space-x-reverse\", \"0\"), l(\"margin-inline-start\", `calc(${n} * var(--tw-space-x-reverse))`), l(\"margin-inline-end\", `calc(${n} * calc(1 - var(--tw-space-x-reverse)))`)])], { supportsNegative: true }), a(\"space-y\", [\"--space\", \"--spacing\"], n => [j([S(\"--tw-space-y-reverse\", \"0\")]), M(\":where(& > :not(:last-child))\", [l(\"--tw-sort\", \"column-gap\"), l(\"--tw-space-y-reverse\", \"0\"), l(\"margin-block-start\", `calc(${n} * var(--tw-space-y-reverse))`), l(\"margin-block-end\", `calc(${n} * calc(1 - var(--tw-space-y-reverse)))`)])], { supportsNegative: true }), e(\"space-x-reverse\", [() => j([S(\"--tw-space-x-reverse\", \"0\")]), () => M(\":where(& > :not(:last-child))\", [l(\"--tw-sort\", \"row-gap\"), l(\"--tw-space-x-reverse\", \"1\")])]), e(\"space-y-reverse\", [() => j([S(\"--tw-space-y-reverse\", \"0\")]), () => M(\":where(& > :not(:last-child))\", [l(\"--tw-sort\", \"column-gap\"), l(\"--tw-space-y-reverse\", \"1\")])]), e(\"accent-auto\", [[\"accent-color\", \"auto\"]]), s(\"accent\", { themeKeys: [\"--accent-color\", \"--color\"], handle: n => [l(\"accent-color\", n)] }), s(\"caret\", { themeKeys: [\"--caret-color\", \"--color\"], handle: n => [l(\"caret-color\", n)] }), s(\"divide\", { themeKeys: [\"--divide-color\", \"--color\"], handle: n => [M(\":where(& > :not(:last-child))\", [l(\"--tw-sort\", \"divide-color\"), l(\"border-color\", n)])] }), e(\"place-self-auto\", [[\"place-self\", \"auto\"]]), e(\"place-self-start\", [[\"place-self\", \"start\"]]), e(\"place-self-end\", [[\"place-self\", \"end\"]]), e(\"place-self-center\", [[\"place-self\", \"center\"]]), e(\"place-self-end-safe\", [[\"place-self\", \"safe end\"]]), e(\"place-self-center-safe\", [[\"place-self\", \"safe center\"]]), e(\"place-self-stretch\", [[\"place-self\", \"stretch\"]]), e(\"self-auto\", [[\"align-self\", \"auto\"]]), e(\"self-start\", [[\"align-self\", \"flex-start\"]]), e(\"self-end\", [[\"align-self\", \"flex-end\"]]), e(\"self-center\", [[\"align-self\", \"center\"]]), e(\"self-end-safe\", [[\"align-self\", \"safe flex-end\"]]), e(\"self-center-safe\", [[\"align-self\", \"safe center\"]]), e(\"self-stretch\", [[\"align-self\", \"stretch\"]]), e(\"self-baseline\", [[\"align-self\", \"baseline\"]]), e(\"self-baseline-last\", [[\"align-self\", \"last baseline\"]]), e(\"justify-self-auto\", [[\"justify-self\", \"auto\"]]), e(\"justify-self-start\", [[\"justify-self\", \"flex-start\"]]), e(\"justify-self-end\", [[\"justify-self\", \"flex-end\"]]), e(\"justify-self-center\", [[\"justify-self\", \"center\"]]), e(\"justify-self-end-safe\", [[\"justify-self\", \"safe flex-end\"]]), e(\"justify-self-center-safe\", [[\"justify-self\", \"safe center\"]]), e(\"justify-self-stretch\", [[\"justify-self\", \"stretch\"]]); for (let n of [\"auto\", \"hidden\", \"clip\", \"visible\", \"scroll\"]) e(`overflow-${n}`, [[\"overflow\", n]]), e(`overflow-x-${n}`, [[\"overflow-x\", n]]), e(`overflow-y-${n}`, [[\"overflow-y\", n]]); for (let n of [\"auto\", \"contain\", \"none\"]) e(`overscroll-${n}`, [[\"overscroll-behavior\", n]]), e(`overscroll-x-${n}`, [[\"overscroll-behavior-x\", n]]), e(`overscroll-y-${n}`, [[\"overscroll-behavior-y\", n]]); e(\"scroll-auto\", [[\"scroll-behavior\", \"auto\"]]), e(\"scroll-smooth\", [[\"scroll-behavior\", \"smooth\"]]), e(\"truncate\", [[\"overflow\", \"hidden\"], [\"text-overflow\", \"ellipsis\"], [\"white-space\", \"nowrap\"]]), e(\"text-ellipsis\", [[\"text-overflow\", \"ellipsis\"]]), e(\"text-clip\", [[\"text-overflow\", \"clip\"]]), e(\"hyphens-none\", [[\"-webkit-hyphens\", \"none\"], [\"hyphens\", \"none\"]]), e(\"hyphens-manual\", [[\"-webkit-hyphens\", \"manual\"], [\"hyphens\", \"manual\"]]), e(\"hyphens-auto\", [[\"-webkit-hyphens\", \"auto\"], [\"hyphens\", \"auto\"]]), e(\"whitespace-normal\", [[\"white-space\", \"normal\"]]), e(\"whitespace-nowrap\", [[\"white-space\", \"nowrap\"]]), e(\"whitespace-pre\", [[\"white-space\", \"pre\"]]), e(\"whitespace-pre-line\", [[\"white-space\", \"pre-line\"]]), e(\"whitespace-pre-wrap\", [[\"white-space\", \"pre-wrap\"]]), e(\"whitespace-break-spaces\", [[\"white-space\", \"break-spaces\"]]), e(\"text-wrap\", [[\"text-wrap\", \"wrap\"]]), e(\"text-nowrap\", [[\"text-wrap\", \"nowrap\"]]), e(\"text-balance\", [[\"text-wrap\", \"balance\"]]), e(\"text-pretty\", [[\"text-wrap\", \"pretty\"]]), e(\"break-normal\", [[\"overflow-wrap\", \"normal\"], [\"word-break\", \"normal\"]]), e(\"break-words\", [[\"overflow-wrap\", \"break-word\"]]), e(\"break-all\", [[\"word-break\", \"break-all\"]]), e(\"break-keep\", [[\"word-break\", \"keep-all\"]]), e(\"wrap-anywhere\", [[\"overflow-wrap\", \"anywhere\"]]), e(\"wrap-break-word\", [[\"overflow-wrap\", \"break-word\"]]), e(\"wrap-normal\", [[\"overflow-wrap\", \"normal\"]]); for (let [n, d] of [[\"rounded\", [\"border-radius\"]], [\"rounded-s\", [\"border-start-start-radius\", \"border-end-start-radius\"]], [\"rounded-e\", [\"border-start-end-radius\", \"border-end-end-radius\"]], [\"rounded-t\", [\"border-top-left-radius\", \"border-top-right-radius\"]], [\"rounded-r\", [\"border-top-right-radius\", \"border-bottom-right-radius\"]], [\"rounded-b\", [\"border-bottom-right-radius\", \"border-bottom-left-radius\"]], [\"rounded-l\", [\"border-top-left-radius\", \"border-bottom-left-radius\"]], [\"rounded-ss\", [\"border-start-start-radius\"]], [\"rounded-se\", [\"border-start-end-radius\"]], [\"rounded-ee\", [\"border-end-end-radius\"]], [\"rounded-es\", [\"border-end-start-radius\"]], [\"rounded-tl\", [\"border-top-left-radius\"]], [\"rounded-tr\", [\"border-top-right-radius\"]], [\"rounded-br\", [\"border-bottom-right-radius\"]], [\"rounded-bl\", [\"border-bottom-left-radius\"]]]) e(`${n}-none`, d.map(h => [h, \"0\"])), e(`${n}-full`, d.map(h => [h, \"calc(infinity * 1px)\"])), o(n, { themeKeys: [\"--radius\"], handle: h => d.map(A => l(A, h)) }); e(\"border-solid\", [[\"--tw-border-style\", \"solid\"], [\"border-style\", \"solid\"]]), e(\"border-dashed\", [[\"--tw-border-style\", \"dashed\"], [\"border-style\", \"dashed\"]]), e(\"border-dotted\", [[\"--tw-border-style\", \"dotted\"], [\"border-style\", \"dotted\"]]), e(\"border-double\", [[\"--tw-border-style\", \"double\"], [\"border-style\", \"double\"]]), e(\"border-hidden\", [[\"--tw-border-style\", \"hidden\"], [\"border-style\", \"hidden\"]]), e(\"border-none\", [[\"--tw-border-style\", \"none\"], [\"border-style\", \"none\"]]); { let d = function (h, A) { r.functional(h, w => { if (!w.value) { if (w.modifier) return; let C = t.get([\"--default-border-width\"]) ?? \"1px\", P = A.width(C); return P ? [n(), ...P] : void 0 } if (w.value.kind === \"arbitrary\") { let C = w.value.value; switch (w.value.dataType ?? Y(C, [\"color\", \"line-width\", \"length\"])) { case \"line-width\": case \"length\": { if (w.modifier) return; let $ = A.width(C); return $ ? [n(), ...$] : void 0 } default: return C = Z(C, w.modifier, t), C === null ? void 0 : A.color(C) } } { let C = te(w, t, [\"--border-color\", \"--color\"]); if (C) return A.color(C) } { if (w.modifier) return; let C = t.resolve(w.value.value, [\"--border-width\"]); if (C) { let P = A.width(C); return P ? [n(), ...P] : void 0 } if (E(w.value.value)) { let P = A.width(`${w.value.value}px`); return P ? [n(), ...P] : void 0 } } }), i(h, () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--border-color\", \"--color\"], modifiers: Array.from({ length: 21 }, (w, C) => `${C * 5}`), hasDefaultValue: true }, { values: [\"0\", \"2\", \"4\", \"8\"], valueThemeKeys: [\"--border-width\"] }]); }; let n = () => j([S(\"--tw-border-style\", \"solid\")]); d(\"border\", { width: h => [l(\"border-style\", \"var(--tw-border-style)\"), l(\"border-width\", h)], color: h => [l(\"border-color\", h)] }), d(\"border-x\", { width: h => [l(\"border-inline-style\", \"var(--tw-border-style)\"), l(\"border-inline-width\", h)], color: h => [l(\"border-inline-color\", h)] }), d(\"border-y\", { width: h => [l(\"border-block-style\", \"var(--tw-border-style)\"), l(\"border-block-width\", h)], color: h => [l(\"border-block-color\", h)] }), d(\"border-s\", { width: h => [l(\"border-inline-start-style\", \"var(--tw-border-style)\"), l(\"border-inline-start-width\", h)], color: h => [l(\"border-inline-start-color\", h)] }), d(\"border-e\", { width: h => [l(\"border-inline-end-style\", \"var(--tw-border-style)\"), l(\"border-inline-end-width\", h)], color: h => [l(\"border-inline-end-color\", h)] }), d(\"border-t\", { width: h => [l(\"border-top-style\", \"var(--tw-border-style)\"), l(\"border-top-width\", h)], color: h => [l(\"border-top-color\", h)] }), d(\"border-r\", { width: h => [l(\"border-right-style\", \"var(--tw-border-style)\"), l(\"border-right-width\", h)], color: h => [l(\"border-right-color\", h)] }), d(\"border-b\", { width: h => [l(\"border-bottom-style\", \"var(--tw-border-style)\"), l(\"border-bottom-width\", h)], color: h => [l(\"border-bottom-color\", h)] }), d(\"border-l\", { width: h => [l(\"border-left-style\", \"var(--tw-border-style)\"), l(\"border-left-width\", h)], color: h => [l(\"border-left-color\", h)] }), o(\"divide-x\", { defaultValue: t.get([\"--default-border-width\"]) ?? \"1px\", themeKeys: [\"--divide-width\", \"--border-width\"], handleBareValue: ({ value: h }) => E(h) ? `${h}px` : null, handle: h => [j([S(\"--tw-divide-x-reverse\", \"0\")]), M(\":where(& > :not(:last-child))\", [l(\"--tw-sort\", \"divide-x-width\"), n(), l(\"--tw-divide-x-reverse\", \"0\"), l(\"border-inline-style\", \"var(--tw-border-style)\"), l(\"border-inline-start-width\", `calc(${h} * var(--tw-divide-x-reverse))`), l(\"border-inline-end-width\", `calc(${h} * calc(1 - var(--tw-divide-x-reverse)))`)])] }), o(\"divide-y\", { defaultValue: t.get([\"--default-border-width\"]) ?? \"1px\", themeKeys: [\"--divide-width\", \"--border-width\"], handleBareValue: ({ value: h }) => E(h) ? `${h}px` : null, handle: h => [j([S(\"--tw-divide-y-reverse\", \"0\")]), M(\":where(& > :not(:last-child))\", [l(\"--tw-sort\", \"divide-y-width\"), n(), l(\"--tw-divide-y-reverse\", \"0\"), l(\"border-bottom-style\", \"var(--tw-border-style)\"), l(\"border-top-style\", \"var(--tw-border-style)\"), l(\"border-top-width\", `calc(${h} * var(--tw-divide-y-reverse))`), l(\"border-bottom-width\", `calc(${h} * calc(1 - var(--tw-divide-y-reverse)))`)])] }), i(\"divide-x\", () => [{ values: [\"0\", \"2\", \"4\", \"8\"], valueThemeKeys: [\"--divide-width\", \"--border-width\"], hasDefaultValue: true }]), i(\"divide-y\", () => [{ values: [\"0\", \"2\", \"4\", \"8\"], valueThemeKeys: [\"--divide-width\", \"--border-width\"], hasDefaultValue: true }]), e(\"divide-x-reverse\", [() => j([S(\"--tw-divide-x-reverse\", \"0\")]), () => M(\":where(& > :not(:last-child))\", [l(\"--tw-divide-x-reverse\", \"1\")])]), e(\"divide-y-reverse\", [() => j([S(\"--tw-divide-y-reverse\", \"0\")]), () => M(\":where(& > :not(:last-child))\", [l(\"--tw-divide-y-reverse\", \"1\")])]); for (let h of [\"solid\", \"dashed\", \"dotted\", \"double\", \"none\"]) e(`divide-${h}`, [() => M(\":where(& > :not(:last-child))\", [l(\"--tw-sort\", \"divide-style\"), l(\"--tw-border-style\", h), l(\"border-style\", h)])]); } e(\"bg-auto\", [[\"background-size\", \"auto\"]]), e(\"bg-cover\", [[\"background-size\", \"cover\"]]), e(\"bg-contain\", [[\"background-size\", \"contain\"]]), o(\"bg-size\", { handle(n) { if (n) return [l(\"background-size\", n)] } }), e(\"bg-fixed\", [[\"background-attachment\", \"fixed\"]]), e(\"bg-local\", [[\"background-attachment\", \"local\"]]), e(\"bg-scroll\", [[\"background-attachment\", \"scroll\"]]), e(\"bg-top\", [[\"background-position\", \"top\"]]), e(\"bg-top-left\", [[\"background-position\", \"left top\"]]), e(\"bg-top-right\", [[\"background-position\", \"right top\"]]), e(\"bg-bottom\", [[\"background-position\", \"bottom\"]]), e(\"bg-bottom-left\", [[\"background-position\", \"left bottom\"]]), e(\"bg-bottom-right\", [[\"background-position\", \"right bottom\"]]), e(\"bg-left\", [[\"background-position\", \"left\"]]), e(\"bg-right\", [[\"background-position\", \"right\"]]), e(\"bg-center\", [[\"background-position\", \"center\"]]), o(\"bg-position\", { handle(n) { if (n) return [l(\"background-position\", n)] } }), e(\"bg-repeat\", [[\"background-repeat\", \"repeat\"]]), e(\"bg-no-repeat\", [[\"background-repeat\", \"no-repeat\"]]), e(\"bg-repeat-x\", [[\"background-repeat\", \"repeat-x\"]]), e(\"bg-repeat-y\", [[\"background-repeat\", \"repeat-y\"]]), e(\"bg-repeat-round\", [[\"background-repeat\", \"round\"]]), e(\"bg-repeat-space\", [[\"background-repeat\", \"space\"]]), e(\"bg-none\", [[\"background-image\", \"none\"]]); { let h = function (C) { let P = \"in oklab\"; if (C?.kind === \"named\") switch (C.value) { case \"longer\": case \"shorter\": case \"increasing\": case \"decreasing\": P = `in oklch ${C.value} hue`; break; default: P = `in ${C.value}`; } else C?.kind === \"arbitrary\" && (P = C.value); return P }, A = function ({ negative: C }) { return P => { if (!P.value) return; if (P.value.kind === \"arbitrary\") { if (P.modifier) return; let K = P.value.value; switch (P.value.dataType ?? Y(K, [\"angle\"])) { case \"angle\": return K = C ? `calc(${K} * -1)` : `${K}`, [l(\"--tw-gradient-position\", K), l(\"background-image\", `linear-gradient(var(--tw-gradient-stops,${K}))`)]; default: return C ? void 0 : [l(\"--tw-gradient-position\", K), l(\"background-image\", `linear-gradient(var(--tw-gradient-stops,${K}))`)] } } let $ = P.value.value; if (!C && d.has($)) $ = d.get($); else if (E($)) $ = C ? `calc(${$}deg * -1)` : `${$}deg`; else return; let T = h(P.modifier); return [l(\"--tw-gradient-position\", `${$}`), G(\"@supports (background-image: linear-gradient(in lab, red, red))\", [l(\"--tw-gradient-position\", `${$} ${T}`)]), l(\"background-image\", \"linear-gradient(var(--tw-gradient-stops))\")] } }, w = function ({ negative: C }) { return P => { if (P.value?.kind === \"arbitrary\") { if (P.modifier) return; let K = P.value.value; return [l(\"--tw-gradient-position\", K), l(\"background-image\", `conic-gradient(var(--tw-gradient-stops,${K}))`)] } let $ = h(P.modifier); if (!P.value) return [l(\"--tw-gradient-position\", $), l(\"background-image\", \"conic-gradient(var(--tw-gradient-stops))\")]; let T = P.value.value; if (E(T)) return T = C ? `calc(${T}deg * -1)` : `${T}deg`, [l(\"--tw-gradient-position\", `from ${T} ${$}`), l(\"background-image\", \"conic-gradient(var(--tw-gradient-stops))\")] } }; let n = [\"oklab\", \"oklch\", \"srgb\", \"hsl\", \"longer\", \"shorter\", \"increasing\", \"decreasing\"], d = new Map([[\"to-t\", \"to top\"], [\"to-tr\", \"to top right\"], [\"to-r\", \"to right\"], [\"to-br\", \"to bottom right\"], [\"to-b\", \"to bottom\"], [\"to-bl\", \"to bottom left\"], [\"to-l\", \"to left\"], [\"to-tl\", \"to top left\"]]); r.functional(\"-bg-linear\", A({ negative: true })), r.functional(\"bg-linear\", A({ negative: false })), i(\"bg-linear\", () => [{ values: [...d.keys()], modifiers: n }, { values: [\"0\", \"30\", \"60\", \"90\", \"120\", \"150\", \"180\", \"210\", \"240\", \"270\", \"300\", \"330\"], supportsNegative: true, modifiers: n }]), r.functional(\"-bg-conic\", w({ negative: true })), r.functional(\"bg-conic\", w({ negative: false })), i(\"bg-conic\", () => [{ hasDefaultValue: true, modifiers: n }, { values: [\"0\", \"30\", \"60\", \"90\", \"120\", \"150\", \"180\", \"210\", \"240\", \"270\", \"300\", \"330\"], supportsNegative: true, modifiers: n }]), r.functional(\"bg-radial\", C => { if (!C.value) { let P = h(C.modifier); return [l(\"--tw-gradient-position\", P), l(\"background-image\", \"radial-gradient(var(--tw-gradient-stops))\")] } if (C.value.kind === \"arbitrary\") { if (C.modifier) return; let P = C.value.value; return [l(\"--tw-gradient-position\", P), l(\"background-image\", `radial-gradient(var(--tw-gradient-stops,${P}))`)] } }), i(\"bg-radial\", () => [{ hasDefaultValue: true, modifiers: n }]); } r.functional(\"bg\", n => { if (n.value) { if (n.value.kind === \"arbitrary\") { let d = n.value.value; switch (n.value.dataType ?? Y(d, [\"image\", \"color\", \"percentage\", \"position\", \"bg-size\", \"length\", \"url\"])) { case \"percentage\": case \"position\": return n.modifier ? void 0 : [l(\"background-position\", d)]; case \"bg-size\": case \"length\": case \"size\": return n.modifier ? void 0 : [l(\"background-size\", d)]; case \"image\": case \"url\": return n.modifier ? void 0 : [l(\"background-image\", d)]; default: return d = Z(d, n.modifier, t), d === null ? void 0 : [l(\"background-color\", d)] } } { let d = te(n, t, [\"--background-color\", \"--color\"]); if (d) return [l(\"background-color\", d)] } { if (n.modifier) return; let d = t.resolve(n.value.value, [\"--background-image\"]); if (d) return [l(\"background-image\", d)] } } }), i(\"bg\", () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--background-color\", \"--color\"], modifiers: Array.from({ length: 21 }, (n, d) => `${d * 5}`) }, { values: [], valueThemeKeys: [\"--background-image\"] }]); let k = () => j([S(\"--tw-gradient-position\"), S(\"--tw-gradient-from\", \"#0000\", \"<color>\"), S(\"--tw-gradient-via\", \"#0000\", \"<color>\"), S(\"--tw-gradient-to\", \"#0000\", \"<color>\"), S(\"--tw-gradient-stops\"), S(\"--tw-gradient-via-stops\"), S(\"--tw-gradient-from-position\", \"0%\", \"<length-percentage>\"), S(\"--tw-gradient-via-position\", \"50%\", \"<length-percentage>\"), S(\"--tw-gradient-to-position\", \"100%\", \"<length-percentage>\")]); function x(n, d) { r.functional(n, h => { if (h.value) { if (h.value.kind === \"arbitrary\") { let A = h.value.value; switch (h.value.dataType ?? Y(A, [\"color\", \"length\", \"percentage\"])) { case \"length\": case \"percentage\": return h.modifier ? void 0 : d.position(A); default: return A = Z(A, h.modifier, t), A === null ? void 0 : d.color(A) } } { let A = te(h, t, [\"--background-color\", \"--color\"]); if (A) return d.color(A) } { if (h.modifier) return; let A = t.resolve(h.value.value, [\"--gradient-color-stop-positions\"]); if (A) return d.position(A); if (h.value.value[h.value.value.length - 1] === \"%\" && E(h.value.value.slice(0, -1))) return d.position(h.value.value) } } }), i(n, () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--background-color\", \"--color\"], modifiers: Array.from({ length: 21 }, (h, A) => `${A * 5}`) }, { values: Array.from({ length: 21 }, (h, A) => `${A * 5}%`), valueThemeKeys: [\"--gradient-color-stop-positions\"] }]); } x(\"from\", { color: n => [k(), l(\"--tw-sort\", \"--tw-gradient-from\"), l(\"--tw-gradient-from\", n), l(\"--tw-gradient-stops\", \"var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))\")], position: n => [k(), l(\"--tw-gradient-from-position\", n)] }), e(\"via-none\", [[\"--tw-gradient-via-stops\", \"initial\"]]), x(\"via\", { color: n => [k(), l(\"--tw-sort\", \"--tw-gradient-via\"), l(\"--tw-gradient-via\", n), l(\"--tw-gradient-via-stops\", \"var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position)\"), l(\"--tw-gradient-stops\", \"var(--tw-gradient-via-stops)\")], position: n => [k(), l(\"--tw-gradient-via-position\", n)] }), x(\"to\", { color: n => [k(), l(\"--tw-sort\", \"--tw-gradient-to\"), l(\"--tw-gradient-to\", n), l(\"--tw-gradient-stops\", \"var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))\")], position: n => [k(), l(\"--tw-gradient-to-position\", n)] }), e(\"mask-none\", [[\"mask-image\", \"none\"]]), r.functional(\"mask\", n => { if (!n.value || n.modifier || n.value.kind !== \"arbitrary\") return; let d = n.value.value; switch (n.value.dataType ?? Y(d, [\"image\", \"percentage\", \"position\", \"bg-size\", \"length\", \"url\"])) { case \"percentage\": case \"position\": return n.modifier ? void 0 : [l(\"mask-position\", d)]; case \"bg-size\": case \"length\": case \"size\": return [l(\"mask-size\", d)]; case \"image\": case \"url\": default: return [l(\"mask-image\", d)] } }), e(\"mask-add\", [[\"mask-composite\", \"add\"]]), e(\"mask-subtract\", [[\"mask-composite\", \"subtract\"]]), e(\"mask-intersect\", [[\"mask-composite\", \"intersect\"]]), e(\"mask-exclude\", [[\"mask-composite\", \"exclude\"]]), e(\"mask-alpha\", [[\"mask-mode\", \"alpha\"]]), e(\"mask-luminance\", [[\"mask-mode\", \"luminance\"]]), e(\"mask-match\", [[\"mask-mode\", \"match-source\"]]), e(\"mask-type-alpha\", [[\"mask-type\", \"alpha\"]]), e(\"mask-type-luminance\", [[\"mask-type\", \"luminance\"]]), e(\"mask-auto\", [[\"mask-size\", \"auto\"]]), e(\"mask-cover\", [[\"mask-size\", \"cover\"]]), e(\"mask-contain\", [[\"mask-size\", \"contain\"]]), o(\"mask-size\", { handle(n) { if (n) return [l(\"mask-size\", n)] } }), e(\"mask-top\", [[\"mask-position\", \"top\"]]), e(\"mask-top-left\", [[\"mask-position\", \"left top\"]]), e(\"mask-top-right\", [[\"mask-position\", \"right top\"]]), e(\"mask-bottom\", [[\"mask-position\", \"bottom\"]]), e(\"mask-bottom-left\", [[\"mask-position\", \"left bottom\"]]), e(\"mask-bottom-right\", [[\"mask-position\", \"right bottom\"]]), e(\"mask-left\", [[\"mask-position\", \"left\"]]), e(\"mask-right\", [[\"mask-position\", \"right\"]]), e(\"mask-center\", [[\"mask-position\", \"center\"]]), o(\"mask-position\", { handle(n) { if (n) return [l(\"mask-position\", n)] } }), e(\"mask-repeat\", [[\"mask-repeat\", \"repeat\"]]), e(\"mask-no-repeat\", [[\"mask-repeat\", \"no-repeat\"]]), e(\"mask-repeat-x\", [[\"mask-repeat\", \"repeat-x\"]]), e(\"mask-repeat-y\", [[\"mask-repeat\", \"repeat-y\"]]), e(\"mask-repeat-round\", [[\"mask-repeat\", \"round\"]]), e(\"mask-repeat-space\", [[\"mask-repeat\", \"space\"]]), e(\"mask-clip-border\", [[\"mask-clip\", \"border-box\"]]), e(\"mask-clip-padding\", [[\"mask-clip\", \"padding-box\"]]), e(\"mask-clip-content\", [[\"mask-clip\", \"content-box\"]]), e(\"mask-clip-fill\", [[\"mask-clip\", \"fill-box\"]]), e(\"mask-clip-stroke\", [[\"mask-clip\", \"stroke-box\"]]), e(\"mask-clip-view\", [[\"mask-clip\", \"view-box\"]]), e(\"mask-no-clip\", [[\"mask-clip\", \"no-clip\"]]), e(\"mask-origin-border\", [[\"mask-origin\", \"border-box\"]]), e(\"mask-origin-padding\", [[\"mask-origin\", \"padding-box\"]]), e(\"mask-origin-content\", [[\"mask-origin\", \"content-box\"]]), e(\"mask-origin-fill\", [[\"mask-origin\", \"fill-box\"]]), e(\"mask-origin-stroke\", [[\"mask-origin\", \"stroke-box\"]]), e(\"mask-origin-view\", [[\"mask-origin\", \"view-box\"]]); let y = () => j([S(\"--tw-mask-linear\", \"linear-gradient(#fff, #fff)\"), S(\"--tw-mask-radial\", \"linear-gradient(#fff, #fff)\"), S(\"--tw-mask-conic\", \"linear-gradient(#fff, #fff)\")]); function N(n, d) { r.functional(n, h => { if (h.value) { if (h.value.kind === \"arbitrary\") { let A = h.value.value; switch (h.value.dataType ?? Y(A, [\"length\", \"percentage\", \"color\"])) { case \"color\": return A = Z(A, h.modifier, t), A === null ? void 0 : d.color(A); case \"percentage\": return h.modifier || !E(A.slice(0, -1)) ? void 0 : d.position(A); default: return h.modifier ? void 0 : d.position(A) } } { let A = te(h, t, [\"--background-color\", \"--color\"]); if (A) return d.color(A) } { if (h.modifier) return; let A = Y(h.value.value, [\"number\", \"percentage\"]); if (!A) return; switch (A) { case \"number\": { let w = t.resolve(null, [\"--spacing\"]); return !w || !xe(h.value.value) ? void 0 : d.position(`calc(${w} * ${h.value.value})`) } case \"percentage\": return E(h.value.value.slice(0, -1)) ? d.position(h.value.value) : void 0; default: return } } } }), i(n, () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--background-color\", \"--color\"], modifiers: Array.from({ length: 21 }, (h, A) => `${A * 5}`) }, { values: Array.from({ length: 21 }, (h, A) => `${A * 5}%`), valueThemeKeys: [\"--gradient-color-stop-positions\"] }]), i(n, () => [{ values: Array.from({ length: 21 }, (h, A) => `${A * 5}%`) }, { values: t.get([\"--spacing\"]) ? at : [] }, { values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--background-color\", \"--color\"], modifiers: Array.from({ length: 21 }, (h, A) => `${A * 5}`) }]); } let b = () => j([S(\"--tw-mask-left\", \"linear-gradient(#fff, #fff)\"), S(\"--tw-mask-right\", \"linear-gradient(#fff, #fff)\"), S(\"--tw-mask-bottom\", \"linear-gradient(#fff, #fff)\"), S(\"--tw-mask-top\", \"linear-gradient(#fff, #fff)\")]); function V(n, d, h) { N(n, { color(A) { let w = [y(), b(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-linear\", \"var(--tw-mask-left), var(--tw-mask-right), var(--tw-mask-bottom), var(--tw-mask-top)\")]; for (let C of [\"top\", \"right\", \"bottom\", \"left\"]) h[C] && (w.push(l(`--tw-mask-${C}`, `linear-gradient(to ${C}, var(--tw-mask-${C}-from-color) var(--tw-mask-${C}-from-position), var(--tw-mask-${C}-to-color) var(--tw-mask-${C}-to-position))`)), w.push(j([S(`--tw-mask-${C}-from-position`, \"0%\"), S(`--tw-mask-${C}-to-position`, \"100%\"), S(`--tw-mask-${C}-from-color`, \"black\"), S(`--tw-mask-${C}-to-color`, \"transparent\")])), w.push(l(`--tw-mask-${C}-${d}-color`, A))); return w }, position(A) { let w = [y(), b(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-linear\", \"var(--tw-mask-left), var(--tw-mask-right), var(--tw-mask-bottom), var(--tw-mask-top)\")]; for (let C of [\"top\", \"right\", \"bottom\", \"left\"]) h[C] && (w.push(l(`--tw-mask-${C}`, `linear-gradient(to ${C}, var(--tw-mask-${C}-from-color) var(--tw-mask-${C}-from-position), var(--tw-mask-${C}-to-color) var(--tw-mask-${C}-to-position))`)), w.push(j([S(`--tw-mask-${C}-from-position`, \"0%\"), S(`--tw-mask-${C}-to-position`, \"100%\"), S(`--tw-mask-${C}-from-color`, \"black\"), S(`--tw-mask-${C}-to-color`, \"transparent\")])), w.push(l(`--tw-mask-${C}-${d}-position`, A))); return w } }); } V(\"mask-x-from\", \"from\", { top: false, right: true, bottom: false, left: true }), V(\"mask-x-to\", \"to\", { top: false, right: true, bottom: false, left: true }), V(\"mask-y-from\", \"from\", { top: true, right: false, bottom: true, left: false }), V(\"mask-y-to\", \"to\", { top: true, right: false, bottom: true, left: false }), V(\"mask-t-from\", \"from\", { top: true, right: false, bottom: false, left: false }), V(\"mask-t-to\", \"to\", { top: true, right: false, bottom: false, left: false }), V(\"mask-r-from\", \"from\", { top: false, right: true, bottom: false, left: false }), V(\"mask-r-to\", \"to\", { top: false, right: true, bottom: false, left: false }), V(\"mask-b-from\", \"from\", { top: false, right: false, bottom: true, left: false }), V(\"mask-b-to\", \"to\", { top: false, right: false, bottom: true, left: false }), V(\"mask-l-from\", \"from\", { top: false, right: false, bottom: false, left: true }), V(\"mask-l-to\", \"to\", { top: false, right: false, bottom: false, left: true }); let R = () => j([S(\"--tw-mask-linear-position\", \"0deg\"), S(\"--tw-mask-linear-from-position\", \"0%\"), S(\"--tw-mask-linear-to-position\", \"100%\"), S(\"--tw-mask-linear-from-color\", \"black\"), S(\"--tw-mask-linear-to-color\", \"transparent\")]); o(\"mask-linear\", { defaultValue: null, supportsNegative: true, supportsFractions: false, handleBareValue(n) { return E(n.value) ? `calc(1deg * ${n.value})` : null }, handleNegativeBareValue(n) { return E(n.value) ? `calc(1deg * -${n.value})` : null }, handle: n => [y(), R(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-linear\", \"linear-gradient(var(--tw-mask-linear-stops, var(--tw-mask-linear-position)))\"), l(\"--tw-mask-linear-position\", n)] }), i(\"mask-linear\", () => [{ supportsNegative: true, values: [\"0\", \"1\", \"2\", \"3\", \"6\", \"12\", \"45\", \"90\", \"180\"] }]), N(\"mask-linear-from\", { color: n => [y(), R(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-linear-stops\", \"var(--tw-mask-linear-position), var(--tw-mask-linear-from-color) var(--tw-mask-linear-from-position), var(--tw-mask-linear-to-color) var(--tw-mask-linear-to-position)\"), l(\"--tw-mask-linear\", \"linear-gradient(var(--tw-mask-linear-stops))\"), l(\"--tw-mask-linear-from-color\", n)], position: n => [y(), R(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-linear-stops\", \"var(--tw-mask-linear-position), var(--tw-mask-linear-from-color) var(--tw-mask-linear-from-position), var(--tw-mask-linear-to-color) var(--tw-mask-linear-to-position)\"), l(\"--tw-mask-linear\", \"linear-gradient(var(--tw-mask-linear-stops))\"), l(\"--tw-mask-linear-from-position\", n)] }), N(\"mask-linear-to\", { color: n => [y(), R(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-linear-stops\", \"var(--tw-mask-linear-position), var(--tw-mask-linear-from-color) var(--tw-mask-linear-from-position), var(--tw-mask-linear-to-color) var(--tw-mask-linear-to-position)\"), l(\"--tw-mask-linear\", \"linear-gradient(var(--tw-mask-linear-stops))\"), l(\"--tw-mask-linear-to-color\", n)], position: n => [y(), R(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-linear-stops\", \"var(--tw-mask-linear-position), var(--tw-mask-linear-from-color) var(--tw-mask-linear-from-position), var(--tw-mask-linear-to-color) var(--tw-mask-linear-to-position)\"), l(\"--tw-mask-linear\", \"linear-gradient(var(--tw-mask-linear-stops))\"), l(\"--tw-mask-linear-to-position\", n)] }); let D = () => j([S(\"--tw-mask-radial-from-position\", \"0%\"), S(\"--tw-mask-radial-to-position\", \"100%\"), S(\"--tw-mask-radial-from-color\", \"black\"), S(\"--tw-mask-radial-to-color\", \"transparent\"), S(\"--tw-mask-radial-shape\", \"ellipse\"), S(\"--tw-mask-radial-size\", \"farthest-corner\"), S(\"--tw-mask-radial-position\", \"center\")]); e(\"mask-circle\", [[\"--tw-mask-radial-shape\", \"circle\"]]), e(\"mask-ellipse\", [[\"--tw-mask-radial-shape\", \"ellipse\"]]), e(\"mask-radial-closest-side\", [[\"--tw-mask-radial-size\", \"closest-side\"]]), e(\"mask-radial-farthest-side\", [[\"--tw-mask-radial-size\", \"farthest-side\"]]), e(\"mask-radial-closest-corner\", [[\"--tw-mask-radial-size\", \"closest-corner\"]]), e(\"mask-radial-farthest-corner\", [[\"--tw-mask-radial-size\", \"farthest-corner\"]]), e(\"mask-radial-at-top\", [[\"--tw-mask-radial-position\", \"top\"]]), e(\"mask-radial-at-top-left\", [[\"--tw-mask-radial-position\", \"top left\"]]), e(\"mask-radial-at-top-right\", [[\"--tw-mask-radial-position\", \"top right\"]]), e(\"mask-radial-at-bottom\", [[\"--tw-mask-radial-position\", \"bottom\"]]), e(\"mask-radial-at-bottom-left\", [[\"--tw-mask-radial-position\", \"bottom left\"]]), e(\"mask-radial-at-bottom-right\", [[\"--tw-mask-radial-position\", \"bottom right\"]]), e(\"mask-radial-at-left\", [[\"--tw-mask-radial-position\", \"left\"]]), e(\"mask-radial-at-right\", [[\"--tw-mask-radial-position\", \"right\"]]), e(\"mask-radial-at-center\", [[\"--tw-mask-radial-position\", \"center\"]]), o(\"mask-radial-at\", { defaultValue: null, supportsNegative: false, supportsFractions: false, handle: n => [l(\"--tw-mask-radial-position\", n)] }), o(\"mask-radial\", { defaultValue: null, supportsNegative: false, supportsFractions: false, handle: n => [y(), D(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-radial\", \"radial-gradient(var(--tw-mask-radial-stops, var(--tw-mask-radial-size)))\"), l(\"--tw-mask-radial-size\", n)] }), N(\"mask-radial-from\", { color: n => [y(), D(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-radial-stops\", \"var(--tw-mask-radial-shape) var(--tw-mask-radial-size) at var(--tw-mask-radial-position), var(--tw-mask-radial-from-color) var(--tw-mask-radial-from-position), var(--tw-mask-radial-to-color) var(--tw-mask-radial-to-position)\"), l(\"--tw-mask-radial\", \"radial-gradient(var(--tw-mask-radial-stops))\"), l(\"--tw-mask-radial-from-color\", n)], position: n => [y(), D(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-radial-stops\", \"var(--tw-mask-radial-shape) var(--tw-mask-radial-size) at var(--tw-mask-radial-position), var(--tw-mask-radial-from-color) var(--tw-mask-radial-from-position), var(--tw-mask-radial-to-color) var(--tw-mask-radial-to-position)\"), l(\"--tw-mask-radial\", \"radial-gradient(var(--tw-mask-radial-stops))\"), l(\"--tw-mask-radial-from-position\", n)] }), N(\"mask-radial-to\", { color: n => [y(), D(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-radial-stops\", \"var(--tw-mask-radial-shape) var(--tw-mask-radial-size) at var(--tw-mask-radial-position), var(--tw-mask-radial-from-color) var(--tw-mask-radial-from-position), var(--tw-mask-radial-to-color) var(--tw-mask-radial-to-position)\"), l(\"--tw-mask-radial\", \"radial-gradient(var(--tw-mask-radial-stops))\"), l(\"--tw-mask-radial-to-color\", n)], position: n => [y(), D(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-radial-stops\", \"var(--tw-mask-radial-shape) var(--tw-mask-radial-size) at var(--tw-mask-radial-position), var(--tw-mask-radial-from-color) var(--tw-mask-radial-from-position), var(--tw-mask-radial-to-color) var(--tw-mask-radial-to-position)\"), l(\"--tw-mask-radial\", \"radial-gradient(var(--tw-mask-radial-stops))\"), l(\"--tw-mask-radial-to-position\", n)] }); let _ = () => j([S(\"--tw-mask-conic-position\", \"0deg\"), S(\"--tw-mask-conic-from-position\", \"0%\"), S(\"--tw-mask-conic-to-position\", \"100%\"), S(\"--tw-mask-conic-from-color\", \"black\"), S(\"--tw-mask-conic-to-color\", \"transparent\")]); o(\"mask-conic\", { defaultValue: null, supportsNegative: true, supportsFractions: false, handleBareValue(n) { return E(n.value) ? `calc(1deg * ${n.value})` : null }, handleNegativeBareValue(n) { return E(n.value) ? `calc(1deg * -${n.value})` : null }, handle: n => [y(), _(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-conic\", \"conic-gradient(var(--tw-mask-conic-stops, var(--tw-mask-conic-position)))\"), l(\"--tw-mask-conic-position\", n)] }), i(\"mask-conic\", () => [{ supportsNegative: true, values: [\"0\", \"1\", \"2\", \"3\", \"6\", \"12\", \"45\", \"90\", \"180\"] }]), N(\"mask-conic-from\", { color: n => [y(), _(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-conic-stops\", \"from var(--tw-mask-conic-position), var(--tw-mask-conic-from-color) var(--tw-mask-conic-from-position), var(--tw-mask-conic-to-color) var(--tw-mask-conic-to-position)\"), l(\"--tw-mask-conic\", \"conic-gradient(var(--tw-mask-conic-stops))\"), l(\"--tw-mask-conic-from-color\", n)], position: n => [y(), _(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-conic-stops\", \"from var(--tw-mask-conic-position), var(--tw-mask-conic-from-color) var(--tw-mask-conic-from-position), var(--tw-mask-conic-to-color) var(--tw-mask-conic-to-position)\"), l(\"--tw-mask-conic\", \"conic-gradient(var(--tw-mask-conic-stops))\"), l(\"--tw-mask-conic-from-position\", n)] }), N(\"mask-conic-to\", { color: n => [y(), _(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-conic-stops\", \"from var(--tw-mask-conic-position), var(--tw-mask-conic-from-color) var(--tw-mask-conic-from-position), var(--tw-mask-conic-to-color) var(--tw-mask-conic-to-position)\"), l(\"--tw-mask-conic\", \"conic-gradient(var(--tw-mask-conic-stops))\"), l(\"--tw-mask-conic-to-color\", n)], position: n => [y(), _(), l(\"mask-image\", \"var(--tw-mask-linear), var(--tw-mask-radial), var(--tw-mask-conic)\"), l(\"mask-composite\", \"intersect\"), l(\"--tw-mask-conic-stops\", \"from var(--tw-mask-conic-position), var(--tw-mask-conic-from-color) var(--tw-mask-conic-from-position), var(--tw-mask-conic-to-color) var(--tw-mask-conic-to-position)\"), l(\"--tw-mask-conic\", \"conic-gradient(var(--tw-mask-conic-stops))\"), l(\"--tw-mask-conic-to-position\", n)] }), e(\"box-decoration-slice\", [[\"-webkit-box-decoration-break\", \"slice\"], [\"box-decoration-break\", \"slice\"]]), e(\"box-decoration-clone\", [[\"-webkit-box-decoration-break\", \"clone\"], [\"box-decoration-break\", \"clone\"]]), e(\"bg-clip-text\", [[\"background-clip\", \"text\"]]), e(\"bg-clip-border\", [[\"background-clip\", \"border-box\"]]), e(\"bg-clip-padding\", [[\"background-clip\", \"padding-box\"]]), e(\"bg-clip-content\", [[\"background-clip\", \"content-box\"]]), e(\"bg-origin-border\", [[\"background-origin\", \"border-box\"]]), e(\"bg-origin-padding\", [[\"background-origin\", \"padding-box\"]]), e(\"bg-origin-content\", [[\"background-origin\", \"content-box\"]]); for (let n of [\"normal\", \"multiply\", \"screen\", \"overlay\", \"darken\", \"lighten\", \"color-dodge\", \"color-burn\", \"hard-light\", \"soft-light\", \"difference\", \"exclusion\", \"hue\", \"saturation\", \"color\", \"luminosity\"]) e(`bg-blend-${n}`, [[\"background-blend-mode\", n]]), e(`mix-blend-${n}`, [[\"mix-blend-mode\", n]]); e(\"mix-blend-plus-darker\", [[\"mix-blend-mode\", \"plus-darker\"]]), e(\"mix-blend-plus-lighter\", [[\"mix-blend-mode\", \"plus-lighter\"]]), e(\"fill-none\", [[\"fill\", \"none\"]]), r.functional(\"fill\", n => { if (!n.value) return; if (n.value.kind === \"arbitrary\") { let h = Z(n.value.value, n.modifier, t); return h === null ? void 0 : [l(\"fill\", h)] } let d = te(n, t, [\"--fill\", \"--color\"]); if (d) return [l(\"fill\", d)] }), i(\"fill\", () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--fill\", \"--color\"], modifiers: Array.from({ length: 21 }, (n, d) => `${d * 5}`) }]), e(\"stroke-none\", [[\"stroke\", \"none\"]]), r.functional(\"stroke\", n => { if (n.value) { if (n.value.kind === \"arbitrary\") { let d = n.value.value; switch (n.value.dataType ?? Y(d, [\"color\", \"number\", \"length\", \"percentage\"])) { case \"number\": case \"length\": case \"percentage\": return n.modifier ? void 0 : [l(\"stroke-width\", d)]; default: return d = Z(n.value.value, n.modifier, t), d === null ? void 0 : [l(\"stroke\", d)] } } { let d = te(n, t, [\"--stroke\", \"--color\"]); if (d) return [l(\"stroke\", d)] } { let d = t.resolve(n.value.value, [\"--stroke-width\"]); if (d) return [l(\"stroke-width\", d)]; if (E(n.value.value)) return [l(\"stroke-width\", n.value.value)] } } }), i(\"stroke\", () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--stroke\", \"--color\"], modifiers: Array.from({ length: 21 }, (n, d) => `${d * 5}`) }, { values: [\"0\", \"1\", \"2\", \"3\"], valueThemeKeys: [\"--stroke-width\"] }]), e(\"object-contain\", [[\"object-fit\", \"contain\"]]), e(\"object-cover\", [[\"object-fit\", \"cover\"]]), e(\"object-fill\", [[\"object-fit\", \"fill\"]]), e(\"object-none\", [[\"object-fit\", \"none\"]]), e(\"object-scale-down\", [[\"object-fit\", \"scale-down\"]]), e(\"object-top\", [[\"object-position\", \"top\"]]), e(\"object-top-left\", [[\"object-position\", \"left top\"]]), e(\"object-top-right\", [[\"object-position\", \"right top\"]]), e(\"object-bottom\", [[\"object-position\", \"bottom\"]]), e(\"object-bottom-left\", [[\"object-position\", \"left bottom\"]]), e(\"object-bottom-right\", [[\"object-position\", \"right bottom\"]]), e(\"object-left\", [[\"object-position\", \"left\"]]), e(\"object-right\", [[\"object-position\", \"right\"]]), e(\"object-center\", [[\"object-position\", \"center\"]]), o(\"object\", { themeKeys: [\"--object-position\"], handle: n => [l(\"object-position\", n)] }); for (let [n, d] of [[\"p\", \"padding\"], [\"px\", \"padding-inline\"], [\"py\", \"padding-block\"], [\"ps\", \"padding-inline-start\"], [\"pe\", \"padding-inline-end\"], [\"pt\", \"padding-top\"], [\"pr\", \"padding-right\"], [\"pb\", \"padding-bottom\"], [\"pl\", \"padding-left\"]]) a(n, [\"--padding\", \"--spacing\"], h => [l(d, h)]); e(\"text-left\", [[\"text-align\", \"left\"]]), e(\"text-center\", [[\"text-align\", \"center\"]]), e(\"text-right\", [[\"text-align\", \"right\"]]), e(\"text-justify\", [[\"text-align\", \"justify\"]]), e(\"text-start\", [[\"text-align\", \"start\"]]), e(\"text-end\", [[\"text-align\", \"end\"]]), a(\"indent\", [\"--text-indent\", \"--spacing\"], n => [l(\"text-indent\", n)], { supportsNegative: true }), e(\"align-baseline\", [[\"vertical-align\", \"baseline\"]]), e(\"align-top\", [[\"vertical-align\", \"top\"]]), e(\"align-middle\", [[\"vertical-align\", \"middle\"]]), e(\"align-bottom\", [[\"vertical-align\", \"bottom\"]]), e(\"align-text-top\", [[\"vertical-align\", \"text-top\"]]), e(\"align-text-bottom\", [[\"vertical-align\", \"text-bottom\"]]), e(\"align-sub\", [[\"vertical-align\", \"sub\"]]), e(\"align-super\", [[\"vertical-align\", \"super\"]]), o(\"align\", { themeKeys: [], handle: n => [l(\"vertical-align\", n)] }), r.functional(\"font\", n => { if (!(!n.value || n.modifier)) { if (n.value.kind === \"arbitrary\") { let d = n.value.value; switch (n.value.dataType ?? Y(d, [\"number\", \"generic-name\", \"family-name\"])) { case \"generic-name\": case \"family-name\": return [l(\"font-family\", d)]; default: return [j([S(\"--tw-font-weight\")]), l(\"--tw-font-weight\", d), l(\"font-weight\", d)] } } { let d = t.resolveWith(n.value.value, [\"--font\"], [\"--font-feature-settings\", \"--font-variation-settings\"]); if (d) { let [h, A = {}] = d; return [l(\"font-family\", h), l(\"font-feature-settings\", A[\"--font-feature-settings\"]), l(\"font-variation-settings\", A[\"--font-variation-settings\"])] } } { let d = t.resolve(n.value.value, [\"--font-weight\"]); if (d) return [j([S(\"--tw-font-weight\")]), l(\"--tw-font-weight\", d), l(\"font-weight\", d)] } } }), i(\"font\", () => [{ values: [], valueThemeKeys: [\"--font\"] }, { values: [], valueThemeKeys: [\"--font-weight\"] }]), e(\"uppercase\", [[\"text-transform\", \"uppercase\"]]), e(\"lowercase\", [[\"text-transform\", \"lowercase\"]]), e(\"capitalize\", [[\"text-transform\", \"capitalize\"]]), e(\"normal-case\", [[\"text-transform\", \"none\"]]), e(\"italic\", [[\"font-style\", \"italic\"]]), e(\"not-italic\", [[\"font-style\", \"normal\"]]), e(\"underline\", [[\"text-decoration-line\", \"underline\"]]), e(\"overline\", [[\"text-decoration-line\", \"overline\"]]), e(\"line-through\", [[\"text-decoration-line\", \"line-through\"]]), e(\"no-underline\", [[\"text-decoration-line\", \"none\"]]), e(\"font-stretch-normal\", [[\"font-stretch\", \"normal\"]]), e(\"font-stretch-ultra-condensed\", [[\"font-stretch\", \"ultra-condensed\"]]), e(\"font-stretch-extra-condensed\", [[\"font-stretch\", \"extra-condensed\"]]), e(\"font-stretch-condensed\", [[\"font-stretch\", \"condensed\"]]), e(\"font-stretch-semi-condensed\", [[\"font-stretch\", \"semi-condensed\"]]), e(\"font-stretch-semi-expanded\", [[\"font-stretch\", \"semi-expanded\"]]), e(\"font-stretch-expanded\", [[\"font-stretch\", \"expanded\"]]), e(\"font-stretch-extra-expanded\", [[\"font-stretch\", \"extra-expanded\"]]), e(\"font-stretch-ultra-expanded\", [[\"font-stretch\", \"ultra-expanded\"]]), o(\"font-stretch\", { handleBareValue: ({ value: n }) => { if (!n.endsWith(\"%\")) return null; let d = Number(n.slice(0, -1)); return !E(d) || Number.isNaN(d) || d < 50 || d > 200 ? null : n }, handle: n => [l(\"font-stretch\", n)] }), i(\"font-stretch\", () => [{ values: [\"50%\", \"75%\", \"90%\", \"95%\", \"100%\", \"105%\", \"110%\", \"125%\", \"150%\", \"200%\"] }]), s(\"placeholder\", { themeKeys: [\"--background-color\", \"--color\"], handle: n => [M(\"&::placeholder\", [l(\"--tw-sort\", \"placeholder-color\"), l(\"color\", n)])] }), e(\"decoration-solid\", [[\"text-decoration-style\", \"solid\"]]), e(\"decoration-double\", [[\"text-decoration-style\", \"double\"]]), e(\"decoration-dotted\", [[\"text-decoration-style\", \"dotted\"]]), e(\"decoration-dashed\", [[\"text-decoration-style\", \"dashed\"]]), e(\"decoration-wavy\", [[\"text-decoration-style\", \"wavy\"]]), e(\"decoration-auto\", [[\"text-decoration-thickness\", \"auto\"]]), e(\"decoration-from-font\", [[\"text-decoration-thickness\", \"from-font\"]]), r.functional(\"decoration\", n => { if (n.value) { if (n.value.kind === \"arbitrary\") { let d = n.value.value; switch (n.value.dataType ?? Y(d, [\"color\", \"length\", \"percentage\"])) { case \"length\": case \"percentage\": return n.modifier ? void 0 : [l(\"text-decoration-thickness\", d)]; default: return d = Z(d, n.modifier, t), d === null ? void 0 : [l(\"text-decoration-color\", d)] } } { let d = t.resolve(n.value.value, [\"--text-decoration-thickness\"]); if (d) return n.modifier ? void 0 : [l(\"text-decoration-thickness\", d)]; if (E(n.value.value)) return n.modifier ? void 0 : [l(\"text-decoration-thickness\", `${n.value.value}px`)] } { let d = te(n, t, [\"--text-decoration-color\", \"--color\"]); if (d) return [l(\"text-decoration-color\", d)] } } }), i(\"decoration\", () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--text-decoration-color\", \"--color\"], modifiers: Array.from({ length: 21 }, (n, d) => `${d * 5}`) }, { values: [\"0\", \"1\", \"2\"], valueThemeKeys: [\"--text-decoration-thickness\"] }]), e(\"animate-none\", [[\"animation\", \"none\"]]), o(\"animate\", { themeKeys: [\"--animate\"], handle: n => [l(\"animation\", n)] }); { let n = [\"var(--tw-blur,)\", \"var(--tw-brightness,)\", \"var(--tw-contrast,)\", \"var(--tw-grayscale,)\", \"var(--tw-hue-rotate,)\", \"var(--tw-invert,)\", \"var(--tw-saturate,)\", \"var(--tw-sepia,)\", \"var(--tw-drop-shadow,)\"].join(\" \"), d = [\"var(--tw-backdrop-blur,)\", \"var(--tw-backdrop-brightness,)\", \"var(--tw-backdrop-contrast,)\", \"var(--tw-backdrop-grayscale,)\", \"var(--tw-backdrop-hue-rotate,)\", \"var(--tw-backdrop-invert,)\", \"var(--tw-backdrop-opacity,)\", \"var(--tw-backdrop-saturate,)\", \"var(--tw-backdrop-sepia,)\"].join(\" \"), h = () => j([S(\"--tw-blur\"), S(\"--tw-brightness\"), S(\"--tw-contrast\"), S(\"--tw-grayscale\"), S(\"--tw-hue-rotate\"), S(\"--tw-invert\"), S(\"--tw-opacity\"), S(\"--tw-saturate\"), S(\"--tw-sepia\"), S(\"--tw-drop-shadow\"), S(\"--tw-drop-shadow-color\"), S(\"--tw-drop-shadow-alpha\", \"100%\", \"<percentage>\"), S(\"--tw-drop-shadow-size\")]), A = () => j([S(\"--tw-backdrop-blur\"), S(\"--tw-backdrop-brightness\"), S(\"--tw-backdrop-contrast\"), S(\"--tw-backdrop-grayscale\"), S(\"--tw-backdrop-hue-rotate\"), S(\"--tw-backdrop-invert\"), S(\"--tw-backdrop-opacity\"), S(\"--tw-backdrop-saturate\"), S(\"--tw-backdrop-sepia\")]); r.functional(\"filter\", w => { if (!w.modifier) { if (w.value === null) return [h(), l(\"filter\", n)]; if (w.value.kind === \"arbitrary\") return [l(\"filter\", w.value.value)]; switch (w.value.value) { case \"none\": return [l(\"filter\", \"none\")] } } }), r.functional(\"backdrop-filter\", w => { if (!w.modifier) { if (w.value === null) return [A(), l(\"-webkit-backdrop-filter\", d), l(\"backdrop-filter\", d)]; if (w.value.kind === \"arbitrary\") return [l(\"-webkit-backdrop-filter\", w.value.value), l(\"backdrop-filter\", w.value.value)]; switch (w.value.value) { case \"none\": return [l(\"-webkit-backdrop-filter\", \"none\"), l(\"backdrop-filter\", \"none\")] } } }), o(\"blur\", { themeKeys: [\"--blur\"], handle: w => [h(), l(\"--tw-blur\", `blur(${w})`), l(\"filter\", n)] }), e(\"blur-none\", [h, [\"--tw-blur\", \" \"], [\"filter\", n]]), o(\"backdrop-blur\", { themeKeys: [\"--backdrop-blur\", \"--blur\"], handle: w => [A(), l(\"--tw-backdrop-blur\", `blur(${w})`), l(\"-webkit-backdrop-filter\", d), l(\"backdrop-filter\", d)] }), e(\"backdrop-blur-none\", [A, [\"--tw-backdrop-blur\", \" \"], [\"-webkit-backdrop-filter\", d], [\"backdrop-filter\", d]]), o(\"brightness\", { themeKeys: [\"--brightness\"], handleBareValue: ({ value: w }) => E(w) ? `${w}%` : null, handle: w => [h(), l(\"--tw-brightness\", `brightness(${w})`), l(\"filter\", n)] }), o(\"backdrop-brightness\", { themeKeys: [\"--backdrop-brightness\", \"--brightness\"], handleBareValue: ({ value: w }) => E(w) ? `${w}%` : null, handle: w => [A(), l(\"--tw-backdrop-brightness\", `brightness(${w})`), l(\"-webkit-backdrop-filter\", d), l(\"backdrop-filter\", d)] }), i(\"brightness\", () => [{ values: [\"0\", \"50\", \"75\", \"90\", \"95\", \"100\", \"105\", \"110\", \"125\", \"150\", \"200\"], valueThemeKeys: [\"--brightness\"] }]), i(\"backdrop-brightness\", () => [{ values: [\"0\", \"50\", \"75\", \"90\", \"95\", \"100\", \"105\", \"110\", \"125\", \"150\", \"200\"], valueThemeKeys: [\"--backdrop-brightness\", \"--brightness\"] }]), o(\"contrast\", { themeKeys: [\"--contrast\"], handleBareValue: ({ value: w }) => E(w) ? `${w}%` : null, handle: w => [h(), l(\"--tw-contrast\", `contrast(${w})`), l(\"filter\", n)] }), o(\"backdrop-contrast\", { themeKeys: [\"--backdrop-contrast\", \"--contrast\"], handleBareValue: ({ value: w }) => E(w) ? `${w}%` : null, handle: w => [A(), l(\"--tw-backdrop-contrast\", `contrast(${w})`), l(\"-webkit-backdrop-filter\", d), l(\"backdrop-filter\", d)] }), i(\"contrast\", () => [{ values: [\"0\", \"50\", \"75\", \"100\", \"125\", \"150\", \"200\"], valueThemeKeys: [\"--contrast\"] }]), i(\"backdrop-contrast\", () => [{ values: [\"0\", \"50\", \"75\", \"100\", \"125\", \"150\", \"200\"], valueThemeKeys: [\"--backdrop-contrast\", \"--contrast\"] }]), o(\"grayscale\", { themeKeys: [\"--grayscale\"], handleBareValue: ({ value: w }) => E(w) ? `${w}%` : null, defaultValue: \"100%\", handle: w => [h(), l(\"--tw-grayscale\", `grayscale(${w})`), l(\"filter\", n)] }), o(\"backdrop-grayscale\", { themeKeys: [\"--backdrop-grayscale\", \"--grayscale\"], handleBareValue: ({ value: w }) => E(w) ? `${w}%` : null, defaultValue: \"100%\", handle: w => [A(), l(\"--tw-backdrop-grayscale\", `grayscale(${w})`), l(\"-webkit-backdrop-filter\", d), l(\"backdrop-filter\", d)] }), i(\"grayscale\", () => [{ values: [\"0\", \"25\", \"50\", \"75\", \"100\"], valueThemeKeys: [\"--grayscale\"], hasDefaultValue: true }]), i(\"backdrop-grayscale\", () => [{ values: [\"0\", \"25\", \"50\", \"75\", \"100\"], valueThemeKeys: [\"--backdrop-grayscale\", \"--grayscale\"], hasDefaultValue: true }]), o(\"hue-rotate\", { supportsNegative: true, themeKeys: [\"--hue-rotate\"], handleBareValue: ({ value: w }) => E(w) ? `${w}deg` : null, handle: w => [h(), l(\"--tw-hue-rotate\", `hue-rotate(${w})`), l(\"filter\", n)] }), o(\"backdrop-hue-rotate\", { supportsNegative: true, themeKeys: [\"--backdrop-hue-rotate\", \"--hue-rotate\"], handleBareValue: ({ value: w }) => E(w) ? `${w}deg` : null, handle: w => [A(), l(\"--tw-backdrop-hue-rotate\", `hue-rotate(${w})`), l(\"-webkit-backdrop-filter\", d), l(\"backdrop-filter\", d)] }), i(\"hue-rotate\", () => [{ values: [\"0\", \"15\", \"30\", \"60\", \"90\", \"180\"], valueThemeKeys: [\"--hue-rotate\"] }]), i(\"backdrop-hue-rotate\", () => [{ values: [\"0\", \"15\", \"30\", \"60\", \"90\", \"180\"], valueThemeKeys: [\"--backdrop-hue-rotate\", \"--hue-rotate\"] }]), o(\"invert\", { themeKeys: [\"--invert\"], handleBareValue: ({ value: w }) => E(w) ? `${w}%` : null, defaultValue: \"100%\", handle: w => [h(), l(\"--tw-invert\", `invert(${w})`), l(\"filter\", n)] }), o(\"backdrop-invert\", { themeKeys: [\"--backdrop-invert\", \"--invert\"], handleBareValue: ({ value: w }) => E(w) ? `${w}%` : null, defaultValue: \"100%\", handle: w => [A(), l(\"--tw-backdrop-invert\", `invert(${w})`), l(\"-webkit-backdrop-filter\", d), l(\"backdrop-filter\", d)] }), i(\"invert\", () => [{ values: [\"0\", \"25\", \"50\", \"75\", \"100\"], valueThemeKeys: [\"--invert\"], hasDefaultValue: true }]), i(\"backdrop-invert\", () => [{ values: [\"0\", \"25\", \"50\", \"75\", \"100\"], valueThemeKeys: [\"--backdrop-invert\", \"--invert\"], hasDefaultValue: true }]), o(\"saturate\", { themeKeys: [\"--saturate\"], handleBareValue: ({ value: w }) => E(w) ? `${w}%` : null, handle: w => [h(), l(\"--tw-saturate\", `saturate(${w})`), l(\"filter\", n)] }), o(\"backdrop-saturate\", { themeKeys: [\"--backdrop-saturate\", \"--saturate\"], handleBareValue: ({ value: w }) => E(w) ? `${w}%` : null, handle: w => [A(), l(\"--tw-backdrop-saturate\", `saturate(${w})`), l(\"-webkit-backdrop-filter\", d), l(\"backdrop-filter\", d)] }), i(\"saturate\", () => [{ values: [\"0\", \"50\", \"100\", \"150\", \"200\"], valueThemeKeys: [\"--saturate\"] }]), i(\"backdrop-saturate\", () => [{ values: [\"0\", \"50\", \"100\", \"150\", \"200\"], valueThemeKeys: [\"--backdrop-saturate\", \"--saturate\"] }]), o(\"sepia\", { themeKeys: [\"--sepia\"], handleBareValue: ({ value: w }) => E(w) ? `${w}%` : null, defaultValue: \"100%\", handle: w => [h(), l(\"--tw-sepia\", `sepia(${w})`), l(\"filter\", n)] }), o(\"backdrop-sepia\", { themeKeys: [\"--backdrop-sepia\", \"--sepia\"], handleBareValue: ({ value: w }) => E(w) ? `${w}%` : null, defaultValue: \"100%\", handle: w => [A(), l(\"--tw-backdrop-sepia\", `sepia(${w})`), l(\"-webkit-backdrop-filter\", d), l(\"backdrop-filter\", d)] }), i(\"sepia\", () => [{ values: [\"0\", \"50\", \"100\"], valueThemeKeys: [\"--sepia\"], hasDefaultValue: true }]), i(\"backdrop-sepia\", () => [{ values: [\"0\", \"50\", \"100\"], valueThemeKeys: [\"--backdrop-sepia\", \"--sepia\"], hasDefaultValue: true }]), e(\"drop-shadow-none\", [h, [\"--tw-drop-shadow\", \" \"], [\"filter\", n]]), r.functional(\"drop-shadow\", w => { let C; if (w.modifier && (w.modifier.kind === \"arbitrary\" ? C = w.modifier.value : E(w.modifier.value) && (C = `${w.modifier.value}%`)), !w.value) { let P = t.get([\"--drop-shadow\"]), $ = t.resolve(null, [\"--drop-shadow\"]); return P === null || $ === null ? void 0 : [h(), l(\"--tw-drop-shadow-alpha\", C), ...lt(\"--tw-drop-shadow-size\", P, C, T => `var(--tw-drop-shadow-color, ${T})`), l(\"--tw-drop-shadow\", z($, \",\").map(T => `drop-shadow(${T})`).join(\" \")), l(\"filter\", n)] } if (w.value.kind === \"arbitrary\") { let P = w.value.value; switch (w.value.dataType ?? Y(P, [\"color\"])) { case \"color\": return P = Z(P, w.modifier, t), P === null ? void 0 : [h(), l(\"--tw-drop-shadow-color\", Q(P, \"var(--tw-drop-shadow-alpha)\")), l(\"--tw-drop-shadow\", \"var(--tw-drop-shadow-size)\")]; default: return w.modifier && !C ? void 0 : [h(), l(\"--tw-drop-shadow-alpha\", C), ...lt(\"--tw-drop-shadow-size\", P, C, T => `var(--tw-drop-shadow-color, ${T})`), l(\"--tw-drop-shadow\", \"var(--tw-drop-shadow-size)\"), l(\"filter\", n)] } } { let P = t.get([`--drop-shadow-${w.value.value}`]), $ = t.resolve(w.value.value, [\"--drop-shadow\"]); if (P && $) return w.modifier && !C ? void 0 : C ? [h(), l(\"--tw-drop-shadow-alpha\", C), ...lt(\"--tw-drop-shadow-size\", P, C, T => `var(--tw-drop-shadow-color, ${T})`), l(\"--tw-drop-shadow\", \"var(--tw-drop-shadow-size)\"), l(\"filter\", n)] : [h(), l(\"--tw-drop-shadow-alpha\", C), ...lt(\"--tw-drop-shadow-size\", P, C, T => `var(--tw-drop-shadow-color, ${T})`), l(\"--tw-drop-shadow\", z($, \",\").map(T => `drop-shadow(${T})`).join(\" \")), l(\"filter\", n)] } { let P = te(w, t, [\"--drop-shadow-color\", \"--color\"]); if (P) return P === \"inherit\" ? [h(), l(\"--tw-drop-shadow-color\", \"inherit\"), l(\"--tw-drop-shadow\", \"var(--tw-drop-shadow-size)\")] : [h(), l(\"--tw-drop-shadow-color\", Q(P, \"var(--tw-drop-shadow-alpha)\")), l(\"--tw-drop-shadow\", \"var(--tw-drop-shadow-size)\")] } }), i(\"drop-shadow\", () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--drop-shadow-color\", \"--color\"], modifiers: Array.from({ length: 21 }, (w, C) => `${C * 5}`) }, { valueThemeKeys: [\"--drop-shadow\"] }]), o(\"backdrop-opacity\", { themeKeys: [\"--backdrop-opacity\", \"--opacity\"], handleBareValue: ({ value: w }) => nt(w) ? `${w}%` : null, handle: w => [A(), l(\"--tw-backdrop-opacity\", `opacity(${w})`), l(\"-webkit-backdrop-filter\", d), l(\"backdrop-filter\", d)] }), i(\"backdrop-opacity\", () => [{ values: Array.from({ length: 21 }, (w, C) => `${C * 5}`), valueThemeKeys: [\"--backdrop-opacity\", \"--opacity\"] }]); } { let n = `var(--tw-ease, ${t.resolve(null, [\"--default-transition-timing-function\"]) ?? \"ease\"})`, d = `var(--tw-duration, ${t.resolve(null, [\"--default-transition-duration\"]) ?? \"0s\"})`; e(\"transition-none\", [[\"transition-property\", \"none\"]]), e(\"transition-all\", [[\"transition-property\", \"all\"], [\"transition-timing-function\", n], [\"transition-duration\", d]]), e(\"transition-colors\", [[\"transition-property\", \"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to\"], [\"transition-timing-function\", n], [\"transition-duration\", d]]), e(\"transition-opacity\", [[\"transition-property\", \"opacity\"], [\"transition-timing-function\", n], [\"transition-duration\", d]]), e(\"transition-shadow\", [[\"transition-property\", \"box-shadow\"], [\"transition-timing-function\", n], [\"transition-duration\", d]]), e(\"transition-transform\", [[\"transition-property\", \"transform, translate, scale, rotate\"], [\"transition-timing-function\", n], [\"transition-duration\", d]]), o(\"transition\", { defaultValue: \"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events\", themeKeys: [\"--transition-property\"], handle: h => [l(\"transition-property\", h), l(\"transition-timing-function\", n), l(\"transition-duration\", d)] }), e(\"transition-discrete\", [[\"transition-behavior\", \"allow-discrete\"]]), e(\"transition-normal\", [[\"transition-behavior\", \"normal\"]]), o(\"delay\", { handleBareValue: ({ value: h }) => E(h) ? `${h}ms` : null, themeKeys: [\"--transition-delay\"], handle: h => [l(\"transition-delay\", h)] }); { let h = () => j([S(\"--tw-duration\")]); e(\"duration-initial\", [h, [\"--tw-duration\", \"initial\"]]), r.functional(\"duration\", A => { if (A.modifier || !A.value) return; let w = null; if (A.value.kind === \"arbitrary\" ? w = A.value.value : (w = t.resolve(A.value.fraction ?? A.value.value, [\"--transition-duration\"]), w === null && E(A.value.value) && (w = `${A.value.value}ms`)), w !== null) return [h(), l(\"--tw-duration\", w), l(\"transition-duration\", w)] }); } i(\"delay\", () => [{ values: [\"75\", \"100\", \"150\", \"200\", \"300\", \"500\", \"700\", \"1000\"], valueThemeKeys: [\"--transition-delay\"] }]), i(\"duration\", () => [{ values: [\"75\", \"100\", \"150\", \"200\", \"300\", \"500\", \"700\", \"1000\"], valueThemeKeys: [\"--transition-duration\"] }]); } { let n = () => j([S(\"--tw-ease\")]); e(\"ease-initial\", [n, [\"--tw-ease\", \"initial\"]]), e(\"ease-linear\", [n, [\"--tw-ease\", \"linear\"], [\"transition-timing-function\", \"linear\"]]), o(\"ease\", { themeKeys: [\"--ease\"], handle: d => [n(), l(\"--tw-ease\", d), l(\"transition-timing-function\", d)] }); } e(\"will-change-auto\", [[\"will-change\", \"auto\"]]), e(\"will-change-scroll\", [[\"will-change\", \"scroll-position\"]]), e(\"will-change-contents\", [[\"will-change\", \"contents\"]]), e(\"will-change-transform\", [[\"will-change\", \"transform\"]]), o(\"will-change\", { themeKeys: [], handle: n => [l(\"will-change\", n)] }), e(\"content-none\", [[\"--tw-content\", \"none\"], [\"content\", \"none\"]]), o(\"content\", { themeKeys: [], handle: n => [j([S(\"--tw-content\", '\"\"')]), l(\"--tw-content\", n), l(\"content\", \"var(--tw-content)\")] }); { let n = \"var(--tw-contain-size,) var(--tw-contain-layout,) var(--tw-contain-paint,) var(--tw-contain-style,)\", d = () => j([S(\"--tw-contain-size\"), S(\"--tw-contain-layout\"), S(\"--tw-contain-paint\"), S(\"--tw-contain-style\")]); e(\"contain-none\", [[\"contain\", \"none\"]]), e(\"contain-content\", [[\"contain\", \"content\"]]), e(\"contain-strict\", [[\"contain\", \"strict\"]]), e(\"contain-size\", [d, [\"--tw-contain-size\", \"size\"], [\"contain\", n]]), e(\"contain-inline-size\", [d, [\"--tw-contain-size\", \"inline-size\"], [\"contain\", n]]), e(\"contain-layout\", [d, [\"--tw-contain-layout\", \"layout\"], [\"contain\", n]]), e(\"contain-paint\", [d, [\"--tw-contain-paint\", \"paint\"], [\"contain\", n]]), e(\"contain-style\", [d, [\"--tw-contain-style\", \"style\"], [\"contain\", n]]), o(\"contain\", { themeKeys: [], handle: h => [l(\"contain\", h)] }); } e(\"forced-color-adjust-none\", [[\"forced-color-adjust\", \"none\"]]), e(\"forced-color-adjust-auto\", [[\"forced-color-adjust\", \"auto\"]]), e(\"leading-none\", [() => j([S(\"--tw-leading\")]), [\"--tw-leading\", \"1\"], [\"line-height\", \"1\"]]), a(\"leading\", [\"--leading\", \"--spacing\"], n => [j([S(\"--tw-leading\")]), l(\"--tw-leading\", n), l(\"line-height\", n)]), o(\"tracking\", { supportsNegative: true, themeKeys: [\"--tracking\"], handle: n => [j([S(\"--tw-tracking\")]), l(\"--tw-tracking\", n), l(\"letter-spacing\", n)] }), e(\"antialiased\", [[\"-webkit-font-smoothing\", \"antialiased\"], [\"-moz-osx-font-smoothing\", \"grayscale\"]]), e(\"subpixel-antialiased\", [[\"-webkit-font-smoothing\", \"auto\"], [\"-moz-osx-font-smoothing\", \"auto\"]]); { let n = \"var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)\", d = () => j([S(\"--tw-ordinal\"), S(\"--tw-slashed-zero\"), S(\"--tw-numeric-figure\"), S(\"--tw-numeric-spacing\"), S(\"--tw-numeric-fraction\")]); e(\"normal-nums\", [[\"font-variant-numeric\", \"normal\"]]), e(\"ordinal\", [d, [\"--tw-ordinal\", \"ordinal\"], [\"font-variant-numeric\", n]]), e(\"slashed-zero\", [d, [\"--tw-slashed-zero\", \"slashed-zero\"], [\"font-variant-numeric\", n]]), e(\"lining-nums\", [d, [\"--tw-numeric-figure\", \"lining-nums\"], [\"font-variant-numeric\", n]]), e(\"oldstyle-nums\", [d, [\"--tw-numeric-figure\", \"oldstyle-nums\"], [\"font-variant-numeric\", n]]), e(\"proportional-nums\", [d, [\"--tw-numeric-spacing\", \"proportional-nums\"], [\"font-variant-numeric\", n]]), e(\"tabular-nums\", [d, [\"--tw-numeric-spacing\", \"tabular-nums\"], [\"font-variant-numeric\", n]]), e(\"diagonal-fractions\", [d, [\"--tw-numeric-fraction\", \"diagonal-fractions\"], [\"font-variant-numeric\", n]]), e(\"stacked-fractions\", [d, [\"--tw-numeric-fraction\", \"stacked-fractions\"], [\"font-variant-numeric\", n]]); } { let n = () => j([S(\"--tw-outline-style\", \"solid\")]); r.static(\"outline-hidden\", () => [l(\"--tw-outline-style\", \"none\"), l(\"outline-style\", \"none\"), F(\"@media\", \"(forced-colors: active)\", [l(\"outline\", \"2px solid transparent\"), l(\"outline-offset\", \"2px\")])]), e(\"outline-none\", [[\"--tw-outline-style\", \"none\"], [\"outline-style\", \"none\"]]), e(\"outline-solid\", [[\"--tw-outline-style\", \"solid\"], [\"outline-style\", \"solid\"]]), e(\"outline-dashed\", [[\"--tw-outline-style\", \"dashed\"], [\"outline-style\", \"dashed\"]]), e(\"outline-dotted\", [[\"--tw-outline-style\", \"dotted\"], [\"outline-style\", \"dotted\"]]), e(\"outline-double\", [[\"--tw-outline-style\", \"double\"], [\"outline-style\", \"double\"]]), r.functional(\"outline\", d => { if (d.value === null) { if (d.modifier) return; let h = t.get([\"--default-outline-width\"]) ?? \"1px\"; return [n(), l(\"outline-style\", \"var(--tw-outline-style)\"), l(\"outline-width\", h)] } if (d.value.kind === \"arbitrary\") { let h = d.value.value; switch (d.value.dataType ?? Y(h, [\"color\", \"length\", \"number\", \"percentage\"])) { case \"length\": case \"number\": case \"percentage\": return d.modifier ? void 0 : [n(), l(\"outline-style\", \"var(--tw-outline-style)\"), l(\"outline-width\", h)]; default: return h = Z(h, d.modifier, t), h === null ? void 0 : [l(\"outline-color\", h)] } } { let h = te(d, t, [\"--outline-color\", \"--color\"]); if (h) return [l(\"outline-color\", h)] } { if (d.modifier) return; let h = t.resolve(d.value.value, [\"--outline-width\"]); if (h) return [n(), l(\"outline-style\", \"var(--tw-outline-style)\"), l(\"outline-width\", h)]; if (E(d.value.value)) return [n(), l(\"outline-style\", \"var(--tw-outline-style)\"), l(\"outline-width\", `${d.value.value}px`)] } }), i(\"outline\", () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--outline-color\", \"--color\"], modifiers: Array.from({ length: 21 }, (d, h) => `${h * 5}`), hasDefaultValue: true }, { values: [\"0\", \"1\", \"2\", \"4\", \"8\"], valueThemeKeys: [\"--outline-width\"] }]), o(\"outline-offset\", { supportsNegative: true, themeKeys: [\"--outline-offset\"], handleBareValue: ({ value: d }) => E(d) ? `${d}px` : null, handle: d => [l(\"outline-offset\", d)] }), i(\"outline-offset\", () => [{ supportsNegative: true, values: [\"0\", \"1\", \"2\", \"4\", \"8\"], valueThemeKeys: [\"--outline-offset\"] }]); } o(\"opacity\", { themeKeys: [\"--opacity\"], handleBareValue: ({ value: n }) => nt(n) ? `${n}%` : null, handle: n => [l(\"opacity\", n)] }), i(\"opacity\", () => [{ values: Array.from({ length: 21 }, (n, d) => `${d * 5}`), valueThemeKeys: [\"--opacity\"] }]), e(\"underline-offset-auto\", [[\"text-underline-offset\", \"auto\"]]), o(\"underline-offset\", { supportsNegative: true, themeKeys: [\"--text-underline-offset\"], handleBareValue: ({ value: n }) => E(n) ? `${n}px` : null, handle: n => [l(\"text-underline-offset\", n)] }), i(\"underline-offset\", () => [{ supportsNegative: true, values: [\"0\", \"1\", \"2\", \"4\", \"8\"], valueThemeKeys: [\"--text-underline-offset\"] }]), r.functional(\"text\", n => { if (n.value) { if (n.value.kind === \"arbitrary\") { let d = n.value.value; switch (n.value.dataType ?? Y(d, [\"color\", \"length\", \"percentage\", \"absolute-size\", \"relative-size\"])) { case \"size\": case \"length\": case \"percentage\": case \"absolute-size\": case \"relative-size\": { if (n.modifier) { let A = n.modifier.kind === \"arbitrary\" ? n.modifier.value : t.resolve(n.modifier.value, [\"--leading\"]); if (!A && xe(n.modifier.value)) { let w = t.resolve(null, [\"--spacing\"]); if (!w) return null; A = `calc(${w} * ${n.modifier.value})`; } return !A && n.modifier.value === \"none\" && (A = \"1\"), A ? [l(\"font-size\", d), l(\"line-height\", A)] : null } return [l(\"font-size\", d)] } default: return d = Z(d, n.modifier, t), d === null ? void 0 : [l(\"color\", d)] } } { let d = te(n, t, [\"--text-color\", \"--color\"]); if (d) return [l(\"color\", d)] } { let d = t.resolveWith(n.value.value, [\"--text\"], [\"--line-height\", \"--letter-spacing\", \"--font-weight\"]); if (d) { let [h, A = {}] = Array.isArray(d) ? d : [d]; if (n.modifier) { let w = n.modifier.kind === \"arbitrary\" ? n.modifier.value : t.resolve(n.modifier.value, [\"--leading\"]); if (!w && xe(n.modifier.value)) { let P = t.resolve(null, [\"--spacing\"]); if (!P) return null; w = `calc(${P} * ${n.modifier.value})`; } if (!w && n.modifier.value === \"none\" && (w = \"1\"), !w) return null; let C = [l(\"font-size\", h)]; return w && C.push(l(\"line-height\", w)), C } return typeof A == \"string\" ? [l(\"font-size\", h), l(\"line-height\", A)] : [l(\"font-size\", h), l(\"line-height\", A[\"--line-height\"] ? `var(--tw-leading, ${A[\"--line-height\"]})` : void 0), l(\"letter-spacing\", A[\"--letter-spacing\"] ? `var(--tw-tracking, ${A[\"--letter-spacing\"]})` : void 0), l(\"font-weight\", A[\"--font-weight\"] ? `var(--tw-font-weight, ${A[\"--font-weight\"]})` : void 0)] } } } }), i(\"text\", () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--text-color\", \"--color\"], modifiers: Array.from({ length: 21 }, (n, d) => `${d * 5}`) }, { values: [], valueThemeKeys: [\"--text\"], modifiers: [], modifierThemeKeys: [\"--leading\"] }]); let L = () => j([S(\"--tw-text-shadow-color\"), S(\"--tw-text-shadow-alpha\", \"100%\", \"<percentage>\")]); e(\"text-shadow-initial\", [L, [\"--tw-text-shadow-color\", \"initial\"]]), r.functional(\"text-shadow\", n => { let d; if (n.modifier && (n.modifier.kind === \"arbitrary\" ? d = n.modifier.value : E(n.modifier.value) && (d = `${n.modifier.value}%`)), !n.value) { let h = t.get([\"--text-shadow\"]); return h === null ? void 0 : [L(), l(\"--tw-text-shadow-alpha\", d), ...pe(\"text-shadow\", h, d, A => `var(--tw-text-shadow-color, ${A})`)] } if (n.value.kind === \"arbitrary\") { let h = n.value.value; switch (n.value.dataType ?? Y(h, [\"color\"])) { case \"color\": return h = Z(h, n.modifier, t), h === null ? void 0 : [L(), l(\"--tw-text-shadow-color\", Q(h, \"var(--tw-text-shadow-alpha)\"))]; default: return [L(), l(\"--tw-text-shadow-alpha\", d), ...pe(\"text-shadow\", h, d, w => `var(--tw-text-shadow-color, ${w})`)] } } switch (n.value.value) { case \"none\": return n.modifier ? void 0 : [L(), l(\"text-shadow\", \"none\")]; case \"inherit\": return n.modifier ? void 0 : [L(), l(\"--tw-text-shadow-color\", \"inherit\")] }{ let h = t.get([`--text-shadow-${n.value.value}`]); if (h) return [L(), l(\"--tw-text-shadow-alpha\", d), ...pe(\"text-shadow\", h, d, A => `var(--tw-text-shadow-color, ${A})`)] } { let h = te(n, t, [\"--text-shadow-color\", \"--color\"]); if (h) return [L(), l(\"--tw-text-shadow-color\", Q(h, \"var(--tw-text-shadow-alpha)\"))] } }), i(\"text-shadow\", () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--text-shadow-color\", \"--color\"], modifiers: Array.from({ length: 21 }, (n, d) => `${d * 5}`) }, { values: [\"none\"] }, { valueThemeKeys: [\"--text-shadow\"], modifiers: Array.from({ length: 21 }, (n, d) => `${d * 5}`), hasDefaultValue: t.get([\"--text-shadow\"]) !== null }]); { let w = function ($) { return `var(--tw-ring-inset,) 0 0 0 calc(${$} + var(--tw-ring-offset-width)) var(--tw-ring-color, ${A})` }, C = function ($) { return `inset 0 0 0 ${$} var(--tw-inset-ring-color, currentcolor)` }; let n = [\"var(--tw-inset-shadow)\", \"var(--tw-inset-ring-shadow)\", \"var(--tw-ring-offset-shadow)\", \"var(--tw-ring-shadow)\", \"var(--tw-shadow)\"].join(\", \"), d = \"0 0 #0000\", h = () => j([S(\"--tw-shadow\", d), S(\"--tw-shadow-color\"), S(\"--tw-shadow-alpha\", \"100%\", \"<percentage>\"), S(\"--tw-inset-shadow\", d), S(\"--tw-inset-shadow-color\"), S(\"--tw-inset-shadow-alpha\", \"100%\", \"<percentage>\"), S(\"--tw-ring-color\"), S(\"--tw-ring-shadow\", d), S(\"--tw-inset-ring-color\"), S(\"--tw-inset-ring-shadow\", d), S(\"--tw-ring-inset\"), S(\"--tw-ring-offset-width\", \"0px\", \"<length>\"), S(\"--tw-ring-offset-color\", \"#fff\"), S(\"--tw-ring-offset-shadow\", d)]); e(\"shadow-initial\", [h, [\"--tw-shadow-color\", \"initial\"]]), r.functional(\"shadow\", $ => { let T; if ($.modifier && ($.modifier.kind === \"arbitrary\" ? T = $.modifier.value : E($.modifier.value) && (T = `${$.modifier.value}%`)), !$.value) { let K = t.get([\"--shadow\"]); return K === null ? void 0 : [h(), l(\"--tw-shadow-alpha\", T), ...pe(\"--tw-shadow\", K, T, se => `var(--tw-shadow-color, ${se})`), l(\"box-shadow\", n)] } if ($.value.kind === \"arbitrary\") { let K = $.value.value; switch ($.value.dataType ?? Y(K, [\"color\"])) { case \"color\": return K = Z(K, $.modifier, t), K === null ? void 0 : [h(), l(\"--tw-shadow-color\", Q(K, \"var(--tw-shadow-alpha)\"))]; default: return [h(), l(\"--tw-shadow-alpha\", T), ...pe(\"--tw-shadow\", K, T, bt => `var(--tw-shadow-color, ${bt})`), l(\"box-shadow\", n)] } } switch ($.value.value) { case \"none\": return $.modifier ? void 0 : [h(), l(\"--tw-shadow\", d), l(\"box-shadow\", n)]; case \"inherit\": return $.modifier ? void 0 : [h(), l(\"--tw-shadow-color\", \"inherit\")] }{ let K = t.get([`--shadow-${$.value.value}`]); if (K) return [h(), l(\"--tw-shadow-alpha\", T), ...pe(\"--tw-shadow\", K, T, se => `var(--tw-shadow-color, ${se})`), l(\"box-shadow\", n)] } { let K = te($, t, [\"--box-shadow-color\", \"--color\"]); if (K) return [h(), l(\"--tw-shadow-color\", Q(K, \"var(--tw-shadow-alpha)\"))] } }), i(\"shadow\", () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--box-shadow-color\", \"--color\"], modifiers: Array.from({ length: 21 }, ($, T) => `${T * 5}`) }, { values: [\"none\"] }, { valueThemeKeys: [\"--shadow\"], modifiers: Array.from({ length: 21 }, ($, T) => `${T * 5}`), hasDefaultValue: t.get([\"--shadow\"]) !== null }]), e(\"inset-shadow-initial\", [h, [\"--tw-inset-shadow-color\", \"initial\"]]), r.functional(\"inset-shadow\", $ => { let T; if ($.modifier && ($.modifier.kind === \"arbitrary\" ? T = $.modifier.value : E($.modifier.value) && (T = `${$.modifier.value}%`)), !$.value) { let K = t.get([\"--inset-shadow\"]); return K === null ? void 0 : [h(), l(\"--tw-inset-shadow-alpha\", T), ...pe(\"--tw-inset-shadow\", K, T, se => `var(--tw-inset-shadow-color, ${se})`), l(\"box-shadow\", n)] } if ($.value.kind === \"arbitrary\") { let K = $.value.value; switch ($.value.dataType ?? Y(K, [\"color\"])) { case \"color\": return K = Z(K, $.modifier, t), K === null ? void 0 : [h(), l(\"--tw-inset-shadow-color\", Q(K, \"var(--tw-inset-shadow-alpha)\"))]; default: return [h(), l(\"--tw-inset-shadow-alpha\", T), ...pe(\"--tw-inset-shadow\", K, T, bt => `var(--tw-inset-shadow-color, ${bt})`, \"inset \"), l(\"box-shadow\", n)] } } switch ($.value.value) { case \"none\": return $.modifier ? void 0 : [h(), l(\"--tw-inset-shadow\", d), l(\"box-shadow\", n)]; case \"inherit\": return $.modifier ? void 0 : [h(), l(\"--tw-inset-shadow-color\", \"inherit\")] }{ let K = t.get([`--inset-shadow-${$.value.value}`]); if (K) return [h(), l(\"--tw-inset-shadow-alpha\", T), ...pe(\"--tw-inset-shadow\", K, T, se => `var(--tw-inset-shadow-color, ${se})`), l(\"box-shadow\", n)] } { let K = te($, t, [\"--box-shadow-color\", \"--color\"]); if (K) return [h(), l(\"--tw-inset-shadow-color\", Q(K, \"var(--tw-inset-shadow-alpha)\"))] } }), i(\"inset-shadow\", () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--box-shadow-color\", \"--color\"], modifiers: Array.from({ length: 21 }, ($, T) => `${T * 5}`) }, { values: [\"none\"] }, { valueThemeKeys: [\"--inset-shadow\"], modifiers: Array.from({ length: 21 }, ($, T) => `${T * 5}`), hasDefaultValue: t.get([\"--inset-shadow\"]) !== null }]), e(\"ring-inset\", [h, [\"--tw-ring-inset\", \"inset\"]]); let A = t.get([\"--default-ring-color\"]) ?? \"currentcolor\"; r.functional(\"ring\", $ => { if (!$.value) { if ($.modifier) return; let T = t.get([\"--default-ring-width\"]) ?? \"1px\"; return [h(), l(\"--tw-ring-shadow\", w(T)), l(\"box-shadow\", n)] } if ($.value.kind === \"arbitrary\") { let T = $.value.value; switch ($.value.dataType ?? Y(T, [\"color\", \"length\"])) { case \"length\": return $.modifier ? void 0 : [h(), l(\"--tw-ring-shadow\", w(T)), l(\"box-shadow\", n)]; default: return T = Z(T, $.modifier, t), T === null ? void 0 : [l(\"--tw-ring-color\", T)] } } { let T = te($, t, [\"--ring-color\", \"--color\"]); if (T) return [l(\"--tw-ring-color\", T)] } { if ($.modifier) return; let T = t.resolve($.value.value, [\"--ring-width\"]); if (T === null && E($.value.value) && (T = `${$.value.value}px`), T) return [h(), l(\"--tw-ring-shadow\", w(T)), l(\"box-shadow\", n)] } }), i(\"ring\", () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--ring-color\", \"--color\"], modifiers: Array.from({ length: 21 }, ($, T) => `${T * 5}`) }, { values: [\"0\", \"1\", \"2\", \"4\", \"8\"], valueThemeKeys: [\"--ring-width\"], hasDefaultValue: true }]), r.functional(\"inset-ring\", $ => { if (!$.value) return $.modifier ? void 0 : [h(), l(\"--tw-inset-ring-shadow\", C(\"1px\")), l(\"box-shadow\", n)]; if ($.value.kind === \"arbitrary\") { let T = $.value.value; switch ($.value.dataType ?? Y(T, [\"color\", \"length\"])) { case \"length\": return $.modifier ? void 0 : [h(), l(\"--tw-inset-ring-shadow\", C(T)), l(\"box-shadow\", n)]; default: return T = Z(T, $.modifier, t), T === null ? void 0 : [l(\"--tw-inset-ring-color\", T)] } } { let T = te($, t, [\"--ring-color\", \"--color\"]); if (T) return [l(\"--tw-inset-ring-color\", T)] } { if ($.modifier) return; let T = t.resolve($.value.value, [\"--ring-width\"]); if (T === null && E($.value.value) && (T = `${$.value.value}px`), T) return [h(), l(\"--tw-inset-ring-shadow\", C(T)), l(\"box-shadow\", n)] } }), i(\"inset-ring\", () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--ring-color\", \"--color\"], modifiers: Array.from({ length: 21 }, ($, T) => `${T * 5}`) }, { values: [\"0\", \"1\", \"2\", \"4\", \"8\"], valueThemeKeys: [\"--ring-width\"], hasDefaultValue: true }]); let P = \"var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)\"; r.functional(\"ring-offset\", $ => { if ($.value) { if ($.value.kind === \"arbitrary\") { let T = $.value.value; switch ($.value.dataType ?? Y(T, [\"color\", \"length\"])) { case \"length\": return $.modifier ? void 0 : [l(\"--tw-ring-offset-width\", T), l(\"--tw-ring-offset-shadow\", P)]; default: return T = Z(T, $.modifier, t), T === null ? void 0 : [l(\"--tw-ring-offset-color\", T)] } } { let T = t.resolve($.value.value, [\"--ring-offset-width\"]); if (T) return $.modifier ? void 0 : [l(\"--tw-ring-offset-width\", T), l(\"--tw-ring-offset-shadow\", P)]; if (E($.value.value)) return $.modifier ? void 0 : [l(\"--tw-ring-offset-width\", `${$.value.value}px`), l(\"--tw-ring-offset-shadow\", P)] } { let T = te($, t, [\"--ring-offset-color\", \"--color\"]); if (T) return [l(\"--tw-ring-offset-color\", T)] } } }); } return i(\"ring-offset\", () => [{ values: [\"current\", \"inherit\", \"transparent\"], valueThemeKeys: [\"--ring-offset-color\", \"--color\"], modifiers: Array.from({ length: 21 }, (n, d) => `${d * 5}`) }, { values: [\"0\", \"1\", \"2\", \"4\", \"8\"], valueThemeKeys: [\"--ring-offset-width\"] }]), r.functional(\"@container\", n => { let d = null; if (n.value === null ? d = \"inline-size\" : n.value.kind === \"arbitrary\" ? d = n.value.value : n.value.kind === \"named\" && n.value.value === \"normal\" && (d = \"normal\"), d !== null) return n.modifier ? [l(\"container-type\", d), l(\"container-name\", n.modifier.value)] : [l(\"container-type\", d)] }), i(\"@container\", () => [{ values: [\"normal\"], valueThemeKeys: [], hasDefaultValue: true }]), r } var Kt = [\"number\", \"integer\", \"ratio\", \"percentage\"]; function Pr(t) {\n  \t    let r = t.params; return Eo.test(r) ? i => {\n  \t      let e = { \"--value\": { usedSpacingInteger: false, usedSpacingNumber: false, themeKeys: new Set, literals: new Set }, \"--modifier\": { usedSpacingInteger: false, usedSpacingNumber: false, themeKeys: new Set, literals: new Set } }; U(t.nodes, o => {\n  \t        if (o.kind !== \"declaration\" || !o.value || !o.value.includes(\"--value(\") && !o.value.includes(\"--modifier(\")) return; let s = W(o.value); ee(s, a => {\n  \t          if (a.kind !== \"function\") return; if (a.value === \"--spacing\" && !(e[\"--modifier\"].usedSpacingNumber && e[\"--value\"].usedSpacingNumber)) return ee(a.nodes, u => { if (u.kind !== \"function\" || u.value !== \"--value\" && u.value !== \"--modifier\") return; let c = u.value; for (let g of u.nodes) if (g.kind === \"word\") { if (g.value === \"integer\") e[c].usedSpacingInteger ||= true; else if (g.value === \"number\" && (e[c].usedSpacingNumber ||= true, e[\"--modifier\"].usedSpacingNumber && e[\"--value\"].usedSpacingNumber)) return 2 } }), 0; if (a.value !== \"--value\" && a.value !== \"--modifier\") return; let f = z(J(a.nodes), \",\"); for (let [u, c] of f.entries()) c = c.replace(/\\\\\\*/g, \"*\"), c = c.replace(/--(.*?)\\s--(.*?)/g, \"--$1-*--$2\"), c = c.replace(/\\s+/g, \"\"), c = c.replace(/(-\\*){2,}/g, \"-*\"), c[0] === \"-\" && c[1] === \"-\" && !c.includes(\"-*\") && (c += \"-*\"), f[u] = c; a.nodes = W(f.join(\",\")); for (let u of a.nodes) if (u.kind === \"word\" && (u.value[0] === '\"' || u.value[0] === \"'\") && u.value[0] === u.value[u.value.length - 1]) { let c = u.value.slice(1, -1); e[a.value].literals.add(c); } else if (u.kind === \"word\" && u.value[0] === \"-\" && u.value[1] === \"-\") { let c = u.value.replace(/-\\*.*$/g, \"\"); e[a.value].themeKeys.add(c); } else if (u.kind === \"word\" && !(u.value[0] === \"[\" && u.value[u.value.length - 1] === \"]\") && !Kt.includes(u.value)) {\n  \t            console.warn(`Unsupported bare value data type: \"${u.value}\".\nOnly valid data types are: ${Kt.map(x => `\"${x}\"`).join(\", \")}.\n`); let c = u.value, g = structuredClone(a), p = \"\\xB6\"; ee(g.nodes, (x, { replaceWith: y }) => { x.kind === \"word\" && x.value === c && y({ kind: \"word\", value: p }); }); let m = \"^\".repeat(J([u]).length), v = J([g]).indexOf(p), k = [\"```css\", J([a]), \" \".repeat(v) + m, \"```\"].join(`\n`); console.warn(k);\n  \t          }\n  \t        }), o.value = J(s);\n  \t      }), i.utilities.functional(r.slice(0, -2), o => { let s = structuredClone(t), a = o.value, f = o.modifier; if (a === null) return; let u = false, c = false, g = false, p = false, m = new Map, v = false; if (U([s], (k, { parent: x, replaceWith: y }) => { if (x?.kind !== \"rule\" && x?.kind !== \"at-rule\" || k.kind !== \"declaration\" || !k.value) return; let N = W(k.value); (ee(N, (V, { replaceWith: R }) => { if (V.kind === \"function\") { if (V.value === \"--value\") { u = true; let D = Vr(a, V, i); return D ? (c = true, D.ratio ? v = true : m.set(k, x), R(D.nodes), 1) : (u ||= false, y([]), 2) } else if (V.value === \"--modifier\") { if (f === null) return y([]), 2; g = true; let D = Vr(f, V, i); return D ? (p = true, R(D.nodes), 1) : (g ||= false, y([]), 2) } } }) ?? 0) === 0 && (k.value = J(N)); }), u && !c || g && !p || v && p || f && !v && !p) return null; if (v) for (let [k, x] of m) { let y = x.nodes.indexOf(k); y !== -1 && x.nodes.splice(y, 1); } return s.nodes }), i.utilities.suggest(r.slice(0, -2), () => { let o = [], s = []; for (let [a, { literals: f, usedSpacingNumber: u, usedSpacingInteger: c, themeKeys: g }] of [[o, e[\"--value\"]], [s, e[\"--modifier\"]]]) { for (let p of f) a.push(p); if (u) a.push(...at); else if (c) for (let p of at) E(p) && a.push(p); for (let p of i.theme.keysInNamespaces(g)) a.push(p.replace(Er, (m, v, k) => `${v}.${k}`)); } return [{ values: o, modifiers: s }] });\n  \t    } : To.test(r) ? i => { i.utilities.static(r, () => structuredClone(t.nodes)); } : null\n  \t  } function Vr(t, r, i) { for (let e of r.nodes) { if (t.kind === \"named\" && e.kind === \"word\" && (e.value[0] === \"'\" || e.value[0] === '\"') && e.value[e.value.length - 1] === e.value[0] && e.value.slice(1, -1) === t.value) return { nodes: W(t.value) }; if (t.kind === \"named\" && e.kind === \"word\" && e.value[0] === \"-\" && e.value[1] === \"-\") { let o = e.value; if (o.endsWith(\"-*\")) { o = o.slice(0, -2); let s = i.theme.resolve(t.value, [o]); if (s) return { nodes: W(s) } } else { let s = o.split(\"-*\"); if (s.length <= 1) continue; let a = [s.shift()], f = i.theme.resolveWith(t.value, a, s); if (f) { let [, u = {}] = f; { let c = u[s.pop()]; if (c) return { nodes: W(c) } } } } } else if (t.kind === \"named\" && e.kind === \"word\") { if (!Kt.includes(e.value)) continue; let o = e.value === \"ratio\" && \"fraction\" in t ? t.fraction : t.value; if (!o) continue; let s = Y(o, [e.value]); if (s === null) continue; if (s === \"ratio\") { let [a, f] = z(o, \"/\"); if (!E(a) || !E(f)) continue } else { if (s === \"number\" && !xe(o)) continue; if (s === \"percentage\" && !E(o.slice(0, -1))) continue } return { nodes: W(o), ratio: s === \"ratio\" } } else if (t.kind === \"arbitrary\" && e.kind === \"word\" && e.value[0] === \"[\" && e.value[e.value.length - 1] === \"]\") { let o = e.value.slice(1, -1); if (o === \"*\") return { nodes: W(t.value) }; if (\"dataType\" in t && t.dataType && t.dataType !== o) continue; if (\"dataType\" in t && t.dataType) return { nodes: W(t.value) }; if (Y(t.value, [o]) !== null) return { nodes: W(t.value) } } } } function pe(t, r, i, e, o = \"\") { let s = false, a = De(r, u => i == null ? e(u) : u.startsWith(\"current\") ? e(Q(u, i)) : ((u.startsWith(\"var(\") || i.startsWith(\"var(\")) && (s = true), e(Tr(u, i)))); function f(u) { return o ? z(u, \",\").map(c => o + c).join(\",\") : u } return s ? [l(t, f(De(r, e))), G(\"@supports (color: lab(from red l a b))\", [l(t, f(a))])] : [l(t, f(a))] } function lt(t, r, i, e, o = \"\") { let s = false, a = z(r, \",\").map(f => De(f, u => i == null ? e(u) : u.startsWith(\"current\") ? e(Q(u, i)) : ((u.startsWith(\"var(\") || i.startsWith(\"var(\")) && (s = true), e(Tr(u, i))))).map(f => `drop-shadow(${f})`).join(\" \"); return s ? [l(t, o + z(r, \",\").map(f => `drop-shadow(${De(f, e)})`).join(\" \")), G(\"@supports (color: lab(from red l a b))\", [l(t, o + a)])] : [l(t, o + a)] } var Dt = { \"--alpha\": Ro, \"--spacing\": Po, \"--theme\": Oo, theme: _o }; function Ro(t, r, i, ...e) { let [o, s] = z(i, \"/\").map(a => a.trim()); if (!o || !s) throw new Error(`The --alpha(\\u2026) function requires a color and an alpha value, e.g.: \\`--alpha(${o || \"var(--my-color)\"} / ${s || \"50%\"})\\``); if (e.length > 0) throw new Error(`The --alpha(\\u2026) function only accepts one argument, e.g.: \\`--alpha(${o || \"var(--my-color)\"} / ${s || \"50%\"})\\``); return Q(o, s) } function Po(t, r, i, ...e) { if (!i) throw new Error(\"The --spacing(\\u2026) function requires an argument, but received none.\"); if (e.length > 0) throw new Error(`The --spacing(\\u2026) function only accepts a single argument, but received ${e.length + 1}.`); let o = t.theme.resolve(null, [\"--spacing\"]); if (!o) throw new Error(\"The --spacing(\\u2026) function requires that the `--spacing` theme variable exists, but it was not found.\"); return `calc(${o} * ${i})` } function Oo(t, r, i, ...e) { if (!i.startsWith(\"--\")) throw new Error(\"The --theme(\\u2026) function can only be used with CSS variables from your theme.\"); let o = false; i.endsWith(\" inline\") && (o = true, i = i.slice(0, -7)), r.kind === \"at-rule\" && (o = true); let s = t.resolveThemeValue(i, o); if (!s) { if (e.length > 0) return e.join(\", \"); throw new Error(`Could not resolve value for theme function: \\`theme(${i})\\`. Consider checking if the variable name is correct or provide a fallback value to silence this error.`) } if (e.length === 0) return s; let a = e.join(\", \"); if (a === \"initial\") return s; if (s === \"initial\") return a; if (s.startsWith(\"var(\") || s.startsWith(\"theme(\") || s.startsWith(\"--theme(\")) { let f = W(s); return Ko(f, a), J(f) } return s } function _o(t, r, i, ...e) { i = zo(i); let o = t.resolveThemeValue(i); if (!o && e.length > 0) return e.join(\", \"); if (!o) throw new Error(`Could not resolve value for theme function: \\`theme(${i})\\`. Consider checking if the path is correct or provide a fallback value to silence this error.`); return o } var Or = new RegExp(Object.keys(Dt).map(t => `${t}\\\\(`).join(\"|\")); function Ve(t, r) { let i = 0; return U(t, e => { if (e.kind === \"declaration\" && e.value && Or.test(e.value)) { i |= 8, e.value = _r(e.value, e, r); return } e.kind === \"at-rule\" && (e.name === \"@media\" || e.name === \"@custom-media\" || e.name === \"@container\" || e.name === \"@supports\") && Or.test(e.params) && (i |= 8, e.params = _r(e.params, e, r)); }), i } function _r(t, r, i) { let e = W(t); return ee(e, (o, { replaceWith: s }) => { if (o.kind === \"function\" && o.value in Dt) { let a = z(J(o.nodes).trim(), \",\").map(u => u.trim()), f = Dt[o.value](i, r, ...a); return s(W(f)) } }), J(e) } function zo(t) { if (t[0] !== \"'\" && t[0] !== '\"') return t; let r = \"\", i = t[0]; for (let e = 1; e < t.length - 1; e++) { let o = t[e], s = t[e + 1]; o === \"\\\\\" && (s === i || s === \"\\\\\") ? (r += s, e++) : r += o; } return r } function Ko(t, r) { ee(t, i => { if (i.kind === \"function\" && !(i.value !== \"var\" && i.value !== \"theme\" && i.value !== \"--theme\")) if (i.nodes.length === 1) i.nodes.push({ kind: \"word\", value: `, ${r}` }); else { let e = i.nodes[i.nodes.length - 1]; e.kind === \"word\" && e.value === \"initial\" && (e.value = r); } }); } function st(t, r) { let i = t.length, e = r.length, o = i < e ? i : e; for (let s = 0; s < o; s++) { let a = t.charCodeAt(s), f = r.charCodeAt(s); if (a >= 48 && a <= 57 && f >= 48 && f <= 57) { let u = s, c = s + 1, g = s, p = s + 1; for (a = t.charCodeAt(c); a >= 48 && a <= 57;)a = t.charCodeAt(++c); for (f = r.charCodeAt(p); f >= 48 && f <= 57;)f = r.charCodeAt(++p); let m = t.slice(u, c), v = r.slice(g, p), k = Number(m) - Number(v); if (k) return k; if (m < v) return -1; if (m > v) return 1; continue } if (a !== f) return a - f } return t.length - r.length } var Do = /^\\d+\\/\\d+$/; function zr(t) { let r = new B(o => ({ name: o, utility: o, fraction: false, modifiers: [] })); for (let o of t.utilities.keys(\"static\")) { let s = r.get(o); s.fraction = false, s.modifiers = []; } for (let o of t.utilities.keys(\"functional\")) { let s = t.utilities.getCompletions(o); for (let a of s) for (let f of a.values) { let u = f !== null && Do.test(f), c = f === null ? o : `${o}-${f}`, g = r.get(c); if (g.utility = o, g.fraction ||= u, g.modifiers.push(...a.modifiers), a.supportsNegative) { let p = r.get(`-${c}`); p.utility = `-${o}`, p.fraction ||= u, p.modifiers.push(...a.modifiers); } } } if (r.size === 0) return []; let i = Array.from(r.values()); return i.sort((o, s) => st(o.name, s.name)), Uo(i) } function Uo(t) { let r = [], i = null, e = new Map, o = new B(() => []); for (let a of t) { let { utility: f, fraction: u } = a; i || (i = { utility: f, items: [] }, e.set(f, i)), f !== i.utility && (r.push(i), i = { utility: f, items: [] }, e.set(f, i)), u ? o.get(f).push(a) : i.items.push(a); } i && r[r.length - 1] !== i && r.push(i); for (let [a, f] of o) { let u = e.get(a); u && u.items.push(...f); } let s = []; for (let a of r) for (let f of a.items) s.push([f.name, { modifiers: f.modifiers }]); return s } function Kr(t) { let r = []; for (let [e, o] of t.variants.entries()) { let f = function ({ value: u, modifier: c } = {}) { let g = e; u && (g += s ? `-${u}` : u), c && (g += `/${c}`); let p = t.parseVariant(g); if (!p) return []; let m = M(\".__placeholder__\", []); if (Te(m, p, t.variants) === null) return []; let v = []; return Xe(m.nodes, (k, { path: x }) => { if (k.kind !== \"rule\" && k.kind !== \"at-rule\" || k.nodes.length > 0) return; x.sort((b, V) => { let R = b.kind === \"at-rule\", D = V.kind === \"at-rule\"; return R && !D ? -1 : !R && D ? 1 : 0 }); let y = x.flatMap(b => b.kind === \"rule\" ? b.selector === \"&\" ? [] : [b.selector] : b.kind === \"at-rule\" ? [`${b.name} ${b.params}`] : []), N = \"\"; for (let b = y.length - 1; b >= 0; b--)N = N === \"\" ? y[b] : `${y[b]} { ${N} }`; v.push(N); }), v }; if (o.kind === \"arbitrary\") continue; let s = e !== \"@\", a = t.variants.getCompletions(e); switch (o.kind) { case \"static\": { r.push({ name: e, values: a, isArbitrary: false, hasDash: s, selectors: f }); break } case \"functional\": { r.push({ name: e, values: a, isArbitrary: true, hasDash: s, selectors: f }); break } case \"compound\": { r.push({ name: e, values: a, isArbitrary: true, hasDash: s, selectors: f }); break } } } return r } function Dr(t, r) { let { astNodes: i, nodeSorting: e } = he(Array.from(r), t), o = new Map(r.map(a => [a, null])), s = 0n; for (let a of i) { let f = e.get(a)?.candidate; f && o.set(f, o.get(f) ?? s++); } return r.map(a => [a, o.get(a) ?? null]) } var ut = /^@?[a-zA-Z0-9_-]*$/; var jt = class { compareFns = new Map; variants = new Map; completions = new Map; groupOrder = null; lastOrder = 0; static(r, i, { compounds: e, order: o } = {}) { this.set(r, { kind: \"static\", applyFn: i, compoundsWith: 0, compounds: e ?? 2, order: o }); } fromAst(r, i) { let e = []; U(i, o => { o.kind === \"rule\" ? e.push(o.selector) : o.kind === \"at-rule\" && o.name !== \"@slot\" && e.push(`${o.name} ${o.params}`); }), this.static(r, o => { let s = structuredClone(i); Lt(s, o.nodes), o.nodes = s; }, { compounds: Ae(e) }); } functional(r, i, { compounds: e, order: o } = {}) { this.set(r, { kind: \"functional\", applyFn: i, compoundsWith: 0, compounds: e ?? 2, order: o }); } compound(r, i, e, { compounds: o, order: s } = {}) { this.set(r, { kind: \"compound\", applyFn: e, compoundsWith: i, compounds: o ?? 2, order: s }); } group(r, i) { this.groupOrder = this.nextOrder(), i && this.compareFns.set(this.groupOrder, i), r(), this.groupOrder = null; } has(r) { return this.variants.has(r) } get(r) { return this.variants.get(r) } kind(r) { return this.variants.get(r)?.kind } compoundsWith(r, i) { let e = this.variants.get(r), o = typeof i == \"string\" ? this.variants.get(i) : i.kind === \"arbitrary\" ? { compounds: Ae([i.selector]) } : this.variants.get(i.root); return !(!e || !o || e.kind !== \"compound\" || o.compounds === 0 || e.compoundsWith === 0 || (e.compoundsWith & o.compounds) === 0) } suggest(r, i) { this.completions.set(r, i); } getCompletions(r) { return this.completions.get(r)?.() ?? [] } compare(r, i) { if (r === i) return 0; if (r === null) return -1; if (i === null) return 1; if (r.kind === \"arbitrary\" && i.kind === \"arbitrary\") return r.selector < i.selector ? -1 : 1; if (r.kind === \"arbitrary\") return 1; if (i.kind === \"arbitrary\") return -1; let e = this.variants.get(r.root).order, o = this.variants.get(i.root).order, s = e - o; if (s !== 0) return s; if (r.kind === \"compound\" && i.kind === \"compound\") { let c = this.compare(r.variant, i.variant); return c !== 0 ? c : r.modifier && i.modifier ? r.modifier.value < i.modifier.value ? -1 : 1 : r.modifier ? 1 : i.modifier ? -1 : 0 } let a = this.compareFns.get(e); if (a !== void 0) return a(r, i); if (r.root !== i.root) return r.root < i.root ? -1 : 1; let f = r.value, u = i.value; return f === null ? -1 : u === null || f.kind === \"arbitrary\" && u.kind !== \"arbitrary\" ? 1 : f.kind !== \"arbitrary\" && u.kind === \"arbitrary\" || f.value < u.value ? -1 : 1 } keys() { return this.variants.keys() } entries() { return this.variants.entries() } set(r, { kind: i, applyFn: e, compounds: o, compoundsWith: s, order: a }) { let f = this.variants.get(r); f ? Object.assign(f, { kind: i, applyFn: e, compounds: o }) : (a === void 0 && (this.lastOrder = this.nextOrder(), a = this.lastOrder), this.variants.set(r, { kind: i, applyFn: e, order: a, compoundsWith: s, compounds: o })); } nextOrder() { return this.groupOrder ?? this.lastOrder + 1 } }; function Ae(t) { let r = 0; for (let i of t) { if (i[0] === \"@\") { if (!i.startsWith(\"@media\") && !i.startsWith(\"@supports\") && !i.startsWith(\"@container\")) return 0; r |= 1; continue } if (i.includes(\"::\")) return 0; r |= 2; } return r } function jr(t) { let r = new jt; function i(c, g, { compounds: p } = {}) { p = p ?? Ae(g), r.static(c, m => { m.nodes = g.map(v => G(v, m.nodes)); }, { compounds: p }); } i(\"*\", [\":is(& > *)\"], { compounds: 0 }), i(\"**\", [\":is(& *)\"], { compounds: 0 }); function e(c, g) { return g.map(p => { p = p.trim(); let m = z(p, \" \"); return m[0] === \"not\" ? m.slice(1).join(\" \") : c === \"@container\" ? m[0][0] === \"(\" ? `not ${p}` : m[1] === \"not\" ? `${m[0]} ${m.slice(2).join(\" \")}` : `${m[0]} not ${m.slice(1).join(\" \")}` : `not ${p}` }) } let o = [\"@media\", \"@supports\", \"@container\"]; function s(c) { for (let g of o) { if (g !== c.name) continue; let p = z(c.params, \",\"); return p.length > 1 ? null : (p = e(c.name, p), F(c.name, p.join(\", \"))) } return null } function a(c) { return c.includes(\"::\") ? null : `&:not(${z(c, \",\").map(p => (p = p.replaceAll(\"&\", \"*\"), p)).join(\", \")})` } r.compound(\"not\", 3, (c, g) => { if (g.variant.kind === \"arbitrary\" && g.variant.relative || g.modifier) return null; let p = false; if (U([c], (m, { path: v }) => { if (m.kind !== \"rule\" && m.kind !== \"at-rule\") return 0; if (m.nodes.length > 0) return 0; let k = [], x = []; for (let N of v) N.kind === \"at-rule\" ? k.push(N) : N.kind === \"rule\" && x.push(N); if (k.length > 1) return 2; if (x.length > 1) return 2; let y = []; for (let N of x) { let b = a(N.selector); if (!b) return p = false, 2; y.push(M(b, [])); } for (let N of k) { let b = s(N); if (!b) return p = false, 2; y.push(b); } return Object.assign(c, M(\"&\", y)), p = true, 1 }), c.kind === \"rule\" && c.selector === \"&\" && c.nodes.length === 1 && Object.assign(c, c.nodes[0]), !p) return null }), r.suggest(\"not\", () => Array.from(r.keys()).filter(c => r.compoundsWith(\"not\", c))), r.compound(\"group\", 2, (c, g) => { if (g.variant.kind === \"arbitrary\" && g.variant.relative) return null; let p = g.modifier ? `:where(.${t.prefix ? `${t.prefix}\\\\:` : \"\"}group\\\\/${g.modifier.value})` : `:where(.${t.prefix ? `${t.prefix}\\\\:` : \"\"}group)`, m = false; if (U([c], (v, { path: k }) => { if (v.kind !== \"rule\") return 0; for (let y of k.slice(0, -1)) if (y.kind === \"rule\") return m = false, 2; let x = v.selector.replaceAll(\"&\", p); z(x, \",\").length > 1 && (x = `:is(${x})`), v.selector = `&:is(${x} *)`, m = true; }), !m) return null }), r.suggest(\"group\", () => Array.from(r.keys()).filter(c => r.compoundsWith(\"group\", c))), r.compound(\"peer\", 2, (c, g) => { if (g.variant.kind === \"arbitrary\" && g.variant.relative) return null; let p = g.modifier ? `:where(.${t.prefix ? `${t.prefix}\\\\:` : \"\"}peer\\\\/${g.modifier.value})` : `:where(.${t.prefix ? `${t.prefix}\\\\:` : \"\"}peer)`, m = false; if (U([c], (v, { path: k }) => { if (v.kind !== \"rule\") return 0; for (let y of k.slice(0, -1)) if (y.kind === \"rule\") return m = false, 2; let x = v.selector.replaceAll(\"&\", p); z(x, \",\").length > 1 && (x = `:is(${x})`), v.selector = `&:is(${x} ~ *)`, m = true; }), !m) return null }), r.suggest(\"peer\", () => Array.from(r.keys()).filter(c => r.compoundsWith(\"peer\", c))), i(\"first-letter\", [\"&::first-letter\"]), i(\"first-line\", [\"&::first-line\"]), i(\"marker\", [\"& *::marker\", \"&::marker\", \"& *::-webkit-details-marker\", \"&::-webkit-details-marker\"]), i(\"selection\", [\"& *::selection\", \"&::selection\"]), i(\"file\", [\"&::file-selector-button\"]), i(\"placeholder\", [\"&::placeholder\"]), i(\"backdrop\", [\"&::backdrop\"]), i(\"details-content\", [\"&::details-content\"]); { let c = function () { return j([F(\"@property\", \"--tw-content\", [l(\"syntax\", '\"*\"'), l(\"initial-value\", '\"\"'), l(\"inherits\", \"false\")])]) }; r.static(\"before\", g => { g.nodes = [M(\"&::before\", [c(), l(\"content\", \"var(--tw-content)\"), ...g.nodes])]; }, { compounds: 0 }), r.static(\"after\", g => { g.nodes = [M(\"&::after\", [c(), l(\"content\", \"var(--tw-content)\"), ...g.nodes])]; }, { compounds: 0 }); } i(\"first\", [\"&:first-child\"]), i(\"last\", [\"&:last-child\"]), i(\"only\", [\"&:only-child\"]), i(\"odd\", [\"&:nth-child(odd)\"]), i(\"even\", [\"&:nth-child(even)\"]), i(\"first-of-type\", [\"&:first-of-type\"]), i(\"last-of-type\", [\"&:last-of-type\"]), i(\"only-of-type\", [\"&:only-of-type\"]), i(\"visited\", [\"&:visited\"]), i(\"target\", [\"&:target\"]), i(\"open\", [\"&:is([open], :popover-open, :open)\"]), i(\"default\", [\"&:default\"]), i(\"checked\", [\"&:checked\"]), i(\"indeterminate\", [\"&:indeterminate\"]), i(\"placeholder-shown\", [\"&:placeholder-shown\"]), i(\"autofill\", [\"&:autofill\"]), i(\"optional\", [\"&:optional\"]), i(\"required\", [\"&:required\"]), i(\"valid\", [\"&:valid\"]), i(\"invalid\", [\"&:invalid\"]), i(\"user-valid\", [\"&:user-valid\"]), i(\"user-invalid\", [\"&:user-invalid\"]), i(\"in-range\", [\"&:in-range\"]), i(\"out-of-range\", [\"&:out-of-range\"]), i(\"read-only\", [\"&:read-only\"]), i(\"empty\", [\"&:empty\"]), i(\"focus-within\", [\"&:focus-within\"]), r.static(\"hover\", c => { c.nodes = [M(\"&:hover\", [F(\"@media\", \"(hover: hover)\", c.nodes)])]; }), i(\"focus\", [\"&:focus\"]), i(\"focus-visible\", [\"&:focus-visible\"]), i(\"active\", [\"&:active\"]), i(\"enabled\", [\"&:enabled\"]), i(\"disabled\", [\"&:disabled\"]), i(\"inert\", [\"&:is([inert], [inert] *)\"]), r.compound(\"in\", 2, (c, g) => { if (g.modifier) return null; let p = false; if (U([c], (m, { path: v }) => { if (m.kind !== \"rule\") return 0; for (let k of v.slice(0, -1)) if (k.kind === \"rule\") return p = false, 2; m.selector = `:where(${m.selector.replaceAll(\"&\", \"*\")}) &`, p = true; }), !p) return null }), r.suggest(\"in\", () => Array.from(r.keys()).filter(c => r.compoundsWith(\"in\", c))), r.compound(\"has\", 2, (c, g) => { if (g.modifier) return null; let p = false; if (U([c], (m, { path: v }) => { if (m.kind !== \"rule\") return 0; for (let k of v.slice(0, -1)) if (k.kind === \"rule\") return p = false, 2; m.selector = `&:has(${m.selector.replaceAll(\"&\", \"*\")})`, p = true; }), !p) return null }), r.suggest(\"has\", () => Array.from(r.keys()).filter(c => r.compoundsWith(\"has\", c))), r.functional(\"aria\", (c, g) => { if (!g.value || g.modifier) return null; g.value.kind === \"arbitrary\" ? c.nodes = [M(`&[aria-${Ur(g.value.value)}]`, c.nodes)] : c.nodes = [M(`&[aria-${g.value.value}=\"true\"]`, c.nodes)]; }), r.suggest(\"aria\", () => [\"busy\", \"checked\", \"disabled\", \"expanded\", \"hidden\", \"pressed\", \"readonly\", \"required\", \"selected\"]), r.functional(\"data\", (c, g) => { if (!g.value || g.modifier) return null; c.nodes = [M(`&[data-${Ur(g.value.value)}]`, c.nodes)]; }), r.functional(\"nth\", (c, g) => { if (!g.value || g.modifier || g.value.kind === \"named\" && !E(g.value.value)) return null; c.nodes = [M(`&:nth-child(${g.value.value})`, c.nodes)]; }), r.functional(\"nth-last\", (c, g) => { if (!g.value || g.modifier || g.value.kind === \"named\" && !E(g.value.value)) return null; c.nodes = [M(`&:nth-last-child(${g.value.value})`, c.nodes)]; }), r.functional(\"nth-of-type\", (c, g) => { if (!g.value || g.modifier || g.value.kind === \"named\" && !E(g.value.value)) return null; c.nodes = [M(`&:nth-of-type(${g.value.value})`, c.nodes)]; }), r.functional(\"nth-last-of-type\", (c, g) => { if (!g.value || g.modifier || g.value.kind === \"named\" && !E(g.value.value)) return null; c.nodes = [M(`&:nth-last-of-type(${g.value.value})`, c.nodes)]; }), r.functional(\"supports\", (c, g) => { if (!g.value || g.modifier) return null; let p = g.value.value; if (p === null) return null; if (/^[\\w-]*\\s*\\(/.test(p)) { let m = p.replace(/\\b(and|or|not)\\b/g, \" $1 \"); c.nodes = [F(\"@supports\", m, c.nodes)]; return } p.includes(\":\") || (p = `${p}: var(--tw)`), (p[0] !== \"(\" || p[p.length - 1] !== \")\") && (p = `(${p})`), c.nodes = [F(\"@supports\", p, c.nodes)]; }, { compounds: 1 }), i(\"motion-safe\", [\"@media (prefers-reduced-motion: no-preference)\"]), i(\"motion-reduce\", [\"@media (prefers-reduced-motion: reduce)\"]), i(\"contrast-more\", [\"@media (prefers-contrast: more)\"]), i(\"contrast-less\", [\"@media (prefers-contrast: less)\"]); { let c = function (g, p, m, v) { if (g === p) return 0; let k = v.get(g); if (k === null) return m === \"asc\" ? -1 : 1; let x = v.get(p); return x === null ? m === \"asc\" ? 1 : -1 : ye(k, x, m) }; { let g = t.namespace(\"--breakpoint\"), p = new B(m => { switch (m.kind) { case \"static\": return t.resolveValue(m.root, [\"--breakpoint\"]) ?? null; case \"functional\": { if (!m.value || m.modifier) return null; let v = null; return m.value.kind === \"arbitrary\" ? v = m.value.value : m.value.kind === \"named\" && (v = t.resolveValue(m.value.value, [\"--breakpoint\"])), !v || v.includes(\"var(\") ? null : v } case \"arbitrary\": case \"compound\": return null } }); r.group(() => { r.functional(\"max\", (m, v) => { if (v.modifier) return null; let k = p.get(v); if (k === null) return null; m.nodes = [F(\"@media\", `(width < ${k})`, m.nodes)]; }, { compounds: 1 }); }, (m, v) => c(m, v, \"desc\", p)), r.suggest(\"max\", () => Array.from(g.keys()).filter(m => m !== null)), r.group(() => { for (let [m, v] of t.namespace(\"--breakpoint\")) m !== null && r.static(m, k => { k.nodes = [F(\"@media\", `(width >= ${v})`, k.nodes)]; }, { compounds: 1 }); r.functional(\"min\", (m, v) => { if (v.modifier) return null; let k = p.get(v); if (k === null) return null; m.nodes = [F(\"@media\", `(width >= ${k})`, m.nodes)]; }, { compounds: 1 }); }, (m, v) => c(m, v, \"asc\", p)), r.suggest(\"min\", () => Array.from(g.keys()).filter(m => m !== null)); } { let g = t.namespace(\"--container\"), p = new B(m => { switch (m.kind) { case \"functional\": { if (m.value === null) return null; let v = null; return m.value.kind === \"arbitrary\" ? v = m.value.value : m.value.kind === \"named\" && (v = t.resolveValue(m.value.value, [\"--container\"])), !v || v.includes(\"var(\") ? null : v } case \"static\": case \"arbitrary\": case \"compound\": return null } }); r.group(() => { r.functional(\"@max\", (m, v) => { let k = p.get(v); if (k === null) return null; m.nodes = [F(\"@container\", v.modifier ? `${v.modifier.value} (width < ${k})` : `(width < ${k})`, m.nodes)]; }, { compounds: 1 }); }, (m, v) => c(m, v, \"desc\", p)), r.suggest(\"@max\", () => Array.from(g.keys()).filter(m => m !== null)), r.group(() => { r.functional(\"@\", (m, v) => { let k = p.get(v); if (k === null) return null; m.nodes = [F(\"@container\", v.modifier ? `${v.modifier.value} (width >= ${k})` : `(width >= ${k})`, m.nodes)]; }, { compounds: 1 }), r.functional(\"@min\", (m, v) => { let k = p.get(v); if (k === null) return null; m.nodes = [F(\"@container\", v.modifier ? `${v.modifier.value} (width >= ${k})` : `(width >= ${k})`, m.nodes)]; }, { compounds: 1 }); }, (m, v) => c(m, v, \"asc\", p)), r.suggest(\"@min\", () => Array.from(g.keys()).filter(m => m !== null)), r.suggest(\"@\", () => Array.from(g.keys()).filter(m => m !== null)); } } return i(\"portrait\", [\"@media (orientation: portrait)\"]), i(\"landscape\", [\"@media (orientation: landscape)\"]), i(\"ltr\", ['&:where(:dir(ltr), [dir=\"ltr\"], [dir=\"ltr\"] *)']), i(\"rtl\", ['&:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *)']), i(\"dark\", [\"@media (prefers-color-scheme: dark)\"]), i(\"starting\", [\"@starting-style\"]), i(\"print\", [\"@media print\"]), i(\"forced-colors\", [\"@media (forced-colors: active)\"]), i(\"inverted-colors\", [\"@media (inverted-colors: inverted)\"]), i(\"pointer-none\", [\"@media (pointer: none)\"]), i(\"pointer-coarse\", [\"@media (pointer: coarse)\"]), i(\"pointer-fine\", [\"@media (pointer: fine)\"]), i(\"any-pointer-none\", [\"@media (any-pointer: none)\"]), i(\"any-pointer-coarse\", [\"@media (any-pointer: coarse)\"]), i(\"any-pointer-fine\", [\"@media (any-pointer: fine)\"]), i(\"noscript\", [\"@media (scripting: none)\"]), r } function Ur(t) { if (t.includes(\"=\")) { let [r, ...i] = z(t, \"=\"), e = i.join(\"=\").trim(); if (e[0] === \"'\" || e[0] === '\"') return t; if (e.length > 1) { let o = e[e.length - 1]; if (e[e.length - 2] === \" \" && (o === \"i\" || o === \"I\" || o === \"s\" || o === \"S\")) return `${r}=\"${e.slice(0, -2)}\" ${o}` } return `${r}=\"${e}\"` } return t } function Lt(t, r) { U(t, (i, { replaceWith: e }) => { if (i.kind === \"at-rule\" && i.name === \"@slot\") e(r); else if (i.kind === \"at-rule\" && (i.name === \"@keyframes\" || i.name === \"@property\")) return Object.assign(i, j([F(i.name, i.params, i.nodes)])), 1 }); } function Lr(t) { let r = Rr(t), i = jr(t), e = new B(u => wr(u, f)), o = new B(u => Array.from(vr(u, f))), s = new B(u => { let c = Ir(u, f); try { Ve(c.map(({ node: g }) => g), f); } catch { return [] } return c }), a = new B(u => { for (let c of Ze(u)) t.markUsedVariable(c); }), f = { theme: t, utilities: r, variants: i, invalidCandidates: new Set, important: false, candidatesToCss(u) { let c = []; for (let g of u) { let p = false, { astNodes: m } = he([g], this, { onInvalidCandidate() { p = true; } }); m = be(m, f, 0), m.length === 0 || p ? c.push(null) : c.push(le(m)); } return c }, getClassOrder(u) { return Dr(this, u) }, getClassList() { return zr(this) }, getVariants() { return Kr(this) }, parseCandidate(u) { return o.get(u) }, parseVariant(u) { return e.get(u) }, compileAstNodes(u) { return s.get(u) }, printCandidate(u) { return yr(f, u) }, printVariant(u) { return it(u) }, getVariantOrder() { let u = Array.from(e.values()); u.sort((m, v) => this.variants.compare(m, v)); let c = new Map, g, p = 0; for (let m of u) m !== null && (g !== void 0 && this.variants.compare(g, m) !== 0 && p++, c.set(m, p), g = m); return c }, resolveThemeValue(u, c = true) { let g = u.lastIndexOf(\"/\"), p = null; g !== -1 && (p = u.slice(g + 1).trim(), u = u.slice(0, g).trim()); let m = t.resolve(null, [u], c ? 1 : 0) ?? void 0; return p && m ? Q(m, p) : m }, trackUsedVariables(u) { a.get(u); } }; return f } var It = [\"container-type\", \"pointer-events\", \"visibility\", \"position\", \"inset\", \"inset-inline\", \"inset-block\", \"inset-inline-start\", \"inset-inline-end\", \"top\", \"right\", \"bottom\", \"left\", \"isolation\", \"z-index\", \"order\", \"grid-column\", \"grid-column-start\", \"grid-column-end\", \"grid-row\", \"grid-row-start\", \"grid-row-end\", \"float\", \"clear\", \"--tw-container-component\", \"margin\", \"margin-inline\", \"margin-block\", \"margin-inline-start\", \"margin-inline-end\", \"margin-top\", \"margin-right\", \"margin-bottom\", \"margin-left\", \"box-sizing\", \"display\", \"field-sizing\", \"aspect-ratio\", \"height\", \"max-height\", \"min-height\", \"width\", \"max-width\", \"min-width\", \"flex\", \"flex-shrink\", \"flex-grow\", \"flex-basis\", \"table-layout\", \"caption-side\", \"border-collapse\", \"border-spacing\", \"transform-origin\", \"translate\", \"--tw-translate-x\", \"--tw-translate-y\", \"--tw-translate-z\", \"scale\", \"--tw-scale-x\", \"--tw-scale-y\", \"--tw-scale-z\", \"rotate\", \"--tw-rotate-x\", \"--tw-rotate-y\", \"--tw-rotate-z\", \"--tw-skew-x\", \"--tw-skew-y\", \"transform\", \"animation\", \"cursor\", \"touch-action\", \"--tw-pan-x\", \"--tw-pan-y\", \"--tw-pinch-zoom\", \"resize\", \"scroll-snap-type\", \"--tw-scroll-snap-strictness\", \"scroll-snap-align\", \"scroll-snap-stop\", \"scroll-margin\", \"scroll-margin-inline\", \"scroll-margin-block\", \"scroll-margin-inline-start\", \"scroll-margin-inline-end\", \"scroll-margin-top\", \"scroll-margin-right\", \"scroll-margin-bottom\", \"scroll-margin-left\", \"scroll-padding\", \"scroll-padding-inline\", \"scroll-padding-block\", \"scroll-padding-inline-start\", \"scroll-padding-inline-end\", \"scroll-padding-top\", \"scroll-padding-right\", \"scroll-padding-bottom\", \"scroll-padding-left\", \"list-style-position\", \"list-style-type\", \"list-style-image\", \"appearance\", \"columns\", \"break-before\", \"break-inside\", \"break-after\", \"grid-auto-columns\", \"grid-auto-flow\", \"grid-auto-rows\", \"grid-template-columns\", \"grid-template-rows\", \"flex-direction\", \"flex-wrap\", \"place-content\", \"place-items\", \"align-content\", \"align-items\", \"justify-content\", \"justify-items\", \"gap\", \"column-gap\", \"row-gap\", \"--tw-space-x-reverse\", \"--tw-space-y-reverse\", \"divide-x-width\", \"divide-y-width\", \"--tw-divide-y-reverse\", \"divide-style\", \"divide-color\", \"place-self\", \"align-self\", \"justify-self\", \"overflow\", \"overflow-x\", \"overflow-y\", \"overscroll-behavior\", \"overscroll-behavior-x\", \"overscroll-behavior-y\", \"scroll-behavior\", \"border-radius\", \"border-start-radius\", \"border-end-radius\", \"border-top-radius\", \"border-right-radius\", \"border-bottom-radius\", \"border-left-radius\", \"border-start-start-radius\", \"border-start-end-radius\", \"border-end-end-radius\", \"border-end-start-radius\", \"border-top-left-radius\", \"border-top-right-radius\", \"border-bottom-right-radius\", \"border-bottom-left-radius\", \"border-width\", \"border-inline-width\", \"border-block-width\", \"border-inline-start-width\", \"border-inline-end-width\", \"border-top-width\", \"border-right-width\", \"border-bottom-width\", \"border-left-width\", \"border-style\", \"border-inline-style\", \"border-block-style\", \"border-inline-start-style\", \"border-inline-end-style\", \"border-top-style\", \"border-right-style\", \"border-bottom-style\", \"border-left-style\", \"border-color\", \"border-inline-color\", \"border-block-color\", \"border-inline-start-color\", \"border-inline-end-color\", \"border-top-color\", \"border-right-color\", \"border-bottom-color\", \"border-left-color\", \"background-color\", \"background-image\", \"--tw-gradient-position\", \"--tw-gradient-stops\", \"--tw-gradient-via-stops\", \"--tw-gradient-from\", \"--tw-gradient-from-position\", \"--tw-gradient-via\", \"--tw-gradient-via-position\", \"--tw-gradient-to\", \"--tw-gradient-to-position\", \"mask-image\", \"--tw-mask-top\", \"--tw-mask-top-from-color\", \"--tw-mask-top-from-position\", \"--tw-mask-top-to-color\", \"--tw-mask-top-to-position\", \"--tw-mask-right\", \"--tw-mask-right-from-color\", \"--tw-mask-right-from-position\", \"--tw-mask-right-to-color\", \"--tw-mask-right-to-position\", \"--tw-mask-bottom\", \"--tw-mask-bottom-from-color\", \"--tw-mask-bottom-from-position\", \"--tw-mask-bottom-to-color\", \"--tw-mask-bottom-to-position\", \"--tw-mask-left\", \"--tw-mask-left-from-color\", \"--tw-mask-left-from-position\", \"--tw-mask-left-to-color\", \"--tw-mask-left-to-position\", \"--tw-mask-linear\", \"--tw-mask-linear-position\", \"--tw-mask-linear-from-color\", \"--tw-mask-linear-from-position\", \"--tw-mask-linear-to-color\", \"--tw-mask-linear-to-position\", \"--tw-mask-radial\", \"--tw-mask-radial-shape\", \"--tw-mask-radial-size\", \"--tw-mask-radial-position\", \"--tw-mask-radial-from-color\", \"--tw-mask-radial-from-position\", \"--tw-mask-radial-to-color\", \"--tw-mask-radial-to-position\", \"--tw-mask-conic\", \"--tw-mask-conic-position\", \"--tw-mask-conic-from-color\", \"--tw-mask-conic-from-position\", \"--tw-mask-conic-to-color\", \"--tw-mask-conic-to-position\", \"box-decoration-break\", \"background-size\", \"background-attachment\", \"background-clip\", \"background-position\", \"background-repeat\", \"background-origin\", \"mask-composite\", \"mask-mode\", \"mask-type\", \"mask-size\", \"mask-clip\", \"mask-position\", \"mask-repeat\", \"mask-origin\", \"fill\", \"stroke\", \"stroke-width\", \"object-fit\", \"object-position\", \"padding\", \"padding-inline\", \"padding-block\", \"padding-inline-start\", \"padding-inline-end\", \"padding-top\", \"padding-right\", \"padding-bottom\", \"padding-left\", \"text-align\", \"text-indent\", \"vertical-align\", \"font-family\", \"font-size\", \"line-height\", \"font-weight\", \"letter-spacing\", \"text-wrap\", \"overflow-wrap\", \"word-break\", \"text-overflow\", \"hyphens\", \"white-space\", \"color\", \"text-transform\", \"font-style\", \"font-stretch\", \"font-variant-numeric\", \"text-decoration-line\", \"text-decoration-color\", \"text-decoration-style\", \"text-decoration-thickness\", \"text-underline-offset\", \"-webkit-font-smoothing\", \"placeholder-color\", \"caret-color\", \"accent-color\", \"color-scheme\", \"opacity\", \"background-blend-mode\", \"mix-blend-mode\", \"box-shadow\", \"--tw-shadow\", \"--tw-shadow-color\", \"--tw-ring-shadow\", \"--tw-ring-color\", \"--tw-inset-shadow\", \"--tw-inset-shadow-color\", \"--tw-inset-ring-shadow\", \"--tw-inset-ring-color\", \"--tw-ring-offset-width\", \"--tw-ring-offset-color\", \"outline\", \"outline-width\", \"outline-offset\", \"outline-color\", \"--tw-blur\", \"--tw-brightness\", \"--tw-contrast\", \"--tw-drop-shadow\", \"--tw-grayscale\", \"--tw-hue-rotate\", \"--tw-invert\", \"--tw-saturate\", \"--tw-sepia\", \"filter\", \"--tw-backdrop-blur\", \"--tw-backdrop-brightness\", \"--tw-backdrop-contrast\", \"--tw-backdrop-grayscale\", \"--tw-backdrop-hue-rotate\", \"--tw-backdrop-invert\", \"--tw-backdrop-opacity\", \"--tw-backdrop-saturate\", \"--tw-backdrop-sepia\", \"backdrop-filter\", \"transition-property\", \"transition-behavior\", \"transition-delay\", \"transition-duration\", \"transition-timing-function\", \"will-change\", \"contain\", \"content\", \"forced-color-adjust\"]; function he(t, r, { onInvalidCandidate: i } = {}) { let e = new Map, o = [], s = new Map; for (let f of t) { if (r.invalidCandidates.has(f)) { i?.(f); continue } let u = r.parseCandidate(f); if (u.length === 0) { i?.(f); continue } s.set(f, u); } let a = r.getVariantOrder(); for (let [f, u] of s) { let c = false; for (let g of u) { let p = r.compileAstNodes(g); if (p.length !== 0) { c = true; for (let { node: m, propertySort: v } of p) { let k = 0n; for (let x of g.variants) k |= 1n << BigInt(a.get(x)); e.set(m, { properties: v, variants: k, candidate: f }), o.push(m); } } } c || i?.(f); } return o.sort((f, u) => { let c = e.get(f), g = e.get(u); if (c.variants - g.variants !== 0n) return Number(c.variants - g.variants); let p = 0; for (; p < c.properties.order.length && p < g.properties.order.length && c.properties.order[p] === g.properties.order[p];)p += 1; return (c.properties.order[p] ?? 1 / 0) - (g.properties.order[p] ?? 1 / 0) || g.properties.count - c.properties.count || st(c.candidate, g.candidate) }), { astNodes: o, nodeSorting: e } } function Ir(t, r) { let i = jo(t, r); if (i.length === 0) return []; let e = [], o = `.${me(t.raw)}`; for (let s of i) { let a = Lo(s); (t.important || r.important) && Mr(s); let f = { kind: \"rule\", selector: o, nodes: s }; for (let u of t.variants) if (Te(f, u, r.variants) === null) return []; e.push({ node: f, propertySort: a }); } return e } function Te(t, r, i, e = 0) { if (r.kind === \"arbitrary\") { if (r.relative && e === 0) return null; t.nodes = [G(r.selector, t.nodes)]; return } let { applyFn: o } = i.get(r.root); if (r.kind === \"compound\") { let a = F(\"@slot\"); if (Te(a, r.variant, i, e + 1) === null || r.root === \"not\" && a.nodes.length > 1) return null; for (let u of a.nodes) if (u.kind !== \"rule\" && u.kind !== \"at-rule\" || o(u, r) === null) return null; U(a.nodes, u => { if ((u.kind === \"rule\" || u.kind === \"at-rule\") && u.nodes.length <= 0) return u.nodes = t.nodes, 1 }), t.nodes = a.nodes; return } if (o(t, r) === null) return null } function Fr(t) { let r = t.options?.types ?? []; return r.length > 1 && r.includes(\"any\") } function jo(t, r) { if (t.kind === \"arbitrary\") { let a = t.value; return t.modifier && (a = Z(a, t.modifier, r.theme)), a === null ? [] : [[l(t.property, a)]] } let i = r.utilities.get(t.root) ?? [], e = [], o = i.filter(a => !Fr(a)); for (let a of o) { if (a.kind !== t.kind) continue; let f = a.compileFn(t); if (f !== void 0) { if (f === null) return e; e.push(f); } } if (e.length > 0) return e; let s = i.filter(a => Fr(a)); for (let a of s) { if (a.kind !== t.kind) continue; let f = a.compileFn(t); if (f !== void 0) { if (f === null) return e; e.push(f); } } return e } function Mr(t) { for (let r of t) r.kind !== \"at-root\" && (r.kind === \"declaration\" ? r.important = true : (r.kind === \"rule\" || r.kind === \"at-rule\") && Mr(r.nodes)); } function Lo(t) { let r = new Set, i = 0, e = t.slice(), o = false; for (; e.length > 0;) { let s = e.shift(); if (s.kind === \"declaration\") { if (s.value === void 0 || (i++, o)) continue; if (s.property === \"--tw-sort\") { let f = It.indexOf(s.value ?? \"\"); if (f !== -1) { r.add(f), o = true; continue } } let a = It.indexOf(s.property); a !== -1 && r.add(a); } else if (s.kind === \"rule\" || s.kind === \"at-rule\") for (let a of s.nodes) e.push(a); } return { order: Array.from(r).sort((s, a) => s - a), count: i } } function je(t, r) {\n  \t    let i = 0, e = G(\"&\", t), o = new Set, s = new B(() => new Set), a = new B(() => new Set); U([e], (p, { parent: m, path: v }) => { if (p.kind === \"at-rule\") { if (p.name === \"@keyframes\") return U(p.nodes, k => { if (k.kind === \"at-rule\" && k.name === \"@apply\") throw new Error(\"You cannot use `@apply` inside `@keyframes`.\") }), 1; if (p.name === \"@utility\") { let k = p.params.replace(/-\\*$/, \"\"); a.get(k).add(p), U(p.nodes, x => { if (!(x.kind !== \"at-rule\" || x.name !== \"@apply\")) { o.add(p); for (let y of Br(x, r)) s.get(p).add(y); } }); return } if (p.name === \"@apply\") { if (m === null) return; i |= 1, o.add(m); for (let k of Br(p, r)) for (let x of v) x !== p && o.has(x) && s.get(x).add(k); } } }); let f = new Set, u = [], c = new Set; function g(p, m = []) {\n  \t      if (!f.has(p)) {\n  \t        if (c.has(p)) {\n  \t          let v = m[(m.indexOf(p) + 1) % m.length]; throw p.kind === \"at-rule\" && p.name === \"@utility\" && v.kind === \"at-rule\" && v.name === \"@utility\" && U(p.nodes, k => { if (k.kind !== \"at-rule\" || k.name !== \"@apply\") return; let x = k.params.split(/\\s+/g); for (let y of x) for (let N of r.parseCandidate(y)) switch (N.kind) { case \"arbitrary\": break; case \"static\": case \"functional\": if (v.params.replace(/-\\*$/, \"\") === N.root) throw new Error(`You cannot \\`@apply\\` the \\`${y}\\` utility here because it creates a circular dependency.`); break; } }), new Error(`Circular dependency detected:\n\n${le([p])}\nRelies on:\n\n${le([v])}`)\n  \t        } c.add(p); for (let v of s.get(p)) for (let k of a.get(v)) m.push(p), g(k, m), m.pop(); f.add(p), c.delete(p), u.push(p);\n  \t      }\n  \t    } for (let p of o) g(p); for (let p of u) \"nodes\" in p && U(p.nodes, (m, { replaceWith: v }) => { if (m.kind !== \"at-rule\" || m.name !== \"@apply\") return; let k = m.params.split(/(\\s+)/g), x = {}, y = 0; for (let [N, b] of k.entries()) N % 2 === 0 && (x[b] = y), y += b.length; { let N = Object.keys(x), b = he(N, r, { onInvalidCandidate: _ => { throw new Error(`Cannot apply unknown utility class: ${_}`) } }), V = m.src, R = b.astNodes.map(_ => { let L = b.nodeSorting.get(_)?.candidate, O = L ? x[L] : void 0; if (_ = structuredClone(_), !V || !L || O === void 0) return U([_], I => { I.src = V; }), _; let H = [V[0], V[1], V[2]]; return H[1] += 7 + O, H[2] = H[1] + L.length, U([_], I => { I.src = H; }), _ }), D = []; for (let _ of R) if (_.kind === \"rule\") for (let L of _.nodes) D.push(L); else D.push(_); v(D); } }); return i\n  \t  } function* Br(t, r) { for (let i of t.params.split(/\\s+/g)) for (let e of r.parseCandidate(i)) switch (e.kind) { case \"arbitrary\": break; case \"static\": case \"functional\": yield e.root; break; } } async function Ft(t, r, i, e = 0, o = false) { let s = 0, a = []; return U(t, (f, { replaceWith: u }) => { if (f.kind === \"at-rule\" && (f.name === \"@import\" || f.name === \"@reference\")) { let c = Io(W(f.params)); if (c === null) return; f.name === \"@reference\" && (c.media = \"reference\"), s |= 2; let { uri: g, layer: p, media: m, supports: v } = c; if (g.startsWith(\"data:\") || g.startsWith(\"http://\") || g.startsWith(\"https://\")) return; let k = ue({}, []); return a.push((async () => { if (e > 100) throw new Error(`Exceeded maximum recursion depth while resolving \\`${g}\\` in \\`${r}\\`)`); let x = await i(g, r), y = Se(x.content, { from: o ? x.path : void 0 }); await Ft(y, x.base, i, e + 1, o), k.nodes = Fo(f, [ue({ base: x.base }, y)], p, m, v); })()), u(k), 1 } }), a.length > 0 && await Promise.all(a), s } function Io(t) { let r, i = null, e = null, o = null; for (let s = 0; s < t.length; s++) { let a = t[s]; if (a.kind !== \"separator\") { if (a.kind === \"word\" && !r) { if (!a.value || a.value[0] !== '\"' && a.value[0] !== \"'\") return null; r = a.value.slice(1, -1); continue } if (a.kind === \"function\" && a.value.toLowerCase() === \"url\" || !r) return null; if ((a.kind === \"word\" || a.kind === \"function\") && a.value.toLowerCase() === \"layer\") { if (i) return null; if (o) throw new Error(\"`layer(\\u2026)` in an `@import` should come before any other functions or conditions\"); \"nodes\" in a ? i = J(a.nodes) : i = \"\"; continue } if (a.kind === \"function\" && a.value.toLowerCase() === \"supports\") { if (o) return null; o = J(a.nodes); continue } e = J(t.slice(s)); break } } return r ? { uri: r, layer: i, media: e, supports: o } : null } function Fo(t, r, i, e, o) { let s = r; if (i !== null) { let a = F(\"@layer\", i, s); a.src = t.src, s = [a]; } if (e !== null) { let a = F(\"@media\", e, s); a.src = t.src, s = [a]; } if (o !== null) { let a = F(\"@supports\", o[0] === \"(\" ? o : `(${o})`, s); a.src = t.src, s = [a]; } return s } function Ee(t, r = null) { return Array.isArray(t) && t.length === 2 && typeof t[1] == \"object\" && typeof t[1] !== null ? r ? t[1][r] ?? null : t[0] : Array.isArray(t) && r === null ? t.join(\", \") : typeof t == \"string\" && r === null ? t : null } function Wr(t, { theme: r }, i) { for (let e of i) { let o = ct([e]); o && t.theme.clearNamespace(`--${o}`, 4); } for (let [e, o] of Mo(r)) { if (typeof o != \"string\" && typeof o != \"number\") continue; if (typeof o == \"string\" && (o = o.replace(/<alpha-value>/g, \"1\")), e[0] === \"opacity\" && (typeof o == \"number\" || typeof o == \"string\")) { let a = typeof o == \"string\" ? parseFloat(o) : o; a >= 0 && a <= 1 && (o = a * 100 + \"%\"); } let s = ct(e); s && t.theme.add(`--${s}`, \"\" + o, 7); } if (Object.hasOwn(r, \"fontFamily\")) { let e = 5; { let o = Ee(r.fontFamily.sans); o && t.theme.hasDefault(\"--font-sans\") && (t.theme.add(\"--default-font-family\", o, e), t.theme.add(\"--default-font-feature-settings\", Ee(r.fontFamily.sans, \"fontFeatureSettings\") ?? \"normal\", e), t.theme.add(\"--default-font-variation-settings\", Ee(r.fontFamily.sans, \"fontVariationSettings\") ?? \"normal\", e)); } { let o = Ee(r.fontFamily.mono); o && t.theme.hasDefault(\"--font-mono\") && (t.theme.add(\"--default-mono-font-family\", o, e), t.theme.add(\"--default-mono-font-feature-settings\", Ee(r.fontFamily.mono, \"fontFeatureSettings\") ?? \"normal\", e), t.theme.add(\"--default-mono-font-variation-settings\", Ee(r.fontFamily.mono, \"fontVariationSettings\") ?? \"normal\", e)); } } return r } function Mo(t) { let r = []; return qr(t, [], (i, e) => { if (Wo(i)) return r.push([e, i]), 1; if (qo(i)) { r.push([e, i[0]]); for (let o of Reflect.ownKeys(i[1])) r.push([[...e, `-${o}`], i[1][o]]); return 1 } if (Array.isArray(i) && i.every(o => typeof o == \"string\")) return e[0] === \"fontSize\" ? (r.push([e, i[0]]), i.length >= 2 && r.push([[...e, \"-line-height\"], i[1]])) : r.push([e, i.join(\", \")]), 1 }), r } var Bo = /^[a-zA-Z0-9-_%/\\.]+$/; function ct(t) { if (t[0] === \"container\") return null; t = structuredClone(t), t[0] === \"animation\" && (t[0] = \"animate\"), t[0] === \"aspectRatio\" && (t[0] = \"aspect\"), t[0] === \"borderRadius\" && (t[0] = \"radius\"), t[0] === \"boxShadow\" && (t[0] = \"shadow\"), t[0] === \"colors\" && (t[0] = \"color\"), t[0] === \"containers\" && (t[0] = \"container\"), t[0] === \"fontFamily\" && (t[0] = \"font\"), t[0] === \"fontSize\" && (t[0] = \"text\"), t[0] === \"letterSpacing\" && (t[0] = \"tracking\"), t[0] === \"lineHeight\" && (t[0] = \"leading\"), t[0] === \"maxWidth\" && (t[0] = \"container\"), t[0] === \"screens\" && (t[0] = \"breakpoint\"), t[0] === \"transitionTimingFunction\" && (t[0] = \"ease\"); for (let r of t) if (!Bo.test(r)) return null; return t.map((r, i, e) => r === \"1\" && i !== e.length - 1 ? \"\" : r).map(r => r.replaceAll(\".\", \"_\").replace(/([a-z])([A-Z])/g, (i, e, o) => `${e}-${o.toLowerCase()}`)).filter((r, i) => r !== \"DEFAULT\" || i !== t.length - 1).join(\"-\") } function Wo(t) { return typeof t == \"number\" || typeof t == \"string\" } function qo(t) { if (!Array.isArray(t) || t.length !== 2 || typeof t[0] != \"string\" && typeof t[0] != \"number\" || t[1] === void 0 || t[1] === null || typeof t[1] != \"object\") return false; for (let r of Reflect.ownKeys(t[1])) if (typeof r != \"string\" || typeof t[1][r] != \"string\" && typeof t[1][r] != \"number\") return false; return true } function qr(t, r = [], i) { for (let e of Reflect.ownKeys(t)) { let o = t[e]; if (o == null) continue; let s = [...r, e], a = i(o, s) ?? 0; if (a !== 1) { if (a === 2) return 2; if (!(!Array.isArray(o) && typeof o != \"object\") && qr(o, s, i) === 2) return 2 } } } function ft(t) { let r = []; for (let i of z(t, \".\")) { if (!i.includes(\"[\")) { r.push(i); continue } let e = 0; for (; ;) { let o = i.indexOf(\"[\", e), s = i.indexOf(\"]\", o); if (o === -1 || s === -1) break; o > e && r.push(i.slice(e, o)), r.push(i.slice(o + 1, s)), e = s + 1; } e <= i.length - 1 && r.push(i.slice(e)); } return r } function Re(t) { if (Object.prototype.toString.call(t) !== \"[object Object]\") return false; let r = Object.getPrototypeOf(t); return r === null || Object.getPrototypeOf(r) === null } function Le(t, r, i, e = []) { for (let o of r) if (o != null) for (let s of Reflect.ownKeys(o)) { e.push(s); let a = i(t[s], o[s], e); a !== void 0 ? t[s] = a : !Re(t[s]) || !Re(o[s]) ? t[s] = o[s] : t[s] = Le({}, [t[s], o[s]], i, e), e.pop(); } return t } function dt(t, r, i) { return function (o, s) { let a = o.lastIndexOf(\"/\"), f = null; a !== -1 && (f = o.slice(a + 1).trim(), o = o.slice(0, a).trim()); let u = (() => { let c = ft(o), [g, p] = Ho(t.theme, c), m = i(Hr(r() ?? {}, c) ?? null); if (typeof m == \"string\" && (m = m.replace(\"<alpha-value>\", \"1\")), typeof g != \"object\") return typeof p != \"object\" && p & 4 ? m ?? g : g; if (m !== null && typeof m == \"object\" && !Array.isArray(m)) { let v = Le({}, [m], (k, x) => x); if (g === null && Object.hasOwn(m, \"__CSS_VALUES__\")) { let k = {}; for (let x in m.__CSS_VALUES__) k[x] = m[x], delete v[x]; g = k; } for (let k in g) k !== \"__CSS_VALUES__\" && (m?.__CSS_VALUES__?.[k] & 4 && Hr(v, k.split(\"-\")) !== void 0 || (v[ve(k)] = g[k])); return v } if (Array.isArray(g) && Array.isArray(p) && Array.isArray(m)) { let v = g[0], k = g[1]; p[0] & 4 && (v = m[0] ?? v); for (let x of Object.keys(k)) p[1][x] & 4 && (k[x] = m[1][x] ?? k[x]); return [v, k] } return g ?? m })(); return f && typeof u == \"string\" && (u = Q(u, f)), u ?? s } } function Ho(t, r) { if (r.length === 1 && r[0].startsWith(\"--\")) return [t.get([r[0]]), t.getOptions(r[0])]; let i = ct(r), e = new Map, o = new B(() => new Map), s = t.namespace(`--${i}`); if (s.size === 0) return [null, 0]; let a = new Map; for (let [g, p] of s) { if (!g || !g.includes(\"--\")) { e.set(g, p), a.set(g, t.getOptions(g ? `--${i}-${g}` : `--${i}`)); continue } let m = g.indexOf(\"--\"), v = g.slice(0, m), k = g.slice(m + 2); k = k.replace(/-([a-z])/g, (x, y) => y.toUpperCase()), o.get(v === \"\" ? null : v).set(k, [p, t.getOptions(`--${i}${g}`)]); } let f = t.getOptions(`--${i}`); for (let [g, p] of o) { let m = e.get(g); if (typeof m != \"string\") continue; let v = {}, k = {}; for (let [x, [y, N]] of p) v[x] = y, k[x] = N; e.set(g, [m, v]), a.set(g, [f, k]); } let u = {}, c = {}; for (let [g, p] of e) Gr(u, [g ?? \"DEFAULT\"], p); for (let [g, p] of a) Gr(c, [g ?? \"DEFAULT\"], p); return r[r.length - 1] === \"DEFAULT\" ? [u?.DEFAULT ?? null, c.DEFAULT ?? 0] : \"DEFAULT\" in u && Object.keys(u).length === 1 ? [u.DEFAULT, c.DEFAULT ?? 0] : (u.__CSS_VALUES__ = c, [u, c]) } function Hr(t, r) { for (let i = 0; i < r.length; ++i) { let e = r[i]; if (t?.[e] === void 0) { if (r[i + 1] === void 0) return; r[i + 1] = `${e}-${r[i + 1]}`; continue } t = t[e]; } return t } function Gr(t, r, i) { for (let e of r.slice(0, -1)) t[e] === void 0 && (t[e] = {}), t = t[e]; t[r[r.length - 1]] = i; } function Go(t) { return { kind: \"combinator\", value: t } } function Yo(t, r) { return { kind: \"function\", value: t, nodes: r } } function Ie(t) { return { kind: \"selector\", value: t } } function Jo(t) { return { kind: \"separator\", value: t } } function Qo(t) { return { kind: \"value\", value: t } } function Fe(t, r, i = null) { for (let e = 0; e < t.length; e++) { let o = t[e], s = false, a = 0, f = r(o, { parent: i, replaceWith(u) { s || (s = true, Array.isArray(u) ? u.length === 0 ? (t.splice(e, 1), a = 0) : u.length === 1 ? (t[e] = u[0], a = 1) : (t.splice(e, 1, ...u), a = u.length) : (t[e] = u, a = 1)); } }) ?? 0; if (s) { f === 0 ? e-- : e += a - 1; continue } if (f === 2) return 2; if (f !== 1 && o.kind === \"function\" && Fe(o.nodes, r, o) === 2) return 2 } } function Me(t) { let r = \"\"; for (let i of t) switch (i.kind) { case \"combinator\": case \"selector\": case \"separator\": case \"value\": { r += i.value; break } case \"function\": r += i.value + \"(\" + Me(i.nodes) + \")\"; }return r } var Yr = 92, Zo = 93, Jr = 41, Xo = 58, Qr = 44, en = 34, tn = 46, Zr = 62, Xr = 10, rn = 35, ei = 91, ti = 40, ri = 43, on = 39, ii = 32, oi = 9, ni = 126; function pt(t) {\n  \t    t = t.replaceAll(`\\r\n`, `\n`); let r = [], i = [], e = null, o = \"\", s; for (let a = 0; a < t.length; a++) { let f = t.charCodeAt(a); switch (f) { case Qr: case Zr: case Xr: case ii: case ri: case oi: case ni: { if (o.length > 0) { let m = Ie(o); e ? e.nodes.push(m) : r.push(m), o = \"\"; } let u = a, c = a + 1; for (; c < t.length && (s = t.charCodeAt(c), !(s !== Qr && s !== Zr && s !== Xr && s !== ii && s !== ri && s !== oi && s !== ni)); c++); a = c - 1; let g = t.slice(u, c), p = g.trim() === \",\" ? Jo(g) : Go(g); e ? e.nodes.push(p) : r.push(p); break } case ti: { let u = Yo(o, []); if (o = \"\", u.value !== \":not\" && u.value !== \":where\" && u.value !== \":has\" && u.value !== \":is\") { let c = a + 1, g = 0; for (let m = a + 1; m < t.length; m++) { if (s = t.charCodeAt(m), s === ti) { g++; continue } if (s === Jr) { if (g === 0) { a = m; break } g--; } } let p = a; u.nodes.push(Qo(t.slice(c, p))), o = \"\", a = p, e ? e.nodes.push(u) : r.push(u); break } e ? e.nodes.push(u) : r.push(u), i.push(u), e = u; break } case Jr: { let u = i.pop(); if (o.length > 0) { let c = Ie(o); u.nodes.push(c), o = \"\"; } i.length > 0 ? e = i[i.length - 1] : e = null; break } case tn: case Xo: case rn: { if (o.length > 0) { let u = Ie(o); e ? e.nodes.push(u) : r.push(u); } o = String.fromCharCode(f); break } case ei: { if (o.length > 0) { let g = Ie(o); e ? e.nodes.push(g) : r.push(g); } o = \"\"; let u = a, c = 0; for (let g = a + 1; g < t.length; g++) { if (s = t.charCodeAt(g), s === ei) { c++; continue } if (s === Zo) { if (c === 0) { a = g; break } c--; } } o += t.slice(u, a + 1); break } case on: case en: { let u = a; for (let c = a + 1; c < t.length; c++)if (s = t.charCodeAt(c), s === Yr) c += 1; else if (s === f) { a = c; break } o += t.slice(u, a + 1); break } case Yr: { let u = t.charCodeAt(a + 1); o += String.fromCharCode(f) + String.fromCharCode(u), a += 1; break } default: o += String.fromCharCode(f); } } return o.length > 0 && r.push(Ie(o)), r\n  \t  } var li = /^[a-z@][a-zA-Z0-9/%._-]*$/; function Mt({ designSystem: t, ast: r, resolvedConfig: i, featuresRef: e, referenceMode: o }) { let s = { addBase(a) { if (o) return; let f = ce(a); e.current |= Ve(f, t), r.push(F(\"@layer\", \"base\", f)); }, addVariant(a, f) { if (!ut.test(a)) throw new Error(`\\`addVariant('${a}')\\` defines an invalid variant name. Variants should only contain alphanumeric, dashes or underscore characters.`); if (typeof f == \"string\") { if (f.includes(\":merge(\")) return } else if (Array.isArray(f)) { if (f.some(c => c.includes(\":merge(\"))) return } else if (typeof f == \"object\") { let c = function (g, p) { return Object.entries(g).some(([m, v]) => m.includes(p) || typeof v == \"object\" && c(v, p)) }; if (c(f, \":merge(\")) return } typeof f == \"string\" || Array.isArray(f) ? t.variants.static(a, c => { c.nodes = ai(f, c.nodes); }, { compounds: Ae(typeof f == \"string\" ? [f] : f) }) : typeof f == \"object\" && t.variants.fromAst(a, ce(f)); }, matchVariant(a, f, u) { function c(p, m, v) { let k = f(p, { modifier: m?.value ?? null }); return ai(k, v) } try { let p = f(\"a\", { modifier: null }); if (typeof p == \"string\" && p.includes(\":merge(\")) return; if (Array.isArray(p) && p.some(m => m.includes(\":merge(\"))) return } catch { } let g = Object.keys(u?.values ?? {}); t.variants.group(() => { t.variants.functional(a, (p, m) => { if (!m.value) { if (u?.values && \"DEFAULT\" in u.values) { p.nodes = c(u.values.DEFAULT, m.modifier, p.nodes); return } return null } if (m.value.kind === \"arbitrary\") p.nodes = c(m.value.value, m.modifier, p.nodes); else if (m.value.kind === \"named\" && u?.values) { let v = u.values[m.value.value]; if (typeof v != \"string\") return; p.nodes = c(v, m.modifier, p.nodes); } }); }, (p, m) => { if (p.kind !== \"functional\" || m.kind !== \"functional\") return 0; let v = p.value ? p.value.value : \"DEFAULT\", k = m.value ? m.value.value : \"DEFAULT\", x = u?.values?.[v] ?? v, y = u?.values?.[k] ?? k; if (u && typeof u.sort == \"function\") return u.sort({ value: x, modifier: p.modifier?.value ?? null }, { value: y, modifier: m.modifier?.value ?? null }); let N = g.indexOf(v), b = g.indexOf(k); return N = N === -1 ? g.length : N, b = b === -1 ? g.length : b, N !== b ? N - b : x < y ? -1 : 1 }); }, addUtilities(a) { a = Array.isArray(a) ? a : [a]; let f = a.flatMap(c => Object.entries(c)); f = f.flatMap(([c, g]) => z(c, \",\").map(p => [p.trim(), g])); let u = new B(() => []); for (let [c, g] of f) { if (c.startsWith(\"@keyframes \")) { o || r.push(G(c, ce(g))); continue } let p = pt(c), m = false; if (Fe(p, v => { if (v.kind === \"selector\" && v.value[0] === \".\" && li.test(v.value.slice(1))) { let k = v.value; v.value = \"&\"; let x = Me(p), y = k.slice(1), N = x === \"&\" ? ce(g) : [G(x, ce(g))]; u.get(y).push(...N), m = true, v.value = k; return } if (v.kind === \"function\" && v.value === \":not\") return 1 }), !m) throw new Error(`\\`addUtilities({ '${c}' : \\u2026 })\\` defines an invalid utility selector. Utilities must be a single class name and start with a lowercase letter, eg. \\`.scrollbar-none\\`.`) } for (let [c, g] of u) t.theme.prefix && U(g, p => { if (p.kind === \"rule\") { let m = pt(p.selector); Fe(m, v => { v.kind === \"selector\" && v.value[0] === \".\" && (v.value = `.${t.theme.prefix}\\\\:${v.value.slice(1)}`); }), p.selector = Me(m); } }), t.utilities.static(c, p => { let m = structuredClone(g); return si(m, c, p.raw), e.current |= je(m, t), m }); }, matchUtilities(a, f) { let u = f?.type ? Array.isArray(f?.type) ? f.type : [f.type] : [\"any\"]; for (let [g, p] of Object.entries(a)) { let m = function ({ negative: v }) { return k => { if (k.value?.kind === \"arbitrary\" && u.length > 0 && !u.includes(\"any\") && (k.value.dataType && !u.includes(k.value.dataType) || !k.value.dataType && !Y(k.value.value, u))) return; let x = u.includes(\"color\"), y = null, N = false; { let R = f?.values ?? {}; x && (R = Object.assign({ inherit: \"inherit\", transparent: \"transparent\", current: \"currentcolor\" }, R)), k.value ? k.value.kind === \"arbitrary\" ? y = k.value.value : k.value.fraction && R[k.value.fraction] ? (y = R[k.value.fraction], N = true) : R[k.value.value] ? y = R[k.value.value] : R.__BARE_VALUE__ && (y = R.__BARE_VALUE__(k.value) ?? null, N = (k.value.fraction !== null && y?.includes(\"/\")) ?? false) : y = R.DEFAULT ?? null; } if (y === null) return; let b; { let R = f?.modifiers ?? null; k.modifier ? R === \"any\" || k.modifier.kind === \"arbitrary\" ? b = k.modifier.value : R?.[k.modifier.value] ? b = R[k.modifier.value] : x && !Number.isNaN(Number(k.modifier.value)) ? b = `${k.modifier.value}%` : b = null : b = null; } if (k.modifier && b === null && !N) return k.value?.kind === \"arbitrary\" ? null : void 0; x && b !== null && (y = Q(y, b)), v && (y = `calc(${y} * -1)`); let V = ce(p(y, { modifier: b })); return si(V, g, k.raw), e.current |= je(V, t), V } }; if (!li.test(g)) throw new Error(`\\`matchUtilities({ '${g}' : \\u2026 })\\` defines an invalid utility name. Utilities should be alphanumeric and start with a lowercase letter, eg. \\`scrollbar\\`.`); f?.supportsNegativeValues && t.utilities.functional(`-${g}`, m({ negative: true }), { types: u }), t.utilities.functional(g, m({ negative: false }), { types: u }), t.utilities.suggest(g, () => { let v = f?.values ?? {}, k = new Set(Object.keys(v)); k.delete(\"__BARE_VALUE__\"), k.has(\"DEFAULT\") && (k.delete(\"DEFAULT\"), k.add(null)); let x = f?.modifiers ?? {}, y = x === \"any\" ? [] : Object.keys(x); return [{ supportsNegative: f?.supportsNegativeValues ?? false, values: Array.from(k), modifiers: y }] }); } }, addComponents(a, f) { this.addUtilities(a, f); }, matchComponents(a, f) { this.matchUtilities(a, f); }, theme: dt(t, () => i.theme ?? {}, a => a), prefix(a) { return a }, config(a, f) { let u = i; if (!a) return u; let c = ft(a); for (let g = 0; g < c.length; ++g) { let p = c[g]; if (u[p] === void 0) return f; u = u[p]; } return u ?? f } }; return s.addComponents = s.addComponents.bind(s), s.matchComponents = s.matchComponents.bind(s), s } function ce(t) { let r = []; t = Array.isArray(t) ? t : [t]; let i = t.flatMap(e => Object.entries(e)); for (let [e, o] of i) if (typeof o != \"object\") { if (!e.startsWith(\"--\")) { if (o === \"@slot\") { r.push(G(e, [F(\"@slot\")])); continue } e = e.replace(/([A-Z])/g, \"-$1\").toLowerCase(); } r.push(l(e, String(o))); } else if (Array.isArray(o)) for (let s of o) typeof s == \"string\" ? r.push(l(e, s)) : r.push(G(e, ce(s))); else o !== null && r.push(G(e, ce(o))); return r } function ai(t, r) { return (typeof t == \"string\" ? [t] : t).flatMap(e => { if (e.trim().endsWith(\"}\")) { let o = e.replace(\"}\", \"{@slot}}\"), s = Se(o); return Lt(s, r), s } else return G(e, r) }) } function si(t, r, i) { U(t, e => { if (e.kind === \"rule\") { let o = pt(e.selector); Fe(o, s => { s.kind === \"selector\" && s.value === `.${r}` && (s.value = `.${me(i)}`); }), e.selector = Me(o); } }); } function ui(t, r, i) { for (let e of ln(r)) t.theme.addKeyframes(e); } function ln(t) { let r = []; if (\"keyframes\" in t.theme) for (let [i, e] of Object.entries(t.theme.keyframes)) r.push(F(\"@keyframes\", i, ce(e))); return r } var mt = { inherit: \"inherit\", current: \"currentcolor\", transparent: \"transparent\", black: \"#000\", white: \"#fff\", slate: { 50: \"oklch(98.4% 0.003 247.858)\", 100: \"oklch(96.8% 0.007 247.896)\", 200: \"oklch(92.9% 0.013 255.508)\", 300: \"oklch(86.9% 0.022 252.894)\", 400: \"oklch(70.4% 0.04 256.788)\", 500: \"oklch(55.4% 0.046 257.417)\", 600: \"oklch(44.6% 0.043 257.281)\", 700: \"oklch(37.2% 0.044 257.287)\", 800: \"oklch(27.9% 0.041 260.031)\", 900: \"oklch(20.8% 0.042 265.755)\", 950: \"oklch(12.9% 0.042 264.695)\" }, gray: { 50: \"oklch(98.5% 0.002 247.839)\", 100: \"oklch(96.7% 0.003 264.542)\", 200: \"oklch(92.8% 0.006 264.531)\", 300: \"oklch(87.2% 0.01 258.338)\", 400: \"oklch(70.7% 0.022 261.325)\", 500: \"oklch(55.1% 0.027 264.364)\", 600: \"oklch(44.6% 0.03 256.802)\", 700: \"oklch(37.3% 0.034 259.733)\", 800: \"oklch(27.8% 0.033 256.848)\", 900: \"oklch(21% 0.034 264.665)\", 950: \"oklch(13% 0.028 261.692)\" }, zinc: { 50: \"oklch(98.5% 0 0)\", 100: \"oklch(96.7% 0.001 286.375)\", 200: \"oklch(92% 0.004 286.32)\", 300: \"oklch(87.1% 0.006 286.286)\", 400: \"oklch(70.5% 0.015 286.067)\", 500: \"oklch(55.2% 0.016 285.938)\", 600: \"oklch(44.2% 0.017 285.786)\", 700: \"oklch(37% 0.013 285.805)\", 800: \"oklch(27.4% 0.006 286.033)\", 900: \"oklch(21% 0.006 285.885)\", 950: \"oklch(14.1% 0.005 285.823)\" }, neutral: { 50: \"oklch(98.5% 0 0)\", 100: \"oklch(97% 0 0)\", 200: \"oklch(92.2% 0 0)\", 300: \"oklch(87% 0 0)\", 400: \"oklch(70.8% 0 0)\", 500: \"oklch(55.6% 0 0)\", 600: \"oklch(43.9% 0 0)\", 700: \"oklch(37.1% 0 0)\", 800: \"oklch(26.9% 0 0)\", 900: \"oklch(20.5% 0 0)\", 950: \"oklch(14.5% 0 0)\" }, stone: { 50: \"oklch(98.5% 0.001 106.423)\", 100: \"oklch(97% 0.001 106.424)\", 200: \"oklch(92.3% 0.003 48.717)\", 300: \"oklch(86.9% 0.005 56.366)\", 400: \"oklch(70.9% 0.01 56.259)\", 500: \"oklch(55.3% 0.013 58.071)\", 600: \"oklch(44.4% 0.011 73.639)\", 700: \"oklch(37.4% 0.01 67.558)\", 800: \"oklch(26.8% 0.007 34.298)\", 900: \"oklch(21.6% 0.006 56.043)\", 950: \"oklch(14.7% 0.004 49.25)\" }, red: { 50: \"oklch(97.1% 0.013 17.38)\", 100: \"oklch(93.6% 0.032 17.717)\", 200: \"oklch(88.5% 0.062 18.334)\", 300: \"oklch(80.8% 0.114 19.571)\", 400: \"oklch(70.4% 0.191 22.216)\", 500: \"oklch(63.7% 0.237 25.331)\", 600: \"oklch(57.7% 0.245 27.325)\", 700: \"oklch(50.5% 0.213 27.518)\", 800: \"oklch(44.4% 0.177 26.899)\", 900: \"oklch(39.6% 0.141 25.723)\", 950: \"oklch(25.8% 0.092 26.042)\" }, orange: { 50: \"oklch(98% 0.016 73.684)\", 100: \"oklch(95.4% 0.038 75.164)\", 200: \"oklch(90.1% 0.076 70.697)\", 300: \"oklch(83.7% 0.128 66.29)\", 400: \"oklch(75% 0.183 55.934)\", 500: \"oklch(70.5% 0.213 47.604)\", 600: \"oklch(64.6% 0.222 41.116)\", 700: \"oklch(55.3% 0.195 38.402)\", 800: \"oklch(47% 0.157 37.304)\", 900: \"oklch(40.8% 0.123 38.172)\", 950: \"oklch(26.6% 0.079 36.259)\" }, amber: { 50: \"oklch(98.7% 0.022 95.277)\", 100: \"oklch(96.2% 0.059 95.617)\", 200: \"oklch(92.4% 0.12 95.746)\", 300: \"oklch(87.9% 0.169 91.605)\", 400: \"oklch(82.8% 0.189 84.429)\", 500: \"oklch(76.9% 0.188 70.08)\", 600: \"oklch(66.6% 0.179 58.318)\", 700: \"oklch(55.5% 0.163 48.998)\", 800: \"oklch(47.3% 0.137 46.201)\", 900: \"oklch(41.4% 0.112 45.904)\", 950: \"oklch(27.9% 0.077 45.635)\" }, yellow: { 50: \"oklch(98.7% 0.026 102.212)\", 100: \"oklch(97.3% 0.071 103.193)\", 200: \"oklch(94.5% 0.129 101.54)\", 300: \"oklch(90.5% 0.182 98.111)\", 400: \"oklch(85.2% 0.199 91.936)\", 500: \"oklch(79.5% 0.184 86.047)\", 600: \"oklch(68.1% 0.162 75.834)\", 700: \"oklch(55.4% 0.135 66.442)\", 800: \"oklch(47.6% 0.114 61.907)\", 900: \"oklch(42.1% 0.095 57.708)\", 950: \"oklch(28.6% 0.066 53.813)\" }, lime: { 50: \"oklch(98.6% 0.031 120.757)\", 100: \"oklch(96.7% 0.067 122.328)\", 200: \"oklch(93.8% 0.127 124.321)\", 300: \"oklch(89.7% 0.196 126.665)\", 400: \"oklch(84.1% 0.238 128.85)\", 500: \"oklch(76.8% 0.233 130.85)\", 600: \"oklch(64.8% 0.2 131.684)\", 700: \"oklch(53.2% 0.157 131.589)\", 800: \"oklch(45.3% 0.124 130.933)\", 900: \"oklch(40.5% 0.101 131.063)\", 950: \"oklch(27.4% 0.072 132.109)\" }, green: { 50: \"oklch(98.2% 0.018 155.826)\", 100: \"oklch(96.2% 0.044 156.743)\", 200: \"oklch(92.5% 0.084 155.995)\", 300: \"oklch(87.1% 0.15 154.449)\", 400: \"oklch(79.2% 0.209 151.711)\", 500: \"oklch(72.3% 0.219 149.579)\", 600: \"oklch(62.7% 0.194 149.214)\", 700: \"oklch(52.7% 0.154 150.069)\", 800: \"oklch(44.8% 0.119 151.328)\", 900: \"oklch(39.3% 0.095 152.535)\", 950: \"oklch(26.6% 0.065 152.934)\" }, emerald: { 50: \"oklch(97.9% 0.021 166.113)\", 100: \"oklch(95% 0.052 163.051)\", 200: \"oklch(90.5% 0.093 164.15)\", 300: \"oklch(84.5% 0.143 164.978)\", 400: \"oklch(76.5% 0.177 163.223)\", 500: \"oklch(69.6% 0.17 162.48)\", 600: \"oklch(59.6% 0.145 163.225)\", 700: \"oklch(50.8% 0.118 165.612)\", 800: \"oklch(43.2% 0.095 166.913)\", 900: \"oklch(37.8% 0.077 168.94)\", 950: \"oklch(26.2% 0.051 172.552)\" }, teal: { 50: \"oklch(98.4% 0.014 180.72)\", 100: \"oklch(95.3% 0.051 180.801)\", 200: \"oklch(91% 0.096 180.426)\", 300: \"oklch(85.5% 0.138 181.071)\", 400: \"oklch(77.7% 0.152 181.912)\", 500: \"oklch(70.4% 0.14 182.503)\", 600: \"oklch(60% 0.118 184.704)\", 700: \"oklch(51.1% 0.096 186.391)\", 800: \"oklch(43.7% 0.078 188.216)\", 900: \"oklch(38.6% 0.063 188.416)\", 950: \"oklch(27.7% 0.046 192.524)\" }, cyan: { 50: \"oklch(98.4% 0.019 200.873)\", 100: \"oklch(95.6% 0.045 203.388)\", 200: \"oklch(91.7% 0.08 205.041)\", 300: \"oklch(86.5% 0.127 207.078)\", 400: \"oklch(78.9% 0.154 211.53)\", 500: \"oklch(71.5% 0.143 215.221)\", 600: \"oklch(60.9% 0.126 221.723)\", 700: \"oklch(52% 0.105 223.128)\", 800: \"oklch(45% 0.085 224.283)\", 900: \"oklch(39.8% 0.07 227.392)\", 950: \"oklch(30.2% 0.056 229.695)\" }, sky: { 50: \"oklch(97.7% 0.013 236.62)\", 100: \"oklch(95.1% 0.026 236.824)\", 200: \"oklch(90.1% 0.058 230.902)\", 300: \"oklch(82.8% 0.111 230.318)\", 400: \"oklch(74.6% 0.16 232.661)\", 500: \"oklch(68.5% 0.169 237.323)\", 600: \"oklch(58.8% 0.158 241.966)\", 700: \"oklch(50% 0.134 242.749)\", 800: \"oklch(44.3% 0.11 240.79)\", 900: \"oklch(39.1% 0.09 240.876)\", 950: \"oklch(29.3% 0.066 243.157)\" }, blue: { 50: \"oklch(97% 0.014 254.604)\", 100: \"oklch(93.2% 0.032 255.585)\", 200: \"oklch(88.2% 0.059 254.128)\", 300: \"oklch(80.9% 0.105 251.813)\", 400: \"oklch(70.7% 0.165 254.624)\", 500: \"oklch(62.3% 0.214 259.815)\", 600: \"oklch(54.6% 0.245 262.881)\", 700: \"oklch(48.8% 0.243 264.376)\", 800: \"oklch(42.4% 0.199 265.638)\", 900: \"oklch(37.9% 0.146 265.522)\", 950: \"oklch(28.2% 0.091 267.935)\" }, indigo: { 50: \"oklch(96.2% 0.018 272.314)\", 100: \"oklch(93% 0.034 272.788)\", 200: \"oklch(87% 0.065 274.039)\", 300: \"oklch(78.5% 0.115 274.713)\", 400: \"oklch(67.3% 0.182 276.935)\", 500: \"oklch(58.5% 0.233 277.117)\", 600: \"oklch(51.1% 0.262 276.966)\", 700: \"oklch(45.7% 0.24 277.023)\", 800: \"oklch(39.8% 0.195 277.366)\", 900: \"oklch(35.9% 0.144 278.697)\", 950: \"oklch(25.7% 0.09 281.288)\" }, violet: { 50: \"oklch(96.9% 0.016 293.756)\", 100: \"oklch(94.3% 0.029 294.588)\", 200: \"oklch(89.4% 0.057 293.283)\", 300: \"oklch(81.1% 0.111 293.571)\", 400: \"oklch(70.2% 0.183 293.541)\", 500: \"oklch(60.6% 0.25 292.717)\", 600: \"oklch(54.1% 0.281 293.009)\", 700: \"oklch(49.1% 0.27 292.581)\", 800: \"oklch(43.2% 0.232 292.759)\", 900: \"oklch(38% 0.189 293.745)\", 950: \"oklch(28.3% 0.141 291.089)\" }, purple: { 50: \"oklch(97.7% 0.014 308.299)\", 100: \"oklch(94.6% 0.033 307.174)\", 200: \"oklch(90.2% 0.063 306.703)\", 300: \"oklch(82.7% 0.119 306.383)\", 400: \"oklch(71.4% 0.203 305.504)\", 500: \"oklch(62.7% 0.265 303.9)\", 600: \"oklch(55.8% 0.288 302.321)\", 700: \"oklch(49.6% 0.265 301.924)\", 800: \"oklch(43.8% 0.218 303.724)\", 900: \"oklch(38.1% 0.176 304.987)\", 950: \"oklch(29.1% 0.149 302.717)\" }, fuchsia: { 50: \"oklch(97.7% 0.017 320.058)\", 100: \"oklch(95.2% 0.037 318.852)\", 200: \"oklch(90.3% 0.076 319.62)\", 300: \"oklch(83.3% 0.145 321.434)\", 400: \"oklch(74% 0.238 322.16)\", 500: \"oklch(66.7% 0.295 322.15)\", 600: \"oklch(59.1% 0.293 322.896)\", 700: \"oklch(51.8% 0.253 323.949)\", 800: \"oklch(45.2% 0.211 324.591)\", 900: \"oklch(40.1% 0.17 325.612)\", 950: \"oklch(29.3% 0.136 325.661)\" }, pink: { 50: \"oklch(97.1% 0.014 343.198)\", 100: \"oklch(94.8% 0.028 342.258)\", 200: \"oklch(89.9% 0.061 343.231)\", 300: \"oklch(82.3% 0.12 346.018)\", 400: \"oklch(71.8% 0.202 349.761)\", 500: \"oklch(65.6% 0.241 354.308)\", 600: \"oklch(59.2% 0.249 0.584)\", 700: \"oklch(52.5% 0.223 3.958)\", 800: \"oklch(45.9% 0.187 3.815)\", 900: \"oklch(40.8% 0.153 2.432)\", 950: \"oklch(28.4% 0.109 3.907)\" }, rose: { 50: \"oklch(96.9% 0.015 12.422)\", 100: \"oklch(94.1% 0.03 12.58)\", 200: \"oklch(89.2% 0.058 10.001)\", 300: \"oklch(81% 0.117 11.638)\", 400: \"oklch(71.2% 0.194 13.428)\", 500: \"oklch(64.5% 0.246 16.439)\", 600: \"oklch(58.6% 0.253 17.585)\", 700: \"oklch(51.4% 0.222 16.935)\", 800: \"oklch(45.5% 0.188 13.697)\", 900: \"oklch(41% 0.159 10.272)\", 950: \"oklch(27.1% 0.105 12.094)\" } }; function Ce(t) { return { __BARE_VALUE__: t } } var ae = Ce(t => { if (E(t.value)) return t.value }), ie = Ce(t => { if (E(t.value)) return `${t.value}%` }), ke = Ce(t => { if (E(t.value)) return `${t.value}px` }), ci = Ce(t => { if (E(t.value)) return `${t.value}ms` }), gt = Ce(t => { if (E(t.value)) return `${t.value}deg` }), an = Ce(t => { if (t.fraction === null) return; let [r, i] = z(t.fraction, \"/\"); if (!(!E(r) || !E(i))) return t.fraction }), fi = Ce(t => { if (E(Number(t.value))) return `repeat(${t.value}, minmax(0, 1fr))` }), di = { accentColor: ({ theme: t }) => t(\"colors\"), animation: { none: \"none\", spin: \"spin 1s linear infinite\", ping: \"ping 1s cubic-bezier(0, 0, 0.2, 1) infinite\", pulse: \"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite\", bounce: \"bounce 1s infinite\" }, aria: { busy: 'busy=\"true\"', checked: 'checked=\"true\"', disabled: 'disabled=\"true\"', expanded: 'expanded=\"true\"', hidden: 'hidden=\"true\"', pressed: 'pressed=\"true\"', readonly: 'readonly=\"true\"', required: 'required=\"true\"', selected: 'selected=\"true\"' }, aspectRatio: { auto: \"auto\", square: \"1 / 1\", video: \"16 / 9\", ...an }, backdropBlur: ({ theme: t }) => t(\"blur\"), backdropBrightness: ({ theme: t }) => ({ ...t(\"brightness\"), ...ie }), backdropContrast: ({ theme: t }) => ({ ...t(\"contrast\"), ...ie }), backdropGrayscale: ({ theme: t }) => ({ ...t(\"grayscale\"), ...ie }), backdropHueRotate: ({ theme: t }) => ({ ...t(\"hueRotate\"), ...gt }), backdropInvert: ({ theme: t }) => ({ ...t(\"invert\"), ...ie }), backdropOpacity: ({ theme: t }) => ({ ...t(\"opacity\"), ...ie }), backdropSaturate: ({ theme: t }) => ({ ...t(\"saturate\"), ...ie }), backdropSepia: ({ theme: t }) => ({ ...t(\"sepia\"), ...ie }), backgroundColor: ({ theme: t }) => t(\"colors\"), backgroundImage: { none: \"none\", \"gradient-to-t\": \"linear-gradient(to top, var(--tw-gradient-stops))\", \"gradient-to-tr\": \"linear-gradient(to top right, var(--tw-gradient-stops))\", \"gradient-to-r\": \"linear-gradient(to right, var(--tw-gradient-stops))\", \"gradient-to-br\": \"linear-gradient(to bottom right, var(--tw-gradient-stops))\", \"gradient-to-b\": \"linear-gradient(to bottom, var(--tw-gradient-stops))\", \"gradient-to-bl\": \"linear-gradient(to bottom left, var(--tw-gradient-stops))\", \"gradient-to-l\": \"linear-gradient(to left, var(--tw-gradient-stops))\", \"gradient-to-tl\": \"linear-gradient(to top left, var(--tw-gradient-stops))\" }, backgroundOpacity: ({ theme: t }) => t(\"opacity\"), backgroundPosition: { bottom: \"bottom\", center: \"center\", left: \"left\", \"left-bottom\": \"left bottom\", \"left-top\": \"left top\", right: \"right\", \"right-bottom\": \"right bottom\", \"right-top\": \"right top\", top: \"top\" }, backgroundSize: { auto: \"auto\", cover: \"cover\", contain: \"contain\" }, blur: { 0: \"0\", none: \"\", sm: \"4px\", DEFAULT: \"8px\", md: \"12px\", lg: \"16px\", xl: \"24px\", \"2xl\": \"40px\", \"3xl\": \"64px\" }, borderColor: ({ theme: t }) => ({ DEFAULT: \"currentcolor\", ...t(\"colors\") }), borderOpacity: ({ theme: t }) => t(\"opacity\"), borderRadius: { none: \"0px\", sm: \"0.125rem\", DEFAULT: \"0.25rem\", md: \"0.375rem\", lg: \"0.5rem\", xl: \"0.75rem\", \"2xl\": \"1rem\", \"3xl\": \"1.5rem\", full: \"9999px\" }, borderSpacing: ({ theme: t }) => t(\"spacing\"), borderWidth: { DEFAULT: \"1px\", 0: \"0px\", 2: \"2px\", 4: \"4px\", 8: \"8px\", ...ke }, boxShadow: { sm: \"0 1px 2px 0 rgb(0 0 0 / 0.05)\", DEFAULT: \"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)\", md: \"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)\", lg: \"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)\", xl: \"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)\", \"2xl\": \"0 25px 50px -12px rgb(0 0 0 / 0.25)\", inner: \"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)\", none: \"none\" }, boxShadowColor: ({ theme: t }) => t(\"colors\"), brightness: { 0: \"0\", 50: \".5\", 75: \".75\", 90: \".9\", 95: \".95\", 100: \"1\", 105: \"1.05\", 110: \"1.1\", 125: \"1.25\", 150: \"1.5\", 200: \"2\", ...ie }, caretColor: ({ theme: t }) => t(\"colors\"), colors: () => ({ ...mt }), columns: { auto: \"auto\", 1: \"1\", 2: \"2\", 3: \"3\", 4: \"4\", 5: \"5\", 6: \"6\", 7: \"7\", 8: \"8\", 9: \"9\", 10: \"10\", 11: \"11\", 12: \"12\", \"3xs\": \"16rem\", \"2xs\": \"18rem\", xs: \"20rem\", sm: \"24rem\", md: \"28rem\", lg: \"32rem\", xl: \"36rem\", \"2xl\": \"42rem\", \"3xl\": \"48rem\", \"4xl\": \"56rem\", \"5xl\": \"64rem\", \"6xl\": \"72rem\", \"7xl\": \"80rem\", ...ae }, container: {}, content: { none: \"none\" }, contrast: { 0: \"0\", 50: \".5\", 75: \".75\", 100: \"1\", 125: \"1.25\", 150: \"1.5\", 200: \"2\", ...ie }, cursor: { auto: \"auto\", default: \"default\", pointer: \"pointer\", wait: \"wait\", text: \"text\", move: \"move\", help: \"help\", \"not-allowed\": \"not-allowed\", none: \"none\", \"context-menu\": \"context-menu\", progress: \"progress\", cell: \"cell\", crosshair: \"crosshair\", \"vertical-text\": \"vertical-text\", alias: \"alias\", copy: \"copy\", \"no-drop\": \"no-drop\", grab: \"grab\", grabbing: \"grabbing\", \"all-scroll\": \"all-scroll\", \"col-resize\": \"col-resize\", \"row-resize\": \"row-resize\", \"n-resize\": \"n-resize\", \"e-resize\": \"e-resize\", \"s-resize\": \"s-resize\", \"w-resize\": \"w-resize\", \"ne-resize\": \"ne-resize\", \"nw-resize\": \"nw-resize\", \"se-resize\": \"se-resize\", \"sw-resize\": \"sw-resize\", \"ew-resize\": \"ew-resize\", \"ns-resize\": \"ns-resize\", \"nesw-resize\": \"nesw-resize\", \"nwse-resize\": \"nwse-resize\", \"zoom-in\": \"zoom-in\", \"zoom-out\": \"zoom-out\" }, divideColor: ({ theme: t }) => t(\"borderColor\"), divideOpacity: ({ theme: t }) => t(\"borderOpacity\"), divideWidth: ({ theme: t }) => ({ ...t(\"borderWidth\"), ...ke }), dropShadow: { sm: \"0 1px 1px rgb(0 0 0 / 0.05)\", DEFAULT: [\"0 1px 2px rgb(0 0 0 / 0.1)\", \"0 1px 1px rgb(0 0 0 / 0.06)\"], md: [\"0 4px 3px rgb(0 0 0 / 0.07)\", \"0 2px 2px rgb(0 0 0 / 0.06)\"], lg: [\"0 10px 8px rgb(0 0 0 / 0.04)\", \"0 4px 3px rgb(0 0 0 / 0.1)\"], xl: [\"0 20px 13px rgb(0 0 0 / 0.03)\", \"0 8px 5px rgb(0 0 0 / 0.08)\"], \"2xl\": \"0 25px 25px rgb(0 0 0 / 0.15)\", none: \"0 0 #0000\" }, fill: ({ theme: t }) => t(\"colors\"), flex: { 1: \"1 1 0%\", auto: \"1 1 auto\", initial: \"0 1 auto\", none: \"none\" }, flexBasis: ({ theme: t }) => ({ auto: \"auto\", \"1/2\": \"50%\", \"1/3\": \"33.333333%\", \"2/3\": \"66.666667%\", \"1/4\": \"25%\", \"2/4\": \"50%\", \"3/4\": \"75%\", \"1/5\": \"20%\", \"2/5\": \"40%\", \"3/5\": \"60%\", \"4/5\": \"80%\", \"1/6\": \"16.666667%\", \"2/6\": \"33.333333%\", \"3/6\": \"50%\", \"4/6\": \"66.666667%\", \"5/6\": \"83.333333%\", \"1/12\": \"8.333333%\", \"2/12\": \"16.666667%\", \"3/12\": \"25%\", \"4/12\": \"33.333333%\", \"5/12\": \"41.666667%\", \"6/12\": \"50%\", \"7/12\": \"58.333333%\", \"8/12\": \"66.666667%\", \"9/12\": \"75%\", \"10/12\": \"83.333333%\", \"11/12\": \"91.666667%\", full: \"100%\", ...t(\"spacing\") }), flexGrow: { 0: \"0\", DEFAULT: \"1\", ...ae }, flexShrink: { 0: \"0\", DEFAULT: \"1\", ...ae }, fontFamily: { sans: [\"ui-sans-serif\", \"system-ui\", \"sans-serif\", '\"Apple Color Emoji\"', '\"Segoe UI Emoji\"', '\"Segoe UI Symbol\"', '\"Noto Color Emoji\"'], serif: [\"ui-serif\", \"Georgia\", \"Cambria\", '\"Times New Roman\"', \"Times\", \"serif\"], mono: [\"ui-monospace\", \"SFMono-Regular\", \"Menlo\", \"Monaco\", \"Consolas\", '\"Liberation Mono\"', '\"Courier New\"', \"monospace\"] }, fontSize: { xs: [\"0.75rem\", { lineHeight: \"1rem\" }], sm: [\"0.875rem\", { lineHeight: \"1.25rem\" }], base: [\"1rem\", { lineHeight: \"1.5rem\" }], lg: [\"1.125rem\", { lineHeight: \"1.75rem\" }], xl: [\"1.25rem\", { lineHeight: \"1.75rem\" }], \"2xl\": [\"1.5rem\", { lineHeight: \"2rem\" }], \"3xl\": [\"1.875rem\", { lineHeight: \"2.25rem\" }], \"4xl\": [\"2.25rem\", { lineHeight: \"2.5rem\" }], \"5xl\": [\"3rem\", { lineHeight: \"1\" }], \"6xl\": [\"3.75rem\", { lineHeight: \"1\" }], \"7xl\": [\"4.5rem\", { lineHeight: \"1\" }], \"8xl\": [\"6rem\", { lineHeight: \"1\" }], \"9xl\": [\"8rem\", { lineHeight: \"1\" }] }, fontWeight: { thin: \"100\", extralight: \"200\", light: \"300\", normal: \"400\", medium: \"500\", semibold: \"600\", bold: \"700\", extrabold: \"800\", black: \"900\" }, gap: ({ theme: t }) => t(\"spacing\"), gradientColorStops: ({ theme: t }) => t(\"colors\"), gradientColorStopPositions: { \"0%\": \"0%\", \"5%\": \"5%\", \"10%\": \"10%\", \"15%\": \"15%\", \"20%\": \"20%\", \"25%\": \"25%\", \"30%\": \"30%\", \"35%\": \"35%\", \"40%\": \"40%\", \"45%\": \"45%\", \"50%\": \"50%\", \"55%\": \"55%\", \"60%\": \"60%\", \"65%\": \"65%\", \"70%\": \"70%\", \"75%\": \"75%\", \"80%\": \"80%\", \"85%\": \"85%\", \"90%\": \"90%\", \"95%\": \"95%\", \"100%\": \"100%\", ...ie }, grayscale: { 0: \"0\", DEFAULT: \"100%\", ...ie }, gridAutoColumns: { auto: \"auto\", min: \"min-content\", max: \"max-content\", fr: \"minmax(0, 1fr)\" }, gridAutoRows: { auto: \"auto\", min: \"min-content\", max: \"max-content\", fr: \"minmax(0, 1fr)\" }, gridColumn: { auto: \"auto\", \"span-1\": \"span 1 / span 1\", \"span-2\": \"span 2 / span 2\", \"span-3\": \"span 3 / span 3\", \"span-4\": \"span 4 / span 4\", \"span-5\": \"span 5 / span 5\", \"span-6\": \"span 6 / span 6\", \"span-7\": \"span 7 / span 7\", \"span-8\": \"span 8 / span 8\", \"span-9\": \"span 9 / span 9\", \"span-10\": \"span 10 / span 10\", \"span-11\": \"span 11 / span 11\", \"span-12\": \"span 12 / span 12\", \"span-full\": \"1 / -1\" }, gridColumnEnd: { auto: \"auto\", 1: \"1\", 2: \"2\", 3: \"3\", 4: \"4\", 5: \"5\", 6: \"6\", 7: \"7\", 8: \"8\", 9: \"9\", 10: \"10\", 11: \"11\", 12: \"12\", 13: \"13\", ...ae }, gridColumnStart: { auto: \"auto\", 1: \"1\", 2: \"2\", 3: \"3\", 4: \"4\", 5: \"5\", 6: \"6\", 7: \"7\", 8: \"8\", 9: \"9\", 10: \"10\", 11: \"11\", 12: \"12\", 13: \"13\", ...ae }, gridRow: { auto: \"auto\", \"span-1\": \"span 1 / span 1\", \"span-2\": \"span 2 / span 2\", \"span-3\": \"span 3 / span 3\", \"span-4\": \"span 4 / span 4\", \"span-5\": \"span 5 / span 5\", \"span-6\": \"span 6 / span 6\", \"span-7\": \"span 7 / span 7\", \"span-8\": \"span 8 / span 8\", \"span-9\": \"span 9 / span 9\", \"span-10\": \"span 10 / span 10\", \"span-11\": \"span 11 / span 11\", \"span-12\": \"span 12 / span 12\", \"span-full\": \"1 / -1\" }, gridRowEnd: { auto: \"auto\", 1: \"1\", 2: \"2\", 3: \"3\", 4: \"4\", 5: \"5\", 6: \"6\", 7: \"7\", 8: \"8\", 9: \"9\", 10: \"10\", 11: \"11\", 12: \"12\", 13: \"13\", ...ae }, gridRowStart: { auto: \"auto\", 1: \"1\", 2: \"2\", 3: \"3\", 4: \"4\", 5: \"5\", 6: \"6\", 7: \"7\", 8: \"8\", 9: \"9\", 10: \"10\", 11: \"11\", 12: \"12\", 13: \"13\", ...ae }, gridTemplateColumns: { none: \"none\", subgrid: \"subgrid\", 1: \"repeat(1, minmax(0, 1fr))\", 2: \"repeat(2, minmax(0, 1fr))\", 3: \"repeat(3, minmax(0, 1fr))\", 4: \"repeat(4, minmax(0, 1fr))\", 5: \"repeat(5, minmax(0, 1fr))\", 6: \"repeat(6, minmax(0, 1fr))\", 7: \"repeat(7, minmax(0, 1fr))\", 8: \"repeat(8, minmax(0, 1fr))\", 9: \"repeat(9, minmax(0, 1fr))\", 10: \"repeat(10, minmax(0, 1fr))\", 11: \"repeat(11, minmax(0, 1fr))\", 12: \"repeat(12, minmax(0, 1fr))\", ...fi }, gridTemplateRows: { none: \"none\", subgrid: \"subgrid\", 1: \"repeat(1, minmax(0, 1fr))\", 2: \"repeat(2, minmax(0, 1fr))\", 3: \"repeat(3, minmax(0, 1fr))\", 4: \"repeat(4, minmax(0, 1fr))\", 5: \"repeat(5, minmax(0, 1fr))\", 6: \"repeat(6, minmax(0, 1fr))\", 7: \"repeat(7, minmax(0, 1fr))\", 8: \"repeat(8, minmax(0, 1fr))\", 9: \"repeat(9, minmax(0, 1fr))\", 10: \"repeat(10, minmax(0, 1fr))\", 11: \"repeat(11, minmax(0, 1fr))\", 12: \"repeat(12, minmax(0, 1fr))\", ...fi }, height: ({ theme: t }) => ({ auto: \"auto\", \"1/2\": \"50%\", \"1/3\": \"33.333333%\", \"2/3\": \"66.666667%\", \"1/4\": \"25%\", \"2/4\": \"50%\", \"3/4\": \"75%\", \"1/5\": \"20%\", \"2/5\": \"40%\", \"3/5\": \"60%\", \"4/5\": \"80%\", \"1/6\": \"16.666667%\", \"2/6\": \"33.333333%\", \"3/6\": \"50%\", \"4/6\": \"66.666667%\", \"5/6\": \"83.333333%\", full: \"100%\", screen: \"100vh\", svh: \"100svh\", lvh: \"100lvh\", dvh: \"100dvh\", min: \"min-content\", max: \"max-content\", fit: \"fit-content\", ...t(\"spacing\") }), hueRotate: { 0: \"0deg\", 15: \"15deg\", 30: \"30deg\", 60: \"60deg\", 90: \"90deg\", 180: \"180deg\", ...gt }, inset: ({ theme: t }) => ({ auto: \"auto\", \"1/2\": \"50%\", \"1/3\": \"33.333333%\", \"2/3\": \"66.666667%\", \"1/4\": \"25%\", \"2/4\": \"50%\", \"3/4\": \"75%\", full: \"100%\", ...t(\"spacing\") }), invert: { 0: \"0\", DEFAULT: \"100%\", ...ie }, keyframes: { spin: { to: { transform: \"rotate(360deg)\" } }, ping: { \"75%, 100%\": { transform: \"scale(2)\", opacity: \"0\" } }, pulse: { \"50%\": { opacity: \".5\" } }, bounce: { \"0%, 100%\": { transform: \"translateY(-25%)\", animationTimingFunction: \"cubic-bezier(0.8,0,1,1)\" }, \"50%\": { transform: \"none\", animationTimingFunction: \"cubic-bezier(0,0,0.2,1)\" } } }, letterSpacing: { tighter: \"-0.05em\", tight: \"-0.025em\", normal: \"0em\", wide: \"0.025em\", wider: \"0.05em\", widest: \"0.1em\" }, lineHeight: { none: \"1\", tight: \"1.25\", snug: \"1.375\", normal: \"1.5\", relaxed: \"1.625\", loose: \"2\", 3: \".75rem\", 4: \"1rem\", 5: \"1.25rem\", 6: \"1.5rem\", 7: \"1.75rem\", 8: \"2rem\", 9: \"2.25rem\", 10: \"2.5rem\" }, listStyleType: { none: \"none\", disc: \"disc\", decimal: \"decimal\" }, listStyleImage: { none: \"none\" }, margin: ({ theme: t }) => ({ auto: \"auto\", ...t(\"spacing\") }), lineClamp: { 1: \"1\", 2: \"2\", 3: \"3\", 4: \"4\", 5: \"5\", 6: \"6\", ...ae }, maxHeight: ({ theme: t }) => ({ none: \"none\", full: \"100%\", screen: \"100vh\", svh: \"100svh\", lvh: \"100lvh\", dvh: \"100dvh\", min: \"min-content\", max: \"max-content\", fit: \"fit-content\", ...t(\"spacing\") }), maxWidth: ({ theme: t }) => ({ none: \"none\", xs: \"20rem\", sm: \"24rem\", md: \"28rem\", lg: \"32rem\", xl: \"36rem\", \"2xl\": \"42rem\", \"3xl\": \"48rem\", \"4xl\": \"56rem\", \"5xl\": \"64rem\", \"6xl\": \"72rem\", \"7xl\": \"80rem\", full: \"100%\", min: \"min-content\", max: \"max-content\", fit: \"fit-content\", prose: \"65ch\", ...t(\"spacing\") }), minHeight: ({ theme: t }) => ({ full: \"100%\", screen: \"100vh\", svh: \"100svh\", lvh: \"100lvh\", dvh: \"100dvh\", min: \"min-content\", max: \"max-content\", fit: \"fit-content\", ...t(\"spacing\") }), minWidth: ({ theme: t }) => ({ full: \"100%\", min: \"min-content\", max: \"max-content\", fit: \"fit-content\", ...t(\"spacing\") }), objectPosition: { bottom: \"bottom\", center: \"center\", left: \"left\", \"left-bottom\": \"left bottom\", \"left-top\": \"left top\", right: \"right\", \"right-bottom\": \"right bottom\", \"right-top\": \"right top\", top: \"top\" }, opacity: { 0: \"0\", 5: \"0.05\", 10: \"0.1\", 15: \"0.15\", 20: \"0.2\", 25: \"0.25\", 30: \"0.3\", 35: \"0.35\", 40: \"0.4\", 45: \"0.45\", 50: \"0.5\", 55: \"0.55\", 60: \"0.6\", 65: \"0.65\", 70: \"0.7\", 75: \"0.75\", 80: \"0.8\", 85: \"0.85\", 90: \"0.9\", 95: \"0.95\", 100: \"1\", ...ie }, order: { first: \"-9999\", last: \"9999\", none: \"0\", 1: \"1\", 2: \"2\", 3: \"3\", 4: \"4\", 5: \"5\", 6: \"6\", 7: \"7\", 8: \"8\", 9: \"9\", 10: \"10\", 11: \"11\", 12: \"12\", ...ae }, outlineColor: ({ theme: t }) => t(\"colors\"), outlineOffset: { 0: \"0px\", 1: \"1px\", 2: \"2px\", 4: \"4px\", 8: \"8px\", ...ke }, outlineWidth: { 0: \"0px\", 1: \"1px\", 2: \"2px\", 4: \"4px\", 8: \"8px\", ...ke }, padding: ({ theme: t }) => t(\"spacing\"), placeholderColor: ({ theme: t }) => t(\"colors\"), placeholderOpacity: ({ theme: t }) => t(\"opacity\"), ringColor: ({ theme: t }) => ({ DEFAULT: \"currentcolor\", ...t(\"colors\") }), ringOffsetColor: ({ theme: t }) => t(\"colors\"), ringOffsetWidth: { 0: \"0px\", 1: \"1px\", 2: \"2px\", 4: \"4px\", 8: \"8px\", ...ke }, ringOpacity: ({ theme: t }) => ({ DEFAULT: \"0.5\", ...t(\"opacity\") }), ringWidth: { DEFAULT: \"3px\", 0: \"0px\", 1: \"1px\", 2: \"2px\", 4: \"4px\", 8: \"8px\", ...ke }, rotate: { 0: \"0deg\", 1: \"1deg\", 2: \"2deg\", 3: \"3deg\", 6: \"6deg\", 12: \"12deg\", 45: \"45deg\", 90: \"90deg\", 180: \"180deg\", ...gt }, saturate: { 0: \"0\", 50: \".5\", 100: \"1\", 150: \"1.5\", 200: \"2\", ...ie }, scale: { 0: \"0\", 50: \".5\", 75: \".75\", 90: \".9\", 95: \".95\", 100: \"1\", 105: \"1.05\", 110: \"1.1\", 125: \"1.25\", 150: \"1.5\", ...ie }, screens: { sm: \"40rem\", md: \"48rem\", lg: \"64rem\", xl: \"80rem\", \"2xl\": \"96rem\" }, scrollMargin: ({ theme: t }) => t(\"spacing\"), scrollPadding: ({ theme: t }) => t(\"spacing\"), sepia: { 0: \"0\", DEFAULT: \"100%\", ...ie }, skew: { 0: \"0deg\", 1: \"1deg\", 2: \"2deg\", 3: \"3deg\", 6: \"6deg\", 12: \"12deg\", ...gt }, space: ({ theme: t }) => t(\"spacing\"), spacing: { px: \"1px\", 0: \"0px\", .5: \"0.125rem\", 1: \"0.25rem\", 1.5: \"0.375rem\", 2: \"0.5rem\", 2.5: \"0.625rem\", 3: \"0.75rem\", 3.5: \"0.875rem\", 4: \"1rem\", 5: \"1.25rem\", 6: \"1.5rem\", 7: \"1.75rem\", 8: \"2rem\", 9: \"2.25rem\", 10: \"2.5rem\", 11: \"2.75rem\", 12: \"3rem\", 14: \"3.5rem\", 16: \"4rem\", 20: \"5rem\", 24: \"6rem\", 28: \"7rem\", 32: \"8rem\", 36: \"9rem\", 40: \"10rem\", 44: \"11rem\", 48: \"12rem\", 52: \"13rem\", 56: \"14rem\", 60: \"15rem\", 64: \"16rem\", 72: \"18rem\", 80: \"20rem\", 96: \"24rem\" }, stroke: ({ theme: t }) => ({ none: \"none\", ...t(\"colors\") }), strokeWidth: { 0: \"0\", 1: \"1\", 2: \"2\", ...ae }, supports: {}, data: {}, textColor: ({ theme: t }) => t(\"colors\"), textDecorationColor: ({ theme: t }) => t(\"colors\"), textDecorationThickness: { auto: \"auto\", \"from-font\": \"from-font\", 0: \"0px\", 1: \"1px\", 2: \"2px\", 4: \"4px\", 8: \"8px\", ...ke }, textIndent: ({ theme: t }) => t(\"spacing\"), textOpacity: ({ theme: t }) => t(\"opacity\"), textUnderlineOffset: { auto: \"auto\", 0: \"0px\", 1: \"1px\", 2: \"2px\", 4: \"4px\", 8: \"8px\", ...ke }, transformOrigin: { center: \"center\", top: \"top\", \"top-right\": \"top right\", right: \"right\", \"bottom-right\": \"bottom right\", bottom: \"bottom\", \"bottom-left\": \"bottom left\", left: \"left\", \"top-left\": \"top left\" }, transitionDelay: { 0: \"0s\", 75: \"75ms\", 100: \"100ms\", 150: \"150ms\", 200: \"200ms\", 300: \"300ms\", 500: \"500ms\", 700: \"700ms\", 1e3: \"1000ms\", ...ci }, transitionDuration: { DEFAULT: \"150ms\", 0: \"0s\", 75: \"75ms\", 100: \"100ms\", 150: \"150ms\", 200: \"200ms\", 300: \"300ms\", 500: \"500ms\", 700: \"700ms\", 1e3: \"1000ms\", ...ci }, transitionProperty: { none: \"none\", all: \"all\", DEFAULT: \"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter\", colors: \"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke\", opacity: \"opacity\", shadow: \"box-shadow\", transform: \"transform\" }, transitionTimingFunction: { DEFAULT: \"cubic-bezier(0.4, 0, 0.2, 1)\", linear: \"linear\", in: \"cubic-bezier(0.4, 0, 1, 1)\", out: \"cubic-bezier(0, 0, 0.2, 1)\", \"in-out\": \"cubic-bezier(0.4, 0, 0.2, 1)\" }, translate: ({ theme: t }) => ({ \"1/2\": \"50%\", \"1/3\": \"33.333333%\", \"2/3\": \"66.666667%\", \"1/4\": \"25%\", \"2/4\": \"50%\", \"3/4\": \"75%\", full: \"100%\", ...t(\"spacing\") }), size: ({ theme: t }) => ({ auto: \"auto\", \"1/2\": \"50%\", \"1/3\": \"33.333333%\", \"2/3\": \"66.666667%\", \"1/4\": \"25%\", \"2/4\": \"50%\", \"3/4\": \"75%\", \"1/5\": \"20%\", \"2/5\": \"40%\", \"3/5\": \"60%\", \"4/5\": \"80%\", \"1/6\": \"16.666667%\", \"2/6\": \"33.333333%\", \"3/6\": \"50%\", \"4/6\": \"66.666667%\", \"5/6\": \"83.333333%\", \"1/12\": \"8.333333%\", \"2/12\": \"16.666667%\", \"3/12\": \"25%\", \"4/12\": \"33.333333%\", \"5/12\": \"41.666667%\", \"6/12\": \"50%\", \"7/12\": \"58.333333%\", \"8/12\": \"66.666667%\", \"9/12\": \"75%\", \"10/12\": \"83.333333%\", \"11/12\": \"91.666667%\", full: \"100%\", min: \"min-content\", max: \"max-content\", fit: \"fit-content\", ...t(\"spacing\") }), width: ({ theme: t }) => ({ auto: \"auto\", \"1/2\": \"50%\", \"1/3\": \"33.333333%\", \"2/3\": \"66.666667%\", \"1/4\": \"25%\", \"2/4\": \"50%\", \"3/4\": \"75%\", \"1/5\": \"20%\", \"2/5\": \"40%\", \"3/5\": \"60%\", \"4/5\": \"80%\", \"1/6\": \"16.666667%\", \"2/6\": \"33.333333%\", \"3/6\": \"50%\", \"4/6\": \"66.666667%\", \"5/6\": \"83.333333%\", \"1/12\": \"8.333333%\", \"2/12\": \"16.666667%\", \"3/12\": \"25%\", \"4/12\": \"33.333333%\", \"5/12\": \"41.666667%\", \"6/12\": \"50%\", \"7/12\": \"58.333333%\", \"8/12\": \"66.666667%\", \"9/12\": \"75%\", \"10/12\": \"83.333333%\", \"11/12\": \"91.666667%\", full: \"100%\", screen: \"100vw\", svw: \"100svw\", lvw: \"100lvw\", dvw: \"100dvw\", min: \"min-content\", max: \"max-content\", fit: \"fit-content\", ...t(\"spacing\") }), willChange: { auto: \"auto\", scroll: \"scroll-position\", contents: \"contents\", transform: \"transform\" }, zIndex: { auto: \"auto\", 0: \"0\", 10: \"10\", 20: \"20\", 30: \"30\", 40: \"40\", 50: \"50\", ...ae } }; function pi(t) { return { theme: { ...di, colors: ({ theme: r }) => r(\"color\", {}), extend: { fontSize: ({ theme: r }) => ({ ...r(\"text\", {}) }), boxShadow: ({ theme: r }) => ({ ...r(\"shadow\", {}) }), animation: ({ theme: r }) => ({ ...r(\"animate\", {}) }), aspectRatio: ({ theme: r }) => ({ ...r(\"aspect\", {}) }), borderRadius: ({ theme: r }) => ({ ...r(\"radius\", {}) }), screens: ({ theme: r }) => ({ ...r(\"breakpoint\", {}) }), letterSpacing: ({ theme: r }) => ({ ...r(\"tracking\", {}) }), lineHeight: ({ theme: r }) => ({ ...r(\"leading\", {}) }), transitionDuration: { DEFAULT: t.get([\"--default-transition-duration\"]) ?? null }, transitionTimingFunction: { DEFAULT: t.get([\"--default-transition-timing-function\"]) ?? null }, maxWidth: ({ theme: r }) => ({ ...r(\"container\", {}) }) } } } } var sn = { blocklist: [], future: {}, prefix: \"\", important: false, darkMode: null, theme: {}, plugins: [], content: { files: [] } }; function Wt(t, r) { let i = { design: t, configs: [], plugins: [], content: { files: [] }, theme: {}, extend: {}, result: structuredClone(sn) }; for (let o of r) Bt(i, o); for (let o of i.configs) \"darkMode\" in o && o.darkMode !== void 0 && (i.result.darkMode = o.darkMode ?? null), \"prefix\" in o && o.prefix !== void 0 && (i.result.prefix = o.prefix ?? \"\"), \"blocklist\" in o && o.blocklist !== void 0 && (i.result.blocklist = o.blocklist ?? []), \"important\" in o && o.important !== void 0 && (i.result.important = o.important ?? false); let e = cn(i); return { resolvedConfig: { ...i.result, content: i.content, theme: i.theme, plugins: i.plugins }, replacedThemeKeys: e } } function un(t, r) { if (Array.isArray(t) && Re(t[0])) return t.concat(r); if (Array.isArray(r) && Re(r[0]) && Re(t)) return [t, ...r]; if (Array.isArray(r)) return r } function Bt(t, { config: r, base: i, path: e, reference: o }) { let s = []; for (let u of r.plugins ?? []) \"__isOptionsFunction\" in u ? s.push({ ...u(), reference: o }) : \"handler\" in u ? s.push({ ...u, reference: o }) : s.push({ handler: u, reference: o }); if (Array.isArray(r.presets) && r.presets.length === 0) throw new Error(\"Error in the config file/plugin/preset. An empty preset (`preset: []`) is not currently supported.\"); for (let u of r.presets ?? []) Bt(t, { path: e, base: i, config: u, reference: o }); for (let u of s) t.plugins.push(u), u.config && Bt(t, { path: e, base: i, config: u.config, reference: !!u.reference }); let a = r.content ?? [], f = Array.isArray(a) ? a : a.files; for (let u of f) t.content.files.push(typeof u == \"object\" ? u : { base: i, pattern: u }); t.configs.push(r); } function cn(t) { let r = new Set, i = dt(t.design, () => t.theme, o), e = Object.assign(i, { theme: i, colors: mt }); function o(s) { return typeof s == \"function\" ? s(e) ?? null : s ?? null } for (let s of t.configs) { let a = s.theme ?? {}, f = a.extend ?? {}; for (let u in a) u !== \"extend\" && r.add(u); Object.assign(t.theme, a); for (let u in f) t.extend[u] ??= [], t.extend[u].push(f[u]); } delete t.theme.extend; for (let s in t.extend) { let a = [t.theme[s], ...t.extend[s]]; t.theme[s] = () => { let f = a.map(o); return Le({}, f, un) }; } for (let s in t.theme) t.theme[s] = o(t.theme[s]); if (t.theme.screens && typeof t.theme.screens == \"object\") for (let s of Object.keys(t.theme.screens)) { let a = t.theme.screens[s]; a && typeof a == \"object\" && (\"raw\" in a || \"max\" in a || \"min\" in a && (t.theme.screens[s] = a.min)); } return r } function mi(t, r) { let i = t.theme.container || {}; if (typeof i != \"object\" || i === null) return; let e = fn(i, r); e.length !== 0 && r.utilities.static(\"container\", () => structuredClone(e)); } function fn({ center: t, padding: r, screens: i }, e) { let o = [], s = null; if (t && o.push(l(\"margin-inline\", \"auto\")), (typeof r == \"string\" || typeof r == \"object\" && r !== null && \"DEFAULT\" in r) && o.push(l(\"padding-inline\", typeof r == \"string\" ? r : r.DEFAULT)), typeof i == \"object\" && i !== null) { s = new Map; let a = Array.from(e.theme.namespace(\"--breakpoint\").entries()); if (a.sort((f, u) => ye(f[1], u[1], \"asc\")), a.length > 0) { let [f] = a[0]; o.push(F(\"@media\", `(width >= --theme(--breakpoint-${f}))`, [l(\"max-width\", \"none\")])); } for (let [f, u] of Object.entries(i)) { if (typeof u == \"object\") if (\"min\" in u) u = u.min; else continue; s.set(f, F(\"@media\", `(width >= ${u})`, [l(\"max-width\", u)])); } } if (typeof r == \"object\" && r !== null) { let a = Object.entries(r).filter(([f]) => f !== \"DEFAULT\").map(([f, u]) => [f, e.theme.resolveValue(f, [\"--breakpoint\"]), u]).filter(Boolean); a.sort((f, u) => ye(f[1], u[1], \"asc\")); for (let [f, , u] of a) if (s && s.has(f)) s.get(f).nodes.push(l(\"padding-inline\", u)); else { if (s) continue; o.push(F(\"@media\", `(width >= theme(--breakpoint-${f}))`, [l(\"padding-inline\", u)])); } } if (s) for (let [, a] of s) o.push(a); return o } function gi({ addVariant: t, config: r }) { let i = r(\"darkMode\", null), [e, o = \".dark\"] = Array.isArray(i) ? i : [i]; if (e === \"variant\") { let s; if (Array.isArray(o) || typeof o == \"function\" ? s = o : typeof o == \"string\" && (s = [o]), Array.isArray(s)) for (let a of s) a === \".dark\" ? (e = false, console.warn('When using `variant` for `darkMode`, you must provide a selector.\\nExample: `darkMode: [\"variant\", \".your-selector &\"]`')) : a.includes(\"&\") || (e = false, console.warn('When using `variant` for `darkMode`, your selector must contain `&`.\\nExample `darkMode: [\"variant\", \".your-selector &\"]`')); o = s; } e === null || (e === \"selector\" ? t(\"dark\", `&:where(${o}, ${o} *)`) : e === \"media\" ? t(\"dark\", \"@media (prefers-color-scheme: dark)\") : e === \"variant\" ? t(\"dark\", o) : e === \"class\" && t(\"dark\", `&:is(${o} *)`)); } function hi(t) { for (let [r, i] of [[\"t\", \"top\"], [\"tr\", \"top right\"], [\"r\", \"right\"], [\"br\", \"bottom right\"], [\"b\", \"bottom\"], [\"bl\", \"bottom left\"], [\"l\", \"left\"], [\"tl\", \"top left\"]]) t.utilities.static(`bg-gradient-to-${r}`, () => [l(\"--tw-gradient-position\", `to ${i} in oklab`), l(\"background-image\", \"linear-gradient(var(--tw-gradient-stops))\")]); t.utilities.static(\"bg-left-top\", () => [l(\"background-position\", \"left top\")]), t.utilities.static(\"bg-right-top\", () => [l(\"background-position\", \"right top\")]), t.utilities.static(\"bg-left-bottom\", () => [l(\"background-position\", \"left bottom\")]), t.utilities.static(\"bg-right-bottom\", () => [l(\"background-position\", \"right bottom\")]), t.utilities.static(\"object-left-top\", () => [l(\"object-position\", \"left top\")]), t.utilities.static(\"object-right-top\", () => [l(\"object-position\", \"right top\")]), t.utilities.static(\"object-left-bottom\", () => [l(\"object-position\", \"left bottom\")]), t.utilities.static(\"object-right-bottom\", () => [l(\"object-position\", \"right bottom\")]), t.utilities.functional(\"max-w-screen\", r => { if (!r.value || r.value.kind === \"arbitrary\") return; let i = t.theme.resolve(r.value.value, [\"--breakpoint\"]); if (i) return [l(\"max-width\", i)] }), t.utilities.static(\"overflow-ellipsis\", () => [l(\"text-overflow\", \"ellipsis\")]), t.utilities.static(\"decoration-slice\", () => [l(\"-webkit-box-decoration-break\", \"slice\"), l(\"box-decoration-break\", \"slice\")]), t.utilities.static(\"decoration-clone\", () => [l(\"-webkit-box-decoration-break\", \"clone\"), l(\"box-decoration-break\", \"clone\")]), t.utilities.functional(\"flex-shrink\", r => { if (!r.modifier) { if (!r.value) return [l(\"flex-shrink\", \"1\")]; if (r.value.kind === \"arbitrary\") return [l(\"flex-shrink\", r.value.value)]; if (E(r.value.value)) return [l(\"flex-shrink\", r.value.value)] } }), t.utilities.functional(\"flex-grow\", r => { if (!r.modifier) { if (!r.value) return [l(\"flex-grow\", \"1\")]; if (r.value.kind === \"arbitrary\") return [l(\"flex-grow\", r.value.value)]; if (E(r.value.value)) return [l(\"flex-grow\", r.value.value)] } }); } function ki(t, r) { let i = t.theme.screens || {}, e = r.variants.get(\"min\")?.order ?? 0, o = []; for (let [a, f] of Object.entries(i)) { let m = function (v) { r.variants.static(a, k => { k.nodes = [F(\"@media\", p, k.nodes)]; }, { order: v }); }; let u = r.variants.get(a), c = r.theme.resolveValue(a, [\"--breakpoint\"]); if (u && c && !r.theme.hasDefault(`--breakpoint-${a}`)) continue; let g = true; typeof f == \"string\" && (g = false); let p = dn(f); g ? o.push(m) : m(e); } if (o.length !== 0) { for (let [, a] of r.variants.variants) a.order > e && (a.order += o.length); r.variants.compareFns = new Map(Array.from(r.variants.compareFns).map(([a, f]) => (a > e && (a += o.length), [a, f]))); for (let [a, f] of o.entries()) f(e + a + 1); } } function dn(t) { return (Array.isArray(t) ? t : [t]).map(i => typeof i == \"string\" ? { min: i } : i && typeof i == \"object\" ? i : null).map(i => { if (i === null) return null; if (\"raw\" in i) return i.raw; let e = \"\"; return i.max !== void 0 && (e += `${i.max} >= `), e += \"width\", i.min !== void 0 && (e += ` >= ${i.min}`), `(${e})` }).filter(Boolean).join(\", \") } function vi(t, r) { let i = t.theme.aria || {}, e = t.theme.supports || {}, o = t.theme.data || {}; if (Object.keys(i).length > 0) { let s = r.variants.get(\"aria\"), a = s?.applyFn, f = s?.compounds; r.variants.functional(\"aria\", (u, c) => { let g = c.value; return g && g.kind === \"named\" && g.value in i ? a?.(u, { ...c, value: { kind: \"arbitrary\", value: i[g.value] } }) : a?.(u, c) }, { compounds: f }); } if (Object.keys(e).length > 0) { let s = r.variants.get(\"supports\"), a = s?.applyFn, f = s?.compounds; r.variants.functional(\"supports\", (u, c) => { let g = c.value; return g && g.kind === \"named\" && g.value in e ? a?.(u, { ...c, value: { kind: \"arbitrary\", value: e[g.value] } }) : a?.(u, c) }, { compounds: f }); } if (Object.keys(o).length > 0) { let s = r.variants.get(\"data\"), a = s?.applyFn, f = s?.compounds; r.variants.functional(\"data\", (u, c) => { let g = c.value; return g && g.kind === \"named\" && g.value in o ? a?.(u, { ...c, value: { kind: \"arbitrary\", value: o[g.value] } }) : a?.(u, c) }, { compounds: f }); } } var pn = /^[a-z]+$/; async function bi({ designSystem: t, base: r, ast: i, loadModule: e, sources: o }) {\n  \t    let s = 0, a = [], f = []; U(i, (p, { parent: m, replaceWith: v, context: k }) => {\n  \t      if (p.kind === \"at-rule\") {\n  \t        if (p.name === \"@plugin\") {\n  \t          if (m !== null) throw new Error(\"`@plugin` cannot be nested.\"); let x = p.params.slice(1, -1); if (x.length === 0) throw new Error(\"`@plugin` must have a path.\"); let y = {}; for (let N of p.nodes ?? []) {\n  \t            if (N.kind !== \"declaration\") throw new Error(`Unexpected \\`@plugin\\` option:\n\n${le([N])}\n\n\\`@plugin\\` options must be a flat list of declarations.`); if (N.value === void 0) continue; let b = N.value, V = z(b, \",\").map(R => {\n  \t              if (R = R.trim(), R === \"null\") return null; if (R === \"true\") return true; if (R === \"false\") return false; if (Number.isNaN(Number(R))) {\n  \t                if (R[0] === '\"' && R[R.length - 1] === '\"' || R[0] === \"'\" && R[R.length - 1] === \"'\") return R.slice(1, -1); if (R[0] === \"{\" && R[R.length - 1] === \"}\") throw new Error(`Unexpected \\`@plugin\\` option: Value of declaration \\`${le([N]).trim()}\\` is not supported.\n\nUsing an object as a plugin option is currently only supported in JavaScript configuration files.`)\n  \t              } else return Number(R); return R\n  \t            }); y[N.property] = V.length === 1 ? V[0] : V;\n  \t          } a.push([{ id: x, base: k.base, reference: !!k.reference }, Object.keys(y).length > 0 ? y : null]), v([]), s |= 4; return\n  \t        } if (p.name === \"@config\") { if (p.nodes.length > 0) throw new Error(\"`@config` cannot have a body.\"); if (m !== null) throw new Error(\"`@config` cannot be nested.\"); f.push({ id: p.params.slice(1, -1), base: k.base, reference: !!k.reference }), v([]), s |= 4; return }\n  \t      }\n  \t    }), hi(t); let u = t.resolveThemeValue; if (t.resolveThemeValue = function (m, v) { return m.startsWith(\"--\") ? u(m, v) : (s |= wi({ designSystem: t, base: r, ast: i, sources: o, configs: [], pluginDetails: [] }), t.resolveThemeValue(m, v)) }, !a.length && !f.length) return 0; let [c, g] = await Promise.all([Promise.all(f.map(async ({ id: p, base: m, reference: v }) => { let k = await e(p, m, \"config\"); return { path: p, base: k.base, config: k.module, reference: v } })), Promise.all(a.map(async ([{ id: p, base: m, reference: v }, k]) => { let x = await e(p, m, \"plugin\"); return { path: p, base: x.base, plugin: x.module, options: k, reference: v } }))]); return s |= wi({ designSystem: t, base: r, ast: i, sources: o, configs: c, pluginDetails: g }), s\n  \t  } function wi({ designSystem: t, base: r, ast: i, sources: e, configs: o, pluginDetails: s }) {\n  \t    let a = 0, u = [...s.map(y => { if (!y.options) return { config: { plugins: [y.plugin] }, base: y.base, reference: y.reference }; if (\"__isOptionsFunction\" in y.plugin) return { config: { plugins: [y.plugin(y.options)] }, base: y.base, reference: y.reference }; throw new Error(`The plugin \"${y.path}\" does not accept options`) }), ...o], { resolvedConfig: c } = Wt(t, [{ config: pi(t.theme), base: r, reference: true }, ...u, { config: { plugins: [gi] }, base: r, reference: true }]), { resolvedConfig: g, replacedThemeKeys: p } = Wt(t, u), m = t.resolveThemeValue; t.resolveThemeValue = function (N, b) { if (N[0] === \"-\" && N[1] === \"-\") return m(N, b); let V = k.theme(N, void 0); if (Array.isArray(V) && V.length === 2) return V[0]; if (Array.isArray(V)) return V.join(\", \"); if (typeof V == \"string\") return V }; let v = { designSystem: t, ast: i, resolvedConfig: c, featuresRef: { set current(y) { a |= y; } } }, k = Mt({ ...v, referenceMode: false }), x; for (let { handler: y, reference: N } of c.plugins) N ? (x ||= Mt({ ...v, referenceMode: true }), y(x)) : y(k); if (Wr(t, g, p), ui(t, g), vi(g, t), ki(g, t), mi(g, t), !t.theme.prefix && c.prefix) { if (c.prefix.endsWith(\"-\") && (c.prefix = c.prefix.slice(0, -1), console.warn(`The prefix \"${c.prefix}\" is invalid. Prefixes must be lowercase ASCII letters (a-z) only and is written as a variant before all utilities. We have fixed up the prefix for you. Remove the trailing \\`-\\` to silence this warning.`)), !pn.test(c.prefix)) throw new Error(`The prefix \"${c.prefix}\" is invalid. Prefixes must be lowercase ASCII letters (a-z) only.`); t.theme.prefix = c.prefix; } if (!t.important && c.important === true && (t.important = true), typeof c.important == \"string\") { let y = c.important; U(i, (N, { replaceWith: b, parent: V }) => { if (N.kind === \"at-rule\" && !(N.name !== \"@tailwind\" || N.params !== \"utilities\")) return V?.kind === \"rule\" && V.selector === y ? 2 : (b(M(y, [N])), 2) }); } for (let y of c.blocklist) t.invalidCandidates.add(y); for (let y of c.content.files) {\n  \t      if (\"raw\" in y) throw new Error(`Error in the config file/plugin/preset. The \\`content\\` key contains a \\`raw\\` entry:\n\n${JSON.stringify(y, null, 2)}\n\nThis feature is not currently supported.`); let N = false; y.pattern[0] == \"!\" && (N = true, y.pattern = y.pattern.slice(1)), e.push({ ...y, negated: N });\n  \t    } return a\n  \t  } function yi(t) { let r = [0]; for (let o = 0; o < t.length; o++)t.charCodeAt(o) === 10 && r.push(o + 1); function i(o) { let s = 0, a = r.length; for (; a > 0;) { let u = (a | 0) >> 1, c = s + u; r[c] <= o ? (s = c + 1, a = a - u - 1) : a = u; } s -= 1; let f = o - r[s]; return { line: s + 1, column: f } } function e({ line: o, column: s }) { o -= 1, o = Math.min(Math.max(o, 0), r.length - 1); let a = r[o], f = r[o + 1] ?? a; return Math.min(Math.max(a + s, 0), f) } return { find: i, findOffset: e } } function xi({ ast: t }) {\n  \t    let r = new B(o => yi(o.code)), i = new B(o => ({ url: o.file, content: o.code, ignore: false })), e = { file: null, sources: [], mappings: [] }; U(t, o => {\n  \t      if (!o.src || !o.dst) return; let s = i.get(o.src[0]); if (!s.content) return; let a = r.get(o.src[0]), f = r.get(o.dst[0]), u = s.content.slice(o.src[1], o.src[2]), c = 0; for (let m of u.split(`\n`)) { if (m.trim() !== \"\") { let v = a.find(o.src[1] + c), k = f.find(o.dst[1]); e.mappings.push({ name: null, originalPosition: { source: s, ...v }, generatedPosition: k }); } c += m.length, c += 1; } let g = a.find(o.src[2]), p = f.find(o.dst[2]); e.mappings.push({ name: null, originalPosition: { source: s, ...g }, generatedPosition: p });\n  \t    }); for (let o of r.keys()) e.sources.push(i.get(o)); return e.mappings.sort((o, s) => o.generatedPosition.line - s.generatedPosition.line || o.generatedPosition.column - s.generatedPosition.column || (o.originalPosition?.line ?? 0) - (s.originalPosition?.line ?? 0) || (o.originalPosition?.column ?? 0) - (s.originalPosition?.column ?? 0)), e\n  \t  } var Ai = /^(-?\\d+)\\.\\.(-?\\d+)(?:\\.\\.(-?\\d+))?$/; function ht(t) { let r = t.indexOf(\"{\"); if (r === -1) return [t]; let i = [], e = t.slice(0, r), o = t.slice(r), s = 0, a = o.lastIndexOf(\"}\"); for (let p = 0; p < o.length; p++) { let m = o[p]; if (m === \"{\") s++; else if (m === \"}\" && (s--, s === 0)) { a = p; break } } if (a === -1) throw new Error(`The pattern \\`${t}\\` is not balanced.`); let f = o.slice(1, a), u = o.slice(a + 1), c; mn(f) ? c = gn(f) : c = z(f, \",\"), c = c.flatMap(p => ht(p)); let g = ht(u); for (let p of g) for (let m of c) i.push(e + m + p); return i } function mn(t) { return Ai.test(t) } function gn(t) { let r = t.match(Ai); if (!r) return [t]; let [, i, e, o] = r, s = o ? parseInt(o, 10) : void 0, a = []; if (/^-?\\d+$/.test(i) && /^-?\\d+$/.test(e)) { let f = parseInt(i, 10), u = parseInt(e, 10); if (s === void 0 && (s = f <= u ? 1 : -1), s === 0) throw new Error(\"Step cannot be zero in sequence expansion.\"); let c = f < u; c && s < 0 && (s = -s), !c && s > 0 && (s = -s); for (let g = f; c ? g <= u : g >= u; g += s)a.push(g.toString()); } return a } var hn = /^[a-z]+$/; function kn() { throw new Error(\"No `loadModule` function provided to `compile`\") } function vn() { throw new Error(\"No `loadStylesheet` function provided to `compile`\") } function wn(t) { let r = 0, i = null; for (let e of z(t, \" \")) e === \"reference\" ? r |= 2 : e === \"inline\" ? r |= 1 : e === \"default\" ? r |= 4 : e === \"static\" ? r |= 8 : e.startsWith(\"prefix(\") && e.endsWith(\")\") && (i = e.slice(7, -1)); return [r, i] } async function bn(t, { base: r = \"\", from: i, loadModule: e = kn, loadStylesheet: o = vn } = {}) {\n  \t    let s = 0; t = [ue({ base: r }, t)], s |= await Ft(t, r, o, 0, i !== void 0); let a = null, f = new Qe, u = [], c = [], g = null, p = null, m = [], v = [], k = [], x = [], y = null; U(t, (b, { parent: V, replaceWith: R, context: D }) => {\n  \t      if (b.kind === \"at-rule\") {\n  \t        if (b.name === \"@tailwind\" && (b.params === \"utilities\" || b.params.startsWith(\"utilities\"))) { if (p !== null) { R([]); return } if (D.reference) { R([]); return } let _ = z(b.params, \" \"); for (let L of _) if (L.startsWith(\"source(\")) { let O = L.slice(7, -1); if (O === \"none\") { y = O; continue } if (O[0] === '\"' && O[O.length - 1] !== '\"' || O[0] === \"'\" && O[O.length - 1] !== \"'\" || O[0] !== \"'\" && O[0] !== '\"') throw new Error(\"`source(\\u2026)` paths must be quoted.\"); y = { base: D.sourceBase ?? D.base, pattern: O.slice(1, -1) }; } p = b, s |= 16; } if (b.name === \"@utility\") { if (V !== null) throw new Error(\"`@utility` cannot be nested.\"); if (b.nodes.length === 0) throw new Error(`\\`@utility ${b.params}\\` is empty. Utilities should include at least one property.`); let _ = Pr(b); if (_ === null) throw new Error(`\\`@utility ${b.params}\\` defines an invalid utility name. Utilities should be alphanumeric and start with a lowercase letter.`); c.push(_); } if (b.name === \"@source\") { if (b.nodes.length > 0) throw new Error(\"`@source` cannot have a body.\"); if (V !== null) throw new Error(\"`@source` cannot be nested.\"); let _ = false, L = false, O = b.params; if (O[0] === \"n\" && O.startsWith(\"not \") && (_ = true, O = O.slice(4)), O[0] === \"i\" && O.startsWith(\"inline(\") && (L = true, O = O.slice(7, -1)), O[0] === '\"' && O[O.length - 1] !== '\"' || O[0] === \"'\" && O[O.length - 1] !== \"'\" || O[0] !== \"'\" && O[0] !== '\"') throw new Error(\"`@source` paths must be quoted.\"); let H = O.slice(1, -1); if (L) { let I = _ ? x : k, q = z(H, \" \"); for (let X of q) for (let oe of ht(X)) I.push(oe); } else v.push({ base: D.base, pattern: H, negated: _ }); R([]); return } if (b.name === \"@variant\" && (V === null ? b.nodes.length === 0 ? b.name = \"@custom-variant\" : (U(b.nodes, _ => { if (_.kind === \"at-rule\" && _.name === \"@slot\") return b.name = \"@custom-variant\", 2 }), b.name === \"@variant\" && m.push(b)) : m.push(b)), b.name === \"@custom-variant\") { if (V !== null) throw new Error(\"`@custom-variant` cannot be nested.\"); R([]); let [_, L] = z(b.params, \" \"); if (!ut.test(_)) throw new Error(`\\`@custom-variant ${_}\\` defines an invalid variant name. Variants should only contain alphanumeric, dashes or underscore characters.`); if (b.nodes.length > 0 && L) throw new Error(`\\`@custom-variant ${_}\\` cannot have both a selector and a body.`); if (b.nodes.length === 0) { if (!L) throw new Error(`\\`@custom-variant ${_}\\` has no selector or body.`); let O = z(L.slice(1, -1), \",\"); if (O.length === 0 || O.some(q => q.trim() === \"\")) throw new Error(`\\`@custom-variant ${_} (${O.join(\",\")})\\` selector is invalid.`); let H = [], I = []; for (let q of O) q = q.trim(), q[0] === \"@\" ? H.push(q) : I.push(q); u.push(q => { q.variants.static(_, X => { let oe = []; I.length > 0 && oe.push(M(I.join(\", \"), X.nodes)); for (let n of H) oe.push(G(n, X.nodes)); X.nodes = oe; }, { compounds: Ae([...I, ...H]) }); }); return } else { u.push(O => { O.variants.fromAst(_, b.nodes); }); return } } if (b.name === \"@media\") { let _ = z(b.params, \" \"), L = []; for (let O of _) if (O.startsWith(\"source(\")) { let H = O.slice(7, -1); U(b.nodes, (I, { replaceWith: q }) => { if (I.kind === \"at-rule\" && I.name === \"@tailwind\" && I.params === \"utilities\") return I.params += ` source(${H})`, q([ue({ sourceBase: D.base }, [I])]), 2 }); } else if (O.startsWith(\"theme(\")) { let H = O.slice(6, -1), I = H.includes(\"reference\"); U(b.nodes, q => { if (q.kind !== \"at-rule\") { if (I) throw new Error('Files imported with `@import \"\\u2026\" theme(reference)` must only contain `@theme` blocks.\\nUse `@reference \"\\u2026\";` instead.'); return 0 } if (q.name === \"@theme\") return q.params += \" \" + H, 1 }); } else if (O.startsWith(\"prefix(\")) { let H = O.slice(7, -1); U(b.nodes, I => { if (I.kind === \"at-rule\" && I.name === \"@theme\") return I.params += ` prefix(${H})`, 1 }); } else O === \"important\" ? a = true : O === \"reference\" ? b.nodes = [ue({ reference: true }, b.nodes)] : L.push(O); L.length > 0 ? b.params = L.join(\" \") : _.length > 0 && R(b.nodes); } if (b.name === \"@theme\") {\n  \t          let [_, L] = wn(b.params); if (D.reference && (_ |= 2), L) { if (!hn.test(L)) throw new Error(`The prefix \"${L}\" is invalid. Prefixes must be lowercase ASCII letters (a-z) only.`); f.prefix = L; } return U(b.nodes, O => {\n  \t            if (O.kind === \"at-rule\" && O.name === \"@keyframes\") return f.addKeyframes(O), 1; if (O.kind === \"comment\") return; if (O.kind === \"declaration\" && O.property.startsWith(\"--\")) { f.add(ve(O.property), O.value ?? \"\", _, O.src); return } let H = le([F(b.name, b.params, [O])]).split(`\n`).map((I, q, X) => `${q === 0 || q >= X.length - 2 ? \" \" : \">\"} ${I}`).join(`\n`); throw new Error(`\\`@theme\\` blocks must only contain custom properties or \\`@keyframes\\`.\n\n${H}`)\n  \t          }), g ? R([]) : (g = M(\":root, :host\", []), g.src = b.src, R([g])), 1\n  \t        }\n  \t      }\n  \t    }); let N = Lr(f); if (a && (N.important = a), x.length > 0) for (let b of x) N.invalidCandidates.add(b); s |= await bi({ designSystem: N, base: r, ast: t, loadModule: e, sources: v }); for (let b of u) b(N); for (let b of c) b(N); if (g) { let b = []; for (let [R, D] of N.theme.entries()) { if (D.options & 2) continue; let _ = l(me(R), D.value); _.src = D.src, b.push(_); } let V = N.theme.getKeyframes(); for (let R of V) t.push(ue({ theme: true }, [j([R])])); g.nodes = [ue({ theme: true }, b)]; } if (p) { let b = p; b.kind = \"context\", b.context = {}; } if (m.length > 0) { for (let b of m) { let V = M(\"&\", b.nodes), R = b.params, D = N.parseVariant(R); if (D === null) throw new Error(`Cannot use \\`@variant\\` with unknown variant: ${R}`); if (Te(V, D, N.variants) === null) throw new Error(`Cannot use \\`@variant\\` with variant: ${R}`); Object.assign(b, V); } s |= 32; } return s |= Ve(t, N), s |= je(t, N), U(t, (b, { replaceWith: V }) => { if (b.kind === \"at-rule\") return b.name === \"@utility\" && V([]), 1 }), { designSystem: N, ast: t, sources: v, root: y, utilitiesNode: p, features: s, inlineCandidates: k }\n  \t  } async function yn(t, r = {}) { let { designSystem: i, ast: e, sources: o, root: s, utilitiesNode: a, features: f, inlineCandidates: u } = await bn(t, r); e.unshift(Je(`! tailwindcss v${Yt} | MIT License | https://tailwindcss.com `)); function c(k) { i.invalidCandidates.add(k); } let g = new Set, p = null, m = 0, v = false; for (let k of u) i.invalidCandidates.has(k) || (g.add(k), v = true); return { sources: o, root: s, features: f, build(k) { if (f === 0) return t; if (!a) return p ??= be(e, i, r.polyfills), p; let x = v, y = false; v = false; let N = g.size; for (let V of k) if (!i.invalidCandidates.has(V)) if (V[0] === \"-\" && V[1] === \"-\") { let R = i.theme.markUsedVariable(V); x ||= R, y ||= R; } else g.add(V), x ||= g.size !== N; if (!x) return p ??= be(e, i, r.polyfills), p; let b = he(g, i, { onInvalidCandidate: c }).astNodes; return r.from && U(b, V => { V.src ??= a.src; }), !y && m === b.length ? (p ??= be(e, i, r.polyfills), p) : (m = b.length, a.nodes = b, p = be(e, i, r.polyfills), p) } } } async function Ci(t, r = {}) { let i = Se(t, { from: r.from }), e = await yn(i, r), o = i, s = t; return { ...e, build(a) { let f = e.build(a); return f === o || (s = le(f, !!r.from), o = f), s }, buildSourceMap() { return xi({ ast: o }) } } } var Si = `@layer theme, base, components, utilities;\n\n@import './theme.css' layer(theme);\n@import './utilities.css' layer(utilities);\n`; var $i = `\n`; var Ni = `@theme default {\n  --font-sans:\n    ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol',\n    'Noto Color Emoji';\n  --font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;\n  --font-mono:\n    ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New',\n    monospace;\n\n  --color-red-50: oklch(97.1% 0.013 17.38);\n  --color-red-100: oklch(93.6% 0.032 17.717);\n  --color-red-200: oklch(88.5% 0.062 18.334);\n  --color-red-300: oklch(80.8% 0.114 19.571);\n  --color-red-400: oklch(70.4% 0.191 22.216);\n  --color-red-500: oklch(63.7% 0.237 25.331);\n  --color-red-600: oklch(57.7% 0.245 27.325);\n  --color-red-700: oklch(50.5% 0.213 27.518);\n  --color-red-800: oklch(44.4% 0.177 26.899);\n  --color-red-900: oklch(39.6% 0.141 25.723);\n  --color-red-950: oklch(25.8% 0.092 26.042);\n\n  --color-orange-50: oklch(98% 0.016 73.684);\n  --color-orange-100: oklch(95.4% 0.038 75.164);\n  --color-orange-200: oklch(90.1% 0.076 70.697);\n  --color-orange-300: oklch(83.7% 0.128 66.29);\n  --color-orange-400: oklch(75% 0.183 55.934);\n  --color-orange-500: oklch(70.5% 0.213 47.604);\n  --color-orange-600: oklch(64.6% 0.222 41.116);\n  --color-orange-700: oklch(55.3% 0.195 38.402);\n  --color-orange-800: oklch(47% 0.157 37.304);\n  --color-orange-900: oklch(40.8% 0.123 38.172);\n  --color-orange-950: oklch(26.6% 0.079 36.259);\n\n  --color-amber-50: oklch(98.7% 0.022 95.277);\n  --color-amber-100: oklch(96.2% 0.059 95.617);\n  --color-amber-200: oklch(92.4% 0.12 95.746);\n  --color-amber-300: oklch(87.9% 0.169 91.605);\n  --color-amber-400: oklch(82.8% 0.189 84.429);\n  --color-amber-500: oklch(76.9% 0.188 70.08);\n  --color-amber-600: oklch(66.6% 0.179 58.318);\n  --color-amber-700: oklch(55.5% 0.163 48.998);\n  --color-amber-800: oklch(47.3% 0.137 46.201);\n  --color-amber-900: oklch(41.4% 0.112 45.904);\n  --color-amber-950: oklch(27.9% 0.077 45.635);\n\n  --color-yellow-50: oklch(98.7% 0.026 102.212);\n  --color-yellow-100: oklch(97.3% 0.071 103.193);\n  --color-yellow-200: oklch(94.5% 0.129 101.54);\n  --color-yellow-300: oklch(90.5% 0.182 98.111);\n  --color-yellow-400: oklch(85.2% 0.199 91.936);\n  --color-yellow-500: oklch(79.5% 0.184 86.047);\n  --color-yellow-600: oklch(68.1% 0.162 75.834);\n  --color-yellow-700: oklch(55.4% 0.135 66.442);\n  --color-yellow-800: oklch(47.6% 0.114 61.907);\n  --color-yellow-900: oklch(42.1% 0.095 57.708);\n  --color-yellow-950: oklch(28.6% 0.066 53.813);\n\n  --color-lime-50: oklch(98.6% 0.031 120.757);\n  --color-lime-100: oklch(96.7% 0.067 122.328);\n  --color-lime-200: oklch(93.8% 0.127 124.321);\n  --color-lime-300: oklch(89.7% 0.196 126.665);\n  --color-lime-400: oklch(84.1% 0.238 128.85);\n  --color-lime-500: oklch(76.8% 0.233 130.85);\n  --color-lime-600: oklch(64.8% 0.2 131.684);\n  --color-lime-700: oklch(53.2% 0.157 131.589);\n  --color-lime-800: oklch(45.3% 0.124 130.933);\n  --color-lime-900: oklch(40.5% 0.101 131.063);\n  --color-lime-950: oklch(27.4% 0.072 132.109);\n\n  --color-green-50: oklch(98.2% 0.018 155.826);\n  --color-green-100: oklch(96.2% 0.044 156.743);\n  --color-green-200: oklch(92.5% 0.084 155.995);\n  --color-green-300: oklch(87.1% 0.15 154.449);\n  --color-green-400: oklch(79.2% 0.209 151.711);\n  --color-green-500: oklch(72.3% 0.219 149.579);\n  --color-green-600: oklch(62.7% 0.194 149.214);\n  --color-green-700: oklch(52.7% 0.154 150.069);\n  --color-green-800: oklch(44.8% 0.119 151.328);\n  --color-green-900: oklch(39.3% 0.095 152.535);\n  --color-green-950: oklch(26.6% 0.065 152.934);\n\n  --color-emerald-50: oklch(97.9% 0.021 166.113);\n  --color-emerald-100: oklch(95% 0.052 163.051);\n  --color-emerald-200: oklch(90.5% 0.093 164.15);\n  --color-emerald-300: oklch(84.5% 0.143 164.978);\n  --color-emerald-400: oklch(76.5% 0.177 163.223);\n  --color-emerald-500: oklch(69.6% 0.17 162.48);\n  --color-emerald-600: oklch(59.6% 0.145 163.225);\n  --color-emerald-700: oklch(50.8% 0.118 165.612);\n  --color-emerald-800: oklch(43.2% 0.095 166.913);\n  --color-emerald-900: oklch(37.8% 0.077 168.94);\n  --color-emerald-950: oklch(26.2% 0.051 172.552);\n\n  --color-teal-50: oklch(98.4% 0.014 180.72);\n  --color-teal-100: oklch(95.3% 0.051 180.801);\n  --color-teal-200: oklch(91% 0.096 180.426);\n  --color-teal-300: oklch(85.5% 0.138 181.071);\n  --color-teal-400: oklch(77.7% 0.152 181.912);\n  --color-teal-500: oklch(70.4% 0.14 182.503);\n  --color-teal-600: oklch(60% 0.118 184.704);\n  --color-teal-700: oklch(51.1% 0.096 186.391);\n  --color-teal-800: oklch(43.7% 0.078 188.216);\n  --color-teal-900: oklch(38.6% 0.063 188.416);\n  --color-teal-950: oklch(27.7% 0.046 192.524);\n\n  --color-cyan-50: oklch(98.4% 0.019 200.873);\n  --color-cyan-100: oklch(95.6% 0.045 203.388);\n  --color-cyan-200: oklch(91.7% 0.08 205.041);\n  --color-cyan-300: oklch(86.5% 0.127 207.078);\n  --color-cyan-400: oklch(78.9% 0.154 211.53);\n  --color-cyan-500: oklch(71.5% 0.143 215.221);\n  --color-cyan-600: oklch(60.9% 0.126 221.723);\n  --color-cyan-700: oklch(52% 0.105 223.128);\n  --color-cyan-800: oklch(45% 0.085 224.283);\n  --color-cyan-900: oklch(39.8% 0.07 227.392);\n  --color-cyan-950: oklch(30.2% 0.056 229.695);\n\n  --color-sky-50: oklch(97.7% 0.013 236.62);\n  --color-sky-100: oklch(95.1% 0.026 236.824);\n  --color-sky-200: oklch(90.1% 0.058 230.902);\n  --color-sky-300: oklch(82.8% 0.111 230.318);\n  --color-sky-400: oklch(74.6% 0.16 232.661);\n  --color-sky-500: oklch(68.5% 0.169 237.323);\n  --color-sky-600: oklch(58.8% 0.158 241.966);\n  --color-sky-700: oklch(50% 0.134 242.749);\n  --color-sky-800: oklch(44.3% 0.11 240.79);\n  --color-sky-900: oklch(39.1% 0.09 240.876);\n  --color-sky-950: oklch(29.3% 0.066 243.157);\n\n  --color-blue-50: oklch(97% 0.014 254.604);\n  --color-blue-100: oklch(93.2% 0.032 255.585);\n  --color-blue-200: oklch(88.2% 0.059 254.128);\n  --color-blue-300: oklch(80.9% 0.105 251.813);\n  --color-blue-400: oklch(70.7% 0.165 254.624);\n  --color-blue-500: oklch(62.3% 0.214 259.815);\n  --color-blue-600: oklch(54.6% 0.245 262.881);\n  --color-blue-700: oklch(48.8% 0.243 264.376);\n  --color-blue-800: oklch(42.4% 0.199 265.638);\n  --color-blue-900: oklch(37.9% 0.146 265.522);\n  --color-blue-950: oklch(28.2% 0.091 267.935);\n\n  --color-indigo-50: oklch(96.2% 0.018 272.314);\n  --color-indigo-100: oklch(93% 0.034 272.788);\n  --color-indigo-200: oklch(87% 0.065 274.039);\n  --color-indigo-300: oklch(78.5% 0.115 274.713);\n  --color-indigo-400: oklch(67.3% 0.182 276.935);\n  --color-indigo-500: oklch(58.5% 0.233 277.117);\n  --color-indigo-600: oklch(51.1% 0.262 276.966);\n  --color-indigo-700: oklch(45.7% 0.24 277.023);\n  --color-indigo-800: oklch(39.8% 0.195 277.366);\n  --color-indigo-900: oklch(35.9% 0.144 278.697);\n  --color-indigo-950: oklch(25.7% 0.09 281.288);\n\n  --color-violet-50: oklch(96.9% 0.016 293.756);\n  --color-violet-100: oklch(94.3% 0.029 294.588);\n  --color-violet-200: oklch(89.4% 0.057 293.283);\n  --color-violet-300: oklch(81.1% 0.111 293.571);\n  --color-violet-400: oklch(70.2% 0.183 293.541);\n  --color-violet-500: oklch(60.6% 0.25 292.717);\n  --color-violet-600: oklch(54.1% 0.281 293.009);\n  --color-violet-700: oklch(49.1% 0.27 292.581);\n  --color-violet-800: oklch(43.2% 0.232 292.759);\n  --color-violet-900: oklch(38% 0.189 293.745);\n  --color-violet-950: oklch(28.3% 0.141 291.089);\n\n  --color-purple-50: oklch(97.7% 0.014 308.299);\n  --color-purple-100: oklch(94.6% 0.033 307.174);\n  --color-purple-200: oklch(90.2% 0.063 306.703);\n  --color-purple-300: oklch(82.7% 0.119 306.383);\n  --color-purple-400: oklch(71.4% 0.203 305.504);\n  --color-purple-500: oklch(62.7% 0.265 303.9);\n  --color-purple-600: oklch(55.8% 0.288 302.321);\n  --color-purple-700: oklch(49.6% 0.265 301.924);\n  --color-purple-800: oklch(43.8% 0.218 303.724);\n  --color-purple-900: oklch(38.1% 0.176 304.987);\n  --color-purple-950: oklch(29.1% 0.149 302.717);\n\n  --color-fuchsia-50: oklch(97.7% 0.017 320.058);\n  --color-fuchsia-100: oklch(95.2% 0.037 318.852);\n  --color-fuchsia-200: oklch(90.3% 0.076 319.62);\n  --color-fuchsia-300: oklch(83.3% 0.145 321.434);\n  --color-fuchsia-400: oklch(74% 0.238 322.16);\n  --color-fuchsia-500: oklch(66.7% 0.295 322.15);\n  --color-fuchsia-600: oklch(59.1% 0.293 322.896);\n  --color-fuchsia-700: oklch(51.8% 0.253 323.949);\n  --color-fuchsia-800: oklch(45.2% 0.211 324.591);\n  --color-fuchsia-900: oklch(40.1% 0.17 325.612);\n  --color-fuchsia-950: oklch(29.3% 0.136 325.661);\n\n  --color-pink-50: oklch(97.1% 0.014 343.198);\n  --color-pink-100: oklch(94.8% 0.028 342.258);\n  --color-pink-200: oklch(89.9% 0.061 343.231);\n  --color-pink-300: oklch(82.3% 0.12 346.018);\n  --color-pink-400: oklch(71.8% 0.202 349.761);\n  --color-pink-500: oklch(65.6% 0.241 354.308);\n  --color-pink-600: oklch(59.2% 0.249 0.584);\n  --color-pink-700: oklch(52.5% 0.223 3.958);\n  --color-pink-800: oklch(45.9% 0.187 3.815);\n  --color-pink-900: oklch(40.8% 0.153 2.432);\n  --color-pink-950: oklch(28.4% 0.109 3.907);\n\n  --color-rose-50: oklch(96.9% 0.015 12.422);\n  --color-rose-100: oklch(94.1% 0.03 12.58);\n  --color-rose-200: oklch(89.2% 0.058 10.001);\n  --color-rose-300: oklch(81% 0.117 11.638);\n  --color-rose-400: oklch(71.2% 0.194 13.428);\n  --color-rose-500: oklch(64.5% 0.246 16.439);\n  --color-rose-600: oklch(58.6% 0.253 17.585);\n  --color-rose-700: oklch(51.4% 0.222 16.935);\n  --color-rose-800: oklch(45.5% 0.188 13.697);\n  --color-rose-900: oklch(41% 0.159 10.272);\n  --color-rose-950: oklch(27.1% 0.105 12.094);\n\n  --color-slate-50: oklch(98.4% 0.003 247.858);\n  --color-slate-100: oklch(96.8% 0.007 247.896);\n  --color-slate-200: oklch(92.9% 0.013 255.508);\n  --color-slate-300: oklch(86.9% 0.022 252.894);\n  --color-slate-400: oklch(70.4% 0.04 256.788);\n  --color-slate-500: oklch(55.4% 0.046 257.417);\n  --color-slate-600: oklch(44.6% 0.043 257.281);\n  --color-slate-700: oklch(37.2% 0.044 257.287);\n  --color-slate-800: oklch(27.9% 0.041 260.031);\n  --color-slate-900: oklch(20.8% 0.042 265.755);\n  --color-slate-950: oklch(12.9% 0.042 264.695);\n\n  --color-gray-50: oklch(98.5% 0.002 247.839);\n  --color-gray-100: oklch(96.7% 0.003 264.542);\n  --color-gray-200: oklch(92.8% 0.006 264.531);\n  --color-gray-300: oklch(87.2% 0.01 258.338);\n  --color-gray-400: oklch(70.7% 0.022 261.325);\n  --color-gray-500: oklch(55.1% 0.027 264.364);\n  --color-gray-600: oklch(44.6% 0.03 256.802);\n  --color-gray-700: oklch(37.3% 0.034 259.733);\n  --color-gray-800: oklch(27.8% 0.033 256.848);\n  --color-gray-900: oklch(21% 0.034 264.665);\n  --color-gray-950: oklch(13% 0.028 261.692);\n\n  --color-zinc-50: oklch(98.5% 0 0);\n  --color-zinc-100: oklch(96.7% 0.001 286.375);\n  --color-zinc-200: oklch(92% 0.004 286.32);\n  --color-zinc-300: oklch(87.1% 0.006 286.286);\n  --color-zinc-400: oklch(70.5% 0.015 286.067);\n  --color-zinc-500: oklch(55.2% 0.016 285.938);\n  --color-zinc-600: oklch(44.2% 0.017 285.786);\n  --color-zinc-700: oklch(37% 0.013 285.805);\n  --color-zinc-800: oklch(27.4% 0.006 286.033);\n  --color-zinc-900: oklch(21% 0.006 285.885);\n  --color-zinc-950: oklch(14.1% 0.005 285.823);\n\n  --color-neutral-50: oklch(98.5% 0 0);\n  --color-neutral-100: oklch(97% 0 0);\n  --color-neutral-200: oklch(92.2% 0 0);\n  --color-neutral-300: oklch(87% 0 0);\n  --color-neutral-400: oklch(70.8% 0 0);\n  --color-neutral-500: oklch(55.6% 0 0);\n  --color-neutral-600: oklch(43.9% 0 0);\n  --color-neutral-700: oklch(37.1% 0 0);\n  --color-neutral-800: oklch(26.9% 0 0);\n  --color-neutral-900: oklch(20.5% 0 0);\n  --color-neutral-950: oklch(14.5% 0 0);\n\n  --color-stone-50: oklch(98.5% 0.001 106.423);\n  --color-stone-100: oklch(97% 0.001 106.424);\n  --color-stone-200: oklch(92.3% 0.003 48.717);\n  --color-stone-300: oklch(86.9% 0.005 56.366);\n  --color-stone-400: oklch(70.9% 0.01 56.259);\n  --color-stone-500: oklch(55.3% 0.013 58.071);\n  --color-stone-600: oklch(44.4% 0.011 73.639);\n  --color-stone-700: oklch(37.4% 0.01 67.558);\n  --color-stone-800: oklch(26.8% 0.007 34.298);\n  --color-stone-900: oklch(21.6% 0.006 56.043);\n  --color-stone-950: oklch(14.7% 0.004 49.25);\n\n  --color-black: #000;\n  --color-white: #fff;\n\n  --spacing: 0.25rem;\n\n  --breakpoint-sm: 40rem;\n  --breakpoint-md: 48rem;\n  --breakpoint-lg: 64rem;\n  --breakpoint-xl: 80rem;\n  --breakpoint-2xl: 96rem;\n\n  --container-3xs: 16rem;\n  --container-2xs: 18rem;\n  --container-xs: 20rem;\n  --container-sm: 24rem;\n  --container-md: 28rem;\n  --container-lg: 32rem;\n  --container-xl: 36rem;\n  --container-2xl: 42rem;\n  --container-3xl: 48rem;\n  --container-4xl: 56rem;\n  --container-5xl: 64rem;\n  --container-6xl: 72rem;\n  --container-7xl: 80rem;\n\n  --text-xs: 0.75rem;\n  --text-xs--line-height: calc(1 / 0.75);\n  --text-sm: 0.875rem;\n  --text-sm--line-height: calc(1.25 / 0.875);\n  --text-base: 1rem;\n  --text-base--line-height: calc(1.5 / 1);\n  --text-lg: 1.125rem;\n  --text-lg--line-height: calc(1.75 / 1.125);\n  --text-xl: 1.25rem;\n  --text-xl--line-height: calc(1.75 / 1.25);\n  --text-2xl: 1.5rem;\n  --text-2xl--line-height: calc(2 / 1.5);\n  --text-3xl: 1.875rem;\n  --text-3xl--line-height: calc(2.25 / 1.875);\n  --text-4xl: 2.25rem;\n  --text-4xl--line-height: calc(2.5 / 2.25);\n  --text-5xl: 3rem;\n  --text-5xl--line-height: 1;\n  --text-6xl: 3.75rem;\n  --text-6xl--line-height: 1;\n  --text-7xl: 4.5rem;\n  --text-7xl--line-height: 1;\n  --text-8xl: 6rem;\n  --text-8xl--line-height: 1;\n  --text-9xl: 8rem;\n  --text-9xl--line-height: 1;\n\n  --font-weight-thin: 100;\n  --font-weight-extralight: 200;\n  --font-weight-light: 300;\n  --font-weight-normal: 400;\n  --font-weight-medium: 500;\n  --font-weight-semibold: 600;\n  --font-weight-bold: 700;\n  --font-weight-extrabold: 800;\n  --font-weight-black: 900;\n\n  --tracking-tighter: -0.05em;\n  --tracking-tight: -0.025em;\n  --tracking-normal: 0em;\n  --tracking-wide: 0.025em;\n  --tracking-wider: 0.05em;\n  --tracking-widest: 0.1em;\n\n  --leading-tight: 1.25;\n  --leading-snug: 1.375;\n  --leading-normal: 1.5;\n  --leading-relaxed: 1.625;\n  --leading-loose: 2;\n\n  --radius-xs: 0.125rem;\n  --radius-sm: 0.25rem;\n  --radius-md: 0.375rem;\n  --radius-lg: 0.5rem;\n  --radius-xl: 0.75rem;\n  --radius-2xl: 1rem;\n  --radius-3xl: 1.5rem;\n  --radius-4xl: 2rem;\n\n  --shadow-2xs: 0 1px rgb(0 0 0 / 0.05);\n  --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);\n  --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);\n  --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n  --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);\n  --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25);\n\n  --inset-shadow-2xs: inset 0 1px rgb(0 0 0 / 0.05);\n  --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.05);\n  --inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / 0.05);\n\n  --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.05);\n  --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.15);\n  --drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12);\n  --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / 0.15);\n  --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / 0.1);\n  --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 0.15);\n\n  --text-shadow-2xs: 0px 1px 0px rgb(0 0 0 / 0.15);\n  --text-shadow-xs: 0px 1px 1px rgb(0 0 0 / 0.2);\n  --text-shadow-sm:\n    0px 1px 0px rgb(0 0 0 / 0.075), 0px 1px 1px rgb(0 0 0 / 0.075), 0px 2px 2px rgb(0 0 0 / 0.075);\n  --text-shadow-md:\n    0px 1px 1px rgb(0 0 0 / 0.1), 0px 1px 2px rgb(0 0 0 / 0.1), 0px 2px 4px rgb(0 0 0 / 0.1);\n  --text-shadow-lg:\n    0px 1px 2px rgb(0 0 0 / 0.1), 0px 3px 2px rgb(0 0 0 / 0.1), 0px 4px 8px rgb(0 0 0 / 0.1);\n\n  --ease-in: cubic-bezier(0.4, 0, 1, 1);\n  --ease-out: cubic-bezier(0, 0, 0.2, 1);\n  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);\n\n  --animate-spin: spin 1s linear infinite;\n  --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;\n  --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n  --animate-bounce: bounce 1s infinite;\n\n  @keyframes spin {\n    to {\n      transform: rotate(360deg);\n    }\n  }\n\n  @keyframes ping {\n    75%,\n    100% {\n      transform: scale(2);\n      opacity: 0;\n    }\n  }\n\n  @keyframes pulse {\n    50% {\n      opacity: 0.5;\n    }\n  }\n\n  @keyframes bounce {\n    0%,\n    100% {\n      transform: translateY(-25%);\n      animation-timing-function: cubic-bezier(0.8, 0, 1, 1);\n    }\n\n    50% {\n      transform: none;\n      animation-timing-function: cubic-bezier(0, 0, 0.2, 1);\n    }\n  }\n\n  --blur-xs: 4px;\n  --blur-sm: 8px;\n  --blur-md: 12px;\n  --blur-lg: 16px;\n  --blur-xl: 24px;\n  --blur-2xl: 40px;\n  --blur-3xl: 64px;\n\n  --perspective-dramatic: 100px;\n  --perspective-near: 300px;\n  --perspective-normal: 500px;\n  --perspective-midrange: 800px;\n  --perspective-distant: 1200px;\n\n  --aspect-video: 16 / 9;\n\n  --default-transition-duration: 150ms;\n  --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n  --default-font-family: --theme(--font-sans, initial);\n  --default-font-feature-settings: --theme(--font-sans--font-feature-settings, initial);\n  --default-font-variation-settings: --theme(--font-sans--font-variation-settings, initial);\n  --default-mono-font-family: --theme(--font-mono, initial);\n  --default-mono-font-feature-settings: --theme(--font-mono--font-feature-settings, initial);\n  --default-mono-font-variation-settings: --theme(--font-mono--font-variation-settings, initial);\n}\n\n/* Deprecated */\n@theme default inline reference {\n  --blur: 8px;\n  --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);\n  --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05);\n  --drop-shadow: 0 1px 2px rgb(0 0 0 / 0.1), 0 1px 1px rgb(0 0 0 / 0.06);\n  --radius: 0.25rem;\n  --max-width-prose: 65ch;\n}\n`; var Vi = `@tailwind utilities;\n`; var Be = { index: Si, preflight: $i, theme: Ni, utilities: Vi }; var kt = class { start(r) { performance.mark(`${r} (start)`); } end(r, i) { performance.mark(`${r} (end)`), performance.measure(r, { start: `${r} (start)`, end: `${r} (end)`, detail: i }); } hit(r, i) { performance.mark(r, { detail: i }); } error(r) { throw performance.mark(\"(error)\", { detail: { error: `${r}` } }), r } }; var Ei = \"text/tailwindcss\", vt, Ht = new Set, qt = \"\", Gt = document.createElement(\"style\"), Ti = Promise.resolve(), Vn = 1, re = new kt; async function Tn() {\n  \t    re.start(\"Create compiler\"), re.start(\"Reading Stylesheets\"); let t = document.querySelectorAll(`style[type=\"${Ei}\"]`), r = \"\"; for (let i of t) Ri(i), r += i.textContent + `\n`; if (r.includes(\"@import\") || (r = `@import \"tailwindcss\";${r}`), re.end(\"Reading Stylesheets\", { size: r.length, changed: qt !== r }), qt !== r) { qt = r, re.start(\"Compile CSS\"); try { vt = await Ci(r, { base: \"/\", loadStylesheet: En, loadModule: Rn }); } finally { re.end(\"Compile CSS\"), re.end(\"Create compiler\"); } Ht.clear(); }\n  \t  } async function En(t, r) { function i() { if (t === \"tailwindcss\") return { path: \"virtual:tailwindcss/index.css\", base: r, content: Be.index }; if (t === \"tailwindcss/preflight\" || t === \"tailwindcss/preflight.css\" || t === \"./preflight.css\") return { path: \"virtual:tailwindcss/preflight.css\", base: r, content: Be.preflight }; if (t === \"tailwindcss/theme\" || t === \"tailwindcss/theme.css\" || t === \"./theme.css\") return { path: \"virtual:tailwindcss/theme.css\", base: r, content: Be.theme }; if (t === \"tailwindcss/utilities\" || t === \"tailwindcss/utilities.css\" || t === \"./utilities.css\") return { path: \"virtual:tailwindcss/utilities.css\", base: r, content: Be.utilities }; throw new Error(`The browser build does not support @import for \"${t}\"`) } try { let e = i(); return re.hit(\"Loaded stylesheet\", { id: t, base: r, size: e.content.length }), e } catch (e) { throw re.hit(\"Failed to load stylesheet\", { id: t, base: r, error: e.message ?? e }), e } } async function Rn() { throw new Error(\"The browser build does not support plugins or config files.\") } async function Pn(t) { if (!vt) return; let r = new Set; re.start(\"Collect classes\"); for (let i of document.querySelectorAll(\"[class]\")) for (let e of i.classList) Ht.has(e) || (Ht.add(e), r.add(e)); re.end(\"Collect classes\", { count: r.size }), !(r.size === 0 && t === \"incremental\") && (re.start(\"Build utilities\"), Gt.textContent = vt.build(Array.from(r)), re.end(\"Build utilities\")); } function wt(t) { async function r() { if (!vt && t !== \"full\") return; let i = Vn++; re.start(`Build #${i} (${t})`), t === \"full\" && await Tn(), re.start(\"Build\"), await Pn(t), re.end(\"Build\"), re.end(`Build #${i} (${t})`); } Ti = Ti.then(r).catch(i => re.error(i)); } var On = new MutationObserver(() => wt(\"full\")); function Ri(t) { On.observe(t, { attributes: true, attributeFilter: [\"type\"], characterData: true, subtree: true, childList: true }); } new MutationObserver(t => { let r = 0, i = 0; for (let e of t) { for (let o of e.addedNodes) o.nodeType === Node.ELEMENT_NODE && o.tagName === \"STYLE\" && o.getAttribute(\"type\") === Ei && (Ri(o), r++); for (let o of e.addedNodes) o.nodeType === 1 && o !== Gt && i++; e.type === \"attributes\" && i++; } if (r > 0) return wt(\"full\"); if (i > 0) return wt(\"incremental\") }).observe(document.documentElement, { attributes: true, attributeFilter: [\"class\"], childList: true, subtree: true }); wt(\"full\"); document.head.append(Gt);\n  \t})();\n  \treturn tailwind_v4_1;\n  }\n\n  requireTailwind_v4_1();\n\n  // Utility generators\n  // Functions that generate CSS utilities from CSS variable suffixes\n\n  function createUtilityGenerators() {\n      return {\n          'color-': (suffix, value) => {\n              const utilities = [];\n              const addUtility = (prefix, property, baseValue) => {\n                  utilities.push([`${prefix}-${suffix}`, `${property}: ${baseValue}`]);\n              };\n              addUtility('text', 'color', value);\n              addUtility('bg', 'background-color', value);\n              addUtility('border', 'border-color', value);\n              addUtility('outline', 'outline-color', value);\n              addUtility('ring', 'box-shadow', `0 0 0 1px ${value}`);\n              addUtility('fill', 'fill', value);\n              addUtility('stroke', 'stroke', value);\n              addUtility('decoration', 'text-decoration-color', value);\n              addUtility('accent', 'accent-color', value);\n              addUtility('caret', 'caret-color', value);\n              return utilities;\n          },\n          'font-': (suffix, value) => [\n              [`font-${suffix}`, `font-family: ${value}`]\n          ],\n          'text-': (suffix, value) => [\n              [`text-${suffix}`, `font-size: ${value}`]\n          ],\n          'font-weight-': (suffix, value) => [\n              [`font-${suffix}`, `font-weight: ${value}`]\n          ],\n          'tracking-': (suffix, value) => [\n              [`tracking-${suffix}`, `letter-spacing: ${value}`]\n          ],\n          'leading-': (suffix, value) => [\n              [`leading-${suffix}`, `line-height: ${value}`]\n          ],\n          'breakpoint-': (suffix, value) => [\n              [`@${suffix}`, `@media (min-width: ${value})`]\n          ],\n          'container-': (suffix, value) => [\n              [`container-${suffix}`, `max-width: ${value}`],\n              [`@container-${suffix}`, `@container (min-width: ${value})`]\n          ],\n          'spacing-': (suffix, value) => [\n              [`gap-${suffix}`, `gap: ${value}`],\n              [`p-${suffix}`, `padding: ${value}`],\n              [`px-${suffix}`, `padding-left: ${value}; padding-right: ${value}`],\n              [`py-${suffix}`, `padding-top: ${value}; padding-bottom: ${value}`],\n              [`m-${suffix}`, `margin: ${value}`],\n              [`mx-${suffix}`, `margin-left: ${value}; margin-right: ${value}`],\n              [`my-${suffix}`, `margin-top: ${value}; margin-bottom: ${value}`],\n              [`space-x-${suffix}`, `> * + * { margin-left: ${value}; }`],\n              [`space-y-${suffix}`, `> * + * { margin-top: ${value}; }`],\n              [`max-w-${suffix}`, `max-width: ${value}`],\n              [`max-h-${suffix}`, `max-height: ${value}`],\n              [`min-w-${suffix}`, `min-width: ${value}`],\n              [`min-h-${suffix}`, `min-height: ${value}`],\n              [`w-${suffix}`, `width: ${value}`],\n              [`h-${suffix}`, `height: ${value}`]\n          ],\n          'radius-': (suffix, value) => [\n              [`rounded-${suffix}`, `border-radius: ${value}`]\n          ],\n          'shadow-': (suffix, value) => [\n              [`shadow-${suffix}`, `box-shadow: ${value}`]\n          ],\n          'inset-shadow-': (suffix, value) => [\n              [`inset-shadow-${suffix}`, `box-shadow: inset ${value}`]\n          ],\n          'drop-shadow-': (suffix, value) => [\n              [`drop-shadow-${suffix}`, `filter: drop-shadow(${value})`]\n          ],\n          'blur-': (suffix, value) => [\n              [`blur-${suffix}`, `filter: blur(${value})`]\n          ],\n          'perspective-': (suffix, value) => [\n              [`perspective-${suffix}`, `perspective: ${value}`]\n          ],\n          'aspect-': (suffix, value) => [\n              [`aspect-${suffix}`, `aspect-ratio: ${value}`]\n          ],\n          'ease-': (suffix, value) => [\n              [`ease-${suffix}`, `transition-timing-function: ${value}`]\n          ],\n          'animate-': (suffix, value) => [\n              [`animate-${suffix}`, `animation: ${value}`]\n          ],\n          'border-width-': (suffix, value) => [\n              [`border-${suffix}`, `border-width: ${value}`]\n          ],\n          'border-style-': (suffix, value) => [\n              [`border-${suffix}`, `border-style: ${value}`]\n          ],\n          'outline-': (suffix, value) => [\n              [`outline-${suffix}`, `outline-color: ${value}`]\n          ],\n          'outline-width-': (suffix, value) => [\n              [`outline-${suffix}`, `outline-width: ${value}`]\n          ],\n          'outline-style-': (suffix, value) => [\n              [`outline-${suffix}`, `outline-style: ${value}`]\n          ],\n          'ring-': (suffix, value) => [\n              [`ring-${suffix}`, `box-shadow: 0 0 0 ${value} var(--color-ring)`]\n          ],\n          'ring-offset-': (suffix, value) => [\n              [`ring-offset-${suffix}`, `--tw-ring-offset-width: ${value}`]\n          ],\n          'divide-': (suffix, value) => [\n              [`divide-${suffix}`, `border-color: ${value}`]\n          ],\n          'accent-': (suffix, value) => [\n              [`accent-${suffix}`, `accent-color: ${value}`]\n          ],\n          'caret-': (suffix, value) => [\n              [`caret-${suffix}`, `caret-color: ${value}`]\n          ],\n          'decoration-': (suffix, value) => [\n              [`decoration-${suffix}`, `text-decoration-color: ${value}`]\n          ],\n          'placeholder-': (suffix, value) => [\n              [`placeholder-${suffix}`, `&::placeholder { color: ${value} }`]\n          ],\n          'selection-': (suffix, value) => [\n              [`selection-${suffix}`, `&::selection { background-color: ${value} }`]\n          ],\n          'scrollbar-': (suffix, value) => [\n              [`scrollbar-${suffix}`, `scrollbar-color: ${value}`]\n          ]\n      };\n  }\n\n\n\n  // Variants and variant groups\n  // CSS selector mappings for Tailwind variants\n\n  function createVariants() {\n      return {\n          // State variants\n          'hover': ':hover',\n          'focus': ':focus',\n          'focus-visible': ':focus-visible',\n          'focus-within': ':focus-within',\n          'active': ':active',\n          'visited': ':visited',\n          'target': ':target',\n          'first': ':first-child',\n          'last': ':last-child',\n          'only': ':only-child',\n          'odd': ':nth-child(odd)',\n          'even': ':nth-child(even)',\n          'first-of-type': ':first-of-type',\n          'last-of-type': ':last-of-type',\n          'only-of-type': ':only-of-type',\n          'empty': ':empty',\n          'disabled': ':disabled',\n          'enabled': ':enabled',\n          'checked': ':checked',\n          'indeterminate': ':indeterminate',\n          'default': ':default',\n          'required': ':required',\n          'valid': ':valid',\n          'invalid': ':invalid',\n          'in-range': ':in-range',\n          'out-of-range': ':out-of-range',\n          'placeholder-shown': ':placeholder-shown',\n          'autofill': ':autofill',\n          'read-only': ':read-only',\n          'read-write': ':read-write',\n          'optional': ':optional',\n          'user-valid': ':user-valid',\n          'user-invalid': ':user-invalid',\n          'inert': ':inert',\n          'open': ':is([open], :popover-open, :open) &',\n          'closed': ':not(:is([open], :popover-open, :open)) &',\n          'paused': '[data-state=\"paused\"] &',\n          'playing': '[data-state=\"playing\"] &',\n          'muted': '[data-state=\"muted\"] &',\n          'unmuted': '[data-state=\"unmuted\"] &',\n          'collapsed': '[data-state=\"collapsed\"] &',\n          'expanded': '[data-state=\"expanded\"] &',\n          'unchecked': ':not(:checked)',\n          'selected': '[data-state=\"selected\"] &',\n          'unselected': '[data-state=\"unselected\"] &',\n          'details-content': '::details-content',\n          'nth': ':nth-child',\n          'nth-last': ':nth-last-child',\n          'nth-of-type': ':nth-of-type',\n          'nth-last-of-type': ':nth-last-of-type',\n          'has': ':has',\n          'not': ':not',\n\n          // Pseudo-elements\n          'before': '::before',\n          'after': '::after',\n          'first-letter': '::first-letter',\n          'first-line': '::first-line',\n          'marker': '::marker',\n          'selection': '::selection',\n          'file': '::file-selector-button',\n          'backdrop': '::backdrop',\n          'placeholder': '::placeholder',\n          'target-text': '::target-text',\n          'spelling-error': '::spelling-error',\n          'grammar-error': '::grammar-error',\n\n          // Media queries\n          'dark': '.dark &',\n          'light': '.light &',\n\n          // Group variants\n          'group': '.group &',\n          'group-hover': '.group:hover &',\n          'group-focus': '.group:focus &',\n          'group-focus-within': '.group:focus-within &',\n          'group-active': '.group:active &',\n          'group-disabled': '.group:disabled &',\n          'group-visited': '.group:visited &',\n          'group-checked': '.group:checked &',\n          'group-required': '.group:required &',\n          'group-valid': '.group:valid &',\n          'group-invalid': '.group:invalid &',\n          'group-in-range': '.group:in-range &',\n          'group-out-of-range': '.group:out-of-range &',\n          'group-placeholder-shown': '.group:placeholder-shown &',\n          'group-autofill': '.group:autofill &',\n          'group-read-only': '.group:read-only &',\n          'group-read-write': '.group:read-write &',\n          'group-optional': '.group:optional &',\n          'group-user-valid': '.group:user-valid &',\n          'group-user-invalid': '.group:user-invalid &',\n\n          // Peer variants\n          'peer': '.peer ~ &',\n          'peer-hover': '.peer:hover ~ &',\n          'peer-focus': '.peer:focus ~ &',\n          'peer-focus-within': '.peer:focus-within ~ &',\n          'peer-active': '.peer:active ~ &',\n          'peer-disabled': '.peer:disabled ~ &',\n          'peer-visited': '.peer:visited ~ &',\n          'peer-checked': '.peer:checked ~ &',\n          'peer-required': '.peer:required ~ &',\n          'peer-valid': '.peer:valid ~ &',\n          'peer-invalid': '.peer:invalid ~ &',\n          'peer-in-range': '.peer:in-range ~ &',\n          'peer-out-of-range': '.peer:out-of-range ~ &',\n          'peer-placeholder-shown': '.peer:placeholder-shown ~ &',\n          'peer-autofill': '.peer:autofill ~ &',\n          'peer-read-only': '.peer:read-only ~ &',\n          'peer-read-write': '.peer:read-write ~ &',\n          'peer-optional': '.peer:optional ~ &',\n          'peer-user-valid': '.peer:user-valid ~ &',\n          'peer-user-invalid': '.peer:user-invalid &',\n\n          'motion-safe': '@media (prefers-reduced-motion: no-preference)',\n          'motion-reduce': '@media (prefers-reduced-motion: reduce)',\n          'print': '@media print',\n          'portrait': '@media (orientation: portrait)',\n          'landscape': '@media (orientation: landscape)',\n          'contrast-more': '@media (prefers-contrast: more)',\n          'contrast-less': '@media (prefers-contrast: less)',\n          'forced-colors': '@media (forced-colors: active)',\n          'rtl': '&:where(:dir(rtl), [dir=\"rtl\"], [dir=\"rtl\"] *)',\n          'ltr': '&:where(:dir(ltr), [dir=\"ltr\"], [dir=\"ltr\"] *)',\n          '[dir=rtl]': '[dir=\"rtl\"] &',\n          '[dir=ltr]': '[dir=\"ltr\"] &',\n          'pointer-fine': '@media (pointer: fine)',\n          'pointer-coarse': '@media (pointer: coarse)',\n          'pointer-none': '@media (pointer: none)',\n          'any-pointer-fine': '@media (any-pointer: fine)',\n          'any-pointer-coarse': '@media (any-pointer: coarse)',\n          'any-pointer-none': '@media (any-pointer: none)',\n          'scripting-enabled': '@media (scripting: enabled)',\n          'can-hover': '@media (hover: hover)',\n          'can-not-hover': '@media (hover: none)',\n          'any-hover': '@media (any-hover: hover)',\n          'any-hover-none': '@media (any-hover: none)',\n          'any-pointer': '@media (any-pointer: fine)',\n          'any-pointer-coarse': '@media (any-pointer: coarse)',\n          'any-pointer-none': '@media (any-pointer: none)',\n          'color': '@media (color)',\n          'color-gamut': '@media (color-gamut: srgb)',\n          'color-gamut-p3': '@media (color-gamut: p3)',\n          'color-gamut-rec2020': '@media (color-gamut: rec2020)',\n          'monochrome': '@media (monochrome)',\n          'monochrome-color': '@media (monochrome: 0)',\n          'monochrome-grayscale': '@media (monochrome: 1)',\n          'inverted-colors': '@media (inverted-colors: inverted)',\n          'inverted-colors-none': '@media (inverted-colors: none)',\n          'update': '@media (update: fast)',\n          'update-slow': '@media (update: slow)',\n          'update-none': '@media (update: none)',\n          'overflow-block': '@media (overflow-block: scroll)',\n          'overflow-block-paged': '@media (overflow-block: paged)',\n          'overflow-inline': '@media (overflow-inline: scroll)',\n          'overflow-inline-auto': '@media (overflow-inline: auto)',\n          'prefers-color-scheme': '@media (prefers-color-scheme: dark)',\n          'prefers-color-scheme-light': '@media (prefers-color-scheme: light)',\n          'prefers-contrast': '@media (prefers-contrast: more)',\n          'prefers-contrast-less': '@media (prefers-contrast: less)',\n          'prefers-contrast-no-preference': '@media (prefers-contrast: no-preference)',\n          'prefers-reduced-motion': '@media (prefers-reduced-motion: reduce)',\n          'prefers-reduced-motion-no-preference': '@media (prefers-reduced-motion: no-preference)',\n          'prefers-reduced-transparency': '@media (prefers-reduced-transparency: reduce)',\n          'prefers-reduced-transparency-no-preference': '@media (prefers-reduced-transparency: no-preference)',\n          'resolution': '@media (resolution: 1dppx)',\n          'resolution-low': '@media (resolution: 1dppx)',\n          'resolution-high': '@media (resolution: 2dppx)',\n          'scan': '@media (scan: progressive)',\n          'scan-interlace': '@media (scan: interlace)',\n          'scripting': '@media (scripting: enabled)',\n          'scripting-none': '@media (scripting: none)',\n          'scripting-initial-only': '@media (scripting: initial-only)',\n\n          // Container queries\n          'container': '@container',\n          'container-name': '@container',\n\n          // Important modifier\n          '!': '!important',\n\n          // Responsive breakpoints\n          'sm': '@media (min-width: 640px)',\n          'md': '@media (min-width: 768px)',\n          'lg': '@media (min-width: 1024px)',\n          'xl': '@media (min-width: 1280px)',\n          '2xl': '@media (min-width: 1536px)',\n\n          // Supports queries\n          'supports': '@supports',\n\n          // Starting style\n          'starting': '@starting-style',\n\n          // Data attribute variants (common patterns)\n          'data-open': '[data-state=\"open\"] &',\n          'data-closed': '[data-state=\"closed\"] &',\n          'data-checked': '[data-state=\"checked\"] &',\n          'data-unchecked': '[data-state=\"unchecked\"] &',\n          'data-on': '[data-state=\"on\"] &',\n          'data-off': '[data-state=\"off\"] &',\n          'data-visible': '[data-state=\"visible\"] &',\n          'data-hidden': '[data-state=\"hidden\"] &',\n          'data-disabled': '[data-disabled] &',\n          'data-loading': '[data-loading] &',\n          'data-error': '[data-error] &',\n          'data-success': '[data-success] &',\n          'data-warning': '[data-warning] &',\n          'data-selected': '[data-selected] &',\n          'data-highlighted': '[data-highlighted] &',\n          'data-pressed': '[data-pressed] &',\n          'data-expanded': '[data-expanded] &',\n          'data-collapsed': '[data-collapsed] &',\n          'data-active': '[data-active] &',\n          'data-inactive': '[data-inactive] &',\n          'data-valid': '[data-valid] &',\n          'data-invalid': '[data-invalid] &',\n          'data-required': '[data-required] &',\n          'data-optional': '[data-optional] &',\n          'data-readonly': '[data-readonly] &',\n          'data-write': '[data-write] &',\n\n          // Aria attribute variants (common patterns)\n          'aria-expanded': '[aria-expanded=\"true\"] &',\n          'aria-collapsed': '[aria-expanded=\"false\"] &',\n          'aria-pressed': '[aria-pressed=\"true\"] &',\n          'aria-unpressed': '[aria-pressed=\"false\"] &',\n          'aria-checked': '[aria-checked=\"true\"] &',\n          'aria-unchecked': '[aria-checked=\"false\"] &',\n          'aria-selected': '[aria-selected=\"true\"] &',\n          'aria-unselected': '[aria-selected=\"false\"] &',\n          'aria-invalid': '[aria-invalid=\"true\"] &',\n          'aria-valid': '[aria-invalid=\"false\"] &',\n          'aria-required': '[aria-required=\"true\"] &',\n          'aria-optional': '[aria-required=\"false\"] &',\n          'aria-disabled': '[aria-disabled=\"true\"] &',\n          'aria-enabled': '[aria-disabled=\"false\"] &',\n          'aria-hidden': '[aria-hidden=\"true\"] &',\n          'aria-visible': '[aria-hidden=\"false\"] &',\n          'aria-busy': '[aria-busy=\"true\"] &',\n          'aria-available': '[aria-busy=\"false\"] &',\n          'aria-current': '[aria-current=\"true\"] &',\n          'aria-not-current': '[aria-current=\"false\"] &',\n          'aria-live': '[aria-live=\"polite\"] &, [aria-live=\"assertive\"] &',\n          'aria-atomic': '[aria-atomic=\"true\"] &',\n          'aria-relevant': '[aria-relevant=\"additions\"] &, [aria-relevant=\"removals\"] &, [aria-relevant=\"text\"] &, [aria-relevant=\"all\"] &'\n      };\n  }\n\n  function createVariantGroups() {\n      return {\n          'state': ['hover', 'focus', 'active', 'visited', 'target', 'open', 'closed', 'paused', 'playing', 'muted', 'unmuted', 'collapsed', 'expanded', 'unchecked', 'selected', 'unselected'],\n          'child': ['first', 'last', 'only', 'odd', 'even'],\n          'form': ['disabled', 'enabled', 'checked', 'indeterminate', 'required', 'valid', 'invalid'],\n          'pseudo': ['before', 'after', 'first-letter', 'first-line', 'marker', 'selection', 'file', 'backdrop'],\n          'media': ['dark', 'light', 'motion-safe', 'motion-reduce', 'print', 'portrait', 'landscape', 'rtl', 'ltr', 'can-hover', 'can-not-hover', 'any-hover', 'any-hover-none', 'color', 'monochrome', 'inverted-colors', 'inverted-colors-none', 'update', 'update-slow', 'update-none', 'overflow-block', 'overflow-block-paged', 'overflow-inline', 'overflow-inline-auto', 'prefers-color-scheme', 'prefers-color-scheme-light', 'prefers-contrast', 'prefers-contrast-less', 'prefers-contrast-no-preference', 'prefers-reduced-motion', 'prefers-reduced-motion-no-preference', 'prefers-reduced-transparency', 'prefers-reduced-transparency-no-preference', 'resolution', 'resolution-low', 'resolution-high', 'scan', 'scan-interlace', 'scripting', 'scripting-none', 'scripting-initial-only', 'forced-colors', 'contrast-more', 'contrast-less', 'pointer-fine', 'pointer-coarse', 'pointer-none', 'any-pointer-fine', 'any-pointer-coarse', 'any-pointer-none', 'scripting-enabled'],\n          'responsive': ['sm', 'md', 'lg', 'xl', '2xl'],\n          'group': ['group', 'group-hover', 'group-focus', 'group-active', 'group-disabled', 'group-checked', 'group-required', 'group-valid', 'group-invalid'],\n          'peer': ['peer', 'peer-hover', 'peer-focus', 'peer-active', 'peer-disabled', 'peer-checked', 'peer-required', 'peer-valid', 'peer-invalid'],\n          'data': ['data-open', 'data-closed', 'data-checked', 'data-unchecked', 'data-visible', 'data-hidden', 'data-disabled', 'data-loading', 'data-error', 'data-success', 'data-warning', 'data-selected', 'data-highlighted', 'data-pressed', 'data-expanded', 'data-collapsed', 'data-active', 'data-inactive', 'data-valid', 'data-invalid', 'data-required', 'data-optional', 'data-readonly', 'data-write'],\n          'aria': ['aria-expanded', 'aria-collapsed', 'aria-pressed', 'aria-unpressed', 'aria-checked', 'aria-unchecked', 'aria-selected', 'aria-unselected', 'aria-invalid', 'aria-valid', 'aria-required', 'aria-optional', 'aria-disabled', 'aria-enabled', 'aria-hidden', 'aria-visible', 'aria-busy', 'aria-available', 'aria-current', 'aria-not-current', 'aria-live', 'aria-atomic', 'aria-relevant']\n      };\n  }\n\n\n\n  /* Indux Utilities */\n\n  // Browser runtime compiler\n  class TailwindCompiler {\n      constructor(options = {}) {\n          this.debug = options.debug === true;\n          this.startTime = performance.now();\n          \n          if (this.debug) {\n              console.log(`[Indux Utilities] Constructor started at ${this.startTime.toFixed(2)}ms`);\n              console.log(`[Indux Utilities] Document readyState: ${document.readyState}`);\n              console.log(`[Indux Utilities] Head exists: ${!!document.head}`);\n          }\n\n          // Create critical style element FIRST - must be before any rendering\n          performance.now();\n          this.criticalStyleElement = document.createElement('style');\n          this.criticalStyleElement.id = 'utility-styles-critical';\n          // Insert at the very beginning of head\n          if (document.head) {\n              if (document.head.firstChild) {\n                  document.head.insertBefore(this.criticalStyleElement, document.head.firstChild);\n              } else {\n                  document.head.appendChild(this.criticalStyleElement);\n              }\n              if (this.debug) {\n                  console.log(`[Indux Utilities] Critical style element created and inserted at ${(performance.now() - this.startTime).toFixed(2)}ms`);\n              }\n          } else {\n              // If head doesn't exist yet, wait for it (shouldn't happen, but safety check)\n              if (this.debug) {\n                  console.warn(`[Indux Utilities] Head doesn't exist yet, waiting...`);\n              }\n              const checkHead = setInterval(() => {\n                  if (document.head) {\n                      clearInterval(checkHead);\n                      if (document.head.firstChild) {\n                          document.head.insertBefore(this.criticalStyleElement, document.head.firstChild);\n                      } else {\n                          document.head.appendChild(this.criticalStyleElement);\n                      }\n                      if (this.debug) {\n                          console.log(`[Indux Utilities] Critical style element inserted after wait at ${(performance.now() - this.startTime).toFixed(2)}ms`);\n                      }\n                  }\n              }, 1);\n          }\n          \n          // Initialize options first (needed for regex patterns)\n          this.options = {\n              rootSelector: options.rootSelector || ':root',\n              themeSelector: options.themeSelector || '@theme',\n              debounceTime: options.debounceTime || 50,\n              maxCacheAge: options.maxCacheAge || 24 * 60 * 60 * 1000,\n              debug: options.debug !== false,\n              ...options\n          };\n          \n          // Initialize regex patterns (needed for utility generation)\n          this.regexPatterns = {\n              root: new RegExp(`${this.options.rootSelector}\\\\s*{([^}]*)}`, 'g'),\n              theme: new RegExp(`${this.options.themeSelector}\\\\s*{([^}]*)}`, 'g'),\n              variable: /--([\\w-]+):\\s*([^;]+);/g,\n              tailwindPrefix: /^(color|font|text|font-weight|tracking|leading|breakpoint|container|spacing|radius|shadow|inset-shadow|drop-shadow|blur|perspective|aspect|ease|animate|border-width|border-style|outline|outline-width|outline-style|ring|ring-offset|divide|accent|caret|decoration|placeholder|selection|scrollbar)-/\n          };\n          \n          // Initialize utility generators from component\n          const generators = createUtilityGenerators();\n          // Start with minimal generators needed for synchronous generation\n          this.utilityGenerators = {\n              'color-': generators['color-'],\n              'font-': generators['font-'],\n              'text-': generators['text-'],\n              'font-weight-': generators['font-weight-'],\n              'tracking-': generators['tracking-'],\n              'leading-': generators['leading-'],\n              'spacing-': generators['spacing-'],\n              'radius-': generators['radius-'],\n              'shadow-': generators['shadow-'],\n              'blur-': generators['blur-']\n          };\n          // Add remaining generators\n          Object.assign(this.utilityGenerators, generators);\n          \n          // Initialize variants from component (needed for parseClassName during sync generation)\n          this.variants = createVariants();\n          this.variantGroups = createVariantGroups();\n          \n          // Cache for parsed class names (must be before addCriticalBlockingStylesSync)\n          this.classCache = new Map();\n          \n          // Add critical styles IMMEDIATELY - don't wait for anything\n          this.addCriticalBlockingStylesSync();\n\n          // Create main style element for generated utilities\n          this.styleElement = document.createElement('style');\n          this.styleElement.id = 'utility-styles';\n          document.head.appendChild(this.styleElement);\n          if (this.debug) {\n              console.log(`[Indux Utilities] Main style element created at ${(performance.now() - this.startTime).toFixed(2)}ms`);\n          }\n\n          // Initialize properties\n          this.tailwindLink = null;\n          this.observer = null;\n          this.isCompiling = false;\n          this.compileTimeout = null;\n          this.cache = new Map();\n          this.lastThemeHash = null;\n          this.processedElements = new WeakSet();\n          this.activeBreakpoints = new Set();\n          this.activeModifiers = new Set();\n          this.cssFiles = new Set();\n          this.pendingStyles = new Map();\n          this.currentThemeVars = new Map();\n          this.hasInitialized = false;\n          this.lastCompileTime = 0;\n          this.minCompileInterval = 100; // Minimum time between compilations in ms\n          this.cssContentCache = new Map(); // Cache CSS file contents with timestamps\n          this.lastClassesHash = ''; // Track changes in used classes\n          this.staticClassCache = new Set(); // Cache classes found in static HTML/components\n          this.dynamicClassCache = new Set(); // Cache classes that appear dynamically\n          this.hasScannedStatic = false; // Track if we've done initial static scan\n          this.staticScanPromise = null; // Promise for initial static scan\n          this.ignoredClassPatterns = [ // Patterns for classes to ignore\n              /^hljs/, /^language-/, /^copy$/, /^copied$/, /^lines$/, /^selected$/\n          ];\n          this.ignoredElementSelectors = [ // Elements to ignore for DOM mutations\n              'pre', 'code', 'x-code', 'x-code-group'\n          ];\n          this.ignoredAttributes = [ // Attribute changes to ignore (non-visual/utility changes)\n              'id', 'data-order', 'data-component-id', 'data-highlighted', 'data-processed',\n              'x-intersect', 'x-intersect:leave', 'x-show', 'x-hide', 'x-transition',\n              'aria-expanded', 'aria-selected', 'aria-current', 'aria-hidden', 'aria-label',\n              'tabindex', 'role', 'title', 'alt', 'data-state', 'data-value'\n          ];\n          this.significantChangeSelectors = [ // Only these DOM additions trigger recompilation\n              '[data-component]', '[x-data]' // Components and Alpine elements\n          ];\n\n          // Pre-define pseudo classes\n          this.pseudoClasses = ['hover', 'focus', 'active', 'disabled', 'dark'];\n\n          // Cache for discovered custom utility classes\n          this.customUtilities = new Map();\n\n          // Variants and classCache already initialized above (before addCriticalBlockingStylesSync)\n\n          // Load cache and start processing\n          this.loadAndApplyCache();\n\n          // If cache loaded utilities, they'll be in the main style element\n          // The critical style element will be cleared when full utilities are ready\n\n          // Try to generate minimal utilities synchronously from inline styles\n          this.generateSynchronousUtilities();\n\n          // Listen for component loads\n          this.setupComponentLoadListener();\n\n          this.waitForTailwind().then(() => {\n              this.startProcessing();\n          });\n      }\n\n      // Public API for other plugins to configure behavior\n      addIgnoredClassPattern(pattern) {\n          if (pattern instanceof RegExp) {\n              this.ignoredClassPatterns.push(pattern);\n          } else if (typeof pattern === 'string') {\n              this.ignoredClassPatterns.push(new RegExp(pattern));\n          }\n      }\n\n      addIgnoredElementSelector(selector) {\n          if (typeof selector === 'string') {\n              this.ignoredElementSelectors.push(selector);\n          }\n      }\n\n      addSignificantChangeSelector(selector) {\n          if (typeof selector === 'string') {\n              this.significantChangeSelectors.push(selector);\n          }\n      }\n\n      // Allow plugins to trigger recompilation when needed\n      triggerRecompilation(reason = 'manual') {\n          this.compile();\n      }\n\n      // Debounce utility\n      debounce(func, wait) {\n          let timeout;\n          return function executedFunction(...args) {\n              const later = () => {\n                  clearTimeout(timeout);\n                  func(...args);\n              };\n              clearTimeout(timeout);\n              timeout = setTimeout(later, wait);\n          };\n      }\n\n      // Wait for Tailwind to be available\n      async waitForTailwind() {\n          return new Promise((resolve) => {\n              if (this.isTailwindAvailable()) {\n                  resolve();\n                  return;\n              }\n\n              const checkInterval = setInterval(() => {\n                  if (this.isTailwindAvailable()) {\n                      clearInterval(checkInterval);\n                      resolve();\n                  }\n              }, 100);\n\n              // Also check on DOMContentLoaded\n              document.addEventListener('DOMContentLoaded', () => {\n                  if (this.isTailwindAvailable()) {\n                      clearInterval(checkInterval);\n                      resolve();\n                  }\n              });\n\n              // Set a timeout to prevent infinite waiting\n              setTimeout(() => {\n                  clearInterval(checkInterval);\n                  resolve();\n              }, 5000);\n          });\n      }\n\n      // Check if Tailwind is available\n      isTailwindAvailable() {\n          // Check for Tailwind in various ways\n          return (\n              // Check for Tailwind CSS file\n              Array.from(document.styleSheets).some(sheet =>\n                  sheet.href && (\n                      sheet.href.includes('tailwind') ||\n                      sheet.href.includes('tailwindcss') ||\n                      sheet.href.includes('indux')\n                  )\n              ) ||\n              // Check for Tailwind classes in document\n              document.querySelector('[class*=\"tailwind\"]') ||\n              // Check for Tailwind in window object\n              window.tailwind ||\n              // Check for Tailwind in document head\n              document.head.innerHTML.includes('tailwind') ||\n              // Check for Indux CSS files\n              document.head.innerHTML.includes('indux')\n          );\n      }\n  }\n\n\n\n  // Synchronous utility generation\n  // Methods for generating utilities synchronously before first paint\n\n  TailwindCompiler.prototype.addCriticalBlockingStylesSync = function() {\n      if (!this.criticalStyleElement) return;\n      \n      const syncStart = performance.now();\n      if (this.debug) {\n          console.log(`[Indux Utilities] Starting synchronous utility generation at ${(syncStart - this.startTime).toFixed(2)}ms`);\n      }\n      \n      try {\n          // Extract CSS variables synchronously from already-loaded sources\n          const cssVariables = new Map();\n          \n          // 1. From inline style elements (already in DOM)\n          const inlineStyles = document.querySelectorAll('style:not(#utility-styles):not(#utility-styles-critical)');\n          if (this.debug) {\n              console.log(`[Indux Utilities] Found ${inlineStyles.length} inline style elements`);\n          }\n          for (const styleEl of inlineStyles) {\n              if (styleEl.textContent) {\n                  const variables = this.extractThemeVariables(styleEl.textContent);\n                  for (const [name, value] of variables.entries()) {\n                      cssVariables.set(name, value);\n                  }\n              }\n          }\n          if (this.debug && cssVariables.size > 0) {\n              console.log(`[Indux Utilities] Extracted ${cssVariables.size} CSS variables from inline styles`);\n          }\n          \n          // 2. From HTML source (parse style tags in HTML)\n          try {\n              if (document.documentElement) {\n                  const htmlSource = document.documentElement.outerHTML;\n                  const styleRegex = /<style[^>]*>([\\s\\S]*?)<\\/style>/gi;\n                  let styleMatch;\n                  while ((styleMatch = styleRegex.exec(htmlSource)) !== null) {\n                      const cssContent = styleMatch[1];\n                      const variables = this.extractThemeVariables(cssContent);\n                      for (const [name, value] of variables.entries()) {\n                          cssVariables.set(name, value);\n                      }\n                  }\n              }\n          } catch (e) {\n              // Ignore parsing errors\n          }\n          \n          // 3. From loaded stylesheets (synchronously read CSS rules)\n          try {\n              const stylesheets = Array.from(document.styleSheets);\n              if (this.debug) {\n                  console.log(`[Indux Utilities] Found ${stylesheets.length} stylesheets`);\n              }\n              for (const sheet of stylesheets) {\n                  try {\n                      // Try to access CSS rules (may fail due to CORS)\n                      const rules = Array.from(sheet.cssRules || []);\n                      for (const rule of rules) {\n                          if (rule.type === CSSRule.STYLE_RULE && rule.styleSheet) {\n                              // Handle @import rules that have nested stylesheets\n                              try {\n                                  const nestedRules = Array.from(rule.styleSheet.cssRules || []);\n                                  for (const nestedRule of nestedRules) {\n                                      if (nestedRule.type === CSSRule.STYLE_RULE) {\n                                          const cssText = nestedRule.cssText;\n                                          const variables = this.extractThemeVariables(cssText);\n                                          for (const [name, value] of variables.entries()) {\n                                              cssVariables.set(name, value);\n                                          }\n                                      }\n                                  }\n                              } catch (e) {\n                                  // Ignore nested rule errors\n                              }\n                          }\n                          if (rule.type === CSSRule.STYLE_RULE) {\n                              const cssText = rule.cssText;\n                              const variables = this.extractThemeVariables(cssText);\n                              for (const [name, value] of variables.entries()) {\n                                  cssVariables.set(name, value);\n                              }\n                          }\n                      }\n                  } catch (e) {\n                      // CORS or other access errors - expected for some stylesheets\n                      if (this.debug && sheet.href) {\n                          console.log(`[Indux Utilities] Cannot access stylesheet (CORS?): ${sheet.href}`);\n                      }\n                  }\n              }\n              if (this.debug && cssVariables.size > 0) {\n                  console.log(`[Indux Utilities] Extracted ${cssVariables.size} CSS variables from stylesheets`);\n              }\n          } catch (e) {\n              if (this.debug) {\n                  console.warn(`[Indux Utilities] Error reading stylesheets:`, e);\n              }\n          }\n          \n          // 4. From computed styles (if :root is available)\n          try {\n              if (document.documentElement && document.readyState !== 'loading') {\n                  const rootStyles = getComputedStyle(document.documentElement);\n                  let computedVars = 0;\n                  for (let i = 0; i < rootStyles.length; i++) {\n                      const prop = rootStyles[i];\n                      if (prop.startsWith('--')) {\n                          const value = rootStyles.getPropertyValue(prop);\n                          if (value && value.trim()) {\n                              cssVariables.set(prop.substring(2), value.trim());\n                              computedVars++;\n                          }\n                      }\n                  }\n                  if (this.debug && computedVars > 0) {\n                      console.log(`[Indux Utilities] Extracted ${computedVars} CSS variables from computed styles`);\n                  }\n              }\n          } catch (e) {\n              // Ignore errors\n          }\n          \n          // 5. Scan for classes that need utilities\n          const classesToGenerate = new Set();\n          try {\n              // Method A: Scan HTML source\n              if (document.documentElement) {\n                  const htmlSource = document.documentElement.outerHTML;\n                  const classRegex = /class=[\"']([^\"']+)[\"']/gi;\n                  let classMatch;\n                  while ((classMatch = classRegex.exec(htmlSource)) !== null) {\n                      const classes = classMatch[1].split(/\\s+/).filter(Boolean);\n                      for (const cls of classes) {\n                          // Match utility patterns that might use CSS variables\n                          if (/^(border|bg|text|ring|outline|decoration|caret|accent|fill|stroke)-[a-z0-9-]+(\\/[0-9]+)?$/.test(cls)) {\n                              classesToGenerate.add(cls);\n                          }\n                      }\n                  }\n              }\n              \n              // Method B: Scan DOM directly (if body exists)\n              if (document.body) {\n                  const elements = document.body.querySelectorAll('*');\n                  for (const el of elements) {\n                      if (el.className && typeof el.className === 'string') {\n                          const classes = el.className.split(/\\s+/).filter(Boolean);\n                          for (const cls of classes) {\n                              if (/^(border|bg|text|ring|outline|decoration|caret|accent|fill|stroke)-[a-z0-9-]+(\\/[0-9]+)?$/.test(cls)) {\n                                  classesToGenerate.add(cls);\n                              }\n                          }\n                      }\n                  }\n              }\n              \n              if (this.debug) {\n                  console.log(`[Indux Utilities] Found ${classesToGenerate.size} utility classes to generate`);\n                  if (classesToGenerate.size > 0) {\n                      console.log(`[Indux Utilities] Sample classes: ${Array.from(classesToGenerate).slice(0, 5).join(', ')}`);\n                  }\n              }\n          } catch (e) {\n              if (this.debug) {\n                  console.warn(`[Indux Utilities] Error scanning for classes:`, e);\n              }\n          }\n          \n          // Generate utilities synchronously if we have CSS variables\n          if (this.debug) {\n              console.log(`[Indux Utilities] CSS variables found: ${cssVariables.size}, Classes found: ${classesToGenerate.size}`);\n          }\n          \n          if (cssVariables.size > 0) {\n              const generateStart = performance.now();\n              const cssText = Array.from(cssVariables.entries())\n                  .map(([name, value]) => `--${name}: ${value};`)\n                  .join('\\n');\n              \n              const tempCss = `:root { ${cssText} }`;\n              \n              // If we have classes, use them. Otherwise, try to get classes from cache\n              let usedData = null; // Initialize to null so we can detect when it's not set\n              if (classesToGenerate.size > 0) {\n                  usedData = {\n                      classes: Array.from(classesToGenerate),\n                      variableSuffixes: []\n                  };\n              } else {\n                  // Try to get classes from cache (most efficient - only generate what was used before)\n                  const cached = localStorage.getItem('tailwind-cache');\n                  let cachedClasses = new Set();\n                  \n                  if (cached) {\n                      try {\n                          const parsed = JSON.parse(cached);\n                          const cacheEntries = Object.values(parsed);\n                          \n                          // Extract classes from cache keys (format: \"class1,class2-themeHash\")\n                          for (const entry of cacheEntries) {\n                              // Find the cache entry with the most recent timestamp\n                              const mostRecent = cacheEntries.sort((a, b) => (b.timestamp || 0) - (a.timestamp || 0))[0];\n                              if (mostRecent && mostRecent.css) {\n                                  // Extract class names from generated CSS\n                                  const classMatches = mostRecent.css.match(/\\.([a-zA-Z0-9_-]+(?::[a-zA-Z0-9_-]+)*)\\s*{/g);\n                                  if (classMatches) {\n                                      for (const match of classMatches) {\n                                          const className = match.replace(/^\\./, '').replace(/\\s*{.*$/, '');\n                                          // Only include utility classes (not Tailwind native like red-500)\n                                          if (/^(border|bg|text|ring|outline|decoration|caret|accent|fill|stroke)-[a-z0-9-]+(\\/[0-9]+)?$/.test(className.split(':').pop())) {\n                                              cachedClasses.add(className);\n                                          }\n                                      }\n                                  }\n                              }\n                          }\n                      } catch (e) {\n                          // Ignore cache parsing errors\n                      }\n                  }\n                  \n                  if (cachedClasses.size > 0) {\n                      usedData = {\n                          classes: Array.from(cachedClasses),\n                          variableSuffixes: []\n                      };\n                      if (this.debug) {\n                          console.log(`[Indux Utilities] Using ${cachedClasses.size} classes from cache for synchronous generation`);\n                      }\n                  } else {\n                      // Last resort: scan HTML source text directly\n                      try {\n                          const htmlText = document.documentElement.innerHTML || '';\n                          const classMatches = htmlText.match(/class=[\"']([^\"']+)[\"']/g);\n                          if (classMatches) {\n                              for (const match of classMatches) {\n                                  const classString = match.replace(/class=[\"']/, '').replace(/[\"']$/, '');\n                                  const classes = classString.split(/\\s+/).filter(Boolean);\n                                  for (const cls of classes) {\n                                      if (/^(border|bg|text|ring|outline|decoration|caret|accent|fill|stroke)-[a-z0-9-]+(\\/[0-9]+)?$/.test(cls)) {\n                                          cachedClasses.add(cls);\n                                      }\n                                  }\n                              }\n                          }\n                      } catch (e) {\n                          // Ignore errors\n                      }\n                      \n                      if (cachedClasses.size > 0) {\n                          usedData = {\n                              classes: Array.from(cachedClasses),\n                              variableSuffixes: []\n                          };\n                          if (this.debug) {\n                              console.log(`[Indux Utilities] Found ${cachedClasses.size} classes from HTML source text`);\n                          }\n                      }\n                      // If still no classes, continue to generate utilities for all color variables\n                  }\n              }\n              \n              // If no classes found, generate utilities for all color variables\n              if (!usedData || !usedData.classes || usedData.classes.length === 0) {\n                  if (this.debug) {\n                      console.log(`[Indux Utilities] No classes found in DOM/cache, checking for color variables to generate utilities...`);\n                  }\n                  \n                  // Generate utilities for all color-* variables to prevent flash\n                  const colorVars = Array.from(cssVariables.entries())\n                      .filter(([name]) => name.startsWith('color-'));\n                  \n                  if (this.debug) {\n                      console.log(`[Indux Utilities] Found ${colorVars.length} color variables out of ${cssVariables.size} total variables`);\n                  }\n                  \n                  if (colorVars.length > 0) {\n                      // Create synthetic classes for all color utilities (text, bg, border)\n                      const syntheticClasses = [];\n                      for (const [varName] of colorVars) {\n                          const suffix = varName.replace('color-', '');\n                          syntheticClasses.push(`text-${suffix}`);\n                          syntheticClasses.push(`bg-${suffix}`);\n                          syntheticClasses.push(`border-${suffix}`);\n                      }\n                      usedData = {\n                          classes: syntheticClasses,\n                          variableSuffixes: []\n                      };\n                      if (this.debug) {\n                          console.log(`[Indux Utilities] Generating utilities for all ${colorVars.length} color variables (${syntheticClasses.length} synthetic classes) to prevent flash`);\n                      }\n                  } else {\n                      if (this.debug) {\n                          console.log(`[Indux Utilities] No color variables found, skipping synchronous generation`);\n                      }\n                      return;\n                  }\n              }\n              \n              const generated = this.generateUtilitiesFromVars(tempCss, usedData);\n              if (generated) {\n                  const applyStart = performance.now();\n                  this.criticalStyleElement.textContent = generated;\n                  \n                  // Force a synchronous style recalculation\n                  if (document.body) {\n                      // Trigger a reflow to force style application\n                      void document.body.offsetHeight;\n                  } else {\n                      // If body doesn't exist yet, force reflow on documentElement\n                      void document.documentElement.offsetHeight;\n                  }\n                  \n                  const applyEnd = performance.now();\n                  \n                  if (this.debug) {\n                      const sampleClasses = usedData.classes.slice(0, 5).join(', ');\n                      console.log(`[Indux Utilities] Generated ${generated.split('{').length - 1} utility rules in ${(applyStart - generateStart).toFixed(2)}ms`);\n                      console.log(`[Indux Utilities] Applied critical utilities to DOM at ${(applyEnd - this.startTime).toFixed(2)}ms`);\n                      console.log(`[Indux Utilities] Critical utilities length: ${generated.length} chars`);\n                      console.log(`[Indux Utilities] Sample classes generated: ${sampleClasses}${usedData.classes.length > 5 ? '...' : ''}`);\n                  }\n              } else {\n                  if (this.debug) {\n                      console.warn(`[Indux Utilities] No utilities generated despite having ${cssVariables.size} variables`);\n                  }\n              }\n          } else {\n              if (this.debug) {\n                  console.warn(`[Indux Utilities] Cannot generate utilities: no CSS variables found`);\n              }\n          }\n      } catch (error) {\n          if (this.debug) {\n              console.error(`[Indux Utilities] Error in synchronous generation:`, error);\n          }\n      } finally {\n          if (this.debug) {\n              console.log(`[Indux Utilities] Synchronous generation completed in ${(performance.now() - syncStart).toFixed(2)}ms`);\n          }\n      }\n  };\n\n  // Generate synchronous utilities (fallback method)\n  TailwindCompiler.prototype.generateSynchronousUtilities = function() {\n      try {\n          // Always try to generate, even if cache exists, to catch any new classes\n          const hasExistingStyles = this.styleElement.textContent && this.styleElement.textContent.trim();\n\n          let cssVariables = new Map();\n          const commonColorClasses = new Set();\n\n          // Method 1: Extract from inline style elements\n          const inlineStyles = document.querySelectorAll('style:not(#utility-styles)');\n          for (const styleEl of inlineStyles) {\n              if (styleEl.textContent) {\n                  const variables = this.extractThemeVariables(styleEl.textContent);\n                  for (const [name, value] of variables.entries()) {\n                      cssVariables.set(name, value);\n                  }\n              }\n          }\n\n          // Method 2: Parse HTML source directly for CSS variables in <style> tags\n          try {\n              const htmlSource = document.documentElement.outerHTML;\n              // Extract CSS from <style> tags in HTML source\n              const styleRegex = /<style[^>]*>([\\s\\S]*?)<\\/style>/gi;\n              let styleMatch;\n              while ((styleMatch = styleRegex.exec(htmlSource)) !== null) {\n                  const cssContent = styleMatch[1];\n                  const variables = this.extractThemeVariables(cssContent);\n                  for (const [name, value] of variables.entries()) {\n                      cssVariables.set(name, value);\n                  }\n              }\n          } catch (e) {\n              // Ignore parsing errors\n          }\n\n          // Method 3: Check computed styles from :root (if available)\n          try {\n              if (document.readyState !== 'loading') {\n                  const rootStyles = getComputedStyle(document.documentElement);\n                  // Extract all CSS variables, not just color ones\n                  const allProps = rootStyles.length;\n                  for (let i = 0; i < allProps; i++) {\n                      const prop = rootStyles[i];\n                      if (prop.startsWith('--')) {\n                          const value = rootStyles.getPropertyValue(prop);\n                          if (value && value.trim()) {\n                              cssVariables.set(prop.substring(2), value.trim());\n                          }\n                      }\n                  }\n              }\n          } catch (e) {\n              // Ignore errors accessing computed styles\n          }\n\n          // Method 4: Scan HTML source directly for class attributes\n          try {\n              const htmlSource = document.documentElement.outerHTML;\n              // Extract all class attributes from HTML source\n              const classRegex = /class=[\"']([^\"']+)[\"']/gi;\n              let classMatch;\n              while ((classMatch = classRegex.exec(htmlSource)) !== null) {\n                  const classString = classMatch[1];\n                  const classes = classString.split(/\\s+/).filter(Boolean);\n                  for (const cls of classes) {\n                      // Match common color utility patterns (more comprehensive)\n                      if (/^(border|bg|text|ring|outline|decoration|caret|accent|fill|stroke)-[a-z0-9-]+(\\/[0-9]+)?$/.test(cls)) {\n                          commonColorClasses.add(cls);\n                      }\n                  }\n              }\n          } catch (e) {\n              // Fallback: scan DOM if HTML parsing fails\n              const elements = document.querySelectorAll('*');\n              for (const el of elements) {\n                  if (el.className && typeof el.className === 'string') {\n                      const classes = el.className.split(/\\s+/);\n                      for (const cls of classes) {\n                          if (/^(border|bg|text|ring|outline|decoration|caret|accent|fill|stroke)-[a-z0-9-]+(\\/[0-9]+)?$/.test(cls)) {\n                              commonColorClasses.add(cls);\n                          }\n                      }\n                  }\n              }\n          }\n\n          // If we have variables and classes, generate utilities\n          if (cssVariables.size > 0 && commonColorClasses.size > 0) {\n              const cssText = Array.from(cssVariables.entries())\n                  .map(([name, value]) => `--${name}: ${value};`)\n                  .join('\\n');\n\n              const tempCss = `:root { ${cssText} }`;\n              const usedData = {\n                  classes: Array.from(commonColorClasses),\n                  variableSuffixes: []\n              };\n\n              const generated = this.generateUtilitiesFromVars(tempCss, usedData);\n              if (generated) {\n                  const finalCss = `@layer utilities {\\n${generated}\\n}`;\n                  // Apply styles - append to existing if cache exists, replace if not\n                  if (hasExistingStyles) {\n                      // Append new utilities to existing cache (they'll be deduplicated by CSS)\n                      this.styleElement.textContent += '\\n\\n' + finalCss;\n                  } else {\n                      this.styleElement.textContent = finalCss;\n                  }\n                  \n                  // Clear critical styles once we have generated utilities\n                  if (this.criticalStyleElement && generated.trim()) {\n                      this.criticalStyleElement.textContent = '';\n                  }\n              }\n          }\n      } catch (error) {\n          // Silently fail - async compilation will handle it\n      }\n  };\n\n\n\n  // Cache management\n  // Methods for loading, saving, and managing cached utilities\n\n  // Load and apply cached utilities\n  TailwindCompiler.prototype.loadAndApplyCache = function() {\n      const cacheStart = performance.now();\n      if (this.debug) {\n          console.log(`[Indux Utilities] Loading cache at ${(cacheStart - this.startTime).toFixed(2)}ms`);\n      }\n      try {\n          const cached = localStorage.getItem('tailwind-cache');\n          if (cached) {\n              if (this.debug) {\n                  console.log(`[Indux Utilities] Cache found, size: ${cached.length} chars`);\n              }\n              const parsed = JSON.parse(cached);\n              this.cache = new Map(Object.entries(parsed));\n\n              // Try to find the best matching cache entry\n              // First, try to get a quick scan of current classes\n              let currentClasses = new Set();\n              try {\n                  // Quick scan of HTML source for classes\n                  if (document.documentElement) {\n                      const htmlSource = document.documentElement.outerHTML;\n                      const classRegex = /class=[\"']([^\"']+)[\"']/gi;\n                      let classMatch;\n                      while ((classMatch = classRegex.exec(htmlSource)) !== null) {\n                          const classes = classMatch[1].split(/\\s+/).filter(Boolean);\n                          classes.forEach(cls => {\n                              if (!cls.startsWith('x-') && !cls.startsWith('$')) {\n                                  currentClasses.add(cls);\n                              }\n                          });\n                      }\n                  }\n              } catch (e) {\n                  // If HTML parsing fails, just use most recent\n              }\n\n              let bestMatch = null;\n              let bestScore = 0;\n\n              // Score cache entries by how many classes they match\n              if (currentClasses.size > 0) {\n                  for (const [key, value] of this.cache.entries()) {\n                      // Extract classes from cache key (format: \"class1,class2-themeHash\")\n                      // Find the last occurrence of '-' followed by 8 chars (theme hash length)\n                      const lastDashIndex = key.lastIndexOf('-');\n                      const classesPart = lastDashIndex > 0 ? key.substring(0, lastDashIndex) : key;\n                      const cachedClasses = classesPart ? classesPart.split(',') : [];\n                      const cachedSet = new Set(cachedClasses);\n                      \n                      // Count how many current classes are in cache\n                      let matches = 0;\n                      for (const cls of currentClasses) {\n                          if (cachedSet.has(cls)) {\n                              matches++;\n                          }\n                      }\n                      \n                      // Score based on match ratio and recency\n                      const matchRatio = matches / currentClasses.size;\n                      const recencyScore = (Date.now() - value.timestamp) / (24 * 60 * 60 * 1000); // Days since cache\n                      const score = matchRatio * 0.7 + (1 - Math.min(recencyScore, 1)) * 0.3; // 70% match, 30% recency\n                      \n                      if (score > bestScore) {\n                          bestScore = score;\n                          bestMatch = value;\n                      }\n                  }\n              }\n\n              // Use best match, or fall back to most recent\n              const cacheToUse = bestMatch || Array.from(this.cache.entries())\n                  .sort((a, b) => b[1].timestamp - a[1].timestamp)[0]?.[1];\n\n              if (cacheToUse && cacheToUse.css) {\n                  const applyCacheStart = performance.now();\n                  this.styleElement.textContent = cacheToUse.css;\n                  this.lastThemeHash = cacheToUse.themeHash;\n                  \n                  // Also apply cache to critical style element\n                  // Extract utilities from @layer utilities block and apply directly (no @layer)\n                  if (this.criticalStyleElement && !this.criticalStyleElement.textContent) {\n                      let criticalCss = cacheToUse.css;\n                      // Remove @layer utilities wrapper if present\n                      criticalCss = criticalCss.replace(/@layer\\s+utilities\\s*\\{/g, '').replace(/\\}\\s*$/, '').trim();\n                      if (criticalCss) {\n                          this.criticalStyleElement.textContent = criticalCss;\n                          if (this.debug) {\n                              console.log(`[Indux Utilities] Applied cached CSS to critical style element (${criticalCss.length} chars) to prevent flash`);\n                          }\n                      }\n                  }\n                  \n                  if (this.debug) {\n                      console.log(`[Indux Utilities] Applied cached CSS at ${(applyCacheStart - this.startTime).toFixed(2)}ms`);\n                      console.log(`[Indux Utilities] Cached CSS length: ${cacheToUse.css.length} chars`);\n                      console.log(`[Indux Utilities] Cache age: ${((Date.now() - cacheToUse.timestamp) / 1000).toFixed(2)}s`);\n                  }\n                  \n                  // Don't clear critical styles yet - keep them until full compilation completes\n                  if (this.debug) {\n                      const hasUtilities = cacheToUse.css.includes('border-') || cacheToUse.css.includes('@layer utilities');\n                      console.log(`[Indux Utilities] Cache loaded - has utilities: ${hasUtilities}`);\n                      console.log(`[Indux Utilities] Keeping critical styles until full compilation verifies cache`);\n                  }\n              } else {\n                  if (this.debug) {\n                      console.log(`[Indux Utilities] No suitable cache entry found`);\n                  }\n              }\n          } else {\n              if (this.debug) {\n                  console.log(`[Indux Utilities] No cache in localStorage`);\n              }\n          }\n      } catch (error) {\n          console.warn('[Indux Utilities] Failed to load cached styles:', error);\n      } finally {\n          if (this.debug) {\n              console.log(`[Indux Utilities] Cache loading completed in ${(performance.now() - cacheStart).toFixed(2)}ms`);\n          }\n      }\n  };\n\n  // Save cache to localStorage\n  TailwindCompiler.prototype.savePersistentCache = function() {\n      try {\n          const serialized = JSON.stringify(Object.fromEntries(this.cache));\n          localStorage.setItem('tailwind-cache', serialized);\n      } catch (error) {\n          console.warn('Failed to save cached styles:', error);\n      }\n  };\n\n  // Load cache from localStorage\n  TailwindCompiler.prototype.loadPersistentCache = function() {\n      try {\n          const cached = localStorage.getItem('tailwind-cache');\n          if (cached) {\n              const parsed = JSON.parse(cached);\n              this.cache = new Map(Object.entries(parsed));\n          }\n      } catch (error) {\n          console.warn('Failed to load cached styles:', error);\n      }\n  };\n\n  // Generate a hash of the theme variables to detect changes\n  TailwindCompiler.prototype.generateThemeHash = function(themeCss) {\n      // Use encodeURIComponent to handle non-Latin1 characters safely\n      return encodeURIComponent(themeCss).slice(0, 8); // Simple hash of theme content\n  };\n\n  // Clean up old cache entries\n  TailwindCompiler.prototype.cleanupCache = function() {\n      const now = Date.now();\n      const maxAge = this.options.maxCacheAge;\n      const entriesToDelete = [];\n\n      for (const [key, value] of this.cache.entries()) {\n          if (value.timestamp && (now - value.timestamp > maxAge)) {\n              entriesToDelete.push(key);\n          }\n      }\n\n      for (const key of entriesToDelete) {\n          this.cache.delete(key);\n      }\n\n      if (entriesToDelete.length > 0) {\n          this.savePersistentCache();\n      }\n  };\n\n\n\n  // Helper methods\n  // Utility functions for extracting, parsing, and processing CSS and classes\n\n  // Discover CSS files from stylesheets and imports\n  TailwindCompiler.prototype.discoverCssFiles = function() {\n      try {\n          // Get all stylesheets from the document\n          const stylesheets = Array.from(document.styleSheets);\n\n          // Process each stylesheet\n          for (const sheet of stylesheets) {\n              try {\n                  // Process local files and @indux CDN files\n                  if (sheet.href && (\n                      sheet.href.startsWith(window.location.origin) ||\n                      sheet.href.includes('@indux') ||\n                      (sheet.href.includes('jsdelivr') && sheet.href.includes('@indux')) ||\n                      (sheet.href.includes('unpkg') && sheet.href.includes('@indux'))\n                  )) {\n                      this.cssFiles.add(sheet.href);\n                  }\n\n                  // Get all @import rules (local and @indux CDN)\n                  const rules = Array.from(sheet.cssRules || []);\n                  for (const rule of rules) {\n                      if (rule.type === CSSRule.IMPORT_RULE && rule.href && (\n                          rule.href.startsWith(window.location.origin) ||\n                          rule.href.includes('@indux') ||\n                          (rule.href.includes('jsdelivr') && rule.href.includes('@indux')) ||\n                          (rule.href.includes('unpkg') && rule.href.includes('@indux'))\n                      )) {\n                          this.cssFiles.add(rule.href);\n                      }\n                  }\n              } catch (e) {\n                  // Skip stylesheets that can't be accessed (external CDN files, CORS, etc.)\n              }\n          }\n\n          // Add any inline styles (exclude generated styles)\n          const styleElements = document.querySelectorAll('style:not(#utility-styles)');\n          for (const style of styleElements) {\n              if (style.textContent && style.textContent.trim()) {\n                  const id = style.id || `inline-style-${Array.from(styleElements).indexOf(style)}`;\n                  this.cssFiles.add('inline:' + id);\n              }\n          }\n      } catch (error) {\n          console.warn('Error discovering CSS files:', error);\n      }\n  };\n\n  // Scan static HTML files and components for classes\n  TailwindCompiler.prototype.scanStaticClasses = async function() {\n      if (this.staticScanPromise) {\n          return this.staticScanPromise;\n      }\n\n      this.staticScanPromise = (async () => {\n          try {\n              const staticClasses = new Set();\n\n              // 1. Scan index.html content\n              const htmlContent = document.documentElement.outerHTML;\n              this.extractClassesFromHTML(htmlContent, staticClasses);\n\n              // 2. Scan component files from manifest\n              const registry = window.InduxComponentsRegistry;\n              const componentUrls = [];\n              \n              if (registry && registry.manifest) {\n                  // Get all component paths from manifest\n                  const allComponents = [\n                      ...(registry.manifest.preloadedComponents || []),\n                      ...(registry.manifest.components || [])\n                  ];\n                  componentUrls.push(...allComponents);\n              }\n\n              const componentPromises = componentUrls.map(async (url) => {\n                  try {\n                      const response = await fetch('/' + url);\n                      if (response.ok) {\n                          const html = await response.text();\n                          this.extractClassesFromHTML(html, staticClasses);\n                      }\n                  } catch (error) {\n                      // Silently ignore missing components\n                  }\n              });\n\n              await Promise.all(componentPromises);\n\n              // Cache static classes\n              for (const cls of staticClasses) {\n                  this.staticClassCache.add(cls);\n              }\n\n              this.hasScannedStatic = true;\n\n              return staticClasses;\n          } catch (error) {\n              console.warn('[TailwindCompiler] Error scanning static classes:', error);\n              this.hasScannedStatic = true;\n              return new Set();\n          }\n      })();\n\n      return this.staticScanPromise;\n  };\n\n  // Extract classes from HTML content\n  TailwindCompiler.prototype.extractClassesFromHTML = function(html, classSet) {\n      // Match class attributes: class=\"...\" or class='...'\n      const classRegex = /class=[\"']([^\"']+)[\"']/g;\n      let match;\n      \n      while ((match = classRegex.exec(html)) !== null) {\n          const classString = match[1];\n          const classes = classString.split(/\\s+/).filter(Boolean);\n          for (const cls of classes) {\n              if (cls && !cls.startsWith('x-') && !cls.startsWith('$')) {\n                  classSet.add(cls);\n              }\n          }\n      }\n\n      // Also check for x-data and other Alpine directives that might contain classes\n      const alpineRegex = /x-(?:data|bind:class|class)=[\"']([^\"']+)[\"']/g;\n      while ((match = alpineRegex.exec(html)) !== null) {\n          // Simple extraction - could be enhanced for complex Alpine expressions\n          const content = match[1];\n          const classMatches = content.match(/['\"`]([^'\"`\\s]+)['\"`]/g);\n          if (classMatches) {\n              for (const classMatch of classMatches) {\n                  const cls = classMatch.replace(/['\"`]/g, '');\n                  if (cls && !cls.startsWith('$') && !cls.includes('(')) {\n                      classSet.add(cls);\n                  }\n              }\n          }\n      }\n  };\n\n  // Get all used classes from static and dynamic sources\n  TailwindCompiler.prototype.getUsedClasses = function() {\n      try {\n          const allClasses = new Set();\n          const usedVariableSuffixes = new Set();\n\n          // Add static classes (pre-scanned)\n          for (const cls of this.staticClassCache) {\n              allClasses.add(cls);\n          }\n\n          // Scan current DOM for dynamic classes only\n          const elements = document.getElementsByTagName('*');\n          for (const element of elements) {\n              let classes = [];\n              if (typeof element.className === 'string') {\n                  classes = element.className.split(/\\s+/).filter(Boolean);\n              } else if (element.classList) {\n                  classes = Array.from(element.classList);\n              }\n\n              for (const cls of classes) {\n                  if (!cls) continue;\n\n                  // Skip classes using configurable patterns\n                  const isIgnoredClass = this.ignoredClassPatterns.some(pattern => \n                      pattern.test(cls)\n                  );\n                  \n                  if (isIgnoredClass) {\n                      continue;\n                  }\n\n                  // Add all classes (static + dynamic)\n                  allClasses.add(cls);\n\n                  // Track dynamic classes separately\n                  if (!this.staticClassCache.has(cls)) {\n                      this.dynamicClassCache.add(cls);\n                  }\n              }\n          }\n\n          // Process all classes for variable suffixes\n          for (const cls of allClasses) {\n              // Extract base class and variants\n              const parts = cls.split(':');\n              const baseClass = parts[parts.length - 1];\n\n              // Extract suffix for variable matching\n              const classParts = baseClass.split('-');\n              if (classParts.length > 1) {\n                  let suffix = classParts.slice(1).join('-');\n\n                  // Handle opacity modifiers (like /90, /50)\n                  let baseSuffix = suffix;\n                  if (suffix.includes('/')) {\n                      const parts = suffix.split('/');\n                      baseSuffix = parts[0];\n                      const opacity = parts[1];\n\n                      // Add both the base suffix and the full suffix with opacity\n                      usedVariableSuffixes.add(baseSuffix);\n                      usedVariableSuffixes.add(suffix); // Keep the full suffix with opacity\n                  } else {\n                      usedVariableSuffixes.add(suffix);\n                  }\n\n                  // For compound classes like text-content-subtle, also add the full suffix\n                  if (classParts.length > 2) {\n                      const fullSuffix = classParts.slice(1).join('-');\n                      if (fullSuffix.includes('/')) {\n                          usedVariableSuffixes.add(fullSuffix.split('/')[0]);\n                      } else {\n                          usedVariableSuffixes.add(fullSuffix);\n                      }\n                  }\n              }\n          }\n\n          const result = {\n              classes: Array.from(allClasses),\n              variableSuffixes: Array.from(usedVariableSuffixes)\n          };\n\n          return result;\n      } catch (error) {\n          console.error('Error getting used classes:', error);\n          return { classes: [], variableSuffixes: [] };\n      }\n  };\n\n  // Fetch theme content from CSS files\n  TailwindCompiler.prototype.fetchThemeContent = async function() {\n      const themeContents = new Set();\n      const fetchPromises = [];\n\n      // If we haven't discovered CSS files yet, do it now\n      if (this.cssFiles.size === 0) {\n          this.discoverCssFiles();\n      }\n\n      // Process all files concurrently\n      for (const source of this.cssFiles) {\n          const fetchPromise = (async () => {\n              try {\n                  let content = '';\n                  let needsFetch = true;\n\n                  if (source.startsWith('inline:')) {\n                      const styleId = source.replace('inline:', '');\n                      const styleElement = styleId ?\n                          document.getElementById(styleId) :\n                          document.querySelector('style');\n                      if (styleElement) {\n                          content = styleElement.textContent;\n                      }\n                      needsFetch = false;\n                  } else {\n                      // Smart caching: use session storage + timestamp approach\n                      const cacheKey = source;\n                      const cached = this.cssContentCache.get(cacheKey);\n                      const now = Date.now();\n                      \n                      // Different cache times based on file source\n                      let cacheTime;\n                      if (source.includes('@indux') || source.includes('jsdelivr') || source.includes('unpkg')) {\n                          // CDN files: cache longer (5 minutes for static, 1 minute for dynamic)\n                          cacheTime = this.hasScannedStatic ? 60000 : 300000;\n                      } else {\n                          // Local files: shorter cache (5 seconds for dynamic, 30 seconds for static)\n                          cacheTime = this.hasScannedStatic ? 5000 : 30000;\n                      }\n                      \n                      if (cached && (now - cached.timestamp) < cacheTime) {\n                          content = cached.content;\n                          needsFetch = false;\n                      }\n\n                      if (needsFetch) {\n                          // Add timestamp for development cache busting, but keep it minimal\n                          const timestamp = Math.floor(now / 1000); // Only changes every second\n                          const url = `${source}?t=${timestamp}`;\n\n                          const response = await fetch(url);\n\n                          if (!response.ok) {\n                              console.warn('Failed to fetch stylesheet:', url);\n                              return;\n                          }\n\n                          content = await response.text();\n                          \n                          // Cache the content with timestamp\n                          this.cssContentCache.set(cacheKey, {\n                              content: content,\n                              timestamp: now\n                          });\n                      }\n                  }\n\n                  if (content) {\n                      themeContents.add(content);\n                  }\n              } catch (error) {\n                  console.warn(`Error fetching CSS from ${source}:`, error);\n              }\n          })();\n          fetchPromises.push(fetchPromise);\n      }\n\n      // Wait for all fetches to complete\n      await Promise.all(fetchPromises);\n\n      return Array.from(themeContents).join('\\n');\n  };\n\n  // Extract CSS variables from CSS text\n  TailwindCompiler.prototype.extractThemeVariables = function(cssText) {\n      const variables = new Map();\n\n      // Extract ALL CSS custom properties from ANY declaration block\n      const varRegex = /--([\\w-]+):\\s*([^;]+);/g;\n\n      let varMatch;\n      while ((varMatch = varRegex.exec(cssText)) !== null) {\n          const name = varMatch[1];\n          const value = varMatch[2].trim();\n          variables.set(name, value);\n      }\n\n      return variables;\n  };\n\n  // Extract custom utilities from CSS text\n  TailwindCompiler.prototype.extractCustomUtilities = function(cssText) {\n      const utilities = new Map();\n      \n      // Helper to ensure CSS is always a string\n      const ensureCssString = (css) => {\n          if (typeof css === 'string') {\n              // Clean up any [object Object] that might have snuck in\n              return css.replace(/\\[object Object\\](;?\\s*)/g, '').trim();\n          }\n          if (css && typeof css === 'object' && css.css) {\n              return ensureCssString(css.css);\n          }\n          const stringified = String(css);\n          // Return empty string instead of [object Object]\n          if (stringified === '[object Object]') {\n              return '';\n          }\n          return stringified;\n      };\n\n      // Extract custom utility classes from CSS\n      // Match: .classname or .!classname (where classname can contain word chars and hyphens)\n      const utilityRegex = /(?:@layer\\s+utilities\\s*{[^}]*}|^)(?:[^{}]*?)(?:^|\\s)(\\.!?[\\w-]+)\\s*{([^}]+)}/gm;\n\n      let match;\n      while ((match = utilityRegex.exec(cssText)) !== null) {\n          const className = match[1].substring(1); // Remove the leading dot\n          const cssRules = match[2].trim();\n          \n          // Skip if it's a Tailwind-generated class (check base name without !)\n          const baseClassName = className.startsWith('!') ? className.slice(1) : className;\n          if (this.isTailwindGeneratedClass(baseClassName)) {\n              continue;\n          }\n\n          // Check if CSS rules contain !important\n          const hasImportant = /\\s!important/.test(cssRules);\n          const classHasImportantPrefix = className.startsWith('!');\n          \n          // Determine final CSS rules\n          let finalCssRules = cssRules;\n          if (classHasImportantPrefix) {\n              // Class has ! prefix, ensure CSS has !important\n              if (!hasImportant) {\n                  finalCssRules = cssRules.includes(';') ? \n                      cssRules.replace(/;/g, ' !important;') : \n                      cssRules + ' !important';\n              }\n          } else {\n              // Class doesn't have ! prefix, remove !important if present\n              if (hasImportant) {\n                  finalCssRules = cssRules.replace(/\\s!important/g, '');\n              }\n          }\n\n                  // Store the utility class with its full name (including ! prefix) as the key\n                  // This ensures !col is stored separately from col\n                  // Ensure CSS is always a string\n                  const cssString = ensureCssString(finalCssRules);\n                  if (utilities.has(className)) {\n                      const existingRules = utilities.get(className);\n                      const existingCssString = ensureCssString(existingRules);\n                      utilities.set(className, `${existingCssString}; ${cssString}`);\n                  } else {\n                      utilities.set(className, cssString);\n                  }\n      }\n\n      // Also look for :where() selectors which are common in Indux utilities\n      // Handle both single class and multiple class selectors\n      // Use a function to properly match braces for nested rules\n      const extractWhereSelectors = (text) => {\n          const matches = [];\n          let i = 0;\n          while (i < text.length) {\n              // Find :where(\n              const whereStart = text.indexOf(':where(', i);\n              if (whereStart === -1) break;\n              \n              // Find matching closing paren for :where(\n              let parenDepth = 1;\n              let j = whereStart + 7; // Skip ':where('\n              while (j < text.length && parenDepth > 0) {\n                  if (text[j] === '(') parenDepth++;\n                  else if (text[j] === ')') parenDepth--;\n                  j++;\n              }\n              if (parenDepth > 0) {\n                  i = whereStart + 1;\n                  continue; // Malformed, skip\n              }\n              \n              const selectorContent = text.slice(whereStart + 7, j - 1);\n              \n              // Skip whitespace and find opening brace\n              while (j < text.length && /\\s/.test(text[j])) j++;\n              if (j >= text.length || text[j] !== '{') {\n                  i = whereStart + 1;\n                  continue;\n              }\n              \n              // Find matching closing brace (handle nested braces)\n              let braceDepth = 1;\n              let blockStart = j + 1;\n              j++;\n              while (j < text.length && braceDepth > 0) {\n                  if (text[j] === '{') braceDepth++;\n                  else if (text[j] === '}') braceDepth--;\n                  j++;\n              }\n              if (braceDepth > 0) {\n                  i = whereStart + 1;\n                  continue; // Malformed, skip\n              }\n              \n              const cssRules = text.slice(blockStart, j - 1).trim();\n              matches.push({ selectorContent, cssRules, fullMatch: text.slice(whereStart, j) });\n              i = j;\n          }\n          return matches;\n      };\n      \n      const whereMatches = extractWhereSelectors(cssText);\n      for (const match of whereMatches) {\n          const selectorContent = match.selectorContent;\n          const cssRules = match.cssRules;\n          \n          // Check if CSS rules contain !important\n          const hasImportant = /\\s!important/.test(cssRules);\n          \n          // Extract individual class names from the selector, including those with ! prefix\n          // Match: .classname or .!classname (where classname can contain word chars and hyphens)\n          const classMatches = selectorContent.match(/\\.(!?[\\w-]+)/g);\n          if (classMatches) {\n              for (const classMatch of classMatches) {\n                  const className = classMatch.substring(1); // Remove the leading dot\n                  \n                  // Skip if it's a Tailwind-generated class (but check base name without !)\n                  const baseClassName = className.startsWith('!') ? className.slice(1) : className;\n                  if (this.isTailwindGeneratedClass(baseClassName)) {\n                      continue;\n                  }\n                  \n                  // Determine if this class should have !important\n                  // Only apply !important if the class name itself starts with ! (e.g., !col)\n                  const classHasImportantPrefix = className.startsWith('!');\n                  let finalCssRules = cssRules;\n                  \n                  if (classHasImportantPrefix) {\n                      // Class has ! prefix, ensure CSS has !important\n                      if (!hasImportant) {\n                          finalCssRules = cssRules.includes(';') ? \n                              cssRules.replace(/;/g, ' !important;') : \n                              cssRules + ' !important';\n                      }\n                  } else {\n                      // Class doesn't have ! prefix, remove !important if present\n                      if (hasImportant) {\n                          finalCssRules = cssRules.replace(/\\s!important/g, '');\n                      }\n                  }\n                  \n                  // Store the class with its full name (including ! prefix) as the key\n                  // This ensures !col is stored separately from col\n                  // Store as selector-aware object to preserve :where() context for variants\n                  // Mark as fullBlock since it contains nested rules\n                  const storageKey = className;\n                  const originalSelector = `:where(${selectorContent})`;\n                  // Ensure CSS is always a string\n                  const cssString = ensureCssString(finalCssRules);\n                  const value = { \n                      selector: originalSelector, \n                      css: cssString,\n                      fullBlock: true // :where() blocks often contain nested rules\n                  };\n                  \n                  // Combine CSS rules if the class already exists\n                  if (utilities.has(storageKey)) {\n                      const existing = utilities.get(storageKey);\n                      // If existing is a string, convert to array format\n                      if (typeof existing === 'string') {\n                          const existingCssString = ensureCssString(existing);\n                          utilities.set(storageKey, [ \n                              { selector: `.${className}`, css: existingCssString }, \n                              value \n                          ]);\n                      } else if (Array.isArray(existing)) {\n                          // Check if this selector already exists in the array\n                          const found = existing.find(e => e.selector === value.selector);\n                          if (found) {\n                              // Ensure both are strings before concatenating\n                              const foundCss = ensureCssString(found.css);\n                              const valueCss = ensureCssString(value.css);\n                              found.css = `${foundCss}; ${valueCss}`;\n                          } else {\n                              existing.push(value);\n                          }\n                      } else if (existing && existing.selector) {\n                          // Convert single object to array\n                          if (existing.selector === value.selector) {\n                              // Ensure both are strings before concatenating\n                              const existingCss = ensureCssString(existing.css);\n                              const valueCss = ensureCssString(value.css);\n                              existing.css = `${existingCss}; ${valueCss}`;\n                              utilities.set(storageKey, [ existing ]);\n                          } else {\n                              utilities.set(storageKey, [ existing, value ]);\n                          }\n                      }\n                  } else {\n                      utilities.set(storageKey, [ value ]);\n                  }\n              }\n          }\n      }\n\n      // Fallback: detect classes inside compound selectors (e.g., aside[popover].appear-start { ... })\n      // Use brace matching to handle nested rules properly\n      try {\n          let i = 0;\n          while (i < cssText.length) {\n              // Skip whitespace\n              while (i < cssText.length && /\\s/.test(cssText[i])) i++;\n              if (i >= cssText.length) break;\n              \n              // Skip at-rules\n              if (cssText[i] === '@') {\n                  // Skip to next line or closing brace\n                  while (i < cssText.length && cssText[i] !== '\\n' && cssText[i] !== '}') i++;\n                  continue;\n              }\n              \n              // Capture selector up to '{'\n              let selStart = i;\n              while (i < cssText.length && cssText[i] !== '{') i++;\n              if (i >= cssText.length) break;\n              const selector = cssText.slice(selStart, i).trim();\n              \n              // Find matching '}' with brace depth (handles nested braces)\n              i++; // skip '{'\n              let depth = 1;\n              let blockStart = i;\n              while (i < cssText.length && depth > 0) {\n                  if (cssText[i] === '{') depth++;\n                  else if (cssText[i] === '}') depth--;\n                  i++;\n              }\n              if (depth > 0) {\n                  // Malformed, skip\n                  continue;\n              }\n              const cssRules = cssText.slice(blockStart, i - 1).trim();\n\n              // Skip at-rules and keyframes/selectors without classes\n              if (selector.startsWith('@')) continue;\n\n              // Match: .classname or .!classname\n              const classMatches = selector.match(/\\.!?[A-Za-z0-9_-]+/g);\n              if (!classMatches) continue;\n\n              // Check if CSS rules contain !important\n              const hasImportant = /\\s!important/.test(cssRules);\n\n              for (const classToken of classMatches) {\n                  const className = classToken.substring(1); // Remove the leading dot\n\n                  // Skip Tailwind-generated or already captured classes (check base name without !)\n                  const baseClassName = className.startsWith('!') ? className.slice(1) : className;\n                  if (this.isTailwindGeneratedClass(baseClassName)) continue;\n\n                  // Determine if this class should have !important\n                  const classHasImportantPrefix = className.startsWith('!');\n                  let finalCssRules = cssRules;\n                  \n                  if (classHasImportantPrefix) {\n                      // Class has ! prefix, ensure CSS has !important\n                      if (!hasImportant) {\n                          finalCssRules = cssRules.includes(';') ? \n                              cssRules.replace(/;/g, ' !important;') : \n                              cssRules + ' !important';\n                      }\n                  } else {\n                      // Class doesn't have ! prefix, remove !important if present\n                      if (hasImportant) {\n                          finalCssRules = cssRules.replace(/\\s!important/g, '');\n                      }\n                  }\n\n                  // Store the class with its full name (including ! prefix) as the key\n                  // Ensure CSS is always a string\n                  const cssString = ensureCssString(finalCssRules);\n                  if (utilities.has(className)) {\n                      const existingRules = utilities.get(className);\n                      \n                      // Handle arrays properly - don't stringify them\n                      if (Array.isArray(existingRules)) {\n                          // If existing is an array, add this as a new entry\n                          // Create a simple selector entry for the compound selector\n                          utilities.set(className, [...existingRules, { \n                              selector: `.${className}`, \n                              css: cssString,\n                              fullBlock: true // Compound selectors often have nested rules\n                          }]);\n                      } else {\n                          // Existing is a string or object - convert to array format\n                          const existingCssString = ensureCssString(existingRules);\n                          utilities.set(className, [\n                              { selector: `.${className}`, css: existingCssString },\n                              { selector: `.${className}`, css: cssString, fullBlock: true }\n                          ]);\n                      }\n                  } else {\n                      utilities.set(className, cssString);\n                  }\n              }\n          }\n      } catch (e) {\n          // Be tolerant: this is a best-effort extractor\n      }\n\n      // Universal fallback with basic nesting resolution for selectors using '&'\n      // Captures context like :where(aside[popover]) &.appear-start &:not(:popover-open)\n      try {\n          const rules = [];\n\n          // Minimal nested CSS resolver: scans and builds combined selectors\n          // Only stores top-level rules with their full block content (including nested blocks)\n          const resolveNested = (text, parentSelector = '', isTopLevel = true) => {\n              let i = 0;\n              while (i < text.length) {\n                  // Skip whitespace\n                  while (i < text.length && /\\s/.test(text[i])) i++;\n                  if (i >= text.length) break;\n\n                  // Capture selector up to '{'\n                  let selStart = i;\n                  while (i < text.length && text[i] !== '{') i++;\n                  if (i >= text.length) break;\n                  const rawSelector = text.slice(selStart, i).trim();\n\n                  // Find matching '}' with brace depth\n                  i++; // skip '{'\n                  let depth = 1;\n                  let blockStart = i;\n                  while (i < text.length && depth > 0) {\n                      if (text[i] === '{') depth++;\n                      else if (text[i] === '}') depth--;\n                      i++;\n                  }\n                  const block = text.slice(blockStart, i - 1);\n\n                  // Build combined selector by replacing '&' with parentSelector\n                  const combinedSelector = parentSelector\n                      ? rawSelector.replace(/&/g, parentSelector).trim()\n                      : rawSelector.trim();\n\n                  // Only store top-level rules (not nested blocks) with their full content\n                  // This preserves @starting-style and other nested at-rules in the CSS\n                  if (isTopLevel) {\n                      const fullBlock = block.trim();\n                      if (fullBlock) {\n                          rules.push({ selector: combinedSelector, css: fullBlock, fullBlock: true });\n                      }\n                  }\n\n                  // Recurse into nested blocks but don't store them separately\n                  // They're already included in the parent block's CSS\n                  resolveNested(block, combinedSelector, false);\n              }\n          };\n\n          resolveNested(cssText, '');\n\n          // Map resolved rules to utilities by class token presence\n          for (const rule of rules) {\n              // Clean selector: strip comments and normalize whitespace\n              let cleanedSelector = rule.selector.replace(/\\/\\*[^]*?\\*\\//g, '').replace(/\\s+/g, ' ').trim();\n              // Match: .classname or .!classname\n              const classTokens = cleanedSelector.match(/\\.!?[A-Za-z0-9_-]+/g);\n              if (!classTokens) continue;\n\n              // Check if CSS rules contain !important\n              const hasImportant = /\\s!important/.test(rule.css);\n\n              for (const token of classTokens) {\n                  const className = token.slice(1); // Remove the leading dot\n                  \n                  // Skip Tailwind-generated classes (check base name without !)\n                  const baseClassName = className.startsWith('!') ? className.slice(1) : className;\n                  if (this.isTailwindGeneratedClass(baseClassName)) continue;\n\n                  // Determine if this class should have !important\n                  const classHasImportantPrefix = className.startsWith('!');\n                  let finalCss = rule.css;\n                  \n                  if (classHasImportantPrefix) {\n                      // Class has ! prefix, ensure CSS has !important\n                      if (!hasImportant) {\n                          finalCss = rule.css.includes(';') ? \n                              rule.css.replace(/;/g, ' !important;') : \n                              rule.css + ' !important';\n                      }\n                  } else {\n                      // Class doesn't have ! prefix, remove !important if present\n                      if (hasImportant) {\n                          finalCss = rule.css.replace(/\\s!important/g, '');\n                      }\n                  }\n\n                  // Store selector-aware utility so variants preserve context and pseudos\n                  // Use full className (including !) as the key\n                  // Preserve fullBlock flag if present\n                  // Ensure CSS is always a string\n                  const cssString = ensureCssString(finalCss);\n                  const value = { \n                      selector: cleanedSelector, \n                      css: cssString,\n                      fullBlock: rule.fullBlock || false\n                  };\n                  if (utilities.has(className)) {\n                      const existing = utilities.get(className);\n                      if (typeof existing === 'string') {\n                          const existingCssString = ensureCssString(existing);\n                          utilities.set(className, [ { selector: `.${className}`, css: existingCssString }, value ]);\n                      } else if (Array.isArray(existing)) {\n                          const found = existing.find(e => e.selector === value.selector);\n                          if (found) {\n                              // Ensure both are strings before concatenating\n                              const foundCss = ensureCssString(found.css);\n                              const valueCss = ensureCssString(value.css);\n                              found.css = `${foundCss}; ${valueCss}`;\n                          } else {\n                              existing.push(value);\n                          }\n                      } else if (existing && existing.selector) {\n                          if (existing.selector === value.selector) {\n                              // Ensure both are strings before concatenating\n                              const existingCss = ensureCssString(existing.css);\n                              const valueCss = ensureCssString(value.css);\n                              existing.css = `${existingCss}; ${valueCss}`;\n                              utilities.set(className, [ existing ]);\n                          } else {\n                              utilities.set(className, [ existing, value ]);\n                          }\n                      }\n                  } else {\n                      utilities.set(className, [ value ]);\n                  }\n              }\n          }\n      } catch (e) {\n          // Tolerate parsing errors; this is best-effort\n      }\n\n      return utilities;\n  };\n\n  // Check if a class name looks like a Tailwind-generated class\n  TailwindCompiler.prototype.isTailwindGeneratedClass = function(className) {\n      // Check if this looks like a Tailwind-generated class\n      const tailwindPatterns = [\n          /^[a-z]+-\\d+$/, // spacing, sizing classes like p-4, w-10\n          /^[a-z]+-\\[/, // arbitrary values like w-[100px]\n          /^(text|bg|border|ring|shadow|opacity|scale|rotate|translate|skew|origin|transform|transition|duration|delay|ease|animate|backdrop|blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|saturate|sepia|filter|backdrop-)/, // common Tailwind prefixes\n          /^(sm|md|lg|xl|2xl):/, // responsive prefixes\n          /^(hover|focus|active|disabled|group-hover|group-focus|peer-hover|peer-focus):/, // state prefixes\n          /^(dark|light):/, // theme prefixes\n          /^!/, // important modifier\n          /^\\[/, // arbitrary selectors\n      ];\n\n      return tailwindPatterns.some(pattern => pattern.test(className));\n  };\n\n  // Parse a class name into its components (variants, base class, important)\n  TailwindCompiler.prototype.parseClassName = function(className) {\n      // Check cache first\n      if (this.classCache.has(className)) {\n          return this.classCache.get(className);\n      }\n\n      const result = {\n          important: className.startsWith('!'),\n          variants: [],\n          baseClass: className\n      };\n\n      // Remove important modifier if present\n      if (result.important) {\n          className = className.slice(1);\n      }\n\n      // Split by variant separator, but preserve content within brackets\n      const parts = [];\n      let current = '';\n      let bracketDepth = 0;\n      \n      for (let i = 0; i < className.length; i++) {\n          const char = className[i];\n          \n          if (char === '[') {\n              bracketDepth++;\n          } else if (char === ']') {\n              bracketDepth--;\n          }\n          \n          if (char === ':' && bracketDepth === 0) {\n              parts.push(current);\n              current = '';\n          } else {\n              current += char;\n          }\n      }\n      parts.push(current); // Add the last part\n      \n      result.baseClass = parts.pop(); // Last part is always the base class\n\n      // Process variants in order (left to right)\n      result.variants = parts.map(variant => {\n          // FIRST: Check for exact variant matches (most common case)\n          const exactSelector = this.variants[variant];\n          if (exactSelector) {\n              return {\n                  name: variant,\n                  selector: exactSelector,\n                  isArbitrary: false\n              };\n          }\n          \n          // SECOND: Check for arbitrary selector variants [&_selector]\n          if (variant.startsWith('[') && variant.endsWith(']')) {\n              const arbitrarySelector = variant.slice(1, -1); // Remove brackets\n              if (arbitrarySelector.startsWith('&')) {\n                  return {\n                      name: variant,\n                      selector: arbitrarySelector,\n                      isArbitrary: true\n                  };\n              }\n              // Handle arbitrary data variants like [data-state=active]\n              if (arbitrarySelector.startsWith('data-')) {\n                  return {\n                      name: variant,\n                      selector: `[${arbitrarySelector}] &`,\n                      isArbitrary: true\n                  };\n              }\n          }\n          \n          // THIRD: Handle parameterized variants (only if exact match not found)\n          \n          // Handle data-[...] variants like data-[state=active] (not starting with bracket)\n          // These should be regular attribute selectors, not arbitrary\n          const dataMatch = variant.match(/^data-\\[(.+)\\]$/);\n          if (dataMatch) {\n              const attrValue = dataMatch[1];\n              // Add quotes around the value if it contains = (e.g., state=active -> state=\"active\")\n              const quotedValue = attrValue.includes('=') \n                  ? attrValue.replace(/^([^=]+)=(.+)$/, '$1=\"$2\"')\n                  : attrValue;\n              return {\n                  name: variant,\n                  selector: `[data-${quotedValue}] &`,\n                  isArbitrary: false\n              };\n          }\n          \n          // Handle parameterized nth variants: nth-3, nth-last-2, nth-of-type-2, nth-last-of-type-2\n          const nthMatch = variant.match(/^(nth|nth-last|nth-of-type|nth-last-of-type)-(\\d+)$/);\n          if (nthMatch) {\n              const baseVariant = nthMatch[1];\n              const param = nthMatch[2];\n              const baseSelector = this.variants[baseVariant];\n              if (baseSelector) {\n                  return {\n                      name: variant,\n                      selector: `${baseSelector}(${param})`,\n                      isArbitrary: false\n                  };\n              }\n          }\n          \n          // Handle parameterized has/not variants: has-[>p], not-\\[hidden\\]\n          const hasMatch = variant.match(/^has-\\[(.+)\\]$/);\n          if (hasMatch) {\n              const param = hasMatch[1];\n              const baseSelector = this.variants['has'];\n              if (baseSelector) {\n                  return {\n                      name: variant,\n                      selector: `${baseSelector}(${param})`,\n                      isArbitrary: false\n                  };\n              }\n          }\n          \n          // Handle not-\\[...\\] variants like not-\\[hidden\\]\n          // The backslashes escape the brackets in the class name\n          // Match: not-\\[content\\] where content may have escaped brackets\n          const notMatch = variant.match(/^not-\\\\\\[(.+?)\\\\\\]$/);\n          if (notMatch) {\n              const param = notMatch[1];\n              // The parameter is already clean (backslashes were just for escaping brackets in class name)\n              const baseSelector = this.variants['not'];\n              if (baseSelector) {\n                  return {\n                      name: variant,\n                      selector: `${baseSelector}([${param}])`,\n                      isArbitrary: false\n                  };\n              }\n          }\n          \n          // If no match found, warn and return null\n          console.warn(`Unknown variant: ${variant}`);\n          return null;\n      }).filter(Boolean);\n\n      // Cache the result\n      this.classCache.set(className, result);\n      return result;\n  };\n\n\n\n  // Compilation methods\n  // Main compilation logic and utility generation\n\n  // Generate utilities from CSS variables\n  TailwindCompiler.prototype.generateUtilitiesFromVars = function(cssText, usedData) {\n      try {\n          const utilities = [];\n          const generatedRules = new Set(); // Track generated rules to prevent duplicates\n          const variables = this.extractThemeVariables(cssText);\n          const { classes: usedClasses, variableSuffixes } = usedData;\n\n          if (variables.size === 0) {\n              return '';\n          }\n\n          // Helper to escape special characters in class names\n          const escapeClassName = (className) => {\n              return className.replace(/[^a-zA-Z0-9-]/g, '\\\\$&');\n          };\n\n          // Helper to generate a single utility with its variants\n          const generateUtility = (baseClass, css) => {\n              // Find all variants of this base class that are actually used\n              const usedVariants = usedClasses\n                  .filter(cls => {\n                      const parts = cls.split(':');\n                      const basePart = parts[parts.length - 1];\n                      return basePart === baseClass || (basePart.startsWith('!') && basePart.slice(1) === baseClass);\n                  });\n\n              // Generate base utility if it's used directly\n              if (usedClasses.includes(baseClass)) {\n                  const rule = `.${escapeClassName(baseClass)} { ${css} }`;\n                  if (!generatedRules.has(rule)) {\n                      utilities.push(rule);\n                      generatedRules.add(rule);\n                  }\n              }\n              // Generate important version if used\n              if (usedClasses.includes('!' + baseClass)) {\n                  const importantCss = css.includes(';') ? \n                      css.replace(/;/g, ' !important;') : \n                      css + ' !important';\n                  const rule = `.${escapeClassName('!' + baseClass)} { ${importantCss} }`;\n                  if (!generatedRules.has(rule)) {\n                      utilities.push(rule);\n                      generatedRules.add(rule);\n                  }\n              }\n\n              // Generate each variant as a separate class\n              for (const variantClass of usedVariants) {\n                  if (variantClass === baseClass) continue;\n\n                  const parsed = this.parseClassName(variantClass);\n\n                  // Check if this is an important variant\n                  const isImportant = parsed.important;\n                  // Ensure css is a string (handle cases where it might be an object)\n                  const cssString = typeof css === 'string' ? css : (css && typeof css === 'object' && css.css ? css.css : String(css));\n                  const cssContent = isImportant ? \n                      (cssString.includes(';') ? cssString.replace(/;/g, ' !important;') : cssString + ' !important') : \n                      cssString;\n\n                  // Build selector by applying variants\n                  let selector = `.${escapeClassName(variantClass)}`;\n                  let hasMediaQuery = false;\n                  let mediaQueryRule = '';\n\n                  for (const variant of parsed.variants) {\n                      if (variant.isArbitrary) {\n                          // Handle arbitrary selectors like [&_figure] or [&_fieldset:has(legend):not(.whatever)]\n                          // For selectors starting with &, replace & with the base class and use as regular selector\n                          let arbitrarySelector = variant.selector;\n                          \n                          if (arbitrarySelector.startsWith('&')) {\n                              // Replace & with the base class selector and convert _ to spaces\n                              arbitrarySelector = arbitrarySelector.replace(/_/g, ' ').replace(/&/g, selector);\n                              selector = arbitrarySelector;\n                          } else {\n                              // For other arbitrary selectors (like data attributes), use nested CSS\n                              arbitrarySelector = arbitrarySelector.replace(/_/g, ' ');\n                              selector = { baseClass: selector, arbitrarySelector };\n                          }\n                      } else if (variant.selector.includes('&')) {\n                          // Handle variants like .dark &, .light &, .group &, etc.\n                          // Replace & with the actual selector\n                          const replacedSelector = variant.selector.replace(/&/g, selector);\n                          selector = replacedSelector;\n                      } else if (variant.selector.startsWith(':')) {\n                          // For pseudo-classes, append to selector\n                          selector = `${selector}${variant.selector}`;\n                      } else if (variant.selector.startsWith('@')) {\n                          // For media queries, wrap the whole rule\n                          hasMediaQuery = true;\n                          mediaQueryRule = variant.selector;\n                      }\n                  }\n\n                  // Generate the final rule\n                  let rule;\n                  if (typeof selector === 'object' && selector.arbitrarySelector) {\n                      // Handle arbitrary selectors with nested CSS (for non-& selectors)\n                      rule = `${selector.baseClass} {\\n    ${selector.arbitrarySelector} {\\n        ${cssContent}\\n    }\\n}`;\n                  } else {\n                      // Regular selector\n                      rule = `${selector} { ${cssContent} }`;\n                  }\n                  \n                  const finalRule = hasMediaQuery ? \n                      `${mediaQueryRule} { ${rule} }` : \n                      rule;\n\n                  if (!generatedRules.has(finalRule)) {\n                      utilities.push(finalRule);\n                      generatedRules.add(finalRule);\n                  }\n              }\n          };\n\n          // Generate utilities based on variable prefix\n          for (const [varName, varValue] of variables.entries()) {\n              if (!varName.match(this.regexPatterns.tailwindPrefix)) {\n                  continue;\n              }\n\n              const suffix = varName.split('-').slice(1).join('-');\n              const value = `var(--${varName})`;\n              const prefix = varName.split('-')[0] + '-';\n              const generator = this.utilityGenerators[prefix];\n\n              if (generator) {\n                  const utilityPairs = generator(suffix, value);\n                  for (const [className, css] of utilityPairs) {\n                      // Check if this specific utility class is actually used (including variants and important)\n                      const isUsed = usedClasses.some(cls => {\n                          // Parse the class to extract the base utility name\n                          const parsed = this.parseClassName(cls);\n                          const baseClass = parsed.baseClass;\n                          \n                          // Check both normal and important versions\n                          return baseClass === className || \n                                 baseClass === '!' + className ||\n                                 (baseClass.startsWith('!') && baseClass.slice(1) === className);\n                      });\n                      if (isUsed) {\n                          generateUtility(className, css);\n                      }\n\n                      // Check for opacity variants of this utility\n                      const opacityVariants = usedClasses.filter(cls => {\n                          // Parse the class to extract the base utility name\n                          const parsed = this.parseClassName(cls);\n                          const baseClass = parsed.baseClass;\n                          \n                          // Check if this class has an opacity modifier and matches our base class\n                          if (baseClass.includes('/')) {\n                              const baseWithoutOpacity = baseClass.split('/')[0];\n                              if (baseWithoutOpacity === className) {\n                                  const opacity = baseClass.split('/')[1];\n                                  // Validate that the opacity is a number between 0-100\n                                  return !isNaN(opacity) && opacity >= 0 && opacity <= 100;\n                              }\n                          }\n                          return false;\n                      });\n\n                      // Generate opacity utilities for each variant found\n                      for (const variant of opacityVariants) {\n                          const opacity = variant.split('/')[1];\n                          const opacityValue = `color-mix(in oklch, ${value} ${opacity}%, transparent)`;\n                          const opacityCss = css.replace(value, opacityValue);\n                          generateUtility(variant, opacityCss);\n                      }\n                  }\n              }\n          }\n\n          return utilities.join('\\n');\n      } catch (error) {\n          console.error('Error generating utilities:', error);\n          return '';\n      }\n  };\n\n  // Generate custom utilities from discovered custom utility classes\n  TailwindCompiler.prototype.generateCustomUtilities = function(usedData) {\n      try {\n          const utilities = [];\n          const generatedRules = new Set();\n          const { classes: usedClasses } = usedData;\n          \n          // Helper to clean up [object Object] from CSS strings\n          const cleanCssString = (css) => {\n              if (typeof css !== 'string') return css;\n              return css.replace(/\\[object Object\\](;?\\s*)/g, '').trim();\n          };\n\n          if (this.customUtilities.size === 0) {\n              return '';\n          }\n\n          // Helper to escape special characters in class names\n          const escapeClassName = (className) => {\n              return className.replace(/[^a-zA-Z0-9-]/g, '\\\\$&');\n          };\n\n          // Helper to replace & in CSS selectors (not in property values or comments)\n          // IMPORTANT: For CSS nesting, we should NOT replace & in nested selectors\n          // The & should remain as-is so CSS nesting works correctly\n          // This function should only be used for legacy/flattened CSS, not nested CSS\n          const replaceAmpersandInSelectors = (cssText, replacement) => {\n              // For full blocks with nested rules, don't replace & at all - preserve CSS nesting\n              // Check if this looks like nested CSS:\n              // - Has & followed by :, ., [, or whitespace then { (nested selector)\n              // - Has ] & (attribute selector followed by &, like [dir=rtl] &)\n              // - Has & on its own line followed by :, ., or [ (common nested pattern)\n              const hasNestedSelectors = \n                  /&\\s*[:\\.\\[{]/.test(cssText) ||           // &:not(), &::before, &[attr], & {\n                  /&\\s*\\n\\s*[:\\.\\[{]/.test(cssText) ||      // & on new line followed by selector\n                  /\\]\\s*&/.test(cssText) ||                 // [dir=rtl] & pattern\n                  /&\\s*$/.test(cssText.split('\\n').find(line => line.trim().startsWith('&')) || ''); // & on its own line\n              \n              if (hasNestedSelectors) {\n                  // This is nested CSS - don't replace &, preserve it as-is\n                  return cssText;\n              }\n              \n              // Legacy behavior: replace & for flattened CSS (shouldn't be needed for nested CSS)\n              let result = '';\n              let i = 0;\n              let inString = false;\n              let stringChar = '';\n              let inComment = false;\n              \n              while (i < cssText.length) {\n                  const char = cssText[i];\n                  const nextChar = i + 1 < cssText.length ? cssText[i + 1] : '';\n                  const prevChar = i > 0 ? cssText[i - 1] : '';\n                  \n                  // Handle strings\n                  if ((char === '\"' || char === \"'\") && !inComment) {\n                      if (!inString) {\n                          inString = true;\n                          stringChar = char;\n                      } else if (char === stringChar && prevChar !== '\\\\') {\n                          inString = false;\n                          stringChar = '';\n                      }\n                      result += char;\n                      i++;\n                      continue;\n                  }\n                  \n                  if (inString) {\n                      result += char;\n                      i++;\n                      continue;\n                  }\n                  \n                  // Handle comments\n                  if (char === '/' && nextChar === '*') {\n                      inComment = true;\n                      result += char;\n                      i++;\n                      continue;\n                  }\n                  \n                  if (inComment) {\n                      if (char === '*' && nextChar === '/') {\n                          inComment = false;\n                          result += char;\n                          i++;\n                          continue;\n                      }\n                      result += char;\n                      i++;\n                      continue;\n                  }\n                  \n                  // Replace & when it's in a selector context (only for legacy/flattened CSS)\n                  if (char === '&') {\n                      const lookAhead = cssText.slice(i + 1, Math.min(i + 10, cssText.length));\n                      const isSelector = \n                          lookAhead.match(/^[:\\.\\[\\+\\>~,)]/) ||\n                          lookAhead.match(/^\\s+[:\\.\\[\\+\\>~,{]/) ||\n                          lookAhead === '' ||\n                          lookAhead[0] === '\\n' ||\n                          (prevChar === '\\n' && (lookAhead[0] === ':' || lookAhead[0] === '.' || lookAhead[0] === '[' || lookAhead[0] === ' '));\n                      \n                      if (isSelector) {\n                          result += replacement;\n                          i++;\n                          continue;\n                      }\n                  }\n                  \n                  result += char;\n                  i++;\n              }\n              \n              return result;\n          };\n\n          // Helper to generate a single utility with its variants\n          const generateUtility = (baseClass, css, selectorInfo) => {\n              // Ensure css is a string at the start\n              if (typeof css !== 'string') {\n                  css = typeof css === 'object' && css && css.css ? css.css : String(css);\n              }\n              \n              // Find all variants of this base class that are actually used\n              const usedVariants = usedClasses\n                  .filter(cls => {\n                      const parts = cls.split(':');\n                      const basePart = parts[parts.length - 1];\n                      const isMatch = basePart === baseClass || (basePart.startsWith('!') && basePart.slice(1) === baseClass);\n                      return isMatch;\n                  });\n\n              // Skip generating base utility - it already exists in the CSS\n              // Only generate variants and important versions\n              \n              // Generate important version if used\n              if (usedClasses.includes('!' + baseClass)) {\n                  // Check if CSS already has !important to avoid double !important\n                  const alreadyHasImportant = /\\s!important/.test(css);\n                  const importantCss = alreadyHasImportant ? css : \n                      (css.includes(';') ? \n                          css.replace(/;/g, ' !important;') : \n                          css + ' !important');\n                  let rule;\n                  if (selectorInfo && selectorInfo.selector) {\n                      // If the original selector contains :where(), don't try to modify it\n                      // Generate a separate rule for the important version\n                      // This prevents :where(.row, .col) from becoming :where(.row, .!col) with !important on all\n                      if (selectorInfo.selector.includes(':where(')) {\n                          // For :where() selectors, generate individual class selector for important version\n                          rule = `.${escapeClassName('!' + baseClass)} { ${importantCss} }`;\n                      } else {\n                          // For other contextual selectors, do the replacement\n                          const variantSel = `.${escapeClassName('!' + baseClass)}`;\n                          let contextual = selectorInfo.selector.replace(new RegExp(`\\\\.${baseClass}(?=[^a-zA-Z0-9_-]|$)`), variantSel);\n                          if (contextual === selectorInfo.selector) {\n                              // Fallback: append class to the end if base token not found\n                              contextual = `${selectorInfo.selector}${variantSel}`;\n                          }\n                          rule = `${contextual} { ${importantCss} }`;\n                      }\n                  } else {\n                      rule = `.${escapeClassName('!' + baseClass)} { ${importantCss} }`;\n                  }\n                  if (!generatedRules.has(rule)) {\n                      utilities.push(rule);\n                      generatedRules.add(rule);\n                  }\n              }\n\n              // Generate each variant as a separate class\n              for (const variantClass of usedVariants) {\n                  if (variantClass === baseClass) continue;\n\n                  const parsed = this.parseClassName(variantClass);\n\n                  // Check if this is an important variant\n                  const isImportant = parsed.important;\n                  // Ensure css is a string (handle cases where it might be an object)\n                  const cssString = typeof css === 'string' ? css : (css && typeof css === 'object' && css.css ? css.css : String(css));\n                  const cssContent = isImportant ? \n                      (cssString.includes(';') ? cssString.replace(/;/g, ' !important;') : cssString + ' !important') : \n                      cssString;\n\n                  // Build selector by applying variants\n                  let selector = `.${escapeClassName(variantClass)}`;\n                  let hasMediaQuery = false;\n                  let mediaQueryRule = '';\n\n                  for (const variant of parsed.variants) {\n                      if (variant.isArbitrary) {\n                          // Handle arbitrary selectors like [&_figure] or [&_fieldset:has(legend):not(.whatever)]\n                          // For selectors starting with &, replace & with the base class and use as regular selector\n                          let arbitrarySelector = variant.selector;\n                          \n                          if (arbitrarySelector.startsWith('&')) {\n                              // Replace & with the base class selector and convert _ to spaces\n                              arbitrarySelector = arbitrarySelector.replace(/_/g, ' ').replace(/&/g, selector);\n                              selector = arbitrarySelector;\n                          } else {\n                              // For other arbitrary selectors (like data attributes), use nested CSS\n                              arbitrarySelector = arbitrarySelector.replace(/_/g, ' ');\n                              selector = { baseClass: selector, arbitrarySelector };\n                          }\n                      } else if (variant.selector.includes('&')) {\n                          // Handle variants like .dark &, .light &, .group &, etc.\n                          // Replace & with the actual selector\n                          const replacedSelector = variant.selector.replace(/&/g, selector);\n                          selector = replacedSelector;\n                      } else if (variant.selector.startsWith(':')) {\n                          // For pseudo-classes, append to selector\n                          selector = `${selector}${variant.selector}`;\n                      } else if (variant.selector.startsWith('@')) {\n                          // For media queries, wrap the whole rule\n                          hasMediaQuery = true;\n                          mediaQueryRule = variant.selector;\n                      }\n                  }\n\n                  // Generate the final rule\n                  let rule;\n                  // Ensure cssContent is a string before using it anywhere\n                  let cssContentStr = typeof cssContent === 'string' ? cssContent : String(cssContent);\n                  // Clean up any [object Object] that might have snuck in\n                  cssContentStr = cssContentStr.replace(/\\[object Object\\](;?\\s*)/g, '').trim();\n                  \n                  if (typeof selector === 'object' && selector.arbitrarySelector) {\n                      // Handle arbitrary selectors with nested CSS (for non-& selectors)\n                      rule = `${selector.baseClass} {\\n    ${selector.arbitrarySelector} {\\n        ${cssContentStr}\\n    }\\n}`;\n                  } else {\n                      // Check if CSS is a full block (contains nested blocks like @starting-style)\n                      // Use selectorInfo.fullBlock if available, otherwise check CSS content\n                      const isFullBlock = selectorInfo && selectorInfo.fullBlock !== undefined ? selectorInfo.fullBlock : \n                                         (cssContentStr.includes('@starting-style') || \n                                          cssContentStr.includes('@media') || \n                                          cssContentStr.includes('@supports') ||\n                                          (cssContentStr.includes('{') && cssContentStr.includes('}')));\n                      \n                      // Regular selector or contextual replacement using original selector info\n                      if (selectorInfo && selectorInfo.selector) {\n                          // If the original selector contains :where(), don't try to modify it\n                          // Instead, generate a separate rule for this specific class\n                          // This prevents issues where :where(.row, .col) would become :where(.row, .!col)\n                          // with !important applied to all classes\n                          if (selectorInfo.selector.includes(':where(')) {\n                              // For :where() selectors, generate individual class selector\n                              // This ensures !important is only applied to the specific class\n                              if (isFullBlock) {\n                                  // Full block CSS includes nested content with & references\n                                  // Replace & in selectors with the actual selector (handles all selector contexts)\n                                  const resolvedCss = replaceAmpersandInSelectors(cssContentStr, selector);\n                                  rule = `${selector} {\\n${resolvedCss}\\n}`;\n                              } else {\n                                  rule = `${selector} { ${cssContentStr} }`;\n                              }\n                          } else {\n                              // For other contextual selectors, do the replacement\n                              const contextualRe = new RegExp(`\\\\.${baseClass}(?=[^a-zA-Z0-9_-]|$)`);\n                              let contextual = selectorInfo.selector.replace(contextualRe, selector);\n                              if (contextual === selectorInfo.selector) {\n                                  // Fallback when base token not directly present\n                                  contextual = `${selectorInfo.selector}${selector}`;\n                              }\n                              if (isFullBlock) {\n                                  // Replace & in selectors with the contextual selector (handles all selector contexts)\n                                  const resolvedCss = replaceAmpersandInSelectors(cssContentStr, contextual);\n                                  rule = `${contextual} {\\n${resolvedCss}\\n}`;\n                              } else {\n                                  rule = `${contextual} { ${cssContentStr} }`;\n                              }\n                          }\n                      } else {\n                          if (isFullBlock) {\n                              // Replace & in selectors with the actual selector (handles all selector contexts)\n                              const resolvedCss = replaceAmpersandInSelectors(cssContentStr, selector);\n                              rule = `${selector} {\\n${resolvedCss}\\n}`;\n                          } else {\n                              rule = `${selector} { ${cssContentStr} }`;\n                          }\n                      }\n                  }\n                  \n                  let finalRule;\n                  if (hasMediaQuery) {\n                      // Wrap once for responsive variants unless the rule already contains @media\n                      if (typeof rule === 'string' && rule.trim().startsWith('@media')) {\n                          finalRule = rule;\n                      } else {\n                          finalRule = `${mediaQueryRule} { ${rule} }`;\n                      }\n                  } else {\n                      finalRule = rule;\n                  }\n\n                  if (!generatedRules.has(finalRule)) {\n                      utilities.push(finalRule);\n                      generatedRules.add(finalRule);\n                  }\n              }\n          };\n\n          // Generate utilities for each custom class that's actually used\n          for (const [className, cssOrSelector] of this.customUtilities.entries()) {\n              // Normalize class name: if it starts with !, extract the base name\n              const hasImportantPrefix = className.startsWith('!');\n              const baseClassName = hasImportantPrefix ? className.slice(1) : className;\n              \n              // Check if this specific utility class is actually used (including variants and important)\n              const isUsed = usedClasses.some(cls => {\n                  // Parse the class to extract the base utility name\n                  const parsed = this.parseClassName(cls);\n                  const baseClass = parsed.baseClass;\n                  \n                  // Check both normal and important versions\n                  return baseClass === className || \n                         baseClass === baseClassName ||\n                         baseClass === '!' + baseClassName ||\n                         (baseClass.startsWith('!') && baseClass.slice(1) === baseClassName);\n              });\n\n              if (isUsed) {\n                  // Normalize CSS: if className has ! prefix, the CSS should already have !important\n                  // But we need to pass the base class name to generateUtility\n                  let normalizedCss = cssOrSelector;\n                  if (typeof cssOrSelector === 'string') {\n                      normalizedCss = cleanCssString(cssOrSelector);\n                  } else if (Array.isArray(cssOrSelector)) {\n                      // For arrays, we'll handle each entry separately below\n                  } else if (cssOrSelector && cssOrSelector.css) {\n                      // Ensure we extract the CSS string, not an object\n                      const extracted = typeof cssOrSelector.css === 'string' ? cssOrSelector.css : \n                                     (cssOrSelector.css && typeof cssOrSelector.css === 'object' && cssOrSelector.css.css ? cssOrSelector.css.css : \n                                     String(cssOrSelector.css));\n                      normalizedCss = cleanCssString(extracted);\n                  } else {\n                      // Fallback: convert to string\n                      normalizedCss = cleanCssString(String(cssOrSelector));\n                  }\n                  \n                  // Generate utility with base class name (without !)\n                  // The CSS already has !important if className started with !\n                  if (typeof cssOrSelector === 'string') {\n                      generateUtility(baseClassName, normalizedCss, null);\n                  } else if (Array.isArray(cssOrSelector)) {\n                      for (const entry of cssOrSelector) {\n                          if (entry && entry.css && entry.selector) {\n                              // Ensure entry.css is a string (not an object)\n                              const extracted = typeof entry.css === 'string' ? entry.css : \n                                             (entry.css && typeof entry.css === 'object' && entry.css.css ? entry.css.css : \n                                             String(entry.css));\n                              const entryCss = cleanCssString(extracted);\n                              \n                              generateUtility(baseClassName, entryCss, { \n                                  selector: entry.selector,\n                                  fullBlock: entry.fullBlock || false\n                              });\n                          }\n                      }\n                  } else if (cssOrSelector && cssOrSelector.css && cssOrSelector.selector) {\n                      // Ensure cssOrSelector.css is a string (not an object)\n                      const extracted = typeof cssOrSelector.css === 'string' ? cssOrSelector.css : \n                                        (cssOrSelector.css && typeof cssOrSelector.css === 'object' && cssOrSelector.css.css ? cssOrSelector.css.css : \n                                        String(cssOrSelector.css));\n                      const selectorCss = cleanCssString(extracted);\n                      \n                      generateUtility(baseClassName, selectorCss, { \n                          selector: cssOrSelector.selector,\n                          fullBlock: cssOrSelector.fullBlock || false\n                      });\n                  }\n              }\n          }\n\n          return utilities.join('\\n');\n      } catch (error) {\n          console.error('Error generating custom utilities:', error);\n          return '';\n      }\n  };\n\n  // Main compilation method\n  TailwindCompiler.prototype.compile = async function() {\n      const compileStart = performance.now();\n      if (this.debug) {\n          console.log(`[Indux Utilities] Compile started at ${(compileStart - this.startTime).toFixed(2)}ms`);\n      }\n\n      try {\n          // Prevent too frequent compilations\n          const now = Date.now();\n          if (now - this.lastCompileTime < this.minCompileInterval) {\n              return;\n          }\n          this.lastCompileTime = now;\n\n          if (this.isCompiling) {\n              return;\n          }\n          this.isCompiling = true;\n\n          // On first run, scan static classes and CSS variables\n          if (!this.hasScannedStatic) {\n              await this.scanStaticClasses();\n              \n              // Fetch CSS content once for initial compilation\n              const themeCss = await this.fetchThemeContent();\n              if (themeCss) {\n                  // Extract and cache custom utilities\n                  const discoveredCustomUtilities = this.extractCustomUtilities(themeCss);\n                  for (const [name, value] of discoveredCustomUtilities.entries()) {\n                      this.customUtilities.set(name, value);\n                  }\n\n                  const variables = this.extractThemeVariables(themeCss);\n                  for (const [name, value] of variables.entries()) {\n                      this.currentThemeVars.set(name, value);\n                  }\n                  \n                  // Generate utilities for all static classes\n                  const staticUsedData = {\n                      classes: Array.from(this.staticClassCache),\n                      variableSuffixes: []\n                  };\n                  // Process static classes for variable suffixes\n                  for (const cls of this.staticClassCache) {\n                      const parts = cls.split(':');\n                      const baseClass = parts[parts.length - 1];\n                      const classParts = baseClass.split('-');\n                      if (classParts.length > 1) {\n                          staticUsedData.variableSuffixes.push(classParts.slice(1).join('-'));\n                      }\n                  }\n                  \n                  // Generate both variable-based and custom utilities\n                  const varUtilities = this.generateUtilitiesFromVars(themeCss, staticUsedData);\n                  const customUtilitiesGenerated = this.generateCustomUtilities(staticUsedData);\n                  \n                  const allUtilities = [varUtilities, customUtilitiesGenerated].filter(Boolean).join('\\n\\n');\n                  if (allUtilities) {\n                      const finalCss = `@layer utilities {\\n${allUtilities}\\n}`;\n                      \n                      // Read critical styles BEFORE clearing (they'll be merged into final CSS)\n                      const criticalCss = this.criticalStyleElement && this.criticalStyleElement.textContent ? \n                          `\\n\\n/* Critical utilities (non-layer, will be overridden by layer utilities) */\\n${this.criticalStyleElement.textContent}` : \n                          '';\n                      \n                      this.styleElement.textContent = finalCss + criticalCss;\n                      \n                      // Clear critical styles AFTER merging, but wait for paint to ensure no flash\n                      // Use requestAnimationFrame to ensure styles are painted before clearing\n                      requestAnimationFrame(() => {\n                          requestAnimationFrame(() => {\n                              // Double RAF ensures paint has occurred\n                              if (this.criticalStyleElement && this.criticalStyleElement.textContent) {\n                                  if (this.debug) {\n                                      console.log(`[Indux Utilities] Clearing critical styles after paint`);\n                                  }\n                                  this.criticalStyleElement.textContent = '';\n                              }\n                          });\n                      });\n                      this.lastClassesHash = staticUsedData.classes.sort().join(',');\n                      \n                      // Save to cache for next page load\n                      const themeHash = this.generateThemeHash(themeCss);\n                      const cacheKey = `${this.lastClassesHash}-${themeHash}`;\n                      this.cache.set(cacheKey, {\n                          css: finalCss,\n                          timestamp: Date.now(),\n                          themeHash: themeHash\n                      });\n                      this.savePersistentCache();\n                  }\n              }\n              \n              this.hasInitialized = true;\n              this.isCompiling = false;\n              return;\n          }\n\n          // For subsequent compilations, check for new dynamic classes\n          const usedData = this.getUsedClasses();\n          const dynamicClasses = Array.from(this.dynamicClassCache);\n          \n          // Create a hash of current dynamic classes to detect changes\n          const dynamicClassesHash = dynamicClasses.sort().join(',');\n          \n          // Check if dynamic classes have actually changed\n          if (dynamicClassesHash !== this.lastClassesHash || !this.hasInitialized) {\n              // Fetch CSS content for dynamic compilation\n              const themeCss = await this.fetchThemeContent();\n              if (!themeCss) {\n                  this.isCompiling = false;\n                  return;\n              }\n\n              // Update custom utilities cache if needed\n              const discoveredCustomUtilities = this.extractCustomUtilities(themeCss);\n              for (const [name, value] of discoveredCustomUtilities.entries()) {\n                  this.customUtilities.set(name, value);\n              }\n              \n              // Check for variable changes\n              const variables = this.extractThemeVariables(themeCss);\n              let hasVariableChanges = false;\n              for (const [name, value] of variables.entries()) {\n                  const currentValue = this.currentThemeVars.get(name);\n                  if (currentValue !== value) {\n                      hasVariableChanges = true;\n                      this.currentThemeVars.set(name, value);\n                  }\n              }\n\n              // Generate utilities for all classes (static + dynamic) if needed\n              if (hasVariableChanges || dynamicClassesHash !== this.lastClassesHash) {\n                  \n                  // Generate both variable-based and custom utilities\n                  const varUtilities = this.generateUtilitiesFromVars(themeCss, usedData);\n                  const customUtilitiesGenerated = this.generateCustomUtilities(usedData);\n                  \n                  const allUtilities = [varUtilities, customUtilitiesGenerated].filter(Boolean).join('\\n\\n');\n                  if (allUtilities) {\n                      const finalCss = `@layer utilities {\\n${allUtilities}\\n}`;\n                      \n                      // Read critical styles BEFORE clearing (they'll be merged into final CSS)\n                      const criticalCss = this.criticalStyleElement && this.criticalStyleElement.textContent ? \n                          `\\n\\n/* Critical utilities (non-layer, will be overridden by layer utilities) */\\n${this.criticalStyleElement.textContent}` : \n                          '';\n                      \n                      this.styleElement.textContent = finalCss + criticalCss;\n                      \n                      // Clear critical styles AFTER merging, but wait for paint to ensure no flash\n                      // Use requestAnimationFrame to ensure styles are painted before clearing\n                      requestAnimationFrame(() => {\n                          requestAnimationFrame(() => {\n                              // Double RAF ensures paint has occurred\n                              if (this.criticalStyleElement && this.criticalStyleElement.textContent) {\n                                  if (this.debug) {\n                                      console.log(`[Indux Utilities] Clearing critical styles after paint`);\n                                  }\n                                  this.criticalStyleElement.textContent = '';\n                              }\n                          });\n                      });\n                      this.lastClassesHash = dynamicClassesHash;\n                      \n                      // Save to cache for next page load\n                      const themeHash = this.generateThemeHash(themeCss);\n                      const cacheKey = `${this.lastClassesHash}-${themeHash}`;\n                      this.cache.set(cacheKey, {\n                          css: finalCss,\n                          timestamp: Date.now(),\n                          themeHash: themeHash\n                      });\n                      this.savePersistentCache();\n                  }\n              }\n          }\n\n      } catch (error) {\n          console.error('[Indux Utilities] Error compiling Tailwind CSS:', error);\n      } finally {\n          this.isCompiling = false;\n          if (this.debug) {\n              console.log(`[Indux Utilities] Compile completed in ${(performance.now() - compileStart).toFixed(2)}ms`);\n          }\n      }\n  };\n\n\n\n  // DOM observation and event handling\n  // Methods for watching DOM changes and triggering recompilation\n\n  // Setup component load listener and MutationObserver\n  TailwindCompiler.prototype.setupComponentLoadListener = function() {\n      // Use a single debounced handler for all component-related events\n      const debouncedCompile = this.debounce(() => {\n          if (!this.isCompiling) {\n              this.compile();\n          }\n      }, this.options.debounceTime);\n\n      // Listen for custom event when components are loaded\n      document.addEventListener('indux:component-loaded', (event) => {\n          debouncedCompile();\n      });\n\n      // Listen for route changes but don't recompile unnecessarily\n      document.addEventListener('indux:route-change', (event) => {\n          // Only trigger compilation if we detect new dynamic classes\n          // The existing MutationObserver will handle actual DOM changes\n          if (this.hasScannedStatic) {\n              // Wait longer for route content to fully load before checking\n              setTimeout(() => {\n                  const currentDynamicCount = this.dynamicClassCache.size;\n                  const currentClassesHash = this.lastClassesHash;\n                  \n                  // Scan for new classes\n                  this.getUsedClasses();\n                  const newDynamicCount = this.dynamicClassCache.size;\n                  const dynamicClasses = Array.from(this.dynamicClassCache);\n                  const newClassesHash = dynamicClasses.sort().join(',');\n                  \n                  // Only compile if we found genuinely new classes, not just code processing artifacts\n                  if (newDynamicCount > currentDynamicCount && newClassesHash !== currentClassesHash) {\n                      const newClasses = dynamicClasses.filter(cls => \n                          // Filter out classes that are likely from code processing\n                          !cls.includes('hljs') && \n                          !cls.startsWith('language-') && \n                          !cls.includes('copy') &&\n                          !cls.includes('lines')\n                      );\n                      \n                      if (newClasses.length > 0) {\n                          debouncedCompile();\n                      }\n                  }\n              }, 300); // Longer delay to let code processing finish\n          }\n      });\n\n      // Use a single MutationObserver for all DOM changes\n      const observer = new MutationObserver((mutations) => {\n          let shouldRecompile = false;\n\n          for (const mutation of mutations) {\n              // Skip attribute changes that don't affect utilities\n              if (mutation.type === 'attributes') {\n                  const attributeName = mutation.attributeName;\n                  \n                  // Skip ignored attributes (like id changes from router)\n                  if (this.ignoredAttributes.includes(attributeName)) {\n                      continue;\n                  }\n                  \n                  // Only care about class attribute changes\n                  if (attributeName !== 'class') {\n                      continue;\n                  }\n                  \n                  // If it's a class change, check if we have new classes that need utilities\n                  const element = mutation.target;\n                  if (element.nodeType === Node.ELEMENT_NODE) {\n                      const currentClasses = Array.from(element.classList || []);\n                      const newClasses = currentClasses.filter(cls => {\n                          // Skip ignored patterns\n                          if (this.ignoredClassPatterns.some(pattern => pattern.test(cls))) {\n                              return false;\n                          }\n                          \n                          // Check if this class is new (not in our cache)\n                          return !this.staticClassCache.has(cls) && !this.dynamicClassCache.has(cls);\n                      });\n                      \n                      if (newClasses.length > 0) {\n                          // Add new classes to dynamic cache\n                          newClasses.forEach(cls => this.dynamicClassCache.add(cls));\n                          shouldRecompile = true;\n                          break;\n                      }\n                  }\n              }\n              else if (mutation.type === 'childList') {\n                  for (const node of mutation.addedNodes) {\n                      if (node.nodeType === Node.ELEMENT_NODE) {\n                          // Skip ignored elements using configurable selectors\n                          const isIgnoredElement = this.ignoredElementSelectors.some(selector => \n                              node.tagName?.toLowerCase() === selector.toLowerCase() ||\n                              node.closest(selector)\n                          );\n                          \n                          if (isIgnoredElement) {\n                              continue;\n                          }\n\n                          // Only recompile for significant changes using configurable selectors\n                          const hasSignificantChange = this.significantChangeSelectors.some(selector => {\n                              try {\n                                  return node.matches?.(selector) || node.querySelector?.(selector);\n                              } catch (e) {\n                                  return false; // Invalid selector\n                              }\n                          });\n\n                          if (hasSignificantChange) {\n                              shouldRecompile = true;\n                              break;\n                          }\n                      }\n                  }\n              }\n              if (shouldRecompile) break;\n          }\n\n          if (shouldRecompile) {\n              debouncedCompile();\n          }\n      });\n\n      // Start observing the document with the configured parameters\n      observer.observe(document.documentElement, {\n          childList: true,\n          subtree: true,\n          attributes: true,\n          attributeFilter: ['class'] // Only observe class changes\n      });\n  };\n\n  // Start processing with initial compilation and observer setup\n  TailwindCompiler.prototype.startProcessing = async function() {\n      try {\n          // Start initial compilation immediately\n          const initialCompilation = this.compile();\n\n          // Set up observer while compilation is running\n          this.observer = new MutationObserver((mutations) => {\n              const relevantMutations = mutations.filter(mutation => {\n                  if (mutation.type === 'attributes' &&\n                      mutation.attributeName === 'class') {\n                      return true;\n                  }\n                  if (mutation.type === 'childList') {\n                      return Array.from(mutation.addedNodes).some(node =>\n                          node.nodeType === Node.ELEMENT_NODE);\n                  }\n                  return false;\n              });\n\n              if (relevantMutations.length === 0) return;\n\n              // Check if there are any new classes that need processing\n              const newClasses = this.getUsedClasses();\n              if (newClasses.classes.length === 0) return;\n\n              if (this.compileTimeout) {\n                  clearTimeout(this.compileTimeout);\n              }\n              this.compileTimeout = setTimeout(() => {\n                  if (!this.isCompiling) {\n                      this.compile();\n                  }\n              }, this.options.debounceTime);\n          });\n\n          // Start observing immediately\n          this.observer.observe(document.documentElement, {\n              childList: true,\n              subtree: true,\n              attributes: true,\n              attributeFilter: ['class']\n          });\n\n          // Wait for initial compilation\n          await initialCompilation;\n\n          this.hasInitialized = true;\n      } catch (error) {\n          console.error('Error starting Tailwind compiler:', error);\n      }\n  };\n\n\n\n  // Utilities initialization\n  // Initialize compiler and set up event listeners\n\n  // Initialize immediately without waiting for DOMContentLoaded\n  const compiler = new TailwindCompiler();\n\n  // Expose utilities compiler for optional integration\n  window.InduxUtilities = compiler;\n\n  // Log when DOM is ready\n  if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', () => {\n          if (compiler.debug) {\n              console.log(`[Indux Utilities] DOMContentLoaded fired at ${(performance.now() - compiler.startTime).toFixed(2)}ms`);\n          }\n      });\n  } else {\n      if (compiler.debug) {\n          console.log(`[Indux Utilities] DOM already loaded when script ran`);\n      }\n  }\n\n  // Log first paint if available\n  if ('PerformanceObserver' in window) {\n      try {\n          const paintObserver = new PerformanceObserver((list) => {\n              for (const entry of list.getEntries()) {\n                  if (compiler.debug && (entry.name === 'first-paint' || entry.name === 'first-contentful-paint')) {\n                      console.log(`[Indux Utilities] ${entry.name} at ${entry.startTime.toFixed(2)}ms`);\n                  }\n              }\n          });\n          paintObserver.observe({ entryTypes: ['paint'] });\n      } catch (e) {\n          // PerformanceObserver might not be available\n      }\n  }\n\n  // Also handle DOMContentLoaded for any elements that might be added later\n  document.addEventListener('DOMContentLoaded', () => {\n      if (!compiler.isCompiling) {\n          compiler.compile();\n      }\n  });\n\n  var indux_components = {};\n\n  /* Indux Components */\n\n  var hasRequiredIndux_components;\n\n  function requireIndux_components () {\n  \tif (hasRequiredIndux_components) return indux_components;\n  \thasRequiredIndux_components = 1;\n  \t// Components registry\n  \twindow.InduxComponentsRegistry = {\n  \t    manifest: null,\n  \t    registered: new Set(),\n  \t    preloaded: [],\n  \t    initialize() {\n  \t        // Load manifest.json synchronously\n  \t        try {\n  \t            const req = new XMLHttpRequest();\n  \t            req.open('GET', '/manifest.json?t=' + Date.now(), false);\n  \t            req.setRequestHeader('Cache-Control', 'no-cache, no-store, must-revalidate');\n  \t            req.setRequestHeader('Pragma', 'no-cache');\n  \t            req.setRequestHeader('Expires', '0');\n  \t            req.send(null);\n  \t            if (req.status === 200) {\n  \t                this.manifest = JSON.parse(req.responseText);\n  \t                // Register all components from manifest\n  \t                const allComponents = [\n  \t                    ...(this.manifest?.preloadedComponents || []),\n  \t                    ...(this.manifest?.components || [])\n  \t                ];\n  \t                allComponents.forEach(path => {\n  \t                    const name = path.split('/').pop().replace('.html', '');\n  \t                    this.registered.add(name);\n  \t                });\n  \t                this.preloaded = (this.manifest?.preloadedComponents || []).map(path => path.split('/').pop().replace('.html', ''));\n  \t            } else {\n  \t                console.warn('[Indux] Failed to load manifest.json (HTTP', req.status + ')');\n  \t            }\n  \t        } catch (e) {\n  \t            console.warn('[Indux] Failed to load manifest.json:', e.message);\n  \t        }\n  \t    }\n  \t}; \n\n  \t// Components loader\n  \twindow.InduxComponentsLoader = {\n  \t    cache: {},\n  \t    initialize() {\n  \t        this.cache = {};\n  \t        // Preload components listed in registry.preloaded\n  \t        const registry = window.InduxComponentsRegistry;\n  \t        if (registry && Array.isArray(registry.preloaded)) {\n  \t            registry.preloaded.forEach(name => {\n  \t                this.loadComponent(name).then(() => {\n  \t                    // Preloaded component\n  \t                });\n  \t            });\n  \t        }\n  \t    },\n  \t    async loadComponent(name) {\n  \t        if (this.cache[name]) {\n  \t            return this.cache[name];\n  \t        }\n  \t        const registry = window.InduxComponentsRegistry;\n  \t        if (!registry || !registry.manifest) {\n  \t            console.warn('[Indux] Manifest not loaded, cannot load component:', name);\n  \t            return null;\n  \t        }\n  \t        const path = (registry.manifest.preloadedComponents || []).concat(registry.manifest.components || [])\n  \t            .find(p => p.split('/').pop().replace('.html', '') === name);\n  \t        if (!path) {\n  \t            console.warn('[Indux] Component', name, 'not found in manifest.');\n  \t            return null;\n  \t        }\n  \t        try {\n  \t            const response = await fetch('/' + path);\n  \t            if (!response.ok) {\n  \t                console.warn('[Indux] HTML file not found for component', name, 'at path:', path, '(HTTP', response.status + ')');\n  \t                return null;\n  \t            }\n  \t            const content = await response.text();\n  \t            this.cache[name] = content;\n  \t            return content;\n  \t        } catch (error) {\n  \t            console.warn('[Indux] Failed to load component', name, 'from', path + ':', error.message);\n  \t            return null;\n  \t        }\n  \t    }\n  \t}; \n\n  \t// Components processor\n  \twindow.InduxComponentsProcessor = {\n  \t    async processComponent(element, instanceId) {\n  \t        const name = element.tagName.toLowerCase().replace('x-', '');\n  \t        const registry = window.InduxComponentsRegistry;\n  \t        const loader = window.InduxComponentsLoader;\n  \t        if (!registry || !loader) {\n  \t            return;\n  \t        }\n  \t        if (!registry.registered.has(name)) {\n  \t            return;\n  \t        }\n  \t        if (element.hasAttribute('data-pre-rendered') || element.hasAttribute('data-processed')) {\n  \t            return;\n  \t        }\n  \t        const content = await loader.loadComponent(name);\n  \t        if (!content) {\n  \t            element.replaceWith(document.createComment(` Failed to load component: ${name} `));\n  \t            return;\n  \t        }\n  \t        const container = document.createElement('div');\n  \t        container.innerHTML = content.trim();\n  \t        const topLevelElements = Array.from(container.children);\n  \t        if (topLevelElements.length === 0) {\n  \t            element.replaceWith(document.createComment(` Empty component: ${name} `));\n  \t            return;\n  \t        }\n\n  \t        // Extract and prepare scripts for execution\n  \t        const scripts = [];\n  \t        const processScripts = (el) => {\n  \t            if (el.tagName.toLowerCase() === 'script') {\n  \t                scripts.push({\n  \t                    content: el.textContent,\n  \t                    type: el.getAttribute('type') || 'text/javascript',\n  \t                    src: el.getAttribute('src'),\n  \t                    async: el.hasAttribute('async'),\n  \t                    defer: el.hasAttribute('defer')\n  \t                });\n  \t                // Remove script from DOM to avoid duplication\n  \t                el.remove();\n  \t            } else {\n  \t                Array.from(el.children).forEach(processScripts);\n  \t            }\n  \t        };\n  \t        topLevelElements.forEach(processScripts);\n  \t        // Collect properties from placeholder attributes\n  \t        const props = {};\n  \t        Array.from(element.attributes).forEach(attr => {\n  \t            if (attr.name !== name && attr.name !== 'class' && !attr.name.startsWith('data-')) {\n  \t                // Store both original case and lowercase for flexibility\n  \t                props[attr.name] = attr.value;\n  \t                props[attr.name.toLowerCase()] = attr.value;\n  \t                // For Alpine bindings (starting with :), also store without the : prefix\n  \t                if (attr.name.startsWith(':')) {\n  \t                    const keyWithoutColon = attr.name.substring(1);\n  \t                    props[keyWithoutColon] = attr.value;\n  \t                    props[keyWithoutColon.toLowerCase()] = attr.value;\n  \t                }\n  \t            }\n  \t        });\n  \t        // Process $modify usage in all elements\n  \t        const processElementProps = (el) => {\n  \t            Array.from(el.attributes).forEach(attr => {\n  \t                const value = attr.value.trim();\n  \t                if (value.includes('$modify(')) {\n  \t                    const propMatch = value.match(/\\$modify\\(['\"]([^'\"]+)['\"]\\)/);\n  \t                    if (propMatch) {\n  \t                        const propName = propMatch[1].toLowerCase();\n  \t                        const propValue = props[propName] || '';\n  \t                        if (attr.name === 'class') {\n  \t                            const existingClasses = el.getAttribute('class') || '';\n  \t                            const newClasses = existingClasses\n  \t                                .replace(new RegExp(`\\$modify\\(['\"]${propName}['\"]\\)`, 'i'), propValue)\n  \t                                .split(' ')\n  \t                                .filter(Boolean)\n  \t                                .join(' ');\n  \t                            el.setAttribute('class', newClasses);\n  \t                        } else if (attr.name === 'x-icon') {\n  \t                            // x-icon should get the raw value, not wrapped for Alpine evaluation\n  \t                            el.setAttribute(attr.name, propValue);\n  \t                        } else if (attr.name === 'x-show' || attr.name === 'x-if') {\n  \t                            // x-show and x-if expect boolean expressions, convert string to boolean check\n  \t                            if (value !== `$modify('${propName}')`) {\n  \t                                const newValue = value.replace(\n  \t                                    /\\$modify\\(['\"]([^'\"]+)['\"]\\)/g,\n  \t                                    (_, name) => {\n  \t                                        const val = props[name.toLowerCase()] || '';\n  \t                                        // Convert to boolean check - true if value exists and is not empty\n  \t                                        return val ? 'true' : 'false';\n  \t                                    }\n  \t                                );\n  \t                                el.setAttribute(attr.name, newValue);\n  \t                            } else {\n  \t                                // Simple replacement - check if prop exists and is not empty\n  \t                                const booleanValue = propValue && propValue.trim() !== '' ? 'true' : 'false';\n  \t                                el.setAttribute(attr.name, booleanValue);\n  \t                            }\n  \t                        } else if (\n  \t                            attr.name.startsWith('x-') ||\n  \t                            attr.name.startsWith(':') ||\n  \t                            attr.name.startsWith('@') ||\n  \t                            attr.name.startsWith('x-bind:') ||\n  \t                            attr.name.startsWith('x-on:')\n  \t                        ) {\n  \t                            // For Alpine directives, properly quote string values\n  \t                            if (value !== `$modify('${propName}')`) {\n  \t                                // Handle mixed content with multiple $modify() calls\n  \t                                const newValue = value.replace(\n  \t                                    /\\$modify\\(['\"]([^'\"]+)['\"]\\)/g,\n  \t                                    (_, name) => {\n  \t                                        const val = props[name.toLowerCase()] || '';\n  \t                                        // For expressions with fallbacks (||), use null for empty/whitespace values\n  \t                                        if (!val || val.trim() === '' || /^[\\r\\n\\t\\s]+$/.test(val)) {\n  \t                                            return value.includes('||') ? 'null' : \"''\";\n  \t                                        }\n  \t                                        // If value starts with $, it's an Alpine expression - don't quote\n  \t                                        if (val.startsWith('$')) {\n  \t                                            // Special handling for x-for, x-if, and x-show with $x data source expressions\n  \t                                            // Add safe fallbacks to prevent errors during initial render when data source hasn't loaded yet\n  \t                                            if ((attr.name === 'x-for' || attr.name === 'x-if' || attr.name === 'x-show') && val.startsWith('$x') && !val.includes('??')) {\n  \t                                                // Convert regular property access dots to optional chaining for safe navigation\n  \t                                                let safeVal = val.replace(/\\./g, '?.');\n  \t                                                // Add fallback based on directive type (only if user hasn't already provided one)\n  \t                                                if (attr.name === 'x-for') {\n  \t                                                    // x-for needs an iterable, so fallback to empty array\n  \t                                                    return `${safeVal} ?? []`;\n  \t                                                } else {\n  \t                                                    // x-if and x-show evaluate to boolean, fallback to false\n  \t                                                    return `${safeVal} ?? false`;\n  \t                                                }\n  \t                                            }\n  \t                                            return val;\n  \t                                        }\n  \t                                        // Special handling for x-for, x-if, and x-show - these can contain expressions\n  \t                                        // that reference data sources or other dynamic content\n  \t                                        if (attr.name === 'x-for' || attr.name === 'x-if' || attr.name === 'x-show') {\n  \t                                            // For these directives, preserve the value as-is to allow Alpine to evaluate it\n  \t                                            // This is critical for x-for expressions like \"card in $x.data.items\"\n  \t                                            return val;\n  \t                                        }\n  \t                                        // Always quote string values to ensure they're treated as strings, not variables\n  \t                                        return `'${val.replace(/'/g, \"\\\\'\").replace(/\\r/g, '\\\\r').replace(/\\n/g, '\\\\n').replace(/\\t/g, '\\\\t')}'`;\n  \t                                    }\n  \t                                );\n  \t                                el.setAttribute(attr.name, newValue);\n  \t                            } else {\n  \t                                // Simple $modify() replacement\n  \t                                if (!propValue || propValue.trim() === '' || /^[\\r\\n\\t\\s]+$/.test(propValue)) {\n  \t                                    // For empty/whitespace values, remove the attribute\n  \t                                    el.removeAttribute(attr.name);\n  \t                                } else {\n  \t                                    // If value starts with $, it's an Alpine expression - don't quote\n  \t                                    if (propValue.startsWith('$')) {\n  \t                                        el.setAttribute(attr.name, propValue);\n  \t                                    } else {\n  \t                                        // Always quote string values and escape special characters\n  \t                                        const quotedValue = `'${propValue.replace(/'/g, \"\\\\'\").replace(/\\r/g, '\\\\r').replace(/\\n/g, '\\\\n').replace(/\\t/g, '\\\\t')}'`;\n  \t                                        el.setAttribute(attr.name, quotedValue);\n  \t                                    }\n  \t                                }\n  \t                            }\n  \t                        } else {\n  \t                            el.setAttribute(attr.name, propValue);\n  \t                        }\n  \t                    }\n  \t                }\n  \t            });\n  \t            Array.from(el.children).forEach(processElementProps);\n  \t        };\n  \t        topLevelElements.forEach(processElementProps);\n  \t        // Apply attributes from placeholder to root elements\n  \t        topLevelElements.forEach(rootElement => {\n  \t            Array.from(element.attributes).forEach(attr => {\n  \t                if (attr.name === 'class') {\n  \t                    const existingClass = rootElement.getAttribute('class') || '';\n  \t                    const newClasses = `${existingClass} ${attr.value}`.trim();\n  \t                    rootElement.setAttribute('class', newClasses);\n  \t                } else if (attr.name.startsWith('x-') || attr.name.startsWith(':') || attr.name.startsWith('@')) {\n  \t                    rootElement.setAttribute(attr.name, attr.value);\n  \t                } else if (attr.name !== name && !attr.name.startsWith('data-')) {\n  \t                    rootElement.setAttribute(attr.name, attr.value);\n  \t                }\n  \t                // Preserve important data attributes including data-order\n  \t                else if (attr.name === 'data-order' || attr.name === 'x-route' || attr.name === 'data-head') {\n  \t                    rootElement.setAttribute(attr.name, attr.value);\n  \t                }\n  \t            });\n  \t            // Set data-component=instanceId if provided\n  \t            if (instanceId) {\n  \t                rootElement.setAttribute('data-component', instanceId);\n  \t            }\n  \t        });\n  \t        // After rendering, copy all attributes from the original placeholder to the first top-level element\n  \t        // Note: This block ensures the first element has all attributes, including those that might have been\n  \t        // skipped by the first loop due to conditions. Classes are already handled in the first loop, so we skip them here.\n  \t        if (topLevelElements.length > 0) {\n  \t            const firstRoot = topLevelElements[0];\n  \t            Array.from(element.attributes).forEach(attr => {\n  \t                // Skip attributes that were already handled in the first loop\n  \t                // Classes are always handled in the first loop, so skip them here to avoid duplication\n  \t                if (attr.name === 'class') {\n  \t                    return; // Skip - already handled in first loop\n  \t                }\n\n  \t                // Preserve important attributes including data-order, x-route, and other routing/data attributes\n  \t                const preserveAttributes = [\n  \t                    'data-order', 'x-route', 'data-component', 'data-head',\n  \t                    'x-route-*', 'data-route-*', 'x-tabpanel'\n  \t                ];\n  \t                const shouldPreserve = preserveAttributes.some(preserveAttr =>\n  \t                    attr.name === preserveAttr || attr.name.startsWith(preserveAttr.replace('*', ''))\n  \t                );\n\n  \t                // Check if this attribute was already handled in the first loop\n  \t                const alreadyHandledInFirstLoop = \n  \t                    attr.name.startsWith('x-') || attr.name.startsWith(':') || attr.name.startsWith('@') ||\n  \t                    (attr.name !== name && !attr.name.startsWith('data-')) ||\n  \t                    attr.name === 'data-order' || attr.name === 'x-route' || attr.name === 'data-head';\n\n  \t                // Only apply if: (1) it wasn't handled in first loop, OR (2) it should be preserved, AND (3) it's not in the skip list\n  \t                if ((!alreadyHandledInFirstLoop || shouldPreserve) && \n  \t                    !['data-original-placeholder', 'data-pre-rendered', 'data-processed'].includes(attr.name)) {\n  \t                    if (attr.name.startsWith('x-') || attr.name.startsWith(':') || attr.name.startsWith('@')) {\n  \t                        // For Alpine directives, merge if they already exist (for x-data, combine objects)\n  \t                        if (attr.name === 'x-data' && firstRoot.hasAttribute('x-data')) {\n  \t                            // For x-data, we need to merge the objects - this is complex, so for now we'll append\n  \t                            // The user should structure their x-data to avoid conflicts\n  \t                            const existing = firstRoot.getAttribute('x-data');\n  \t                            // If both are objects, try to merge them\n  \t                            if (existing.trim().startsWith('{') && attr.value.trim().startsWith('{')) {\n  \t                                // Remove outer braces and merge\n  \t                                const existingContent = existing.trim().slice(1, -1).trim();\n  \t                                const newContent = attr.value.trim().slice(1, -1).trim();\n  \t                                const merged = `{ ${existingContent}${existingContent && newContent ? ', ' : ''}${newContent} }`;\n  \t                                firstRoot.setAttribute('x-data', merged);\n  \t                            } else {\n  \t                                // If not both objects, replace (user should handle this case)\n  \t                                firstRoot.setAttribute(attr.name, attr.value);\n  \t                            }\n  \t                        } else {\n  \t                            // For other Alpine directives, replace if they exist\n  \t                            firstRoot.setAttribute(attr.name, attr.value);\n  \t                        }\n  \t                    } else {\n  \t                        // For other attributes, replace if they exist\n  \t                        firstRoot.setAttribute(attr.name, attr.value);\n  \t                    }\n  \t                }\n  \t            });\n  \t        }\n  \t        const parent = element.parentElement;\n  \t        if (!parent || !document.contains(element)) {\n  \t            return;\n  \t        }\n  \t        // Replace the placeholder element with the component content\n  \t        const fragment = document.createDocumentFragment();\n  \t        topLevelElements.forEach(el => fragment.appendChild(el));\n  \t        parent.replaceChild(fragment, element);\n\n  \t        // Execute scripts after component is rendered\n  \t        if (scripts.length > 0) {\n  \t            // Use a small delay to ensure DOM is updated\n  \t            setTimeout(() => {\n  \t                scripts.forEach(script => {\n  \t                    if (script.src) {\n  \t                        // External script - create and append to head\n  \t                        const scriptEl = document.createElement('script');\n  \t                        scriptEl.src = script.src;\n  \t                        scriptEl.type = script.type;\n  \t                        if (script.async) scriptEl.async = true;\n  \t                        if (script.defer) scriptEl.defer = true;\n  \t                        document.head.appendChild(scriptEl);\n  \t                    } else if (script.content) {\n  \t                        // Inline script - execute directly\n  \t                        try {\n  \t                            // Create a function to execute the script in the global scope\n  \t                            const executeScript = new Function(script.content);\n  \t                            executeScript();\n  \t                        } catch (error) {\n  \t                            console.error(`[Indux] Error executing script in component ${name}:`, error);\n  \t                        }\n  \t                    }\n  \t                });\n  \t            }, 0);\n  \t        }\n  \t    },\n  \t    initialize() {\n  \t    }\n  \t}; \n\n  \t// Components swapping\n  \t(function () {\n  \t    let componentInstanceCounters = {};\n  \t    const swappedInstances = new Set();\n  \t    const instanceRouteMap = new Map();\n  \t    const placeholderMap = new Map();\n\n  \t    function getComponentInstanceId(name) {\n  \t        if (!componentInstanceCounters[name]) componentInstanceCounters[name] = 1;\n  \t        else componentInstanceCounters[name]++;\n  \t        return `${name}-${componentInstanceCounters[name]}`;\n  \t    }\n\n  \t    function logSiblings(parent, context) {\n  \t        if (!parent) return;\n  \t        Array.from(parent.children).map(el => `${el.tagName}[data-component=${el.getAttribute('data-component') || ''}]`).join(', ');\n  \t    }\n\n  \t    window.InduxComponentsSwapping = {\n  \t        // Swap in source code for a placeholder\n  \t        async swapIn(placeholder) {\n  \t            if (placeholder.hasAttribute('data-swapped')) return;\n  \t            const processor = window.InduxComponentsProcessor;\n  \t            if (!processor) return;\n  \t            const name = placeholder.tagName.toLowerCase().replace('x-', '');\n  \t            let instanceId = placeholder.getAttribute('data-component');\n  \t            if (!instanceId) {\n  \t                instanceId = getComponentInstanceId(name);\n  \t                placeholder.setAttribute('data-component', instanceId);\n  \t            }\n  \t            // Save placeholder for reversion in the map\n  \t            if (!placeholderMap.has(instanceId)) {\n  \t                const clone = placeholder.cloneNode(true);\n  \t                clone.setAttribute('data-original-placeholder', '');\n  \t                clone.setAttribute('data-component', instanceId);\n  \t                placeholderMap.set(instanceId, clone);\n  \t            }\n  \t            // Log before swap\n  \t            logSiblings(placeholder.parentNode);\n  \t            // Process and swap in source code, passing instanceId\n  \t            await processor.processComponent(placeholder, instanceId);\n  \t            swappedInstances.add(instanceId);\n  \t            // Track the route for this instance\n  \t            const xRoute = placeholder.getAttribute('x-route');\n  \t            instanceRouteMap.set(instanceId, xRoute);\n  \t            // Log after swap\n  \t            logSiblings(placeholder.parentNode || document.body);\n  \t        },\n  \t        // Revert to placeholder\n  \t        revert(instanceId) {\n  \t            if (!swappedInstances.has(instanceId)) return;\n  \t            // Remove all elements with data-component=instanceId\n  \t            const rendered = Array.from(document.querySelectorAll(`[data-component=\"${instanceId}\"]`));\n  \t            if (rendered.length === 0) return;\n  \t            const first = rendered[0];\n  \t            const parent = first.parentNode;\n  \t            // Retrieve the original placeholder from the map\n  \t            const placeholder = placeholderMap.get(instanceId);\n  \t            // Log before revert\n  \t            logSiblings(parent);\n  \t            // Remove all rendered elements\n  \t            rendered.forEach(el => {\n  \t                el.remove();\n  \t            });\n  \t            // Restore the placeholder at the correct position if not present\n  \t            if (placeholder && parent && !parent.contains(placeholder)) {\n  \t                const targetPosition = parseInt(placeholder.getAttribute('data-order')) || 0;\n  \t                let inserted = false;\n\n  \t                // Find the correct position based on data-order\n  \t                for (let i = 0; i < parent.children.length; i++) {\n  \t                    const child = parent.children[i];\n  \t                    const childPosition = parseInt(child.getAttribute('data-order')) || 0;\n\n  \t                    if (targetPosition < childPosition) {\n  \t                        parent.insertBefore(placeholder, child);\n  \t                        inserted = true;\n  \t                        break;\n  \t                    }\n  \t                }\n\n  \t                // If not inserted (should be at the end), append to parent\n  \t                if (!inserted) {\n  \t                    parent.appendChild(placeholder);\n  \t                }\n\n  \t            }\n  \t            swappedInstances.delete(instanceId);\n  \t            instanceRouteMap.delete(instanceId);\n  \t            placeholderMap.delete(instanceId);\n  \t            // Log after revert\n  \t            logSiblings(parent);\n  \t        },\n  \t        // Main swapping logic\n  \t        async processAll() {\n  \t            componentInstanceCounters = {};\n  \t            const registry = window.InduxComponentsRegistry;\n  \t            if (!registry) return;\n  \t            const routing = window.InduxRouting;\n  \t            const placeholders = Array.from(document.querySelectorAll('*')).filter(el =>\n  \t                el.tagName.toLowerCase().startsWith('x-') &&\n  \t                !el.hasAttribute('data-pre-rendered') &&\n  \t                !el.hasAttribute('data-processed')\n  \t            );\n  \t            // First pass: revert any swapped-in instances that no longer match\n  \t            if (routing) {\n  \t                const currentPath = window.location.pathname;\n  \t                const normalizedPath = currentPath === '/' ? '/' : currentPath.replace(/^\\/+|\\/+$/g, '');\n  \t                for (const instanceId of Array.from(swappedInstances)) {\n  \t                    const xRoute = instanceRouteMap.get(instanceId);\n  \t                    const matches = !xRoute || window.InduxRouting.matchesCondition(normalizedPath, xRoute);\n  \t                    if (!matches) {\n  \t                        this.revert(instanceId);\n  \t                    }\n  \t                }\n  \t            }\n  \t            // Second pass: swap in any placeholders that match\n  \t            for (const placeholder of placeholders) {\n  \t                const name = placeholder.tagName.toLowerCase().replace('x-', '');\n  \t                let instanceId = placeholder.getAttribute('data-component');\n  \t                if (!instanceId) {\n  \t                    instanceId = getComponentInstanceId(name);\n  \t                    placeholder.setAttribute('data-component', instanceId);\n  \t                }\n  \t                const xRoute = placeholder.getAttribute('x-route');\n  \t                if (!routing) {\n  \t                    // No routing: always swap in\n  \t                    await this.swapIn(placeholder);\n  \t                } else {\n  \t                    // Routing present: check route\n  \t                    const currentPath = window.location.pathname;\n  \t                    const normalizedPath = currentPath === '/' ? '/' : currentPath.replace(/^\\/+|\\/+$/g, '');\n  \t                    const matches = !xRoute || window.InduxRouting.matchesCondition(normalizedPath, xRoute);\n  \t                    if (matches) {\n  \t                        await this.swapIn(placeholder);\n  \t                    }\n  \t                }\n  \t            }\n  \t        },\n  \t        initialize() {\n  \t            // On init, process all\n  \t            this.processAll().then(() => {\n  \t                // Dispatch event when components are fully processed\n  \t                window.dispatchEvent(new CustomEvent('indux:components-processed'));\n  \t            });\n  \t            // If routing is present, listen for route changes\n  \t            if (window.InduxRouting) {\n  \t                window.addEventListener('indux:route-change', () => {\n  \t                    this.processAll().then(() => {\n  \t                        // Dispatch event when components are fully processed after route change\n  \t                        window.dispatchEvent(new CustomEvent('indux:components-processed'));\n  \t                    });\n  \t                });\n  \t            }\n  \t        }\n  \t    };\n  \t})(); \n\n  \t// Components mutation observer\n  \twindow.InduxComponentsMutation = {\n  \t    async processAllPlaceholders() {\n  \t        const processor = window.InduxComponentsProcessor;\n  \t        const routing = window.InduxRouting;\n  \t        if (!processor) return;\n  \t        const placeholders = Array.from(document.querySelectorAll('*')).filter(el =>\n  \t            el.tagName.toLowerCase().startsWith('x-') &&\n  \t            !el.hasAttribute('data-pre-rendered') &&\n  \t            !el.hasAttribute('data-processed')\n  \t        );\n  \t        for (const el of placeholders) {\n  \t            if (routing) {\n  \t                // Only process if route matches\n  \t                const xRoute = el.getAttribute('x-route');\n  \t                const currentPath = window.location.pathname;\n  \t                const normalizedPath = currentPath === '/' ? '/' : currentPath.replace(/^\\/+|\\/+$/g, '');\n  \t                const matches = !xRoute || window.InduxRouting.matchesCondition(normalizedPath, xRoute);\n  \t                if (!matches) continue;\n  \t            }\n  \t            await processor.processComponent(el);\n  \t        }\n  \t    },\n  \t    initialize() {\n  \t        const processor = window.InduxComponentsProcessor;\n  \t        const routing = window.InduxRouting;\n  \t        if (!processor) return;\n  \t        // Initial scan\n  \t        this.processAllPlaceholders();\n  \t        // Mutation observer for new placeholders\n  \t        const observer = new MutationObserver(async mutations => {\n  \t            for (const mutation of mutations) {\n  \t                for (const node of mutation.addedNodes) {\n  \t                    if (node.nodeType === 1 && node.tagName.toLowerCase().startsWith('x-')) {\n  \t                        if (!node.hasAttribute('data-pre-rendered') && !node.hasAttribute('data-processed')) {\n  \t                            if (routing) {\n  \t                                const xRoute = node.getAttribute('x-route');\n  \t                                const currentPath = window.location.pathname;\n  \t                                const normalizedPath = currentPath === '/' ? '/' : currentPath.replace(/^\\/+|\\/+$/g, '');\n  \t                                const matches = !xRoute || window.InduxRouting.matchesCondition(normalizedPath, xRoute);\n  \t                                if (!matches) continue;\n  \t                            }\n  \t                            await processor.processComponent(node);\n  \t                        }\n  \t                    }\n  \t                    // Also check for any <x-*> descendants\n  \t                    if (node.nodeType === 1) {\n  \t                        const descendants = Array.from(node.querySelectorAll('*')).filter(el =>\n  \t                            el.tagName.toLowerCase().startsWith('x-') &&\n  \t                            !el.hasAttribute('data-pre-rendered') &&\n  \t                            !el.hasAttribute('data-processed')\n  \t                        );\n  \t                        for (const el of descendants) {\n  \t                            if (routing) {\n  \t                                const xRoute = el.getAttribute('x-route');\n  \t                                const currentPath = window.location.pathname;\n  \t                                const normalizedPath = currentPath === '/' ? '/' : currentPath.replace(/^\\/+|\\/+$/g, '');\n  \t                                const matches = !xRoute || window.InduxRouting.matchesCondition(normalizedPath, xRoute);\n  \t                                if (!matches) continue;\n  \t                            }\n  \t                            await processor.processComponent(el);\n  \t                        }\n  \t                    }\n  \t                }\n  \t            }\n  \t        });\n\n  \t        // Ensure document.body exists before observing\n  \t        if (document.body) {\n  \t            observer.observe(document.body, { childList: true, subtree: true });\n  \t        } else {\n  \t            // Wait for body to be available\n  \t            document.addEventListener('DOMContentLoaded', () => {\n  \t                observer.observe(document.body, { childList: true, subtree: true });\n  \t            });\n  \t        }\n  \t    }\n  \t}; \n\n  \t// Main initialization for Indux Components\n  \tfunction initializeComponents() {\n  \t    if (window.InduxComponentsRegistry) window.InduxComponentsRegistry.initialize();\n  \t    if (window.InduxComponentsLoader) window.InduxComponentsLoader.initialize();\n  \t    if (window.InduxComponentsProcessor) window.InduxComponentsProcessor.initialize();\n  \t    if (window.InduxComponentsSwapping) window.InduxComponentsSwapping.initialize();\n  \t    if (window.InduxComponentsMutation) window.InduxComponentsMutation.initialize();\n  \t    if (window.InduxComponentsUtils) window.InduxComponentsUtils.initialize?.();\n  \t    window.__induxComponentsInitialized = true;\n  \t    window.dispatchEvent(new CustomEvent('indux:components-ready'));\n  \t}\n\n  \tif (document.readyState === 'loading') {\n  \t    document.addEventListener('DOMContentLoaded', initializeComponents);\n  \t} else {\n  \t    initializeComponents();\n  \t}\n\n  \twindow.InduxComponents = {\n  \t    initialize: initializeComponents\n  \t};\n  \treturn indux_components;\n  }\n\n  requireIndux_components();\n\n  var indux_appwrite_auth = {};\n\n  /*  Indux Appwrite Auth\n  /*  By Andrew Matlock under MIT license\n  /*  https://github.com/andrewmatlock/Indux\n  /*\n  /*  Supports authentication with an Appwrite project\n  /*  Requires Alpine JS (alpinejs.dev) to operate\n  */\n\n  var hasRequiredIndux_appwrite_auth;\n\n  function requireIndux_appwrite_auth () {\n  \tif (hasRequiredIndux_appwrite_auth) return indux_appwrite_auth;\n  \thasRequiredIndux_appwrite_auth = 1;\n  \t/* Auth config */\n\n  \t// Load manifest if not already loaded\n  \tasync function ensureManifest() {\n  \t    if (window.InduxComponentsRegistry?.manifest) {\n  \t        return window.InduxComponentsRegistry.manifest;\n  \t    }\n\n  \t    try {\n  \t        const response = await fetch('/manifest.json');\n  \t        return await response.json();\n  \t    } catch (error) {\n  \t        return null;\n  \t    }\n  \t}\n\n  \t// Get Appwrite config from manifest\n  \tasync function getAppwriteConfig() {\n  \t    const manifest = await ensureManifest();\n  \t    if (!manifest?.appwrite) {\n  \t        return null;\n  \t    }\n\n  \t    const appwriteConfig = manifest.appwrite;\n  \t    const endpoint = appwriteConfig.endpoint;\n  \t    const projectId = appwriteConfig.projectId;\n  \t    const devKey = appwriteConfig.devKey; // Optional dev key to bypass rate limits in development\n\n  \t    if (!endpoint || !projectId) {\n  \t        return null;\n  \t    }\n\n  \t    // Get auth methods from config (defaults to [\"magic\", \"oauth\"] if not specified)\n  \t    const authMethods = appwriteConfig.auth?.methods || [\"magic\", \"oauth\"];\n  \t    \n  \t    // Guest session support: \"guest-auto\" = automatic, \"guest-manual\" = manual only\n  \t    const guestAuto = authMethods.includes(\"guest-auto\");\n  \t    const guestManual = authMethods.includes(\"guest-manual\");\n  \t    const hasGuest = guestAuto || guestManual;\n  \t    \n  \t    const magicEnabled = authMethods.includes(\"magic\");\n  \t    const oauthEnabled = authMethods.includes(\"oauth\");\n  \t    \n  \t    // Teams support: presence of teams object enables it\n  \t    const teamsEnabled = !!appwriteConfig.auth?.teams;\n  \t    const permanentTeams = appwriteConfig.auth?.teams?.permanent || null; // Array of team names (immutable)\n  \t    const templateTeams = appwriteConfig.auth?.teams?.template || null; // Array of team names (can be deleted and reapplied)\n  \t    const teamsPollInterval = appwriteConfig.auth?.teams?.pollInterval || null; // Polling interval in milliseconds (null = disabled)\n  \t    \n  \t    // Default roles: permanent (cannot be deleted) and template (can be deleted)\n  \t    // These are objects mapping role names to permissions: { \"Admin\": [\"inviteMembers\", ...] }\n  \t    const permanentRoles = appwriteConfig.auth?.roles?.permanent || null; // Object: { \"RoleName\": [\"permission1\", ...] }\n  \t    const templateRoles = appwriteConfig.auth?.roles?.template || null; // Object: { \"RoleName\": [\"permission1\", ...] }\n  \t    \n  \t    // Member roles: derived from permanent and template roles (merged)\n  \t    // This is used for role normalization, permission checking, and creatorRole logic\n  \t    const memberRoles = permanentRoles || templateRoles \n  \t        ? { ...(permanentRoles || {}), ...(templateRoles || {}) }\n  \t        : (appwriteConfig.auth?.memberRoles || null); // Fallback to legacy memberRoles if roles not defined\n  \t    \n  \t    // Creator role: string reference to a role in memberRoles (role creator gets by default)\n  \t    const creatorRole = appwriteConfig.auth?.creatorRole || null;\n  \t    \n  \t    return {\n  \t        endpoint,\n  \t        projectId,\n  \t        devKey, // Optional dev key for development\n  \t        authMethods,\n  \t        guest: hasGuest,\n  \t        guestAuto: guestAuto,\n  \t        guestManual: guestManual,\n  \t        anonymous: guestAuto, // For backwards compatibility with existing code\n  \t        magic: magicEnabled,\n  \t        oauth: oauthEnabled,\n  \t        teams: teamsEnabled,\n  \t        permanentTeams: permanentTeams, // Array of team names (cannot be deleted)\n  \t        templateTeams: templateTeams, // Array of team names (can be deleted and reapplied)\n  \t        teamsPollInterval: teamsPollInterval, // Polling interval in milliseconds (null = disabled)\n  \t        memberRoles: memberRoles, // Role definitions: { \"RoleName\": [\"permission1\", \"permission2\"] }\n  \t        permanentRoles: permanentRoles, // Object: { \"RoleName\": [\"permission1\", ...] } (cannot be deleted)\n  \t        templateRoles: templateRoles, // Object: { \"RoleName\": [\"permission1\", ...] } (can be deleted)\n  \t        creatorRole: creatorRole // String reference to memberRoles key\n  \t    };\n  \t}\n\n  \t// Initialize Appwrite client (assumes SDK loaded separately)\n  \tlet appwriteClient = null;\n  \tlet appwriteAccount = null;\n  \tlet appwriteTeams = null;\n  \tlet appwriteUsers = null;\n\n  \tasync function getAppwriteClient() {\n  \t    // Check if Appwrite SDK is loaded\n  \t    if (!window.Appwrite || !window.Appwrite.Client || !window.Appwrite.Account) {\n  \t        return null;\n  \t    }\n\n  \t    if (!appwriteClient) {\n  \t        const config = await getAppwriteConfig();\n  \t        if (!config) {\n  \t            return null;\n  \t        }\n\n  \t        appwriteClient = new window.Appwrite.Client()\n  \t            .setEndpoint(config.endpoint)\n  \t            .setProject(config.projectId);\n  \t        \n  \t        // Add dev key header if provided (bypasses rate limits in development)\n  \t        // See: https://appwrite.io/docs/advanced/platform/rate-limits#dev-keys\n  \t        if (config.devKey) {\n  \t            appwriteClient.headers['X-Appwrite-Dev-Key'] = config.devKey;\n  \t        }\n\n  \t        appwriteAccount = new window.Appwrite.Account(appwriteClient);\n  \t        appwriteTeams = new window.Appwrite.Teams(appwriteClient);\n  \t        \n  \t        // Initialize Users service if available (for fetching user details)\n  \t        if (window.Appwrite.Users) {\n  \t            appwriteUsers = new window.Appwrite.Users(appwriteClient);\n  \t        }\n  \t    }\n\n  \t    return {\n  \t        client: appwriteClient,\n  \t        account: appwriteAccount,\n  \t        teams: appwriteTeams,\n  \t        users: appwriteUsers, // Add users service for fetching user details\n  \t        realtime: window.Appwrite?.Realtime ? new window.Appwrite.Realtime(appwriteClient) : null // Realtime service for subscriptions\n  \t    };\n  \t}\n\n  \t// Export configuration interface\n  \twindow.InduxAppwriteAuthConfig = {\n  \t    getAppwriteConfig,\n  \t    getAppwriteClient,\n  \t    ensureManifest\n  \t};\n\n  \t/* Auth store */\n\n  \t// Initialize auth store\n  \tfunction initializeAuthStore() {\n  \t    if (typeof Alpine === 'undefined') {\n  \t        return;\n  \t    }\n\n  \t    const config = window.InduxAppwriteAuthConfig;\n  \t    if (!config) {\n  \t        return;\n  \t    }\n\n  \t    // Cross-tab synchronization using localStorage events\n  \t    const STORAGE_KEY = 'indux:auth:state';\n  \t    \n  \t    // Listen for storage events from other tabs\n  \t    window.addEventListener('storage', (e) => {\n  \t        if (e.key === STORAGE_KEY && e.newValue) {\n  \t            try {\n  \t                const state = JSON.parse(e.newValue);\n  \t                const store = Alpine.store('auth');\n  \t                if (store) {\n  \t                    // Update store state from other tab\n  \t                    store.isAuthenticated = state.isAuthenticated;\n  \t                    store.isAnonymous = state.isAnonymous;\n  \t                    store.user = state.user;\n  \t                    store.session = state.session;\n  \t                    store.magicLinkSent = state.magicLinkSent || false;\n  \t                    store.magicLinkExpired = state.magicLinkExpired || false;\n  \t                    store.error = state.error;\n  \t                }\n  \t            } catch (error) {\n  \t                // Failed to sync state from other tab\n  \t            }\n  \t        }\n  \t    });\n\n  \t    // Helper to sync state to localStorage (for cross-tab communication)\n  \t    function syncStateToStorage(store) {\n  \t        try {\n  \t            const state = {\n  \t                isAuthenticated: store.isAuthenticated,\n  \t                isAnonymous: store.isAnonymous,\n  \t                user: store.user,\n  \t                session: store.session,\n  \t                magicLinkSent: store.magicLinkSent,\n  \t                magicLinkExpired: store.magicLinkExpired,\n  \t                error: store.error\n  \t            };\n  \t            localStorage.setItem(STORAGE_KEY, JSON.stringify(state));\n  \t        } catch (error) {\n  \t            // Failed to sync state to storage\n  \t        }\n  \t    }\n\n  \t    const authStore = {\n  \t        user: null,\n  \t        session: null,\n  \t        isAuthenticated: false,\n  \t        isAnonymous: false,\n  \t        inProgress: false,\n  \t        error: null,\n  \t        magicLinkSent: false,\n  \t        magicLinkExpired: false,\n  \t        teams: [], // List of user's teams\n  \t        currentTeam: null, // Currently selected/active team\n  \t        _teamsPollInterval: null, // Interval ID for teams polling (deprecated, use realtime instead)\n  \t        _teamsRealtimeUnsubscribe: null, // Realtime subscription cleanup function (may be array of unsubscribes)\n  \t        _teamsRealtimeSubscribing: false, // Flag to prevent recursive subscription during refresh\n  \t        // Team management properties (reactive, no x-data needed)\n  \t        newTeamName: '',\n  \t        updateTeamNameInput: '',\n  \t        inviteEmail: '',\n  \t        inviteRoles: [], // Array of selected roles for checkboxes\n  \t        currentTeamMemberships: [],\n  \t        deletedTemplateTeams: [],\n  \t        deletedTemplateRoles: [], // Deleted template roles (can be reapplied)\n  \t        _teamImmutableCache: {},\n  \t        // User-generated roles properties\n  \t        newRoleName: '',\n  \t        newRolePermissions: [], // Array of selected permissions for checkboxes\n  \t        allAvailablePermissions: [], // Cached list of all available permissions for autocomplete\n  \t        editingRole: null, // Current role being edited: { teamId, oldRoleName, newRoleName, permissions }\n  \t        editingMember: null, // Current member being edited: { teamId, membershipId, roles }\n  \t        _initialized: false,\n  \t        _initializing: false,\n  \t        _appwrite: null,\n  \t        _guestAuto: false,\n  \t        _guestManual: false,\n  \t        guestManualEnabled: false,\n  \t        _oauthProvider: null, // Store OAuth provider name (google, github, etc.) when login is initiated\n  \t        _syncStateToStorage: syncStateToStorage,\n  \t        \n  \t        // Permission cache properties (initialized early for Alpine reactivity)\n  \t        _permissionCache: {},\n  \t        _userRoleCache: null,\n  \t        _allRolesCache: null,\n  \t        _allRolesCacheByTeam: {}, // Cache roles per team ID\n  \t        _rolePermanentCache: {}, // Cache permanent role status per team: { teamId: { roleName: true/false } }\n  \t        _userGeneratedRolesCache: {},\n  \t        \n  \t        // Permission cache methods (always available, return safe defaults)\n  \t        canInviteMembers() {\n  \t            return (this._permissionCache && this._permissionCache.inviteMembers) || false;\n  \t        },\n  \t        canRemoveMembers() {\n  \t            return (this._permissionCache && this._permissionCache.removeMembers) || false;\n  \t        },\n  \t        canRenameTeam() {\n  \t            return (this._permissionCache && this._permissionCache.renameTeam) || false;\n  \t        },\n  \t        // Check if user can authenticate (not already authenticated as non-anonymous or in progress)\n  \t        canAuthenticate() {\n  \t            return !((this.isAuthenticated && !this.isAnonymous) || this.inProgress);\n  \t        },\n  \t        canDeleteTeam() {\n  \t            return (this._permissionCache && this._permissionCache.deleteTeam) || false;\n  \t        },\n  \t        currentUserRole() {\n  \t            return this._userRoleCache || null;\n  \t        },\n  \t        allTeamRoles(team) {\n  \t            // If team is provided, get roles for that specific team\n  \t            if (team && team.$id) {\n  \t                // Return cached roles for this specific team\n  \t                return this._allRolesCacheByTeam[team.$id] || {};\n  \t            }\n  \t            // Fallback: return roles for current team\n  \t            if (this.currentTeam && this.currentTeam.$id) {\n  \t                return this._allRolesCacheByTeam[this.currentTeam.$id] || this._allRolesCache || {};\n  \t            }\n  \t            return this._allRolesCache || {};\n  \t        },\n  \t        isUserGeneratedRoleCached(roleName) {\n  \t            return (this._userGeneratedRolesCache && this._userGeneratedRolesCache[roleName]) || false;\n  \t        },\n  \t        // Fallback for canManageRoles (will be overridden by roles module if available)\n  \t        async canManageRoles() {\n  \t            // If no custom roles defined, owner has manageRoles permission\n  \t            const config = window.InduxAppwriteAuthConfig;\n  \t            if (config) {\n  \t                try {\n  \t                    const appwriteConfig = await config.getAppwriteConfig();\n  \t                    const memberRoles = appwriteConfig?.memberRoles;\n  \t                    if (!memberRoles || Object.keys(memberRoles).length === 0) {\n  \t                        // No custom roles - owner has all permissions including manageRoles\n  \t                        if (this.isCurrentTeamOwner) {\n  \t                            return await this.isCurrentTeamOwner();\n  \t                        }\n  \t                        return false;\n  \t                    }\n  \t                    // Custom roles defined - check if user has manageRoles permission\n  \t                    if (this.hasTeamPermission) {\n  \t                        return await this.hasTeamPermission('manageRoles');\n  \t                    }\n  \t                } catch (error) {\n  \t                    return false;\n  \t                }\n  \t            }\n  \t            return false;\n  \t        },\n  \t        \n  \t        // Alias for backwards compatibility\n  \t        async canCreateRoles() {\n  \t            return await this.canManageRoles();\n  \t        },\n\n  \t        // Get personal team (convenience getter - returns first default team)\n  \t        get personalTeam() {\n  \t            // This is async, so we can't use a getter directly\n  \t            // Return null and let users call getPersonalTeam() or getDefaultTeams() directly\n  \t            return null;\n  \t        },\n\n  \t        // Get authentication method (oauth, magic, anonymous)\n  \t        getMethod() {\n  \t            if (!this.session) return null;\n  \t            const provider = this.session.provider;\n  \t            if (provider === 'anonymous') return 'anonymous';\n  \t            if (provider === 'magic-url') return 'magic';\n  \t            // OAuth providers return their name (google, github, etc.)\n  \t            if (provider && provider !== 'anonymous' && provider !== 'magic-url') return 'oauth';\n  \t            return null;\n  \t        },\n\n  \t        // Get OAuth provider name (google, github, etc.) or null for non-OAuth methods\n  \t        // Uses stored provider from loginOAuth() call, or falls back to session.provider\n  \t        // For existing sessions without stored provider, triggers async fetch from Appwrite identities\n  \t        getProvider() {\n  \t            if (!this.session) {\n  \t                return null;\n  \t            }\n  \t            const sessionProvider = this.session.provider;\n  \t            \n  \t            // For OAuth, return the stored provider name (google, github, etc.)\n  \t            // session.provider returns \"oauth2\" generically, so we use _oauthProvider\n  \t            if (sessionProvider && sessionProvider !== 'anonymous' && sessionProvider !== 'magic-url') {\n  \t                // Try to get from store first, then localStorage, then sessionStorage\n  \t                let provider = this._oauthProvider;\n  \t                if (!provider) {\n  \t                    try {\n  \t                        // Try localStorage first (persists across redirects)\n  \t                        provider = localStorage.getItem('indux:oauth:provider');\n  \t                        if (!provider) {\n  \t                            // Fallback to sessionStorage\n  \t                            provider = sessionStorage.getItem('indux:oauth:provider');\n  \t                        }\n  \t                        if (provider) {\n  \t                            this._oauthProvider = provider; // Cache it in store\n  \t                        }\n  \t                    } catch (e) {\n  \t                        // Storage error\n  \t                    }\n  \t                }\n  \t                \n  \t                // If still no provider, trigger async fetch from Appwrite identities (for existing sessions)\n  \t                // This runs in background and updates _oauthProvider when complete\n  \t                if (!provider && this._appwrite && this._appwrite.account && !this._fetchingProvider) {\n  \t                    this._fetchingProvider = true; // Prevent multiple simultaneous fetches\n  \t                    this._appwrite.account.listIdentities().then(identities => {\n  \t                        if (identities && identities.identities && identities.identities.length > 0) {\n  \t                            // Find OAuth identity (provider will be google, github, etc.)\n  \t                            const oauthIdentity = identities.identities.find(id => \n  \t                                id.provider && \n  \t                                id.provider !== 'anonymous' && \n  \t                                id.provider !== 'magic-url' &&\n  \t                                id.provider !== 'oauth2'\n  \t                            );\n  \t                            if (oauthIdentity && oauthIdentity.provider) {\n  \t                                this._oauthProvider = oauthIdentity.provider; // Cache it\n  \t                                // Store in localStorage for future use\n  \t                                try {\n  \t                                    localStorage.setItem('indux:oauth:provider', oauthIdentity.provider);\n  \t                                    // Trigger Alpine reactivity by accessing store\n  \t                                    const store = Alpine.store('auth');\n  \t                                    if (store) {\n  \t                                        void store._oauthProvider;\n  \t                                    }\n  \t                                } catch (e) {\n  \t                                    // Ignore storage errors\n  \t                                }\n  \t                            }\n  \t                        }\n  \t                        this._fetchingProvider = false;\n  \t                    }).catch(error => {\n  \t                        this._fetchingProvider = false;\n  \t                    });\n  \t                }\n  \t                \n  \t                const finalProvider = provider || sessionProvider;\n  \t                return finalProvider;\n  \t            }\n  \t            return null;\n  \t        },\n\n  \t        // Initialize auth state - simple session restoration\n  \t        async init() {\n  \t            if (this._initializing) {\n  \t                return;\n  \t            }\n  \t            \n  \t            if (this._initialized) {\n  \t                return;\n  \t            }\n\n  \t            this._initializing = true;\n  \t            this.inProgress = true;\n  \t            this.error = null;\n\n  \t            try {\n  \t                const appwrite = await config.getAppwriteClient();\n  \t                if (!appwrite) {\n  \t                    this._initialized = true;\n  \t                    this._initializing = false;\n  \t                    this.inProgress = false;\n  \t                    return;\n  \t                }\n\n  \t                this._appwrite = appwrite;\n\n  \t                // Get auth methods config from manifest\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                this._guestAuto = appwriteConfig?.guestAuto === true;\n  \t                this._guestManual = appwriteConfig?.guestManual === true;\n  \t                this.guestManualEnabled = appwriteConfig?.guestManual === true;\n\n  \t                // Try to restore existing session\n  \t                try {\n  \t                    this.user = await appwrite.account.get();\n  \t                    const sessionsResponse = await appwrite.account.listSessions();\n  \t                    const allSessions = sessionsResponse.sessions || [];\n  \t                    const currentSession = allSessions.find(s => s.current === true) || allSessions[0];\n  \t                    \n  \t                    if (currentSession) {\n  \t                        this.session = currentSession;\n  \t                        this.isAuthenticated = true;\n  \t                        this.isAnonymous = currentSession.provider === 'anonymous';\n  \t                        \n  \t                        // Restore OAuth provider from localStorage if available (persists across redirects)\n  \t                        // This ensures provider name persists across page refreshes\n  \t                        if (!this.isAnonymous && currentSession.provider !== 'magic-url') {\n  \t                            try {\n  \t                                // Try localStorage first (persists across redirects), fallback to sessionStorage\n  \t                                let storedProvider = localStorage.getItem('indux:oauth:provider');\n  \t                                if (!storedProvider) {\n  \t                                    storedProvider = sessionStorage.getItem('indux:oauth:provider');\n  \t                                }\n  \t                                if (storedProvider) {\n  \t                                    this._oauthProvider = storedProvider;\n  \t                                }\n  \t                            } catch (e) {\n  \t                                // Storage error\n  \t                            }\n  \t                        }\n  \t                        \n  \t                        // If guest is disabled but we have anonymous session, clear it\n  \t                        if (this.isAnonymous && !this._guestAuto && !this._guestManual) {\n  \t                            try {\n  \t                                await appwrite.account.deleteSession(this.session.$id);\n  \t                                this.isAuthenticated = false;\n  \t                                this.isAnonymous = false;\n  \t                                this.user = null;\n  \t                                this.session = null;\n  \t                            } catch (deleteError) {\n  \t                                // Failed to delete guest session\n  \t                            }\n  \t                        }\n  \t                    } else {\n  \t                        this.isAuthenticated = true; // User exists, session might be managed by cookies\n  \t                        this.isAnonymous = false;\n  \t                    }\n  \t                    \n  \t                    // Load teams if enabled and user is authenticated\n  \t                    if (this.isAuthenticated && appwriteConfig?.teams && this.listTeams) {\n  \t                        try {\n  \t                            await this.listTeams();\n  \t                            // Auto-create default teams if enabled\n  \t                            if ((appwriteConfig.permanentTeams || appwriteConfig.templateTeams) && window.InduxAppwriteAuthTeamsDefaults?.ensureDefaultTeams) {\n  \t                                await window.InduxAppwriteAuthTeamsDefaults.ensureDefaultTeams(this);\n  \t                            }\n  \t                        } catch (teamsError) {\n  \t                            // Don't fail initialization if teams fail to load\n  \t                        }\n  \t                    }\n  \t                } catch (error) {\n  \t                    // No existing session - this is expected\n  \t                    this.isAuthenticated = false;\n  \t                    this.isAnonymous = false;\n  \t                    this.user = null;\n  \t                    this.session = null;\n  \t                }\n\n  \t                // Sync state to localStorage\n  \t                syncStateToStorage(this);\n  \t            } catch (error) {\n  \t                this.error = error.message;\n  \t                this.isAuthenticated = false;\n  \t                this.isAnonymous = false;\n  \t            } finally {\n  \t                this.inProgress = false;\n  \t                this._initialized = true;\n  \t                this._initializing = false;\n\n  \t                // Dispatch initialized event - let callback handlers process after\n  \t                window.dispatchEvent(new CustomEvent('indux:auth:initialized', {\n  \t                    detail: {\n  \t                        isAuthenticated: this.isAuthenticated,\n  \t                        isAnonymous: this.isAnonymous\n  \t                    }\n  \t                }));\n  \t            }\n  \t        },\n\n  \t        // Manually create guest session (only works if guest-manual is enabled)\n  \t        async createGuest() {\n  \t            if (!this._guestManual) {\n  \t                return { success: false, error: 'Manual guest creation is not enabled' };\n  \t            }\n\n  \t            if (this.isAuthenticated && !this.isAnonymous) {\n  \t                return { success: false, error: 'Already signed in. Please logout first.' };\n  \t            }\n\n  \t            if (this.isAnonymous) {\n  \t                return { success: true, user: this.user, message: 'Already a guest' };\n  \t            }\n\n  \t            // Use the internal method if available, otherwise create it inline\n  \t            if (this._createAnonymousSession) {\n  \t                return await this._createAnonymousSession();\n  \t            }\n\n  \t            // Fallback: create anonymous session directly\n  \t            if (!this._appwrite) {\n  \t                this._appwrite = await config.getAppwriteClient();\n  \t            }\n  \t            if (!this._appwrite) {\n  \t                return { success: false, error: 'Appwrite not configured' };\n  \t            }\n\n  \t            this.inProgress = true;\n\n  \t            try {\n  \t                const session = await this._appwrite.account.createAnonymousSession();\n  \t                this.session = session;\n  \t                this.user = await this._appwrite.account.get();\n  \t                this.isAuthenticated = true;\n  \t                this.isAnonymous = true;\n  \t                this._oauthProvider = null;\n  \t                try {\n  \t                    localStorage.removeItem('indux:oauth:provider');\n  \t                    sessionStorage.removeItem('indux:oauth:provider');\n  \t                } catch (e) {\n  \t                    // Ignore\n  \t                }\n  \t                \n  \t                // Clear teams for guest sessions (guests don't have teams)\n  \t                this.teams = [];\n  \t                this.currentTeam = null;\n  \t                \n  \t                syncStateToStorage(this);\n  \t                window.dispatchEvent(new CustomEvent('indux:auth:anonymous', {\n  \t                    detail: { user: this.user }\n  \t                }));\n\n  \t                return { success: true, user: this.user };\n  \t            } catch (error) {\n  \t                this.error = error.message;\n  \t                this.isAuthenticated = false;\n  \t                this.isAnonymous = false;\n  \t                return { success: false, error: error.message };\n  \t            } finally {\n  \t                this.inProgress = false;\n  \t            }\n  \t        },\n\n  \t        // Convenience method: request guest session with automatic error handling\n  \t        async requestGuest() {\n  \t            const result = await this.createGuest();\n  \t            \n  \t            // Automatically handle errors\n  \t            if (!result.success) {\n  \t                this.error = result.error;\n  \t            } else {\n  \t                this.error = null;\n  \t            }\n  \t            \n  \t            return result;\n  \t        },\n\n  \t        // Logout from current session (works for both guest and authenticated sessions)\n  \t        async logout() {\n  \t            if (!this._appwrite) {\n  \t                return { success: false, error: 'Appwrite not configured' };\n  \t            }\n\n  \t            // If not authenticated, nothing to logout from\n  \t            if (!this.isAuthenticated) {\n  \t                return { success: true };\n  \t            }\n\n  \t            this.inProgress = true;\n\n  \t            try {\n  \t                // Delete current session (works for guest, magic link, and OAuth sessions)\n  \t                if (this.session) {\n  \t                    await this._appwrite.account.deleteSession(this.session.$id);\n  \t                }\n\n  \t                // Clear OAuth provider on logout\n  \t                this._oauthProvider = null;\n  \t                try {\n  \t                    localStorage.removeItem('indux:oauth:provider');\n  \t                    sessionStorage.removeItem('indux:oauth:provider');\n  \t                } catch (e) {\n  \t                    // Ignore\n  \t                }\n  \t                \n  \t                // Clear magic link flags\n  \t                this.magicLinkSent = false;\n  \t                this.magicLinkExpired = false;\n  \t                \n  \t                // Stop teams realtime subscription if active\n  \t                if (this.stopTeamsRealtime) {\n  \t                    this.stopTeamsRealtime();\n  \t                }\n  \t                \n  \t                // Stop teams polling if active (fallback)\n  \t                if (this.stopTeamsPolling) {\n  \t                    this.stopTeamsPolling();\n  \t                }\n  \t                \n  \t                // Clear teams on logout\n  \t                this.teams = [];\n  \t                this.currentTeam = null;\n  \t                \n  \t                // Clear deleted teams tracking for this user (optional - uncomment if you want to clear on logout)\n  \t                // try {\n  \t                //     const userId = this.user?.$id;\n  \t                //     if (userId) {\n  \t                //         localStorage.removeItem(`indux:deleted-teams:${userId}`);\n  \t                //     }\n  \t                // } catch (e) {\n  \t                //     // Ignore\n  \t                // }\n  \t                \n  \t                // Restore to guest state after logout (if guest-auto is enabled)\n  \t                // This only applies to non-guest sessions - if logging out from guest, don't create a new guest\n  \t                if (!this.isAnonymous && this._guestAuto && this._createAnonymousSession) {\n  \t                    await this._createAnonymousSession();\n  \t                } else {\n  \t                    // Clear auth state completely\n  \t                    this.isAuthenticated = false;\n  \t                    this.isAnonymous = false;\n  \t                    this.user = null;\n  \t                    this.session = null;\n  \t                }\n  \t                \n  \t                syncStateToStorage(this);\n  \t                window.dispatchEvent(new CustomEvent('indux:auth:logout'));\n  \t                return { success: true };\n  \t            } catch (error) {\n  \t                this.error = error.message;\n  \t                // If guest-auto is enabled and we were logged out from a non-guest session, try to restore guest\n  \t                if (!this.isAnonymous && this._guestAuto && this._createAnonymousSession) {\n  \t                    try {\n  \t                        await this._createAnonymousSession();\n  \t                    } catch (guestError) {\n  \t                        // Fall through to clear state\n  \t                        this.isAuthenticated = false;\n  \t                        this.isAnonymous = false;\n  \t                        this.user = null;\n  \t                        this.session = null;\n  \t                    }\n  \t                } else {\n  \t                    // Clear auth state completely\n  \t                    this.isAuthenticated = false;\n  \t                    this.isAnonymous = false;\n  \t                    this.user = null;\n  \t                    this.session = null;\n  \t                }\n  \t                // Stop teams realtime subscription if active\n  \t                if (this.stopTeamsRealtime) {\n  \t                    this.stopTeamsRealtime();\n  \t                }\n  \t                \n  \t                // Stop teams polling if active (fallback)\n  \t                if (this.stopTeamsPolling) {\n  \t                    this.stopTeamsPolling();\n  \t                }\n  \t                \n  \t                // Clear teams on logout error too\n  \t                this.teams = [];\n  \t                this.currentTeam = null;\n  \t                return { success: false, error: error.message };\n  \t            } finally {\n  \t                this.inProgress = false;\n  \t            }\n  \t        },\n\n  \t        // Clear current session\n  \t        async clearSession() {\n  \t            if (!this._appwrite) {\n  \t                return { success: false, error: 'Appwrite not configured' };\n  \t            }\n\n  \t            this.inProgress = true;\n\n  \t            try {\n  \t                if (this.session) {\n  \t                    await this._appwrite.account.deleteSession(this.session.$id);\n  \t                }\n\n  \t                this.isAuthenticated = false;\n  \t                this.isAnonymous = false;\n  \t                this.user = null;\n  \t                this.session = null;\n  \t                this.magicLinkSent = false;\n  \t                this.magicLinkExpired = false;\n  \t                this.error = null;\n  \t                this._oauthProvider = null;\n  \t                \n  \t                // Clear teams\n  \t                this.teams = [];\n  \t                this.currentTeam = null;\n  \t                \n  \t                // Clear OAuth provider from storage\n  \t                try {\n  \t                    localStorage.removeItem('indux:oauth:provider');\n  \t                    sessionStorage.removeItem('indux:oauth:provider');\n  \t                } catch (e) {\n  \t                    // Ignore\n  \t                }\n  \t                \n  \t                syncStateToStorage(this);\n  \t                window.dispatchEvent(new CustomEvent('indux:auth:session-cleared'));\n  \t                return { success: true };\n  \t            } catch (error) {\n  \t                this.error = error.message;\n  \t                this.isAuthenticated = false;\n  \t                this.isAnonymous = false;\n  \t                this.user = null;\n  \t                this.session = null;\n  \t                this.magicLinkSent = false;\n  \t                this.magicLinkExpired = false;\n  \t                return { success: false, error: error.message };\n  \t            } finally {\n  \t                this.inProgress = false;\n  \t            }\n  \t        },\n\n  \t        // Refresh user data\n  \t        async refresh() {\n  \t            if (!this._appwrite) {\n  \t                throw new Error('Appwrite not configured');\n  \t            }\n\n  \t            try {\n  \t                this.user = await this._appwrite.account.get();\n  \t                syncStateToStorage(this);\n  \t                return this.user;\n  \t            } catch (error) {\n  \t                // Session may have expired\n  \t                this.isAuthenticated = false;\n  \t                this.isAnonymous = false;\n  \t                this.user = null;\n  \t                this.session = null;\n  \t                syncStateToStorage(this);\n  \t                throw error;\n  \t            }\n  \t        }\n  \t    };\n  \t    \n  \t    Alpine.store('auth', authStore);\n  \t}\n\n  \t// Initialize when Alpine is ready\n  \tdocument.addEventListener('alpine:init', () => {\n  \t    try {\n  \t        initializeAuthStore();\n  \t    } catch (error) {\n  \t        // Failed to initialize store\n  \t    }\n  \t});\n\n  \t// Export store interface\n  \twindow.InduxAppwriteAuthStore = {\n  \t    initialize: initializeAuthStore\n  \t};\n\n  \t/* Auth main */\n\n  \t// Initialize auth plugin - orchestrates all modules\n  \tlet _pluginInitializing = false;\n  \tasync function initializeAppwriteAuthPlugin() {\n  \t    if (_pluginInitializing) {\n  \t        return;\n  \t    }\n\n  \t    // Wait for dependencies\n  \t    if (!window.InduxAppwriteAuthConfig) {\n  \t        return;\n  \t    }\n\n  \t    if (typeof Alpine === 'undefined') {\n  \t        return;\n  \t    }\n\n  \t    _pluginInitializing = true;\n\n  \t    // Wait for store to be ready\n  \t    const waitForStore = () => {\n  \t        const store = Alpine.store('auth');\n  \t        if (store) {\n  \t            // Initialize store first\n  \t            if (!store._initialized && !store._initializing) {\n  \t                store.init();\n  \t            }\n  \t            \n  \t            // After store init, process callbacks and validate config\n  \t            window.addEventListener('indux:auth:initialized', async () => {\n  \t                // Validate role configuration if roles module is loaded\n  \t                if (store.validateRoleConfig) {\n  \t                    const validation = await store.validateRoleConfig();\n  \t                    if (!validation.valid) ; else if (validation.warnings && validation.warnings.length > 0) ;\n  \t                }\n  \t                \n  \t                // Process callbacks after store is initialized\n  \t                if (window.InduxAppwriteAuthCallbacks) {\n  \t                    const callbackInfo = window.InduxAppwriteAuthCallbacks.detect();\n  \t                    if (callbackInfo.hasCallback || callbackInfo.hasExpired) {\n  \t                        window.InduxAppwriteAuthCallbacks.process(callbackInfo);\n  \t                    }\n  \t                }\n  \t                \n  \t                // If no session and guest-auto is enabled, create guest session\n  \t                if (!store.isAuthenticated && store._guestAuto && store._createAnonymousSession) {\n  \t                    store._createAnonymousSession();\n  \t                }\n  \t            }, { once: true });\n  \t            \n  \t            _pluginInitializing = false;\n  \t        } else {\n  \t            setTimeout(waitForStore, 50);\n  \t        }\n  \t    };\n\n  \t    // Start waiting after a short delay\n  \t    setTimeout(waitForStore, 150);\n  \t}\n\n  \t// Handle initialization\n  \tif (document.readyState === 'loading') {\n  \t    document.addEventListener('DOMContentLoaded', () => {\n  \t        if (window.Alpine) initializeAppwriteAuthPlugin();\n  \t    });\n  \t}\n\n  \tdocument.addEventListener('alpine:init', initializeAppwriteAuthPlugin);\n\n  \t// Export main interface\n  \twindow.InduxAppwriteAuth = {\n  \t    initialize: initializeAppwriteAuthPlugin\n  \t};\n\n  \t/* Auth frontend */\n\n  \t// Initialize $auth magic method\n  \tfunction initializeAuthMagic() {\n  \t    if (typeof Alpine === 'undefined') {\n  \t        return false;\n  \t    }\n\n  \t    // Add $auth magic method (like $locale, $theme)\n  \t    Alpine.magic('auth', () => {\n  \t        const store = Alpine.store('auth');\n  \t        if (!store) {\n  \t            return {};\n  \t        }\n  \t        \n  \t        return new Proxy({}, {\n  \t            get(target, prop) {\n  \t                // Handle special keys\n  \t                if (prop === Symbol.iterator || prop === 'then' || prop === 'catch' || prop === 'finally') {\n  \t                    return undefined;\n  \t                }\n\n  \t                // Direct store property access\n  \t                if (prop in store) {\n  \t                    const value = store[prop];\n  \t                    // If it's a function, bind it to store context\n  \t                    if (typeof value === 'function') {\n  \t                        return value.bind(store);\n  \t                    }\n  \t                    return value;\n  \t                }\n  \t                \n  \t                // Special handling for computed properties\n  \t                if (prop === 'method') {\n  \t                    return store.getMethod();\n  \t                }\n  \t                \n  \t                if (prop === 'provider') {\n  \t                    // getProvider() is synchronous but may trigger async fetch in background\n  \t                    return store.getProvider();\n  \t                }\n  \t                \n  \t                return undefined;\n  \t            },\n  \t            set(target, prop, value) {\n  \t                // Forward assignments to the store for two-way binding (x-model)\n  \t                if (prop in store) {\n  \t                    store[prop] = value;\n  \t                    return true;\n  \t                }\n  \t                // Allow setting new properties (though they won't persist)\n  \t                target[prop] = value;\n  \t                return true;\n  \t            }\n  \t        });\n  \t    });\n  \t    \n  \t    return true;\n  \t}\n\n  \t// Handle both DOMContentLoaded and alpine:init\n  \tif (document.readyState === 'loading') {\n  \t    document.addEventListener('DOMContentLoaded', () => {\n  \t        if (window.Alpine) {\n  \t            initializeAuthMagic();\n  \t        }\n  \t    });\n  \t}\n\n  \tdocument.addEventListener('alpine:init', () => {\n  \t    try {\n  \t        initializeAuthMagic();\n  \t    } catch (error) {\n  \t        // Failed to initialize magic method\n  \t    }\n  \t});\n\n  \t// Also try immediately if Alpine is already available\n  \tif (typeof Alpine !== 'undefined') {\n  \t    try {\n  \t        initializeAuthMagic();\n  \t    } catch (error) {\n  \t        // Alpine might not be fully initialized yet, that's okay\n  \t    }\n  \t}\n\n  \t// Export magic interface\n  \twindow.InduxAppwriteAuthMagic = {\n  \t    initialize: initializeAuthMagic\n  \t};\n\n  \t/* Auth teams - Core operations */\n\n  \t// Add core team methods to auth store\n  \tfunction initializeTeamsCore() {\n  \t    if (typeof Alpine === 'undefined') {\n  \t        return;\n  \t    }\n\n  \t    const config = window.InduxAppwriteAuthConfig;\n  \t    if (!config) {\n  \t        return;\n  \t    }\n\n  \t    // Wait for store to be initialized\n  \t    const waitForStore = () => {\n  \t        const store = Alpine.store('auth');\n  \t        if (store && !store.createTeam) {\n  \t            // Team creation\n  \t            store.createTeam = async function(teamId, name, roles = []) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                // Check if teams are enabled\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                if (appwriteConfig && !appwriteConfig.teams) {\n  \t                    return { success: false, error: 'Teams are not enabled' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    return { success: false, error: 'You must be signed in to create a team' };\n  \t                }\n\n  \t                this.inProgress = true;\n  \t                this.error = null;\n\n  \t                try {\n  \t                    // Generate unique teamId if not provided\n  \t                    let finalTeamId = teamId;\n  \t                    if (!finalTeamId) {\n  \t                        if (window.Appwrite && window.Appwrite.ID && window.Appwrite.ID.unique) {\n  \t                            finalTeamId = window.Appwrite.ID.unique();\n  \t                        } else {\n  \t                            finalTeamId = 'team_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    // Determine initial roles for team creator\n  \t                    let creatorRoles = roles;\n  \t                    if (creatorRoles.length === 0) {\n  \t                        // If no roles specified, use creatorRole from config\n  \t                        const memberRoles = appwriteConfig?.memberRoles;\n  \t                        const creatorRoleName = appwriteConfig?.creatorRole;\n  \t                        \n  \t                        if (memberRoles && creatorRoleName && memberRoles[creatorRoleName]) {\n  \t                            // Use specified creatorRole\n  \t                            creatorRoles = [creatorRoleName];\n  \t                        } else if (memberRoles && Object.keys(memberRoles).length > 0) {\n  \t                            // No creatorRole specified, find role with all owner permissions or use first\n  \t                            let foundRole = null;\n  \t                            for (const [roleName, permissions] of Object.entries(memberRoles)) {\n  \t                                if (this.roleHasAllOwnerPermissions && await this.roleHasAllOwnerPermissions(roleName)) {\n  \t                                    foundRole = roleName;\n  \t                                    break;\n  \t                                }\n  \t                            }\n  \t                            // If no role has all permissions, use first role\n  \t                            creatorRoles = [foundRole || Object.keys(memberRoles)[0]];\n  \t                        } else {\n  \t                            // No memberRoles defined - use Appwrite default (owner)\n  \t                            creatorRoles = ['owner'];\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    // Normalize custom roles for Appwrite (add \"owner\" if needed)\n  \t                    if (this.normalizeRolesForAppwrite) {\n  \t                        creatorRoles = await this.normalizeRolesForAppwrite(creatorRoles);\n  \t                    }\n  \t                    \n  \t                    const result = await this._appwrite.teams.create(finalTeamId, name, creatorRoles);\n\n  \t                    // Apply default roles to the newly created team\n  \t                    if (window.InduxAppwriteAuthTeamsRolesDefaults && this.ensureDefaultRoles) {\n  \t                        await this.ensureDefaultRoles(finalTeamId);\n  \t                    }\n\n  \t                    // Refresh teams list\n  \t                    await this.listTeams();\n\n  \t                    return { success: true, team: result };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                } finally {\n  \t                    this.inProgress = false;\n  \t                }\n  \t            };\n\n  \t            // List user's teams\n  \t            store.listTeams = async function(queries = [], search = '') {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    console.warn('[Indux Appwrite Auth] listTeams: User not authenticated');\n  \t                    return { success: false, error: 'You must be signed in to list teams' };\n  \t                }\n\n  \t                try {\n  \t                    const params = {\n  \t                        queries: queries\n  \t                    };\n  \t                    if (search && search.trim().length > 0) {\n  \t                        params.search = search;\n  \t                    }\n  \t                    const result = await this._appwrite.teams.list(params);\n\n  \t                    // Update store with teams\n  \t                    this.teams = result.teams || [];\n  \t                    \n  \t                    // Update currentTeam if it exists and was updated\n  \t                    if (this.currentTeam && this.currentTeam.$id) {\n  \t                        const updatedCurrentTeam = this.teams?.find(t => t.$id === this.currentTeam.$id);\n  \t                        if (updatedCurrentTeam) {\n  \t                            // Only update if name changed (to avoid unnecessary reactivity triggers)\n  \t                            if (updatedCurrentTeam.name !== this.currentTeam.name) {\n  \t                                this.currentTeam = { ...updatedCurrentTeam };\n  \t                            }\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    // Cache immutable status for all teams (if defaults module is loaded)\n  \t                    if (window.InduxAppwriteAuthTeamsDefaults && this.isTeamImmutable) {\n  \t                        for (const team of this.teams) {\n  \t                            if (!this._teamImmutableCache[team.$id]) {\n  \t                                this._teamImmutableCache[team.$id] = await this.isTeamImmutable(team.$id);\n  \t                            }\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    // Load deleted template teams (if defaults module is loaded)\n  \t                    if (window.InduxAppwriteAuthTeamsDefaults && this.getDeletedTemplateTeams) {\n  \t                        this.deletedTemplateTeams = await this.getDeletedTemplateTeams();\n  \t                    }\n  \t                    \n  \t                    // Clean up duplicate default teams (permanent/template) if any exist\n  \t                    if (window.InduxAppwriteAuthTeamsDefaults && this.cleanupDuplicateDefaultTeams) {\n  \t                        const cleanupResult = await this.cleanupDuplicateDefaultTeams();\n  \t                        if (cleanupResult.cleaned > 0) {\n  \t                            if (cleanupResult.errors && cleanupResult.errors.length > 0) {\n  \t                                console.warn('[Indux Appwrite Auth] Some duplicate teams could not be deleted:', cleanupResult.errors);\n  \t                            }\n  \t                            // Refresh teams list after cleanup\n  \t                            if (this.listTeams) {\n  \t                                await this.listTeams();\n  \t                            }\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    // Load deleted template roles for current team (if roles defaults module is loaded)\n  \t                    if (this.currentTeam && this.currentTeam.$id && window.InduxAppwriteAuthTeamsRolesDefaults && this.getDeletedTemplateRoles) {\n  \t                        this.deletedTemplateRoles = await this.getDeletedTemplateRoles(this.currentTeam.$id);\n  \t                    }\n  \t                    \n  \t                    // Set currentTeam to first default team if available and not already set\n  \t                    if (!this.currentTeam && this.teams.length > 0) {\n  \t                        const appwriteConfig = await config.getAppwriteConfig();\n  \t                        const hasDefaultTeams = (appwriteConfig?.permanentTeams && Array.isArray(appwriteConfig.permanentTeams) && appwriteConfig.permanentTeams.length > 0) ||\n  \t                                               (appwriteConfig?.templateTeams && Array.isArray(appwriteConfig.templateTeams) && appwriteConfig.templateTeams.length > 0);\n  \t                        \n  \t                        if (hasDefaultTeams && window.InduxAppwriteAuthTeamsDefaults && this.getDefaultTeams) {\n  \t                            const defaultTeams = await this.getDefaultTeams();\n  \t                            if (defaultTeams.length > 0) {\n  \t                                this.currentTeam = defaultTeams[0];\n  \t                            } else {\n  \t                                this.currentTeam = this.teams[0];\n  \t                            }\n  \t                        } else {\n  \t                            this.currentTeam = this.teams[0];\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    // Auto-load memberships for current team (if members module is loaded)\n  \t                    if (this.currentTeam && this.currentTeam.$id && window.InduxAppwriteAuthTeamsMembers && this.listMemberships) {\n  \t                        try {\n  \t                            const membershipsResult = await this.listMemberships(this.currentTeam.$id);\n  \t                            if (membershipsResult.success) {\n  \t                                this.currentTeamMemberships = membershipsResult.memberships || [];\n  \t                            }\n  \t                        } catch (error) {\n  \t                            // Silently handle errors (e.g., team was deleted)\n  \t                            // listMemberships already handles \"team not found\" gracefully\n  \t                            this.currentTeamMemberships = [];\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    // Start teams realtime subscription if available (only if not already subscribed)\n  \t                    // Also skip if we're in the middle of a realtime-triggered refresh\n  \t                    // Check for any truthy value (function, object, or true flag)\n  \t                    if (!this._teamsRealtimeUnsubscribe && !this._teamsRealtimeSubscribing) {\n  \t                        const appwriteConfig = await config.getAppwriteConfig();\n  \t                        if (this._appwrite?.realtime && this.startTeamsRealtime) {\n  \t                            this.startTeamsRealtime();\n  \t                        } else if (appwriteConfig?.teamsPollInterval && typeof appwriteConfig.teamsPollInterval === 'number' && appwriteConfig.teamsPollInterval > 0) {\n  \t                            // Fallback to polling if realtime not available\n  \t                            console.warn('[Indux Appwrite Auth] Realtime not available, falling back to polling');\n  \t                            if (this.startTeamsPolling) {\n  \t                                this.startTeamsPolling(appwriteConfig.teamsPollInterval);\n  \t                            }\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    return { success: true, teams: result.teams || [], total: result.total || 0 };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                }\n  \t            };\n\n  \t            // Get team by ID\n  \t            store.getTeam = async function(teamId) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    return { success: false, error: 'You must be signed in to get team details' };\n  \t                }\n\n  \t                try {\n  \t                    const result = await this._appwrite.teams.get({\n  \t                        teamId: teamId\n  \t                    });\n\n  \t                    return { success: true, team: result };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                }\n  \t            };\n\n  \t            // Update team name\n  \t            store.updateTeamName = async function(teamId, name) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    return { success: false, error: 'You must be signed in to update team name' };\n  \t                }\n\n  \t                if (!teamId) {\n  \t                    return { success: false, error: 'Team ID is required' };\n  \t                }\n\n  \t                if (!name || !name.trim()) {\n  \t                    return { success: false, error: 'Team name is required' };\n  \t                }\n\n  \t                this.inProgress = true;\n  \t                this.error = null;\n\n  \t                try {\n  \t                    const result = await this._appwrite.teams.updateName(teamId, name.trim());\n  \t                    \n  \t                    // Use the result directly (it has the updated name from Appwrite)\n  \t                    const updatedTeam = result;\n\n  \t                    // Refresh teams list (this will update the teams array)\n  \t                    await this.listTeams();\n  \t                    \n  \t                    // Update currentTeam reference if it was the updated team\n  \t                    // Reassign the entire object to trigger Alpine reactivity\n  \t                    if (this.currentTeam && this.currentTeam.$id === teamId) {\n  \t                        // Use the result from Appwrite, or find it from the refreshed teams list\n  \t                        const refreshedTeam = this.teams?.find(t => t.$id === teamId) || updatedTeam;\n  \t                        \n  \t                        if (refreshedTeam) {\n  \t                            // Force Alpine reactivity by creating a new object reference\n  \t                            // Alpine needs to see a new reference to trigger updates\n  \t                            this.currentTeam = { ...refreshedTeam };\n  \t                            \n  \t                            // Also update the teams array reference in case it's being watched\n  \t                            const teamIndex = this.teams?.findIndex(t => t.$id === teamId);\n  \t                            if (teamIndex !== undefined && teamIndex >= 0 && this.teams) {\n  \t                                // Create new array to trigger reactivity\n  \t                                this.teams = [\n  \t                                    ...this.teams.slice(0, teamIndex),\n  \t                                    { ...refreshedTeam },\n  \t                                    ...this.teams.slice(teamIndex + 1)\n  \t                                ];\n  \t                            }\n  \t                            \n  \t                            // Use Alpine's nextTick if available to ensure reactivity is triggered\n  \t                            if (typeof Alpine !== 'undefined' && Alpine.nextTick) {\n  \t                                Alpine.nextTick(() => {\n  \t                                    // Ensure the update is visible\n  \t                                    this.currentTeam = refreshedTeam;\n  \t                                });\n  \t                            }\n  \t                        }\n  \t                    }\n\n  \t                    return { success: true, team: updatedTeam };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                } finally {\n  \t                    this.inProgress = false;\n  \t                }\n  \t            };\n\n  \t            // Delete team\n  \t            store.deleteTeam = async function(teamId) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    return { success: false, error: 'You must be signed in to delete a team' };\n  \t                }\n\n  \t                // Check if team is immutable\n  \t                if (this.isTeamImmutable) {\n  \t                    const isImmutable = await this.isTeamImmutable(teamId);\n  \t                    if (isImmutable) {\n  \t                        return { success: false, error: 'This team cannot be deleted' };\n  \t                    }\n  \t                }\n\n  \t                this.inProgress = true;\n  \t                this.error = null;\n\n  \t                try {\n  \t                    // Get team name before deletion (for tracking)\n  \t                    const team = this.teams?.find(t => t.$id === teamId);\n  \t                    const teamName = team?.name;\n  \t                    \n  \t                    await this._appwrite.teams.delete({\n  \t                        teamId: teamId\n  \t                    });\n\n  \t                    // Track deleted template team (don't recreate it, but allow reapplying)\n  \t                    if (teamName && window.InduxAppwriteAuthTeamsDefaults) {\n  \t                        const config = await window.InduxAppwriteAuthConfig.getAppwriteConfig();\n  \t                        if (config?.templateTeams && Array.isArray(config.templateTeams)) {\n  \t                            const resolvePersonalTeamName = window.InduxAppwriteAuthTeamsDefaults.resolvePersonalTeamName;\n  \t                            // Check if this was a template team\n  \t                            for (const nameConfig of config.templateTeams) {\n  \t                                const resolvedName = await resolvePersonalTeamName(nameConfig);\n  \t                                if (resolvedName === teamName) {\n  \t                                    // Store deletion in localStorage (keyed by user ID)\n  \t                                    try {\n  \t                                        const userId = this.user?.$id;\n  \t                                        if (userId) {\n  \t                                            const key = `indux:deleted-teams:${userId}`;\n  \t                                            const deleted = JSON.parse(localStorage.getItem(key) || '[]');\n  \t                                            if (!deleted.includes(teamName)) {\n  \t                                                deleted.push(teamName);\n  \t                                                localStorage.setItem(key, JSON.stringify(deleted));\n  \t                                            }\n  \t                                        }\n  \t                                    } catch (e) {\n  \t                                        console.warn('[Indux Appwrite Auth] Failed to track deleted team:', e);\n  \t                                    }\n  \t                                    break;\n  \t                                }\n  \t                            }\n  \t                        }\n  \t                    }\n\n  \t                    // Clear current team if it was deleted (before refreshing list to avoid loading memberships for deleted team)\n  \t                    if (this.currentTeam && this.currentTeam.$id === teamId) {\n  \t                        this.currentTeam = null;\n  \t                        this.currentTeamMemberships = [];\n  \t                    }\n\n  \t                    // Refresh teams list\n  \t                    await this.listTeams();\n\n  \t                    return { success: true };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                } finally {\n  \t                    this.inProgress = false;\n  \t                }\n  \t            };\n\n  \t            // Get team preferences\n  \t            store.getTeamPrefs = async function(teamId) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    return { success: false, error: 'You must be signed in to get team preferences' };\n  \t                }\n\n  \t                try {\n  \t                    const result = await this._appwrite.teams.getPrefs({\n  \t                        teamId: teamId\n  \t                    });\n\n  \t                    return { success: true, prefs: result };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                }\n  \t            };\n\n  \t            // Start realtime subscription for all auth entities (teams, memberships, account, roles/permissions)\n  \t            store.startTeamsRealtime = function() {\n  \t                // Don't subscribe if already subscribed (check for function, object, array, or true flag)\n  \t                if (this._teamsRealtimeUnsubscribe) {\n  \t                    return;\n  \t                }\n  \t                \n  \t                // Only subscribe if authenticated and realtime is available\n  \t                if (!this.isAuthenticated || !this._appwrite?.realtime) {\n  \t                    return;\n  \t                }\n  \t                \n  \t                try {\n  \t                    // Subscribe to teams channel (covers: team create/update/delete, team preferences/roles)\n  \t                    const teamsSubscription = this._appwrite.realtime.subscribe('teams', (response) => {\n  \t                        // Prevent recursive subscription (don't subscribe again when refreshing)\n  \t                        if (this._teamsRealtimeSubscribing) {\n  \t                            return;\n  \t                        }\n  \t                        \n  \t                        // Handle different event types\n  \t                        if (response.events && Array.isArray(response.events)) {\n  \t                            let shouldRefreshTeams = false;\n  \t                            \n  \t                            for (const event of response.events) {\n  \t                                // Event format can be: \"teams.update\", \"teams.create\", \"teams.delete\", \n  \t                                // \"teams.{teamId}\", \"teams *\", etc.\n  \t                                const parts = event.split(/[.\\s]+/);\n  \t                                const eventType = parts[0]; // 'teams', etc.\n  \t                                const action = parts[1]; // 'update', 'create', 'delete', or teamId\n  \t                                \n  \t                                if (eventType === 'teams') {\n  \t                                    // Check if it's an action (update, create, delete) or a team-specific event\n  \t                                    // Note: team preferences (roles/permissions) updates trigger teams.update\n  \t                                    if (action === 'update' || action === 'create' || action === 'delete' || action === '*') {\n  \t                                        shouldRefreshTeams = true;\n  \t                                    } else if (action && action.length > 10) {\n  \t                                        // Likely a teamId (Appwrite IDs are long), treat as update\n  \t                                        shouldRefreshTeams = true;\n  \t                                    }\n  \t                                }\n  \t                            }\n  \t                            \n  \t                            // Refresh teams list if needed (only once per event batch)\n  \t                            // This also refreshes roles/permissions since they're stored in team preferences\n  \t                            if (shouldRefreshTeams && !this._teamsRealtimeSubscribing) {\n  \t                                this._teamsRealtimeSubscribing = true;\n  \t                                if (this.listTeams) {\n  \t                                    this.listTeams().finally(() => {\n  \t                                        this._teamsRealtimeSubscribing = false;\n  \t                                    });\n  \t                                } else {\n  \t                                    this._teamsRealtimeSubscribing = false;\n  \t                                }\n  \t                            }\n  \t                        }\n  \t                    });\n  \t                    \n  \t                    // Subscribe to memberships channel (covers: invite, accept, update roles, delete)\n  \t                    // Also subscribe to team-specific membership channels for better reactivity\n  \t                    const membershipsSubscription = this._appwrite.realtime.subscribe('memberships', (response) => {\n  \t                        // Prevent recursive subscription\n  \t                        if (this._teamsRealtimeSubscribing) {\n  \t                            return;\n  \t                        }\n  \t                        \n  \t                        if (response.events && Array.isArray(response.events)) {\n  \t                            let shouldRefreshMemberships = false;\n  \t                            let affectedTeamId = null;\n  \t                            \n  \t                            // First, check payload for teamId (most reliable source)\n  \t                            if (response.payload) {\n  \t                                // Check various possible payload structures\n  \t                                if (response.payload.teamId) {\n  \t                                    affectedTeamId = response.payload.teamId;\n  \t                                } else if (response.payload.team && response.payload.team.$id) {\n  \t                                    affectedTeamId = response.payload.team.$id;\n  \t                                } else if (response.payload.membership && response.payload.membership.teamId) {\n  \t                                    affectedTeamId = response.payload.membership.teamId;\n  \t                                }\n  \t                            }\n  \t                            \n  \t                            for (const event of response.events) {\n  \t                                // Handle different event formats:\n  \t                                // - \"memberships.update\" (legacy format)\n  \t                                // - \"memberships.delete\" (legacy format)\n  \t                                // - \"teams.{teamId}.memberships.{membershipId}.delete\" (current format)\n  \t                                // - \"teams.*.memberships.*.delete\" (wildcard format)\n  \t                                // - \"teams.{teamId}.memberships.*\" (team-specific wildcard)\n  \t                                const parts = event.split(/[.\\s]+/);\n  \t                                const eventType = parts[0]; // 'teams' or 'memberships'\n  \t                                \n  \t                                // Check for both legacy format (memberships.*) and current format (teams.*.memberships.*)\n  \t                                if (eventType === 'memberships') {\n  \t                                    // Legacy format: \"memberships.update\", \"memberships.delete\", etc.\n  \t                                    const action = parts[1];\n  \t                                    \n  \t                                    // Check if second part is a teamId (long alphanumeric string)\n  \t                                    const possibleTeamId = parts[1];\n  \t                                    if (possibleTeamId && possibleTeamId.length > 10 && /^[a-f0-9]+$/i.test(possibleTeamId)) {\n  \t                                        // This is a team-specific event\n  \t                                        if (!affectedTeamId) {\n  \t                                            affectedTeamId = possibleTeamId;\n  \t                                        }\n  \t                                        const actionFromTeamId = parts[2];\n  \t                                        if (actionFromTeamId === 'create' || actionFromTeamId === 'update' || actionFromTeamId === 'delete' || actionFromTeamId === '*' || !actionFromTeamId) {\n  \t                                            shouldRefreshMemberships = true;\n  \t                                        }\n  \t                                    } else if (action === 'create' || action === 'update' || action === 'delete' || action === '*') {\n  \t                                        // Global membership event\n  \t                                        shouldRefreshMemberships = true;\n  \t                                    }\n  \t                                } else if (eventType === 'teams' && parts.length >= 3 && parts[2] === 'memberships') {\n  \t                                    // Current format: \"teams.{teamId}.memberships.{membershipId}.delete\"\n  \t                                    // or \"teams.*.memberships.*.delete\"\n  \t                                    const teamIdPart = parts[1]; // teamId or '*'\n  \t                                    const membershipIdPart = parts[3]; // membershipId or '*'\n  \t                                    const action = parts[4]; // 'create', 'update', 'delete', or undefined\n  \t                                    \n  \t                                    // Extract teamId if it's not a wildcard\n  \t                                    if (teamIdPart && teamIdPart !== '*' && teamIdPart.length > 10 && /^[a-f0-9]+$/i.test(teamIdPart)) {\n  \t                                        if (!affectedTeamId) {\n  \t                                            affectedTeamId = teamIdPart;\n  \t                                        }\n  \t                                    }\n  \t                                    \n  \t                                    // Check if this is a create, update, or delete action\n  \t                                    if (action === 'create' || action === 'update' || action === 'delete' || action === '*' || !action) {\n  \t                                        shouldRefreshMemberships = true;\n  \t                                    }\n  \t                                }\n  \t                            }\n  \t                            \n  \t                            // Refresh memberships for current team if viewing one\n  \t                            // This ensures the UI updates immediately when a member is updated/deleted\n  \t                            if (shouldRefreshMemberships) {\n  \t                                // If we know which team was affected, only refresh if it's the current team\n  \t                                // Otherwise, refresh for current team if viewing one\n  \t                                const shouldRefreshCurrentTeam = !affectedTeamId || \n  \t                                    (this.currentTeam && this.currentTeam.$id === affectedTeamId);\n  \t                                \n  \t                                if (shouldRefreshCurrentTeam && this.currentTeam && this.currentTeam.$id && this.listMemberships) {\n  \t                                    // Use async/await to ensure memberships are refreshed\n  \t                                    this.listMemberships(this.currentTeam.$id).then((result) => {\n  \t                                        // Force reactivity by ensuring new array reference\n  \t                                        if (this.currentTeamMemberships) {\n  \t                                            this.currentTeamMemberships = [...this.currentTeamMemberships];\n  \t                                        }\n  \t                                    }).catch(err => {\n  \t                                        // Failed to refresh memberships after realtime event\n  \t                                    });\n  \t                                }\n  \t                                \n  \t                                // Also refresh teams list (membership changes affect team member counts)\n  \t                                if (!this._teamsRealtimeSubscribing) {\n  \t                                    this._teamsRealtimeSubscribing = true;\n  \t                                    if (this.listTeams) {\n  \t                                        this.listTeams().finally(() => {\n  \t                                            this._teamsRealtimeSubscribing = false;\n  \t                                        });\n  \t                                    } else {\n  \t                                        this._teamsRealtimeSubscribing = false;\n  \t                                    }\n  \t                                }\n  \t                            }\n  \t                        }\n  \t                    });\n  \t                    \n  \t                    // Subscribe to account channel (covers: user profile updates, account status changes)\n  \t                    const accountSubscription = this._appwrite.realtime.subscribe('account', (response) => {\n  \t                        if (response.events && Array.isArray(response.events)) {\n  \t                            let shouldRefreshUser = false;\n  \t                            \n  \t                            for (const event of response.events) {\n  \t                                const parts = event.split(/[.\\s]+/);\n  \t                                const eventType = parts[0]; // 'account'\n  \t                                const action = parts[1]; // 'update', 'delete', etc.\n  \t                                \n  \t                                if (eventType === 'account') {\n  \t                                    if (action === 'update' || action === 'delete' || action === '*') {\n  \t                                        shouldRefreshUser = true;\n  \t                                    }\n  \t                                }\n  \t                            }\n  \t                            \n  \t                            // Refresh user data if account was updated\n  \t                            if (shouldRefreshUser && this.getAccount) {\n  \t                                this.getAccount();\n  \t                            }\n  \t                        }\n  \t                    });\n  \t                    \n  \t                    // Store unsubscribe functions/objects\n  \t                    const subscriptions = [teamsSubscription, membershipsSubscription, accountSubscription];\n  \t                    const unsubscribeFunctions = [];\n  \t                    \n  \t                    for (const sub of subscriptions) {\n  \t                        if (typeof sub === 'function') {\n  \t                            unsubscribeFunctions.push(sub);\n  \t                        } else if (sub && typeof sub.unsubscribe === 'function') {\n  \t                            unsubscribeFunctions.push(() => sub.unsubscribe());\n  \t                        } else if (sub) {\n  \t                            unsubscribeFunctions.push(sub);\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    // Store as array if multiple, or single value if only one\n  \t                    if (unsubscribeFunctions.length > 1) {\n  \t                        this._teamsRealtimeUnsubscribe = unsubscribeFunctions;\n  \t                    } else if (unsubscribeFunctions.length === 1) {\n  \t                        this._teamsRealtimeUnsubscribe = unsubscribeFunctions[0];\n  \t                    } else {\n  \t                        this._teamsRealtimeUnsubscribe = true; // Mark as subscribed\n  \t                    }\n  \t                } catch (error) {\n  \t                    // Failed to start realtime subscriptions\n  \t                }\n  \t            };\n  \t            \n  \t            // Stop realtime subscriptions\n  \t            store.stopTeamsRealtime = function() {\n  \t                if (!this._teamsRealtimeUnsubscribe) {\n  \t                    return;\n  \t                }\n  \t                \n  \t                try {\n  \t                    // Handle array of unsubscribe functions (multiple channels)\n  \t                    if (Array.isArray(this._teamsRealtimeUnsubscribe)) {\n  \t                        for (const unsubscribe of this._teamsRealtimeUnsubscribe) {\n  \t                            if (typeof unsubscribe === 'function') {\n  \t                                unsubscribe();\n  \t                            } else if (unsubscribe && typeof unsubscribe.unsubscribe === 'function') {\n  \t                                unsubscribe.unsubscribe();\n  \t                            }\n  \t                        }\n  \t                    } else if (typeof this._teamsRealtimeUnsubscribe === 'function') {\n  \t                        // Direct unsubscribe function\n  \t                        this._teamsRealtimeUnsubscribe();\n  \t                    } else if (this._teamsRealtimeUnsubscribe === true) {\n  \t                        // Subscription active but no unsubscribe method available\n  \t                    } else {\n  \t                        // Subscription object - try to call unsubscribe if it exists\n  \t                        if (typeof this._teamsRealtimeUnsubscribe.unsubscribe === 'function') {\n  \t                            this._teamsRealtimeUnsubscribe.unsubscribe();\n  \t                        }\n  \t                    }\n  \t                } catch (error) {\n  \t                    console.warn('[Indux Appwrite Auth] Error stopping realtime subscriptions:', error);\n  \t                } finally {\n  \t                    this._teamsRealtimeUnsubscribe = null;\n  \t                }\n  \t            };\n  \t            \n  \t            // Start polling teams for updates (optional, configured via teamsPollInterval) - DEPRECATED: Use realtime instead\n  \t            store.startTeamsPolling = function(intervalMs) {\n  \t                // Clear existing interval if any\n  \t                if (this._teamsPollInterval) {\n  \t                    clearInterval(this._teamsPollInterval);\n  \t                }\n  \t                \n  \t                // Only poll if authenticated\n  \t                if (!this.isAuthenticated) {\n  \t                    return;\n  \t                }\n  \t                \n  \t                this._teamsPollInterval = setInterval(async () => {\n  \t                    if (this.isAuthenticated && this.listTeams) {\n  \t                        try {\n  \t                            await this.listTeams();\n  \t                        } catch (error) {\n  \t                            console.warn('[Indux Appwrite Auth] Teams polling error:', error);\n  \t                        }\n  \t                    } else {\n  \t                        // Stop polling if user logs out\n  \t                        if (this.stopTeamsPolling) {\n  \t                            this.stopTeamsPolling();\n  \t                        }\n  \t                    }\n  \t                }, intervalMs);\n  \t            };\n  \t            \n  \t            // Stop polling teams\n  \t            store.stopTeamsPolling = function() {\n  \t                if (this._teamsPollInterval) {\n  \t                    clearInterval(this._teamsPollInterval);\n  \t                    this._teamsPollInterval = null;\n  \t                }\n  \t            };\n  \t            \n  \t            // Update team preferences\n  \t            store.updateTeamPrefs = async function(teamId, prefs) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    return { success: false, error: 'You must be signed in to update team preferences' };\n  \t                }\n\n  \t                this.inProgress = true;\n  \t                this.error = null;\n\n  \t                try {\n  \t                    const result = await this._appwrite.teams.updatePrefs({\n  \t                        teamId: teamId,\n  \t                        prefs: prefs\n  \t                    });\n\n  \t                    return { success: true, prefs: result };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                } finally {\n  \t                    this.inProgress = false;\n  \t                }\n  \t            };\n  \t        } else if (!store) {\n  \t            setTimeout(waitForStore, 50);\n  \t        }\n  \t    };\n\n  \t    setTimeout(waitForStore, 100);\n  \t}\n\n  \t// Initialize when Alpine is ready\n  \tdocument.addEventListener('alpine:init', () => {\n  \t    try {\n  \t        initializeTeamsCore();\n  \t    } catch (error) {\n  \t        // Failed to initialize teams core\n  \t    }\n  \t});\n\n  \t// Also try immediately if Alpine is already available\n  \tif (typeof Alpine !== 'undefined') {\n  \t    try {\n  \t        initializeTeamsCore();\n  \t    } catch (error) {\n  \t        // Alpine might not be fully initialized yet, that's okay\n  \t    }\n  \t}\n\n  \t// Export core teams interface\n  \twindow.InduxAppwriteAuthTeamsCore = {\n  \t    initialize: initializeTeamsCore\n  \t};\n\n\n\n  \t/* Auth teams - Default teams (permanent and template) */\n\n  \t// Helper function to resolve personal team name (handles static strings and $x paths)\n  \tasync function resolvePersonalTeamName(nameConfig) {\n  \t    if (!nameConfig || typeof nameConfig !== 'string') {\n  \t        return null;\n  \t    }\n  \t    \n  \t    // If it starts with $x., resolve via Indux data source\n  \t    if (nameConfig.startsWith('$x.')) {\n  \t        try {\n  \t            // Remove '$x.' prefix and resolve path\n  \t            const path = nameConfig.substring(3);\n  \t            \n  \t            // Use Alpine's $x magic method if available\n  \t            if (typeof Alpine !== 'undefined' && Alpine.magic && Alpine.magic('x')) {\n  \t                const $x = Alpine.magic('x');\n  \t                // Split path and navigate through $x proxy\n  \t                const parts = path.split('.');\n  \t                let value = $x;\n  \t                for (const part of parts) {\n  \t                    if (value && typeof value === 'object' && part in value) {\n  \t                        value = value[part];\n  \t                        // If value is a Promise, wait for it\n  \t                        if (value && typeof value.then === 'function') {\n  \t                            value = await value;\n  \t                        }\n  \t                    } else {\n  \t                        // Data source may not be loaded yet - silently return null\n  \t                        return null;\n  \t                    }\n  \t                }\n  \t                return value || null;\n  \t            } else {\n  \t                // Fallback: try data store directly\n  \t                const dataStore = Alpine.store('data');\n  \t                if (dataStore) {\n  \t                    const parts = path.split('.');\n  \t                    let value = dataStore;\n  \t                    for (const part of parts) {\n  \t                        if (value && typeof value === 'object' && part in value) {\n  \t                            value = value[part];\n  \t                        } else {\n  \t                            return null;\n  \t                        }\n  \t                    }\n  \t                    return value || null;\n  \t                }\n  \t            }\n  \t        } catch (error) {\n  \t            // Data source may not be loaded yet - silently return null\n  \t            return null;\n  \t        }\n  \t    }\n  \t    \n  \t    // Otherwise, treat as static string\n  \t    return nameConfig;\n  \t}\n\n  \t// Add default teams methods to auth store\n  \tfunction initializeTeamsDefaults() {\n  \t    if (typeof Alpine === 'undefined') {\n  \t        return;\n  \t    }\n\n  \t    const config = window.InduxAppwriteAuthConfig;\n  \t    if (!config) {\n  \t        return;\n  \t    }\n\n  \t    // Wait for store to be initialized\n  \t    const waitForStore = () => {\n  \t        const store = Alpine.store('auth');\n  \t        if (store && !store.isTeamImmutable) {\n  \t            // Check if a team is immutable (cannot be deleted)\n  \t            store.isTeamImmutable = async function(teamId) {\n  \t                const team = this.teams?.find(t => t.$id === teamId);\n  \t                if (!team) return false;\n  \t                \n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                if (!appwriteConfig?.permanentTeams || !Array.isArray(appwriteConfig.permanentTeams)) {\n  \t                    return false;\n  \t                }\n  \t                \n  \t                // Check if this team matches any permanent team\n  \t                for (const nameConfig of appwriteConfig.permanentTeams) {\n  \t                    const resolvedName = await resolvePersonalTeamName(nameConfig);\n  \t                    if (resolvedName === team.name) {\n  \t                        return true; // Immutable\n  \t                    }\n  \t                }\n  \t                return false;\n  \t            };\n  \t            \n  \t            // Get deleted template teams (teams that can be reapplied)\n  \t            store.getDeletedTemplateTeams = async function() {\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                if (!appwriteConfig?.templateTeams || !Array.isArray(appwriteConfig.templateTeams)) {\n  \t                    return [];\n  \t                }\n  \t                \n  \t                // Get list of deleted template teams for this user\n  \t                let deletedTeams = [];\n  \t                try {\n  \t                    const userId = this.user?.$id;\n  \t                    if (userId) {\n  \t                        const key = `indux:deleted-teams:${userId}`;\n  \t                        deletedTeams = JSON.parse(localStorage.getItem(key) || '[]');\n  \t                    }\n  \t                } catch (e) {\n  \t                    return [];\n  \t                }\n  \t                \n  \t                // Resolve all template team names and filter to only deleted ones\n  \t                const deletedTemplateTeams = [];\n  \t                for (const nameConfig of appwriteConfig.templateTeams) {\n  \t                    const resolvedName = await resolvePersonalTeamName(nameConfig);\n  \t                    if (resolvedName && deletedTeams.includes(resolvedName)) {\n  \t                        deletedTemplateTeams.push(resolvedName);\n  \t                    }\n  \t                }\n  \t                \n  \t                return deletedTemplateTeams;\n  \t            };\n  \t            \n  \t            // Track deleted template team (internal helper)\n  \t            store.trackDeletedTemplateTeam = async function(teamName) {\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                if (appwriteConfig?.templateTeams && Array.isArray(appwriteConfig.templateTeams)) {\n  \t                    // Check if this was a template team\n  \t                    for (const nameConfig of appwriteConfig.templateTeams) {\n  \t                        const resolvedName = await resolvePersonalTeamName(nameConfig);\n  \t                        if (resolvedName === teamName) {\n  \t                            // Store deletion in localStorage (keyed by user ID)\n  \t                            try {\n  \t                                const userId = this.user?.$id;\n  \t                                if (userId) {\n  \t                                    const key = `indux:deleted-teams:${userId}`;\n  \t                                    const deleted = JSON.parse(localStorage.getItem(key) || '[]');\n  \t                                    if (!deleted.includes(teamName)) {\n  \t                                        deleted.push(teamName);\n  \t                                        localStorage.setItem(key, JSON.stringify(deleted));\n  \t                                    }\n  \t                                }\n  \t                            } catch (e) {\n  \t                                console.warn('[Indux Appwrite Auth] Failed to track deleted team:', e);\n  \t                            }\n  \t                            break;\n  \t                        }\n  \t                    }\n  \t                }\n  \t            };\n  \t            \n  \t            // Get default teams (teams matching configured default team names - both permanent and template)\n  \t            store.getDefaultTeams = async function() {\n  \t                if (!this.teams || this.teams.length === 0) {\n  \t                    return [];\n  \t                }\n  \t                \n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                const allDefaultTeamNames = [];\n  \t                \n  \t                // Resolve permanent teams\n  \t                if (appwriteConfig?.permanentTeams && Array.isArray(appwriteConfig.permanentTeams)) {\n  \t                    for (const nameConfig of appwriteConfig.permanentTeams) {\n  \t                        const resolvedName = await resolvePersonalTeamName(nameConfig);\n  \t                        if (resolvedName) {\n  \t                            allDefaultTeamNames.push(resolvedName);\n  \t                        }\n  \t                    }\n  \t                }\n  \t                \n  \t                // Resolve template teams\n  \t                if (appwriteConfig?.templateTeams && Array.isArray(appwriteConfig.templateTeams)) {\n  \t                    for (const nameConfig of appwriteConfig.templateTeams) {\n  \t                        const resolvedName = await resolvePersonalTeamName(nameConfig);\n  \t                        if (resolvedName) {\n  \t                            allDefaultTeamNames.push(resolvedName);\n  \t                        }\n  \t                    }\n  \t                }\n  \t                \n  \t                // Find teams matching default team names\n  \t                const defaultTeams = this.teams.filter(team => allDefaultTeamNames.includes(team.name));\n  \t                return defaultTeams;\n  \t            };\n  \t            \n  \t            // Clean up duplicate permanent/template teams (keeps the oldest one, deletes the rest)\n  \t            // This bypasses the immutable check for duplicates only\n  \t            store.cleanupDuplicateDefaultTeams = async function() {\n  \t                if (!this.teams || this.teams.length === 0) {\n  \t                    return { success: true, cleaned: 0 };\n  \t                }\n  \t                \n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                if (!appwriteConfig) {\n  \t                    return { success: false, error: 'Appwrite config not available' };\n  \t                }\n  \t                \n  \t                const allDefaultTeamNames = [];\n  \t                \n  \t                // Resolve permanent teams\n  \t                if (appwriteConfig?.permanentTeams && Array.isArray(appwriteConfig.permanentTeams)) {\n  \t                    for (const nameConfig of appwriteConfig.permanentTeams) {\n  \t                        const resolvedName = await resolvePersonalTeamName(nameConfig);\n  \t                        if (resolvedName) {\n  \t                            allDefaultTeamNames.push(resolvedName);\n  \t                        }\n  \t                    }\n  \t                }\n  \t                \n  \t                // Resolve template teams\n  \t                if (appwriteConfig?.templateTeams && Array.isArray(appwriteConfig.templateTeams)) {\n  \t                    for (const nameConfig of appwriteConfig.templateTeams) {\n  \t                        const resolvedName = await resolvePersonalTeamName(nameConfig);\n  \t                        if (resolvedName) {\n  \t                            allDefaultTeamNames.push(resolvedName);\n  \t                        }\n  \t                    }\n  \t                }\n  \t                \n  \t                let cleanedCount = 0;\n  \t                const errors = [];\n  \t                \n  \t                // For each default team name, find duplicates and delete all but the oldest\n  \t                for (const teamName of allDefaultTeamNames) {\n  \t                    const matchingTeams = this.teams.filter(team => team.name === teamName);\n  \t                    \n  \t                    if (matchingTeams.length > 1) {\n  \t                        // Sort by creation date (oldest first) and keep the first one\n  \t                        const sortedTeams = matchingTeams.sort((a, b) => {\n  \t                            const dateA = new Date(a.$createdAt || 0);\n  \t                            const dateB = new Date(b.$createdAt || 0);\n  \t                            return dateA - dateB;\n  \t                        });\n  \t                        \n  \t                        sortedTeams[0];\n  \t                        const teamsToDelete = sortedTeams.slice(1);\n  \t                        \n  \t                        // Delete all duplicates (bypass immutable check for duplicates)\n  \t                        for (const team of teamsToDelete) {\n  \t                            try {\n  \t                                if (!this._appwrite) {\n  \t                                    this._appwrite = await config.getAppwriteClient();\n  \t                                }\n  \t                                if (this._appwrite && this._appwrite.teams) {\n  \t                                    // Directly delete via Appwrite API (bypassing our deleteTeam method which checks immutable)\n  \t                                    await this._appwrite.teams.delete({ teamId: team.$id });\n  \t                                    cleanedCount++;\n  \t                                }\n  \t                            } catch (error) {\n  \t                                const errorMsg = `Error deleting duplicate team ${team.$id}: ${error.message}`;\n  \t                                errors.push(errorMsg);\n  \t                            }\n  \t                        }\n  \t                    }\n  \t                }\n  \t                \n  \t                // Refresh teams list after cleanup\n  \t                if (cleanedCount > 0 && this.listTeams) {\n  \t                    await this.listTeams();\n  \t                }\n  \t                \n  \t                return {\n  \t                    success: errors.length === 0,\n  \t                    cleaned: cleanedCount,\n  \t                    errors: errors.length > 0 ? errors : undefined\n  \t                };\n  \t            };\n  \t            \n  \t            // Get personal team (first default team, or first team as fallback)\n  \t            // Kept for backwards compatibility\n  \t            store.getPersonalTeam = async function() {\n  \t                const defaultTeams = await this.getDefaultTeams();\n  \t                if (defaultTeams.length > 0) {\n  \t                    return defaultTeams[0];\n  \t                }\n  \t                // Fallback to first team if no default teams\n  \t                return this.teams && this.teams.length > 0 ? this.teams[0] : null;\n  \t            };\n  \t            \n  \t            // Reapply a template team (create it if it was previously deleted)\n  \t            store.reapplyTemplateTeam = async function(teamName) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    return { success: false, error: 'You must be signed in to reapply a template team' };\n  \t                }\n\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                if (!appwriteConfig?.templateTeams || !Array.isArray(appwriteConfig.templateTeams)) {\n  \t                    return { success: false, error: 'Template teams are not configured' };\n  \t                }\n\n  \t                // Verify this is a valid template team name\n  \t                let isTemplateTeam = false;\n  \t                for (const nameConfig of appwriteConfig.templateTeams) {\n  \t                    const resolvedName = await resolvePersonalTeamName(nameConfig);\n  \t                    if (resolvedName === teamName) {\n  \t                        isTemplateTeam = true;\n  \t                        break;\n  \t                    }\n  \t                }\n\n  \t                if (!isTemplateTeam) {\n  \t                    return { success: false, error: 'This is not a valid template team' };\n  \t                }\n\n  \t                // Check if team already exists\n  \t                if (this.teams && this.teams.some(team => team.name === teamName)) {\n  \t                    return { success: false, error: 'This team already exists' };\n  \t                }\n\n  \t                this.inProgress = true;\n  \t                this.error = null;\n\n  \t                try {\n  \t                    // Create the template team (pass empty array to use creatorRole logic)\n  \t                    const result = await this.createTeam(null, teamName, []);\n  \t                    \n  \t                    if (result.success) {\n  \t                        // Remove from deleted teams list\n  \t                        try {\n  \t                            const userId = this.user?.$id;\n  \t                            if (userId) {\n  \t                                const key = `indux:deleted-teams:${userId}`;\n  \t                                const deleted = JSON.parse(localStorage.getItem(key) || '[]');\n  \t                                const updated = deleted.filter(name => name !== teamName);\n  \t                                localStorage.setItem(key, JSON.stringify(updated));\n  \t                            }\n  \t                        } catch (e) {\n  \t                            console.warn('[Indux Appwrite Auth] Failed to update deleted teams list:', e);\n  \t                        }\n  \t                        \n  \t                        // Refresh teams list (this will also update deletedTemplateTeams)\n  \t                        if (this.listTeams) {\n  \t                            await this.listTeams();\n  \t                        }\n  \t                        \n  \t                        // Update deletedTemplateTeams property\n  \t                        if (this.getDeletedTemplateTeams) {\n  \t                            this.deletedTemplateTeams = await this.getDeletedTemplateTeams();\n  \t                        }\n  \t                        \n  \t                        return { success: true, team: result.team };\n  \t                    } else {\n  \t                        return { success: false, error: result.error };\n  \t                    }\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                } finally {\n  \t                    this.inProgress = false;\n  \t                }\n  \t            };\n  \t        } else if (!store) {\n  \t            setTimeout(waitForStore, 50);\n  \t        }\n  \t    };\n\n  \t    setTimeout(waitForStore, 100);\n  \t}\n\n  \t// Auto-create default teams if enabled - mandatory for all users\n  \tasync function ensureDefaultTeams(store) {\n  \t    const appwriteConfig = await window.InduxAppwriteAuthConfig.getAppwriteConfig();\n  \t    \n  \t    // Check if default teams are enabled\n  \t    const hasPermanent = appwriteConfig?.permanentTeams && Array.isArray(appwriteConfig.permanentTeams) && appwriteConfig.permanentTeams.length > 0;\n  \t    const hasTemplate = appwriteConfig?.templateTeams && Array.isArray(appwriteConfig.templateTeams) && appwriteConfig.templateTeams.length > 0;\n  \t    \n  \t    if ((!hasPermanent && !hasTemplate) || !appwriteConfig?.teams) {\n  \t        return { success: true, created: false, teams: [] };\n  \t    }\n  \t    \n  \t    // Ensure teams list is loaded\n  \t    if (!store.teams || store.teams.length === 0) {\n  \t        if (store.listTeams) {\n  \t            await store.listTeams();\n  \t        }\n  \t    }\n  \t    \n  \t    const createdTeams = [];\n  \t    const existingTeams = [];\n  \t    \n  \t    // Get list of deleted template teams for this user (don't recreate them)\n  \t    let deletedTeams = [];\n  \t    try {\n  \t        const userId = store.user?.$id;\n  \t        if (userId) {\n  \t            const key = `indux:deleted-teams:${userId}`;\n  \t            deletedTeams = JSON.parse(localStorage.getItem(key) || '[]');\n  \t        }\n  \t    } catch (e) {\n  \t        console.warn('[Indux Appwrite Auth] Failed to load deleted teams list:', e);\n  \t    }\n  \t    \n  \t    // Process permanent teams (always create if missing)\n  \t    if (hasPermanent) {\n  \t        for (const nameConfig of appwriteConfig.permanentTeams) {\n  \t            // Resolve team name (static or $x path)\n  \t            const teamName = await resolvePersonalTeamName(nameConfig);\n  \t            if (!teamName) {\n  \t                // Data source may not be loaded yet - skip for now, will retry on next load\n  \t                continue;\n  \t            }\n  \t            \n  \t            // Check if user already has this permanent team (by name matching)\n  \t            // Find ALL teams with this name to detect duplicates\n  \t            const matchingTeams = store.teams?.filter(team => team.name === teamName) || [];\n  \t            if (matchingTeams.length > 0) {\n  \t                // If there are duplicates, log a warning and use the first one\n  \t                if (matchingTeams.length > 1) {\n  \t                    console.warn(`[Indux Appwrite Auth] Found ${matchingTeams.length} duplicate permanent teams with name \"${teamName}\". Using the first one.`);\n  \t                    console.warn('[Indux Appwrite Auth] Duplicate team IDs:', matchingTeams.map(t => t.$id));\n  \t                }\n  \t                existingTeams.push(matchingTeams[0]);\n  \t                continue;\n  \t            }\n  \t            \n  \t            // Permanent team doesn't exist - create it (mandatory for all users)\n  \t            try {\n  \t                // Pass empty array to use creatorRole logic from config\n  \t                const result = await store.createTeam(null, teamName, []);\n  \t                \n  \t                if (result.success) {\n  \t                    createdTeams.push(result.team);\n  \t                }\n  \t            } catch (error) {\n  \t                // Error creating permanent team\n  \t            }\n  \t        }\n  \t    }\n  \t    \n  \t    // Process template teams (only create if not deleted)\n  \t    if (hasTemplate) {\n  \t        for (const nameConfig of appwriteConfig.templateTeams) {\n  \t            // Resolve team name (static or $x path)\n  \t            const teamName = await resolvePersonalTeamName(nameConfig);\n  \t            if (!teamName) {\n  \t                // Data source may not be loaded yet - skip for now, will retry on next load\n  \t                continue;\n  \t            }\n  \t            \n  \t            // Skip if this template team was previously deleted by the user\n  \t            if (deletedTeams.includes(teamName)) {\n  \t                continue;\n  \t            }\n  \t            \n  \t            // Check if user already has this template team (by name matching)\n  \t            // Find ALL teams with this name to detect duplicates\n  \t            const matchingTeams = store.teams?.filter(team => team.name === teamName) || [];\n  \t            if (matchingTeams.length > 0) {\n  \t                // If there are duplicates, log a warning and use the first one\n  \t                if (matchingTeams.length > 1) {\n  \t                    console.warn(`[Indux Appwrite Auth] Found ${matchingTeams.length} duplicate template teams with name \"${teamName}\". Using the first one.`);\n  \t                    console.warn('[Indux Appwrite Auth] Duplicate team IDs:', matchingTeams.map(t => t.$id));\n  \t                }\n  \t                existingTeams.push(matchingTeams[0]);\n  \t                continue;\n  \t            }\n  \t            \n  \t            // Template team doesn't exist - create it (mandatory for all users)\n  \t            try {\n  \t                // Pass empty array to use creatorRole logic from config\n  \t                const result = await store.createTeam(null, teamName, []);\n  \t                \n  \t                if (result.success) {\n  \t                    createdTeams.push(result.team);\n  \t                }\n  \t            } catch (error) {\n  \t                // Error creating template team\n  \t            }\n  \t        }\n  \t    }\n  \t    \n  \t    // Set currentTeam to first default team if not already set\n  \t    if (!store.currentTeam) {\n  \t        const allDefaultTeams = [...existingTeams, ...createdTeams];\n  \t        if (allDefaultTeams.length > 0) {\n  \t            store.currentTeam = allDefaultTeams[0];\n  \t        }\n  \t    }\n  \t    \n  \t    return {\n  \t        success: true,\n  \t        created: createdTeams.length > 0,\n  \t        teams: [...existingTeams, ...createdTeams],\n  \t        createdCount: createdTeams.length\n  \t    };\n  \t}\n\n  \t// Initialize when Alpine is ready\n  \tdocument.addEventListener('alpine:init', () => {\n  \t    try {\n  \t        initializeTeamsDefaults();\n  \t    } catch (error) {\n  \t        // Failed to initialize teams defaults\n  \t    }\n  \t});\n\n  \t// Also try immediately if Alpine is already available\n  \tif (typeof Alpine !== 'undefined') {\n  \t    try {\n  \t        initializeTeamsDefaults();\n  \t    } catch (error) {\n  \t        // Alpine might not be fully initialized yet, that's okay\n  \t    }\n  \t}\n\n  \t// Export defaults interface\n  \twindow.InduxAppwriteAuthTeamsDefaults = {\n  \t    initialize: initializeTeamsDefaults,\n  \t    ensureDefaultTeams: ensureDefaultTeams,\n  \t    resolvePersonalTeamName: resolvePersonalTeamName\n  \t};\n\n\n\n  \t/* Auth teams - Default roles (permanent and template) */\n\n  \t// Add default roles methods to auth store\n  \tfunction initializeTeamsRolesDefaults() {\n  \t    if (typeof Alpine === 'undefined') {\n  \t        return;\n  \t    }\n\n  \t    const config = window.InduxAppwriteAuthConfig;\n  \t    if (!config) {\n  \t        return;\n  \t    }\n\n  \t    // Wait for store to be initialized\n  \t    const waitForStore = () => {\n  \t        const store = Alpine.store('auth');\n  \t        if (store && !store.isRolePermanent) {\n  \t            // Initialize cache if needed\n  \t            if (!store._rolePermanentCache) store._rolePermanentCache = {};\n  \t            \n  \t            // Check if a role is permanent (cannot be deleted)\n  \t            store.isRolePermanent = async function(teamId, roleName) {\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                // permanentRoles is now an object: { \"RoleName\": [\"permission1\", ...] }\n  \t                if (!appwriteConfig?.permanentRoles || typeof appwriteConfig.permanentRoles !== 'object') {\n  \t                    return false;\n  \t                }\n  \t                const isPermanent = roleName in appwriteConfig.permanentRoles;\n  \t                // Cache the result\n  \t                if (!this._rolePermanentCache[teamId]) this._rolePermanentCache[teamId] = {};\n  \t                this._rolePermanentCache[teamId][roleName] = isPermanent;\n  \t                return isPermanent;\n  \t            };\n  \t            \n  \t            // Synchronous check using cache (for Alpine reactivity)\n  \t            store.isRolePermanentSync = function(teamId, roleName) {\n  \t                if (!teamId || !roleName || !this._rolePermanentCache) return false;\n  \t                return this._rolePermanentCache[teamId]?.[roleName] === true;\n  \t            };\n  \t            \n  \t            // Check if a role is a template role (can be deleted)\n  \t            store.isRoleTemplate = async function(teamId, roleName) {\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                // templateRoles is now an object: { \"RoleName\": [\"permission1\", ...] }\n  \t                if (!appwriteConfig?.templateRoles || typeof appwriteConfig.templateRoles !== 'object') {\n  \t                    return false;\n  \t                }\n  \t                return roleName in appwriteConfig.templateRoles;\n  \t            };\n  \t            \n  \t            // Get deleted template roles for a team\n  \t            // NOTE: Deleted template roles are stored in team preferences (not localStorage) so they're shared across all team members\n  \t            store.getDeletedTemplateRoles = async function(teamId) {\n  \t                if (!teamId) {\n  \t                    return [];\n  \t                }\n  \t                \n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                if (!appwriteConfig?.templateRoles || typeof appwriteConfig.templateRoles !== 'object') {\n  \t                    return [];\n  \t                }\n  \t                \n  \t                // Get list of deleted template roles from team preferences (shared across all team members)\n  \t                let deletedRoles = [];\n  \t                try {\n  \t                    if (this._appwrite && this._appwrite.teams) {\n  \t                        const prefs = await this._appwrite.teams.getPrefs({ teamId });\n  \t                        // Deleted template roles are stored in team preferences under 'deletedTemplateRoles'\n  \t                        if (prefs && prefs.deletedTemplateRoles && Array.isArray(prefs.deletedTemplateRoles)) {\n  \t                            deletedRoles = prefs.deletedTemplateRoles;\n  \t                        }\n  \t                    }\n  \t                } catch (e) {\n  \t                    // If team was deleted (404), silently return empty array (expected behavior)\n  \t                    if (e.message && e.message.includes('could not be found')) {\n  \t                        return [];\n  \t                    }\n  \t                    // For other errors, fall back to localStorage (for backwards compatibility)\n  \t                    try {\n  \t                        const userId = this.user?.$id;\n  \t                        if (userId) {\n  \t                            const key = `indux:deleted-roles:${userId}:${teamId}`;\n  \t                            deletedRoles = JSON.parse(localStorage.getItem(key) || '[]');\n  \t                        }\n  \t                    } catch (e2) {\n  \t                        // Silently ignore localStorage errors\n  \t                    }\n  \t                }\n  \t                \n  \t                // Filter to only include roles that are actually template roles\n  \t                const templateRoleNames = Object.keys(appwriteConfig.templateRoles);\n  \t                return deletedRoles.filter(roleName => templateRoleNames.includes(roleName));\n  \t            };\n  \t            \n  \t            // Reapply a deleted template role\n  \t            store.reapplyTemplateRole = async function(teamId, roleName) {\n  \t                if (!teamId || !roleName) {\n  \t                    return { success: false, error: 'Team ID and role name are required' };\n  \t                }\n  \t                \n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                if (!appwriteConfig?.templateRoles || typeof appwriteConfig.templateRoles !== 'object') {\n  \t                    return { success: false, error: 'Template roles are not configured' };\n  \t                }\n  \t                \n  \t                const templateRole = appwriteConfig.templateRoles[roleName];\n  \t                if (!templateRole || !Array.isArray(templateRole)) {\n  \t                    return { success: false, error: `Template role \"${roleName}\" does not exist` };\n  \t                }\n  \t                \n  \t                try {\n  \t                    // Get current team preferences\n  \t                    const currentPrefs = await this._appwrite.teams.getPrefs({ teamId });\n  \t                    const currentRoles = currentPrefs?.roles ? { ...currentPrefs.roles } : {};\n  \t                    \n  \t                    // Check if role already exists\n  \t                    if (currentRoles[roleName]) {\n  \t                        return { success: false, error: 'This role already exists' };\n  \t                    }\n  \t                    \n  \t                    // Add the template role\n  \t                    const updatedRoles = {\n  \t                        ...currentRoles,\n  \t                        [roleName]: templateRole\n  \t                    };\n  \t                    \n  \t                    // Remove from deleted list in team preferences (shared across all team members)\n  \t                    let deletedRoles = [];\n  \t                    if (currentPrefs && currentPrefs.deletedTemplateRoles && Array.isArray(currentPrefs.deletedTemplateRoles)) {\n  \t                        deletedRoles = currentPrefs.deletedTemplateRoles.filter(r => r !== roleName);\n  \t                    }\n  \t                    \n  \t                    const updatedPrefs = {\n  \t                        ...currentPrefs,\n  \t                        roles: updatedRoles,\n  \t                        deletedTemplateRoles: deletedRoles // Update deleted list in team preferences\n  \t                    };\n  \t                    await this._appwrite.teams.updatePrefs({\n  \t                        teamId: teamId,\n  \t                        prefs: updatedPrefs\n  \t                    });\n  \t                    \n  \t                    // Also remove from localStorage for backwards compatibility (if it exists)\n  \t                    try {\n  \t                        const userId = this.user?.$id;\n  \t                        if (userId) {\n  \t                            const key = `indux:deleted-roles:${userId}:${teamId}`;\n  \t                            const deleted = JSON.parse(localStorage.getItem(key) || '[]');\n  \t                            const updated = deleted.filter(name => name !== roleName);\n  \t                            localStorage.setItem(key, JSON.stringify(updated));\n  \t                        }\n  \t                    } catch (e) {\n  \t                        // Ignore localStorage errors (team preferences is the source of truth)\n  \t                    }\n  \t                    \n  \t                    // Refresh cache for this team\n  \t                    if (this.getAllRoles) {\n  \t                        const allRoles = await this.getAllRoles(teamId);\n  \t                        const rolesCopy = allRoles ? { ...allRoles } : {};\n  \t                        if (!this._allRolesCacheByTeam) this._allRolesCacheByTeam = {};\n  \t                        this._allRolesCacheByTeam[teamId] = { ...rolesCopy };\n  \t                        \n  \t                        // Pre-cache permanent role status\n  \t                        if (!this._rolePermanentCache) this._rolePermanentCache = {};\n  \t                        if (!this._rolePermanentCache[teamId]) this._rolePermanentCache[teamId] = {};\n  \t                        for (const rName of Object.keys(rolesCopy)) {\n  \t                            if (this.isRolePermanent) {\n  \t                                await this.isRolePermanent(teamId, rName);\n  \t                            }\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    // Refresh permission cache\n  \t                    if (this.refreshPermissionCache) {\n  \t                        await this.refreshPermissionCache();\n  \t                    }\n  \t                    \n  \t                    return { success: true };\n  \t                } catch (error) {\n  \t                    return { success: false, error: error.message };\n  \t                }\n  \t            };\n  \t            \n  \t            // Ensure default roles are applied to a team\n  \t            store.ensureDefaultRoles = async function(teamId) {\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                if (!appwriteConfig || !teamId) {\n  \t                    return { success: false, error: 'Invalid config or team ID' };\n  \t                }\n  \t                \n  \t                // permanentRoles and templateRoles are now objects: { \"RoleName\": [\"permission1\", ...] }\n  \t                const permanentRoles = appwriteConfig.permanentRoles || {};\n  \t                const templateRoles = appwriteConfig.templateRoles || {};\n  \t                \n  \t                // Get list of deleted template roles for this team (don't recreate them)\n  \t                // Use getDeletedTemplateRoles which reads from team preferences (shared across all team members)\n  \t                let deletedRoles = [];\n  \t                if (this.getDeletedTemplateRoles) {\n  \t                    try {\n  \t                        deletedRoles = await this.getDeletedTemplateRoles(teamId);\n  \t                    } catch (e) {\n  \t                        // Failed to load deleted roles list\n  \t                    }\n  \t                }\n  \t                \n  \t                // Merge permanent and template roles into one object\n  \t                const allDefaultRoles = { ...permanentRoles };\n  \t                // Only include template roles that haven't been deleted\n  \t                for (const [roleName, permissions] of Object.entries(templateRoles)) {\n  \t                    if (!deletedRoles.includes(roleName)) {\n  \t                        allDefaultRoles[roleName] = permissions;\n  \t                    }\n  \t                }\n  \t                \n  \t                if (Object.keys(allDefaultRoles).length === 0) {\n  \t                    return { success: true, applied: false };\n  \t                }\n  \t                \n  \t                try {\n  \t                    // Get current team preferences\n  \t                    const currentPrefs = await this._appwrite.teams.getPrefs({ teamId });\n  \t                    const currentRoles = currentPrefs?.roles ? { ...currentPrefs.roles } : {};\n  \t                    \n  \t                    let rolesUpdated = false;\n  \t                    const updatedRoles = { ...currentRoles };\n  \t                    \n  \t                    // Apply default roles that don't already exist\n  \t                    for (const [roleName, permissions] of Object.entries(allDefaultRoles)) {\n  \t                        if (!updatedRoles[roleName] && Array.isArray(permissions)) {\n  \t                            updatedRoles[roleName] = permissions;\n  \t                            rolesUpdated = true;\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    // Only update if roles were added\n  \t                    if (rolesUpdated) {\n  \t                        const updatedPrefs = {\n  \t                            ...currentPrefs,\n  \t                            roles: updatedRoles\n  \t                        };\n  \t                        await this._appwrite.teams.updatePrefs({\n  \t                            teamId: teamId,\n  \t                            prefs: updatedPrefs\n  \t                        });\n  \t                        \n  \t                        // Refresh cache for this team\n  \t                        if (this.getAllRoles) {\n  \t                            const allRoles = await this.getAllRoles(teamId);\n  \t                            const rolesCopy = allRoles ? { ...allRoles } : {};\n  \t                            if (!this._allRolesCacheByTeam) this._allRolesCacheByTeam = {};\n  \t                            this._allRolesCacheByTeam[teamId] = rolesCopy;\n  \t                            \n  \t                            // Pre-cache permanent role status for all roles\n  \t                            if (!this._rolePermanentCache) this._rolePermanentCache = {};\n  \t                            if (!this._rolePermanentCache[teamId]) this._rolePermanentCache[teamId] = {};\n  \t                            for (const roleName of Object.keys(rolesCopy)) {\n  \t                                if (this.isRolePermanent) {\n  \t                                    await this.isRolePermanent(teamId, roleName);\n  \t                                }\n  \t                            }\n  \t                        }\n  \t                        \n  \t                        return { success: true, applied: true };\n  \t                    }\n  \t                    \n  \t                    return { success: true, applied: false };\n  \t                } catch (error) {\n  \t                    return { success: false, error: error.message };\n  \t                }\n  \t            };\n  \t        } else if (!store) {\n  \t            setTimeout(waitForStore, 50);\n  \t        }\n  \t    };\n\n  \t    setTimeout(waitForStore, 100);\n  \t}\n\n  \t// Initialize when Alpine is ready\n  \tdocument.addEventListener('alpine:init', () => {\n  \t    initializeTeamsRolesDefaults();\n  \t});\n\n  \t// Also try immediately if Alpine is already available\n  \tif (typeof Alpine !== 'undefined') {\n  \t    try {\n  \t        initializeTeamsRolesDefaults();\n  \t    } catch (error) {\n  \t        // Alpine might not be fully initialized yet, that's okay\n  \t    }\n  \t}\n\n  \t// Export for use in other modules\n  \twindow.InduxAppwriteAuthTeamsRolesDefaults = {\n  \t    initialize: initializeTeamsRolesDefaults\n  \t};\n\n\n\n  \t/* Auth teams - Role abstraction layer */\n\n  \t// Valid owner permission values (must map precisely to Appwrite owner capabilities)\n  \tconst OWNER_PERMISSIONS = [\n  \t    'inviteMembers',   // Can invite team members\n  \t    'updateMembers',   // Can update member roles\n  \t    'removeMembers',   // Can remove team members\n  \t    'renameTeam',      // Can rename the team\n  \t    'deleteTeam',      // Can delete the team\n  \t    'manageRoles'      // Can create, update, rename, and delete custom roles\n  \t];\n\n  \t// Get all owner permissions\n  \tfunction getOwnerPermissions() {\n  \t    return [...OWNER_PERMISSIONS];\n  \t}\n\n  \t// Validate role configuration from manifest\n  \tfunction validateRoleConfig(memberRoles, creatorRole) {\n  \t    const errors = [];\n  \t    const warnings = [];\n\n  \t    // If teams not enabled, roles are ignored (graceful degradation)\n  \t    // This validation assumes teams are enabled\n\n  \t    // Validate memberRoles structure\n  \t    if (memberRoles && typeof memberRoles !== 'object') {\n  \t        errors.push('memberRoles must be an object');\n  \t        return { valid: false, errors, warnings };\n  \t    }\n\n  \t    if (!memberRoles || Object.keys(memberRoles).length === 0) {\n  \t        // No roles defined - this is valid (will use Appwrite default: everyone is owner)\n  \t        return { valid: true, errors: [], warnings: [] };\n  \t    }\n\n  \t    // Validate each role\n  \t    for (const [roleName, permissions] of Object.entries(memberRoles)) {\n  \t        if (!Array.isArray(permissions)) {\n  \t            errors.push(`Role \"${roleName}\" must have a permissions array`);\n  \t            continue;\n  \t        }\n\n  \t        // Validate owner permissions (warn about invalid ones, but allow custom permissions)\n  \t        for (const permission of permissions) {\n  \t            if (typeof permission !== 'string') {\n  \t                errors.push(`Role \"${roleName}\" has invalid permission type. Permissions must be strings.`);\n  \t            }\n  \t        }\n  \t    }\n\n  \t    // Validate creatorRole reference\n  \t    if (creatorRole) {\n  \t        if (typeof creatorRole !== 'string') {\n  \t            errors.push('creatorRole must be a string reference to a memberRoles key');\n  \t        } else if (!memberRoles || !memberRoles[creatorRole]) {\n  \t            errors.push(`creatorRole \"${creatorRole}\" does not exist in memberRoles`);\n  \t        }\n  \t    }\n\n  \t    if (errors.length > 0) {\n  \t        return { valid: false, errors, warnings };\n  \t    }\n\n  \t    return { valid: true, errors: [], warnings };\n  \t}\n\n  \t// Check if a role requires owner permissions (has any owner permission)\n  \tfunction roleRequiresOwner(roleName, memberRoles) {\n  \t    if (!memberRoles || !memberRoles[roleName]) {\n  \t        return false;\n  \t    }\n\n  \t    const permissions = memberRoles[roleName] || [];\n  \t    \n  \t    // If role has any owner permission, it requires owner role\n  \t    return permissions.some(perm => OWNER_PERMISSIONS.includes(perm));\n  \t}\n\n  \t// Check if a role has ALL owner permissions (effectively replaces \"owner\" in UI)\n  \tfunction roleHasAllOwnerPermissions(roleName, memberRoles) {\n  \t    if (!memberRoles || !memberRoles[roleName]) {\n  \t        return false;\n  \t    }\n\n  \t    const permissions = memberRoles[roleName] || [];\n  \t    \n  \t    // Check if role has all owner permissions\n  \t    return OWNER_PERMISSIONS.every(perm => permissions.includes(perm));\n  \t}\n\n  \t// Get user-generated roles from team preferences\n  \tasync function getUserGeneratedRoles(teamId, appwrite) {\n  \t    if (!appwrite || !appwrite.teams) {\n  \t        return null;\n  \t    }\n\n  \t    try {\n  \t        const prefs = await appwrite.teams.getPrefs({ teamId });\n  \t        return prefs?.roles || null;\n  \t    } catch (error) {\n  \t        // Team preferences might not have roles yet, or team might be deleted (404)\n  \t        // Silently return null for deleted teams (expected behavior)\n  \t        if (error.message && error.message.includes('could not be found')) {\n  \t            return null;\n  \t        }\n  \t        // For other errors, also return null (team preferences might not exist yet)\n  \t        return null;\n  \t    }\n  \t}\n\n  \t// Merge manifest roles with user-generated roles (user-generated overrides manifest)\n  \tfunction mergeRoles(manifestRoles, userGeneratedRoles) {\n  \t    if (!manifestRoles && !userGeneratedRoles) {\n  \t        return null;\n  \t    }\n\n  \t    // Start with manifest roles\n  \t    const merged = manifestRoles ? { ...manifestRoles } : {};\n\n  \t    // Override with user-generated roles (if enabled)\n  \t    if (userGeneratedRoles && typeof userGeneratedRoles === 'object') {\n  \t        Object.assign(merged, userGeneratedRoles);\n  \t    }\n\n  \t    return merged;\n  \t}\n\n  \t// Normalize custom roles for Appwrite (add \"owner\" if any role requires it)\n  \tfunction normalizeRolesForAppwrite(customRoles, memberRoles, userGeneratedRoles = null) {\n  \t    if (!Array.isArray(customRoles)) {\n  \t        return customRoles;\n  \t    }\n\n  \t    // Merge manifest and user-generated roles\n  \t    const allRoles = mergeRoles(memberRoles, userGeneratedRoles);\n\n  \t    // If no roles config, return as-is (will use Appwrite's default behavior)\n  \t    if (!allRoles || Object.keys(allRoles).length === 0) {\n  \t        return customRoles;\n  \t    }\n\n  \t    // Check if any custom role requires owner\n  \t    const requiresOwner = customRoles.some(role => roleRequiresOwner(role, allRoles));\n  \t    \n  \t    // If owner is already in the list, don't duplicate\n  \t    if (requiresOwner && !customRoles.includes('owner')) {\n  \t        return [...customRoles, 'owner'];\n  \t    }\n\n  \t    return customRoles;\n  \t}\n\n  \t// Normalize Appwrite roles for display (filter \"owner\" if a custom role replaces it)\n  \tfunction normalizeRolesForDisplay(appwriteRoles, memberRoles, userGeneratedRoles = null) {\n  \t    if (!Array.isArray(appwriteRoles)) {\n  \t        return appwriteRoles;\n  \t    }\n\n  \t    // Merge manifest and user-generated roles\n  \t    const allRoles = mergeRoles(memberRoles, userGeneratedRoles);\n\n  \t    // If custom roles are defined, always filter out \"owner\" (it's a background Appwrite role)\n  \t    // \"owner\" is automatically added by Appwrite for permissions, but shouldn't be displayed\n  \t    if (allRoles && Object.keys(allRoles).length > 0) {\n  \t        return appwriteRoles.filter(role => role !== 'owner');\n  \t    }\n\n  \t    // If no custom roles config, show \"owner\" as-is (legacy behavior)\n  \t    return appwriteRoles;\n  \t}\n\n  \t// Get the primary role for display (first custom role, or \"owner\" if no custom roles)\n  \tfunction getPrimaryDisplayRole(appwriteRoles, memberRoles, userGeneratedRoles = null) {\n  \t    const displayRoles = normalizeRolesForDisplay(appwriteRoles, memberRoles, userGeneratedRoles);\n  \t    \n  \t    if (displayRoles.length === 0) {\n  \t        return null;\n  \t    }\n\n  \t    // Return first role (typically the most important)\n  \t    return displayRoles[0];\n  \t}\n\n  \t// Check if a user has a specific permission based on their roles\n  \tfunction hasPermission(userRoles, permission, memberRoles, userGeneratedRoles = null) {\n  \t    if (!Array.isArray(userRoles)) {\n  \t        return false;\n  \t    }\n\n  \t    // Merge manifest and user-generated roles\n  \t    const allRoles = mergeRoles(memberRoles, userGeneratedRoles);\n\n  \t    // If no custom roles config, owner has all permissions (including manageRoles)\n  \t    if (!allRoles || Object.keys(allRoles).length === 0) {\n  \t        // Owner always has all permissions when no custom roles are defined\n  \t        return userRoles.includes('owner');\n  \t    }\n\n  \t    // IMPORTANT: When custom roles are defined, we ONLY check custom roles, NOT the owner role.\n  \t    // This is because Appwrite automatically grants \"owner\" role to users with custom roles\n  \t    // that have native permissions, but we want to restrict them to ONLY the permissions\n  \t    // explicitly defined in their custom role(s).\n  \t    \n  \t    // Get user's custom roles (excluding \"owner\")\n  \t    const customRoles = userRoles.filter(role => role !== 'owner');\n  \t    \n  \t    // If user has no custom roles (only \"owner\" or empty), grant all permissions\n  \t    // This handles edge cases where:\n  \t    // - User's role was deleted\n  \t    // - User was never assigned a custom role\n  \t    if (customRoles.length === 0) {\n  \t        // User has no custom roles, so they should have all owner permissions\n  \t        return true;\n  \t    }\n  \t    \n  \t    // Check if any of the user's custom roles has this permission\n  \t    for (const roleName of customRoles) {\n  \t        const rolePermissions = allRoles[roleName];\n  \t        if (rolePermissions && Array.isArray(rolePermissions) && rolePermissions.includes(permission)) {\n  \t            return true;\n  \t        }\n  \t    }\n\n  \t    // User has custom roles but none of them grant this permission\n  \t    return false;\n  \t}\n\n  \t// Get creator role permissions (with fallback logic)\n  \tfunction getCreatorRolePermissions(memberRoles, creatorRole) {\n  \t    // If creatorRole specified and exists in memberRoles\n  \t    if (creatorRole && memberRoles && memberRoles[creatorRole]) {\n  \t        return memberRoles[creatorRole];\n  \t    }\n\n  \t    // If no creatorRole specified, find role with all owner permissions\n  \t    if (memberRoles) {\n  \t        for (const [roleName, permissions] of Object.entries(memberRoles)) {\n  \t            if (roleHasAllOwnerPermissions(roleName, memberRoles)) {\n  \t                return permissions;\n  \t            }\n  \t        }\n  \t        // If no role has all permissions, use first role\n  \t        const firstRole = Object.keys(memberRoles)[0];\n  \t        if (firstRole) {\n  \t            return memberRoles[firstRole];\n  \t        }\n  \t    }\n\n  \t    // Fallback: return empty array (will use Appwrite default: owner)\n  \t    return [];\n  \t}\n\n  \t// Initialize role abstraction\n  \tfunction initializeTeamsRoles() {\n  \t    if (typeof Alpine === 'undefined') {\n  \t        return;\n  \t    }\n\n  \t    const config = window.InduxAppwriteAuthConfig;\n  \t    if (!config) {\n  \t        return;\n  \t    }\n\n  \t    // Wait for store to be initialized\n  \t    const waitForStore = () => {\n  \t        const store = Alpine.store('auth');\n  \t        if (store && !store._rolesInitialized) {\n  \t            // Add role abstraction methods to store\n  \t            store.getOwnerPermissions = function() {\n  \t                return getOwnerPermissions();\n  \t            };\n\n  \t            store.validateRoleConfig = async function() {\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                const memberRoles = appwriteConfig?.memberRoles || null;\n  \t                const creatorRole = appwriteConfig?.creatorRole || null;\n  \t                return validateRoleConfig(memberRoles, creatorRole);\n  \t            };\n\n  \t            store.roleRequiresOwner = async function(roleName) {\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                const memberRoles = appwriteConfig?.memberRoles || null;\n  \t                return roleRequiresOwner(roleName, memberRoles);\n  \t            };\n\n  \t            store.roleHasAllOwnerPermissions = async function(roleName) {\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                const memberRoles = appwriteConfig?.memberRoles || null;\n  \t                return roleHasAllOwnerPermissions(roleName, memberRoles);\n  \t            };\n\n  \t            store.getUserGeneratedRoles = async function(teamId) {\n  \t                if (!this._appwrite) {\n  \t                    return null;\n  \t                }\n  \t                return await getUserGeneratedRoles(teamId, this._appwrite);\n  \t            };\n\n  \t            store.getAllRoles = async function(teamId) {\n  \t                // Check if team still exists before trying to access preferences\n  \t                if (teamId && this.teams && !this.teams.find(t => t.$id === teamId)) {\n  \t                    // Team was deleted, return only memberRoles (no user-generated roles)\n  \t                    const appwriteConfig = await config.getAppwriteConfig();\n  \t                    return appwriteConfig?.memberRoles || null;\n  \t                }\n  \t                \n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                let memberRoles = appwriteConfig?.memberRoles || null;\n  \t                \n  \t                // Filter out deleted template roles from memberRoles\n  \t                if (memberRoles && teamId && window.InduxAppwriteAuthTeamsRolesDefaults && this.getDeletedTemplateRoles) {\n  \t                    const deletedRoles = await this.getDeletedTemplateRoles(teamId);\n  \t                    if (deletedRoles && deletedRoles.length > 0) {\n  \t                        // Create a filtered copy of memberRoles without deleted template roles\n  \t                        const filteredMemberRoles = { ...memberRoles };\n  \t                        for (const deletedRoleName of deletedRoles) {\n  \t                            delete filteredMemberRoles[deletedRoleName];\n  \t                        }\n  \t                        memberRoles = filteredMemberRoles;\n  \t                    }\n  \t                }\n  \t                \n  \t                // Always check for user-generated roles (stored in team preferences)\n  \t                let userRoles = null;\n  \t                if (teamId && this._appwrite) {\n  \t                    userRoles = await this.getUserGeneratedRoles(teamId);\n  \t                }\n  \t                \n  \t                return mergeRoles(memberRoles, userRoles);\n  \t            };\n\n  \t            store.normalizeRolesForAppwrite = async function(customRoles, teamId = null) {\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                const memberRoles = appwriteConfig?.memberRoles || null;\n  \t                \n  \t                // Always check for user-generated roles (stored in team preferences)\n  \t                let userRoles = null;\n  \t                if (teamId && this._appwrite) {\n  \t                    userRoles = await this.getUserGeneratedRoles(teamId);\n  \t                }\n  \t                \n  \t                return normalizeRolesForAppwrite(customRoles, memberRoles, userRoles);\n  \t            };\n\n  \t            store.normalizeRolesForDisplay = async function(appwriteRoles, teamId = null) {\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                const memberRoles = appwriteConfig?.memberRoles || null;\n  \t                \n  \t                // Always check for user-generated roles (stored in team preferences)\n  \t                let userRoles = null;\n  \t                if (teamId && this._appwrite) {\n  \t                    userRoles = await this.getUserGeneratedRoles(teamId);\n  \t                }\n  \t                \n  \t                return normalizeRolesForDisplay(appwriteRoles, memberRoles, userRoles);\n  \t            };\n\n  \t            store.getPrimaryDisplayRole = async function(appwriteRoles, teamId = null) {\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                const memberRoles = appwriteConfig?.memberRoles || null;\n  \t                \n  \t                // Always check for user-generated roles (stored in team preferences)\n  \t                let userRoles = null;\n  \t                if (teamId && this._appwrite) {\n  \t                    userRoles = await this.getUserGeneratedRoles(teamId);\n  \t                }\n  \t                \n  \t                return getPrimaryDisplayRole(appwriteRoles, memberRoles, userRoles);\n  \t            };\n\n  \t            store.hasPermission = async function(userRoles, permission, teamId = null) {\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                const memberRoles = appwriteConfig?.memberRoles || null;\n  \t                \n  \t                // Always check for user-generated roles (stored in team preferences)\n  \t                let userGenRoles = null;\n  \t                if (teamId && this._appwrite) {\n  \t                    userGenRoles = await this.getUserGeneratedRoles(teamId);\n  \t                }\n  \t                \n  \t                return hasPermission(userRoles, permission, memberRoles, userGenRoles);\n  \t            };\n\n  \t            store.getCreatorRolePermissions = async function() {\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                const memberRoles = appwriteConfig?.memberRoles || null;\n  \t                const creatorRole = appwriteConfig?.creatorRole || null;\n  \t                return getCreatorRolePermissions(memberRoles, creatorRole);\n  \t            };\n\n  \t            // Check if custom roles are configured\n  \t            store.hasCustomRoles = async function() {\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                const memberRoles = appwriteConfig?.memberRoles || null;\n  \t                return memberRoles && Object.keys(memberRoles).length > 0;\n  \t            };\n\n  \t            // Check if user can manage roles (has manageRoles permission)\n  \t            store.canManageRoles = async function() {\n  \t                if (!this.currentTeam || !this.currentTeamMemberships || !this.user) {\n  \t                    return false;\n  \t                }\n  \t                return await this.hasTeamPermission('manageRoles');\n  \t            };\n  \t            \n  \t            // Alias for backwards compatibility\n  \t            store.canCreateRoles = store.canManageRoles;\n\n  \t            store._rolesInitialized = true;\n  \t        } else if (!store) {\n  \t            setTimeout(waitForStore, 50);\n  \t        }\n  \t    };\n\n  \t    setTimeout(waitForStore, 100);\n  \t}\n\n  \t// Initialize when Alpine is ready\n  \tdocument.addEventListener('alpine:init', () => {\n  \t    try {\n  \t        initializeTeamsRoles();\n  \t    } catch (error) {\n  \t        // Failed to initialize teams roles\n  \t    }\n  \t});\n\n  \t// Also try immediately if Alpine is already available\n  \tif (typeof Alpine !== 'undefined') {\n  \t    try {\n  \t        initializeTeamsRoles();\n  \t    } catch (error) {\n  \t        // Alpine might not be fully initialized yet, that's okay\n  \t    }\n  \t}\n\n  \t// Export roles interface\n  \twindow.InduxAppwriteAuthTeamsRoles = {\n  \t    initialize: initializeTeamsRoles,\n  \t    getOwnerPermissions,\n  \t    validateRoleConfig,\n  \t    roleRequiresOwner,\n  \t    roleHasAllOwnerPermissions,\n  \t    getUserGeneratedRoles,\n  \t    mergeRoles,\n  \t    normalizeRolesForAppwrite,\n  \t    normalizeRolesForDisplay,\n  \t    getPrimaryDisplayRole,\n  \t    hasPermission,\n  \t    getCreatorRolePermissions\n  \t};\n\n\n  \t/* Auth teams - User-generated roles management */\n\n  \t// Add user-generated role methods to auth store\n  \tfunction initializeTeamsUserRoles() {\n  \t    if (typeof Alpine === 'undefined') {\n  \t        return;\n  \t    }\n\n  \t    const config = window.InduxAppwriteAuthConfig;\n  \t    if (!config) {\n  \t        return;\n  \t    }\n\n  \t    // Wait for store to be initialized\n  \t    const waitForStore = () => {\n  \t        const store = Alpine.store('auth');\n  \t        if (store && !store.createUserRole) {\n  \t            // Create user-generated role\n  \t            store.createUserRole = async function(teamId, roleName, permissions) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    return { success: false, error: 'You must be signed in to create roles' };\n  \t                }\n\n  \t                // Check if user has manageRoles permission\n  \t                if (!this.hasTeamPermission || !await this.hasTeamPermission('manageRoles')) {\n  \t                    return { success: false, error: 'You do not have permission to create roles' };\n  \t                }\n\n  \t                if (!roleName || !roleName.trim()) {\n  \t                    return { success: false, error: 'Role name is required' };\n  \t                }\n\n  \t                if (!Array.isArray(permissions)) {\n  \t                    return { success: false, error: 'Permissions must be an array' };\n  \t                }\n\n  \t                this.inProgress = true;\n  \t                this.error = null;\n\n  \t                try {\n  \t                    // Get current team preferences (preserve all existing prefs)\n  \t                    const currentPrefs = await this._appwrite.teams.getPrefs({ teamId });\n  \t                    // Ensure we have a fresh copy of roles, not a shared reference\n  \t                    const currentRoles = currentPrefs?.roles ? { ...currentPrefs.roles } : {};\n\n  \t                    // Check if role already exists\n  \t                    if (currentRoles[roleName]) {\n  \t                        return { success: false, error: `Role \"${roleName}\" already exists` };\n  \t                    }\n\n  \t                    // Add new role\n  \t                    const updatedRoles = {\n  \t                        ...currentRoles,\n  \t                        [roleName]: permissions\n  \t                    };\n\n  \t                    // Update team preferences (preserve all other preferences)\n  \t                    const updatedPrefs = {\n  \t                        ...currentPrefs,\n  \t                        roles: updatedRoles\n  \t                    };\n  \t                    await this._appwrite.teams.updatePrefs({\n  \t                        teamId: teamId,\n  \t                        prefs: updatedPrefs\n  \t                    });\n\n  \t                    // Refresh permission cache to update UI\n  \t                    if (this.refreshPermissionCache) {\n  \t                        await this.refreshPermissionCache();\n  \t                    }\n  \t                    \n  \t                    // Also update per-team cache for this specific team\n  \t                    if (this.getAllRoles) {\n  \t                        const allRoles = await this.getAllRoles(teamId);\n  \t                        const rolesCopy = allRoles ? { ...allRoles } : {};\n  \t                        if (!this._allRolesCacheByTeam) this._allRolesCacheByTeam = {};\n  \t                        this._allRolesCacheByTeam[teamId] = rolesCopy;\n  \t                    }\n\n  \t                    return { success: true, role: { name: roleName, permissions } };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                } finally {\n  \t                    this.inProgress = false;\n  \t                }\n  \t            };\n  \t            \n  \t            // Convenience method: create role using newRoleName and newRolePermissions properties\n  \t            store.createRoleFromInputs = async function(teamId) {\n  \t                if (!teamId) {\n  \t                    return { success: false, error: 'Team ID is required' };\n  \t                }\n  \t                \n  \t                // Ensure role name is a string\n  \t                const roleName = String(this.newRoleName || '').trim();\n  \t                // newRolePermissions is now an array (from checkboxes)\n  \t                const permissions = Array.isArray(this.newRolePermissions) \n  \t                    ? this.newRolePermissions.filter(p => p && typeof p === 'string')\n  \t                    : [];\n  \t                \n  \t                if (!roleName) {\n  \t                    return { success: false, error: 'Role name is required' };\n  \t                }\n  \t                \n  \t                const result = await this.createUserRole(teamId, roleName, permissions);\n  \t                if (result.success) {\n  \t                    this.newRoleName = ''; // Clear inputs\n  \t                    this.newRolePermissions = []; // Clear permissions array\n  \t                }\n  \t                return result;\n  \t            };\n\n  \t            // Update user-generated role (permissions only)\n  \t            store.updateUserRole = async function(teamId, roleName, permissions) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    return { success: false, error: 'You must be signed in to update roles' };\n  \t                }\n\n  \t                // Check if user has manageRoles permission\n  \t                if (!this.hasTeamPermission || !await this.hasTeamPermission('manageRoles')) {\n  \t                    return { success: false, error: 'You do not have permission to update roles' };\n  \t                }\n\n  \t                if (!roleName || !roleName.trim()) {\n  \t                    return { success: false, error: 'Role name is required' };\n  \t                }\n\n  \t                if (!Array.isArray(permissions)) {\n  \t                    return { success: false, error: 'Permissions must be an array' };\n  \t                }\n\n  \t                this.inProgress = true;\n  \t                this.error = null;\n\n  \t                try {\n  \t                    // Get current team preferences (preserve all existing prefs)\n  \t                    const currentPrefs = await this._appwrite.teams.getPrefs({ teamId });\n  \t                    // Ensure we have a fresh copy of roles, not a shared reference\n  \t                    const currentRoles = currentPrefs?.roles ? { ...currentPrefs.roles } : {};\n\n  \t                    // Check if role exists\n  \t                    if (!currentRoles[roleName]) {\n  \t                        return { success: false, error: `Role \"${roleName}\" does not exist` };\n  \t                    }\n\n  \t                    // Update role permissions\n  \t                    const updatedRoles = {\n  \t                        ...currentRoles,\n  \t                        [roleName]: permissions\n  \t                    };\n\n  \t                    // Update team preferences (preserve all other preferences)\n  \t                    const updatedPrefs = {\n  \t                        ...currentPrefs,\n  \t                        roles: updatedRoles\n  \t                    };\n  \t                    await this._appwrite.teams.updatePrefs({\n  \t                        teamId: teamId,\n  \t                        prefs: updatedPrefs\n  \t                    });\n\n  \t                    // Refresh permission cache to update UI\n  \t                    if (this.refreshPermissionCache) {\n  \t                        await this.refreshPermissionCache();\n  \t                    }\n  \t                    \n  \t                    // Also update per-team cache for this specific team (create new object reference for reactivity)\n  \t                    if (this.getAllRoles) {\n  \t                        const allRoles = await this.getAllRoles(teamId);\n  \t                        const rolesCopy = allRoles ? { ...allRoles } : {};\n  \t                        if (!this._allRolesCacheByTeam) this._allRolesCacheByTeam = {};\n  \t                        this._allRolesCacheByTeam[teamId] = { ...rolesCopy };\n  \t                        \n  \t                        // Also update _allRolesCache if this is the current team\n  \t                        if (this.currentTeam && this.currentTeam.$id === teamId) {\n  \t                            this._allRolesCache = { ...rolesCopy };\n  \t                        }\n  \t                    }\n\n  \t                    return { success: true, role: { name: roleName, permissions } };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                } finally {\n  \t                    this.inProgress = false;\n  \t                }\n  \t            };\n  \t            \n  \t            // Rename a user-generated role\n  \t            store.renameUserRole = async function(teamId, oldRoleName, newRoleName) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    return { success: false, error: 'You must be signed in to rename roles' };\n  \t                }\n\n  \t                // Check if user has manageRoles permission\n  \t                if (!this.hasTeamPermission || !await this.hasTeamPermission('manageRoles')) {\n  \t                    return { success: false, error: 'You do not have permission to rename roles' };\n  \t                }\n\n  \t                oldRoleName = String(oldRoleName || '').trim();\n  \t                newRoleName = String(newRoleName || '').trim();\n\n  \t                if (!oldRoleName || !newRoleName) {\n  \t                    return { success: false, error: 'Both old and new role names are required' };\n  \t                }\n\n  \t                if (oldRoleName === newRoleName) {\n  \t                    return { success: false, error: 'New role name must be different from the current name' };\n  \t                }\n\n  \t                // Check if role is permanent (cannot be renamed)\n  \t                if (this.isRolePermanent && await this.isRolePermanent(teamId, oldRoleName)) {\n  \t                    return { success: false, error: 'Permanent roles cannot be renamed' };\n  \t                }\n\n  \t                this.inProgress = true;\n  \t                this.error = null;\n\n  \t                try {\n  \t                    // Get current team preferences (preserve all existing prefs)\n  \t                    const currentPrefs = await this._appwrite.teams.getPrefs({ teamId });\n  \t                    // Ensure we have a fresh copy of roles, not a shared reference\n  \t                    const currentRoles = currentPrefs?.roles ? { ...currentPrefs.roles } : {};\n\n  \t                    // Check if old role exists\n  \t                    if (!currentRoles[oldRoleName]) {\n  \t                        return { success: false, error: `Role \"${oldRoleName}\" does not exist` };\n  \t                    }\n\n  \t                    // Check if new role name already exists\n  \t                    if (currentRoles[newRoleName]) {\n  \t                        return { success: false, error: `Role \"${newRoleName}\" already exists` };\n  \t                    }\n\n  \t                    // Get permissions from old role\n  \t                    const permissions = Array.isArray(currentRoles[oldRoleName]) \n  \t                        ? [...currentRoles[oldRoleName]] \n  \t                        : [];\n\n  \t                    // Create updated roles object: remove old, add new\n  \t                    const updatedRoles = { ...currentRoles };\n  \t                    delete updatedRoles[oldRoleName];\n  \t                    updatedRoles[newRoleName] = permissions;\n\n  \t                    // Update team preferences (preserve all other preferences)\n  \t                    const updatedPrefs = {\n  \t                        ...currentPrefs,\n  \t                        roles: updatedRoles\n  \t                    };\n  \t                    await this._appwrite.teams.updatePrefs({\n  \t                        teamId: teamId,\n  \t                        prefs: updatedPrefs\n  \t                    });\n\n  \t                    // Update all memberships that have the old role name to use the new role name\n  \t                    // This prevents data drift where role names in memberships don't match role definitions\n  \t                    try {\n  \t                        if (this.listMemberships) {\n  \t                            const membershipsResult = await this.listMemberships(teamId);\n  \t                            if (membershipsResult && membershipsResult.success && membershipsResult.memberships) {\n  \t                                const memberships = membershipsResult.memberships;\n  \t                                let updatedCount = 0;\n  \t                                \n  \t                                for (const membership of memberships) {\n  \t                                    if (membership.roles && Array.isArray(membership.roles)) {\n  \t                                        // Check if membership has the old role name\n  \t                                        const hasOldRole = membership.roles.includes(oldRoleName);\n  \t                                        \n  \t                                        if (hasOldRole) {\n  \t                                            // Replace old role name with new role name\n  \t                                            const updatedRoles = membership.roles.map(role => \n  \t                                                role === oldRoleName ? newRoleName : role\n  \t                                            );\n  \t                                            \n  \t                                            // Update membership with new roles\n  \t                                            if (this.updateMembership) {\n  \t                                                await this.updateMembership(teamId, membership.$id, updatedRoles);\n  \t                                                updatedCount++;\n  \t                                            }\n  \t                                        }\n  \t                                    }\n  \t                                }\n  \t                            }\n  \t                        }\n  \t                    } catch (membershipError) {\n  \t                        // Log error but don't fail the rename operation\n  \t                    }\n\n  \t                    // Refresh permission cache to update UI\n  \t                    if (this.refreshPermissionCache) {\n  \t                        await this.refreshPermissionCache();\n  \t                    }\n  \t                    \n  \t                    // Refresh memberships to update UI with new role names\n  \t                    if (this.listMemberships && this.currentTeam && this.currentTeam.$id === teamId) {\n  \t                        await this.listMemberships(teamId);\n  \t                    }\n  \t                    \n  \t                    // Also update per-team cache for this specific team (create new object reference for reactivity)\n  \t                    if (this.getAllRoles) {\n  \t                        const allRoles = await this.getAllRoles(teamId);\n  \t                        const rolesCopy = allRoles ? { ...allRoles } : {};\n  \t                        if (!this._allRolesCacheByTeam) this._allRolesCacheByTeam = {};\n  \t                        this._allRolesCacheByTeam[teamId] = { ...rolesCopy };\n  \t                        \n  \t                        // Also update _allRolesCache if this is the current team\n  \t                        if (this.currentTeam && this.currentTeam.$id === teamId) {\n  \t                            this._allRolesCache = { ...rolesCopy };\n  \t                        }\n  \t                    }\n\n  \t                    return { success: true, role: { name: newRoleName, permissions } };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                } finally {\n  \t                    this.inProgress = false;\n  \t                }\n  \t            };\n\n  \t            // Delete user-generated role\n  \t            store.deleteUserRole = async function(teamId, roleName) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    return { success: false, error: 'You must be signed in to delete roles' };\n  \t                }\n\n  \t                // Check if user has manageRoles permission\n  \t                if (!this.hasTeamPermission || !await this.hasTeamPermission('manageRoles')) {\n  \t                    return { success: false, error: 'You do not have permission to delete roles' };\n  \t                }\n\n  \t                if (!roleName || !roleName.trim()) {\n  \t                    return { success: false, error: 'Role name is required' };\n  \t                }\n  \t                \n  \t                // Check if role is permanent (cannot be deleted)\n  \t                if (this.isRolePermanent && await this.isRolePermanent(teamId, roleName)) {\n  \t                    return { success: false, error: 'This role cannot be deleted' };\n  \t                }\n\n  \t                this.inProgress = true;\n  \t                this.error = null;\n\n  \t                try {\n  \t                    // Check if role is assigned to any members (UI/platform requirement)\n  \t                    if (this.listMemberships) {\n  \t                        const membershipsResult = await this.listMemberships(teamId);\n  \t                        if (membershipsResult.success) {\n  \t                            const memberships = membershipsResult.memberships || [];\n  \t                            const roleInUse = memberships.some(m => \n  \t                                m.roles && Array.isArray(m.roles) && m.roles.includes(roleName)\n  \t                            );\n  \t                            \n  \t                            if (roleInUse) {\n  \t                                return { \n  \t                                    success: false, \n  \t                                    error: `Cannot delete role \"${roleName}\" - it is assigned to one or more team members. Please reassign members to other roles first.` \n  \t                                };\n  \t                            }\n  \t                        }\n  \t                    }\n\n  \t                    // Get current team preferences (preserve all existing prefs)\n  \t                    const currentPrefs = await this._appwrite.teams.getPrefs({ teamId });\n  \t                    // Ensure we have a fresh copy of roles, not a shared reference\n  \t                    const currentRoles = currentPrefs?.roles ? { ...currentPrefs.roles } : {};\n\n  \t                    // Check if role exists in team preferences OR if it's a template role (which might only exist in manifest)\n  \t                    const roleExistsInPrefs = !!currentRoles[roleName];\n  \t                    let isTemplateRole = false;\n  \t                    if (!roleExistsInPrefs && window.InduxAppwriteAuthTeamsRolesDefaults && this.isRoleTemplate) {\n  \t                        isTemplateRole = await this.isRoleTemplate(teamId, roleName);\n  \t                    }\n  \t                    \n  \t                    if (!roleExistsInPrefs && !isTemplateRole) {\n  \t                        return { success: false, error: `Role \"${roleName}\" does not exist` };\n  \t                    }\n\n  \t                    // Track deleted template role (don't recreate it, but allow reapplying)\n  \t                    // Note: isTemplateRole was already checked above if role doesn't exist in prefs\n  \t                    if (!isTemplateRole && window.InduxAppwriteAuthTeamsRolesDefaults && this.isRoleTemplate) {\n  \t                        isTemplateRole = await this.isRoleTemplate(teamId, roleName);\n  \t                    }\n  \t                    if (isTemplateRole) {\n  \t                        // Store deletion in team preferences (shared across all team members)\n  \t                        // This ensures all team members see the role as deleted, not just the user who deleted it\n  \t                        try {\n  \t                            // Get current team preferences\n  \t                            const currentPrefs = await this._appwrite.teams.getPrefs({ teamId });\n  \t                            \n  \t                            // Get existing deleted template roles list\n  \t                            let deletedRoles = [];\n  \t                            if (currentPrefs && currentPrefs.deletedTemplateRoles && Array.isArray(currentPrefs.deletedTemplateRoles)) {\n  \t                                deletedRoles = [...currentPrefs.deletedTemplateRoles];\n  \t                            }\n  \t                            \n  \t                            // Add role to deleted list if not already there\n  \t                            if (!deletedRoles.includes(roleName)) {\n  \t                                deletedRoles.push(roleName);\n  \t                                \n  \t                                // Update team preferences with deleted roles list\n  \t                                const updatedPrefs = {\n  \t                                    ...currentPrefs,\n  \t                                    deletedTemplateRoles: deletedRoles\n  \t                                };\n  \t                                \n  \t                                await this._appwrite.teams.updatePrefs({\n  \t                                    teamId: teamId,\n  \t                                    prefs: updatedPrefs\n  \t                                });\n  \t                            }\n  \t                        } catch (e) {\n  \t                            // Fallback to localStorage for backwards compatibility\n  \t                            try {\n  \t                                const userId = this.user?.$id;\n  \t                                if (userId) {\n  \t                                    const key = `indux:deleted-roles:${userId}:${teamId}`;\n  \t                                    const deleted = JSON.parse(localStorage.getItem(key) || '[]');\n  \t                                    if (!deleted.includes(roleName)) {\n  \t                                        deleted.push(roleName);\n  \t                                        localStorage.setItem(key, JSON.stringify(deleted));\n  \t                                    }\n  \t                                }\n  \t                            } catch (e2) {\n  \t                                // Failed to track deleted role in localStorage\n  \t                            }\n  \t                        }\n  \t                    }\n\n  \t                    // Remove role from team preferences (if it exists there)\n  \t                    const updatedRoles = { ...currentRoles };\n  \t                    if (roleExistsInPrefs) {\n  \t                        delete updatedRoles[roleName];\n  \t                    }\n\n  \t                    // Update team preferences only if role existed in prefs (preserve all other preferences)\n  \t                    if (roleExistsInPrefs) {\n  \t                        const updatedPrefs = {\n  \t                            ...currentPrefs,\n  \t                            roles: updatedRoles\n  \t                        };\n  \t                        await this._appwrite.teams.updatePrefs({\n  \t                            teamId: teamId,\n  \t                            prefs: updatedPrefs\n  \t                        });\n  \t                    }\n\n  \t                    // Update per-team cache for this specific team (create new object reference for reactivity)\n  \t                    if (this.getAllRoles) {\n  \t                        const allRoles = await this.getAllRoles(teamId);\n  \t                        const rolesCopy = allRoles ? { ...allRoles } : {};\n  \t                        if (!this._allRolesCacheByTeam) this._allRolesCacheByTeam = {};\n  \t                        // Create new object reference to ensure Alpine reactivity\n  \t                        this._allRolesCacheByTeam[teamId] = { ...rolesCopy };\n  \t                        \n  \t                        // Also update _allRolesCache if this is the current team\n  \t                        if (this.currentTeam && this.currentTeam.$id === teamId) {\n  \t                            this._allRolesCache = { ...rolesCopy };\n  \t                        }\n  \t                        \n  \t                        // Update permanent role cache for remaining roles\n  \t                        if (!this._rolePermanentCache) this._rolePermanentCache = {};\n  \t                        if (!this._rolePermanentCache[teamId]) this._rolePermanentCache[teamId] = {};\n  \t                        if (this.isRolePermanent) {\n  \t                            for (const rName of Object.keys(rolesCopy)) {\n  \t                                await this.isRolePermanent(teamId, rName);\n  \t                            }\n  \t                            // Remove deleted role from cache\n  \t                            if (this._rolePermanentCache[teamId][roleName] !== undefined) {\n  \t                                delete this._rolePermanentCache[teamId][roleName];\n  \t                            }\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    // Refresh permission cache to update UI (after cache updates)\n  \t                    if (this.refreshPermissionCache) {\n  \t                        await this.refreshPermissionCache();\n  \t                    }\n\n  \t                    return { success: true };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                } finally {\n  \t                    this.inProgress = false;\n  \t                }\n  \t            };\n\n  \t            // Check if role is user-generated (stored in team preferences, not in manifest)\n  \t            store.isUserGeneratedRole = async function(teamId, roleName) {\n  \t                if (!this._appwrite) {\n  \t                    return false;\n  \t                }\n\n  \t                try {\n  \t                    const userRoles = await this.getUserGeneratedRoles(teamId);\n  \t                    return userRoles && userRoles[roleName] !== undefined;\n  \t                } catch (error) {\n  \t                    return false;\n  \t                }\n  \t            };\n  \t        } else if (!store) {\n  \t            setTimeout(waitForStore, 50);\n  \t        }\n  \t    };\n\n  \t    setTimeout(waitForStore, 100);\n  \t}\n\n  \t// Initialize when Alpine is ready\n  \tdocument.addEventListener('alpine:init', () => {\n  \t    try {\n  \t        initializeTeamsUserRoles();\n  \t    } catch (error) {\n  \t        // Failed to initialize teams user roles\n  \t    }\n  \t});\n\n  \t// Also try immediately if Alpine is already available\n  \tif (typeof Alpine !== 'undefined') {\n  \t    try {\n  \t        initializeTeamsUserRoles();\n  \t    } catch (error) {\n  \t        // Alpine might not be fully initialized yet, that's okay\n  \t    }\n  \t}\n\n  \t// Export user roles interface\n  \twindow.InduxAppwriteAuthTeamsUserRoles = {\n  \t    initialize: initializeTeamsUserRoles\n  \t};\n\n\n\n  \t/* Auth teams - Membership operations */\n\n  \t// Add membership methods to auth store\n  \tfunction initializeTeamsMembers() {\n  \t    if (typeof Alpine === 'undefined') {\n  \t        return;\n  \t    }\n\n  \t    const config = window.InduxAppwriteAuthConfig;\n  \t    if (!config) {\n  \t        return;\n  \t    }\n\n  \t    // Wait for store to be initialized\n  \t    const waitForStore = () => {\n  \t        const store = Alpine.store('auth');\n  \t        if (store && !store.inviteMember) {\n  \t            // Invite member to team\n  \t            store.inviteMember = async function(teamId, roles, email = null, userId = null, phone = null, url = null, name = null) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    return { success: false, error: 'You must be signed in to invite members' };\n  \t                }\n\n  \t                if (!email && !userId && !phone) {\n  \t                    return { success: false, error: 'You must provide email, userId, or phone' };\n  \t                }\n\n  \t                // Use current URL as default redirect if not provided\n  \t                if (!url) {\n  \t                    const currentUrl = new URL(window.location.href);\n  \t                    url = `${currentUrl.origin}${currentUrl.pathname}`;\n  \t                }\n\n  \t                this.inProgress = true;\n  \t                this.error = null;\n\n  \t                try {\n  \t                    // Ensure roles is an array\n  \t                    let rolesArray = Array.isArray(roles) ? roles : (roles ? [roles] : []);\n  \t                    \n  \t                    // Normalize roles for Appwrite (add \"owner\" if custom roles require it)\n  \t                    let normalizedRoles = rolesArray;\n  \t                    if (this.normalizeRolesForAppwrite && rolesArray.length > 0) {\n  \t                        normalizedRoles = await this.normalizeRolesForAppwrite(rolesArray, teamId);\n  \t                    }\n  \t                    \n  \t                    // If no roles provided, use default \"owner\" role (Appwrite requires at least one role)\n  \t                    if (!normalizedRoles || normalizedRoles.length === 0) {\n  \t                        normalizedRoles = ['owner'];\n  \t                    }\n\n  \t                    // Build the membership creation params (only include defined values)\n  \t                    const membershipParams = {\n  \t                        teamId: teamId,\n  \t                        roles: normalizedRoles\n  \t                    };\n  \t                    \n  \t                    // Only include email, userId, or phone if provided (not empty strings)\n  \t                    if (email && email.trim()) {\n  \t                        membershipParams.email = email.trim();\n  \t                    } else if (userId && userId.trim()) {\n  \t                        membershipParams.userId = userId.trim();\n  \t                    } else if (phone && phone.trim()) {\n  \t                        membershipParams.phone = phone.trim();\n  \t                    }\n  \t                    \n  \t                    // Include optional parameters if provided\n  \t                    if (url && url.trim()) {\n  \t                        membershipParams.url = url.trim();\n  \t                    }\n  \t                    if (name && name.trim()) {\n  \t                        membershipParams.name = name.trim();\n  \t                    }\n\n  \t                    const result = await this._appwrite.teams.createMembership(membershipParams);\n\n  \t                    return { success: true, membership: result };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                } finally {\n  \t                    this.inProgress = false;\n  \t                }\n  \t            };\n\n  \t            // List team memberships\n  \t            store.listMemberships = async function(teamId, queries = [], search = '') {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    return { success: false, error: 'You must be signed in to list memberships' };\n  \t                }\n\n  \t                try {\n  \t                    const params = {\n  \t                        teamId: teamId,\n  \t                        queries: queries\n  \t                    };\n  \t                    if (search && search.trim().length > 0) {\n  \t                        params.search = search;\n  \t                    }\n  \t                    const result = await this._appwrite.teams.listMemberships(params);\n  \t                    let memberships = result.memberships || [];\n  \t                    \n  \t                    // Enhance memberships with user email if missing\n  \t                    // Appwrite membership objects have 'email' for pending invites, confirmed members need user lookup\n  \t                    for (const membership of memberships) {\n  \t                        // Log all membership properties to debug\n  \t                        const allProps = Object.keys(membership);\n  \t                        const allPropValues = {};\n  \t                        allProps.forEach(prop => {\n  \t                            const value = membership[prop];\n  \t                            // Only log string/number values, skip objects/arrays\n  \t                            if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n  \t                                allPropValues[prop] = value;\n  \t                            } else if (value && typeof value === 'object') {\n  \t                                allPropValues[prop] = Array.isArray(value) ? `[Array(${value.length})]` : '[Object]';\n  \t                            }\n  \t                        });\n  \t                        \n  \t                        // For pending invites, email should already be in membership.email\n  \t                        // For confirmed members, we need to look it up\n  \t                        if (!membership.email && !membership.userEmail) {\n  \t                            try {\n  \t                                // For the current user, use the auth store's user object\n  \t                                if (this.user && this.user.$id === membership.userId && this.user.email) {\n  \t                                    membership.email = this.user.email;\n  \t                                    membership.userEmail = this.user.email;\n  \t                                } else if (membership.userId && membership.confirm === true) {\n  \t                                    // For confirmed members, try to fetch user details\n  \t                                    // Note: This requires 'users.read' permission\n  \t                                    try {\n  \t                                        // Check if users service is available\n  \t                                        if (!this._appwrite || !this._appwrite.users || typeof this._appwrite.users.get !== 'function') {\n  \t                                            console.warn('[Indux Appwrite Auth] Users service not available on Appwrite client');\n  \t                                        } else {\n  \t                                            const user = await this._appwrite.users.get({ userId: membership.userId });\n  \t                                            if (user && user.email) {\n  \t                                                membership.email = user.email;\n  \t                                                membership.userEmail = user.email;\n  \t                                            } else {\n  \t                                                console.warn('[Indux Appwrite Auth] User fetched but no email found');\n  \t                                            }\n  \t                                        }\n  \t                                    } catch (e) {\n  \t                                        console.warn('[Indux Appwrite Auth] Failed to fetch user:', e.message);\n  \t                                        // Silently fail if we can't fetch user (permission issue or user deleted)\n  \t                                    }\n  \t                                } else if (membership.confirm === false) {\n  \t                                    // For pending invites, try to get email from membership object\n  \t                                    // Appwrite may store it in different properties\n  \t                                    const possibleEmailProps = ['email', 'userEmail', 'inviteeEmail', 'invitedEmail', 'userName'];\n  \t                                    let foundEmail = null;\n  \t                                    for (const prop of possibleEmailProps) {\n  \t                                        const value = membership[prop];\n  \t                                        if (value && typeof value === 'string' && value.includes('@')) {\n  \t                                            foundEmail = value;\n  \t                                            break;\n  \t                                        }\n  \t                                    }\n  \t                                    if (foundEmail) {\n  \t                                        membership.email = foundEmail;\n  \t                                        membership.userEmail = foundEmail;\n  \t                                    } else {\n  \t                                        // If still not found and we have userId, try fetching user\n  \t                                        if (membership.userId) {\n  \t                                            try {\n  \t                                                // Check if users service is available\n  \t                                                if (!this._appwrite || !this._appwrite.users || typeof this._appwrite.users.get !== 'function') {\n  \t                                                    console.warn('[Indux Appwrite Auth] Users service not available for pending invite lookup');\n  \t                                                } else {\n  \t                                                    const user = await this._appwrite.users.get({ userId: membership.userId });\n  \t                                                    if (user && user.email) {\n  \t                                                        membership.email = user.email;\n  \t                                                        membership.userEmail = user.email;\n  \t                                                    }\n  \t                                                }\n  \t                                            } catch (e) {\n  \t                                                console.warn('[Indux Appwrite Auth] Failed to fetch user for pending invite:', e.message);\n  \t                                            }\n  \t                                        } else {\n  \t                                            console.warn('[Indux Appwrite Auth] Pending invite has no email and no userId');\n  \t                                        }\n  \t                                    }\n  \t                                }\n  \t                            } catch (e) {\n  \t                                // Silently continue if user lookup fails\n  \t                            }\n  \t                        }\n  \t                        // Ensure both properties are set for consistency\n  \t                        if (membership.email && !membership.userEmail) {\n  \t                            membership.userEmail = membership.email;\n  \t                        }\n  \t                        if (membership.userEmail && !membership.email) {\n  \t                            membership.email = membership.userEmail;\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    // Normalize roles for display (filter \"owner\" if custom role replaces it)\n  \t                    if (this.normalizeRolesForDisplay) {\n  \t                        for (const membership of memberships) {\n  \t                            if (membership.roles && Array.isArray(membership.roles)) {\n  \t                                membership.displayRoles = await this.normalizeRolesForDisplay(membership.roles, teamId);\n  \t                            }\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    // Update currentTeamMemberships if this is the current team\n  \t                    // Use spread operator to create new array reference for Alpine reactivity\n  \t                    if (this.currentTeam && this.currentTeam.$id === teamId) {\n  \t                        this.currentTeamMemberships = [...memberships];\n  \t                        // Refresh permission cache after loading memberships\n  \t                        if (this.refreshPermissionCache) {\n  \t                            await this.refreshPermissionCache();\n  \t                        }\n  \t                    }\n\n  \t                    return { success: true, memberships: memberships, total: result.total || 0 };\n  \t                } catch (error) {\n  \t                    // Handle \"team not found\" errors gracefully (e.g., team was just deleted)\n  \t                    if (error.message && error.message.includes('could not be found')) {\n  \t                        // Silently return empty memberships for deleted teams\n  \t                        if (this.currentTeam && this.currentTeam.$id === teamId) {\n  \t                            this.currentTeamMemberships = [];\n  \t                        }\n  \t                        return { success: true, memberships: [], total: 0 };\n  \t                    }\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                }\n  \t            };\n\n  \t            // Get membership\n  \t            store.getMembership = async function(teamId, membershipId) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    return { success: false, error: 'You must be signed in to get membership details' };\n  \t                }\n\n  \t                try {\n  \t                    const result = await this._appwrite.teams.getMembership({\n  \t                        teamId: teamId,\n  \t                        membershipId: membershipId\n  \t                    });\n\n  \t                    return { success: true, membership: result };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                }\n  \t            };\n\n  \t            // Update membership roles\n  \t            store.updateMembership = async function(teamId, membershipId, roles) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    return { success: false, error: 'You must be signed in to update membership' };\n  \t                }\n\n  \t                // Check if user has updateMembers permission (required for updating other members' roles)\n  \t                // Users can always update their own roles\n  \t                const isUpdatingSelf = this.user && this.currentTeamMemberships?.some(\n  \t                    m => m.$id === membershipId && m.userId === this.user.$id\n  \t                );\n  \t                \n  \t                if (!isUpdatingSelf) {\n  \t                    // Updating another member - requires permission\n  \t                    if (!this.hasTeamPermission || !await this.hasTeamPermission('updateMembers')) {\n  \t                        return { success: false, error: 'You do not have permission to update member roles' };\n  \t                    }\n  \t                }\n\n  \t                this.inProgress = true;\n  \t                this.error = null;\n\n  \t                try {\n  \t                    // Normalize roles for Appwrite (add \"owner\" if custom roles require it)\n  \t                    let normalizedRoles = roles;\n  \t                    if (this.normalizeRolesForAppwrite) {\n  \t                        normalizedRoles = await this.normalizeRolesForAppwrite(roles, teamId);\n  \t                    }\n\n  \t                    const result = await this._appwrite.teams.updateMembership({\n  \t                        teamId: teamId,\n  \t                        membershipId: membershipId,\n  \t                        roles: normalizedRoles\n  \t                    });\n\n  \t                    // Check if this was the current user's membership (before refreshing)\n  \t                    const isCurrentUser = this.user && result.membership && result.membership.userId === this.user.$id;\n\n  \t                    // Refresh memberships if this was the current team\n  \t                    if (this.currentTeam && this.currentTeam.$id === teamId && this.listMemberships) {\n  \t                        await this.listMemberships(teamId);\n  \t                    }\n  \t                    \n  \t                    // Refresh permission cache if this was the current user's membership\n  \t                    // (This must happen after listMemberships so currentTeamMemberships is updated)\n  \t                    if (isCurrentUser && this.currentTeam && this.currentTeam.$id === teamId && this.refreshPermissionCache) {\n  \t                        await this.refreshPermissionCache();\n  \t                    }\n\n  \t                    return { success: true, membership: result };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                } finally {\n  \t                    this.inProgress = false;\n  \t                }\n  \t            };\n\n  \t            // Accept team invitation\n  \t            store.acceptInvite = async function(teamId, membershipId, userId, secret) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    console.warn('[Indux Appwrite Auth] acceptInvite: User not authenticated');\n  \t                    return { success: false, error: 'You must be signed in to accept an invitation' };\n  \t                }\n\n  \t                this.inProgress = true;\n  \t                this.error = null;\n\n  \t                try {\n  \t                    const result = await this._appwrite.teams.updateMembershipStatus({\n  \t                        teamId: teamId,\n  \t                        membershipId: membershipId,\n  \t                        userId: userId,\n  \t                        secret: secret\n  \t                    });\n\n  \t                    // Refresh teams list to ensure the new team appears\n  \t                    if (this.listTeams) {\n  \t                        await this.listTeams();\n  \t                    } else {\n  \t                        console.warn('[Indux Appwrite Auth] acceptInvite: listTeams method not available');\n  \t                    }\n  \t                    \n  \t                    // If this is now the current team, refresh memberships\n  \t                    if (this.currentTeam && this.currentTeam.$id === teamId && this.listMemberships) {\n  \t                        await this.listMemberships(teamId);\n  \t                    }\n\n  \t                    return { success: true, membership: result };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                } finally {\n  \t                    this.inProgress = false;\n  \t                }\n  \t            };\n\n  \t            // Delete membership (leave team or remove member)\n  \t            store.deleteMembership = async function(teamId, membershipId) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                if (!this.isAuthenticated) {\n  \t                    return { success: false, error: 'You must be signed in to delete membership' };\n  \t                }\n\n  \t                // Check if user has removeMembers permission (unless removing themselves)\n  \t                // Note: Users can always leave a team themselves, but need permission to remove others\n  \t                const isRemovingSelf = this.user && this.currentTeamMemberships?.some(\n  \t                    m => m.$id === membershipId && m.userId === this.user.$id\n  \t                );\n  \t                \n  \t                if (!isRemovingSelf) {\n  \t                    // Removing another member - requires permission\n  \t                    if (!this.hasTeamPermission || !await this.hasTeamPermission('removeMembers')) {\n  \t                        return { success: false, error: 'You do not have permission to remove members' };\n  \t                    }\n  \t                }\n\n  \t                this.inProgress = true;\n  \t                this.error = null;\n\n  \t                try {\n  \t                    await this._appwrite.teams.deleteMembership({\n  \t                        teamId: teamId,\n  \t                        membershipId: membershipId\n  \t                    });\n\n  \t                    // Refresh memberships if this was the current team (do this first to update UI immediately)\n  \t                    if (this.currentTeam && this.currentTeam.$id === teamId && this.listMemberships) {\n  \t                        await this.listMemberships(teamId);\n  \t                    }\n  \t                    \n  \t                    // Refresh teams list (this will also trigger realtime updates for other users)\n  \t                    if (this.listTeams) {\n  \t                        await this.listTeams();\n  \t                    }\n\n  \t                    return { success: true };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    return { success: false, error: error.message };\n  \t                } finally {\n  \t                    this.inProgress = false;\n  \t                }\n  \t            };\n  \t        } else if (!store) {\n  \t            setTimeout(waitForStore, 50);\n  \t        }\n  \t    };\n\n  \t    setTimeout(waitForStore, 100);\n  \t}\n\n  \t// Initialize when Alpine is ready\n  \tdocument.addEventListener('alpine:init', () => {\n  \t    try {\n  \t        initializeTeamsMembers();\n  \t    } catch (error) {\n  \t        // Failed to initialize teams members\n  \t    }\n  \t});\n\n  \t// Also try immediately if Alpine is already available\n  \tif (typeof Alpine !== 'undefined') {\n  \t    try {\n  \t        initializeTeamsMembers();\n  \t    } catch (error) {\n  \t        // Alpine might not be fully initialized yet, that's okay\n  \t    }\n  \t}\n\n  \t// Export members interface\n  \twindow.InduxAppwriteAuthTeamsMembers = {\n  \t    initialize: initializeTeamsMembers\n  \t};\n\n\n\n  \t/* Auth teams - Callback handlers */\n\n  \t// Handle team invitation callbacks via events\n  \tfunction handleTeamCallbacks() {\n  \t    // Handle team invitation callback\n  \t    window.addEventListener('indux:auth:callback:team', async (event) => {\n  \t        const store = Alpine.store('auth');\n  \t        if (!store) {\n  \t            return;\n  \t        }\n  \t        \n  \t        const callbackInfo = event.detail;\n  \t        \n  \t        store.inProgress = true;\n  \t        store.error = null;\n\n  \t        try {\n  \t            // Accept the invitation\n  \t            if (store.acceptInvite) {\n  \t                const result = await store.acceptInvite(\n  \t                    callbackInfo.teamId,\n  \t                    callbackInfo.membershipId,\n  \t                    callbackInfo.userId,\n  \t                    callbackInfo.secret\n  \t                );\n\n  \t                if (result.success) {\n  \t                    window.dispatchEvent(new CustomEvent('indux:auth:team:invite-accepted', {\n  \t                        detail: { membership: result.membership }\n  \t                    }));\n  \t                } else {\n  \t                    store.error = result.error;\n  \t                }\n  \t            }\n  \t        } catch (error) {\n  \t            store.error = error.message;\n  \t        } finally {\n  \t            store.inProgress = false;\n  \t        }\n  \t    });\n  \t}\n\n  \t// Initialize when Alpine is ready\n  \tdocument.addEventListener('alpine:init', () => {\n  \t    try {\n  \t        handleTeamCallbacks();\n  \t    } catch (error) {\n  \t        // Failed to initialize team callbacks\n  \t    }\n  \t});\n\n  \t// Also try immediately if Alpine is already available\n  \tif (typeof Alpine !== 'undefined') {\n  \t    try {\n  \t        handleTeamCallbacks();\n  \t    } catch (error) {\n  \t        // Alpine might not be fully initialized yet, that's okay\n  \t    }\n  \t}\n\n  \t// Export callbacks interface\n  \twindow.InduxAppwriteAuthTeamsCallbacks = {\n  \t    handleCallbacks: handleTeamCallbacks\n  \t};\n\n\n\n  \t/* Auth teams - Convenience methods for UI */\n\n  \t// Add convenience methods to auth store\n  \tfunction initializeTeamsConvenience() {\n  \t    if (typeof Alpine === 'undefined') {\n  \t        return;\n  \t    }\n\n  \t    const config = window.InduxAppwriteAuthConfig;\n  \t    if (!config) {\n  \t        return;\n  \t    }\n\n  \t    // Wait for store to be initialized\n  \t    const waitForStore = () => {\n  \t        const store = Alpine.store('auth');\n  \t        if (store) {\n  \t            // Ensure cache properties are initialized (methods are already in store)\n  \t            if (!store._permissionCache) store._permissionCache = {};\n  \t            if (store._userRoleCache === undefined) store._userRoleCache = null;\n  \t            if (!store._allRolesCache) store._allRolesCache = null;\n  \t            if (!store._allRolesCacheByTeam) store._allRolesCacheByTeam = {};\n  \t            if (!store._userGeneratedRolesCache) store._userGeneratedRolesCache = {};\n  \t            \n  \t            // Update permission cache when team changes\n  \t            const updatePermissionCache = async function() {\n  \t                if (!this.currentTeam || !this.currentTeamMemberships || !this.user) {\n  \t                    this._permissionCache = {};\n  \t                    this._userRoleCache = null;\n  \t                    this._allRolesCache = null;\n  \t                    this._userGeneratedRolesCache = {};\n  \t                    // Don't clear _allRolesCacheByTeam - keep cached roles for all teams\n  \t                    return;\n  \t                }\n  \t                \n  \t                const teamId = this.currentTeam.$id;\n  \t                const permissions = ['inviteMembers', 'updateMembers', 'removeMembers', 'renameTeam', 'deleteTeam', 'manageRoles'];\n  \t                \n  \t                // Cache permissions\n  \t                for (const perm of permissions) {\n  \t                    if (this.hasTeamPermission) {\n  \t                        const hasPerm = await this.hasTeamPermission(perm);\n  \t                        this._permissionCache[perm] = hasPerm;\n  \t                    } else {\n  \t                        this._permissionCache[perm] = false;\n  \t                    }\n  \t                }\n  \t                \n  \t                // Cache user role\n  \t                if (this.getUserRole) {\n  \t                    this._userRoleCache = await this.getUserRole();\n  \t                } else {\n  \t                    this._userRoleCache = null;\n  \t                }\n  \t                \n  \t                // Cache all roles\n  \t                if (this.getAllRoles) {\n  \t                    const allRoles = await this.getAllRoles(teamId);\n  \t                    // Create new object reference to ensure Alpine reactivity\n  \t                    const rolesCopy = allRoles ? { ...allRoles } : {};\n  \t                    this._allRolesCache = rolesCopy;\n  \t                    // Also cache by team ID for per-team lookups (create new object reference)\n  \t                    if (!this._allRolesCacheByTeam) this._allRolesCacheByTeam = {};\n  \t                    this._allRolesCacheByTeam[teamId] = { ...rolesCopy };\n  \t                    \n  \t                    // Pre-populate permanent role cache for all roles (for isRoleDeletable to work)\n  \t                    if (!this._rolePermanentCache) this._rolePermanentCache = {};\n  \t                    if (!this._rolePermanentCache[teamId]) this._rolePermanentCache[teamId] = {};\n  \t                    if (this.isRolePermanent) {\n  \t                        for (const roleName of Object.keys(rolesCopy)) {\n  \t                            // Pre-cache permanent status for all roles\n  \t                            await this.isRolePermanent(teamId, roleName);\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    // Cache which roles are user-generated (always check, no feature flag needed)\n  \t                    this._userGeneratedRolesCache = {};\n  \t                    if (this._allRolesCache && this.isUserGeneratedRole) {\n  \t                        for (const roleName of Object.keys(this._allRolesCache)) {\n  \t                            this._userGeneratedRolesCache[roleName] = await this.isUserGeneratedRole(teamId, roleName);\n  \t                        }\n  \t                    }\n  \t                } else {\n  \t                    this._allRolesCache = {};\n  \t                    if (!this._allRolesCacheByTeam) this._allRolesCacheByTeam = {};\n  \t                    this._allRolesCacheByTeam[teamId] = {};\n  \t                }\n  \t            };\n  \t            \n  \t            // Public method to refresh permission cache\n  \t            if (!store.refreshPermissionCache) {\n  \t                store.refreshPermissionCache = async function() {\n  \t                    await updatePermissionCache.call(this);\n  \t                };\n  \t            }\n  \t            \n  \t            if (!store.createTeamFromName) {\n  \t            // Convenience method: create team using newTeamName property\n  \t            store.createTeamFromName = async function() {\n  \t                // Ensure newTeamName is a string and has content\n  \t                const teamNameValue = String(this.newTeamName || '').trim();\n  \t                if (!teamNameValue) {\n  \t                    return { success: false, error: 'Team name is required' };\n  \t                }\n  \t                \n  \t                const result = await this.createTeam(null, teamNameValue, []);\n  \t                if (result.success) {\n  \t                    this.newTeamName = ''; // Clear input\n  \t                }\n  \t                return result;\n  \t            };\n  \t            \n  \t            // Convenience method: update current team name using updateTeamNameInput property\n  \t            store.updateCurrentTeamName = async function() {\n  \t                if (!this.currentTeam || !this.currentTeam.$id) {\n  \t                    return { success: false, error: 'No team selected' };\n  \t                }\n  \t                \n  \t                // Ensure updateTeamNameInput is a string and has content\n  \t                const teamNameValue = String(this.updateTeamNameInput || '').trim();\n  \t                if (!teamNameValue) {\n  \t                    return { success: false, error: 'Team name is required' };\n  \t                }\n  \t                \n  \t                const teamId = this.currentTeam.$id;\n  \t                const result = await this.updateTeamName(teamId, teamNameValue);\n  \t                \n  \t                if (result.success) {\n  \t                    this.updateTeamNameInput = ''; // Clear input\n  \t                    // Note: updateTeamName() already calls listTeams() and updates currentTeam\n  \t                }\n  \t                return result;\n  \t            };\n  \t            \n  \t            // Convenience method: invite to current team using inviteEmail and inviteRoles properties\n  \t            store.inviteToCurrentTeam = async function() {\n  \t                if (!this.currentTeam) {\n  \t                    return { success: false, error: 'No team selected' };\n  \t                }\n  \t                \n  \t                // Ensure email is a string\n  \t                const email = String(this.inviteEmail || '').trim();\n  \t                \n  \t                // Email is required for invitations\n  \t                if (!email) {\n  \t                    return { success: false, error: 'Email is required' };\n  \t                }\n  \t                \n  \t                // Use inviteRoles array directly (already an array)\n  \t                const roles = Array.isArray(this.inviteRoles) \n  \t                    ? this.inviteRoles.filter(r => r && typeof r === 'string')\n  \t                    : [];\n  \t                \n  \t                // If no roles specified, use empty array (will default to \"owner\" in inviteMember)\n  \t                const result = await this.inviteMember(this.currentTeam.$id, roles, email);\n  \t                if (result.success) {\n  \t                    this.inviteEmail = ''; // Clear inputs\n  \t                    this.inviteRoles = []; // Clear roles array\n  \t                    if (this.listMemberships) {\n  \t                        await this.listMemberships(this.currentTeam.$id); // Refresh memberships\n  \t                    }\n  \t                }\n  \t                return result;\n  \t            };\n  \t            \n  \t            // Role management methods for invite (similar to permission management)\n  \t            store.toggleInviteRole = function(roleName) {\n  \t                if (!roleName || typeof roleName !== 'string') return;\n  \t                if (!this.inviteRoles) this.inviteRoles = [];\n  \t                const index = this.inviteRoles.indexOf(roleName);\n  \t                if (index === -1) {\n  \t                    // Add role (create new array for reactivity)\n  \t                    this.inviteRoles = [...this.inviteRoles, roleName];\n  \t                } else {\n  \t                    // Remove role (create new array for reactivity)\n  \t                    this.inviteRoles = this.inviteRoles.filter(r => r !== roleName);\n  \t                }\n  \t            };\n  \t            \n  \t            store.isInviteRoleSelected = function(roleName) {\n  \t                if (!this.inviteRoles || !Array.isArray(this.inviteRoles)) return false;\n  \t                return this.inviteRoles.includes(roleName);\n  \t            };\n  \t            \n  \t            store.addCustomInviteRoles = function(inputValue) {\n  \t                if (!inputValue || typeof inputValue !== 'string') return;\n  \t                if (!this.inviteRoles) this.inviteRoles = [];\n  \t                \n  \t                // Parse comma-separated roles\n  \t                const newRoles = inputValue.split(',')\n  \t                    .map(r => r.trim())\n  \t                    .filter(r => r && typeof r === 'string');\n  \t                \n  \t                // Add each role if not already present\n  \t                const updated = [...this.inviteRoles];\n  \t                for (const role of newRoles) {\n  \t                    if (!updated.includes(role)) {\n  \t                        updated.push(role);\n  \t                    }\n  \t                }\n  \t                \n  \t                // Create new array reference for reactivity\n  \t                this.inviteRoles = updated;\n  \t            };\n  \t            \n  \t            store.clearInviteRoles = function() {\n  \t                this.inviteRoles = [];\n  \t            };\n  \t            \n  \t            // Member editing methods (for existing members)\n  \t            store.startEditingMember = async function(teamId, membershipId, currentRoles) {\n  \t                if (!teamId || !membershipId) return;\n  \t                \n  \t                // Initialize editing state\n  \t                this.editingMember = {\n  \t                    teamId: teamId,\n  \t                    membershipId: membershipId,\n  \t                    roles: Array.isArray(currentRoles) ? [...currentRoles] : []\n  \t                };\n  \t                \n  \t                // Initialize role selection with current roles\n  \t                this.inviteRoles = Array.isArray(currentRoles) ? [...currentRoles] : [];\n  \t            };\n  \t            \n  \t            store.cancelEditingMember = function() {\n  \t                this.editingMember = null;\n  \t                this.inviteRoles = [];\n  \t            };\n  \t            \n  \t            store.saveEditingMember = async function() {\n  \t                if (!this.editingMember) {\n  \t                    return { success: false, error: 'No member being edited' };\n  \t                }\n  \t                \n  \t                const { teamId, membershipId } = this.editingMember;\n  \t                const roles = Array.isArray(this.inviteRoles) \n  \t                    ? this.inviteRoles.filter(r => r && typeof r === 'string')\n  \t                    : [];\n  \t                \n  \t                // Update membership roles (this will refresh memberships and permission cache if needed)\n  \t                const result = await this.updateMembership(teamId, membershipId, roles);\n  \t                \n  \t                if (result.success) {\n  \t                    this.cancelEditingMember();\n  \t                    // Note: updateMembership already refreshes memberships and permission cache\n  \t                }\n  \t                \n  \t                return result;\n  \t            };\n  \t            \n  \t            // Convenience method: delete/remove a member\n  \t            store.deleteMember = async function(teamId, membershipId) {\n  \t                if (!teamId || !membershipId) {\n  \t                    return { success: false, error: 'Team ID and membership ID are required' };\n  \t                }\n  \t                \n  \t                // Check permission\n  \t                if (!this.hasTeamPermissionSync || !this.hasTeamPermissionSync('removeMembers')) {\n  \t                    return { success: false, error: 'You do not have permission to remove members' };\n  \t                }\n  \t                \n  \t                const result = await this.deleteMembership(teamId, membershipId);\n  \t                return result;\n  \t            };\n  \t            \n  \t            // Convenience method: leave a team (user removes themselves)\n  \t            store.leaveTeam = async function(teamId, membershipId) {\n  \t                if (!teamId || !membershipId) {\n  \t                    return { success: false, error: 'Team ID and membership ID are required' };\n  \t                }\n  \t                \n  \t                // Verify this is the current user's membership\n  \t                const isCurrentUser = this.user && this.currentTeamMemberships?.some(\n  \t                    m => m.$id === membershipId && m.userId === this.user.$id\n  \t                );\n  \t                \n  \t                if (!isCurrentUser) {\n  \t                    return { success: false, error: 'You can only leave teams you are a member of' };\n  \t                }\n  \t                \n  \t                // Delete membership (users can always leave themselves)\n  \t                const result = await this.deleteMembership(teamId, membershipId);\n  \t                \n  \t                // If leaving the current team, clear it and select another team if available\n  \t                if (result.success && this.currentTeam && this.currentTeam.$id === teamId) {\n  \t                    this.currentTeam = null;\n  \t                    this.currentTeamMemberships = [];\n  \t                    \n  \t                    // Select the first available team if any remain\n  \t                    if (this.teams && this.teams.length > 0) {\n  \t                        const remainingTeam = this.teams.find(t => t.$id !== teamId);\n  \t                        if (remainingTeam) {\n  \t                            if (this.viewTeam) {\n  \t                                await this.viewTeam(remainingTeam);\n  \t                            } else {\n  \t                                this.currentTeam = remainingTeam;\n  \t                            }\n  \t                        }\n  \t                    }\n  \t                }\n  \t                \n  \t                return result;\n  \t            };\n  \t            \n  \t            // Convenience method: view team (sets current team and loads memberships)\n  \t            store.viewTeam = async function(team) {\n  \t                this.currentTeam = team;\n  \t                // Reset rename input to current team name when viewing a team\n  \t                if (team && team.name) {\n  \t                    this.updateTeamNameInput = team.name;\n  \t                } else {\n  \t                    this.updateTeamNameInput = '';\n  \t                }\n  \t                if (team && team.$id && this.listMemberships) {\n  \t                    const result = await this.listMemberships(team.$id);\n  \t                    if (result.success) {\n  \t                        this.currentTeamMemberships = result.memberships || [];\n  \t                    }\n  \t                }\n  \t                return { success: true };\n  \t            };\n  \t            \n  \t            // Check if current user is an owner of the current team\n  \t            store.isCurrentTeamOwner = function() {\n  \t                if (!this.currentTeam || !this.currentTeamMemberships || !this.user) {\n  \t                    return false;\n  \t                }\n  \t                const userMembership = this.currentTeamMemberships.find(\n  \t                    m => m.userId === this.user.$id\n  \t                );\n  \t                return userMembership && userMembership.roles && userMembership.roles.includes('owner');\n  \t            };\n  \t            \n  \t            // Check if a team can be deleted (checks both immutable status and permissions)\n  \t            store.isTeamDeletable = function(team) {\n  \t                if (!team || !team.$id) {\n  \t                    return false;\n  \t                }\n  \t                // Check if team is immutable/permanent\n  \t                if (this._teamImmutableCache && this._teamImmutableCache[team.$id]) {\n  \t                    return false;\n  \t                }\n  \t                // If checking current team, also check permissions\n  \t                if (this.currentTeam && this.currentTeam.$id === team.$id) {\n  \t                    return (this._permissionCache && this._permissionCache.deleteTeam) || false;\n  \t                }\n  \t                // For other teams, assume deletable if not immutable\n  \t                return true;\n  \t            };\n  \t            \n  \t            // Check if a team can be renamed (checks permissions for current team)\n  \t            store.isTeamRenamable = function(team) {\n  \t                if (!team || !team.$id) {\n  \t                    return false;\n  \t                }\n  \t                // If checking current team, check permissions\n  \t                if (this.currentTeam && this.currentTeam.$id === team.$id) {\n  \t                    return (this._permissionCache && this._permissionCache.renameTeam) || false;\n  \t                }\n  \t                // For other teams, assume renamable (permissions will be checked when team becomes current)\n  \t                return true;\n  \t            };\n  \t            \n  \t            // Check if a role can be deleted (checks if it's permanent) - synchronous version for Alpine\n  \t            store.isRoleDeletable = function(teamId, roleName) {\n  \t                if (!teamId || !roleName) {\n  \t                    return false;\n  \t                }\n  \t                // Permanent roles cannot be deleted\n  \t                if (this.isRolePermanentSync && this.isRolePermanentSync(teamId, roleName)) {\n  \t                    return false;\n  \t                }\n  \t                // Template roles and user-generated roles can be deleted\n  \t                return true;\n  \t            };\n  \t            \n  \t            // Check if a role is currently being edited - cleaner state check\n  \t            store.isRoleBeingEdited = function(teamId, roleName) {\n  \t                if (!this.editingRole || !teamId || !roleName) {\n  \t                    return false;\n  \t                }\n  \t                return this.editingRole.teamId === teamId && \n  \t                       this.editingRole.oldRoleName === roleName;\n  \t            };\n  \t            \n  \t            // Permission convenience methods (synchronous for Alpine bindings)\n  \t            // Note: These override async versions from roles.js for use in Alpine bindings\n  \t            store.canManageRolesSync = function() {\n  \t                return this.hasTeamPermissionSync && this.hasTeamPermissionSync('manageRoles');\n  \t            };\n  \t            \n  \t            // Alias for cleaner HTML (overrides async version for Alpine bindings)\n  \t            store.canManageRoles = store.canManageRolesSync;\n  \t            \n  \t            store.canInviteMembers = function() {\n  \t                return this.hasTeamPermissionSync && this.hasTeamPermissionSync('inviteMembers');\n  \t            };\n  \t            \n  \t            store.canUpdateMembers = function() {\n  \t                return this.hasTeamPermissionSync && this.hasTeamPermissionSync('updateMembers');\n  \t            };\n  \t            \n  \t            store.canRemoveMembers = function() {\n  \t                return this.hasTeamPermissionSync && this.hasTeamPermissionSync('removeMembers');\n  \t            };\n  \t            \n  \t            store.canRenameTeam = function() {\n  \t                return this.hasTeamPermissionSync && this.hasTeamPermissionSync('renameTeam');\n  \t            };\n  \t            \n  \t            store.canDeleteTeam = function() {\n  \t                return this.hasTeamPermissionSync && this.hasTeamPermissionSync('deleteTeam');\n  \t            };\n  \t            \n  \t            // Combined action disabled check (combines inProgress and permission)\n  \t            store.isActionDisabled = function(permission) {\n  \t                if (this.inProgress) return true;\n  \t                if (permission && this.hasTeamPermissionSync) {\n  \t                    return !this.hasTeamPermissionSync(permission);\n  \t                }\n  \t                return false;\n  \t            };\n  \t            \n  \t            // Get member display name (extracts complex logic)\n  \t            store.getMemberDisplayName = function(membership) {\n  \t                if (!membership) return 'Unknown user';\n  \t                if (membership.userId === this.user?.$id) {\n  \t                    return this.user?.name || this.user?.email || 'You';\n  \t                }\n  \t                return membership.userName || \n  \t                       membership.email || \n  \t                       membership.userEmail || \n  \t                       (membership.confirm === false ? 'Pending invitation' : 'Unknown user');\n  \t            };\n  \t            \n  \t            // Get member email (extracts complex logic)\n  \t            store.getMemberEmail = function(membership) {\n  \t                if (!membership) return 'No email';\n  \t                return membership.email || \n  \t                       membership.userEmail || \n  \t                       (membership.userId === this.user?.$id ? (this.user?.email || '') : '') || \n  \t                       'No email';\n  \t            };\n  \t            \n  \t            // Get all available permissions (standard + custom from existing roles)\n  \t            store.getAllAvailablePermissions = async function(teamId) {\n  \t                const permissions = new Set();\n  \t                \n  \t                // Add standard owner permissions (from roles module)\n  \t                // These are defined in indux.appwrite.auth.teams.roles.js\n  \t                const standardPermissions = [\n  \t                    'inviteMembers',\n  \t                    'removeMembers',\n  \t                    'renameTeam',\n  \t                    'deleteTeam',\n  \t                    'manageRoles'\n  \t                ];\n  \t                standardPermissions.forEach(p => permissions.add(p));\n  \t                \n  \t                // Add permissions from existing roles in this team\n  \t                if (teamId && this.getAllRoles) {\n  \t                    const allRoles = await this.getAllRoles(teamId);\n  \t                    if (allRoles && typeof allRoles === 'object') {\n  \t                        for (const rolePermissions of Object.values(allRoles)) {\n  \t                            if (Array.isArray(rolePermissions)) {\n  \t                                rolePermissions.forEach(p => permissions.add(p));\n  \t                            }\n  \t                        }\n  \t                    }\n  \t                }\n  \t                \n  \t                // Also check permanent and template roles from config\n  \t                const config = window.InduxAppwriteAuthConfig;\n  \t                if (config) {\n  \t                    const appwriteConfig = await config.getAppwriteConfig();\n  \t                    const permanentRoles = appwriteConfig?.permanentRoles || {};\n  \t                    const templateRoles = appwriteConfig?.templateRoles || {};\n  \t                    \n  \t                    for (const rolePermissions of Object.values(permanentRoles)) {\n  \t                        if (Array.isArray(rolePermissions)) {\n  \t                            rolePermissions.forEach(p => permissions.add(p));\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    for (const rolePermissions of Object.values(templateRoles)) {\n  \t                        if (Array.isArray(rolePermissions)) {\n  \t                            rolePermissions.forEach(p => permissions.add(p));\n  \t                        }\n  \t                    }\n  \t                }\n  \t                \n  \t                return Array.from(permissions).sort();\n  \t            };\n  \t            \n  \t            // Permission management methods for role creation\n  \t            store.togglePermission = function(permission) {\n  \t                if (!permission || typeof permission !== 'string') return;\n  \t                if (!this.newRolePermissions) this.newRolePermissions = [];\n  \t                const index = this.newRolePermissions.indexOf(permission);\n  \t                if (index === -1) {\n  \t                    // Add permission (create new array for reactivity)\n  \t                    this.newRolePermissions = [...this.newRolePermissions, permission];\n  \t                } else {\n  \t                    // Remove permission (create new array for reactivity)\n  \t                    this.newRolePermissions = this.newRolePermissions.filter(p => p !== permission);\n  \t                }\n  \t            };\n  \t            \n  \t            store.isPermissionSelected = function(permission) {\n  \t                if (!this.newRolePermissions || !Array.isArray(this.newRolePermissions)) return false;\n  \t                return this.newRolePermissions.includes(permission);\n  \t            };\n  \t            \n  \t            store.addCustomPermissions = function(inputValue) {\n  \t                if (!inputValue || typeof inputValue !== 'string') return;\n  \t                if (!this.newRolePermissions) this.newRolePermissions = [];\n  \t                \n  \t                // Parse comma-separated permissions\n  \t                const newPerms = inputValue.split(',')\n  \t                    .map(p => p.trim())\n  \t                    .filter(p => p && typeof p === 'string');\n  \t                \n  \t                // Add each permission if not already present\n  \t                const updated = [...this.newRolePermissions];\n  \t                for (const perm of newPerms) {\n  \t                    if (!updated.includes(perm)) {\n  \t                        updated.push(perm);\n  \t                    }\n  \t                }\n  \t                \n  \t                // Create new array reference for reactivity\n  \t                this.newRolePermissions = updated;\n  \t            };\n  \t            \n  \t            store.removePermission = function(permission) {\n  \t                if (!permission || !this.newRolePermissions || !Array.isArray(this.newRolePermissions)) return;\n  \t                this.newRolePermissions = this.newRolePermissions.filter(p => p !== permission);\n  \t            };\n  \t            \n  \t            store.clearPermissions = function() {\n  \t                this.newRolePermissions = [];\n  \t            };\n  \t            \n  \t            // Role editing methods (for existing roles)\n  \t            store.startEditingRole = async function(teamId, roleName) {\n  \t                if (!teamId || !roleName) return;\n  \t                \n  \t                // Get current role permissions\n  \t                const allRoles = this.allTeamRoles({ $id: teamId });\n  \t                const permissions = allRoles && allRoles[roleName] ? [...allRoles[roleName]] : [];\n  \t                \n  \t                // Ensure allAvailablePermissions is populated (for dropdown)\n  \t                if (!this.allAvailablePermissions || this.allAvailablePermissions.length === 0) {\n  \t                    if (this.getAllAvailablePermissions) {\n  \t                        await this.getAllAvailablePermissions(teamId);\n  \t                    }\n  \t                }\n  \t                \n  \t                // Set editing state\n  \t                this.editingRole = {\n  \t                    teamId: teamId,\n  \t                    oldRoleName: roleName,\n  \t                    newRoleName: roleName,\n  \t                    permissions: permissions\n  \t                };\n  \t                \n  \t                // Initialize permission selection with current permissions\n  \t                this.newRolePermissions = [...permissions];\n  \t            };\n  \t            \n  \t            store.cancelEditingRole = function() {\n  \t                this.editingRole = null;\n  \t                this.newRolePermissions = [];\n  \t            };\n  \t            \n  \t            store.saveEditingRole = async function() {\n  \t                if (!this.editingRole) {\n  \t                    return { success: false, error: 'No role being edited' };\n  \t                }\n  \t                \n  \t                const { teamId, oldRoleName, newRoleName } = this.editingRole;\n  \t                const permissions = Array.isArray(this.newRolePermissions) \n  \t                    ? this.newRolePermissions.filter(p => p && typeof p === 'string')\n  \t                    : [];\n  \t                \n  \t                let result;\n  \t                \n  \t                // If name changed, rename the role\n  \t                if (oldRoleName !== newRoleName && newRoleName.trim()) {\n  \t                    result = await this.renameUserRole(teamId, oldRoleName, newRoleName.trim());\n  \t                    if (!result.success) {\n  \t                        return result;\n  \t                    }\n  \t                }\n  \t                \n  \t                // Update permissions (use new name if renamed, otherwise old name)\n  \t                const roleNameToUpdate = newRoleName.trim() || oldRoleName;\n  \t                result = await this.updateUserRole(teamId, roleNameToUpdate, permissions);\n  \t                \n  \t                if (result.success) {\n  \t                    this.cancelEditingRole();\n  \t                }\n  \t                \n  \t                return result;\n  \t            };\n  \t            \n  \t            // Format team date (createdAt or updatedAt)\n  \t            store.formatTeamDate = function(dateString) {\n  \t                if (!dateString) return '';\n  \t                try {\n  \t                    const date = new Date(dateString);\n  \t                    if (isNaN(date.getTime())) return dateString; // Return original if invalid\n  \t                    return date.toLocaleDateString() + ' ' + date.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' });\n  \t                } catch (e) {\n  \t                    return dateString; // Return original if parsing fails\n  \t                }\n  \t            };\n  \t            \n  \t            // Get formatted createdAt for a team\n  \t            store.teamCreatedAt = function(team) {\n  \t                if (!team) return '';\n  \t                return this.formatTeamDate(team.$createdAt || team.createdAt);\n  \t            };\n  \t            \n  \t            // Get formatted updatedAt for a team\n  \t            store.teamUpdatedAt = function(team) {\n  \t                if (!team) return '';\n  \t                return this.formatTeamDate(team.$updatedAt || team.updatedAt);\n  \t            };\n  \t            \n  \t            // Get current user's roles in the current team\n  \t            store.getCurrentTeamRoles = function() {\n  \t                if (!this.currentTeam || !this.currentTeamMemberships || !this.user) {\n  \t                    return [];\n  \t                }\n  \t                const userMembership = this.currentTeamMemberships.find(\n  \t                    m => m.userId === this.user.$id\n  \t                );\n  \t                return userMembership?.roles || [];\n  \t            };\n  \t            \n  \t            // Check if current user has a specific permission in the current team\n  \t            // Uses role abstraction layer to check permissions based on custom roles\n  \t            store.hasTeamPermission = async function(permission) {\n  \t                if (!this.currentTeam || !this.currentTeamMemberships || !this.user) {\n  \t                    return false;\n  \t                }\n  \t                \n  \t                const userRoles = this.getCurrentTeamRoles();\n  \t                const teamId = this.currentTeam?.$id;\n  \t                if (this.hasPermission) {\n  \t                    return await this.hasPermission(userRoles, permission, teamId);\n  \t                }\n  \t                \n  \t                // Fallback: check owner role directly\n  \t                return userRoles.includes('owner');\n  \t            };\n  \t            \n  \t            // Synchronous version for Alpine.js bindings (uses permission cache)\n  \t            store.hasTeamPermissionSync = function(permission) {\n  \t                if (!this.currentTeam || !this.currentTeamMemberships || !this.user) {\n  \t                    return false;\n  \t                }\n  \t                \n  \t                // Use cached permissions if available (updated by updatePermissionCache)\n  \t                if (this._permissionCache && typeof this._permissionCache[permission] === 'boolean') {\n  \t                    return this._permissionCache[permission];\n  \t                }\n  \t                \n  \t                // Fallback: check if user has no custom roles (should have all permissions)\n  \t                // This matches the logic in hasPermission: if customRoles.length === 0, return true\n  \t                const userRoles = this.getCurrentTeamRoles();\n  \t                const customRoles = userRoles.filter(role => role !== 'owner');\n  \t                \n  \t                // If user has no custom roles (only \"owner\" or empty), grant all permissions\n  \t                // This handles users with \"No Role\" who should have all owner permissions\n  \t                if (customRoles.length === 0) {\n  \t                    return true;\n  \t                }\n  \t                \n  \t                // If user has custom roles but cache is missing, return false (shouldn't happen if cache is working)\n  \t                return false;\n  \t            };\n\n  \t            // Check if current user has a specific role\n  \t            store.hasRole = function(roleName) {\n  \t                if (!this.currentTeam || !this.currentTeamMemberships || !this.user) {\n  \t                    return false;\n  \t                }\n  \t                const userRoles = this.getCurrentTeamRoles();\n  \t                return userRoles.includes(roleName);\n  \t            };\n\n  \t            // Get current user's primary role in current team\n  \t            store.getUserRole = async function() {\n  \t                if (!this.currentTeam || !this.currentTeamMemberships || !this.user) {\n  \t                    return null;\n  \t                }\n  \t                const userRoles = this.getCurrentTeamRoles();\n  \t                const teamId = this.currentTeam?.$id;\n  \t                if (this.getPrimaryDisplayRole) {\n  \t                    return await this.getPrimaryDisplayRole(userRoles, teamId);\n  \t                }\n  \t                return userRoles[0] || null;\n  \t            };\n\n  \t            // Get current user's all roles in current team\n  \t            store.getUserRoles = async function() {\n  \t                if (!this.currentTeam || !this.currentTeamMemberships || !this.user) {\n  \t                    return [];\n  \t                }\n  \t                const userRoles = this.getCurrentTeamRoles();\n  \t                const teamId = this.currentTeam?.$id;\n  \t                if (this.normalizeRolesForDisplay) {\n  \t                    return await this.normalizeRolesForDisplay(userRoles, teamId);\n  \t                }\n  \t                return userRoles;\n  \t            };\n\n  \t            } // End of if (!store.createTeamFromName)\n  \t            \n  \t            // Note: hasPermission from roles module takes (userRoles, permission, teamId)\n  \t            // hasTeamPermission is the convenience wrapper for current team\n  \t            \n  \t            // Update cache when team is viewed (wrap existing viewTeam if it exists)\n  \t            if (store.viewTeam && !store._viewTeamWrapped) {\n  \t                const originalViewTeam = store.viewTeam;\n  \t                store.viewTeam = async function(team) {\n  \t                    const result = await originalViewTeam.call(this, team);\n  \t                    // Update cache after viewing team (which loads memberships)\n  \t                    if (updatePermissionCache) {\n  \t                        await updatePermissionCache.call(this);\n  \t                    }\n  \t                    // Update available permissions for autocomplete\n  \t                    if (this.getAllAvailablePermissions && team && team.$id) {\n  \t                        this.allAvailablePermissions = await this.getAllAvailablePermissions(team.$id);\n  \t                    }\n  \t                    return result;\n  \t                };\n  \t                store._viewTeamWrapped = true; // Prevent double-wrapping\n  \t            }\n  \t        } else if (!store) {\n  \t            setTimeout(waitForStore, 50);\n  \t        }\n  \t    };\n\n  \t    setTimeout(waitForStore, 100);\n  \t}\n\n  \t// Initialize when Alpine is ready\n  \tdocument.addEventListener('alpine:init', () => {\n  \t    try {\n  \t        initializeTeamsConvenience();\n  \t    } catch (error) {\n  \t        // Failed to initialize teams convenience\n  \t    }\n  \t});\n\n  \t// Also try immediately if Alpine is already available\n  \tif (typeof Alpine !== 'undefined') {\n  \t    try {\n  \t        initializeTeamsConvenience();\n  \t    } catch (error) {\n  \t        // Alpine might not be fully initialized yet, that's okay\n  \t    }\n  \t}\n\n  \t// Export convenience interface\n  \twindow.InduxAppwriteAuthTeamsConvenience = {\n  \t    initialize: initializeTeamsConvenience\n  \t};\n\n\n\n  \t/* Auth anonymous */\n\n  \t// Add anonymous session methods to auth store\n  \tfunction initializeAnonymous() {\n  \t    if (typeof Alpine === 'undefined') {\n  \t        return;\n  \t    }\n\n  \t    const config = window.InduxAppwriteAuthConfig;\n  \t    if (!config) {\n  \t        return;\n  \t    }\n\n  \t    // Wait for store to be initialized\n  \t    const waitForStore = () => {\n  \t        const store = Alpine.store('auth');\n  \t        if (store && !store._createAnonymousSession) {\n  \t            // Add anonymous session method to store (internal, used by store itself)\n  \t            store._createAnonymousSession = async function() {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                // Check if guest sessions are enabled (auto or manual)\n  \t                if (!this._guestAuto && !this._guestManual) {\n  \t                    return { success: false, error: 'Guest sessions are not enabled' };\n  \t                }\n\n  \t                try {\n  \t                    const session = await this._appwrite.account.createAnonymousSession();\n  \t                    this.session = session;\n  \t                    this.user = await this._appwrite.account.get();\n  \t                    this.isAuthenticated = true;\n  \t                    this.isAnonymous = true;\n  \t                    \n  \t                    // Sync state to localStorage for cross-tab synchronization\n  \t                    if (this._syncStateToStorage) {\n  \t                        this._syncStateToStorage(this);\n  \t                    }\n\n  \t                    window.dispatchEvent(new CustomEvent('indux:auth:anonymous', {\n  \t                        detail: { user: this.user }\n  \t                    }));\n\n  \t                    return { success: true, user: this.user };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    this.isAuthenticated = false;\n  \t                    this.isAnonymous = false;\n  \t                    return { success: false, error: error.message };\n  \t                }\n  \t            };\n  \t        } else if (!store) {\n  \t            // Wait a bit more for store to initialize\n  \t            setTimeout(waitForStore, 50);\n  \t        }\n  \t    };\n\n  \t    // Start waiting after a short delay to ensure store is ready\n  \t    setTimeout(waitForStore, 100);\n  \t}\n\n  \t// Initialize when Alpine is ready\n  \tdocument.addEventListener('alpine:init', () => {\n  \t    try {\n  \t        initializeAnonymous();\n  \t    } catch (error) {\n  \t        // Failed to initialize anonymous\n  \t    }\n  \t});\n\n  \t// Export anonymous interface\n  \twindow.InduxAppwriteAuthAnonymous = {\n  \t    initialize: initializeAnonymous\n  \t};\n\n  \t/* Auth magic links */\n\n  \t// Add magic link methods to auth store\n  \tfunction initializeMagicLinks() {\n  \t    if (typeof Alpine === 'undefined') {\n  \t        return;\n  \t    }\n\n  \t    const config = window.InduxAppwriteAuthConfig;\n  \t    if (!config) {\n  \t        return;\n  \t    }\n\n  \t    // Wait for store to be initialized\n  \t    const waitForStore = () => {\n  \t        const store = Alpine.store('auth');\n  \t        if (store && !store.createMagicLink) {\n  \t            // Add magic link methods to store\n  \t            store.createMagicLink = async function(email, redirectUrl = window.location.href) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                // Don't allow magic link request if already signed in (non-anonymous)\n  \t                if (this.isAuthenticated && !this.isAnonymous) {\n  \t                    return { success: false, error: 'Already signed in. Please logout first.' };\n  \t                }\n\n  \t                // Check if magic links are enabled\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                if (appwriteConfig && !appwriteConfig.magic) {\n  \t                    return { success: false, error: 'Magic link authentication is not enabled' };\n  \t                }\n\n  \t                // Use origin + pathname for redirect URL to avoid query params\n  \t                // This prevents Appwrite from adding parameters to URLs that already have query strings\n  \t                const currentUrl = new URL(window.location.href);\n  \t                const cleanRedirectUrl = redirectUrl === window.location.href \n  \t                    ? `${currentUrl.origin}${currentUrl.pathname}` \n  \t                    : redirectUrl;\n\n  \t                this.inProgress = true;\n  \t                this.error = null;\n  \t                // Clear expired flag when requesting new link\n  \t                this.magicLinkExpired = false;\n\n  \t                try {\n  \t                    // Check if account method exists\n  \t                    if (!this._appwrite || !this._appwrite.account) {\n  \t                        return { success: false, error: 'Account instance not available' };\n  \t                    }\n\n  \t                    const account = this._appwrite.account;\n\n  \t                    // Try createMagicURLSession first (standard method)\n  \t                    if (typeof account.createMagicURLSession === 'function') {\n  \t                        const token = await account.createMagicURLSession('unique()', email, cleanRedirectUrl);\n  \t                        this.magicLinkSent = true;\n  \t                        this.magicLinkExpired = false;\n  \t                        this.error = null;\n  \t                        window.dispatchEvent(new CustomEvent('indux:auth:magic-link-sent', {\n  \t                            detail: { email }\n  \t                        }));\n  \t                        return { success: true, message: 'Magic link sent to email', token };\n  \t                    }\n  \t                    \n  \t                    // Fallback: try createMagicURLToken (alternative method name)\n  \t                    if (typeof account.createMagicURLToken === 'function') {\n  \t                        const token = await account.createMagicURLToken('unique()', email, redirectUrl);\n  \t                        this.magicLinkSent = true;\n  \t                        this.magicLinkExpired = false;\n  \t                        this.error = null;\n  \t                        window.dispatchEvent(new CustomEvent('indux:auth:magic-link-sent', {\n  \t                            detail: { email }\n  \t                        }));\n  \t                        return { success: true, message: 'Magic link sent to email', token };\n  \t                    }\n\n  \t                    // If neither method exists, return helpful error\n  \t                    return { \n  \t                        success: false, \n  \t                        error: 'Magic link method not available. Please ensure you are using the latest Appwrite SDK.' \n  \t                    };\n  \t                } catch (error) {\n  \t                    this.error = error.message;\n  \t                    this.magicLinkSent = false;\n  \t                    this.magicLinkExpired = false;\n  \t                    return { success: false, error: error.message };\n  \t                } finally {\n  \t                    this.inProgress = false;\n  \t                }\n  \t            };\n\n  \t            // Convenience method: send magic link and automatically clear email on success\n  \t            // Accepts: email input element, selector string, Alpine reactive object {email}, email string, or nothing (auto-find)\n  \t            store.sendMagicLink = async function(emailInputOrRef, redirectUrl = window.location.href) {\n  \t                let email = null;\n  \t                let emailInputElement = null;\n  \t                let emailDataObj = null;\n  \t                \n  \t                // If no argument provided, try to auto-find the email input\n  \t                if (emailInputOrRef === undefined || emailInputOrRef === null) {\n  \t                    // Try to find the email input in the current context\n  \t                    // First, try to find the closest email input relative to the event target\n  \t                    let eventTarget = null;\n  \t                    if (typeof window !== 'undefined' && window.event) {\n  \t                        eventTarget = window.event.target;\n  \t                    }\n  \t                    \n  \t                    // If we have an event target, look for email input in the same form/parent\n  \t                    if (eventTarget) {\n  \t                        const form = eventTarget.closest('form');\n  \t                        if (form) {\n  \t                            emailInputElement = form.querySelector('input[type=\"email\"]');\n  \t                            if (emailInputElement) {\n  \t                                email = emailInputElement.value;\n  \t                            }\n  \t                        } else {\n  \t                            // Look for email input in the same parent container\n  \t                            const parent = eventTarget.parentElement;\n  \t                            if (parent) {\n  \t                                emailInputElement = parent.querySelector('input[type=\"email\"]');\n  \t                                if (emailInputElement) {\n  \t                                    email = emailInputElement.value;\n  \t                                }\n  \t                            }\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    // Fallback: find first email input in document\n  \t                    if (!emailInputElement) {\n  \t                        emailInputElement = document.querySelector('input[type=\"email\"]');\n  \t                        if (emailInputElement) {\n  \t                            email = emailInputElement.value;\n  \t                        }\n  \t                    }\n  \t                }\n  \t                // Handle different input types\n  \t                else if (typeof emailInputOrRef === 'string') {\n  \t                    // Could be a selector or direct email string\n  \t                    // Try as selector first (most common case)\n  \t                    try {\n  \t                        const element = document.querySelector(emailInputOrRef);\n  \t                        if (element && (element.tagName === 'INPUT' && element.type === 'email')) {\n  \t                            emailInputElement = element;\n  \t                            email = element.value;\n  \t                        } else {\n  \t                            // Treat as direct email string\n  \t                            email = emailInputOrRef;\n  \t                        }\n  \t                    } catch (e) {\n  \t                        // Invalid selector, treat as email string\n  \t                        email = emailInputOrRef;\n  \t                    }\n  \t                } else if (emailInputOrRef && typeof emailInputOrRef === 'object') {\n  \t                    // Could be DOM element or Alpine reactive object\n  \t                    if (emailInputOrRef.tagName === 'INPUT' || emailInputOrRef.matches?.('input[type=\"email\"]')) {\n  \t                        // DOM input element\n  \t                        emailInputElement = emailInputOrRef;\n  \t                        email = emailInputElement.value;\n  \t                    } else if ('email' in emailInputOrRef) {\n  \t                        // Alpine reactive object { email }\n  \t                        email = emailInputOrRef.email;\n  \t                        emailDataObj = emailInputOrRef;\n  \t                    } else {\n  \t                        return { success: false, error: 'Invalid email input. Provide an input element, selector, {email} object, email string, or nothing (auto-find).' };\n  \t                    }\n  \t                }\n  \t                \n  \t                if (!email || !email.trim()) {\n  \t                    return { success: false, error: 'Email is required' };\n  \t                }\n  \t                \n  \t                const result = await this.createMagicLink(email.trim(), redirectUrl);\n  \t                \n  \t                // Clear email on success\n  \t                if (result.success) {\n  \t                    // Use a microtask to ensure Alpine processes the update smoothly\n  \t                    Promise.resolve().then(() => {\n  \t                        if (emailInputElement) {\n  \t                            // Clear DOM input element\n  \t                            emailInputElement.value = '';\n  \t                            // Trigger input event for Alpine reactivity (if x-model is bound, it will update)\n  \t                            emailInputElement.dispatchEvent(new Event('input', { bubbles: true }));\n  \t                        } else if (emailDataObj) {\n  \t                            // Clear Alpine reactive object\n  \t                            emailDataObj.email = '';\n  \t                        }\n  \t                        // If we auto-found the input and it has x-model, the input event will update Alpine\n  \t                        // This handles the case where x-model=\"email\" is bound to the input\n  \t                    });\n  \t                }\n  \t                \n  \t                return result;\n  \t            };\n\n  \t            // Handle magic link callback\n  \t            store.handleMagicLinkCallback = async function(userId, secret) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                this.inProgress = true;\n  \t                this.error = null;\n  \t                this.magicLinkExpired = false;\n  \t                this.magicLinkSent = false;\n\n  \t                try {\n  \t                    // Delete any existing anonymous sessions first\n  \t                    if (this.session && this.isAnonymous) {\n  \t                        try {\n  \t                            await this._appwrite.account.deleteSession(this.session.$id);\n  \t                        } catch (deleteError) {\n  \t                            // Could not delete anonymous session\n  \t                        }\n  \t                    }\n\n  \t                    // Create session from magic link credentials\n  \t                    const session = await this._appwrite.account.createSession(userId, secret);\n  \t                    this.session = session;\n  \t                    this.user = await this._appwrite.account.get();\n  \t                    this.isAuthenticated = true;\n  \t                    this.isAnonymous = false;\n  \t                    this.magicLinkSent = false;\n  \t                    this.magicLinkExpired = false;\n  \t                    this.error = null;\n\n  \t                    // Clear stored callback on success\n  \t                    try {\n  \t                        sessionStorage.removeItem('indux:magic-link:callback');\n  \t                    } catch (e) {\n  \t                        // Ignore\n  \t                    }\n\n  \t                    // Sync state\n  \t                    if (this._syncStateToStorage) {\n  \t                        this._syncStateToStorage(this);\n  \t                    }\n\n  \t                    // Load teams if enabled\n  \t                    const appwriteConfig = await config.getAppwriteConfig();\n  \t                    if (appwriteConfig?.teams && this.listTeams) {\n  \t                        try {\n  \t                            await this.listTeams();\n  \t                            // Auto-create default teams if enabled\n  \t                            if ((appwriteConfig.permanentTeams || appwriteConfig.templateTeams) && window.InduxAppwriteAuthTeamsDefaults?.ensureDefaultTeams) {\n  \t                                await window.InduxAppwriteAuthTeamsDefaults.ensureDefaultTeams(this);\n  \t                            }\n  \t                        } catch (teamsError) {\n  \t                            console.warn('[Indux Appwrite Auth] Failed to load teams after magic link login:', teamsError);\n  \t                            // Don't fail login if teams fail to load\n  \t                        }\n  \t                    }\n\n  \t                    window.dispatchEvent(new CustomEvent('indux:auth:login', {\n  \t                        detail: { user: this.user }\n  \t                    }));\n\n  \t                    return { success: true, user: this.user };\n  \t                } catch (error) {\n  \t                    // Categorize errors\n  \t                    const errorMessage = error.message || '';\n  \t                    const errorCode = error.code || error.statusCode || '';\n  \t                    const isRateLimit = errorCode === 429 || errorMessage.includes('Rate limit') || errorMessage.includes('429');\n  \t                    const isExpiredOrInvalid = !isRateLimit && errorMessage && (\n  \t                        errorMessage.includes('expired') ||\n  \t                        errorMessage.includes('Invalid token') ||\n  \t                        errorMessage.includes('invalid') ||\n  \t                        errorMessage.includes('not found') ||\n  \t                        errorMessage.includes('404') ||\n  \t                        errorMessage.includes('prohibited') ||\n  \t                        errorCode === 404\n  \t                    );\n\n  \t                    if (isRateLimit) {\n  \t                        // Store callback for retry\n  \t                        try {\n  \t                            sessionStorage.setItem('indux:magic-link:callback', JSON.stringify({ userId, secret }));\n  \t                        } catch (e) {\n  \t                            // Ignore\n  \t                        }\n  \t                        this.error = 'Rate limit exceeded. Please wait a moment and refresh the page.';\n  \t                        this.isAuthenticated = false;\n  \t                        this.isAnonymous = false;\n  \t                        this.magicLinkExpired = false;\n  \t                    } else if (isExpiredOrInvalid) {\n  \t                        try {\n  \t                            sessionStorage.removeItem('indux:magic-link:callback');\n  \t                        } catch (e) {\n  \t                            // Ignore\n  \t                        }\n  \t                        this.magicLinkExpired = true;\n  \t                        this.magicLinkSent = false;\n  \t                        this.error = null;\n  \t                    } else {\n  \t                        try {\n  \t                            sessionStorage.removeItem('indux:magic-link:callback');\n  \t                        } catch (e) {\n  \t                            // Ignore\n  \t                        }\n  \t                        this.error = error.message;\n  \t                        this.magicLinkExpired = false;\n  \t                        this.magicLinkSent = false;\n  \t                    }\n\n  \t                    this.isAuthenticated = false;\n  \t                    this.isAnonymous = false;\n  \t                    \n  \t                    // Sync state\n  \t                    if (this._syncStateToStorage) {\n  \t                        this._syncStateToStorage(this);\n  \t                    }\n\n  \t                    return { success: false, error: error.message };\n  \t                } finally {\n  \t                    this.inProgress = false;\n  \t                }\n  \t            };\n  \t        } else if (!store) {\n  \t            // Wait a bit more for store to initialize\n  \t            setTimeout(waitForStore, 50);\n  \t        }\n  \t    };\n\n  \t    // Start waiting after a short delay to ensure store is ready\n  \t    setTimeout(waitForStore, 100);\n  \t}\n\n  \t// Handle magic link callbacks via events\n  \tfunction handleMagicLinkCallbacks() {\n  \t    // Handle expired magic link\n  \t    window.addEventListener('indux:auth:callback:expired', async (event) => {\n  \t        const store = Alpine.store('auth');\n  \t        if (!store) return;\n  \t        \n  \t        event.detail;\n  \t        \n  \t        // Check if user is already authenticated - preserve session\n  \t        let hasExistingSession = false;\n  \t        if (store.isAuthenticated && store.user) {\n  \t            hasExistingSession = true;\n  \t        } else if (store._appwrite) {\n  \t            // Only check if we don't have existing state (prevents rate limits)\n  \t            try {\n  \t                const user = await store._appwrite.account.get();\n  \t                if (user) {\n  \t                    hasExistingSession = true;\n  \t                    store.user = user;\n  \t                    store.isAuthenticated = true;\n  \t                    // Try to get session info\n  \t                    try {\n  \t                        const sessionsResponse = await store._appwrite.account.listSessions();\n  \t                        const allSessions = sessionsResponse.sessions || [];\n  \t                        const currentSession = allSessions.find(s => s.current === true) || allSessions[0];\n  \t                        if (currentSession) {\n  \t                            store.session = currentSession;\n  \t                            store.isAnonymous = currentSession.provider === 'anonymous';\n  \t                        }\n  \t                    } catch (sessionError) {\n  \t                        // Session fetch failed, but user exists\n  \t                        console.warn('[Indux Appwrite Auth] Could not get session info:', sessionError);\n  \t                    }\n  \t                }\n  \t            } catch (userError) {\n  \t                // No existing session\n  \t                hasExistingSession = false;\n  \t            }\n  \t        }\n  \t        \n  \t        // Set expired flag (always true for expired links)\n  \t        store.magicLinkExpired = true;\n  \t        store.magicLinkSent = false;\n  \t        store.error = null;\n  \t        \n  \t        // Only clear state if no existing session\n  \t        if (!hasExistingSession) {\n  \t            store.isAuthenticated = false;\n  \t            store.isAnonymous = false;\n  \t            store.user = null;\n  \t            store.session = null;\n  \t        }\n  \t        \n  \t            store.inProgress = false;\n  \t        \n  \t        // Sync state\n  \t        if (store._syncStateToStorage) {\n  \t            store._syncStateToStorage(store);\n  \t        }\n  \t        \n  \t        // Force Alpine reactivity\n  \t        requestAnimationFrame(() => {\n  \t            const authStore = Alpine.store('auth');\n  \t            if (authStore) {\n  \t                void authStore.isAuthenticated;\n  \t                void authStore.magicLinkExpired;\n  \t                void authStore.user;\n  \t            }\n  \t        });\n  \t    });\n  \t    \n  \t    // Handle valid magic link callback\n  \t    window.addEventListener('indux:auth:callback:magic', async (event) => {\n  \t        const store = Alpine.store('auth');\n  \t        if (!store) return;\n  \t        \n  \t        const callbackInfo = event.detail;\n  \t        \n  \t        // Store callback for retry if rate limited\n  \t        try {\n  \t            sessionStorage.setItem('indux:magic-link:callback', JSON.stringify({ \n  \t                userId: callbackInfo.userId, \n  \t                secret: callbackInfo.secret \n  \t            }));\n  \t        } catch (e) {\n  \t            console.warn('[Indux Appwrite Auth] Could not store callback:', e);\n  \t        }\n  \t        \n  \t        // Handle the callback\n  \t        await store.handleMagicLinkCallback(callbackInfo.userId, callbackInfo.secret);\n  \t    });\n  \t}\n\n  \t// Initialize when Alpine is ready\n  \tdocument.addEventListener('alpine:init', () => {\n  \t    try {\n  \t        initializeMagicLinks();\n  \t        handleMagicLinkCallbacks();\n  \t    } catch (error) {\n  \t        // Failed to initialize magic links\n  \t    }\n  \t});\n\n  \t// Export magic links interface\n  \twindow.InduxAppwriteAuthMagicLinks = {\n  \t    initialize: initializeMagicLinks,\n  \t    handleCallbacks: handleMagicLinkCallbacks\n  \t};\n\n  \t/* Auth OAuth */\n\n  \t// Add OAuth methods to auth store\n  \tfunction initializeOAuth() {\n  \t    if (typeof Alpine === 'undefined') {\n  \t        return;\n  \t    }\n\n  \t    const config = window.InduxAppwriteAuthConfig;\n  \t    if (!config) {\n  \t        return;\n  \t    }\n\n  \t    // Wait for store to be initialized\n  \t    const waitForStore = () => {\n  \t        const store = Alpine.store('auth');\n  \t        if (store && !store.loginOAuth) {\n  \t            // Add OAuth method to store\n  \t            // Note: Appwrite accepts any provider string (google, github, etc.) and validates on their side\n  \t            // No need to maintain a registry of supported providers\n  \t            store.loginOAuth = async function(provider, successUrl = window.location.href, failureUrl = window.location.href) {\n  \t                if (!this._appwrite) {\n  \t                    this._appwrite = await config.getAppwriteClient();\n  \t                }\n  \t                if (!this._appwrite) {\n  \t                    return { success: false, error: 'Appwrite not configured' };\n  \t                }\n\n  \t                // Check if OAuth is enabled\n  \t                const appwriteConfig = await config.getAppwriteConfig();\n  \t                if (appwriteConfig && !appwriteConfig.oauth) {\n  \t                    return { success: false, error: 'OAuth authentication is not enabled' };\n  \t                }\n\n  \t                // Use origin + pathname for success/failure URLs to avoid query params\n  \t                const currentUrl = new URL(window.location.href);\n  \t                const cleanSuccessUrl = `${currentUrl.origin}${currentUrl.pathname}`;\n  \t                const cleanFailureUrl = `${currentUrl.origin}${currentUrl.pathname}`;\n\n  \t                // Delete any existing anonymous sessions before OAuth\n  \t                // This prevents conflicts where anonymous sessions might interfere with OAuth\n  \t                // Appwrite will create a new account for OAuth if needed\n  \t                if (this.isAnonymous && this.session) {\n  \t                    try {\n  \t                        await this._appwrite.account.deleteSession(this.session.$id);\n  \t                        this.session = null;\n  \t                        this.user = null;\n  \t                        this.isAuthenticated = false;\n  \t                        this.isAnonymous = false;\n  \t                    } catch (error) {\n  \t                        console.warn('[Indux Appwrite Auth] Failed to delete anonymous session before OAuth:', error);\n  \t                        // Continue anyway - OAuth should still work\n  \t                    }\n  \t                }\n\n  \t                // Set flag in sessionStorage to detect OAuth callback (cleared after callback)\n  \t                sessionStorage.setItem('indux:oauth:redirect', 'true');\n  \t                \n  \t                // Store the provider name so we can retrieve it after callback\n  \t                // session.provider returns \"oauth2\" generically, but we know the specific provider\n  \t                this._oauthProvider = provider;\n  \t                // Use localStorage for provider (persists across redirects, cleared on logout)\n  \t                // sessionStorage can be cleared by some browsers during OAuth redirects\n  \t                try {\n  \t                    localStorage.setItem('indux:oauth:provider', provider);\n  \t                } catch (e) {\n  \t                    // Fallback to sessionStorage if localStorage fails\n  \t                    sessionStorage.setItem('indux:oauth:provider', provider);\n  \t                }\n\n  \t                this.inProgress = true;\n  \t                this.error = null;\n\n  \t                try {\n  \t                    // Use createOAuth2Token (like the working implementation)\n  \t                    // This returns a token/redirect URL that we manually navigate to\n  \t                    // After OAuth, Appwrite redirects back with userId and secret in URL params\n  \t                    const token = await this._appwrite.account.createOAuth2Token(\n  \t                        provider,\n  \t                        cleanSuccessUrl,\n  \t                        cleanFailureUrl,\n  \t                        ['email'] // Scopes\n  \t                    );\n  \t                    \n  \t                    // Check for redirectUrl - Appwrite may return it in various formats\n  \t                    // Try multiple property names and formats\n  \t                    let redirectUrl = null;\n  \t                    \n  \t                    if (typeof token === 'string') {\n  \t                        redirectUrl = token;\n  \t                    } else if (token?.redirectUrl) {\n  \t                        redirectUrl = token.redirectUrl;\n  \t                    } else if (token?.url) {\n  \t                        redirectUrl = token.url;\n  \t                    } else if (token && typeof token === 'object') {\n  \t                        // Try to find any URL-like property in the object\n  \t                        const possibleUrl = Object.values(token).find(v => typeof v === 'string' && (v.startsWith('http://') || v.startsWith('https://')));\n  \t                        if (possibleUrl) {\n  \t                            redirectUrl = possibleUrl;\n  \t                        }\n  \t                    }\n  \t                    \n  \t                    // Clear error state before redirect (whether we found URL or not)\n  \t                    // This prevents any error flash before redirect\n  \t                    this.error = null;\n  \t                    \n  \t                    if (redirectUrl) {\n  \t                        // Use requestAnimationFrame to ensure Alpine processes the error clearing\n  \t                        // before redirect happens, preventing error flash\n  \t                        requestAnimationFrame(() => {\n  \t                            window.location.href = redirectUrl;\n  \t                        });\n  \t                        // Return immediately - redirect will happen asynchronously\n  \t                        return { success: true, redirectUrl: redirectUrl };\n  \t                    } else {\n  \t                        // If we can't find redirect URL, log it but don't show error to user\n  \t                        // The redirect might still work via Appwrite's internal handling\n  \t                        console.warn('[Indux Appwrite Auth] Could not extract redirect URL from token:', token);\n  \t                        // Don't set error - just return failure silently\n  \t                        // This prevents error flash when redirect might still succeed\n  \t                        this.inProgress = false;\n  \t                        return { success: false, error: 'Could not extract redirect URL' };\n  \t                    }\n  \t                } catch (error) {\n  \t                    // Don't show \"No redirect URL\" errors - they're usually false positives\n  \t                    // Only show other meaningful errors\n  \t                    if (!error.message.includes('No redirect URL') && !error.message.includes('redirect')) {\n  \t                        this.error = error.message;\n  \t                        this.inProgress = false;\n  \t                    } else {\n  \t                        // For redirect-related errors, just log and don't show to user\n  \t                        console.warn('[Indux Appwrite Auth] OAuth redirect error (suppressed from UI):', error.message);\n  \t                        this.error = null;\n  \t                        this.inProgress = false;\n  \t                    }\n  \t                    return { success: false, error: error.message };\n  \t                }\n  \t            };\n  \t        } else if (!store) {\n  \t            // Wait a bit more for store to initialize\n  \t            setTimeout(waitForStore, 50);\n  \t        }\n  \t    };\n\n  \t    // Start waiting after a short delay to ensure store is ready\n  \t    setTimeout(waitForStore, 100);\n  \t}\n\n  \t// Handle OAuth callbacks via events\n  \tfunction handleOAuthCallbacks() {\n  \t    // Handle OAuth callback\n  \t    window.addEventListener('indux:auth:callback:oauth', async (event) => {\n  \t        const store = Alpine.store('auth');\n  \t        if (!store) return;\n  \t        \n  \t        const callbackInfo = event.detail;\n  \t        \n  \t        // Clear OAuth redirect flag\n  \t        sessionStorage.removeItem('indux:oauth:redirect');\n  \t        \n  \t        // Restore OAuth provider name from localStorage (set during loginOAuth)\n  \t        // Try localStorage first (persists across redirects), fallback to sessionStorage\n  \t        let storedProvider = null;\n  \t        try {\n  \t            storedProvider = localStorage.getItem('indux:oauth:provider');\n  \t        } catch (e) {\n  \t            // If localStorage fails, try sessionStorage\n  \t            storedProvider = sessionStorage.getItem('indux:oauth:provider');\n  \t        }\n  \t        if (storedProvider) {\n  \t            store._oauthProvider = storedProvider;\n  \t            // Keep it in localStorage (cleared on logout)\n  \t            // This allows us to show the correct provider name even after page refresh\n  \t        } else {\n  \t            console.warn('[Indux Appwrite Auth] No OAuth provider found in storage');\n  \t        }\n  \t        \n  \t        // OAuth uses userId/secret just like magic links - create session manually\n  \t        // The \"prohibited\" error means session already exists, so try to fetch user first\n  \t        if (!store._appwrite) {\n  \t            store._appwrite = await window.InduxAppwriteAuthConfig.getAppwriteClient();\n  \t        }\n  \t        \n  \t        if (!store._appwrite) {\n  \t            store.error = 'Appwrite not configured';\n  \t            return;\n  \t        }\n  \t        \n  \t        store.inProgress = true;\n  \t        store.error = null;\n  \t        store.magicLinkExpired = false;\n  \t        store.magicLinkSent = false;\n  \t        \n  \t        try {\n  \t            // Delete any existing anonymous sessions first\n  \t            if (store.session && store.isAnonymous) {\n  \t                try {\n  \t                    await store._appwrite.account.deleteSession(store.session.$id);\n  \t                } catch (deleteError) {\n  \t                    // Could not delete anonymous session\n  \t                }\n  \t            }\n  \t            \n  \t            // Try to create session from OAuth credentials\n  \t            try {\n  \t                const session = await store._appwrite.account.createSession(callbackInfo.userId, callbackInfo.secret);\n  \t                store.session = session;\n  \t                store.user = await store._appwrite.account.get();\n  \t                store.isAuthenticated = true;\n  \t                store.isAnonymous = false;\n  \t                store.magicLinkSent = false;\n  \t                store.magicLinkExpired = false;\n  \t                store.error = null;\n  \t            } catch (createError) {\n  \t                // If \"prohibited\" error, session already exists - just fetch user\n  \t                const isProhibited = createError.message?.includes('prohibited');\n  \t                if (isProhibited) {\n  \t                    store.user = await store._appwrite.account.get();\n  \t                    try {\n  \t                        const sessionsResponse = await store._appwrite.account.listSessions();\n  \t                        const allSessions = sessionsResponse.sessions || [];\n  \t                        const oauthSession = allSessions.find(s => s.provider !== 'anonymous' && s.provider !== 'magic-url') || allSessions.find(s => s.current === true);\n  \t                        if (oauthSession) {\n  \t                            store.session = oauthSession;\n  \t                        } else if (allSessions.length > 0) {\n  \t                            store.session = allSessions[0];\n  \t                        } else {\n  \t                            store.session = await store._appwrite.account.getSession('current');\n  \t                        }\n  \t                    } catch (sessionError) {\n  \t                        console.warn('[Indux Appwrite Auth] Could not get session info:', sessionError);\n  \t                    }\n  \t                    store.isAuthenticated = true;\n  \t                    store.isAnonymous = false;\n  \t                    store.magicLinkSent = false;\n  \t                    store.magicLinkExpired = false;\n  \t                    store.error = null;\n  \t                } else {\n  \t                    throw createError;\n  \t                }\n  \t            }\n  \t            \n  \t            // Sync state\n  \t            if (store._syncStateToStorage) {\n  \t                store._syncStateToStorage(store);\n  \t            }\n  \t            \n  \t            // Load teams if enabled\n  \t            const appwriteConfig = await window.InduxAppwriteAuthConfig.getAppwriteConfig();\n  \t            if (appwriteConfig?.teams && store.listTeams) {\n  \t                try {\n  \t                    await store.listTeams();\n  \t                    // Auto-create default teams if enabled\n  \t                    if ((appwriteConfig.permanentTeams || appwriteConfig.templateTeams) && window.InduxAppwriteAuthTeamsDefaults?.ensureDefaultTeams) {\n  \t                        await window.InduxAppwriteAuthTeamsDefaults.ensureDefaultTeams(store);\n  \t                    }\n  \t                } catch (teamsError) {\n  \t                    console.warn('[Indux Appwrite Auth] Failed to load teams after OAuth login:', teamsError);\n  \t                    // Don't fail login if teams fail to load\n  \t                }\n  \t            }\n  \t            \n  \t            window.dispatchEvent(new CustomEvent('indux:auth:login', {\n  \t                detail: { user: store.user }\n  \t            }));\n  \t        } catch (error) {\n  \t            store.error = error.message;\n  \t            store.isAuthenticated = false;\n  \t            store.isAnonymous = false;\n  \t            \n  \t            // Sync state\n  \t            if (store._syncStateToStorage) {\n  \t                store._syncStateToStorage(store);\n  \t            }\n  \t        } finally {\n  \t            store.inProgress = false;\n  \t        }\n  \t    });\n  \t}\n\n  \t// Initialize when Alpine is ready\n  \tdocument.addEventListener('alpine:init', () => {\n  \t    try {\n  \t        initializeOAuth();\n  \t        handleOAuthCallbacks();\n  \t    } catch (error) {\n  \t        // Failed to initialize OAuth\n  \t    }\n  \t});\n\n  \t// Export OAuth interface\n  \twindow.InduxAppwriteAuthOAuth = {\n  \t    initialize: initializeOAuth,\n  \t    handleCallbacks: handleOAuthCallbacks\n  \t};\n\n  \t/* Auth callbacks */\n\n  \t// Handle authentication callbacks from URL parameters\n  \t// This module coordinates callback detection and delegates to method-specific handlers\n\n  \tfunction initializeCallbacks() {\n  \t    const config = window.InduxAppwriteAuthConfig;\n  \t    if (!config) {\n  \t        return;\n  \t    }\n\n  \t    // Check for callback in URL or sessionStorage\n  \t    function detectCallback() {\n  \t        const urlParams = new URLSearchParams(window.location.search);\n  \t        const userId = urlParams.get('userId');\n  \t        const secret = urlParams.get('secret');\n  \t        const expire = urlParams.get('expire');\n  \t        \n  \t        // Check for stored callback (from rate limit retry)\n  \t        let storedCallback = null;\n  \t        try {\n  \t            const stored = sessionStorage.getItem('indux:magic-link:callback');\n  \t            if (stored) {\n  \t                storedCallback = JSON.parse(stored);\n  \t            }\n  \t        } catch (e) {\n  \t            // Ignore parse errors\n  \t        }\n  \t        \n  \t        // Check OAuth redirect flag\n  \t        const isOAuthCallback = sessionStorage.getItem('indux:oauth:redirect') === 'true';\n  \t        \n  \t        // Check for team invitation (teamId and membershipId in URL)\n  \t        const teamId = urlParams.get('teamId');\n  \t        const membershipId = urlParams.get('membershipId');\n  \t        const isTeamInvite = !!(teamId && membershipId && userId && secret);\n  \t        \n  \t        const callbackInfo = {\n  \t            userId: userId || storedCallback?.userId,\n  \t            secret: secret || storedCallback?.secret,\n  \t            expire: expire,\n  \t            teamId: teamId,\n  \t            membershipId: membershipId,\n  \t            isOAuth: isOAuthCallback,\n  \t            isTeamInvite: isTeamInvite,\n  \t            hasCallback: !!(userId || storedCallback?.userId) && !!(secret || storedCallback?.secret),\n  \t            hasExpired: !!expire && !userId && !secret\n  \t        };\n  \t        \n  \t        return callbackInfo;\n  \t    }\n\n  \t    // Clean up URL parameters\n  \t    function cleanupUrl() {\n  \t        const url = new URL(window.location.href);\n  \t        const paramsToRemove = ['userId', 'secret', 'expire', 'project', 'teamId', 'membershipId'];\n  \t        paramsToRemove.forEach(param => {\n  \t            while (url.searchParams.has(param)) {\n  \t                url.searchParams.delete(param);\n  \t            }\n  \t        });\n  \t        url.hash = '';\n  \t        window.history.replaceState({}, '', url.toString());\n  \t    }\n\n  \t    // Process callback - delegates to method-specific handlers\n  \t    async function processCallback(callbackInfo) {\n  \t        const store = Alpine.store('auth');\n  \t        if (!store || !store._appwrite) {\n  \t            return { handled: false };\n  \t        }\n\n  \t        store._appwrite;\n\n  \t        // Clean up URL immediately\n  \t        cleanupUrl();\n\n  \t        // Handle expired magic link\n  \t        if (callbackInfo.hasExpired) {\n  \t            // Dispatch event for magic link handler\n  \t            window.dispatchEvent(new CustomEvent('indux:auth:callback:expired', {\n  \t                detail: callbackInfo\n  \t            }));\n  \t            return { handled: true, type: 'expired' };\n  \t        }\n\n  \t        // Handle valid callback (userId + secret)\n  \t        if (callbackInfo.hasCallback) {\n  \t            if (callbackInfo.isTeamInvite) {\n  \t                // Team invitation callback - dispatch event\n  \t                window.dispatchEvent(new CustomEvent('indux:auth:callback:team', {\n  \t                    detail: callbackInfo\n  \t                }));\n  \t                return { handled: true, type: 'team' };\n  \t            } else if (callbackInfo.isOAuth) {\n  \t                // OAuth callback - dispatch event\n  \t                window.dispatchEvent(new CustomEvent('indux:auth:callback:oauth', {\n  \t                    detail: callbackInfo\n  \t                }));\n  \t                return { handled: true, type: 'oauth' };\n  \t            } else {\n  \t                // Magic link callback - dispatch event\n  \t                window.dispatchEvent(new CustomEvent('indux:auth:callback:magic', {\n  \t                    detail: callbackInfo\n  \t                }));\n  \t                return { handled: true, type: 'magic' };\n  \t            }\n  \t        }\n\n  \t        return { handled: false };\n  \t    }\n\n  \t    // Export callback detection and processing\n  \t    window.InduxAppwriteAuthCallbacks = {\n  \t        detect: detectCallback,\n  \t        process: processCallback,\n  \t        cleanupUrl\n  \t    };\n  \t}\n\n  \t// Initialize when config is available\n  \tif (window.InduxAppwriteAuthConfig) {\n  \t    initializeCallbacks();\n  \t} else {\n  \t    document.addEventListener('DOMContentLoaded', () => {\n  \t        if (window.InduxAppwriteAuthConfig) {\n  \t            initializeCallbacks();\n  \t        }\n  \t    });\n  \t}\n  \treturn indux_appwrite_auth;\n  }\n\n  requireIndux_appwrite_auth();\n\n  /* Indux Data Sources */\n\n  // Dynamic js-yaml loader\n  let jsyaml = null;\n  let yamlLoadingPromise = null;\n\n  async function loadYamlLibrary() {\n      if (jsyaml) return jsyaml;\n      if (yamlLoadingPromise) return yamlLoadingPromise;\n      \n      yamlLoadingPromise = new Promise((resolve, reject) => {\n          const script = document.createElement('script');\n          script.src = 'https://cdn.jsdelivr.net/npm/js-yaml/dist/js-yaml.min.js';\n          script.onload = () => {\n              if (typeof window.jsyaml !== 'undefined') {\n                  jsyaml = window.jsyaml;\n                  resolve(jsyaml);\n              } else {\n                  console.error('[Indux Data] js-yaml failed to load - jsyaml is undefined');\n                  yamlLoadingPromise = null; // Reset so we can try again\n                  reject(new Error('js-yaml failed to load'));\n              }\n          };\n          script.onerror = (error) => {\n              console.error('[Indux Data] Script failed to load:', error);\n              yamlLoadingPromise = null; // Reset so we can try again\n              reject(error);\n          };\n          document.head.appendChild(script);\n      });\n      \n      return yamlLoadingPromise;\n  }\n\n  // Initialize plugin when either DOM is ready or Alpine is ready\n  async function initializeDataSourcesPlugin() {\n      // Initialize empty data sources store\n      const initialStore = {\n          all: [], // Global content array for cross-dataSource access\n          _initialized: false,\n          _currentUrl: window.location.pathname\n      };\n      Alpine.store('data', initialStore);\n\n      // Cache for loaded data sources\n      const dataSourceCache = new Map();\n      const loadingPromises = new Map();\n\n      // Listen for locale changes to reload data\n      window.addEventListener('localechange', async (event) => {\n          event.detail.locale;\n          \n          // Set loading state to prevent flicker\n          const store = Alpine.store('data');\n          if (store) {\n              Alpine.store('data', {\n                  ...store,\n                  _localeChanging: true\n              });\n          }\n          \n          try {\n              // Get manifest to identify localized data sources\n              const manifest = await ensureManifest();\n              if (!manifest?.data) return;\n              \n              // Find localized data sources (those with locale keys)\n              const localizedDataSources = [];\n              Object.entries(manifest.data).forEach(([name, config]) => {\n                  if (typeof config === 'object' && !config.url) {\n                      // Check if it has locale keys (2-letter codes)\n                      const hasLocaleKeys = Object.keys(config).some(key => \n                          key.length === 2 && typeof config[key] === 'string'\n                      );\n                      if (hasLocaleKeys) {\n                          localizedDataSources.push(name);\n                      }\n                  }\n              });\n              \n              // Only clear cache for localized data sources\n              localizedDataSources.forEach(dataSourceName => {\n                  // Clear all locale variants of this data source\n                  const keysToDelete = [];\n                  for (const key of dataSourceCache.keys()) {\n                      if (key.startsWith(`${dataSourceName}:`)) {\n                          keysToDelete.push(key);\n                      }\n                  }\n                  keysToDelete.forEach(key => dataSourceCache.delete(key));\n                  \n                  // Clear loading promises for this data source\n                  const promisesToDelete = [];\n                  for (const key of loadingPromises.keys()) {\n                      if (key.startsWith(`${dataSourceName}:`)) {\n                          promisesToDelete.push(key);\n                      }\n                  }\n                  promisesToDelete.forEach(key => loadingPromises.delete(key));\n              });\n              \n              // Only remove localized data from store, keep non-localized data\n              const store = Alpine.store('data');\n              if (store && store.all) {\n                  const filteredAll = store.all.filter(item => \n                      !localizedDataSources.includes(item.contentType)\n                  );\n                  \n                  // Remove localized data sources from store\n                  const newStore = { ...store, all: filteredAll };\n                  localizedDataSources.forEach(dataSourceName => {\n                      delete newStore[dataSourceName];\n                  });\n                  \n                  Alpine.store('data', {\n                      ...newStore,\n                      _localeChanging: false\n                  });\n              }\n              \n          } catch (error) {\n              console.error('[Indux Data] Error handling locale change:', error);\n              // Fallback to full reload if something goes wrong\n              dataSourceCache.clear();\n              loadingPromises.clear();\n              Alpine.store('data', {\n                  all: [],\n                  _initialized: true,\n                  _localeChanging: false\n              });\n          }\n      });\n\n      // Track initialization state\n      let isInitializing = false;\n      let initializationComplete = false;\n\n      // Load manifest if not already loaded\n      async function ensureManifest() {\n          if (window.InduxComponentsRegistry?.manifest) {\n              return window.InduxComponentsRegistry.manifest;\n          }\n\n          try {\n              const response = await fetch('/manifest.json');\n              return await response.json();\n          } catch (error) {\n              console.error('[Indux Data] Failed to load manifest:', error);\n              return null;\n          }\n      }\n\n      // Helper to interpolate environment variables\n      function interpolateEnvVars(str) {\n          if (typeof str !== 'string') return str;\n          return str.replace(/\\$\\{([^}]+)\\}/g, (match, varName) => {\n              // Check for environment variables (in browser, these would be set by build process)\n              if (typeof process !== 'undefined' && process.env && process.env[varName]) {\n                  return process.env[varName];\n              }\n              // Check for window.env (common pattern for client-side env vars)\n              if (typeof window !== 'undefined' && window.env && window.env[varName]) {\n                  return window.env[varName];\n              }\n              // Return original if not found\n              return match;\n          });\n      }\n\n      // Helper to get nested value from object\n      function getNestedValue(obj, path) {\n          return path.split('.').reduce((current, key) => {\n              return current && current[key] !== undefined ? current[key] : undefined;\n          }, obj);\n      }\n\n      // Get default locale (first locale key) from a localized data source\n      function getDefaultLocale(dataSource) {\n          if (typeof dataSource !== 'object' || dataSource === null) {\n              return null;\n          }\n          \n          // Find first locale key (valid language code that's not a config key)\n          const configKeys = ['url', 'headers', 'params', 'transform', 'defaultValue'];\n          for (const key of Object.keys(dataSource)) {\n              if (!configKeys.includes(key) && \n                  typeof dataSource[key] === 'string' &&\n                  /^[a-zA-Z0-9_-]+$/.test(key)) {\n                  return key;\n              }\n          }\n          return null;\n      }\n\n      // Deep merge objects with current locale taking precedence\n      function deepMergeWithFallback(currentData, fallbackData) {\n          if (fallbackData === null || fallbackData === undefined) {\n              return currentData;\n          }\n          if (currentData === null || currentData === undefined) {\n              return fallbackData;\n          }\n          \n          // If both are arrays, merge array items by index\n          if (Array.isArray(currentData) && Array.isArray(fallbackData)) {\n              const maxLength = Math.max(currentData.length, fallbackData.length);\n              const merged = [];\n              for (let i = 0; i < maxLength; i++) {\n                  const currentItem = currentData[i];\n                  const fallbackItem = fallbackData[i];\n                  if (currentItem !== undefined && fallbackItem !== undefined) {\n                      // Both exist - merge recursively\n                      merged.push(deepMergeWithFallback(currentItem, fallbackItem));\n                  } else if (currentItem !== undefined) {\n                      // Only current exists\n                      merged.push(currentItem);\n                  } else {\n                      // Only fallback exists\n                      merged.push(fallbackItem);\n                  }\n              }\n              return merged;\n          }\n          \n          // If both are objects, merge recursively\n          if (typeof currentData === 'object' && typeof fallbackData === 'object' &&\n              !Array.isArray(currentData) && !Array.isArray(fallbackData)) {\n              const merged = { ...fallbackData };\n              for (const key in currentData) {\n                  if (key.startsWith('_')) {\n                      // Preserve metadata from current locale\n                      merged[key] = currentData[key];\n                  } else if (currentData[key] !== undefined) {\n                      // Recursively merge nested objects/arrays\n                      merged[key] = deepMergeWithFallback(currentData[key], fallbackData[key]);\n                  }\n              }\n              return merged;\n          }\n          \n          // For primitives or mismatched types, prefer current\n          return currentData !== undefined ? currentData : fallbackData;\n      }\n\n      // Load from API endpoint\n      async function loadFromAPI(dataSource) {\n          try {\n              const url = new URL(interpolateEnvVars(dataSource.url));\n              \n              // Add query parameters\n              if (dataSource.params) {\n                  Object.entries(dataSource.params).forEach(([key, value]) => {\n                      url.searchParams.set(key, interpolateEnvVars(value));\n                  });\n              }\n              \n              // Prepare headers\n              const headers = {};\n              if (dataSource.headers) {\n                  Object.entries(dataSource.headers).forEach(([key, value]) => {\n                      headers[key] = interpolateEnvVars(value);\n                  });\n              }\n              \n              const response = await fetch(url, {\n                  method: dataSource.method || 'GET',\n                  headers: headers\n              });\n              \n              if (!response.ok) {\n                  throw new Error(`API request failed: ${response.status} ${response.statusText}`);\n              }\n              \n              let data = await response.json();\n              \n              // Transform data if needed\n              if (dataSource.transform) {\n                  data = getNestedValue(data, dataSource.transform);\n              }\n              \n              return data;\n          } catch (error) {\n              console.error(`[Indux Data] Failed to load API dataSource:`, error);\n              // Return empty array/object to prevent breaking the UI\n              return Array.isArray(dataSource.defaultValue) ? dataSource.defaultValue : (dataSource.defaultValue || []);\n          }\n      }\n\n      // Load dataSource data\n      async function loadDataSource(dataSourceName, locale = 'en') {\n          const cacheKey = `${dataSourceName}:${locale}`;\n\n          // Check memory cache first\n          if (dataSourceCache.has(cacheKey)) {\n              const cachedData = dataSourceCache.get(cacheKey);\n              if (!isInitializing) {\n                  updateStore(dataSourceName, cachedData);\n              }\n              return cachedData;\n          }\n\n          // If already loading, return existing promise\n          if (loadingPromises.has(cacheKey)) {\n              return loadingPromises.get(cacheKey);\n          }\n\n          const loadPromise = (async () => {\n              try {\n                  const manifest = await ensureManifest();\n                  if (!manifest?.data) {\n                      console.warn('[Indux Data] No data sources defined in manifest.json');\n                      return null;\n                  }\n\n                  const dataSource = manifest.data[dataSourceName];\n                  if (!dataSource) {\n                      // Only warn for dataSources that are actually being accessed\n                      // This prevents warnings for test references that might exist in HTML\n                      return null;\n                  }\n\n                  let data;\n                  \n                  // Auto-detect dataSource type based on structure\n                  if (typeof dataSource === 'string') {\n                      // Local file - load from filesystem\n                      const response = await fetch(dataSource);\n                      const contentType = response.headers.get('content-type');\n\n                      // Handle different content types\n                      if (contentType?.includes('application/json') || dataSource.endsWith('.json')) {\n                          data = await response.json();\n                      } else if (contentType?.includes('text/yaml') || dataSource.endsWith('.yaml') || dataSource.endsWith('.yml')) {\n                          const text = await response.text();\n                          \n                          // Load js-yaml library dynamically\n                          const yamlLib = await loadYamlLibrary();\n                          data = yamlLib.load(text);\n                      } else {\n                          // Try JSON first, then YAML\n                          try {\n                              const text = await response.text();\n                              data = JSON.parse(text);\n                          } catch (e) {\n                              const yamlLib = await loadYamlLibrary();\n                              data = yamlLib.load(text);\n                          }\n                      }\n                  } else if (dataSource.url) {\n                      // Cloud API - load from HTTP endpoint\n                      data = await loadFromAPI(dataSource);\n                  } else if (dataSource[locale]) {\n                      // Localized dataSource - load current locale\n                      const localizedDataSource = dataSource[locale];\n                      let currentLocaleData = null;\n                      \n                      if (typeof localizedDataSource === 'string') {\n                          // Localized local file\n                          const response = await fetch(localizedDataSource);\n                          const contentType = response.headers.get('content-type');\n\n                          if (contentType?.includes('application/json') || localizedDataSource.endsWith('.json')) {\n                              currentLocaleData = await response.json();\n                          } else if (contentType?.includes('text/yaml') || localizedDataSource.endsWith('.yaml') || localizedDataSource.endsWith('.yml')) {\n                              const text = await response.text();\n                              const yamlLib = await loadYamlLibrary();\n                              currentLocaleData = yamlLib.load(text);\n                          } else {\n                              try {\n                                  const text = await response.text();\n                                  currentLocaleData = JSON.parse(text);\n                              } catch (e) {\n                                  const yamlLib = await loadYamlLibrary();\n                                  currentLocaleData = yamlLib.load(text);\n                              }\n                          }\n                      } else if (localizedDataSource.url) {\n                          // Localized cloud API\n                          currentLocaleData = await loadFromAPI(localizedDataSource);\n                      } else {\n                          console.warn(`[Indux Data] No valid source found for dataSource \"${dataSourceName}\" in locale \"${locale}\"`);\n                          return null;\n                      }\n                      \n                      // Load default locale for fallback (if different from current locale)\n                      const defaultLocale = getDefaultLocale(dataSource);\n                      if (defaultLocale && defaultLocale !== locale) {\n                          const defaultLocaleDataSource = dataSource[defaultLocale];\n                          let fallbackData = null;\n                          \n                          try {\n                              if (typeof defaultLocaleDataSource === 'string') {\n                                  const response = await fetch(defaultLocaleDataSource);\n                                  const contentType = response.headers.get('content-type');\n                                  \n                                  if (contentType?.includes('application/json') || defaultLocaleDataSource.endsWith('.json')) {\n                                      fallbackData = await response.json();\n                                  } else if (contentType?.includes('text/yaml') || defaultLocaleDataSource.endsWith('.yaml') || defaultLocaleDataSource.endsWith('.yml')) {\n                                      const text = await response.text();\n                                      const yamlLib = await loadYamlLibrary();\n                                      fallbackData = yamlLib.load(text);\n                                  } else {\n                                      try {\n                                          const text = await response.text();\n                                          fallbackData = JSON.parse(text);\n                                      } catch (e) {\n                                          const yamlLib = await loadYamlLibrary();\n                                          fallbackData = yamlLib.load(text);\n                                      }\n                                  }\n                              } else if (defaultLocaleDataSource?.url) {\n                                  fallbackData = await loadFromAPI(defaultLocaleDataSource);\n                              }\n                              \n                              // Merge fallback data with current locale data (current takes precedence)\n                              if (fallbackData) {\n                                  data = deepMergeWithFallback(currentLocaleData, fallbackData);\n                              } else {\n                                  data = currentLocaleData;\n                              }\n                          } catch (error) {\n                              // If fallback fails, just use current locale data\n                              console.warn(`[Indux Data] Failed to load fallback locale \"${defaultLocale}\" for \"${dataSourceName}\", using current locale only`);\n                              data = currentLocaleData;\n                          }\n                      } else {\n                          // No default locale or same as current, just use current\n                          data = currentLocaleData;\n                      }\n                  } else {\n                      console.warn(`[Indux Data] No valid source found for dataSource \"${dataSourceName}\"`);\n                      return null;\n                  }\n\n                  // Enhance data with metadata\n                  let enhancedData;\n                  const sourceType = typeof dataSource === 'string' ? 'local' : 'api';\n                  const sourcePath = typeof dataSource === 'string' ? dataSource : dataSource.url;\n                  \n                  if (Array.isArray(data)) {\n                      enhancedData = data.map(item => ({\n                          ...item,\n                          contentType: dataSourceName,\n                          _loadedFrom: sourcePath,\n                          _sourceType: sourceType,\n                          _locale: locale\n                      }));\n                  } else if (typeof data === 'object') {\n                      enhancedData = {\n                          ...data,\n                          contentType: dataSourceName,\n                          _loadedFrom: sourcePath,\n                          _sourceType: sourceType,\n                          _locale: locale\n                      };\n                  }\n\n                  // Update cache\n                  dataSourceCache.set(cacheKey, enhancedData);\n\n                  // Update store only if not initializing\n                  if (!isInitializing) {\n                      updateStore(dataSourceName, enhancedData);\n                  }\n\n                  return enhancedData;\n              } catch (error) {\n                  console.error(`[Indux Data] Failed to load dataSource \"${dataSourceName}\":`, error);\n                  return null;\n              } finally {\n                  loadingPromises.delete(cacheKey);\n              }\n          })();\n\n          loadingPromises.set(cacheKey, loadPromise);\n          return loadPromise;\n      }\n\n      // Update store with new data\n      function updateStore(dataSourceName, data) {\n          if (isInitializing) return;\n\n          const store = Alpine.store('data');\n          const all = store.all.filter(item => item.contentType !== dataSourceName);\n\n          if (Array.isArray(data)) {\n              all.push(...data);\n          } else {\n              all.push(data);\n          }\n\n          Alpine.store('data', {\n              ...store,\n              [dataSourceName]: data,\n              all,\n              _initialized: true\n          });\n      }\n\n      // Create a simple fallback object that returns empty strings for all properties\n      // This prevents infinite recursion by not using a Proxy for nested property access\n      function createSimpleFallback() {\n          const fallback = Object.create(null);\n          \n          // Add primitive conversion methods directly to the object\n          fallback[Symbol.toPrimitive] = function(hint) {\n              return hint === 'number' ? 0 : '';\n          };\n          fallback.valueOf = function() { return ''; };\n          fallback.toString = function() { return ''; };\n          \n          // Add route() function that returns the fallback for chaining\n          fallback.route = function(pathKey) {\n              return fallback;\n          };\n          \n          // For array-like properties, add length\n          Object.defineProperty(fallback, 'length', {\n              value: 0,\n              writable: false,\n              enumerable: false,\n              configurable: false\n          });\n          \n          // Make Symbol.toPrimitive non-enumerable and directly on the object\n          Object.defineProperty(fallback, Symbol.toPrimitive, {\n              value: function(hint) {\n                  return hint === 'number' ? 0 : '';\n              },\n              writable: false,\n              enumerable: false,\n              configurable: false\n          });\n          \n          // Use Proxy only for the initial access - but return the plain object for nested accesses\n          return new Proxy(fallback, {\n              get(target, key) {\n                  // Handle special keys that shouldn't trigger recursion\n                  if (key === Symbol.iterator || key === 'then' || key === 'catch' || key === 'finally' ||\n                      key === Symbol.toStringTag || key === Symbol.hasInstance) {\n                      return undefined;\n                  }\n\n                  // Handle constructor and prototype\n                  if (key === 'constructor' || key === '__proto__' || key === 'prototype') {\n                      return undefined;\n                  }\n\n                  // If the key exists on the target (like route, toString, valueOf, length, Symbol.toPrimitive), return it\n                  if (key in target || key === Symbol.toPrimitive) {\n                      const value = target[key];\n                      if (value !== undefined) {\n                          return value;\n                      }\n                  }\n\n                  // For any other property access, return the plain target object (not the proxy)\n                  // This prevents recursion because accessing properties on the plain object won't trigger this proxy's getter\n                  // The plain object will return undefined for missing properties, which Alpine will handle\n                  return target;\n              },\n              has(target, key) {\n                  // Make all string keys appear to exist to prevent Alpine from trying to access them\n                  if (typeof key === 'string') {\n                      return true;\n                  }\n                  return key in target || key === Symbol.toPrimitive;\n              }\n          });\n      }\n      \n      // Create a cached singleton fallback object\n      let cachedLoadingProxy = null;\n      \n      // Create a safe proxy for loading state\n      function createLoadingProxy() {\n          // Reuse cached fallback for all nested property accesses\n          if (!cachedLoadingProxy) {\n              cachedLoadingProxy = createSimpleFallback();\n          }\n          return cachedLoadingProxy;\n      }\n\n      // Create a proxy for array items\n      function createArrayItemProxy(item) {\n          return new Proxy(item, {\n              get(target, key) {\n                  // Handle special keys\n                  if (key === Symbol.iterator || key === 'then' || key === 'catch' || key === 'finally') {\n                      return undefined;\n                  }\n\n                  // Handle toPrimitive for text content\n                  if (key === Symbol.toPrimitive) {\n                      return function () {\n                          return target[key] || '';\n                      };\n                  }\n\n                  return target[key];\n              }\n          });\n      }\n\n      // Create a proxy for arrays with route() support\n      function createArrayProxyWithRoute(arrayTarget) {\n          return new Proxy(arrayTarget, {\n              get(target, key) {\n                  // Handle special keys\n                  if (key === Symbol.iterator || key === 'then' || key === 'catch' || key === 'finally') {\n                      return undefined;\n                  }\n\n                  // Handle route() function for route-specific lookups on arrays\n                  if (key === 'route') {\n                      return function(pathKey) {\n                          // Only create route proxy if we have valid data\n                          if (target && typeof target === 'object') {\n                              // Get data source name from the first item's contentType metadata\n                              return createRouteProxy(\n                                  target, \n                                  pathKey, \n                                  (Array.isArray(target) && target.length > 0 && target[0] && target[0].contentType) \n                                      ? target[0].contentType \n                                      : undefined\n                              );\n                          }\n                          // Return a safe fallback proxy\n                          return new Proxy({}, {\n                              get() { return undefined; }\n                          });\n                      };\n                  }\n\n                  if (key === 'length') {\n                      return target.length;\n                  }\n                  if (typeof key === 'string' && !isNaN(Number(key))) {\n                      const index = Number(key);\n                      if (index >= 0 && index < target.length) {\n                          return createArrayItemProxy(target[index]);\n                      }\n                      return createLoadingProxy();\n                  }\n                  // Add essential array methods\n                  if (key === 'filter' || key === 'map' || key === 'find' || \n                      key === 'findIndex' || key === 'some' || key === 'every' ||\n                      key === 'reduce' || key === 'forEach' || key === 'slice') {\n                      return target[key].bind(target);\n                  }\n                  return createLoadingProxy();\n              }\n          });\n      }\n\n      // Create a proxy for nested objects that properly handles arrays and further nesting\n      function createNestedObjectProxy(objTarget) {\n          return new Proxy(objTarget, {\n              get(target, key) {\n                  // Handle special keys\n                  if (key === Symbol.iterator || key === 'then' || key === 'catch' || key === 'finally') {\n                      return undefined;\n                  }\n\n                  // Handle toPrimitive for text content\n                  if (key === Symbol.toPrimitive) {\n                      return function () {\n                          return target[key] || '';\n                      };\n                  }\n\n                  const value = target[key];\n                  \n                  // If the property is an array, wrap it in the array proxy with route() support\n                  if (Array.isArray(value)) {\n                      return createArrayProxyWithRoute(value);\n                  }\n                  \n                  // If the property is an object, wrap it recursively for further nesting\n                  if (typeof value === 'object' && value !== null) {\n                      return createNestedObjectProxy(value);\n                  }\n                  \n                  // If value is undefined, return a loading proxy to maintain chain and prevent errors\n                  if (value === undefined) {\n                      return createLoadingProxy();\n                  }\n                  \n                  // Return primitive values directly\n                  return value;\n              }\n          });\n      }\n\n      // Create proxy for route-specific lookups\n      function createRouteProxy(dataSourceData, pathKey, dataSourceName) {\n          // First check if we have a valid route\n          let foundItem = null;\n          try {\n              const store = Alpine.store('data');\n              const currentPath = store?._currentUrl || window.location.pathname;\n              let pathSegments = currentPath.split('/').filter(segment => segment);\n              \n              // Filter out language codes from path segments for route matching\n              const localeStore = Alpine.store('locale');\n              if (localeStore && localeStore.available && pathSegments.length > 0) {\n                  const firstSegment = pathSegments[0];\n                  if (localeStore.available.includes(firstSegment)) {\n                      pathSegments = pathSegments.slice(1);\n                  }\n              }\n              \n              if (dataSourceData && typeof dataSourceData === 'object') {\n                  foundItem = findItemByPath(dataSourceData, pathKey, pathSegments);\n              }\n          } catch (error) {\n              // Error finding route\n          }\n          \n          // Return a proxy for the found item (or safe proxy if no route found)\n          return new Proxy({}, {\n              get(target, prop) {\n                  try {\n                      // If no route found, return safe values\n                      if (!foundItem) {\n                          // Return empty string for text properties to prevent errors\n                          if (typeof prop === 'string') {\n                              return '';\n                          }\n                          return undefined;\n                      }\n                      \n                      if (prop in foundItem) {\n                          return foundItem[prop];\n                      }\n                      \n                      // Special handling for 'group' property - find the group containing the matched item\n                      if (prop === 'group') {\n                          const groupItem = findGroupContainingItem(dataSourceData, foundItem);\n                          return groupItem?.group || '';\n                      }\n                      \n                      return undefined;\n                  } catch (error) {\n                      return undefined;\n                  }\n              }\n          });\n      }\n\n      // Listen for URL changes to trigger reactivity\n      let currentUrl = window.location.pathname;\n      window.addEventListener('popstate', () => {\n          if (window.location.pathname !== currentUrl) {\n              currentUrl = window.location.pathname;\n              // Update store to trigger Alpine reactivity\n              const store = Alpine.store('data');\n              if (store && store._initialized) {\n                  store._currentUrl = window.location.pathname;\n              }\n          }\n      });\n\n\n      // Also listen for pushstate/replacestate (for SPA navigation)\n      const originalPushState = history.pushState;\n      const originalReplaceState = history.replaceState;\n      \n      history.pushState = function(...args) {\n          originalPushState.apply(history, args);\n          if (window.location.pathname !== currentUrl) {\n              currentUrl = window.location.pathname;\n              const store = Alpine.store('data');\n              if (store && store._initialized) {\n                  store._currentUrl = window.location.pathname;\n              }\n          }\n      };\n      \n      history.replaceState = function(...args) {\n          originalReplaceState.apply(history, args);\n          if (window.location.pathname !== currentUrl) {\n              currentUrl = window.location.pathname;\n              const store = Alpine.store('data');\n              if (store && store._initialized) {\n                  store._currentUrl = window.location.pathname;\n              }\n          }\n      };\n\n      // Recursively search for items with matching path\n      function findItemByPath(data, pathKey, pathSegments) {\n          if (!pathSegments || pathSegments.length === 0) {\n              return null;\n          }\n          \n          if (Array.isArray(data)) {\n              for (const item of data) {\n                  if (typeof item === 'object' && item !== null) {\n                      // Check if this item has the path key\n                      if (pathKey in item) {\n                          const itemPath = item[pathKey];\n                          // Check if any path segment matches this item's path\n                          if (pathSegments.some(segment => segment === itemPath)) {\n                              return item;\n                          }\n                      }\n                      \n                      // Recursively search nested objects\n                      const found = findItemByPath(item, pathKey, pathSegments);\n                      if (found) return found;\n                  }\n              }\n          } else if (typeof data === 'object' && data !== null) {\n              for (const key in data) {\n                  const found = findItemByPath(data[key], pathKey, pathSegments);\n                  if (found) return found;\n              }\n          }\n          \n          return null;\n      }\n\n      // Find the group that contains a specific item\n      function findGroupContainingItem(data, targetItem) {\n          if (Array.isArray(data)) {\n              for (const item of data) {\n                  if (typeof item === 'object' && item !== null) {\n                      // Check if this is a group with items\n                      if (item.group && Array.isArray(item.items)) {\n                          // Check if the target item is in this group's items\n                          if (item.items.includes(targetItem)) {\n                              return item;\n                          }\n                      }\n                      \n                      // Recursively search in nested objects\n                      const found = findGroupContainingItem(item, targetItem);\n                      if (found) return found;\n                  }\n              }\n          } else if (typeof data === 'object' && data !== null) {\n              for (const key in data) {\n                  const found = findGroupContainingItem(data[key], targetItem);\n                  if (found) return found;\n              }\n          }\n          \n          return null;\n      }\n\n      // Add $x magic method\n      Alpine.magic('x', () => {\n          const pendingLoads = new Map();\n          const store = Alpine.store('data');\n          const accessCache = new Map(); // Cache for frequently accessed dataSources\n\n          return new Proxy({}, {\n              get(target, prop) {\n                  // Handle special keys\n                  if (prop === Symbol.iterator || prop === 'then' || prop === 'catch' || prop === 'finally') {\n                      return undefined;\n                  }\n\n                  // Check access cache first for better performance\n                  if (accessCache.has(prop)) {\n                      return accessCache.get(prop);\n                  }\n\n                  // Get current value from store\n                  const value = store[prop];\n                  // Use HTML lang as source of truth, fallback to Alpine store, then 'en'\n                  document.documentElement.lang || Alpine.store('locale')?.current || 'en';\n\n                  // If not in store, try to load it\n                  if (!value && !pendingLoads.has(prop)) {\n                      // Wait a tick to ensure localization plugin has initialized\n                      const loadPromise = new Promise(resolve => {\n                          setTimeout(() => {\n                              // Re-check locale after delay\n                              const finalLocale = document.documentElement.lang || Alpine.store('locale')?.current || 'en';\n                              resolve(loadDataSource(prop, finalLocale));\n                          }, 0);\n                      });\n                      pendingLoads.set(prop, loadPromise);\n                      \n                      // Cache the loading proxy\n                      const proxy = createLoadingProxy();\n                      accessCache.set(prop, proxy);\n                      \n                      // Clear cache when loaded\n                      loadPromise.finally(() => {\n                          accessCache.delete(prop);\n                          pendingLoads.delete(prop);\n                      });\n                      \n                      return proxy;\n                  }\n\n                  // If we have a value, return a reactive proxy\n                  if (value) {\n                      return new Proxy(value, {\n                          get(target, key) {\n                              // Handle special keys\n                              if (key === Symbol.iterator || key === 'then' || key === 'catch' || key === 'finally') {\n                                  return undefined;\n                              }\n\n                              // Handle route() function for route-specific lookups\n                              if (key === 'route') {\n                                  return function(pathKey) {\n                                      // Only create route proxy if we have valid data\n                                      if (target && typeof target === 'object') {\n                                          return createRouteProxy(target, pathKey);\n                                      }\n                                      // Return a safe fallback proxy\n                                      return new Proxy({}, {\n                                          get() { return undefined; }\n                                      });\n                                  };\n                              }\n\n                              // Handle toPrimitive for text content\n                              if (key === Symbol.toPrimitive) {\n                                  return function () { return ''; };\n                              }\n\n                              // Handle array-like behavior\n                              if (Array.isArray(target)) {\n                                  if (key === 'length') {\n                                      return target.length;\n                                  }\n                                  // Handle numeric keys for array access\n                                  if (typeof key === 'string' && !isNaN(Number(key))) {\n                                      const index = Number(key);\n                                      if (index >= 0 && index < target.length) {\n                                          return createArrayItemProxy(target[index]);\n                                      }\n                                      return createLoadingProxy();\n                                  }\n                                  // Add essential array methods\n                                  if (key === 'filter' || key === 'map' || key === 'find' || \n                                      key === 'findIndex' || key === 'some' || key === 'every' ||\n                                      key === 'reduce' || key === 'forEach' || key === 'slice') {\n                                      return target[key].bind(target);\n                                  }\n                              }\n\n                              // Handle nested objects\n                              const nestedValue = target[key];\n                              if (nestedValue) {\n                                  if (Array.isArray(nestedValue)) {\n                                      // Use helper function for arrays with route() support\n                                      return createArrayProxyWithRoute(nestedValue);\n                                  }\n                                  // Only create proxy for objects, return primitives directly\n                                  if (typeof nestedValue === 'object' && nestedValue !== null) {\n                                      // Handle nested objects - use helper function for proper array/object handling\n                                      return createNestedObjectProxy(nestedValue);\n                                  }\n                                  // Return primitive values directly (strings, numbers, booleans)\n                                  return nestedValue;\n                              }\n                              return createLoadingProxy();\n                          }\n                      });\n                  }\n\n                  return createLoadingProxy();\n              }\n          });\n      });\n\n      // Initialize dataSources after magic method is registered\n      if (isInitializing || initializationComplete) return;\n      isInitializing = true;\n\n      try {\n          // Initialize store without loading all dataSources\n          Alpine.store('data', {\n              all: [],\n              _initialized: true\n          });\n\n          // Data sources will be loaded on-demand when accessed via $x\n      } finally {\n          isInitializing = false;\n          initializationComplete = true;\n      }\n  }\n\n  // Handle both DOMContentLoaded and alpine:init\n  if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', () => {\n          if (window.Alpine) initializeDataSourcesPlugin();\n      });\n  }\n\n  document.addEventListener('alpine:init', initializeDataSourcesPlugin);\n\n  /* Indux Dropdowns */\n\n  // Initialize plugin when either DOM is ready or Alpine is ready\n  function initializeDropdownPlugin() {\n      // Ensure Alpine.js context exists for directives to work\n      function ensureAlpineContext() {\n          const body = document.body;\n          if (!body.hasAttribute('x-data')) {\n              body.setAttribute('x-data', '{}');\n          }\n      }\n\n      // Helper to register directives\n      function registerDirective(name, handler) {\n          Alpine.directive(name, handler);\n      }\n\n      // Ensure Alpine.js context exists\n      ensureAlpineContext();\n\n      // Register dropdown directive\n      registerDirective('dropdown', (el, { modifiers, expression }, { effect, evaluateLater }) => {\n          let menu;\n\n          // Shared hover state for all dropdown types\n          let hoverTimeout;\n          let autoCloseTimeout;\n          let startAutoCloseTimer;\n\n          effect(() => {\n\n              // Defer processing to ensure Alpine is fully ready\n              setTimeout(() => {\n                  if (!window.Alpine) {\n                      console.warn('[Indux] Alpine not available for dropdown processing');\n                      return;\n                  }\n\n                  // Generate a unique anchor code for positioning\n                  const anchorCode = Math.random().toString(36).substr(2, 9);\n\n                  // Evaluate the expression to get the actual menu ID\n                  let dropdownId;\n                  if (expression) {\n                      // Check if expression contains template literals or is a static string\n                      if (expression.includes('${') || expression.includes('`')) {\n                          // Use evaluateLater for dynamic expressions\n                          const evaluator = evaluateLater(expression);\n                          evaluator(value => {\n                              dropdownId = value;\n                          });\n                      } else {\n                          // Static string - use as-is\n                          dropdownId = expression;\n                      }\n                  } else {\n                      dropdownId = `dropdown-${anchorCode}`;\n                  }\n\n                  // Check if expression refers to a template ID\n                  if (dropdownId && document.getElementById(dropdownId)?.tagName === 'TEMPLATE') {\n                      // Clone template content and generate unique ID\n                      const template = document.getElementById(dropdownId);\n                      menu = template.content.cloneNode(true).firstElementChild;\n                      const uniqueDropdownId = `dropdown-${anchorCode}`;\n                      menu.setAttribute('id', uniqueDropdownId);\n                      document.body.appendChild(menu);\n                      el.setAttribute('popovertarget', uniqueDropdownId);\n\n                      // Initialize Alpine on the cloned menu\n                      Alpine.initTree(menu);\n                  } else {\n                      // Original behavior for static dropdowns\n                      menu = document.getElementById(dropdownId);\n                      if (!menu) {\n                          // Check if this might be a component-based dropdown\n                          if (window.InduxComponentsRegistry && window.InduxComponentsLoader) {\n                              // Try to find the menu in components\n                              const componentName = dropdownId; // Assume the dropdownId is the component name\n                              const registry = window.InduxComponentsRegistry;\n                              \n                              if (registry.registered.has(componentName)) {\n                                  // Component exists, wait for it to be loaded\n                                  const waitForComponent = async () => {\n                                      const loader = window.InduxComponentsLoader;\n                                      const content = await loader.loadComponent(componentName);\n                                      if (content) {\n                                          // Create a temporary container to parse the component\n                                          const tempDiv = document.createElement('div');\n                                          tempDiv.innerHTML = content.trim();\n                                          const menuElement = tempDiv.querySelector(`#${dropdownId}`);\n                                          \n                                          if (menuElement) {\n                                              // Clone the menu and append to body\n                                              menu = menuElement.cloneNode(true);\n                                              menu.setAttribute('id', dropdownId);\n                                              document.body.appendChild(menu);\n                                              el.setAttribute('popovertarget', dropdownId);\n                                              \n                                              // Initialize Alpine on the menu\n                                              Alpine.initTree(menu);\n                                              \n                                              // Set up the dropdown after menu is ready\n                                              setupDropdown();\n                                          } else {\n                                              console.warn(`[Indux] Menu with id \"${dropdownId}\" not found in component \"${componentName}\"`);\n                                          }\n                                      } else {\n                                          console.warn(`[Indux] Failed to load component \"${componentName}\" for dropdown`);\n                                      }\n                                  };\n                                  \n                                  // Wait for components to be ready, then try to load\n                                  if (window.__induxComponentsInitialized) {\n                                      waitForComponent();\n                                  } else {\n                                      window.addEventListener('indux:components-ready', waitForComponent);\n                                  }\n                                  return; // Exit early, setup will happen in waitForComponent\n                              }\n                          }\n                          \n                          console.warn(`[Indux] Dropdown menu with id \"${dropdownId}\" not found`);\n                          return;\n                      }\n                      el.setAttribute('popovertarget', dropdownId);\n                  }\n\n                  // Set up the dropdown\n                  setupDropdown();\n\n                  function setupDropdown() {\n                      if (!menu) return;\n                      \n                      // Set up popover\n                      menu.setAttribute('popover', '');\n\n                      // Set up anchor positioning\n                      const anchorName = `--dropdown-${anchorCode}`;\n                      el.style.setProperty('anchor-name', anchorName);\n                      menu.style.setProperty('position-anchor', anchorName);\n\n                      // Set up hover functionality after menu is ready\n                      if (modifiers.includes('hover')) {\n                      const handleShowPopover = () => {\n                          if (menu && !menu.matches(':popover-open')) {\n                              clearTimeout(hoverTimeout);\n                              clearTimeout(autoCloseTimeout);\n                              \n                              menu.showPopover();\n                          }\n                      };\n\n                      // Enhanced auto-close when mouse leaves both trigger and menu\n                      startAutoCloseTimer = () => {\n                          clearTimeout(autoCloseTimeout);\n                          autoCloseTimeout = setTimeout(() => {\n                              if (menu?.matches(':popover-open')) {\n                                  const isOverButton = el.matches(':hover');\n                                  const isOverMenu = menu.matches(':hover');\n                                  \n                                  if (!isOverButton && !isOverMenu) {\n                                      menu.hidePopover();\n                                  }\n                              }\n                          }, 300); // Small delay to prevent accidental closes\n                      };\n\n                      el.addEventListener('mouseenter', handleShowPopover);\n                      el.addEventListener('mouseleave', startAutoCloseTimer);\n                  }\n\n\n\n                  // Add keyboard navigation handling\n                  menu.addEventListener('keydown', (e) => {\n                      // Get all navigable elements (traditional focusable + li elements)\n                      const allElements = menu.querySelectorAll(\n                          'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"]), li'\n                      );\n                      const currentIndex = Array.from(allElements).indexOf(e.target);\n\n                      if (e.key === 'ArrowDown') {\n                          e.preventDefault();\n                          const nextIndex = (currentIndex + 1) % allElements.length;\n                          const nextElement = allElements[nextIndex];\n                          if (nextElement.tagName === 'LI') {\n                              nextElement.setAttribute('tabindex', '0');\n                          }\n                          nextElement.focus();\n                      } else if (e.key === 'ArrowUp') {\n                          e.preventDefault();\n                          const prevIndex = (currentIndex - 1 + allElements.length) % allElements.length;\n                          const prevElement = allElements[prevIndex];\n                          if (prevElement.tagName === 'LI') {\n                              prevElement.setAttribute('tabindex', '0');\n                          }\n                          prevElement.focus();\n                      } else if (e.key === 'Tab') {\n                          // Get only traditional focusable elements for tab navigation\n                          const focusable = menu.querySelectorAll(\n                              'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n                          );\n\n                          // If we're on the last focusable element and tabbing forward\n                          if (!e.shiftKey && e.target === focusable[focusable.length - 1]) {\n                              e.preventDefault();\n                              menu.hidePopover();\n                              // Focus the next focusable element after the dropdown trigger\n                              const allFocusable = document.querySelectorAll(\n                                  'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n                              );\n                              const triggerIndex = Array.from(allFocusable).indexOf(el);\n                              const nextElement = allFocusable[triggerIndex + 1];\n                              if (nextElement) nextElement.focus();\n                          }\n\n                          // If we're on the first element and tabbing backward\n                          if (e.shiftKey && e.target === focusable[0]) {\n                              menu.hidePopover();\n                          }\n                      } else if (e.key === 'Escape') {\n                          menu.hidePopover();\n                          el.focus();\n                      } else if (e.key === 'Enter' || e.key === ' ') {\n                          // Allow Enter/Space to activate li elements or follow links\n                          if (e.target.tagName === 'LI') {\n                              const link = e.target.querySelector('a');\n                              if (link) {\n                                  e.preventDefault();\n                                  link.click();\n                              }\n                          }\n                      }\n                  });\n\n                  // Make li elements focusable when menu opens\n                  menu.addEventListener('toggle', (e) => {\n                      if (e.newState === 'open') {\n                          // Set up li elements for keyboard navigation\n                          const liElements = menu.querySelectorAll('li');\n                          liElements.forEach((li, index) => {\n                              if (!li.hasAttribute('tabindex')) {\n                                  li.setAttribute('tabindex', '-1');\n                              }\n                              // Focus first li element if no other focusable elements\n                              if (index === 0 && !menu.querySelector('button, [href], input, select, textarea, [tabindex=\"0\"]')) {\n                                  li.setAttribute('tabindex', '0');\n                                  li.focus();\n                              }\n                          });\n                      }\n                  });\n\n                  // Add hover functionality for menu\n                  if (modifiers.includes('hover')) {\n                      // Simple approach: any mouse activity in the menu area cancels close timer\n                      menu.addEventListener('mouseenter', () => {\n                          clearTimeout(autoCloseTimeout);\n                          clearTimeout(hoverTimeout);\n                      });\n\n                      menu.addEventListener('mouseleave', () => {\n                          // Always start timer when leaving menu bounds\n                          if (startAutoCloseTimer) {\n                              startAutoCloseTimer();\n                          }\n                      });\n\n                      // Add event listeners to all interactive elements inside menu to cancel timers\n                      const cancelCloseTimer = () => {\n                          clearTimeout(autoCloseTimeout);\n                      };\n\n                      // Set up listeners on existing menu items\n                      const setupMenuItemListeners = () => {\n                          const menuItems = menu.querySelectorAll('li, button, a, [role=\"menuitem\"]');\n                          menuItems.forEach(item => {\n                              item.addEventListener('mouseenter', cancelCloseTimer);\n                          });\n                      };\n\n                      // Setup listeners after a brief delay to ensure menu is rendered\n                      setTimeout(setupMenuItemListeners, 10);\n                  }\n                  } // End of setupDropdown function\n              });\n          });\n      });\n  }\n\n  // Handle both DOMContentLoaded and alpine:init\n  if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', () => {\n          if (window.Alpine) {\n              initializeDropdownPlugin();\n          } else {\n              // Wait for Alpine to be available\n              document.addEventListener('alpine:init', initializeDropdownPlugin);\n          }\n      });\n  } else {\n      // DOM is already loaded\n      if (window.Alpine) {\n          initializeDropdownPlugin();\n      } else {\n          // Wait for Alpine to be available\n          document.addEventListener('alpine:init', initializeDropdownPlugin);\n      }\n  }\n\n  // Also listen for alpine:init as a backup\n  document.addEventListener('alpine:init', initializeDropdownPlugin);\n\n  // Handle dialog interactions - close dropdowns when dialogs open\n  document.addEventListener('click', (event) => {\n      const button = event.target.closest('button[popovertarget]');\n      if (!button) return;\n      \n      const targetId = button.getAttribute('popovertarget');\n      const target = document.getElementById(targetId);\n      \n      if (target && target.tagName === 'DIALOG' && target.hasAttribute('popover')) {\n          // Close dropdowns BEFORE the dialog opens to avoid conflicts\n          const openDropdowns = document.querySelectorAll('menu[popover]:popover-open');\n          \n          openDropdowns.forEach(dropdown => {\n              if (!target.contains(dropdown)) {\n                  dropdown.hidePopover();\n              }\n          });\n      }\n  });\n\n  var indux_icons = {};\n\n  /* Iconify v3.1.1 */\n\n  var hasRequiredIndux_icons;\n\n  function requireIndux_icons () {\n  \tif (hasRequiredIndux_icons) return indux_icons;\n  \thasRequiredIndux_icons = 1;\n  \t(function (exports) {\n  \t\tvar Iconify = function (t) { const e = Object.freeze({ left: 0, top: 0, width: 16, height: 16 }), n = Object.freeze({ rotate: 0, vFlip: false, hFlip: false }), o = Object.freeze({ ...e, ...n }), r = Object.freeze({ ...o, body: \"\", hidden: false }); function i(t, e) { const o = function (t, e) { const n = {}; !t.hFlip != !e.hFlip && (n.hFlip = true), !t.vFlip != !e.vFlip && (n.vFlip = true); const o = ((t.rotate || 0) + (e.rotate || 0)) % 4; return o && (n.rotate = o), n }(t, e); for (const i in r) i in n ? i in t && !(i in o) && (o[i] = n[i]) : i in e ? o[i] = e[i] : i in t && (o[i] = t[i]); return o } function c(t, e, n) { const o = t.icons, r = t.aliases || Object.create(null); let c = {}; function s(t) { c = i(o[t] || r[t], c); } return s(e), n.forEach(s), i(t, c) } function s(t, e) { const n = []; if (\"object\" != typeof t || \"object\" != typeof t.icons) return n; t.not_found instanceof Array && t.not_found.forEach((t => { e(t, null), n.push(t); })); const o = function (t, e) { const n = t.icons, o = t.aliases || Object.create(null), r = Object.create(null); return (Object.keys(n).concat(Object.keys(o))).forEach((function t(e) { if (n[e]) return r[e] = []; if (!(e in r)) { r[e] = null; const n = o[e] && o[e].parent, i = n && t(n); i && (r[e] = [n].concat(i)); } return r[e] })), r }(t); for (const r in o) { const i = o[r]; i && (e(r, c(t, r, i)), n.push(r)); } return n } const a = /^[a-z0-9]+(-[a-z0-9]+)*$/, u = (t, e, n, o = \"\") => { const r = t.split(\":\"); if (\"@\" === t.slice(0, 1)) { if (r.length < 2 || r.length > 3) return null; o = r.shift().slice(1); } if (r.length > 3 || !r.length) return null; if (r.length > 1) { const t = r.pop(), n = r.pop(), i = { provider: r.length > 0 ? r[0] : o, prefix: n, name: t }; return e && !f(i) ? null : i } const i = r[0], c = i.split(\"-\"); if (c.length > 1) { const t = { provider: o, prefix: c.shift(), name: c.join(\"-\") }; return e && !f(t) ? null : t } if (n && \"\" === o) { const t = { provider: o, prefix: \"\", name: i }; return e && !f(t, n) ? null : t } return null }, f = (t, e) => !!t && !(\"\" !== t.provider && !t.provider.match(a) || !(e && \"\" === t.prefix || t.prefix.match(a)) || !t.name.match(a)), l = { provider: \"\", aliases: {}, not_found: {}, ...e }; function d(t, e) { for (const n in e) if (n in t && typeof t[n] != typeof e[n]) return false; return true } function p(t) { if (\"object\" != typeof t || null === t) return null; const e = t; if (\"string\" != typeof e.prefix || !t.icons || \"object\" != typeof t.icons) return null; if (!d(t, l)) return null; const n = e.icons; for (const t in n) { const e = n[t]; if (!t.match(a) || \"string\" != typeof e.body || !d(e, r)) return null } const o = e.aliases || Object.create(null); for (const t in o) { const e = o[t], i = e.parent; if (!t.match(a) || \"string\" != typeof i || !n[i] && !o[i] || !d(e, r)) return null } return e } const h = Object.create(null); function g(t, e) { const n = h[t] || (h[t] = Object.create(null)); return n[e] || (n[e] = function (t, e) { return { provider: t, prefix: e, icons: Object.create(null), missing: new Set } }(t, e)) } function m(t, e) { return p(e) ? s(e, ((e, n) => { n ? t.icons[e] = n : t.missing.add(e); })) : [] } function y(t, e) { let n = []; return (\"string\" == typeof t ? [t] : Object.keys(h)).forEach((t => { (\"string\" == typeof t && \"string\" == typeof e ? [e] : Object.keys(h[t] || {})).forEach((e => { const o = g(t, e); n = n.concat(Object.keys(o.icons).map((n => (\"\" !== t ? \"@\" + t + \":\" : \"\") + e + \":\" + n))); })); })), n } let b = false; function v(t) { const e = \"string\" == typeof t ? u(t, true, b) : t; if (e) { const t = g(e.provider, e.prefix), n = e.name; return t.icons[n] || (t.missing.has(n) ? null : void 0) } } function x(t, e) { const n = u(t, true, b); if (!n) return false; return function (t, e, n) { try { if (\"string\" == typeof n.body) return t.icons[e] = { ...n }, !0 } catch (t) { } return false }(g(n.provider, n.prefix), n.name, e) } function w(t, e) { if (\"object\" != typeof t) return false; if (\"string\" != typeof e && (e = t.provider || \"\"), b) ; const n = t.prefix; if (!f({ provider: e, prefix: n, name: \"a\" })) return false; return !!m(g(e, n), t) } function S(t) { return !!v(t) } function j(t) { const e = v(t); return e ? { ...o, ...e } : null } const E = Object.freeze({ width: null, height: null }), I = Object.freeze({ ...E, ...n }), O = /(-?[0-9.]*[0-9]+[0-9.]*)/g, k = /^-?[0-9.]*[0-9]+[0-9.]*$/g; function C(t, e, n) { if (1 === e) return t; if (n = n || 100, \"number\" == typeof t) return Math.ceil(t * e * n) / n; if (\"string\" != typeof t) return t; const o = t.split(O); if (null === o || !o.length) return t; const r = []; let i = o.shift(), c = k.test(i); for (; ;) { if (c) { const t = parseFloat(i); isNaN(t) ? r.push(i) : r.push(Math.ceil(t * e * n) / n); } else r.push(i); if (i = o.shift(), void 0 === i) return r.join(\"\"); c = !c; } } const M = t => \"unset\" === t || \"undefined\" === t || \"none\" === t; function T(t, e) { const n = { ...o, ...t }, r = { ...I, ...e }, i = { left: n.left, top: n.top, width: n.width, height: n.height }; let c = n.body;[n, r].forEach((t => { const e = [], n = t.hFlip, o = t.vFlip; let r, s = t.rotate; switch (n ? o ? s += 2 : (e.push(\"translate(\" + (i.width + i.left).toString() + \" \" + (0 - i.top).toString() + \")\"), e.push(\"scale(-1 1)\"), i.top = i.left = 0) : o && (e.push(\"translate(\" + (0 - i.left).toString() + \" \" + (i.height + i.top).toString() + \")\"), e.push(\"scale(1 -1)\"), i.top = i.left = 0), s < 0 && (s -= 4 * Math.floor(s / 4)), s %= 4, s) { case 1: r = i.height / 2 + i.top, e.unshift(\"rotate(90 \" + r.toString() + \" \" + r.toString() + \")\"); break; case 2: e.unshift(\"rotate(180 \" + (i.width / 2 + i.left).toString() + \" \" + (i.height / 2 + i.top).toString() + \")\"); break; case 3: r = i.width / 2 + i.left, e.unshift(\"rotate(-90 \" + r.toString() + \" \" + r.toString() + \")\"); }s % 2 == 1 && (i.left !== i.top && (r = i.left, i.left = i.top, i.top = r), i.width !== i.height && (r = i.width, i.width = i.height, i.height = r)), e.length && (c = '<g transform=\"' + e.join(\" \") + '\">' + c + \"</g>\"); })); const s = r.width, a = r.height, u = i.width, f = i.height; let l, d; null === s ? (d = null === a ? \"1em\" : \"auto\" === a ? f : a, l = C(d, u / f)) : (l = \"auto\" === s ? u : s, d = null === a ? C(l, f / u) : \"auto\" === a ? f : a); const p = {}, h = (t, e) => { M(e) || (p[t] = e.toString()); }; return h(\"width\", l), h(\"height\", d), p.viewBox = i.left.toString() + \" \" + i.top.toString() + \" \" + u.toString() + \" \" + f.toString(), { attributes: p, body: c } } const L = /\\sid=\"(\\S+)\"/g, A = \"IconifyId\" + Date.now().toString(16) + (16777216 * Math.random() | 0).toString(16); let F = 0; function P(t, e = A) { const n = []; let o; for (; o = L.exec(t);)n.push(o[1]); if (!n.length) return t; const r = \"suffix\" + (16777216 * Math.random() | Date.now()).toString(16); return n.forEach((n => { const o = \"function\" == typeof e ? e(n) : e + (F++).toString(), i = n.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"); t = t.replace(new RegExp('([#;\"])(' + i + ')([\")]|\\\\.[a-z])', \"g\"), \"$1\" + o + r + \"$3\"); })), t = t.replace(new RegExp(r, \"g\"), \"\") } const N = { local: true, session: true }, z = { local: new Set, session: new Set }; let _ = false; const D = \"iconify2\", R = \"iconify\", $ = R + \"-count\", q = R + \"-version\", H = 36e5, U = 168; function V(t, e) { try { return t.getItem(e) } catch (t) { } } function Q(t, e, n) { try { return t.setItem(e, n), !0 } catch (t) { } } function G(t, e) { try { t.removeItem(e); } catch (t) { } } function J(t, e) { return Q(t, $, e.toString()) } function B(t) { return parseInt(V(t, $)) || 0 } let K = \"undefined\" == typeof window ? {} : window; function W(t) { const e = t + \"Storage\"; try { if (K && K[e] && \"number\" == typeof K[e].length) return K[e] } catch (t) { } N[t] = false; } function X(t, e) { const n = W(t); if (!n) return; const o = V(n, q); if (o !== D) { if (o) { const t = B(n); for (let e = 0; e < t; e++)G(n, R + e.toString()); } return Q(n, q, D), void J(n, 0) } const r = Math.floor(Date.now() / H) - U, i = t => { const o = R + t.toString(), i = V(n, o); if (\"string\" == typeof i) { try { const n = JSON.parse(i); if (\"object\" == typeof n && \"number\" == typeof n.cached && n.cached > r && \"string\" == typeof n.provider && \"object\" == typeof n.data && \"string\" == typeof n.data.prefix && e(n, t)) return !0 } catch (t) { } G(n, o); } }; let c = B(n); for (let e = c - 1; e >= 0; e--)i(e) || (e === c - 1 ? (c--, J(n, c)) : z[t].add(e)); } function Y() { if (!_) { _ = true; for (const t in N) X(t, (t => { const e = t.data, n = g(t.provider, e.prefix); if (!m(n, e).length) return !1; const o = e.lastModified || -1; return n.lastModifiedCached = n.lastModifiedCached ? Math.min(n.lastModifiedCached, o) : o, !0 })); } } function Z(t, e) { switch (t) { case \"local\": case \"session\": N[t] = e; break; case \"all\": for (const t in N) N[t] = e; } } const tt = Object.create(null); function et(t, e) { tt[t] = e; } function nt(t) { return tt[t] || tt[\"\"] } function ot(t) { let e; if (\"string\" == typeof t.resources) e = [t.resources]; else if (e = t.resources, !(e instanceof Array && e.length)) return null; return { resources: e, path: t.path || \"/\", maxURL: t.maxURL || 500, rotate: t.rotate || 750, timeout: t.timeout || 5e3, random: true === t.random, index: t.index || 0, dataAfterTimeout: false !== t.dataAfterTimeout } } const rt = Object.create(null), it = [\"https://api.simplesvg.com\", \"https://api.unisvg.com\"], ct = []; for (; it.length > 0;)1 === it.length || Math.random() > .5 ? ct.push(it.shift()) : ct.push(it.pop()); function st(t, e) { const n = ot(e); return null !== n && (rt[t] = n, true) } function at(t) { return rt[t] } rt[\"\"] = ot({ resources: [\"https://api.iconify.design\"].concat(ct) }); let ut = (() => { let t; try { if (t = fetch, \"function\" == typeof t) return t } catch (t) { } })(); const ft = { prepare: (t, e, n) => { const o = [], r = function (t, e) { const n = at(t); if (!n) return 0; let o; if (n.maxURL) { let t = 0; n.resources.forEach((e => { const n = e; t = Math.max(t, n.length); })); const r = e + \".json?icons=\"; o = n.maxURL - t - n.path.length - r.length; } else o = 0; return o }(t, e), i = \"icons\"; let c = { type: i, provider: t, prefix: e, icons: [] }, s = 0; return n.forEach(((n, a) => { s += n.length + 1, s >= r && a > 0 && (o.push(c), c = { type: i, provider: t, prefix: e, icons: [] }, s = n.length), c.icons.push(n); })), o.push(c), o }, send: (t, e, n) => { if (!ut) return void n(\"abort\", 424); let o = function (t) { if (\"string\" == typeof t) { const e = at(t); if (e) return e.path } return \"/\" }(e.provider); switch (e.type) { case \"icons\": { const t = e.prefix, n = e.icons.join(\",\"); o += t + \".json?\" + new URLSearchParams({ icons: n }).toString(); break } case \"custom\": { const t = e.uri; o += \"/\" === t.slice(0, 1) ? t.slice(1) : t; break } default: return void n(\"abort\", 400) }let r = 503; ut(t + o).then((t => { const e = t.status; if (200 === e) return r = 501, t.json(); setTimeout((() => { n(function (t) { return 404 === t }(e) ? \"abort\" : \"next\", e); })); })).then((t => { \"object\" == typeof t && null !== t ? setTimeout((() => { n(\"success\", t); })) : setTimeout((() => { 404 === t ? n(\"abort\", t) : n(\"next\", r); })); })).catch((() => { n(\"next\", r); })); } }; function lt(t, e) { t.forEach((t => { const n = t.loaderCallbacks; n && (t.loaderCallbacks = n.filter((t => t.id !== e))); })); } let dt = 0; var pt = { resources: [], index: 0, timeout: 2e3, rotate: 750, random: false, dataAfterTimeout: false }; function ht(t, e, n, o) { const r = t.resources.length, i = t.random ? Math.floor(Math.random() * r) : t.index; let c; if (t.random) { let e = t.resources.slice(0); for (c = []; e.length > 1;) { const t = Math.floor(Math.random() * e.length); c.push(e[t]), e = e.slice(0, t).concat(e.slice(t + 1)); } c = c.concat(e); } else c = t.resources.slice(i).concat(t.resources.slice(0, i)); const s = Date.now(); let a, u = \"pending\", f = 0, l = null, d = [], p = []; function h() { l && (clearTimeout(l), l = null); } function g() { \"pending\" === u && (u = \"aborted\"), h(), d.forEach((t => { \"pending\" === t.status && (t.status = \"aborted\"); })), d = []; } function m(t, e) { e && (p = []), \"function\" == typeof t && p.push(t); } function y() { u = \"failed\", p.forEach((t => { t(void 0, a); })); } function b() { d.forEach((t => { \"pending\" === t.status && (t.status = \"aborted\"); })), d = []; } function v() { if (\"pending\" !== u) return; h(); const o = c.shift(); if (void 0 === o) return d.length ? void (l = setTimeout((() => { h(), \"pending\" === u && (b(), y()); }), t.timeout)) : void y(); const r = { status: \"pending\", resource: o, callback: (e, n) => { !function (e, n, o) { const r = \"success\" !== n; switch (d = d.filter((t => t !== e)), u) { case \"pending\": break; case \"failed\": if (r || !t.dataAfterTimeout) return; break; default: return }if (\"abort\" === n) return a = o, void y(); if (r) return a = o, void (d.length || (c.length ? v() : y())); if (h(), b(), !t.random) { const n = t.resources.indexOf(e.resource); -1 !== n && n !== t.index && (t.index = n); } u = \"completed\", p.forEach((t => { t(o); })); }(r, e, n); } }; d.push(r), f++, l = setTimeout(v, t.rotate), n(o, e, r.callback); } return \"function\" == typeof o && p.push(o), setTimeout(v), function () { return { startTime: s, payload: e, status: u, queriesSent: f, queriesPending: d.length, subscribe: m, abort: g } } } function gt(t) { const e = { ...pt, ...t }; let n = []; function o() { n = n.filter((t => \"pending\" === t().status)); } const r = { query: function (t, r, i) { const c = ht(e, t, r, ((t, e) => { o(), i && i(t, e); })); return n.push(c), c }, find: function (t) { return n.find((e => t(e))) || null }, setIndex: t => { e.index = t; }, getIndex: () => e.index, cleanup: o }; return r } function mt() { } const yt = Object.create(null); function bt(t, e, n) { let o, r; if (\"string\" == typeof t) { const e = nt(t); if (!e) return n(void 0, 424), mt; r = e.send; const i = function (t) { if (!yt[t]) { const e = at(t); if (!e) return; const n = { config: e, redundancy: gt(e) }; yt[t] = n; } return yt[t] }(t); i && (o = i.redundancy); } else { const e = ot(t); if (e) { o = gt(e); const n = nt(t.resources ? t.resources[0] : \"\"); n && (r = n.send); } } return o && r ? o.query(e, r, n)().abort : (n(void 0, 424), mt) } function vt(t, e) { function n(n) { let o; if (!N[n] || !(o = W(n))) return; const r = z[n]; let i; if (r.size) r.delete(i = Array.from(r).shift()); else if (i = B(o), !J(o, i + 1)) return; const c = { cached: Math.floor(Date.now() / H), provider: t.provider, data: e }; return Q(o, R + i.toString(), JSON.stringify(c)) } _ || Y(), e.lastModified && !function (t, e) { const n = t.lastModifiedCached; if (n && n >= e) return n === e; if (t.lastModifiedCached = e, n) for (const n in N) X(n, (n => { const o = n.data; return n.provider !== t.provider || o.prefix !== t.prefix || o.lastModified === e })); return true }(t, e.lastModified) || Object.keys(e.icons).length && (e.not_found && delete (e = Object.assign({}, e)).not_found, n(\"local\") || n(\"session\")); } function xt() { } function wt(t) { t.iconsLoaderFlag || (t.iconsLoaderFlag = true, setTimeout((() => { t.iconsLoaderFlag = false, function (t) { t.pendingCallbacksFlag || (t.pendingCallbacksFlag = true, setTimeout((() => { t.pendingCallbacksFlag = false; const e = t.loaderCallbacks ? t.loaderCallbacks.slice(0) : []; if (!e.length) return; let n = false; const o = t.provider, r = t.prefix; e.forEach((e => { const i = e.icons, c = i.pending.length; i.pending = i.pending.filter((e => { if (e.prefix !== r) return true; const c = e.name; if (t.icons[c]) i.loaded.push({ provider: o, prefix: r, name: c }); else { if (!t.missing.has(c)) return n = true, true; i.missing.push({ provider: o, prefix: r, name: c }); } return false })), i.pending.length !== c && (n || lt([t], e.id), e.callback(i.loaded.slice(0), i.missing.slice(0), i.pending.slice(0), e.abort)); })); }))); }(t); }))); } const St = t => { const e = g(t.provider, t.prefix).pendingIcons; return !(!e || !e.has(t.name)) }, jt = (t, e) => { const o = function (t) { const e = { loaded: [], missing: [], pending: [] }, n = Object.create(null); t.sort(((t, e) => t.provider !== e.provider ? t.provider.localeCompare(e.provider) : t.prefix !== e.prefix ? t.prefix.localeCompare(e.prefix) : t.name.localeCompare(e.name))); let o = { provider: \"\", prefix: \"\", name: \"\" }; return t.forEach((t => { if (o.name === t.name && o.prefix === t.prefix && o.provider === t.provider) return; o = t; const r = t.provider, i = t.prefix, c = t.name, s = n[r] || (n[r] = Object.create(null)), a = s[i] || (s[i] = g(r, i)); let u; u = c in a.icons ? e.loaded : \"\" === i || a.missing.has(c) ? e.missing : e.pending; const f = { provider: r, prefix: i, name: c }; u.push(f); })), e }(function (t, e = true, n = false) { const o = []; return t.forEach((t => { const r = \"string\" == typeof t ? u(t, e, n) : t; r && o.push(r); })), o }(t, true, (b))); if (!o.pending.length) { let t = true; return e && setTimeout((() => { t && e(o.loaded, o.missing, o.pending, xt); })), () => { t = false; } } const r = Object.create(null), i = []; let c, s; return o.pending.forEach((t => { const { provider: e, prefix: n } = t; if (n === s && e === c) return; c = e, s = n, i.push(g(e, n)); const o = r[e] || (r[e] = Object.create(null)); o[n] || (o[n] = []); })), o.pending.forEach((t => { const { provider: e, prefix: n, name: o } = t, i = g(e, n), c = i.pendingIcons || (i.pendingIcons = new Set); c.has(o) || (c.add(o), r[e][n].push(o)); })), i.forEach((t => { const { provider: e, prefix: n } = t; r[e][n].length && function (t, e) { t.iconsToLoad ? t.iconsToLoad = t.iconsToLoad.concat(e).sort() : t.iconsToLoad = e, t.iconsQueueFlag || (t.iconsQueueFlag = true, setTimeout((() => { t.iconsQueueFlag = false; const { provider: e, prefix: n } = t, o = t.iconsToLoad; let r; delete t.iconsToLoad, o && (r = nt(e)) && r.prepare(e, n, o).forEach((n => { bt(e, n, (e => { if (\"object\" != typeof e) n.icons.forEach((e => { t.missing.add(e); })); else try { const n = m(t, e); if (!n.length) return; const o = t.pendingIcons; o && n.forEach((t => { o.delete(t); })), vt(t, e); } catch (t) { console.error(t); } wt(t); })); })); }))); }(t, r[e][n]); })), e ? function (t, e, n) { const o = dt++, r = lt.bind(null, n, o); if (!e.pending.length) return r; const i = { id: o, icons: e, callback: t, abort: r }; return n.forEach((t => { (t.loaderCallbacks || (t.loaderCallbacks = [])).push(i); })), r }(e, o, i) : xt }, Et = t => new Promise(((e, n) => { const r = \"string\" == typeof t ? u(t, true) : t; r ? jt([r || t], (i => { if (i.length && r) { const t = v(r); if (t) return void e({ ...o, ...t }) } n(t); })) : n(t); })); function It(t, e) { const n = { ...t }; for (const t in e) { const o = e[t], r = typeof o; t in E ? (null === o || o && (\"string\" === r || \"number\" === r)) && (n[t] = o) : r === typeof n[t] && (n[t] = \"rotate\" === t ? o % 4 : o); } return n } const Ot = { ...I, inline: false }, kt = \"iconify\", Ct = \"iconify-inline\", Mt = \"iconifyData\" + Date.now(); let Tt = []; function Lt(t) { for (let e = 0; e < Tt.length; e++) { const n = Tt[e]; if ((\"function\" == typeof n.node ? n.node() : n.node) === t) return n } } function At(t, e = false) { let n = Lt(t); return n ? (n.temporary && (n.temporary = e), n) : (n = { node: t, temporary: e }, Tt.push(n), n) } function Ft() { return Tt } let Pt = null; const Nt = { childList: true, subtree: true, attributes: true }; function zt(t) { if (!t.observer) return; const e = t.observer; e.pendingScan || (e.pendingScan = setTimeout((() => { delete e.pendingScan, Pt && Pt(t); }))); } function _t(t, e) { if (!t.observer) return; const n = t.observer; if (!n.pendingScan) for (let o = 0; o < e.length; o++) { const r = e[o]; if (r.addedNodes && r.addedNodes.length > 0 || \"attributes\" === r.type && void 0 !== r.target[Mt]) return void (n.paused || zt(t)) } } function Dt(t, e) { t.observer.instance.observe(e, Nt); } function Rt(t) { let e = t.observer; if (e && e.instance) return; const n = \"function\" == typeof t.node ? t.node() : t.node; n && window && (e || (e = { paused: 0 }, t.observer = e), e.instance = new window.MutationObserver(_t.bind(null, t)), Dt(t, n), e.paused || zt(t)); } function $t() { Ft().forEach(Rt); } function qt(t) { if (!t.observer) return; const e = t.observer; e.pendingScan && (clearTimeout(e.pendingScan), delete e.pendingScan), e.instance && (e.instance.disconnect(), delete e.instance); } function Ht(t) { const e = null !== Pt; Pt !== t && (Pt = t, e && Ft().forEach(qt)), e ? $t() : function (t) { const e = document; e.readyState && \"loading\" !== e.readyState ? t() : e.addEventListener(\"DOMContentLoaded\", t); }($t); } function Ut(t) { (t ? [t] : Ft()).forEach((t => { if (!t.observer) return void (t.observer = { paused: 1 }); const e = t.observer; if (e.paused++, e.paused > 1 || !e.instance) return; e.instance.disconnect(); })); } function Vt(t) { if (t) { const e = Lt(t); e && Ut(e); } else Ut(); } function Qt(t) { (t ? [t] : Ft()).forEach((t => { if (!t.observer) return void Rt(t); const e = t.observer; if (e.paused && (e.paused--, !e.paused)) { const n = \"function\" == typeof t.node ? t.node() : t.node; if (!n) return; e.instance ? Dt(t, n) : Rt(t); } })); } function Gt(t) { if (t) { const e = Lt(t); e && Qt(e); } else Qt(); } function Jt(t, e = false) { const n = At(t, e); return Rt(n), n } function Bt(t) { const e = Lt(t); e && (qt(e), function (t) { Tt = Tt.filter((e => t !== e && t !== (\"function\" == typeof e.node ? e.node() : e.node))); }(t)); } const Kt = /[\\s,]+/; const Wt = [\"width\", \"height\"], Xt = [\"inline\", \"hFlip\", \"vFlip\"]; function Yt(t) { const e = t.getAttribute(\"data-icon\"), n = \"string\" == typeof e && u(e, true); if (!n) return null; const o = { ...Ot, inline: t.classList && t.classList.contains(Ct) }; Wt.forEach((e => { const n = t.getAttribute(\"data-\" + e); n && (o[e] = n); })); const r = t.getAttribute(\"data-rotate\"); \"string\" == typeof r && (o.rotate = function (t, e = 0) { const n = t.replace(/^-?[0-9.]*/, \"\"); function o(t) { for (; t < 0;)t += 4; return t % 4 } if (\"\" === n) { const e = parseInt(t); return isNaN(e) ? 0 : o(e) } if (n !== t) { let e = 0; switch (n) { case \"%\": e = 25; break; case \"deg\": e = 90; }if (e) { let r = parseFloat(t.slice(0, t.length - n.length)); return isNaN(r) ? 0 : (r /= e, r % 1 == 0 ? o(r) : 0) } } return e }(r)); const i = t.getAttribute(\"data-flip\"); \"string\" == typeof i && function (t, e) { e.split(Kt).forEach((e => { switch (e.trim()) { case \"horizontal\": t.hFlip = true; break; case \"vertical\": t.vFlip = true; } })); }(o, i), Xt.forEach((e => { const n = \"data-\" + e, r = function (t, e) { return t === e || \"true\" === t || \"\" !== t && \"false\" !== t && null }(t.getAttribute(n), n); \"boolean\" == typeof r && (o[e] = r); })); const c = t.getAttribute(\"data-mode\"); return { name: e, icon: n, customisations: o, mode: c } } const Zt = \"svg.\" + kt + \", i.\" + kt + \", span.\" + kt + \", i.\" + Ct + \", span.\" + Ct; function te(t, e) { let n = -1 === t.indexOf(\"xlink:\") ? \"\" : ' xmlns:xlink=\"http://www.w3.org/1999/xlink\"'; for (const t in e) n += \" \" + t + '=\"' + e[t] + '\"'; return '<svg xmlns=\"http://www.w3.org/2000/svg\"' + n + \">\" + t + \"</svg>\" } let ee; function ne(t) { return void 0 === ee && function () { try { ee = window.trustedTypes.createPolicy(\"iconify\", { createHTML: t => t }); } catch (t) { ee = null; } }(), ee ? ee.createHTML(t) : t } function oe(t) { const e = new Set([\"iconify\"]); return [\"provider\", \"prefix\"].forEach((n => { t[n] && e.add(\"iconify--\" + t[n]); })), e } function re(t, e, n, o) { const r = t.classList; if (o) { const t = o.classList; Array.from(t).forEach((t => { r.add(t); })); } const i = []; return e.forEach((t => { r.contains(t) ? n.has(t) && i.push(t) : (r.add(t), i.push(t)); })), n.forEach((t => { e.has(t) || r.remove(t); })), i } function ie(t, e, n) { const o = t.style; (n || []).forEach((t => { o.removeProperty(t); })); const r = []; for (const t in e) o.getPropertyValue(t) || (r.push(t), o.setProperty(t, e[t])); return r } function ce(t, e, n) { let o; try { o = document.createElement(\"span\"); } catch (e) { return t } const r = e.customisations, i = T(n, r), c = t[Mt], s = te(P(i.body), { \"aria-hidden\": \"true\", role: \"img\", ...i.attributes }); o.innerHTML = ne(s); const a = o.childNodes[0], u = t.attributes; for (let t = 0; t < u.length; t++) { const e = u.item(t), n = e.name; \"class\" === n || a.hasAttribute(n) || a.setAttribute(n, e.value); } const f = re(a, oe(e.icon), new Set(c && c.addedClasses), t), l = ie(a, r.inline ? { \"vertical-align\": \"-0.125em\" } : {}, c && c.addedStyles), d = { ...e, status: \"loaded\", addedClasses: f, addedStyles: l }; return a[Mt] = d, t.parentNode && t.parentNode.replaceChild(a, t), a } const se = { display: \"inline-block\" }, ae = { \"background-color\": \"currentColor\" }, ue = { \"background-color\": \"transparent\" }, fe = { image: \"var(--svg)\", repeat: \"no-repeat\", size: \"100% 100%\" }, le = { \"-webkit-mask\": ae, mask: ae, background: ue }; for (const t in le) { const e = le[t]; for (const n in fe) e[t + \"-\" + n] = fe[n]; } function de(t) { return t + (t.match(/^[-0-9.]+$/) ? \"px\" : \"\") } let pe = false; function he() { pe || (pe = true, setTimeout((() => { pe && (pe = false, ge()); }))); } function ge(t, e = false) { const n = Object.create(null); function r(t, e) { const { provider: o, prefix: r, name: i } = t, c = g(o, r), s = c.icons[i]; if (s) return { status: \"loaded\", icon: s }; if (c.missing.has(i)) return { status: \"missing\" }; if (e && !St(t)) { const t = n[o] || (n[o] = Object.create(null)); (t[r] || (t[r] = new Set)).add(i); } return { status: \"loading\" } } (t ? [t] : Ft()).forEach((t => { const n = \"function\" == typeof t.node ? t.node() : t.node; if (!n || !n.querySelectorAll) return; let i = false, c = false; function s(e, n, r) { if (c || (c = true, Ut(t)), \"SVG\" !== e.tagName.toUpperCase()) { const t = n.mode, i = \"mask\" === t || \"bg\" !== t && (\"style\" === t ? -1 !== r.body.indexOf(\"currentColor\") : null); if (\"boolean\" == typeof i) return void function (t, e, n, o) { const r = e.customisations, i = T(n, r), c = i.attributes, s = t[Mt], a = te(i.body, { ...c, width: n.width + \"\", height: n.height + \"\" }), u = re(t, oe(e.icon), new Set(s && s.addedClasses)), f = { \"--svg\": 'url(\"' + (l = a, \"data:image/svg+xml,\" + function (t) { return t.replace(/\"/g, \"'\").replace(/%/g, \"%25\").replace(/#/g, \"%23\").replace(/</g, \"%3C\").replace(/>/g, \"%3E\").replace(/\\s+/g, \" \") }(l) + '\")'), width: de(c.width), height: de(c.height), ...se, ...o ? ae : ue }; var l; r.inline && (f[\"vertical-align\"] = \"-0.125em\"); const d = ie(t, f, s && s.addedStyles), p = { ...e, status: \"loaded\", addedClasses: u, addedStyles: d }; t[Mt] = p; }(e, n, { ...o, ...r }, i) } ce(e, n, r); } ((function (t) { const e = []; return t.querySelectorAll(Zt).forEach((t => { const n = t[Mt] || \"svg\" !== t.tagName.toLowerCase() ? Yt(t) : null; n && e.push({ node: t, props: n }); })), e }))(n).forEach((({ node: t, props: e }) => { const n = t[Mt]; if (!n) { const { status: n, icon: o } = r(e.icon, true); return o ? void s(t, e, o) : (i = i || \"loading\" === n, void (t[Mt] = { ...e, status: n })) } let o; if (function (t, e) { if (t.name !== e.name || t.mode !== e.mode) return true; const n = t.customisations, o = e.customisations; for (const t in Ot) if (n[t] !== o[t]) return true; return false }(n, e)) { if (o = r(e.icon, n.name !== e.name), !o.icon) return i = i || \"loading\" === o.status, void Object.assign(n, { ...e, status: o.status }) } else { if (\"loading\" !== n.status) return; if (o = r(e.icon, false), !o.icon) return void (n.status = o.status) } s(t, e, o.icon); })), t.temporary && !i ? Bt(n) : e && i ? Jt(n, true) : c && t.observer && Qt(t); })); for (const t in n) { const e = n[t]; for (const n in e) { const o = e[n]; jt(Array.from(o).map((e => ({ provider: t, prefix: n, name: e }))), he); } } } function me(t, e, n = false) { const o = v(t); if (!o) return null; const r = u(t), i = It(Ot, e || {}), c = ce(document.createElement(\"span\"), { name: t, icon: r, customisations: i }, o); return n ? c.outerHTML : c } function ye() { return \"3.1.1\" } function be(t, e) { return me(t, e, false) } function ve(t, e) { return me(t, e, true) } function xe(t, e) { const n = v(t); if (!n) return null; return T(n, It(Ot, e || {})) } function we(t) { t ? function (t) { const e = Lt(t); e ? ge(e) : ge({ node: t, temporary: true }, true); }(t) : ge(); } if (\"undefined\" != typeof document && \"undefined\" != typeof window) { !function () { if (document.documentElement) return At(document.documentElement); Tt.push({ node: () => document.documentElement }); }(); const t = window; if (void 0 !== t.IconifyPreload) { const e = t.IconifyPreload, n = \"Invalid IconifyPreload syntax.\"; \"object\" == typeof e && null !== e && (e instanceof Array ? e : [e]).forEach((t => { try { (\"object\" != typeof t || null === t || t instanceof Array || \"object\" != typeof t.icons || \"string\" != typeof t.prefix || !w(t)) && console.error(n); } catch (t) { console.error(n); } })); } setTimeout((() => { Ht(ge), ge(); })); } function Se(t, e) { Z(t, false !== e); } function je(t) { Z(t, true); } if (et(\"\", ft), \"undefined\" != typeof document && \"undefined\" != typeof window) { Y(); const t = window; if (void 0 !== t.IconifyProviders) { const e = t.IconifyProviders; if (\"object\" == typeof e && null !== e) for (const t in e) { const n = \"IconifyProviders[\" + t + \"] is invalid.\"; try { const o = e[t]; if (\"object\" != typeof o || !o || void 0 === o.resources) continue; st(t, o) || console.error(n); } catch (t) { console.error(n); } } } } const Ee = { getAPIConfig: at, setAPIModule: et, sendAPIQuery: bt, setFetch: function (t) { ut = t; }, getFetch: function () { return ut }, listAPIProviders: function () { return Object.keys(rt) } }, Ie = { _api: Ee, addAPIProvider: st, loadIcons: jt, loadIcon: Et, iconExists: S, getIcon: j, listIcons: y, addIcon: x, addCollection: w, replaceIDs: P, calculateSize: C, buildIcon: T, getVersion: ye, renderSVG: be, renderHTML: ve, renderIcon: xe, scan: we, observe: Jt, stopObserving: Bt, pauseObserver: Vt, resumeObserver: Gt, enableCache: Se, disableCache: je }; return t._api = Ee, t.addAPIProvider = st, t.addCollection = w, t.addIcon = x, t.buildIcon = T, t.calculateSize = C, t.default = Ie, t.disableCache = je, t.enableCache = Se, t.getIcon = j, t.getVersion = ye, t.iconExists = S, t.listIcons = y, t.loadIcon = Et, t.loadIcons = jt, t.observe = Jt, t.pauseObserver = Vt, t.renderHTML = ve, t.renderIcon = xe, t.renderSVG = be, t.replaceIDs = P, t.resumeObserver = Gt, t.scan = we, t.stopObserving = Bt, Object.defineProperty(t, \"__esModule\", { value: true }), t }({}); try { for (var key in exports.__esModule = !0, exports.default = Iconify, Iconify) exports[key] = Iconify[key]; } catch (t) { } try { void 0 === self.Iconify && (self.Iconify = Iconify); } catch (t) { }\n\n  \t\t/* Indux Icons */\n\n  \t\t// Initialize plugin when either DOM is ready or Alpine is ready\n  \t\tfunction initializeIconPlugin() {\n  \t\t    // Register icon directive\n  \t\t    Alpine.directive('icon', (el, { expression }, { effect, evaluateLater }) => {\n  \t\t        const iconValue = expression;\n  \t\t        if (!iconValue) return\n\n  \t\t        // Check if it's a raw icon name (should contain a colon for icon format like 'lucide:house')\n  \t\t        const isRawIconName = iconValue.includes(':') &&\n  \t\t            !iconValue.includes(\"'\") &&\n  \t\t            !iconValue.includes('\"') &&\n  \t\t            !iconValue.includes('$') &&\n  \t\t            !iconValue.includes('?') &&\n  \t\t            !iconValue.includes('.') &&\n  \t\t            !iconValue.includes('(') &&\n  \t\t            !iconValue.includes(')');\n\n  \t\t        // For raw icon names, wrap in quotes\n  \t\t        const safeExpression = isRawIconName ? `'${iconValue}'` : iconValue;\n  \t\t        const evaluate = evaluateLater(safeExpression);\n\n  \t\t        effect(() => {\n  \t\t            evaluate(value => {\n  \t\t                if (!value) return\n\n  \t\t                // Special handling for <li> elements\n  \t\t                if (el.tagName.toLowerCase() === 'li') {\n  \t\t                    // Check if this is the first time processing this li\n  \t\t                    if (!el.hasAttribute('data-icon-processed')) {\n  \t\t                        // Store original text content\n  \t\t                        const originalText = el.textContent.trim();\n\n  \t\t                        // Clear the element\n  \t\t                        el.innerHTML = '';\n\n  \t\t                        // Create a temporary element for Iconify to process\n  \t\t                        const tempEl = document.createElement('span');\n  \t\t                        tempEl.className = 'iconify';\n  \t\t                        tempEl.setAttribute('data-icon', value);\n\n  \t\t                        // Add temporary element first\n  \t\t                        el.appendChild(tempEl);\n\n  \t\t                        // Add text content back\n  \t\t                        if (originalText) {\n  \t\t                            const textNode = document.createTextNode(originalText);\n  \t\t                            el.appendChild(textNode);\n  \t\t                        }\n\n  \t\t                        // Mark as processed to prevent re-processing\n  \t\t                        el.setAttribute('data-icon-processed', 'true');\n\n  \t\t                        // Use Iconify to process the temporary element\n  \t\t                        window.Iconify.scan(tempEl);\n\n  \t\t                        // After a short delay, check if Iconify replaced our element\n  \t\t                        setTimeout(() => {\n  \t\t                            // Check if the temp element was replaced by an SVG\n  \t\t                            const svg = el.querySelector('svg');\n  \t\t                            if (svg && svg.parentNode === el) {\n  \t\t                                // Iconify replaced our span with SVG, wrap it in a new span\n  \t\t                                const newSpan = document.createElement('span');\n  \t\t                                newSpan.setAttribute('x-icon', value);\n  \t\t                                el.insertBefore(newSpan, svg);\n  \t\t                                newSpan.appendChild(svg);\n  \t\t                            }\n  \t\t                        }, 50);\n  \t\t                        return\n  \t\t                    } else {\n  \t\t                        // Update existing icon\n  \t\t                        const iconSpan = el.querySelector('.iconify');\n  \t\t                        if (iconSpan) {\n  \t\t                            iconSpan.setAttribute('data-icon', value);\n  \t\t                            if (window.Iconify) {\n  \t\t                                window.Iconify.scan(iconSpan);\n  \t\t                            }\n  \t\t                        }\n  \t\t                        return\n  \t\t                    }\n  \t\t                }\n\n  \t\t                // Standard handling for non-li elements\n  \t\t                let iconEl = el.querySelector('.iconify');\n  \t\t                if (!iconEl) {\n  \t\t                    iconEl = document.createElement('span');\n  \t\t                    iconEl.className = 'iconify';\n  \t\t                    el.innerHTML = '';\n  \t\t                    el.appendChild(iconEl);\n  \t\t                }\n\n  \t\t                // Set icon data\n  \t\t                iconEl.setAttribute('data-icon', value);\n\n  \t\t                // Use Iconify (already embedded in script)\n  \t\t                window.Iconify.scan(iconEl);\n  \t\t            });\n  \t\t        });\n  \t\t    });\n  \t\t}\n\n  \t\t// Handle both DOMContentLoaded and alpine:init\n  \t\tif (document.readyState === 'loading') {\n  \t\t    document.addEventListener('DOMContentLoaded', () => {\n  \t\t        if (window.Alpine) initializeIconPlugin();\n  \t\t    });\n  \t\t}\n\n  \t\tdocument.addEventListener('alpine:init', initializeIconPlugin); \n  \t} (indux_icons));\n  \treturn indux_icons;\n  }\n\n  requireIndux_icons();\n\n  /* Indux Localization */\n\n  function initializeLocalizationPlugin() {\n      // Environment detection for debug logging\n      window.location.hostname === 'localhost' || \n                           window.location.hostname === '127.0.0.1' || \n                           window.location.hostname.includes('dev') ||\n                           window.location.search.includes('debug=true');\n      \n      // RTL language codes - using Set for O(1) lookups\n      const rtlLanguages = new Set([\n          // Arabic script\n          'ar',     // Arabic\n          'az-Arab',// Azerbaijani (Arabic script)\n          'bal',    // Balochi\n          'ckb',    // Central Kurdish (Sorani)\n          'fa',     // Persian (Farsi)\n          'glk',    // Gilaki\n          'ks',     // Kashmiri\n          'ku-Arab',// Kurdish (Arabic script)\n          'lrc',    // Northern Luri\n          'mzn',    // Mazanderani\n          'pnb',    // Western Punjabi (Shahmukhi)\n          'ps',     // Pashto\n          'sd',     // Sindhi\n          'ur',     // Urdu\n        \n          // Hebrew script\n          'he',     // Hebrew\n          'yi',     // Yiddish\n          'jrb',    // Judeo-Arabic\n          'jpr',    // Judeo-Persian\n          'lad-Hebr',// Ladino (Hebrew script)\n        \n          // Thaana script\n          'dv',     // Dhivehi (Maldivian)\n        \n          // N’Ko script\n          'nqo',    // N’Ko (West Africa)\n        \n          // Syriac script\n          'syr',    // Syriac\n          'aii',    // Assyrian Neo-Aramaic\n          'arc',    // Aramaic\n          'sam',    // Samaritan Aramaic\n        \n          // Mandaic script\n          'mid',    // Mandaic\n        \n          // Other RTL minority/obscure scripts\n          'uga',    // Ugaritic\n          'phn',    // Phoenician\n          'xpr',    // Parthian (ancient)\n          'peo',    // Old Persian (cuneiform, but RTL)\n          'pal',    // Middle Persian (Pahlavi)\n          'avst',   // Avestan\n          'man',    // Manding (N'Ko variants)\n      ]);\n      \n      // Detect if a language is RTL\n      function isRTL(lang) {\n          return rtlLanguages.has(lang);\n      }\n      \n      // Input validation for language codes\n      function isValidLanguageCode(lang) {\n          if (typeof lang !== 'string' || lang.length === 0) return false;\n          // Allow alphanumeric, hyphens, and underscores\n          return /^[a-zA-Z0-9_-]+$/.test(lang);\n      }\n      \n      // Safe localStorage operations with error handling\n      const safeStorage = {\n          get: (key) => {\n              try {\n                  return localStorage.getItem(key);\n              } catch (error) {\n                  return null;\n              }\n          },\n          set: (key, value) => {\n              try {\n                  localStorage.setItem(key, value);\n                  return true;\n              } catch (error) {\n                  return false;\n              }\n          }\n      };\n      \n      // Initialize empty localization store\n      Alpine.store('locale', {\n          current: 'en',\n          available: [],\n          direction: 'ltr',\n          _initialized: false\n      });\n\n      // Cache for manifest data\n      let manifestCache = null;\n      \n      // Get available locales from manifest with caching\n      async function getAvailableLocales() {\n          // Return cached data if available\n          if (manifestCache) {\n              return manifestCache;\n          }\n          \n          try {\n              const response = await fetch('/manifest.json');\n              if (!response.ok) {\n                  throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n              }\n              const manifest = await response.json();\n\n              // Validate manifest structure\n              if (!manifest || typeof manifest !== 'object') {\n                  throw new Error('Invalid manifest structure');\n              }\n\n              // Get unique locales from data sources\n              const locales = new Set();\n              if (manifest.data && typeof manifest.data === 'object') {\n                  Object.values(manifest.data).forEach(collection => {\n                      if (collection && typeof collection === 'object') {\n                          Object.keys(collection).forEach(key => {\n                              // Validate and accept language codes\n                              if (isValidLanguageCode(key) && \n                                  key !== 'url' && \n                                  key !== 'headers' && \n                                  key !== 'params' && \n                                  key !== 'transform' && \n                                  key !== 'defaultValue') {\n                                  locales.add(key);\n                              }\n                          });\n                      }\n                  });\n              }\n\n              // If no locales found, fallback to HTML lang or 'en'\n              if (locales.size === 0) {\n                  const htmlLang = document.documentElement.lang;\n                  const fallbackLang = htmlLang && isValidLanguageCode(htmlLang) ? htmlLang : 'en';\n                  locales.add(fallbackLang);\n              }\n\n              const availableLocales = Array.from(locales);\n              \n              // Cache the result\n              manifestCache = availableLocales;\n              return availableLocales;\n          } catch (error) {\n              console.error('[Indux Localization] Error loading manifest:', error);\n              // Fallback to HTML lang or 'en'\n              const htmlLang = document.documentElement.lang;\n              const fallbackLang = htmlLang && isValidLanguageCode(htmlLang) ? htmlLang : 'en';\n              return [fallbackLang];\n          }\n      }\n\n      // Detect initial locale\n      function detectInitialLocale(availableLocales) {\n          \n          // 1. Check URL path first (highest priority for direct links)\n          const pathParts = window.location.pathname.split('/').filter(Boolean);\n          if (pathParts[0] && isValidLanguageCode(pathParts[0]) && availableLocales.includes(pathParts[0])) {\n              return pathParts[0];\n          }\n\n          // 2. Check localStorage (user preference from UI toggles)\n          const storedLang = safeStorage.get('lang');\n          if (storedLang && isValidLanguageCode(storedLang) && availableLocales.includes(storedLang)) {\n              return storedLang;\n          }\n\n          // 3. Check HTML lang attribute\n          const htmlLang = document.documentElement.lang;\n          if (htmlLang && isValidLanguageCode(htmlLang) && availableLocales.includes(htmlLang)) {\n              return htmlLang;\n          }\n\n          // 4. Check browser language\n          if (navigator.language) {\n              const browserLang = navigator.language.split('-')[0];\n              if (isValidLanguageCode(browserLang) && availableLocales.includes(browserLang)) {\n                  return browserLang;\n              }\n          }\n\n          // Default to first available locale\n          const defaultLang = availableLocales[0] || 'en';\n          return defaultLang;\n      }\n\n      // Update locale\n      async function setLocale(newLang, updateUrl = false) {\n          // Validate input\n          if (!isValidLanguageCode(newLang)) {\n              console.error('[Indux Localization] Invalid language code:', newLang);\n              return false;\n          }\n          \n          const store = Alpine.store('locale');\n          \n          // If available locales aren't loaded yet, load them first\n          if (!store.available || store.available.length === 0) {\n              const availableLocales = await getAvailableLocales();\n              if (!availableLocales.includes(newLang)) {\n                  return false;\n              }\n          } else if (!store.available.includes(newLang)) {\n              return false;\n          }\n          \n          if (newLang === store.current) {\n              return false;\n          }\n\n          try {\n              // Update store\n              store.current = newLang;\n              store.direction = isRTL(newLang) ? 'rtl' : 'ltr';\n              store._initialized = true;\n\n              // Update HTML safely\n              try {\n                  document.documentElement.lang = newLang;\n                  document.documentElement.dir = store.direction;\n              } catch (domError) {\n                  console.error('[Indux Localization] DOM update error:', domError);\n              }\n\n              // Update localStorage safely\n              safeStorage.set('lang', newLang);\n\n              // Update URL based on current URL state and updateUrl parameter\n              try {\n                  const currentUrl = new URL(window.location.href);\n                  const pathParts = currentUrl.pathname.split('/').filter(Boolean);\n                  const hasLanguageInUrl = pathParts[0] && store.available.includes(pathParts[0]);\n\n                  if (updateUrl || hasLanguageInUrl) {\n                      // Update URL if:\n                      // 1. updateUrl is explicitly true (router navigation, initialization)\n                      // 2. OR there's already a language code in the URL (user expects URL to update)\n                      \n                      if (hasLanguageInUrl) {\n                          // Replace existing language code\n                          if (pathParts[0] !== newLang) {\n                              pathParts[0] = newLang;\n                              currentUrl.pathname = '/' + pathParts.join('/');\n                              window.history.replaceState({}, '', currentUrl);\n                          }\n                      } else if (updateUrl && pathParts.length > 0) {\n                          // Add language code only if explicitly requested (router/init)\n                          pathParts.unshift(newLang);\n                          currentUrl.pathname = '/' + pathParts.join('/');\n                          window.history.replaceState({}, '', currentUrl);\n                      }\n                  }\n              } catch (urlError) {\n                  console.error('[Indux Localization] URL update error:', urlError);\n              }\n\n              // Trigger locale change event\n              try {\n                  window.dispatchEvent(new CustomEvent('localechange', {\n                      detail: { locale: newLang }\n                  }));\n              } catch (eventError) {\n                  console.error('[Indux Localization] Event dispatch error:', eventError);\n              }\n\n              return true;\n\n          } catch (error) {\n              console.error('[Indux Localization] Error setting locale:', error);\n              // Restore previous state safely\n              const fallbackLang = safeStorage.get('lang') || store.available[0] || 'en';\n              store.current = fallbackLang;\n              store.direction = isRTL(fallbackLang) ? 'rtl' : 'ltr';\n              try {\n                  document.documentElement.lang = store.current;\n                  document.documentElement.dir = store.direction;\n              } catch (domError) {\n                  console.error('[Indux Localization] DOM restore error:', domError);\n              }\n              return false;\n          }\n      }\n\n      // Add $locale magic method\n      Alpine.magic('locale', () => {\n          const store = Alpine.store('locale');\n\n          return new Proxy({}, {\n              get(target, prop) {\n                  if (prop === 'current') return store.current;\n                  if (prop === 'available') return store.available;\n                  if (prop === 'direction') return store.direction;\n                  if (prop === 'set') return setLocale;\n                  if (prop === 'toggle') {\n                      return () => {\n                          const currentIndex = store.available.indexOf(store.current);\n                          const nextIndex = (currentIndex + 1) % store.available.length;\n                          setLocale(store.available[nextIndex], false);\n                      };\n                  }\n                  return undefined;\n              }\n          });\n      });\n\n      // Event listener cleanup tracking\n      let routeChangeListener = null;\n      \n      // Initialize with manifest data\n      (async () => {\n          try {\n              const availableLocales = await getAvailableLocales();\n              const store = Alpine.store('locale');\n              store.available = availableLocales;\n\n              const initialLocale = detectInitialLocale(availableLocales);\n              \n              const success = await setLocale(initialLocale, true);\n              // Locale initialization complete\n          } catch (error) {\n              console.error('[Indux Localization] Initialization error:', error);\n          }\n      })();\n\n      // Listen for router navigation to detect locale changes\n      routeChangeListener = async (event) => {\n          try {\n              const newPath = event.detail.to;\n              \n              // Extract locale from new path\n              const pathParts = newPath.split('/').filter(Boolean);\n              const store = Alpine.store('locale');\n              \n              if (pathParts[0] && isValidLanguageCode(pathParts[0]) && store.available.includes(pathParts[0])) {\n                  const newLocale = pathParts[0];\n                  \n                  // Only change if it's different from current locale\n                  if (newLocale !== store.current) {\n                      await setLocale(newLocale, true);\n                  }\n              }\n          } catch (error) {\n              console.error('[Indux Localization] Router navigation error:', error);\n          }\n      };\n      \n      window.addEventListener('indux:route-change', routeChangeListener);\n      \n      // Cleanup function for memory management\n      const cleanup = () => {\n          if (routeChangeListener) {\n              window.removeEventListener('indux:route-change', routeChangeListener);\n              routeChangeListener = null;\n          }\n          manifestCache = null;\n      };\n      \n      // Expose cleanup for external use\n      window.__induxLocalizationCleanup = cleanup;\n  }\n\n  // Handle both DOMContentLoaded and alpine:init\n  if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', () => {\n          if (window.Alpine) initializeLocalizationPlugin();\n      });\n  }\n\n  document.addEventListener('alpine:init', initializeLocalizationPlugin);\n\n  var indux_markdown = {};\n\n  /* Indux Markdown */\n\n  var hasRequiredIndux_markdown;\n\n  function requireIndux_markdown () {\n  \tif (hasRequiredIndux_markdown) return indux_markdown;\n  \thasRequiredIndux_markdown = 1;\n  \t// Cache for marked.js loading\n  \tlet markedPromise = null;\n\n  \t// Load marked.js from CDN\n  \tasync function loadMarkedJS() {\n  \t    if (typeof marked !== 'undefined') {\n  \t        return marked;\n  \t    }\n  \t    \n  \t    // Return existing promise if already loading\n  \t    if (markedPromise) {\n  \t        return markedPromise;\n  \t    }\n  \t    \n  \t    markedPromise = new Promise((resolve, reject) => {\n  \t        const script = document.createElement('script');\n  \t        script.src = 'https://cdn.jsdelivr.net/npm/marked/marked.min.js';\n  \t        script.onload = () => {\n  \t            // Initialize marked.js\n  \t            if (typeof marked !== 'undefined') {\n  \t                resolve(marked);\n  \t            } else {\n  \t                console.error('[Indux Markdown] Marked.js failed to load - marked is undefined');\n  \t                markedPromise = null; // Reset so we can try again\n  \t                reject(new Error('marked.js failed to load'));\n  \t            }\n  \t        };\n  \t        script.onerror = (error) => {\n  \t            console.error('[Indux Markdown] Script failed to load:', error);\n  \t            markedPromise = null; // Reset so we can try again\n  \t            reject(error);\n  \t        };\n  \t        document.head.appendChild(script);\n  \t    });\n  \t    \n  \t    return markedPromise;\n  \t}\n\n  \t// Configure marked to preserve full language strings\n  \tasync function configureMarked(marked) {\n  \t    marked.use({\n  \t        renderer: {\n  \t            code(token) {\n  \t                const lang = token.lang || '';\n  \t                const text = token.text || '';\n  \t                token.escaped || false;\n  \t                \n  \t                // Parse the language string to extract attributes\n  \t                const attributes = parseLanguageString(lang);\n  \t                \n  \t                // Build attributes for the x-code element\n  \t                let xCodeAttributes = '';\n  \t                if (attributes.title) {\n  \t                    xCodeAttributes += ` name=\"${attributes.title}\"`;\n  \t                }\n  \t                if (attributes.language) {\n  \t                    xCodeAttributes += ` language=\"${attributes.language}\"`;\n  \t                }\n  \t                if (attributes.numbers) {\n  \t                    xCodeAttributes += ' numbers';\n  \t                }\n  \t                if (attributes.copy) {\n  \t                    xCodeAttributes += ' copy';\n  \t                }\n  \t                \n  \t                // For x-code elements, use the raw text to preserve formatting\n  \t                let code = text;\n  \t                let preserveOriginal = '';\n  \t                \n  \t                // For HTML language code blocks, preserve the original raw text to maintain indentation\n  \t                if (attributes.language === 'html' || text.includes('<!DOCTYPE') || (text.includes('<html') && text.includes('<head') && text.includes('<body'))) {\n  \t                    // Store the original content in a data attribute to preserve indentation\n  \t                    preserveOriginal = ` data-original-content=\"${text.replace(/\"/g, '&quot;')}\"`;\n  \t                }\n  \t                \n  \t                // Always create an x-code element, with or without attributes\n  \t                return `<x-code${xCodeAttributes}${preserveOriginal}>${code}</x-code>\\n`;\n  \t            }\n  \t        },\n  \t        // Configure marked to allow custom HTML tags\n  \t        breaks: true,\n  \t        gfm: true\n  \t    });\n\n  \t    // Add custom tokenizer for callout blocks\n  \t    marked.use({\n  \t        extensions: [{\n  \t            name: 'callout',\n  \t            level: 'block',\n  \t            start(src) {\n  \t                return src.match(/^:::/)?.index;\n  \t            },\n  \t            tokenizer(src) {\n  \t                // Find the opening ::: and type\n  \t                const openMatch = src.match(/^:::(.*?)(?:\\n|$)/);\n  \t                if (!openMatch) return;\n  \t                \n  \t                // Parse the opening line for classes and icon\n  \t                const openingLine = openMatch[1].trim();\n  \t                let classes = '';\n  \t                let iconValue = '';\n  \t                \n  \t                // Match icon=\"value\" pattern\n  \t                const iconMatch = openingLine.match(/icon=\"([^\"]+)\"/);\n  \t                if (iconMatch) {\n  \t                    iconValue = iconMatch[1];\n  \t                }\n  \t                \n  \t                // Get all class names (remove icon attribute first)\n  \t                classes = openingLine.replace(/\\s*icon=\"[^\"]+\"\\s*/, '').trim();\n  \t                \n  \t                const startPos = openMatch[0].length;\n  \t                \n  \t                // Find the closing ::: from the remaining content\n  \t                const remainingContent = src.slice(startPos);\n  \t                const closeMatch = remainingContent.match(/\\n:::/);\n  \t                \n  \t                if (closeMatch) {\n  \t                    const content = remainingContent.slice(0, closeMatch.index);\n  \t                    const raw = openMatch[0] + content + closeMatch[0];\n  \t                    \n  \t                    return {\n  \t                        type: 'callout',\n  \t                        raw: raw,\n  \t                        classes: classes,\n  \t                        iconValue: iconValue,\n  \t                        text: content.trim()\n  \t                    };\n  \t                }\n  \t            },\n  \t            renderer(token) {\n  \t                const classes = token.classes || '';\n  \t                const iconValue = token.iconValue || '';\n  \t                \n  \t                // For frame callouts, don't parse as markdown to avoid wrapping HTML in <p> tags\n  \t                let parsedContent;\n  \t                if (classes.includes('frame')) {\n  \t                    // Use raw content for frame callouts to preserve HTML structure\n  \t                    parsedContent = token.text;\n  \t                } else {\n  \t                    // Parse the content as markdown to support nested markdown syntax\n  \t                    parsedContent = marked.parse(token.text);\n  \t                }\n  \t                \n  \t                const iconHtml = iconValue ? `<span x-icon=\"${iconValue}\"></span>` : '';\n  \t                \n  \t                // Create a temporary div to count top-level elements\n  \t                const temp = document.createElement('div');\n  \t                temp.innerHTML = parsedContent;\n  \t                const elementCount = temp.children.length;\n  \t                \n  \t                // Only wrap in a div if:\n  \t                // 1. There are 2 or more elements AND\n  \t                // 2. There's an icon (which needs the content to be wrapped as a sibling)\n  \t                const needsWrapper = elementCount >= 2 && iconValue;\n  \t                const wrappedContent = needsWrapper ? \n  \t                    `<div>${parsedContent}</div>` : \n  \t                    parsedContent;\n  \t                \n  \t                return `<aside${classes ? ` class=\"${classes}\"` : ''}>${iconHtml}${wrappedContent}</aside>\\n`;\n  \t            }\n  \t        }]\n  \t    });\n\n  \t    // Configure marked to preserve custom HTML tags\n  \t    marked.setOptions({\n  \t        headerIds: false,\n  \t        mangle: false\n  \t    });\n  \t}\n\n  \t// Custom renderer for x-code-group to handle line breaks properly\n  \tfunction renderXCodeGroup(markdown) {\n  \t    // Find x-code-group blocks and process them specially\n  \t    const xCodeGroupRegex = /<x-code-group[^>]*>([\\s\\S]*?)<\\/x-code-group>/g;\n  \t    \n  \t    return markdown.replace(xCodeGroupRegex, (match, content) => {\n  \t        // Ensure there's a line break after the opening tag if there isn't one\n  \t        const processedContent = content.replace(/^(?!\\s*\\n)/, '\\n');\n  \t        \n  \t        return `<x-code-group>${processedContent}</x-code-group>`;\n  \t    });\n  \t}\n\n  \t// Post-process HTML to enable checkboxes by removing disabled attribute\n  \tfunction enableCheckboxes(html) {\n  \t    // Create a temporary DOM element to parse the HTML\n  \t    const temp = document.createElement('div');\n  \t    temp.innerHTML = html;\n  \t    \n  \t    // Find all checkbox inputs and remove disabled attribute\n  \t    const checkboxes = temp.querySelectorAll('input[type=\"checkbox\"]');\n  \t    checkboxes.forEach(checkbox => {\n  \t        checkbox.removeAttribute('disabled');\n  \t    });\n  \t    \n  \t    return temp.innerHTML;\n  \t}\n\n\n\n\n\n  \t// Parse language string to extract title and attributes\n  \tfunction parseLanguageString(languageString) {\n  \t    if (!languageString || languageString.trim() === '') {\n  \t        return { title: null, language: null, numbers: false, copy: false };\n  \t    }\n  \t    \n  \t    const parts = languageString.split(/\\s+/);\n  \t    \n  \t    const attributes = {\n  \t        title: null,\n  \t        language: null,\n  \t        numbers: false,\n  \t        copy: false\n  \t    };\n  \t    \n  \t    let i = 0;\n  \t    while (i < parts.length) {\n  \t        const part = parts[i];\n  \t        \n  \t        // Check for attributes\n  \t        if (part === 'numbers') {\n  \t            attributes.numbers = true;\n  \t            i++;\n  \t            continue;\n  \t        }\n  \t        \n  \t        if (part === 'copy') {\n  \t            attributes.copy = true;\n  \t            i++;\n  \t            continue;\n  \t        }\n  \t        \n  \t        // Check for quoted names (e.g., \"Example\")\n  \t        if (part.startsWith('\"') && part.endsWith('\"')) {\n  \t            // Single word quoted name\n  \t            attributes.title = part.slice(1, -1);\n  \t            i++;\n  \t            continue;\n  \t        } else if (part.startsWith('\"')) {\n  \t            // Multi-word quoted name\n  \t            let fullName = part.slice(1);\n  \t            i++;\n  \t            while (i < parts.length) {\n  \t                const nextPart = parts[i];\n  \t                if (nextPart.endsWith('\"')) {\n  \t                    fullName += ' ' + nextPart.slice(0, -1);\n  \t                    attributes.title = fullName;\n  \t                    i++;\n  \t                    break;\n  \t                } else {\n  \t                    fullName += ' ' + nextPart;\n  \t                    i++;\n  \t                }\n  \t            }\n  \t            continue;\n  \t        }\n  \t        \n  \t        // Store language identifiers (e.g., \"css\", \"javascript\", etc.)\n  \t        // Use the first language identifier found\n  \t        if (!attributes.language) {\n  \t            attributes.language = part;\n  \t        }\n  \t        i++;\n  \t    }\n  \t    \n  \t    return attributes;\n  \t}\n\n  \t// Preload marked.js as soon as script loads\n  \tloadMarkedJS().catch(() => {\n  \t    // Silently ignore errors during preload\n  \t});\n\n  \t// Initialize plugin when either DOM is ready or Alpine is ready\n  \tasync function initializeMarkdownPlugin() {\n  \t    try {\n  \t        // Load marked.js\n  \t        const marked = await loadMarkedJS();\n  \t        \n  \t        // Configure marked with all our custom settings\n  \t        await configureMarked(marked);\n  \t        \n  \t        // Configure marked to generate heading IDs\n  \t        marked.use({\n  \t            renderer: {\n  \t                heading(token) {\n  \t                    // Extract text and level from the token\n  \t                    const text = token.text || '';\n  \t                    const level = token.depth || 1;\n  \t                    const escapedText = text.toLowerCase().replace(/[^\\w]+/g, '-').replace(/^-+|-+$/g, '');\n  \t                    return `<h${level} id=\"${escapedText}\">${text}</h${level}>`;\n  \t                }\n  \t            }\n  \t        });\n  \t    \n  \t    // Check if there are any elements with x-markdown already on the page\n  \t    const existingMarkdownElements = document.querySelectorAll('[x-markdown]');\n  \t    \n  \t    // Register markdown directive\n  \t    Alpine.directive('markdown', (el, { expression, modifiers }, { effect, evaluateLater }) => {\n  \t        \n  \t        // Handle null/undefined expressions gracefully\n  \t        if (!expression) {\n  \t            return;\n  \t        }\n  \t        \n  \t        // Hide element initially to prevent flicker\n  \t        el.style.opacity = '0';\n  \t        el.style.transition = 'opacity 0.15s ease-in-out';\n  \t        \n  \t        // Store original markdown content\n  \t        let markdownSource = '';\n  \t        let isUpdating = false;\n  \t        let hasContent = false;\n\n  \t        const normalizeContent = (content) => {\n  \t            const lines = content.split('\\n');\n  \t            const commonIndent = lines\n  \t                .filter(line => line.trim())\n  \t                .reduce((min, line) => {\n  \t                    const indent = line.match(/^\\s*/)[0].length;\n  \t                    return Math.min(min, indent);\n  \t                }, Infinity);\n\n  \t            return lines\n  \t                .map(line => line.slice(commonIndent))\n  \t                .join('\\n')\n  \t                .trim();\n  \t        };\n\n  \t        const updateContent = async (element, newContent = null) => {\n  \t            if (isUpdating) return;\n  \t            isUpdating = true;\n\n  \t            try {\n  \t                // Update source if new content provided\n  \t                if (newContent !== null && newContent.trim() !== '') {\n  \t                    markdownSource = normalizeContent(newContent);\n  \t                }\n\n  \t                // Skip if no content\n  \t                if (!markdownSource || markdownSource.trim() === '') {\n  \t                    element.style.opacity = '0';\n  \t                    return;\n  \t                }\n\n  \t                // Load marked.js and parse markdown\n  \t                const marked = await loadMarkedJS();\n  \t                const processedMarkdown = renderXCodeGroup(markdownSource);\n  \t                let html = marked.parse(processedMarkdown);\n\n  \t                // Post-process HTML to enable checkboxes (remove disabled attribute)\n  \t                html = enableCheckboxes(html);\n\n  \t                // Only update if content has changed and isn't empty\n  \t                if (element.innerHTML !== html && html.trim() !== '') {\n  \t                    // Create a temporary container to hold the HTML\n  \t                    const temp = document.createElement('div');\n  \t                    temp.innerHTML = html;\n\n  \t                    // Replace the content\n  \t                    element.innerHTML = '';\n  \t                    while (temp.firstChild) {\n  \t                        element.appendChild(temp.firstChild);\n  \t                    }\n  \t                    \n  \t                    // Show element with content\n  \t                    hasContent = true;\n  \t                    element.style.opacity = '1';\n  \t                } else if (!hasContent) {\n  \t                    // Keep hidden if no valid content\n  \t                    element.style.opacity = '0';\n  \t                }\n  \t            } finally {\n  \t                isUpdating = false;\n  \t            }\n  \t        };\n\n  \t        // Handle inline markdown content (no expression or 'inline')\n  \t        if (!expression || expression === 'inline') {\n  \t            // Initial parse\n  \t            markdownSource = normalizeContent(el.textContent);\n  \t            updateContent(el);\n\n  \t            // Set up mutation observer for streaming content\n  \t            const observer = new MutationObserver((mutations) => {\n  \t                let newContent = null;\n\n  \t                for (const mutation of mutations) {\n  \t                    if (mutation.type === 'childList') {\n  \t                        const textNodes = Array.from(el.childNodes)\n  \t                            .filter(node => node.nodeType === Node.TEXT_NODE);\n  \t                        if (textNodes.length > 0) {\n  \t                            newContent = textNodes.map(node => node.textContent).join('');\n  \t                            break;\n  \t                        }\n  \t                    } else if (mutation.type === 'characterData') {\n  \t                        newContent = mutation.target.textContent;\n  \t                        break;\n  \t                    }\n  \t                }\n\n  \t                if (newContent && newContent.trim() !== '') {\n  \t                    updateContent(el, newContent);\n  \t                }\n  \t            });\n\n  \t            observer.observe(el, {\n  \t                characterData: true,\n  \t                childList: true,\n  \t                subtree: true,\n  \t                characterDataOldValue: true\n  \t            });\n\n  \t            return;\n  \t        }\n\n  \t        // Handle expressions (file paths, inline strings, content references)\n  \t        // Check if this is a simple string literal that needs to be quoted\n  \t        let processedExpression = expression;\n  \t        if (!expression.includes('+') && !expression.includes('`') && !expression.includes('${') && \n  \t            !expression.startsWith('$') && !expression.startsWith(\"'\") && !expression.startsWith('\"')) {\n  \t            // Wrap simple string literals in quotes to prevent Alpine from treating them as expressions\n  \t            processedExpression = `'${expression.replace(/'/g, \"\\\\'\")}'`;\n  \t        }\n  \t        const getMarkdownContent = evaluateLater(processedExpression);\n\n  \t        effect(() => {\n  \t            getMarkdownContent(async (pathOrContent) => {\n  \t                // Reset visibility if content is empty/undefined\n  \t                if (!pathOrContent || pathOrContent === undefined || pathOrContent === '') {\n  \t                    el.style.opacity = '0';\n  \t                    hasContent = false;\n  \t                    return;\n  \t                }\n\n  \t                if (pathOrContent === undefined) {\n  \t                    pathOrContent = expression;\n  \t                }\n\n  \t                // Check if this looks like a file path (contains .md, .markdown, or starts with /)\n  \t                const isFilePath = typeof pathOrContent === 'string' &&\n  \t                    (pathOrContent.includes('.md') ||\n  \t                        pathOrContent.includes('.markdown') ||\n  \t                        pathOrContent.startsWith('/') ||\n  \t                        pathOrContent.includes('/'));\n\n  \t                let markdownContent = pathOrContent;\n\n  \t                // If it's a file path, fetch the content\n  \t                if (isFilePath) {\n  \t                    try {\n  \t                        // Ensure the path is absolute from project root\n  \t                        let resolvedPath = pathOrContent;\n  \t                        \n  \t                        // If it's a relative path (doesn't start with /), make it absolute from root\n  \t                        if (!pathOrContent.startsWith('/')) {\n  \t                            resolvedPath = '/' + pathOrContent;\n  \t                        }\n  \t                        \n  \t                        const response = await fetch(resolvedPath);\n  \t                        if (response.ok) {\n  \t                            markdownContent = await response.text();\n  \t                        } else {\n  \t                            console.warn(`[Indux] Failed to fetch markdown file: ${resolvedPath}`);\n  \t                            markdownContent = `# Error Loading Content\\n\\nCould not load: ${resolvedPath}`;\n  \t                        }\n  \t                    } catch (error) {\n  \t                        console.error(`[Indux] Error fetching markdown file: ${pathOrContent}`, error);\n  \t                        markdownContent = `# Error Loading Content\\n\\nCould not load: ${pathOrContent}\\n\\nError: ${error.message}`;\n  \t                    }\n  \t                }\n\n  \t                // Skip empty content\n  \t                if (!markdownContent || markdownContent.trim() === '') {\n  \t                    el.style.opacity = '0';\n  \t                    hasContent = false;\n  \t                    return;\n  \t                }\n\n  \t                const marked = await loadMarkedJS();\n  \t                let html = marked.parse(markdownContent);\n  \t                \n  \t                // Post-process HTML to enable checkboxes (remove disabled attribute)\n  \t                html = enableCheckboxes(html);\n  \t                \n  \t                // Create temporary container\n  \t                const temp = document.createElement('div');\n  \t                temp.innerHTML = html;\n  \t                \n  \t                el.innerHTML = '';\n  \t                while (temp.firstChild) {\n  \t                    el.appendChild(temp.firstChild);\n  \t                }\n  \t                \n  \t                // Code highlighting is handled by indux.code.js plugin\n\n  \t                // Show content with fade-in\n  \t                hasContent = true;\n  \t                el.style.opacity = '1';\n\n  \t                // Extract headings for anchor links\n  \t                const headings = [];\n  \t                const headingElements = el.querySelectorAll('h1, h2, h3');\n  \t                headingElements.forEach(heading => {\n  \t                    headings.push({\n  \t                        id: heading.id,\n  \t                        text: heading.textContent,\n  \t                        level: parseInt(heading.tagName.charAt(1))\n  \t                    });\n  \t                });\n\n  \t                // Store headings in Alpine data if 'headings' modifier is used\n  \t                if (modifiers.includes('headings')) {\n  \t                    // Generate a unique ID for this markdown section\n  \t                    const sectionId = 'markdown-' + Math.random().toString(36).substr(2, 9);\n  \t                    el.setAttribute('data-headings-section', sectionId);\n\n  \t                    // Store headings in a global registry\n  \t                    if (!window._induxHeadings) {\n  \t                        window._induxHeadings = {};\n  \t                    }\n  \t                    window._induxHeadings[sectionId] = headings;\n  \t                }\n  \t            });\n  \t        });\n  \t    });\n  \t    \n  \t    // If there are existing elements with x-markdown, manually process them with proper Alpine context\n  \t    if (existingMarkdownElements.length > 0) {\n  \t        \n  \t        existingMarkdownElements.forEach(el => {\n  \t            const expression = el.getAttribute('x-markdown');\n  \t            \n  \t            // Create a temporary Alpine component context for this element\n  \t            const tempComponent = Alpine.$data(el) || {};\n  \t            \n  \t            // Use Alpine's evaluation system within the component context\n  \t            const updateContent = async (element, newContent = null) => {\n  \t                try {\n  \t                    if (!newContent) {\n  \t                        return;\n  \t                    }\n  \t                    \n  \t                    // Load marked.js and parse markdown\n  \t                    const marked = await loadMarkedJS();\n  \t                    const processedMarkdown = renderXCodeGroup(newContent);\n  \t                    let html = marked.parse(processedMarkdown);\n  \t                    \n  \t                    // Post-process HTML to enable checkboxes (remove disabled attribute)\n  \t                    html = html.replace(/<input type=\"checkbox\"([^>]*?)disabled([^>]*?)>/g, '<input type=\"checkbox\"$1$2>');\n  \t                    \n  \t                    // Create temporary container\n  \t                    const temp = document.createElement('div');\n  \t                    temp.innerHTML = html;\n  \t                    \n  \t                    element.innerHTML = '';\n  \t                    while (temp.firstChild) {\n  \t                        element.appendChild(temp.firstChild);\n  \t                    }\n  \t                    \n  \t                    // Re-highlight code blocks after content update\n  \t                    // Code highlighting is handled by indux.code.js plugin\n  \t                } catch (error) {\n  \t                    console.error('[Indux Markdown] Failed to process element:', error);\n  \t                }\n  \t            };\n  \t            \n  \t            // Handle simple string expressions\n  \t            if (expression.startsWith(\"'\") && expression.endsWith(\"'\")) {\n  \t                const content = expression.slice(1, -1);\n  \t                updateContent(el, content);\n  \t            } else {\n  \t                // For complex expressions, we need to force Alpine to re-process this element\n  \t                \n  \t                // Remove and re-add the attribute to force Alpine to re-process it\n  \t                const originalExpression = expression;\n  \t                el.removeAttribute('x-markdown');\n  \t                \n  \t                // Use a small delay to ensure the directive is registered\n  \t                setTimeout(() => {\n  \t                    el.setAttribute('x-markdown', originalExpression);\n  \t                }, 50);\n  \t            }\n  \t        });\n  \t    }\n  \t    \n  \t    } catch (error) {\n  \t        console.error('[Indux] Failed to initialize markdown plugin:', error);\n  \t    }\n  \t}\n\n  \t// Handle both DOMContentLoaded and alpine:init\n  \tif (document.readyState === 'loading') {\n  \t    document.addEventListener('DOMContentLoaded', () => {\n  \t        if (window.Alpine) {\n  \t            initializeMarkdownPlugin();\n  \t        }\n  \t    });\n  \t}\n\n  \tdocument.addEventListener('alpine:init', () => {\n  \t    initializeMarkdownPlugin();\n  \t});\n  \treturn indux_markdown;\n  }\n\n  requireIndux_markdown();\n\n  /* Indux Resizer */\n\n  function initializeResizablePlugin() {\n      // Cache for unit conversions to avoid repeated DOM manipulation\n      const unitCache = new Map();\n      let tempConversionEl = null;\n\n      // Helper to convert any unit to pixels (cached and optimized)\n          const convertToPixels = (value, unit) => {\n              if (unit === 'px') return value;\n\n          const cacheKey = `${value}${unit}`;\n          if (unitCache.has(cacheKey)) {\n              return unitCache.get(cacheKey);\n          }\n\n          // Use a single cached conversion element\n          if (!tempConversionEl) {\n              tempConversionEl = document.createElement('div');\n              tempConversionEl.style.cssText = 'visibility:hidden;position:absolute;top:-9999px;left:-9999px;width:0;height:0;';\n              document.body.appendChild(tempConversionEl);\n          }\n\n          tempConversionEl.style.width = `${value}${unit}`;\n          const pixels = tempConversionEl.getBoundingClientRect().width;\n          \n          unitCache.set(cacheKey, pixels);\n              return pixels;\n          };\n\n      // Helper to convert pixels back to original unit (cached)\n      const convertFromPixels = (pixels, unit, element) => {\n              if (unit === 'px') return pixels;\n\n          const cacheKey = `${pixels}${unit}${element.tagName}`;\n          if (unitCache.has(cacheKey)) {\n              return unitCache.get(cacheKey);\n          }\n\n          let result;\n              switch (unit) {\n                  case '%':\n                  result = (pixels / element.parentElement.getBoundingClientRect().width) * 100;\n                  break;\n                  case 'rem':\n                      const remSize = parseFloat(getComputedStyle(document.documentElement).fontSize);\n                  result = pixels / remSize;\n                  break;\n                  case 'em':\n                  const emSize = parseFloat(getComputedStyle(element).fontSize);\n                  result = pixels / emSize;\n                  break;\n                  default:\n                  result = pixels;\n          }\n          \n          unitCache.set(cacheKey, result);\n          return result;\n      };\n\n      Alpine.directive('resize', (el, { modifiers, expression }, { evaluate }) => {\n          // Store configuration on the element for lazy initialization\n          el._resizeConfig = {\n              expression,\n              evaluate,\n              handles: null,\n              initialized: false\n          };\n\n          // Load saved width and height immediately if specified\n          if (expression) {\n              try {\n                  const options = evaluate(expression);\n                  if (options) {\n                      if (options.saveWidth) {\n                          const savedWidth = localStorage.getItem(`resizable-${options.saveWidth}`);\n                          if (savedWidth) {\n                              // Preserve the original unit if saved\n                              const [value, unit] = savedWidth.split('|');\n                              el.style.width = `${value}${unit || 'px'}`;\n                          }\n                      }\n                      if (options.saveHeight) {\n                          const savedHeight = localStorage.getItem(`resizable-${options.saveHeight}`);\n                          if (savedHeight) {\n                              // Preserve the original unit if saved\n                              const [value, unit] = savedHeight.split('|');\n                              el.style.height = `${value}${unit || 'px'}`;\n                          }\n                      }\n                  }\n              } catch (error) {\n                  // Ignore parsing errors here, they'll be handled in initializeResizeElement\n              }\n          }\n\n          // Add hover listener to create handles on first interaction\n          el.addEventListener('mouseenter', initializeResizeElement, { once: true });\n      });\n\n      function initializeResizeElement(event) {\n          const el = event.target;\n          const config = el._resizeConfig;\n          if (config.initialized) return;\n\n          config.initialized = true;\n\n          // Helper to parse value and unit from CSS dimension\n          const parseDimension = (value) => {\n              if (typeof value === 'number') return { value, unit: 'px' };\n              const match = String(value).match(/^([\\d.]+)(.*)$/);\n              return match ? { value: parseFloat(match[1]), unit: match[2] || 'px' } : { value: 0, unit: 'px' };\n          };\n\n          // Parse options from expression or use defaults\n          let options = {};\n          if (config.expression) {\n              try {\n                  options = config.evaluate(config.expression);\n              } catch (error) {\n                  console.error('Error parsing x-resize expression:', config.expression, error);\n                  options = {};\n              }\n          }\n          const {\n              snapDistance = 0,\n              snapPoints = [],\n              snapCloseX = null,\n              snapDistanceX = null,\n              snapDistanceY = null,\n              snapPointsX = [],\n              snapPointsY = [],\n              snapCloseY = null,\n              toggle = null,\n              handles = ['top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right'],\n              saveWidth = null,\n              saveHeight = null\n          } = options;\n\n          // Store handles for cleanup\n          config.handles = [];\n\n          // Parse constraints with units\n          const constraints = {\n              closeX: snapCloseX ? parseDimension(snapCloseX) : null,\n              closeY: snapCloseY ? parseDimension(snapCloseY) : null\n          };\n\n          // Parse snap points with units\n          const parsedSnapPoints = snapPoints.map(point => parseDimension(point));\n          const parsedSnapPointsX = snapPointsX.map(point => parseDimension(point));\n          const parsedSnapPointsY = snapPointsY.map(point => parseDimension(point));\n\n          // Detect RTL context\n          const isRTL = getComputedStyle(el).direction === 'rtl';\n          \n          // Handle mapping for resize behavior\n          const handleMap = {\n              // Physical directions (fixed)\n              top: { edge: 'top', direction: 'vertical' },\n              bottom: { edge: 'bottom', direction: 'vertical' },\n              left: { edge: 'left', direction: 'horizontal' },\n              right: { edge: 'right', direction: 'horizontal' },\n              \n              // Corners\n              'top-left': { edge: 'top-left', direction: 'both', edges: ['top', 'left'] },\n              'top-right': { edge: 'top-right', direction: 'both', edges: ['top', 'right'] },\n              'bottom-left': { edge: 'bottom-left', direction: 'both', edges: ['bottom', 'left'] },\n              'bottom-right': { edge: 'bottom-right', direction: 'both', edges: ['bottom', 'right'] },\n              \n              // Logical directions (RTL-aware)\n              start: { \n                  edge: isRTL ? 'right' : 'left', \n                  direction: 'horizontal',\n                  logical: true\n              },\n              end: { \n                  edge: isRTL ? 'left' : 'right', \n                  direction: 'horizontal',\n                  logical: true\n              },\n              \n              // Logical corners\n              'top-start': { \n                  edge: isRTL ? 'top-right' : 'top-left', \n                  direction: 'both', \n                  edges: isRTL ? ['top', 'right'] : ['top', 'left'],\n                  logical: true\n              },\n              'top-end': { \n                  edge: isRTL ? 'top-left' : 'top-right', \n                  direction: 'both', \n                  edges: isRTL ? ['top', 'left'] : ['top', 'right'],\n                  logical: true\n              },\n              'bottom-start': { \n                  edge: isRTL ? 'bottom-right' : 'bottom-left', \n                  direction: 'both', \n                  edges: isRTL ? ['bottom', 'right'] : ['bottom', 'left'],\n                  logical: true\n              },\n              'bottom-end': { \n                  edge: isRTL ? 'bottom-left' : 'bottom-right', \n                  direction: 'both', \n                  edges: isRTL ? ['bottom', 'left'] : ['bottom', 'right'],\n                  logical: true\n              }\n          };\n\n          // Create handles for each specified handle\n          handles.forEach(handleName => {\n              const handleInfo = handleMap[handleName];\n              if (!handleInfo) return;\n\n              const handle = document.createElement('span');\n              handle.className = `resize-handle resize-handle-${handleName}`;\n              handle.setAttribute('data-handle', handleName);\n\n              let startX, startY, startWidth, startHeight;\n              let currentSnap = null;\n\n              // Convert constraints to pixels for calculations\n              const pixelConstraints = {\n                  closeX: constraints.closeX ? convertToPixels(constraints.closeX.value, constraints.closeX.unit) : null,\n                  closeY: constraints.closeY ? convertToPixels(constraints.closeY.value, constraints.closeY.unit) : null\n              };\n\n              // Convert snap points to pixels\n              const pixelSnapPoints = parsedSnapPoints.map(point => ({\n                  value: convertToPixels(point.value, point.unit),\n                  unit: point.unit\n              }));\n              const pixelSnapPointsX = parsedSnapPointsX.map(point => ({\n                  value: convertToPixels(point.value, point.unit),\n                  unit: point.unit\n              }));\n              const pixelSnapPointsY = parsedSnapPointsY.map(point => ({\n                  value: convertToPixels(point.value, point.unit),\n                  unit: point.unit\n              }));\n\n              const snapDistancePixels = convertToPixels(snapDistance, 'px');\n          const snapDistanceXPixels = snapDistanceX ? convertToPixels(snapDistanceX, 'px') : snapDistancePixels;\n          const snapDistanceYPixels = snapDistanceY ? convertToPixels(snapDistanceY, 'px') : snapDistancePixels;\n\n              const handleMouseDown = (e) => {\n                  e.preventDefault();\n                  e.stopPropagation();\n\n                  startX = e.clientX;\n                  startY = e.clientY;\n                  startWidth = el.getBoundingClientRect().width;\n                  startHeight = el.getBoundingClientRect().height;\n\n                  // Show overlay\n                  const overlay = document.querySelector('.resize-overlay') || createOverlay();\n                  overlay.style.display = 'block';\n                  document.body.appendChild(overlay);\n\n                  document.addEventListener('mousemove', handleMouseMove);\n                  document.addEventListener('mouseup', handleMouseUp);\n              };\n\n              const handleMouseMove = (e) => {\n                  const deltaX = e.clientX - startX;\n                  const deltaY = e.clientY - startY;\n\n                  let newWidth = startWidth;\n                  let newHeight = startHeight;\n\n                  // Calculate new dimensions based on handle type\n                  if (handleInfo.direction === 'horizontal' || handleInfo.direction === 'both') {\n                      if (handleInfo.edge === 'left' || handleInfo.edge === 'top-left' || handleInfo.edge === 'bottom-left') {\n                          newWidth = startWidth - deltaX;\n                      } else if (handleInfo.edge === 'right' || handleInfo.edge === 'top-right' || handleInfo.edge === 'bottom-right') {\n                      newWidth = startWidth + deltaX;\n                      }\n                  }\n\n                  if (handleInfo.direction === 'vertical' || handleInfo.direction === 'both') {\n                      if (handleInfo.edge === 'top' || handleInfo.edge === 'top-left' || handleInfo.edge === 'top-right') {\n                          newHeight = startHeight - deltaY;\n                      } else if (handleInfo.edge === 'bottom' || handleInfo.edge === 'bottom-left' || handleInfo.edge === 'bottom-right') {\n                          newHeight = startHeight + deltaY;\n                      }\n                  }\n\n                  // Handle snap-close behavior for width\n                  if (pixelConstraints.closeX !== null) {\n                      // Close when element becomes smaller than threshold (dragging toward inside)\n                      if (newWidth <= pixelConstraints.closeX) {\n                          el.classList.add('resizable-closing');\n                          currentSnap = 'closing';\n                          \n                          if (toggle) {\n                              config.evaluate(`${toggle} = false`);\n                          }\n                          return; // Exit early to prevent further width calculations\n                      }\n                  }\n\n                  // Handle snap-close behavior for height\n                  if (pixelConstraints.closeY !== null) {\n                      // Close when element becomes smaller than threshold (dragging toward inside)\n                      if (newHeight <= pixelConstraints.closeY) {\n                          el.classList.add('resizable-closing');\n                          currentSnap = 'closing';\n                          \n                          if (toggle) {\n                              config.evaluate(`${toggle} = false`);\n                          }\n                          return; // Exit early to prevent further height calculations\n                      }\n                  }\n\n                  // Apply constraints only if we're not closing\n                  // Note: maxWidth and maxHeight are now handled by CSS (e.g., Tailwind classes)\n\n                  // Handle normal snap points for width\n                  const widthSnapPoints = pixelSnapPointsX.length > 0 ? pixelSnapPointsX : pixelSnapPoints;\n                  const widthSnapDistance = snapDistanceXPixels;\n                  for (const point of widthSnapPoints) {\n                      const distance = Math.abs(newWidth - point.value);\n                      if (distance < widthSnapDistance) {\n                              newWidth = point.value;\n                          currentSnap = `${convertFromPixels(newWidth, point.unit, el)}${point.unit}`;\n                              break;\n                          }\n                  }\n\n                  // Handle normal snap points for height\n                  const heightSnapPoints = pixelSnapPointsY.length > 0 ? pixelSnapPointsY : pixelSnapPoints;\n                  const heightSnapDistance = snapDistanceYPixels;\n                  for (const point of heightSnapPoints) {\n                      const distance = Math.abs(newHeight - point.value);\n                      if (distance < heightSnapDistance) {\n                          newHeight = point.value;\n                          currentSnap = `${convertFromPixels(newHeight, point.unit, el)}${point.unit}`;\n                          break;\n                      }\n                  }\n\n                  // Convert back to original unit for display\n                  el.style.width = `${newWidth}px`;\n                  el.style.height = `${newHeight}px`;\n                  el.classList.remove('resizable-closing', 'resizable-closed');\n                  if (toggle) {\n                      config.evaluate(`${toggle} = true`);\n                  }\n\n                  if (currentSnap !== 'closing') {\n                      if (saveWidth) {\n                      localStorage.setItem(`resizable-${saveWidth}`,\n                              `${newWidth}|px`);\n                      }\n                      if (saveHeight) {\n                          localStorage.setItem(`resizable-${saveHeight}`,\n                              `${newHeight}|px`);\n                      }\n                  }\n\n                  // Dispatch resize event\n                  el.dispatchEvent(new CustomEvent('resize', {\n                      detail: {\n                          width: newWidth,\n                          height: newHeight,\n                          unit: 'px',\n                          snap: currentSnap,\n                          closing: currentSnap === 'closing'\n                      }\n                  }));\n              };\n\n              const handleMouseUp = () => {\n                  document.removeEventListener('mousemove', handleMouseMove);\n                  document.removeEventListener('mouseup', handleMouseUp);\n\n                  // Hide overlay\n                  const overlay = document.querySelector('.resize-overlay');\n                  if (overlay) {\n                      overlay.style.display = 'none';\n                  }\n\n                  if (currentSnap === 'closing') {\n                      el.classList.add('resizable-closed');\n                  }\n              };\n\n              handle.addEventListener('mousedown', handleMouseDown);\n              el.appendChild(handle);\n              config.handles.push(handle);\n          });\n      }\n\n      function createOverlay() {\n          const overlay = document.createElement('div');\n          overlay.className = 'resize-overlay';\n          overlay.style.display = 'none';\n          return overlay;\n      }\n  }\n\n  // Initialize the plugin\n  if (typeof Alpine !== 'undefined') {\n      initializeResizablePlugin();\n  } else {\n      document.addEventListener('alpine:init', () => {\n          initializeResizablePlugin();\n      });\n  }\n\n  /* Indux Router */\n\n  // Main routing initialization\n  function initializeRouting() {\n\n      // Mark as initialized\n      window.__induxRoutingInitialized = true;\n      window.dispatchEvent(new CustomEvent('indux:routing-ready'));\n\n  }\n\n  // Start initialization when DOM is ready\n  if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', initializeRouting);\n  } else {\n      initializeRouting();\n  }\n\n  // Export main routing interface\n  window.InduxRouting = {\n      initialize: initializeRouting,\n      // Route matching utility\n      matchesCondition: (path, condition) => {\n          // Normalize path consistently - keep '/' as '/' for home route\n          const normalizedPath = path === '/' ? '/' : path.replace(/^\\/+|\\/+$/g, '') || '/';\n\n          // Get localization codes from manifest\n          const localizationCodes = [];\n          try {\n              const manifest = window.InduxComponentsRegistry?.manifest || window.manifest;\n              if (manifest && manifest.data) {\n                  Object.values(manifest.data).forEach(dataSource => {\n                      if (typeof dataSource === 'object' && dataSource !== null) {\n                          Object.keys(dataSource).forEach(key => {\n                              if (key.match(/^[a-z]{2}(-[A-Z]{2})?$/)) {\n                                  localizationCodes.push(key);\n                              }\n                          });\n                      }\n                  });\n              }\n          } catch (e) {\n              // Ignore errors if manifest is not available\n          }\n\n          // Check if path starts with a localization code\n          let pathToCheck = normalizedPath;\n          if (localizationCodes.length > 0) {\n              const pathSegments = normalizedPath.split('/').filter(segment => segment);\n              if (pathSegments.length > 0 && localizationCodes.includes(pathSegments[0])) {\n                  // Remove the localization code and check the remaining path\n                  pathToCheck = pathSegments.slice(1).join('/') || '/';\n              }\n          }\n\n          // Handle wildcards\n          if (condition.includes('*')) {\n              if (condition === '*') return true;\n              const wildcardPattern = condition.replace('*', '');\n              const normalizedPattern = wildcardPattern.replace(/^\\/+|\\/+$/g, '');\n              return pathToCheck.startsWith(normalizedPattern + '/');\n          }\n\n          // Handle exact matches (starting with =) - after localization processing\n          if (condition.startsWith('=')) {\n              const exactPath = condition.slice(1);\n              if (exactPath === '/') {\n                  return pathToCheck === '/' || pathToCheck === '';\n              }\n              const normalizedExactPath = exactPath.replace(/^\\/+|\\/+$/g, '');\n              return pathToCheck === normalizedExactPath;\n          }\n\n          // Handle exact paths (starting with /)\n          if (condition.startsWith('/')) {\n              if (condition === '/') {\n                  return pathToCheck === '/' || pathToCheck === '';\n              }\n              const routePath = condition.replace(/^\\//, '');\n              return pathToCheck === routePath || pathToCheck.startsWith(routePath + '/');\n          }\n\n          // Handle substring matching (default behavior)\n          return pathToCheck.includes(condition);\n      }\n  };\n\n\n  // Router position\n\n  // Capture initial body order from index.html\n  function captureBodyOrder() {\n      if (window.__induxBodyOrder) return; // Already captured\n\n      try {\n          const req = new XMLHttpRequest();\n          req.open('GET', '/index.html', false);\n          req.send(null);\n          if (req.status === 200) {\n              let html = req.responseText;\n\n              // Handle self-closing tags if components plugin isn't available\n              if (!window.InduxComponents) {\n                  html = html.replace(/<x-([a-z0-9-]+)([^>]*)\\s*\\/?>/gi, (match, tag, attrs) => `<x-${tag}${attrs}></x-${tag}>`);\n              }\n\n              const parser = new DOMParser();\n              const doc = parser.parseFromString(html, 'text/html');\n              const bodyChildren = Array.from(doc.body.children);\n\n              window.__induxBodyOrder = bodyChildren.map((el, index) => ({\n                  index,\n                  tag: el.tagName.toLowerCase().trim(),\n                  isComponent: el.tagName.toLowerCase().startsWith('x-'),\n                  attrs: Array.from(el.attributes).map(attr => [attr.name, attr.value]),\n                  key: el.getAttribute('data-component-id') || (el.tagName.toLowerCase().startsWith('x-') ? el.tagName.toLowerCase().replace('x-', '').trim() : null),\n                  position: index,\n                  content: el.tagName.toLowerCase().startsWith('x-') ? null : el.innerHTML\n              }));\n          }\n      } catch (e) {\n          // Failed to load index.html for body order snapshot\n      }\n  }\n\n  // Assign data-order attributes to all top-level elements\n  function assignDataPositions() {\n      if (!document.body) return;\n\n      const bodyChildren = Array.from(document.body.children);\n\n      bodyChildren.forEach((element, index) => {\n          element.setAttribute('data-order', index.toString());\n      });\n  }\n\n  // Initialize position management\n  function initializePositionManagement() {\n      // Capture body order first\n      captureBodyOrder();\n\n      // Assign data-order attributes\n      assignDataPositions();\n  }\n\n  // Run immediately if DOM is ready, otherwise wait\n  if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', initializePositionManagement);\n  } else {\n      initializePositionManagement();\n  }\n\n  // Export position management interface\n  window.InduxRoutingPosition = {\n      initialize: initializePositionManagement,\n      captureBodyOrder,\n      assignDataPositions\n  }; \n\n  // Router navigation\n\n  // Current route state\n  let currentRoute = '/';\n  let isInternalNavigation = false;\n\n  // Handle route changes\n  async function handleRouteChange() {\n      const newRoute = window.location.pathname;\n      if (newRoute === currentRoute) return;\n\n      currentRoute = newRoute;\n\n      // Handle scrolling based on whether this is an anchor link or route change\n      if (!window.location.hash) {\n          // This is a route change - scroll to top\n          // Use a small delay to ensure content has loaded\n          setTimeout(() => {\n              // Scroll main page to top\n              window.scrollTo({ top: 0, behavior: 'smooth' });\n              \n              // Find and scroll scrollable containers to top\n              // Use a generic approach that works with any CSS framework\n              // Only check elements that are likely to be scrollable containers\n              const potentialContainers = document.querySelectorAll('div, main, section, article, aside, nav, header, footer, .prose');\n              potentialContainers.forEach(element => {\n                  const computedStyle = window.getComputedStyle(element);\n                  const isScrollable = (\n                      computedStyle.overflowY === 'auto' || \n                      computedStyle.overflowY === 'scroll' ||\n                      computedStyle.overflow === 'auto' || \n                      computedStyle.overflow === 'scroll'\n                  ) && element.scrollHeight > element.clientHeight;\n                  \n                  if (isScrollable) {\n                      element.scrollTop = 0;\n                  }\n              });\n          }, 50);\n      } else {\n          // This is an anchor link - let the browser handle the scroll naturally\n          // Use a small delay to ensure content has loaded, then let browser scroll to anchor\n          setTimeout(() => {\n              // The browser will automatically scroll to the anchor\n              // We just need to ensure the content is loaded first\n          }, 50);\n      }\n\n      // Emit route change event\n      window.dispatchEvent(new CustomEvent('indux:route-change', {\n          detail: {\n              from: currentRoute,\n              to: newRoute,\n              normalizedPath: newRoute === '/' ? '/' : newRoute.replace(/^\\/|\\/$/g, '')\n          }\n      }));\n  }\n\n  // Intercept link clicks to prevent page reloads\n  function interceptLinkClicks() {\n      // Use capture phase to intercept before other handlers\n      document.addEventListener('click', (event) => {\n          const link = event.target.closest('a');\n          if (!link) return;\n\n          const href = link.getAttribute('href');\n          if (!href || href.startsWith('mailto:') || href.startsWith('tel:')) return;\n          \n          // Handle pure anchor links normally - don't intercept them\n          if (href.startsWith('#')) return;\n          \n          // Check if it's an external link FIRST (before any other processing)\n          let isExternalLink = false;\n          try {\n              const url = new URL(href, window.location.origin);\n              if (url.origin !== window.location.origin) {\n                  isExternalLink = true; // External link\n              }\n          } catch (e) {\n              // Invalid URL, treat as relative\n          }\n\n          // If it's an external link, don't intercept it\n          if (isExternalLink) {\n              return;\n          }\n          \n          // Handle links with both route and anchor (e.g., /page#section)\n          if (href.includes('#')) {\n              const [path, hash] = href.split('#');\n              \n              event.preventDefault();\n              event.stopPropagation();\n              event.stopImmediatePropagation();\n\n              // Set flag to prevent recursive calls\n              isInternalNavigation = true;\n\n              // Update URL without page reload\n              history.pushState(null, '', href);\n\n              // Handle route change (but don't scroll to top since there's an anchor)\n              handleRouteChange();\n\n              // Reset flag\n              isInternalNavigation = false;\n              \n              // After route change, scroll to the anchor\n              setTimeout(() => {\n                  const targetElement = document.getElementById(hash);\n                  if (targetElement) {\n                      targetElement.scrollIntoView({ behavior: 'smooth' });\n                  }\n              }, 100);\n              \n              return;\n          }\n\n          event.preventDefault();\n          event.stopPropagation();\n          event.stopImmediatePropagation();\n\n          // Set flag to prevent recursive calls\n          isInternalNavigation = true;\n\n          // Update URL without page reload\n          history.pushState(null, '', href);\n\n          // Handle route change\n          handleRouteChange();\n\n          // Reset flag\n          isInternalNavigation = false;\n\n      }, true); // Use capture phase\n  }\n\n  // Initialize navigation\n  function initializeNavigation() {\n      // Set initial route\n      currentRoute = window.location.pathname;\n\n      // Intercept link clicks\n      interceptLinkClicks();\n\n      // Listen for popstate events (browser back/forward)\n      window.addEventListener('popstate', () => {\n          if (!isInternalNavigation) {\n              handleRouteChange();\n          }\n      });\n\n      // Handle initial route\n      handleRouteChange();\n  }\n\n  // Run immediately if DOM is ready, otherwise wait\n  if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', initializeNavigation);\n  } else {\n      initializeNavigation();\n  }\n\n  // Export navigation interface\n  window.InduxRoutingNavigation = {\n      initialize: initializeNavigation,\n      getCurrentRoute: () => currentRoute\n  }; \n\n  // Router visibility\n\n  // Process visibility for all elements with x-route\n  function processRouteVisibility(normalizedPath) {\n\n      const routeElements = document.querySelectorAll('[x-route]');\n\n      // First pass: collect all defined routes (excluding !* and other negative conditions)\n      const definedRoutes = [];\n      routeElements.forEach(element => {\n          const routeCondition = element.getAttribute('x-route');\n          if (!routeCondition) return;\n\n          const conditions = routeCondition.split(',').map(cond => cond.trim());\n          conditions.forEach(cond => {\n              // Only collect positive conditions and wildcards (not negative ones)\n              if (!cond.startsWith('!') && cond !== '!*') {\n                  definedRoutes.push(cond);\n              }\n          });\n      });\n\n      // Extract localization codes from manifest.json data sources\n      const localizationCodes = [];\n      try {\n          // Check if manifest is available and has data sources\n          const manifest = window.InduxComponentsRegistry?.manifest || window.manifest;\n          if (manifest && manifest.data) {\n              Object.values(manifest.data).forEach(dataSource => {\n                  if (typeof dataSource === 'object' && dataSource !== null) {\n                      Object.keys(dataSource).forEach(key => {\n                          // Check if this looks like a localization key (common language codes)\n                          if (key.match(/^[a-z]{2}(-[A-Z]{2})?$/)) {\n                              localizationCodes.push(key);\n                          }\n                      });\n                  }\n              });\n          }\n      } catch (e) {\n          // Ignore errors if manifest is not available\n      }\n\n      // Check if current route is defined by any route\n      let isRouteDefined = definedRoutes.some(route => \n          window.InduxRouting.matchesCondition(normalizedPath, route)\n      );\n\n      // Also check if the route starts with a localization code\n      if (!isRouteDefined && localizationCodes.length > 0) {\n          const pathSegments = normalizedPath.split('/').filter(segment => segment);\n          if (pathSegments.length > 0) {\n              const firstSegment = pathSegments[0];\n              if (localizationCodes.includes(firstSegment)) {\n                  // This is a localized route - check if the remaining path is defined\n                  const remainingPath = pathSegments.slice(1).join('/');\n                  \n                  // If no remaining path, treat as root route\n                  if (remainingPath === '') {\n                      isRouteDefined = definedRoutes.some(route => \n                          window.InduxRouting.matchesCondition('/', route) || \n                          window.InduxRouting.matchesCondition('', route)\n                      );\n                  } else {\n                      // Check if the remaining path matches any defined route\n                      isRouteDefined = definedRoutes.some(route => \n                          window.InduxRouting.matchesCondition(remainingPath, route)\n                      );\n                  }\n              }\n          }\n      }\n\n      routeElements.forEach(element => {\n          const routeCondition = element.getAttribute('x-route');\n          if (!routeCondition) return;\n\n          // Parse route conditions\n          const conditions = routeCondition.split(',').map(cond => cond.trim());\n          const positiveConditions = conditions.filter(cond => !cond.startsWith('!'));\n          const negativeConditions = conditions\n              .filter(cond => cond.startsWith('!'))\n              .map(cond => cond.slice(1));\n\n          // Special handling for !* (undefined routes)\n          if (conditions.includes('!*')) {\n              const shouldShow = !isRouteDefined;\n              if (shouldShow) {\n                  element.removeAttribute('hidden');\n                  element.style.display = '';\n              } else {\n                  element.setAttribute('hidden', '');\n                  element.style.display = 'none';\n              }\n              return;\n          }\n\n          // Check conditions\n          const hasNegativeMatch = negativeConditions.some(cond =>\n              window.InduxRouting.matchesCondition(normalizedPath, cond)\n          );\n          const hasPositiveMatch = positiveConditions.length === 0 || positiveConditions.some(cond =>\n              window.InduxRouting.matchesCondition(normalizedPath, cond)\n          );\n\n          const shouldShow = hasPositiveMatch && !hasNegativeMatch;\n\n          // Show/hide element\n          if (shouldShow) {\n              element.removeAttribute('hidden');\n              element.style.display = '';\n          } else {\n              element.setAttribute('hidden', '');\n              element.style.display = 'none';\n          }\n      });\n  }\n\n  // Add x-cloak to route elements that don't have it\n  function addXCloakToRouteElements() {\n      const routeElements = document.querySelectorAll('[x-route]:not([x-cloak])');\n      routeElements.forEach(element => {\n          element.setAttribute('x-cloak', '');\n      });\n  }\n\n  // Initialize visibility management\n  function initializeVisibility() {\n      // Add x-cloak to route elements to prevent flash\n      addXCloakToRouteElements();\n      \n      // Process initial visibility\n      const currentPath = window.location.pathname;\n      const normalizedPath = currentPath === '/' ? '/' : currentPath.replace(/^\\/|\\/$/g, '');\n      processRouteVisibility(normalizedPath);\n\n      // Listen for route changes\n      window.addEventListener('indux:route-change', (event) => {\n          processRouteVisibility(event.detail.normalizedPath);\n      });\n\n      // Listen for component processing to ensure visibility is applied after components load\n      window.addEventListener('indux:components-processed', () => {\n          // Add x-cloak to any new route elements\n          addXCloakToRouteElements();\n          \n          const currentPath = window.location.pathname;\n          const normalizedPath = currentPath === '/' ? '/' : currentPath.replace(/^\\/|\\/$/g, '');\n          processRouteVisibility(normalizedPath);\n      });\n  }\n\n  // Add x-cloak immediately to prevent flash\n  if (document.readyState === 'loading') {\n      // DOM is still loading, add x-cloak as soon as possible\n      document.addEventListener('DOMContentLoaded', () => {\n          addXCloakToRouteElements();\n          initializeVisibility();\n      });\n  } else {\n      // DOM is ready, add x-cloak immediately\n      addXCloakToRouteElements();\n      initializeVisibility();\n  }\n\n  // Export visibility interface\n  window.InduxRoutingVisibility = {\n      initialize: initializeVisibility,\n      processRouteVisibility\n  }; \n\n  // Router head\n\n  // Track injected head content to prevent duplicates\n  const injectedHeadContent = new Set();\n\n  // Check if an element should be visible based on route conditions\n  function shouldElementBeVisible(element, normalizedPath) {\n\n      // Check if element has x-route attribute\n      if (element.hasAttribute('x-route')) {\n          const routeCondition = element.getAttribute('x-route');\n\n          if (routeCondition) {\n              const conditions = routeCondition.split(',').map(cond => cond.trim());\n              const positiveConditions = conditions.filter(cond => !cond.startsWith('!'));\n              const negativeConditions = conditions\n                  .filter(cond => cond.startsWith('!'))\n                  .map(cond => cond.slice(1));\n\n              const hasNegativeMatch = negativeConditions.some(cond => {\n                  const matches = window.InduxRouting.matchesCondition(normalizedPath, cond);\n                  return matches;\n              });\n\n              const hasPositiveMatch = positiveConditions.length === 0 || positiveConditions.some(cond => {\n                  const matches = window.InduxRouting.matchesCondition(normalizedPath, cond);\n                  return matches;\n              });\n\n              const result = hasPositiveMatch && !hasNegativeMatch;\n              return result;\n          }\n      }\n\n      // Check parent elements for x-route\n      const parentWithRoute = element.closest('[x-route]');\n      if (parentWithRoute) {\n          return shouldElementBeVisible(parentWithRoute, normalizedPath);\n      }\n\n      // If no route conditions, element is visible\n      return true;\n  }\n\n  // Generate unique identifier for head content\n  function generateHeadId(element) {\n      const position = element.getAttribute('data-order');\n      const componentId = element.getAttribute('data-component-id');\n      const tagName = element.tagName.toLowerCase();\n\n      if (position) {\n          return `${tagName}-${position}`;\n      } else if (componentId) {\n          return `${tagName}-${componentId}`;\n      } else {\n          return `${tagName}-${Math.random().toString(36).substr(2, 9)}`;\n      }\n  }\n\n  // Process head content for a single element\n  function processElementHeadContent(element, normalizedPath) {\n      let headTemplate = null;\n\n      // Check if the element itself is a template with data-head\n      if (element.tagName === 'TEMPLATE' && element.hasAttribute('data-head')) {\n          headTemplate = element;\n      } else {\n          // Look for a template with data-head inside the element\n          headTemplate = element.querySelector('template[data-head]');\n      }\n\n      if (!headTemplate) {\n          return;\n      }\n\n      const headId = generateHeadId(element);\n      const isVisible = shouldElementBeVisible(element, normalizedPath);\n\n      if (isVisible) {\n          // Check if we've already injected this content\n          if (injectedHeadContent.has(headId)) {\n              return;\n          }\n\n          // Add new head content\n          Array.from(headTemplate.content.children).forEach(child => {\n              if (child.tagName === 'SCRIPT') {\n                  // For scripts, create and execute directly\n                  const script = document.createElement('script');\n                  script.textContent = child.textContent;\n                  script.setAttribute('data-route-head', headId);\n                  document.head.appendChild(script);\n              } else {\n                  // For other elements, clone and add\n                  const clonedChild = child.cloneNode(true);\n                  clonedChild.setAttribute('data-route-head', headId);\n                  document.head.appendChild(clonedChild);\n              }\n          });\n\n          injectedHeadContent.add(headId);\n      } else {\n          // Element is not visible, remove any existing head content for this element\n          const existingHead = document.head.querySelectorAll(`[data-route-head=\"${headId}\"]`);\n          existingHead.forEach(el => {\n              el.remove();\n          });\n          injectedHeadContent.delete(headId);\n      }\n  }\n\n  // Process all head content in the DOM\n  function processAllHeadContent(normalizedPath) {\n\n      // Find all elements with head templates\n      const elementsWithHead = document.querySelectorAll('template[data-head]');\n\n      // Debug: Let's see what's actually in the DOM\n      const allTemplates = document.querySelectorAll('template');\n      allTemplates.forEach((template, index) => {\n          if (template.hasAttribute('data-head')) ; else {\n              // Check if this might be the about template\n              if (template.getAttribute('x-route') === 'about') ;\n          }\n      });\n\n      // Also try a more specific selector to see if we can find the about template\n      document.querySelector('template[x-route=\"about\"]');\n\n      // Process each element's head content\n      elementsWithHead.forEach((template, index) => {\n\n          // For component templates, we need to check if the component should be visible\n          // based on the current route, not just the template's own attributes\n          let element = template;\n          let shouldProcess = true;\n\n          // If this is a component template (has data-component), check if the component\n          // should be visible for the current route\n          if (template.hasAttribute('data-component')) {\n              template.getAttribute('data-component');\n              const componentRoute = template.getAttribute('x-route');\n\n              // Check if this component should be visible for the current route\n              if (componentRoute) {\n                  const isVisible = window.InduxRouting.matchesCondition(normalizedPath, componentRoute);\n                  shouldProcess = isVisible;\n              } else {\n                  shouldProcess = false;\n              }\n          } else {\n              // For non-component templates, use the existing logic\n              element = template.closest('[data-order], [data-component-id], [x-route]');\n\n              // If the template itself has the attributes we need, use it directly\n              if (!element || element === template) {\n                  if (template.hasAttribute('data-order') || template.hasAttribute('data-component') || template.hasAttribute('x-route')) {\n                      element = template;\n                  } else {\n                      element = template.parentElement;\n                  }\n              }\n\n              if (element) {\n                  const isVisible = shouldElementBeVisible(element, normalizedPath);\n                  shouldProcess = isVisible;\n              }\n          }\n\n          if (shouldProcess) {\n              // For component templates, process them directly since we've already determined visibility\n              if (template.hasAttribute('data-component')) {\n                  processElementHeadContent(template, normalizedPath);\n              } else {\n                  // For non-component templates, use the existing logic\n                  processElementHeadContent(element, normalizedPath);\n              }\n          }\n      });\n  }\n\n  // Initialize head content management\n  function initializeHeadContent() {\n      // Wait for components to be ready before processing head content\n      function processHeadContentAfterComponentsReady() {\n          // Process initial head content after a longer delay to let components settle\n          setTimeout(() => {\n              const currentPath = window.location.pathname;\n              const normalizedPath = currentPath === '/' ? '/' : currentPath.replace(/^\\/|\\/$/g, '');\n\n              // Debug: Check if about component exists\n              document.querySelector('[data-component=\"about-1\"]');\n\n              // Debug: Check what placeholders exist\n              const placeholders = document.querySelectorAll('x-about, x-home, x-ui');\n              placeholders.forEach((placeholder, index) => {\n              });\n\n              processAllHeadContent(normalizedPath);\n          }, 200);\n      }\n\n      // Function to process head content immediately (for projects without components)\n      function processHeadContentImmediately() {\n          const currentPath = window.location.pathname;\n          const normalizedPath = currentPath === '/' ? '/' : currentPath.replace(/^\\/|\\/$/g, '');\n          processAllHeadContent(normalizedPath);\n      }\n\n      // Check if components system exists\n      if (window.InduxComponents) {\n          // Components system exists - wait for it to be fully processed\n          if (window.__induxComponentsInitialized) {\n              // Components are initialized, but we need to wait for them to be processed\n              // Check if components have already been processed\n              if (document.querySelector('[data-component]')) {\n                  processHeadContentAfterComponentsReady();\n              } else {\n                  // Wait for components to be processed\n                  window.addEventListener('indux:components-processed', processHeadContentAfterComponentsReady);\n              }\n          } else {\n              // Wait for components to be ready, then wait for them to be processed\n              window.addEventListener('indux:components-ready', () => {\n                  window.addEventListener('indux:components-processed', processHeadContentAfterComponentsReady);\n              });\n          }\n      } else {\n          // No components system - process immediately\n          processHeadContentImmediately();\n      }\n\n      // Listen for route changes - process immediately after components are ready\n      window.addEventListener('indux:route-change', (event) => {\n\n          // Wait a bit for components to settle after route change\n          setTimeout(() => {\n              // Process head content immediately to catch components before they're reverted\n              const currentPath = window.location.pathname;\n              const normalizedPath = currentPath === '/' ? '/' : currentPath.replace(/^\\/|\\/$/g, '');\n\n              // Debug: Check if about component exists\n              document.querySelector('[data-component=\"about-1\"]');\n\n              // Debug: Check what placeholders exist\n              const placeholders = document.querySelectorAll('x-about, x-home, x-ui');\n              placeholders.forEach((placeholder, index) => {\n              });\n\n              processAllHeadContent(normalizedPath);\n          }, 100);\n      });\n  }\n\n  // Run immediately if DOM is ready, otherwise wait\n  if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', initializeHeadContent);\n  } else {\n      initializeHeadContent();\n  }\n\n  // Export head content interface\n  window.InduxRoutingHead = {\n      initialize: initializeHeadContent,\n      processElementHeadContent,\n      processAllHeadContent\n  }; \n\n  // Router anchors\n\n  // Anchors functionality\n  function initializeAnchors() {\n      \n      // Register anchors directive  \n      Alpine.directive('anchors', (el, { expression, modifiers }, { effect, evaluateLater, Alpine }) => {\n\n          \n          try {\n              // Parse pipeline syntax: 'scope | targets'\n              const parseExpression = (expr) => {\n                  if (!expr || expr.trim() === '') {\n                      return { scope: '', targets: 'h1, h2, h3, h4, h5, h6' };\n                  }\n                  \n                  if (expr.includes('|')) {\n                      const parts = expr.split('|').map(p => p.trim());\n                      return {\n                          scope: parts[0] || '',\n                          targets: parts[1] || 'h1, h2, h3, h4, h5, h6'\n                      };\n                  } else {\n                      return { scope: '', targets: expr };\n                  }\n              };\n              \n              // Extract anchors function\n              const extractAnchors = (expr) => {\n                  const parsed = parseExpression(expr);\n                  \n                  let containers = [];\n                  if (!parsed.scope) {\n                      containers = [document.body];\n                  } else {\n                      containers = Array.from(document.querySelectorAll(parsed.scope));\n                  }\n                  \n                  let elements = [];\n                  const targets = parsed.targets.split(',').map(t => t.trim());\n                  \n                  containers.forEach(container => {\n                      // Query all targets at once, then filter and sort by DOM order\n                      const allMatches = [];\n                      targets.forEach(target => {\n                          const matches = container.querySelectorAll(target);\n                          allMatches.push(...Array.from(matches));\n                      });\n                      \n                      // Remove duplicates and sort by DOM order\n                      const uniqueMatches = [...new Set(allMatches)];\n                      uniqueMatches.sort((a, b) => {\n                          const position = a.compareDocumentPosition(b);\n                          if (position & Node.DOCUMENT_POSITION_FOLLOWING) return -1;\n                          if (position & Node.DOCUMENT_POSITION_PRECEDING) return 1;\n                          return 0;\n                      });\n                      \n                      elements.push(...uniqueMatches);\n                  });\n                  \n                  return elements.map((element, index) => {\n                      // Generate simple ID\n                      let id = element.id;\n                      if (!id) {\n                          id = element.textContent.toLowerCase().replace(/[^a-z0-9]/g, '-').replace(/-+/g, '-');\n                          if (id) element.id = id;\n                      }\n\n                      // Selected state will be managed by intersection observer\n\n                      return {\n                          id: id,\n                          text: element.textContent,\n                          link: `#${id}`,\n                          tag: element.tagName.toLowerCase(),\n                          class: element.className.split(' ')[0] || '',\n                          classes: Array.from(element.classList),\n                          index: index,\n                          element: element,\n\n                      };\n                  });\n              };\n              \n              // Track rendered elements to prevent duplicates\n              let renderedElements = [];\n              \n              // Update Alpine data with anchors\n              const updateAnchors = (anchors) => {\n                  // Remove existing rendered elements if they exist\n                  renderedElements.forEach(element => {\n                      if (element.parentElement) {\n                          element.remove();\n                      }\n                  });\n                  renderedElements = [];\n                  \n                  // Set Alpine reactive property for anchor count\n                  Alpine.store('anchors', { count: anchors.length });\n                  \n                  // Render using the template element's structure and classes\n                  if (anchors.length > 0) {\n                      // Find the container div inside the template\n                      const templateContent = el.content || el;\n                      const containerTemplate = templateContent.querySelector('div') || el.querySelector('div');\n                      \n                      if (containerTemplate) {\n                          // Clone the container div from the template\n                          const containerElement = containerTemplate.cloneNode(false); // Don't clone children\n                          \n                          // Remove Alpine directives from the container\n                          containerElement.removeAttribute('x-show');\n                          \n                          anchors.forEach(anchor => {\n                              // Find the <a> element inside the template\n                              const anchorTemplate = templateContent.querySelector('a') || el.querySelector('a');\n                              \n                              if (anchorTemplate) {\n                                  // Clone the <a> element from inside the template\n                                  const linkElement = anchorTemplate.cloneNode(true);\n                                  \n                                  // Remove Alpine directives\n                                  linkElement.removeAttribute('x-text');\n                                  linkElement.removeAttribute(':href');\n                                  \n                                  // Set the actual href and text content\n                                  linkElement.href = anchor.link;\n                                  linkElement.textContent = anchor.text;\n                                  \n                                  // Evaluate :class binding if present\n                                  if (linkElement.hasAttribute(':class')) {\n                                      const classBinding = linkElement.getAttribute(':class');\n                                      linkElement.removeAttribute(':class');\n                                      \n                                      try {\n                                          // Create a simple evaluator for class bindings\n                                          const evaluateClassBinding = (binding, anchor) => {\n                                              // Replace anchor.property references with actual values\n                                              let evaluated = binding\n                                                  .replace(/anchor\\.tag/g, `'${anchor.tag}'`)\n                                                  .replace(/anchor\\.selected/g, anchor.selected ? 'true' : 'false')\n                                                  .replace(/anchor\\.index/g, anchor.index)\n                                                  .replace(/anchor\\.id/g, `'${anchor.id}'`)\n                                                  .replace(/anchor\\.text/g, `'${anchor.text.replace(/'/g, \"\\\\'\")}'`)\n                                                  .replace(/anchor\\.link/g, `'${anchor.link}'`)\n                                                  .replace(/anchor\\.class/g, `'${anchor.class}'`);\n                                              \n                                              // Simple object evaluation for class bindings\n                                              if (evaluated.includes('{') && evaluated.includes('}')) {\n                                                  // Extract the object part\n                                                  const objectMatch = evaluated.match(/\\{([^}]+)\\}/);\n                                                  if (objectMatch) {\n                                                      const objectContent = objectMatch[1];\n                                                      const classPairs = objectContent.split(',').map(pair => pair.trim());\n                                                      \n                                                      classPairs.forEach(pair => {\n                                                          const [className, condition] = pair.split(':').map(s => s.trim());\n                                                          if (condition && eval(condition)) {\n                                                              linkElement.classList.add(className.replace(/['\"]/g, ''));\n                                                          }\n                                                      });\n                                                  }\n                                              }\n                                          };\n                                          \n                                          evaluateClassBinding(classBinding, anchor);\n                                      } catch (error) {\n                                          console.warn('[Indux Anchors] Could not evaluate class binding:', classBinding, error);\n                                      }\n                                  }\n                                  \n                                  containerElement.appendChild(linkElement);\n                              }\n                          });\n                          \n                          // Insert the container before the template element\n                          el.parentElement.insertBefore(containerElement, el);\n                          renderedElements.push(containerElement);\n                      } else {\n                          // Fallback: insert links directly if no container found\n                          anchors.forEach(anchor => {\n                              const templateContent = el.content || el;\n                              const anchorTemplate = templateContent.querySelector('a') || el.querySelector('a');\n                              \n                              if (anchorTemplate) {\n                                  const linkElement = anchorTemplate.cloneNode(true);\n                                  linkElement.removeAttribute('x-text');\n                                  linkElement.removeAttribute(':href');\n                                  linkElement.href = anchor.link;\n                                  linkElement.textContent = anchor.text;\n                                  \n                                  // Evaluate :class binding if present\n                                  if (linkElement.hasAttribute(':class')) {\n                                      const classBinding = linkElement.getAttribute(':class');\n                                      linkElement.removeAttribute(':class');\n                                      \n                                      try {\n                                          // Create a simple evaluator for class bindings\n                                          const evaluateClassBinding = (binding, anchor) => {\n                                              // Replace anchor.property references with actual values\n                                              let evaluated = binding\n                                                  .replace(/anchor\\.tag/g, `'${anchor.tag}'`)\n                                                  .replace(/anchor\\.selected/g, anchor.selected ? 'true' : 'false')\n                                                  .replace(/anchor\\.index/g, anchor.index)\n                                                  .replace(/anchor\\.id/g, `'${anchor.id}'`)\n                                                  .replace(/anchor\\.text/g, `'${anchor.text.replace(/'/g, \"\\\\'\")}'`)\n                                                  .replace(/anchor\\.link/g, `'${anchor.link}'`)\n                                                  .replace(/anchor\\.class/g, `'${anchor.class}'`);\n                                              \n                                              // Simple object evaluation for class bindings\n                                              if (evaluated.includes('{') && evaluated.includes('}')) {\n                                                  // Extract the object part\n                                                  const objectMatch = evaluated.match(/\\{([^}]+)\\}/);\n                                                  if (objectMatch) {\n                                                      const objectContent = objectMatch[1];\n                                                      const classPairs = objectContent.split(',').map(pair => pair.trim());\n                                                      \n                                                      classPairs.forEach(pair => {\n                                                          const [className, condition] = pair.split(':').map(s => s.trim());\n                                                          if (condition && eval(condition)) {\n                                                              linkElement.classList.add(className.replace(/['\"]/g, ''));\n                                                          }\n                                                      });\n                                                  }\n                                              }\n                                          };\n                                          \n                                          evaluateClassBinding(classBinding, anchor);\n                                      } catch (error) {\n                                          console.warn('[Indux Anchors] Could not evaluate class binding:', classBinding, error);\n                                      }\n                                  }\n                                  \n                                  el.parentElement.insertBefore(linkElement, el);\n                                  renderedElements.push(linkElement);\n                              }\n                          });\n                      }\n                      \n                      el.style.display = 'none'; // Hide template\n                  } else {\n                      // No anchors - ensure template is visible and elements are cleared\n                      el.style.display = '';\n                  }\n              };\n              \n              // Try extraction and update data\n              const tryExtraction = () => {\n                  const anchors = extractAnchors(expression);\n                  updateAnchors(anchors);\n                  return anchors;\n              };\n              \n              // Try extraction with progressive delays and content detection\n              const attemptExtraction = (attempt = 1, maxAttempts = 10) => {\n                  const anchors = extractAnchors(expression);\n                  \n                  if (anchors.length > 0) {\n                      updateAnchors(anchors);\n                      return true;\n                  } else if (attempt < maxAttempts) {\n                      setTimeout(() => {\n                          attemptExtraction(attempt + 1, maxAttempts);\n                      }, attempt * 200); // Progressive delay: 200ms, 400ms, 600ms, etc.\n                  } else {\n                      // No anchors found after all attempts, update store to clear previous state\n                      updateAnchors([]);\n                  }\n                  return false;\n              };\n              \n              // Store refresh function on element for route changes\n              el._x_anchorRefresh = () => {\n                  attemptExtraction();\n              };\n              \n              // Start extraction attempts\n              attemptExtraction();\n              \n              \n          } catch (error) {\n              console.error('[Indux Anchors] Error in directive:', error);\n          }\n      });\n  }\n\n  // Initialize anchors when Alpine is ready\n  document.addEventListener('alpine:init', () => {\n\n      try {\n          initializeAnchors();\n\n      } catch (error) {\n          console.error('[Indux Anchors] Failed to initialize:', error);\n      }\n  });\n\n  // Refresh anchors when route changes\n  window.addEventListener('indux:route-change', () => {\n      // Immediately clear the store to hide the h5 element\n      Alpine.store('anchors', { count: 0 });\n      \n      // Wait longer for content to load after route change\n      setTimeout(() => {\n          const anchorElements = document.querySelectorAll('[x-anchors]');\n          anchorElements.forEach(el => {\n              const expression = el.getAttribute('x-anchors');\n              if (expression && el._x_anchorRefresh) {\n                  el._x_anchorRefresh();\n              }\n          });\n      }, 200);\n  });\n\n  // Refresh anchors when hash changes (for active state updates)\n  window.addEventListener('hashchange', () => {\n      const anchorElements = document.querySelectorAll('[x-anchors]');\n      anchorElements.forEach(el => {\n          if (el._x_anchorRefresh) {\n              el._x_anchorRefresh();\n          }\n      });\n  });\n\n  // Also refresh anchors when components are processed\n  window.addEventListener('indux:components-processed', () => {\n      setTimeout(() => {\n          const anchorElements = document.querySelectorAll('[x-anchors]');\n          anchorElements.forEach(el => {\n              const expression = el.getAttribute('x-anchors');\n              if (expression && el._x_anchorRefresh) {\n                  el._x_anchorRefresh();\n              }\n          });\n      }, 100);\n  }); \n\n  // Export anchors interface\n  window.InduxRoutingAnchors = {\n      initialize: initializeAnchors\n  };\n\n\n  // Router magic property\n\n  // Initialize router magic property\n  function initializeRouterMagic() {\n      // Check if Alpine is available\n      if (typeof Alpine === 'undefined') {\n          console.error('[Indux Router Magic] Alpine is not available');\n          return;\n      }\n      \n      // Create a reactive object for route data\n      const route = Alpine.reactive({\n          current: window.location.pathname,\n          segments: [],\n          params: {},\n          matches: null\n      });\n\n      // Update route when route changes\n      const updateRoute = () => {\n          const currentRoute = window.InduxRoutingNavigation?.getCurrentRoute() || window.location.pathname;\n          \n          // Strip localization codes and other injected segments to get the logical route\n          let logicalRoute = currentRoute;\n          \n          // Check if there's a localization code at the start of the path\n          const pathParts = currentRoute.split('/').filter(Boolean);\n          if (pathParts.length > 0) {\n              // Check if first segment is a language code (2-5 characters, alphanumeric with hyphens/underscores)\n              const firstSegment = pathParts[0];\n              if (/^[a-zA-Z0-9_-]{2,5}$/.test(firstSegment)) {\n                  // This might be a language code, check if it's in the available locales\n                  const store = Alpine.store('locale');\n                  if (store && store.available && store.available.includes(firstSegment)) {\n                      // Remove the language code from the path\n                      logicalRoute = '/' + pathParts.slice(1).join('/');\n                      if (logicalRoute === '/') logicalRoute = '/';\n                  }\n              }\n          }\n          \n          const normalizedPath = logicalRoute === '/' ? '' : logicalRoute.replace(/^\\/|\\/$/g, '');\n          const segments = normalizedPath ? normalizedPath.split('/').filter(segment => segment) : [];\n          \n          route.current = logicalRoute;\n          route.segments = segments;\n          route.params = {};\n      };\n\n      // Listen for route changes\n      window.addEventListener('indux:route-change', updateRoute);\n      window.addEventListener('popstate', updateRoute);\n      \n      // Register $route magic property - return the route string directly\n      Alpine.magic('route', () => route.current);\n  }\n\n  // Initialize when Alpine is ready and router is ready\n  document.addEventListener('alpine:init', () => {\n      // Wait for router to be ready\n      const waitForRouter = () => {\n          if (window.InduxRoutingNavigation && window.InduxRouting) {\n              try {\n                  initializeRouterMagic();\n              } catch (error) {\n                  console.error('[Indux Router Magic] Failed to initialize:', error);\n              }\n          } else {\n              // Wait a bit more for router to initialize\n              setTimeout(waitForRouter, 50);\n          }\n      };\n      \n      waitForRouter();\n  });\n\n  // Also try to initialize immediately if Alpine and router are already available\n  if (typeof Alpine !== 'undefined' && window.InduxRoutingNavigation && window.InduxRouting) {\n      try {\n          initializeRouterMagic();\n      } catch (error) {\n          console.error('[Indux Router Magic] Failed to initialize immediately:', error);\n      }\n  }\n\n  // Export magic property interface\n  window.InduxRoutingMagic = {\n      initialize: initializeRouterMagic\n  };\n\n  /* Indux Slides */\n\n  function initializeCarouselPlugin() {\n\n      Alpine.directive('carousel', (el, { value, modifiers, expression }, { evaluate, effect }) => {\n          const state = {\n              carousel: {\n                  autoplay: modifiers.includes('autoplay'),\n                  interval: 3000,\n                  loop: modifiers.includes('loop'),\n                  arrows: modifiers.includes('arrows'),\n                  dots: modifiers.includes('dots'),\n                  thumbnails: modifiers.includes('thumbnails'),\n                  enableDrag: !modifiers.includes('no-drag')\n              },\n              currentSlide: 0,\n              dragging: false,\n              startX: 0,\n\n              // Get total slides by counting actual DOM elements\n              get totalSlides() {\n                  const track = el.querySelector('.carousel-slides');\n                  if (!track) return 0;\n                  return Array.from(track.children).filter(child =>\n                      child.tagName !== 'TEMPLATE'\n                  ).length;\n              },\n\n              // Navigation methods\n              next() {\n                  const total = this.totalSlides;\n                  if (this.currentSlide >= total - 1) {\n                      if (this.carousel.loop) {\n                          this.currentSlide = 0;\n                      }\n                  } else {\n                      this.currentSlide++;\n                  }\n              },\n\n              prev() {\n                  const total = this.totalSlides;\n                  if (this.currentSlide <= 0) {\n                      if (this.carousel.loop) {\n                          this.currentSlide = total - 1;\n                      }\n                  } else {\n                      this.currentSlide--;\n                  }\n              },\n\n              goToSlide(index) {\n                  const total = this.totalSlides;\n                  if (index >= 0 && index < total) {\n                      this.currentSlide = index;\n                  }\n              },\n\n              // Drag handlers\n              startDrag(e) {\n                  if (!this.carousel.enableDrag) return;\n                  this.dragging = true;\n                  this.startX = e.type === 'mousedown' ? e.pageX : e.touches[0].pageX;\n              },\n\n              drag(e) {\n                  if (!this.dragging) return;\n                  e.preventDefault();\n                  const currentX = e.type === 'mousemove' ? e.pageX : e.touches[0].pageX;\n                  const diff = currentX - this.startX;\n\n                  if (Math.abs(diff) > 50) {\n                      if (diff > 0) {\n                          this.prev();\n                      } else {\n                          this.next();\n                      }\n                      this.dragging = false;\n                  }\n              },\n\n              endDrag() {\n                  this.dragging = false;\n              },\n\n              // Add this method to generate dots array\n              get dots() {\n                  return Array.from({ length: this.totalSlides }, (_, i) => ({\n                      index: i,\n                      active: i === this.currentSlide\n                  }));\n              }\n          };\n\n          Alpine.bind(el, {\n              'x-data'() {\n                  return state;\n              },\n\n              'x-init'() {\n                  setTimeout(() => {\n                      const track = el.querySelector('.carousel-slides');\n                      if (!track) {\n                          console.warn('[Indux] Carousel track element not found. Expected element with class \"carousel-slides\"');\n                          return;\n                      }\n\n                      // Setup autoplay if enabled\n                      if (this.carousel.autoplay) {\n                          let interval;\n\n                          const startAutoplay = () => {\n                              interval = setInterval(() => this.next(), this.carousel.interval);\n                          };\n\n                          const stopAutoplay = () => {\n                              clearInterval(interval);\n                          };\n\n                          // Start autoplay\n                          startAutoplay();\n\n                          // Pause on hover if autoplay is enabled\n                          el.addEventListener('mouseenter', stopAutoplay);\n                          el.addEventListener('mouseleave', startAutoplay);\n\n                          // Clean up on element removal\n                          el._x_cleanups = el._x_cleanups || [];\n                          el._x_cleanups.push(() => {\n                              stopAutoplay();\n                              el.removeEventListener('mouseenter', stopAutoplay);\n                              el.removeEventListener('mouseleave', startAutoplay);\n                          });\n                      }\n                  }, 0);\n              }\n          });\n      });\n  }\n\n  // Handle both DOMContentLoaded and alpine:init\n  if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', () => {\n          if (window.Alpine) initializeCarouselPlugin();\n      });\n  }\n\n  document.addEventListener('alpine:init', initializeCarouselPlugin);\n\n  /* Indux Tabs */\n\n  // Simple tabs plugin that acts as a proxy for Alpine's native functionality\n  function initializeTabsPlugin() {\n      // Process all tab elements\n      function processTabs() {\n          // Find all x-tab elements\n          const tabButtons = document.querySelectorAll('[x-tab]');\n          const tabPanels = document.querySelectorAll('[x-tabpanel]');\n          \n          if (tabButtons.length === 0 && tabPanels.length === 0) {\n              return;\n          }\n          \n          // Group panels by their x-tabpanel value\n          const panelGroups = {};\n          tabPanels.forEach(panel => {\n              const panelSet = panel.getAttribute('x-tabpanel') || '';\n              const panelId = panel.id || panel.className.split(' ')[0];\n              if (panelId) {\n                  if (!panelGroups[panelSet]) panelGroups[panelSet] = [];\n                  panelGroups[panelSet].push({ element: panel, id: panelId });\n              }\n          });\n          \n          // Process each panel group\n          Object.entries(panelGroups).forEach(([panelSet, panels]) => {\n              const tabProp = panelSet ? `tab_${panelSet}` : 'tab';\n              \n              // Find the common parent (body or closest x-data element)\n              let commonParent = document.body;\n              if (panels.length > 0) {\n                  commonParent = panels[0].element.closest('[x-data]') || document.body;\n              }\n              \n              // Ensure x-data exists\n              if (!commonParent.hasAttribute('x-data')) {\n                  commonParent.setAttribute('x-data', '{}');\n              }\n              \n              // Set up x-data with default value\n              const existingXData = commonParent.getAttribute('x-data') || '{}';\n              let newXData = existingXData;\n              \n              // Check if the tab property already exists\n              const propertyRegex = new RegExp(`${tabProp}\\\\s*:\\\\s*'[^']*'`, 'g');\n              if (!propertyRegex.test(newXData)) {\n                  // Add the tab property with default value (first panel's id)\n                  const defaultValue = panels.length > 0 ? panels[0].id : 'a';\n                  const tabProperty = `${tabProp}: '${defaultValue}'`;\n                  \n                  if (newXData === '{}') {\n                      newXData = `{ ${tabProperty} }`;\n                  } else {\n                      const lastBraceIndex = newXData.lastIndexOf('}');\n                      if (lastBraceIndex > 0) {\n                          const beforeBrace = newXData.substring(0, lastBraceIndex);\n                          const afterBrace = newXData.substring(lastBraceIndex);\n                          const separator = beforeBrace.trim().endsWith(',') ? '' : ', ';\n                          newXData = beforeBrace + separator + tabProperty + afterBrace;\n                      }\n                  }\n                  \n                  if (newXData !== existingXData) {\n                      commonParent.setAttribute('x-data', newXData);\n                  }\n              }\n              \n              // Process panels for this group - add x-show attributes FIRST\n              panels.forEach(panel => {\n                  const showCondition = `${tabProp} === '${panel.id}'`;\n                  panel.element.setAttribute('x-show', showCondition);\n                  \n                  // Remove x-tabpanel attribute since we've converted it\n                  panel.element.removeAttribute('x-tabpanel');\n              });\n              \n              // Process tab buttons for this panel set\n              tabButtons.forEach(button => {\n                  const tabValue = button.getAttribute('x-tab');\n                  if (!tabValue) return;\n                  \n                  // Check if this button targets panels in this group\n                  const targetsThisGroup = panels.some(panel => panel.id === tabValue);\n                  if (!targetsThisGroup) return;\n                  \n                  // Set up click handler\n                  const clickHandler = `${tabProp} = '${tabValue}'`;\n                  button.setAttribute('x-on:click', clickHandler);\n                  \n                  // Remove x-tab attribute since we've converted it\n                  button.removeAttribute('x-tab');\n              });\n          });\n      }\n      \n      // Wait for components to be ready first\n      document.addEventListener('indux:components-ready', () => {\n          setTimeout(processTabs, 100); // Small delay to ensure DOM is settled\n      });\n      \n      // Also listen for components-processed event\n      document.addEventListener('indux:components-processed', () => {\n          setTimeout(processTabs, 100);\n      });\n      \n      // Also run on DOMContentLoaded as a fallback for non-component pages\n      document.addEventListener('DOMContentLoaded', () => {\n          setTimeout(processTabs, 100);\n      });\n      \n      // Add a fallback timer to catch cases where events don't fire\n      setTimeout(() => {\n          processTabs();\n      }, 2000);\n  }\n\n  // Initialize the plugin\n  initializeTabsPlugin();\n\n  /* Indux Themes */\n\n  // Initialize plugin when either DOM is ready or Alpine is ready\n  function initializeThemePlugin() {\n\n      // Initialize theme state with Alpine reactivity\n      const theme = Alpine.reactive({\n          current: localStorage.getItem('theme') || 'system'\n      });\n\n      // Apply initial theme\n      applyTheme(theme.current);\n\n      // Setup system theme listener\n      const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n      mediaQuery.addEventListener('change', () => {\n          if (theme.current === 'system') {\n              applyTheme('system');\n          }\n      });\n\n      // Register theme directive\n      Alpine.directive('theme', (el, { expression }, { evaluate, cleanup }) => {\n\n          const handleClick = () => {\n              const newTheme = expression === 'toggle'\n                  ? (document.documentElement.classList.contains('dark') ? 'light' : 'dark')\n                  : evaluate(expression);\n              setTheme(newTheme);\n          };\n\n          el.addEventListener('click', handleClick);\n          cleanup(() => el.removeEventListener('click', handleClick));\n      });\n\n      // Add $theme magic method\n      Alpine.magic('theme', () => ({\n          get current() {\n              return theme.current\n          },\n          set current(value) {\n              setTheme(value);\n          }\n      }));\n\n      function setTheme(newTheme) {\n          if (newTheme === 'toggle') {\n              newTheme = theme.current === 'light' ? 'dark' : 'light';\n          }\n\n          // Update theme state\n          theme.current = newTheme;\n          localStorage.setItem('theme', newTheme);\n\n          // Apply theme\n          applyTheme(newTheme);\n      }\n\n      function applyTheme(theme) {\n          const isDark = theme === 'system'\n              ? window.matchMedia('(prefers-color-scheme: dark)').matches\n              : theme === 'dark';\n\n          // Update document classes\n          document.documentElement.classList.remove('light', 'dark');\n          document.documentElement.classList.add(isDark ? 'dark' : 'light');\n\n          // Update meta theme-color\n          const metaThemeColor = document.querySelector('meta[name=\"theme-color\"]');\n          if (metaThemeColor) {\n              metaThemeColor.setAttribute('content', isDark ? '#000000' : '#FFFFFF');\n          }\n      }\n  }\n\n  // Handle both DOMContentLoaded and alpine:init\n  if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', () => {\n          if (window.Alpine) {\n              initializeThemePlugin();\n          }\n      });\n  }\n\n  document.addEventListener('alpine:init', initializeThemePlugin);\n\n  /* Indux Toasts */\n\n  const TOAST_DURATION = 3000; // Default duration in ms\n\n  function initializeToastPlugin() {\n\n      // Helper function to get or create container\n      const getContainer = () => {\n          let container = document.querySelector('.toast-container');\n          if (!container) {\n              container = document.createElement('div');\n              container.className = 'toast-container';\n              document.body.appendChild(container);\n          }\n          return container;\n      };\n\n      // Helper function to create icon element\n      const createIconElement = (iconName) => {\n          const iconSpan = document.createElement('span');\n          iconSpan.className = 'iconify';\n          iconSpan.setAttribute('data-icon', iconName);\n          if (window.Iconify) {\n              window.Iconify.scan(iconSpan);\n          }\n          return iconSpan;\n      };\n\n      // Helper function to show toast\n      const showToast = (message, { type = '', duration = TOAST_DURATION, dismissible = false, fixed = false, icon = null } = {}) => {\n          const container = getContainer();\n\n          // Create toast element\n          const toast = document.createElement('div');\n          toast.setAttribute('role', 'alert');\n          toast.setAttribute('class', type ? `toast ${type}` : 'toast');\n\n          // Create content with optional icon\n          const contentHtml = `\n            ${icon ? '<span class=\"toast-icon\"></span>' : ''}\n            <div class=\"toast-content\">${message}</div>\n            ${dismissible || fixed ? '<button class=\"toast-dismiss-button\" aria-label=\"Dismiss\"></button>' : ''}\n        `;\n\n          toast.innerHTML = contentHtml;\n\n          // Add icon if specified\n          if (icon) {\n              const iconContainer = toast.querySelector('.toast-icon');\n              iconContainer.appendChild(createIconElement(icon));\n          }\n\n          // Add to container\n          container.appendChild(toast);\n\n          // Force a reflow before adding the entry class\n          requestAnimationFrame(() => {\n              requestAnimationFrame(() => {\n                  toast.classList.add('toast-entry');\n              });\n          });\n\n          // Handle dismiss button if present\n          if (dismissible || fixed) {\n              toast.querySelector('.toast-dismiss-button')?.addEventListener('click', () => {\n                  removeToast(toast);\n              });\n          }\n\n          // Auto dismiss after duration (unless fixed)\n          if (!fixed) {\n              const timeout = setTimeout(() => {\n                  removeToast(toast);\n              }, duration);\n\n              // Pause timer on hover\n              toast.addEventListener('mouseenter', () => {\n                  clearTimeout(timeout);\n              });\n\n              // Resume timer on mouse leave\n              toast.addEventListener('mouseleave', () => {\n                  setTimeout(() => {\n                      removeToast(toast);\n                  }, duration / 2);\n              });\n          }\n      };\n\n      // Helper function to remove toast with animation\n      const removeToast = (toast) => {\n          toast.classList.remove('toast-entry');\n          toast.classList.add('toast-exit');\n\n          // Track all transitions\n          let transitions = 0;\n          const totalTransitions = 2; // opacity and transform\n\n          toast.addEventListener('transitionend', (e) => {\n              transitions++;\n              // Only remove the toast after all transitions complete\n              if (transitions >= totalTransitions) {\n                  // Set height to 0 and opacity to 0 before removing\n                  // This allows other toasts to smoothly animate to their new positions\n                  toast.style.height = `${toast.offsetHeight}px`;\n                  toast.offsetHeight; // Force reflow\n                  toast.style.height = '0';\n                  toast.style.margin = '0';\n                  toast.style.padding = '0';\n\n                  // Finally remove the element after the collapse animation\n                  toast.addEventListener('transitionend', () => {\n                      toast.remove();\n                  }, { once: true });\n              }\n          });\n      };\n\n      // Add toast directive\n      Alpine.directive('toast', (el, { modifiers, expression }, { evaluate }) => {\n          // Parse options from modifiers\n          const options = {\n              type: modifiers.includes('brand') ? 'brand' :\n                  modifiers.includes('positive') ? 'positive' :\n                  modifiers.includes('negative') ? 'negative' :\n                  modifiers.includes('accent') ? 'accent' : '',\n              dismissible: modifiers.includes('dismiss'),\n              fixed: modifiers.includes('fixed')\n          };\n\n          // Find duration modifier (any number)\n          const durationModifier = modifiers.find(mod => !isNaN(mod));\n          if (durationModifier) {\n              options.duration = Number(durationModifier);\n          } else {\n              options.duration = modifiers.includes('long') ? TOAST_DURATION * 2 : TOAST_DURATION;\n          }\n\n          // Handle both static and dynamic expressions\n          let message;\n          try {\n              // Check if expression starts with $x (data sources)\n              if (expression.startsWith('$x.')) {\n                  // Use evaluate for $x expressions to access collections\n                  message = evaluate(expression);\n              } else if (expression.includes('+') || expression.includes('`') || expression.includes('${')) {\n                  // Try to evaluate as a dynamic expression\n                  message = evaluate(expression);\n              } else {\n                  // Use as static string\n                  message = expression;\n              }\n          } catch (e) {\n              // If evaluation fails, use the expression as a static string\n              message = expression;\n          }\n\n          // Store the toast options on the element\n          el._toastOptions = { message, options };\n\n          // Add click handler that works with other handlers\n          const originalClick = el.onclick;\n          el.onclick = (e) => {\n              // Call original click handler if it exists\n              if (originalClick) {\n                  originalClick.call(el, e);\n              }\n              // Show toast after original handler\n              showToast(message, options);\n          };\n      });\n\n      // Add toast magic to Alpine\n      Alpine.magic('toast', () => {\n          // Create the base toast function\n          const toast = (message, options = {}) => {\n              showToast(message, { ...options, type: '' });\n          };\n\n          // Add type methods\n          toast.brand = (message, options = {}) => {\n              showToast(message, { ...options, type: 'brand' });\n          };\n\n          toast.accent = (message, options = {}) => {\n              showToast(message, { ...options, type: 'accent' });\n          };\n\n          toast.positive = (message, options = {}) => {\n              showToast(message, { ...options, type: 'positive' });\n          };\n\n          toast.negative = (message, options = {}) => {\n              showToast(message, { ...options, type: 'negative' });\n          };\n\n          // Add dismiss variants\n          toast.dismiss = (message, options = {}) => {\n              showToast(message, { ...options, type: '', dismissible: true });\n          };\n\n          toast.brand.dismiss = (message, options = {}) => {\n              showToast(message, { ...options, type: 'brand', dismissible: true });\n          };\n\n          toast.accent.dismiss = (message, options = {}) => {\n              showToast(message, { ...options, type: 'accent', dismissible: true });\n          };\n\n          toast.positive.dismiss = (message, options = {}) => {\n              showToast(message, { ...options, type: 'positive', dismissible: true });\n          };\n\n          toast.negative.dismiss = (message, options = {}) => {\n              showToast(message, { ...options, type: 'negative', dismissible: true });\n          };\n\n          // Add fixed variants\n          toast.fixed = (message, options = {}) => {\n              showToast(message, { ...options, type: '', fixed: true });\n          };\n\n          toast.brand.fixed = (message, options = {}) => {\n              showToast(message, { ...options, type: 'brand', fixed: true });\n          };\n\n          toast.accent.fixed = (message, options = {}) => {\n              showToast(message, { ...options, type: 'accent', fixed: true });\n          };\n\n          toast.positive.fixed = (message, options = {}) => {\n              showToast(message, { ...options, type: 'positive', fixed: true });\n          };\n\n          toast.negative.fixed = (message, options = {}) => {\n              showToast(message, { ...options, type: 'negative', fixed: true });\n          };\n\n          return toast;\n      });\n  }\n\n  // Handle both DOMContentLoaded and alpine:init\n  if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', () => {\n          if (window.Alpine) initializeToastPlugin();\n      });\n  }\n\n  document.addEventListener('alpine:init', initializeToastPlugin);\n\n  var indux_tooltips = {};\n\n  /* Indux Tooltips */\n\n  var hasRequiredIndux_tooltips;\n\n  function requireIndux_tooltips () {\n  \tif (hasRequiredIndux_tooltips) return indux_tooltips;\n  \thasRequiredIndux_tooltips = 1;\n  \t// Get tooltip hover delay from CSS variable\n  \tfunction getTooltipHoverDelay(element) {\n  \t    // Try to get the value from the element first, then from document root\n  \t    let computedStyle = getComputedStyle(element);\n  \t    let delayValue = computedStyle.getPropertyValue('--tooltip-hover-delay').trim();\n  \t    \n  \t    if (!delayValue) {\n  \t        // If not found on element, check document root\n  \t        computedStyle = getComputedStyle(document.documentElement);\n  \t        delayValue = computedStyle.getPropertyValue('--tooltip-hover-delay').trim();\n  \t    }\n  \t    \n  \t    if (!delayValue) {\n  \t        return 500; // Default to 500ms if not set\n  \t    }\n  \t    \n  \t    // Parse CSS time value (supports various time units)\n  \t    const timeValue = parseFloat(delayValue);\n  \t    \n  \t    if (delayValue.endsWith('s')) {\n  \t        return timeValue * 1000; // Convert seconds to milliseconds\n  \t    } else if (delayValue.endsWith('ms')) {\n  \t        return timeValue; // Already in milliseconds\n  \t    } else if (delayValue.endsWith('m')) {\n  \t        return timeValue * 60 * 1000; // Convert minutes to milliseconds\n  \t    } else if (delayValue.endsWith('h')) {\n  \t        return timeValue * 60 * 60 * 1000; // Convert hours to milliseconds\n  \t    } else if (delayValue.endsWith('min')) {\n  \t        return timeValue * 60 * 1000; // Convert minutes to milliseconds\n  \t    } else if (delayValue.endsWith('sec')) {\n  \t        return timeValue * 1000; // Convert seconds to milliseconds\n  \t    } else if (delayValue.endsWith('second')) {\n  \t        return timeValue * 1000; // Convert seconds to milliseconds\n  \t    } else if (delayValue.endsWith('minute')) {\n  \t        return timeValue * 60 * 1000; // Convert minutes to milliseconds\n  \t    } else if (delayValue.endsWith('hour')) {\n  \t        return timeValue * 60 * 60 * 1000; // Convert hours to milliseconds\n  \t    } else {\n  \t        // If no unit, assume milliseconds (backward compatibility)\n  \t        return timeValue;\n  \t    }\n  \t}\n\n  \tfunction initializeTooltipPlugin() {\n\n  \t    Alpine.directive('tooltip', (el, { modifiers, expression }, { effect, evaluateLater }) => {\n\n  \t        let getTooltipContent;\n\n  \t        // If it starts with $x, handle content loading\n  \t        if (expression.startsWith('$x.')) {\n  \t            const path = expression.substring(3); // Remove '$x.'\n  \t            const [contentType, ...pathParts] = path.split('.');\n\n  \t            // Create evaluator that uses the $x magic method\n  \t            getTooltipContent = evaluateLater(expression);\n\n  \t            // Ensure content is loaded before showing tooltip\n  \t            effect(() => {\n  \t                const store = Alpine.store('collections');\n  \t                if (store && typeof store.loadCollection === 'function' && !store[contentType]) {\n  \t                    store.loadCollection(contentType);\n  \t                }\n  \t            });\n  \t        } else {\n  \t            // Check if expression contains HTML tags (indicating rich content)\n  \t            if (expression.includes('<') && expression.includes('>')) {\n  \t                // Treat as literal HTML string - escape any quotes to prevent syntax errors\n  \t                const escapedExpression = expression.replace(/'/g, \"\\\\'\");\n  \t                getTooltipContent = evaluateLater(`'${escapedExpression}'`);\n  \t            } else if (expression.includes('+') || expression.includes('`') || expression.includes('${')) {\n  \t                // Try to evaluate as a dynamic expression\n  \t                getTooltipContent = evaluateLater(expression);\n  \t            } else {\n  \t                // Use as static string\n  \t                getTooltipContent = evaluateLater(`'${expression}'`);\n  \t            }\n  \t        }\n\n  \t        effect(() => {\n  \t            // Generate a unique ID for the tooltip\n  \t            const tooltipCode = Math.random().toString(36).substr(2, 9);\n  \t            const tooltipId = `tooltip-${tooltipCode}`;\n\n  \t            // Store the original popovertarget if it exists, or check for x-dropdown\n  \t            let originalTarget = el.getAttribute('popovertarget');\n  \t            \n  \t            // If no popovertarget but has x-dropdown, that will become the target\n  \t            if (!originalTarget && el.hasAttribute('x-dropdown')) {\n  \t                originalTarget = el.getAttribute('x-dropdown');\n  \t            }\n\n  \t            // Create the tooltip element\n  \t            const tooltip = document.createElement('div');\n  \t            tooltip.setAttribute('popover', '');\n  \t            tooltip.setAttribute('id', tooltipId);\n  \t            tooltip.setAttribute('class', 'tooltip');\n\n  \t            // Store the original anchor name if it exists\n  \t            el.style.getPropertyValue('anchor-name');\n  \t            const tooltipAnchor = `--tooltip-${tooltipCode}`;\n\n  \t            // Set tooltip content\n  \t            getTooltipContent(content => {\n  \t                tooltip.innerHTML = content || '';\n  \t            });\n\n  \t            // Handle positioning modifiers - preserve exact order and build class names like dropdown CSS\n  \t            const validPositions = ['top', 'bottom', 'start', 'end', 'center', 'corner'];\n  \t            const positions = modifiers.filter(mod => validPositions.includes(mod));\n  \t            \n  \t            if (positions.length > 0) {\n  \t                // Build class name by joining modifiers with dashes (preserves original order)\n  \t                const positionClass = positions.join('-');\n  \t                tooltip.classList.add(positionClass);\n  \t            }\n\n  \t            // Add the tooltip to the document\n  \t            document.body.appendChild(tooltip);\n\n  \t            // State variables for managing tooltip behavior\n  \t            let showTimeout;\n  \t            let isMouseDown = false;\n\n  \t            el.addEventListener('mouseenter', () => {\n  \t                if (!isMouseDown) {\n  \t                    const hoverDelay = getTooltipHoverDelay(el);\n  \t                    showTimeout = setTimeout(() => {\n  \t                        // Check if user is actively interacting with other popovers\n  \t                        const hasOpenPopover = originalTarget && document.getElementById(originalTarget)?.matches(':popover-open');\n  \t                        \n  \t                        if (!isMouseDown && !tooltip.matches(':popover-open') && !hasOpenPopover) {\n  \t                            // Only manage anchor-name if element has other popover functionality\n  \t                            if (originalTarget) {\n  \t                                // Store current anchor name (dropdown may have set it by now)\n  \t                                const currentAnchorName = el.style.getPropertyValue('anchor-name');\n  \t                                if (currentAnchorName) {\n  \t                                    el._originalAnchorName = currentAnchorName;\n  \t                                }\n  \t                            }\n  \t                            \n  \t                            el.style.setProperty('anchor-name', tooltipAnchor);\n  \t                            tooltip.style.setProperty('position-anchor', tooltipAnchor);\n\n  \t                            // Show tooltip without changing popovertarget\n  \t                            tooltip.showPopover();\n  \t                        }\n  \t                    }, hoverDelay);\n  \t                }\n  \t            });\n\n  \t            el.addEventListener('mouseleave', () => {\n  \t                clearTimeout(showTimeout);\n  \t                if (tooltip.matches(':popover-open')) {\n  \t                    tooltip.hidePopover();\n  \t                    // Only restore anchor name if element has other popover functionality\n  \t                    if (originalTarget) {\n  \t                        restoreOriginalAnchor();\n  \t                    }\n  \t                }\n  \t            });\n\n  \t            el.addEventListener('mousedown', () => {\n  \t                isMouseDown = true;\n  \t                clearTimeout(showTimeout);\n  \t                if (tooltip.matches(':popover-open')) {\n  \t                    tooltip.hidePopover();\n  \t                }\n  \t                // Only restore anchor name if element has other popover functionality\n  \t                if (originalTarget) {\n  \t                    restoreOriginalAnchor();\n  \t                }\n  \t            });\n\n  \t            el.addEventListener('mouseup', () => {\n  \t                isMouseDown = false;\n  \t            });\n\n  \t            // Handle click events - hide tooltip but delay anchor restoration\n  \t            el.addEventListener('click', (e) => {\n  \t                clearTimeout(showTimeout);\n  \t                \n  \t                // Hide tooltip if open\n  \t                if (tooltip.matches(':popover-open')) {\n  \t                    tooltip.hidePopover();\n  \t                }\n  \t                \n  \t                // Don't restore anchor immediately - let other click handlers run first\n  \t                // This allows dropdown plugin to set its own anchor-name\n  \t                setTimeout(() => {\n  \t                    // Only restore anchor if no popover opened from this click\n  \t                    if (originalTarget) {\n  \t                        const targetPopover = document.getElementById(originalTarget);\n  \t                        const isPopoverOpen = targetPopover?.matches(':popover-open');\n  \t                        if (!targetPopover || !isPopoverOpen) {\n  \t                            restoreOriginalAnchor();\n  \t                        }\n  \t                        // If popover is open, keep current anchor (don't restore)\n  \t                    } else {\n  \t                        restoreOriginalAnchor();\n  \t                    }\n  \t                }, 100); // Give other plugins time to set their anchors\n  \t            });\n\n  \t            // Helper function to restore original anchor\n  \t            function restoreOriginalAnchor() {\n  \t                if (el._originalAnchorName) {\n  \t                    // Restore the original anchor name\n  \t                    el.style.setProperty('anchor-name', el._originalAnchorName);\n  \t                } else {\n  \t                    // Remove the tooltip anchor name so other plugins can set their own\n  \t                    el.style.removeProperty('anchor-name');\n  \t                }\n  \t            }\n\n  \t            // Listen for other popovers opening and close tooltip if needed\n  \t            const handlePopoverOpen = (event) => {\n  \t                // If another popover opens and it's not our tooltip, close our tooltip\n  \t                if (event.target !== tooltip && tooltip.matches(':popover-open')) {\n  \t                    tooltip.hidePopover();\n  \t                    // Only restore anchor name if element has other popover functionality\n  \t                    if (originalTarget) {\n  \t                        restoreOriginalAnchor();\n  \t                    }\n  \t                }\n  \t            };\n\n  \t            // Add global listener for popover events (only if not already added)\n  \t            if (!el._tooltipPopoverListener) {\n  \t                document.addEventListener('toggle', handlePopoverOpen);\n  \t                el._tooltipPopoverListener = handlePopoverOpen;\n  \t            }\n\n  \t            // Cleanup function for when element is removed\n  \t            const cleanup = () => {\n  \t                if (el._tooltipPopoverListener) {\n  \t                    document.removeEventListener('toggle', el._tooltipPopoverListener);\n  \t                    delete el._tooltipPopoverListener;\n  \t                }\n  \t                if (tooltip && tooltip.parentElement) {\n  \t                    tooltip.remove();\n  \t                }\n  \t            };\n\n  \t            // Store cleanup function for manual cleanup if needed\n  \t            el._tooltipCleanup = cleanup;\n  \t        });\n  \t    });\n  \t}\n\n  \t// Handle both DOMContentLoaded and alpine:init\n  \tif (document.readyState === 'loading') {\n  \t    document.addEventListener('DOMContentLoaded', () => {\n  \t        if (window.Alpine) initializeTooltipPlugin();\n  \t    });\n  \t}\n\n  \tdocument.addEventListener('alpine:init', initializeTooltipPlugin);\n  \treturn indux_tooltips;\n  }\n\n  requireIndux_tooltips();\n\n  /* Indux URL Parameters */\n\n  function initializeUrlParametersPlugin() {\n      // Initialize empty parameters store\n      Alpine.store('urlParams', {\n          current: {},\n          _initialized: false\n      });\n\n      // Cache for debounced updates\n      const updateTimeouts = new Map();\n      const DEBOUNCE_DELAY = 300;\n\n      // Helper to parse query string\n      function parseQueryString(queryString) {\n          const params = new URLSearchParams(queryString);\n          const result = {};\n\n          for (const [key, value] of params.entries()) {\n              // Handle array values (comma-separated)\n              if (value.includes(',')) {\n                  result[key] = value.split(',').filter(Boolean);\n              } else {\n                  result[key] = value;\n              }\n          }\n\n          return result;\n      }\n\n      // Helper to stringify query object\n      function stringifyQueryObject(query) {\n          const params = new URLSearchParams();\n\n          for (const [key, value] of Object.entries(query)) {\n              if (Array.isArray(value)) {\n                  params.set(key, value.filter(Boolean).join(','));\n              } else if (value != null && value !== '') {\n                  params.set(key, value);\n              }\n          }\n\n          return params.toString();\n      }\n\n      // Helper to ensure value is in array format\n      function ensureArray(value) {\n          if (Array.isArray(value)) return value;\n          if (value == null || value === '') return [];\n          return [value];\n      }\n\n      // Update URL with new query parameters\n      async function updateURL(updates, action = 'set') {\n\n          const url = new URL(window.location.href);\n          const currentParams = parseQueryString(url.search);\n\n          // Apply updates based on action\n          for (const [key, value] of Object.entries(updates)) {\n              switch (action) {\n                  case 'add':\n                      const currentAdd = ensureArray(currentParams[key]);\n                      const newValues = ensureArray(value);\n                      currentParams[key] = [...new Set([...currentAdd, ...newValues])];\n                      break;\n\n                  case 'remove':\n                      const currentRemove = ensureArray(currentParams[key]);\n                      const removeValue = ensureArray(value)[0]; // Take first value to remove\n                      currentParams[key] = currentRemove.filter(v => v !== removeValue);\n                      if (currentParams[key].length === 0) {\n                          delete currentParams[key];\n                      }\n                      break;\n\n                  case 'set':\n                  default:\n                      if (value == null || value === '') {\n                          delete currentParams[key];\n                      } else {\n                          currentParams[key] = value;\n                      }\n                      break;\n              }\n          }\n\n          // Update URL\n          const newQueryString = stringifyQueryObject(currentParams);\n          url.search = newQueryString ? `?${newQueryString}` : '';\n          console.debug('[Indux] New URL:', url.toString());\n\n          // Update URL using pushState to ensure changes are visible\n          window.history.pushState({}, '', url.toString());\n\n          // Update store\n          Alpine.store('urlParams', {\n              current: currentParams,\n              _initialized: true\n          });\n\n          // Dispatch event\n          document.dispatchEvent(new CustomEvent('url-updated', {\n              detail: { updates, action }\n          }));\n\n          return currentParams;\n      }\n\n      // Add $url magic method\n      Alpine.magic('url', () => {\n          const store = Alpine.store('urlParams');\n\n          return new Proxy({}, {\n              get(target, prop) {\n                  // Handle special keys\n                  if (prop === Symbol.iterator || prop === 'then' || prop === 'catch' || prop === 'finally') {\n                      return undefined;\n                  }\n\n                  // Get current value\n                  const value = store.current[prop];\n\n                  // Return a proxy for the value\n                  return new Proxy({}, {\n                      get(target, key) {\n                          if (key === 'value') {\n                              // Ensure arrays are returned as arrays, not strings\n                              if (Array.isArray(value)) return value;\n                              if (typeof value === 'string' && value.includes(',')) {\n                                  return value.split(',').filter(Boolean);\n                              }\n                              // Return undefined/null values as they are (for proper falsy checks)\n                              return value;\n                          }\n                          if (key === 'set') return (newValue) => {\n                              clearTimeout(updateTimeouts.get(prop));\n                              const timeout = setTimeout(() => {\n                                  updateURL({ [prop]: newValue }, 'set');\n                              }, DEBOUNCE_DELAY);\n                              updateTimeouts.set(prop, timeout);\n                          };\n                          if (key === 'add') return (newValue) => {\n                              clearTimeout(updateTimeouts.get(prop));\n                              const timeout = setTimeout(() => {\n                                  updateURL({ [prop]: newValue }, 'add');\n                              }, DEBOUNCE_DELAY);\n                              updateTimeouts.set(prop, timeout);\n                          };\n                          if (key === 'remove') return (value) => {\n                              clearTimeout(updateTimeouts.get(prop));\n                              const timeout = setTimeout(() => {\n                                  updateURL({ [prop]: value }, 'remove');\n                              }, DEBOUNCE_DELAY);\n                              updateTimeouts.set(prop, timeout);\n                          };\n                          if (key === 'clear') return () => {\n                              clearTimeout(updateTimeouts.get(prop));\n                              const timeout = setTimeout(() => {\n                                  updateURL({ [prop]: null }, 'set');\n                              }, DEBOUNCE_DELAY);\n                              updateTimeouts.set(prop, timeout);\n                          };\n                          return undefined;\n                      },\n                      set(target, key, newValue) {\n                          if (key === 'value') {\n                              // Make value settable for x-model compatibility\n                              clearTimeout(updateTimeouts.get(prop));\n                              const timeout = setTimeout(() => {\n                                  updateURL({ [prop]: newValue }, 'set');\n                              }, DEBOUNCE_DELAY);\n                              updateTimeouts.set(prop, timeout);\n                              return true;\n                          }\n                          return false;\n                      }\n                  });\n              }\n          });\n      });\n\n      // Initialize with current URL parameters\n      const initialParams = parseQueryString(window.location.search);\n      Alpine.store('urlParams', {\n          current: initialParams,\n          _initialized: true\n      });\n\n      // Listen for popstate events\n      window.addEventListener('popstate', () => {\n          const params = parseQueryString(window.location.search);\n          Alpine.store('urlParams', {\n              current: params,\n              _initialized: true\n          });\n      });\n  }\n\n  // Handle both DOMContentLoaded and alpine:init\n  if (document.readyState === 'loading') {\n      document.addEventListener('DOMContentLoaded', () => {\n          if (window.Alpine) initializeUrlParametersPlugin();\n      });\n  }\n\n  document.addEventListener('alpine:init', initializeUrlParametersPlugin);\n\n  /* Alpine JS v3.15.0 */\n\n  (()=>{var nt=false,it=false,W=[],ot=-1;function Ut(e){Rn(e);}function Rn(e){W.includes(e)||W.push(e),Mn();}function Wt(e){let t=W.indexOf(e);t!==-1&&t>ot&&W.splice(t,1);}function Mn(){!it&&!nt&&(nt=true,queueMicrotask(Nn));}function Nn(){nt=false,it=true;for(let e=0;e<W.length;e++)W[e](),ot=e;W.length=0,ot=-1,it=false;}var T,N,$,at,st=true;function Gt(e){st=false,e(),st=true;}function Jt(e){T=e.reactive,$=e.release,N=t=>e.effect(t,{scheduler:r=>{st?Ut(r):r();}}),at=e.raw;}function ct(e){N=e;}function Yt(e){let t=()=>{};return [n=>{let i=N(n);return e._x_effects||(e._x_effects=new Set,e._x_runEffects=()=>{e._x_effects.forEach(o=>o());}),e._x_effects.add(i),t=()=>{i!==void 0&&(e._x_effects.delete(i),$(i));},i},()=>{t();}]}function ve(e,t){let r=true,n,i=N(()=>{let o=e();JSON.stringify(o),r?n=o:queueMicrotask(()=>{t(o,n),n=o;}),r=false;});return ()=>$(i)}var Xt=[],Zt=[],Qt=[];function er(e){Qt.push(e);}function te(e,t){typeof t==\"function\"?(e._x_cleanups||(e._x_cleanups=[]),e._x_cleanups.push(t)):(t=e,Zt.push(t));}function Ae(e){Xt.push(e);}function Oe(e,t,r){e._x_attributeCleanups||(e._x_attributeCleanups={}),e._x_attributeCleanups[t]||(e._x_attributeCleanups[t]=[]),e._x_attributeCleanups[t].push(r);}function lt(e,t){e._x_attributeCleanups&&Object.entries(e._x_attributeCleanups).forEach(([r,n])=>{(t===void 0||t.includes(r))&&(n.forEach(i=>i()),delete e._x_attributeCleanups[r]);});}function tr(e){for(e._x_effects?.forEach(Wt);e._x_cleanups?.length;)e._x_cleanups.pop()();}var ut=new MutationObserver(mt),ft=false;function ue(){ut.observe(document,{subtree:true,childList:true,attributes:true,attributeOldValue:true}),ft=true;}function dt(){kn(),ut.disconnect(),ft=false;}var le=[];function kn(){let e=ut.takeRecords();le.push(()=>e.length>0&&mt(e));let t=le.length;queueMicrotask(()=>{if(le.length===t)for(;le.length>0;)le.shift()();});}function m(e){if(!ft)return e();dt();let t=e();return ue(),t}var pt=false,Se=[];function rr(){pt=true;}function nr(){pt=false,mt(Se),Se=[];}function mt(e){if(pt){Se=Se.concat(e);return}let t=[],r=new Set,n=new Map,i=new Map;for(let o=0;o<e.length;o++)if(!e[o].target._x_ignoreMutationObserver&&(e[o].type===\"childList\"&&(e[o].removedNodes.forEach(s=>{s.nodeType===1&&s._x_marker&&r.add(s);}),e[o].addedNodes.forEach(s=>{if(s.nodeType===1){if(r.has(s)){r.delete(s);return}s._x_marker||t.push(s);}})),e[o].type===\"attributes\")){let s=e[o].target,a=e[o].attributeName,c=e[o].oldValue,l=()=>{n.has(s)||n.set(s,[]),n.get(s).push({name:a,value:s.getAttribute(a)});},u=()=>{i.has(s)||i.set(s,[]),i.get(s).push(a);};s.hasAttribute(a)&&c===null?l():s.hasAttribute(a)?(u(),l()):u();}i.forEach((o,s)=>{lt(s,o);}),n.forEach((o,s)=>{Xt.forEach(a=>a(s,o));});for(let o of r)t.some(s=>s.contains(o))||Zt.forEach(s=>s(o));for(let o of t)o.isConnected&&Qt.forEach(s=>s(o));t=null,r=null,n=null,i=null;}function Ce(e){return z(B(e))}function k(e,t,r){return e._x_dataStack=[t,...B(r||e)],()=>{e._x_dataStack=e._x_dataStack.filter(n=>n!==t);}}function B(e){return e._x_dataStack?e._x_dataStack:typeof ShadowRoot==\"function\"&&e instanceof ShadowRoot?B(e.host):e.parentNode?B(e.parentNode):[]}function z(e){return new Proxy({objects:e},Dn)}var Dn={ownKeys({objects:e}){return Array.from(new Set(e.flatMap(t=>Object.keys(t))))},has({objects:e},t){return t==Symbol.unscopables?false:e.some(r=>Object.prototype.hasOwnProperty.call(r,t)||Reflect.has(r,t))},get({objects:e},t,r){return t==\"toJSON\"?Pn:Reflect.get(e.find(n=>Reflect.has(n,t))||{},t,r)},set({objects:e},t,r,n){let i=e.find(s=>Object.prototype.hasOwnProperty.call(s,t))||e[e.length-1],o=Object.getOwnPropertyDescriptor(i,t);return o?.set&&o?.get?o.set.call(n,r)||true:Reflect.set(i,t,r)}};function Pn(){return Reflect.ownKeys(this).reduce((t,r)=>(t[r]=Reflect.get(this,r),t),{})}function Te(e){let t=n=>typeof n==\"object\"&&!Array.isArray(n)&&n!==null,r=(n,i=\"\")=>{Object.entries(Object.getOwnPropertyDescriptors(n)).forEach(([o,{value:s,enumerable:a}])=>{if(a===false||s===void 0||typeof s==\"object\"&&s!==null&&s.__v_skip)return;let c=i===\"\"?o:`${i}.${o}`;typeof s==\"object\"&&s!==null&&s._x_interceptor?n[o]=s.initialize(e,c,o):t(s)&&s!==n&&!(s instanceof Element)&&r(s,c);});};return r(e)}function Re(e,t=()=>{}){let r={initialValue:void 0,_x_interceptor:true,initialize(n,i,o){return e(this.initialValue,()=>In(n,i),s=>ht(n,i,s),i,o)}};return t(r),n=>{if(typeof n==\"object\"&&n!==null&&n._x_interceptor){let i=r.initialize.bind(r);r.initialize=(o,s,a)=>{let c=n.initialize(o,s,a);return r.initialValue=c,i(o,s,a)};}else r.initialValue=n;return r}}function In(e,t){return t.split(\".\").reduce((r,n)=>r[n],e)}function ht(e,t,r){if(typeof t==\"string\"&&(t=t.split(\".\")),t.length===1)e[t[0]]=r;else {if(t.length===0)throw error;return e[t[0]]||(e[t[0]]={}),ht(e[t[0]],t.slice(1),r)}}var ir={};function y(e,t){ir[e]=t;}function fe(e,t){let r=Ln(t);return Object.entries(ir).forEach(([n,i])=>{Object.defineProperty(e,`$${n}`,{get(){return i(t,r)},enumerable:false});}),e}function Ln(e){let[t,r]=_t(e),n={interceptor:Re,...t};return te(e,r),n}function or(e,t,r,...n){try{return r(...n)}catch(i){re(i,e,t);}}function re(e,t,r=void 0){e=Object.assign(e??{message:\"No error message given.\"},{el:t,expression:r}),console.warn(`Alpine Expression Error: ${e.message}\n\n${r?'Expression: \"'+r+`\"\n\n`:\"\"}`,t),setTimeout(()=>{throw e},0);}var Me=true;function ke(e){let t=Me;Me=false;let r=e();return Me=t,r}function R(e,t,r={}){let n;return x(e,t)(i=>n=i,r),n}function x(...e){return sr(...e)}var sr=xt;function ar(e){sr=e;}function xt(e,t){let r={};fe(r,e);let n=[r,...B(e)],i=typeof t==\"function\"?$n(n,t):Fn(n,t,e);return or.bind(null,e,t,i)}function $n(e,t){return (r=()=>{},{scope:n={},params:i=[],context:o}={})=>{let s=t.apply(z([n,...e]),i);Ne(r,s);}}var gt={};function jn(e,t){if(gt[e])return gt[e];let r=Object.getPrototypeOf(async function(){}).constructor,n=/^[\\n\\s]*if.*\\(.*\\)/.test(e.trim())||/^(let|const)\\s/.test(e.trim())?`(async()=>{ ${e} })()`:e,o=(()=>{try{let s=new r([\"__self\",\"scope\"],`with (scope) { __self.result = ${n} }; __self.finished = true; return __self.result;`);return Object.defineProperty(s,\"name\",{value:`[Alpine] ${e}`}),s}catch(s){return re(s,t,e),Promise.resolve()}})();return gt[e]=o,o}function Fn(e,t,r){let n=jn(t,r);return (i=()=>{},{scope:o={},params:s=[],context:a}={})=>{n.result=void 0,n.finished=false;let c=z([o,...e]);if(typeof n==\"function\"){let l=n.call(a,n,c).catch(u=>re(u,r,t));n.finished?(Ne(i,n.result,c,s,r),n.result=void 0):l.then(u=>{Ne(i,u,c,s,r);}).catch(u=>re(u,r,t)).finally(()=>n.result=void 0);}}}function Ne(e,t,r,n,i){if(Me&&typeof t==\"function\"){let o=t.apply(r,n);o instanceof Promise?o.then(s=>Ne(e,s,r,n)).catch(s=>re(s,i,t)):e(o);}else typeof t==\"object\"&&t instanceof Promise?t.then(o=>e(o)):e(t);}var wt=\"x-\";function C(e=\"\"){return wt+e}function cr(e){wt=e;}var De={};function d(e,t){return De[e]=t,{before(r){if(!De[r]){console.warn(String.raw`Cannot find directive \\`${r}\\`. \\`${e}\\` will use the default order of execution`);return}let n=G.indexOf(r);G.splice(n>=0?n:G.indexOf(\"DEFAULT\"),0,e);}}}function lr(e){return Object.keys(De).includes(e)}function pe(e,t,r){if(t=Array.from(t),e._x_virtualDirectives){let o=Object.entries(e._x_virtualDirectives).map(([a,c])=>({name:a,value:c})),s=Et(o);o=o.map(a=>s.find(c=>c.name===a.name)?{name:`x-bind:${a.name}`,value:`\"${a.value}\"`}:a),t=t.concat(o);}let n={};return t.map(dr((o,s)=>n[o]=s)).filter(mr).map(zn(n,r)).sort(Kn).map(o=>Bn(e,o))}function Et(e){return Array.from(e).map(dr()).filter(t=>!mr(t))}var yt=false,de=new Map,ur=Symbol();function fr(e){yt=true;let t=Symbol();ur=t,de.set(t,[]);let r=()=>{for(;de.get(t).length;)de.get(t).shift()();de.delete(t);},n=()=>{yt=false,r();};e(r),n();}function _t(e){let t=[],r=a=>t.push(a),[n,i]=Yt(e);return t.push(i),[{Alpine:K,effect:n,cleanup:r,evaluateLater:x.bind(x,e),evaluate:R.bind(R,e)},()=>t.forEach(a=>a())]}function Bn(e,t){let r=()=>{},n=De[t.type]||r,[i,o]=_t(e);Oe(e,t.original,o);let s=()=>{e._x_ignore||e._x_ignoreSelf||(n.inline&&n.inline(e,t,i),n=n.bind(n,e,t,i),yt?de.get(ur).push(n):n());};return s.runCleanups=o,s}var Pe=(e,t)=>({name:r,value:n})=>(r.startsWith(e)&&(r=r.replace(e,t)),{name:r,value:n}),Ie=e=>e;function dr(e=()=>{}){return ({name:t,value:r})=>{let{name:n,value:i}=pr.reduce((o,s)=>s(o),{name:t,value:r});return n!==t&&e(n,t),{name:n,value:i}}}var pr=[];function ne(e){pr.push(e);}function mr({name:e}){return hr().test(e)}var hr=()=>new RegExp(`^${wt}([^:^.]+)\\\\b`);function zn(e,t){return ({name:r,value:n})=>{let i=r.match(hr()),o=r.match(/:([a-zA-Z0-9\\-_:]+)/),s=r.match(/\\.[^.\\]]+(?=[^\\]]*$)/g)||[],a=t||e[r]||r;return {type:i?i[1]:null,value:o?o[1]:null,modifiers:s.map(c=>c.replace(\".\",\"\")),expression:n,original:a}}}var bt=\"DEFAULT\",G=[\"ignore\",\"ref\",\"data\",\"id\",\"anchor\",\"bind\",\"init\",\"for\",\"model\",\"modelable\",\"transition\",\"show\",\"if\",bt,\"teleport\"];function Kn(e,t){let r=G.indexOf(e.type)===-1?bt:e.type,n=G.indexOf(t.type)===-1?bt:t.type;return G.indexOf(r)-G.indexOf(n)}function J(e,t,r={}){e.dispatchEvent(new CustomEvent(t,{detail:r,bubbles:true,composed:true,cancelable:true}));}function D(e,t){if(typeof ShadowRoot==\"function\"&&e instanceof ShadowRoot){Array.from(e.children).forEach(i=>D(i,t));return}let r=false;if(t(e,()=>r=true),r)return;let n=e.firstElementChild;for(;n;)D(n,t),n=n.nextElementSibling;}function E(e,...t){console.warn(`Alpine Warning: ${e}`,...t);}var _r=false;function gr(){_r&&E(\"Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems.\"),_r=true,document.body||E(\"Unable to initialize. Trying to load Alpine before `<body>` is available. Did you forget to add `defer` in Alpine's `<script>` tag?\"),J(document,\"alpine:init\"),J(document,\"alpine:initializing\"),ue(),er(t=>S(t,D)),te(t=>P(t)),Ae((t,r)=>{pe(t,r).forEach(n=>n());});let e=t=>!Y(t.parentElement,true);Array.from(document.querySelectorAll(br().join(\",\"))).filter(e).forEach(t=>{S(t);}),J(document,\"alpine:initialized\"),setTimeout(()=>{Vn();});}var vt=[],xr=[];function yr(){return vt.map(e=>e())}function br(){return vt.concat(xr).map(e=>e())}function Le(e){vt.push(e);}function $e(e){xr.push(e);}function Y(e,t=false){return j(e,r=>{if((t?br():yr()).some(i=>r.matches(i)))return  true})}function j(e,t){if(e){if(t(e))return e;if(e._x_teleportBack&&(e=e._x_teleportBack),!!e.parentElement)return j(e.parentElement,t)}}function wr(e){return yr().some(t=>e.matches(t))}var Er=[];function vr(e){Er.push(e);}var Hn=1;function S(e,t=D,r=()=>{}){j(e,n=>n._x_ignore)||fr(()=>{t(e,(n,i)=>{n._x_marker||(r(n,i),Er.forEach(o=>o(n,i)),pe(n,n.attributes).forEach(o=>o()),n._x_ignore||(n._x_marker=Hn++),n._x_ignore&&i());});});}function P(e,t=D){t(e,r=>{tr(r),lt(r),delete r._x_marker;});}function Vn(){[[\"ui\",\"dialog\",[\"[x-dialog], [x-popover]\"]],[\"anchor\",\"anchor\",[\"[x-anchor]\"]],[\"sort\",\"sort\",[\"[x-sort]\"]]].forEach(([t,r,n])=>{lr(r)||n.some(i=>{if(document.querySelector(i))return E(`found \"${i}\", but missing ${t} plugin`),true});});}var St=[],At=false;function ie(e=()=>{}){return queueMicrotask(()=>{At||setTimeout(()=>{je();});}),new Promise(t=>{St.push(()=>{e(),t();});})}function je(){for(At=false;St.length;)St.shift()();}function Sr(){At=true;}function me(e,t){return Array.isArray(t)?Ar(e,t.join(\" \")):typeof t==\"object\"&&t!==null?qn(e,t):typeof t==\"function\"?me(e,t()):Ar(e,t)}function Ar(e,t){let n=o=>o.split(\" \").filter(s=>!e.classList.contains(s)).filter(Boolean),i=o=>(e.classList.add(...o),()=>{e.classList.remove(...o);});return t=t===true?t=\"\":t||\"\",i(n(t))}function qn(e,t){let r=a=>a.split(\" \").filter(Boolean),n=Object.entries(t).flatMap(([a,c])=>c?r(a):false).filter(Boolean),i=Object.entries(t).flatMap(([a,c])=>c?false:r(a)).filter(Boolean),o=[],s=[];return i.forEach(a=>{e.classList.contains(a)&&(e.classList.remove(a),s.push(a));}),n.forEach(a=>{e.classList.contains(a)||(e.classList.add(a),o.push(a));}),()=>{s.forEach(a=>e.classList.add(a)),o.forEach(a=>e.classList.remove(a));}}function X(e,t){return typeof t==\"object\"&&t!==null?Un(e,t):Wn(e,t)}function Un(e,t){let r={};return Object.entries(t).forEach(([n,i])=>{r[n]=e.style[n],n.startsWith(\"--\")||(n=Gn(n)),e.style.setProperty(n,i);}),setTimeout(()=>{e.style.length===0&&e.removeAttribute(\"style\");}),()=>{X(e,r);}}function Wn(e,t){let r=e.getAttribute(\"style\",t);return e.setAttribute(\"style\",t),()=>{e.setAttribute(\"style\",r||\"\");}}function Gn(e){return e.replace(/([a-z])([A-Z])/g,\"$1-$2\").toLowerCase()}function he(e,t=()=>{}){let r=false;return function(){r?t.apply(this,arguments):(r=true,e.apply(this,arguments));}}d(\"transition\",(e,{value:t,modifiers:r,expression:n},{evaluate:i})=>{typeof n==\"function\"&&(n=i(n)),n!==false&&(!n||typeof n==\"boolean\"?Yn(e,r,t):Jn(e,n,t));});function Jn(e,t,r){Or(e,me,\"\"),{enter:i=>{e._x_transition.enter.during=i;},\"enter-start\":i=>{e._x_transition.enter.start=i;},\"enter-end\":i=>{e._x_transition.enter.end=i;},leave:i=>{e._x_transition.leave.during=i;},\"leave-start\":i=>{e._x_transition.leave.start=i;},\"leave-end\":i=>{e._x_transition.leave.end=i;}}[r](t);}function Yn(e,t,r){Or(e,X);let n=!t.includes(\"in\")&&!t.includes(\"out\")&&!r,i=n||t.includes(\"in\")||[\"enter\"].includes(r),o=n||t.includes(\"out\")||[\"leave\"].includes(r);t.includes(\"in\")&&!n&&(t=t.filter((g,b)=>b<t.indexOf(\"out\"))),t.includes(\"out\")&&!n&&(t=t.filter((g,b)=>b>t.indexOf(\"out\")));let s=!t.includes(\"opacity\")&&!t.includes(\"scale\"),a=s||t.includes(\"opacity\"),c=s||t.includes(\"scale\"),l=a?0:1,u=c?_e(t,\"scale\",95)/100:1,p=_e(t,\"delay\",0)/1e3,h=_e(t,\"origin\",\"center\"),w=\"opacity, transform\",F=_e(t,\"duration\",150)/1e3,Ee=_e(t,\"duration\",75)/1e3,f=\"cubic-bezier(0.4, 0.0, 0.2, 1)\";i&&(e._x_transition.enter.during={transformOrigin:h,transitionDelay:`${p}s`,transitionProperty:w,transitionDuration:`${F}s`,transitionTimingFunction:f},e._x_transition.enter.start={opacity:l,transform:`scale(${u})`},e._x_transition.enter.end={opacity:1,transform:\"scale(1)\"}),o&&(e._x_transition.leave.during={transformOrigin:h,transitionDelay:`${p}s`,transitionProperty:w,transitionDuration:`${Ee}s`,transitionTimingFunction:f},e._x_transition.leave.start={opacity:1,transform:\"scale(1)\"},e._x_transition.leave.end={opacity:l,transform:`scale(${u})`});}function Or(e,t,r={}){e._x_transition||(e._x_transition={enter:{during:r,start:r,end:r},leave:{during:r,start:r,end:r},in(n=()=>{},i=()=>{}){Fe(e,t,{during:this.enter.during,start:this.enter.start,end:this.enter.end},n,i);},out(n=()=>{},i=()=>{}){Fe(e,t,{during:this.leave.during,start:this.leave.start,end:this.leave.end},n,i);}});}window.Element.prototype._x_toggleAndCascadeWithTransitions=function(e,t,r,n){let i=document.visibilityState===\"visible\"?requestAnimationFrame:setTimeout,o=()=>i(r);if(t){e._x_transition&&(e._x_transition.enter||e._x_transition.leave)?e._x_transition.enter&&(Object.entries(e._x_transition.enter.during).length||Object.entries(e._x_transition.enter.start).length||Object.entries(e._x_transition.enter.end).length)?e._x_transition.in(r):o():e._x_transition?e._x_transition.in(r):o();return}e._x_hidePromise=e._x_transition?new Promise((s,a)=>{e._x_transition.out(()=>{},()=>s(n)),e._x_transitioning&&e._x_transitioning.beforeCancel(()=>a({isFromCancelledTransition:true}));}):Promise.resolve(n),queueMicrotask(()=>{let s=Cr(e);s?(s._x_hideChildren||(s._x_hideChildren=[]),s._x_hideChildren.push(e)):i(()=>{let a=c=>{let l=Promise.all([c._x_hidePromise,...(c._x_hideChildren||[]).map(a)]).then(([u])=>u?.());return delete c._x_hidePromise,delete c._x_hideChildren,l};a(e).catch(c=>{if(!c.isFromCancelledTransition)throw c});});});};function Cr(e){let t=e.parentNode;if(t)return t._x_hidePromise?t:Cr(t)}function Fe(e,t,{during:r,start:n,end:i}={},o=()=>{},s=()=>{}){if(e._x_transitioning&&e._x_transitioning.cancel(),Object.keys(r).length===0&&Object.keys(n).length===0&&Object.keys(i).length===0){o(),s();return}let a,c,l;Xn(e,{start(){a=t(e,n);},during(){c=t(e,r);},before:o,end(){a(),l=t(e,i);},after:s,cleanup(){c(),l();}});}function Xn(e,t){let r,n,i,o=he(()=>{m(()=>{r=true,n||t.before(),i||(t.end(),je()),t.after(),e.isConnected&&t.cleanup(),delete e._x_transitioning;});});e._x_transitioning={beforeCancels:[],beforeCancel(s){this.beforeCancels.push(s);},cancel:he(function(){for(;this.beforeCancels.length;)this.beforeCancels.shift()();o();}),finish:o},m(()=>{t.start(),t.during();}),Sr(),requestAnimationFrame(()=>{if(r)return;let s=Number(getComputedStyle(e).transitionDuration.replace(/,.*/,\"\").replace(\"s\",\"\"))*1e3,a=Number(getComputedStyle(e).transitionDelay.replace(/,.*/,\"\").replace(\"s\",\"\"))*1e3;s===0&&(s=Number(getComputedStyle(e).animationDuration.replace(\"s\",\"\"))*1e3),m(()=>{t.before();}),n=true,requestAnimationFrame(()=>{r||(m(()=>{t.end();}),je(),setTimeout(e._x_transitioning.finish,s+a),i=true);});});}function _e(e,t,r){if(e.indexOf(t)===-1)return r;let n=e[e.indexOf(t)+1];if(!n||t===\"scale\"&&isNaN(n))return r;if(t===\"duration\"||t===\"delay\"){let i=n.match(/([0-9]+)ms/);if(i)return i[1]}return t===\"origin\"&&[\"top\",\"right\",\"left\",\"center\",\"bottom\"].includes(e[e.indexOf(t)+2])?[n,e[e.indexOf(t)+2]].join(\" \"):n}var I=false;function A(e,t=()=>{}){return (...r)=>I?t(...r):e(...r)}function Tr(e){return (...t)=>I&&e(...t)}var Rr=[];function H(e){Rr.push(e);}function Mr(e,t){Rr.forEach(r=>r(e,t)),I=true,kr(()=>{S(t,(r,n)=>{n(r,()=>{});});}),I=false;}var Be=false;function Nr(e,t){t._x_dataStack||(t._x_dataStack=e._x_dataStack),I=true,Be=true,kr(()=>{Zn(t);}),I=false,Be=false;}function Zn(e){let t=false;S(e,(n,i)=>{D(n,(o,s)=>{if(t&&wr(o))return s();t=true,i(o,s);});});}function kr(e){let t=N;ct((r,n)=>{let i=t(r);return $(i),()=>{}}),e(),ct(t);}function ge(e,t,r,n=[]){switch(e._x_bindings||(e._x_bindings=T({})),e._x_bindings[t]=r,t=n.includes(\"camel\")?si(t):t,t){case \"value\":Qn(e,r);break;case \"style\":ti(e,r);break;case \"class\":ei(e,r);break;case \"selected\":case \"checked\":ri(e,t,r);break;default:Pr(e,t,r);break}}function Qn(e,t){if(Ot(e))e.attributes.value===void 0&&(e.value=t),window.fromModel&&(typeof t==\"boolean\"?e.checked=xe(e.value)===t:e.checked=Dr(e.value,t));else if(ze(e))Number.isInteger(t)?e.value=t:!Array.isArray(t)&&typeof t!=\"boolean\"&&![null,void 0].includes(t)?e.value=String(t):Array.isArray(t)?e.checked=t.some(r=>Dr(r,e.value)):e.checked=!!t;else if(e.tagName===\"SELECT\")oi(e,t);else {if(e.value===t)return;e.value=t===void 0?\"\":t;}}function ei(e,t){e._x_undoAddedClasses&&e._x_undoAddedClasses(),e._x_undoAddedClasses=me(e,t);}function ti(e,t){e._x_undoAddedStyles&&e._x_undoAddedStyles(),e._x_undoAddedStyles=X(e,t);}function ri(e,t,r){Pr(e,t,r),ii(e,t,r);}function Pr(e,t,r){[null,void 0,false].includes(r)&&ci(t)?e.removeAttribute(t):(Ir(t)&&(r=t),ni(e,t,r));}function ni(e,t,r){e.getAttribute(t)!=r&&e.setAttribute(t,r);}function ii(e,t,r){e[t]!==r&&(e[t]=r);}function oi(e,t){let r=[].concat(t).map(n=>n+\"\");Array.from(e.options).forEach(n=>{n.selected=r.includes(n.value);});}function si(e){return e.toLowerCase().replace(/-(\\w)/g,(t,r)=>r.toUpperCase())}function Dr(e,t){return e==t}function xe(e){return [1,\"1\",\"true\",\"on\",\"yes\",true].includes(e)?true:[0,\"0\",\"false\",\"off\",\"no\",false].includes(e)?false:e?Boolean(e):null}var ai=new Set([\"allowfullscreen\",\"async\",\"autofocus\",\"autoplay\",\"checked\",\"controls\",\"default\",\"defer\",\"disabled\",\"formnovalidate\",\"inert\",\"ismap\",\"itemscope\",\"loop\",\"multiple\",\"muted\",\"nomodule\",\"novalidate\",\"open\",\"playsinline\",\"readonly\",\"required\",\"reversed\",\"selected\",\"shadowrootclonable\",\"shadowrootdelegatesfocus\",\"shadowrootserializable\"]);function Ir(e){return ai.has(e)}function ci(e){return ![\"aria-pressed\",\"aria-checked\",\"aria-expanded\",\"aria-selected\"].includes(e)}function Lr(e,t,r){return e._x_bindings&&e._x_bindings[t]!==void 0?e._x_bindings[t]:jr(e,t,r)}function $r(e,t,r,n=true){if(e._x_bindings&&e._x_bindings[t]!==void 0)return e._x_bindings[t];if(e._x_inlineBindings&&e._x_inlineBindings[t]!==void 0){let i=e._x_inlineBindings[t];return i.extract=n,ke(()=>R(e,i.expression))}return jr(e,t,r)}function jr(e,t,r){let n=e.getAttribute(t);return n===null?typeof r==\"function\"?r():r:n===\"\"?true:Ir(t)?!![t,\"true\"].includes(n):n}function ze(e){return e.type===\"checkbox\"||e.localName===\"ui-checkbox\"||e.localName===\"ui-switch\"}function Ot(e){return e.type===\"radio\"||e.localName===\"ui-radio\"}function Ke(e,t){let r;return function(){let n=this,i=arguments,o=function(){r=null,e.apply(n,i);};clearTimeout(r),r=setTimeout(o,t);}}function He(e,t){let r;return function(){let n=this,i=arguments;r||(e.apply(n,i),r=true,setTimeout(()=>r=false,t));}}function Ve({get:e,set:t},{get:r,set:n}){let i=true,o,a=N(()=>{let c=e(),l=r();if(i)n(Ct(c)),i=false;else {let u=JSON.stringify(c),p=JSON.stringify(l);u!==o?n(Ct(c)):u!==p&&t(Ct(l));}o=JSON.stringify(e()),JSON.stringify(r());});return ()=>{$(a);}}function Ct(e){return typeof e==\"object\"?JSON.parse(JSON.stringify(e)):e}function Fr(e){(Array.isArray(e)?e:[e]).forEach(r=>r(K));}var Z={},Br=false;function zr(e,t){if(Br||(Z=T(Z),Br=true),t===void 0)return Z[e];Z[e]=t,Te(Z[e]),typeof t==\"object\"&&t!==null&&t.hasOwnProperty(\"init\")&&typeof t.init==\"function\"&&Z[e].init();}function Kr(){return Z}var Hr={};function Vr(e,t){let r=typeof t!=\"function\"?()=>t:t;return e instanceof Element?Tt(e,r()):(Hr[e]=r,()=>{})}function qr(e){return Object.entries(Hr).forEach(([t,r])=>{Object.defineProperty(e,t,{get(){return (...n)=>r(...n)}});}),e}function Tt(e,t,r){let n=[];for(;n.length;)n.pop()();let i=Object.entries(t).map(([s,a])=>({name:s,value:a})),o=Et(i);return i=i.map(s=>o.find(a=>a.name===s.name)?{name:`x-bind:${s.name}`,value:`\"${s.value}\"`}:s),pe(e,i,r).map(s=>{n.push(s.runCleanups),s();}),()=>{for(;n.length;)n.pop()();}}var Ur={};function Wr(e,t){Ur[e]=t;}function Gr(e,t){return Object.entries(Ur).forEach(([r,n])=>{Object.defineProperty(e,r,{get(){return (...i)=>n.bind(t)(...i)},enumerable:false});}),e}var li={get reactive(){return T},get release(){return $},get effect(){return N},get raw(){return at},version:\"3.15.0\",flushAndStopDeferringMutations:nr,dontAutoEvaluateFunctions:ke,disableEffectScheduling:Gt,startObservingMutations:ue,stopObservingMutations:dt,setReactivityEngine:Jt,onAttributeRemoved:Oe,onAttributesAdded:Ae,closestDataStack:B,skipDuringClone:A,onlyDuringClone:Tr,addRootSelector:Le,addInitSelector:$e,interceptClone:H,addScopeToNode:k,deferMutations:rr,mapAttributes:ne,evaluateLater:x,interceptInit:vr,setEvaluator:ar,mergeProxies:z,extractProp:$r,findClosest:j,onElRemoved:te,closestRoot:Y,destroyTree:P,interceptor:Re,transition:Fe,setStyles:X,mutateDom:m,directive:d,entangle:Ve,throttle:He,debounce:Ke,evaluate:R,initTree:S,nextTick:ie,prefixed:C,prefix:cr,plugin:Fr,magic:y,store:zr,start:gr,clone:Nr,cloneNode:Mr,bound:Lr,$data:Ce,watch:ve,walk:D,data:Wr,bind:Vr},K=li;function Rt(e,t){let r=Object.create(null),n=e.split(\",\");for(let i=0;i<n.length;i++)r[n[i]]=true;return i=>!!r[i]}var ui=\"itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly\";Rt(ui+\",async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected\");var Jr=Object.freeze({});var fi=Object.prototype.hasOwnProperty,ye=(e,t)=>fi.call(e,t),V=Array.isArray,oe=e=>Yr(e)===\"[object Map]\";var di=e=>typeof e==\"string\",qe=e=>typeof e==\"symbol\",be=e=>e!==null&&typeof e==\"object\";var pi=Object.prototype.toString,Yr=e=>pi.call(e),Mt=e=>Yr(e).slice(8,-1);var Ue=e=>di(e)&&e!==\"NaN\"&&e[0]!==\"-\"&&\"\"+parseInt(e,10)===e;var We=e=>{let t=Object.create(null);return r=>t[r]||(t[r]=e(r))},Nt=We(e=>e.charAt(0).toUpperCase()+e.slice(1)),kt=(e,t)=>e!==t&&(e===e||t===t);var Dt=new WeakMap,we=[],L,Q=Symbol(\"iterate\"),Pt=Symbol(\"Map key iterate\");function _i(e){return e&&e._isEffect===true}function rn(e,t=Jr){_i(e)&&(e=e.raw);let r=xi(e,t);return t.lazy||r(),r}function nn(e){e.active&&(on(e),e.options.onStop&&e.options.onStop(),e.active=false);}var gi=0;function xi(e,t){let r=function(){if(!r.active)return e();if(!we.includes(r)){on(r);try{return bi(),we.push(r),L=r,e()}finally{we.pop(),sn(),L=we[we.length-1];}}};return r.id=gi++,r.allowRecurse=!!t.allowRecurse,r._isEffect=true,r.active=true,r.raw=e,r.deps=[],r.options=t,r}function on(e){let{deps:t}=e;if(t.length){for(let r=0;r<t.length;r++)t[r].delete(e);t.length=0;}}var se=true,Lt=[];function yi(){Lt.push(se),se=false;}function bi(){Lt.push(se),se=true;}function sn(){let e=Lt.pop();se=e===void 0?true:e;}function M(e,t,r){if(!se||L===void 0)return;let n=Dt.get(e);n||Dt.set(e,n=new Map);let i=n.get(r);i||n.set(r,i=new Set),i.has(L)||(i.add(L),L.deps.push(i),L.options.onTrack&&L.options.onTrack({effect:L,target:e,type:t,key:r}));}function U(e,t,r,n,i,o){let s=Dt.get(e);if(!s)return;let a=new Set,c=u=>{u&&u.forEach(p=>{(p!==L||p.allowRecurse)&&a.add(p);});};if(t===\"clear\")s.forEach(c);else if(r===\"length\"&&V(e))s.forEach((u,p)=>{(p===\"length\"||p>=n)&&c(u);});else switch(r!==void 0&&c(s.get(r)),t){case \"add\":V(e)?Ue(r)&&c(s.get(\"length\")):(c(s.get(Q)),oe(e)&&c(s.get(Pt)));break;case \"delete\":V(e)||(c(s.get(Q)),oe(e)&&c(s.get(Pt)));break;case \"set\":oe(e)&&c(s.get(Q));break}let l=u=>{u.options.onTrigger&&u.options.onTrigger({effect:u,target:e,key:r,type:t,newValue:n,oldValue:i,oldTarget:o}),u.options.scheduler?u.options.scheduler(u):u();};a.forEach(l);}var wi=Rt(\"__proto__,__v_isRef,__isVue\"),an=new Set(Object.getOwnPropertyNames(Symbol).map(e=>Symbol[e]).filter(qe)),Ei=cn();var vi=cn(true);var Xr=Si();function Si(){let e={};return [\"includes\",\"indexOf\",\"lastIndexOf\"].forEach(t=>{e[t]=function(...r){let n=_(this);for(let o=0,s=this.length;o<s;o++)M(n,\"get\",o+\"\");let i=n[t](...r);return i===-1||i===false?n[t](...r.map(_)):i};}),[\"push\",\"pop\",\"shift\",\"unshift\",\"splice\"].forEach(t=>{e[t]=function(...r){yi();let n=_(this)[t].apply(this,r);return sn(),n};}),e}function cn(e=false,t=false){return function(n,i,o){if(i===\"__v_isReactive\")return !e;if(i===\"__v_isReadonly\")return e;if(i===\"__v_raw\"&&o===(e?t?Bi:dn:t?Fi:fn).get(n))return n;let s=V(n);if(!e&&s&&ye(Xr,i))return Reflect.get(Xr,i,o);let a=Reflect.get(n,i,o);return (qe(i)?an.has(i):wi(i))||(e||M(n,\"get\",i),t)?a:It(a)?!s||!Ue(i)?a.value:a:be(a)?e?pn(a):et(a):a}}var Ai=Oi();function Oi(e=false){return function(r,n,i,o){let s=r[n];if(!e&&(i=_(i),s=_(s),!V(r)&&It(s)&&!It(i)))return s.value=i,true;let a=V(r)&&Ue(n)?Number(n)<r.length:ye(r,n),c=Reflect.set(r,n,i,o);return r===_(o)&&(a?kt(i,s)&&U(r,\"set\",n,i,s):U(r,\"add\",n,i)),c}}function Ci(e,t){let r=ye(e,t),n=e[t],i=Reflect.deleteProperty(e,t);return i&&r&&U(e,\"delete\",t,void 0,n),i}function Ti(e,t){let r=Reflect.has(e,t);return (!qe(t)||!an.has(t))&&M(e,\"has\",t),r}function Ri(e){return M(e,\"iterate\",V(e)?\"length\":Q),Reflect.ownKeys(e)}var Mi={get:Ei,set:Ai,deleteProperty:Ci,has:Ti,ownKeys:Ri},Ni={get:vi,set(e,t){return console.warn(`Set operation on key \"${String(t)}\" failed: target is readonly.`,e),true},deleteProperty(e,t){return console.warn(`Delete operation on key \"${String(t)}\" failed: target is readonly.`,e),true}};var $t=e=>be(e)?et(e):e,jt=e=>be(e)?pn(e):e,Ft=e=>e,Qe=e=>Reflect.getPrototypeOf(e);function Ge(e,t,r=false,n=false){e=e.__v_raw;let i=_(e),o=_(t);t!==o&&!r&&M(i,\"get\",t),!r&&M(i,\"get\",o);let{has:s}=Qe(i),a=n?Ft:r?jt:$t;if(s.call(i,t))return a(e.get(t));if(s.call(i,o))return a(e.get(o));e!==i&&e.get(t);}function Je(e,t=false){let r=this.__v_raw,n=_(r),i=_(e);return e!==i&&!t&&M(n,\"has\",e),!t&&M(n,\"has\",i),e===i?r.has(e):r.has(e)||r.has(i)}function Ye(e,t=false){return e=e.__v_raw,!t&&M(_(e),\"iterate\",Q),Reflect.get(e,\"size\",e)}function Zr(e){e=_(e);let t=_(this);return Qe(t).has.call(t,e)||(t.add(e),U(t,\"add\",e,e)),this}function Qr(e,t){t=_(t);let r=_(this),{has:n,get:i}=Qe(r),o=n.call(r,e);o?un(r,n,e):(e=_(e),o=n.call(r,e));let s=i.call(r,e);return r.set(e,t),o?kt(t,s)&&U(r,\"set\",e,t,s):U(r,\"add\",e,t),this}function en(e){let t=_(this),{has:r,get:n}=Qe(t),i=r.call(t,e);i?un(t,r,e):(e=_(e),i=r.call(t,e));let o=n?n.call(t,e):void 0,s=t.delete(e);return i&&U(t,\"delete\",e,void 0,o),s}function tn(){let e=_(this),t=e.size!==0,r=oe(e)?new Map(e):new Set(e),n=e.clear();return t&&U(e,\"clear\",void 0,void 0,r),n}function Xe(e,t){return function(n,i){let o=this,s=o.__v_raw,a=_(s),c=t?Ft:e?jt:$t;return !e&&M(a,\"iterate\",Q),s.forEach((l,u)=>n.call(i,c(l),c(u),o))}}function Ze(e,t,r){return function(...n){let i=this.__v_raw,o=_(i),s=oe(o),a=e===\"entries\"||e===Symbol.iterator&&s,c=e===\"keys\"&&s,l=i[e](...n),u=r?Ft:t?jt:$t;return !t&&M(o,\"iterate\",c?Pt:Q),{next(){let{value:p,done:h}=l.next();return h?{value:p,done:h}:{value:a?[u(p[0]),u(p[1])]:u(p),done:h}},[Symbol.iterator](){return this}}}}function q(e){return function(...t){{let r=t[0]?`on key \"${t[0]}\" `:\"\";console.warn(`${Nt(e)} operation ${r}failed: target is readonly.`,_(this));}return e===\"delete\"?false:this}}function ki(){let e={get(o){return Ge(this,o)},get size(){return Ye(this)},has:Je,add:Zr,set:Qr,delete:en,clear:tn,forEach:Xe(false,false)},t={get(o){return Ge(this,o,false,true)},get size(){return Ye(this)},has:Je,add:Zr,set:Qr,delete:en,clear:tn,forEach:Xe(false,true)},r={get(o){return Ge(this,o,true)},get size(){return Ye(this,true)},has(o){return Je.call(this,o,true)},add:q(\"add\"),set:q(\"set\"),delete:q(\"delete\"),clear:q(\"clear\"),forEach:Xe(true,false)},n={get(o){return Ge(this,o,true,true)},get size(){return Ye(this,true)},has(o){return Je.call(this,o,true)},add:q(\"add\"),set:q(\"set\"),delete:q(\"delete\"),clear:q(\"clear\"),forEach:Xe(true,true)};return [\"keys\",\"values\",\"entries\",Symbol.iterator].forEach(o=>{e[o]=Ze(o,false,false),r[o]=Ze(o,true,false),t[o]=Ze(o,false,true),n[o]=Ze(o,true,true);}),[e,r,t,n]}var[Di,Pi]=ki();function ln(e,t){let r=e?Pi:Di;return (n,i,o)=>i===\"__v_isReactive\"?!e:i===\"__v_isReadonly\"?e:i===\"__v_raw\"?n:Reflect.get(ye(r,i)&&i in n?r:n,i,o)}var $i={get:ln(false)};var ji={get:ln(true)};function un(e,t,r){let n=_(r);if(n!==r&&t.call(e,n)){let i=Mt(e);console.warn(`Reactive ${i} contains both the raw and reactive versions of the same object${i===\"Map\"?\" as keys\":\"\"}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`);}}var fn=new WeakMap,Fi=new WeakMap,dn=new WeakMap,Bi=new WeakMap;function zi(e){switch(e){case \"Object\":case \"Array\":return 1;case \"Map\":case \"Set\":case \"WeakMap\":case \"WeakSet\":return 2;default:return 0}}function Ki(e){return e.__v_skip||!Object.isExtensible(e)?0:zi(Mt(e))}function et(e){return e&&e.__v_isReadonly?e:mn(e,false,Mi,$i,fn)}function pn(e){return mn(e,true,Ni,ji,dn)}function mn(e,t,r,n,i){if(!be(e))return console.warn(`value cannot be made reactive: ${String(e)}`),e;if(e.__v_raw&&!(t&&e.__v_isReactive))return e;let o=i.get(e);if(o)return o;let s=Ki(e);if(s===0)return e;let a=new Proxy(e,s===2?n:r);return i.set(e,a),a}function _(e){return e&&_(e.__v_raw)||e}function It(e){return Boolean(e&&e.__v_isRef===true)}y(\"nextTick\",()=>ie);y(\"dispatch\",e=>J.bind(J,e));y(\"watch\",(e,{evaluateLater:t,cleanup:r})=>(n,i)=>{let o=t(n),a=ve(()=>{let c;return o(l=>c=l),c},i);r(a);});y(\"store\",Kr);y(\"data\",e=>Ce(e));y(\"root\",e=>Y(e));y(\"refs\",e=>(e._x_refs_proxy||(e._x_refs_proxy=z(Hi(e))),e._x_refs_proxy));function Hi(e){let t=[];return j(e,r=>{r._x_refs&&t.push(r._x_refs);}),t}var Bt={};function zt(e){return Bt[e]||(Bt[e]=0),++Bt[e]}function hn(e,t){return j(e,r=>{if(r._x_ids&&r._x_ids[t])return  true})}function _n(e,t){e._x_ids||(e._x_ids={}),e._x_ids[t]||(e._x_ids[t]=zt(t));}y(\"id\",(e,{cleanup:t})=>(r,n=null)=>{let i=`${r}${n?`-${n}`:\"\"}`;return Vi(e,i,t,()=>{let o=hn(e,r),s=o?o._x_ids[r]:zt(r);return n?`${r}-${s}-${n}`:`${r}-${s}`})});H((e,t)=>{e._x_id&&(t._x_id=e._x_id);});function Vi(e,t,r,n){if(e._x_id||(e._x_id={}),e._x_id[t])return e._x_id[t];let i=n();return e._x_id[t]=i,r(()=>{delete e._x_id[t];}),i}y(\"el\",e=>e);gn(\"Focus\",\"focus\",\"focus\");gn(\"Persist\",\"persist\",\"persist\");function gn(e,t,r){y(t,n=>E(`You can't use [$${t}] without first installing the \"${e}\" plugin here: https://alpinejs.dev/plugins/${r}`,n));}d(\"modelable\",(e,{expression:t},{effect:r,evaluateLater:n,cleanup:i})=>{let o=n(t),s=()=>{let u;return o(p=>u=p),u},a=n(`${t} = __placeholder`),c=u=>a(()=>{},{scope:{__placeholder:u}}),l=s();c(l),queueMicrotask(()=>{if(!e._x_model)return;e._x_removeModelListeners.default();let u=e._x_model.get,p=e._x_model.set,h=Ve({get(){return u()},set(w){p(w);}},{get(){return s()},set(w){c(w);}});i(h);});});d(\"teleport\",(e,{modifiers:t,expression:r},{cleanup:n})=>{e.tagName.toLowerCase()!==\"template\"&&E(\"x-teleport can only be used on a <template> tag\",e);let i=xn(r),o=e.content.cloneNode(true).firstElementChild;e._x_teleport=o,o._x_teleportBack=e,e.setAttribute(\"data-teleport-template\",true),o.setAttribute(\"data-teleport-target\",true),e._x_forwardEvents&&e._x_forwardEvents.forEach(a=>{o.addEventListener(a,c=>{c.stopPropagation(),e.dispatchEvent(new c.constructor(c.type,c));});}),k(o,{},e);let s=(a,c,l)=>{l.includes(\"prepend\")?c.parentNode.insertBefore(a,c):l.includes(\"append\")?c.parentNode.insertBefore(a,c.nextSibling):c.appendChild(a);};m(()=>{s(o,i,t),A(()=>{S(o);})();}),e._x_teleportPutBack=()=>{let a=xn(r);m(()=>{s(e._x_teleport,a,t);});},n(()=>m(()=>{o.remove(),P(o);}));});var qi=document.createElement(\"div\");function xn(e){let t=A(()=>document.querySelector(e),()=>qi)();return t||E(`Cannot find x-teleport element for selector: \"${e}\"`),t}var yn=()=>{};yn.inline=(e,{modifiers:t},{cleanup:r})=>{t.includes(\"self\")?e._x_ignoreSelf=true:e._x_ignore=true,r(()=>{t.includes(\"self\")?delete e._x_ignoreSelf:delete e._x_ignore;});};d(\"ignore\",yn);d(\"effect\",A((e,{expression:t},{effect:r})=>{r(x(e,t));}));function ae(e,t,r,n){let i=e,o=c=>n(c),s={},a=(c,l)=>u=>l(c,u);if(r.includes(\"dot\")&&(t=Ui(t)),r.includes(\"camel\")&&(t=Wi(t)),r.includes(\"passive\")&&(s.passive=true),r.includes(\"capture\")&&(s.capture=true),r.includes(\"window\")&&(i=window),r.includes(\"document\")&&(i=document),r.includes(\"debounce\")){let c=r[r.indexOf(\"debounce\")+1]||\"invalid-wait\",l=tt(c.split(\"ms\")[0])?Number(c.split(\"ms\")[0]):250;o=Ke(o,l);}if(r.includes(\"throttle\")){let c=r[r.indexOf(\"throttle\")+1]||\"invalid-wait\",l=tt(c.split(\"ms\")[0])?Number(c.split(\"ms\")[0]):250;o=He(o,l);}return r.includes(\"prevent\")&&(o=a(o,(c,l)=>{l.preventDefault(),c(l);})),r.includes(\"stop\")&&(o=a(o,(c,l)=>{l.stopPropagation(),c(l);})),r.includes(\"once\")&&(o=a(o,(c,l)=>{c(l),i.removeEventListener(t,o,s);})),(r.includes(\"away\")||r.includes(\"outside\"))&&(i=document,o=a(o,(c,l)=>{e.contains(l.target)||l.target.isConnected!==false&&(e.offsetWidth<1&&e.offsetHeight<1||e._x_isShown!==false&&c(l));})),r.includes(\"self\")&&(o=a(o,(c,l)=>{l.target===e&&c(l);})),(Ji(t)||wn(t))&&(o=a(o,(c,l)=>{Yi(l,r)||c(l);})),i.addEventListener(t,o,s),()=>{i.removeEventListener(t,o,s);}}function Ui(e){return e.replace(/-/g,\".\")}function Wi(e){return e.toLowerCase().replace(/-(\\w)/g,(t,r)=>r.toUpperCase())}function tt(e){return !Array.isArray(e)&&!isNaN(e)}function Gi(e){return [\" \",\"_\"].includes(e)?e:e.replace(/([a-z])([A-Z])/g,\"$1-$2\").replace(/[_\\s]/,\"-\").toLowerCase()}function Ji(e){return [\"keydown\",\"keyup\"].includes(e)}function wn(e){return [\"contextmenu\",\"click\",\"mouse\"].some(t=>e.includes(t))}function Yi(e,t){let r=t.filter(o=>![\"window\",\"document\",\"prevent\",\"stop\",\"once\",\"capture\",\"self\",\"away\",\"outside\",\"passive\",\"preserve-scroll\"].includes(o));if(r.includes(\"debounce\")){let o=r.indexOf(\"debounce\");r.splice(o,tt((r[o+1]||\"invalid-wait\").split(\"ms\")[0])?2:1);}if(r.includes(\"throttle\")){let o=r.indexOf(\"throttle\");r.splice(o,tt((r[o+1]||\"invalid-wait\").split(\"ms\")[0])?2:1);}if(r.length===0||r.length===1&&bn(e.key).includes(r[0]))return  false;let i=[\"ctrl\",\"shift\",\"alt\",\"meta\",\"cmd\",\"super\"].filter(o=>r.includes(o));return r=r.filter(o=>!i.includes(o)),!(i.length>0&&i.filter(s=>((s===\"cmd\"||s===\"super\")&&(s=\"meta\"),e[`${s}Key`])).length===i.length&&(wn(e.type)||bn(e.key).includes(r[0])))}function bn(e){if(!e)return [];e=Gi(e);let t={ctrl:\"control\",slash:\"/\",space:\" \",spacebar:\" \",cmd:\"meta\",esc:\"escape\",up:\"arrow-up\",down:\"arrow-down\",left:\"arrow-left\",right:\"arrow-right\",period:\".\",comma:\",\",equal:\"=\",minus:\"-\",underscore:\"_\"};return t[e]=e,Object.keys(t).map(r=>{if(t[r]===e)return r}).filter(r=>r)}d(\"model\",(e,{modifiers:t,expression:r},{effect:n,cleanup:i})=>{let o=e;t.includes(\"parent\")&&(o=e.parentNode);let s=x(o,r),a;typeof r==\"string\"?a=x(o,`${r} = __placeholder`):typeof r==\"function\"&&typeof r()==\"string\"?a=x(o,`${r()} = __placeholder`):a=()=>{};let c=()=>{let h;return s(w=>h=w),En(h)?h.get():h},l=h=>{let w;s(F=>w=F),En(w)?w.set(h):a(()=>{},{scope:{__placeholder:h}});};typeof r==\"string\"&&e.type===\"radio\"&&m(()=>{e.hasAttribute(\"name\")||e.setAttribute(\"name\",r);});let u=e.tagName.toLowerCase()===\"select\"||[\"checkbox\",\"radio\"].includes(e.type)||t.includes(\"lazy\")?\"change\":\"input\",p=I?()=>{}:ae(e,u,t,h=>{l(Kt(e,t,h,c()));});if(t.includes(\"fill\")&&([void 0,null,\"\"].includes(c())||ze(e)&&Array.isArray(c())||e.tagName.toLowerCase()===\"select\"&&e.multiple)&&l(Kt(e,t,{target:e},c())),e._x_removeModelListeners||(e._x_removeModelListeners={}),e._x_removeModelListeners.default=p,i(()=>e._x_removeModelListeners.default()),e.form){let h=ae(e.form,\"reset\",[],w=>{ie(()=>e._x_model&&e._x_model.set(Kt(e,t,{target:e},c())));});i(()=>h());}e._x_model={get(){return c()},set(h){l(h);}},e._x_forceModelUpdate=h=>{h===void 0&&typeof r==\"string\"&&r.match(/\\./)&&(h=\"\"),window.fromModel=true,m(()=>ge(e,\"value\",h)),delete window.fromModel;},n(()=>{let h=c();t.includes(\"unintrusive\")&&document.activeElement.isSameNode(e)||e._x_forceModelUpdate(h);});});function Kt(e,t,r,n){return m(()=>{if(r instanceof CustomEvent&&r.detail!==void 0)return r.detail!==null&&r.detail!==void 0?r.detail:r.target.value;if(ze(e))if(Array.isArray(n)){let i=null;return t.includes(\"number\")?i=Ht(r.target.value):t.includes(\"boolean\")?i=xe(r.target.value):i=r.target.value,r.target.checked?n.includes(i)?n:n.concat([i]):n.filter(o=>!Xi(o,i))}else return r.target.checked;else {if(e.tagName.toLowerCase()===\"select\"&&e.multiple)return t.includes(\"number\")?Array.from(r.target.selectedOptions).map(i=>{let o=i.value||i.text;return Ht(o)}):t.includes(\"boolean\")?Array.from(r.target.selectedOptions).map(i=>{let o=i.value||i.text;return xe(o)}):Array.from(r.target.selectedOptions).map(i=>i.value||i.text);{let i;return Ot(e)?r.target.checked?i=r.target.value:i=n:i=r.target.value,t.includes(\"number\")?Ht(i):t.includes(\"boolean\")?xe(i):t.includes(\"trim\")?i.trim():i}}})}function Ht(e){let t=e?parseFloat(e):null;return Zi(t)?t:e}function Xi(e,t){return e==t}function Zi(e){return !Array.isArray(e)&&!isNaN(e)}function En(e){return e!==null&&typeof e==\"object\"&&typeof e.get==\"function\"&&typeof e.set==\"function\"}d(\"cloak\",e=>queueMicrotask(()=>m(()=>e.removeAttribute(C(\"cloak\")))));$e(()=>`[${C(\"init\")}]`);d(\"init\",A((e,{expression:t},{evaluate:r})=>typeof t==\"string\"?!!t.trim()&&r(t,{},false):r(t,{},false)));d(\"text\",(e,{expression:t},{effect:r,evaluateLater:n})=>{let i=n(t);r(()=>{i(o=>{m(()=>{e.textContent=o;});});});});d(\"html\",(e,{expression:t},{effect:r,evaluateLater:n})=>{let i=n(t);r(()=>{i(o=>{m(()=>{e.innerHTML=o,e._x_ignoreSelf=true,S(e),delete e._x_ignoreSelf;});});});});ne(Pe(\":\",Ie(C(\"bind:\"))));var vn=(e,{value:t,modifiers:r,expression:n,original:i},{effect:o,cleanup:s})=>{if(!t){let c={};qr(c),x(e,n)(u=>{Tt(e,u,i);},{scope:c});return}if(t===\"key\")return Qi(e,n);if(e._x_inlineBindings&&e._x_inlineBindings[t]&&e._x_inlineBindings[t].extract)return;let a=x(e,n);o(()=>a(c=>{c===void 0&&typeof n==\"string\"&&n.match(/\\./)&&(c=\"\"),m(()=>ge(e,t,c,r));})),s(()=>{e._x_undoAddedClasses&&e._x_undoAddedClasses(),e._x_undoAddedStyles&&e._x_undoAddedStyles();});};vn.inline=(e,{value:t,modifiers:r,expression:n})=>{t&&(e._x_inlineBindings||(e._x_inlineBindings={}),e._x_inlineBindings[t]={expression:n,extract:false});};d(\"bind\",vn);function Qi(e,t){e._x_keyExpression=t;}Le(()=>`[${C(\"data\")}]`);d(\"data\",(e,{expression:t},{cleanup:r})=>{if(eo(e))return;t=t===\"\"?\"{}\":t;let n={};fe(n,e);let i={};Gr(i,n);let o=R(e,t,{scope:i});(o===void 0||o===true)&&(o={}),fe(o,e);let s=T(o);Te(s);let a=k(e,s);s.init&&R(e,s.init),r(()=>{s.destroy&&R(e,s.destroy),a();});});H((e,t)=>{e._x_dataStack&&(t._x_dataStack=e._x_dataStack,t.setAttribute(\"data-has-alpine-state\",true));});function eo(e){return I?Be?true:e.hasAttribute(\"data-has-alpine-state\"):false}d(\"show\",(e,{modifiers:t,expression:r},{effect:n})=>{let i=x(e,r);e._x_doHide||(e._x_doHide=()=>{m(()=>{e.style.setProperty(\"display\",\"none\",t.includes(\"important\")?\"important\":void 0);});}),e._x_doShow||(e._x_doShow=()=>{m(()=>{e.style.length===1&&e.style.display===\"none\"?e.removeAttribute(\"style\"):e.style.removeProperty(\"display\");});});let o=()=>{e._x_doHide(),e._x_isShown=false;},s=()=>{e._x_doShow(),e._x_isShown=true;},a=()=>setTimeout(s),c=he(p=>p?s():o(),p=>{typeof e._x_toggleAndCascadeWithTransitions==\"function\"?e._x_toggleAndCascadeWithTransitions(e,p,s,o):p?a():o();}),l,u=true;n(()=>i(p=>{!u&&p===l||(t.includes(\"immediate\")&&(p?a():o()),c(p),l=p,u=false);}));});d(\"for\",(e,{expression:t},{effect:r,cleanup:n})=>{let i=ro(t),o=x(e,i.items),s=x(e,e._x_keyExpression||\"index\");e._x_prevKeys=[],e._x_lookup={},r(()=>to(e,i,o,s)),n(()=>{Object.values(e._x_lookup).forEach(a=>m(()=>{P(a),a.remove();})),delete e._x_prevKeys,delete e._x_lookup;});});function to(e,t,r,n){let i=s=>typeof s==\"object\"&&!Array.isArray(s),o=e;r(s=>{no(s)&&s>=0&&(s=Array.from(Array(s).keys(),f=>f+1)),s===void 0&&(s=[]);let a=e._x_lookup,c=e._x_prevKeys,l=[],u=[];if(i(s))s=Object.entries(s).map(([f,g])=>{let b=Sn(t,g,f,s);n(v=>{u.includes(v)&&E(\"Duplicate key on x-for\",e),u.push(v);},{scope:{index:f,...b}}),l.push(b);});else for(let f=0;f<s.length;f++){let g=Sn(t,s[f],f,s);n(b=>{u.includes(b)&&E(\"Duplicate key on x-for\",e),u.push(b);},{scope:{index:f,...g}}),l.push(g);}let p=[],h=[],w=[],F=[];for(let f=0;f<c.length;f++){let g=c[f];u.indexOf(g)===-1&&w.push(g);}c=c.filter(f=>!w.includes(f));let Ee=\"template\";for(let f=0;f<u.length;f++){let g=u[f],b=c.indexOf(g);if(b===-1)c.splice(f,0,g),p.push([Ee,f]);else if(b!==f){let v=c.splice(f,1)[0],O=c.splice(b-1,1)[0];c.splice(f,0,O),c.splice(b,0,v),h.push([v,O]);}else F.push(g);Ee=g;}for(let f=0;f<w.length;f++){let g=w[f];g in a&&(m(()=>{P(a[g]),a[g].remove();}),delete a[g]);}for(let f=0;f<h.length;f++){let[g,b]=h[f],v=a[g],O=a[b],ee=document.createElement(\"div\");m(()=>{O||E('x-for \":key\" is undefined or invalid',o,b,a),O.after(ee),v.after(O),O._x_currentIfEl&&O.after(O._x_currentIfEl),ee.before(v),v._x_currentIfEl&&v.after(v._x_currentIfEl),ee.remove();}),O._x_refreshXForScope(l[u.indexOf(b)]);}for(let f=0;f<p.length;f++){let[g,b]=p[f],v=g===\"template\"?o:a[g];v._x_currentIfEl&&(v=v._x_currentIfEl);let O=l[b],ee=u[b],ce=document.importNode(o.content,true).firstElementChild,qt=T(O);k(ce,qt,o),ce._x_refreshXForScope=On=>{Object.entries(On).forEach(([Cn,Tn])=>{qt[Cn]=Tn;});},m(()=>{v.after(ce),A(()=>S(ce))();}),typeof ee==\"object\"&&E(\"x-for key cannot be an object, it must be a string or an integer\",o),a[ee]=ce;}for(let f=0;f<F.length;f++)a[F[f]]._x_refreshXForScope(l[u.indexOf(F[f])]);o._x_prevKeys=u;});}function ro(e){let t=/,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/,r=/^\\s*\\(|\\)\\s*$/g,n=/([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/,i=e.match(n);if(!i)return;let o={};o.items=i[2].trim();let s=i[1].replace(r,\"\").trim(),a=s.match(t);return a?(o.item=s.replace(t,\"\").trim(),o.index=a[1].trim(),a[2]&&(o.collection=a[2].trim())):o.item=s,o}function Sn(e,t,r,n){let i={};return /^\\[.*\\]$/.test(e.item)&&Array.isArray(t)?e.item.replace(\"[\",\"\").replace(\"]\",\"\").split(\",\").map(s=>s.trim()).forEach((s,a)=>{i[s]=t[a];}):/^\\{.*\\}$/.test(e.item)&&!Array.isArray(t)&&typeof t==\"object\"?e.item.replace(\"{\",\"\").replace(\"}\",\"\").split(\",\").map(s=>s.trim()).forEach(s=>{i[s]=t[s];}):i[e.item]=t,e.index&&(i[e.index]=r),e.collection&&(i[e.collection]=n),i}function no(e){return !Array.isArray(e)&&!isNaN(e)}function An(){}An.inline=(e,{expression:t},{cleanup:r})=>{let n=Y(e);n._x_refs||(n._x_refs={}),n._x_refs[t]=e,r(()=>delete n._x_refs[t]);};d(\"ref\",An);d(\"if\",(e,{expression:t},{effect:r,cleanup:n})=>{e.tagName.toLowerCase()!==\"template\"&&E(\"x-if can only be used on a <template> tag\",e);let i=x(e,t),o=()=>{if(e._x_currentIfEl)return e._x_currentIfEl;let a=e.content.cloneNode(true).firstElementChild;return k(a,{},e),m(()=>{e.after(a),A(()=>S(a))();}),e._x_currentIfEl=a,e._x_undoIf=()=>{m(()=>{P(a),a.remove();}),delete e._x_currentIfEl;},a},s=()=>{e._x_undoIf&&(e._x_undoIf(),delete e._x_undoIf);};r(()=>i(a=>{a?o():s();})),n(()=>e._x_undoIf&&e._x_undoIf());});d(\"id\",(e,{expression:t},{evaluate:r})=>{r(t).forEach(i=>_n(e,i));});H((e,t)=>{e._x_ids&&(t._x_ids=e._x_ids);});ne(Pe(\"@\",Ie(C(\"on:\"))));d(\"on\",A((e,{value:t,modifiers:r,expression:n},{cleanup:i})=>{let o=n?x(e,n):()=>{};e.tagName.toLowerCase()===\"template\"&&(e._x_forwardEvents||(e._x_forwardEvents=[]),e._x_forwardEvents.includes(t)||e._x_forwardEvents.push(t));let s=ae(e,t,r,a=>{o(()=>{},{scope:{$event:a},params:[a]});});i(()=>s());}));rt(\"Collapse\",\"collapse\",\"collapse\");rt(\"Intersect\",\"intersect\",\"intersect\");rt(\"Focus\",\"trap\",\"focus\");rt(\"Mask\",\"mask\",\"mask\");function rt(e,t,r){d(t,n=>E(`You can't use [x-${t}] without first installing the \"${e}\" plugin here: https://alpinejs.dev/plugins/${r}`,n));}K.setEvaluator(xt);K.setReactivityEngine({reactive:et,effect:rn,release:nn,raw:_});var Vt=K;window.Alpine=Vt;queueMicrotask(()=>{Vt.start();});})();\n\n})();\n"]}