linear-grab 0.23.6 → 0.24.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.
@@ -45964,45 +45964,82 @@ function u2() {
45964
45964
  window.addEventListener("mousemove", i, !0), window.addEventListener("click", o, !0), window.addEventListener("keydown", s, !0);
45965
45965
  });
45966
45966
  }
45967
- var d2 = 200;
45968
- function f2(e) {
45967
+ //#endregion
45968
+ //#region src/lib/cssShared.ts
45969
+ function d2(e) {
45969
45970
  return e.split(",").map((e) => {
45970
45971
  let t = e.trim();
45971
45972
  return t.endsWith("ms") ? parseFloat(t) || 0 : t.endsWith("s") ? (parseFloat(t) || 0) * 1e3 : 0;
45972
45973
  });
45973
45974
  }
45975
+ var f2 = /* @__PURE__ */ new Set(/* @__PURE__ */ "width.height.min-width.min-height.max-width.max-height.top.left.right.bottom.inset.margin.margin-top.margin-right.margin-bottom.margin-left.padding.padding-top.padding-right.padding-bottom.padding-left.font-size.line-height.letter-spacing.box-shadow.filter.background-position.grid-template-columns.grid-template-rows.flex-basis.gap".split("."));
45974
45976
  function p2(e) {
45977
+ return e.includes("all") ? ["all (includes layout/paint props)"] : e.filter((e) => f2.has(e));
45978
+ }
45979
+ function m2(e) {
45980
+ let t = h2(e);
45981
+ if (t === "ease-in" || t === "ease-in-out") return t;
45982
+ let n = t.match(/cubic-bezier\(\s*([\d.]+)\s*,\s*(-?[\d.]+)/);
45983
+ if (n) {
45984
+ let e = parseFloat(n[1]), r = parseFloat(n[2]);
45985
+ if (e >= .4 && r < e / 2) return t;
45986
+ }
45987
+ return null;
45988
+ }
45989
+ function h2(e) {
45990
+ let t = 0;
45991
+ for (let n = 0; n < e.length; n++) {
45992
+ let r = e[n];
45993
+ if (r === "(") t++;
45994
+ else if (r === ")") t--;
45995
+ else if (r === "," && t === 0) return e.slice(0, n).trim();
45996
+ }
45997
+ return e.trim();
45998
+ }
45999
+ var g2 = "[data-slot*=\"content\"], [role=\"menu\"], [role=\"dialog\"], [role=\"listbox\"]", _2 = /* @__PURE__ */ new Set([
46000
+ "width",
46001
+ "height",
46002
+ "flex-basis",
46003
+ "grid-template-columns",
46004
+ "grid-template-rows",
46005
+ "grid-template-areas"
46006
+ ]);
46007
+ function v2(e, t) {
46008
+ if (e instanceof SVGElement) return !0;
46009
+ try {
46010
+ if (e.closest("svg")) return !0;
46011
+ } catch {}
46012
+ try {
46013
+ if (e.closest(g2)) return !0;
46014
+ } catch {}
46015
+ try {
46016
+ if (e.closest("[data-panel]")) return !t || t.length === 0 || t.every((e) => _2.has(e));
46017
+ } catch {}
46018
+ return !1;
46019
+ }
46020
+ function y2(e) {
45975
46021
  let t = e.id ? `#${e.id}` : "", n = typeof e.className == "string" && e.className ? `.${e.className.split(/\s+/).filter(Boolean).slice(0, 2).join(".")}` : "";
45976
46022
  return `${e.tagName.toLowerCase()}${t}${n}`;
45977
46023
  }
45978
- function m2(e) {
46024
+ var b2 = 200;
46025
+ function x2(e) {
45979
46026
  if (typeof e.className != "string") return;
45980
46027
  let t = e.className.split(/\s+/).filter((e) => /^(transition|duration-|delay-|ease-)/.test(e));
45981
46028
  return t.length ? t.join(" ") : void 0;
45982
46029
  }
45983
- var h2 = /* @__PURE__ */ new Set(/* @__PURE__ */ "width.height.min-width.min-height.max-width.max-height.top.left.right.bottom.inset.margin.margin-top.margin-right.margin-bottom.margin-left.padding.padding-top.padding-right.padding-bottom.padding-left.font-size.line-height.letter-spacing.box-shadow.filter.background-position.grid-template-columns.grid-template-rows.flex-basis.gap".split("."));
45984
- function g2(e) {
45985
- return e.includes("all") ? ["all (includes layout/paint props)"] : e.filter((e) => h2.has(e));
45986
- }
45987
- function _2(e) {
45988
- let t = e.split(",")[0].trim();
45989
- if (t === "ease-in") return "ease-in";
45990
- let n = t.match(/cubic-bezier\(\s*([\d.]+)\s*,\s*(-?[\d.]+)/);
45991
- return n && parseFloat(n[1]) >= .4 && parseFloat(n[2]) <= .1 ? t : null;
45992
- }
45993
- function v2(e, t, n, r, i, a) {
46030
+ function S2(e, t, n, r, i, a) {
45994
46031
  let o = [];
45995
- return n > 0 && o.push(`remove the ${Math.round(n)}ms transition-delay`), (r?.includes("transition-all") || e.includes("all")) && o.push("scope 'transition-all' to the intended properties (e.g. transition-colors)"), a?.length && o.push(`JANK: transitions LAYOUT/PAINT props (${a.join(", ")}) — reflow/repaint every frame; animate transform/opacity instead (box-shadow → animate a pseudo-element's opacity)`), i && o.push(`easing '${i}' starts slow — never ease-in on UI, use ease-out`), t > 500 ? o.push(`${Math.round(t)}ms is over the 500ms HARD CAP for UI feedback`) : t > 300 ? o.push(`${Math.round(t)}ms is over the 300ms UI cap`) : t > 100 && o.push(`shorten ${Math.round(t)}ms → ≤100ms`), o.push("make PRESS feedback instant: 'active:transition-none' (and data-[state=…]:transition-none for toggles) — animate only hover in/out"), o.join("; ");
46032
+ return n > 0 && o.push(`remove the ${Math.round(n)}ms transition-delay`), (r?.includes("transition-all") || e.includes("all")) && o.push("scope 'transition-all' to the intended properties (e.g. transition-colors)"), a?.length && o.push(`JANK: transitions LAYOUT/PAINT props (${a.join(", ")}) — reflow/repaint every frame; animate transform/opacity instead (box-shadow → animate a pseudo-element's opacity)`), i && o.push(`easing '${i}' starts slow — §42 bans ease-in/ease-in-out on UI, use ease-out`), t > 500 ? o.push(`${Math.round(t)}ms is over the 500ms HARD CAP for UI feedback`) : t > 300 ? o.push(`${Math.round(t)}ms is over the 300ms UI cap`) : t > 100 && o.push(`shorten ${Math.round(t)}ms → ≤100ms`), o.push("make PRESS feedback instant: 'active:transition-none' (and data-[state=…]:transition-none for toggles) — animate only hover in/out"), o.join("; ");
45996
46033
  }
45997
- async function y2() {
46034
+ async function C2() {
45998
46035
  try {
45999
46036
  return (await Promise.resolve().then(() => (RZ(), AZ))).getGlobalApi() ?? null;
46000
46037
  } catch {
46001
46038
  return null;
46002
46039
  }
46003
46040
  }
46004
- async function b2(e) {
46005
- let t = await y2(), n = null, r = null;
46041
+ async function w2(e) {
46042
+ let t = await C2(), n = null, r = null;
46006
46043
  try {
46007
46044
  n = t?.getDisplayName?.(e) ?? null;
46008
46045
  } catch {}
@@ -46015,15 +46052,15 @@ async function b2(e) {
46015
46052
  source: r
46016
46053
  };
46017
46054
  }
46018
- var x2 = [], S2 = null;
46019
- function C2(e) {
46020
- x2.push(e), S2 ??= setTimeout(() => {
46021
- S2 = null;
46022
- let e = x2.slice(0, 50).map((e) => ({
46055
+ var T2 = [], E2 = null;
46056
+ function D2(e) {
46057
+ T2.push(e), E2 ??= setTimeout(() => {
46058
+ E2 = null;
46059
+ let e = T2.slice(0, 50).map((e) => ({
46023
46060
  kind: "css-slowdown",
46024
46061
  ...e
46025
46062
  }));
46026
- x2 = [], JO().then((t) => fetch(`${t}/scan/events`, {
46063
+ T2 = [], JO().then((t) => fetch(`${t}/scan/events`, {
46027
46064
  method: "POST",
46028
46065
  headers: { "Content-Type": "application/json" },
46029
46066
  body: JSON.stringify({ events: e }),
@@ -46031,42 +46068,42 @@ function C2(e) {
46031
46068
  })).catch(() => {});
46032
46069
  }, 1500);
46033
46070
  }
46034
- var w2 = [], T2 = /* @__PURE__ */ new Set();
46035
- function E2(e) {
46036
- let t = e.mode === "live" ? w2.find((t) => t.mode === "live" && t.element === e.element && (t.classHint ?? "") === (e.classHint ?? "") && t.properties.join() === e.properties.join()) : void 0;
46037
- t ? (t.count += 1, t.at = e.at, t.sinceInputMs = e.sinceInputMs, w2 = [...w2]) : w2 = [e, ...w2].slice(0, 100);
46038
- for (let e of T2) e(w2);
46039
- C2(e);
46071
+ var O2 = [], k2 = /* @__PURE__ */ new Set();
46072
+ function A2(e) {
46073
+ let t = e.mode === "live" ? O2.find((t) => t.mode === "live" && t.element === e.element && (t.classHint ?? "") === (e.classHint ?? "") && t.properties.join() === e.properties.join()) : void 0;
46074
+ t ? (t.count += 1, t.at = e.at, t.sinceInputMs = e.sinceInputMs, O2 = [...O2]) : O2 = [e, ...O2].slice(0, 100);
46075
+ for (let e of k2) e(O2);
46076
+ D2(e);
46040
46077
  }
46041
- function D2(e) {
46042
- return T2.add(e), e(w2), () => void T2.delete(e);
46078
+ function j2(e) {
46079
+ return k2.add(e), e(O2), () => void k2.delete(e);
46043
46080
  }
46044
- function O2() {
46045
- w2 = [];
46046
- for (let e of T2) e(w2);
46081
+ function M2() {
46082
+ O2 = [];
46083
+ for (let e of k2) e(O2);
46047
46084
  }
46048
- var k2 = !0;
46085
+ var N2 = !0;
46049
46086
  try {
46050
- k2 = localStorage.getItem("linear-grab:css-watch") !== "0";
46087
+ N2 = localStorage.getItem("linear-grab:css-watch") !== "0";
46051
46088
  } catch {}
46052
- var A2 = /* @__PURE__ */ new Set();
46053
- function j2() {
46054
- return k2;
46089
+ var P2 = /* @__PURE__ */ new Set();
46090
+ function F2() {
46091
+ return N2;
46055
46092
  }
46056
- function M2(e) {
46057
- k2 = e;
46093
+ function I2(e) {
46094
+ N2 = e;
46058
46095
  try {
46059
46096
  localStorage.setItem("linear-grab:css-watch", e ? "1" : "0");
46060
46097
  } catch {}
46061
- for (let t of A2) t(e);
46098
+ for (let t of P2) t(e);
46062
46099
  }
46063
- function N2(e) {
46064
- return A2.add(e), e(k2), () => void A2.delete(e);
46100
+ function L2(e) {
46101
+ return P2.add(e), e(N2), () => void P2.delete(e);
46065
46102
  }
46066
- var P2 = !1;
46067
- function F2() {
46068
- if (P2 || typeof window > "u") return;
46069
- P2 = !0;
46103
+ var R2 = !1;
46104
+ function z2() {
46105
+ if (R2 || typeof window > "u") return;
46106
+ R2 = !0;
46070
46107
  let e = 0, t = () => {
46071
46108
  e = performance.now();
46072
46109
  };
@@ -46080,13 +46117,15 @@ function F2() {
46080
46117
  });
46081
46118
  let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
46082
46119
  window.addEventListener("transitionrun", (t) => {
46083
- if (!k2) return;
46120
+ if (!N2) return;
46084
46121
  let i = performance.now() - e;
46085
- if (i > d2) return;
46122
+ if (i > b2) return;
46086
46123
  let a = t.target;
46087
46124
  if (!(a instanceof Element) || a.closest("#linear-grab-root") || a === document.documentElement || a === document.body || t.propertyName.startsWith("--")) return;
46088
- let o = getComputedStyle(a), s = o.transitionProperty.split(",").map((e) => e.trim()), c = f2(o.transitionDuration), l = f2(o.transitionDelay), u = Math.max(0, s.indexOf(t.propertyName)), d = c[u % c.length] ?? c[0] ?? 0, f = l[u % l.length] ?? l[0] ?? 0;
46089
- if (d + f < 50) return;
46125
+ let o = getComputedStyle(a), s = o.transitionProperty.split(",").map((e) => e.trim());
46126
+ if (v2(a, s)) return;
46127
+ let c = d2(o.transitionDuration), l = d2(o.transitionDelay), u = Math.max(0, s.indexOf(t.propertyName)), d = c[u % c.length] ?? c[0] ?? 0, f = l[u % l.length] ?? l[0] ?? 0;
46128
+ if (d + f <= 100) return;
46090
46129
  let p = r.get(a);
46091
46130
  if (p) {
46092
46131
  p.props.add(t.propertyName), p.duration = Math.max(p.duration, d), p.delay = Math.max(p.delay, f);
@@ -46099,12 +46138,12 @@ function F2() {
46099
46138
  since: i,
46100
46139
  timer: setTimeout(() => {
46101
46140
  r.delete(a);
46102
- let e = p2(a), t = Date.now();
46141
+ let e = y2(a), t = Date.now();
46103
46142
  if (t - (n.get(e) ?? 0) < 5e3) return;
46104
46143
  n.set(e, t);
46105
- let i = m2(a), o = [...m.props], s = a.isConnected ? _2(getComputedStyle(a).transitionTimingFunction) : null, c = g2(o);
46106
- b2(a).then(({ component: n, source: r }) => {
46107
- E2({
46144
+ let i = x2(a), o = [...m.props], s = a.isConnected ? m2(getComputedStyle(a).transitionTimingFunction) : null, c = p2(o);
46145
+ w2(a).then(({ component: n, source: r }) => {
46146
+ A2({
46108
46147
  mode: "live",
46109
46148
  page: location.pathname,
46110
46149
  element: e,
@@ -46118,7 +46157,7 @@ function F2() {
46118
46157
  classHint: i,
46119
46158
  easing: s ?? void 0,
46120
46159
  jankProps: c.length ? c : void 0,
46121
- suggestion: v2(o, m.duration, m.delay, i, s, c),
46160
+ suggestion: S2(o, m.duration, m.delay, i, s, c),
46122
46161
  at: t
46123
46162
  });
46124
46163
  });
@@ -46130,54 +46169,56 @@ function F2() {
46130
46169
  passive: !0
46131
46170
  });
46132
46171
  }
46133
- var I2 = "button, a, input, select, textarea, [role], [tabindex], [data-state], [aria-expanded]";
46134
- async function L2() {
46135
- let e = /* @__PURE__ */ new Map(), t = Array.from(document.querySelectorAll(I2)).slice(0, 3e3);
46172
+ var B2 = "button, a, input, select, textarea, [role], [tabindex], [data-state], [aria-expanded]";
46173
+ async function V2() {
46174
+ let e = /* @__PURE__ */ new Map(), t = Array.from(document.querySelectorAll(B2)).slice(0, 3e3);
46136
46175
  for (let n of t) {
46137
46176
  if (n.closest("#linear-grab-root")) continue;
46138
46177
  let t = n.getBoundingClientRect();
46139
46178
  if (t.width < 2 && t.height < 2) continue;
46140
46179
  let r = getComputedStyle(n);
46141
46180
  if (r.cursor !== "pointer" && !n.matches("button, a, input, select, textarea")) continue;
46142
- let i = f2(r.transitionDuration), a = f2(r.transitionDelay), o = Math.max(...i, 0) + Math.max(...a, 0);
46143
- if (o < 50) continue;
46144
- let s = r.transitionProperty.split(",").map((e) => e.trim()), c = m2(n), l = `${n.tagName}|${c ?? s.join()}|${Math.round(o)}`, u = e.get(l);
46181
+ let i = r.transitionProperty.split(",").map((e) => e.trim());
46182
+ if (v2(n, i)) continue;
46183
+ let a = d2(r.transitionDuration), o = d2(r.transitionDelay), s = Math.max(...a, 0) + Math.max(...o, 0);
46184
+ if (s <= 100) continue;
46185
+ let c = x2(n), l = `${n.tagName}|${c ?? i.join()}|${Math.round(s)}`, u = e.get(l);
46145
46186
  if (u) {
46146
46187
  u.finding.count += 1;
46147
46188
  continue;
46148
46189
  }
46149
- let d = _2(r.transitionTimingFunction), f = g2(s);
46190
+ let d = m2(r.transitionTimingFunction), f = p2(i);
46150
46191
  e.set(l, {
46151
46192
  example: n,
46152
46193
  finding: {
46153
46194
  mode: "audit",
46154
46195
  page: location.pathname,
46155
- element: p2(n),
46196
+ element: y2(n),
46156
46197
  component: null,
46157
46198
  source: null,
46158
- properties: s,
46159
- durationMs: Math.round(Math.max(...i, 0)),
46160
- delayMs: Math.round(Math.max(...a, 0)),
46199
+ properties: i,
46200
+ durationMs: Math.round(Math.max(...a, 0)),
46201
+ delayMs: Math.round(Math.max(...o, 0)),
46161
46202
  count: 1,
46162
46203
  classHint: c,
46163
46204
  easing: d ?? void 0,
46164
46205
  jankProps: f.length ? f : void 0,
46165
- suggestion: v2(s, Math.max(...i, 0), Math.max(...a, 0), c, d, f),
46206
+ suggestion: S2(i, Math.max(...a, 0), Math.max(...o, 0), c, d, f),
46166
46207
  at: Date.now()
46167
46208
  }
46168
46209
  });
46169
46210
  }
46170
46211
  let n = [];
46171
46212
  for (let { finding: t, example: r } of e.values()) {
46172
- let { component: e, source: i } = await b2(r);
46213
+ let { component: e, source: i } = await w2(r);
46173
46214
  t.component = e, t.source = i, n.push(t);
46174
46215
  }
46175
- n.sort((e, t) => t.durationMs + t.delayMs - (e.durationMs + e.delayMs) || t.count - e.count), w2 = [...n, ...w2.filter((e) => e.mode === "live")].slice(0, 100);
46176
- for (let e of T2) e(w2);
46177
- for (let e of n) C2(e);
46216
+ n.sort((e, t) => t.durationMs + t.delayMs - (e.durationMs + e.delayMs) || t.count - e.count), O2 = [...n, ...O2.filter((e) => e.mode === "live")].slice(0, 100);
46217
+ for (let e of k2) e(O2);
46218
+ for (let e of n) D2(e);
46178
46219
  return n;
46179
46220
  }
46180
- function R2(e) {
46221
+ function H2(e) {
46181
46222
  return [
46182
46223
  "Below is a CSS-slowdown report from my running app (live-captured on real input + full-page audit).",
46183
46224
  "Goal: ALL interaction feedback must be instant. Rules:",
@@ -46194,8 +46235,14 @@ function R2(e) {
46194
46235
  "3b. Findings marked ⚠ layout/paint: NEVER transition width/height/top/left/",
46195
46236
  " margin/padding/box-shadow — they reflow or repaint every frame. Use",
46196
46237
  " transform: translate/scale, and animate a pseudo-element's opacity for shadows.",
46197
- "3c. Findings marked ⚠ easing: never ease-in on UI replace with ease-out",
46198
- " (house curve: cubic-bezier(.2,0,.1,1)).",
46238
+ "3c. Findings marked ⚠ easing: never ease-in OR ease-in-out on UI (§42 bans",
46239
+ " both) — replace with ease-out (house curve: cubic-bezier(.2,0,.1,1), the",
46240
+ " theme default).",
46241
+ "3d. Press must be instant GLOBALLY: keep the unlayered §42 rule in globals.css",
46242
+ " — `button:active, a:active, [role=button/tab/menuitem/option]:active",
46243
+ " { transition-duration: 0s }` — so pointer-down feedback snaps and only the",
46244
+ " release animates back. If a control still animates on press, that global",
46245
+ " rule is missing or overridden.",
46199
46246
  "4. Where a finding's source looks like a generic fallback (one file:line repeated",
46200
46247
  " for many components), locate the code by the `classes:` line instead.",
46201
46248
  "5. Do NOT touch entry/exit animations of popovers/menus or icon micro-motion",
@@ -46206,36 +46253,702 @@ function R2(e) {
46206
46253
  "",
46207
46254
  "---",
46208
46255
  "",
46209
- z2(e)
46256
+ U2(e)
46210
46257
  ].join("\n");
46211
46258
  }
46212
- function z2(e) {
46259
+ function U2(e) {
46213
46260
  let t = [
46214
46261
  `# CSS slowdowns on ${location.host}${location.pathname}`,
46215
- "Threshold: 50ms (interaction feedback should be instant).",
46262
+ "Threshold: 100ms (interaction feedback should be instant).",
46216
46263
  ""
46217
46264
  ];
46218
- for (let n of e) t.push(`## ${n.component ?? n.element}${n.count > 1 ? ` ×${n.count}` : ""} — ${n.durationMs}ms${n.delayMs ? ` +${n.delayMs}ms delay` : ""}`), n.source && t.push(`- source: ${n.source}`), t.push(`- transitions: ${n.properties.join(", ")}`), n.classHint && t.push(`- classes: \`${n.classHint}\``), n.jankProps?.length && t.push(`- ⚠ layout/paint transition (reflows every frame): ${n.jankProps.join(", ")}`), n.easing && t.push(`- ⚠ easing: ${n.easing} (ease-in starts slow — use ease-out)`), n.sinceInputMs != null && t.push(`- fired ${n.sinceInputMs}ms after user input (live capture)`), t.push(`- fix: ${n.suggestion}`, "");
46265
+ for (let n of e) t.push(`## ${n.component ?? n.element}${n.count > 1 ? ` ×${n.count}` : ""} — ${n.durationMs}ms${n.delayMs ? ` +${n.delayMs}ms delay` : ""}`), n.source && t.push(`- source: ${n.source}`), t.push(`- transitions: ${n.properties.join(", ")}`), n.classHint && t.push(`- classes: \`${n.classHint}\``), n.jankProps?.length && t.push(`- ⚠ layout/paint transition (reflows every frame): ${n.jankProps.join(", ")}`), n.easing && t.push(`- ⚠ easing: ${n.easing} (§42 bans ease-in/ease-in-out — use ease-out)`), n.sinceInputMs != null && t.push(`- fired ${n.sinceInputMs}ms after user input (live capture)`), t.push(`- fix: ${n.suggestion}`, "");
46219
46266
  return t.join("\n");
46220
46267
  }
46221
46268
  //#endregion
46269
+ //#region src/lib/slopScan.ts
46270
+ function W2(e, t, n) {
46271
+ return {
46272
+ ruleId: e.id,
46273
+ part: e.part,
46274
+ severity: e.severity,
46275
+ description: e.description,
46276
+ selector: y2(t),
46277
+ evidence: n,
46278
+ el: typeof WeakRef < "u" ? new WeakRef(t) : void 0
46279
+ };
46280
+ }
46281
+ function G2(e) {
46282
+ return e.getBoundingClientRect();
46283
+ }
46284
+ function K2(e) {
46285
+ return e.split("/")[0].trim().split(/\s+/).filter(Boolean).map((e) => e.endsWith("px") ? parseFloat(e) : NaN);
46286
+ }
46287
+ function q2(e) {
46288
+ let t = e.match(/rgba?\(([^)]+)\)/);
46289
+ return t ? t[1].split(",").map((e) => e.trim()).join(",") : null;
46290
+ }
46291
+ function J2(e, t) {
46292
+ let n = t, r = n.maskImage || n.webkitMaskImage || "";
46293
+ if (r && r !== "none") return r;
46294
+ let i = (e.getAttribute("style") ?? "").match(/(?:^|;|\s)(?:-webkit-)?mask-image\s*:\s*([^;]+)/i);
46295
+ return i && i[1].trim() && i[1].trim() !== "none" ? i[1].trim() : "";
46296
+ }
46297
+ var Y2 = /* @__PURE__ */ new Set([
46298
+ 0,
46299
+ 8,
46300
+ 12,
46301
+ 16
46302
+ ]), X2 = {
46303
+ light: q2("rgb(240, 240, 241)"),
46304
+ dark: q2("rgb(35, 35, 37)")
46305
+ }, Z2 = /* @__PURE__ */ new Set([
46306
+ "#50e3c2",
46307
+ "#ee0000",
46308
+ "#f5a623"
46309
+ ]), Q2 = "button, a, [role=\"button\"], [role=\"tab\"], [role=\"menuitem\"], [role=\"option\"], input, textarea, select";
46310
+ function $2(e) {
46311
+ let t = [], n = (e) => {
46312
+ for (let r of Array.from(e)) {
46313
+ let e = r;
46314
+ if (e.cssRules && e.cssRules.length) {
46315
+ n(e.cssRules);
46316
+ continue;
46317
+ }
46318
+ let i = r.selectorText;
46319
+ i && i.includes(":hover") && t.push(i.replace(/:hover/g, ""));
46320
+ }
46321
+ };
46322
+ for (let t of Array.from(e.styleSheets)) try {
46323
+ n(t.cssRules);
46324
+ } catch {}
46325
+ return t;
46326
+ }
46327
+ function e4(e, t) {
46328
+ for (let n of t) if (n.trim()) try {
46329
+ if (e.matches(n)) return !0;
46330
+ } catch {}
46331
+ return !1;
46332
+ }
46333
+ function t4(e) {
46334
+ return !e.matches("button, [role=\"button\"]") || e.querySelectorAll("svg").length === 0 ? !1 : (e.textContent ?? "").trim().length === 0;
46335
+ }
46336
+ function n4(e) {
46337
+ let t = e.parentElement;
46338
+ for (; t;) {
46339
+ try {
46340
+ let e = r4(t).overflowY;
46341
+ if (e === "auto" || e === "scroll") return t;
46342
+ } catch {}
46343
+ t = t.parentElement;
46344
+ }
46345
+ return null;
46346
+ }
46347
+ var r4 = (e) => getComputedStyle(e), i4 = {
46348
+ id: "radius-vocabulary",
46349
+ part: "§40",
46350
+ severity: "error",
46351
+ description: "§40: radius vocabulary is {8, 12, 16, full} — never rounded-md/[4px]/[6px]/[10px]. Off-vocabulary radius.",
46352
+ check(e) {
46353
+ let t = [];
46354
+ for (let n of e.els) {
46355
+ let r = e.css(n).borderRadius;
46356
+ if (!r || r === "0px") continue;
46357
+ let i = K2(r);
46358
+ if (i.some((e) => Number.isNaN(e))) continue;
46359
+ let a = Math.max(...i);
46360
+ if (a === 0) continue;
46361
+ let o = G2(n), s = Math.min(o.width || 0, o.height || 0);
46362
+ s > 0 && a >= s / 2 - .5 || i.every((e) => Y2.has(e)) || t.push(W2(this, n, `border-radius: ${r}`));
46363
+ }
46364
+ return t;
46365
+ }
46366
+ }, a4 = {
46367
+ id: "row-radius-token",
46368
+ part: "§40",
46369
+ severity: "error",
46370
+ description: "§40: list rows consume --row-radius (8px) or 0 — no bespoke per-surface row radius.",
46371
+ check(e) {
46372
+ let t = [];
46373
+ for (let n of e.els) {
46374
+ let r = G2(n).height;
46375
+ if (r < 26 || r > 50 || !n4(n)) continue;
46376
+ let i = n.parentElement;
46377
+ if (!i || Array.from(i.children).filter((e) => {
46378
+ let t = G2(e);
46379
+ return Math.abs(t.height - r) < 2;
46380
+ }).length < 3) continue;
46381
+ let a = K2(e.css(n).borderRadius);
46382
+ if (a.some((e) => Number.isNaN(e))) continue;
46383
+ let o = Math.max(0, ...a);
46384
+ o === 0 || o === 8 || t.push(W2(this, n, `row radius ${e.css(n).borderRadius} (want 0 or var(--row-radius)=8px)`));
46385
+ }
46386
+ return t;
46387
+ }
46388
+ }, o4 = {
46389
+ id: "active-fill-token",
46390
+ part: "§11",
46391
+ severity: "error",
46392
+ description: "§11: active/selected fill must be var(--selected) (theme-safe) — never bg-secondary (#F0F0F1 / #232325).",
46393
+ check(e) {
46394
+ let t = [], n = null;
46395
+ try {
46396
+ let t = e.root.documentElement ?? document.documentElement;
46397
+ t && (n = q2(e.css(t).getPropertyValue("--selected").trim()));
46398
+ } catch {}
46399
+ let r = [X2.light, X2.dark].filter(Boolean);
46400
+ if (n && r.includes(n)) {
46401
+ let t = e.root.documentElement ?? document.documentElement;
46402
+ return [W2({
46403
+ id: this.id,
46404
+ part: this.part,
46405
+ severity: "warn",
46406
+ description: "§11: active-fill-token unverifiable — --selected resolves EQUAL to bg-secondary this theme; cannot distinguish the token from the anti-pattern."
46407
+ }, t ?? e.els[0], `--selected == bg-secondary (${n})`)];
46408
+ }
46409
+ for (let n of e.els) {
46410
+ if (!(n.matches("[role=\"tab\"], [role=\"button\"], [aria-selected], [role=\"option\"]") || n.closest("[role=\"tablist\"], [role=\"menu\"], [data-rail], nav"))) continue;
46411
+ let i = q2(e.css(n).backgroundColor);
46412
+ i && r.includes(i) && t.push(W2(this, n, `background bg-secondary (${e.css(n).backgroundColor}) — use var(--selected)`));
46413
+ }
46414
+ return t;
46415
+ }
46416
+ }, s4 = {
46417
+ id: "inline-style-state",
46418
+ part: "§40",
46419
+ severity: "error",
46420
+ description: "§40: the shared row-action class owns ALL visual states; inline styles carry LAYOUT ONLY — an inline background/color kills the class state.",
46421
+ check(e) {
46422
+ let t = [];
46423
+ for (let n of e.els) {
46424
+ let e = typeof n.className == "string" ? n.className : "";
46425
+ if (!/pb-row-action|row-action/.test(e)) continue;
46426
+ let r = n.getAttribute("style") ?? "";
46427
+ /(^|;|\s)(background|color)\s*:/.test(r) && t.push(W2(this, n, `inline style="${r}" on a row-action element`));
46428
+ }
46429
+ return t;
46430
+ }
46431
+ }, c4 = {
46432
+ id: "icon-button-no-hover",
46433
+ part: "§40",
46434
+ severity: "warn",
46435
+ description: "§40/Part 10: every interactive control changes color on hover — icon-only button with no :hover rule and no .pb-row-action.",
46436
+ check(e) {
46437
+ let t = [], n = $2(e.root.styleSheets ? e.root : document);
46438
+ for (let r of e.els) {
46439
+ if (!t4(r)) continue;
46440
+ let i = typeof r.className == "string" ? r.className : "";
46441
+ /pb-row-action|row-action/.test(i) || r.hasAttribute("data-framer-appear-id") || Array.from(r.attributes).some((e) => e.name.startsWith("data-framer")) || e.css(r).willChange.includes("transform") || e4(r, n) || t.push(W2(this, r, `icon-only ${r.tagName.toLowerCase()} with no hover rule / .pb-row-action`));
46442
+ }
46443
+ return t;
46444
+ }
46445
+ }, l4 = {
46446
+ id: "icon-button-no-tooltip",
46447
+ part: "§7",
46448
+ severity: "warn",
46449
+ description: "§7: every icon-only button gets the shared Tooltip — needs aria-describedby / data-slot=\"tooltip-trigger\" (menu-row title exempt).",
46450
+ check(e) {
46451
+ let t = [];
46452
+ for (let n of e.els) t4(n) && (n.hasAttribute("aria-describedby") || n.getAttribute("data-slot") === "tooltip-trigger" || n.closest("[data-slot=\"tooltip-trigger\"]") || n.closest("[role=\"menuitem\"]") && n.hasAttribute("title") || t.push(W2(this, n, `icon-only ${n.tagName.toLowerCase()} with no tooltip trigger / aria-describedby`)));
46453
+ return t;
46454
+ }
46455
+ }, u4 = {
46456
+ id: "unvirtualized-scroller",
46457
+ part: "§0",
46458
+ severity: "error",
46459
+ description: "§0: every dynamic-length scrolling list virtualizes — a tall scroller with 60+ direct children is unvirtualized.",
46460
+ check(e) {
46461
+ let t = [];
46462
+ for (let n of e.els) {
46463
+ let r = e.css(n);
46464
+ if (![
46465
+ r.overflowY,
46466
+ r.overflowX,
46467
+ r.overflow
46468
+ ].some((e) => e === "auto" || e === "scroll") || n.scrollHeight <= 2 * n.clientHeight) continue;
46469
+ let i = n.children.length;
46470
+ i <= 60 || t.push(W2(this, n, `${i} direct children, scrollHeight ${n.scrollHeight} > 2×clientHeight ${n.clientHeight}`));
46471
+ }
46472
+ return t;
46473
+ }
46474
+ }, d4 = {
46475
+ id: "scroll-no-fade",
46476
+ part: "§1",
46477
+ severity: "warn",
46478
+ description: "§1: a horizontal scroller needs a truthful scroll fade — no scroll-fade-x/scroll-fade-x-js class and no mask-image.",
46479
+ check(e) {
46480
+ let t = [];
46481
+ for (let n of e.els) {
46482
+ if (n.scrollWidth <= n.clientWidth + 8) continue;
46483
+ let r = typeof n.className == "string" ? n.className : "";
46484
+ /scroll-fade-x(-js)?/.test(r) || J2(n, e.css(n)) || t.push(W2(this, n, `horizontal scroller (scrollWidth ${n.scrollWidth} > clientWidth ${n.clientWidth}) with no fade`));
46485
+ }
46486
+ return t;
46487
+ }
46488
+ }, f4 = {
46489
+ id: "phantom-fade",
46490
+ part: "§1",
46491
+ severity: "warn",
46492
+ description: "§1: a fade must NEVER paint when nothing is hidden — mask-image present but scrollWidth ≤ clientWidth (the fade lies).",
46493
+ check(e) {
46494
+ let t = [];
46495
+ for (let n of e.els) J2(n, e.css(n)) && (n.scrollWidth > n.clientWidth || t.push(W2(this, n, `mask-image fade but scrollWidth ${n.scrollWidth} ≤ clientWidth ${n.clientWidth}`)));
46496
+ return t;
46497
+ }
46498
+ }, p4 = {
46499
+ id: "scrollbar-flush",
46500
+ part: "Part 5",
46501
+ severity: "warn",
46502
+ description: "Part 5: scrollables carry asymmetric right padding so content clears the scrollbar — padding-right < 8px while overflowing vertically with content reaching the right edge.",
46503
+ check(e) {
46504
+ let t = [];
46505
+ for (let n of e.els) {
46506
+ let r = e.css(n);
46507
+ if (![r.overflowY, r.overflow].some((e) => e === "auto" || e === "scroll") || n.scrollHeight <= n.clientHeight) continue;
46508
+ let i = parseFloat(r.paddingRight) || 0;
46509
+ if (i >= 8) continue;
46510
+ let a = G2(n);
46511
+ Array.from(n.children).some((e) => {
46512
+ let t = G2(e);
46513
+ return a.right - t.right <= 4;
46514
+ }) && t.push(W2(this, n, `padding-right ${i}px (<8px) with content flush to the scrollbar`));
46515
+ }
46516
+ return t;
46517
+ }
46518
+ }, m4 = /^("?(Geist|Geist Mono)"?|ui-monospace|ui-sans-serif|-apple-system|system-ui)/i, h4 = {
46519
+ id: "font-family",
46520
+ part: "Part 5",
46521
+ severity: "warn",
46522
+ description: "Part 5: Geist / Geist Mono ONLY — computed font-family does not start with the Geist / ui-monospace fallback chain.",
46523
+ check(e) {
46524
+ let t = [];
46525
+ for (let n of e.els) {
46526
+ if (!O4(n)) continue;
46527
+ let r = e.css(n).fontFamily;
46528
+ r && (m4.test(r.trim()) || t.push(W2(this, n, `font-family: ${r}`)));
46529
+ }
46530
+ return t;
46531
+ }
46532
+ }, g4 = {
46533
+ id: "uppercase-label",
46534
+ part: "§25",
46535
+ severity: "error",
46536
+ description: "§25: group/section labels are sentence-case — never uppercase (text-transform: uppercase on small <13px text).",
46537
+ check(e) {
46538
+ let t = [];
46539
+ for (let n of e.els) {
46540
+ if (!O4(n)) continue;
46541
+ let r = e.css(n);
46542
+ r.textTransform === "uppercase" && ((parseFloat(r.fontSize) || 0) >= 13 || t.push(W2(this, n, `text-transform: uppercase at ${r.fontSize}`)));
46543
+ }
46544
+ return t;
46545
+ }
46546
+ }, _4 = {
46547
+ id: "hardcoded-status-hex",
46548
+ part: "Part 5",
46549
+ severity: "warn",
46550
+ description: "Part 5: raw hex only for the status trio (#50E3C2/#EE0000/#F5A623) — a saturated non-token color on small UI text.",
46551
+ check(e) {
46552
+ let t = [];
46553
+ for (let n of e.els) {
46554
+ if (!O4(n)) continue;
46555
+ let r = (n.getAttribute("style") ?? "").match(/#[0-9a-fA-F]{6}/g) ?? [], i = e.css(n);
46556
+ if ((parseFloat(i.fontSize) || 0) >= 16) continue;
46557
+ for (let e of r) Z2.has(e.toLowerCase()) || t.push(W2(this, n, `hardcoded ${e} (not the brand status trio)`));
46558
+ let a = q2(i.color);
46559
+ if (a && r.length === 0) {
46560
+ let [e, r, o] = a.split(",").map((e) => parseFloat(e));
46561
+ Number.isFinite(e) && k4(e, r, o) && t.push(W2(this, n, `saturated non-token color ${i.color} on small UI text`));
46562
+ }
46563
+ }
46564
+ return t;
46565
+ }
46566
+ }, v4 = {
46567
+ id: "editor-shadow",
46568
+ part: "Part 5",
46569
+ severity: "error",
46570
+ description: "Part 5: editor surfaces are FLAT — box-shadow that is not a 0.5px hairline ring / approved popover/card/input token shadow.",
46571
+ check(e) {
46572
+ let t = [];
46573
+ if (!(e.root.querySelector?.("[data-editor-surface]") || typeof location < "u" && /\/editor\//.test(location.pathname))) return t;
46574
+ for (let n of e.els) {
46575
+ if (!n.closest("[data-editor-surface]") && !/\/editor\//.test(typeof location < "u" ? location.pathname : "")) continue;
46576
+ let r = e.css(n).boxShadow;
46577
+ !r || r === "none" || A4(r) || t.push(W2(this, n, `box-shadow: ${r}`));
46578
+ }
46579
+ return t;
46580
+ }
46581
+ }, y4 = {
46582
+ id: "focusring-clip",
46583
+ part: "§24",
46584
+ severity: "warn",
46585
+ description: "§24/Part 5: focus rings never clip — a focusable element whose nearest overflow-hidden ancestor sits <4px from its border box.",
46586
+ check(e) {
46587
+ let t = [];
46588
+ for (let n of e.els) {
46589
+ if (!n.matches(Q2) && n.getAttribute("tabindex") == null) continue;
46590
+ let r = n.parentElement;
46591
+ for (; r;) {
46592
+ let t = e.css(r);
46593
+ if ([
46594
+ t.overflow,
46595
+ t.overflowX,
46596
+ t.overflowY
46597
+ ].some((e) => e === "hidden")) break;
46598
+ r = r.parentElement;
46599
+ }
46600
+ if (!r) continue;
46601
+ let i = G2(n), a = G2(r);
46602
+ if (i.width === 0 && i.height === 0) continue;
46603
+ let o = Math.min(i.left - a.left, a.right - i.right, i.top - a.top, a.bottom - i.bottom);
46604
+ o >= 4 || t.push(W2(this, n, `overflow-hidden ancestor ${o.toFixed(1)}px from border box — focus ring will clip`));
46605
+ }
46606
+ return t;
46607
+ }
46608
+ }, b4 = {
46609
+ id: "fixed-width-in-pane",
46610
+ part: "§24",
46611
+ severity: "warn",
46612
+ description: "§24: no fixed field widths in resizable panes — w-[Npx] (N ≥ 200) inside a [data-panel] / flex-basis sibling clips at the pane edge.",
46613
+ check(e) {
46614
+ let t = [];
46615
+ for (let n of e.els) {
46616
+ if (!n.closest("[data-panel]")) continue;
46617
+ let e = typeof n.className == "string" ? n.className : "", r = n.getAttribute("style") ?? "", i = e.match(/w-\[(\d+)px\]/) ?? r.match(/(?:^|;|\s)width\s*:\s*(\d+)px/);
46618
+ if (!i) continue;
46619
+ let a = parseFloat(i[1]);
46620
+ a < 200 || t.push(W2(this, n, `fixed width ${a}px inside a resizable pane — use w-full max-w-[${a}px]`));
46621
+ }
46622
+ return t;
46623
+ }
46624
+ }, x4 = {
46625
+ id: "menu-icons-all-or-none",
46626
+ part: "§21",
46627
+ severity: "error",
46628
+ description: "§21: within one menu ALL items carry a leading icon or NONE do — a mixed set reads broken.",
46629
+ check(e) {
46630
+ let t = [], n = Array.from(e.root.querySelectorAll("[role=\"menu\"]"));
46631
+ for (let e of n) {
46632
+ let n = Array.from(e.querySelectorAll("[role=\"menuitem\"]"));
46633
+ if (n.length < 2) continue;
46634
+ let r = n.filter((e) => e.querySelector("svg")).length;
46635
+ r === 0 || r === n.length || t.push(W2(this, e, `${r}/${n.length} menu items have a leading icon`));
46636
+ }
46637
+ return t;
46638
+ }
46639
+ }, S4 = {
46640
+ id: "menu-icon-mixed-weight",
46641
+ part: "§21",
46642
+ severity: "warn",
46643
+ description: "§21: menu icons are ONE stroke family — some filled (fill=currentColor) and some stroke-based, or rendered sizes differing >2px, mixes two design systems.",
46644
+ check(e) {
46645
+ let t = [], n = Array.from(e.root.querySelectorAll("[role=\"menu\"]"));
46646
+ for (let e of n) {
46647
+ let n = Array.from(e.querySelectorAll("[role=\"menuitem\"] svg"));
46648
+ if (n.length < 2) continue;
46649
+ let r = 0, i = 0, a = [];
46650
+ for (let e of n) {
46651
+ Array.from(e.querySelectorAll("path, circle, rect, polygon")).some((e) => {
46652
+ let t = (e.getAttribute("fill") ?? "").toLowerCase();
46653
+ return t === "currentcolor" || t && t !== "none";
46654
+ }) ? r++ : i++;
46655
+ let t = G2(e);
46656
+ a.push(Math.max(t.width, t.height));
46657
+ }
46658
+ let o = Math.max(...a), s = Math.min(...a), c = r > 0 && i > 0, l = o > 0 && o - s > 2;
46659
+ !c && !l || t.push(W2(this, e, c ? `${r} filled + ${i} stroke-based icons in one menu` : `icon sizes differ by ${(o - s).toFixed(1)}px`));
46660
+ }
46661
+ return t;
46662
+ }
46663
+ }, C4 = {
46664
+ id: "chrome-selectable",
46665
+ part: "Part 5",
46666
+ severity: "warn",
46667
+ description: "Part 5: chrome (rails/pills/tabs) is select-none — a rail/pill/tab without user-select:none.",
46668
+ check(e) {
46669
+ let t = [];
46670
+ for (let n of e.els) {
46671
+ if (!(n.matches("[role=\"tab\"]") || n.closest("[role=\"tablist\"], [data-rail], nav") || /\bpill\b/.test(typeof n.className == "string" ? n.className : ""))) continue;
46672
+ let r = e.css(n).userSelect || e.css(n).webkitUserSelect;
46673
+ r !== "none" && t.push(W2(this, n, `chrome element without user-select:none (user-select: ${r || "auto"})`));
46674
+ }
46675
+ return t;
46676
+ }
46677
+ }, w4 = {
46678
+ id: "cursor-mismatch",
46679
+ part: "Part 5",
46680
+ severity: "warn",
46681
+ description: "Part 5: cursor semantics — buttons get pointer, static text gets default. A button with cursor:text, or static text with cursor:pointer and no interactive ancestor.",
46682
+ check(e) {
46683
+ let t = [];
46684
+ for (let n of e.els) {
46685
+ let r = e.css(n).cursor;
46686
+ if (n.matches("button, [role=\"button\"]") && r === "text") {
46687
+ t.push(W2(this, n, "interactive control with cursor:text"));
46688
+ continue;
46689
+ }
46690
+ if (r === "pointer" && n.matches("p, h1, h2, h3, h4, h5, h6, span, label")) {
46691
+ if (n.closest("button, a, [role=\"button\"], [onclick]") || n.matches("button, a, [role=\"button\"]")) continue;
46692
+ t.push(W2(this, n, `static ${n.tagName.toLowerCase()} with cursor:pointer and no interactive ancestor`));
46693
+ }
46694
+ }
46695
+ return t;
46696
+ }
46697
+ };
46698
+ function T4(e) {
46699
+ let t = e.transitionProperty.split(",").map((e) => e.trim()).filter(Boolean);
46700
+ return t.length === 1 && t[0] === "none" ? [] : t;
46701
+ }
46702
+ var E4 = [
46703
+ i4,
46704
+ a4,
46705
+ o4,
46706
+ s4,
46707
+ c4,
46708
+ l4,
46709
+ u4,
46710
+ d4,
46711
+ f4,
46712
+ p4,
46713
+ h4,
46714
+ g4,
46715
+ _4,
46716
+ v4,
46717
+ y4,
46718
+ b4,
46719
+ x4,
46720
+ S4,
46721
+ C4,
46722
+ w4,
46723
+ {
46724
+ id: "transition-all",
46725
+ part: "§42",
46726
+ severity: "error",
46727
+ description: "§42: never transition-all — scope to what changes (transition-colors / transition-[transform,...]).",
46728
+ check(e) {
46729
+ let t = [];
46730
+ for (let n of e.els) {
46731
+ if (!n.matches(Q2)) continue;
46732
+ let r = T4(e.css(n));
46733
+ r.includes("all") && (v2(n, r) || t.push(W2(this, n, "transition-property: all")));
46734
+ }
46735
+ return t;
46736
+ }
46737
+ },
46738
+ {
46739
+ id: "transition-paint-prop",
46740
+ part: "§42",
46741
+ severity: "error",
46742
+ description: "§42: never transition layout/paint props (box-shadow, width, height, top/left, margin, padding) — they reflow/repaint every frame; focus rings SNAP, shadows animate a pseudo-element opacity.",
46743
+ check(e) {
46744
+ let t = [];
46745
+ for (let n of e.els) {
46746
+ let r = T4(e.css(n)), i = p2(r).filter((e) => e !== "all (includes layout/paint props)");
46747
+ i.length !== 0 && (v2(n, r) || t.push(W2(this, n, `transitions layout/paint props: ${i.join(", ")}`)));
46748
+ }
46749
+ return t;
46750
+ }
46751
+ },
46752
+ {
46753
+ id: "transition-too-slow",
46754
+ part: "§42",
46755
+ severity: "error",
46756
+ description: "§42: interaction feedback is ≤100ms (duration-75 for small controls) — the 100ms theme default is fine; an explicit duration-150+ crept in.",
46757
+ check(e) {
46758
+ let t = [];
46759
+ for (let n of e.els) {
46760
+ if (!n.matches(Q2)) continue;
46761
+ let r = e.css(n), i = T4(r);
46762
+ if (i.length === 0 || v2(n, i)) continue;
46763
+ let a = d2(r.transitionDuration), o = Math.max(0, ...a);
46764
+ o <= 100 || t.push(W2(this, n, `transition-duration ${o}ms (>100ms) on [${i.join(", ")}]`));
46765
+ }
46766
+ return t;
46767
+ }
46768
+ },
46769
+ {
46770
+ id: "ease-in-feedback",
46771
+ part: "§42",
46772
+ severity: "warn",
46773
+ description: "§42: house curve is cubic-bezier(.2,0,.1,1) ease-out — never ease-in / ease-in-out (or an ease-in-shaped bezier) on feedback.",
46774
+ check(e) {
46775
+ let t = [];
46776
+ for (let n of e.els) {
46777
+ if (!n.matches(Q2)) continue;
46778
+ let r = e.css(n), i = T4(r);
46779
+ if (i.length === 0 || v2(n, i)) continue;
46780
+ let a = m2(r.transitionTimingFunction);
46781
+ a && t.push(W2(this, n, `transition-timing-function: ${a}`));
46782
+ }
46783
+ return t;
46784
+ }
46785
+ },
46786
+ {
46787
+ id: "press-instant-rule-missing",
46788
+ part: "§42",
46789
+ severity: "error",
46790
+ description: "§42: the global press-instant rule (globals.css) must exist — `button:active{transition-duration:0s}` (or transition:none). Absent = press feedback animates instead of snapping.",
46791
+ check(e) {
46792
+ let t = e.root.styleSheets ? e.root : document, n = !1, r = (e) => {
46793
+ for (let t of Array.from(e)) {
46794
+ if (n) return;
46795
+ let e = t;
46796
+ if (e.cssRules && e.cssRules.length) {
46797
+ r(e.cssRules);
46798
+ continue;
46799
+ }
46800
+ let i = t, a = i.selectorText;
46801
+ if (a && /:active\b/.test(a) && /(^|[\s,])(button|a|\[role=("|')?(button|tab|menuitem|option)("|')?\])/i.test(a)) try {
46802
+ let e = i.style.transitionDuration, t = i.style.transition;
46803
+ if (e === "0s" || /(^|\s)none(\s|$)/.test(t) || /\b0s\b/.test(t)) {
46804
+ n = !0;
46805
+ return;
46806
+ }
46807
+ } catch {}
46808
+ }
46809
+ };
46810
+ try {
46811
+ for (let e of Array.from(t.styleSheets)) {
46812
+ if (n) break;
46813
+ try {
46814
+ r(e.cssRules);
46815
+ } catch {}
46816
+ }
46817
+ } catch {}
46818
+ if (n) return [];
46819
+ let i = e.root.documentElement ?? e.els[0] ?? document.documentElement;
46820
+ return [W2(this, i, "no `button:active { transition-duration: 0s }` rule on this page")];
46821
+ }
46822
+ }
46823
+ ], D4 = [];
46824
+ function O4(e) {
46825
+ for (let t of Array.from(e.childNodes)) if (t.nodeType === 3 && (t.textContent ?? "").trim().length > 0) return !0;
46826
+ return !1;
46827
+ }
46828
+ function k4(e, t, n) {
46829
+ let r = Math.max(e, t, n);
46830
+ return r < 40 ? !1 : r - Math.min(e, t, n) > 60;
46831
+ }
46832
+ function A4(e) {
46833
+ return !!(/\b0px\s+0px\s+0px\s+0?\.?5px\b/.test(e) || /\b0px?\s+0px?\s+0px?\s+0?\.?5px\b/.test(e));
46834
+ }
46835
+ function j4(e = typeof document < "u" ? document : {}) {
46836
+ let t = /* @__PURE__ */ new Map(), n = (e) => {
46837
+ let n = t.get(e);
46838
+ return n || (n = getComputedStyle(e), t.set(e, n)), n;
46839
+ };
46840
+ r4 = n;
46841
+ let r = Array.from(e.querySelectorAll("*")), i = [];
46842
+ for (let e of r) {
46843
+ if (e.closest("#linear-grab-root")) continue;
46844
+ let t = G2(e);
46845
+ t.width === 0 && t.height === 0 && e.children.length === 0 || i.push(e);
46846
+ }
46847
+ let a = {
46848
+ root: e,
46849
+ els: i,
46850
+ css: n
46851
+ }, o = [];
46852
+ for (let e of [...E4, ...D4]) try {
46853
+ o.push(...e.check(a));
46854
+ } catch {}
46855
+ return r4 = (e) => getComputedStyle(e), o;
46856
+ }
46857
+ function M4(e) {
46858
+ let t = /* @__PURE__ */ new Map();
46859
+ for (let n of e) {
46860
+ let e = t.get(n.ruleId);
46861
+ e ? e.push(n) : t.set(n.ruleId, [n]);
46862
+ }
46863
+ let n = Array.from(t.entries()).sort((e, t) => {
46864
+ let n = e[1][0].severity === "error" ? 0 : 1, r = t[1][0].severity === "error" ? 0 : 1;
46865
+ return n === r ? t[1].length === e[1].length ? e[0].localeCompare(t[0]) : t[1].length - e[1].length : n - r;
46866
+ }), r = e.length, i = e.filter((e) => e.severity === "error").length, a = [`# Slop scan — ${i} error${i === 1 ? "" : "s"}, ${r - i} warn (${r} total)`, ""];
46867
+ for (let [e, t] of n) {
46868
+ let n = t[0];
46869
+ a.push(`## ${e} — ${n.severity} ×${t.length} [${n.part}]`), a.push(n.description);
46870
+ for (let e of t) a.push(`- \`${e.selector}\` — ${e.evidence}`);
46871
+ a.push("");
46872
+ }
46873
+ return a.join("\n");
46874
+ }
46875
+ function N4(e) {
46876
+ return [
46877
+ "Below is a design-system SLOP report from my running app — each finding is a",
46878
+ "live-DOM violation of the Linear/Protocolbase primitives contract (`Linear",
46879
+ "-primitives.md`). Every rule cites its §id. Goal: zero errors. Rules:",
46880
+ "",
46881
+ "1. Fix at the TOKEN / VARIANT level, not the call sites. Most of these come",
46882
+ " from shared row/button/menu variants — change --row-radius, --selected,",
46883
+ " .pb-row-action, the Button/Input variant, or the globals.css §42 rules —",
46884
+ " not one component at a time.",
46885
+ "2. Cite the primitives §id in your fix (each finding carries it). Radius →",
46886
+ " §40 vocabulary {8,12,16,full}; active fill → §11 var(--selected); menus →",
46887
+ " §21 all-or-none icons + one stroke family; uppercase labels → §25;",
46888
+ " editor flatness → Part 5; scrollers → §0–1 virtualize + truthful fade.",
46889
+ "3. §42 group (transition-all / paint-prop / too-slow / ease-in / press-",
46890
+ " instant): scope transitions to what changes, drop box-shadow/width/height",
46891
+ " from transition lists, keep feedback ≤100ms (duration-75 small controls),",
46892
+ " use ease-out (cubic-bezier(.2,0,.1,1)), and keep the global",
46893
+ " `button:active{transition-duration:0s}` press-instant rule.",
46894
+ "4. Do NOT touch EXEMPT intentional motion — popover/menu/dialog entry-exit,",
46895
+ " svg icon micro-motion, and panel width/height transitions are §42-blessed.",
46896
+ " The scan already excludes them; do not \"fix\" them.",
46897
+ "5. 'unverifiable' warnings mean the token collapsed to the anti-pattern this",
46898
+ " theme — verify the intent in BOTH themes, do not just silence it.",
46899
+ "6. PROOF REQUIRED: after the change I will re-run the scan — it must show 0",
46900
+ " errors. State what you changed per token/variant; do not claim done blind.",
46901
+ "",
46902
+ "---",
46903
+ "",
46904
+ M4(e)
46905
+ ].join("\n");
46906
+ }
46907
+ //#endregion
46222
46908
  //#region src/panel/views/DesignView.tsx
46223
- var B2 = /*#__PURE__*/ N("<span class=\"inline-block min-w-[7ch] text-center\">Extract"), V2 = /*#__PURE__*/ N("<div class=\"relative flex flex-col gap-2 pl-4\"><div class=\"bg-border absolute top-1 bottom-1 left-[5px] w-px\"aria-hidden>"), H2 = /*#__PURE__*/ N("<span class=\"text-success text-[12px] leading-none\">✓"), U2 = /*#__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\">"), W2 = /*#__PURE__*/ N("<div class=\"flex items-center justify-end gap-1 px-1\">"), G2 = /*#__PURE__*/ N("<span class=\"relative inline-flex items-center justify-center\"><svg width=12 height=12 viewBox=\"0 0 16 16\"fill=currentColor aria-hidden><rect x=3.5 y=3 width=3.2 height=10 rx=1></rect><rect x=9.3 y=3 width=3.2 height=10 rx=1></rect></svg><span class=\"bg-success absolute -top-0.5 -right-0.5 size-1.5 animate-pulse rounded-full\"aria-hidden>"), K2 = /*#__PURE__*/ N("<span class=\"inline-block min-w-[5ch] text-center\">Audit"), q2 = /*#__PURE__*/ N("<div class=\"flex max-h-72 flex-col gap-1.5 overflow-y-auto pr-2\">"), J2 = /*#__PURE__*/ N("<span class=\"text-[12px] leading-none\">✓"), Y2 = /*#__PURE__*/ N("<div class=\"flex items-center gap-1 px-1\">"), X2 = /*#__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 items-center justify-between gap-2 px-1\"><div class=min-w-0><p class=\"text-text text-[12.5px] font-semibold\">Design genomes</p><p class=\"text-text-faint text-[10.5px] leading-snug\">Point at a component → get its structure, tokens and interaction states as a spec you can hand to an agent.</p></div></div><div class=\"border-border mt-1 flex flex-col gap-2 border-t pt-3\"><div class=\"flex items-center justify-between gap-2 px-1\"><div class=min-w-0><p class=\"text-text text-[12.5px] font-semibold\">CSS slowdowns</p><p class=\"text-text-faint text-[10.5px] leading-snug\">Transitions/delays ≥50ms on interactive elements — feedback that animates instead of being instant. Live hits appear as you use the app; Audit sweeps the whole page.</p></div><div class=\"flex shrink-0 items-center gap-1\">"), Z2 = /*#__PURE__*/ N("<p class=\"text-text mt-1 text-[11px] font-semibold\">Interaction states"), Q2 = /*#__PURE__*/ N("<svg width=12 height=12 viewBox=\"0 0 16 16\"aria-hidden><rect x=3.5 y=3.5 width=9 height=9 rx=1.5 fill=currentColor>"), $2 = /*#__PURE__*/ N("<span class=\"text-warn text-[10.5px] font-medium tabular-nums\">s · <!> states"), e4 = /*#__PURE__*/ N("<div class=\"border-border flex flex-col gap-2 border-t px-2.5 py-2\"><p class=\"text-text-faint truncate text-[10px]\"></p><div class=\"flex max-h-64 flex-col gap-2 overflow-y-auto pr-2\"></div><div class=\"flex items-center gap-1\">"), t4 = /*#__PURE__*/ N("<div class=relative><span class=\"border-border bg-surface absolute top-3 -left-[13.5px] size-[9px] rounded-full border\"aria-hidden></span><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.5 py-2 text-left\"><span class=\"text-accent min-w-0 truncate font-mono text-[12px]\"></span><span class=\"text-text-faint ml-auto shrink-0 text-[10.5px] tabular-nums\"> roles<!> · </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\">"), n4 = /*#__PURE__*/ N("<span class=text-text-faint> ×"), r4 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-0.5\"><p class=\"text-text text-[11px] font-medium\">"), i4 = /*#__PURE__*/ N("<span class=text-accent> ← var(<!>)"), a4 = /*#__PURE__*/ N("<p class=\"text-text-dim font-mono text-[10px] leading-snug break-all\">: "), o4 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-0.5\"><p class=\"text-warn text-[10.5px] font-medium\"> — "), s4 = /*#__PURE__*/ N("<p class=\"text-text-dim font-mono text-[10px] leading-snug break-all\">: <!> → "), c4 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round aria-hidden><circle cx=8 cy=8 r=6></circle><circle cx=8 cy=8 r=2 fill=currentColor stroke=none>"), l4 = /*#__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\">"), u4 = /*#__PURE__*/ N("<svg width=12 height=12 viewBox=\"0 0 16 16\"fill=currentColor aria-hidden><path d=\"M4.5 2.5v11l9-5.5z\">"), d4 = /*#__PURE__*/ N("<p class=\"text-text-faint px-1 text-[10.5px]\">Nothing caught yet — interact with the app, or run Audit."), f4 = /*#__PURE__*/ N("<span class=\"text-text-dim font-mono text-[10px] break-all\">"), p4 = /*#__PURE__*/ N("<span class=\"text-danger text-[10px] leading-snug\">⚠ layout/paint transition: "), m4 = /*#__PURE__*/ N("<span class=\"text-danger text-[10px] leading-snug\">⚠ ease-in easing: "), h4 = /*#__PURE__*/ N("<div class=\"bg-surface border-border flex flex-col gap-0.5 rounded-lg border p-2\"><div class=\"flex items-center gap-2\"><span class=\"text-warn shrink-0 text-[10px] font-semibold tracking-wide uppercase\"></span><span class=\"text-accent min-w-0 truncate font-mono text-[11.5px]\"></span><span class=\"text-text ml-auto shrink-0 text-[11px] font-medium tabular-nums\">ms</span></div><span class=\"text-text-dim text-[10px] leading-snug\"></span><span class=\"text-text-faint text-[10px] leading-snug\">"), g4 = /*#__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\">"), _4 = "linear-grab:genomes:v1", v4 = 30;
46224
- function y4() {
46909
+ var P4 = /*#__PURE__*/ N("<span class=\"inline-block min-w-[7ch] text-center\">Extract"), F4 = /*#__PURE__*/ N("<div class=\"relative flex flex-col gap-2 pl-4\"><div class=\"bg-border absolute top-1 bottom-1 left-[5px] w-px\"aria-hidden>"), I4 = /*#__PURE__*/ N("<span class=\"text-success text-[12px] leading-none\">✓"), L4 = /*#__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\">"), R4 = /*#__PURE__*/ N("<div class=\"flex items-center justify-end gap-1 px-1\">"), z4 = /*#__PURE__*/ N("<span class=\"relative inline-flex items-center justify-center\"><svg width=12 height=12 viewBox=\"0 0 16 16\"fill=currentColor aria-hidden><rect x=3.5 y=3 width=3.2 height=10 rx=1></rect><rect x=9.3 y=3 width=3.2 height=10 rx=1></rect></svg><span class=\"bg-success absolute -top-0.5 -right-0.5 size-1.5 animate-pulse rounded-full\"aria-hidden>"), B4 = /*#__PURE__*/ N("<span class=\"inline-block min-w-[5ch] text-center\">Audit"), V4 = /*#__PURE__*/ N("<div class=\"flex max-h-72 flex-col gap-1.5 overflow-y-auto pr-2\">"), H4 = /*#__PURE__*/ N("<span class=\"text-[12px] leading-none\">✓"), U4 = /*#__PURE__*/ N("<div class=\"flex items-center gap-1 px-1\">"), W4 = /*#__PURE__*/ N("<span class=\"inline-block min-w-[4ch] text-center\">Scan"), G4 = /*#__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"), K4 = /*#__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 items-center justify-between gap-2 px-1\"><div class=min-w-0><p class=\"text-text text-[12.5px] font-semibold\">Design genomes</p><p class=\"text-text-faint text-[10.5px] leading-snug\">Point at a component → get its structure, tokens and interaction states as a spec you can hand to an agent.</p></div></div><div class=\"border-border mt-1 flex flex-col gap-2 border-t pt-3\"><div class=\"flex items-center justify-between gap-2 px-1\"><div class=min-w-0><p class=\"text-text text-[12.5px] font-semibold\">CSS slowdowns</p><p class=\"text-text-faint text-[10.5px] leading-snug\">Transitions/delays over the 100ms house cap (§42) on interactive elements — feedback that animates instead of being instant. Live hits appear as you use the app; Audit sweeps the whole page.</p></div><div class=\"flex shrink-0 items-center gap-1\"></div></div></div><div class=\"border-border mt-1 flex flex-col gap-2 border-t pt-3\"><div class=\"flex items-center justify-between gap-2 px-1\"><div class=min-w-0><p class=\"text-text text-[12.5px] font-semibold\">Slop scan</p><p class=\"text-text-faint text-[10.5px] leading-snug\">Design-contract drift — Linear-primitives rules checked against the live DOM. Open menus/popovers first to include them."), q4 = /*#__PURE__*/ N("<p class=\"text-text mt-1 text-[11px] font-semibold\">Interaction states"), J4 = /*#__PURE__*/ N("<svg width=12 height=12 viewBox=\"0 0 16 16\"aria-hidden><rect x=3.5 y=3.5 width=9 height=9 rx=1.5 fill=currentColor>"), Y4 = /*#__PURE__*/ N("<span class=\"text-warn text-[10.5px] font-medium tabular-nums\">s · <!> states"), X4 = /*#__PURE__*/ N("<div class=\"border-border flex flex-col gap-2 border-t px-2.5 py-2\"><p class=\"text-text-faint truncate text-[10px]\"></p><div class=\"flex max-h-64 flex-col gap-2 overflow-y-auto pr-2\"></div><div class=\"flex items-center gap-1\">"), Z4 = /*#__PURE__*/ N("<div class=relative><span class=\"border-border bg-surface absolute top-3 -left-[13.5px] size-[9px] rounded-full border\"aria-hidden></span><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.5 py-2 text-left\"><span class=\"text-accent min-w-0 truncate font-mono text-[12px]\"></span><span class=\"text-text-faint ml-auto shrink-0 text-[10.5px] tabular-nums\"> roles<!> · </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\">"), Q4 = /*#__PURE__*/ N("<span class=text-text-faint> ×"), $4 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-0.5\"><p class=\"text-text text-[11px] font-medium\">"), e3 = /*#__PURE__*/ N("<span class=text-accent> ← var(<!>)"), t3 = /*#__PURE__*/ N("<p class=\"text-text-dim font-mono text-[10px] leading-snug break-all\">: "), n3 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-0.5\"><p class=\"text-warn text-[10.5px] font-medium\"> — "), r3 = /*#__PURE__*/ N("<p class=\"text-text-dim font-mono text-[10px] leading-snug break-all\">: <!> → "), i3 = /*#__PURE__*/ N("<svg width=13 height=13 viewBox=\"0 0 16 16\"fill=none stroke=currentColor stroke-width=1.5 stroke-linecap=round aria-hidden><circle cx=8 cy=8 r=6></circle><circle cx=8 cy=8 r=2 fill=currentColor stroke=none>"), a3 = /*#__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\">"), o3 = /*#__PURE__*/ N("<svg width=12 height=12 viewBox=\"0 0 16 16\"fill=currentColor aria-hidden><path d=\"M4.5 2.5v11l9-5.5z\">"), s3 = /*#__PURE__*/ N("<p class=\"text-text-faint px-1 text-[10.5px]\">Nothing caught yet — interact with the app, or run Audit."), c3 = /*#__PURE__*/ N("<span class=\"text-text-dim font-mono text-[10px] break-all\">"), l3 = /*#__PURE__*/ N("<span class=\"text-danger text-[10px] leading-snug\">⚠ layout/paint transition: "), u3 = /*#__PURE__*/ N("<span class=\"text-danger text-[10px] leading-snug\">⚠ ease-in easing: "), d3 = /*#__PURE__*/ N("<div class=\"bg-surface border-border flex flex-col gap-0.5 rounded-lg border p-2\"><div class=\"flex items-center gap-2\"><span class=\"text-warn shrink-0 text-[10px] font-semibold tracking-wide uppercase\"></span><span class=\"text-accent min-w-0 truncate font-mono text-[11.5px]\"></span><span class=\"text-text ml-auto shrink-0 text-[11px] font-medium tabular-nums\">ms</span></div><span class=\"text-text-dim text-[10px] leading-snug\"></span><span class=\"text-text-faint text-[10px] leading-snug\">"), f3 = /*#__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\">"), p3 = /*#__PURE__*/ N("<p class=\"text-text-faint px-1 text-[10.5px]\">No scan yet — click Scan to audit this page against the contract."), m3 = /*#__PURE__*/ N("<div class=\"border-border flex flex-col gap-1 border-t px-2 py-1.5\"><p class=\"text-text-dim text-[10px] leading-snug\">"), h3 = /*#__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\">"), g3 = /*#__PURE__*/ N("<button class=\"hover:bg-surface-2 flex w-full cursor-pointer flex-col gap-0.5 rounded px-1 py-0.5 text-left\"title=\"Reveal on the page\"><span class=\"text-text min-w-0 truncate font-mono text-[10.5px]\"></span><span class=\"text-text-faint font-mono text-[10px] leading-snug break-all\">"), _3 = "linear-grab:genomes:v1", v3 = 30;
46910
+ function y3() {
46225
46911
  try {
46226
- return JSON.parse(localStorage.getItem(_4) ?? "[]");
46912
+ return JSON.parse(localStorage.getItem(_3) ?? "[]");
46227
46913
  } catch {
46228
46914
  return [];
46229
46915
  }
46230
46916
  }
46231
- function b4(e) {
46917
+ function b3(e) {
46232
46918
  try {
46233
- localStorage.setItem(_4, JSON.stringify(e.slice(0, v4)));
46919
+ localStorage.setItem(_3, JSON.stringify(e.slice(0, v3)));
46234
46920
  } catch {}
46235
46921
  }
46236
- var x4 = /* @__PURE__ */ new Map();
46237
- function S4() {
46238
- let [e, t] = T(y4()), [n, r] = T(null), [i, a] = T(null), [o, s] = T(null), [c, l] = T(null), [u, d] = T(null), [f, p] = T({
46922
+ var x3 = /* @__PURE__ */ new Map(), S3 = [];
46923
+ function C3(e) {
46924
+ let t = e.el?.deref();
46925
+ if (!(t instanceof HTMLElement) || !t.isConnected) return !1;
46926
+ t.scrollIntoView({
46927
+ block: "center",
46928
+ behavior: "smooth"
46929
+ });
46930
+ let n = t.style.outline, r = t.style.outlineOffset;
46931
+ return t.style.outline = "2px solid #e5a13a", t.style.outlineOffset = "2px", setTimeout(() => {
46932
+ t.style.outline = n, t.style.outlineOffset = r;
46933
+ }, 1400), !0;
46934
+ }
46935
+ function w3(e) {
46936
+ if (e.length === 0) return;
46937
+ let t = Date.now(), n = e.slice(0, 200).map(({ el: e, ...n }) => ({
46938
+ kind: "slop-scan",
46939
+ page: location.pathname,
46940
+ at: t,
46941
+ ...n
46942
+ }));
46943
+ JO().then((e) => fetch(`${e}/scan/events`, {
46944
+ method: "POST",
46945
+ headers: { "Content-Type": "application/json" },
46946
+ body: JSON.stringify({ events: n }),
46947
+ keepalive: !0
46948
+ })).catch(() => {});
46949
+ }
46950
+ function T3() {
46951
+ let [e, t] = T(y3()), [n, r] = T(null), [i, a] = T(null), [o, s] = T(null), [c, l] = T(null), [u, d] = T(null), [f, p] = T({
46239
46952
  active: !1,
46240
46953
  msLeft: 0,
46241
46954
  total: 0,
@@ -46243,37 +46956,68 @@ function S4() {
46243
46956
  });
46244
46957
  ae(i2(p));
46245
46958
  let [m, h] = T([]);
46246
- ae(D2(h));
46247
- let [g, _] = T(j2());
46248
- ae(N2(_));
46959
+ ae(j2(h));
46960
+ let [g, _] = T(F2());
46961
+ ae(L2(_));
46249
46962
  let [v, y] = T(!1), [b, x] = T(!1), S = async () => {
46250
46963
  y(!0);
46251
46964
  try {
46252
- await L2();
46965
+ await V2();
46253
46966
  } finally {
46254
46967
  y(!1);
46255
46968
  }
46256
46969
  }, C = async () => {
46257
46970
  try {
46258
- await navigator.clipboard.writeText(z2(m())), x(!0), setTimeout(() => x(!1), 1600);
46971
+ await navigator.clipboard.writeText(U2(m())), x(!0), setTimeout(() => x(!1), 1600);
46259
46972
  } catch {
46260
46973
  l("Clipboard was blocked — click Copy again.");
46261
46974
  }
46262
46975
  }, [w, E] = T(!1), O = async () => {
46263
46976
  try {
46264
- await navigator.clipboard.writeText(R2(m())), E(!0), setTimeout(() => E(!1), 1600);
46977
+ await navigator.clipboard.writeText(H2(m())), E(!0), setTimeout(() => E(!1), 1600);
46265
46978
  } catch {
46266
46979
  l("Clipboard was blocked — click Copy again.");
46267
46980
  }
46268
- }, k = (e) => {
46269
- t(e), b4(e);
46270
- }, ee = async () => {
46981
+ }, [k, ee] = T(S3), [te, A] = T(!1), [ne, re] = T(null), [ie, oe] = T(!0), [se, ce] = T(!0), [le, ue] = T(!1), [de, fe] = T(!1), pe = () => {
46982
+ l(null), A(!0);
46983
+ try {
46984
+ let e = j4(document);
46985
+ S3 = e, ee(e), re(null), w3(e);
46986
+ } catch (e) {
46987
+ l(e instanceof Error ? e.message : String(e));
46988
+ } finally {
46989
+ A(!1);
46990
+ }
46991
+ }, me = () => {
46992
+ S3 = [], ee([]), re(null);
46993
+ }, he = () => k().filter((e) => e.severity === "error" ? ie() : se()), ge = () => {
46994
+ let e = /* @__PURE__ */ new Map();
46995
+ for (let t of he()) {
46996
+ let n = e.get(t.ruleId);
46997
+ n ? n.push(t) : e.set(t.ruleId, [t]);
46998
+ }
46999
+ return [...e.values()].sort((e, t) => Number(t[0].severity === "error") - Number(e[0].severity === "error") || t.length - e.length);
47000
+ }, _e = () => k().filter((e) => e.severity === "error").length, ve = () => k().length - _e(), ye = async () => {
47001
+ try {
47002
+ await navigator.clipboard.writeText(M4(he())), ue(!0), setTimeout(() => ue(!1), 1600);
47003
+ } catch {
47004
+ l("Clipboard was blocked — click Copy again.");
47005
+ }
47006
+ }, be = async () => {
47007
+ try {
47008
+ await navigator.clipboard.writeText(N4(he())), fe(!0), setTimeout(() => fe(!1), 1600);
47009
+ } catch {
47010
+ l("Clipboard was blocked — click Copy again.");
47011
+ }
47012
+ }, xe = (e) => {
47013
+ t(e), b3(e);
47014
+ }, Se = async () => {
46271
47015
  l(null), a("extract"), window.dispatchEvent(new CustomEvent(BZ));
46272
47016
  try {
46273
47017
  let t = await u2();
46274
47018
  if (!t) return;
46275
47019
  let n = await e2(t), i = Date.now();
46276
- x4.set(i, new WeakRef(t)), k([{
47020
+ x3.set(i, new WeakRef(t)), xe([{
46277
47021
  id: i,
46278
47022
  genome: n
46279
47023
  }, ...e()]), r(i);
@@ -46282,16 +47026,16 @@ function S4() {
46282
47026
  } finally {
46283
47027
  a(null), oj("design"), window.dispatchEvent(new CustomEvent(VZ));
46284
47028
  }
46285
- }, te = async (t) => {
47029
+ }, Ce = async (t) => {
46286
47030
  l(null), a(t.id), window.dispatchEvent(new CustomEvent(BZ));
46287
47031
  try {
46288
- let n = x4.get(t.id)?.deref() ?? null;
47032
+ let n = x3.get(t.id)?.deref() ?? null;
46289
47033
  if (!n || !n.isConnected) {
46290
47034
  if (n = await u2(), !n) return;
46291
- x4.set(t.id, new WeakRef(n));
47035
+ x3.set(t.id, new WeakRef(n));
46292
47036
  }
46293
47037
  let r = await c2(n, 8e3, (e) => s(Math.ceil(e / 1e3)));
46294
- r.length === 0 && l("No state changes captured — hover/open the component while the 8s window runs."), k(e().map((e) => e.id === t.id ? {
47038
+ r.length === 0 && l("No state changes captured — hover/open the component while the 8s window runs."), xe(e().map((e) => e.id === t.id ? {
46295
47039
  ...e,
46296
47040
  genome: {
46297
47041
  ...e.genome,
@@ -46303,37 +47047,37 @@ function S4() {
46303
47047
  } finally {
46304
47048
  a(null), s(null), oj("design"), window.dispatchEvent(new CustomEvent(VZ));
46305
47049
  }
46306
- }, A = async (e) => {
47050
+ }, we = async (e) => {
46307
47051
  try {
46308
47052
  await navigator.clipboard.writeText(l2(e.genome)), d(e.id), setTimeout(() => d(null), 1600);
46309
47053
  } catch {
46310
47054
  l("Clipboard was blocked — click Copy again.");
46311
47055
  }
46312
- }, ne = (t) => {
46313
- x4.delete(t), k(e().filter((e) => e.id !== t));
46314
- }, [re, ie] = T(!1), oe = async () => {
47056
+ }, Te = (t) => {
47057
+ x3.delete(t), xe(e().filter((e) => e.id !== t));
47058
+ }, [Ee, De] = T(!1), Oe = async () => {
46315
47059
  try {
46316
47060
  let t = e().map((e) => l2(e.genome)).join("\n\n---\n\n");
46317
- await navigator.clipboard.writeText(t), ie(!0), setTimeout(() => ie(!1), 1600);
47061
+ await navigator.clipboard.writeText(t), De(!0), setTimeout(() => De(!1), 1600);
46318
47062
  } catch {
46319
47063
  l("Clipboard was blocked — click Copy again.");
46320
47064
  }
46321
- }, se = () => {
46322
- x4.clear(), k([]), r(null);
47065
+ }, ke = () => {
47066
+ x3.clear(), xe([]), r(null);
46323
47067
  };
46324
47068
  return (() => {
46325
- var t = X2(), a = t.firstChild;
47069
+ var t = K4(), a = t.firstChild;
46326
47070
  a.firstChild;
46327
- var o = a.nextSibling, s = o.firstChild.firstChild.nextSibling;
46328
- return P(a, j(kj, {
47071
+ var o = a.nextSibling, s = o.firstChild.firstChild.nextSibling, d = o.nextSibling, p = d.firstChild;
47072
+ return p.firstChild, P(a, j(kj, {
46329
47073
  variant: "primary",
46330
47074
  class: "h-7 shrink-0 px-2.5 text-[11.5px]",
46331
47075
  get loading() {
46332
47076
  return i() === "extract";
46333
47077
  },
46334
- onClick: () => void ee(),
47078
+ onClick: () => void Se(),
46335
47079
  get children() {
46336
- return B2();
47080
+ return P4();
46337
47081
  }
46338
47082
  }), null), P(t, j(M, {
46339
47083
  get when() {
@@ -46356,7 +47100,7 @@ function S4() {
46356
47100
  },
46357
47101
  get children() {
46358
47102
  return [(() => {
46359
- var t = V2();
47103
+ var t = F4();
46360
47104
  return t.firstChild, P(t, j(We, {
46361
47105
  get each() {
46362
47106
  return e();
@@ -46364,7 +47108,7 @@ function S4() {
46364
47108
  children: (e) => {
46365
47109
  let t = () => n() === e.id;
46366
47110
  return (() => {
46367
- var n = t4(), a = n.firstChild, o = a.nextSibling, s = o.firstChild, c = s.firstChild, l = c.nextSibling, d = l.firstChild, p = d.nextSibling;
47111
+ var n = Z4(), a = n.firstChild, o = a.nextSibling, s = o.firstChild, c = s.firstChild, l = c.nextSibling, d = l.firstChild, p = d.nextSibling;
46368
47112
  p.nextSibling;
46369
47113
  var m = l.nextSibling;
46370
47114
  return s.$$click = () => r(t() ? null : e.id), P(c, () => e.genome.title), P(l, () => e.genome.nodes.length, d), P(l, (() => {
@@ -46375,19 +47119,19 @@ function S4() {
46375
47119
  return t();
46376
47120
  },
46377
47121
  get children() {
46378
- var t = e4(), n = t.firstChild, r = n.nextSibling, a = r.nextSibling;
47122
+ var t = X4(), n = t.firstChild, r = n.nextSibling, a = r.nextSibling;
46379
47123
  return P(n, () => e.genome.pageUrl), P(r, j(We, {
46380
47124
  get each() {
46381
47125
  return e.genome.nodes;
46382
47126
  },
46383
47127
  children: (e) => (() => {
46384
- var t = r4(), n = t.firstChild;
47128
+ var t = $4(), n = t.firstChild;
46385
47129
  return P(n, () => e.label, null), P(n, j(M, {
46386
47130
  get when() {
46387
47131
  return e.count > 1;
46388
47132
  },
46389
47133
  get children() {
46390
- var t = n4();
47134
+ var t = Q4();
46391
47135
  return t.firstChild, P(t, () => e.count, null), t;
46392
47136
  }
46393
47137
  }), null), P(t, j(We, {
@@ -46395,13 +47139,13 @@ function S4() {
46395
47139
  return Object.entries(e.styles);
46396
47140
  },
46397
47141
  children: ([t, n]) => (() => {
46398
- var r = a4(), i = r.firstChild;
47142
+ var r = t3(), i = r.firstChild;
46399
47143
  return P(r, t, i), P(r, n, null), P(r, j(M, {
46400
47144
  get when() {
46401
47145
  return e.tokens[t];
46402
47146
  },
46403
47147
  get children() {
46404
- var n = i4(), r = n.firstChild.nextSibling;
47148
+ var n = e3(), r = n.firstChild.nextSibling;
46405
47149
  return r.nextSibling, P(n, () => e.tokens[t], r), n;
46406
47150
  }
46407
47151
  }), null), r;
@@ -46413,18 +47157,18 @@ function S4() {
46413
47157
  return e.genome.states.length > 0;
46414
47158
  },
46415
47159
  get children() {
46416
- return [Z2(), j(We, {
47160
+ return [q4(), j(We, {
46417
47161
  get each() {
46418
47162
  return e.genome.states;
46419
47163
  },
46420
47164
  children: (e) => (() => {
46421
- var t = o4(), n = t.firstChild, r = n.firstChild;
47165
+ var t = n3(), n = t.firstChild, r = n.firstChild;
46422
47166
  return P(n, () => e.label, r), P(n, () => e.trigger, null), P(t, j(We, {
46423
47167
  get each() {
46424
47168
  return Object.entries(e.changed);
46425
47169
  },
46426
47170
  children: ([e, t]) => (() => {
46427
- var n = s4(), r = n.firstChild, i = r.nextSibling;
47171
+ var n = r3(), r = n.firstChild, i = r.nextSibling;
46428
47172
  return i.nextSibling, P(n, e, r), P(n, () => t.from, i), P(n, () => t.to, null), n;
46429
47173
  })()
46430
47174
  }), null), t;
@@ -46444,9 +47188,9 @@ function S4() {
46444
47188
  },
46445
47189
  title: "Capture states — records hover/focus/open styles for 8s while you interact; the pill shows the timer and Stop",
46446
47190
  "aria-label": "Capture interaction states",
46447
- onClick: () => void te(e),
47191
+ onClick: () => void Ce(e),
46448
47192
  get children() {
46449
- return c4();
47193
+ return i3();
46450
47194
  }
46451
47195
  });
46452
47196
  },
@@ -46460,10 +47204,10 @@ function S4() {
46460
47204
  "aria-label": "Stop recording states",
46461
47205
  onClick: () => o2(),
46462
47206
  get children() {
46463
- return Q2();
47207
+ return J4();
46464
47208
  }
46465
47209
  }), (() => {
46466
- var e = $2(), t = e.firstChild, n = t.nextSibling;
47210
+ var e = Y4(), t = e.firstChild, n = t.nextSibling;
46467
47211
  return n.nextSibling, P(e, () => Math.ceil(f().msLeft / 1e3), t), P(e, () => f().total, n), e;
46468
47212
  })()];
46469
47213
  }
@@ -46474,17 +47218,17 @@ function S4() {
46474
47218
  return u() === e.id ? "Copied!" : "Copy spec — markdown for an agent or issue";
46475
47219
  },
46476
47220
  "aria-label": "Copy genome spec",
46477
- onClick: () => void A(e),
47221
+ onClick: () => void we(e),
46478
47222
  get children() {
46479
47223
  return j(M, {
46480
47224
  get when() {
46481
47225
  return u() === e.id;
46482
47226
  },
46483
47227
  get fallback() {
46484
- return l4();
47228
+ return a3();
46485
47229
  },
46486
47230
  get children() {
46487
- return H2();
47231
+ return I4();
46488
47232
  }
46489
47233
  });
46490
47234
  }
@@ -46493,9 +47237,9 @@ function S4() {
46493
47237
  variant: "ghost",
46494
47238
  title: "Delete this genome",
46495
47239
  "aria-label": "Delete genome",
46496
- onClick: () => ne(e.id),
47240
+ onClick: () => Te(e.id),
46497
47241
  get children() {
46498
- return U2();
47242
+ return L4();
46499
47243
  }
46500
47244
  }), null), t;
46501
47245
  }
@@ -46510,25 +47254,25 @@ function S4() {
46510
47254
  }
46511
47255
  }), null), t;
46512
47256
  })(), (() => {
46513
- var e = W2();
47257
+ var e = R4();
46514
47258
  return P(e, j(kj, {
46515
47259
  class: "size-7 px-0",
46516
47260
  variant: "ghost",
46517
47261
  get title() {
46518
- return re() ? "Copied!" : "Copy all genomes as one markdown document";
47262
+ return Ee() ? "Copied!" : "Copy all genomes as one markdown document";
46519
47263
  },
46520
47264
  "aria-label": "Copy all genomes",
46521
- onClick: () => void oe(),
47265
+ onClick: () => void Oe(),
46522
47266
  get children() {
46523
47267
  return j(M, {
46524
47268
  get when() {
46525
- return re();
47269
+ return Ee();
46526
47270
  },
46527
47271
  get fallback() {
46528
- return l4();
47272
+ return a3();
46529
47273
  },
46530
47274
  get children() {
46531
- return H2();
47275
+ return I4();
46532
47276
  }
46533
47277
  });
46534
47278
  }
@@ -46537,9 +47281,9 @@ function S4() {
46537
47281
  variant: "ghost",
46538
47282
  title: "Delete all saved genomes",
46539
47283
  "aria-label": "Delete all genomes",
46540
- onClick: se,
47284
+ onClick: ke,
46541
47285
  get children() {
46542
- return U2();
47286
+ return L4();
46543
47287
  }
46544
47288
  }), null), e;
46545
47289
  })()];
@@ -46553,17 +47297,17 @@ function S4() {
46553
47297
  get "aria-label"() {
46554
47298
  return g() ? "Pause live capture" : "Start live capture";
46555
47299
  },
46556
- onClick: () => M2(!g()),
47300
+ onClick: () => I2(!g()),
46557
47301
  get children() {
46558
47302
  return j(M, {
46559
47303
  get when() {
46560
47304
  return g();
46561
47305
  },
46562
47306
  get fallback() {
46563
- return u4();
47307
+ return o3();
46564
47308
  },
46565
47309
  get children() {
46566
- return G2();
47310
+ return z4();
46567
47311
  }
46568
47312
  });
46569
47313
  }
@@ -46575,24 +47319,24 @@ function S4() {
46575
47319
  },
46576
47320
  onClick: () => void S(),
46577
47321
  get children() {
46578
- return K2();
47322
+ return B4();
46579
47323
  }
46580
47324
  }), null), P(o, j(M, {
46581
47325
  get when() {
46582
47326
  return m().length > 0;
46583
47327
  },
46584
47328
  get fallback() {
46585
- return d4();
47329
+ return s3();
46586
47330
  },
46587
47331
  get children() {
46588
47332
  return [(() => {
46589
- var e = q2();
47333
+ var e = V4();
46590
47334
  return P(e, j(We, {
46591
47335
  get each() {
46592
47336
  return m();
46593
47337
  },
46594
47338
  children: (e) => (() => {
46595
- var t = h4(), n = t.firstChild, r = n.firstChild, i = r.nextSibling, a = i.nextSibling, o = a.firstChild, s = n.nextSibling, c = s.nextSibling;
47339
+ var t = d3(), n = t.firstChild, r = n.firstChild, i = r.nextSibling, a = i.nextSibling, o = a.firstChild, s = n.nextSibling, c = s.nextSibling;
46596
47340
  return P(r, () => e.mode === "live" ? "live" : "audit"), P(i, () => e.component ?? e.element, null), P(i, j(M, {
46597
47341
  get when() {
46598
47342
  return e.count > 1;
@@ -46608,7 +47352,7 @@ function S4() {
46608
47352
  return e.source;
46609
47353
  },
46610
47354
  get children() {
46611
- var t = f4();
47355
+ var t = c3();
46612
47356
  return P(t, () => e.source), t;
46613
47357
  }
46614
47358
  }), s), P(s, () => e.properties.join(", "), null), P(s, j(M, {
@@ -46627,7 +47371,7 @@ function S4() {
46627
47371
  return e.jankProps?.length;
46628
47372
  },
46629
47373
  get children() {
46630
- var t = p4();
47374
+ var t = l3();
46631
47375
  return t.firstChild, P(t, () => e.jankProps.join(", "), null), t;
46632
47376
  }
46633
47377
  }), c), P(t, j(M, {
@@ -46635,14 +47379,14 @@ function S4() {
46635
47379
  return e.easing;
46636
47380
  },
46637
47381
  get children() {
46638
- var t = m4();
47382
+ var t = u3();
46639
47383
  return t.firstChild, P(t, () => e.easing, null), t;
46640
47384
  }
46641
47385
  }), c), P(c, () => e.suggestion), t;
46642
47386
  })()
46643
47387
  })), e;
46644
47388
  })(), (() => {
46645
- var e = Y2();
47389
+ var e = U4();
46646
47390
  return P(e, j(kj, {
46647
47391
  class: "size-7 px-0",
46648
47392
  variant: "primary",
@@ -46657,10 +47401,10 @@ function S4() {
46657
47401
  return w();
46658
47402
  },
46659
47403
  get fallback() {
46660
- return g4();
47404
+ return f3();
46661
47405
  },
46662
47406
  get children() {
46663
- return J2();
47407
+ return H4();
46664
47408
  }
46665
47409
  });
46666
47410
  }
@@ -46678,10 +47422,10 @@ function S4() {
46678
47422
  return b();
46679
47423
  },
46680
47424
  get fallback() {
46681
- return l4();
47425
+ return a3();
46682
47426
  },
46683
47427
  get children() {
46684
- return H2();
47428
+ return I4();
46685
47429
  }
46686
47430
  });
46687
47431
  }
@@ -46690,20 +47434,154 @@ function S4() {
46690
47434
  variant: "ghost",
46691
47435
  title: "Clear all findings (live + audit)",
46692
47436
  "aria-label": "Clear all findings",
46693
- onClick: O2,
47437
+ onClick: M2,
46694
47438
  get children() {
46695
- return U2();
47439
+ return L4();
46696
47440
  }
46697
47441
  }), null), e;
46698
47442
  })()];
46699
47443
  }
47444
+ }), null), P(p, j(kj, {
47445
+ variant: "ghost",
47446
+ class: "h-7 shrink-0 px-2.5 text-[11.5px]",
47447
+ get loading() {
47448
+ return te();
47449
+ },
47450
+ onClick: pe,
47451
+ get children() {
47452
+ return W4();
47453
+ }
47454
+ }), null), P(d, j(M, {
47455
+ get when() {
47456
+ return k().length > 0;
47457
+ },
47458
+ get fallback() {
47459
+ return p3();
47460
+ },
47461
+ get children() {
47462
+ return [
47463
+ (() => {
47464
+ var e = G4(), t = e.firstChild, n = t.firstChild, r = t.nextSibling, i = r.firstChild;
47465
+ return t.$$click = () => oe(!ie()), P(t, _e, n), r.$$click = () => ce(!se()), P(r, ve, i), D((e) => {
47466
+ var n = {
47467
+ "text-danger bg-danger/10 border-danger/40": ie(),
47468
+ "text-text-faint": !ie()
47469
+ }, i = ie(), a = {
47470
+ "text-warn bg-warn/10 border-warn/40": se(),
47471
+ "text-text-faint": !se()
47472
+ }, o = se();
47473
+ return e.e = lt(t, n, e.e), i !== e.t && it(t, "aria-pressed", e.t = i), e.a = lt(r, a, e.a), o !== e.o && it(r, "aria-pressed", e.o = o), e;
47474
+ }, {
47475
+ e: void 0,
47476
+ t: void 0,
47477
+ a: void 0,
47478
+ o: void 0
47479
+ }), e;
47480
+ })(),
47481
+ (() => {
47482
+ var e = V4();
47483
+ return P(e, j(We, {
47484
+ get each() {
47485
+ return ge();
47486
+ },
47487
+ children: (e) => {
47488
+ let t = e[0], n = () => ne() === t.ruleId;
47489
+ return (() => {
47490
+ var r = h3(), i = r.firstChild, a = i.firstChild, o = a.nextSibling, s = o.nextSibling;
47491
+ s.firstChild;
47492
+ var c = s.nextSibling;
47493
+ return i.$$click = () => re(n() ? null : t.ruleId), P(o, () => t.ruleId), P(s, () => e.length, null), P(r, j(M, {
47494
+ get when() {
47495
+ return n();
47496
+ },
47497
+ get children() {
47498
+ var n = m3(), r = n.firstChild;
47499
+ return P(r, () => t.description), P(n, j(We, {
47500
+ each: e,
47501
+ children: (e) => (() => {
47502
+ var t = g3(), n = t.firstChild, r = n.nextSibling;
47503
+ return t.$$click = () => {
47504
+ C3(e) || l("Element is gone — run Scan again.");
47505
+ }, P(n, () => e.selector), P(r, () => e.evidence), t;
47506
+ })()
47507
+ }), null), n;
47508
+ }
47509
+ }), null), D((e) => {
47510
+ var r = t.severity === "error", i = t.severity === "warn", o = !!n();
47511
+ return r !== e.e && a.classList.toggle("bg-danger", e.e = r), i !== e.t && a.classList.toggle("bg-warn", e.t = i), o !== e.a && c.classList.toggle("rotate-180", e.a = o), e;
47512
+ }, {
47513
+ e: void 0,
47514
+ t: void 0,
47515
+ a: void 0
47516
+ }), r;
47517
+ })();
47518
+ }
47519
+ })), e;
47520
+ })(),
47521
+ (() => {
47522
+ var e = U4();
47523
+ return P(e, j(kj, {
47524
+ class: "size-7 px-0",
47525
+ variant: "primary",
47526
+ get title() {
47527
+ return de() ? "Copied!" : "Copy AI prompt — findings + contract fix rules, ready for a Claude Code session";
47528
+ },
47529
+ "aria-label": "Copy AI fix prompt",
47530
+ onClick: () => void be(),
47531
+ get children() {
47532
+ return j(M, {
47533
+ get when() {
47534
+ return de();
47535
+ },
47536
+ get fallback() {
47537
+ return f3();
47538
+ },
47539
+ get children() {
47540
+ return H4();
47541
+ }
47542
+ });
47543
+ }
47544
+ }), null), P(e, j(kj, {
47545
+ class: "size-7 px-0",
47546
+ variant: "ghost",
47547
+ get title() {
47548
+ return le() ? "Copied!" : "Copy report — findings grouped by rule, markdown";
47549
+ },
47550
+ "aria-label": "Copy slop report",
47551
+ onClick: () => void ye(),
47552
+ get children() {
47553
+ return j(M, {
47554
+ get when() {
47555
+ return le();
47556
+ },
47557
+ get fallback() {
47558
+ return a3();
47559
+ },
47560
+ get children() {
47561
+ return I4();
47562
+ }
47563
+ });
47564
+ }
47565
+ }), null), P(e, j(kj, {
47566
+ class: "text-danger ml-auto size-7 px-0",
47567
+ variant: "ghost",
47568
+ title: "Clear scan results",
47569
+ "aria-label": "Clear scan results",
47570
+ onClick: me,
47571
+ get children() {
47572
+ return L4();
47573
+ }
47574
+ }), null), e;
47575
+ })()
47576
+ ];
47577
+ }
46700
47578
  }), null), t;
46701
47579
  })();
46702
47580
  }
46703
47581
  rt(["click"]);
46704
47582
  //#endregion
46705
47583
  //#region src/lib/projectConfig.ts
46706
- var C4 = [
47584
+ var E3 = [
46707
47585
  "defaultTeamId",
46708
47586
  "defaultProjectId",
46709
47587
  "defaultLabelIds",
@@ -46718,29 +47596,29 @@ var C4 = [
46718
47596
  "issueTemplate",
46719
47597
  "testUsername"
46720
47598
  ];
46721
- function w4(e) {
47599
+ function D3(e) {
46722
47600
  let t = {};
46723
- for (let n of C4) {
47601
+ for (let n of E3) {
46724
47602
  let r = e[n];
46725
47603
  r !== void 0 && r !== "" && !(Array.isArray(r) && r.length === 0) && (t[n] = r);
46726
47604
  }
46727
47605
  return t;
46728
47606
  }
46729
- function T4(e, t) {
47607
+ function O3(e, t) {
46730
47608
  let n = {};
46731
- for (let r of C4) e[r] === void 0 && t[r] !== void 0 && (n[r] = t[r]);
47609
+ for (let r of E3) e[r] === void 0 && t[r] !== void 0 && (n[r] = t[r]);
46732
47610
  return Object.keys(n).length ? n : null;
46733
47611
  }
46734
47612
  //#endregion
46735
47613
  //#region src/lib/linear/auth.ts
46736
47614
  Br();
46737
- function E4(e) {
47615
+ function k3(e) {
46738
47616
  let t = "";
46739
47617
  for (let n of e) t += String.fromCharCode(n);
46740
47618
  return btoa(t).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
46741
47619
  }
46742
- async function D4(e) {
46743
- let t = E4(crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(32))), n = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(t)), r = E4(new Uint8Array(n)), i = E4(crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(16))), a = chrome.identity.getRedirectURL(), o = new URL("https://linear.app/oauth/authorize");
47620
+ async function A3(e) {
47621
+ let t = k3(crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(32))), n = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(t)), r = k3(new Uint8Array(n)), i = k3(crypto.getRandomValues(/* @__PURE__ */ new Uint8Array(16))), a = chrome.identity.getRedirectURL(), o = new URL("https://linear.app/oauth/authorize");
46744
47622
  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");
46745
47623
  let s = await chrome.identity.launchWebAuthFlow({
46746
47624
  url: o.toString(),
@@ -46768,15 +47646,15 @@ async function D4(e) {
46768
47646
  linearOauthClientId: e
46769
47647
  });
46770
47648
  }
46771
- async function O4() {
47649
+ async function j3() {
46772
47650
  await Er({
46773
47651
  linearAccessToken: void 0,
46774
47652
  linearApiKey: void 0
46775
47653
  });
46776
47654
  }
46777
47655
  Br(), Sr(), Fx(), gD();
46778
- var k4 = /*#__PURE__*/ N("<div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\">"), A4 = /*#__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."), j4 = /*#__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"), M4 = /*#__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)."), N4 = /*#__PURE__*/ N("<span class=text-text>Connected as <span class=font-medium></span> · <span class=text-text-dim>"), P4 = /*#__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]\">"), F4 = /*#__PURE__*/ N("<option value>Select a team…"), I4 = /*#__PURE__*/ N("<option value>No project"), L4 = /*#__PURE__*/ N("<div class=\"flex flex-wrap gap-1\">"), R4 = /*#__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."), z4 = /*#__PURE__*/ N("<p class=\"text-text-dim text-[11px]\">No agents found — install the Cursor integration in Linear first."), B4 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">Empty = the default above (computer-use testing, video demo, PR + review babysitting)."), V4 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-1.5\">"), H4 = /*#__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."), U4 = /*#__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."), W4 = /*#__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."), G4 = /*#__PURE__*/ N("<span class=\"inline-block min-w-[10ch] text-center\">"), K4 = /*#__PURE__*/ N("<div class=\"flex items-center gap-2\">"), q4 = /*#__PURE__*/ N("<option value>Select a channel…"), J4 = /*#__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"), Y4 = /*#__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."), X4 = /*#__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"), Z4 = /*#__PURE__*/ N("<p class=\"text-text-dim text-[11px]\">"), Q4 = /*#__PURE__*/ N("<div class=min-h-[2lh]>"), $4 = /*#__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."), e3 = /*#__PURE__*/ N("<div class=\"flex h-full flex-col gap-5 overflow-y-auto pt-3 pb-6 pl-3 pr-4\">"), t3 = /*#__PURE__*/ N("<button>"), n3 = /*#__PURE__*/ N("<div class=\"flex gap-1.5\">"), r3 = /*#__PURE__*/ N("<p class=\"text-text-faint text-center text-[10.5px]\">or"), i3 = /*#__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\">"), a3 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-3\">"), o3 = /*#__PURE__*/ N("<span class=text-text-dim>Connected — verifying…"), s3 = /*#__PURE__*/ N("<option> (<!>)"), c3 = /*#__PURE__*/ N("<option>"), l3 = /*#__PURE__*/ N("<button type=button><span class=\"mr-1 inline-block size-2 rounded-full align-middle\">"), u3 = /*#__PURE__*/ N("<option value>Select the agent…"), d3 = /*#__PURE__*/ N("<option>#"), f3 = /*#__PURE__*/ N("<p class=\"text-text-dim text-[11px]\">No key set — AI drafting disabled, manual drafting still works.");
46779
- function p3() {
47656
+ var M3 = /*#__PURE__*/ N("<div class=\"bg-surface-2 border-border flex rounded-md border p-0.5\">"), N3 = /*#__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."), P3 = /*#__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"), F3 = /*#__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)."), I3 = /*#__PURE__*/ N("<span class=text-text>Connected as <span class=font-medium></span> · <span class=text-text-dim>"), L3 = /*#__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]\">"), R3 = /*#__PURE__*/ N("<option value>Select a team…"), z3 = /*#__PURE__*/ N("<option value>No project"), B3 = /*#__PURE__*/ N("<div class=\"flex flex-wrap gap-1\">"), V3 = /*#__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."), H3 = /*#__PURE__*/ N("<p class=\"text-text-dim text-[11px]\">No agents found — install the Cursor integration in Linear first."), U3 = /*#__PURE__*/ N("<span class=\"text-text-faint text-[10.5px] leading-snug\">Empty = the default above (computer-use testing, video demo, PR + review babysitting)."), W3 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-1.5\">"), G3 = /*#__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."), K3 = /*#__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."), q3 = /*#__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."), J3 = /*#__PURE__*/ N("<span class=\"inline-block min-w-[10ch] text-center\">"), Y3 = /*#__PURE__*/ N("<div class=\"flex items-center gap-2\">"), X3 = /*#__PURE__*/ N("<option value>Select a channel…"), Z3 = /*#__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"), Q3 = /*#__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."), $3 = /*#__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"), e6 = /*#__PURE__*/ N("<p class=\"text-text-dim text-[11px]\">"), t6 = /*#__PURE__*/ N("<div class=min-h-[2lh]>"), n6 = /*#__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."), r6 = /*#__PURE__*/ N("<div class=\"flex h-full flex-col gap-5 overflow-y-auto pt-3 pb-6 pl-3 pr-4\">"), i6 = /*#__PURE__*/ N("<button>"), a6 = /*#__PURE__*/ N("<div class=\"flex gap-1.5\">"), o6 = /*#__PURE__*/ N("<p class=\"text-text-faint text-center text-[10.5px]\">or"), s6 = /*#__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\">"), c6 = /*#__PURE__*/ N("<div class=\"flex flex-col gap-3\">"), l6 = /*#__PURE__*/ N("<span class=text-text-dim>Connected — verifying…"), u6 = /*#__PURE__*/ N("<option> (<!>)"), d6 = /*#__PURE__*/ N("<option>"), f6 = /*#__PURE__*/ N("<button type=button><span class=\"mr-1 inline-block size-2 rounded-full align-middle\">"), p6 = /*#__PURE__*/ N("<option value>Select the agent…"), m6 = /*#__PURE__*/ N("<option>#"), h6 = /*#__PURE__*/ N("<p class=\"text-text-dim text-[11px]\">No key set — AI drafting disabled, manual drafting still works.");
47657
+ function g6() {
46780
47658
  let e = sr(), t = _r(() => ({
46781
47659
  queryKey: ["settings"],
46782
47660
  queryFn: Tr,
@@ -46804,13 +47682,13 @@ function p3() {
46804
47682
  retry: 0
46805
47683
  })), [l, u] = T(!1), d = async () => {
46806
47684
  try {
46807
- await navigator.clipboard.writeText(JSON.stringify(w4(n()), null, 2) + "\n"), u(!0), setTimeout(() => u(!1), 1800);
47685
+ await navigator.clipboard.writeText(JSON.stringify(D3(n()), null, 2) + "\n"), u(!0), setTimeout(() => u(!1), 1800);
46808
47686
  } catch {}
46809
47687
  }, f = () => {
46810
47688
  let e = c.data?.projectConfig;
46811
47689
  if (!e) return;
46812
47690
  let t = {};
46813
- for (let n of C4) e[n] !== void 0 && (t[n] = e[n]);
47691
+ for (let n of E3) e[n] !== void 0 && (t[n] = e[n]);
46814
47692
  r(t);
46815
47693
  }, p = _r(() => ({
46816
47694
  queryKey: ["linear-labels"],
@@ -46843,7 +47721,7 @@ function p3() {
46843
47721
  }
46844
47722
  E(!0), ee("");
46845
47723
  try {
46846
- await D4(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"] });
47724
+ await A3(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"] });
46847
47725
  } catch (e) {
46848
47726
  ee(e instanceof Error ? e.message : "OAuth flow failed.");
46849
47727
  } finally {
@@ -46854,7 +47732,7 @@ function p3() {
46854
47732
  async function re() {
46855
47733
  ne(!0);
46856
47734
  try {
46857
- await O4(), 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"] });
47735
+ await j3(), 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"] });
46858
47736
  } finally {
46859
47737
  ne(!1);
46860
47738
  }
@@ -46870,12 +47748,12 @@ function p3() {
46870
47748
  return e ? `Drafting with ${e} — ${Nx[e].fast} (fast) / ${Nx[e].best} (best)` : null;
46871
47749
  });
46872
47750
  return (() => {
46873
- var e = e3();
47751
+ var e = r6();
46874
47752
  return P(e, j(Rj, {
46875
47753
  title: "Workflow",
46876
47754
  get children() {
46877
47755
  return [(() => {
46878
- var e = k4();
47756
+ var e = M3();
46879
47757
  return P(e, j(We, {
46880
47758
  each: [{
46881
47759
  id: "cloud",
@@ -46885,19 +47763,19 @@ function p3() {
46885
47763
  label: "Local · clipboard"
46886
47764
  }],
46887
47765
  children: (e) => (() => {
46888
- var t = t3();
47766
+ var t = i6();
46889
47767
  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;
46890
47768
  })()
46891
47769
  })), e;
46892
- })(), A4()];
47770
+ })(), N3()];
46893
47771
  }
46894
47772
  }), null), P(e, j(Rj, {
46895
47773
  title: "Capture",
46896
47774
  get children() {
46897
47775
  return [(() => {
46898
- var e = j4(), t = e.firstChild;
47776
+ var e = P3(), t = e.firstChild;
46899
47777
  return t.addEventListener("change", (e) => void r({ captureShots: e.currentTarget.checked || void 0 })), D(() => t.checked = !!n().captureShots), e;
46900
- })(), M4()];
47778
+ })(), F3()];
46901
47779
  }
46902
47780
  }), null), P(e, j(Rj, {
46903
47781
  title: "Linear",
@@ -46908,13 +47786,13 @@ function p3() {
46908
47786
  },
46909
47787
  get fallback() {
46910
47788
  return (() => {
46911
- var e = a3();
47789
+ var e = c6();
46912
47790
  return P(e, j(Lj, {
46913
47791
  label: "Personal API key",
46914
47792
  hint: "Create one at linear.app → Settings → API — fastest path.",
46915
47793
  get children() {
46916
47794
  return [(() => {
46917
- var e = n3();
47795
+ var e = a6();
46918
47796
  return P(e, j(jj, {
46919
47797
  type: "password",
46920
47798
  placeholder: "lin_api_…",
@@ -46951,12 +47829,12 @@ function p3() {
46951
47829
  }), null), P(e, j(M, {
46952
47830
  when: xr,
46953
47831
  get children() {
46954
- return [r3(), j(Lj, {
47832
+ return [o6(), j(Lj, {
46955
47833
  label: "OAuth client ID",
46956
47834
  get children() {
46957
47835
  return [
46958
47836
  (() => {
46959
- var e = n3();
47837
+ var e = a6();
46960
47838
  return P(e, j(jj, {
46961
47839
  placeholder: "your-client-id",
46962
47840
  get value() {
@@ -46984,7 +47862,7 @@ function p3() {
46984
47862
  }
46985
47863
  }),
46986
47864
  (() => {
46987
- var e = i3(), t = e.firstChild.nextSibling.nextSibling;
47865
+ var e = s6(), t = e.firstChild.nextSibling.nextSibling;
46988
47866
  return P(t, ie), e;
46989
47867
  })()
46990
47868
  ];
@@ -46995,13 +47873,13 @@ function p3() {
46995
47873
  })();
46996
47874
  },
46997
47875
  get children() {
46998
- var e = P4(), t = e.firstChild;
47876
+ var e = L3(), t = e.firstChild;
46999
47877
  return P(t, j(M, {
47000
47878
  get when() {
47001
47879
  return !a.isLoading;
47002
47880
  },
47003
47881
  get fallback() {
47004
- return o3();
47882
+ return l6();
47005
47883
  },
47006
47884
  get children() {
47007
47885
  return j(M, {
@@ -47014,7 +47892,7 @@ function p3() {
47014
47892
  return a.isError;
47015
47893
  },
47016
47894
  get fallback() {
47017
- return o3();
47895
+ return l6();
47018
47896
  },
47019
47897
  get children() {
47020
47898
  return j(Hj, { message: "Key rejected — reconnect" });
@@ -47022,7 +47900,7 @@ function p3() {
47022
47900
  });
47023
47901
  },
47024
47902
  get children() {
47025
- var e = N4(), t = e.firstChild.nextSibling, n = t.nextSibling.nextSibling;
47903
+ var e = I3(), t = e.firstChild.nextSibling, n = t.nextSibling.nextSibling;
47026
47904
  return P(t, () => a.data.name), P(n, () => a.data.email), e;
47027
47905
  }
47028
47906
  });
@@ -47063,7 +47941,7 @@ function p3() {
47063
47941
  return o.isLoading;
47064
47942
  },
47065
47943
  get children() {
47066
- return [F4(), j(M, {
47944
+ return [R3(), j(M, {
47067
47945
  get when() {
47068
47946
  return o.data;
47069
47947
  },
@@ -47073,7 +47951,7 @@ function p3() {
47073
47951
  return o.data;
47074
47952
  },
47075
47953
  children: (e) => (() => {
47076
- var t = s3(), r = t.firstChild, i = r.nextSibling;
47954
+ var t = u6(), r = t.firstChild, i = r.nextSibling;
47077
47955
  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;
47078
47956
  })()
47079
47957
  });
@@ -47097,14 +47975,14 @@ function p3() {
47097
47975
  },
47098
47976
  get children() {
47099
47977
  return [(() => {
47100
- var e = I4();
47978
+ var e = z3();
47101
47979
  return D(() => e.selected = !n().defaultProjectId), e;
47102
47980
  })(), j(We, {
47103
47981
  get each() {
47104
47982
  return s.data ?? [];
47105
47983
  },
47106
47984
  children: (e) => (() => {
47107
- var t = c3();
47985
+ var t = d6();
47108
47986
  return P(t, () => e.name), D(() => t.selected = e.id === n().defaultProjectId), D(() => t.value = e.id), t;
47109
47987
  })()
47110
47988
  })];
@@ -47116,7 +47994,7 @@ function p3() {
47116
47994
  label: "Default labels",
47117
47995
  hint: "Applied to every issue created from the panel.",
47118
47996
  get children() {
47119
- var e = L4();
47997
+ var e = B3();
47120
47998
  return P(e, j(We, {
47121
47999
  get each() {
47122
48000
  return p.data ?? [];
@@ -47124,7 +48002,7 @@ function p3() {
47124
48002
  children: (e) => {
47125
48003
  let t = () => (n().defaultLabelIds ?? []).includes(e.id);
47126
48004
  return (() => {
47127
- var i = l3(), a = i.firstChild;
48005
+ var i = f6(), a = i.firstChild;
47128
48006
  return i.$$click = () => {
47129
48007
  let i = n().defaultLabelIds ?? [];
47130
48008
  r({ defaultLabelIds: t() ? i.filter((t) => t !== e.id) : [...i, e.id] });
@@ -47141,7 +48019,7 @@ function p3() {
47141
48019
  }
47142
48020
  }),
47143
48021
  (() => {
47144
- var e = R4(), t = e.firstChild;
48022
+ var e = V3(), t = e.firstChild;
47145
48023
  return t.addEventListener("change", (e) => void r({ shareLinearKey: e.currentTarget.checked })), D(() => t.checked = !!n().shareLinearKey), e;
47146
48024
  })(),
47147
48025
  j(Lj, {
@@ -47191,7 +48069,7 @@ function p3() {
47191
48069
  return m.isLoading;
47192
48070
  },
47193
48071
  get children() {
47194
- return [u3(), j(M, {
48072
+ return [p6(), j(M, {
47195
48073
  get when() {
47196
48074
  return m.data;
47197
48075
  },
@@ -47201,7 +48079,7 @@ function p3() {
47201
48079
  return m.data;
47202
48080
  },
47203
48081
  children: (e) => (() => {
47204
- var t = c3();
48082
+ var t = d6();
47205
48083
  return P(t, () => e.displayName), D(() => t.selected = e.id === n().cursorAgentId), D(() => t.value = e.id), t;
47206
48084
  })()
47207
48085
  });
@@ -47211,7 +48089,7 @@ function p3() {
47211
48089
  });
47212
48090
  },
47213
48091
  get children() {
47214
- return z4();
48092
+ return H3();
47215
48093
  }
47216
48094
  });
47217
48095
  }
@@ -47259,7 +48137,7 @@ function p3() {
47259
48137
  onBlur: (e) => {
47260
48138
  r({ issueTemplate: e.currentTarget.value.trim() || void 0 });
47261
48139
  }
47262
- }), B4()];
48140
+ }), U3()];
47263
48141
  }
47264
48142
  }),
47265
48143
  j(Lj, {
@@ -47316,7 +48194,7 @@ function p3() {
47316
48194
  label: "Test account",
47317
48195
  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.",
47318
48196
  get children() {
47319
- var e = V4();
48197
+ var e = W3();
47320
48198
  return P(e, j(jj, {
47321
48199
  placeholder: "Username or email (e.g. demo@yourapp.com)",
47322
48200
  get value() {
@@ -47348,7 +48226,7 @@ function p3() {
47348
48226
  title: "Panel",
47349
48227
  get children() {
47350
48228
  return [(() => {
47351
- var e = H4(), t = e.firstChild.nextSibling;
48229
+ var e = G3(), t = e.firstChild.nextSibling;
47352
48230
  return P(t, j(We, {
47353
48231
  each: [{
47354
48232
  id: "overlay",
@@ -47358,7 +48236,7 @@ function p3() {
47358
48236
  label: "Beside page"
47359
48237
  }],
47360
48238
  children: (e) => (() => {
47361
- var t = t3();
48239
+ var t = i6();
47362
48240
  return t.$$click = () => void r({
47363
48241
  panelMode: e.id,
47364
48242
  panelPos: void 0
@@ -47366,11 +48244,11 @@ function p3() {
47366
48244
  })()
47367
48245
  })), e;
47368
48246
  })(), (() => {
47369
- var e = U4(), t = e.firstChild.nextSibling;
48247
+ var e = K3(), t = e.firstChild.nextSibling;
47370
48248
  return P(t, j(We, {
47371
48249
  each: ["left", "right"],
47372
48250
  children: (e) => (() => {
47373
- var t = t3();
48251
+ var t = i6();
47374
48252
  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;
47375
48253
  })()
47376
48254
  })), e;
@@ -47400,8 +48278,8 @@ function p3() {
47400
48278
  }), null), P(e, j(Rj, {
47401
48279
  title: "Project config (.lineargrab.json)",
47402
48280
  get children() {
47403
- return [W4(), (() => {
47404
- var e = K4();
48281
+ return [q3(), (() => {
48282
+ var e = Y3();
47405
48283
  return P(e, j(M, {
47406
48284
  get when() {
47407
48285
  return c.data?.projectConfig;
@@ -47432,7 +48310,7 @@ function p3() {
47432
48310
  },
47433
48311
  onClick: () => void d(),
47434
48312
  get children() {
47435
- var e = G4();
48313
+ var e = J3();
47436
48314
  return P(e, () => l() ? "Copied ✓" : "Copy config"), e;
47437
48315
  }
47438
48316
  }), null), e;
@@ -47523,12 +48401,12 @@ function p3() {
47523
48401
  });
47524
48402
  },
47525
48403
  get children() {
47526
- return [q4(), j(We, {
48404
+ return [X3(), j(We, {
47527
48405
  get each() {
47528
48406
  return ae.data ?? [];
47529
48407
  },
47530
48408
  children: (e) => (() => {
47531
- var t = d3();
48409
+ var t = m6();
47532
48410
  return t.firstChild, P(t, () => e.name, null), D(() => t.selected = e.id === n().slackChannelId), D(() => t.value = e.id), t;
47533
48411
  })()
47534
48412
  })];
@@ -47579,10 +48457,10 @@ function p3() {
47579
48457
  }
47580
48458
  }),
47581
48459
  (() => {
47582
- var e = J4(), t = e.firstChild;
48460
+ var e = Z3(), t = e.firstChild;
47583
48461
  return t.addEventListener("change", (e) => void r({ notifyOnCreate: e.currentTarget.checked ? void 0 : !1 })), D(() => t.checked = n().notifyOnCreate !== !1), e;
47584
48462
  })(),
47585
- Y4()
48463
+ Q3()
47586
48464
  ];
47587
48465
  }
47588
48466
  }), null), P(e, j(Rj, {
@@ -47620,7 +48498,7 @@ function p3() {
47620
48498
  }
47621
48499
  }),
47622
48500
  (() => {
47623
- var e = X4(), t = e.firstChild.nextSibling.firstChild, i = t.nextSibling, a = i.nextSibling;
48501
+ var e = $3(), t = e.firstChild.nextSibling.firstChild, i = t.nextSibling, a = i.nextSibling;
47624
48502
  return t.$$click = () => void r({ preferredProvider: void 0 }), i.$$click = () => void r({ preferredProvider: "openai" }), a.$$click = () => void r({ preferredProvider: "anthropic" }), D((e) => {
47625
48503
  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;
47626
48504
  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;
@@ -47633,16 +48511,16 @@ function p3() {
47633
48511
  }), e;
47634
48512
  })(),
47635
48513
  (() => {
47636
- var e = Q4();
48514
+ var e = t6();
47637
48515
  return P(e, j(M, {
47638
48516
  get when() {
47639
48517
  return se();
47640
48518
  },
47641
48519
  get fallback() {
47642
- return f3();
48520
+ return h6();
47643
48521
  },
47644
48522
  get children() {
47645
- var e = Z4();
48523
+ var e = e6();
47646
48524
  return P(e, se), e;
47647
48525
  }
47648
48526
  })), e;
@@ -47652,7 +48530,7 @@ function p3() {
47652
48530
  }), null), P(e, j(Rj, {
47653
48531
  title: "How it works",
47654
48532
  get children() {
47655
- return $4();
48533
+ return n6();
47656
48534
  }
47657
48535
  }), null), e;
47658
48536
  })();
@@ -47660,38 +48538,38 @@ function p3() {
47660
48538
  rt(["click"]);
47661
48539
  //#endregion
47662
48540
  //#region src/lib/idbCache.ts
47663
- var m3 = "linear-grab", h3 = "queries", g3 = [
48541
+ var _6 = "linear-grab", v6 = "queries", y6 = [
47664
48542
  "my-issues",
47665
48543
  "issue",
47666
48544
  "sessions",
47667
48545
  "teams",
47668
48546
  "agents"
47669
48547
  ];
47670
- function _3() {
48548
+ function b6() {
47671
48549
  return new Promise((e) => {
47672
48550
  try {
47673
- let t = indexedDB.open(m3, 1);
47674
- t.onupgradeneeded = () => t.result.createObjectStore(h3), t.onsuccess = () => e(t.result), t.onerror = () => e(null);
48551
+ let t = indexedDB.open(_6, 1);
48552
+ t.onupgradeneeded = () => t.result.createObjectStore(v6), t.onsuccess = () => e(t.result), t.onerror = () => e(null);
47675
48553
  } catch {
47676
48554
  e(null);
47677
48555
  }
47678
48556
  });
47679
48557
  }
47680
- function v3(e) {
47681
- return typeof e[0] == "string" && g3.includes(e[0]);
48558
+ function x6(e) {
48559
+ return typeof e[0] == "string" && y6.includes(e[0]);
47682
48560
  }
47683
- async function y3(e) {
47684
- let t = await _3();
48561
+ async function S6(e) {
48562
+ let t = await b6();
47685
48563
  if (!t) return () => {};
47686
48564
  await new Promise((n) => {
47687
48565
  try {
47688
- let r = t.transaction(h3, "readonly").objectStore(h3).openCursor();
48566
+ let r = t.transaction(v6, "readonly").objectStore(v6).openCursor();
47689
48567
  r.onsuccess = () => {
47690
48568
  let t = r.result;
47691
48569
  if (!t) return n();
47692
48570
  try {
47693
48571
  let { queryKey: n, data: r } = t.value;
47694
- v3(n) && e.getQueryData(n) === void 0 && e.setQueryData(n, r, { updatedAt: 0 });
48572
+ x6(n) && e.getQueryData(n) === void 0 && e.setQueryData(n, r, { updatedAt: 0 });
47695
48573
  } catch {}
47696
48574
  t.continue();
47697
48575
  }, r.onerror = () => n();
@@ -47702,14 +48580,14 @@ async function y3(e) {
47702
48580
  let n = /* @__PURE__ */ new Map(), r = e.getQueryCache().subscribe((r) => {
47703
48581
  if (r.type !== "updated" || r.action.type !== "success") return;
47704
48582
  let { queryKey: i, queryHash: a } = r.query;
47705
- if (!v3(i)) return;
48583
+ if (!x6(i)) return;
47706
48584
  let o = n.get(a);
47707
48585
  o && clearTimeout(o), n.set(a, setTimeout(() => {
47708
48586
  n.delete(a);
47709
48587
  try {
47710
48588
  let n = e.getQueryData(i);
47711
48589
  if (n === void 0) return;
47712
- t.transaction(h3, "readwrite").objectStore(h3).put({
48590
+ t.transaction(v6, "readwrite").objectStore(v6).put({
47713
48591
  queryKey: i,
47714
48592
  data: n
47715
48593
  }, a);
@@ -47725,7 +48603,7 @@ async function y3(e) {
47725
48603
  //#endregion
47726
48604
  //#region src/panel/App.tsx
47727
48605
  Br();
47728
- var b3 = /*#__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\">"), x3 = /*#__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\">"), S3 = /*#__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\">–"), C3 = /*#__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>"), w3 = /*#__PURE__*/ N("<button>"), T3 = [
48606
+ var C6 = /*#__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\">"), w6 = /*#__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\">"), T6 = /*#__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\">–"), E6 = /*#__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>"), D6 = /*#__PURE__*/ N("<button>"), O6 = [
47729
48607
  {
47730
48608
  id: "draft",
47731
48609
  label: "Draft"
@@ -47762,35 +48640,35 @@ var b3 = /*#__PURE__*/ N("<svg viewBox=\"0 0 100 100\"fill=currentColor aria-hid
47762
48640
  id: "settings",
47763
48641
  label: "Settings"
47764
48642
  }
47765
- ], E3 = /* @__PURE__ */ new Set();
47766
- function D3(e, t, n) {
47767
- if (E3.has(e) || typeof Notification > "u") return;
47768
- E3.add(e);
48643
+ ], k6 = /* @__PURE__ */ new Set();
48644
+ function A6(e, t, n) {
48645
+ if (k6.has(e) || typeof Notification > "u") return;
48646
+ k6.add(e);
47769
48647
  let r = () => new Notification(t, { body: n });
47770
48648
  Notification.permission === "granted" ? r() : Notification.permission === "default" && Notification.requestPermission().then((e) => e === "granted" && r());
47771
48649
  }
47772
- function O3() {
48650
+ function j6() {
47773
48651
  setInterval(() => {
47774
48652
  NO().then((e) => {
47775
48653
  for (let t of e) {
47776
48654
  if (t.status !== "running") continue;
47777
48655
  let e = t.lastEventAt ?? t.startedAt;
47778
- Date.now() - e > 10 * 6e4 && D3(`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.`);
48656
+ Date.now() - e > 10 * 6e4 && A6(`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.`);
47779
48657
  }
47780
48658
  }).catch(() => {}), gO().then((e) => {
47781
- for (let t of e) /awaitingInput|elicit/i.test(t.status) && D3(`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.`);
48659
+ for (let t of e) /awaitingInput|elicit/i.test(t.status) && A6(`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.`);
47782
48660
  }).catch(() => {});
47783
48661
  }, 6e4);
47784
48662
  }
47785
- O3();
47786
- var k3 = new gr({ defaultOptions: { queries: {
48663
+ j6();
48664
+ var M6 = new gr({ defaultOptions: { queries: {
47787
48665
  retry: 1,
47788
48666
  refetchOnWindowFocus: !1,
47789
48667
  staleTime: 5e3
47790
48668
  } } });
47791
- function A3(e) {
48669
+ function N6(e) {
47792
48670
  return (() => {
47793
- var t = b3();
48671
+ var t = C6();
47794
48672
  return D((n) => {
47795
48673
  var r = e.size ?? 14, i = e.size ?? 14;
47796
48674
  return r !== n.e && it(t, "width", n.e = r), i !== n.t && it(t, "height", n.t = i), n;
@@ -47800,36 +48678,36 @@ function A3(e) {
47800
48678
  }), t;
47801
48679
  })();
47802
48680
  }
47803
- function j3(e) {
48681
+ function P6(e) {
47804
48682
  let [t, n] = T("draft"), r = () => {
47805
- k3.invalidateQueries({ queryKey: ["grab"] }), cj() === "capture" && n("capture"), e.onGrab?.();
48683
+ M6.invalidateQueries({ queryKey: ["grab"] }), cj() === "capture" && n("capture"), e.onGrab?.();
47806
48684
  };
47807
48685
  return O(() => {
47808
48686
  let e = nj();
47809
48687
  e && n(e);
47810
48688
  }), ie(() => {
47811
- let e = y3(k3), t = XZ(r), n = () => {
48689
+ let e = S6(M6), t = XZ(r), n = () => {
47812
48690
  JO().then(y$), VO(), MO().then(async (e) => {
47813
48691
  if (!e.projectConfig) return;
47814
- let t = T4(await Tr(), e.projectConfig);
48692
+ let t = O3(await Tr(), e.projectConfig);
47815
48693
  t && await Er(t);
47816
48694
  }).catch(() => {});
47817
48695
  };
47818
48696
  n();
47819
48697
  let i = Mr((e) => {
47820
- e === "settings" && (k3.invalidateQueries({ queryKey: ["settings"] }), n()), e === "grab" && r();
48698
+ e === "settings" && (M6.invalidateQueries({ queryKey: ["settings"] }), n()), e === "grab" && r();
47821
48699
  });
47822
48700
  ae(() => {
47823
48701
  t(), i(), e.then((e) => e());
47824
48702
  });
47825
48703
  }), j(cr, {
47826
- client: k3,
48704
+ client: M6,
47827
48705
  get children() {
47828
- var r = C3(), 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;
47829
- return i.$$pointerdown = (t) => e.onHeaderPointerDown?.(t), P(a, j(A3, { size: 14 })), P(o, j(We, {
47830
- each: T3,
48706
+ var r = E6(), 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;
48707
+ return i.$$pointerdown = (t) => e.onHeaderPointerDown?.(t), P(a, j(N6, { size: 14 })), P(o, j(We, {
48708
+ each: O6,
47831
48709
  children: (e) => (() => {
47832
- var r = w3();
48710
+ var r = D6();
47833
48711
  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;
47834
48712
  })()
47835
48713
  })), P(i, j(M, {
@@ -47837,7 +48715,7 @@ function j3(e) {
47837
48715
  return e.onTogglePin;
47838
48716
  },
47839
48717
  get children() {
47840
- var t = x3();
48718
+ var t = w6();
47841
48719
  return t.$$click = () => e.onTogglePin?.(), D((n) => {
47842
48720
  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"}`;
47843
48721
  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;
@@ -47852,10 +48730,10 @@ function j3(e) {
47852
48730
  return e.onClose;
47853
48731
  },
47854
48732
  get children() {
47855
- var t = S3();
48733
+ var t = T6();
47856
48734
  return t.$$click = () => e.onClose?.(), t;
47857
48735
  }
47858
- }), 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(S4, {})), P(h, j(p3, {})), D((n) => {
48736
+ }), 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(T3, {})), P(h, j(g6, {})), D((n) => {
47859
48737
  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", g = t() !== "activity", _ = t() !== "running", v = t() !== "cloud", y = t() !== "local", b = t() !== "prs", x = t() !== "design", S = t() !== "settings";
47860
48738
  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), g !== n.o && l.classList.toggle("hidden", n.o = g), _ !== n.i && u.classList.toggle("hidden", n.i = _), v !== n.n && d.classList.toggle("hidden", n.n = v), y !== n.s && f.classList.toggle("hidden", n.s = y), b !== n.h && p.classList.toggle("hidden", n.h = b), x !== n.r && m.classList.toggle("hidden", n.r = x), S !== n.d && h.classList.toggle("hidden", n.d = S), n;
47861
48739
  }, {
@@ -47876,16 +48754,16 @@ function j3(e) {
47876
48754
  rt(["pointerdown", "click"]);
47877
48755
  //#endregion
47878
48756
  //#region src/styles/app.css?inline
47879
- var M3 = "/*! 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);--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}.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-\\[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-\\[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-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-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)}.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-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}}";
48757
+ var F6 = "/*! 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}.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-\\[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}}";
47880
48758
  //#endregion
47881
48759
  //#region src/page/index.tsx
47882
48760
  Br();
47883
- var N3 = /*#__PURE__*/ N("<span aria-hidden class=\"bg-danger size-2 shrink-0 animate-pulse rounded-full\">"), P3 = /*#__PURE__*/ N("<span class=\"text-text min-w-[5ch] text-[11px] font-medium tabular-nums\">"), F3 = /*#__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"), I3 = /*#__PURE__*/ N("<p class=\"text-warn px-1.5 pt-1 pb-1.5 text-[10.5px] font-semibold tracking-wide uppercase\">Needs review"), L3 = /*#__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"), R3 = /*#__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\">"), z3 = /*#__PURE__*/ N("<div><div title=\"Drag to resize\">"), B3 = /*#__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\">"), V3 = /*#__PURE__*/ N("<span class=\"bg-border h-4 w-px\"aria-hidden>"), H3 = /*#__PURE__*/ N("<span aria-hidden class=\"bg-warn size-2 rounded-full\">"), U3 = /*#__PURE__*/ N("<span class=\"text-warn min-w-[3.5ch] text-left text-[11px] font-medium tabular-nums\"> rev"), W3 = /*#__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>"), G3 = /*#__PURE__*/ N("<span aria-hidden class=\"bg-accent size-2 shrink-0 animate-pulse rounded-full\">"), K3 = /*#__PURE__*/ N("<span class=\"text-text min-w-[3ch] text-[11px] font-medium tabular-nums\">s"), q3 = /*#__PURE__*/ N("<span class=\"text-text-dim min-w-[7ch] text-[11px] tabular-nums\"> states"), J3 = /*#__PURE__*/ N("<p class=\"text-text-faint px-1.5 pb-1.5 text-[11.5px]\">No agents running right now."), Y3 = /*#__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\"> · <!> · ");
47884
- function X3(e = {}) {
48761
+ var I6 = /*#__PURE__*/ N("<span aria-hidden class=\"bg-danger size-2 shrink-0 animate-pulse rounded-full\">"), L6 = /*#__PURE__*/ N("<span class=\"text-text min-w-[5ch] text-[11px] font-medium tabular-nums\">"), R6 = /*#__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"), z6 = /*#__PURE__*/ N("<p class=\"text-warn px-1.5 pt-1 pb-1.5 text-[10.5px] font-semibold tracking-wide uppercase\">Needs review"), B6 = /*#__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"), V6 = /*#__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\">"), H6 = /*#__PURE__*/ N("<div><div title=\"Drag to resize\">"), U6 = /*#__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\">"), W6 = /*#__PURE__*/ N("<span class=\"bg-border h-4 w-px\"aria-hidden>"), G6 = /*#__PURE__*/ N("<span aria-hidden class=\"bg-warn size-2 rounded-full\">"), K6 = /*#__PURE__*/ N("<span class=\"text-warn min-w-[3.5ch] text-left text-[11px] font-medium tabular-nums\"> rev"), q6 = /*#__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>"), J6 = /*#__PURE__*/ N("<span aria-hidden class=\"bg-accent size-2 shrink-0 animate-pulse rounded-full\">"), Y6 = /*#__PURE__*/ N("<span class=\"text-text min-w-[3ch] text-[11px] font-medium tabular-nums\">s"), X6 = /*#__PURE__*/ N("<span class=\"text-text-dim min-w-[7ch] text-[11px] tabular-nums\"> states"), Z6 = /*#__PURE__*/ N("<p class=\"text-text-faint px-1.5 pb-1.5 text-[11.5px]\">No agents running right now."), Q6 = /*#__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\"> · <!> · ");
48762
+ function $6(e = {}) {
47885
48763
  if (typeof window > "u" || window.__LINEAR_GRAB_PAGE__) return;
47886
48764
  window.__LINEAR_GRAB_PAGE__ = !0;
47887
48765
  let t = () => {
47888
- lk(), F2(), JZ();
48766
+ lk(), z2(), JZ();
47889
48767
  let t = document.createElement("div");
47890
48768
  t.id = "linear-grab-root", document.body.appendChild(t);
47891
48769
  let n = (e) => {
@@ -47913,17 +48791,17 @@ function X3(e = {}) {
47913
48791
  "keypress"
47914
48792
  ]) window.addEventListener(e, n, { capture: !0 });
47915
48793
  let r = t.attachShadow({ mode: "open" }), i = document.createElement("style");
47916
- i.textContent = M3, r.appendChild(i);
48794
+ i.textContent = F6, r.appendChild(i);
47917
48795
  let a = document.createElement("div");
47918
48796
  r.appendChild(a);
47919
- let o = () => a.setAttribute("data-theme", Z3());
47920
- o(), matchMedia("(prefers-color-scheme: light)").addEventListener("change", o), nt(() => j(r6, { get defaultOpen() {
48797
+ let o = () => a.setAttribute("data-theme", e8());
48798
+ o(), matchMedia("(prefers-color-scheme: light)").addEventListener("change", o), nt(() => j(o8, { get defaultOpen() {
47921
48799
  return e.defaultOpen ?? !1;
47922
48800
  } }), a);
47923
48801
  };
47924
48802
  document.body ? t() : document.addEventListener("DOMContentLoaded", t, { once: !0 });
47925
48803
  }
47926
- function Z3() {
48804
+ function e8() {
47927
48805
  try {
47928
48806
  let e = [document.body, document.documentElement];
47929
48807
  for (let t of e) {
@@ -47933,11 +48811,11 @@ function Z3() {
47933
48811
  } catch {}
47934
48812
  return matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark";
47935
48813
  }
47936
- var Q3 = 130, $3 = 36, e6 = 380, t6 = 280, n6 = 720;
47937
- function r6(e) {
48814
+ var t8 = 130, n8 = 36, r8 = 380, i8 = 280, a8 = 720;
48815
+ function o8(e) {
47938
48816
  let [t, n] = T(e.defaultOpen), [r, i] = T("right"), [a, o] = T({
47939
- x: Math.max(8, window.innerWidth - Q3 - 24),
47940
- y: Math.max(8, window.innerHeight - $3 - 20)
48817
+ x: Math.max(8, window.innerWidth - t8 - 24),
48818
+ y: Math.max(8, window.innerHeight - n8 - 20)
47941
48819
  }), [s, c] = T({
47942
48820
  running: [],
47943
48821
  review: []
@@ -47957,12 +48835,12 @@ function r6(e) {
47957
48835
  let t = Math.floor(e / 1e3);
47958
48836
  return `${Math.floor(t / 60)}:${String(t % 60).padStart(2, "0")}`;
47959
48837
  }, [b, x] = T(null), S = (e) => ({
47960
- x: Math.min(Math.max(8, e.x), window.innerWidth - Q3 - 8),
47961
- y: Math.min(Math.max(8, e.y), window.innerHeight - $3 - 8)
48838
+ x: Math.min(Math.max(8, e.x), window.innerWidth - t8 - 8),
48839
+ y: Math.min(Math.max(8, e.y), window.innerHeight - n8 - 8)
47962
48840
  }), C = (e) => ({
47963
48841
  x: Math.min(Math.max(8 - (ne() - 80), e.x), window.innerWidth - 80),
47964
48842
  y: Math.min(Math.max(0, e.y), window.innerHeight - 80)
47965
- }), [w, E] = T(!1), [k, ee] = T("cloud"), [te, A] = T(!1), [ne, re] = T(e6), oe = (e) => Math.min(n6, Math.max(t6, Math.min(e, window.innerWidth - 60)));
48843
+ }), [w, E] = T(!1), [k, ee] = T("cloud"), [te, A] = T(!1), [ne, re] = T(r8), oe = (e) => Math.min(a8, Math.max(i8, Math.min(e, window.innerWidth - 60)));
47966
48844
  O(() => {
47967
48845
  let e = document.documentElement, n = t() && w();
47968
48846
  e.style.transition = "margin 0.2s ease", e.style.marginRight = n && r() === "right" ? `${ne()}px` : "", e.style.marginLeft = n && r() === "left" ? `${ne()}px` : "";
@@ -48076,7 +48954,7 @@ function r6(e) {
48076
48954
  return !t();
48077
48955
  },
48078
48956
  get children() {
48079
- var e = R3(), t = e.firstChild;
48957
+ var e = V6(), t = e.firstChild;
48080
48958
  return t.$$click = () => {
48081
48959
  ce || p() === "recording" || h().active || (f(!1), n(!0));
48082
48960
  }, t.$$pointerdown = le, P(t, j(M, {
@@ -48086,14 +48964,14 @@ function r6(e) {
48086
48964
  get fallback() {
48087
48965
  return [
48088
48966
  (() => {
48089
- var e = B3();
48967
+ var e = U6();
48090
48968
  return e.$$click = () => {
48091
48969
  ce || (f(!1), n(!0));
48092
- }, P(e, j(A3, { size: 13 })), e;
48970
+ }, P(e, j(N6, { size: 13 })), e;
48093
48971
  })(),
48094
- V3(),
48972
+ W6(),
48095
48973
  (() => {
48096
- var e = W3(), t = e.firstChild, n = t.nextSibling;
48974
+ var e = q6(), t = e.firstChild, n = t.nextSibling;
48097
48975
  return e.$$click = (e) => {
48098
48976
  e.stopPropagation(), !ce && f((e) => !e);
48099
48977
  }, P(n, (() => {
@@ -48104,8 +48982,8 @@ function r6(e) {
48104
48982
  return $e(() => !te())() && u().length > 0;
48105
48983
  },
48106
48984
  get children() {
48107
- return [H3(), (() => {
48108
- var e = U3(), t = e.firstChild;
48985
+ return [G6(), (() => {
48986
+ var e = K6(), t = e.firstChild;
48109
48987
  return P(e, () => u().length, t), e;
48110
48988
  })()];
48111
48989
  }
@@ -48126,17 +49004,17 @@ function r6(e) {
48126
49004
  },
48127
49005
  get fallback() {
48128
49006
  return [
48129
- G3(),
49007
+ J6(),
48130
49008
  (() => {
48131
- var e = K3(), t = e.firstChild;
49009
+ var e = Y6(), t = e.firstChild;
48132
49010
  return P(e, () => Math.ceil(h().msLeft / 1e3), t), e;
48133
49011
  })(),
48134
49012
  (() => {
48135
- var e = q3(), t = e.firstChild;
49013
+ var e = X6(), t = e.firstChild;
48136
49014
  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;
48137
49015
  })(),
48138
49016
  (() => {
48139
- var e = F3();
49017
+ var e = R6();
48140
49018
  return e.$$click = (e) => {
48141
49019
  e.stopPropagation(), !ce && o2();
48142
49020
  }, e;
@@ -48145,13 +49023,13 @@ function r6(e) {
48145
49023
  },
48146
49024
  get children() {
48147
49025
  return [
48148
- N3(),
49026
+ I6(),
48149
49027
  (() => {
48150
- var e = P3();
49028
+ var e = L6();
48151
49029
  return P(e, () => y(_())), e;
48152
49030
  })(),
48153
49031
  (() => {
48154
- var e = F3();
49032
+ var e = R6();
48155
49033
  return e.$$click = () => {
48156
49034
  ce || eO();
48157
49035
  }, e;
@@ -48165,17 +49043,17 @@ function r6(e) {
48165
49043
  return d();
48166
49044
  },
48167
49045
  get children() {
48168
- var e = L3(), t = e.firstChild;
49046
+ var e = B6(), t = e.firstChild;
48169
49047
  return P(e, j(M, {
48170
49048
  get when() {
48171
49049
  return u().length > 0;
48172
49050
  },
48173
49051
  get children() {
48174
- return [I3(), j(We, {
49052
+ return [z6(), j(We, {
48175
49053
  get each() {
48176
49054
  return u();
48177
49055
  },
48178
- children: (e) => j(i6, {
49056
+ children: (e) => j(s8, {
48179
49057
  agent: e,
48180
49058
  review: !0,
48181
49059
  onOpen: de
@@ -48187,14 +49065,14 @@ function r6(e) {
48187
49065
  return l().length > 0;
48188
49066
  },
48189
49067
  get fallback() {
48190
- return J3();
49068
+ return Z6();
48191
49069
  },
48192
49070
  get children() {
48193
49071
  return j(We, {
48194
49072
  get each() {
48195
49073
  return l();
48196
49074
  },
48197
- children: (e) => j(i6, {
49075
+ children: (e) => j(s8, {
48198
49076
  agent: e,
48199
49077
  onOpen: de
48200
49078
  })
@@ -48215,8 +49093,8 @@ function r6(e) {
48215
49093
  return t();
48216
49094
  },
48217
49095
  get children() {
48218
- var e = z3(), t = e.firstChild;
48219
- return t.$$pointerdown = fe, P(e, j(j3, {
49096
+ var e = H6(), t = e.firstChild;
49097
+ return t.$$pointerdown = fe, P(e, j(P6, {
48220
49098
  onGrab: () => n(!0),
48221
49099
  onClose: () => n(!1),
48222
49100
  get onHeaderPointerDown() {
@@ -48244,19 +49122,19 @@ function r6(e) {
48244
49122
  }
48245
49123
  })];
48246
49124
  }
48247
- function i6(e) {
49125
+ function s8(e) {
48248
49126
  return (() => {
48249
- var t = Y3(), n = t.firstChild, r = n.firstChild, i = r.nextSibling, a = i.nextSibling, o = n.nextSibling, s = o.firstChild, c = s.nextSibling;
49127
+ var t = Q6(), n = t.firstChild, r = n.firstChild, i = r.nextSibling, a = i.nextSibling, o = n.nextSibling, s = o.firstChild, c = s.nextSibling;
48250
49128
  return c.nextSibling, t.$$click = () => e.onOpen(e.agent.id), P(i, () => e.agent.identifier), P(a, () => e.agent.title), P(o, (() => {
48251
49129
  var t = $e(() => !!e.review);
48252
49130
  return () => t() ? "PR ready · needs review" : e.agent.stateName;
48253
- })(), s), P(o, () => e.agent.delegateName, c), P(o, () => a6(e.agent.updatedAt), null), D((t) => dt(r, "background", e.review ? "var(--color-warn)" : e.agent.stateColor)), t;
49131
+ })(), s), P(o, () => e.agent.delegateName, c), P(o, () => c8(e.agent.updatedAt), null), D((t) => dt(r, "background", e.review ? "var(--color-warn)" : e.agent.stateColor)), t;
48254
49132
  })();
48255
49133
  }
48256
- function a6(e) {
49134
+ function c8(e) {
48257
49135
  let t = Math.max(0, Math.floor((Date.now() - Date.parse(e)) / 1e3));
48258
49136
  return t < 60 ? "now" : t < 3600 ? `${Math.floor(t / 60)}m` : t < 86400 ? `${Math.floor(t / 3600)}h` : `${Math.floor(t / 86400)}d`;
48259
49137
  }
48260
49138
  rt(["pointerdown", "click"]);
48261
49139
  //#endregion
48262
- export { X3 as init };
49140
+ export { $6 as init };