linear-grab 0.23.5 → 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,41 +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
- w2 = [e, ...w2].slice(0, 100);
46037
- for (let e of T2) e(w2);
46038
- 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);
46039
46077
  }
46040
- function D2(e) {
46041
- 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);
46042
46080
  }
46043
- function O2() {
46044
- w2 = [];
46045
- for (let e of T2) e(w2);
46081
+ function M2() {
46082
+ O2 = [];
46083
+ for (let e of k2) e(O2);
46046
46084
  }
46047
- var k2 = !0;
46085
+ var N2 = !0;
46048
46086
  try {
46049
- k2 = localStorage.getItem("linear-grab:css-watch") !== "0";
46087
+ N2 = localStorage.getItem("linear-grab:css-watch") !== "0";
46050
46088
  } catch {}
46051
- var A2 = /* @__PURE__ */ new Set();
46052
- function j2() {
46053
- return k2;
46089
+ var P2 = /* @__PURE__ */ new Set();
46090
+ function F2() {
46091
+ return N2;
46054
46092
  }
46055
- function M2(e) {
46056
- k2 = e;
46093
+ function I2(e) {
46094
+ N2 = e;
46057
46095
  try {
46058
46096
  localStorage.setItem("linear-grab:css-watch", e ? "1" : "0");
46059
46097
  } catch {}
46060
- for (let t of A2) t(e);
46098
+ for (let t of P2) t(e);
46061
46099
  }
46062
- function N2(e) {
46063
- 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);
46064
46102
  }
46065
- var P2 = !1;
46066
- function F2() {
46067
- if (P2 || typeof window > "u") return;
46068
- P2 = !0;
46103
+ var R2 = !1;
46104
+ function z2() {
46105
+ if (R2 || typeof window > "u") return;
46106
+ R2 = !0;
46069
46107
  let e = 0, t = () => {
46070
46108
  e = performance.now();
46071
46109
  };
@@ -46079,13 +46117,15 @@ function F2() {
46079
46117
  });
46080
46118
  let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
46081
46119
  window.addEventListener("transitionrun", (t) => {
46082
- if (!k2) return;
46120
+ if (!N2) return;
46083
46121
  let i = performance.now() - e;
46084
- if (i > d2) return;
46122
+ if (i > b2) return;
46085
46123
  let a = t.target;
46086
46124
  if (!(a instanceof Element) || a.closest("#linear-grab-root") || a === document.documentElement || a === document.body || t.propertyName.startsWith("--")) return;
46087
- 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;
46088
- 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;
46089
46129
  let p = r.get(a);
46090
46130
  if (p) {
46091
46131
  p.props.add(t.propertyName), p.duration = Math.max(p.duration, d), p.delay = Math.max(p.delay, f);
@@ -46098,12 +46138,12 @@ function F2() {
46098
46138
  since: i,
46099
46139
  timer: setTimeout(() => {
46100
46140
  r.delete(a);
46101
- let e = p2(a), t = Date.now();
46141
+ let e = y2(a), t = Date.now();
46102
46142
  if (t - (n.get(e) ?? 0) < 5e3) return;
46103
46143
  n.set(e, t);
46104
- let i = m2(a), o = [...m.props], s = a.isConnected ? _2(getComputedStyle(a).transitionTimingFunction) : null, c = g2(o);
46105
- b2(a).then(({ component: n, source: r }) => {
46106
- 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({
46107
46147
  mode: "live",
46108
46148
  page: location.pathname,
46109
46149
  element: e,
@@ -46117,7 +46157,7 @@ function F2() {
46117
46157
  classHint: i,
46118
46158
  easing: s ?? void 0,
46119
46159
  jankProps: c.length ? c : void 0,
46120
- suggestion: v2(o, m.duration, m.delay, i, s, c),
46160
+ suggestion: S2(o, m.duration, m.delay, i, s, c),
46121
46161
  at: t
46122
46162
  });
46123
46163
  });
@@ -46129,54 +46169,56 @@ function F2() {
46129
46169
  passive: !0
46130
46170
  });
46131
46171
  }
46132
- var I2 = "button, a, input, select, textarea, [role], [tabindex], [data-state], [aria-expanded]";
46133
- async function L2() {
46134
- 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);
46135
46175
  for (let n of t) {
46136
46176
  if (n.closest("#linear-grab-root")) continue;
46137
46177
  let t = n.getBoundingClientRect();
46138
46178
  if (t.width < 2 && t.height < 2) continue;
46139
46179
  let r = getComputedStyle(n);
46140
46180
  if (r.cursor !== "pointer" && !n.matches("button, a, input, select, textarea")) continue;
46141
- let i = f2(r.transitionDuration), a = f2(r.transitionDelay), o = Math.max(...i, 0) + Math.max(...a, 0);
46142
- if (o < 50) continue;
46143
- 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);
46144
46186
  if (u) {
46145
46187
  u.finding.count += 1;
46146
46188
  continue;
46147
46189
  }
46148
- let d = _2(r.transitionTimingFunction), f = g2(s);
46190
+ let d = m2(r.transitionTimingFunction), f = p2(i);
46149
46191
  e.set(l, {
46150
46192
  example: n,
46151
46193
  finding: {
46152
46194
  mode: "audit",
46153
46195
  page: location.pathname,
46154
- element: p2(n),
46196
+ element: y2(n),
46155
46197
  component: null,
46156
46198
  source: null,
46157
- properties: s,
46158
- durationMs: Math.round(Math.max(...i, 0)),
46159
- 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)),
46160
46202
  count: 1,
46161
46203
  classHint: c,
46162
46204
  easing: d ?? void 0,
46163
46205
  jankProps: f.length ? f : void 0,
46164
- 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),
46165
46207
  at: Date.now()
46166
46208
  }
46167
46209
  });
46168
46210
  }
46169
46211
  let n = [];
46170
46212
  for (let { finding: t, example: r } of e.values()) {
46171
- let { component: e, source: i } = await b2(r);
46213
+ let { component: e, source: i } = await w2(r);
46172
46214
  t.component = e, t.source = i, n.push(t);
46173
46215
  }
46174
- 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);
46175
- for (let e of T2) e(w2);
46176
- 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);
46177
46219
  return n;
46178
46220
  }
46179
- function R2(e) {
46221
+ function H2(e) {
46180
46222
  return [
46181
46223
  "Below is a CSS-slowdown report from my running app (live-captured on real input + full-page audit).",
46182
46224
  "Goal: ALL interaction feedback must be instant. Rules:",
@@ -46193,8 +46235,14 @@ function R2(e) {
46193
46235
  "3b. Findings marked ⚠ layout/paint: NEVER transition width/height/top/left/",
46194
46236
  " margin/padding/box-shadow — they reflow or repaint every frame. Use",
46195
46237
  " transform: translate/scale, and animate a pseudo-element's opacity for shadows.",
46196
- "3c. Findings marked ⚠ easing: never ease-in on UI replace with ease-out",
46197
- " (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.",
46198
46246
  "4. Where a finding's source looks like a generic fallback (one file:line repeated",
46199
46247
  " for many components), locate the code by the `classes:` line instead.",
46200
46248
  "5. Do NOT touch entry/exit animations of popovers/menus or icon micro-motion",
@@ -46205,36 +46253,702 @@ function R2(e) {
46205
46253
  "",
46206
46254
  "---",
46207
46255
  "",
46208
- z2(e)
46256
+ U2(e)
46209
46257
  ].join("\n");
46210
46258
  }
46211
- function z2(e) {
46259
+ function U2(e) {
46212
46260
  let t = [
46213
46261
  `# CSS slowdowns on ${location.host}${location.pathname}`,
46214
- "Threshold: 50ms (interaction feedback should be instant).",
46262
+ "Threshold: 100ms (interaction feedback should be instant).",
46215
46263
  ""
46216
46264
  ];
46217
- 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}`, "");
46218
46266
  return t.join("\n");
46219
46267
  }
46220
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
46221
46908
  //#region src/panel/views/DesignView.tsx
46222
- 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;
46223
- 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() {
46224
46911
  try {
46225
- return JSON.parse(localStorage.getItem(_4) ?? "[]");
46912
+ return JSON.parse(localStorage.getItem(_3) ?? "[]");
46226
46913
  } catch {
46227
46914
  return [];
46228
46915
  }
46229
46916
  }
46230
- function b4(e) {
46917
+ function b3(e) {
46231
46918
  try {
46232
- localStorage.setItem(_4, JSON.stringify(e.slice(0, v4)));
46919
+ localStorage.setItem(_3, JSON.stringify(e.slice(0, v3)));
46233
46920
  } catch {}
46234
46921
  }
46235
- var x4 = /* @__PURE__ */ new Map();
46236
- function S4() {
46237
- 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({
46238
46952
  active: !1,
46239
46953
  msLeft: 0,
46240
46954
  total: 0,
@@ -46242,37 +46956,68 @@ function S4() {
46242
46956
  });
46243
46957
  ae(i2(p));
46244
46958
  let [m, h] = T([]);
46245
- ae(D2(h));
46246
- let [g, _] = T(j2());
46247
- ae(N2(_));
46959
+ ae(j2(h));
46960
+ let [g, _] = T(F2());
46961
+ ae(L2(_));
46248
46962
  let [v, y] = T(!1), [b, x] = T(!1), S = async () => {
46249
46963
  y(!0);
46250
46964
  try {
46251
- await L2();
46965
+ await V2();
46252
46966
  } finally {
46253
46967
  y(!1);
46254
46968
  }
46255
46969
  }, C = async () => {
46256
46970
  try {
46257
- 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);
46258
46972
  } catch {
46259
46973
  l("Clipboard was blocked — click Copy again.");
46260
46974
  }
46261
46975
  }, [w, E] = T(!1), O = async () => {
46262
46976
  try {
46263
- 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);
46264
46978
  } catch {
46265
46979
  l("Clipboard was blocked — click Copy again.");
46266
46980
  }
46267
- }, k = (e) => {
46268
- t(e), b4(e);
46269
- }, 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 () => {
46270
47015
  l(null), a("extract"), window.dispatchEvent(new CustomEvent(BZ));
46271
47016
  try {
46272
47017
  let t = await u2();
46273
47018
  if (!t) return;
46274
47019
  let n = await e2(t), i = Date.now();
46275
- x4.set(i, new WeakRef(t)), k([{
47020
+ x3.set(i, new WeakRef(t)), xe([{
46276
47021
  id: i,
46277
47022
  genome: n
46278
47023
  }, ...e()]), r(i);
@@ -46281,16 +47026,16 @@ function S4() {
46281
47026
  } finally {
46282
47027
  a(null), oj("design"), window.dispatchEvent(new CustomEvent(VZ));
46283
47028
  }
46284
- }, te = async (t) => {
47029
+ }, Ce = async (t) => {
46285
47030
  l(null), a(t.id), window.dispatchEvent(new CustomEvent(BZ));
46286
47031
  try {
46287
- let n = x4.get(t.id)?.deref() ?? null;
47032
+ let n = x3.get(t.id)?.deref() ?? null;
46288
47033
  if (!n || !n.isConnected) {
46289
47034
  if (n = await u2(), !n) return;
46290
- x4.set(t.id, new WeakRef(n));
47035
+ x3.set(t.id, new WeakRef(n));
46291
47036
  }
46292
47037
  let r = await c2(n, 8e3, (e) => s(Math.ceil(e / 1e3)));
46293
- 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 ? {
46294
47039
  ...e,
46295
47040
  genome: {
46296
47041
  ...e.genome,
@@ -46302,37 +47047,37 @@ function S4() {
46302
47047
  } finally {
46303
47048
  a(null), s(null), oj("design"), window.dispatchEvent(new CustomEvent(VZ));
46304
47049
  }
46305
- }, A = async (e) => {
47050
+ }, we = async (e) => {
46306
47051
  try {
46307
47052
  await navigator.clipboard.writeText(l2(e.genome)), d(e.id), setTimeout(() => d(null), 1600);
46308
47053
  } catch {
46309
47054
  l("Clipboard was blocked — click Copy again.");
46310
47055
  }
46311
- }, ne = (t) => {
46312
- x4.delete(t), k(e().filter((e) => e.id !== t));
46313
- }, [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 () => {
46314
47059
  try {
46315
47060
  let t = e().map((e) => l2(e.genome)).join("\n\n---\n\n");
46316
- await navigator.clipboard.writeText(t), ie(!0), setTimeout(() => ie(!1), 1600);
47061
+ await navigator.clipboard.writeText(t), De(!0), setTimeout(() => De(!1), 1600);
46317
47062
  } catch {
46318
47063
  l("Clipboard was blocked — click Copy again.");
46319
47064
  }
46320
- }, se = () => {
46321
- x4.clear(), k([]), r(null);
47065
+ }, ke = () => {
47066
+ x3.clear(), xe([]), r(null);
46322
47067
  };
46323
47068
  return (() => {
46324
- var t = X2(), a = t.firstChild;
47069
+ var t = K4(), a = t.firstChild;
46325
47070
  a.firstChild;
46326
- var o = a.nextSibling, s = o.firstChild.firstChild.nextSibling;
46327
- 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, {
46328
47073
  variant: "primary",
46329
47074
  class: "h-7 shrink-0 px-2.5 text-[11.5px]",
46330
47075
  get loading() {
46331
47076
  return i() === "extract";
46332
47077
  },
46333
- onClick: () => void ee(),
47078
+ onClick: () => void Se(),
46334
47079
  get children() {
46335
- return B2();
47080
+ return P4();
46336
47081
  }
46337
47082
  }), null), P(t, j(M, {
46338
47083
  get when() {
@@ -46355,7 +47100,7 @@ function S4() {
46355
47100
  },
46356
47101
  get children() {
46357
47102
  return [(() => {
46358
- var t = V2();
47103
+ var t = F4();
46359
47104
  return t.firstChild, P(t, j(We, {
46360
47105
  get each() {
46361
47106
  return e();
@@ -46363,7 +47108,7 @@ function S4() {
46363
47108
  children: (e) => {
46364
47109
  let t = () => n() === e.id;
46365
47110
  return (() => {
46366
- 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;
46367
47112
  p.nextSibling;
46368
47113
  var m = l.nextSibling;
46369
47114
  return s.$$click = () => r(t() ? null : e.id), P(c, () => e.genome.title), P(l, () => e.genome.nodes.length, d), P(l, (() => {
@@ -46374,19 +47119,19 @@ function S4() {
46374
47119
  return t();
46375
47120
  },
46376
47121
  get children() {
46377
- 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;
46378
47123
  return P(n, () => e.genome.pageUrl), P(r, j(We, {
46379
47124
  get each() {
46380
47125
  return e.genome.nodes;
46381
47126
  },
46382
47127
  children: (e) => (() => {
46383
- var t = r4(), n = t.firstChild;
47128
+ var t = $4(), n = t.firstChild;
46384
47129
  return P(n, () => e.label, null), P(n, j(M, {
46385
47130
  get when() {
46386
47131
  return e.count > 1;
46387
47132
  },
46388
47133
  get children() {
46389
- var t = n4();
47134
+ var t = Q4();
46390
47135
  return t.firstChild, P(t, () => e.count, null), t;
46391
47136
  }
46392
47137
  }), null), P(t, j(We, {
@@ -46394,13 +47139,13 @@ function S4() {
46394
47139
  return Object.entries(e.styles);
46395
47140
  },
46396
47141
  children: ([t, n]) => (() => {
46397
- var r = a4(), i = r.firstChild;
47142
+ var r = t3(), i = r.firstChild;
46398
47143
  return P(r, t, i), P(r, n, null), P(r, j(M, {
46399
47144
  get when() {
46400
47145
  return e.tokens[t];
46401
47146
  },
46402
47147
  get children() {
46403
- var n = i4(), r = n.firstChild.nextSibling;
47148
+ var n = e3(), r = n.firstChild.nextSibling;
46404
47149
  return r.nextSibling, P(n, () => e.tokens[t], r), n;
46405
47150
  }
46406
47151
  }), null), r;
@@ -46412,18 +47157,18 @@ function S4() {
46412
47157
  return e.genome.states.length > 0;
46413
47158
  },
46414
47159
  get children() {
46415
- return [Z2(), j(We, {
47160
+ return [q4(), j(We, {
46416
47161
  get each() {
46417
47162
  return e.genome.states;
46418
47163
  },
46419
47164
  children: (e) => (() => {
46420
- var t = o4(), n = t.firstChild, r = n.firstChild;
47165
+ var t = n3(), n = t.firstChild, r = n.firstChild;
46421
47166
  return P(n, () => e.label, r), P(n, () => e.trigger, null), P(t, j(We, {
46422
47167
  get each() {
46423
47168
  return Object.entries(e.changed);
46424
47169
  },
46425
47170
  children: ([e, t]) => (() => {
46426
- var n = s4(), r = n.firstChild, i = r.nextSibling;
47171
+ var n = r3(), r = n.firstChild, i = r.nextSibling;
46427
47172
  return i.nextSibling, P(n, e, r), P(n, () => t.from, i), P(n, () => t.to, null), n;
46428
47173
  })()
46429
47174
  }), null), t;
@@ -46443,9 +47188,9 @@ function S4() {
46443
47188
  },
46444
47189
  title: "Capture states — records hover/focus/open styles for 8s while you interact; the pill shows the timer and Stop",
46445
47190
  "aria-label": "Capture interaction states",
46446
- onClick: () => void te(e),
47191
+ onClick: () => void Ce(e),
46447
47192
  get children() {
46448
- return c4();
47193
+ return i3();
46449
47194
  }
46450
47195
  });
46451
47196
  },
@@ -46459,10 +47204,10 @@ function S4() {
46459
47204
  "aria-label": "Stop recording states",
46460
47205
  onClick: () => o2(),
46461
47206
  get children() {
46462
- return Q2();
47207
+ return J4();
46463
47208
  }
46464
47209
  }), (() => {
46465
- var e = $2(), t = e.firstChild, n = t.nextSibling;
47210
+ var e = Y4(), t = e.firstChild, n = t.nextSibling;
46466
47211
  return n.nextSibling, P(e, () => Math.ceil(f().msLeft / 1e3), t), P(e, () => f().total, n), e;
46467
47212
  })()];
46468
47213
  }
@@ -46473,17 +47218,17 @@ function S4() {
46473
47218
  return u() === e.id ? "Copied!" : "Copy spec — markdown for an agent or issue";
46474
47219
  },
46475
47220
  "aria-label": "Copy genome spec",
46476
- onClick: () => void A(e),
47221
+ onClick: () => void we(e),
46477
47222
  get children() {
46478
47223
  return j(M, {
46479
47224
  get when() {
46480
47225
  return u() === e.id;
46481
47226
  },
46482
47227
  get fallback() {
46483
- return l4();
47228
+ return a3();
46484
47229
  },
46485
47230
  get children() {
46486
- return H2();
47231
+ return I4();
46487
47232
  }
46488
47233
  });
46489
47234
  }
@@ -46492,9 +47237,9 @@ function S4() {
46492
47237
  variant: "ghost",
46493
47238
  title: "Delete this genome",
46494
47239
  "aria-label": "Delete genome",
46495
- onClick: () => ne(e.id),
47240
+ onClick: () => Te(e.id),
46496
47241
  get children() {
46497
- return U2();
47242
+ return L4();
46498
47243
  }
46499
47244
  }), null), t;
46500
47245
  }
@@ -46509,25 +47254,25 @@ function S4() {
46509
47254
  }
46510
47255
  }), null), t;
46511
47256
  })(), (() => {
46512
- var e = W2();
47257
+ var e = R4();
46513
47258
  return P(e, j(kj, {
46514
47259
  class: "size-7 px-0",
46515
47260
  variant: "ghost",
46516
47261
  get title() {
46517
- return re() ? "Copied!" : "Copy all genomes as one markdown document";
47262
+ return Ee() ? "Copied!" : "Copy all genomes as one markdown document";
46518
47263
  },
46519
47264
  "aria-label": "Copy all genomes",
46520
- onClick: () => void oe(),
47265
+ onClick: () => void Oe(),
46521
47266
  get children() {
46522
47267
  return j(M, {
46523
47268
  get when() {
46524
- return re();
47269
+ return Ee();
46525
47270
  },
46526
47271
  get fallback() {
46527
- return l4();
47272
+ return a3();
46528
47273
  },
46529
47274
  get children() {
46530
- return H2();
47275
+ return I4();
46531
47276
  }
46532
47277
  });
46533
47278
  }
@@ -46536,9 +47281,9 @@ function S4() {
46536
47281
  variant: "ghost",
46537
47282
  title: "Delete all saved genomes",
46538
47283
  "aria-label": "Delete all genomes",
46539
- onClick: se,
47284
+ onClick: ke,
46540
47285
  get children() {
46541
- return U2();
47286
+ return L4();
46542
47287
  }
46543
47288
  }), null), e;
46544
47289
  })()];
@@ -46552,17 +47297,17 @@ function S4() {
46552
47297
  get "aria-label"() {
46553
47298
  return g() ? "Pause live capture" : "Start live capture";
46554
47299
  },
46555
- onClick: () => M2(!g()),
47300
+ onClick: () => I2(!g()),
46556
47301
  get children() {
46557
47302
  return j(M, {
46558
47303
  get when() {
46559
47304
  return g();
46560
47305
  },
46561
47306
  get fallback() {
46562
- return u4();
47307
+ return o3();
46563
47308
  },
46564
47309
  get children() {
46565
- return G2();
47310
+ return z4();
46566
47311
  }
46567
47312
  });
46568
47313
  }
@@ -46574,24 +47319,24 @@ function S4() {
46574
47319
  },
46575
47320
  onClick: () => void S(),
46576
47321
  get children() {
46577
- return K2();
47322
+ return B4();
46578
47323
  }
46579
47324
  }), null), P(o, j(M, {
46580
47325
  get when() {
46581
47326
  return m().length > 0;
46582
47327
  },
46583
47328
  get fallback() {
46584
- return d4();
47329
+ return s3();
46585
47330
  },
46586
47331
  get children() {
46587
47332
  return [(() => {
46588
- var e = q2();
47333
+ var e = V4();
46589
47334
  return P(e, j(We, {
46590
47335
  get each() {
46591
47336
  return m();
46592
47337
  },
46593
47338
  children: (e) => (() => {
46594
- 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;
46595
47340
  return P(r, () => e.mode === "live" ? "live" : "audit"), P(i, () => e.component ?? e.element, null), P(i, j(M, {
46596
47341
  get when() {
46597
47342
  return e.count > 1;
@@ -46607,7 +47352,7 @@ function S4() {
46607
47352
  return e.source;
46608
47353
  },
46609
47354
  get children() {
46610
- var t = f4();
47355
+ var t = c3();
46611
47356
  return P(t, () => e.source), t;
46612
47357
  }
46613
47358
  }), s), P(s, () => e.properties.join(", "), null), P(s, j(M, {
@@ -46626,7 +47371,7 @@ function S4() {
46626
47371
  return e.jankProps?.length;
46627
47372
  },
46628
47373
  get children() {
46629
- var t = p4();
47374
+ var t = l3();
46630
47375
  return t.firstChild, P(t, () => e.jankProps.join(", "), null), t;
46631
47376
  }
46632
47377
  }), c), P(t, j(M, {
@@ -46634,14 +47379,14 @@ function S4() {
46634
47379
  return e.easing;
46635
47380
  },
46636
47381
  get children() {
46637
- var t = m4();
47382
+ var t = u3();
46638
47383
  return t.firstChild, P(t, () => e.easing, null), t;
46639
47384
  }
46640
47385
  }), c), P(c, () => e.suggestion), t;
46641
47386
  })()
46642
47387
  })), e;
46643
47388
  })(), (() => {
46644
- var e = Y2();
47389
+ var e = U4();
46645
47390
  return P(e, j(kj, {
46646
47391
  class: "size-7 px-0",
46647
47392
  variant: "primary",
@@ -46656,10 +47401,10 @@ function S4() {
46656
47401
  return w();
46657
47402
  },
46658
47403
  get fallback() {
46659
- return g4();
47404
+ return f3();
46660
47405
  },
46661
47406
  get children() {
46662
- return J2();
47407
+ return H4();
46663
47408
  }
46664
47409
  });
46665
47410
  }
@@ -46677,10 +47422,10 @@ function S4() {
46677
47422
  return b();
46678
47423
  },
46679
47424
  get fallback() {
46680
- return l4();
47425
+ return a3();
46681
47426
  },
46682
47427
  get children() {
46683
- return H2();
47428
+ return I4();
46684
47429
  }
46685
47430
  });
46686
47431
  }
@@ -46689,20 +47434,154 @@ function S4() {
46689
47434
  variant: "ghost",
46690
47435
  title: "Clear all findings (live + audit)",
46691
47436
  "aria-label": "Clear all findings",
46692
- onClick: O2,
47437
+ onClick: M2,
46693
47438
  get children() {
46694
- return U2();
47439
+ return L4();
46695
47440
  }
46696
47441
  }), null), e;
46697
47442
  })()];
46698
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
+ }
46699
47578
  }), null), t;
46700
47579
  })();
46701
47580
  }
46702
47581
  rt(["click"]);
46703
47582
  //#endregion
46704
47583
  //#region src/lib/projectConfig.ts
46705
- var C4 = [
47584
+ var E3 = [
46706
47585
  "defaultTeamId",
46707
47586
  "defaultProjectId",
46708
47587
  "defaultLabelIds",
@@ -46717,29 +47596,29 @@ var C4 = [
46717
47596
  "issueTemplate",
46718
47597
  "testUsername"
46719
47598
  ];
46720
- function w4(e) {
47599
+ function D3(e) {
46721
47600
  let t = {};
46722
- for (let n of C4) {
47601
+ for (let n of E3) {
46723
47602
  let r = e[n];
46724
47603
  r !== void 0 && r !== "" && !(Array.isArray(r) && r.length === 0) && (t[n] = r);
46725
47604
  }
46726
47605
  return t;
46727
47606
  }
46728
- function T4(e, t) {
47607
+ function O3(e, t) {
46729
47608
  let n = {};
46730
- 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]);
46731
47610
  return Object.keys(n).length ? n : null;
46732
47611
  }
46733
47612
  //#endregion
46734
47613
  //#region src/lib/linear/auth.ts
46735
47614
  Br();
46736
- function E4(e) {
47615
+ function k3(e) {
46737
47616
  let t = "";
46738
47617
  for (let n of e) t += String.fromCharCode(n);
46739
47618
  return btoa(t).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
46740
47619
  }
46741
- async function D4(e) {
46742
- 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");
46743
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");
46744
47623
  let s = await chrome.identity.launchWebAuthFlow({
46745
47624
  url: o.toString(),
@@ -46767,15 +47646,15 @@ async function D4(e) {
46767
47646
  linearOauthClientId: e
46768
47647
  });
46769
47648
  }
46770
- async function O4() {
47649
+ async function j3() {
46771
47650
  await Er({
46772
47651
  linearAccessToken: void 0,
46773
47652
  linearApiKey: void 0
46774
47653
  });
46775
47654
  }
46776
47655
  Br(), Sr(), Fx(), gD();
46777
- 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.");
46778
- 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() {
46779
47658
  let e = sr(), t = _r(() => ({
46780
47659
  queryKey: ["settings"],
46781
47660
  queryFn: Tr,
@@ -46803,13 +47682,13 @@ function p3() {
46803
47682
  retry: 0
46804
47683
  })), [l, u] = T(!1), d = async () => {
46805
47684
  try {
46806
- 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);
46807
47686
  } catch {}
46808
47687
  }, f = () => {
46809
47688
  let e = c.data?.projectConfig;
46810
47689
  if (!e) return;
46811
47690
  let t = {};
46812
- 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]);
46813
47692
  r(t);
46814
47693
  }, p = _r(() => ({
46815
47694
  queryKey: ["linear-labels"],
@@ -46842,7 +47721,7 @@ function p3() {
46842
47721
  }
46843
47722
  E(!0), ee("");
46844
47723
  try {
46845
- 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"] });
46846
47725
  } catch (e) {
46847
47726
  ee(e instanceof Error ? e.message : "OAuth flow failed.");
46848
47727
  } finally {
@@ -46853,7 +47732,7 @@ function p3() {
46853
47732
  async function re() {
46854
47733
  ne(!0);
46855
47734
  try {
46856
- 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"] });
46857
47736
  } finally {
46858
47737
  ne(!1);
46859
47738
  }
@@ -46869,12 +47748,12 @@ function p3() {
46869
47748
  return e ? `Drafting with ${e} — ${Nx[e].fast} (fast) / ${Nx[e].best} (best)` : null;
46870
47749
  });
46871
47750
  return (() => {
46872
- var e = e3();
47751
+ var e = r6();
46873
47752
  return P(e, j(Rj, {
46874
47753
  title: "Workflow",
46875
47754
  get children() {
46876
47755
  return [(() => {
46877
- var e = k4();
47756
+ var e = M3();
46878
47757
  return P(e, j(We, {
46879
47758
  each: [{
46880
47759
  id: "cloud",
@@ -46884,19 +47763,19 @@ function p3() {
46884
47763
  label: "Local · clipboard"
46885
47764
  }],
46886
47765
  children: (e) => (() => {
46887
- var t = t3();
47766
+ var t = i6();
46888
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;
46889
47768
  })()
46890
47769
  })), e;
46891
- })(), A4()];
47770
+ })(), N3()];
46892
47771
  }
46893
47772
  }), null), P(e, j(Rj, {
46894
47773
  title: "Capture",
46895
47774
  get children() {
46896
47775
  return [(() => {
46897
- var e = j4(), t = e.firstChild;
47776
+ var e = P3(), t = e.firstChild;
46898
47777
  return t.addEventListener("change", (e) => void r({ captureShots: e.currentTarget.checked || void 0 })), D(() => t.checked = !!n().captureShots), e;
46899
- })(), M4()];
47778
+ })(), F3()];
46900
47779
  }
46901
47780
  }), null), P(e, j(Rj, {
46902
47781
  title: "Linear",
@@ -46907,13 +47786,13 @@ function p3() {
46907
47786
  },
46908
47787
  get fallback() {
46909
47788
  return (() => {
46910
- var e = a3();
47789
+ var e = c6();
46911
47790
  return P(e, j(Lj, {
46912
47791
  label: "Personal API key",
46913
47792
  hint: "Create one at linear.app → Settings → API — fastest path.",
46914
47793
  get children() {
46915
47794
  return [(() => {
46916
- var e = n3();
47795
+ var e = a6();
46917
47796
  return P(e, j(jj, {
46918
47797
  type: "password",
46919
47798
  placeholder: "lin_api_…",
@@ -46950,12 +47829,12 @@ function p3() {
46950
47829
  }), null), P(e, j(M, {
46951
47830
  when: xr,
46952
47831
  get children() {
46953
- return [r3(), j(Lj, {
47832
+ return [o6(), j(Lj, {
46954
47833
  label: "OAuth client ID",
46955
47834
  get children() {
46956
47835
  return [
46957
47836
  (() => {
46958
- var e = n3();
47837
+ var e = a6();
46959
47838
  return P(e, j(jj, {
46960
47839
  placeholder: "your-client-id",
46961
47840
  get value() {
@@ -46983,7 +47862,7 @@ function p3() {
46983
47862
  }
46984
47863
  }),
46985
47864
  (() => {
46986
- var e = i3(), t = e.firstChild.nextSibling.nextSibling;
47865
+ var e = s6(), t = e.firstChild.nextSibling.nextSibling;
46987
47866
  return P(t, ie), e;
46988
47867
  })()
46989
47868
  ];
@@ -46994,13 +47873,13 @@ function p3() {
46994
47873
  })();
46995
47874
  },
46996
47875
  get children() {
46997
- var e = P4(), t = e.firstChild;
47876
+ var e = L3(), t = e.firstChild;
46998
47877
  return P(t, j(M, {
46999
47878
  get when() {
47000
47879
  return !a.isLoading;
47001
47880
  },
47002
47881
  get fallback() {
47003
- return o3();
47882
+ return l6();
47004
47883
  },
47005
47884
  get children() {
47006
47885
  return j(M, {
@@ -47013,7 +47892,7 @@ function p3() {
47013
47892
  return a.isError;
47014
47893
  },
47015
47894
  get fallback() {
47016
- return o3();
47895
+ return l6();
47017
47896
  },
47018
47897
  get children() {
47019
47898
  return j(Hj, { message: "Key rejected — reconnect" });
@@ -47021,7 +47900,7 @@ function p3() {
47021
47900
  });
47022
47901
  },
47023
47902
  get children() {
47024
- var e = N4(), t = e.firstChild.nextSibling, n = t.nextSibling.nextSibling;
47903
+ var e = I3(), t = e.firstChild.nextSibling, n = t.nextSibling.nextSibling;
47025
47904
  return P(t, () => a.data.name), P(n, () => a.data.email), e;
47026
47905
  }
47027
47906
  });
@@ -47062,7 +47941,7 @@ function p3() {
47062
47941
  return o.isLoading;
47063
47942
  },
47064
47943
  get children() {
47065
- return [F4(), j(M, {
47944
+ return [R3(), j(M, {
47066
47945
  get when() {
47067
47946
  return o.data;
47068
47947
  },
@@ -47072,7 +47951,7 @@ function p3() {
47072
47951
  return o.data;
47073
47952
  },
47074
47953
  children: (e) => (() => {
47075
- var t = s3(), r = t.firstChild, i = r.nextSibling;
47954
+ var t = u6(), r = t.firstChild, i = r.nextSibling;
47076
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;
47077
47956
  })()
47078
47957
  });
@@ -47096,14 +47975,14 @@ function p3() {
47096
47975
  },
47097
47976
  get children() {
47098
47977
  return [(() => {
47099
- var e = I4();
47978
+ var e = z3();
47100
47979
  return D(() => e.selected = !n().defaultProjectId), e;
47101
47980
  })(), j(We, {
47102
47981
  get each() {
47103
47982
  return s.data ?? [];
47104
47983
  },
47105
47984
  children: (e) => (() => {
47106
- var t = c3();
47985
+ var t = d6();
47107
47986
  return P(t, () => e.name), D(() => t.selected = e.id === n().defaultProjectId), D(() => t.value = e.id), t;
47108
47987
  })()
47109
47988
  })];
@@ -47115,7 +47994,7 @@ function p3() {
47115
47994
  label: "Default labels",
47116
47995
  hint: "Applied to every issue created from the panel.",
47117
47996
  get children() {
47118
- var e = L4();
47997
+ var e = B3();
47119
47998
  return P(e, j(We, {
47120
47999
  get each() {
47121
48000
  return p.data ?? [];
@@ -47123,7 +48002,7 @@ function p3() {
47123
48002
  children: (e) => {
47124
48003
  let t = () => (n().defaultLabelIds ?? []).includes(e.id);
47125
48004
  return (() => {
47126
- var i = l3(), a = i.firstChild;
48005
+ var i = f6(), a = i.firstChild;
47127
48006
  return i.$$click = () => {
47128
48007
  let i = n().defaultLabelIds ?? [];
47129
48008
  r({ defaultLabelIds: t() ? i.filter((t) => t !== e.id) : [...i, e.id] });
@@ -47140,7 +48019,7 @@ function p3() {
47140
48019
  }
47141
48020
  }),
47142
48021
  (() => {
47143
- var e = R4(), t = e.firstChild;
48022
+ var e = V3(), t = e.firstChild;
47144
48023
  return t.addEventListener("change", (e) => void r({ shareLinearKey: e.currentTarget.checked })), D(() => t.checked = !!n().shareLinearKey), e;
47145
48024
  })(),
47146
48025
  j(Lj, {
@@ -47190,7 +48069,7 @@ function p3() {
47190
48069
  return m.isLoading;
47191
48070
  },
47192
48071
  get children() {
47193
- return [u3(), j(M, {
48072
+ return [p6(), j(M, {
47194
48073
  get when() {
47195
48074
  return m.data;
47196
48075
  },
@@ -47200,7 +48079,7 @@ function p3() {
47200
48079
  return m.data;
47201
48080
  },
47202
48081
  children: (e) => (() => {
47203
- var t = c3();
48082
+ var t = d6();
47204
48083
  return P(t, () => e.displayName), D(() => t.selected = e.id === n().cursorAgentId), D(() => t.value = e.id), t;
47205
48084
  })()
47206
48085
  });
@@ -47210,7 +48089,7 @@ function p3() {
47210
48089
  });
47211
48090
  },
47212
48091
  get children() {
47213
- return z4();
48092
+ return H3();
47214
48093
  }
47215
48094
  });
47216
48095
  }
@@ -47258,7 +48137,7 @@ function p3() {
47258
48137
  onBlur: (e) => {
47259
48138
  r({ issueTemplate: e.currentTarget.value.trim() || void 0 });
47260
48139
  }
47261
- }), B4()];
48140
+ }), U3()];
47262
48141
  }
47263
48142
  }),
47264
48143
  j(Lj, {
@@ -47315,7 +48194,7 @@ function p3() {
47315
48194
  label: "Test account",
47316
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.",
47317
48196
  get children() {
47318
- var e = V4();
48197
+ var e = W3();
47319
48198
  return P(e, j(jj, {
47320
48199
  placeholder: "Username or email (e.g. demo@yourapp.com)",
47321
48200
  get value() {
@@ -47347,7 +48226,7 @@ function p3() {
47347
48226
  title: "Panel",
47348
48227
  get children() {
47349
48228
  return [(() => {
47350
- var e = H4(), t = e.firstChild.nextSibling;
48229
+ var e = G3(), t = e.firstChild.nextSibling;
47351
48230
  return P(t, j(We, {
47352
48231
  each: [{
47353
48232
  id: "overlay",
@@ -47357,7 +48236,7 @@ function p3() {
47357
48236
  label: "Beside page"
47358
48237
  }],
47359
48238
  children: (e) => (() => {
47360
- var t = t3();
48239
+ var t = i6();
47361
48240
  return t.$$click = () => void r({
47362
48241
  panelMode: e.id,
47363
48242
  panelPos: void 0
@@ -47365,11 +48244,11 @@ function p3() {
47365
48244
  })()
47366
48245
  })), e;
47367
48246
  })(), (() => {
47368
- var e = U4(), t = e.firstChild.nextSibling;
48247
+ var e = K3(), t = e.firstChild.nextSibling;
47369
48248
  return P(t, j(We, {
47370
48249
  each: ["left", "right"],
47371
48250
  children: (e) => (() => {
47372
- var t = t3();
48251
+ var t = i6();
47373
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;
47374
48253
  })()
47375
48254
  })), e;
@@ -47399,8 +48278,8 @@ function p3() {
47399
48278
  }), null), P(e, j(Rj, {
47400
48279
  title: "Project config (.lineargrab.json)",
47401
48280
  get children() {
47402
- return [W4(), (() => {
47403
- var e = K4();
48281
+ return [q3(), (() => {
48282
+ var e = Y3();
47404
48283
  return P(e, j(M, {
47405
48284
  get when() {
47406
48285
  return c.data?.projectConfig;
@@ -47431,7 +48310,7 @@ function p3() {
47431
48310
  },
47432
48311
  onClick: () => void d(),
47433
48312
  get children() {
47434
- var e = G4();
48313
+ var e = J3();
47435
48314
  return P(e, () => l() ? "Copied ✓" : "Copy config"), e;
47436
48315
  }
47437
48316
  }), null), e;
@@ -47522,12 +48401,12 @@ function p3() {
47522
48401
  });
47523
48402
  },
47524
48403
  get children() {
47525
- return [q4(), j(We, {
48404
+ return [X3(), j(We, {
47526
48405
  get each() {
47527
48406
  return ae.data ?? [];
47528
48407
  },
47529
48408
  children: (e) => (() => {
47530
- var t = d3();
48409
+ var t = m6();
47531
48410
  return t.firstChild, P(t, () => e.name, null), D(() => t.selected = e.id === n().slackChannelId), D(() => t.value = e.id), t;
47532
48411
  })()
47533
48412
  })];
@@ -47578,10 +48457,10 @@ function p3() {
47578
48457
  }
47579
48458
  }),
47580
48459
  (() => {
47581
- var e = J4(), t = e.firstChild;
48460
+ var e = Z3(), t = e.firstChild;
47582
48461
  return t.addEventListener("change", (e) => void r({ notifyOnCreate: e.currentTarget.checked ? void 0 : !1 })), D(() => t.checked = n().notifyOnCreate !== !1), e;
47583
48462
  })(),
47584
- Y4()
48463
+ Q3()
47585
48464
  ];
47586
48465
  }
47587
48466
  }), null), P(e, j(Rj, {
@@ -47619,7 +48498,7 @@ function p3() {
47619
48498
  }
47620
48499
  }),
47621
48500
  (() => {
47622
- 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;
47623
48502
  return t.$$click = () => void r({ preferredProvider: void 0 }), i.$$click = () => void r({ preferredProvider: "openai" }), a.$$click = () => void r({ preferredProvider: "anthropic" }), D((e) => {
47624
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;
47625
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;
@@ -47632,16 +48511,16 @@ function p3() {
47632
48511
  }), e;
47633
48512
  })(),
47634
48513
  (() => {
47635
- var e = Q4();
48514
+ var e = t6();
47636
48515
  return P(e, j(M, {
47637
48516
  get when() {
47638
48517
  return se();
47639
48518
  },
47640
48519
  get fallback() {
47641
- return f3();
48520
+ return h6();
47642
48521
  },
47643
48522
  get children() {
47644
- var e = Z4();
48523
+ var e = e6();
47645
48524
  return P(e, se), e;
47646
48525
  }
47647
48526
  })), e;
@@ -47651,7 +48530,7 @@ function p3() {
47651
48530
  }), null), P(e, j(Rj, {
47652
48531
  title: "How it works",
47653
48532
  get children() {
47654
- return $4();
48533
+ return n6();
47655
48534
  }
47656
48535
  }), null), e;
47657
48536
  })();
@@ -47659,38 +48538,38 @@ function p3() {
47659
48538
  rt(["click"]);
47660
48539
  //#endregion
47661
48540
  //#region src/lib/idbCache.ts
47662
- var m3 = "linear-grab", h3 = "queries", g3 = [
48541
+ var _6 = "linear-grab", v6 = "queries", y6 = [
47663
48542
  "my-issues",
47664
48543
  "issue",
47665
48544
  "sessions",
47666
48545
  "teams",
47667
48546
  "agents"
47668
48547
  ];
47669
- function _3() {
48548
+ function b6() {
47670
48549
  return new Promise((e) => {
47671
48550
  try {
47672
- let t = indexedDB.open(m3, 1);
47673
- 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);
47674
48553
  } catch {
47675
48554
  e(null);
47676
48555
  }
47677
48556
  });
47678
48557
  }
47679
- function v3(e) {
47680
- return typeof e[0] == "string" && g3.includes(e[0]);
48558
+ function x6(e) {
48559
+ return typeof e[0] == "string" && y6.includes(e[0]);
47681
48560
  }
47682
- async function y3(e) {
47683
- let t = await _3();
48561
+ async function S6(e) {
48562
+ let t = await b6();
47684
48563
  if (!t) return () => {};
47685
48564
  await new Promise((n) => {
47686
48565
  try {
47687
- let r = t.transaction(h3, "readonly").objectStore(h3).openCursor();
48566
+ let r = t.transaction(v6, "readonly").objectStore(v6).openCursor();
47688
48567
  r.onsuccess = () => {
47689
48568
  let t = r.result;
47690
48569
  if (!t) return n();
47691
48570
  try {
47692
48571
  let { queryKey: n, data: r } = t.value;
47693
- 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 });
47694
48573
  } catch {}
47695
48574
  t.continue();
47696
48575
  }, r.onerror = () => n();
@@ -47701,14 +48580,14 @@ async function y3(e) {
47701
48580
  let n = /* @__PURE__ */ new Map(), r = e.getQueryCache().subscribe((r) => {
47702
48581
  if (r.type !== "updated" || r.action.type !== "success") return;
47703
48582
  let { queryKey: i, queryHash: a } = r.query;
47704
- if (!v3(i)) return;
48583
+ if (!x6(i)) return;
47705
48584
  let o = n.get(a);
47706
48585
  o && clearTimeout(o), n.set(a, setTimeout(() => {
47707
48586
  n.delete(a);
47708
48587
  try {
47709
48588
  let n = e.getQueryData(i);
47710
48589
  if (n === void 0) return;
47711
- t.transaction(h3, "readwrite").objectStore(h3).put({
48590
+ t.transaction(v6, "readwrite").objectStore(v6).put({
47712
48591
  queryKey: i,
47713
48592
  data: n
47714
48593
  }, a);
@@ -47724,7 +48603,7 @@ async function y3(e) {
47724
48603
  //#endregion
47725
48604
  //#region src/panel/App.tsx
47726
48605
  Br();
47727
- 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 = [
47728
48607
  {
47729
48608
  id: "draft",
47730
48609
  label: "Draft"
@@ -47761,35 +48640,35 @@ var b3 = /*#__PURE__*/ N("<svg viewBox=\"0 0 100 100\"fill=currentColor aria-hid
47761
48640
  id: "settings",
47762
48641
  label: "Settings"
47763
48642
  }
47764
- ], E3 = /* @__PURE__ */ new Set();
47765
- function D3(e, t, n) {
47766
- if (E3.has(e) || typeof Notification > "u") return;
47767
- 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);
47768
48647
  let r = () => new Notification(t, { body: n });
47769
48648
  Notification.permission === "granted" ? r() : Notification.permission === "default" && Notification.requestPermission().then((e) => e === "granted" && r());
47770
48649
  }
47771
- function O3() {
48650
+ function j6() {
47772
48651
  setInterval(() => {
47773
48652
  NO().then((e) => {
47774
48653
  for (let t of e) {
47775
48654
  if (t.status !== "running") continue;
47776
48655
  let e = t.lastEventAt ?? t.startedAt;
47777
- 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.`);
47778
48657
  }
47779
48658
  }).catch(() => {}), gO().then((e) => {
47780
- 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.`);
47781
48660
  }).catch(() => {});
47782
48661
  }, 6e4);
47783
48662
  }
47784
- O3();
47785
- var k3 = new gr({ defaultOptions: { queries: {
48663
+ j6();
48664
+ var M6 = new gr({ defaultOptions: { queries: {
47786
48665
  retry: 1,
47787
48666
  refetchOnWindowFocus: !1,
47788
48667
  staleTime: 5e3
47789
48668
  } } });
47790
- function A3(e) {
48669
+ function N6(e) {
47791
48670
  return (() => {
47792
- var t = b3();
48671
+ var t = C6();
47793
48672
  return D((n) => {
47794
48673
  var r = e.size ?? 14, i = e.size ?? 14;
47795
48674
  return r !== n.e && it(t, "width", n.e = r), i !== n.t && it(t, "height", n.t = i), n;
@@ -47799,36 +48678,36 @@ function A3(e) {
47799
48678
  }), t;
47800
48679
  })();
47801
48680
  }
47802
- function j3(e) {
48681
+ function P6(e) {
47803
48682
  let [t, n] = T("draft"), r = () => {
47804
- k3.invalidateQueries({ queryKey: ["grab"] }), cj() === "capture" && n("capture"), e.onGrab?.();
48683
+ M6.invalidateQueries({ queryKey: ["grab"] }), cj() === "capture" && n("capture"), e.onGrab?.();
47805
48684
  };
47806
48685
  return O(() => {
47807
48686
  let e = nj();
47808
48687
  e && n(e);
47809
48688
  }), ie(() => {
47810
- let e = y3(k3), t = XZ(r), n = () => {
48689
+ let e = S6(M6), t = XZ(r), n = () => {
47811
48690
  JO().then(y$), VO(), MO().then(async (e) => {
47812
48691
  if (!e.projectConfig) return;
47813
- let t = T4(await Tr(), e.projectConfig);
48692
+ let t = O3(await Tr(), e.projectConfig);
47814
48693
  t && await Er(t);
47815
48694
  }).catch(() => {});
47816
48695
  };
47817
48696
  n();
47818
48697
  let i = Mr((e) => {
47819
- e === "settings" && (k3.invalidateQueries({ queryKey: ["settings"] }), n()), e === "grab" && r();
48698
+ e === "settings" && (M6.invalidateQueries({ queryKey: ["settings"] }), n()), e === "grab" && r();
47820
48699
  });
47821
48700
  ae(() => {
47822
48701
  t(), i(), e.then((e) => e());
47823
48702
  });
47824
48703
  }), j(cr, {
47825
- client: k3,
48704
+ client: M6,
47826
48705
  get children() {
47827
- 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;
47828
- return i.$$pointerdown = (t) => e.onHeaderPointerDown?.(t), P(a, j(A3, { size: 14 })), P(o, j(We, {
47829
- 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,
47830
48709
  children: (e) => (() => {
47831
- var r = w3();
48710
+ var r = D6();
47832
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;
47833
48712
  })()
47834
48713
  })), P(i, j(M, {
@@ -47836,7 +48715,7 @@ function j3(e) {
47836
48715
  return e.onTogglePin;
47837
48716
  },
47838
48717
  get children() {
47839
- var t = x3();
48718
+ var t = w6();
47840
48719
  return t.$$click = () => e.onTogglePin?.(), D((n) => {
47841
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"}`;
47842
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;
@@ -47851,10 +48730,10 @@ function j3(e) {
47851
48730
  return e.onClose;
47852
48731
  },
47853
48732
  get children() {
47854
- var t = S3();
48733
+ var t = T6();
47855
48734
  return t.$$click = () => e.onClose?.(), t;
47856
48735
  }
47857
- }), 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) => {
47858
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";
47859
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;
47860
48739
  }, {
@@ -47875,16 +48754,16 @@ function j3(e) {
47875
48754
  rt(["pointerdown", "click"]);
47876
48755
  //#endregion
47877
48756
  //#region src/styles/app.css?inline
47878
- 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}}";
47879
48758
  //#endregion
47880
48759
  //#region src/page/index.tsx
47881
48760
  Br();
47882
- 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\"> · <!> · ");
47883
- 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 = {}) {
47884
48763
  if (typeof window > "u" || window.__LINEAR_GRAB_PAGE__) return;
47885
48764
  window.__LINEAR_GRAB_PAGE__ = !0;
47886
48765
  let t = () => {
47887
- lk(), F2(), JZ();
48766
+ lk(), z2(), JZ();
47888
48767
  let t = document.createElement("div");
47889
48768
  t.id = "linear-grab-root", document.body.appendChild(t);
47890
48769
  let n = (e) => {
@@ -47912,17 +48791,17 @@ function X3(e = {}) {
47912
48791
  "keypress"
47913
48792
  ]) window.addEventListener(e, n, { capture: !0 });
47914
48793
  let r = t.attachShadow({ mode: "open" }), i = document.createElement("style");
47915
- i.textContent = M3, r.appendChild(i);
48794
+ i.textContent = F6, r.appendChild(i);
47916
48795
  let a = document.createElement("div");
47917
48796
  r.appendChild(a);
47918
- let o = () => a.setAttribute("data-theme", Z3());
47919
- 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() {
47920
48799
  return e.defaultOpen ?? !1;
47921
48800
  } }), a);
47922
48801
  };
47923
48802
  document.body ? t() : document.addEventListener("DOMContentLoaded", t, { once: !0 });
47924
48803
  }
47925
- function Z3() {
48804
+ function e8() {
47926
48805
  try {
47927
48806
  let e = [document.body, document.documentElement];
47928
48807
  for (let t of e) {
@@ -47932,11 +48811,11 @@ function Z3() {
47932
48811
  } catch {}
47933
48812
  return matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark";
47934
48813
  }
47935
- var Q3 = 130, $3 = 36, e6 = 380, t6 = 280, n6 = 720;
47936
- function r6(e) {
48814
+ var t8 = 130, n8 = 36, r8 = 380, i8 = 280, a8 = 720;
48815
+ function o8(e) {
47937
48816
  let [t, n] = T(e.defaultOpen), [r, i] = T("right"), [a, o] = T({
47938
- x: Math.max(8, window.innerWidth - Q3 - 24),
47939
- 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)
47940
48819
  }), [s, c] = T({
47941
48820
  running: [],
47942
48821
  review: []
@@ -47956,12 +48835,12 @@ function r6(e) {
47956
48835
  let t = Math.floor(e / 1e3);
47957
48836
  return `${Math.floor(t / 60)}:${String(t % 60).padStart(2, "0")}`;
47958
48837
  }, [b, x] = T(null), S = (e) => ({
47959
- x: Math.min(Math.max(8, e.x), window.innerWidth - Q3 - 8),
47960
- 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)
47961
48840
  }), C = (e) => ({
47962
48841
  x: Math.min(Math.max(8 - (ne() - 80), e.x), window.innerWidth - 80),
47963
48842
  y: Math.min(Math.max(0, e.y), window.innerHeight - 80)
47964
- }), [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)));
47965
48844
  O(() => {
47966
48845
  let e = document.documentElement, n = t() && w();
47967
48846
  e.style.transition = "margin 0.2s ease", e.style.marginRight = n && r() === "right" ? `${ne()}px` : "", e.style.marginLeft = n && r() === "left" ? `${ne()}px` : "";
@@ -48075,7 +48954,7 @@ function r6(e) {
48075
48954
  return !t();
48076
48955
  },
48077
48956
  get children() {
48078
- var e = R3(), t = e.firstChild;
48957
+ var e = V6(), t = e.firstChild;
48079
48958
  return t.$$click = () => {
48080
48959
  ce || p() === "recording" || h().active || (f(!1), n(!0));
48081
48960
  }, t.$$pointerdown = le, P(t, j(M, {
@@ -48085,14 +48964,14 @@ function r6(e) {
48085
48964
  get fallback() {
48086
48965
  return [
48087
48966
  (() => {
48088
- var e = B3();
48967
+ var e = U6();
48089
48968
  return e.$$click = () => {
48090
48969
  ce || (f(!1), n(!0));
48091
- }, P(e, j(A3, { size: 13 })), e;
48970
+ }, P(e, j(N6, { size: 13 })), e;
48092
48971
  })(),
48093
- V3(),
48972
+ W6(),
48094
48973
  (() => {
48095
- var e = W3(), t = e.firstChild, n = t.nextSibling;
48974
+ var e = q6(), t = e.firstChild, n = t.nextSibling;
48096
48975
  return e.$$click = (e) => {
48097
48976
  e.stopPropagation(), !ce && f((e) => !e);
48098
48977
  }, P(n, (() => {
@@ -48103,8 +48982,8 @@ function r6(e) {
48103
48982
  return $e(() => !te())() && u().length > 0;
48104
48983
  },
48105
48984
  get children() {
48106
- return [H3(), (() => {
48107
- var e = U3(), t = e.firstChild;
48985
+ return [G6(), (() => {
48986
+ var e = K6(), t = e.firstChild;
48108
48987
  return P(e, () => u().length, t), e;
48109
48988
  })()];
48110
48989
  }
@@ -48125,17 +49004,17 @@ function r6(e) {
48125
49004
  },
48126
49005
  get fallback() {
48127
49006
  return [
48128
- G3(),
49007
+ J6(),
48129
49008
  (() => {
48130
- var e = K3(), t = e.firstChild;
49009
+ var e = Y6(), t = e.firstChild;
48131
49010
  return P(e, () => Math.ceil(h().msLeft / 1e3), t), e;
48132
49011
  })(),
48133
49012
  (() => {
48134
- var e = q3(), t = e.firstChild;
49013
+ var e = X6(), t = e.firstChild;
48135
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;
48136
49015
  })(),
48137
49016
  (() => {
48138
- var e = F3();
49017
+ var e = R6();
48139
49018
  return e.$$click = (e) => {
48140
49019
  e.stopPropagation(), !ce && o2();
48141
49020
  }, e;
@@ -48144,13 +49023,13 @@ function r6(e) {
48144
49023
  },
48145
49024
  get children() {
48146
49025
  return [
48147
- N3(),
49026
+ I6(),
48148
49027
  (() => {
48149
- var e = P3();
49028
+ var e = L6();
48150
49029
  return P(e, () => y(_())), e;
48151
49030
  })(),
48152
49031
  (() => {
48153
- var e = F3();
49032
+ var e = R6();
48154
49033
  return e.$$click = () => {
48155
49034
  ce || eO();
48156
49035
  }, e;
@@ -48164,17 +49043,17 @@ function r6(e) {
48164
49043
  return d();
48165
49044
  },
48166
49045
  get children() {
48167
- var e = L3(), t = e.firstChild;
49046
+ var e = B6(), t = e.firstChild;
48168
49047
  return P(e, j(M, {
48169
49048
  get when() {
48170
49049
  return u().length > 0;
48171
49050
  },
48172
49051
  get children() {
48173
- return [I3(), j(We, {
49052
+ return [z6(), j(We, {
48174
49053
  get each() {
48175
49054
  return u();
48176
49055
  },
48177
- children: (e) => j(i6, {
49056
+ children: (e) => j(s8, {
48178
49057
  agent: e,
48179
49058
  review: !0,
48180
49059
  onOpen: de
@@ -48186,14 +49065,14 @@ function r6(e) {
48186
49065
  return l().length > 0;
48187
49066
  },
48188
49067
  get fallback() {
48189
- return J3();
49068
+ return Z6();
48190
49069
  },
48191
49070
  get children() {
48192
49071
  return j(We, {
48193
49072
  get each() {
48194
49073
  return l();
48195
49074
  },
48196
- children: (e) => j(i6, {
49075
+ children: (e) => j(s8, {
48197
49076
  agent: e,
48198
49077
  onOpen: de
48199
49078
  })
@@ -48214,8 +49093,8 @@ function r6(e) {
48214
49093
  return t();
48215
49094
  },
48216
49095
  get children() {
48217
- var e = z3(), t = e.firstChild;
48218
- return t.$$pointerdown = fe, P(e, j(j3, {
49096
+ var e = H6(), t = e.firstChild;
49097
+ return t.$$pointerdown = fe, P(e, j(P6, {
48219
49098
  onGrab: () => n(!0),
48220
49099
  onClose: () => n(!1),
48221
49100
  get onHeaderPointerDown() {
@@ -48243,19 +49122,19 @@ function r6(e) {
48243
49122
  }
48244
49123
  })];
48245
49124
  }
48246
- function i6(e) {
49125
+ function s8(e) {
48247
49126
  return (() => {
48248
- 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;
48249
49128
  return c.nextSibling, t.$$click = () => e.onOpen(e.agent.id), P(i, () => e.agent.identifier), P(a, () => e.agent.title), P(o, (() => {
48250
49129
  var t = $e(() => !!e.review);
48251
49130
  return () => t() ? "PR ready · needs review" : e.agent.stateName;
48252
- })(), 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;
48253
49132
  })();
48254
49133
  }
48255
- function a6(e) {
49134
+ function c8(e) {
48256
49135
  let t = Math.max(0, Math.floor((Date.now() - Date.parse(e)) / 1e3));
48257
49136
  return t < 60 ? "now" : t < 3600 ? `${Math.floor(t / 60)}m` : t < 86400 ? `${Math.floor(t / 3600)}h` : `${Math.floor(t / 86400)}d`;
48258
49137
  }
48259
49138
  rt(["pointerdown", "click"]);
48260
49139
  //#endregion
48261
- export { X3 as init };
49140
+ export { $6 as init };