linear-grab 0.26.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -47779,7 +47779,23 @@ function U3(e) {
47779
47779
  function W3(e, t, n) {
47780
47780
  return e.rules[t]?.severity ?? n;
47781
47781
  }
47782
- function G3(e) {
47782
+ var G3 = /^(HotReload|Head|AppRouterAnnouncer|HistoryUpdater|AppRouter|Router|ServerRoot|SegmentViewNode|SegmentViewStateNode|SegmentStateProvider|InnerLayoutRouter|OuterLayoutRouter|TemplateContext|RenderFromTemplateContext|ScrollAndFocusHandler|RedirectBoundary|RedirectErrorBoundary|LoadingBoundary|ErrorBoundary|ErrorBoundaryHandler|HTTPAccessFallbackBoundary|HTTPAccessFallbackErrorBoundary|DevRootHTTPAccessFallbackBoundary|__next_root_layout_boundary__|Preloads|NonIndex|ReplaySsrOnlyErrors|AppDevOverlay\w*|DevOverlay\w*|PseudoHtml\w*)$/;
47783
+ function K3(e) {
47784
+ return e?.length ? e.map((e) => {
47785
+ try {
47786
+ let t = new RegExp(e);
47787
+ return (e) => t.test(e);
47788
+ } catch {
47789
+ return (t) => t === e;
47790
+ }
47791
+ }) : [];
47792
+ }
47793
+ function q3(e, t) {
47794
+ if (e.length <= 2 || G3.test(e)) return !0;
47795
+ for (let n of t) if (n(e)) return !0;
47796
+ return !1;
47797
+ }
47798
+ function J3(e) {
47783
47799
  let t = /* @__PURE__ */ new Map();
47784
47800
  for (let n of e) for (let e of n.entries) {
47785
47801
  let n = t.get(e.name);
@@ -47792,11 +47808,15 @@ function G3(e) {
47792
47808
  }
47793
47809
  return t;
47794
47810
  }
47795
- function K3(e, t) {
47796
- let n = [], r = G3(e), i = t.budgets;
47797
- return t6(n, () => {
47811
+ function Y3(e, t, n) {
47812
+ let r = [], i = K3(n?.ignore), a = e.map((e) => ({
47813
+ ...e,
47814
+ entries: e.entries.filter((e) => !q3(e.name, i)),
47815
+ mounts: Object.fromEntries(Object.entries(e.mounts).filter(([e]) => !q3(e, i)))
47816
+ })), o = J3(a), s = t.budgets;
47817
+ return i6(r, () => {
47798
47818
  let e = [];
47799
- for (let n of r.values()) {
47819
+ for (let n of o.values()) {
47800
47820
  if (n.updates.length < 5 || !n.updates.every((e) => e.length === 0)) continue;
47801
47821
  let r = n.updates.length;
47802
47822
  e.push({
@@ -47815,9 +47835,9 @@ function K3(e, t) {
47815
47835
  });
47816
47836
  }
47817
47837
  return e;
47818
- }), t6(n, () => {
47838
+ }), i6(r, () => {
47819
47839
  let e = [];
47820
- for (let n of r.values()) {
47840
+ for (let n of o.values()) {
47821
47841
  if (n.updates.length < 5 || !n.updates.every((e) => e.length > 0 && e.every((e) => /\((?:fn|ref)\)$/.test(e)))) continue;
47822
47842
  let r = Array.from(new Set(n.updates.flat())), i = n.updates.length, a = r.join(", ");
47823
47843
  e.push({
@@ -47836,81 +47856,81 @@ function K3(e, t) {
47836
47856
  });
47837
47857
  }
47838
47858
  return e;
47839
- }), t6(n, () => {
47840
- let n = [], r = /Tooltip|Menu|Popover|Context|Dialog|Dropdown/i;
47841
- for (let i of e) for (let e of Object.keys(i.mounts)) {
47842
- let a = i.mounts[e];
47843
- if (a < (r.test(e) ? 10 : 15)) continue;
47844
- let o = i.entries.find((t) => t.name === e && t.el);
47845
- n.push({
47859
+ }), i6(r, () => {
47860
+ let e = [], n = /Tooltip|Menu|Popover|Context|Dialog|Dropdown/i;
47861
+ for (let r of a) for (let i of Object.keys(r.mounts)) {
47862
+ let a = r.mounts[i];
47863
+ if (a < (n.test(i) ? 10 : 15)) continue;
47864
+ let o = r.entries.find((e) => e.name === i && e.el);
47865
+ e.push({
47846
47866
  ruleId: "R4",
47847
47867
  shape: "A",
47848
47868
  severity: W3(t, "R4", "error"),
47849
47869
  suspected: !0,
47850
- description: `suspected R4 — ${a} ${e} instances mounted in one commit (per-row overlays should mount on intent)`,
47851
- component: e,
47870
+ description: `suspected R4 — ${a} ${i} instances mounted in one commit (per-row overlays should mount on intent)`,
47871
+ component: i,
47852
47872
  source: null,
47853
47873
  renders: a,
47854
47874
  selfTime: 0,
47855
47875
  changes: [],
47856
- evidence: `${e} ×${a} mounted in one commit`,
47876
+ evidence: `${i} ×${a} mounted in one commit`,
47857
47877
  el: o?.el ?? void 0
47858
47878
  });
47859
47879
  }
47860
- return n;
47861
- }), t6(n, () => {
47862
- let t = [];
47863
- for (let n of e) {
47864
- if (n.duration <= i.commitMs) continue;
47865
- let e = [...n.entries].sort((e, t) => t.selfTime - e.selfTime).slice(0, 3).map((e) => `${e.name} ${U3(e.selfTime)}ms`).join(", "), r = U3(n.duration), a = n.duration > 16 ? ` · ~${Math.round(1e3 / n.duration)} FPS` : "";
47866
- t.push({
47880
+ return e;
47881
+ }), i6(r, () => {
47882
+ let e = [];
47883
+ for (let t of a) {
47884
+ if (t.duration <= s.commitMs) continue;
47885
+ let n = [...t.entries].sort((e, t) => t.selfTime - e.selfTime).slice(0, 3).map((e) => `${e.name} ${U3(e.selfTime)}ms`).join(", "), r = U3(t.duration), i = t.duration > 16 ? ` · ~${Math.round(1e3 / t.duration)} FPS` : "";
47886
+ e.push({
47867
47887
  ruleId: null,
47868
47888
  shape: null,
47869
47889
  severity: "error",
47870
47890
  suspected: !1,
47871
- description: `commit exceeded budget: ${r}ms of React work (> ${i.commitMs}ms) — top: ${e}`,
47891
+ description: `commit exceeded budget: ${r}ms of React work (> ${s.commitMs}ms) — top: ${n}`,
47872
47892
  component: null,
47873
47893
  source: null,
47874
- renders: n.entries.length,
47894
+ renders: t.entries.length,
47875
47895
  selfTime: r,
47876
47896
  changes: [],
47877
- evidence: `${r}ms commit · ${n.entries.length} components${a}`
47897
+ evidence: `${r}ms commit · ${t.entries.length} components${i}`
47878
47898
  });
47879
47899
  }
47880
- return t;
47881
- }), t6(n, () => {
47882
- let t = [], n = /* @__PURE__ */ new Map();
47883
- for (let t of e) {
47884
- let e = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
47885
- for (let n of t.entries) e.set(n.name, (e.get(n.name) ?? 0) + n.selfTime), n.el && !r.has(n.name) && r.set(n.name, n.el);
47886
- for (let [t, a] of e) {
47887
- if (a <= i.selfMs) continue;
47888
- let e = n.get(t) ?? {
47900
+ return e;
47901
+ }), i6(r, () => {
47902
+ let e = [], t = /* @__PURE__ */ new Map();
47903
+ for (let e of a) {
47904
+ let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
47905
+ for (let t of e.entries) n.set(t.name, (n.get(t.name) ?? 0) + t.selfTime), t.el && !r.has(t.name) && r.set(t.name, t.el);
47906
+ for (let [e, i] of n) {
47907
+ if (i <= s.selfMs) continue;
47908
+ let n = t.get(e) ?? {
47889
47909
  hits: 0,
47890
47910
  worst: 0,
47891
47911
  total: 0,
47892
- el: r.get(t)
47912
+ el: r.get(e)
47893
47913
  };
47894
- e.hits += 1, e.worst = Math.max(e.worst, a), e.total += a, e.el ||= r.get(t), n.set(t, e);
47914
+ n.hits += 1, n.worst = Math.max(n.worst, i), n.total += i, n.el ||= r.get(e), t.set(e, n);
47895
47915
  }
47896
47916
  }
47897
- for (let [e, r] of n) r.hits < 3 || t.push({
47917
+ for (let [n, r] of t) r.hits < 3 || e.push({
47898
47918
  ruleId: null,
47899
47919
  shape: null,
47900
47920
  severity: "warn",
47901
47921
  suspected: !1,
47902
- description: `${e} is a hot component: ${r.hits} commits over the ${i.selfMs}ms self budget`,
47903
- component: e,
47922
+ description: `${n} is a hot component: ${r.hits} commits over the ${s.selfMs}ms self budget`,
47923
+ component: n,
47904
47924
  source: null,
47905
47925
  renders: r.hits,
47906
47926
  selfTime: U3(r.total),
47907
47927
  changes: [],
47908
- evidence: `${r.hits} commits over ${i.selfMs}ms self (worst ${U3(r.worst)}ms)`,
47928
+ evidence: `${r.hits} commits over ${s.selfMs}ms self (worst ${U3(r.worst)}ms)`,
47909
47929
  el: r.el
47910
47930
  });
47911
- return t;
47912
- }), t6(n, () => {
47913
- let n = [], r = $3(e.filter((e) => e.nearInput).map((e) => e.at).sort((e, t) => e - t), 1e3);
47931
+ return e;
47932
+ }), i6(r, () => {
47933
+ let n = [], r = n6(e.filter((e) => e.nearInput).map((e) => e.at).sort((e, t) => e - t), 1e3);
47914
47934
  return r >= 5 && n.push({
47915
47935
  ruleId: "R10",
47916
47936
  shape: "B",
@@ -47924,8 +47944,8 @@ function K3(e, t) {
47924
47944
  changes: [],
47925
47945
  evidence: `${r} commits within a 1s scroll/pointer window`
47926
47946
  }), n;
47927
- }), t6(n, () => {
47928
- let n = [], { count: r, span: i } = e6(e.filter((e) => !e.nearInput).map((e) => e.at).sort((e, t) => e - t), 300);
47947
+ }), i6(r, () => {
47948
+ let n = [], { count: r, span: i } = r6(e.filter((e) => !e.nearInput).map((e) => e.at).sort((e, t) => e - t), 300);
47929
47949
  return r >= 8 && n.push({
47930
47950
  ruleId: "R24",
47931
47951
  shape: "B",
@@ -47939,10 +47959,10 @@ function K3(e, t) {
47939
47959
  changes: [],
47940
47960
  evidence: `${r} commits in a ${Math.round(i)}ms burst (no input)`
47941
47961
  }), n;
47942
- }), t6(n, () => {
47962
+ }), i6(r, () => {
47943
47963
  let e = [];
47944
- if (!Z3()) return e;
47945
- for (let n of r.values()) {
47964
+ if (!e6()) return e;
47965
+ for (let n of o.values()) {
47946
47966
  if (n.updates.length < 3) continue;
47947
47967
  let r = n.el?.deref();
47948
47968
  if (!r) continue;
@@ -47971,20 +47991,20 @@ function K3(e, t) {
47971
47991
  });
47972
47992
  }
47973
47993
  return e;
47974
- }), n6(n);
47994
+ }), a6(r);
47975
47995
  }
47976
- var q3 = "#linear-grab-root, #claude-agent-glow-border, [id^=\"react-scan\"]";
47977
- function J3(e = typeof document < "u" ? document : {}) {
47996
+ var X3 = "#linear-grab-root, #claude-agent-glow-border, [id^=\"react-scan\"]";
47997
+ function Z3(e = typeof document < "u" ? document : {}) {
47978
47998
  let t = [];
47979
- return t6(t, () => {
47980
- let t = [], n = Array.from(e.querySelectorAll("[role=\"slider\"], [role=\"progressbar\"], [role=\"switch\"]")), r = Q3(e);
47999
+ return i6(t, () => {
48000
+ let t = [], n = Array.from(e.querySelectorAll("[role=\"slider\"], [role=\"progressbar\"], [role=\"switch\"]")), r = t6(e);
47981
48001
  for (let e of n) {
47982
- if (e.closest(q3)) continue;
48002
+ if (e.closest(X3)) continue;
47983
48003
  if (r) try {
47984
48004
  let t = e.getBoundingClientRect();
47985
48005
  if (t.width < 2 || t.height < 2) continue;
47986
48006
  } catch {}
47987
- if (!Y3(e)) continue;
48007
+ if (!Q3(e)) continue;
47988
48008
  let n = e.getAttribute("role") ?? "widget";
47989
48009
  t.push({
47990
48010
  ruleId: "R8",
@@ -47997,14 +48017,14 @@ function J3(e = typeof document < "u" ? document : {}) {
47997
48017
  renders: 0,
47998
48018
  selfTime: 0,
47999
48019
  changes: [],
48000
- evidence: X3(e),
48020
+ evidence: $3(e),
48001
48021
  el: typeof WeakRef < "u" ? new WeakRef(e) : void 0
48002
48022
  });
48003
48023
  }
48004
48024
  return t;
48005
- }), n6(t);
48025
+ }), a6(t);
48006
48026
  }
48007
- function Y3(e) {
48027
+ function Q3(e) {
48008
48028
  if (e.hasAttribute("disabled") || e.getAttribute("aria-disabled") === "true") return !0;
48009
48029
  let t = e;
48010
48030
  for (let e = 0; t && e <= 3; e++) {
@@ -48015,17 +48035,17 @@ function Y3(e) {
48015
48035
  }
48016
48036
  return !1;
48017
48037
  }
48018
- function X3(e) {
48038
+ function $3(e) {
48019
48039
  let t = typeof e.className == "string" && e.className ? "." + e.className.split(/\s+/).filter(Boolean).slice(0, 2).join(".") : "";
48020
48040
  return `${e.tagName.toLowerCase()}${t}`;
48021
48041
  }
48022
- function Z3() {
48042
+ function e6() {
48023
48043
  return typeof document > "u" ? !1 : (document.documentElement?.getBoundingClientRect().width ?? 0) > 0;
48024
48044
  }
48025
- function Q3(e) {
48045
+ function t6(e) {
48026
48046
  return ((e.documentElement ?? (typeof document < "u" ? document.documentElement : null))?.getBoundingClientRect().width ?? 0) > 0;
48027
48047
  }
48028
- function $3(e, t) {
48048
+ function n6(e, t) {
48029
48049
  let n = 0, r = 0;
48030
48050
  for (let i = 0; i < e.length; i++) {
48031
48051
  for (; e[i] - e[r] > t;) r++;
@@ -48033,7 +48053,7 @@ function $3(e, t) {
48033
48053
  }
48034
48054
  return n;
48035
48055
  }
48036
- function e6(e, t) {
48056
+ function r6(e, t) {
48037
48057
  let n = 0, r = 0, i = 0;
48038
48058
  for (let a = 0; a < e.length; a++) {
48039
48059
  for (; e[a] - e[i] > t;) i++;
@@ -48045,12 +48065,12 @@ function e6(e, t) {
48045
48065
  span: r
48046
48066
  };
48047
48067
  }
48048
- function t6(e, t) {
48068
+ function i6(e, t) {
48049
48069
  try {
48050
48070
  e.push(...t());
48051
48071
  } catch {}
48052
48072
  }
48053
- function n6(e) {
48073
+ function a6(e) {
48054
48074
  let t = /* @__PURE__ */ new Map();
48055
48075
  for (let n of e) {
48056
48076
  let e = `${n.ruleId}|${n.component}|${n.changes.join()}|${n.description}`, r = t.get(e);
@@ -48058,7 +48078,7 @@ function n6(e) {
48058
48078
  }
48059
48079
  return [...t.values()];
48060
48080
  }
48061
- function r6(e) {
48081
+ function o6(e) {
48062
48082
  let t = /* @__PURE__ */ new Map();
48063
48083
  for (let n of e) {
48064
48084
  let e = n.ruleId ?? "budget", r = t.get(e);
@@ -48084,7 +48104,7 @@ function r6(e) {
48084
48104
  }
48085
48105
  return a.join("\n");
48086
48106
  }
48087
- function i6(e, t) {
48107
+ function s6(e, t) {
48088
48108
  let n = Array.from(new Set(e.map((e) => e.ruleId).filter((e) => !!e))).sort(), r = [];
48089
48109
  for (let e of n) {
48090
48110
  let n = t.rules[e];
@@ -48111,35 +48131,35 @@ function i6(e, t) {
48111
48131
  "",
48112
48132
  "---",
48113
48133
  "",
48114
- r6(e)
48134
+ o6(e)
48115
48135
  ].join("\n");
48116
48136
  }
48117
- var a6 = "bippy-0.5.43", o6 = Object.defineProperty, s6 = Object.prototype.hasOwnProperty, c6 = () => {}, l6 = (e) => {
48137
+ var c6 = "bippy-0.5.43", l6 = Object.defineProperty, u6 = Object.prototype.hasOwnProperty, d6 = () => {}, f6 = (e) => {
48118
48138
  try {
48119
48139
  Function.prototype.toString.call(e).indexOf("^_^") > -1 && setTimeout(() => {
48120
48140
  throw Error("React is running in production mode, but dead code elimination has not been applied. Read how to correctly configure React for production: https://reactjs.org/link/perf-use-production-build");
48121
48141
  });
48122
48142
  } catch {}
48123
- }, u6 = (e = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__) => !!(e && "getFiberRoots" in e), d6 = !1, f6, p6 = (e = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__) => d6 ? !0 : (e && typeof e.inject == "function" && (f6 = e.inject.toString()), !!f6?.includes("(injected)")), m6 = /* @__PURE__ */ new Set(), h6 = /* @__PURE__ */ new Set(), g6 = (e) => {
48143
+ }, p6 = (e = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__) => !!(e && "getFiberRoots" in e), m6 = !1, h6, g6 = (e = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__) => m6 ? !0 : (e && typeof e.inject == "function" && (h6 = e.inject.toString()), !!h6?.includes("(injected)")), _6 = /* @__PURE__ */ new Set(), v6 = /* @__PURE__ */ new Set(), y6 = (e) => {
48124
48144
  let t = /* @__PURE__ */ new Map(), n = 0, r = {
48125
48145
  _instrumentationIsActive: !1,
48126
- _instrumentationSource: a6,
48127
- checkDCE: l6,
48146
+ _instrumentationSource: c6,
48147
+ checkDCE: f6,
48128
48148
  hasUnsupportedRendererAttached: !1,
48129
48149
  inject(e) {
48130
48150
  let i = ++n;
48131
- return t.set(i, e), h6.add(e), r._instrumentationIsActive || (r._instrumentationIsActive = !0, m6.forEach((e) => e())), i;
48151
+ return t.set(i, e), v6.add(e), r._instrumentationIsActive || (r._instrumentationIsActive = !0, _6.forEach((e) => e())), i;
48132
48152
  },
48133
- on: c6,
48134
- onCommitFiberRoot: c6,
48135
- onCommitFiberUnmount: c6,
48136
- onPostCommitFiberRoot: c6,
48153
+ on: d6,
48154
+ onCommitFiberRoot: d6,
48155
+ onCommitFiberUnmount: d6,
48156
+ onPostCommitFiberRoot: d6,
48137
48157
  renderers: t,
48138
48158
  supportsFiber: !0,
48139
48159
  supportsFlight: !0
48140
48160
  };
48141
48161
  try {
48142
- o6(globalThis, "__REACT_DEVTOOLS_GLOBAL_HOOK__", {
48162
+ l6(globalThis, "__REACT_DEVTOOLS_GLOBAL_HOOK__", {
48143
48163
  configurable: !0,
48144
48164
  enumerable: !0,
48145
48165
  get() {
@@ -48149,13 +48169,13 @@ var a6 = "bippy-0.5.43", o6 = Object.defineProperty, s6 = Object.prototype.hasOw
48149
48169
  if (t && typeof t == "object") {
48150
48170
  let n = r.renderers;
48151
48171
  r = t, n.size > 0 && (n.forEach((e, n) => {
48152
- h6.add(e), t.renderers.set(n, e);
48153
- }), _6(e));
48172
+ v6.add(e), t.renderers.set(n, e);
48173
+ }), b6(e));
48154
48174
  }
48155
48175
  }
48156
48176
  });
48157
48177
  let t = window.hasOwnProperty, n = !1;
48158
- o6(window, "hasOwnProperty", {
48178
+ l6(window, "hasOwnProperty", {
48159
48179
  configurable: !0,
48160
48180
  value: function(...e) {
48161
48181
  try {
@@ -48166,47 +48186,47 @@ var a6 = "bippy-0.5.43", o6 = Object.defineProperty, s6 = Object.prototype.hasOw
48166
48186
  writable: !0
48167
48187
  });
48168
48188
  } catch {
48169
- _6(e);
48189
+ b6(e);
48170
48190
  }
48171
48191
  return r;
48172
- }, _6 = (e) => {
48173
- e && m6.add(e);
48192
+ }, b6 = (e) => {
48193
+ e && _6.add(e);
48174
48194
  try {
48175
48195
  let t = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;
48176
48196
  if (!t) return;
48177
48197
  if (!t._instrumentationSource) {
48178
- t.checkDCE = l6, t.supportsFiber = !0, t.supportsFlight = !0, t.hasUnsupportedRendererAttached = !1, t._instrumentationSource = a6, t._instrumentationIsActive = !1;
48179
- let e = u6(t);
48180
- if (e || (t.on = c6), t.renderers.size) {
48181
- t._instrumentationIsActive = !0, m6.forEach((e) => e());
48198
+ t.checkDCE = f6, t.supportsFiber = !0, t.supportsFlight = !0, t.hasUnsupportedRendererAttached = !1, t._instrumentationSource = c6, t._instrumentationIsActive = !1;
48199
+ let e = p6(t);
48200
+ if (e || (t.on = d6), t.renderers.size) {
48201
+ t._instrumentationIsActive = !0, _6.forEach((e) => e());
48182
48202
  return;
48183
48203
  }
48184
- let n = t.inject, r = p6(t);
48185
- r && !e && (d6 = !0, t.inject({ scheduleRefresh() {} }) && (t._instrumentationIsActive = !0)), t.inject = (e) => {
48204
+ let n = t.inject, r = g6(t);
48205
+ r && !e && (m6 = !0, t.inject({ scheduleRefresh() {} }) && (t._instrumentationIsActive = !0)), t.inject = (e) => {
48186
48206
  let i = n(e);
48187
- return h6.add(e), r && t.renderers.set(i, e), t._instrumentationIsActive = !0, m6.forEach((e) => e()), i;
48207
+ return v6.add(e), r && t.renderers.set(i, e), t._instrumentationIsActive = !0, _6.forEach((e) => e()), i;
48188
48208
  };
48189
48209
  }
48190
- (t.renderers.size || t._instrumentationIsActive || p6()) && e?.();
48210
+ (t.renderers.size || t._instrumentationIsActive || g6()) && e?.();
48191
48211
  } catch {}
48192
- }, v6 = () => s6.call(globalThis, "__REACT_DEVTOOLS_GLOBAL_HOOK__"), y6 = (e) => v6() ? (_6(e), globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__) : g6(e), b6 = () => !!(typeof window < "u" && (window.document?.createElement || window.navigator?.product === "ReactNative"));
48212
+ }, x6 = () => u6.call(globalThis, "__REACT_DEVTOOLS_GLOBAL_HOOK__"), S6 = (e) => x6() ? (b6(e), globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__) : y6(e), C6 = () => !!(typeof window < "u" && (window.document?.createElement || window.navigator?.product === "ReactNative"));
48193
48213
  //#endregion
48194
48214
  //#region node_modules/bippy/dist/install-hook-only.js
48195
48215
  (() => {
48196
48216
  try {
48197
- b6() && y6();
48217
+ C6() && S6();
48198
48218
  } catch {}
48199
48219
  })();
48200
48220
  //#endregion
48201
48221
  //#region node_modules/bippy/dist/core.js
48202
- var x6 = 60111, S6 = "Symbol(react.concurrent_mode)", C6 = "Symbol(react.async_mode)", w6 = (e) => {
48222
+ var w6 = 60111, T6 = "Symbol(react.concurrent_mode)", E6 = "Symbol(react.async_mode)", D6 = (e) => {
48203
48223
  switch (e.tag) {
48204
48224
  case 5:
48205
48225
  case 26:
48206
48226
  case 27: return !0;
48207
48227
  default: return typeof e.type == "string";
48208
48228
  }
48209
- }, T6 = (e) => {
48229
+ }, O6 = (e) => {
48210
48230
  switch (e.tag) {
48211
48231
  case 1:
48212
48232
  case 11:
@@ -48215,7 +48235,7 @@ var x6 = 60111, S6 = "Symbol(react.concurrent_mode)", C6 = "Symbol(react.async_m
48215
48235
  case 15: return !0;
48216
48236
  default: return !1;
48217
48237
  }
48218
- }, E6 = (e) => {
48238
+ }, k6 = (e) => {
48219
48239
  let t = e.memoizedProps, n = e.alternate?.memoizedProps || {}, r = e.flags ?? e.effectTag ?? 0;
48220
48240
  switch (e.tag) {
48221
48241
  case 1:
@@ -48226,7 +48246,7 @@ var x6 = 60111, S6 = "Symbol(react.concurrent_mode)", C6 = "Symbol(react.async_m
48226
48246
  case 15: return (r & 1) == 1;
48227
48247
  default: return !e.alternate || n !== t || e.alternate.memoizedState !== e.memoizedState || e.alternate.ref !== e.ref;
48228
48248
  }
48229
- }, D6 = (e) => {
48249
+ }, A6 = (e) => {
48230
48250
  switch (e.tag) {
48231
48251
  case 18: return !0;
48232
48252
  case 7:
@@ -48237,25 +48257,25 @@ var x6 = 60111, S6 = "Symbol(react.concurrent_mode)", C6 = "Symbol(react.async_m
48237
48257
  default: {
48238
48258
  let t = typeof e.type == "object" && e.type !== null ? e.type.$$typeof : e.type;
48239
48259
  switch (typeof t == "symbol" ? t.toString() : t) {
48240
- case x6:
48241
- case S6:
48242
- case C6: return !0;
48260
+ case w6:
48261
+ case T6:
48262
+ case E6: return !0;
48243
48263
  default: return !1;
48244
48264
  }
48245
48265
  }
48246
48266
  }
48247
- }, O6 = (e, t = !1) => {
48248
- let n = k6(e, w6, t);
48249
- return n ||= k6(e, w6, !t), n;
48267
+ }, j6 = (e, t = !1) => {
48268
+ let n = M6(e, D6, t);
48269
+ return n ||= M6(e, D6, !t), n;
48250
48270
  };
48251
- function k6(e, t, n = !1) {
48271
+ function M6(e, t, n = !1) {
48252
48272
  if (!e) return null;
48253
48273
  let r = t(e);
48254
48274
  if (r instanceof Promise) return (async () => {
48255
48275
  if (await r === !0) return e;
48256
48276
  let i = n ? e.return : e.child;
48257
48277
  for (; i;) {
48258
- let e = await j6(i, t, n);
48278
+ let e = await P6(i, t, n);
48259
48279
  if (e) return e;
48260
48280
  i = n ? null : i.sibling;
48261
48281
  }
@@ -48264,118 +48284,118 @@ function k6(e, t, n = !1) {
48264
48284
  if (r === !0) return e;
48265
48285
  let i = n ? e.return : e.child;
48266
48286
  for (; i;) {
48267
- let e = A6(i, t, n);
48287
+ let e = N6(i, t, n);
48268
48288
  if (e) return e;
48269
48289
  i = n ? null : i.sibling;
48270
48290
  }
48271
48291
  return null;
48272
48292
  }
48273
- var A6 = (e, t, n = !1) => {
48293
+ var N6 = (e, t, n = !1) => {
48274
48294
  if (!e) return null;
48275
48295
  if (t(e) === !0) return e;
48276
48296
  let r = n ? e.return : e.child;
48277
48297
  for (; r;) {
48278
- let e = A6(r, t, n);
48298
+ let e = N6(r, t, n);
48279
48299
  if (e) return e;
48280
48300
  r = n ? null : r.sibling;
48281
48301
  }
48282
48302
  return null;
48283
- }, j6 = async (e, t, n = !1) => {
48303
+ }, P6 = async (e, t, n = !1) => {
48284
48304
  if (!e) return null;
48285
48305
  if (await t(e) === !0) return e;
48286
48306
  let r = n ? e.return : e.child;
48287
48307
  for (; r;) {
48288
- let e = await j6(r, t, n);
48308
+ let e = await P6(r, t, n);
48289
48309
  if (e) return e;
48290
48310
  r = n ? null : r.sibling;
48291
48311
  }
48292
48312
  return null;
48293
- }, M6 = (e) => {
48313
+ }, F6 = (e) => {
48294
48314
  let t = e?.actualDuration ?? 0, n = t, r = e?.child ?? null;
48295
48315
  for (; t > 0 && r != null;) n -= r.actualDuration ?? 0, r = r.sibling;
48296
48316
  return {
48297
48317
  selfTime: n,
48298
48318
  totalTime: t
48299
48319
  };
48300
- }, N6 = (e) => {
48320
+ }, I6 = (e) => {
48301
48321
  let t = e;
48302
- return typeof t == "function" ? t : typeof t == "object" && t ? N6(t.type || t.render) : null;
48303
- }, P6 = (e) => {
48322
+ return typeof t == "function" ? t : typeof t == "object" && t ? I6(t.type || t.render) : null;
48323
+ }, L6 = (e) => {
48304
48324
  let t = e;
48305
48325
  if (typeof t == "string") return t;
48306
48326
  if (typeof t != "function" && !(typeof t == "object" && t)) return null;
48307
48327
  let n = t.displayName || t.name || null;
48308
48328
  if (n) return n;
48309
- let r = N6(t);
48329
+ let r = I6(t);
48310
48330
  return r && (r.displayName || r.name) || null;
48311
- }, F6 = 0, I6 = /* @__PURE__ */ new WeakMap(), L6 = (e, t = F6++) => {
48312
- I6.set(e, t);
48313
- }, R6 = (e) => {
48314
- let t = I6.get(e);
48315
- return !t && e.alternate && (t = I6.get(e.alternate)), t || (t = F6++, L6(e, t)), t;
48316
- }, z6 = (e, t, n) => {
48331
+ }, R6 = 0, z6 = /* @__PURE__ */ new WeakMap(), B6 = (e, t = R6++) => {
48332
+ z6.set(e, t);
48333
+ }, V6 = (e) => {
48334
+ let t = z6.get(e);
48335
+ return !t && e.alternate && (t = z6.get(e.alternate)), t || (t = R6++, B6(e, t)), t;
48336
+ }, H6 = (e, t, n) => {
48317
48337
  let r = t;
48318
48338
  for (; r != null;) {
48319
- if (I6.has(r) || R6(r), !D6(r) && E6(r) && e(r, "mount"), r.tag === 13) if (r.memoizedState !== null) {
48339
+ if (z6.has(r) || V6(r), !A6(r) && k6(r) && e(r, "mount"), r.tag === 13) if (r.memoizedState !== null) {
48320
48340
  let t = r.child, n = t ? t.sibling : null;
48321
48341
  if (n) {
48322
48342
  let t = n.child;
48323
- t !== null && z6(e, t, !1);
48343
+ t !== null && H6(e, t, !1);
48324
48344
  }
48325
48345
  } else {
48326
48346
  let t = null;
48327
- r.child !== null && (t = r.child.child), t !== null && z6(e, t, !1);
48347
+ r.child !== null && (t = r.child.child), t !== null && H6(e, t, !1);
48328
48348
  }
48329
- else r.child != null && z6(e, r.child, !0);
48349
+ else r.child != null && H6(e, r.child, !0);
48330
48350
  r = n ? r.sibling : null;
48331
48351
  }
48332
- }, B6 = (e, t, n, r) => {
48333
- if (I6.has(t) || R6(t), !n) return;
48334
- I6.has(n) || R6(n);
48335
- let i = t.tag === 13, a = !D6(t);
48336
- a && E6(t) && e(t, "update");
48352
+ }, U6 = (e, t, n, r) => {
48353
+ if (z6.has(t) || V6(t), !n) return;
48354
+ z6.has(n) || V6(n);
48355
+ let i = t.tag === 13, a = !A6(t);
48356
+ a && k6(t) && e(t, "update");
48337
48357
  let o = i && n.memoizedState !== null, s = i && t.memoizedState !== null;
48338
48358
  if (o && s) {
48339
48359
  let r = t.child?.sibling ?? null, i = n.child?.sibling ?? null;
48340
- r !== null && i !== null && B6(e, r, i, t);
48360
+ r !== null && i !== null && U6(e, r, i, t);
48341
48361
  } else if (o && !s) {
48342
48362
  let n = t.child;
48343
- n !== null && z6(e, n, !0);
48363
+ n !== null && H6(e, n, !0);
48344
48364
  } else if (!o && s) {
48345
- H6(e, n);
48365
+ G6(e, n);
48346
48366
  let r = t.child?.sibling ?? null;
48347
- r !== null && z6(e, r, !0);
48367
+ r !== null && H6(e, r, !0);
48348
48368
  } else if (t.child !== n.child) {
48349
48369
  let n = t.child;
48350
48370
  for (; n;) {
48351
48371
  if (n.alternate) {
48352
48372
  let i = n.alternate;
48353
- B6(e, n, i, a ? t : r);
48354
- } else z6(e, n, !1);
48373
+ U6(e, n, i, a ? t : r);
48374
+ } else H6(e, n, !1);
48355
48375
  n = n.sibling;
48356
48376
  }
48357
48377
  }
48358
- }, V6 = (e, t) => {
48359
- (t.tag === 3 || !D6(t)) && e(t, "unmount");
48360
- }, H6 = (e, t) => {
48378
+ }, W6 = (e, t) => {
48379
+ (t.tag === 3 || !A6(t)) && e(t, "unmount");
48380
+ }, G6 = (e, t) => {
48361
48381
  let n = t.tag === 13 && t.memoizedState !== null, r = t.child;
48362
- for (n && (r = (t.child?.sibling ?? null)?.child ?? null); r !== null;) r.return !== null && (V6(e, r), H6(e, r)), r = r.sibling;
48363
- }, U6 = 0, W6 = /* @__PURE__ */ new WeakMap(), G6 = (e, t) => {
48364
- let n = "current" in e ? e.current : e, r = W6.get(e);
48382
+ for (n && (r = (t.child?.sibling ?? null)?.child ?? null); r !== null;) r.return !== null && (W6(e, r), G6(e, r)), r = r.sibling;
48383
+ }, K6 = 0, q6 = /* @__PURE__ */ new WeakMap(), J6 = (e, t) => {
48384
+ let n = "current" in e ? e.current : e, r = q6.get(e);
48365
48385
  r || (r = {
48366
- id: U6++,
48386
+ id: K6++,
48367
48387
  prevFiber: null
48368
- }, W6.set(e, r));
48388
+ }, q6.set(e, r));
48369
48389
  let { prevFiber: i } = r;
48370
- if (!n) V6(t, n);
48390
+ if (!n) W6(t, n);
48371
48391
  else if (i !== null) {
48372
48392
  let e = i && i.memoizedState != null && i.memoizedState.element != null && i.memoizedState.isDehydrated !== !0, r = n.memoizedState != null && n.memoizedState.element != null && n.memoizedState.isDehydrated !== !0;
48373
- !e && r ? z6(t, n, !1) : e && r ? B6(t, n, n.alternate, null) : e && !r && V6(t, n);
48374
- } else z6(t, n, !0);
48393
+ !e && r ? H6(t, n, !1) : e && r ? U6(t, n, n.alternate, null) : e && !r && W6(t, n);
48394
+ } else H6(t, n, !0);
48375
48395
  r.prevFiber = n;
48376
- }, K6 = (e) => {
48377
- let t = y6(e.onActive);
48378
- t._instrumentationSource = e.name ?? a6;
48396
+ }, Y6 = (e) => {
48397
+ let t = S6(e.onActive);
48398
+ t._instrumentationSource = e.name ?? c6;
48379
48399
  let n = t.onCommitFiberRoot;
48380
48400
  if (e.onCommitFiberRoot) {
48381
48401
  let r = (t, i, a) => {
@@ -48398,52 +48418,52 @@ var A6 = (e, t, n = !1) => {
48398
48418
  t.onPostCommitFiberRoot = n;
48399
48419
  }
48400
48420
  return t;
48401
- }, q6 = !1, J6 = !1, Y6 = [], X6 = -Infinity, Z6 = 200, Q6 = 4e3, $6 = 100;
48402
- function e8() {
48403
- X6 = n8();
48421
+ }, X6 = !1, Z6 = !1, Q6 = [], $6 = -Infinity, e8 = 200, t8 = 4e3, n8 = 100;
48422
+ function r8() {
48423
+ $6 = a8();
48404
48424
  }
48405
- var t8 = [
48425
+ var i8 = [
48406
48426
  "scroll",
48407
48427
  "wheel",
48408
48428
  "pointermove"
48409
48429
  ];
48410
- function n8() {
48430
+ function a8() {
48411
48431
  return typeof performance < "u" ? performance.now() : Date.now();
48412
48432
  }
48413
- function r8(e, t) {
48433
+ function o8(e, t) {
48414
48434
  let n = e && typeof e == "object" ? e : {}, r = t && typeof t == "object" ? t : {}, i = /* @__PURE__ */ new Set([...Object.keys(n), ...Object.keys(r)]), a = [];
48415
48435
  for (let e of i) {
48416
48436
  if (e === "children") continue;
48417
48437
  let t = n[e], i = r[e];
48418
- Object.is(t, i) || (typeof t == "function" && typeof i == "function" ? a.push(`prop:${e}(fn)`) : t && i && typeof t == "object" && typeof i == "object" && i8(t, i) ? a.push(`prop:${e}(ref)`) : a.push(`prop:${e}`));
48438
+ Object.is(t, i) || (typeof t == "function" && typeof i == "function" ? a.push(`prop:${e}(fn)`) : t && i && typeof t == "object" && typeof i == "object" && s8(t, i) ? a.push(`prop:${e}(ref)`) : a.push(`prop:${e}`));
48419
48439
  }
48420
48440
  return a;
48421
48441
  }
48422
- function i8(e, t) {
48442
+ function s8(e, t) {
48423
48443
  let n = Object.keys(e), r = Object.keys(t);
48424
48444
  if (n.length !== r.length) return !1;
48425
48445
  for (let r of n) if (!Object.is(e[r], t[r])) return !1;
48426
48446
  return !0;
48427
48447
  }
48428
- function a8(e) {
48448
+ function c8(e) {
48429
48449
  let t = [], n = {};
48430
- G6(e, (e, r) => {
48431
- if (r === "unmount" || !T6(e)) return;
48432
- let i = P6(e.type) ?? "Anonymous";
48450
+ J6(e, (e, r) => {
48451
+ if (r === "unmount" || !O6(e)) return;
48452
+ let i = L6(e.type) ?? "Anonymous";
48433
48453
  r === "mount" && (n[i] = (n[i] ?? 0) + 1);
48434
48454
  let a = 0;
48435
48455
  try {
48436
- a = M6(e).selfTime || 0;
48456
+ a = F6(e).selfTime || 0;
48437
48457
  } catch {}
48438
48458
  let o = [];
48439
48459
  if (r === "update" && e.alternate) try {
48440
- o = r8(e.alternate.memoizedProps, e.memoizedProps);
48460
+ o = o8(e.alternate.memoizedProps, e.memoizedProps);
48441
48461
  } catch {
48442
48462
  o = ["prop:(unknown)"];
48443
48463
  }
48444
48464
  let s = null;
48445
48465
  try {
48446
- let t = O6(e)?.stateNode;
48466
+ let t = j6(e)?.stateNode;
48447
48467
  t && typeof WeakRef < "u" && t instanceof Element && (s = new WeakRef(t));
48448
48468
  } catch {}
48449
48469
  t.push({
@@ -48454,10 +48474,10 @@ function a8(e) {
48454
48474
  el: s
48455
48475
  });
48456
48476
  }), t.sort((e, t) => t.selfTime - e.selfTime);
48457
- let r = t.slice(0, Z6), i = Math.max(0, t.length - Z6), a = 0;
48477
+ let r = t.slice(0, e8), i = Math.max(0, t.length - e8), a = 0;
48458
48478
  for (let e of t) a += e.selfTime;
48459
- let o = n8(), s = o - X6 <= $6;
48460
- Y6.push({
48479
+ let o = a8(), s = o - $6 <= n8;
48480
+ Q6.push({
48461
48481
  at: o,
48462
48482
  duration: a,
48463
48483
  entries: r,
@@ -48466,55 +48486,55 @@ function a8(e) {
48466
48486
  nearInput: s
48467
48487
  });
48468
48488
  }
48469
- function o8() {
48470
- if (!q6 && !(typeof window > "u")) {
48471
- q6 = !0;
48489
+ function l8() {
48490
+ if (!X6 && !(typeof window > "u")) {
48491
+ X6 = !0;
48472
48492
  try {
48473
- K6({ onCommitFiberRoot: (e, t) => {
48474
- if (J6 && !(Y6.length >= Q6)) try {
48475
- a8(t);
48493
+ Y6({ onCommitFiberRoot: (e, t) => {
48494
+ if (Z6 && !(Q6.length >= t8)) try {
48495
+ c8(t);
48476
48496
  } catch {}
48477
48497
  } });
48478
48498
  } catch {}
48479
48499
  }
48480
48500
  }
48481
- function s8() {
48482
- if (!(typeof window > "u") && !J6) {
48483
- Y6 = [], X6 = -Infinity, o8();
48501
+ function u8() {
48502
+ if (!(typeof window > "u") && !Z6) {
48503
+ Q6 = [], $6 = -Infinity, l8();
48484
48504
  try {
48485
- for (let e of t8) window.addEventListener(e, e8, {
48505
+ for (let e of i8) window.addEventListener(e, r8, {
48486
48506
  capture: !0,
48487
48507
  passive: !0
48488
48508
  });
48489
48509
  } catch {}
48490
- J6 = !0;
48510
+ Z6 = !0;
48491
48511
  }
48492
48512
  }
48493
- function c8() {
48494
- J6 = !1;
48513
+ function d8() {
48514
+ Z6 = !1;
48495
48515
  try {
48496
- for (let e of t8) window.removeEventListener(e, e8, { capture: !0 });
48516
+ for (let e of i8) window.removeEventListener(e, r8, { capture: !0 });
48497
48517
  } catch {}
48498
- let e = Y6;
48499
- return Y6 = [], X6 = -Infinity, e;
48518
+ let e = Q6;
48519
+ return Q6 = [], $6 = -Infinity, e;
48500
48520
  }
48501
- function l8() {
48502
- let e = Y6;
48503
- return Y6 = [], e;
48521
+ function f8() {
48522
+ let e = Q6;
48523
+ return Q6 = [], e;
48504
48524
  }
48505
48525
  //#endregion
48506
48526
  //#region src/lib/renderRulebook.ts
48507
- var u8 = {
48527
+ var p8 = {
48508
48528
  budgets: {
48509
48529
  selfMs: 2,
48510
48530
  commitMs: 8
48511
48531
  },
48512
48532
  rules: {}
48513
- }, d8 = /^###\s+(R\d+)\s*[·.\-–—:]?\s*`([^`]+)`.*?\((error|warn)\)\s*$/;
48514
- function f8(e) {
48515
- return d8.test(e.trim());
48533
+ }, m8 = /^###\s+(R\d+)\s*[·.\-–—:]?\s*`([^`]+)`.*?\((error|warn)\)\s*$/;
48534
+ function h8(e) {
48535
+ return m8.test(e.trim());
48516
48536
  }
48517
- function p8(e, t) {
48537
+ function g8(e, t) {
48518
48538
  let n = e.split("\n"), r = RegExp(`^\\s*\\*\\*${t.source}[^*]*:\\*\\*\\s*(.*)$`, "i"), i = /^\s*\*\*[^*]+:\*\*/, a = 0;
48519
48539
  for (; a < n.length && !r.test(n[a]); a++);
48520
48540
  if (a >= n.length) return "";
@@ -48529,43 +48549,43 @@ function p8(e, t) {
48529
48549
  if (e >= n.length || i.test(n[e]) || /^###\s|^##\s|^---\s*$/.test(n[e])) break;
48530
48550
  }
48531
48551
  }
48532
- return m8(s.join(" ")).trim();
48552
+ return _8(s.join(" ")).trim();
48533
48553
  }
48534
- function m8(e) {
48554
+ function _8(e) {
48535
48555
  return e.replace(/\*\*([^*]+)\*\*/g, "$1").replace(/__([^_]+)__/g, "$1").replace(/(^|[\s(])[*_]([^*_\s][^*_]*?)[*_]([\s.,;:)]|$)/g, "$1$2$3").replace(/\s{2,}/g, " ");
48536
48556
  }
48537
- function h8(e) {
48557
+ function v8(e) {
48538
48558
  let t = e.match(/≤(\d+(?:\.\d+)?)ms self/), n = e.match(/commit >(\d+(?:\.\d+)?)ms/) ?? e.match(/>(\d+(?:\.\d+)?)ms of React work/);
48539
48559
  return {
48540
- selfMs: t ? parseFloat(t[1]) : u8.budgets.selfMs,
48541
- commitMs: n ? parseFloat(n[1]) : u8.budgets.commitMs
48560
+ selfMs: t ? parseFloat(t[1]) : p8.budgets.selfMs,
48561
+ commitMs: n ? parseFloat(n[1]) : p8.budgets.commitMs
48542
48562
  };
48543
48563
  }
48544
- function g8(e) {
48545
- let t = h8(e), n = {}, r = e.split("\n"), i = 0;
48564
+ function y8(e) {
48565
+ let t = v8(e), n = {}, r = e.split("\n"), i = 0;
48546
48566
  for (; i < r.length;) {
48547
48567
  let e = r[i];
48548
- if (!f8(e)) {
48568
+ if (!h8(e)) {
48549
48569
  i++;
48550
48570
  continue;
48551
48571
  }
48552
48572
  let t = e.trim(), a = [], o = i + 1;
48553
48573
  for (; o < r.length; o++) {
48554
48574
  let e = r[o];
48555
- if (f8(e) || /^##\s/.test(e.trim()) || /^---\s*$/.test(e.trim())) break;
48575
+ if (h8(e) || /^##\s/.test(e.trim()) || /^---\s*$/.test(e.trim())) break;
48556
48576
  a.push(e);
48557
48577
  }
48558
48578
  try {
48559
- let e = t.match(d8);
48579
+ let e = t.match(m8);
48560
48580
  if (e) {
48561
48581
  let [, t, r, i] = e, o = a.join("\n");
48562
48582
  n[t] = {
48563
48583
  id: t,
48564
48584
  slug: r,
48565
48585
  severity: i === "warn" ? "warn" : "error",
48566
- ruleText: p8(o, /Rule/),
48567
- fixText: p8(o, /Fix/),
48568
- detectText: p8(o, /Detect/)
48586
+ ruleText: g8(o, /Rule/),
48587
+ fixText: g8(o, /Fix/),
48588
+ detectText: g8(o, /Detect/)
48569
48589
  };
48570
48590
  }
48571
48591
  } catch {}
@@ -48579,114 +48599,122 @@ function g8(e) {
48579
48599
  //#endregion
48580
48600
  //#region src/lib/renderScanStore.ts
48581
48601
  Br();
48582
- var _8 = [], v8 = /* @__PURE__ */ new Set();
48583
- function y8(e) {
48584
- return v8.add(e), e(_8), () => void v8.delete(e);
48585
- }
48586
- function b8() {
48587
- _8 = [];
48588
- for (let e of v8) e(_8);
48589
- }
48590
- function x8(e, t) {
48591
- _8 = [...e, ..._8.filter((e) => e.page !== t)];
48592
- for (let e of v8) e(_8);
48593
- return K8(e).then(() => {
48594
- _8 = [..._8];
48595
- for (let e of v8) e(_8);
48596
- q8(e);
48602
+ var b8 = [], x8 = /* @__PURE__ */ new Set();
48603
+ function S8(e) {
48604
+ return x8.add(e), e(b8), () => void x8.delete(e);
48605
+ }
48606
+ function C8() {
48607
+ b8 = [];
48608
+ for (let e of x8) e(b8);
48609
+ }
48610
+ function w8(e, t) {
48611
+ b8 = [...e, ...b8.filter((e) => e.page !== t)];
48612
+ for (let e of x8) e(b8);
48613
+ return X8(e).then(() => {
48614
+ b8 = [...b8];
48615
+ for (let e of x8) e(b8);
48616
+ Z8(e);
48597
48617
  }), e;
48598
48618
  }
48599
- var S8 = /* @__PURE__ */ new Set(), C8 = !1, w8 = null;
48600
- function T8(e) {
48601
- return S8.add(e), e(C8, w8), () => void S8.delete(e);
48619
+ var T8 = /* @__PURE__ */ new Set(), E8 = !1, D8 = null;
48620
+ function O8(e) {
48621
+ return T8.add(e), e(E8, D8), () => void T8.delete(e);
48602
48622
  }
48603
- function E8() {
48604
- if (!(O8 || C8)) {
48605
- s8(), C8 = !0, w8 = Date.now();
48606
- for (let e of S8) e(!0, w8);
48623
+ function k8() {
48624
+ if (!(j8 || E8)) {
48625
+ u8(), E8 = !0, D8 = Date.now();
48626
+ for (let e of T8) e(!0, D8);
48607
48627
  }
48608
48628
  }
48609
- async function D8() {
48610
- if (!C8) return [];
48611
- let e = c8();
48612
- C8 = !1, w8 = null;
48613
- for (let e of S8) e(!1, null);
48614
- let t = await U8(), n = location.pathname;
48615
- return x8(K3(e, t).map((e) => ({
48629
+ async function A8() {
48630
+ if (!E8) return [];
48631
+ let e = d8();
48632
+ E8 = !1, D8 = null;
48633
+ for (let e of T8) e(!1, null);
48634
+ let t = await K8(), n = location.pathname;
48635
+ return w8(Y3(e, t, { ignore: await J8() }).map((e) => ({
48616
48636
  ...e,
48617
48637
  page: n
48618
48638
  })), n);
48619
48639
  }
48620
- var O8 = !1;
48640
+ var j8 = !1;
48621
48641
  try {
48622
- O8 = localStorage.getItem("linear-grab:render-live") === "1";
48642
+ j8 = localStorage.getItem("linear-grab:render-live") === "1";
48623
48643
  } catch {}
48624
- var k8 = /* @__PURE__ */ new Set();
48625
- function A8(e) {
48626
- return k8.add(e), e(O8), () => void k8.delete(e);
48627
- }
48628
- var j8 = 3e3, M8 = 4e3, N8 = null, P8 = [], F8 = "";
48629
- function I8(e) {
48630
- if (e !== O8 && !(e && C8)) {
48631
- O8 = e;
48644
+ var M8 = /* @__PURE__ */ new Set();
48645
+ function N8(e) {
48646
+ return M8.add(e), e(j8), () => void M8.delete(e);
48647
+ }
48648
+ var P8 = 3e3, F8 = 4e3, I8 = null, L8 = [], R8 = "";
48649
+ function z8(e) {
48650
+ if (e !== j8 && !(e && E8)) {
48651
+ j8 = e;
48632
48652
  try {
48633
48653
  localStorage.setItem("linear-grab:render-live", e ? "1" : "0");
48634
48654
  } catch {}
48635
- for (let t of k8) t(e);
48636
- e ? (s8(), P8 = [], F8 = location.pathname, N8 = setInterval(() => void L8(!1), j8)) : (N8 && clearInterval(N8), N8 = null, L8(!0).finally(() => {
48637
- c8(), P8 = [];
48655
+ for (let t of M8) t(e);
48656
+ e ? (u8(), L8 = [], R8 = location.pathname, I8 = setInterval(() => void B8(!1), P8)) : (I8 && clearInterval(I8), I8 = null, B8(!0).finally(() => {
48657
+ d8(), L8 = [];
48638
48658
  }));
48639
48659
  }
48640
48660
  }
48641
- async function L8(e) {
48661
+ async function B8(e) {
48642
48662
  try {
48643
48663
  let t = location.pathname;
48644
- if (t !== F8) {
48645
- let e = _8.filter((e) => e.page === F8);
48646
- K8(e).then(() => {
48647
- _8 = [..._8];
48648
- for (let e of v8) e(_8);
48649
- q8(e);
48650
- }), P8 = [], F8 = t;
48651
- }
48652
- P8.push(...l8()), P8.length > M8 && P8.splice(0, P8.length - M8);
48653
- let n = await U8(), r = K3(P8, n).map((e) => ({
48664
+ if (t !== R8) {
48665
+ let e = b8.filter((e) => e.page === R8);
48666
+ X8(e).then(() => {
48667
+ b8 = [...b8];
48668
+ for (let e of x8) e(b8);
48669
+ Z8(e);
48670
+ }), L8 = [], R8 = t;
48671
+ }
48672
+ L8.push(...f8()), L8.length > F8 && L8.splice(0, L8.length - F8);
48673
+ let n = await K8(), r = Y3(L8, n, { ignore: await J8() }).map((e) => ({
48654
48674
  ...e,
48655
48675
  page: t
48656
48676
  }));
48657
- _8 = [...r, ..._8.filter((e) => e.page !== t)];
48658
- for (let e of v8) e(_8);
48677
+ b8 = [...r, ...b8.filter((e) => e.page !== t)];
48678
+ for (let e of x8) e(b8);
48659
48679
  if (e) {
48660
- await K8(r), _8 = [..._8];
48661
- for (let e of v8) e(_8);
48662
- q8(r);
48680
+ await X8(r), b8 = [...b8];
48681
+ for (let e of x8) e(b8);
48682
+ Z8(r);
48663
48683
  }
48664
48684
  } catch {}
48665
48685
  }
48666
- function R8() {
48667
- typeof window > "u" || !O8 || N8 || (s8(), P8 = [], F8 = location.pathname, N8 = setInterval(() => void L8(!1), j8));
48686
+ function V8() {
48687
+ typeof window > "u" || !j8 || I8 || (u8(), L8 = [], R8 = location.pathname, I8 = setInterval(() => void B8(!1), P8));
48668
48688
  }
48669
- function z8() {
48689
+ function H8() {
48670
48690
  let e = location.pathname;
48671
- return x8(J3(document).map((t) => ({
48691
+ return w8(Z3(document).map((t) => ({
48672
48692
  ...t,
48673
48693
  page: e
48674
48694
  })), e);
48675
48695
  }
48676
- var B8 = 5 * 6e4, V8 = null, H8 = 0;
48677
- async function U8() {
48678
- if (V8 && Date.now() - H8 < B8) return V8;
48679
- let e = u8;
48696
+ var U8 = 5 * 6e4, W8 = null, G8 = 0;
48697
+ async function K8() {
48698
+ if (W8 && Date.now() - G8 < U8) return W8;
48699
+ let e = p8;
48680
48700
  try {
48681
48701
  let t = await YO(), n = await (await fetch(`${t}/scan/rulebook`)).json();
48682
- n.ok && n.text && (e = g8(n.text));
48702
+ n.ok && n.text && (e = y8(n.text));
48683
48703
  } catch {}
48684
- return e = await G8(e), V8 = e, H8 = Date.now(), e;
48704
+ return e = await Y8(e), W8 = e, G8 = Date.now(), e;
48705
+ }
48706
+ function q8() {
48707
+ return W8;
48685
48708
  }
48686
- function W8() {
48687
- return V8;
48709
+ async function J8() {
48710
+ try {
48711
+ let e = await Tr();
48712
+ return Array.isArray(e.renderIgnore) ? e.renderIgnore : void 0;
48713
+ } catch {
48714
+ return;
48715
+ }
48688
48716
  }
48689
- async function G8(e) {
48717
+ async function Y8(e) {
48690
48718
  try {
48691
48719
  let t = (await Tr()).renderBudgets;
48692
48720
  if (t && (t.selfMs != null || t.commitMs != null)) return {
@@ -48699,7 +48727,7 @@ async function G8(e) {
48699
48727
  } catch {}
48700
48728
  return e;
48701
48729
  }
48702
- async function K8(e) {
48730
+ async function X8(e) {
48703
48731
  let t = null;
48704
48732
  try {
48705
48733
  t = (await Promise.resolve().then(() => (RZ(), AZ))).getGlobalApi() ?? null;
@@ -48728,7 +48756,7 @@ async function K8(e) {
48728
48756
  if (!(!n && !a)) for (let e of i) !e.component && n && (e.component = n), a && (e.source = a);
48729
48757
  }
48730
48758
  }
48731
- function q8(e) {
48759
+ function Z8(e) {
48732
48760
  if (e.length === 0) return;
48733
48761
  let t = Date.now(), n = e.slice(0, 200).map(({ el: e, ...n }) => ({
48734
48762
  kind: "render-scan",
@@ -48744,8 +48772,8 @@ function q8(e) {
48744
48772
  }
48745
48773
  //#endregion
48746
48774
  //#region src/panel/views/RendersView.tsx
48747
- var J8 = /*#__PURE__*/ N("<span class=\"text-text-faint font-normal tabular-nums\"> · <!> pages"), Y8 = /*#__PURE__*/ N("<span class=\"bg-danger size-1.5 shrink-0 animate-pulse rounded-full\"aria-hidden>"), X8 = /*#__PURE__*/ N("<span class=\"text-danger inline-block min-w-[4ch] text-right text-[10.5px] font-medium tabular-nums\">"), Z8 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"aria-hidden><rect x=3.5 y=3.5 width=9 height=9 rx=1.5 fill=currentColor>"), Q8 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"aria-hidden><rect x=4 y=3.5 width=3 height=9 rx=1 fill=currentColor></rect><rect x=9 y=3.5 width=3 height=9 rx=1 fill=currentColor>"), $8 = /*#__PURE__*/ N("<span class=\"bg-success absolute -top-0.5 -right-0.5 size-1.5 animate-pulse rounded-full\"aria-hidden>"), e5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round aria-hidden><path d=\"M5.5 3 6.5 1.5h3L10.5 3h2A1.5 1.5 0 0 1 14 4.5v7A1.5 1.5 0 0 1 12.5 13h-9A1.5 1.5 0 0 1 2 11.5v-7A1.5 1.5 0 0 1 3.5 3h2Z\"></path><circle cx=8 cy=7.75 r=2.25>"), t5 = /*#__PURE__*/ N("<span class=\"text-success text-[12px] leading-none\">✓"), n5 = /*#__PURE__*/ N("<svg width=12 height=12 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round aria-hidden><path d=\"M4 4l8 8M12 4l-8 8\">"), r5 = /*#__PURE__*/ N("<p class=\"text-text-faint px-1 text-[10.5px] leading-snug\">Recording commits… interact with the page."), i5 = /*#__PURE__*/ N("<p class=\"text-text-faint px-1 text-[10.5px] leading-snug\">Live render scan — findings update as you interact and navigate."), a5 = /*#__PURE__*/ N("<div class=\"flex items-center gap-1 px-1\"><button class=\"border-border cursor-pointer rounded-full border px-2 py-0.5 text-[10px] font-medium tabular-nums\"> errors</button><button class=\"border-border cursor-pointer rounded-full border px-2 py-0.5 text-[10px] font-medium tabular-nums\"> warns"), o5 = /*#__PURE__*/ N("<div class=\"flex max-h-[28rem] flex-col gap-1.5 overflow-y-auto pr-3 pl-2\">"), s5 = /*#__PURE__*/ N("<div class=\"flex h-full flex-col gap-3 overflow-y-auto pt-3 pb-4 pr-3 pl-2\"><div class=\"flex flex-col gap-1 px-1\"><div class=\"flex items-center justify-between gap-2\"><p class=\"text-text min-w-0 truncate text-[12.5px] font-semibold\">Renders</p><div class=\"flex shrink-0 items-center gap-1\"></div></div><p class=\"text-text-faint text-[10.5px] leading-snug\">Commits graded against React-rerender-primitives.md — record then interact, go live, or snapshot the DOM. Accumulates per page."), c5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 aria-hidden><circle cx=8 cy=8 r=6></circle><circle cx=8 cy=8 r=2.25 fill=currentColor stroke=none>"), l5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"aria-hidden><path d=\"M5 3.3v9.4a.5.5 0 0 0 .77.42l7.1-4.7a.5.5 0 0 0 0-.84l-7.1-4.7A.5.5 0 0 0 5 3.3Z\"fill=currentColor>"), u5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round aria-hidden><path d=\"M8 1.5 9.6 6l4.4 1.6L9.6 9.2 8 13.7 6.4 9.2 2 7.6 6.4 6Z\"></path><path d=\"M13 11.5l.6 1.7 1.7.6-1.7.6-.6 1.7-.6-1.7-1.7-.6 1.7-.6Z\">"), d5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linejoin=round aria-hidden><rect x=5.5 y=5.5 width=9 height=9 rx=1.5></rect><path d=\"M10.5 5.5v-2a2 2 0 0 0-2-2h-5a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h2\">"), f5 = /*#__PURE__*/ N("<div class=\"border-border flex flex-col gap-1 border-t px-2 py-1.5\">"), p5 = /*#__PURE__*/ N("<div class=\"bg-surface border-border flex flex-col rounded-lg border\"><button class=\"flex w-full cursor-pointer items-center gap-2 px-2 py-1.5 text-left\"><span class=\"size-1.5 shrink-0 rounded-full\"aria-hidden></span><span class=\"text-accent min-w-0 truncate font-mono text-[11.5px]\"></span><span class=\"text-text-faint ml-auto shrink-0 text-[10.5px] tabular-nums\">×</span><svg width=10 height=10 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 class=\"text-text-faint shrink-0 transition-transform\"aria-hidden><path d=\"m4 6 4 4 4-4\">"), m5 = /*#__PURE__*/ N("<span class=\"text-accent font-mono\"> "), h5 = /*#__PURE__*/ N("<span class=\"text-text-faint tabular-nums\"> ×"), g5 = /*#__PURE__*/ N("<span class=\"flex flex-wrap gap-1\">"), _5 = /*#__PURE__*/ N("<span class=\"text-text-dim font-mono\"> · "), v5 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-0.5 rounded px-1 py-0.5 text-left\"><span class=\"text-text-dim text-[10.5px] leading-snug\"></span><span class=\"text-text-faint text-[10px] leading-snug tabular-nums\">"), y5 = /*#__PURE__*/ N("<span class=\"bg-surface-2 text-text-dim rounded px-1 font-mono text-[9.5px] leading-relaxed\">");
48748
- function b5(e) {
48775
+ var Q8 = /*#__PURE__*/ N("<span class=\"text-text-faint font-normal tabular-nums\"> · <!> pages"), $8 = /*#__PURE__*/ N("<span class=\"bg-danger size-1.5 shrink-0 animate-pulse rounded-full\"aria-hidden>"), e5 = /*#__PURE__*/ N("<span class=\"text-danger inline-block min-w-[4ch] text-right text-[10.5px] font-medium tabular-nums\">"), t5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"aria-hidden><rect x=3.5 y=3.5 width=9 height=9 rx=1.5 fill=currentColor>"), n5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"aria-hidden><rect x=4 y=3.5 width=3 height=9 rx=1 fill=currentColor></rect><rect x=9 y=3.5 width=3 height=9 rx=1 fill=currentColor>"), r5 = /*#__PURE__*/ N("<span class=\"bg-success absolute -top-0.5 -right-0.5 size-1.5 animate-pulse rounded-full\"aria-hidden>"), i5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round aria-hidden><path d=\"M5.5 3 6.5 1.5h3L10.5 3h2A1.5 1.5 0 0 1 14 4.5v7A1.5 1.5 0 0 1 12.5 13h-9A1.5 1.5 0 0 1 2 11.5v-7A1.5 1.5 0 0 1 3.5 3h2Z\"></path><circle cx=8 cy=7.75 r=2.25>"), a5 = /*#__PURE__*/ N("<span class=\"text-success text-[12px] leading-none\">✓"), o5 = /*#__PURE__*/ N("<svg width=12 height=12 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round aria-hidden><path d=\"M4 4l8 8M12 4l-8 8\">"), s5 = /*#__PURE__*/ N("<p class=\"text-text-faint px-1 text-[10.5px] leading-snug\">Recording commits… interact with the page."), c5 = /*#__PURE__*/ N("<p class=\"text-text-faint px-1 text-[10.5px] leading-snug\">Live render scan — findings update as you interact and navigate."), l5 = /*#__PURE__*/ N("<div class=\"flex items-center gap-1 px-1\"><button class=\"border-border cursor-pointer rounded-full border px-2 py-0.5 text-[10px] font-medium tabular-nums\"> errors</button><button class=\"border-border cursor-pointer rounded-full border px-2 py-0.5 text-[10px] font-medium tabular-nums\"> warns"), u5 = /*#__PURE__*/ N("<div class=\"flex max-h-[28rem] flex-col gap-1.5 overflow-y-auto pr-3 pl-2\">"), d5 = /*#__PURE__*/ N("<div class=\"flex h-full flex-col gap-3 overflow-y-auto pt-3 pb-4 pr-3 pl-2\"><div class=\"flex flex-col gap-1 px-1\"><div class=\"flex items-center justify-between gap-2\"><p class=\"text-text min-w-0 truncate text-[12.5px] font-semibold\">Renders</p><div class=\"flex shrink-0 items-center gap-1\"></div></div><p class=\"text-text-faint text-[10.5px] leading-snug\">Commits graded against React-rerender-primitives.md — record then interact, go live, or snapshot the DOM. Accumulates per page."), f5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 aria-hidden><circle cx=8 cy=8 r=6></circle><circle cx=8 cy=8 r=2.25 fill=currentColor stroke=none>"), p5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"aria-hidden><path d=\"M5 3.3v9.4a.5.5 0 0 0 .77.42l7.1-4.7a.5.5 0 0 0 0-.84l-7.1-4.7A.5.5 0 0 0 5 3.3Z\"fill=currentColor>"), m5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round stroke-linejoin=round aria-hidden><path d=\"M8 1.5 9.6 6l4.4 1.6L9.6 9.2 8 13.7 6.4 9.2 2 7.6 6.4 6Z\"></path><path d=\"M13 11.5l.6 1.7 1.7.6-1.7.6-.6 1.7-.6-1.7-1.7-.6 1.7-.6Z\">"), h5 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linejoin=round aria-hidden><rect x=5.5 y=5.5 width=9 height=9 rx=1.5></rect><path d=\"M10.5 5.5v-2a2 2 0 0 0-2-2h-5a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h2\">"), g5 = /*#__PURE__*/ N("<div class=\"border-border flex flex-col gap-1 border-t px-2 py-1.5\">"), _5 = /*#__PURE__*/ N("<div class=\"bg-surface border-border flex flex-col rounded-lg border\"><button class=\"flex w-full cursor-pointer items-center gap-2 px-2 py-1.5 text-left\"><span class=\"size-1.5 shrink-0 rounded-full\"aria-hidden></span><span class=\"text-accent min-w-0 truncate font-mono text-[11.5px]\"></span><span class=\"text-text-faint ml-auto shrink-0 text-[10.5px] tabular-nums\">×</span><svg width=10 height=10 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 class=\"text-text-faint shrink-0 transition-transform\"aria-hidden><path d=\"m4 6 4 4 4-4\">"), v5 = /*#__PURE__*/ N("<span class=\"text-accent font-mono\"> "), y5 = /*#__PURE__*/ N("<span class=\"text-text-faint tabular-nums\"> ×"), b5 = /*#__PURE__*/ N("<span class=\"flex flex-wrap gap-1\">"), x5 = /*#__PURE__*/ N("<span class=\"text-text-dim font-mono\"> · "), S5 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-0.5 rounded px-1 py-0.5 text-left\"><span class=\"text-text-dim text-[10.5px] leading-snug\"></span><span class=\"text-text-faint text-[10px] leading-snug tabular-nums\">"), C5 = /*#__PURE__*/ N("<span class=\"bg-surface-2 text-text-dim rounded px-1 font-mono text-[9.5px] leading-relaxed\">");
48776
+ function w5(e) {
48749
48777
  let t = e.el?.deref();
48750
48778
  if (!(t instanceof HTMLElement) || !t.isConnected) return !1;
48751
48779
  t.scrollIntoView({
@@ -48757,45 +48785,45 @@ function b5(e) {
48757
48785
  t.style.outline = n, t.style.outlineOffset = r;
48758
48786
  }, 1400), !0;
48759
48787
  }
48760
- function x5(e) {
48788
+ function T5(e) {
48761
48789
  let t = Math.max(0, Math.floor(e / 1e3));
48762
48790
  return `${Math.floor(t / 60)}:${String(t % 60).padStart(2, "0")}`;
48763
48791
  }
48764
- function S5(e) {
48792
+ function E5(e) {
48765
48793
  return e.replace(/^prop:/, "");
48766
48794
  }
48767
- function C5() {
48795
+ function D5() {
48768
48796
  let [e, t] = T([]);
48769
- ae(y8(t));
48797
+ ae(S8(t));
48770
48798
  let [n, r] = T(!1), [i, a] = T(null), [o, s] = T(Date.now()), c = null, l = () => {
48771
48799
  c && clearInterval(c), c = null;
48772
48800
  };
48773
- ae(l), ae(T8((e, t) => {
48801
+ ae(l), ae(O8((e, t) => {
48774
48802
  r(e), a(t), e ? (s(Date.now()), c ||= setInterval(() => s(Date.now()), 500)) : l();
48775
48803
  }));
48776
48804
  let [u, d] = T(!1);
48777
- ae(A8(d));
48778
- let [f, p] = T(W8());
48779
- U8().then(p);
48805
+ ae(N8(d));
48806
+ let [f, p] = T(q8());
48807
+ K8().then(p);
48780
48808
  let [m, h] = T(null), [g, _] = T(null), [v, y] = T(!0), [b, x] = T(!0), [S, C] = T(!1), [w, E] = T(!1), [O, k] = T(!1), ee = async () => {
48781
48809
  if (h(null), n()) try {
48782
- let e = await D8();
48783
- p(W8()), _(null), e.length === 0 && h("No re-render anti-patterns caught — interact more (scroll, open menus, type) between record and stop.");
48810
+ let e = await A8();
48811
+ p(q8()), _(null), e.length === 0 && h("No re-render anti-patterns caught — interact more (scroll, open menus, type) between record and stop.");
48784
48812
  } catch (e) {
48785
48813
  h(e instanceof Error ? e.message : String(e));
48786
48814
  }
48787
- else E8();
48815
+ else k8();
48788
48816
  }, te = () => {
48789
48817
  h(null), C(!0);
48790
48818
  try {
48791
- z8(), _(null);
48819
+ H8(), _(null);
48792
48820
  } catch (e) {
48793
48821
  h(e instanceof Error ? e.message : String(e));
48794
48822
  } finally {
48795
48823
  C(!1);
48796
48824
  }
48797
48825
  }, A = () => {
48798
- b8(), _(null);
48826
+ C8(), _(null);
48799
48827
  }, ne = () => new Set(e().map((e) => e.page)).size, re = () => e().filter((e) => e.severity === "error" ? v() : b()), ie = () => e().filter((e) => e.severity === "error").reduce((e, t) => e + (t.count ?? 1), 0), oe = () => e().reduce((e, t) => e + (t.count ?? 1), 0) - ie(), se = () => {
48800
48828
  let e = /* @__PURE__ */ new Map();
48801
48829
  for (let t of re()) {
@@ -48808,19 +48836,19 @@ function C5() {
48808
48836
  return t ? `${e} · ${t}` : e;
48809
48837
  }, le = async () => {
48810
48838
  try {
48811
- await navigator.clipboard.writeText(r6(re())), E(!0), setTimeout(() => E(!1), 1600);
48839
+ await navigator.clipboard.writeText(o6(re())), E(!0), setTimeout(() => E(!1), 1600);
48812
48840
  } catch {
48813
48841
  h("Clipboard was blocked — click Copy again.");
48814
48842
  }
48815
48843
  }, ue = async () => {
48816
48844
  try {
48817
- await navigator.clipboard.writeText(i6(re(), await U8())), k(!0), setTimeout(() => k(!1), 1600);
48845
+ await navigator.clipboard.writeText(s6(re(), await K8())), k(!0), setTimeout(() => k(!1), 1600);
48818
48846
  } catch {
48819
48847
  h("Clipboard was blocked — click Copy again.");
48820
48848
  }
48821
48849
  };
48822
48850
  return (() => {
48823
- var t = s5(), r = t.firstChild.firstChild.firstChild;
48851
+ var t = d5(), r = t.firstChild.firstChild.firstChild;
48824
48852
  r.firstChild;
48825
48853
  var a = r.nextSibling;
48826
48854
  return P(r, j(M, {
@@ -48828,7 +48856,7 @@ function C5() {
48828
48856
  return ne() > 1;
48829
48857
  },
48830
48858
  get children() {
48831
- var e = J8(), t = e.firstChild.nextSibling;
48859
+ var e = Q8(), t = e.firstChild.nextSibling;
48832
48860
  return t.nextSibling, P(e, ne, t), e;
48833
48861
  }
48834
48862
  }), null), P(a, j(M, {
@@ -48836,9 +48864,9 @@ function C5() {
48836
48864
  return n();
48837
48865
  },
48838
48866
  get children() {
48839
- return [Y8(), (() => {
48840
- var e = X8();
48841
- return P(e, () => x5(o() - (i() ?? o()))), e;
48867
+ return [$8(), (() => {
48868
+ var e = e5();
48869
+ return P(e, () => T5(o() - (i() ?? o()))), e;
48842
48870
  })()];
48843
48871
  }
48844
48872
  }), null), P(a, j(q, {
@@ -48846,6 +48874,7 @@ function C5() {
48846
48874
  get variant() {
48847
48875
  return n() ? "danger" : "ghost";
48848
48876
  },
48877
+ "data-tip-pos": "bottom left",
48849
48878
  get disabled() {
48850
48879
  return u();
48851
48880
  },
@@ -48862,16 +48891,17 @@ function C5() {
48862
48891
  return n();
48863
48892
  },
48864
48893
  get fallback() {
48865
- return c5();
48894
+ return f5();
48866
48895
  },
48867
48896
  get children() {
48868
- return Z8();
48897
+ return t5();
48869
48898
  }
48870
48899
  });
48871
48900
  }
48872
48901
  }), null), P(a, j(q, {
48873
48902
  class: "relative size-7 px-0",
48874
48903
  variant: "ghost",
48904
+ "data-tip-pos": "bottom left",
48875
48905
  get disabled() {
48876
48906
  return n();
48877
48907
  },
@@ -48879,30 +48909,31 @@ function C5() {
48879
48909
  return u() ? "Pause live render scan" : "Live render scan — findings update as you browse";
48880
48910
  },
48881
48911
  "aria-label": "Toggle live render scan",
48882
- onClick: () => I8(!u()),
48912
+ onClick: () => z8(!u()),
48883
48913
  get children() {
48884
48914
  return [j(M, {
48885
48915
  get when() {
48886
48916
  return u();
48887
48917
  },
48888
48918
  get fallback() {
48889
- return l5();
48919
+ return p5();
48890
48920
  },
48891
48921
  get children() {
48892
- return Q8();
48922
+ return n5();
48893
48923
  }
48894
48924
  }), j(M, {
48895
48925
  get when() {
48896
48926
  return u();
48897
48927
  },
48898
48928
  get children() {
48899
- return $8();
48929
+ return r5();
48900
48930
  }
48901
48931
  })];
48902
48932
  }
48903
48933
  }), null), P(a, j(q, {
48904
48934
  class: "size-7 px-0",
48905
48935
  variant: "ghost",
48936
+ "data-tip-pos": "bottom left",
48906
48937
  get loading() {
48907
48938
  return S();
48908
48939
  },
@@ -48910,11 +48941,12 @@ function C5() {
48910
48941
  "aria-label": "Snapshot scan",
48911
48942
  onClick: te,
48912
48943
  get children() {
48913
- return e5();
48944
+ return i5();
48914
48945
  }
48915
48946
  }), null), P(a, j(q, {
48916
48947
  class: "size-7 px-0",
48917
48948
  variant: "ghost",
48949
+ "data-tip-pos": "bottom left",
48918
48950
  get title() {
48919
48951
  return O() ? "Copied!" : "Copy AI fix prompt";
48920
48952
  },
@@ -48926,16 +48958,17 @@ function C5() {
48926
48958
  return O();
48927
48959
  },
48928
48960
  get fallback() {
48929
- return u5();
48961
+ return m5();
48930
48962
  },
48931
48963
  get children() {
48932
- return t5();
48964
+ return a5();
48933
48965
  }
48934
48966
  });
48935
48967
  }
48936
48968
  }), null), P(a, j(q, {
48937
48969
  class: "size-7 px-0",
48938
48970
  variant: "ghost",
48971
+ "data-tip-pos": "bottom left",
48939
48972
  get title() {
48940
48973
  return w() ? "Copied!" : "Copy report";
48941
48974
  },
@@ -48947,21 +48980,22 @@ function C5() {
48947
48980
  return w();
48948
48981
  },
48949
48982
  get fallback() {
48950
- return d5();
48983
+ return h5();
48951
48984
  },
48952
48985
  get children() {
48953
- return t5();
48986
+ return a5();
48954
48987
  }
48955
48988
  });
48956
48989
  }
48957
48990
  }), null), P(a, j(q, {
48958
48991
  class: "text-danger size-7 px-0",
48959
48992
  variant: "ghost",
48993
+ "data-tip-pos": "bottom left",
48960
48994
  title: "Clear findings",
48961
48995
  "aria-label": "Clear findings",
48962
48996
  onClick: A,
48963
48997
  get children() {
48964
- return n5();
48998
+ return o5();
48965
48999
  }
48966
49000
  }), null), P(t, j(M, {
48967
49001
  get when() {
@@ -48977,14 +49011,14 @@ function C5() {
48977
49011
  return n();
48978
49012
  },
48979
49013
  get children() {
48980
- return r5();
49014
+ return s5();
48981
49015
  }
48982
49016
  }), null), P(t, j(M, {
48983
49017
  get when() {
48984
49018
  return $e(() => !!u())() && !n();
48985
49019
  },
48986
49020
  get children() {
48987
- return i5();
49021
+ return c5();
48988
49022
  }
48989
49023
  }), null), P(t, j(M, {
48990
49024
  get when() {
@@ -49005,7 +49039,7 @@ function C5() {
49005
49039
  },
49006
49040
  get children() {
49007
49041
  return [(() => {
49008
- var e = a5(), t = e.firstChild, n = t.firstChild, r = t.nextSibling, i = r.firstChild;
49042
+ var e = l5(), t = e.firstChild, n = t.firstChild, r = t.nextSibling, i = r.firstChild;
49009
49043
  return t.$$click = () => y(!v()), P(t, ie, n), r.$$click = () => x(!b()), P(r, oe, i), D((e) => {
49010
49044
  var n = {
49011
49045
  "text-danger bg-danger/10 border-danger/40": v(),
@@ -49022,7 +49056,7 @@ function C5() {
49022
49056
  o: void 0
49023
49057
  }), e;
49024
49058
  })(), (() => {
49025
- var e = o5();
49059
+ var e = u5();
49026
49060
  return P(e, j(We, {
49027
49061
  get each() {
49028
49062
  return se();
@@ -49030,7 +49064,7 @@ function C5() {
49030
49064
  children: ([e, t]) => {
49031
49065
  let n = t[0], r = () => g() === e;
49032
49066
  return (() => {
49033
- var i = p5(), a = i.firstChild, o = a.firstChild, s = o.nextSibling, c = s.nextSibling;
49067
+ var i = _5(), a = i.firstChild, o = a.firstChild, s = o.nextSibling, c = s.nextSibling;
49034
49068
  c.firstChild;
49035
49069
  var l = c.nextSibling;
49036
49070
  return a.$$click = () => _(r() ? null : e), P(s, () => ce(e)), P(c, () => t.reduce((e, t) => e + (t.count ?? 1), 0), null), P(i, j(M, {
@@ -49038,21 +49072,21 @@ function C5() {
49038
49072
  return r();
49039
49073
  },
49040
49074
  get children() {
49041
- var e = f5();
49075
+ var e = g5();
49042
49076
  return P(e, j(We, {
49043
49077
  each: t,
49044
49078
  children: (e) => {
49045
49079
  let t = () => e.el?.deref() != null;
49046
49080
  return (() => {
49047
- var n = v5(), r = n.firstChild, i = r.nextSibling;
49081
+ var n = S5(), r = n.firstChild, i = r.nextSibling;
49048
49082
  return n.$$click = () => {
49049
- t() && (b5(e) || h(e.page === location.pathname ? "Element is gone — record or snapshot again." : `This finding is on ${e.page} — navigate there to reveal it.`));
49083
+ t() && (w5(e) || h(e.page === location.pathname ? "Element is gone — record or snapshot again." : `This finding is on ${e.page} — navigate there to reveal it.`));
49050
49084
  }, P(r, j(M, {
49051
49085
  get when() {
49052
49086
  return ne() > 1;
49053
49087
  },
49054
49088
  get children() {
49055
- var t = m5(), n = t.firstChild;
49089
+ var t = v5(), n = t.firstChild;
49056
49090
  return P(t, () => e.page, n), t;
49057
49091
  }
49058
49092
  }), null), P(r, () => e.description, null), P(r, j(M, {
@@ -49060,7 +49094,7 @@ function C5() {
49060
49094
  return (e.count ?? 1) > 1;
49061
49095
  },
49062
49096
  get children() {
49063
- var t = h5();
49097
+ var t = y5();
49064
49098
  return t.firstChild, P(t, () => e.count, null), t;
49065
49099
  }
49066
49100
  }), null), P(n, j(M, {
@@ -49068,14 +49102,14 @@ function C5() {
49068
49102
  return e.changes.length > 0;
49069
49103
  },
49070
49104
  get children() {
49071
- var t = g5();
49105
+ var t = b5();
49072
49106
  return P(t, j(We, {
49073
49107
  get each() {
49074
49108
  return e.changes;
49075
49109
  },
49076
49110
  children: (e) => (() => {
49077
- var t = y5();
49078
- return P(t, () => S5(e)), t;
49111
+ var t = C5();
49112
+ return P(t, () => E5(e)), t;
49079
49113
  })()
49080
49114
  })), t;
49081
49115
  }
@@ -49084,7 +49118,7 @@ function C5() {
49084
49118
  return e.component || e.source;
49085
49119
  },
49086
49120
  get children() {
49087
- var t = _5();
49121
+ var t = x5();
49088
49122
  return t.firstChild, P(t, () => [e.component, e.source].filter(Boolean).join(" @ "), null), t;
49089
49123
  }
49090
49124
  }), null), D((e) => {
@@ -49117,7 +49151,7 @@ function C5() {
49117
49151
  rt(["click"]);
49118
49152
  //#endregion
49119
49153
  //#region src/lib/projectConfig.ts
49120
- var w5 = [
49154
+ var O5 = [
49121
49155
  "defaultTeamId",
49122
49156
  "defaultProjectId",
49123
49157
  "defaultLabelIds",
@@ -49131,31 +49165,32 @@ var w5 = [
49131
49165
  "logLines",
49132
49166
  "issueTemplate",
49133
49167
  "testUsername",
49134
- "renderBudgets"
49168
+ "renderBudgets",
49169
+ "renderIgnore"
49135
49170
  ];
49136
- function T5(e) {
49171
+ function k5(e) {
49137
49172
  let t = {};
49138
- for (let n of w5) {
49173
+ for (let n of O5) {
49139
49174
  let r = e[n];
49140
49175
  r !== void 0 && r !== "" && !(Array.isArray(r) && r.length === 0) && (t[n] = r);
49141
49176
  }
49142
49177
  return t;
49143
49178
  }
49144
- function E5(e, t) {
49179
+ function A5(e, t) {
49145
49180
  let n = {};
49146
- for (let r of w5) e[r] === void 0 && t[r] !== void 0 && (n[r] = t[r]);
49181
+ for (let r of O5) e[r] === void 0 && t[r] !== void 0 && (n[r] = t[r]);
49147
49182
  return Object.keys(n).length ? n : null;
49148
49183
  }
49149
49184
  //#endregion
49150
49185
  //#region src/lib/linear/auth.ts
49151
49186
  Br();
49152
- function D5(e) {
49187
+ function j5(e) {
49153
49188
  let t = "";
49154
49189
  for (let n of e) t += String.fromCharCode(n);
49155
49190
  return btoa(t).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
49156
49191
  }
49157
- async function O5(e) {
49158
- let t = D5(crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(32))), n = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(t)), r = D5(new Uint8Array(n)), i = D5(crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(16))), a = chrome.identity.getRedirectURL(), o = new URL("https://linear.app/oauth/authorize");
49192
+ async function M5(e) {
49193
+ let t = j5(crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(32))), n = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(t)), r = j5(new Uint8Array(n)), i = j5(crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(16))), a = chrome.identity.getRedirectURL(), o = new URL("https://linear.app/oauth/authorize");
49159
49194
  o.searchParams.set("client_id", e), o.searchParams.set("redirect_uri", a), o.searchParams.set("response_type", "code"), o.searchParams.set("scope", "read,write"), o.searchParams.set("state", i), o.searchParams.set("code_challenge", r), o.searchParams.set("code_challenge_method", "S256");
49160
49195
  let s = await chrome.identity.launchWebAuthFlow({
49161
49196
  url: o.toString(),
@@ -49183,15 +49218,15 @@ async function O5(e) {
49183
49218
  linearOauthClientId: e
49184
49219
  });
49185
49220
  }
49186
- async function k5() {
49221
+ async function N5() {
49187
49222
  await Er({
49188
49223
  linearAccessToken: void 0,
49189
49224
  linearApiKey: void 0
49190
49225
  });
49191
49226
  }
49192
49227
  Br(), Sr(), Ix(), _D();
49193
- var A5 = /*#__PURE__*/ N("<div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\">"), j5 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">Cloud: picking an element opens the panel to draft &amp; delegate to the Cursor agent. Local (react-grab style): picking auto-copies the element's context — source, stack, and your skills/memory paths — straight to the clipboard for a local Claude Code or Cursor session; the panel stays out of the way. Both share the same picker; switch anytime."), M5 = /*#__PURE__*/ N("<label class=\"flex cursor-pointer items-center gap-2 select-none\"><input type=checkbox class=\"accent-accent rounded\"><span class=\"text-text text-[12px]\">Element screenshots"), N5 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">Captures a highlighted screenshot of each picked element and attaches it to the issue. Costs a beat on huge pages — with this off, picking is instant (pure react-grab speed)."), P5 = /*#__PURE__*/ N("<span class=text-text>Connected as <span class=font-medium></span> · <span class=text-text-dim>"), F5 = /*#__PURE__*/ N("<div class=\"bg-surface border-border flex items-center justify-between rounded-lg border p-2.5\"><span class=\"text-text text-[12px]\">"), I5 = /*#__PURE__*/ N("<option value>Select a team…"), L5 = /*#__PURE__*/ N("<option value>No project"), R5 = /*#__PURE__*/ N("<div class=\"flex flex-wrap gap-1\">"), z5 = /*#__PURE__*/ N("<label class=\"flex items-start gap-2\"><input type=checkbox class=\"accent-accent mt-0.5\"><span class=\"flex flex-col gap-0.5\"><span class=text-[12px]>Let agents close out Linear themselves</span><span class=\"text-text-faint text-[10.5px] leading-snug\">Embeds your Linear API key + raw GraphQL closeout recipes in every issue's Agent instructions — cloud agent VMs have no authenticated Linear MCP, so without this they can't comment, attach media, or move the issue. The key is visible to anyone who can read the issue."), B5 = /*#__PURE__*/ N("<p class=\"text-text-dim text-[11px]\">No agents found — install the Cursor integration in Linear first."), V5 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">Empty = the default above (computer-use testing, video demo, PR + review babysitting)."), H5 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-1.5\">"), U5 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-1\"><span class=\"text-text-dim text-[11px] font-medium\">Mode</span><div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\"></div><span class=\"text-text-faint text-[10.5px] leading-snug\">Beside page squeezes the app next to the panel, DevTools-style — nothing gets covered. Also toggleable from the dock icon in the panel header."), W5 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-1\"><span class=\"text-text-dim text-[11px] font-medium\">Dock side</span><div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\"></div><span class=\"text-text-faint text-[10.5px] leading-snug\">The launcher pill is draggable — park it anywhere it doesn't cover your app."), G5 = /*#__PURE__*/ N("<p class=\"text-text-faint text-[10.5px] leading-snug\">A committed <code>.lineargrab.json</code> at the repo root (where the bridge runs) shares team/project/labels, skills, staging branch, and workflow defaults with every machine and teammate — it seeds any setting you haven't set locally. Secrets never belong in it."), K5 = /*#__PURE__*/ N("<span class=\"inline-block min-w-[10ch] text-center\">"), q5 = /*#__PURE__*/ N("<div class=\"flex items-center gap-2\">"), J5 = /*#__PURE__*/ N("<option value>Select a channel…"), Y5 = /*#__PURE__*/ N("<label class=\"flex cursor-pointer items-center gap-2 select-none\"><input type=checkbox class=\"accent-accent rounded\"><span class=\"text-text text-[12px]\">Announce new issues on create"), X5 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">⚠️ Tokens are embedded in issue Agent-instructions so agents can post the finished demo — everyone who can read the issue can read them. Use single-channel-scoped bots."), Z5 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-1\"><span class=\"text-text-dim text-[11px] font-medium\">Provider preference</span><div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\"><button>Auto</button><button>OpenAI</button><button>Anthropic"), Q5 = /*#__PURE__*/ N("<p class=\"text-text-dim text-[11px]\">"), $5 = /*#__PURE__*/ N("<div class=min-h-[2lh]>"), e7 = /*#__PURE__*/ N("<ol class=\"text-text-faint flex list-decimal flex-col gap-1 pl-4 text-[11px] leading-relaxed\"><li>Pick an element on your running dev app.</li><li>Draft the issue (AI optional).</li><li>Create + delegate — Cursor's cloud agent fixes it and opens a PR.</li><li>Track and steer it from Activity."), t7 = /*#__PURE__*/ N("<div class=\"flex h-full flex-col gap-5 overflow-y-auto pt-3 pb-6 pl-3 pr-4\">"), n7 = /*#__PURE__*/ N("<button>"), r7 = /*#__PURE__*/ N("<div class=\"flex gap-1.5\">"), i7 = /*#__PURE__*/ N("<p class=\"text-text-faint text-center text-[10.5px]\">or"), a7 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">Register this callback URL in your Linear OAuth app config:<br><span class=\"font-mono text-[10.5px] break-all\">"), o7 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-3\">"), s7 = /*#__PURE__*/ N("<span class=text-text-dim>Connected — verifying…"), c7 = /*#__PURE__*/ N("<option> (<!>)"), l7 = /*#__PURE__*/ N("<option>"), u7 = /*#__PURE__*/ N("<button type=button><span class=\"mr-1 inline-block size-2 rounded-full align-middle\">"), d7 = /*#__PURE__*/ N("<option value>Select the agent…"), f7 = /*#__PURE__*/ N("<option>#"), p7 = /*#__PURE__*/ N("<p class=\"text-text-dim text-[11px]\">No key set — AI drafting disabled, manual drafting still works.");
49194
- function m7() {
49228
+ var P5 = /*#__PURE__*/ N("<div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\">"), F5 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">Cloud: picking an element opens the panel to draft &amp; delegate to the Cursor agent. Local (react-grab style): picking auto-copies the element's context — source, stack, and your skills/memory paths — straight to the clipboard for a local Claude Code or Cursor session; the panel stays out of the way. Both share the same picker; switch anytime."), I5 = /*#__PURE__*/ N("<label class=\"flex cursor-pointer items-center gap-2 select-none\"><input type=checkbox class=\"accent-accent rounded\"><span class=\"text-text text-[12px]\">Element screenshots"), L5 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">Captures a highlighted screenshot of each picked element and attaches it to the issue. Costs a beat on huge pages — with this off, picking is instant (pure react-grab speed)."), R5 = /*#__PURE__*/ N("<span class=text-text>Connected as <span class=font-medium></span> · <span class=text-text-dim>"), z5 = /*#__PURE__*/ N("<div class=\"bg-surface border-border flex items-center justify-between rounded-lg border p-2.5\"><span class=\"text-text text-[12px]\">"), B5 = /*#__PURE__*/ N("<option value>Select a team…"), V5 = /*#__PURE__*/ N("<option value>No project"), H5 = /*#__PURE__*/ N("<div class=\"flex flex-wrap gap-1\">"), U5 = /*#__PURE__*/ N("<label class=\"flex items-start gap-2\"><input type=checkbox class=\"accent-accent mt-0.5\"><span class=\"flex flex-col gap-0.5\"><span class=text-[12px]>Let agents close out Linear themselves</span><span class=\"text-text-faint text-[10.5px] leading-snug\">Embeds your Linear API key + raw GraphQL closeout recipes in every issue's Agent instructions — cloud agent VMs have no authenticated Linear MCP, so without this they can't comment, attach media, or move the issue. The key is visible to anyone who can read the issue."), W5 = /*#__PURE__*/ N("<p class=\"text-text-dim text-[11px]\">No agents found — install the Cursor integration in Linear first."), G5 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">Empty = the default above (computer-use testing, video demo, PR + review babysitting)."), K5 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-1.5\">"), q5 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-1\"><span class=\"text-text-dim text-[11px] font-medium\">Mode</span><div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\"></div><span class=\"text-text-faint text-[10.5px] leading-snug\">Beside page squeezes the app next to the panel, DevTools-style — nothing gets covered. Also toggleable from the dock icon in the panel header."), J5 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-1\"><span class=\"text-text-dim text-[11px] font-medium\">Dock side</span><div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\"></div><span class=\"text-text-faint text-[10.5px] leading-snug\">The launcher pill is draggable — park it anywhere it doesn't cover your app."), Y5 = /*#__PURE__*/ N("<p class=\"text-text-faint text-[10.5px] leading-snug\">A committed <code>.lineargrab.json</code> at the repo root (where the bridge runs) shares team/project/labels, skills, staging branch, and workflow defaults with every machine and teammate — it seeds any setting you haven't set locally. Secrets never belong in it."), X5 = /*#__PURE__*/ N("<span class=\"inline-block min-w-[10ch] text-center\">"), Z5 = /*#__PURE__*/ N("<div class=\"flex items-center gap-2\">"), Q5 = /*#__PURE__*/ N("<option value>Select a channel…"), $5 = /*#__PURE__*/ N("<label class=\"flex cursor-pointer items-center gap-2 select-none\"><input type=checkbox class=\"accent-accent rounded\"><span class=\"text-text text-[12px]\">Announce new issues on create"), e7 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">⚠️ Tokens are embedded in issue Agent-instructions so agents can post the finished demo — everyone who can read the issue can read them. Use single-channel-scoped bots."), t7 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-1\"><span class=\"text-text-dim text-[11px] font-medium\">Provider preference</span><div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\"><button>Auto</button><button>OpenAI</button><button>Anthropic"), n7 = /*#__PURE__*/ N("<p class=\"text-text-dim text-[11px]\">"), r7 = /*#__PURE__*/ N("<div class=min-h-[2lh]>"), i7 = /*#__PURE__*/ N("<ol class=\"text-text-faint flex list-decimal flex-col gap-1 pl-4 text-[11px] leading-relaxed\"><li>Pick an element on your running dev app.</li><li>Draft the issue (AI optional).</li><li>Create + delegate — Cursor's cloud agent fixes it and opens a PR.</li><li>Track and steer it from Activity."), a7 = /*#__PURE__*/ N("<div class=\"flex h-full flex-col gap-5 overflow-y-auto pt-3 pb-6 pl-3 pr-4\">"), o7 = /*#__PURE__*/ N("<button>"), s7 = /*#__PURE__*/ N("<div class=\"flex gap-1.5\">"), c7 = /*#__PURE__*/ N("<p class=\"text-text-faint text-center text-[10.5px]\">or"), l7 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">Register this callback URL in your Linear OAuth app config:<br><span class=\"font-mono text-[10.5px] break-all\">"), u7 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-3\">"), d7 = /*#__PURE__*/ N("<span class=text-text-dim>Connected — verifying…"), f7 = /*#__PURE__*/ N("<option> (<!>)"), p7 = /*#__PURE__*/ N("<option>"), m7 = /*#__PURE__*/ N("<button type=button><span class=\"mr-1 inline-block size-2 rounded-full align-middle\">"), h7 = /*#__PURE__*/ N("<option value>Select the agent…"), g7 = /*#__PURE__*/ N("<option>#"), _7 = /*#__PURE__*/ N("<p class=\"text-text-dim text-[11px]\">No key set — AI drafting disabled, manual drafting still works.");
49229
+ function v7() {
49195
49230
  let e = sr(), t = _r(() => ({
49196
49231
  queryKey: ["settings"],
49197
49232
  queryFn: Tr,
@@ -49219,13 +49254,13 @@ function m7() {
49219
49254
  retry: 0
49220
49255
  })), [l, u] = T(!1), d = async () => {
49221
49256
  try {
49222
- await navigator.clipboard.writeText(JSON.stringify(T5(n()), null, 2) + "\n"), u(!0), setTimeout(() => u(!1), 1800);
49257
+ await navigator.clipboard.writeText(JSON.stringify(k5(n()), null, 2) + "\n"), u(!0), setTimeout(() => u(!1), 1800);
49223
49258
  } catch {}
49224
49259
  }, f = () => {
49225
49260
  let e = c.data?.projectConfig;
49226
49261
  if (!e) return;
49227
49262
  let t = {};
49228
- for (let n of w5) e[n] !== void 0 && (t[n] = e[n]);
49263
+ for (let n of O5) e[n] !== void 0 && (t[n] = e[n]);
49229
49264
  r(t);
49230
49265
  }, p = _r(() => ({
49231
49266
  queryKey: ["linear-labels"],
@@ -49258,7 +49293,7 @@ function m7() {
49258
49293
  }
49259
49294
  E(!0), ee("");
49260
49295
  try {
49261
- await O5(t), await e.invalidateQueries({ queryKey: ["settings"] }), await e.invalidateQueries({ queryKey: ["viewer"] }), await e.invalidateQueries({ queryKey: ["teams"] }), await e.invalidateQueries({ queryKey: ["agents"] }), await e.invalidateQueries({ queryKey: ["my-issues"] });
49296
+ await M5(t), await e.invalidateQueries({ queryKey: ["settings"] }), await e.invalidateQueries({ queryKey: ["viewer"] }), await e.invalidateQueries({ queryKey: ["teams"] }), await e.invalidateQueries({ queryKey: ["agents"] }), await e.invalidateQueries({ queryKey: ["my-issues"] });
49262
49297
  } catch (e) {
49263
49298
  ee(e instanceof Error ? e.message : "OAuth flow failed.");
49264
49299
  } finally {
@@ -49269,7 +49304,7 @@ function m7() {
49269
49304
  async function re() {
49270
49305
  ne(!0);
49271
49306
  try {
49272
- await k5(), await e.invalidateQueries({ queryKey: ["settings"] }), await e.invalidateQueries({ queryKey: ["viewer"] }), await e.invalidateQueries({ queryKey: ["teams"] }), await e.invalidateQueries({ queryKey: ["agents"] }), await e.invalidateQueries({ queryKey: ["my-issues"] });
49307
+ await N5(), await e.invalidateQueries({ queryKey: ["settings"] }), await e.invalidateQueries({ queryKey: ["viewer"] }), await e.invalidateQueries({ queryKey: ["teams"] }), await e.invalidateQueries({ queryKey: ["agents"] }), await e.invalidateQueries({ queryKey: ["my-issues"] });
49273
49308
  } finally {
49274
49309
  ne(!1);
49275
49310
  }
@@ -49285,12 +49320,12 @@ function m7() {
49285
49320
  return e ? `Drafting with ${e} — ${Px[e].fast} (fast) / ${Px[e].best} (best)` : null;
49286
49321
  });
49287
49322
  return (() => {
49288
- var e = t7();
49323
+ var e = a7();
49289
49324
  return P(e, j(Rj, {
49290
49325
  title: "Workflow",
49291
49326
  get children() {
49292
49327
  return [(() => {
49293
- var e = A5();
49328
+ var e = P5();
49294
49329
  return P(e, j(We, {
49295
49330
  each: [{
49296
49331
  id: "cloud",
@@ -49300,19 +49335,19 @@ function m7() {
49300
49335
  label: "Local · clipboard"
49301
49336
  }],
49302
49337
  children: (e) => (() => {
49303
- var t = n7();
49338
+ var t = o7();
49304
49339
  return t.$$click = () => void r({ workflowMode: e.id }), P(t, () => e.label), D(() => st(t, `flex-1 rounded-[5px] px-2 py-1 text-[11.5px] font-medium transition-colors ${(n().workflowMode ?? "cloud") === e.id ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer"}`)), t;
49305
49340
  })()
49306
49341
  })), e;
49307
- })(), j5()];
49342
+ })(), F5()];
49308
49343
  }
49309
49344
  }), null), P(e, j(Rj, {
49310
49345
  title: "Capture",
49311
49346
  get children() {
49312
49347
  return [(() => {
49313
- var e = M5(), t = e.firstChild;
49348
+ var e = I5(), t = e.firstChild;
49314
49349
  return t.addEventListener("change", (e) => void r({ captureShots: e.currentTarget.checked || void 0 })), D(() => t.checked = !!n().captureShots), e;
49315
- })(), N5()];
49350
+ })(), L5()];
49316
49351
  }
49317
49352
  }), null), P(e, j(Rj, {
49318
49353
  title: "Linear",
@@ -49323,13 +49358,13 @@ function m7() {
49323
49358
  },
49324
49359
  get fallback() {
49325
49360
  return (() => {
49326
- var e = o7();
49361
+ var e = u7();
49327
49362
  return P(e, j(Lj, {
49328
49363
  label: "Personal API key",
49329
49364
  hint: "Create one at linear.app → Settings → API — fastest path.",
49330
49365
  get children() {
49331
49366
  return [(() => {
49332
- var e = r7();
49367
+ var e = s7();
49333
49368
  return P(e, j(jj, {
49334
49369
  type: "password",
49335
49370
  placeholder: "lin_api_…",
@@ -49366,12 +49401,12 @@ function m7() {
49366
49401
  }), null), P(e, j(M, {
49367
49402
  when: xr,
49368
49403
  get children() {
49369
- return [i7(), j(Lj, {
49404
+ return [c7(), j(Lj, {
49370
49405
  label: "OAuth client ID",
49371
49406
  get children() {
49372
49407
  return [
49373
49408
  (() => {
49374
- var e = r7();
49409
+ var e = s7();
49375
49410
  return P(e, j(jj, {
49376
49411
  placeholder: "your-client-id",
49377
49412
  get value() {
@@ -49399,7 +49434,7 @@ function m7() {
49399
49434
  }
49400
49435
  }),
49401
49436
  (() => {
49402
- var e = a7(), t = e.firstChild.nextSibling.nextSibling;
49437
+ var e = l7(), t = e.firstChild.nextSibling.nextSibling;
49403
49438
  return P(t, ie), e;
49404
49439
  })()
49405
49440
  ];
@@ -49410,13 +49445,13 @@ function m7() {
49410
49445
  })();
49411
49446
  },
49412
49447
  get children() {
49413
- var e = F5(), t = e.firstChild;
49448
+ var e = z5(), t = e.firstChild;
49414
49449
  return P(t, j(M, {
49415
49450
  get when() {
49416
49451
  return !a.isLoading;
49417
49452
  },
49418
49453
  get fallback() {
49419
- return s7();
49454
+ return d7();
49420
49455
  },
49421
49456
  get children() {
49422
49457
  return j(M, {
@@ -49429,7 +49464,7 @@ function m7() {
49429
49464
  return a.isError;
49430
49465
  },
49431
49466
  get fallback() {
49432
- return s7();
49467
+ return d7();
49433
49468
  },
49434
49469
  get children() {
49435
49470
  return j(Hj, { message: "Key rejected — reconnect" });
@@ -49437,7 +49472,7 @@ function m7() {
49437
49472
  });
49438
49473
  },
49439
49474
  get children() {
49440
- var e = P5(), t = e.firstChild.nextSibling, n = t.nextSibling.nextSibling;
49475
+ var e = R5(), t = e.firstChild.nextSibling, n = t.nextSibling.nextSibling;
49441
49476
  return P(t, () => a.data.name), P(n, () => a.data.email), e;
49442
49477
  }
49443
49478
  });
@@ -49478,7 +49513,7 @@ function m7() {
49478
49513
  return o.isLoading;
49479
49514
  },
49480
49515
  get children() {
49481
- return [I5(), j(M, {
49516
+ return [B5(), j(M, {
49482
49517
  get when() {
49483
49518
  return o.data;
49484
49519
  },
@@ -49488,7 +49523,7 @@ function m7() {
49488
49523
  return o.data;
49489
49524
  },
49490
49525
  children: (e) => (() => {
49491
- var t = c7(), r = t.firstChild, i = r.nextSibling;
49526
+ var t = f7(), r = t.firstChild, i = r.nextSibling;
49492
49527
  return i.nextSibling, P(t, () => e.name, r), P(t, () => e.key, i), D(() => t.selected = e.id === n().defaultTeamId), D(() => t.value = e.id), t;
49493
49528
  })()
49494
49529
  });
@@ -49512,14 +49547,14 @@ function m7() {
49512
49547
  },
49513
49548
  get children() {
49514
49549
  return [(() => {
49515
- var e = L5();
49550
+ var e = V5();
49516
49551
  return D(() => e.selected = !n().defaultProjectId), e;
49517
49552
  })(), j(We, {
49518
49553
  get each() {
49519
49554
  return s.data ?? [];
49520
49555
  },
49521
49556
  children: (e) => (() => {
49522
- var t = l7();
49557
+ var t = p7();
49523
49558
  return P(t, () => e.name), D(() => t.selected = e.id === n().defaultProjectId), D(() => t.value = e.id), t;
49524
49559
  })()
49525
49560
  })];
@@ -49531,7 +49566,7 @@ function m7() {
49531
49566
  label: "Default labels",
49532
49567
  hint: "Applied to every issue created from the panel.",
49533
49568
  get children() {
49534
- var e = R5();
49569
+ var e = H5();
49535
49570
  return P(e, j(We, {
49536
49571
  get each() {
49537
49572
  return p.data ?? [];
@@ -49539,7 +49574,7 @@ function m7() {
49539
49574
  children: (e) => {
49540
49575
  let t = () => (n().defaultLabelIds ?? []).includes(e.id);
49541
49576
  return (() => {
49542
- var i = u7(), a = i.firstChild;
49577
+ var i = m7(), a = i.firstChild;
49543
49578
  return i.$$click = () => {
49544
49579
  let i = n().defaultLabelIds ?? [];
49545
49580
  r({ defaultLabelIds: t() ? i.filter((t) => t !== e.id) : [...i, e.id] });
@@ -49556,7 +49591,7 @@ function m7() {
49556
49591
  }
49557
49592
  }),
49558
49593
  (() => {
49559
- var e = z5(), t = e.firstChild;
49594
+ var e = U5(), t = e.firstChild;
49560
49595
  return t.addEventListener("change", (e) => void r({ shareLinearKey: e.currentTarget.checked })), D(() => t.checked = !!n().shareLinearKey), e;
49561
49596
  })(),
49562
49597
  j(Lj, {
@@ -49606,7 +49641,7 @@ function m7() {
49606
49641
  return m.isLoading;
49607
49642
  },
49608
49643
  get children() {
49609
- return [d7(), j(M, {
49644
+ return [h7(), j(M, {
49610
49645
  get when() {
49611
49646
  return m.data;
49612
49647
  },
@@ -49616,7 +49651,7 @@ function m7() {
49616
49651
  return m.data;
49617
49652
  },
49618
49653
  children: (e) => (() => {
49619
- var t = l7();
49654
+ var t = p7();
49620
49655
  return P(t, () => e.displayName), D(() => t.selected = e.id === n().cursorAgentId), D(() => t.value = e.id), t;
49621
49656
  })()
49622
49657
  });
@@ -49626,7 +49661,7 @@ function m7() {
49626
49661
  });
49627
49662
  },
49628
49663
  get children() {
49629
- return B5();
49664
+ return W5();
49630
49665
  }
49631
49666
  });
49632
49667
  }
@@ -49674,7 +49709,7 @@ function m7() {
49674
49709
  onBlur: (e) => {
49675
49710
  r({ issueTemplate: e.currentTarget.value.trim() || void 0 });
49676
49711
  }
49677
- }), V5()];
49712
+ }), G5()];
49678
49713
  }
49679
49714
  }),
49680
49715
  j(Lj, {
@@ -49731,7 +49766,7 @@ function m7() {
49731
49766
  label: "Test account",
49732
49767
  hint: "The cloud agent logs into the app with this while testing and recording its demo. Added to every issue's Agent instructions. Use a throwaway account — it's visible to everyone who can read the issue.",
49733
49768
  get children() {
49734
- var e = H5();
49769
+ var e = K5();
49735
49770
  return P(e, j(jj, {
49736
49771
  placeholder: "Username or email (e.g. demo@yourapp.com)",
49737
49772
  get value() {
@@ -49763,7 +49798,7 @@ function m7() {
49763
49798
  title: "Panel",
49764
49799
  get children() {
49765
49800
  return [(() => {
49766
- var e = U5(), t = e.firstChild.nextSibling;
49801
+ var e = q5(), t = e.firstChild.nextSibling;
49767
49802
  return P(t, j(We, {
49768
49803
  each: [{
49769
49804
  id: "overlay",
@@ -49773,7 +49808,7 @@ function m7() {
49773
49808
  label: "Beside page"
49774
49809
  }],
49775
49810
  children: (e) => (() => {
49776
- var t = n7();
49811
+ var t = o7();
49777
49812
  return t.$$click = () => void r({
49778
49813
  panelMode: e.id,
49779
49814
  panelPos: void 0
@@ -49781,11 +49816,11 @@ function m7() {
49781
49816
  })()
49782
49817
  })), e;
49783
49818
  })(), (() => {
49784
- var e = W5(), t = e.firstChild.nextSibling;
49819
+ var e = J5(), t = e.firstChild.nextSibling;
49785
49820
  return P(t, j(We, {
49786
49821
  each: ["left", "right"],
49787
49822
  children: (e) => (() => {
49788
- var t = n7();
49823
+ var t = o7();
49789
49824
  return t.$$click = () => void r({ panelSide: e }), P(t, e === "left" ? "Left" : "Right"), D(() => st(t, `flex-1 rounded-[5px] px-2 py-0.5 text-[11.5px] font-medium transition-colors ${(n().panelSide ?? "right") === e ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer"}`)), t;
49790
49825
  })()
49791
49826
  })), e;
@@ -49815,8 +49850,8 @@ function m7() {
49815
49850
  }), null), P(e, j(Rj, {
49816
49851
  title: "Project config (.lineargrab.json)",
49817
49852
  get children() {
49818
- return [G5(), (() => {
49819
- var e = q5();
49853
+ return [Y5(), (() => {
49854
+ var e = Z5();
49820
49855
  return P(e, j(M, {
49821
49856
  get when() {
49822
49857
  return c.data?.projectConfig;
@@ -49847,7 +49882,7 @@ function m7() {
49847
49882
  },
49848
49883
  onClick: () => void d(),
49849
49884
  get children() {
49850
- var e = K5();
49885
+ var e = X5();
49851
49886
  return P(e, () => l() ? "Copied ✓" : "Copy config"), e;
49852
49887
  }
49853
49888
  }), null), e;
@@ -49938,12 +49973,12 @@ function m7() {
49938
49973
  });
49939
49974
  },
49940
49975
  get children() {
49941
- return [J5(), j(We, {
49976
+ return [Q5(), j(We, {
49942
49977
  get each() {
49943
49978
  return ae.data ?? [];
49944
49979
  },
49945
49980
  children: (e) => (() => {
49946
- var t = f7();
49981
+ var t = g7();
49947
49982
  return t.firstChild, P(t, () => e.name, null), D(() => t.selected = e.id === n().slackChannelId), D(() => t.value = e.id), t;
49948
49983
  })()
49949
49984
  })];
@@ -49994,10 +50029,10 @@ function m7() {
49994
50029
  }
49995
50030
  }),
49996
50031
  (() => {
49997
- var e = Y5(), t = e.firstChild;
50032
+ var e = $5(), t = e.firstChild;
49998
50033
  return t.addEventListener("change", (e) => void r({ notifyOnCreate: e.currentTarget.checked ? void 0 : !1 })), D(() => t.checked = n().notifyOnCreate !== !1), e;
49999
50034
  })(),
50000
- X5()
50035
+ e7()
50001
50036
  ];
50002
50037
  }
50003
50038
  }), null), P(e, j(Rj, {
@@ -50035,7 +50070,7 @@ function m7() {
50035
50070
  }
50036
50071
  }),
50037
50072
  (() => {
50038
- var e = Z5(), t = e.firstChild.nextSibling.firstChild, i = t.nextSibling, a = i.nextSibling;
50073
+ var e = t7(), t = e.firstChild.nextSibling.firstChild, i = t.nextSibling, a = i.nextSibling;
50039
50074
  return t.$$click = () => void r({ preferredProvider: void 0 }), i.$$click = () => void r({ preferredProvider: "openai" }), a.$$click = () => void r({ preferredProvider: "anthropic" }), D((e) => {
50040
50075
  var r = `flex-1 rounded-[5px] px-2 py-0.5 text-[11.5px] font-medium transition-colors ${n().preferredProvider === void 0 ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer"}`, o = `flex-1 rounded-[5px] px-2 py-0.5 text-[11.5px] font-medium transition-colors disabled:cursor-not-allowed ${n().preferredProvider === "openai" ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer disabled:text-text-faint"}`, s = !n().openaiKey, c = `flex-1 rounded-[5px] px-2 py-0.5 text-[11.5px] font-medium transition-colors disabled:cursor-not-allowed ${n().preferredProvider === "anthropic" ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer disabled:text-text-faint"}`, l = !n().anthropicKey;
50041
50076
  return r !== e.e && st(t, e.e = r), o !== e.t && st(i, e.t = o), s !== e.a && (i.disabled = e.a = s), c !== e.o && st(a, e.o = c), l !== e.i && (a.disabled = e.i = l), e;
@@ -50048,16 +50083,16 @@ function m7() {
50048
50083
  }), e;
50049
50084
  })(),
50050
50085
  (() => {
50051
- var e = $5();
50086
+ var e = r7();
50052
50087
  return P(e, j(M, {
50053
50088
  get when() {
50054
50089
  return se();
50055
50090
  },
50056
50091
  get fallback() {
50057
- return p7();
50092
+ return _7();
50058
50093
  },
50059
50094
  get children() {
50060
- var e = Q5();
50095
+ var e = n7();
50061
50096
  return P(e, se), e;
50062
50097
  }
50063
50098
  })), e;
@@ -50067,7 +50102,7 @@ function m7() {
50067
50102
  }), null), P(e, j(Rj, {
50068
50103
  title: "How it works",
50069
50104
  get children() {
50070
- return e7();
50105
+ return i7();
50071
50106
  }
50072
50107
  }), null), e;
50073
50108
  })();
@@ -50075,38 +50110,38 @@ function m7() {
50075
50110
  rt(["click"]);
50076
50111
  //#endregion
50077
50112
  //#region src/lib/idbCache.ts
50078
- var h7 = "linear-grab", g7 = "queries", _7 = [
50113
+ var y7 = "linear-grab", b7 = "queries", x7 = [
50079
50114
  "my-issues",
50080
50115
  "issue",
50081
50116
  "sessions",
50082
50117
  "teams",
50083
50118
  "agents"
50084
50119
  ];
50085
- function v7() {
50120
+ function S7() {
50086
50121
  return new Promise((e) => {
50087
50122
  try {
50088
- let t = indexedDB.open(h7, 1);
50089
- t.onupgradeneeded = () => t.result.createObjectStore(g7), t.onsuccess = () => e(t.result), t.onerror = () => e(null);
50123
+ let t = indexedDB.open(y7, 1);
50124
+ t.onupgradeneeded = () => t.result.createObjectStore(b7), t.onsuccess = () => e(t.result), t.onerror = () => e(null);
50090
50125
  } catch {
50091
50126
  e(null);
50092
50127
  }
50093
50128
  });
50094
50129
  }
50095
- function y7(e) {
50096
- return typeof e[0] == "string" && _7.includes(e[0]);
50130
+ function C7(e) {
50131
+ return typeof e[0] == "string" && x7.includes(e[0]);
50097
50132
  }
50098
- async function b7(e) {
50099
- let t = await v7();
50133
+ async function w7(e) {
50134
+ let t = await S7();
50100
50135
  if (!t) return () => {};
50101
50136
  await new Promise((n) => {
50102
50137
  try {
50103
- let r = t.transaction(g7, "readonly").objectStore(g7).openCursor();
50138
+ let r = t.transaction(b7, "readonly").objectStore(b7).openCursor();
50104
50139
  r.onsuccess = () => {
50105
50140
  let t = r.result;
50106
50141
  if (!t) return n();
50107
50142
  try {
50108
50143
  let { queryKey: n, data: r } = t.value;
50109
- y7(n) && e.getQueryData(n) === void 0 && e.setQueryData(n, r, { updatedAt: 0 });
50144
+ C7(n) && e.getQueryData(n) === void 0 && e.setQueryData(n, r, { updatedAt: 0 });
50110
50145
  } catch {}
50111
50146
  t.continue();
50112
50147
  }, r.onerror = () => n();
@@ -50117,14 +50152,14 @@ async function b7(e) {
50117
50152
  let n = /* @__PURE__ */ new Map(), r = e.getQueryCache().subscribe((r) => {
50118
50153
  if (r.type !== "updated" || r.action.type !== "success") return;
50119
50154
  let { queryKey: i, queryHash: a } = r.query;
50120
- if (!y7(i)) return;
50155
+ if (!C7(i)) return;
50121
50156
  let o = n.get(a);
50122
50157
  o && clearTimeout(o), n.set(a, setTimeout(() => {
50123
50158
  n.delete(a);
50124
50159
  try {
50125
50160
  let n = e.getQueryData(i);
50126
50161
  if (n === void 0) return;
50127
- t.transaction(g7, "readwrite").objectStore(g7).put({
50162
+ t.transaction(b7, "readwrite").objectStore(b7).put({
50128
50163
  queryKey: i,
50129
50164
  data: n
50130
50165
  }, a);
@@ -50140,7 +50175,7 @@ async function b7(e) {
50140
50175
  //#endregion
50141
50176
  //#region src/panel/App.tsx
50142
50177
  Br();
50143
- var x7 = /*#__PURE__*/ N("<svg viewBox=\"0 0 100 100\"fill=currentColor aria-hidden><path d=\"M1.22541 61.5228c-.2225-.9485.90748-1.5459 1.59638-.857L39.3342 97.1782c.6889.6889.0915 1.8189-.857 1.5964C20.0515 94.4522 5.54779 79.9485 1.22541 61.5228ZM.00189135 46.8891c-.01764375.2833.08887215.5599.28957165.7606L52.3503 99.7085c.2007.2007.4773.3075.7606.2896 2.3692-.1476 4.6938-.46 6.9624-.9259.7645-.157 1.0301-1.0963.4782-1.6481L2.57595 39.4485c-.55186-.5519-1.49117-.2863-1.648174.4782-.465915 2.2686-.77832 4.5932-.92588465 6.9624ZM4.21093 29.7054c-.16649.3738-.08169.8106.20765 1.1l64.77602 64.776c.2894.2894.7262.3742 1.1.2077 1.7861-.7956 3.5171-1.6927 5.1855-2.684.5521-.328.6373-1.0867.1832-1.5407L8.43566 24.3367c-.45409-.4541-1.21271-.3689-1.54074.1832-.99132 1.6684-1.88843 3.3994-2.68399 5.1855ZM12.6587 18.074c-.3701-.3701-.393-.9637-.0443-1.3541C21.7795 6.45931 35.1114 0 49.9519 0 77.5927 0 100 22.4073 100 50.0481c0 14.8405-6.4593 28.1724-16.7199 37.3375-.3903.3487-.984.3258-1.3541-.0443L12.6587 18.074Z\">"), S7 = /*#__PURE__*/ N("<button><svg width=12 height=12 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 aria-hidden><rect x=1.5 y=2.5 width=13 height=11 rx=1.5></rect><path d=\"M10 2.5v11\">"), C7 = /*#__PURE__*/ N("<button aria-label=\"Minimize to launcher\"title=\"Minimize to launcher\"class=\"text-text-dim hover:text-text hover:bg-surface-3 grid size-6 shrink-0 cursor-pointer place-items-center rounded-md text-[15px] leading-none transition-colors\">–"), w7 = /*#__PURE__*/ N("<div class=\"bg-bg text-text flex h-full flex-col\"><header><span class=\"text-accent mr-0.5 inline-flex shrink-0\"title=\"Linear Grab\"></span><div class=\"no-scrollbar flex min-w-0 flex-1 items-center gap-1 overflow-x-auto\"></div></header><main class=\"min-h-0 flex-1\"><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full>"), T7 = /*#__PURE__*/ N("<button>"), E7 = [
50178
+ var T7 = /*#__PURE__*/ N("<svg viewBox=\"0 0 100 100\"fill=currentColor aria-hidden><path d=\"M1.22541 61.5228c-.2225-.9485.90748-1.5459 1.59638-.857L39.3342 97.1782c.6889.6889.0915 1.8189-.857 1.5964C20.0515 94.4522 5.54779 79.9485 1.22541 61.5228ZM.00189135 46.8891c-.01764375.2833.08887215.5599.28957165.7606L52.3503 99.7085c.2007.2007.4773.3075.7606.2896 2.3692-.1476 4.6938-.46 6.9624-.9259.7645-.157 1.0301-1.0963.4782-1.6481L2.57595 39.4485c-.55186-.5519-1.49117-.2863-1.648174.4782-.465915 2.2686-.77832 4.5932-.92588465 6.9624ZM4.21093 29.7054c-.16649.3738-.08169.8106.20765 1.1l64.77602 64.776c.2894.2894.7262.3742 1.1.2077 1.7861-.7956 3.5171-1.6927 5.1855-2.684.5521-.328.6373-1.0867.1832-1.5407L8.43566 24.3367c-.45409-.4541-1.21271-.3689-1.54074.1832-.99132 1.6684-1.88843 3.3994-2.68399 5.1855ZM12.6587 18.074c-.3701-.3701-.393-.9637-.0443-1.3541C21.7795 6.45931 35.1114 0 49.9519 0 77.5927 0 100 22.4073 100 50.0481c0 14.8405-6.4593 28.1724-16.7199 37.3375-.3903.3487-.984.3258-1.3541-.0443L12.6587 18.074Z\">"), E7 = /*#__PURE__*/ N("<button><svg width=12 height=12 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 aria-hidden><rect x=1.5 y=2.5 width=13 height=11 rx=1.5></rect><path d=\"M10 2.5v11\">"), D7 = /*#__PURE__*/ N("<button aria-label=\"Minimize to launcher\"title=\"Minimize to launcher\"class=\"text-text-dim hover:text-text hover:bg-surface-3 grid size-6 shrink-0 cursor-pointer place-items-center rounded-md text-[15px] leading-none transition-colors\">–"), O7 = /*#__PURE__*/ N("<div class=\"bg-bg text-text flex h-full flex-col\"><header><span class=\"text-accent mr-0.5 inline-flex shrink-0\"title=\"Linear Grab\"></span><div class=\"no-scrollbar flex min-w-0 flex-1 items-center gap-1 overflow-x-auto\"></div></header><main class=\"min-h-0 flex-1\"><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full></div><div class=h-full>"), k7 = /*#__PURE__*/ N("<button>"), A7 = [
50144
50179
  {
50145
50180
  id: "draft",
50146
50181
  label: "Draft"
@@ -50181,35 +50216,35 @@ var x7 = /*#__PURE__*/ N("<svg viewBox=\"0 0 100 100\"fill=currentColor aria-hid
50181
50216
  id: "settings",
50182
50217
  label: "Settings"
50183
50218
  }
50184
- ], D7 = /* @__PURE__ */ new Set();
50185
- function O7(e, t, n) {
50186
- if (D7.has(e) || typeof Notification > "u") return;
50187
- D7.add(e);
50219
+ ], j7 = /* @__PURE__ */ new Set();
50220
+ function M7(e, t, n) {
50221
+ if (j7.has(e) || typeof Notification > "u") return;
50222
+ j7.add(e);
50188
50223
  let r = () => new Notification(t, { body: n });
50189
50224
  Notification.permission === "granted" ? r() : Notification.permission === "default" && Notification.requestPermission().then((e) => e === "granted" && r());
50190
50225
  }
50191
- function k7() {
50226
+ function N7() {
50192
50227
  setInterval(() => {
50193
50228
  PO().then((e) => {
50194
50229
  for (let t of e) {
50195
50230
  if (t.status !== "running") continue;
50196
50231
  let e = t.lastEventAt ?? t.startedAt;
50197
- Date.now() - e > 10 * 6e4 && O7(`local-stuck:${t.id}:${e}`, "Local agent may be stuck", `${t.title.slice(0, 80)} — no output for ${Math.round((Date.now() - e) / 6e4)}m. Nudge or interrupt it in the Local tab.`);
50232
+ Date.now() - e > 10 * 6e4 && M7(`local-stuck:${t.id}:${e}`, "Local agent may be stuck", `${t.title.slice(0, 80)} — no output for ${Math.round((Date.now() - e) / 6e4)}m. Nudge or interrupt it in the Local tab.`);
50198
50233
  }
50199
50234
  }).catch(() => {}), _O().then((e) => {
50200
- for (let t of e) /awaitingInput|elicit/i.test(t.status) && O7(`cloud-input:${t.id}`, "Cloud agent needs input", `${t.issue?.identifier ?? "Session"} — ${t.issue?.title?.slice(0, 80) ?? "a Cursor agent"} is waiting for you.`);
50235
+ for (let t of e) /awaitingInput|elicit/i.test(t.status) && M7(`cloud-input:${t.id}`, "Cloud agent needs input", `${t.issue?.identifier ?? "Session"} — ${t.issue?.title?.slice(0, 80) ?? "a Cursor agent"} is waiting for you.`);
50201
50236
  }).catch(() => {});
50202
50237
  }, 6e4);
50203
50238
  }
50204
- k7();
50205
- var A7 = new gr({ defaultOptions: { queries: {
50239
+ N7();
50240
+ var P7 = new gr({ defaultOptions: { queries: {
50206
50241
  retry: 1,
50207
50242
  refetchOnWindowFocus: !1,
50208
50243
  staleTime: 5e3
50209
50244
  } } });
50210
- function j7(e) {
50245
+ function F7(e) {
50211
50246
  return (() => {
50212
- var t = x7();
50247
+ var t = T7();
50213
50248
  return D((n) => {
50214
50249
  var r = e.size ?? 14, i = e.size ?? 14;
50215
50250
  return r !== n.e && it(t, "width", n.e = r), i !== n.t && it(t, "height", n.t = i), n;
@@ -50219,36 +50254,36 @@ function j7(e) {
50219
50254
  }), t;
50220
50255
  })();
50221
50256
  }
50222
- function M7(e) {
50257
+ function I7(e) {
50223
50258
  let [t, n] = T("draft"), r = () => {
50224
- A7.invalidateQueries({ queryKey: ["grab"] }), lj() === "capture" && n("capture"), e.onGrab?.();
50259
+ P7.invalidateQueries({ queryKey: ["grab"] }), lj() === "capture" && n("capture"), e.onGrab?.();
50225
50260
  };
50226
50261
  return O(() => {
50227
50262
  let e = rj();
50228
50263
  e && n(e);
50229
50264
  }), ie(() => {
50230
- let e = b7(A7), t = XZ(r), n = () => {
50265
+ let e = w7(P7), t = XZ(r), n = () => {
50231
50266
  YO().then(y$), HO(), NO().then(async (e) => {
50232
50267
  if (!e.projectConfig) return;
50233
- let t = E5(await Tr(), e.projectConfig);
50268
+ let t = A5(await Tr(), e.projectConfig);
50234
50269
  t && await Er(t);
50235
50270
  }).catch(() => {});
50236
50271
  };
50237
50272
  n();
50238
50273
  let i = Mr((e) => {
50239
- e === "settings" && (A7.invalidateQueries({ queryKey: ["settings"] }), n()), e === "grab" && r();
50274
+ e === "settings" && (P7.invalidateQueries({ queryKey: ["settings"] }), n()), e === "grab" && r();
50240
50275
  });
50241
50276
  ae(() => {
50242
50277
  t(), i(), e.then((e) => e());
50243
50278
  });
50244
50279
  }), j(cr, {
50245
- client: A7,
50280
+ client: P7,
50246
50281
  get children() {
50247
- var r = w7(), i = r.firstChild, a = i.firstChild, o = a.nextSibling, s = i.nextSibling.firstChild, c = s.nextSibling, l = c.nextSibling, u = l.nextSibling, d = u.nextSibling, f = d.nextSibling, p = f.nextSibling, m = p.nextSibling, h = m.nextSibling, g = h.nextSibling;
50248
- return i.$$pointerdown = (t) => e.onHeaderPointerDown?.(t), P(a, j(j7, { size: 14 })), P(o, j(We, {
50249
- each: E7,
50282
+ var r = O7(), i = r.firstChild, a = i.firstChild, o = a.nextSibling, s = i.nextSibling.firstChild, c = s.nextSibling, l = c.nextSibling, u = l.nextSibling, d = u.nextSibling, f = d.nextSibling, p = f.nextSibling, m = p.nextSibling, h = m.nextSibling, g = h.nextSibling;
50283
+ return i.$$pointerdown = (t) => e.onHeaderPointerDown?.(t), P(a, j(F7, { size: 14 })), P(o, j(We, {
50284
+ each: A7,
50250
50285
  children: (e) => (() => {
50251
- var r = T7();
50286
+ var r = k7();
50252
50287
  return r.$$click = () => n(e.id), P(r, () => e.label), D(() => st(r, `h-6 shrink-0 rounded-md px-2 text-[12px] font-medium whitespace-nowrap transition-colors ${t() === e.id ? "bg-surface-3 text-text" : "text-text-dim hover:text-text cursor-pointer"}`)), r;
50253
50288
  })()
50254
50289
  })), P(i, j(M, {
@@ -50256,7 +50291,7 @@ function M7(e) {
50256
50291
  return e.onTogglePin;
50257
50292
  },
50258
50293
  get children() {
50259
- var t = S7();
50294
+ var t = E7();
50260
50295
  return t.$$click = () => e.onTogglePin?.(), D((n) => {
50261
50296
  var r = e.pinned ? "Switch to overlay" : "Dock beside page", i = e.pinned ? "Overlay the page" : "Dock beside page (squeezes the app, DevTools-style)", a = `hover:bg-surface-3 grid size-6 shrink-0 cursor-pointer place-items-center rounded-md transition-colors ${e.pinned ? "text-accent" : "text-text-dim hover:text-text"}`;
50262
50297
  return r !== n.e && it(t, "aria-label", n.e = r), i !== n.t && it(t, "title", n.t = i), a !== n.a && st(t, n.a = a), n;
@@ -50271,10 +50306,10 @@ function M7(e) {
50271
50306
  return e.onClose;
50272
50307
  },
50273
50308
  get children() {
50274
- var t = C7();
50309
+ var t = D7();
50275
50310
  return t.$$click = () => e.onClose?.(), t;
50276
50311
  }
50277
- }), null), P(s, j(wM, { onCreated: () => n("activity") })), P(c, j(TQ, {})), P(l, j(_1, {})), P(u, j(B1, {})), P(d, j(P1, {})), P(f, j(T0, {})), P(p, j(B0, { onOpenIssue: () => n("activity") })), P(m, j(H3, {})), P(h, j(C5, {})), P(g, j(m7, {})), D((n) => {
50312
+ }), null), P(s, j(wM, { onCreated: () => n("activity") })), P(c, j(TQ, {})), P(l, j(_1, {})), P(u, j(B1, {})), P(d, j(P1, {})), P(f, j(T0, {})), P(p, j(B0, { onOpenIssue: () => n("activity") })), P(m, j(H3, {})), P(h, j(D5, {})), P(g, j(v7, {})), D((n) => {
50278
50313
  var r = `border-border bg-surface flex shrink-0 items-center gap-1 border-b px-2 py-1.5 select-none ${e.onHeaderPointerDown ? "cursor-grab active:cursor-grabbing" : ""}`, a = t() !== "draft", o = t() !== "capture", _ = t() !== "activity", v = t() !== "running", y = t() !== "cloud", b = t() !== "local", x = t() !== "prs", S = t() !== "design", C = t() !== "renders", w = t() !== "settings";
50279
50314
  return r !== n.e && st(i, n.e = r), a !== n.t && s.classList.toggle("hidden", n.t = a), o !== n.a && c.classList.toggle("hidden", n.a = o), _ !== n.o && l.classList.toggle("hidden", n.o = _), v !== n.i && u.classList.toggle("hidden", n.i = v), y !== n.n && d.classList.toggle("hidden", n.n = y), b !== n.s && f.classList.toggle("hidden", n.s = b), x !== n.h && p.classList.toggle("hidden", n.h = x), S !== n.r && m.classList.toggle("hidden", n.r = S), C !== n.d && h.classList.toggle("hidden", n.d = C), w !== n.l && g.classList.toggle("hidden", n.l = w), n;
50280
50315
  }, {
@@ -50296,16 +50331,16 @@ function M7(e) {
50296
50331
  rt(["pointerdown", "click"]);
50297
50332
  //#endregion
50298
50333
  //#region src/styles/app.css?inline
50299
- var N7 = "/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-contain-size:initial;--tw-contain-layout:initial;--tw-contain-paint:initial;--tw-contain-style:initial}}}@layer theme{:root,:host{--font-sans:\"Inter\", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-serif:ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif;--font-mono:ui-monospace, \"SF Mono\", Menlo, monospace;--color-red-500:oklch(63.7% .237 25.331);--color-white:#fff;--spacing:.25rem;--font-weight-thin:100;--font-weight-extralight:200;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-wide:.025em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-xl:.75rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:#0b0c0e;--color-surface:#141517;--color-surface-2:#1c1d21;--color-surface-3:#24262b;--color-border:#26282d;--color-border-strong:#34363d;--color-text:#e8e9eb;--color-text-dim:#8b8e98;--color-text-faint:#5c5f6a;--color-accent:#5e6ad2;--color-accent-hover:#6e79e0;--color-accent-soft:#5e6ad226;--color-success:#4cb782;--color-warn:#f2c94c;--color-danger:#eb5757;--color-danger-soft:#eb575726}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.visible\\!{visibility:visible!important}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{inset-block:0}.-top-0{top:0}.-top-0\\.5{top:calc(var(--spacing) * -.5)}.top-0{top:0}.top-0\\.5{top:calc(var(--spacing) * .5)}.top-1{top:var(--spacing)}.top-1\\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-\\[2px\\]{top:2px}.top-full{top:100%}.-right-0{right:0}.-right-0\\.5{right:calc(var(--spacing) * -.5)}.right-0{right:0}.right-0\\.5{right:calc(var(--spacing) * .5)}.right-4{right:calc(var(--spacing) * 4)}.right-full{right:100%}.bottom-0{bottom:0}.bottom-1{bottom:var(--spacing)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-\\[2px\\]{bottom:2px}.bottom-full{bottom:100%}.-left-\\[13\\.5px\\]{left:-13.5px}.left-0{left:0}.left-1{left:var(--spacing)}.left-1\\/2{left:50%}.left-\\[5px\\]{left:5px}.left-full{left:100%}.z-1{z-index:1}.z-10{z-index:10}.z-\\[2147483645\\]{z-index:2147483645}.z-\\[2147483646\\]{z-index:2147483646}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.container\\!{width:100%!important}@media (width>=40rem){.container\\!{max-width:40rem!important}}@media (width>=48rem){.container\\!{max-width:48rem!important}}@media (width>=64rem){.container\\!{max-width:64rem!important}}@media (width>=80rem){.container\\!{max-width:80rem!important}}@media (width>=96rem){.container\\!{max-width:96rem!important}}.-m-0{margin:0}.-m-0\\.5{margin:calc(var(--spacing) * -.5)}.-m-4{margin:calc(var(--spacing) * -4)}.m-0{margin:0}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-my-1{margin-block:calc(var(--spacing) * -1)}.-my-1\\.5{margin-block:calc(var(--spacing) * -1.5)}.mt-0{margin-top:0}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-px{margin-top:1px}.mr-0{margin-right:0}.mr-0\\.5{margin-right:calc(var(--spacing) * .5)}.mr-1{margin-right:var(--spacing)}.mr-1\\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-2\\.5{margin-right:calc(var(--spacing) * 2.5)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-0{margin-bottom:0}.mb-0\\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\\.5{margin-bottom:calc(var(--spacing) * 2.5)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-2\\.5{margin-left:calc(var(--spacing) * 2.5)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-5{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.size-0{width:0;height:0}.size-1{width:var(--spacing);height:var(--spacing)}.size-1\\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-\\[9px\\]{width:9px;height:9px}.size-\\[12px\\]{width:12px;height:12px}.size-\\[16px\\]{width:16px;height:16px}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-16{height:calc(var(--spacing) * 16)}.h-\\[8px\\]{height:8px}.h-\\[17px\\]{height:17px}.h-\\[18px\\]{height:18px}.h-\\[20px\\]{height:20px}.h-\\[24px\\]{height:24px}.h-fit{height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-44{max-height:calc(var(--spacing) * 44)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\\[28rem\\]{max-height:28rem}.max-h-\\[var\\(--rg-edit-list-max-h\\)\\]{max-height:var(--rg-edit-list-max-h)}.min-h-0{min-height:0}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-\\[2lh\\]{min-height:2lh}.min-h-\\[28px\\]{min-height:28px}.w-1{width:var(--spacing)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-16{width:calc(var(--spacing) * 16)}.w-28{width:calc(var(--spacing) * 28)}.w-72{width:calc(var(--spacing) * 72)}.w-\\[2px\\]{width:2px}.w-\\[Npx\\]{width:Npx}.w-\\[calc\\(100\\%\\+16px\\)\\]{width:calc(100% + 16px)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\\[55\\%\\]{max-width:55%}.max-w-\\[100vw\\]{max-width:100vw}.max-w-\\[110px\\]{max-width:110px}.max-w-\\[280px\\]{max-width:280px}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-\\[3\\.5ch\\]{min-width:3.5ch}.min-w-\\[3ch\\]{min-width:3ch}.min-w-\\[4ch\\]{min-width:4ch}.min-w-\\[5ch\\]{min-width:5ch}.min-w-\\[6ch\\]{min-width:6ch}.min-w-\\[7ch\\]{min-width:7ch}.min-w-\\[8ch\\]{min-width:8ch}.min-w-\\[10ch\\]{min-width:10ch}.min-w-\\[12ch\\]{min-width:12ch}.min-w-\\[36px\\]{min-width:36px}.min-w-\\[52px\\]{min-width:52px}.min-w-\\[100px\\]{min-width:100px}.min-w-\\[150px\\]{min-width:150px}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-rotate-90{rotate:-90deg}.rotate-0{rotate:0deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-decimal{list-style-type:decimal}.grid-cols-\\[0fr\\]{grid-template-columns:0fr}.grid-cols-\\[1fr\\]{grid-template-columns:1fr}.grid-rows-\\[0fr\\]{grid-template-rows:0fr}.grid-rows-\\[1fr\\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:0}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-\\[5px\\]{gap:5px}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\\[1px\\]{border-radius:1px}.rounded-\\[3px\\]{border-radius:3px}.rounded-\\[4px\\]{border-radius:4px}.rounded-\\[5px\\]{border-radius:5px}.rounded-\\[6px\\]{border-radius:6px}.rounded-\\[13px\\]{border-radius:13px}.rounded-\\[14px\\]{border-radius:14px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-\\[10px\\]{border-top-left-radius:10px;border-top-right-radius:10px}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-\\[10px\\]{border-top-left-radius:10px;border-bottom-left-radius:10px}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-\\[10px\\]{border-top-right-radius:10px;border-bottom-right-radius:10px}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-\\[6px\\]{border-bottom-right-radius:6px;border-bottom-left-radius:6px}.rounded-b-\\[10px\\]{border-bottom-right-radius:10px;border-bottom-left-radius:10px}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.\\[border-width\\:0\\.5px\\]{border-width:.5px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-4{border-top-style:var(--tw-border-style);border-top-width:4px}.\\[border-top-width\\:0\\.5px\\]{border-top-width:.5px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-\\[var\\(--rg-border-button\\)\\]{border-color:var(--rg-border-button)}.border-accent{border-color:var(--color-accent)}.border-accent\\/40{border-color:#5e6ad266}@supports (color:color-mix(in lab, red, red)){.border-accent\\/40{border-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.border-border{border-color:var(--color-border)}.border-danger{border-color:var(--color-danger)}.border-danger\\/40{border-color:#eb575766}@supports (color:color-mix(in lab, red, red)){.border-danger\\/40{border-color:color-mix(in oklab, var(--color-danger) 40%, transparent)}}.border-success{border-color:var(--color-success)}.border-success\\/40{border-color:#4cb78266}@supports (color:color-mix(in lab, red, red)){.border-success\\/40{border-color:color-mix(in oklab, var(--color-success) 40%, transparent)}}.border-text-dim{border-color:var(--color-text-dim)}.border-transparent{border-color:#0000}.border-warn{border-color:var(--color-warn)}.border-warn\\/40{border-color:#f2c94c66}@supports (color:color-mix(in lab, red, red)){.border-warn\\/40{border-color:color-mix(in oklab, var(--color-warn) 40%, transparent)}}.border-t-\\[var\\(--rg-border-subtle\\)\\]{border-top-color:var(--rg-border-subtle)}.border-t-transparent{border-top-color:#0000}.bg-\\[var\\(--rg-error-bg\\)\\]{background-color:var(--rg-error-bg)}.bg-\\[var\\(--rg-panel-bg\\)\\]{background-color:var(--rg-panel-bg)}.bg-\\[var\\(--rg-submit-bg\\)\\]{background-color:var(--rg-submit-bg)}.bg-\\[var\\(--rg-surface-active\\)\\]{background-color:var(--rg-surface-active)}.bg-\\[var\\(--rg-surface-hover\\)\\]{background-color:var(--rg-surface-hover)}.bg-\\[var\\(--rg-text-primary\\)\\]{background-color:var(--rg-text-primary)}.bg-\\[var\\(--rg-text-secondary\\)\\]{background-color:var(--rg-text-secondary)}.bg-accent{background-color:var(--color-accent)}.bg-accent-soft{background-color:var(--color-accent-soft)}.bg-bg{background-color:var(--color-bg)}.bg-bg\\/80{background-color:#0b0c0ecc}@supports (color:color-mix(in lab, red, red)){.bg-bg\\/80{background-color:color-mix(in oklab, var(--color-bg) 80%, transparent)}}.bg-border{background-color:var(--color-border)}.bg-current{background-color:currentColor}.bg-danger{background-color:var(--color-danger)}.bg-danger-soft{background-color:var(--color-danger-soft)}.bg-danger\\/10{background-color:#eb57571a}@supports (color:color-mix(in lab, red, red)){.bg-danger\\/10{background-color:color-mix(in oklab, var(--color-danger) 10%, transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-success{background-color:var(--color-success)}.bg-surface{background-color:var(--color-surface)}.bg-surface-2{background-color:var(--color-surface-2)}.bg-surface-3{background-color:var(--color-surface-3)}.bg-text-faint{background-color:var(--color-text-faint)}.bg-transparent{background-color:#0000}.bg-warn{background-color:var(--color-warn)}.bg-warn\\/10{background-color:#f2c94c1a}@supports (color:color-mix(in lab, red, red)){.bg-warn\\/10{background-color:color-mix(in oklab, var(--color-warn) 10%, transparent)}}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\\.5{padding:calc(var(--spacing) * 2.5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:0}.px-0\\.25{padding-inline:calc(var(--spacing) * .25)}.px-1{padding-inline:var(--spacing)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-\\[3px\\]{padding-inline:3px}.py-0{padding-block:0}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-0\\.25{padding-block:calc(var(--spacing) * .25)}.py-1{padding-block:var(--spacing)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-px{padding-block:1px}.pt-0{padding-top:0}.pt-0\\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-1\\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:var(--spacing)}.pr-1\\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-1{padding-bottom:var(--spacing)}.pb-1\\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-0{padding-left:0}.pl-0\\.5{padding-left:calc(var(--spacing) * .5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-end{text-align:end}.text-justify{text-align:justify}.text-left{text-align:left}.text-right{text-align:right}.text-start{text-align:start}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.font-serif{font-family:var(--font-serif)}.text-\\[9\\.5px\\]{font-size:9.5px}.text-\\[9px\\]{font-size:9px}.text-\\[10\\.5px\\]{font-size:10.5px}.text-\\[10px\\]{font-size:10px}.text-\\[11\\.5px\\]{font-size:11.5px}.text-\\[11px\\]{font-size:11px}.text-\\[12\\.5px\\]{font-size:12.5px}.text-\\[12px\\]{font-size:12px}.text-\\[13px\\]{font-size:13px}.text-\\[15px\\]{font-size:15px}.leading-3{--tw-leading:calc(var(--spacing) * 3);line-height:calc(var(--spacing) * 3)}.leading-3\\.5{--tw-leading:calc(var(--spacing) * 3.5);line-height:calc(var(--spacing) * 3.5)}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-extralight{--tw-font-weight:var(--font-weight-extralight);font-weight:var(--font-weight-extralight)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.font-thin{--tw-font-weight:var(--font-weight-thin);font-weight:var(--font-weight-thin)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-normal{overflow-wrap:normal;word-break:normal}.break-words,.wrap-break-word{overflow-wrap:break-word}.break-all{word-break:break-all}.break-keep{word-break:keep-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-break-spaces{white-space:break-spaces}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-\\[var\\(--rg-error-text\\)\\]{color:var(--rg-error-text)}.text-\\[var\\(--rg-submit-fg\\)\\]{color:var(--rg-submit-fg)}.text-\\[var\\(--rg-text-primary\\)\\]{color:var(--rg-text-primary)}.text-\\[var\\(--rg-text-primary-85\\)\\]{color:var(--rg-text-primary-85)}.text-\\[var\\(--rg-text-secondary\\)\\]{color:var(--rg-text-secondary)}.text-accent{color:var(--color-accent)}.text-danger{color:var(--color-danger)}.text-success{color:var(--color-success)}.text-text{color:var(--color-text)}.text-text-dim{color:var(--color-text-dim)}.text-text-faint{color:var(--color-text-faint)}.text-warn{color:var(--color-warn)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-accent{accent-color:var(--color-accent)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\\[box-shadow\\:var\\(--rg-shadow\\)\\]{box-shadow:var(--rg-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter: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,)}.\\[filter\\:var\\(--rg-drop-shadow\\)\\]{filter:var(--rg-drop-shadow)}.filter{filter: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,)}.backdrop-filter{-webkit-backdrop-filter: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,);backdrop-filter: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,)}.transition{transition-property: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,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[grid-template-columns\\]{transition-property:grid-template-columns;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[grid-template-rows\\]{transition-property:grid-template-rows;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[opacity\\,transform\\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[padding\\,border-radius\\,transform\\]{transition-property:padding,border-radius,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[top\\,left\\,width\\,height\\,opacity\\,border-radius\\]{transition-property:top,left,width,height,opacity,border-radius;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[transform\\,color\\]{transition-property:transform,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[transform\\,opacity\\]{transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.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:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.delay-\\[80ms\\]{transition-delay:80ms}.duration-60{--tw-duration:60ms;transition-duration:60ms}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-120{--tw-duration:.12s;transition-duration:.12s}.duration-140{--tw-duration:.14s;transition-duration:.14s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-180{--tw-duration:.18s;transition-duration:.18s}.duration-220{--tw-duration:.22s;transition-duration:.22s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-400{--tw-duration:.4s;transition-duration:.4s}.ease-\\[cubic-bezier\\(0\\,0\\,0\\.2\\,1\\)\\]{--tw-ease:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-\\[opacity\\,transform\\]{will-change:opacity,transform}.will-change-transform{will-change:transform}.contain-layout{--tw-contain-layout:layout;contain:var(--tw-contain-size,) var(--tw-contain-layout,) var(--tw-contain-paint,) var(--tw-contain-style,)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.\\[corner-shape\\:superellipse\\(1\\.25\\)\\]{corner-shape:superellipse(1.25)}.\\[font-synthesis\\:none\\]{font-synthesis:none}.group-open\\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}@media (hover:hover){.group-hover\\:text-\\[var\\(--rg-text-primary\\)\\]:is(:where(.group):hover *){color:var(--rg-text-primary)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\\:text-text-faint::placeholder{color:var(--color-text-faint)}@media (hover:hover){.hover\\:bg-\\[var\\(--rg-error-bg-hover\\)\\]:hover{background-color:var(--rg-error-bg-hover)}.hover\\:bg-\\[var\\(--rg-surface-active\\)\\]:hover{background-color:var(--rg-surface-active)}.hover\\:bg-\\[var\\(--rg-surface-hover\\)\\]:hover{background-color:var(--rg-surface-hover)}.hover\\:bg-accent-hover:hover{background-color:var(--color-accent-hover)}.hover\\:bg-accent\\/50:hover{background-color:#5e6ad280}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/50:hover{background-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.hover\\:bg-danger\\/30:hover{background-color:#eb57574d}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/30:hover{background-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.hover\\:bg-surface-2:hover{background-color:var(--color-surface-2)}.hover\\:bg-surface-3:hover{background-color:var(--color-surface-3)}.hover\\:text-\\[var\\(--rg-text-primary\\)\\]:hover{color:var(--rg-text-primary)}.hover\\:text-accent:hover{color:var(--color-accent)}.hover\\:text-danger:hover{color:var(--color-danger)}.hover\\:text-text:hover{color:var(--color-text)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-80:hover{opacity:.8}}.focus\\:border-accent:focus{border-color:var(--color-accent)}.active\\:cursor-grabbing:active{cursor:grabbing}.active\\:bg-accent:active{background-color:var(--color-accent)}.active\\:transition-none:active{transition-property:none}.disabled\\:cursor-default:disabled{cursor:default}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:bg-surface-3:disabled{background-color:var(--color-surface-3)}.disabled\\:text-text-faint:disabled{color:var(--color-text-faint)}.disabled\\:opacity-40:disabled{opacity:.4}@media (hover:hover){.disabled\\:hover\\:bg-surface-2:disabled:hover{background-color:var(--color-surface-2)}}.data-\\[state\\=on\\]\\:transition-none[data-state=on],.data-\\[state\\=open\\]\\:transition-none[data-state=open],.data-\\[state\\=…\\]\\:transition-none[data-state=…]{transition-property:none}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=light],:host([data-theme=light]){--color-bg:#fbfbfc;--color-surface:#fff;--color-surface-2:#f4f4f6;--color-surface-3:#e9e9ee;--color-border:#e2e2e8;--color-border-strong:#cfcfd8;--color-text:#1b1c20;--color-text-dim:#5c5f6a;--color-text-faint:#9a9da8;--color-accent-soft:#5e6ad21f;--color-danger-soft:#eb57571a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--color-bg:#fbfbfc;--color-surface:#fff;--color-surface-2:#f4f4f6;--color-surface-3:#e9e9ee;--color-border:#e2e2e8;--color-border-strong:#cfcfd8;--color-text:#1b1c20;--color-text-dim:#5c5f6a;--color-text-faint:#9a9da8;--color-accent-soft:#5e6ad21f;--color-danger-soft:#eb57571a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}body{background-color:var(--color-bg);font-family:var(--font-sans);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-width:320px;margin:0;font-size:13px}@keyframes geist-spinner-fade{0%{opacity:1}to{opacity:.15}}[data-tip]{position:relative}[data-tip]:hover:after{content:attr(data-tip);color:#fff;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;z-index:60;background:#1b1c20;border-radius:6px;max-width:260px;padding:3px 8px;font-size:10.5px;font-weight:500;line-height:1.35;position:absolute;bottom:calc(100% + 6px);left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 4px 12px #0000004d}[data-tip][data-tip-pos~=right]:hover:after{left:0;transform:none}[data-tip][data-tip-pos~=left]:hover:after{left:auto;right:0;transform:none}[data-tip][data-tip-pos~=bottom]:hover:after{top:calc(100% + 6px);bottom:auto}.no-scrollbar{scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}.lg-md p{margin:0 0 6px}.lg-md p:last-child{margin-bottom:0}.lg-md a{color:var(--color-accent);word-break:break-all;text-decoration:none}.lg-md a:hover{text-decoration:underline}.lg-md code{background:var(--color-surface-2);border:1px solid var(--color-border);font-family:var(--font-mono);border-radius:4px;padding:0 4px;font-size:11px}.lg-md pre{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:6px;margin:6px 0;padding:8px;overflow-x:auto}.lg-md pre code{white-space:pre;background:0 0;border:none;padding:0;font-size:11px}.lg-md ul,.lg-md ol{flex-direction:column;gap:2px;margin:4px 0 6px;padding-left:18px;display:flex}.lg-md ul{list-style:outside}.lg-md ol{list-style:decimal}.lg-md h4{margin:8px 0 4px;font-size:12px;font-weight:600}.lg-md lg-media{display:block}.lg-md lg-media img,.lg-md lg-media video{border:1px solid var(--color-border);border-radius:6px;max-width:100%;margin:4px 0}.lg-md video{border:1px solid var(--color-border);background:#000;border-radius:6px;max-width:100%;margin:4px 0}.lg-md img{border:1px solid var(--color-border);border-radius:6px;max-width:100%;margin:4px 0}.lg-md strong{font-weight:600}*{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:4px}::-webkit-scrollbar-track{background:0 0}@property --tw-rotate-x{syntax:\"*\";inherits:false}@property --tw-rotate-y{syntax:\"*\";inherits:false}@property --tw-rotate-z{syntax:\"*\";inherits:false}@property --tw-skew-x{syntax:\"*\";inherits:false}@property --tw-skew-y{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-tracking{syntax:\"*\";inherits:false}@property --tw-ordinal{syntax:\"*\";inherits:false}@property --tw-slashed-zero{syntax:\"*\";inherits:false}@property --tw-numeric-figure{syntax:\"*\";inherits:false}@property --tw-numeric-spacing{syntax:\"*\";inherits:false}@property --tw-numeric-fraction{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@property --tw-backdrop-blur{syntax:\"*\";inherits:false}@property --tw-backdrop-brightness{syntax:\"*\";inherits:false}@property --tw-backdrop-contrast{syntax:\"*\";inherits:false}@property --tw-backdrop-grayscale{syntax:\"*\";inherits:false}@property --tw-backdrop-hue-rotate{syntax:\"*\";inherits:false}@property --tw-backdrop-invert{syntax:\"*\";inherits:false}@property --tw-backdrop-opacity{syntax:\"*\";inherits:false}@property --tw-backdrop-saturate{syntax:\"*\";inherits:false}@property --tw-backdrop-sepia{syntax:\"*\";inherits:false}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-ease{syntax:\"*\";inherits:false}@property --tw-contain-size{syntax:\"*\";inherits:false}@property --tw-contain-layout{syntax:\"*\";inherits:false}@property --tw-contain-paint{syntax:\"*\";inherits:false}@property --tw-contain-style{syntax:\"*\";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}";
50334
+ var L7 = "/*! tailwindcss v4.3.2 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-contain-size:initial;--tw-contain-layout:initial;--tw-contain-paint:initial;--tw-contain-style:initial}}}@layer theme{:root,:host{--font-sans:\"Inter\", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-serif:ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif;--font-mono:ui-monospace, \"SF Mono\", Menlo, monospace;--color-red-500:oklch(63.7% .237 25.331);--color-white:#fff;--spacing:.25rem;--font-weight-thin:100;--font-weight-extralight:200;--font-weight-light:300;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--font-weight-black:900;--tracking-wide:.025em;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-xl:.75rem;--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-bg:#0b0c0e;--color-surface:#141517;--color-surface-2:#1c1d21;--color-surface-3:#24262b;--color-border:#26282d;--color-border-strong:#34363d;--color-text:#e8e9eb;--color-text-dim:#8b8e98;--color-text-faint:#5c5f6a;--color-accent:#5e6ad2;--color-accent-hover:#6e79e0;--color-accent-soft:#5e6ad226;--color-success:#4cb782;--color-warn:#f2c94c;--color-danger:#eb5757;--color-danger-soft:#eb575726}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.visible\\!{visibility:visible!important}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{inset-block:0}.-top-0{top:0}.-top-0\\.5{top:calc(var(--spacing) * -.5)}.top-0{top:0}.top-0\\.5{top:calc(var(--spacing) * .5)}.top-1{top:var(--spacing)}.top-1\\/2{top:50%}.top-3{top:calc(var(--spacing) * 3)}.top-\\[2px\\]{top:2px}.top-full{top:100%}.-right-0{right:0}.-right-0\\.5{right:calc(var(--spacing) * -.5)}.right-0{right:0}.right-0\\.5{right:calc(var(--spacing) * .5)}.right-4{right:calc(var(--spacing) * 4)}.right-full{right:100%}.bottom-0{bottom:0}.bottom-1{bottom:var(--spacing)}.bottom-4{bottom:calc(var(--spacing) * 4)}.bottom-\\[2px\\]{bottom:2px}.bottom-full{bottom:100%}.-left-\\[13\\.5px\\]{left:-13.5px}.left-0{left:0}.left-1{left:var(--spacing)}.left-1\\/2{left:50%}.left-\\[5px\\]{left:5px}.left-full{left:100%}.z-1{z-index:1}.z-10{z-index:10}.z-\\[2147483645\\]{z-index:2147483645}.z-\\[2147483646\\]{z-index:2147483646}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.container\\!{width:100%!important}@media (width>=40rem){.container\\!{max-width:40rem!important}}@media (width>=48rem){.container\\!{max-width:48rem!important}}@media (width>=64rem){.container\\!{max-width:64rem!important}}@media (width>=80rem){.container\\!{max-width:80rem!important}}@media (width>=96rem){.container\\!{max-width:96rem!important}}.-m-0{margin:0}.-m-0\\.5{margin:calc(var(--spacing) * -.5)}.-m-4{margin:calc(var(--spacing) * -4)}.m-0{margin:0}.-mx-2{margin-inline:calc(var(--spacing) * -2)}.-my-1{margin-block:calc(var(--spacing) * -1)}.-my-1\\.5{margin-block:calc(var(--spacing) * -1.5)}.mt-0{margin-top:0}.mt-0\\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-2\\.5{margin-top:calc(var(--spacing) * 2.5)}.mt-px{margin-top:1px}.mr-0{margin-right:0}.mr-0\\.5{margin-right:calc(var(--spacing) * .5)}.mr-1{margin-right:var(--spacing)}.mr-1\\.5{margin-right:calc(var(--spacing) * 1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-2\\.5{margin-right:calc(var(--spacing) * 2.5)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-0{margin-bottom:0}.mb-0\\.5{margin-bottom:calc(var(--spacing) * .5)}.mb-1{margin-bottom:var(--spacing)}.mb-1\\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-2\\.5{margin-bottom:calc(var(--spacing) * 2.5)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-2\\.5{margin-left:calc(var(--spacing) * 2.5)}.ml-4{margin-left:calc(var(--spacing) * 4)}.ml-auto{margin-left:auto}.ml-px{margin-left:1px}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-5{-webkit-line-clamp:5;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.list-item{display:list-item}.table{display:table}.size-0{width:0;height:0}.size-1{width:var(--spacing);height:var(--spacing)}.size-1\\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-\\[9px\\]{width:9px;height:9px}.size-\\[12px\\]{width:12px;height:12px}.size-\\[16px\\]{width:16px;height:16px}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-16{height:calc(var(--spacing) * 16)}.h-\\[8px\\]{height:8px}.h-\\[17px\\]{height:17px}.h-\\[18px\\]{height:18px}.h-\\[20px\\]{height:20px}.h-\\[24px\\]{height:24px}.h-fit{height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:calc(var(--spacing) * 32)}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-44{max-height:calc(var(--spacing) * 44)}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-\\[28rem\\]{max-height:28rem}.max-h-\\[var\\(--rg-edit-list-max-h\\)\\]{max-height:var(--rg-edit-list-max-h)}.min-h-0{min-height:0}.min-h-4{min-height:calc(var(--spacing) * 4)}.min-h-\\[2lh\\]{min-height:2lh}.min-h-\\[28px\\]{min-height:28px}.w-1{width:var(--spacing)}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-16{width:calc(var(--spacing) * 16)}.w-28{width:calc(var(--spacing) * 28)}.w-72{width:calc(var(--spacing) * 72)}.w-\\[2px\\]{width:2px}.w-\\[Npx\\]{width:Npx}.w-\\[calc\\(100\\%\\+16px\\)\\]{width:calc(100% + 16px)}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\\[55\\%\\]{max-width:55%}.max-w-\\[100vw\\]{max-width:100vw}.max-w-\\[110px\\]{max-width:110px}.max-w-\\[280px\\]{max-width:280px}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-\\[3\\.5ch\\]{min-width:3.5ch}.min-w-\\[3ch\\]{min-width:3ch}.min-w-\\[4ch\\]{min-width:4ch}.min-w-\\[5ch\\]{min-width:5ch}.min-w-\\[6ch\\]{min-width:6ch}.min-w-\\[7ch\\]{min-width:7ch}.min-w-\\[8ch\\]{min-width:8ch}.min-w-\\[10ch\\]{min-width:10ch}.min-w-\\[12ch\\]{min-width:12ch}.min-w-\\[36px\\]{min-width:36px}.min-w-\\[52px\\]{min-width:52px}.min-w-\\[100px\\]{min-width:100px}.min-w-\\[150px\\]{min-width:150px}.flex-1{flex:1}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-rotate-90{rotate:-90deg}.rotate-0{rotate:0deg}.rotate-90{rotate:90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-default{cursor:default}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.resize{resize:both}.resize-none{resize:none}.resize-y{resize:vertical}.list-decimal{list-style-type:decimal}.grid-cols-\\[0fr\\]{grid-template-columns:0fr}.grid-cols-\\[1fr\\]{grid-template-columns:1fr}.grid-rows-\\[0fr\\]{grid-template-rows:0fr}.grid-rows-\\[1fr\\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0{gap:0}.gap-0\\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-\\[5px\\]{gap:5px}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-\\[1px\\]{border-radius:1px}.rounded-\\[3px\\]{border-radius:3px}.rounded-\\[4px\\]{border-radius:4px}.rounded-\\[5px\\]{border-radius:5px}.rounded-\\[6px\\]{border-radius:6px}.rounded-\\[13px\\]{border-radius:13px}.rounded-\\[14px\\]{border-radius:14px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-t-\\[10px\\]{border-top-left-radius:10px;border-top-right-radius:10px}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-l{border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-l-\\[10px\\]{border-top-left-radius:10px;border-bottom-left-radius:10px}.rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.rounded-tl{border-top-left-radius:.25rem}.rounded-r{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.rounded-r-\\[10px\\]{border-top-right-radius:10px;border-bottom-right-radius:10px}.rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}.rounded-tr{border-top-right-radius:.25rem}.rounded-b{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.rounded-b-\\[6px\\]{border-bottom-right-radius:6px;border-bottom-left-radius:6px}.rounded-b-\\[10px\\]{border-bottom-right-radius:10px;border-bottom-left-radius:10px}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.rounded-br{border-bottom-right-radius:.25rem}.rounded-bl{border-bottom-left-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.\\[border-width\\:0\\.5px\\]{border-width:.5px}.border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-t-4{border-top-style:var(--tw-border-style);border-top-width:4px}.\\[border-top-width\\:0\\.5px\\]{border-top-width:.5px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-dotted{--tw-border-style:dotted;border-style:dotted}.border-none{--tw-border-style:none;border-style:none}.border-solid{--tw-border-style:solid;border-style:solid}.border-\\[var\\(--rg-border-button\\)\\]{border-color:var(--rg-border-button)}.border-accent{border-color:var(--color-accent)}.border-accent\\/40{border-color:#5e6ad266}@supports (color:color-mix(in lab, red, red)){.border-accent\\/40{border-color:color-mix(in oklab, var(--color-accent) 40%, transparent)}}.border-border{border-color:var(--color-border)}.border-danger{border-color:var(--color-danger)}.border-danger\\/40{border-color:#eb575766}@supports (color:color-mix(in lab, red, red)){.border-danger\\/40{border-color:color-mix(in oklab, var(--color-danger) 40%, transparent)}}.border-success{border-color:var(--color-success)}.border-success\\/40{border-color:#4cb78266}@supports (color:color-mix(in lab, red, red)){.border-success\\/40{border-color:color-mix(in oklab, var(--color-success) 40%, transparent)}}.border-text-dim{border-color:var(--color-text-dim)}.border-transparent{border-color:#0000}.border-warn{border-color:var(--color-warn)}.border-warn\\/40{border-color:#f2c94c66}@supports (color:color-mix(in lab, red, red)){.border-warn\\/40{border-color:color-mix(in oklab, var(--color-warn) 40%, transparent)}}.border-t-\\[var\\(--rg-border-subtle\\)\\]{border-top-color:var(--rg-border-subtle)}.border-t-transparent{border-top-color:#0000}.bg-\\[var\\(--rg-error-bg\\)\\]{background-color:var(--rg-error-bg)}.bg-\\[var\\(--rg-panel-bg\\)\\]{background-color:var(--rg-panel-bg)}.bg-\\[var\\(--rg-submit-bg\\)\\]{background-color:var(--rg-submit-bg)}.bg-\\[var\\(--rg-surface-active\\)\\]{background-color:var(--rg-surface-active)}.bg-\\[var\\(--rg-surface-hover\\)\\]{background-color:var(--rg-surface-hover)}.bg-\\[var\\(--rg-text-primary\\)\\]{background-color:var(--rg-text-primary)}.bg-\\[var\\(--rg-text-secondary\\)\\]{background-color:var(--rg-text-secondary)}.bg-accent{background-color:var(--color-accent)}.bg-accent-soft{background-color:var(--color-accent-soft)}.bg-bg{background-color:var(--color-bg)}.bg-bg\\/80{background-color:#0b0c0ecc}@supports (color:color-mix(in lab, red, red)){.bg-bg\\/80{background-color:color-mix(in oklab, var(--color-bg) 80%, transparent)}}.bg-border{background-color:var(--color-border)}.bg-current{background-color:currentColor}.bg-danger{background-color:var(--color-danger)}.bg-danger-soft{background-color:var(--color-danger-soft)}.bg-danger\\/10{background-color:#eb57571a}@supports (color:color-mix(in lab, red, red)){.bg-danger\\/10{background-color:color-mix(in oklab, var(--color-danger) 10%, transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-success{background-color:var(--color-success)}.bg-surface{background-color:var(--color-surface)}.bg-surface-2{background-color:var(--color-surface-2)}.bg-surface-3{background-color:var(--color-surface-3)}.bg-text-faint{background-color:var(--color-text-faint)}.bg-transparent{background-color:#0000}.bg-warn{background-color:var(--color-warn)}.bg-warn\\/10{background-color:#f2c94c1a}@supports (color:color-mix(in lab, red, red)){.bg-warn\\/10{background-color:color-mix(in oklab, var(--color-warn) 10%, transparent)}}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-1\\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\\.5{padding:calc(var(--spacing) * 2.5)}.p-6{padding:calc(var(--spacing) * 6)}.px-0{padding-inline:0}.px-0\\.25{padding-inline:calc(var(--spacing) * .25)}.px-1{padding-inline:var(--spacing)}.px-1\\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-\\[3px\\]{padding-inline:3px}.py-0{padding-block:0}.py-0\\.5{padding-block:calc(var(--spacing) * .5)}.py-0\\.25{padding-block:calc(var(--spacing) * .25)}.py-1{padding-block:var(--spacing)}.py-1\\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-px{padding-block:1px}.pt-0{padding-top:0}.pt-0\\.5{padding-top:calc(var(--spacing) * .5)}.pt-1{padding-top:var(--spacing)}.pt-1\\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-2\\.5{padding-top:calc(var(--spacing) * 2.5)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pr-1{padding-right:var(--spacing)}.pr-1\\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pb-1{padding-bottom:var(--spacing)}.pb-1\\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pl-0{padding-left:0}.pl-0\\.5{padding-left:calc(var(--spacing) * .5)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-2\\.5{padding-left:calc(var(--spacing) * 2.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.text-center{text-align:center}.text-end{text-align:end}.text-justify{text-align:justify}.text-left{text-align:left}.text-right{text-align:right}.text-start{text-align:start}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.font-serif{font-family:var(--font-serif)}.text-\\[9\\.5px\\]{font-size:9.5px}.text-\\[9px\\]{font-size:9px}.text-\\[10\\.5px\\]{font-size:10.5px}.text-\\[10px\\]{font-size:10px}.text-\\[11\\.5px\\]{font-size:11.5px}.text-\\[11px\\]{font-size:11px}.text-\\[12\\.5px\\]{font-size:12.5px}.text-\\[12px\\]{font-size:12px}.text-\\[13px\\]{font-size:13px}.text-\\[15px\\]{font-size:15px}.leading-3{--tw-leading:calc(var(--spacing) * 3);line-height:calc(var(--spacing) * 3)}.leading-3\\.5{--tw-leading:calc(var(--spacing) * 3.5);line-height:calc(var(--spacing) * 3.5)}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-black{--tw-font-weight:var(--font-weight-black);font-weight:var(--font-weight-black)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-extralight{--tw-font-weight:var(--font-weight-extralight);font-weight:var(--font-weight-extralight)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.font-thin{--tw-font-weight:var(--font-weight-thin);font-weight:var(--font-weight-thin)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.break-normal{overflow-wrap:normal;word-break:normal}.break-words,.wrap-break-word{overflow-wrap:break-word}.break-all{word-break:break-all}.break-keep{word-break:keep-all}.text-ellipsis{text-overflow:ellipsis}.whitespace-break-spaces{white-space:break-spaces}.whitespace-normal{white-space:normal}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-\\[var\\(--rg-error-text\\)\\]{color:var(--rg-error-text)}.text-\\[var\\(--rg-submit-fg\\)\\]{color:var(--rg-submit-fg)}.text-\\[var\\(--rg-text-primary\\)\\]{color:var(--rg-text-primary)}.text-\\[var\\(--rg-text-primary-85\\)\\]{color:var(--rg-text-primary-85)}.text-\\[var\\(--rg-text-secondary\\)\\]{color:var(--rg-text-secondary)}.text-accent{color:var(--color-accent)}.text-danger{color:var(--color-danger)}.text-success{color:var(--color-success)}.text-text{color:var(--color-text)}.text-text-dim{color:var(--color-text-dim)}.text-text-faint{color:var(--color-text-faint)}.text-warn{color:var(--color-warn)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.uppercase{text-transform:uppercase}.italic{font-style:italic}.not-italic{font-style:normal}.lining-nums{--tw-numeric-figure:lining-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.oldstyle-nums{--tw-numeric-figure:oldstyle-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.proportional-nums{--tw-numeric-spacing:proportional-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.slashed-zero{--tw-slashed-zero:slashed-zero;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.accent-accent{accent-color:var(--color-accent)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-100{opacity:1}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.\\[box-shadow\\:var\\(--rg-shadow\\)\\]{box-shadow:var(--rg-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter: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,)}.\\[filter\\:var\\(--rg-drop-shadow\\)\\]{filter:var(--rg-drop-shadow)}.filter{filter: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,)}.backdrop-filter{-webkit-backdrop-filter: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,);backdrop-filter: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,)}.transition{transition-property: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,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[grid-template-columns\\]{transition-property:grid-template-columns;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[grid-template-rows\\]{transition-property:grid-template-rows;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[opacity\\,transform\\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[padding\\,border-radius\\,transform\\]{transition-property:padding,border-radius,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[top\\,left\\,width\\,height\\,opacity\\,border-radius\\]{transition-property:top,left,width,height,opacity,border-radius;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[transform\\,color\\]{transition-property:transform,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\\[transform\\,opacity\\]{transition-property:transform,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.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:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.delay-\\[80ms\\]{transition-delay:80ms}.duration-60{--tw-duration:60ms;transition-duration:60ms}.duration-75{--tw-duration:75ms;transition-duration:75ms}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-120{--tw-duration:.12s;transition-duration:.12s}.duration-140{--tw-duration:.14s;transition-duration:.14s}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-180{--tw-duration:.18s;transition-duration:.18s}.duration-220{--tw-duration:.22s;transition-duration:.22s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-400{--tw-duration:.4s;transition-duration:.4s}.ease-\\[cubic-bezier\\(0\\,0\\,0\\.2\\,1\\)\\]{--tw-ease:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.will-change-\\[opacity\\,transform\\]{will-change:opacity,transform}.will-change-transform{will-change:transform}.contain-layout{--tw-contain-layout:layout;contain:var(--tw-contain-size,) var(--tw-contain-layout,) var(--tw-contain-paint,) var(--tw-contain-style,)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.\\[corner-shape\\:superellipse\\(1\\.25\\)\\]{corner-shape:superellipse(1.25)}.\\[font-synthesis\\:none\\]{font-synthesis:none}.group-open\\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}@media (hover:hover){.group-hover\\:text-\\[var\\(--rg-text-primary\\)\\]:is(:where(.group):hover *){color:var(--rg-text-primary)}.group-hover\\:opacity-100:is(:where(.group):hover *){opacity:1}}.placeholder\\:text-text-faint::placeholder{color:var(--color-text-faint)}@media (hover:hover){.hover\\:bg-\\[var\\(--rg-error-bg-hover\\)\\]:hover{background-color:var(--rg-error-bg-hover)}.hover\\:bg-\\[var\\(--rg-surface-active\\)\\]:hover{background-color:var(--rg-surface-active)}.hover\\:bg-\\[var\\(--rg-surface-hover\\)\\]:hover{background-color:var(--rg-surface-hover)}.hover\\:bg-accent-hover:hover{background-color:var(--color-accent-hover)}.hover\\:bg-accent\\/50:hover{background-color:#5e6ad280}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-accent\\/50:hover{background-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.hover\\:bg-danger\\/30:hover{background-color:#eb57574d}@supports (color:color-mix(in lab, red, red)){.hover\\:bg-danger\\/30:hover{background-color:color-mix(in oklab, var(--color-danger) 30%, transparent)}}.hover\\:bg-surface-2:hover{background-color:var(--color-surface-2)}.hover\\:bg-surface-3:hover{background-color:var(--color-surface-3)}.hover\\:text-\\[var\\(--rg-text-primary\\)\\]:hover{color:var(--rg-text-primary)}.hover\\:text-accent:hover{color:var(--color-accent)}.hover\\:text-danger:hover{color:var(--color-danger)}.hover\\:text-text:hover{color:var(--color-text)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:opacity-80:hover{opacity:.8}}.focus\\:border-accent:focus{border-color:var(--color-accent)}.active\\:cursor-grabbing:active{cursor:grabbing}.active\\:bg-accent:active{background-color:var(--color-accent)}.active\\:transition-none:active{transition-property:none}.disabled\\:cursor-default:disabled{cursor:default}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:bg-surface-3:disabled{background-color:var(--color-surface-3)}.disabled\\:text-text-faint:disabled{color:var(--color-text-faint)}.disabled\\:opacity-40:disabled{opacity:.4}@media (hover:hover){.disabled\\:hover\\:bg-surface-2:disabled:hover{background-color:var(--color-surface-2)}}.data-\\[state\\=on\\]\\:transition-none[data-state=on],.data-\\[state\\=open\\]\\:transition-none[data-state=open],.data-\\[state\\=…\\]\\:transition-none[data-state=…]{transition-property:none}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}[data-theme=light],:host([data-theme=light]){--color-bg:#fbfbfc;--color-surface:#fff;--color-surface-2:#f4f4f6;--color-surface-3:#e9e9ee;--color-border:#e2e2e8;--color-border-strong:#cfcfd8;--color-text:#1b1c20;--color-text-dim:#5c5f6a;--color-text-faint:#9a9da8;--color-accent-soft:#5e6ad21f;--color-danger-soft:#eb57571a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--color-bg:#fbfbfc;--color-surface:#fff;--color-surface-2:#f4f4f6;--color-surface-3:#e9e9ee;--color-border:#e2e2e8;--color-border-strong:#cfcfd8;--color-text:#1b1c20;--color-text-dim:#5c5f6a;--color-text-faint:#9a9da8;--color-accent-soft:#5e6ad21f;--color-danger-soft:#eb57571a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}body{background-color:var(--color-bg);font-family:var(--font-sans);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-width:320px;margin:0;font-size:13px}@keyframes geist-spinner-fade{0%{opacity:1}to{opacity:.15}}[data-tip]{position:relative}[data-tip]:hover:after{content:attr(data-tip);color:#fff;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;z-index:60;background:#1b1c20;border-radius:6px;max-width:260px;padding:3px 8px;font-size:10.5px;font-weight:500;line-height:1.35;position:absolute;bottom:calc(100% + 6px);left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 4px 12px #0000004d}[data-tip][data-tip-pos~=right]:hover:after{left:0;transform:none}[data-tip][data-tip-pos~=left]:hover:after{left:auto;right:0;transform:none}[data-tip][data-tip-pos~=bottom]:hover:after{top:calc(100% + 6px);bottom:auto}.no-scrollbar{scrollbar-width:none}.no-scrollbar::-webkit-scrollbar{display:none}.lg-md p{margin:0 0 6px}.lg-md p:last-child{margin-bottom:0}.lg-md a{color:var(--color-accent);word-break:break-all;text-decoration:none}.lg-md a:hover{text-decoration:underline}.lg-md code{background:var(--color-surface-2);border:1px solid var(--color-border);font-family:var(--font-mono);border-radius:4px;padding:0 4px;font-size:11px}.lg-md pre{background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:6px;margin:6px 0;padding:8px;overflow-x:auto}.lg-md pre code{white-space:pre;background:0 0;border:none;padding:0;font-size:11px}.lg-md ul,.lg-md ol{flex-direction:column;gap:2px;margin:4px 0 6px;padding-left:18px;display:flex}.lg-md ul{list-style:outside}.lg-md ol{list-style:decimal}.lg-md h4{margin:8px 0 4px;font-size:12px;font-weight:600}.lg-md lg-media{display:block}.lg-md lg-media img,.lg-md lg-media video{border:1px solid var(--color-border);border-radius:6px;max-width:100%;margin:4px 0}.lg-md video{border:1px solid var(--color-border);background:#000;border-radius:6px;max-width:100%;margin:4px 0}.lg-md img{border:1px solid var(--color-border);border-radius:6px;max-width:100%;margin:4px 0}.lg-md strong{font-weight:600}*{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:4px}::-webkit-scrollbar-track{background:0 0}@property --tw-rotate-x{syntax:\"*\";inherits:false}@property --tw-rotate-y{syntax:\"*\";inherits:false}@property --tw-rotate-z{syntax:\"*\";inherits:false}@property --tw-skew-x{syntax:\"*\";inherits:false}@property --tw-skew-y{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-leading{syntax:\"*\";inherits:false}@property --tw-font-weight{syntax:\"*\";inherits:false}@property --tw-tracking{syntax:\"*\";inherits:false}@property --tw-ordinal{syntax:\"*\";inherits:false}@property --tw-slashed-zero{syntax:\"*\";inherits:false}@property --tw-numeric-figure{syntax:\"*\";inherits:false}@property --tw-numeric-spacing{syntax:\"*\";inherits:false}@property --tw-numeric-fraction{syntax:\"*\";inherits:false}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@property --tw-backdrop-blur{syntax:\"*\";inherits:false}@property --tw-backdrop-brightness{syntax:\"*\";inherits:false}@property --tw-backdrop-contrast{syntax:\"*\";inherits:false}@property --tw-backdrop-grayscale{syntax:\"*\";inherits:false}@property --tw-backdrop-hue-rotate{syntax:\"*\";inherits:false}@property --tw-backdrop-invert{syntax:\"*\";inherits:false}@property --tw-backdrop-opacity{syntax:\"*\";inherits:false}@property --tw-backdrop-saturate{syntax:\"*\";inherits:false}@property --tw-backdrop-sepia{syntax:\"*\";inherits:false}@property --tw-duration{syntax:\"*\";inherits:false}@property --tw-ease{syntax:\"*\";inherits:false}@property --tw-contain-size{syntax:\"*\";inherits:false}@property --tw-contain-layout{syntax:\"*\";inherits:false}@property --tw-contain-paint{syntax:\"*\";inherits:false}@property --tw-contain-style{syntax:\"*\";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}";
50300
50335
  //#endregion
50301
50336
  //#region src/page/index.tsx
50302
50337
  Br();
50303
- var P7 = /*#__PURE__*/ N("<span aria-hidden class=\"bg-danger size-2 shrink-0 animate-pulse rounded-full\">"), F7 = /*#__PURE__*/ N("<span class=\"text-text min-w-[5ch] text-[11px] font-medium tabular-nums\">"), I7 = /*#__PURE__*/ N("<button class=\"bg-accent hover:bg-accent-hover h-7 cursor-pointer rounded-full px-2.5 text-[11px] font-medium text-white transition-colors\"><span class=\"inline-block min-w-[4ch] text-center\">Stop"), L7 = /*#__PURE__*/ N("<p class=\"text-warn px-1.5 pt-1 pb-1.5 text-[10.5px] font-semibold tracking-wide uppercase\">Needs review"), R7 = /*#__PURE__*/ N("<div><p class=\"text-text-dim px-1.5 pt-1 pb-1.5 text-[10.5px] font-semibold tracking-wide uppercase\">Running agents"), z7 = /*#__PURE__*/ N("<div class=\"fixed z-[2147483646] select-none\"><div class=\"bg-surface border-border text-text flex h-9 cursor-grab items-center gap-1 rounded-full border py-1 pr-1 pl-2.5 font-sans shadow-lg active:cursor-grabbing\">"), B7 = /*#__PURE__*/ N("<div><div title=\"Drag to resize\">"), V7 = /*#__PURE__*/ N("<button title=\"Open Linear Grab\"aria-label=\"Open Linear Grab\"class=\"text-accent hover:opacity-80 inline-flex cursor-pointer items-center gap-1.5\">"), H7 = /*#__PURE__*/ N("<span class=\"bg-border h-4 w-px\"aria-hidden>"), U7 = /*#__PURE__*/ N("<span aria-hidden class=\"bg-warn size-2 rounded-full\">"), W7 = /*#__PURE__*/ N("<span class=\"text-warn min-w-[3.5ch] text-left text-[11px] font-medium tabular-nums\"> rev"), G7 = /*#__PURE__*/ N("<button title=\"Running agents\"aria-label=\"Running agents\"class=\"hover:bg-surface-2 flex h-7 cursor-pointer items-center gap-1.5 rounded-full px-2 transition-colors\"><span aria-hidden></span><span>"), K7 = /*#__PURE__*/ N("<span aria-hidden class=\"bg-accent size-2 shrink-0 animate-pulse rounded-full\">"), q7 = /*#__PURE__*/ N("<span class=\"text-text min-w-[3ch] text-[11px] font-medium tabular-nums\">s"), J7 = /*#__PURE__*/ N("<span class=\"text-text-dim min-w-[7ch] text-[11px] tabular-nums\"> states"), Y7 = /*#__PURE__*/ N("<p class=\"text-text-faint px-1.5 pb-1.5 text-[11.5px]\">No agents running right now."), X7 = /*#__PURE__*/ N("<button class=\"hover:bg-surface-2 flex w-full cursor-pointer flex-col gap-0.5 rounded-md px-1.5 py-1.5 text-left transition-colors\"><span class=\"flex min-w-0 items-center gap-1.5\"><span aria-hidden class=\"size-1.5 shrink-0 rounded-full\"></span><span class=\"font-mono text-text-dim shrink-0 text-[10.5px]\"></span><span class=\"text-text truncate text-[11.5px]\"></span></span><span class=\"text-text-faint pl-3 text-[10.5px] tabular-nums\"> · <!> · ");
50304
- function Z7(e = {}) {
50338
+ var R7 = /*#__PURE__*/ N("<span aria-hidden class=\"bg-danger size-2 shrink-0 animate-pulse rounded-full\">"), z7 = /*#__PURE__*/ N("<span class=\"text-text min-w-[5ch] text-[11px] font-medium tabular-nums\">"), B7 = /*#__PURE__*/ N("<button class=\"bg-accent hover:bg-accent-hover h-7 cursor-pointer rounded-full px-2.5 text-[11px] font-medium text-white transition-colors\"><span class=\"inline-block min-w-[4ch] text-center\">Stop"), V7 = /*#__PURE__*/ N("<p class=\"text-warn px-1.5 pt-1 pb-1.5 text-[10.5px] font-semibold tracking-wide uppercase\">Needs review"), H7 = /*#__PURE__*/ N("<div><p class=\"text-text-dim px-1.5 pt-1 pb-1.5 text-[10.5px] font-semibold tracking-wide uppercase\">Running agents"), U7 = /*#__PURE__*/ N("<div class=\"fixed z-[2147483646] select-none\"><div class=\"bg-surface border-border text-text flex h-9 cursor-grab items-center gap-1 rounded-full border py-1 pr-1 pl-2.5 font-sans shadow-lg active:cursor-grabbing\">"), W7 = /*#__PURE__*/ N("<div><div title=\"Drag to resize\">"), G7 = /*#__PURE__*/ N("<button title=\"Open Linear Grab\"aria-label=\"Open Linear Grab\"class=\"text-accent hover:opacity-80 inline-flex cursor-pointer items-center gap-1.5\">"), K7 = /*#__PURE__*/ N("<span class=\"bg-border h-4 w-px\"aria-hidden>"), q7 = /*#__PURE__*/ N("<span aria-hidden class=\"bg-warn size-2 rounded-full\">"), J7 = /*#__PURE__*/ N("<span class=\"text-warn min-w-[3.5ch] text-left text-[11px] font-medium tabular-nums\"> rev"), Y7 = /*#__PURE__*/ N("<button title=\"Running agents\"aria-label=\"Running agents\"class=\"hover:bg-surface-2 flex h-7 cursor-pointer items-center gap-1.5 rounded-full px-2 transition-colors\"><span aria-hidden></span><span>"), X7 = /*#__PURE__*/ N("<span aria-hidden class=\"bg-accent size-2 shrink-0 animate-pulse rounded-full\">"), Z7 = /*#__PURE__*/ N("<span class=\"text-text min-w-[3ch] text-[11px] font-medium tabular-nums\">s"), Q7 = /*#__PURE__*/ N("<span class=\"text-text-dim min-w-[7ch] text-[11px] tabular-nums\"> states"), $7 = /*#__PURE__*/ N("<p class=\"text-text-faint px-1.5 pb-1.5 text-[11.5px]\">No agents running right now."), e9 = /*#__PURE__*/ N("<button class=\"hover:bg-surface-2 flex w-full cursor-pointer flex-col gap-0.5 rounded-md px-1.5 py-1.5 text-left transition-colors\"><span class=\"flex min-w-0 items-center gap-1.5\"><span aria-hidden class=\"size-1.5 shrink-0 rounded-full\"></span><span class=\"font-mono text-text-dim shrink-0 text-[10.5px]\"></span><span class=\"text-text truncate text-[11.5px]\"></span></span><span class=\"text-text-faint pl-3 text-[10.5px] tabular-nums\"> · <!> · ");
50339
+ function t9(e = {}) {
50305
50340
  if (typeof window > "u" || window.__LINEAR_GRAB_PAGE__) return;
50306
50341
  window.__LINEAR_GRAB_PAGE__ = !0;
50307
50342
  let t = () => {
50308
- uk(), z2(), Y4(), R8(), JZ();
50343
+ uk(), z2(), Y4(), V8(), JZ();
50309
50344
  let t = document.createElement("div");
50310
50345
  t.id = "linear-grab-root", document.body.appendChild(t);
50311
50346
  let n = (e) => {
@@ -50333,17 +50368,17 @@ function Z7(e = {}) {
50333
50368
  "keypress"
50334
50369
  ]) window.addEventListener(e, n, { capture: !0 });
50335
50370
  let r = t.attachShadow({ mode: "open" }), i = document.createElement("style");
50336
- i.textContent = N7, r.appendChild(i);
50371
+ i.textContent = L7, r.appendChild(i);
50337
50372
  let a = document.createElement("div");
50338
50373
  r.appendChild(a);
50339
- let o = () => a.setAttribute("data-theme", Q7());
50340
- o(), matchMedia("(prefers-color-scheme: light)").addEventListener("change", o), nt(() => j(i9, { get defaultOpen() {
50374
+ let o = () => a.setAttribute("data-theme", n9());
50375
+ o(), matchMedia("(prefers-color-scheme: light)").addEventListener("change", o), nt(() => j(c9, { get defaultOpen() {
50341
50376
  return e.defaultOpen ?? !1;
50342
50377
  } }), a);
50343
50378
  };
50344
50379
  document.body ? t() : document.addEventListener("DOMContentLoaded", t, { once: !0 });
50345
50380
  }
50346
- function Q7() {
50381
+ function n9() {
50347
50382
  try {
50348
50383
  let e = [document.body, document.documentElement];
50349
50384
  for (let t of e) {
@@ -50353,11 +50388,11 @@ function Q7() {
50353
50388
  } catch {}
50354
50389
  return matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark";
50355
50390
  }
50356
- var $7 = 130, e9 = 36, t9 = 380, n9 = 280, r9 = 720;
50357
- function i9(e) {
50391
+ var r9 = 130, i9 = 36, a9 = 380, o9 = 280, s9 = 720;
50392
+ function c9(e) {
50358
50393
  let [t, n] = T(e.defaultOpen), [r, i] = T("right"), [a, o] = T({
50359
- x: Math.max(8, window.innerWidth - $7 - 24),
50360
- y: Math.max(8, window.innerHeight - e9 - 20)
50394
+ x: Math.max(8, window.innerWidth - r9 - 24),
50395
+ y: Math.max(8, window.innerHeight - i9 - 20)
50361
50396
  }), [s, c] = T({
50362
50397
  running: [],
50363
50398
  review: []
@@ -50377,12 +50412,12 @@ function i9(e) {
50377
50412
  let t = Math.floor(e / 1e3);
50378
50413
  return `${Math.floor(t / 60)}:${String(t % 60).padStart(2, "0")}`;
50379
50414
  }, [b, x] = T(null), S = (e) => ({
50380
- x: Math.min(Math.max(8, e.x), window.innerWidth - $7 - 8),
50381
- y: Math.min(Math.max(8, e.y), window.innerHeight - e9 - 8)
50415
+ x: Math.min(Math.max(8, e.x), window.innerWidth - r9 - 8),
50416
+ y: Math.min(Math.max(8, e.y), window.innerHeight - i9 - 8)
50382
50417
  }), C = (e) => ({
50383
50418
  x: Math.min(Math.max(8 - (ne() - 80), e.x), window.innerWidth - 80),
50384
50419
  y: Math.min(Math.max(0, e.y), window.innerHeight - 80)
50385
- }), [w, E] = T(!1), [k, ee] = T("cloud"), [te, A] = T(!1), [ne, re] = T(t9), oe = (e) => Math.min(r9, Math.max(n9, Math.min(e, window.innerWidth - 60)));
50420
+ }), [w, E] = T(!1), [k, ee] = T("cloud"), [te, A] = T(!1), [ne, re] = T(a9), oe = (e) => Math.min(s9, Math.max(o9, Math.min(e, window.innerWidth - 60)));
50386
50421
  O(() => {
50387
50422
  let e = document.documentElement, n = t() && w();
50388
50423
  e.style.marginRight = n && r() === "right" ? `${ne()}px` : "", e.style.marginLeft = n && r() === "left" ? `${ne()}px` : "";
@@ -50496,7 +50531,7 @@ function i9(e) {
50496
50531
  return !t();
50497
50532
  },
50498
50533
  get children() {
50499
- var e = z7(), t = e.firstChild;
50534
+ var e = U7(), t = e.firstChild;
50500
50535
  return t.$$click = () => {
50501
50536
  ce || p() === "recording" || h().active || (f(!1), n(!0));
50502
50537
  }, t.$$pointerdown = le, P(t, j(M, {
@@ -50506,14 +50541,14 @@ function i9(e) {
50506
50541
  get fallback() {
50507
50542
  return [
50508
50543
  (() => {
50509
- var e = V7();
50544
+ var e = G7();
50510
50545
  return e.$$click = () => {
50511
50546
  ce || (f(!1), n(!0));
50512
- }, P(e, j(j7, { size: 13 })), e;
50547
+ }, P(e, j(F7, { size: 13 })), e;
50513
50548
  })(),
50514
- H7(),
50549
+ K7(),
50515
50550
  (() => {
50516
- var e = G7(), t = e.firstChild, n = t.nextSibling;
50551
+ var e = Y7(), t = e.firstChild, n = t.nextSibling;
50517
50552
  return e.$$click = (e) => {
50518
50553
  e.stopPropagation(), !ce && f((e) => !e);
50519
50554
  }, P(n, (() => {
@@ -50524,8 +50559,8 @@ function i9(e) {
50524
50559
  return $e(() => !te())() && u().length > 0;
50525
50560
  },
50526
50561
  get children() {
50527
- return [U7(), (() => {
50528
- var e = W7(), t = e.firstChild;
50562
+ return [q7(), (() => {
50563
+ var e = J7(), t = e.firstChild;
50529
50564
  return P(e, () => u().length, t), e;
50530
50565
  })()];
50531
50566
  }
@@ -50546,17 +50581,17 @@ function i9(e) {
50546
50581
  },
50547
50582
  get fallback() {
50548
50583
  return [
50549
- K7(),
50584
+ X7(),
50550
50585
  (() => {
50551
- var e = q7(), t = e.firstChild;
50586
+ var e = Z7(), t = e.firstChild;
50552
50587
  return P(e, () => Math.ceil(h().msLeft / 1e3), t), e;
50553
50588
  })(),
50554
50589
  (() => {
50555
- var e = J7(), t = e.firstChild;
50590
+ var e = Q7(), t = e.firstChild;
50556
50591
  return P(e, () => h().total, t), D(() => it(e, "title", Object.entries(h().byTrigger).map(([e, t]) => `${t} ${e}`).join(" · ") || "hover / open the component to record its states")), e;
50557
50592
  })(),
50558
50593
  (() => {
50559
- var e = I7();
50594
+ var e = B7();
50560
50595
  return e.$$click = (e) => {
50561
50596
  e.stopPropagation(), !ce && o2();
50562
50597
  }, e;
@@ -50565,13 +50600,13 @@ function i9(e) {
50565
50600
  },
50566
50601
  get children() {
50567
50602
  return [
50568
- P7(),
50603
+ R7(),
50569
50604
  (() => {
50570
- var e = F7();
50605
+ var e = z7();
50571
50606
  return P(e, () => y(_())), e;
50572
50607
  })(),
50573
50608
  (() => {
50574
- var e = I7();
50609
+ var e = B7();
50575
50610
  return e.$$click = () => {
50576
50611
  ce || tO();
50577
50612
  }, e;
@@ -50585,17 +50620,17 @@ function i9(e) {
50585
50620
  return d();
50586
50621
  },
50587
50622
  get children() {
50588
- var e = R7(), t = e.firstChild;
50623
+ var e = H7(), t = e.firstChild;
50589
50624
  return P(e, j(M, {
50590
50625
  get when() {
50591
50626
  return u().length > 0;
50592
50627
  },
50593
50628
  get children() {
50594
- return [L7(), j(We, {
50629
+ return [V7(), j(We, {
50595
50630
  get each() {
50596
50631
  return u();
50597
50632
  },
50598
- children: (e) => j(a9, {
50633
+ children: (e) => j(l9, {
50599
50634
  agent: e,
50600
50635
  review: !0,
50601
50636
  onOpen: de
@@ -50607,14 +50642,14 @@ function i9(e) {
50607
50642
  return l().length > 0;
50608
50643
  },
50609
50644
  get fallback() {
50610
- return Y7();
50645
+ return $7();
50611
50646
  },
50612
50647
  get children() {
50613
50648
  return j(We, {
50614
50649
  get each() {
50615
50650
  return l();
50616
50651
  },
50617
- children: (e) => j(a9, {
50652
+ children: (e) => j(l9, {
50618
50653
  agent: e,
50619
50654
  onOpen: de
50620
50655
  })
@@ -50635,8 +50670,8 @@ function i9(e) {
50635
50670
  return t();
50636
50671
  },
50637
50672
  get children() {
50638
- var e = B7(), t = e.firstChild;
50639
- return t.$$pointerdown = fe, P(e, j(M7, {
50673
+ var e = W7(), t = e.firstChild;
50674
+ return t.$$pointerdown = fe, P(e, j(I7, {
50640
50675
  onGrab: () => n(!0),
50641
50676
  onClose: () => n(!1),
50642
50677
  get onHeaderPointerDown() {
@@ -50664,19 +50699,19 @@ function i9(e) {
50664
50699
  }
50665
50700
  })];
50666
50701
  }
50667
- function a9(e) {
50702
+ function l9(e) {
50668
50703
  return (() => {
50669
- var t = X7(), n = t.firstChild, r = n.firstChild, i = r.nextSibling, a = i.nextSibling, o = n.nextSibling, s = o.firstChild, c = s.nextSibling;
50704
+ var t = e9(), n = t.firstChild, r = n.firstChild, i = r.nextSibling, a = i.nextSibling, o = n.nextSibling, s = o.firstChild, c = s.nextSibling;
50670
50705
  return c.nextSibling, t.$$click = () => e.onOpen(e.agent.id), P(i, () => e.agent.identifier), P(a, () => e.agent.title), P(o, (() => {
50671
50706
  var t = $e(() => !!e.review);
50672
50707
  return () => t() ? "PR ready · needs review" : e.agent.stateName;
50673
- })(), s), P(o, () => e.agent.delegateName, c), P(o, () => o9(e.agent.updatedAt), null), D((t) => dt(r, "background", e.review ? "var(--color-warn)" : e.agent.stateColor)), t;
50708
+ })(), s), P(o, () => e.agent.delegateName, c), P(o, () => u9(e.agent.updatedAt), null), D((t) => dt(r, "background", e.review ? "var(--color-warn)" : e.agent.stateColor)), t;
50674
50709
  })();
50675
50710
  }
50676
- function o9(e) {
50711
+ function u9(e) {
50677
50712
  let t = Math.max(0, Math.floor((Date.now() - Date.parse(e)) / 1e3));
50678
50713
  return t < 60 ? "now" : t < 3600 ? `${Math.floor(t / 60)}m` : t < 86400 ? `${Math.floor(t / 3600)}h` : `${Math.floor(t / 86400)}d`;
50679
50714
  }
50680
50715
  rt(["pointerdown", "click"]);
50681
50716
  //#endregion
50682
- export { Z7 as init };
50717
+ export { t9 as init };