mesurer-solid 0.2.0-beta.11 → 0.2.0-beta.13

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.
package/dist/index.js CHANGED
@@ -7679,6 +7679,16 @@ function ru(e) {
7679
7679
  }), n;
7680
7680
  }
7681
7681
  }), d), Z(d, f), Z(f, p), Q(c, Y(q, {
7682
+ get when() {
7683
+ return e.description;
7684
+ },
7685
+ get children() {
7686
+ var t = X("p", { class: "msr:m-0 msr:bg-white/60 msr:px-2 msr:pb-1.5 msr:pt-0.5 msr:text-[10px] msr:leading-4 msr:text-ink-500" });
7687
+ return Q(t, () => e.description), J(() => e.id, (e, n) => {
7688
+ $(t, "data-mesurer-plugin-description", e, n);
7689
+ }), t;
7690
+ }
7691
+ }), null), Q(c, Y(q, {
7682
7692
  get when() {
7683
7693
  return Ui(() => !!n())() ? t() : n();
7684
7694
  },
@@ -9843,7 +9853,7 @@ function zf(e) {
9843
9853
  }
9844
9854
  };
9845
9855
  }
9846
- var Bf = "/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --msr-font-sans: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\",\n \"Noto Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\",\n \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --msr-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --msr-color-red-50: oklch(97.1% 0.013 17.38);\n --msr-color-red-200: oklch(88.5% 0.062 18.334);\n --msr-color-red-600: oklch(57.7% 0.245 27.325);\n --msr-color-black: #000;\n --msr-color-white: #fff;\n --msr-spacing: 0.25rem;\n --msr-font-weight-normal: 400;\n --msr-font-weight-medium: 500;\n --msr-font-weight-semibold: 600;\n --msr-radius-md: 0.375rem;\n --msr-radius-lg: 0.5rem;\n --msr-default-transition-duration: 150ms;\n --msr-default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --msr-default-font-family: var(--msr-font-sans);\n --msr-default-mono-font-family: var(--msr-font-mono);\n --msr-color-ink-50: #f8fafc;\n --msr-color-ink-200: #e2e8f0;\n --msr-color-ink-500: #64748b;\n --msr-color-ink-700: #334155;\n --msr-color-ink-900: #0f172a;\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--msr-default-font-family, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--msr-default-font-feature-settings, normal);\n font-variation-settings: var(--msr-default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--msr-default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--msr-default-mono-font-feature-settings, normal);\n font-variation-settings: var(--msr-default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring:where(:not(iframe)) {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .msr\\:pointer-events-auto {\n pointer-events: auto;\n }\n .msr\\:pointer-events-none {\n pointer-events: none;\n }\n .msr\\:absolute {\n position: absolute;\n }\n .msr\\:fixed {\n position: fixed;\n }\n .msr\\:relative {\n position: relative;\n }\n .msr\\:inset-0 {\n inset: 0px;\n }\n .msr\\:top-0 {\n top: 0px;\n }\n .msr\\:top-1\\/2 {\n top: calc(1 / 2 * 100%);\n }\n .msr\\:top-\\[18px\\] {\n top: 18px;\n }\n .msr\\:top-full {\n top: 100%;\n }\n .msr\\:right-0 {\n right: 0px;\n }\n .msr\\:right-2 {\n right: calc(var(--msr-spacing) * 2);\n }\n .msr\\:right-\\[8px\\] {\n right: 8px;\n }\n .msr\\:bottom-0 {\n bottom: 0px;\n }\n .msr\\:bottom-full {\n bottom: 100%;\n }\n .msr\\:left-0 {\n left: 0px;\n }\n .msr\\:left-1\\/2 {\n left: calc(1 / 2 * 100%);\n }\n .msr\\:left-\\[8px\\] {\n left: 8px;\n }\n .msr\\:left-\\[18px\\] {\n left: 18px;\n }\n .msr\\:z-10 {\n z-index: 10;\n }\n .msr\\:z-\\[60\\] {\n z-index: 60;\n }\n .msr\\:z-\\[70\\] {\n z-index: 70;\n }\n .msr\\:z-\\[80\\] {\n z-index: 80;\n }\n .msr\\:z-\\[90\\] {\n z-index: 90;\n }\n .msr\\:z-\\[94\\] {\n z-index: 94;\n }\n .msr\\:z-\\[95\\] {\n z-index: 95;\n }\n .msr\\:col-span-2 {\n grid-column: span 2 / span 2;\n }\n .msr\\:col-start-1 {\n grid-column-start: 1;\n }\n .msr\\:col-start-2 {\n grid-column-start: 2;\n }\n .msr\\:col-start-3 {\n grid-column-start: 3;\n }\n .msr\\:m-0 {\n margin: 0px;\n }\n .msr\\:mx-1 {\n margin-inline: var(--msr-spacing);\n }\n .msr\\:mt-1 {\n margin-top: var(--msr-spacing);\n }\n .msr\\:mt-1\\.5 {\n margin-top: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:mt-2 {\n margin-top: calc(var(--msr-spacing) * 2);\n }\n .msr\\:mb-1 {\n margin-bottom: var(--msr-spacing);\n }\n .msr\\:mb-2 {\n margin-bottom: calc(var(--msr-spacing) * 2);\n }\n .msr\\:-ml-1 {\n margin-left: calc(var(--msr-spacing) * -1);\n }\n .msr\\:ml-1 {\n margin-left: var(--msr-spacing);\n }\n .msr\\:ml-2 {\n margin-left: calc(var(--msr-spacing) * 2);\n }\n .msr\\:ml-6 {\n margin-left: calc(var(--msr-spacing) * 6);\n }\n .msr\\:box-border {\n box-sizing: border-box;\n }\n .msr\\:block {\n display: block;\n }\n .msr\\:flex {\n display: flex;\n }\n .msr\\:grid {\n display: grid;\n }\n .msr\\:inline-flex {\n display: inline-flex;\n }\n .msr\\:size-1\\.5 {\n width: calc(var(--msr-spacing) * 1.5);\n height: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:size-3 {\n width: calc(var(--msr-spacing) * 3);\n height: calc(var(--msr-spacing) * 3);\n }\n .msr\\:size-4 {\n width: calc(var(--msr-spacing) * 4);\n height: calc(var(--msr-spacing) * 4);\n }\n .msr\\:size-6 {\n width: calc(var(--msr-spacing) * 6);\n height: calc(var(--msr-spacing) * 6);\n }\n .msr\\:size-7 {\n width: calc(var(--msr-spacing) * 7);\n height: calc(var(--msr-spacing) * 7);\n }\n .msr\\:size-8 {\n width: calc(var(--msr-spacing) * 8);\n height: calc(var(--msr-spacing) * 8);\n }\n .msr\\:size-\\[10px\\] {\n width: 10px;\n height: 10px;\n }\n .msr\\:size-\\[18px\\] {\n width: 18px;\n height: 18px;\n }\n .msr\\:size-full {\n width: 100%;\n height: 100%;\n }\n .msr\\:h-5 {\n height: calc(var(--msr-spacing) * 5);\n }\n .msr\\:h-6 {\n height: calc(var(--msr-spacing) * 6);\n }\n .msr\\:h-7 {\n height: calc(var(--msr-spacing) * 7);\n }\n .msr\\:h-8 {\n height: calc(var(--msr-spacing) * 8);\n }\n .msr\\:h-20 {\n height: calc(var(--msr-spacing) * 20);\n }\n .msr\\:h-\\[14px\\] {\n height: 14px;\n }\n .msr\\:h-\\[18px\\] {\n height: 18px;\n }\n .msr\\:h-\\[19px\\] {\n height: 19px;\n }\n .msr\\:h-full {\n height: 100%;\n }\n .msr\\:h-px {\n height: 1px;\n }\n .msr\\:max-h-36 {\n max-height: calc(var(--msr-spacing) * 36);\n }\n .msr\\:max-h-\\[220px\\] {\n max-height: 220px;\n }\n .msr\\:max-h-\\[calc\\(100vh-16px\\)\\] {\n max-height: calc(100vh - 16px);\n }\n .msr\\:max-h-\\[min\\(70vh\\,34rem\\)\\] {\n max-height: min(70vh, 34rem);\n }\n .msr\\:max-h-\\[min\\(320px\\,calc\\(100vh-16px\\)\\)\\] {\n max-height: min(320px, calc(100vh - 16px));\n }\n .msr\\:min-h-0 {\n min-height: 0px;\n }\n .msr\\:w-0 {\n width: 0px;\n }\n .msr\\:w-3 {\n width: calc(var(--msr-spacing) * 3);\n }\n .msr\\:w-4 {\n width: calc(var(--msr-spacing) * 4);\n }\n .msr\\:w-5 {\n width: calc(var(--msr-spacing) * 5);\n }\n .msr\\:w-6 {\n width: calc(var(--msr-spacing) * 6);\n }\n .msr\\:w-9 {\n width: calc(var(--msr-spacing) * 9);\n }\n .msr\\:w-12 {\n width: calc(var(--msr-spacing) * 12);\n }\n .msr\\:w-44 {\n width: calc(var(--msr-spacing) * 44);\n }\n .msr\\:w-60 {\n width: calc(var(--msr-spacing) * 60);\n }\n .msr\\:w-\\[18px\\] {\n width: 18px;\n }\n .msr\\:w-\\[26px\\] {\n width: 26px;\n }\n .msr\\:w-\\[272px\\] {\n width: 272px;\n }\n .msr\\:w-full {\n width: 100%;\n }\n .msr\\:w-px {\n width: 1px;\n }\n .msr\\:max-w-0 {\n max-width: 0px;\n }\n .msr\\:max-w-20 {\n max-width: calc(var(--msr-spacing) * 20);\n }\n .msr\\:max-w-\\[calc\\(100vw-16px\\)\\] {\n max-width: calc(100vw - 16px);\n }\n .msr\\:min-w-0 {\n min-width: 0px;\n }\n .msr\\:min-w-36 {\n min-width: calc(var(--msr-spacing) * 36);\n }\n .msr\\:flex-1 {\n flex: 1;\n }\n .msr\\:flex-none {\n flex: none;\n }\n .msr\\:shrink-0 {\n flex-shrink: 0;\n }\n .msr\\:-translate-x-1 {\n --tw-translate-x: calc(var(--msr-spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .msr\\:-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .msr\\:translate-x-0 {\n --tw-translate-x: 0px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .msr\\:-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .msr\\:-rotate-90 {\n rotate: calc(90deg * -1);\n }\n .msr\\:rotate-45 {\n rotate: 45deg;\n }\n .msr\\:rotate-90 {\n rotate: 90deg;\n }\n .msr\\:rotate-180 {\n rotate: 180deg;\n }\n .msr\\:rotate-\\[45deg\\] {\n rotate: 45deg;\n }\n .msr\\:rotate-\\[135deg\\] {\n rotate: 135deg;\n }\n .msr\\:cursor-crosshair {\n cursor: crosshair;\n }\n .msr\\:cursor-default {\n cursor: default;\n }\n .msr\\:cursor-pointer {\n cursor: pointer;\n }\n .msr\\:touch-none {\n touch-action: none;\n }\n .msr\\:resize-none {\n resize: none;\n }\n .msr\\:list-none {\n list-style-type: none;\n }\n .msr\\:appearance-none {\n appearance: none;\n }\n .msr\\:grid-cols-\\[78px_150px\\] {\n grid-template-columns: 78px 150px;\n }\n .msr\\:grid-cols-\\[78px_156px\\] {\n grid-template-columns: 78px 156px;\n }\n .msr\\:grid-cols-\\[78px_minmax\\(0\\,1fr\\)\\] {\n grid-template-columns: 78px minmax(0,1fr);\n }\n .msr\\:grid-cols-\\[minmax\\(0\\,1fr\\)_28px_34px\\] {\n grid-template-columns: minmax(0,1fr) 28px 34px;\n }\n .msr\\:flex-col {\n flex-direction: column;\n }\n .msr\\:items-center {\n align-items: center;\n }\n .msr\\:items-start {\n align-items: flex-start;\n }\n .msr\\:items-stretch {\n align-items: stretch;\n }\n .msr\\:justify-between {\n justify-content: space-between;\n }\n .msr\\:justify-center {\n justify-content: center;\n }\n .msr\\:justify-end {\n justify-content: flex-end;\n }\n .msr\\:gap-0 {\n gap: 0px;\n }\n .msr\\:gap-0\\.5 {\n gap: calc(var(--msr-spacing) * 0.5);\n }\n .msr\\:gap-1 {\n gap: var(--msr-spacing);\n }\n .msr\\:gap-1\\.5 {\n gap: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:gap-2 {\n gap: calc(var(--msr-spacing) * 2);\n }\n .msr\\:gap-3 {\n gap: calc(var(--msr-spacing) * 3);\n }\n .msr\\:gap-px {\n gap: 1px;\n }\n .msr\\:gap-x-3 {\n column-gap: calc(var(--msr-spacing) * 3);\n }\n .msr\\:gap-y-1 {\n row-gap: var(--msr-spacing);\n }\n .msr\\:self-stretch {\n align-self: stretch;\n }\n .msr\\:justify-self-end {\n justify-self: flex-end;\n }\n .msr\\:truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .msr\\:overflow-auto {\n overflow: auto;\n }\n .msr\\:overflow-hidden {\n overflow: hidden;\n }\n .msr\\:overflow-visible {\n overflow: visible;\n }\n .msr\\:overflow-x-hidden {\n overflow-x: hidden;\n }\n .msr\\:overflow-y-auto {\n overflow-y: auto;\n }\n .msr\\:rounded {\n border-radius: 0.25rem;\n }\n .msr\\:rounded-\\[3px\\] {\n border-radius: 3px;\n }\n .msr\\:rounded-\\[5px\\] {\n border-radius: 5px;\n }\n .msr\\:rounded-\\[6px\\] {\n border-radius: 6px;\n }\n .msr\\:rounded-\\[7px\\] {\n border-radius: 7px;\n }\n .msr\\:rounded-\\[8px\\] {\n border-radius: 8px;\n }\n .msr\\:rounded-\\[10px\\] {\n border-radius: 10px;\n }\n .msr\\:rounded-\\[12px\\] {\n border-radius: 12px;\n }\n .msr\\:rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .msr\\:rounded-lg {\n border-radius: var(--msr-radius-lg);\n }\n .msr\\:rounded-md {\n border-radius: var(--msr-radius-md);\n }\n .msr\\:rounded-none {\n border-radius: 0;\n }\n .msr\\:border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .msr\\:border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .msr\\:border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .msr\\:border-t-2 {\n border-top-style: var(--tw-border-style);\n border-top-width: 2px;\n }\n .msr\\:border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .msr\\:border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .msr\\:border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n .msr\\:border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .msr\\:border-dotted {\n --tw-border-style: dotted;\n border-style: dotted;\n }\n .msr\\:border-solid {\n --tw-border-style: solid;\n border-style: solid;\n }\n .msr\\:border-\\[\\#0d99ff\\] {\n border-color: #0d99ff;\n }\n .msr\\:border-\\[\\#2563eb\\]\\/70 {\n border-color: color-mix(in oklab, #2563eb 70%, transparent);\n }\n .msr\\:border-black\\/8 {\n border-color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--msr-color-black) 8%, transparent);\n }\n }\n .msr\\:border-black\\/10 {\n border-color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--msr-color-black) 10%, transparent);\n }\n }\n .msr\\:border-black\\/15 {\n border-color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--msr-color-black) 15%, transparent);\n }\n }\n .msr\\:border-ink-200 {\n border-color: var(--msr-color-ink-200);\n }\n .msr\\:border-ink-500 {\n border-color: var(--msr-color-ink-500);\n }\n .msr\\:border-ink-700 {\n border-color: var(--msr-color-ink-700);\n }\n .msr\\:border-red-200 {\n border-color: var(--msr-color-red-200);\n }\n .msr\\:border-transparent {\n border-color: transparent;\n }\n .msr\\:bg-\\[\\#0d99ff\\] {\n background-color: #0d99ff;\n }\n .msr\\:bg-\\[\\#0d99ff\\]\\/10 {\n background-color: color-mix(in oklab, #0d99ff 10%, transparent);\n }\n .msr\\:bg-\\[\\#2563eb\\] {\n background-color: #2563eb;\n }\n .msr\\:bg-\\[\\#fff\\] {\n background-color: #fff;\n }\n .msr\\:bg-black {\n background-color: var(--msr-color-black);\n }\n .msr\\:bg-black\\/10 {\n background-color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--msr-color-black) 10%, transparent);\n }\n }\n .msr\\:bg-ink-50 {\n background-color: var(--msr-color-ink-50);\n }\n .msr\\:bg-ink-50\\/40 {\n background-color: var(--msr-color-ink-50);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--msr-color-ink-50) 40%, transparent);\n }\n }\n .msr\\:bg-ink-900\\/90 {\n background-color: var(--msr-color-ink-900);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--msr-color-ink-900) 90%, transparent);\n }\n }\n .msr\\:bg-transparent {\n background-color: transparent;\n }\n .msr\\:bg-white {\n background-color: var(--msr-color-white);\n }\n .msr\\:bg-white\\/60 {\n background-color: var(--msr-color-white);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--msr-color-white) 60%, transparent);\n }\n }\n .msr\\:p-0 {\n padding: 0px;\n }\n .msr\\:p-1 {\n padding: var(--msr-spacing);\n }\n .msr\\:p-1\\.5 {\n padding: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:p-2 {\n padding: calc(var(--msr-spacing) * 2);\n }\n .msr\\:p-3 {\n padding: calc(var(--msr-spacing) * 3);\n }\n .msr\\:p-px {\n padding: 1px;\n }\n .msr\\:px-0 {\n padding-inline: 0px;\n }\n .msr\\:px-0\\.5 {\n padding-inline: calc(var(--msr-spacing) * 0.5);\n }\n .msr\\:px-1 {\n padding-inline: var(--msr-spacing);\n }\n .msr\\:px-1\\.5 {\n padding-inline: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:px-2 {\n padding-inline: calc(var(--msr-spacing) * 2);\n }\n .msr\\:px-2\\.5 {\n padding-inline: calc(var(--msr-spacing) * 2.5);\n }\n .msr\\:py-0 {\n padding-block: 0px;\n }\n .msr\\:py-0\\.5 {\n padding-block: calc(var(--msr-spacing) * 0.5);\n }\n .msr\\:py-1 {\n padding-block: var(--msr-spacing);\n }\n .msr\\:py-1\\.5 {\n padding-block: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:py-2 {\n padding-block: calc(var(--msr-spacing) * 2);\n }\n .msr\\:pt-2 {\n padding-top: calc(var(--msr-spacing) * 2);\n }\n .msr\\:pr-2 {\n padding-right: calc(var(--msr-spacing) * 2);\n }\n .msr\\:pr-6 {\n padding-right: calc(var(--msr-spacing) * 6);\n }\n .msr\\:pb-1 {\n padding-bottom: var(--msr-spacing);\n }\n .msr\\:pb-2 {\n padding-bottom: calc(var(--msr-spacing) * 2);\n }\n .msr\\:text-center {\n text-align: center;\n }\n .msr\\:text-left {\n text-align: left;\n }\n .msr\\:font-mono {\n font-family: var(--msr-font-mono);\n }\n .msr\\:text-\\[9px\\] {\n font-size: 9px;\n }\n .msr\\:text-\\[10px\\] {\n font-size: 10px;\n }\n .msr\\:text-\\[11px\\] {\n font-size: 11px;\n }\n .msr\\:text-\\[12px\\] {\n font-size: 12px;\n }\n .msr\\:text-\\[14px\\] {\n font-size: 14px;\n }\n .msr\\:leading-4 {\n --tw-leading: calc(var(--msr-spacing) * 4);\n line-height: calc(var(--msr-spacing) * 4);\n }\n .msr\\:leading-\\[1\\.4\\] {\n --tw-leading: 1.4;\n line-height: 1.4;\n }\n .msr\\:leading-\\[1\\.45\\] {\n --tw-leading: 1.45;\n line-height: 1.45;\n }\n .msr\\:leading-\\[18px\\] {\n --tw-leading: 18px;\n line-height: 18px;\n }\n .msr\\:leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .msr\\:font-medium {\n --tw-font-weight: var(--msr-font-weight-medium);\n font-weight: var(--msr-font-weight-medium);\n }\n .msr\\:font-normal {\n --tw-font-weight: var(--msr-font-weight-normal);\n font-weight: var(--msr-font-weight-normal);\n }\n .msr\\:font-semibold {\n --tw-font-weight: var(--msr-font-weight-semibold);\n font-weight: var(--msr-font-weight-semibold);\n }\n .msr\\:text-ellipsis {\n text-overflow: ellipsis;\n }\n .msr\\:whitespace-nowrap {\n white-space: nowrap;\n }\n .msr\\:whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .msr\\:text-\\[\\#64748b\\] {\n color: #64748b;\n }\n .msr\\:text-black {\n color: var(--msr-color-black);\n }\n .msr\\:text-black\\/30 {\n color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--msr-color-black) 30%, transparent);\n }\n }\n .msr\\:text-black\\/45 {\n color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--msr-color-black) 45%, transparent);\n }\n }\n .msr\\:text-ink-50 {\n color: var(--msr-color-ink-50);\n }\n .msr\\:text-ink-500 {\n color: var(--msr-color-ink-500);\n }\n .msr\\:text-ink-700 {\n color: var(--msr-color-ink-700);\n }\n .msr\\:text-ink-900 {\n color: var(--msr-color-ink-900);\n }\n .msr\\:text-red-600 {\n color: var(--msr-color-red-600);\n }\n .msr\\:text-white {\n color: var(--msr-color-white);\n }\n .msr\\:text-white\\/60 {\n color: var(--msr-color-white);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--msr-color-white) 60%, transparent);\n }\n }\n .msr\\:tabular-nums {\n --tw-numeric-spacing: tabular-nums;\n font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);\n }\n .msr\\:opacity-0 {\n opacity: 0%;\n }\n .msr\\:opacity-60 {\n opacity: 60%;\n }\n .msr\\:opacity-80 {\n opacity: 80%;\n }\n .msr\\:opacity-100 {\n opacity: 100%;\n }\n .msr\\:shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .msr\\:outline-transparent {\n outline-color: transparent;\n }\n .msr\\:transition-\\[max-width\\,opacity\\,transform\\,padding\\] {\n transition-property: max-width,opacity,transform,padding;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-\\[width\\,opacity\\] {\n transition-property: width,opacity;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-none {\n transition-property: none;\n }\n .msr\\:duration-150 {\n --tw-duration: 150ms;\n transition-duration: 150ms;\n }\n .msr\\:ease-\\[ease\\] {\n --tw-ease: ease;\n transition-timing-function: ease;\n }\n .msr\\:outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .msr\\:select-none {\n -webkit-user-select: none;\n user-select: none;\n }\n @media (hover: hover) {\n .msr\\:group-hover\\:border-ink-200:is(:where(.msr\\:group):hover *) {\n border-color: var(--msr-color-ink-200);\n }\n }\n .msr\\:focus-within\\:rounded-l-\\[5px\\]:focus-within {\n border-top-left-radius: 5px;\n border-bottom-left-radius: 5px;\n }\n .msr\\:focus-within\\:rounded-r-\\[5px\\]:focus-within {\n border-top-right-radius: 5px;\n border-bottom-right-radius: 5px;\n }\n .msr\\:focus-within\\:outline:focus-within {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .msr\\:focus-within\\:outline-1:focus-within {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .msr\\:focus-within\\:outline-offset-\\[-1px\\]:focus-within {\n outline-offset: -1px;\n }\n .msr\\:focus-within\\:outline-\\[\\#0d99ff\\]:focus-within {\n outline-color: #0d99ff;\n }\n .msr\\:focus-within\\:outline-\\[var\\(--msr-accent\\)\\]:focus-within {\n outline-color: var(--msr-accent);\n }\n @media (hover: hover) {\n .msr\\:hover\\:border-ink-200:hover {\n border-color: var(--msr-color-ink-200);\n }\n .msr\\:hover\\:bg-\\[\\#0b8eea\\]:hover {\n background-color: #0b8eea;\n }\n .msr\\:hover\\:bg-\\[\\#0d99ff\\]:hover {\n background-color: #0d99ff;\n }\n .msr\\:hover\\:bg-black\\/4:hover {\n background-color: var(--msr-color-black);\n }\n @supports (color: color-mix(in lab, red, red)) {\n .msr\\:hover\\:bg-black\\/4:hover {\n background-color: color-mix(in oklab, var(--msr-color-black) 4%, transparent);\n }\n }\n .msr\\:hover\\:bg-black\\/10:hover {\n background-color: var(--msr-color-black);\n }\n @supports (color: color-mix(in lab, red, red)) {\n .msr\\:hover\\:bg-black\\/10:hover {\n background-color: color-mix(in oklab, var(--msr-color-black) 10%, transparent);\n }\n }\n .msr\\:hover\\:bg-ink-50:hover {\n background-color: var(--msr-color-ink-50);\n }\n .msr\\:hover\\:bg-red-50:hover {\n background-color: var(--msr-color-red-50);\n }\n .msr\\:hover\\:text-ink-700:hover {\n color: var(--msr-color-ink-700);\n }\n .msr\\:hover\\:text-ink-900:hover {\n color: var(--msr-color-ink-900);\n }\n .msr\\:hover\\:text-white:hover {\n color: var(--msr-color-white);\n }\n .msr\\:hover\\:underline:hover {\n text-decoration-line: underline;\n }\n }\n .msr\\:focus\\:border-\\[\\#0d99ff\\]:focus {\n border-color: #0d99ff;\n }\n .msr\\:focus\\:shadow-\\[inset_0_0_0_1px_\\#0d99ff\\]:focus {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, #0d99ff);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus\\:shadow-\\[inset_0_0_0_1px_var\\(--msr-accent\\)\\]:focus {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, var(--msr-accent));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus\\:outline-none:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n .msr\\:focus-visible\\:border-\\[\\#0d99ff\\]:focus-visible {\n border-color: #0d99ff;\n }\n .msr\\:focus-visible\\:bg-\\[\\#0d99ff\\]:focus-visible {\n background-color: #0d99ff;\n }\n .msr\\:focus-visible\\:text-white:focus-visible {\n color: var(--msr-color-white);\n }\n .msr\\:focus-visible\\:shadow-\\[inset_0_0_0_1px_\\#0d99ff\\]:focus-visible {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, #0d99ff);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus-visible\\:shadow-\\[inset_0_0_0_1px_\\#ef4444\\]:focus-visible {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, #ef4444);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus-visible\\:ring-1:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus-visible\\:ring-\\[\\#0d99ff\\]\\/25:focus-visible {\n --tw-ring-color: color-mix(in oklab, #0d99ff 25%, transparent);\n }\n .msr\\:focus-visible\\:outline-none:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n .msr\\:disabled\\:cursor-default:disabled {\n cursor: default;\n }\n .msr\\:disabled\\:opacity-40:disabled {\n opacity: 40%;\n }\n .msr\\:disabled\\:opacity-45:disabled {\n opacity: 45%;\n }\n @media (prefers-reduced-motion: reduce) {\n .msr\\:motion-reduce\\:transition-none {\n transition-property: none;\n }\n }\n}\n:root, :host {\n --color-ink-50: #f8fafc;\n --color-ink-200: #e2e8f0;\n --color-ink-500: #64748b;\n --color-ink-700: #334155;\n --color-ink-900: #0f172a;\n}\n:host {\n all: initial;\n display: block;\n color-scheme: light;\n color: #0f172a;\n font-family: ui-sans-serif, system-ui, sans-serif;\n font-size: 16px;\n font-weight: 400;\n line-height: 1.5;\n letter-spacing: normal;\n direction: ltr;\n --msr-spacing: 4px;\n}\n*, *::before, *::after {\n box-sizing: border-box;\n}\n@layer base {\n *, ::before, ::after, ::backdrop {\n --tw-border-style: solid;\n --tw-outline-style: solid;\n --tw-shadow: 0 0 #0000;\n --tw-inset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n }\n button, input, select, textarea {\n appearance: none;\n background-color: transparent;\n padding: 0;\n font: inherit;\n color: inherit;\n letter-spacing: inherit;\n }\n}\n.mesurer-toolbar-surface {\n box-shadow: 0 0 0.5px rgba(0, 0, 0, 0.18), 0 3px 8px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n.mesurer-menu-surface {\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);\n}\n.mesurer-color-picker {\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n}\n.mesurer-settings-tabs {\n box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.08);\n}\n.mesurer-settings-tab[aria-selected=\"true\"] {\n box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.12);\n}\n.mesurer-switch-track {\n box-sizing: border-box;\n border: 1px solid #e2e8f0;\n}\n.mesurer-switch-track[data-checked=\"true\"] {\n border-color: #0d99ff;\n}\n.mesurer-control-shell {\n border: 1px solid transparent;\n}\n.mesurer-control-shell:hover {\n border-color: #e2e8f0;\n}\n.mesurer-control-focus:focus-within {\n outline: 1px solid #0d99ff;\n outline-offset: -1px;\n}\n.mesurer-root {\n --msr-spacing: 4px;\n}\nbody [data-mesurer-native-scroll-anchor=\"box\"][data-mesurer-nested-scroll-compensation=\"true\"] {\n position: absolute !important;\n left: calc(anchor(left) + var(--mesurer-nested-scroll-x, 0px)) !important;\n top: calc(anchor(top) + var(--mesurer-nested-scroll-y, 0px)) !important;\n}\nbody [data-mesurer-native-scroll-anchor=\"label\"][data-mesurer-nested-scroll-compensation=\"true\"] {\n position: absolute !important;\n left: calc(anchor(center) + var(--mesurer-nested-scroll-x, 0px)) !important;\n top: calc(anchor(bottom) + 2px + var(--mesurer-nested-scroll-y, 0px)) !important;\n}\nbody [data-mesurer-native-scroll-anchor=\"offset\"][data-mesurer-nested-scroll-compensation=\"true\"] {\n position: absolute !important;\n left: calc(anchor(left) + var(--mesurer-native-anchor-x, 0px) + var(--mesurer-nested-scroll-x, 0px)) !important;\n top: calc(anchor(top) + var(--mesurer-native-anchor-y, 0px) + var(--mesurer-nested-scroll-y, 0px)) !important;\n}\n[data-mesurer-text-edit-ring=\"true\"], [data-mesurer-text-selection-highlight=\"true\"], [data-mesurer-text-caret=\"true\"] {\n z-index: 2147482900 !important;\n}\n[data-mesurer-text-inspector-placement-shell=\"true\"], .mesurer-ti-card {\n z-index: 2147483647 !important;\n}\n[data-mesurer-context-root=\"true\"] [data-mesurer-annotation-scroll-mode=\"document\"] {\n position: absolute !important;\n}\n[data-mesurer-annotation-scroll-mode=\"native-anchor\"] {\n position: fixed !important;\n}\n[data-mesurer-native-scroll-anchor=\"offset\"][data-mesurer-nested-scroll-compensation=\"true\"][data-mesurer-annotation-scroll-mode=\"native-anchor\"] {\n position: fixed !important;\n}\n[data-mesurer-annotation-badge=\"true\"] {\n width: 20px !important;\n height: 20px !important;\n transform: none !important;\n transition: width 150ms ease, height 150ms ease, background 150ms ease, color 150ms ease, box-shadow 150ms ease !important;\n}\n[data-mesurer-annotation-marker=\"true\"][data-mesurer-annotation-highlighted=\"true\"] > [data-mesurer-annotation-badge=\"true\"] {\n width: 24px !important;\n height: 24px !important;\n}\n[data-mesurer-root=\"true\"][data-mesurer-direct-text-edit-active=\"true\"] [data-mesurer-annotation-trigger=\"true\"], [data-mesurer-context-root=\"true\"][data-mesurer-direct-text-edit-active=\"true\"] [data-mesurer-annotation-trigger=\"true\"] {\n display: none !important;\n}\n[data-mesurer-plugin-settings] [role=\"switch\"] {\n grid-template-columns: minmax(0, 1fr) auto;\n}\n[data-mesurer-plugin-settings] [role=\"switch\"] > span:first-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n[data-mesurer-plugin-settings-disclosure=\"plugins\"] {\n width: calc(100% + 16px);\n margin-inline: -8px;\n}\n.mesurer-solid-root {\n position: fixed;\n inset: 0;\n z-index: 2147483000;\n pointer-events: none;\n --msr-spacing: 4px;\n}\n.mesurer-solid-root [role=\"slider\"] {\n border: 0;\n}\n[data-mesurer-distance-kind=\"selection-spacing\"][data-mesurer-distance-active=\"true\"] [data-mesurer-distance-hover-target=\"true\"] {\n opacity: 1 !important;\n}\n[data-mesurer-distance-kind=\"selection-spacing\"][data-mesurer-distance-active=\"true\"]:has([data-mesurer-distance-label-axis=\"x\"]:hover) [data-mesurer-distance-line^=\"vertical\"], [data-mesurer-distance-kind=\"selection-spacing\"][data-mesurer-distance-active=\"true\"]:has([data-mesurer-distance-label-axis=\"y\"]:hover) [data-mesurer-distance-line^=\"horizontal\"], [data-mesurer-distance-kind=\"selection-spacing\"][data-mesurer-distance-active=\"true\"]:has([data-mesurer-distance-label-axis]:hover) [data-mesurer-distance-connector=\"true\"] {\n opacity: 0.16 !important;\n}\nbody.mesurer-solid-xray * {\n outline: solid 1px blue !important;\n}\nbody.mesurer-solid-xray [data-mesurer-root], body.mesurer-solid-xray [data-mesurer-root] *, body.mesurer-solid-xray [data-mesurer-inspector-ui], body.mesurer-solid-xray [data-mesurer-inspector-ui] *, body.mesurer-solid-xray .mesurer-toolbar-surface, body.mesurer-solid-xray .mesurer-toolbar-surface *, body.mesurer-solid-xray .mesurer-ti-box, body.mesurer-solid-xray .mesurer-ti-card, body.mesurer-solid-xray .mesurer-ti-card *, body.mesurer-solid-xray .mesurer-ti-close {\n outline: none !important;\n}\n[data-mesurer-toolbar=\"true\"] > div:has(> [data-mesurer-toolbar-compact-item]) {\n transition: padding-inline 150ms ease;\n}\n[data-mesurer-toolbar=\"true\"][data-mesurer-toolbar-compact=\"true\"] > div:has(> [data-mesurer-toolbar-compact-item]):not(:has(> [data-mesurer-toolbar-compact-item][data-visible=\"true\"])) {\n padding-inline: 0;\n}\n[data-mesurer-selected-measurement=\"true\"]:has(> [data-mesurer-native-scroll-anchor=\"box\"]) {\n display: contents !important;\n}\n@media (prefers-reduced-motion: reduce) {\n [data-mesurer-toolbar=\"true\"] > div:has(> [data-mesurer-toolbar-compact-item]) {\n transition: none;\n }\n [data-mesurer-annotation-badge=\"true\"] {\n transition: none !important;\n }\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) {\n --msr-accent: #0d99ff;\n --msr-surface: #fff;\n --msr-surface-raised: #fff;\n --msr-surface-muted: #f8fafc;\n --msr-content: #18181b;\n --msr-color-white: #fff;\n --msr-color-black: #000;\n --msr-color-ink-50: #f8fafc;\n --msr-color-ink-100: #f1f5f9;\n --msr-color-ink-200: #e2e8f0;\n --msr-color-ink-300: #cbd5e1;\n --msr-color-ink-500: #64748b;\n --msr-color-ink-700: #334155;\n --msr-color-ink-900: #18181b;\n --color-ink-50: var(--msr-color-ink-50);\n --color-ink-100: var(--msr-color-ink-100);\n --color-ink-200: var(--msr-color-ink-200);\n --color-ink-300: var(--msr-color-ink-300);\n --color-ink-500: var(--msr-color-ink-500);\n --color-ink-700: var(--msr-color-ink-700);\n --color-ink-900: var(--msr-color-ink-900);\n --msr-danger-bg: #fef2f2;\n --msr-danger-border: #fecaca;\n --msr-danger-text: #dc2626;\n --msr-danger-solid-bg: #dc2626;\n --msr-danger-solid-hover: #b91c1c;\n --msr-danger-solid-text: #fff;\n --color-red-50: var(--msr-danger-bg);\n --color-red-200: var(--msr-danger-border);\n --color-red-600: var(--msr-danger-text);\n --color-red-700: #b91c1c;\n --msr-control-thumb: #fff;\n --msr-slider-track: rgba(15, 23, 42, 0.16);\n --msr-shadow-toolbar: 0 0 0.4px rgba(0, 0, 0, 0.22),\n 0 6px 18px rgba(0, 0, 0, 0.03),\n 0 3px 9px rgba(0, 0, 0, 0.06),\n 0 1px 1px rgba(0, 0, 0, 0.06);\n --msr-shadow-floating: 0 0 0 0.4px rgba(0, 0, 0, 0.22),\n 0 6px 18px rgba(0, 0, 0, 0.03),\n 0 3px 9px rgba(0, 0, 0, 0.06),\n 0 1px 1px rgba(0, 0, 0, 0.06);\n --msr-shadow-select-menu: var(--msr-shadow-floating);\n color: var(--msr-content);\n color-scheme: light;\n}\n:where( [data-mesurer-root=\"true\"][data-theme=\"dark\"], [data-mesurer-inspector-ui=\"true\"][data-theme=\"dark\"] ) {\n --msr-accent: #0c8ce9;\n --msr-surface: #323232;\n --msr-surface-raised: #3a3a3a;\n --msr-surface-muted: #3a3a3a;\n --msr-content: #f5f5f5;\n --msr-color-white: #f5f5f5;\n --msr-color-black: #171717;\n --msr-color-ink-50: #3a3a3a;\n --msr-color-ink-100: #414141;\n --msr-color-ink-200: #4a4a4a;\n --msr-color-ink-300: #5a5a5a;\n --msr-color-ink-500: #a0a0a0;\n --msr-color-ink-700: #dedede;\n --msr-color-ink-900: #f5f5f5;\n --msr-danger-bg: #3f2020;\n --msr-danger-border: #7f3f46;\n --msr-danger-text: #f87171;\n --msr-danger-solid-bg: #c95058;\n --msr-danger-solid-hover: #b7424b;\n --msr-danger-solid-text: #f5f5f5;\n --color-red-700: #fca5a5;\n --msr-control-thumb: #f4f4f5;\n --msr-slider-track: rgba(245, 245, 245, 0.24);\n --msr-shadow-toolbar: 0 0 0.4px lch(100% 0 0 / 0.10),\n 0 3px 8px lch(0% 0 0 / 0.125),\n 0 2px 5px lch(0% 0 0 / 0.125),\n 0 1px 1px lch(0% 0 0 / 0.125);\n --msr-shadow-floating: 0 0 0 0.4px lch(100% 0 0 / 0.05),\n 0 4px 12px lch(0% 0 0 / 0.12),\n 0 1px 3px lch(0% 0 0 / 0.10);\n --msr-shadow-select-menu: 0 0 0 0.4px lch(100% 0 0 / 0.14),\n 0 4px 12px lch(0% 0 0 / 0.22),\n 0 1px 3px lch(0% 0 0 / 0.18);\n color-scheme: dark;\n}\n@media (prefers-color-scheme: dark) {\n :where( [data-mesurer-root=\"true\"][data-theme=\"system\"], [data-mesurer-inspector-ui=\"true\"][data-theme=\"system\"] ) {\n --msr-accent: #0c8ce9;\n --msr-surface: #323232;\n --msr-surface-raised: #3a3a3a;\n --msr-surface-muted: #3a3a3a;\n --msr-content: #f5f5f5;\n --msr-color-white: #f5f5f5;\n --msr-color-black: #171717;\n --msr-color-ink-50: #3a3a3a;\n --msr-color-ink-100: #414141;\n --msr-color-ink-200: #4a4a4a;\n --msr-color-ink-300: #5a5a5a;\n --msr-color-ink-500: #a0a0a0;\n --msr-color-ink-700: #dedede;\n --msr-color-ink-900: #f5f5f5;\n --msr-danger-bg: #3f2020;\n --msr-danger-border: #7f3f46;\n --msr-danger-text: #f87171;\n --msr-danger-solid-bg: #c95058;\n --msr-danger-solid-hover: #b7424b;\n --msr-danger-solid-text: #f5f5f5;\n --color-red-700: #fca5a5;\n --msr-control-thumb: #f4f4f5;\n --msr-slider-track: rgba(245, 245, 245, 0.24);\n --msr-shadow-toolbar: 0 0 0.4px lch(100% 0 0 / 0.10),\n 0 3px 8px lch(0% 0 0 / 0.125),\n 0 2px 5px lch(0% 0 0 / 0.125),\n 0 1px 1px lch(0% 0 0 / 0.125);\n --msr-shadow-floating: 0 0 0 0.4px lch(100% 0 0 / 0.05),\n 0 4px 12px lch(0% 0 0 / 0.12),\n 0 1px 3px lch(0% 0 0 / 0.10);\n --msr-shadow-select-menu: 0 0 0 0.4px lch(100% 0 0 / 0.14),\n 0 4px 12px lch(0% 0 0 / 0.22),\n 0 1px 3px lch(0% 0 0 / 0.18);\n color-scheme: dark;\n }\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:bg-white\"], :where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:bg-[#fff]\"] {\n background-color: var(--msr-surface) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:text-black\"] {\n color: var(--msr-content) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:hover:bg-black/4\"]:hover, :where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:hover:bg-black/5\"]:hover {\n background-color: var(--msr-content) !important;\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in srgb, var(--msr-content) 6%, transparent) !important;\n }\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) .mesurer-toolbar-surface {\n background-color: var(--msr-surface) !important;\n box-shadow: var(--msr-shadow-toolbar) !important;\n color: var(--msr-content);\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) :is( .mesurer-menu-surface, .mesurer-color-picker, .mesurer-ti-card, [data-mesurer-text-inspector-info=\"true\"], [data-mesurer-annotation-panel=\"true\"], [data-mesurer-annotation-composer=\"true\"] ) {\n background-color: var(--msr-surface-raised) !important;\n color: var(--msr-content) !important;\n box-shadow: var(--msr-shadow-floating) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) .mesurer-switch-track[data-checked=\"false\"], :where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) .mesurer-control-shell {\n background-color: var(--msr-surface-muted) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) .mesurer-switch-track > span {\n background-color: var(--msr-control-thumb) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) :is(.mesurer-settings-select, .mesurer-settings-select-menu) {\n background-color: var(--msr-surface-raised) !important;\n border-color: var(--msr-color-ink-200) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [data-mesurer-rulers=\"true\"] {\n color: var(--msr-color-ink-500) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [data-slider-container=\"true\"] > div:first-child {\n background-color: var(--msr-slider-track) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:bg-[#0d99ff]\"] {\n background-color: var(--msr-accent) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:border-[#0d99ff]\"] {\n border-color: var(--msr-accent) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:hover:bg-[#0d99ff]\"]:hover, :where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:focus-visible:bg-[#0d99ff]\"]:focus-visible {\n background-color: var(--msr-accent) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:text-white\"] {\n color: var(--msr-color-white) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [data-slider-thumb=\"true\"]:focus-visible {\n box-shadow: 0 0 0 1px var(--msr-accent) !important;\n @supports (color: color-mix(in lab, red, red)) {\n box-shadow: 0 0 0 1px color-mix(in srgb, var(--msr-accent) 25%, transparent) !important;\n }\n}\n:where([data-mesurer-root=\"true\"], [data-mesurer-inspector-ui=\"true\"]) {\n --msr-radius-control: 5px;\n}\n@layer utilities {\n .msr\\:rounded-control {\n border-radius: var(--msr-radius-control);\n }\n}\n.mesurer-thin-scrollbar {\n scrollbar-width: thin;\n scrollbar-color: var(--msr-color-ink-200) transparent;\n}\n.mesurer-thin-scrollbar::-webkit-scrollbar {\n width: 4px;\n height: 4px;\n}\n.mesurer-thin-scrollbar::-webkit-scrollbar-track {\n background: transparent;\n}\n.mesurer-thin-scrollbar::-webkit-scrollbar-thumb {\n background: var(--msr-color-ink-200);\n border-radius: var(--msr-radius-control);\n}\n.mesurer-thin-scrollbar:hover {\n scrollbar-color: var(--msr-color-ink-300) transparent;\n}\n.mesurer-thin-scrollbar:hover::-webkit-scrollbar-thumb {\n background: var(--msr-color-ink-300);\n}\n.mesurer-thin-scrollbar::-webkit-scrollbar-corner {\n background: transparent;\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ordinal {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-slashed-zero {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-figure {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-spacing {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-fraction {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-ordinal: initial;\n --tw-slashed-zero: initial;\n --tw-numeric-figure: initial;\n --tw-numeric-spacing: initial;\n --tw-numeric-fraction: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}\n", Vf = 0, Hf = "mesurer:tab-id", Uf = "mesurer-settings", Wf = "mesurer-state", Gf = 80, Kf = (e, t) => {
9856
+ var Bf = "/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@layer properties;\n@layer theme, base, components, utilities;\n@layer theme {\n :root, :host {\n --msr-font-sans: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\",\n \"Noto Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\",\n \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --msr-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\",\n \"Courier New\", monospace;\n --msr-color-red-50: oklch(97.1% 0.013 17.38);\n --msr-color-red-200: oklch(88.5% 0.062 18.334);\n --msr-color-red-600: oklch(57.7% 0.245 27.325);\n --msr-color-black: #000;\n --msr-color-white: #fff;\n --msr-spacing: 0.25rem;\n --msr-font-weight-normal: 400;\n --msr-font-weight-medium: 500;\n --msr-font-weight-semibold: 600;\n --msr-radius-md: 0.375rem;\n --msr-radius-lg: 0.5rem;\n --msr-default-transition-duration: 150ms;\n --msr-default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n --msr-default-font-family: var(--msr-font-sans);\n --msr-default-mono-font-family: var(--msr-font-mono);\n --msr-color-ink-50: #f8fafc;\n --msr-color-ink-200: #e2e8f0;\n --msr-color-ink-500: #64748b;\n --msr-color-ink-700: #334155;\n --msr-color-ink-900: #0f172a;\n }\n}\n@layer base {\n *, ::after, ::before, ::backdrop, ::file-selector-button {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n border: 0 solid;\n }\n html, :host {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n tab-size: 4;\n font-family: var(--msr-default-font-family, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\");\n font-feature-settings: var(--msr-default-font-feature-settings, normal);\n font-variation-settings: var(--msr-default-font-variation-settings, normal);\n -webkit-tap-highlight-color: transparent;\n }\n hr {\n height: 0;\n color: inherit;\n border-top-width: 1px;\n }\n abbr:where([title]) {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n h1, h2, h3, h4, h5, h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n a {\n color: inherit;\n -webkit-text-decoration: inherit;\n text-decoration: inherit;\n }\n b, strong {\n font-weight: bolder;\n }\n code, kbd, samp, pre {\n font-family: var(--msr-default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace);\n font-feature-settings: var(--msr-default-mono-font-feature-settings, normal);\n font-variation-settings: var(--msr-default-mono-font-variation-settings, normal);\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub, sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n table {\n text-indent: 0;\n border-color: inherit;\n border-collapse: collapse;\n }\n :-moz-focusring:where(:not(iframe)) {\n outline: auto;\n }\n progress {\n vertical-align: baseline;\n }\n summary {\n display: list-item;\n }\n ol, ul, menu {\n list-style: none;\n }\n img, svg, video, canvas, audio, iframe, embed, object {\n display: block;\n vertical-align: middle;\n }\n img, video {\n max-width: 100%;\n height: auto;\n }\n button, input, select, optgroup, textarea, ::file-selector-button {\n font: inherit;\n font-feature-settings: inherit;\n font-variation-settings: inherit;\n letter-spacing: inherit;\n color: inherit;\n border-radius: 0;\n background-color: transparent;\n opacity: 1;\n }\n :where(select:is([multiple], [size])) optgroup {\n font-weight: bolder;\n }\n :where(select:is([multiple], [size])) optgroup option {\n padding-inline-start: 20px;\n }\n ::file-selector-button {\n margin-inline-end: 4px;\n }\n ::placeholder {\n opacity: 1;\n }\n @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) {\n ::placeholder {\n color: currentcolor;\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, currentcolor 50%, transparent);\n }\n }\n }\n textarea {\n resize: vertical;\n }\n ::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-date-and-time-value {\n min-height: 1lh;\n text-align: inherit;\n }\n ::-webkit-datetime-edit {\n display: inline-flex;\n }\n ::-webkit-datetime-edit-fields-wrapper {\n padding: 0;\n }\n ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {\n padding-block: 0;\n }\n ::-webkit-calendar-picker-indicator {\n line-height: 1;\n }\n :-moz-ui-invalid {\n box-shadow: none;\n }\n button, input:where([type=\"button\"], [type=\"reset\"], [type=\"submit\"]), ::file-selector-button {\n appearance: button;\n }\n ::-webkit-inner-spin-button, ::-webkit-outer-spin-button {\n height: auto;\n }\n [hidden]:where(:not([hidden=\"until-found\"])) {\n display: none !important;\n }\n}\n@layer utilities {\n .msr\\:pointer-events-auto {\n pointer-events: auto;\n }\n .msr\\:pointer-events-none {\n pointer-events: none;\n }\n .msr\\:absolute {\n position: absolute;\n }\n .msr\\:fixed {\n position: fixed;\n }\n .msr\\:relative {\n position: relative;\n }\n .msr\\:inset-0 {\n inset: 0px;\n }\n .msr\\:top-0 {\n top: 0px;\n }\n .msr\\:top-1\\/2 {\n top: calc(1 / 2 * 100%);\n }\n .msr\\:top-\\[18px\\] {\n top: 18px;\n }\n .msr\\:top-full {\n top: 100%;\n }\n .msr\\:right-0 {\n right: 0px;\n }\n .msr\\:right-2 {\n right: calc(var(--msr-spacing) * 2);\n }\n .msr\\:right-\\[8px\\] {\n right: 8px;\n }\n .msr\\:bottom-0 {\n bottom: 0px;\n }\n .msr\\:bottom-full {\n bottom: 100%;\n }\n .msr\\:left-0 {\n left: 0px;\n }\n .msr\\:left-1\\/2 {\n left: calc(1 / 2 * 100%);\n }\n .msr\\:left-\\[8px\\] {\n left: 8px;\n }\n .msr\\:left-\\[18px\\] {\n left: 18px;\n }\n .msr\\:z-10 {\n z-index: 10;\n }\n .msr\\:z-\\[60\\] {\n z-index: 60;\n }\n .msr\\:z-\\[70\\] {\n z-index: 70;\n }\n .msr\\:z-\\[80\\] {\n z-index: 80;\n }\n .msr\\:z-\\[90\\] {\n z-index: 90;\n }\n .msr\\:z-\\[94\\] {\n z-index: 94;\n }\n .msr\\:z-\\[95\\] {\n z-index: 95;\n }\n .msr\\:col-span-2 {\n grid-column: span 2 / span 2;\n }\n .msr\\:col-start-1 {\n grid-column-start: 1;\n }\n .msr\\:col-start-2 {\n grid-column-start: 2;\n }\n .msr\\:col-start-3 {\n grid-column-start: 3;\n }\n .msr\\:m-0 {\n margin: 0px;\n }\n .msr\\:mx-1 {\n margin-inline: var(--msr-spacing);\n }\n .msr\\:mt-1 {\n margin-top: var(--msr-spacing);\n }\n .msr\\:mt-1\\.5 {\n margin-top: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:mt-2 {\n margin-top: calc(var(--msr-spacing) * 2);\n }\n .msr\\:mb-1 {\n margin-bottom: var(--msr-spacing);\n }\n .msr\\:mb-2 {\n margin-bottom: calc(var(--msr-spacing) * 2);\n }\n .msr\\:-ml-1 {\n margin-left: calc(var(--msr-spacing) * -1);\n }\n .msr\\:ml-1 {\n margin-left: var(--msr-spacing);\n }\n .msr\\:ml-2 {\n margin-left: calc(var(--msr-spacing) * 2);\n }\n .msr\\:ml-6 {\n margin-left: calc(var(--msr-spacing) * 6);\n }\n .msr\\:box-border {\n box-sizing: border-box;\n }\n .msr\\:block {\n display: block;\n }\n .msr\\:flex {\n display: flex;\n }\n .msr\\:grid {\n display: grid;\n }\n .msr\\:inline-flex {\n display: inline-flex;\n }\n .msr\\:size-1\\.5 {\n width: calc(var(--msr-spacing) * 1.5);\n height: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:size-3 {\n width: calc(var(--msr-spacing) * 3);\n height: calc(var(--msr-spacing) * 3);\n }\n .msr\\:size-4 {\n width: calc(var(--msr-spacing) * 4);\n height: calc(var(--msr-spacing) * 4);\n }\n .msr\\:size-6 {\n width: calc(var(--msr-spacing) * 6);\n height: calc(var(--msr-spacing) * 6);\n }\n .msr\\:size-7 {\n width: calc(var(--msr-spacing) * 7);\n height: calc(var(--msr-spacing) * 7);\n }\n .msr\\:size-8 {\n width: calc(var(--msr-spacing) * 8);\n height: calc(var(--msr-spacing) * 8);\n }\n .msr\\:size-\\[10px\\] {\n width: 10px;\n height: 10px;\n }\n .msr\\:size-\\[18px\\] {\n width: 18px;\n height: 18px;\n }\n .msr\\:size-full {\n width: 100%;\n height: 100%;\n }\n .msr\\:h-5 {\n height: calc(var(--msr-spacing) * 5);\n }\n .msr\\:h-6 {\n height: calc(var(--msr-spacing) * 6);\n }\n .msr\\:h-7 {\n height: calc(var(--msr-spacing) * 7);\n }\n .msr\\:h-8 {\n height: calc(var(--msr-spacing) * 8);\n }\n .msr\\:h-20 {\n height: calc(var(--msr-spacing) * 20);\n }\n .msr\\:h-\\[14px\\] {\n height: 14px;\n }\n .msr\\:h-\\[18px\\] {\n height: 18px;\n }\n .msr\\:h-\\[19px\\] {\n height: 19px;\n }\n .msr\\:h-full {\n height: 100%;\n }\n .msr\\:h-px {\n height: 1px;\n }\n .msr\\:max-h-36 {\n max-height: calc(var(--msr-spacing) * 36);\n }\n .msr\\:max-h-\\[220px\\] {\n max-height: 220px;\n }\n .msr\\:max-h-\\[calc\\(100vh-16px\\)\\] {\n max-height: calc(100vh - 16px);\n }\n .msr\\:max-h-\\[min\\(70vh\\,34rem\\)\\] {\n max-height: min(70vh, 34rem);\n }\n .msr\\:max-h-\\[min\\(320px\\,calc\\(100vh-16px\\)\\)\\] {\n max-height: min(320px, calc(100vh - 16px));\n }\n .msr\\:min-h-0 {\n min-height: 0px;\n }\n .msr\\:w-0 {\n width: 0px;\n }\n .msr\\:w-3 {\n width: calc(var(--msr-spacing) * 3);\n }\n .msr\\:w-4 {\n width: calc(var(--msr-spacing) * 4);\n }\n .msr\\:w-5 {\n width: calc(var(--msr-spacing) * 5);\n }\n .msr\\:w-6 {\n width: calc(var(--msr-spacing) * 6);\n }\n .msr\\:w-9 {\n width: calc(var(--msr-spacing) * 9);\n }\n .msr\\:w-12 {\n width: calc(var(--msr-spacing) * 12);\n }\n .msr\\:w-44 {\n width: calc(var(--msr-spacing) * 44);\n }\n .msr\\:w-60 {\n width: calc(var(--msr-spacing) * 60);\n }\n .msr\\:w-\\[18px\\] {\n width: 18px;\n }\n .msr\\:w-\\[26px\\] {\n width: 26px;\n }\n .msr\\:w-\\[272px\\] {\n width: 272px;\n }\n .msr\\:w-full {\n width: 100%;\n }\n .msr\\:w-px {\n width: 1px;\n }\n .msr\\:max-w-0 {\n max-width: 0px;\n }\n .msr\\:max-w-20 {\n max-width: calc(var(--msr-spacing) * 20);\n }\n .msr\\:max-w-\\[calc\\(100vw-16px\\)\\] {\n max-width: calc(100vw - 16px);\n }\n .msr\\:min-w-0 {\n min-width: 0px;\n }\n .msr\\:min-w-36 {\n min-width: calc(var(--msr-spacing) * 36);\n }\n .msr\\:flex-1 {\n flex: 1;\n }\n .msr\\:flex-none {\n flex: none;\n }\n .msr\\:shrink-0 {\n flex-shrink: 0;\n }\n .msr\\:-translate-x-1 {\n --tw-translate-x: calc(var(--msr-spacing) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .msr\\:-translate-x-1\\/2 {\n --tw-translate-x: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .msr\\:translate-x-0 {\n --tw-translate-x: 0px;\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .msr\\:-translate-y-1\\/2 {\n --tw-translate-y: calc(calc(1 / 2 * 100%) * -1);\n translate: var(--tw-translate-x) var(--tw-translate-y);\n }\n .msr\\:-rotate-90 {\n rotate: calc(90deg * -1);\n }\n .msr\\:rotate-45 {\n rotate: 45deg;\n }\n .msr\\:rotate-90 {\n rotate: 90deg;\n }\n .msr\\:rotate-180 {\n rotate: 180deg;\n }\n .msr\\:rotate-\\[45deg\\] {\n rotate: 45deg;\n }\n .msr\\:rotate-\\[135deg\\] {\n rotate: 135deg;\n }\n .msr\\:cursor-crosshair {\n cursor: crosshair;\n }\n .msr\\:cursor-default {\n cursor: default;\n }\n .msr\\:cursor-pointer {\n cursor: pointer;\n }\n .msr\\:touch-none {\n touch-action: none;\n }\n .msr\\:resize-none {\n resize: none;\n }\n .msr\\:list-none {\n list-style-type: none;\n }\n .msr\\:appearance-none {\n appearance: none;\n }\n .msr\\:grid-cols-\\[78px_150px\\] {\n grid-template-columns: 78px 150px;\n }\n .msr\\:grid-cols-\\[78px_156px\\] {\n grid-template-columns: 78px 156px;\n }\n .msr\\:grid-cols-\\[78px_minmax\\(0\\,1fr\\)\\] {\n grid-template-columns: 78px minmax(0,1fr);\n }\n .msr\\:grid-cols-\\[minmax\\(0\\,1fr\\)_28px_34px\\] {\n grid-template-columns: minmax(0,1fr) 28px 34px;\n }\n .msr\\:flex-col {\n flex-direction: column;\n }\n .msr\\:items-center {\n align-items: center;\n }\n .msr\\:items-start {\n align-items: flex-start;\n }\n .msr\\:items-stretch {\n align-items: stretch;\n }\n .msr\\:justify-between {\n justify-content: space-between;\n }\n .msr\\:justify-center {\n justify-content: center;\n }\n .msr\\:justify-end {\n justify-content: flex-end;\n }\n .msr\\:gap-0 {\n gap: 0px;\n }\n .msr\\:gap-0\\.5 {\n gap: calc(var(--msr-spacing) * 0.5);\n }\n .msr\\:gap-1 {\n gap: var(--msr-spacing);\n }\n .msr\\:gap-1\\.5 {\n gap: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:gap-2 {\n gap: calc(var(--msr-spacing) * 2);\n }\n .msr\\:gap-3 {\n gap: calc(var(--msr-spacing) * 3);\n }\n .msr\\:gap-px {\n gap: 1px;\n }\n .msr\\:gap-x-3 {\n column-gap: calc(var(--msr-spacing) * 3);\n }\n .msr\\:gap-y-1 {\n row-gap: var(--msr-spacing);\n }\n .msr\\:self-stretch {\n align-self: stretch;\n }\n .msr\\:justify-self-end {\n justify-self: flex-end;\n }\n .msr\\:truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .msr\\:overflow-auto {\n overflow: auto;\n }\n .msr\\:overflow-hidden {\n overflow: hidden;\n }\n .msr\\:overflow-visible {\n overflow: visible;\n }\n .msr\\:overflow-x-hidden {\n overflow-x: hidden;\n }\n .msr\\:overflow-y-auto {\n overflow-y: auto;\n }\n .msr\\:rounded {\n border-radius: 0.25rem;\n }\n .msr\\:rounded-\\[3px\\] {\n border-radius: 3px;\n }\n .msr\\:rounded-\\[5px\\] {\n border-radius: 5px;\n }\n .msr\\:rounded-\\[6px\\] {\n border-radius: 6px;\n }\n .msr\\:rounded-\\[7px\\] {\n border-radius: 7px;\n }\n .msr\\:rounded-\\[8px\\] {\n border-radius: 8px;\n }\n .msr\\:rounded-\\[10px\\] {\n border-radius: 10px;\n }\n .msr\\:rounded-\\[12px\\] {\n border-radius: 12px;\n }\n .msr\\:rounded-full {\n border-radius: calc(infinity * 1px);\n }\n .msr\\:rounded-lg {\n border-radius: var(--msr-radius-lg);\n }\n .msr\\:rounded-md {\n border-radius: var(--msr-radius-md);\n }\n .msr\\:rounded-none {\n border-radius: 0;\n }\n .msr\\:border {\n border-style: var(--tw-border-style);\n border-width: 1px;\n }\n .msr\\:border-0 {\n border-style: var(--tw-border-style);\n border-width: 0px;\n }\n .msr\\:border-t {\n border-top-style: var(--tw-border-style);\n border-top-width: 1px;\n }\n .msr\\:border-t-2 {\n border-top-style: var(--tw-border-style);\n border-top-width: 2px;\n }\n .msr\\:border-r {\n border-right-style: var(--tw-border-style);\n border-right-width: 1px;\n }\n .msr\\:border-b {\n border-bottom-style: var(--tw-border-style);\n border-bottom-width: 1px;\n }\n .msr\\:border-l {\n border-left-style: var(--tw-border-style);\n border-left-width: 1px;\n }\n .msr\\:border-dashed {\n --tw-border-style: dashed;\n border-style: dashed;\n }\n .msr\\:border-dotted {\n --tw-border-style: dotted;\n border-style: dotted;\n }\n .msr\\:border-solid {\n --tw-border-style: solid;\n border-style: solid;\n }\n .msr\\:border-\\[\\#0d99ff\\] {\n border-color: #0d99ff;\n }\n .msr\\:border-\\[\\#2563eb\\]\\/70 {\n border-color: color-mix(in oklab, #2563eb 70%, transparent);\n }\n .msr\\:border-black\\/8 {\n border-color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--msr-color-black) 8%, transparent);\n }\n }\n .msr\\:border-black\\/10 {\n border-color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--msr-color-black) 10%, transparent);\n }\n }\n .msr\\:border-black\\/15 {\n border-color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n border-color: color-mix(in oklab, var(--msr-color-black) 15%, transparent);\n }\n }\n .msr\\:border-ink-200 {\n border-color: var(--msr-color-ink-200);\n }\n .msr\\:border-ink-500 {\n border-color: var(--msr-color-ink-500);\n }\n .msr\\:border-ink-700 {\n border-color: var(--msr-color-ink-700);\n }\n .msr\\:border-red-200 {\n border-color: var(--msr-color-red-200);\n }\n .msr\\:border-transparent {\n border-color: transparent;\n }\n .msr\\:bg-\\[\\#0d99ff\\] {\n background-color: #0d99ff;\n }\n .msr\\:bg-\\[\\#0d99ff\\]\\/10 {\n background-color: color-mix(in oklab, #0d99ff 10%, transparent);\n }\n .msr\\:bg-\\[\\#2563eb\\] {\n background-color: #2563eb;\n }\n .msr\\:bg-\\[\\#fff\\] {\n background-color: #fff;\n }\n .msr\\:bg-black {\n background-color: var(--msr-color-black);\n }\n .msr\\:bg-black\\/10 {\n background-color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--msr-color-black) 10%, transparent);\n }\n }\n .msr\\:bg-ink-50 {\n background-color: var(--msr-color-ink-50);\n }\n .msr\\:bg-ink-50\\/40 {\n background-color: var(--msr-color-ink-50);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--msr-color-ink-50) 40%, transparent);\n }\n }\n .msr\\:bg-ink-900\\/90 {\n background-color: var(--msr-color-ink-900);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--msr-color-ink-900) 90%, transparent);\n }\n }\n .msr\\:bg-transparent {\n background-color: transparent;\n }\n .msr\\:bg-white {\n background-color: var(--msr-color-white);\n }\n .msr\\:bg-white\\/60 {\n background-color: var(--msr-color-white);\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in oklab, var(--msr-color-white) 60%, transparent);\n }\n }\n .msr\\:p-0 {\n padding: 0px;\n }\n .msr\\:p-1 {\n padding: var(--msr-spacing);\n }\n .msr\\:p-1\\.5 {\n padding: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:p-2 {\n padding: calc(var(--msr-spacing) * 2);\n }\n .msr\\:p-3 {\n padding: calc(var(--msr-spacing) * 3);\n }\n .msr\\:p-px {\n padding: 1px;\n }\n .msr\\:px-0 {\n padding-inline: 0px;\n }\n .msr\\:px-0\\.5 {\n padding-inline: calc(var(--msr-spacing) * 0.5);\n }\n .msr\\:px-1 {\n padding-inline: var(--msr-spacing);\n }\n .msr\\:px-1\\.5 {\n padding-inline: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:px-2 {\n padding-inline: calc(var(--msr-spacing) * 2);\n }\n .msr\\:px-2\\.5 {\n padding-inline: calc(var(--msr-spacing) * 2.5);\n }\n .msr\\:py-0 {\n padding-block: 0px;\n }\n .msr\\:py-0\\.5 {\n padding-block: calc(var(--msr-spacing) * 0.5);\n }\n .msr\\:py-1 {\n padding-block: var(--msr-spacing);\n }\n .msr\\:py-1\\.5 {\n padding-block: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:py-2 {\n padding-block: calc(var(--msr-spacing) * 2);\n }\n .msr\\:pt-0\\.5 {\n padding-top: calc(var(--msr-spacing) * 0.5);\n }\n .msr\\:pt-2 {\n padding-top: calc(var(--msr-spacing) * 2);\n }\n .msr\\:pr-2 {\n padding-right: calc(var(--msr-spacing) * 2);\n }\n .msr\\:pr-6 {\n padding-right: calc(var(--msr-spacing) * 6);\n }\n .msr\\:pb-1 {\n padding-bottom: var(--msr-spacing);\n }\n .msr\\:pb-1\\.5 {\n padding-bottom: calc(var(--msr-spacing) * 1.5);\n }\n .msr\\:pb-2 {\n padding-bottom: calc(var(--msr-spacing) * 2);\n }\n .msr\\:text-center {\n text-align: center;\n }\n .msr\\:text-left {\n text-align: left;\n }\n .msr\\:font-mono {\n font-family: var(--msr-font-mono);\n }\n .msr\\:text-\\[9px\\] {\n font-size: 9px;\n }\n .msr\\:text-\\[10px\\] {\n font-size: 10px;\n }\n .msr\\:text-\\[11px\\] {\n font-size: 11px;\n }\n .msr\\:text-\\[12px\\] {\n font-size: 12px;\n }\n .msr\\:text-\\[14px\\] {\n font-size: 14px;\n }\n .msr\\:leading-4 {\n --tw-leading: calc(var(--msr-spacing) * 4);\n line-height: calc(var(--msr-spacing) * 4);\n }\n .msr\\:leading-\\[1\\.4\\] {\n --tw-leading: 1.4;\n line-height: 1.4;\n }\n .msr\\:leading-\\[1\\.45\\] {\n --tw-leading: 1.45;\n line-height: 1.45;\n }\n .msr\\:leading-\\[18px\\] {\n --tw-leading: 18px;\n line-height: 18px;\n }\n .msr\\:leading-none {\n --tw-leading: 1;\n line-height: 1;\n }\n .msr\\:font-medium {\n --tw-font-weight: var(--msr-font-weight-medium);\n font-weight: var(--msr-font-weight-medium);\n }\n .msr\\:font-normal {\n --tw-font-weight: var(--msr-font-weight-normal);\n font-weight: var(--msr-font-weight-normal);\n }\n .msr\\:font-semibold {\n --tw-font-weight: var(--msr-font-weight-semibold);\n font-weight: var(--msr-font-weight-semibold);\n }\n .msr\\:text-ellipsis {\n text-overflow: ellipsis;\n }\n .msr\\:whitespace-nowrap {\n white-space: nowrap;\n }\n .msr\\:whitespace-pre-wrap {\n white-space: pre-wrap;\n }\n .msr\\:text-\\[\\#64748b\\] {\n color: #64748b;\n }\n .msr\\:text-black {\n color: var(--msr-color-black);\n }\n .msr\\:text-black\\/30 {\n color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--msr-color-black) 30%, transparent);\n }\n }\n .msr\\:text-black\\/45 {\n color: var(--msr-color-black);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--msr-color-black) 45%, transparent);\n }\n }\n .msr\\:text-ink-50 {\n color: var(--msr-color-ink-50);\n }\n .msr\\:text-ink-500 {\n color: var(--msr-color-ink-500);\n }\n .msr\\:text-ink-700 {\n color: var(--msr-color-ink-700);\n }\n .msr\\:text-ink-900 {\n color: var(--msr-color-ink-900);\n }\n .msr\\:text-red-600 {\n color: var(--msr-color-red-600);\n }\n .msr\\:text-white {\n color: var(--msr-color-white);\n }\n .msr\\:text-white\\/60 {\n color: var(--msr-color-white);\n @supports (color: color-mix(in lab, red, red)) {\n color: color-mix(in oklab, var(--msr-color-white) 60%, transparent);\n }\n }\n .msr\\:tabular-nums {\n --tw-numeric-spacing: tabular-nums;\n font-variant-numeric: var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,);\n }\n .msr\\:opacity-0 {\n opacity: 0%;\n }\n .msr\\:opacity-60 {\n opacity: 60%;\n }\n .msr\\:opacity-80 {\n opacity: 80%;\n }\n .msr\\:opacity-100 {\n opacity: 100%;\n }\n .msr\\:shadow-lg {\n --tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:shadow-sm {\n --tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:outline {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .msr\\:outline-transparent {\n outline-color: transparent;\n }\n .msr\\:transition-\\[max-width\\,opacity\\,transform\\,padding\\] {\n transition-property: max-width,opacity,transform,padding;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-\\[width\\,opacity\\] {\n transition-property: width,opacity;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-colors {\n transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-opacity {\n transition-property: opacity;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-transform {\n transition-property: transform, translate, scale, rotate;\n transition-timing-function: var(--tw-ease, var(--msr-default-transition-timing-function));\n transition-duration: var(--tw-duration, var(--msr-default-transition-duration));\n }\n .msr\\:transition-none {\n transition-property: none;\n }\n .msr\\:duration-150 {\n --tw-duration: 150ms;\n transition-duration: 150ms;\n }\n .msr\\:ease-\\[ease\\] {\n --tw-ease: ease;\n transition-timing-function: ease;\n }\n .msr\\:outline-none {\n --tw-outline-style: none;\n outline-style: none;\n }\n .msr\\:select-none {\n -webkit-user-select: none;\n user-select: none;\n }\n @media (hover: hover) {\n .msr\\:group-hover\\:border-ink-200:is(:where(.msr\\:group):hover *) {\n border-color: var(--msr-color-ink-200);\n }\n }\n .msr\\:focus-within\\:rounded-l-\\[5px\\]:focus-within {\n border-top-left-radius: 5px;\n border-bottom-left-radius: 5px;\n }\n .msr\\:focus-within\\:rounded-r-\\[5px\\]:focus-within {\n border-top-right-radius: 5px;\n border-bottom-right-radius: 5px;\n }\n .msr\\:focus-within\\:outline:focus-within {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .msr\\:focus-within\\:outline-1:focus-within {\n outline-style: var(--tw-outline-style);\n outline-width: 1px;\n }\n .msr\\:focus-within\\:outline-offset-\\[-1px\\]:focus-within {\n outline-offset: -1px;\n }\n .msr\\:focus-within\\:outline-\\[\\#0d99ff\\]:focus-within {\n outline-color: #0d99ff;\n }\n .msr\\:focus-within\\:outline-\\[var\\(--msr-accent\\)\\]:focus-within {\n outline-color: var(--msr-accent);\n }\n @media (hover: hover) {\n .msr\\:hover\\:border-ink-200:hover {\n border-color: var(--msr-color-ink-200);\n }\n .msr\\:hover\\:bg-\\[\\#0b8eea\\]:hover {\n background-color: #0b8eea;\n }\n .msr\\:hover\\:bg-\\[\\#0d99ff\\]:hover {\n background-color: #0d99ff;\n }\n .msr\\:hover\\:bg-black\\/4:hover {\n background-color: var(--msr-color-black);\n }\n @supports (color: color-mix(in lab, red, red)) {\n .msr\\:hover\\:bg-black\\/4:hover {\n background-color: color-mix(in oklab, var(--msr-color-black) 4%, transparent);\n }\n }\n .msr\\:hover\\:bg-black\\/10:hover {\n background-color: var(--msr-color-black);\n }\n @supports (color: color-mix(in lab, red, red)) {\n .msr\\:hover\\:bg-black\\/10:hover {\n background-color: color-mix(in oklab, var(--msr-color-black) 10%, transparent);\n }\n }\n .msr\\:hover\\:bg-ink-50:hover {\n background-color: var(--msr-color-ink-50);\n }\n .msr\\:hover\\:bg-red-50:hover {\n background-color: var(--msr-color-red-50);\n }\n .msr\\:hover\\:text-ink-700:hover {\n color: var(--msr-color-ink-700);\n }\n .msr\\:hover\\:text-ink-900:hover {\n color: var(--msr-color-ink-900);\n }\n .msr\\:hover\\:text-white:hover {\n color: var(--msr-color-white);\n }\n .msr\\:hover\\:underline:hover {\n text-decoration-line: underline;\n }\n }\n .msr\\:focus\\:border-\\[\\#0d99ff\\]:focus {\n border-color: #0d99ff;\n }\n .msr\\:focus\\:shadow-\\[inset_0_0_0_1px_\\#0d99ff\\]:focus {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, #0d99ff);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus\\:shadow-\\[inset_0_0_0_1px_var\\(--msr-accent\\)\\]:focus {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, var(--msr-accent));\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus\\:outline-none:focus {\n --tw-outline-style: none;\n outline-style: none;\n }\n .msr\\:focus-visible\\:border-\\[\\#0d99ff\\]:focus-visible {\n border-color: #0d99ff;\n }\n .msr\\:focus-visible\\:bg-\\[\\#0d99ff\\]:focus-visible {\n background-color: #0d99ff;\n }\n .msr\\:focus-visible\\:text-white:focus-visible {\n color: var(--msr-color-white);\n }\n .msr\\:focus-visible\\:shadow-\\[inset_0_0_0_1px_\\#0d99ff\\]:focus-visible {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, #0d99ff);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus-visible\\:shadow-\\[inset_0_0_0_1px_\\#ef4444\\]:focus-visible {\n --tw-shadow: inset 0 0 0 1px var(--tw-shadow-color, #ef4444);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus-visible\\:ring-1:focus-visible {\n --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);\n box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);\n }\n .msr\\:focus-visible\\:ring-\\[\\#0d99ff\\]\\/25:focus-visible {\n --tw-ring-color: color-mix(in oklab, #0d99ff 25%, transparent);\n }\n .msr\\:focus-visible\\:outline-none:focus-visible {\n --tw-outline-style: none;\n outline-style: none;\n }\n .msr\\:disabled\\:cursor-default:disabled {\n cursor: default;\n }\n .msr\\:disabled\\:opacity-40:disabled {\n opacity: 40%;\n }\n .msr\\:disabled\\:opacity-45:disabled {\n opacity: 45%;\n }\n @media (prefers-reduced-motion: reduce) {\n .msr\\:motion-reduce\\:transition-none {\n transition-property: none;\n }\n }\n}\n:root, :host {\n --color-ink-50: #f8fafc;\n --color-ink-200: #e2e8f0;\n --color-ink-500: #64748b;\n --color-ink-700: #334155;\n --color-ink-900: #0f172a;\n}\n:host {\n all: initial;\n display: block;\n color-scheme: light;\n color: #0f172a;\n font-family: ui-sans-serif, system-ui, sans-serif;\n font-size: 16px;\n font-weight: 400;\n line-height: 1.5;\n letter-spacing: normal;\n direction: ltr;\n --msr-spacing: 4px;\n}\n*, *::before, *::after {\n box-sizing: border-box;\n}\n@layer base {\n *, ::before, ::after, ::backdrop {\n --tw-border-style: solid;\n --tw-outline-style: solid;\n --tw-shadow: 0 0 #0000;\n --tw-inset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n }\n button, input, select, textarea {\n appearance: none;\n background-color: transparent;\n padding: 0;\n font: inherit;\n color: inherit;\n letter-spacing: inherit;\n }\n}\n.mesurer-toolbar-surface {\n box-shadow: 0 0 0.5px rgba(0, 0, 0, 0.18), 0 3px 8px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n.mesurer-menu-surface {\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);\n}\n.mesurer-color-picker {\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);\n}\n.mesurer-settings-tabs {\n box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.08);\n}\n.mesurer-settings-tab[aria-selected=\"true\"] {\n box-shadow: 0 0 0 1px rgba(15, 23, 42, 0.12);\n}\n.mesurer-switch-track {\n box-sizing: border-box;\n border: 1px solid #e2e8f0;\n}\n.mesurer-switch-track[data-checked=\"true\"] {\n border-color: #0d99ff;\n}\n.mesurer-control-shell {\n border: 1px solid transparent;\n}\n.mesurer-control-shell:hover {\n border-color: #e2e8f0;\n}\n.mesurer-control-focus:focus-within {\n outline: 1px solid #0d99ff;\n outline-offset: -1px;\n}\n.mesurer-root {\n --msr-spacing: 4px;\n}\nbody [data-mesurer-native-scroll-anchor=\"box\"][data-mesurer-nested-scroll-compensation=\"true\"] {\n position: absolute !important;\n left: calc(anchor(left) + var(--mesurer-nested-scroll-x, 0px)) !important;\n top: calc(anchor(top) + var(--mesurer-nested-scroll-y, 0px)) !important;\n}\nbody [data-mesurer-native-scroll-anchor=\"label\"][data-mesurer-nested-scroll-compensation=\"true\"] {\n position: absolute !important;\n left: calc(anchor(center) + var(--mesurer-nested-scroll-x, 0px)) !important;\n top: calc(anchor(bottom) + 2px + var(--mesurer-nested-scroll-y, 0px)) !important;\n}\nbody [data-mesurer-native-scroll-anchor=\"offset\"][data-mesurer-nested-scroll-compensation=\"true\"] {\n position: absolute !important;\n left: calc(anchor(left) + var(--mesurer-native-anchor-x, 0px) + var(--mesurer-nested-scroll-x, 0px)) !important;\n top: calc(anchor(top) + var(--mesurer-native-anchor-y, 0px) + var(--mesurer-nested-scroll-y, 0px)) !important;\n}\n[data-mesurer-text-edit-ring=\"true\"], [data-mesurer-text-selection-highlight=\"true\"], [data-mesurer-text-caret=\"true\"] {\n z-index: 2147482900 !important;\n}\n[data-mesurer-text-inspector-placement-shell=\"true\"], .mesurer-ti-card {\n z-index: 2147483647 !important;\n}\n[data-mesurer-context-root=\"true\"] [data-mesurer-annotation-scroll-mode=\"document\"] {\n position: absolute !important;\n}\n[data-mesurer-annotation-scroll-mode=\"native-anchor\"] {\n position: fixed !important;\n}\n[data-mesurer-native-scroll-anchor=\"offset\"][data-mesurer-nested-scroll-compensation=\"true\"][data-mesurer-annotation-scroll-mode=\"native-anchor\"] {\n position: fixed !important;\n}\n[data-mesurer-annotation-badge=\"true\"] {\n width: 20px !important;\n height: 20px !important;\n transform: none !important;\n transition: width 150ms ease, height 150ms ease, background 150ms ease, color 150ms ease, box-shadow 150ms ease !important;\n}\n[data-mesurer-annotation-marker=\"true\"][data-mesurer-annotation-highlighted=\"true\"] > [data-mesurer-annotation-badge=\"true\"] {\n width: 24px !important;\n height: 24px !important;\n}\n[data-mesurer-root=\"true\"][data-mesurer-direct-text-edit-active=\"true\"] [data-mesurer-annotation-trigger=\"true\"], [data-mesurer-context-root=\"true\"][data-mesurer-direct-text-edit-active=\"true\"] [data-mesurer-annotation-trigger=\"true\"] {\n display: none !important;\n}\n[data-mesurer-plugin-settings] [role=\"switch\"] {\n grid-template-columns: minmax(0, 1fr) auto;\n}\n[data-mesurer-plugin-settings] [role=\"switch\"] > span:first-child {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n[data-mesurer-plugin-settings-disclosure=\"plugins\"] {\n width: calc(100% + 16px);\n margin-inline: -8px;\n}\n.mesurer-solid-root {\n position: fixed;\n inset: 0;\n z-index: 2147483000;\n pointer-events: none;\n --msr-spacing: 4px;\n}\n.mesurer-solid-root [role=\"slider\"] {\n border: 0;\n}\n[data-mesurer-distance-kind=\"selection-spacing\"][data-mesurer-distance-active=\"true\"] [data-mesurer-distance-hover-target=\"true\"] {\n opacity: 1 !important;\n}\n[data-mesurer-distance-kind=\"selection-spacing\"][data-mesurer-distance-active=\"true\"]:has([data-mesurer-distance-label-axis=\"x\"]:hover) [data-mesurer-distance-line^=\"vertical\"], [data-mesurer-distance-kind=\"selection-spacing\"][data-mesurer-distance-active=\"true\"]:has([data-mesurer-distance-label-axis=\"y\"]:hover) [data-mesurer-distance-line^=\"horizontal\"], [data-mesurer-distance-kind=\"selection-spacing\"][data-mesurer-distance-active=\"true\"]:has([data-mesurer-distance-label-axis]:hover) [data-mesurer-distance-connector=\"true\"] {\n opacity: 0.16 !important;\n}\nbody.mesurer-solid-xray * {\n outline: solid 1px blue !important;\n}\nbody.mesurer-solid-xray [data-mesurer-root], body.mesurer-solid-xray [data-mesurer-root] *, body.mesurer-solid-xray [data-mesurer-inspector-ui], body.mesurer-solid-xray [data-mesurer-inspector-ui] *, body.mesurer-solid-xray .mesurer-toolbar-surface, body.mesurer-solid-xray .mesurer-toolbar-surface *, body.mesurer-solid-xray .mesurer-ti-box, body.mesurer-solid-xray .mesurer-ti-card, body.mesurer-solid-xray .mesurer-ti-card *, body.mesurer-solid-xray .mesurer-ti-close {\n outline: none !important;\n}\n[data-mesurer-toolbar=\"true\"] > div:has(> [data-mesurer-toolbar-compact-item]) {\n transition: padding-inline 150ms ease;\n}\n[data-mesurer-toolbar=\"true\"][data-mesurer-toolbar-compact=\"true\"] > div:has(> [data-mesurer-toolbar-compact-item]):not(:has(> [data-mesurer-toolbar-compact-item][data-visible=\"true\"])) {\n padding-inline: 0;\n}\n[data-mesurer-selected-measurement=\"true\"]:has(> [data-mesurer-native-scroll-anchor=\"box\"]) {\n display: contents !important;\n}\n@media (prefers-reduced-motion: reduce) {\n [data-mesurer-toolbar=\"true\"] > div:has(> [data-mesurer-toolbar-compact-item]) {\n transition: none;\n }\n [data-mesurer-annotation-badge=\"true\"] {\n transition: none !important;\n }\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) {\n --msr-accent: #0d99ff;\n --msr-surface: #fff;\n --msr-surface-raised: #fff;\n --msr-surface-muted: #f8fafc;\n --msr-content: #18181b;\n --msr-color-white: #fff;\n --msr-color-black: #000;\n --msr-color-ink-50: #f8fafc;\n --msr-color-ink-100: #f1f5f9;\n --msr-color-ink-200: #e2e8f0;\n --msr-color-ink-300: #cbd5e1;\n --msr-color-ink-500: #64748b;\n --msr-color-ink-700: #334155;\n --msr-color-ink-900: #18181b;\n --color-ink-50: var(--msr-color-ink-50);\n --color-ink-100: var(--msr-color-ink-100);\n --color-ink-200: var(--msr-color-ink-200);\n --color-ink-300: var(--msr-color-ink-300);\n --color-ink-500: var(--msr-color-ink-500);\n --color-ink-700: var(--msr-color-ink-700);\n --color-ink-900: var(--msr-color-ink-900);\n --msr-danger-bg: #fef2f2;\n --msr-danger-border: #fecaca;\n --msr-danger-text: #dc2626;\n --msr-danger-solid-bg: #dc2626;\n --msr-danger-solid-hover: #b91c1c;\n --msr-danger-solid-text: #fff;\n --color-red-50: var(--msr-danger-bg);\n --color-red-200: var(--msr-danger-border);\n --color-red-600: var(--msr-danger-text);\n --color-red-700: #b91c1c;\n --msr-control-thumb: #fff;\n --msr-slider-track: rgba(15, 23, 42, 0.16);\n --msr-shadow-toolbar: 0 0 0.4px rgba(0, 0, 0, 0.22),\n 0 6px 18px rgba(0, 0, 0, 0.03),\n 0 3px 9px rgba(0, 0, 0, 0.06),\n 0 1px 1px rgba(0, 0, 0, 0.06);\n --msr-shadow-floating: 0 0 0 0.4px rgba(0, 0, 0, 0.22),\n 0 6px 18px rgba(0, 0, 0, 0.03),\n 0 3px 9px rgba(0, 0, 0, 0.06),\n 0 1px 1px rgba(0, 0, 0, 0.06);\n --msr-shadow-select-menu: var(--msr-shadow-floating);\n color: var(--msr-content);\n color-scheme: light;\n}\n:where( [data-mesurer-root=\"true\"][data-theme=\"dark\"], [data-mesurer-inspector-ui=\"true\"][data-theme=\"dark\"] ) {\n --msr-accent: #0c8ce9;\n --msr-surface: #323232;\n --msr-surface-raised: #3a3a3a;\n --msr-surface-muted: #3a3a3a;\n --msr-content: #f5f5f5;\n --msr-color-white: #f5f5f5;\n --msr-color-black: #171717;\n --msr-color-ink-50: #3a3a3a;\n --msr-color-ink-100: #414141;\n --msr-color-ink-200: #4a4a4a;\n --msr-color-ink-300: #5a5a5a;\n --msr-color-ink-500: #a0a0a0;\n --msr-color-ink-700: #dedede;\n --msr-color-ink-900: #f5f5f5;\n --msr-danger-bg: #3f2020;\n --msr-danger-border: #7f3f46;\n --msr-danger-text: #f87171;\n --msr-danger-solid-bg: #c95058;\n --msr-danger-solid-hover: #b7424b;\n --msr-danger-solid-text: #f5f5f5;\n --color-red-700: #fca5a5;\n --msr-control-thumb: #f4f4f5;\n --msr-slider-track: rgba(245, 245, 245, 0.24);\n --msr-shadow-toolbar: 0 0 0.4px lch(100% 0 0 / 0.10),\n 0 3px 8px lch(0% 0 0 / 0.125),\n 0 2px 5px lch(0% 0 0 / 0.125),\n 0 1px 1px lch(0% 0 0 / 0.125);\n --msr-shadow-floating: 0 0 0 0.4px lch(100% 0 0 / 0.05),\n 0 4px 12px lch(0% 0 0 / 0.12),\n 0 1px 3px lch(0% 0 0 / 0.10);\n --msr-shadow-select-menu: 0 0 0 0.4px lch(100% 0 0 / 0.14),\n 0 4px 12px lch(0% 0 0 / 0.22),\n 0 1px 3px lch(0% 0 0 / 0.18);\n color-scheme: dark;\n}\n@media (prefers-color-scheme: dark) {\n :where( [data-mesurer-root=\"true\"][data-theme=\"system\"], [data-mesurer-inspector-ui=\"true\"][data-theme=\"system\"] ) {\n --msr-accent: #0c8ce9;\n --msr-surface: #323232;\n --msr-surface-raised: #3a3a3a;\n --msr-surface-muted: #3a3a3a;\n --msr-content: #f5f5f5;\n --msr-color-white: #f5f5f5;\n --msr-color-black: #171717;\n --msr-color-ink-50: #3a3a3a;\n --msr-color-ink-100: #414141;\n --msr-color-ink-200: #4a4a4a;\n --msr-color-ink-300: #5a5a5a;\n --msr-color-ink-500: #a0a0a0;\n --msr-color-ink-700: #dedede;\n --msr-color-ink-900: #f5f5f5;\n --msr-danger-bg: #3f2020;\n --msr-danger-border: #7f3f46;\n --msr-danger-text: #f87171;\n --msr-danger-solid-bg: #c95058;\n --msr-danger-solid-hover: #b7424b;\n --msr-danger-solid-text: #f5f5f5;\n --color-red-700: #fca5a5;\n --msr-control-thumb: #f4f4f5;\n --msr-slider-track: rgba(245, 245, 245, 0.24);\n --msr-shadow-toolbar: 0 0 0.4px lch(100% 0 0 / 0.10),\n 0 3px 8px lch(0% 0 0 / 0.125),\n 0 2px 5px lch(0% 0 0 / 0.125),\n 0 1px 1px lch(0% 0 0 / 0.125);\n --msr-shadow-floating: 0 0 0 0.4px lch(100% 0 0 / 0.05),\n 0 4px 12px lch(0% 0 0 / 0.12),\n 0 1px 3px lch(0% 0 0 / 0.10);\n --msr-shadow-select-menu: 0 0 0 0.4px lch(100% 0 0 / 0.14),\n 0 4px 12px lch(0% 0 0 / 0.22),\n 0 1px 3px lch(0% 0 0 / 0.18);\n color-scheme: dark;\n }\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:bg-white\"], :where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:bg-[#fff]\"] {\n background-color: var(--msr-surface) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:text-black\"] {\n color: var(--msr-content) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:hover:bg-black/4\"]:hover, :where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:hover:bg-black/5\"]:hover {\n background-color: var(--msr-content) !important;\n @supports (color: color-mix(in lab, red, red)) {\n background-color: color-mix(in srgb, var(--msr-content) 6%, transparent) !important;\n }\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) .mesurer-toolbar-surface {\n background-color: var(--msr-surface) !important;\n box-shadow: var(--msr-shadow-toolbar) !important;\n color: var(--msr-content);\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) :is( .mesurer-menu-surface, .mesurer-color-picker, .mesurer-ti-card, [data-mesurer-text-inspector-info=\"true\"], [data-mesurer-annotation-panel=\"true\"], [data-mesurer-annotation-composer=\"true\"] ) {\n background-color: var(--msr-surface-raised) !important;\n color: var(--msr-content) !important;\n box-shadow: var(--msr-shadow-floating) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) .mesurer-switch-track[data-checked=\"false\"], :where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) .mesurer-control-shell {\n background-color: var(--msr-surface-muted) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) .mesurer-switch-track > span {\n background-color: var(--msr-control-thumb) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) :is(.mesurer-settings-select, .mesurer-settings-select-menu) {\n background-color: var(--msr-surface-raised) !important;\n border-color: var(--msr-color-ink-200) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [data-mesurer-rulers=\"true\"] {\n color: var(--msr-color-ink-500) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [data-slider-container=\"true\"] > div:first-child {\n background-color: var(--msr-slider-track) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:bg-[#0d99ff]\"] {\n background-color: var(--msr-accent) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:border-[#0d99ff]\"] {\n border-color: var(--msr-accent) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:hover:bg-[#0d99ff]\"]:hover, :where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:focus-visible:bg-[#0d99ff]\"]:focus-visible {\n background-color: var(--msr-accent) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [class~=\"msr:text-white\"] {\n color: var(--msr-color-white) !important;\n}\n:where( [data-mesurer-root=\"true\"][data-theme], [data-mesurer-inspector-ui=\"true\"][data-theme] ) [data-slider-thumb=\"true\"]:focus-visible {\n box-shadow: 0 0 0 1px var(--msr-accent) !important;\n @supports (color: color-mix(in lab, red, red)) {\n box-shadow: 0 0 0 1px color-mix(in srgb, var(--msr-accent) 25%, transparent) !important;\n }\n}\n:where([data-mesurer-root=\"true\"], [data-mesurer-inspector-ui=\"true\"]) {\n --msr-radius-control: 5px;\n}\n@layer utilities {\n .msr\\:rounded-control {\n border-radius: var(--msr-radius-control);\n }\n}\n.mesurer-thin-scrollbar {\n scrollbar-width: thin;\n scrollbar-color: var(--msr-color-ink-200) transparent;\n}\n.mesurer-thin-scrollbar::-webkit-scrollbar {\n width: 4px;\n height: 4px;\n}\n.mesurer-thin-scrollbar::-webkit-scrollbar-track {\n background: transparent;\n}\n.mesurer-thin-scrollbar::-webkit-scrollbar-thumb {\n background: var(--msr-color-ink-200);\n border-radius: var(--msr-radius-control);\n}\n.mesurer-thin-scrollbar:hover {\n scrollbar-color: var(--msr-color-ink-300) transparent;\n}\n.mesurer-thin-scrollbar:hover::-webkit-scrollbar-thumb {\n background: var(--msr-color-ink-300);\n}\n.mesurer-thin-scrollbar::-webkit-scrollbar-corner {\n background: transparent;\n}\n@property --tw-translate-x {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-y {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-translate-z {\n syntax: \"*\";\n inherits: false;\n initial-value: 0;\n}\n@property --tw-border-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-leading {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-font-weight {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ordinal {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-slashed-zero {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-figure {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-spacing {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-numeric-fraction {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-inset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-shadow-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-shadow-alpha {\n syntax: \"<percentage>\";\n inherits: false;\n initial-value: 100%;\n}\n@property --tw-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-inset-ring-color {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-inset-ring-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-ring-inset {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ring-offset-width {\n syntax: \"<length>\";\n inherits: false;\n initial-value: 0px;\n}\n@property --tw-ring-offset-color {\n syntax: \"*\";\n inherits: false;\n initial-value: #fff;\n}\n@property --tw-ring-offset-shadow {\n syntax: \"*\";\n inherits: false;\n initial-value: 0 0 #0000;\n}\n@property --tw-outline-style {\n syntax: \"*\";\n inherits: false;\n initial-value: solid;\n}\n@property --tw-duration {\n syntax: \"*\";\n inherits: false;\n}\n@property --tw-ease {\n syntax: \"*\";\n inherits: false;\n}\n@layer properties {\n @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {\n *, ::before, ::after, ::backdrop {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-translate-z: 0;\n --tw-border-style: solid;\n --tw-leading: initial;\n --tw-font-weight: initial;\n --tw-ordinal: initial;\n --tw-slashed-zero: initial;\n --tw-numeric-figure: initial;\n --tw-numeric-spacing: initial;\n --tw-numeric-fraction: initial;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-color: initial;\n --tw-shadow-alpha: 100%;\n --tw-inset-shadow: 0 0 #0000;\n --tw-inset-shadow-color: initial;\n --tw-inset-shadow-alpha: 100%;\n --tw-ring-color: initial;\n --tw-ring-shadow: 0 0 #0000;\n --tw-inset-ring-color: initial;\n --tw-inset-ring-shadow: 0 0 #0000;\n --tw-ring-inset: initial;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-outline-style: solid;\n --tw-duration: initial;\n --tw-ease: initial;\n }\n }\n}\n", Vf = 0, Hf = "mesurer:tab-id", Uf = "mesurer-settings", Wf = "mesurer-state", Gf = 80, Kf = (e, t) => {
9847
9857
  try {
9848
9858
  let n = e.sessionStorage.getItem(`${t}:toolbar-position`);
9849
9859
  if (!n) return;
@@ -10825,21 +10835,72 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
10825
10835
  }, W = () => {
10826
10836
  for (let [e, t] of h) t.value || t.priority ? e.style.setProperty("visibility", t.value, t.priority) : e.style.removeProperty("visibility");
10827
10837
  h.clear();
10828
- }, ee = (e = k()) => {
10838
+ }, ee = (e) => {
10839
+ if (e.parentElement instanceof c.HTMLElement) return e.parentElement;
10840
+ let t = e.getRootNode();
10841
+ return t instanceof c.ShadowRoot && t.host instanceof c.HTMLElement ? t.host : null;
10842
+ }, te = (e, t) => {
10843
+ let n = ee(e);
10844
+ for (; n;) {
10845
+ let e = t.get(n);
10846
+ if (e) return e;
10847
+ n = ee(n);
10848
+ }
10849
+ return {
10850
+ x: 0,
10851
+ y: 0
10852
+ };
10853
+ }, ne = (e = k()) => {
10829
10854
  let t = /* @__PURE__ */ new Map();
10830
10855
  for (let n of e) for (let e of n.targets) {
10831
10856
  let n = N(e);
10832
- n && t.set(n, {
10833
- x: e.desiredOffsetX,
10834
- y: e.desiredOffsetY
10835
- });
10857
+ n && t.set(n, e);
10836
10858
  }
10837
10859
  return t;
10838
- }, te = () => {
10860
+ }, re = (e) => e.offsetSpace !== "local" || e.desiredLocalOffsetX === null || e.desiredLocalOffsetY === null ? null : {
10861
+ x: e.desiredLocalOffsetX,
10862
+ y: e.desiredLocalOffsetY
10863
+ }, ie = (e, t) => {
10864
+ let n = ee(e);
10865
+ for (; n;) {
10866
+ if (t.has(n)) return n;
10867
+ n = ee(n);
10868
+ }
10869
+ return null;
10870
+ }, ae = (e = k(), t = /* @__PURE__ */ new Map()) => {
10871
+ let n = ne(e), r = /* @__PURE__ */ new Set([...n.keys(), ...t.keys()]), i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Set(), o = (e) => {
10872
+ let s = i.get(e);
10873
+ if (s) return s;
10874
+ let c = n.get(e), l = t.get(e) ?? (c ? re(c) : null);
10875
+ if (!l && c) {
10876
+ let t = {
10877
+ x: c.desiredOffsetX,
10878
+ y: c.desiredOffsetY
10879
+ };
10880
+ return i.set(e, t), t;
10881
+ }
10882
+ if (!l) return {
10883
+ x: 0,
10884
+ y: 0
10885
+ };
10886
+ if (a.has(e)) return l;
10887
+ a.add(e);
10888
+ let u = ie(e, r), d = u ? o(u) : {
10889
+ x: 0,
10890
+ y: 0
10891
+ }, f = {
10892
+ x: d.x + l.x,
10893
+ y: d.y + l.y
10894
+ };
10895
+ return a.delete(e), i.set(e, f), f;
10896
+ };
10897
+ for (let e of r) o(e);
10898
+ return i;
10899
+ }, oe = () => {
10839
10900
  if (_.state === "live") return /* @__PURE__ */ new Map();
10840
- if (!_.intentId) return ee();
10901
+ if (!_.intentId) return ae();
10841
10902
  let e = w().intents.find((e) => e.id === _.intentId);
10842
- if (!e) return ee();
10903
+ if (!e) return ae();
10843
10904
  let t = /* @__PURE__ */ new Map();
10844
10905
  for (let n of e.targets) {
10845
10906
  let e = N(n);
@@ -10852,25 +10913,10 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
10852
10913
  });
10853
10914
  }
10854
10915
  return t;
10855
- }, ne = (e) => {
10856
- if (e.parentElement instanceof c.HTMLElement) return e.parentElement;
10857
- let t = e.getRootNode();
10858
- return t instanceof c.ShadowRoot && t.host instanceof c.HTMLElement ? t.host : null;
10859
- }, re = (e, t) => {
10860
- let n = ne(e);
10861
- for (; n;) {
10862
- let e = t.get(n);
10863
- if (e) return e;
10864
- n = ne(n);
10865
- }
10866
- return {
10867
- x: 0,
10868
- y: 0
10869
- };
10870
- }, ie = (e) => {
10916
+ }, se = (e) => {
10871
10917
  let t = [...e].flatMap(([t, n]) => {
10872
10918
  if (!t.isConnected || !j(t)) return [];
10873
- let r = re(t, e), i = {
10919
+ let r = te(t, e), i = {
10874
10920
  x: n.x - r.x,
10875
10921
  y: n.y - r.y
10876
10922
  };
@@ -10890,25 +10936,25 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
10890
10936
  });
10891
10937
  }
10892
10938
  L(n);
10893
- }, ae = () => ie(te()), oe = (e) => {
10939
+ }, ce = () => se(oe()), le = (e) => {
10894
10940
  z();
10895
10941
  try {
10896
10942
  return e();
10897
10943
  } finally {
10898
- !x && !v && ae();
10944
+ !x && !v && ce();
10899
10945
  }
10900
- }, se = () => i.currentSelection().elements.filter((e) => e instanceof c.HTMLElement && e.isConnected && j(e));
10946
+ }, ue = () => i.currentSelection().elements.filter((e) => e instanceof c.HTMLElement && e.isConnected && j(e));
10901
10947
  e.state.register({
10902
10948
  id: _p,
10903
- initial: se().length > 0
10949
+ initial: ue().length > 0
10904
10950
  });
10905
- let ce = () => e.state.get(_p) ?? !1, le = () => {
10906
- let t = se().length > 0;
10907
- t !== ce() && e.state.update(_p, () => t);
10908
- }, ue = () => Ap(se().map((e) => Pu(e))), de = () => {
10951
+ let de = () => e.state.get(_p) ?? !1, fe = () => {
10952
+ let t = ue().length > 0;
10953
+ t !== de() && e.state.update(_p, () => t);
10954
+ }, pe = () => Ap(ue().map((e) => Pu(e))), me = () => {
10909
10955
  for (let e of g.values()) e.remove();
10910
10956
  g.clear();
10911
- }, fe = (e) => {
10957
+ }, he = (e) => {
10912
10958
  let t = e.getBoundingClientRect(), n = t.right + wp;
10913
10959
  n + Cp > r.innerWidth - 4 && (n = Math.max(4, t.left - Cp - wp));
10914
10960
  let i = Math.min(Math.max(4, t.top + Tp), Math.max(4, r.innerHeight - Cp - 4));
@@ -10916,27 +10962,34 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
10916
10962
  left: n,
10917
10963
  top: i
10918
10964
  };
10919
- }, pe = () => {
10965
+ }, ge = () => {
10920
10966
  if (!T() || v) {
10921
- de();
10967
+ me();
10922
10968
  return;
10923
10969
  }
10924
- let t = ee(k()), r = /* @__PURE__ */ new Set();
10925
- for (let i of se()) {
10926
- let a = t.get(i);
10927
- if (!a || Math.abs(a.x) <= Ep && Math.abs(a.y) <= Ep) continue;
10928
- r.add(i);
10929
- let o = g.get(i);
10930
- o || (o = n.createElement("button"), o.type = "button", o.dataset.mesurerArrangeReset = "true", o.dataset.mesurerInspectorUi = "true", o.setAttribute("aria-label", "Reset position"), o.title = "Reset position", o.textContent = "↺", o.className = "msr:pointer-events-auto msr:flex msr:size-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border msr:border-ink-200 msr:bg-white msr:text-[14px] msr:leading-none msr:text-black msr:outline-none msr:hover:bg-ink-50 msr:focus-visible:border-[#0d99ff]", o.style.position = "fixed", o.addEventListener("pointerdown", (e) => e.stopPropagation()), o.addEventListener("click", (t) => {
10931
- t.preventDefault(), t.stopPropagation(), b = [i], e.command.execute(hp, void 0, { source: "arrange-reset-button" }).catch(() => {
10970
+ let t = k(), r = ne(t), i = ae(t), a = /* @__PURE__ */ new Set();
10971
+ for (let t of ue()) {
10972
+ let o = r.get(t);
10973
+ if (!o) continue;
10974
+ let s = i.get(t);
10975
+ if (!s) continue;
10976
+ let c = te(t, i), u = re(o) ?? {
10977
+ x: s.x - c.x,
10978
+ y: s.y - c.y
10979
+ };
10980
+ if (Math.abs(u.x) <= Ep && Math.abs(u.y) <= Ep) continue;
10981
+ a.add(t);
10982
+ let d = g.get(t);
10983
+ d || (d = n.createElement("button"), d.type = "button", d.dataset.mesurerArrangeReset = "true", d.dataset.mesurerInspectorUi = "true", d.setAttribute("aria-label", "Reset position"), d.title = "Reset position", d.textContent = "↺", d.className = "msr:pointer-events-auto msr:flex msr:size-6 msr:items-center msr:justify-center msr:rounded-[7px] msr:border msr:border-ink-200 msr:bg-white msr:text-[14px] msr:leading-none msr:text-black msr:outline-none msr:hover:bg-ink-50 msr:focus-visible:border-[#0d99ff]", d.style.position = "fixed", d.addEventListener("pointerdown", (e) => e.stopPropagation()), d.addEventListener("click", (n) => {
10984
+ n.preventDefault(), n.stopPropagation(), b = [t], e.command.execute(hp, void 0, { source: "arrange-reset-button" }).catch(() => {
10932
10985
  b = null;
10933
10986
  });
10934
- }), g.set(i, o), l.append(o));
10935
- let s = fe(i);
10936
- o.style.left = `${s.left}px`, o.style.top = `${s.top}px`;
10987
+ }), g.set(t, d), l.append(d));
10988
+ let f = he(t);
10989
+ d.style.left = `${f.left}px`, d.style.top = `${f.top}px`;
10937
10990
  }
10938
- for (let [e, t] of g) r.has(e) || (t.remove(), g.delete(e));
10939
- }, me = (t) => {
10991
+ for (let [e, t] of g) a.has(e) || (t.remove(), g.delete(e));
10992
+ }, _e = (t) => {
10940
10993
  let n = new Set(t);
10941
10994
  n.size && (e.state.update("mesurer.arrange.intents", (e) => {
10942
10995
  let t = !1, r = e.intents.flatMap((e) => {
@@ -10951,13 +11004,13 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
10951
11004
  }] : [];
10952
11005
  });
10953
11006
  return t ? { intents: r } : e;
10954
- }), ve(), _e());
10955
- }, he = () => {
11007
+ }), xe(), be());
11008
+ }, ve = () => {
10956
11009
  e.state.update(sp, (e) => {
10957
11010
  let t = e.intents.filter((e) => e.pageUrl !== O());
10958
11011
  return t.length === e.intents.length ? e : { intents: t };
10959
- }), ve(), _e();
10960
- }, ge = (e) => {
11012
+ }), xe(), be();
11013
+ }, ye = (e) => {
10961
11014
  let t = E();
10962
11015
  if (!t.snapping) return [];
10963
11016
  let n = [], a = new Set(e), s = i.snapshot(), l = s.xrayVisible && t.preferXrayEdges && t.elementEdges, u = 0, d = (i) => {
@@ -11029,38 +11082,38 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11029
11082
  kind: "guide"
11030
11083
  });
11031
11084
  return n;
11032
- }, _e = (e) => {
11085
+ }, be = (e) => {
11033
11086
  if (!T()) {
11034
- f.style.display = "none", de();
11087
+ f.style.display = "none", me();
11035
11088
  return;
11036
11089
  }
11037
- let t = e === void 0 ? ue() : e;
11090
+ let t = e === void 0 ? pe() : e;
11038
11091
  if (!t) {
11039
- f.style.display = "none", de();
11092
+ f.style.display = "none", me();
11040
11093
  return;
11041
11094
  }
11042
- f.style.display = "block", f.style.left = `${t.left}px`, f.style.top = `${t.top}px`, f.style.width = `${t.width}px`, f.style.height = `${t.height}px`, v ? de() : pe();
11043
- }, ve = () => {
11095
+ f.style.display = "block", f.style.left = `${t.left}px`, f.style.top = `${t.top}px`, f.style.width = `${t.width}px`, f.style.height = `${t.height}px`, v ? me() : ge();
11096
+ }, xe = () => {
11044
11097
  _ = {
11045
11098
  intentId: null,
11046
11099
  state: "desired"
11047
- }, ae(), V(), T() ? U() : W();
11048
- }, ye = () => {
11100
+ }, ce(), V(), T() ? U() : W();
11101
+ }, Se = () => {
11049
11102
  _ = {
11050
11103
  intentId: null,
11051
11104
  state: "live"
11052
11105
  }, B(), V(), W();
11053
- }, be = () => {
11054
- x || v || (ae(), V(), T() ? U() : W(), _e());
11055
- }, xe = () => {
11106
+ }, Ce = () => {
11107
+ x || v || (ce(), V(), T() ? U() : W(), be());
11108
+ }, we = () => {
11056
11109
  S || x || (S = r.requestAnimationFrame(() => {
11057
- S = 0, be();
11110
+ S = 0, Ce();
11058
11111
  }));
11059
- }, Se = async () => {
11112
+ }, Te = async () => {
11060
11113
  s.querySelector("[data-mesurer-builtin='select'] button")?.getAttribute("aria-pressed") !== "true" && await e.command.execute(dp, void 0, { source: "arrange" });
11061
- }, Ce = (e) => {
11114
+ }, Ee = (e) => {
11062
11115
  if (!T() || e.button !== 0) return;
11063
- let r = se();
11116
+ let r = ue();
11064
11117
  if (!r.length) return;
11065
11118
  let a = e.shiftKey ? Wu(t.rendererRoot ?? null, () => Wu(l, () => Hu({
11066
11119
  x: e.clientX,
@@ -11073,62 +11126,81 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11073
11126
  e.preventDefault(), e.stopPropagation(), _ = {
11074
11127
  intentId: null,
11075
11128
  state: "desired"
11076
- }, ae();
11077
- let s = ee(k());
11129
+ }, ce();
11130
+ let s = ne(k()), u = ae(k()), d = new Set(r);
11078
11131
  z();
11079
- let u = r.map((e, t) => {
11080
- let n = Pu(e), r = s.get(e) ?? {
11081
- x: 0,
11082
- y: 0
11083
- }, i = Op(n, r), a = Ku(e);
11132
+ let p = r.map((e, t) => {
11133
+ let n = Pu(e), r = te(e, u), i = u.get(e) ?? r, a = s.get(e), o = (a ? re(a) : null) ?? {
11134
+ x: i.x - r.x,
11135
+ y: i.y - r.y
11136
+ }, c = Op(n, i), l = Ku(e);
11084
11137
  return {
11085
11138
  element: e,
11139
+ movesDirectly: ie(e, d) === null,
11086
11140
  target: {
11087
11141
  id: `target-${t + 1}`,
11088
11142
  selector: Gu(e),
11089
- fingerprintTag: a.tag,
11090
- fingerprintId: a.id,
11091
- fingerprintTestId: a.testId,
11092
- fingerprintRole: a.role,
11093
- fingerprintAriaLabel: a.ariaLabel,
11094
- fingerprintClasses: [...a.classes],
11095
- fingerprintText: a.text,
11096
- beforeLeft: i.left,
11097
- beforeTop: i.top,
11098
- beforeWidth: i.width,
11099
- beforeHeight: i.height,
11100
- desiredLeft: i.left,
11101
- desiredTop: i.top,
11102
- desiredWidth: i.width,
11103
- desiredHeight: i.height,
11104
- beforeOffsetX: r.x,
11105
- beforeOffsetY: r.y,
11106
- desiredOffsetX: r.x,
11107
- desiredOffsetY: r.y
11143
+ fingerprintTag: l.tag,
11144
+ fingerprintId: l.id,
11145
+ fingerprintTestId: l.testId,
11146
+ fingerprintRole: l.role,
11147
+ fingerprintAriaLabel: l.ariaLabel,
11148
+ fingerprintClasses: [...l.classes],
11149
+ fingerprintText: l.text,
11150
+ beforeLeft: c.left,
11151
+ beforeTop: c.top,
11152
+ beforeWidth: c.width,
11153
+ beforeHeight: c.height,
11154
+ desiredLeft: c.left,
11155
+ desiredTop: c.top,
11156
+ desiredWidth: c.width,
11157
+ desiredHeight: c.height,
11158
+ beforeOffsetX: i.x,
11159
+ beforeOffsetY: i.y,
11160
+ desiredOffsetX: i.x,
11161
+ desiredOffsetY: i.y,
11162
+ offsetSpace: "local",
11163
+ beforeLocalOffsetX: o.x,
11164
+ beforeLocalOffsetY: o.y,
11165
+ desiredLocalOffsetX: o.x,
11166
+ desiredLocalOffsetY: o.y
11108
11167
  }
11109
11168
  };
11110
- }), d = Ap(u.map(({ target: e }) => ({
11169
+ }), m = Ap(p.map(({ target: e }) => ({
11111
11170
  left: e.beforeLeft,
11112
11171
  top: e.beforeTop,
11113
11172
  width: e.beforeWidth,
11114
11173
  height: e.beforeHeight
11115
11174
  })));
11116
- if (!d) {
11117
- ae();
11175
+ if (!m) {
11176
+ ce();
11118
11177
  return;
11119
11178
  }
11120
- ae(), U(), V(), v = {
11179
+ ce(), U(), V(), v = {
11121
11180
  pointerId: e.pointerId,
11122
11181
  originX: e.clientX,
11123
11182
  originY: e.clientY,
11124
- targets: u,
11125
- groupBefore: d,
11126
- snapCandidates: ge(r),
11183
+ targets: p,
11184
+ groupBefore: m,
11185
+ snapCandidates: ye(r),
11127
11186
  shiftToggleElement: e.shiftKey && a instanceof c.HTMLElement && r.includes(a) ? a : null,
11128
11187
  dx: 0,
11129
11188
  dy: 0
11130
- }, _e(d), f.style.cursor = "grabbing", f.setPointerCapture?.(e.pointerId);
11131
- }, we = (e) => {
11189
+ }, be(m), f.style.cursor = "grabbing", f.setPointerCapture?.(e.pointerId);
11190
+ }, De = (e, t, n) => {
11191
+ let r = /* @__PURE__ */ new Map();
11192
+ for (let i of e.targets) {
11193
+ let e = {
11194
+ x: i.target.beforeLocalOffsetX ?? 0,
11195
+ y: i.target.beforeLocalOffsetY ?? 0
11196
+ };
11197
+ r.set(i.element, i.movesDirectly ? {
11198
+ x: e.x + t,
11199
+ y: e.y + n
11200
+ } : e);
11201
+ }
11202
+ return r;
11203
+ }, Oe = (e) => {
11132
11204
  if (!v || e.pointerId !== v.pointerId) return;
11133
11205
  let t = e.clientX - v.originX, n = e.clientY - v.originY, r = null;
11134
11206
  e.shiftKey && (Math.abs(t) >= Math.abs(n) ? (n = 0, r = "x") : (t = 0, r = "y"));
@@ -11137,60 +11209,71 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11137
11209
  y: n
11138
11210
  }), a = r === "y" ? null : Fp("x", i, v.snapCandidates), o = r === "x" ? null : Fp("y", i, v.snapCandidates);
11139
11211
  t += a?.delta ?? 0, n += o?.delta ?? 0, v.dx = t, v.dy = n;
11140
- let s = ee(k());
11141
- for (let e of v.targets) s.set(e.element, {
11142
- x: e.target.beforeOffsetX + t,
11143
- y: e.target.beforeOffsetY + n
11144
- });
11145
- ie(s);
11212
+ let s = ae(k(), De(v, t, n));
11213
+ se(s);
11146
11214
  let c = Op(v.groupBefore, {
11147
11215
  x: t,
11148
11216
  y: n
11149
11217
  });
11150
- _e(c), H(a, o, c);
11151
- }, Te = () => {
11218
+ be(c), H(a, o, c);
11219
+ }, ke = () => {
11152
11220
  if (!v) return;
11153
11221
  let e = v.pointerId;
11154
- v = null, f.hasPointerCapture?.(e) && f.releasePointerCapture(e), f.style.cursor = "grab", ve(), _e();
11155
- }, Ee = (t) => {
11222
+ v = null, f.hasPointerCapture?.(e) && f.releasePointerCapture(e), f.style.cursor = "grab", xe(), be();
11223
+ }, Ae = (t) => {
11156
11224
  if (!v || t.pointerId !== v.pointerId) return;
11157
11225
  t.preventDefault(), t.stopPropagation();
11158
11226
  let n = v;
11159
11227
  if (v = null, f.hasPointerCapture?.(t.pointerId) && f.releasePointerCapture(t.pointerId), f.style.cursor = "grab", V(), n.dx === 0 && n.dy === 0) {
11160
- n.shiftToggleElement && i.toggleSelection(n.shiftToggleElement), ve(), _e();
11228
+ n.shiftToggleElement && i.toggleSelection(n.shiftToggleElement), xe(), be();
11161
11229
  return;
11162
11230
  }
11231
+ let a = ae(k(), De(n, n.dx, n.dy));
11163
11232
  y = {
11164
11233
  id: Lp(r, "arrange"),
11165
11234
  createdAt: Date.now(),
11166
11235
  pageUrl: O(),
11167
- targets: n.targets.map(({ target: e }) => ({
11168
- ...e,
11169
- desiredLeft: e.beforeLeft + n.dx,
11170
- desiredTop: e.beforeTop + n.dy,
11171
- desiredOffsetX: e.beforeOffsetX + n.dx,
11172
- desiredOffsetY: e.beforeOffsetY + n.dy
11173
- }))
11236
+ targets: n.targets.map(({ element: e, movesDirectly: t, target: r }) => {
11237
+ let i = {
11238
+ x: r.beforeLocalOffsetX ?? 0,
11239
+ y: r.beforeLocalOffsetY ?? 0
11240
+ }, o = t ? {
11241
+ x: i.x + n.dx,
11242
+ y: i.y + n.dy
11243
+ } : i, s = a.get(e) ?? {
11244
+ x: r.beforeOffsetX + n.dx,
11245
+ y: r.beforeOffsetY + n.dy
11246
+ };
11247
+ return {
11248
+ ...r,
11249
+ desiredLeft: r.beforeLeft + n.dx,
11250
+ desiredTop: r.beforeTop + n.dy,
11251
+ desiredOffsetX: s.x,
11252
+ desiredOffsetY: s.y,
11253
+ desiredLocalOffsetX: o.x,
11254
+ desiredLocalOffsetY: o.y
11255
+ };
11256
+ })
11174
11257
  }, e.command.execute(pp).catch(() => {
11175
- y = null, ve(), _e();
11258
+ y = null, xe(), be();
11176
11259
  });
11177
- }, De = (e) => {
11178
- !v || e.pointerId !== v.pointerId || Te();
11179
- }, Oe = (t) => {
11260
+ }, je = (e) => {
11261
+ !v || e.pointerId !== v.pointerId || ke();
11262
+ }, Me = (t) => {
11180
11263
  if (t.key !== "Escape" || !T() && !v || Kp(t.target) || s.querySelector("[data-mesurer-tool-menu]")) return;
11181
11264
  if (t.preventDefault(), t.stopImmediatePropagation(), v) {
11182
- Te();
11265
+ ke();
11183
11266
  return;
11184
11267
  }
11185
11268
  let n = i.currentSelection();
11186
11269
  if (n.elements.length > 0 || n.region) {
11187
- i.clearSelection(), _e();
11270
+ i.clearSelection(), be();
11188
11271
  return;
11189
11272
  }
11190
- e.state.update(cp, () => !1), ye(), _e(), e.command.execute(dp, void 0, { source: "arrange-escape" }).catch(() => void 0);
11273
+ e.state.update(cp, () => !1), Se(), be(), e.command.execute(dp, void 0, { source: "arrange-escape" }).catch(() => void 0);
11191
11274
  };
11192
- f.addEventListener("pointerdown", Ce), f.addEventListener("pointermove", we), f.addEventListener("pointerup", Ee), f.addEventListener("pointercancel", De), r.addEventListener("keydown", Oe, !0), r.addEventListener("resize", xe), r.addEventListener("scroll", xe, !0), o.addEventListener("scroll", xe, !0), C = new c.MutationObserver(() => {
11193
- le(), xe();
11275
+ f.addEventListener("pointerdown", Ee), f.addEventListener("pointermove", Oe), f.addEventListener("pointerup", Ae), f.addEventListener("pointercancel", je), r.addEventListener("keydown", Me, !0), r.addEventListener("resize", we), r.addEventListener("scroll", we, !0), o.addEventListener("scroll", we, !0), C = new c.MutationObserver(() => {
11276
+ fe(), we();
11194
11277
  }), C.observe(o, {
11195
11278
  childList: !0,
11196
11279
  subtree: !0,
@@ -11203,9 +11286,9 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11203
11286
  "aria-label"
11204
11287
  ]
11205
11288
  });
11206
- let ke = i.subscribe(() => {
11207
- le(), xe();
11208
- }), Ae = e.state.subscribe(xe), je = (e) => w().intents.find((t) => t.id === e) ?? null, Me = (e, t) => {
11289
+ let Ne = i.subscribe(() => {
11290
+ fe(), we();
11291
+ }), Pe = e.state.subscribe(we), Fe = (e) => w().intents.find((t) => t.id === e) ?? null, Ie = (e, t) => {
11209
11292
  let n = null;
11210
11293
  if (n = t === "before" ? Ap(e.targets.map((e) => ({
11211
11294
  left: e.beforeLeft,
@@ -11217,7 +11300,7 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11217
11300
  top: e.desiredTop,
11218
11301
  width: e.desiredWidth,
11219
11302
  height: e.desiredHeight
11220
- }))) : oe(() => Ap(e.targets.map((e) => N(e)).filter((e) => e !== null).map((e) => Pu(e)))), !n) throw Error(`Arrange intent has no resolvable capture region: ${e.id}`);
11303
+ }))) : le(() => Ap(e.targets.map((e) => N(e)).filter((e) => e !== null).map((e) => Pu(e)))), !n) throw Error(`Arrange intent has no resolvable capture region: ${e.id}`);
11221
11304
  let i = Math.max(0, n.left - yp), a = Math.max(0, n.top - yp), o = Math.min(r.innerWidth, n.left + n.width + yp), s = Math.min(r.innerHeight, n.top + n.height + yp);
11222
11305
  return {
11223
11306
  left: i,
@@ -11225,28 +11308,28 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11225
11308
  width: Math.max(0, o - i),
11226
11309
  height: Math.max(0, s - a)
11227
11310
  };
11228
- }, Ne = {
11311
+ }, Le = {
11229
11312
  active: T,
11230
11313
  intents: () => w().intents.map(Bp),
11231
11314
  intent(e) {
11232
- let t = je(e);
11315
+ let t = Fe(e);
11233
11316
  return t ? Bp(t) : null;
11234
11317
  },
11235
11318
  show(e, t) {
11236
- if (!je(e)) throw Error(`Arrange intent not found: ${e}`);
11319
+ if (!Fe(e)) throw Error(`Arrange intent not found: ${e}`);
11237
11320
  _ = {
11238
11321
  intentId: e,
11239
11322
  state: t
11240
- }, be();
11323
+ }, Ce();
11241
11324
  },
11242
11325
  showCurrent() {
11243
11326
  _ = {
11244
11327
  intentId: null,
11245
11328
  state: "desired"
11246
- }, be();
11329
+ }, Ce();
11247
11330
  },
11248
11331
  capturePlan(e, t) {
11249
- let n = je(e);
11332
+ let n = Fe(e);
11250
11333
  if (!n) throw Error(`Arrange intent not found: ${e}`);
11251
11334
  return {
11252
11335
  schema: "mesurer.arrange-capture/v1",
@@ -11259,14 +11342,14 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11259
11342
  }, {
11260
11343
  id: "focus",
11261
11344
  kind: "clip",
11262
- rect: Me(n, t)
11345
+ rect: Ie(n, t)
11263
11346
  }]
11264
11347
  };
11265
11348
  },
11266
11349
  review: (e, t = vp) => {
11267
- let n = je(e);
11350
+ let n = Fe(e);
11268
11351
  if (!n) throw Error(`Arrange intent not found: ${e}`);
11269
- let r = oe(() => n.targets.map((e) => {
11352
+ let r = le(() => n.targets.map((e) => {
11270
11353
  let n = N(e), r = {
11271
11354
  left: e.desiredLeft,
11272
11355
  top: e.desiredTop,
@@ -11433,24 +11516,24 @@ var $f = "mesurer.presentation.preferences", ep = "presentation", tp = {
11433
11516
  ]
11434
11517
  }), e.command.register(fp, async () => {
11435
11518
  let t = !T();
11436
- if (t && await Se(), e.state.update("mesurer.arrange.active", () => t), !t) {
11437
- v && Te(), ye(), _e();
11519
+ if (t && await Te(), e.state.update("mesurer.arrange.active", () => t), !t) {
11520
+ v && ke(), Se(), be();
11438
11521
  return;
11439
11522
  }
11440
- ve(), _e();
11523
+ xe(), be();
11441
11524
  }), e.command.register(pp, () => {
11442
11525
  let t = y;
11443
- y = null, t && (e.state.update("mesurer.arrange.intents", (e) => ({ intents: [...e.intents, t].slice(-100) })), ve(), _e());
11526
+ y = null, t && (e.state.update("mesurer.arrange.intents", (e) => ({ intents: [...e.intents, t].slice(-100) })), xe(), be());
11444
11527
  }), e.command.register(hp, () => {
11445
- let e = b ?? se();
11446
- b = null, me(e);
11447
- }), e.command.register(gp, he), e.command.register(mp, () => {
11528
+ let e = b ?? ue();
11529
+ b = null, _e(e);
11530
+ }), e.command.register(gp, ve), e.command.register(mp, () => {
11448
11531
  e.state.update(sp, () => ({ intents: [] })), _ = {
11449
11532
  intentId: null,
11450
11533
  state: "desired"
11451
- }, B(), V(), T() ? U() : W(), _e();
11452
- }), e.service.provide(op, Ne), ae(), _e(), e.lifecycle.onDispose(() => {
11453
- x = !0, S && r.cancelAnimationFrame(S), C?.disconnect(), C = null, f.removeEventListener("pointerdown", Ce), f.removeEventListener("pointermove", we), f.removeEventListener("pointerup", Ee), f.removeEventListener("pointercancel", De), r.removeEventListener("keydown", Oe, !0), r.removeEventListener("resize", xe), r.removeEventListener("scroll", xe, !0), o.removeEventListener("scroll", xe, !0), ke(), Ae.dispose(), B(), de(), V(), W(), i.dispose(), a.dispose();
11534
+ }, B(), V(), T() ? U() : W(), be();
11535
+ }), e.service.provide(op, Le), ce(), be(), e.lifecycle.onDispose(() => {
11536
+ x = !0, S && r.cancelAnimationFrame(S), C?.disconnect(), C = null, f.removeEventListener("pointerdown", Ee), f.removeEventListener("pointermove", Oe), f.removeEventListener("pointerup", Ae), f.removeEventListener("pointercancel", je), r.removeEventListener("keydown", Me, !0), r.removeEventListener("resize", we), r.removeEventListener("scroll", we, !0), o.removeEventListener("scroll", we, !0), Ne(), Pe.dispose(), B(), me(), V(), W(), i.dispose(), a.dispose();
11454
11537
  });
11455
11538
  }
11456
11539
  }), Jp = (e, t, n) => {
@@ -15075,7 +15158,7 @@ var y_ = [
15075
15158
  "text-inspector",
15076
15159
  "guides",
15077
15160
  "settings"
15078
- ], b_ = "mesurer-plugin-settings", x_ = 1, S_ = (e) => (e.startsWith("mesurer.") ? e.slice(8) : e).split(/[.-]/g).filter(Boolean).map((e) => e[0]?.toUpperCase() + e.slice(1)).join(" ") || e, C_ = (e) => "create" in e && typeof e.create == "function", w_ = (e) => e === "select" || e === "xray" || e === "color-picker" || e === "rulers" || e === "text-inspector" || e === "guides" || e === "distance" || e === "settings", T_ = (e) => `builtin.${e}`, E_ = (e, t) => {
15161
+ ], b_ = "mesurer-plugin-settings", x_ = 3, S_ = (e) => (e.startsWith("mesurer.") ? e.slice(8) : e).split(/[.-]/g).filter(Boolean).map((e) => e[0]?.toUpperCase() + e.slice(1)).join(" ") || e, C_ = (e) => "create" in e && typeof e.create == "function", w_ = (e) => e === "select" || e === "xray" || e === "color-picker" || e === "rulers" || e === "text-inspector" || e === "guides" || e === "distance" || e === "settings", T_ = (e) => `builtin.${e}`, E_ = (e, t) => {
15079
15162
  let n = t.toLowerCase().replaceAll("cmd", "meta").split("+").map((e) => e.trim()).filter(Boolean);
15080
15163
  if (!n.length) return !1;
15081
15164
  let r = n.at(-1), i = new Set(n.slice(0, -1)), a = i.has("mod"), o = i.has("meta"), s = i.has("ctrl") || i.has("control"), c = i.has("shift"), l = i.has("alt") || i.has("option");
@@ -15117,6 +15200,7 @@ function D_(e) {
15117
15200
  return {
15118
15201
  id: t.id,
15119
15202
  label: t.label ?? S_(t.id),
15203
+ description: t.description,
15120
15204
  enabled: n.has(t.id),
15121
15205
  busy: p.has(t.id),
15122
15206
  sections: a
@@ -15205,8 +15289,8 @@ function D_(e) {
15205
15289
  let e = L.localStorage.getItem(re);
15206
15290
  if (e) {
15207
15291
  let t = JSON.parse(e);
15208
- if (t?.version === x_) {
15209
- for (let [e, n] of Object.entries(t.enabled ?? {})) ie.set(e, n);
15292
+ if (t?.version === 1 || t?.version === 2 || t?.version === x_) {
15293
+ for (let [e, n] of Object.entries(t.enabled ?? {})) (t.version !== 2 || e !== "mesurer.codex") && ie.set(e, n);
15210
15294
  for (let [e, n] of Object.entries(t.state ?? {})) f.set(e, n);
15211
15295
  }
15212
15296
  }
@@ -18036,7 +18120,7 @@ function Hy(e) {
18036
18120
  }
18037
18121
  //#endregion
18038
18122
  //#region src/version.ts
18039
- var Uy = "0.2.0-beta.11", Wy = ap, Gy = op, Ky = () => ({
18123
+ var Uy = "0.2.0-beta.13", Wy = ap, Gy = op, Ky = () => ({
18040
18124
  ...$p(),
18041
18125
  version: Uy
18042
18126
  }), qy = (e, t) => e.left <= t.left + t.width && e.left + e.width >= t.left && e.top <= t.top + t.height && e.top + e.height >= t.top, Jy = (e) => {
@@ -18926,34 +19010,34 @@ function zb(e, t, n = !0) {
18926
19010
  };
18927
19011
  }
18928
19012
  //#endregion
18929
- //#region src/codex-plugin.ts
18930
- var Bb = "mesurer.codex", Vb = "codex:v1", Hb = "http://127.0.0.1:47365", Ub = 2e3, Wb = 750, Gb = 1800, Kb = 2e3, qb = 12e4, Jb = 10, Yb = 5, Xb = [
19013
+ //#region src/plugins/codex/index.ts
19014
+ var Bb = "mesurer.codex", Vb = "codex:v1", Hb = 2e3, Ub = 750, Wb = 1800, Gb = 2e3, Kb = 12e4, qb = 10, Jb = 5, Yb = [
18931
19015
  "Implement the current human feedback from Mesurer in this project.",
18932
19016
  "Treat the rendered page as the source of truth, preserve unrelated Mesurer review state,",
18933
19017
  "and verify the affected UI in the live page with Mesurer before claiming completion."
18934
- ].join(" "), Zb = {
19018
+ ].join(" "), Xb = {
18935
19019
  viewBox: "0 0 256 256",
18936
19020
  paths: ["M224,48,32,120l88,32,32,88Z M120,152l104-104"]
18937
- }, Qb = {
19021
+ }, Zb = {
18938
19022
  viewBox: "0 0 256 256",
18939
19023
  paths: ["M72,32H184a8,8,0,0,1,0,16h-8v20.69a40,40,0,0,1-11.72,28.28L137.25,124l27.03,27.03A40,40,0,0,1,176,179.31V208h8a8,8,0,0,1,0,16H72a8,8,0,0,1,0-16h8V179.31a40,40,0,0,1,11.72-28.28L118.75,124,91.72,96.97A40,40,0,0,1,80,68.69V48H72a8,8,0,0,1,0-16Zm24,16V68.69a24,24,0,0,0,7.03,16.97L128,110.63l24.97-24.97A24,24,0,0,0,160,68.69V48Zm32,90.63-24.97,24.97A24,24,0,0,0,96,180.57V208h64V180.57a24,24,0,0,0-7.03-16.97Z"]
18940
- }, $b = {
19024
+ }, Qb = {
18941
19025
  viewBox: "0 0 256 256",
18942
19026
  paths: ["M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z"]
18943
- }, ex = (e) => {
19027
+ }, $b = () => {
18944
19028
  try {
18945
- let t = globalThis.location;
18946
- return t?.origin ? `mesurer-codex-ui:v1:${e}:${t.origin}${t.pathname}` : null;
19029
+ let e = globalThis.location;
19030
+ return e?.origin ? `mesurer-codex-ui:v2:${e.origin}${e.pathname}` : null;
18947
19031
  } catch {
18948
19032
  return null;
18949
19033
  }
18950
- }, tx = (e) => {
18951
- let t = ex(e);
18952
- if (!t) return null;
19034
+ }, ex = () => {
19035
+ let e = $b();
19036
+ if (!e) return null;
18953
19037
  try {
18954
- let e = globalThis.sessionStorage?.getItem(t);
18955
- if (!e) return null;
18956
- let n = JSON.parse(e);
19038
+ let t = globalThis.sessionStorage?.getItem(e);
19039
+ if (!t) return null;
19040
+ let n = JSON.parse(t);
18957
19041
  if (n.version !== 1) return null;
18958
19042
  let r = n.originThread?.trim() || null, i = n.selectedThread?.trim() || null, a = n.delivery;
18959
19043
  return {
@@ -18973,39 +19057,41 @@ var Bb = "mesurer.codex", Vb = "codex:v1", Hb = "http://127.0.0.1:47365", Ub = 2
18973
19057
  } catch {
18974
19058
  return null;
18975
19059
  }
18976
- }, nx = (e, t) => {
18977
- let n = ex(e);
18978
- if (n) try {
18979
- globalThis.sessionStorage?.setItem(n, JSON.stringify(t));
19060
+ }, tx = (e) => {
19061
+ let t = $b();
19062
+ if (t) try {
19063
+ globalThis.sessionStorage?.setItem(t, JSON.stringify(e));
18980
19064
  } catch {}
18981
- }, rx = (e, t) => {
18982
- let n = e.endsWith("/") ? e : `${e}/`;
18983
- return new URL(t, n).toString();
18984
- }, ix = async (e, t, n) => {
18985
- let r = new AbortController(), i = setTimeout(() => r.abort(), 15e3);
18986
- try {
18987
- let i = await fetch(rx(e, t), {
18988
- ...n,
18989
- signal: r.signal
18990
- }), a = await i.text(), o = {};
18991
- if (a) try {
18992
- o = JSON.parse(a);
18993
- } catch {
18994
- o = { error: a };
18995
- }
18996
- if (!i.ok || o.ok === !1) throw Error(o.error || `Mesurer Codex bridge returned HTTP ${i.status}.`);
18997
- return o;
18998
- } catch (t) {
18999
- throw t instanceof Error && t.name === "AbortError" ? Error("Mesurer Codex bridge timed out.") : t instanceof TypeError ? Error(`Mesurer Codex bridge is unavailable at ${e}. Start the local bridge before queueing feedback.`) : t;
19000
- } finally {
19001
- clearTimeout(i);
19002
- }
19003
- }, ax = (e) => ({
19065
+ }, nx = async (e) => {
19066
+ let t = window.__MESURER_HOST__?.codexBridge;
19067
+ if (!t) throw Error("Codex Bridge is unavailable in this host.");
19068
+ let n = await t(e);
19069
+ if (n.ok === !1) throw Error(n.error ?? "Codex Bridge request failed.");
19070
+ return n;
19071
+ }, rx = (e) => {
19072
+ let t = e.runtime;
19073
+ return !t || ![
19074
+ "shared",
19075
+ "standalone",
19076
+ "desktop",
19077
+ "none"
19078
+ ].includes(t.source) || ![
19079
+ "shared-app-server",
19080
+ "desktop-queue",
19081
+ "private-stdio",
19082
+ "none"
19083
+ ].includes(t.transport) || t.reason !== null && t.reason !== "desktop-private-transport" && t.reason !== "runtime-not-found" ? null : {
19084
+ source: t.source,
19085
+ transport: t.transport,
19086
+ available: t.available === !0,
19087
+ reason: t.reason
19088
+ };
19089
+ }, ix = (e) => ({
19004
19090
  thread: e.thread?.trim() || null,
19005
19091
  threads: Array.isArray(e.threads) ? e.threads.filter((e) => e.trim().length > 0) : []
19006
- }), ox = (e) => {
19092
+ }), ax = (e) => {
19007
19093
  let t = e.deliveryId?.trim(), n = e.thread?.trim(), r = e.status;
19008
- if (!t || !n || !r) throw Error("Mesurer Codex bridge returned an invalid delivery state.");
19094
+ if (!t || !n || !r) throw Error("Codex Bridge returned an invalid delivery state.");
19009
19095
  let i = {
19010
19096
  id: t,
19011
19097
  thread: n,
@@ -19015,7 +19101,7 @@ var Bb = "mesurer.codex", Vb = "codex:v1", Hb = "http://127.0.0.1:47365", Ub = 2
19015
19101
  updatedAt: Number.isFinite(e.updatedAt) ? Number(e.updatedAt) : 0
19016
19102
  };
19017
19103
  return e.queuedSubmissionId !== void 0 && (i.queuedSubmissionId = e.queuedSubmissionId?.trim() || null), e.dispatch !== void 0 && (i.dispatch = e.dispatch), e.dispatchError !== void 0 && (i.dispatchError = e.dispatchError?.trim() || null), i;
19018
- }, sx = (e) => ({
19104
+ }, ox = (e) => ({
19019
19105
  thread: e.thread?.trim() || null,
19020
19106
  threads: Array.isArray(e.threadDetails) ? e.threadDetails.flatMap((e) => {
19021
19107
  let t = e.id?.trim() ?? "";
@@ -19027,7 +19113,7 @@ var Bb = "mesurer.codex", Vb = "codex:v1", Hb = "http://127.0.0.1:47365", Ub = 2
19027
19113
  }] : [];
19028
19114
  }) : [],
19029
19115
  hasMore: e.hasMore === !0
19030
- }), cx = async (e, t, n) => {
19116
+ }), sx = async (e, t, n) => {
19031
19117
  let r = t?.instruction?.trim() || n, i = await e.annotations(), a = t?.annotationIds, o = a ? a.flatMap((e) => {
19032
19118
  let t = i.find((t) => t.id === e);
19033
19119
  return t ? [t] : [];
@@ -19050,76 +19136,87 @@ var Bb = "mesurer.codex", Vb = "codex:v1", Hb = "http://127.0.0.1:47365", Ub = 2
19050
19136
  ])
19051
19137
  ].join("\n").trimEnd()
19052
19138
  };
19053
- }, lx = (e) => e.length > 16 ? `${e.slice(0, 8)}…${e.slice(-4)}` : e, ux = (e, t = 42) => e.length > t ? `${e.slice(0, t - 1)}…` : e, dx = (e, t) => e instanceof Error && e.message === `Mesurer Codex bridge is unavailable at ${t}. Start the local bridge before queueing feedback.`;
19054
- function fx(e = {}) {
19055
- let t = e.endpoint ?? Hb, n = e.instruction?.trim() || Xb, r = e.ui ?? !0, i = e.clearCompletedAnnotations ?? !0;
19139
+ }, cx = (e) => e.length > 16 ? `${e.slice(0, 8)}…${e.slice(-4)}` : e, lx = (e, t = 42) => e.length > t ? `${e.slice(0, t - 1)}…` : e, ux = (e) => e instanceof Error && e.message === "Codex Bridge is unavailable in this host.";
19140
+ function dx(e = {}) {
19141
+ let t = e.instruction?.trim() || Yb, n = e.ui ?? !0, r = e.clearCompletedAnnotations ?? !0;
19056
19142
  return {
19057
19143
  id: Bb,
19058
19144
  version: Uy,
19059
19145
  requires: [Sb],
19060
19146
  provides: [Vb],
19061
19147
  setup(e) {
19062
- let a = e.service.get(Sb);
19063
- if (!a) throw Error("Mesurer Codex plugin requires context() from mesurer-solid/plugins.");
19064
- let o = r ? tx(t) : null, s = "unknown", c = !1, l = o?.originThread ?? null, u = o?.selectedThread ?? o?.originThread ?? null, d = !1, f = null, p = [], m = [], h = !1, g = Yb, _, v = "", y = null, b = o?.delivery ? {
19065
- id: o.delivery.id,
19066
- thread: o.delivery.thread,
19067
- status: o.delivery.status,
19068
- annotationIds: o.delivery.annotationIds,
19069
- queuedSubmissionId: o.delivery.queuedSubmissionId ?? null,
19070
- dispatch: o.delivery.dispatch ?? null,
19071
- dispatchError: o.delivery.dispatchError ?? null
19072
- } : null, x = 0, S = 0, C = null, w = !1, T = async () => ax(await ix(t, "health")), E = async (e) => ox(await ix(t, `deliveries/${encodeURIComponent(e)}`)), D = async (e) => {
19148
+ let i = e.service.get(Sb);
19149
+ if (!i) throw Error("Mesurer Codex plugin requires context() from mesurer-solid/plugins.");
19150
+ let a = n ? ex() : null, o = "unknown", s = null, c = !1, l = a?.originThread ?? null, u = a?.selectedThread ?? a?.originThread ?? null, d = !1, f = null, p = [], m = [], h = !1, g = Jb, _, v = "", y = null, b = a?.delivery ? {
19151
+ id: a.delivery.id,
19152
+ thread: a.delivery.thread,
19153
+ status: a.delivery.status,
19154
+ annotationIds: a.delivery.annotationIds,
19155
+ queuedSubmissionId: a.delivery.queuedSubmissionId ?? null,
19156
+ dispatch: a.delivery.dispatch ?? null,
19157
+ dispatchError: a.delivery.dispatchError ?? null
19158
+ } : null, x = 0, S = 0, C = null, w = !1, T = async () => {
19159
+ let e = rx(await nx({ action: "runtime" }));
19160
+ if (!e) throw Error("Codex Bridge returned an invalid runtime state.");
19161
+ return s = e, e;
19162
+ }, E = async () => {
19163
+ let e = await nx({
19164
+ action: "health",
19165
+ thread: u ?? l ?? void 0
19166
+ });
19167
+ return s = rx(e) ?? s, ix(e);
19168
+ }, D = E, O = async (e) => ax(await nx({
19169
+ action: "delivery",
19170
+ deliveryId: e
19171
+ })), k = async (e) => {
19073
19172
  if (!e.id || !e.thread) throw Error("Cannot restore a Codex delivery without its id and thread.");
19074
- let n = {
19173
+ let t = {
19174
+ action: "restore",
19075
19175
  deliveryId: e.id,
19076
19176
  thread: e.thread
19077
19177
  };
19078
- return e.queuedSubmissionId && (n.queuedSubmissionId = e.queuedSubmissionId), ox(await ix(t, "deliveries/restore", {
19079
- method: "POST",
19080
- headers: { "Content-Type": "application/json" },
19081
- body: JSON.stringify(n)
19082
- }));
19083
- }, O = async (e = {}) => {
19084
- let n = new URLSearchParams();
19085
- n.set("limit", String(e.limit ?? Jb));
19086
- let r = e.thread?.trim();
19087
- return r && n.set("thread", r), sx(await ix(t, `threads?${n.toString()}`));
19088
- }, k = () => u ?? l ?? (d ? null : f), A = () => {
19089
- if (!r) return;
19178
+ return e.queuedSubmissionId && (t.queuedSubmissionId = e.queuedSubmissionId), ax(await nx(t));
19179
+ }, A = async (e = {}) => {
19180
+ let t = {
19181
+ action: "threads",
19182
+ limit: e.limit ?? qb
19183
+ }, n = e.thread?.trim();
19184
+ return n && (t.thread = n), ox(await nx(t));
19185
+ }, j = () => u ?? l ?? (d ? null : f), M = () => {
19186
+ if (!n) return;
19090
19187
  let e = b?.id && (b.status === "queued" || b.status === "working" || b.status === "interrupted") ? {
19091
19188
  id: b.id,
19092
- thread: b.thread ?? k() ?? "",
19189
+ thread: b.thread ?? j() ?? "",
19093
19190
  status: b.status,
19094
19191
  annotationIds: [...b.annotationIds],
19095
19192
  queuedSubmissionId: b.queuedSubmissionId,
19096
19193
  dispatch: b.dispatch,
19097
19194
  dispatchError: b.dispatchError
19098
19195
  } : null;
19099
- nx(t, {
19196
+ tx({
19100
19197
  version: 1,
19101
19198
  originThread: l,
19102
19199
  selectedThread: u,
19103
19200
  delivery: e?.thread ? e : null
19104
19201
  });
19105
- }, j = (e, t = !1) => {
19202
+ }, N = (e, t = !1) => {
19106
19203
  let n = e.trim();
19107
- n && ((t || !l) && (l = n), u = n, d = !1, A());
19108
- }, M = () => b !== null && [
19204
+ n && ((t || !l) && (l = n), u = n, d = !1, M());
19205
+ }, P = () => b !== null && [
19109
19206
  "queueing",
19110
19207
  "queued",
19111
19208
  "working",
19112
19209
  "completed"
19113
- ].includes(b.status), N = () => b?.status === "queued" && (b.dispatch === "desktop-send-uncertain" || b.dispatch === "desktop-wait-failed"), P = (e) => e === "queueing" ? "Queueing…" : e === "queued" ? "Queued" : e === "working" ? "Working…" : e === "completed" ? "Done" : e === "interrupted" ? "Interrupted" : "Failed", F = () => b ? b.status === "queueing" ? "Queueing to Codex…" : N() ? "Codex delivery blocked" : b.status === "queued" ? "Queued for Codex" : b.status === "working" ? "Codex working…" : b.status === "completed" ? "Codex finished" : b.status === "interrupted" ? "Codex interrupted" : "Queue failed" : null, I = () => b ? [
19210
+ ].includes(b.status), F = (e) => e === "queueing" ? "Queueing…" : e === "queued" ? "Queued" : e === "working" ? "Working…" : e === "completed" ? "Done" : e === "interrupted" ? "Interrupted" : "Failed", I = () => b ? b.status === "queueing" ? "Queueing to Codex…" : b.status === "queued" ? b.dispatch === "desktop-wake-failed" ? "Queued — open Codex" : "Queued for Codex" : b.status === "working" ? "Codex working…" : b.status === "completed" ? "Codex finished" : b.status === "interrupted" ? "Codex interrupted" : "Queue failed" : null, L = () => b ? [
19114
19211
  "queueing",
19115
19212
  "queued",
19116
19213
  "working"
19117
- ].includes(b.status) ? Qb : b.status === "completed" ? $b : Zb : Zb, L = () => {
19214
+ ].includes(b.status) ? Zb : b.status === "completed" ? Qb : Xb : Xb, R = () => {
19118
19215
  let e = [], t = /* @__PURE__ */ new Set(), n = (n) => {
19119
19216
  t.has(n.id) || (t.add(n.id), e.push(n));
19120
19217
  }, r = (e) => ({
19121
19218
  id: e,
19122
- title: `Codex ${lx(e)}`,
19219
+ title: `Codex ${cx(e)}`,
19123
19220
  updatedAt: null,
19124
19221
  connected: !0
19125
19222
  });
@@ -19129,96 +19226,94 @@ function fx(e = {}) {
19129
19226
  for (let e of m) n(e);
19130
19227
  for (let e of p) n(m.find((t) => t.id === e) ?? r(e));
19131
19228
  return e;
19132
- }, R = (e = !1) => Promise.resolve(), z = () => {
19133
- if (s !== "available") return [{
19134
- id: "codex.thread.connect",
19135
- label: s === "unavailable" ? "Retry Codex connection" : "Choose Codex thread…",
19136
- run: () => R(!0)
19137
- }];
19138
- let e = L(), t = e.slice(0, g), n = k(), r = t.map((e) => {
19139
- let t = e.id === l ? "Current · " : e.connected ? "Connected · " : "", r = b?.thread === e.id ? ` · ${N() ? "Blocked" : P(b.status)}` : "";
19229
+ }, z = (e = !1) => Promise.resolve(), B = () => {
19230
+ if (o !== "available") {
19231
+ let e = s?.source === "desktop" && s.reason === "desktop-private-transport";
19232
+ return [{
19233
+ id: "codex.thread.connect",
19234
+ label: o === "unavailable" ? e ? "Retry Codex Desktop" : "Retry Codex connection" : "Choose Codex thread…",
19235
+ run: () => z(!0)
19236
+ }];
19237
+ }
19238
+ let e = R(), t = e.slice(0, g), n = j(), r = t.map((e) => {
19239
+ let t = e.id === l ? "Current · " : e.connected ? "Loaded · " : "", r = b?.thread === e.id ? ` · ${F(b.status)}` : "";
19140
19240
  return {
19141
19241
  id: `codex.thread.${e.id}`,
19142
- label: `${t}${ux(e.title)}${r}`,
19242
+ label: `${t}${lx(e.title)}${r}`,
19143
19243
  checked: () => n === e.id,
19144
- disabled: () => M(),
19244
+ disabled: () => P(),
19145
19245
  run() {
19146
- M() || (j(e.id, !l), B());
19246
+ P() || (N(e.id, !l), V());
19147
19247
  }
19148
19248
  };
19149
19249
  });
19150
- return g < Jb && (e.length > g || h) && r.push({
19250
+ return g < qb && (e.length > g || h) && r.push({
19151
19251
  id: "codex.thread.show-more",
19152
19252
  label: "Show 5 more…",
19153
19253
  run() {
19154
- g = Jb, B();
19254
+ g = qb, V();
19155
19255
  }
19156
19256
  }), r;
19157
- }, B = () => {
19158
- if (!r || w) return;
19159
- let t = k(), n = z(), i = !M() && !d && s !== "unavailable" && (s === "unknown" || !!t), a = F() ?? (s === "unavailable" ? "Codex unavailable" : d || s === "available" && !t ? "Choose Codex thread" : "Queue to Codex"), o = JSON.stringify({
19160
- bridgeAvailability: s,
19257
+ }, V = () => {
19258
+ if (!n || w) return;
19259
+ let t = j(), r = B(), i = !P() && !d && o !== "unavailable" && (o === "unknown" || !!t), a = s?.source === "desktop" && s.reason === "desktop-private-transport", c = I() ?? (o === "unavailable" ? a ? "Codex Desktop not connected" : "Codex unavailable" : d || o === "available" && !t ? "Choose Codex thread" : "Queue to Codex"), l = JSON.stringify({
19260
+ bridgeAvailability: o,
19261
+ codexRuntime: s,
19161
19262
  routeNeedsSelection: d,
19162
19263
  target: t,
19163
- label: a,
19264
+ label: c,
19164
19265
  visibleThreadCount: g,
19165
19266
  activeDelivery: b,
19166
- items: n.map((e) => ({
19267
+ items: r.map((e) => ({
19167
19268
  id: e.id,
19168
19269
  label: e.label,
19169
19270
  checked: e.checked?.() ?? null,
19170
19271
  disabled: e.disabled?.() ?? !1
19171
19272
  }))
19172
19273
  });
19173
- o !== v && (v = o, _?.dispose(), _ = e.tool.register({
19274
+ l !== v && (v = l, _?.dispose(), _ = e.tool.register({
19174
19275
  id: "codex.send",
19175
- label: a,
19276
+ label: c,
19176
19277
  command: "codex.queue",
19177
19278
  order: 73,
19178
- icon: I(),
19279
+ icon: L(),
19179
19280
  disabled: () => !i,
19180
- menu: n.length ? {
19281
+ menu: r.length ? {
19181
19282
  label: "Codex destination",
19182
- items: n
19283
+ items: r
19183
19284
  } : void 0
19184
19285
  }));
19185
- }, V = async () => {
19186
- if (s !== "available") return;
19187
- let e = l && p.includes(l) ? l : f;
19188
- try {
19189
- let t = await O({
19190
- limit: Jb,
19191
- thread: e ?? void 0
19192
- });
19193
- m = t.threads, h = t.hasMore;
19194
- } catch {
19195
- m = p.map((e) => ({
19196
- id: e,
19197
- title: `Codex ${lx(e)}`,
19198
- updatedAt: null,
19199
- connected: !0
19200
- })), h = !1;
19201
- }
19286
+ }, H = async (e) => {
19287
+ if (o !== "available") return;
19288
+ let t = await A({
19289
+ limit: qb,
19290
+ thread: e ?? void 0
19291
+ });
19292
+ m = t.threads, h = t.hasMore, p = t.threads.filter((e) => e.connected).map((e) => e.id), f = t.thread;
19202
19293
  };
19203
- R = (e = !1) => w || s === "unknown" && !e ? Promise.resolve() : y || (y = (async () => {
19294
+ z = (e = !1) => w || o === "unknown" && !e ? Promise.resolve() : y || (y = (async () => {
19204
19295
  try {
19205
- let e = await T(), t = e.thread !== f;
19206
- s = "available", c = !0, f = e.thread, p = e.threads;
19207
- let n = u ?? l;
19208
- n ? d = !e.threads.includes(n) : e.threads.length === 1 ? j(e.threads[0], !0) : d = (e.threads.length, !0), (t || m.length === 0 || d) && await V(), d && n && m.some((e) => e.id === n) && (d = !1, A());
19296
+ let e = await D();
19297
+ o = "available", c = !0, f = e.thread, await H(u ?? l ?? e.thread);
19298
+ let t = u ?? l;
19299
+ t && p.includes(t) ? d = !1 : p.length === 1 ? N(p[0], !0) : d = !0, !d && t && M();
19209
19300
  } catch (e) {
19210
- throw s = "unavailable", e;
19301
+ throw o = "unavailable", s = await T().catch(() => s), e;
19211
19302
  } finally {
19212
- y = null, B();
19303
+ y = null, V();
19213
19304
  }
19214
19305
  })(), y);
19215
- let H = () => {
19306
+ let U = () => {
19216
19307
  x &&= (globalThis.clearTimeout(x), 0), S &&= (globalThis.clearTimeout(S), 0);
19217
- }, U = () => {
19308
+ }, W = () => {
19309
+ S && globalThis.clearTimeout(S), S = globalThis.setTimeout(() => {
19310
+ S = 0, b?.status === "completed" && (b = null, M(), V());
19311
+ }, Wb);
19312
+ }, ee = () => {
19218
19313
  S && globalThis.clearTimeout(S), S = globalThis.setTimeout(() => {
19219
- S = 0, b?.status === "completed" && (b = null, A(), B());
19220
- }, Gb);
19221
- }, W = async (e) => {
19314
+ S = 0, !(b?.status !== "queued" || b.dispatch !== "desktop-opened" && b.dispatch !== "desktop-wake-failed") && (b = null, M(), V());
19315
+ }, Wb);
19316
+ }, te = async (e) => {
19222
19317
  if (!(!b || b.id !== e.id)) {
19223
19318
  if (b = {
19224
19319
  ...b,
@@ -19227,104 +19322,106 @@ function fx(e = {}) {
19227
19322
  queuedSubmissionId: e.queuedSubmissionId ?? b.queuedSubmissionId,
19228
19323
  dispatch: e.dispatch ?? b.dispatch,
19229
19324
  dispatchError: e.dispatchError ?? b.dispatchError
19230
- }, A(), e.status === "completed") {
19231
- if (i) for (let e of b.annotationIds) await a.removeAnnotation(e);
19232
- A(), B(), U();
19325
+ }, M(), e.status === "queued" && (e.dispatch === "desktop-opened" || e.dispatch === "desktop-wake-failed")) {
19326
+ V(), ee();
19327
+ return;
19328
+ }
19329
+ if (e.status === "completed") {
19330
+ if (r) for (let e of b.annotationIds) await i.removeAnnotation(e);
19331
+ M(), V(), W();
19233
19332
  return;
19234
19333
  }
19235
19334
  if (e.status === "interrupted") {
19236
- A(), B();
19335
+ M(), V();
19237
19336
  let t = e.updatedAt > 0 ? e.updatedAt : Date.now();
19238
- Date.now() - t < qb && (x = globalThis.setTimeout(() => {
19239
- x = 0, ee(e.id);
19240
- }, Kb));
19337
+ Date.now() - t < Kb && (x = globalThis.setTimeout(() => {
19338
+ x = 0, ne(e.id);
19339
+ }, Gb));
19241
19340
  return;
19242
19341
  }
19243
- B(), x = globalThis.setTimeout(() => {
19244
- x = 0, ee(e.id);
19245
- }, Wb);
19342
+ V(), x = globalThis.setTimeout(() => {
19343
+ x = 0, ne(e.id);
19344
+ }, Ub);
19246
19345
  }
19247
- }, ee = async (e) => {
19346
+ }, ne = async (e) => {
19248
19347
  if (!(w || b?.id !== e)) try {
19249
- await W(await E(e));
19250
- } catch (n) {
19348
+ await te(await O(e));
19349
+ } catch (t) {
19251
19350
  if (b?.id !== e) return;
19252
- let r = n;
19351
+ let n = t;
19253
19352
  if (b.status === "queued" && b.thread) try {
19254
- s !== "available" && await R(!0);
19255
- let e = await D(b);
19256
- await W(e);
19353
+ o !== "available" && await z(!0);
19354
+ let e = await k(b);
19355
+ await te(e);
19257
19356
  return;
19258
19357
  } catch (e) {
19259
- r = e;
19358
+ n = e;
19260
19359
  }
19261
19360
  if (b?.id !== e) return;
19262
19361
  if (b.status === "interrupted") {
19263
- B();
19362
+ V();
19264
19363
  return;
19265
19364
  }
19266
19365
  b = {
19267
19366
  ...b,
19268
19367
  status: "failed"
19269
- }, A(), dx(r, t) && (s = "unavailable"), B();
19368
+ }, M(), ux(n) && (o = "unavailable"), V();
19270
19369
  }
19271
- }, te = {
19272
- health: T,
19273
- listThreads: O,
19274
- delivery: E,
19370
+ }, re = {
19371
+ health: E,
19372
+ listThreads: A,
19373
+ delivery: O,
19275
19374
  async useThread(e) {
19276
- let n = e.trim();
19277
- if (!n) throw Error("Codex thread must be a non-empty string.");
19278
- let r = ax(await ix(t, "target", {
19279
- method: "POST",
19280
- headers: { "Content-Type": "application/json" },
19281
- body: JSON.stringify({ thread: n })
19282
- }));
19283
- return j(n, !l), f = r.thread, p = r.threads, s = "available", c = !0, B(), r;
19375
+ let t = e.trim();
19376
+ if (!t) throw Error("Codex thread must be a non-empty string.");
19377
+ let n = await nx({
19378
+ action: "target",
19379
+ thread: t
19380
+ }), r = ix(n);
19381
+ return s = rx(n) ?? s, N(t, !l), f = r.thread, p = r.threads, o = "available", c = !0, V(), r;
19284
19382
  },
19285
19383
  async queue(e) {
19286
- let i = await cx(a, e, n), o = e?.thread?.trim(), c = o || (r ? k() : null);
19287
- if (r && !o && (d || !c)) throw Error("Choose a Codex thread before queueing feedback.");
19288
- let l = { message: i.message };
19289
- c && (l.thread = c);
19384
+ let r = await sx(i, e, t), a = e?.thread?.trim(), s = a || (n ? j() : null);
19385
+ if (n && !a && (d || !s)) throw Error("Choose a Codex thread before queueing feedback.");
19386
+ let c = { message: r.message };
19387
+ s && (c.thread = s);
19290
19388
  try {
19291
- let e = await ix(t, "send", {
19292
- method: "POST",
19293
- headers: { "Content-Type": "application/json" },
19294
- body: JSON.stringify(l)
19295
- }), n = e.thread?.trim();
19296
- if (!n) throw Error("Mesurer Codex bridge did not report the destination thread.");
19297
- let r = {
19298
- thread: n,
19389
+ let e = await nx({
19390
+ action: "queue",
19391
+ ...c
19392
+ }), t = e.thread?.trim();
19393
+ if (!t) throw Error("Codex Bridge did not report the destination thread.");
19394
+ let n = {
19395
+ thread: t,
19299
19396
  output: e.output ?? "",
19300
19397
  delivery: "queued",
19301
19398
  deliveryId: e.deliveryId?.trim() || null,
19302
19399
  status: e.status ?? "queued",
19303
- annotationIds: i.annotationIds
19400
+ annotationIds: r.annotationIds
19304
19401
  };
19305
- return e.queuedSubmissionId !== void 0 && (r.queuedSubmissionId = e.queuedSubmissionId?.trim() || null), e.dispatch !== void 0 && (r.dispatch = e.dispatch), e.dispatchError !== void 0 && (r.dispatchError = e.dispatchError?.trim() || null), r;
19402
+ return e.queuedSubmissionId !== void 0 && (n.queuedSubmissionId = e.queuedSubmissionId?.trim() || null), e.dispatch !== void 0 && (n.dispatch = e.dispatch), e.dispatchError !== void 0 && (n.dispatchError = e.dispatchError?.trim() || null), n;
19306
19403
  } catch (e) {
19307
- throw r && dx(e, t) && (s = "unavailable", B()), e;
19404
+ throw n && ux(e) && (o = "unavailable", V()), e;
19308
19405
  }
19309
19406
  },
19310
19407
  send(e) {
19311
- return te.queue(e);
19408
+ return re.queue(e);
19312
19409
  }
19313
19410
  };
19314
- e.service.provide(Vb, te);
19315
- let ne = async () => {
19316
- if (!(C || M())) return H(), b = {
19411
+ e.service.provide(Vb, re);
19412
+ let ie = async () => {
19413
+ if (!(C || P())) return U(), b = {
19317
19414
  id: null,
19318
- thread: k(),
19415
+ thread: j(),
19319
19416
  status: "queueing",
19320
19417
  annotationIds: [],
19321
19418
  queuedSubmissionId: null,
19322
19419
  dispatch: null,
19323
19420
  dispatchError: null
19324
- }, B(), C = (async () => {
19421
+ }, V(), C = (async () => {
19325
19422
  try {
19326
- r && s !== "available" && await R(!0);
19327
- let e = await te.queue();
19423
+ n && o !== "available" && await z(!0);
19424
+ let e = await re.queue();
19328
19425
  b = {
19329
19426
  id: e.deliveryId,
19330
19427
  thread: e.thread,
@@ -19333,7 +19430,7 @@ function fx(e = {}) {
19333
19430
  queuedSubmissionId: e.queuedSubmissionId ?? null,
19334
19431
  dispatch: e.dispatch ?? null,
19335
19432
  dispatchError: e.dispatchError ?? null
19336
- }, j(e.thread, !l), A(), B(), console.info(`[Mesurer] Queued feedback for Codex thread ${e.thread}.`), e.deliveryId ? e.status === "completed" || e.status === "interrupted" ? await W({
19433
+ }, N(e.thread, !l), M(), V(), console.info(`[Mesurer] Queued feedback for Codex thread ${e.thread}.`), e.deliveryId ? e.status === "completed" || e.status === "interrupted" ? await te({
19337
19434
  id: e.deliveryId,
19338
19435
  thread: e.thread,
19339
19436
  status: e.status,
@@ -19341,12 +19438,12 @@ function fx(e = {}) {
19341
19438
  createdAt: 0,
19342
19439
  updatedAt: 0
19343
19440
  }) : x = globalThis.setTimeout(() => {
19344
- x = 0, ee(e.deliveryId);
19345
- }, Wb) : S = globalThis.setTimeout(() => {
19346
- S = 0, b?.id === null && b?.status === "queued" && (b = null, A(), B());
19347
- }, Gb);
19441
+ x = 0, ne(e.deliveryId);
19442
+ }, Ub) : S = globalThis.setTimeout(() => {
19443
+ S = 0, b?.id === null && b?.status === "queued" && (b = null, M(), V());
19444
+ }, Wb);
19348
19445
  } catch (e) {
19349
- b = null, A(), B();
19446
+ b = null, M(), V();
19350
19447
  let t = e instanceof Error ? e.message : String(e);
19351
19448
  throw console.error(`[Mesurer] Failed to queue feedback for Codex: ${t}`), e;
19352
19449
  } finally {
@@ -19354,15 +19451,15 @@ function fx(e = {}) {
19354
19451
  }
19355
19452
  })(), C;
19356
19453
  };
19357
- if (e.command.register("codex.queue", ne), e.command.register("codex.send", ne), r) {
19358
- B(), b?.id && (c = !0, x = globalThis.setTimeout(() => {
19359
- x = 0, b?.id && ee(b.id);
19454
+ if (e.command.register("codex.queue", ie), e.command.register("codex.send", ie), n) {
19455
+ V(), window.__MESURER_HOST__?.codexBridge && z(!0).catch(() => void 0), b?.id && (c = !0, x = globalThis.setTimeout(() => {
19456
+ x = 0, b?.id && ne(b.id);
19360
19457
  }, 0));
19361
19458
  let t = globalThis.setInterval(() => {
19362
- c && R().catch(() => void 0);
19363
- }, Ub);
19459
+ c && z().catch(() => void 0);
19460
+ }, Hb);
19364
19461
  e.lifecycle.onDispose(() => {
19365
- w = !0, H(), globalThis.clearInterval(t), _?.dispose(), _ = void 0;
19462
+ w = !0, U(), globalThis.clearInterval(t), _?.dispose(), _ = void 0;
19366
19463
  });
19367
19464
  }
19368
19465
  }
@@ -19370,7 +19467,7 @@ function fx(e = {}) {
19370
19467
  }
19371
19468
  //#endregion
19372
19469
  //#region src/plugin-catalog.ts
19373
- var px = [
19470
+ var fx = [
19374
19471
  {
19375
19472
  id: xb,
19376
19473
  label: "Context",
@@ -19406,17 +19503,18 @@ var px = [
19406
19503
  {
19407
19504
  id: Bb,
19408
19505
  label: "Codex",
19506
+ description: "Connects Mesurer to your open Codex threads on this computer.",
19409
19507
  order: 45,
19410
- create: fx
19508
+ create: dx
19411
19509
  }
19412
- ], mx = (e) => {
19413
- let t = e !== void 0, n = new Map((e ?? []).map((e) => [e.id, e])), r = new Set(px.map((e) => e.id)), i = px.map((e) => {
19510
+ ], px = (e) => {
19511
+ let t = e !== void 0, n = new Map((e ?? []).map((e) => [e.id, e])), r = new Set(fx.map((e) => e.id)), i = fx.map((e) => {
19414
19512
  let r = n.get(e.id);
19415
19513
  return {
19416
19514
  ...e,
19417
19515
  settingsIds: e.settingsIds ? [...e.settingsIds] : void 0,
19418
19516
  hiddenSettingsControlIds: e.hiddenSettingsControlIds ? [...e.hiddenSettingsControlIds] : void 0,
19419
- enabled: !t || !!r,
19517
+ enabled: t ? !!r : e.enabled !== !1,
19420
19518
  create: r ? () => r : e.create
19421
19519
  };
19422
19520
  });
@@ -19427,16 +19525,16 @@ var px = [
19427
19525
  create: () => n
19428
19526
  });
19429
19527
  return i;
19430
- }, hx = (e) => e;
19431
- function gx() {
19528
+ }, mx = (e) => e;
19529
+ function hx() {
19432
19530
  return nb();
19433
19531
  }
19434
- async function _x(e = {}) {
19532
+ async function gx(e = {}) {
19435
19533
  return rb(e);
19436
19534
  }
19437
19535
  //#endregion
19438
19536
  //#region src/index.tsx
19439
- var vx = {
19537
+ var _x = {
19440
19538
  select: "select",
19441
19539
  xray: "xray",
19442
19540
  colorPicker: "color-picker",
@@ -19446,7 +19544,7 @@ var vx = {
19446
19544
  distance: "distance",
19447
19545
  settings: "settings"
19448
19546
  };
19449
- function yx(e = {}) {
19547
+ function vx(e = {}) {
19450
19548
  if (!("document" in globalThis)) throw Error("mountMesurer() requires a browser or Electron renderer document.");
19451
19549
  let { target: t = document.body, isolate: n = !0, shadowMode: r = "open", topLayer: i = !0, agent: a = !1, signal: o, onPluginHost: s, onPluginsReady: c, plugins: l, excludeBuiltins: u, excludePlugins: d, ...f } = e;
19452
19550
  if (o?.aborted) throw o.reason ?? new DOMException("Mesurer mount aborted.", "AbortError");
@@ -19523,8 +19621,8 @@ function yx(e = {}) {
19523
19621
  }), se = {
19524
19622
  ...f,
19525
19623
  version: Uy,
19526
- plugins: mx(l),
19527
- excludePlugins: u ? u.map((e) => vx[e]) : [...d ?? []]
19624
+ plugins: px(l),
19625
+ excludePlugins: u ? u.map((e) => _x[e]) : [...d ?? []]
19528
19626
  }, ce = _i(() => Rr(D_, gi(se, {
19529
19627
  portalTarget: y,
19530
19628
  pageTarget: t,
@@ -19593,6 +19691,6 @@ function yx(e = {}) {
19593
19691
  }
19594
19692
  return ge;
19595
19693
  }
19596
- var bx = yx;
19694
+ var yx = vx;
19597
19695
  //#endregion
19598
- export { By as MESURER_TEXT_EDIT_SERVICE_ID, Uy as MESURER_VERSION, cb as captureMesurerContext, _b as copyTextToClipboard, Hy as createMesurerAgentHarness, fb as createMesurerCapturePlan, gx as createMesurerPluginHost, _x as createMesurerRuntime, hx as defineMesurerPlugin, db as formatMesurerContext, bx as mountMeasurer, yx as mountMesurer, gb as reviewMesurerAnnotation };
19696
+ export { By as MESURER_TEXT_EDIT_SERVICE_ID, Uy as MESURER_VERSION, cb as captureMesurerContext, _b as copyTextToClipboard, Hy as createMesurerAgentHarness, fb as createMesurerCapturePlan, hx as createMesurerPluginHost, gx as createMesurerRuntime, mx as defineMesurerPlugin, db as formatMesurerContext, yx as mountMeasurer, vx as mountMesurer, gb as reviewMesurerAnnotation };