@weasel-js/labkit 1.0.2 → 1.0.4

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.
Files changed (111) hide show
  1. package/dist/_dts/{DrawCommand-CitWPxMY.d.ts → DrawCommand-BkZztJsW.d.ts} +59 -1
  2. package/dist/_dts/{index-C6Yze7sQ.d.ts → index-CFlDPeZh.d.ts} +30 -1
  3. package/dist/_dts/{types-Si4Fw-1F.d.ts → types-x92Kfeme.d.ts} +14 -0
  4. package/dist/_dts/{useExperimentState-CJn2hHzd.d.ts → useExperimentState-D7EQnnwJ.d.ts} +47 -0
  5. package/dist/canvas/index.d.ts +13 -2
  6. package/dist/canvas/index.js +2 -2
  7. package/dist/{chunk-54IQ2DX7.js → chunk-574LJAV4.js} +3 -3
  8. package/dist/chunk-574LJAV4.js.map +1 -0
  9. package/dist/{chunk-VLAHRJOC.js → chunk-5R2ATYPJ.js} +2 -2
  10. package/dist/{chunk-VLAHRJOC.js.map → chunk-5R2ATYPJ.js.map} +1 -1
  11. package/dist/{chunk-R4TACNW7.js → chunk-BAPZPDDA.js} +631 -591
  12. package/dist/chunk-BAPZPDDA.js.map +1 -0
  13. package/dist/{chunk-PWC7AQZM.js → chunk-CPUJ3QXL.js} +2 -2
  14. package/dist/chunk-CPUJ3QXL.js.map +1 -0
  15. package/dist/{chunk-2ZRE7WGQ.js → chunk-DEWXYFEU.js} +6 -6
  16. package/dist/chunk-DEWXYFEU.js.map +1 -0
  17. package/dist/{chunk-3P56ZCCJ.js → chunk-DWV7SFKR.js} +601 -269
  18. package/dist/chunk-DWV7SFKR.js.map +1 -0
  19. package/dist/{chunk-53XSBIUK.js → chunk-KSTEW2AF.js} +18 -2
  20. package/dist/chunk-KSTEW2AF.js.map +1 -0
  21. package/dist/{chunk-HXZHVU4G.js → chunk-PMAU3SEE.js} +3 -3
  22. package/dist/chunk-PMAU3SEE.js.map +1 -0
  23. package/dist/{chunk-7BKDG73Z.js → chunk-RL2LOLNI.js} +2 -2
  24. package/dist/chunk-RL2LOLNI.js.map +1 -0
  25. package/dist/{chunk-2QNYYL3V.js → chunk-SFL7NFKN.js} +2 -2
  26. package/dist/chunk-SFL7NFKN.js.map +1 -0
  27. package/dist/controls/index.d.ts +4 -2
  28. package/dist/controls/index.js +1 -1
  29. package/dist/dragdrop/index.d.ts +2 -2
  30. package/dist/index.d.ts +180 -15
  31. package/dist/index.js +146 -37
  32. package/dist/index.js.map +1 -1
  33. package/dist/layers/index.d.ts +6 -3
  34. package/dist/layers/index.js +1 -1
  35. package/dist/passthrough/weasel-canvas.d.ts +5 -1
  36. package/dist/passthrough/weasel-canvas.js +1 -1
  37. package/dist/passthrough/weasel-ui.d.ts +444 -7
  38. package/dist/passthrough/weasel-ui.js +2 -2
  39. package/dist/primitives/index.d.ts +13 -0
  40. package/dist/primitives/index.js +2 -2
  41. package/dist/state/index.d.ts +16 -3
  42. package/dist/state/index.js +2 -2
  43. package/dist/state/index.js.map +1 -1
  44. package/dist/styles.css +163 -6
  45. package/dist/ui/layers/index.d.ts +5 -0
  46. package/dist/ui/layers/index.js +3 -3
  47. package/dist/undo/index.d.ts +17 -2
  48. package/dist/undo/index.js +1 -1
  49. package/package.json +2 -1
  50. package/src/canvas/CanvasStack.tsx +4 -0
  51. package/src/canvas/CanvasStackContext.ts +3 -0
  52. package/src/canvas/canvasCoords.ts +2 -0
  53. package/src/canvas/useLayerScheduler.ts +2 -0
  54. package/src/controls/ControlPanel.tsx +2 -0
  55. package/src/controls/types.ts +14 -0
  56. package/src/instrument/capabilityDetector.ts +3 -0
  57. package/src/instrument/defineInstrument.ts +2 -0
  58. package/src/instrument/types.ts +29 -0
  59. package/src/instrument/validateConfigSchema.ts +5 -0
  60. package/src/lab/Lab.tsx +17 -2
  61. package/src/lab/LabContext.ts +6 -0
  62. package/src/lab/LabShell.tsx +4 -0
  63. package/src/lab/WorkspaceGrid.less +37 -5
  64. package/src/lab/WorkspaceGrid.stories.tsx +16 -0
  65. package/src/lab/WorkspaceGrid.test.tsx +84 -10
  66. package/src/lab/WorkspaceGrid.tsx +188 -12
  67. package/src/lab/index.ts +0 -2
  68. package/src/layers/LayerList.tsx +3 -0
  69. package/src/primitives/FpsMeter.tsx +1 -0
  70. package/src/primitives/ScaleIndicator.tsx +4 -0
  71. package/src/primitives/Sidebar.tsx +3 -0
  72. package/src/primitives/StatusBar.tsx +3 -0
  73. package/src/primitives/Toolbar.tsx +6 -0
  74. package/src/state/SingletonExperiment.tsx +1 -0
  75. package/src/state/adapters.ts +8 -0
  76. package/src/state/context.tsx +9 -0
  77. package/src/state/helpers.ts +13 -1
  78. package/src/state/store.test.ts +2 -1
  79. package/src/state/store.ts +25 -0
  80. package/src/state/types.ts +20 -0
  81. package/src/state/useExperimentState.ts +3 -0
  82. package/src/test-setup.ts +19 -0
  83. package/src/ui/layers/LayerStack.tsx +5 -0
  84. package/src/ui/properties/CurveField.tsx +4 -1
  85. package/src/ui/properties/EffectCard.tsx +12 -0
  86. package/src/ui/properties/PropertyGroup.tsx +1 -0
  87. package/src/ui/properties/PropertyPanel.tsx +28 -0
  88. package/src/undo/eventBus.ts +4 -0
  89. package/src/undo/undoStack.ts +11 -0
  90. package/src/workspace/DefaultSidebar.tsx +3 -0
  91. package/src/workspace/DefaultStatusBar.tsx +3 -0
  92. package/src/workspace/DefaultToolbar.tsx +3 -0
  93. package/src/workspace/Workspace.stories.tsx +1 -0
  94. package/src/workspace/Workspace.test.tsx +1 -0
  95. package/src/workspace/Workspace.tsx +3 -0
  96. package/src/workspace/WorkspaceChrome.tsx +4 -0
  97. package/src/workspace/index.ts +1 -0
  98. package/src/workspace/slotTypes.ts +9 -0
  99. package/src/workspace/workspaceOps.test.ts +34 -1
  100. package/src/workspace/workspaceOps.ts +24 -0
  101. package/dist/chunk-2QNYYL3V.js.map +0 -1
  102. package/dist/chunk-2ZRE7WGQ.js.map +0 -1
  103. package/dist/chunk-3P56ZCCJ.js.map +0 -1
  104. package/dist/chunk-53XSBIUK.js.map +0 -1
  105. package/dist/chunk-54IQ2DX7.js.map +0 -1
  106. package/dist/chunk-7BKDG73Z.js.map +0 -1
  107. package/dist/chunk-HXZHVU4G.js.map +0 -1
  108. package/dist/chunk-PWC7AQZM.js.map +0 -1
  109. package/dist/chunk-R4TACNW7.js.map +0 -1
  110. package/src/lab/gridDims.test.ts +0 -35
  111. package/src/lab/gridDims.ts +0 -11
@@ -1,4 +1,4 @@
1
- export { m as ActionBar, r3 as ActionsBar, Ft as Badge, a as Button, o3 as Checkbox, p4 as ComboBox, m2 as ComboBoxItem, F as CurveEditor, l as DataGrid, c2 as Dialog, qe as EDGE_PROFILES, n as Field, u2 as Input, s2 as KeyCap, c as KeySequence, a2 as MINUS_SIGN, f3 as NumberField, r2 as OptionsBar, _ as Plot2D, n4 as PointPlotter, r4 as Powerline, u3 as Radio, l2 as RadioGroup, l3 as RangeSlider, p3 as Select, h as SelectItem, n2 as Sidebar, o4 as SidebarPanel, f2 as Slider, a4 as Switch, c3 as Tab, s3 as TabList, l4 as TabPanel, o6 as Tabs, r as ToggleBar, o5 as ToolButton, n3 as ToolGroup, _2 as ToolPalette, ze as chromaAt, u as detectPlatform, p as dlog, r5 as fieldClasses, o2 as formatNumber, d2 as formatShortcut, u4 as formatShortcutParts, o as inferKeycapKind, f as isDebugEnabled, e as keyGlyph, p2 as keySpecFromKey, d as keySpecsFromMods, Re as oklchToHex, p5 as paintGradientTrack, s as useReorderDragList, a3 as useRovingTabIndex } from '../chunk-R4TACNW7.js';
2
- import '../chunk-3P56ZCCJ.js';
1
+ export { m as ActionBar, r3 as ActionsBar, Ft as Badge, a as Button, o3 as Checkbox, p4 as ComboBox, m3 as ComboBoxItem, F as CurveEditor, u as DataGrid, c3 as Dialog, qe as EDGE_PROFILES, n as Field, u3 as Input, s as KeyCap, c2 as KeySequence, o2 as MINUS_SIGN, f2 as NumberField, r2 as OptionsBar, _ as Plot2D, n4 as PointPlotter, r4 as Powerline, u4 as Radio, l as RadioGroup, l2 as RangeSlider, p3 as Select, h as SelectItem, n2 as Sidebar, o4 as SidebarPanel, m2 as Slider, a3 as Switch, c4 as Tab, s3 as TabList, l3 as TabPanel, o6 as Tabs, r as ToggleBar, o5 as ToolButton, n3 as ToolGroup, _2 as ToolPalette, He as chromaAt, u2 as detectPlatform, p as dlog, r5 as fieldClasses, s2 as formatNumber, d2 as formatShortcut, u5 as formatShortcutParts, o as inferKeycapKind, f as isDebugEnabled, e as keyGlyph, p2 as keySpecFromKey, d as keySpecsFromMods, Ve as oklchToHex, p5 as paintGradientTrack, c as useReorderDragList, a2 as useRovingTabIndex } from '../chunk-BAPZPDDA.js';
2
+ import '../chunk-DWV7SFKR.js';
3
3
  //# sourceMappingURL=weasel-ui.js.map
4
4
  //# sourceMappingURL=weasel-ui.js.map
@@ -1,8 +1,10 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode, MouseEventHandler } from 'react';
3
3
 
4
+ /** A live frame-rate readout, averaged over the last 30 frames. */
4
5
  declare function FpsMeter(): react_jsx_runtime.JSX.Element;
5
6
 
7
+ /** Props for `<ScaleIndicator>`. */
6
8
  interface ScaleIndicatorProps {
7
9
  /** Current view zoom factor. If omitted, reads from CanvasStackContext. Defaults to 1. */
8
10
  zoom?: number;
@@ -13,19 +15,27 @@ interface ScaleIndicatorProps {
13
15
  /** Target bar width in display pixels. Default: 100. */
14
16
  targetWidth?: number;
15
17
  }
18
+ /** A scale bar: a labeled rule showing how far a round number of world units
19
+ * is at the current zoom. Reads the zoom from the surrounding canvas stack
20
+ * unless one is passed. */
16
21
  declare function ScaleIndicator({ zoom, pixelsPerUnit, unit, targetWidth, }: ScaleIndicatorProps): react_jsx_runtime.JSX.Element;
17
22
 
23
+ /** Props for `<Sidebar>`. */
18
24
  interface SidebarProps {
19
25
  children: ReactNode;
20
26
  title?: string;
21
27
  collapsed?: boolean;
22
28
  onToggle?: () => void;
23
29
  }
30
+ /** A collapsible side panel with an optional title. Collapse state is the
31
+ * caller's to hold. */
24
32
  declare function Sidebar({ children, title, collapsed, onToggle }: SidebarProps): react_jsx_runtime.JSX.Element;
25
33
 
34
+ /** Props for `<StatusBar>`. */
26
35
  interface StatusBarProps {
27
36
  children: ReactNode;
28
37
  }
38
+ /** A footer strip for readouts. Fill it with `<StatusBar.Section>`. */
29
39
  declare function StatusBar({ children }: StatusBarProps): react_jsx_runtime.JSX.Element;
30
40
  declare namespace StatusBar {
31
41
  var Section: ({ children }: SectionProps) => react_jsx_runtime.JSX.Element;
@@ -34,9 +44,12 @@ interface SectionProps {
34
44
  children: ReactNode;
35
45
  }
36
46
 
47
+ /** Props for `<Toolbar>`. */
37
48
  interface ToolbarProps {
38
49
  children: ReactNode;
39
50
  }
51
+ /** A horizontal bar of controls. Fill it with `<Toolbar.Title>`,
52
+ * `<Toolbar.Button>` and `<Toolbar.Spacer>`. */
40
53
  declare function Toolbar({ children }: ToolbarProps): react_jsx_runtime.JSX.Element;
41
54
  declare namespace Toolbar {
42
55
  var Title: ({ children }: TitleProps) => react_jsx_runtime.JSX.Element;
@@ -1,4 +1,4 @@
1
- export { FpsMeter, ScaleIndicator, Sidebar, StatusBar, Toolbar } from '../chunk-HXZHVU4G.js';
2
- import '../chunk-PWC7AQZM.js';
1
+ export { FpsMeter, ScaleIndicator, Sidebar, StatusBar, Toolbar } from '../chunk-PMAU3SEE.js';
2
+ import '../chunk-CPUJ3QXL.js';
3
3
  //# sourceMappingURL=index.js.map
4
4
  //# sourceMappingURL=index.js.map
@@ -1,16 +1,29 @@
1
- import { I as InstrumentSerializers, W as WorkspaceRecord, U as UndoStack, S as StorageAdapter } from '../_dts/useExperimentState-CJn2hHzd.js';
2
- export { C as CreateLabStoreOptions, E as ExperimentStateHandle, L as LabStore, a as LabStoreActions, b as LabStoreContext, c as LabStoreProvider, d as LabStoreState, e as SavedSnapshot, f as WorkspaceIdContext, g as WorkspaceIdProvider, h as createLabStore, i as createMemoryAdapter, l as localStorageAdapter, n as noneAdapter, s as sessionStorageAdapter, u as urlHashAdapter, j as useExperimentState, k as useLabStore, m as useWorkspaceId } from '../_dts/useExperimentState-CJn2hHzd.js';
1
+ import { I as InstrumentSerializers, W as WorkspaceRecord, U as UndoStack, S as StorageAdapter } from '../_dts/useExperimentState-D7EQnnwJ.js';
2
+ export { C as CreateLabStoreOptions, E as ExperimentStateHandle, L as LabStore, a as LabStoreActions, b as LabStoreContext, c as LabStoreProvider, d as LabStoreState, e as SavedSnapshot, f as WorkspaceIdContext, g as WorkspaceIdProvider, h as createLabStore, i as createMemoryAdapter, l as localStorageAdapter, n as noneAdapter, s as sessionStorageAdapter, u as urlHashAdapter, j as useExperimentState, k as useLabStore, m as useWorkspaceId } from '../_dts/useExperimentState-D7EQnnwJ.js';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import { ReactNode } from 'react';
5
5
  import 'zustand/vanilla';
6
6
 
7
- declare function labStorageKey(storageKey: string, bucket: 'workspaces' | 'saves' | 'theme'): string;
7
+ /** The storage key a lab writes one of its buckets under. Namespaced by
8
+ * `storageKey` so two labs sharing an origin do not collide. */
9
+ declare function labStorageKey(storageKey: string, bucket: 'workspaces' | 'saves' | 'theme' | 'layout'): string;
10
+ /** Encode a string for the URL fragment. */
8
11
  declare function encodeUrlHash(value: string): string;
12
+ /** Decode a URL fragment written by `encodeUrlHash`, or `null` if it is
13
+ * malformed. */
9
14
  declare function decodeUrlHash(hash: string): string | null;
15
+ /** A fresh, empty undo history. */
10
16
  declare function emptyUndoStack(): UndoStack;
17
+ /** Serialize workspaces for storage, running each instrument's own serializer
18
+ * over its state. Undo history is deliberately dropped — it does not survive
19
+ * a reload. */
11
20
  declare function serializeWorkspaces(workspaces: WorkspaceRecord[], serializers: InstrumentSerializers): string;
21
+ /** Rebuild workspaces from storage, running each instrument's deserializer
22
+ * over its state and starting each with an empty undo history. Returns an
23
+ * empty list rather than throwing on malformed input. */
12
24
  declare function deserializeWorkspaces(raw: string, deserializers: InstrumentSerializers): WorkspaceRecord[];
13
25
 
26
+ /** Props for `<SingletonExperimentProvider>`. */
14
27
  interface SingletonExperimentProviderProps<TS, TC> {
15
28
  /** Stable id for the synthetic workspace; also doubles as the
16
29
  * WorkspaceIdContext value. */
@@ -1,5 +1,5 @@
1
- import { createLabStore, LabStoreProvider, WorkspaceIdProvider } from '../chunk-53XSBIUK.js';
2
- export { LabStoreContext, LabStoreProvider, WorkspaceIdContext, WorkspaceIdProvider, createLabStore, createMemoryAdapter, decodeUrlHash, deserializeWorkspaces, emptyUndoStack, encodeUrlHash, labStorageKey, localStorageAdapter, noneAdapter, serializeWorkspaces, sessionStorageAdapter, urlHashAdapter, useExperimentState, useLabStore, useWorkspaceId } from '../chunk-53XSBIUK.js';
1
+ import { createLabStore, LabStoreProvider, WorkspaceIdProvider } from '../chunk-KSTEW2AF.js';
2
+ export { LabStoreContext, LabStoreProvider, WorkspaceIdContext, WorkspaceIdProvider, createLabStore, createMemoryAdapter, decodeUrlHash, deserializeWorkspaces, emptyUndoStack, encodeUrlHash, labStorageKey, localStorageAdapter, noneAdapter, serializeWorkspaces, sessionStorageAdapter, urlHashAdapter, useExperimentState, useLabStore, useWorkspaceId } from '../chunk-KSTEW2AF.js';
3
3
  import { useRef } from 'react';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/state/SingletonExperiment.tsx"],"names":[],"mappings":";;;;;AAKA,IAAM,oBAAA,GAAuB,eAAA;AAmBtB,SAAS,2BAAA,CAAoC;AAAA,EAClD,EAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAA6C;AAC3C,EAAA,MAAM,QAAA,GAAW,OAAwB,IAAI,CAAA;AAC7C,EAAA,IAAI,QAAA,CAAS,YAAY,IAAA,EAAM;AAC7B,IAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,EAAE,UAAA,EAAY,SAAS,CAAA;AACpD,IAAA,IAAI,CAAC,KAAA,CAAM,QAAA,EAAS,CAAE,UAAA,CAAW,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,EAAE,CAAA,EAAG;AACzD,MAAA,KAAA,CAAM,QAAA,GAAW,YAAA,CAAa;AAAA,QAC5B,EAAA;AAAA,QACA,cAAA,EAAgB,oBAAA;AAAA,QAChB,MAAA,EAAQ,aAAA;AAAA,QACR,KAAA,EAAO,YAAA;AAAA,QACP,IAAA,EAAM,EAAE,IAAA,EAAM,CAAA,EAAG,GAAA,EAAK,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAE;AAAE,OACtC,CAAA;AAAA,IACH;AACA,IAAA,QAAA,CAAS,OAAA,GAAU,KAAA;AAAA,EACrB;AACA,EAAA,uBACE,GAAA,CAAC,gBAAA,EAAA,EAAiB,KAAA,EAAO,QAAA,CAAS,OAAA,EAChC,8BAAC,mBAAA,EAAA,EAAoB,WAAA,EAAa,EAAA,EAAK,QAAA,EAAS,CAAA,EAClD,CAAA;AAEJ","file":"index.js","sourcesContent":["import { type ReactNode, useRef } from 'react';\nimport { LabStoreProvider, WorkspaceIdProvider } from './context';\nimport { createLabStore, type LabStore } from './store';\nimport type { StorageAdapter } from './types';\n\nconst SINGLETON_INSTRUMENT = '__singleton__';\n\nexport interface SingletonExperimentProviderProps<TS, TC> {\n /** Stable id for the synthetic workspace; also doubles as the\n * WorkspaceIdContext value. */\n id: string;\n initialConfig: TC;\n initialState: TS;\n storage: StorageAdapter;\n storageKey: string;\n children: ReactNode;\n}\n\n/**\n * One-workspace `<Lab>` substitute for single-screen experiments. Mounts\n * a `LabStoreProvider` + `WorkspaceIdProvider` with one synthetic\n * workspace, so `useExperimentState` works without going through the\n * full `<Lab instruments={...}>` runtime.\n */\nexport function SingletonExperimentProvider<TS, TC>({\n id,\n initialConfig,\n initialState,\n storage,\n storageKey,\n children,\n}: SingletonExperimentProviderProps<TS, TC>) {\n const storeRef = useRef<LabStore | null>(null);\n if (storeRef.current === null) {\n const store = createLabStore({ storageKey, storage });\n if (!store.getState().workspaces.some((w) => w.id === id)) {\n store.getState().addWorkspace({\n id,\n instrumentName: SINGLETON_INSTRUMENT,\n config: initialConfig,\n state: initialState,\n view: { zoom: 1, pan: { x: 0, y: 0 } },\n });\n }\n storeRef.current = store;\n }\n return (\n <LabStoreProvider store={storeRef.current}>\n <WorkspaceIdProvider workspaceId={id}>{children}</WorkspaceIdProvider>\n </LabStoreProvider>\n );\n}\n"]}
1
+ {"version":3,"sources":["../../src/state/SingletonExperiment.tsx"],"names":[],"mappings":";;;;;AAKA,IAAM,oBAAA,GAAuB,eAAA;AAoBtB,SAAS,2BAAA,CAAoC;AAAA,EAClD,EAAA;AAAA,EACA,aAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAA6C;AAC3C,EAAA,MAAM,QAAA,GAAW,OAAwB,IAAI,CAAA;AAC7C,EAAA,IAAI,QAAA,CAAS,YAAY,IAAA,EAAM;AAC7B,IAAA,MAAM,KAAA,GAAQ,cAAA,CAAe,EAAE,UAAA,EAAY,SAAS,CAAA;AACpD,IAAA,IAAI,CAAC,KAAA,CAAM,QAAA,EAAS,CAAE,UAAA,CAAW,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,CAAE,EAAA,KAAO,EAAE,CAAA,EAAG;AACzD,MAAA,KAAA,CAAM,QAAA,GAAW,YAAA,CAAa;AAAA,QAC5B,EAAA;AAAA,QACA,cAAA,EAAgB,oBAAA;AAAA,QAChB,MAAA,EAAQ,aAAA;AAAA,QACR,KAAA,EAAO,YAAA;AAAA,QACP,IAAA,EAAM,EAAE,IAAA,EAAM,CAAA,EAAG,GAAA,EAAK,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAE;AAAE,OACtC,CAAA;AAAA,IACH;AACA,IAAA,QAAA,CAAS,OAAA,GAAU,KAAA;AAAA,EACrB;AACA,EAAA,uBACE,GAAA,CAAC,gBAAA,EAAA,EAAiB,KAAA,EAAO,QAAA,CAAS,OAAA,EAChC,8BAAC,mBAAA,EAAA,EAAoB,WAAA,EAAa,EAAA,EAAK,QAAA,EAAS,CAAA,EAClD,CAAA;AAEJ","file":"index.js","sourcesContent":["import { type ReactNode, useRef } from 'react';\nimport { LabStoreProvider, WorkspaceIdProvider } from './context';\nimport { createLabStore, type LabStore } from './store';\nimport type { StorageAdapter } from './types';\n\nconst SINGLETON_INSTRUMENT = '__singleton__';\n\n/** Props for `<SingletonExperimentProvider>`. */\nexport interface SingletonExperimentProviderProps<TS, TC> {\n /** Stable id for the synthetic workspace; also doubles as the\n * WorkspaceIdContext value. */\n id: string;\n initialConfig: TC;\n initialState: TS;\n storage: StorageAdapter;\n storageKey: string;\n children: ReactNode;\n}\n\n/**\n * One-workspace `<Lab>` substitute for single-screen experiments. Mounts\n * a `LabStoreProvider` + `WorkspaceIdProvider` with one synthetic\n * workspace, so `useExperimentState` works without going through the\n * full `<Lab instruments={...}>` runtime.\n */\nexport function SingletonExperimentProvider<TS, TC>({\n id,\n initialConfig,\n initialState,\n storage,\n storageKey,\n children,\n}: SingletonExperimentProviderProps<TS, TC>) {\n const storeRef = useRef<LabStore | null>(null);\n if (storeRef.current === null) {\n const store = createLabStore({ storageKey, storage });\n if (!store.getState().workspaces.some((w) => w.id === id)) {\n store.getState().addWorkspace({\n id,\n instrumentName: SINGLETON_INSTRUMENT,\n config: initialConfig,\n state: initialState,\n view: { zoom: 1, pan: { x: 0, y: 0 } },\n });\n }\n storeRef.current = store;\n }\n return (\n <LabStoreProvider store={storeRef.current}>\n <WorkspaceIdProvider workspaceId={id}>{children}</WorkspaceIdProvider>\n </LabStoreProvider>\n );\n}\n"]}
package/dist/styles.css CHANGED
@@ -143,8 +143,141 @@
143
143
  --wzl-fg-inverse: var(--wzl-gray-50);
144
144
  }
145
145
 
146
- ._tooltip_1km1f_1{z-index:1200;background:var(--wzl-surface);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-sm);color:var(--wzl-fg);font-family:var(--wzl-font-ui);max-width:260px;transition:opacity var(--wzl-motion-fast);padding:4px 8px;font-size:12px;line-height:1.3;box-shadow:0 4px 16px #00000059}._tooltip_1km1f_1[data-entering],._tooltip_1km1f_1[data-exiting]{opacity:0}._arrow_1km1f_22 svg{fill:var(--wzl-surface);stroke:var(--wzl-border);stroke-width:1px;display:block}._arrow_1km1f_22[data-placement=bottom] svg{transform:rotate(180deg)}._arrow_1km1f_22[data-placement=left] svg{transform:rotate(-90deg)}._arrow_1km1f_22[data-placement=right] svg{transform:rotate(90deg)}._bar_147qb_7{background:var(--wzl-surface);border:1px solid var(--wzl-border);-webkit-user-select:none;user-select:none;border-radius:4px;flex-direction:row;gap:1px;padding:2px;display:flex}._bar_147qb_7._vertical_147qb_18{flex-direction:column}._button_147qb_22{width:28px;height:28px;color:var(--wzl-fg);cursor:default;background:0 0;border:0;border-radius:2px;justify-content:center;align-items:center;padding:0;display:inline-flex}._button_147qb_22:hover:not([disabled]){background:var(--wzl-border)}._button_147qb_22:active:not([disabled]){background:color-mix(in srgb, var(--wzl-border) 70%, transparent)}._button_147qb_22[disabled]{opacity:.4;cursor:default}._button_147qb_22>svg{display:block}._root_1hmjs_10{height:var(--wzl-tb-height,28px);-webkit-user-select:none;user-select:none;touch-action:none;background:linear-gradient(#0000002e 0%,#0000000d 100%);border-radius:999px;padding:2px;display:inline-flex;overflow:hidden;box-shadow:inset 0 1px 2px #0006,0 1px #ffffff0f}._segment_1hmjs_32{min-width:0;font-family:var(--wzl-font-ui);font-weight:300;font-size:var(--btn-fontsize,14px);color:var(--wzl-fg-muted);cursor:pointer;isolation:isolate;transition:color var(--wzl-motion-fast);background:0 0;border:none;border-radius:0;flex:1 1 0;justify-content:center;align-items:center;margin:0;padding:0 12px;line-height:1;display:inline-flex;position:relative;overflow:hidden}._segment_1hmjs_32:first-child{border-radius:999px 0 0 999px}._segment_1hmjs_32:last-child{border-radius:0 999px 999px 0}._segment_1hmjs_32:only-child{border-radius:999px}._segment_1hmjs_32:focus-visible{outline:2px solid var(--wzl-accent);outline-offset:-2px}._segment_1hmjs_32:disabled{opacity:.5;cursor:not-allowed}._segment_1hmjs_32:hover:not(:disabled):not(._segmentSelected_1hmjs_79){color:var(--wzl-fg)}._segmentSelected_1hmjs_79{background:linear-gradient(180deg, color-mix(in srgb, var(--wzl-accent) var(--btn-top-alpha,45%), transparent) 0%, color-mix(in srgb, var(--wzl-accent) var(--btn-upper-alpha,70%), transparent) calc(var(--btn-equator,52%) - var(--btn-equator-spread,12%)), color-mix(in srgb, var(--wzl-accent) var(--btn-equator-tint,95%), white) var(--btn-equator,52%), var(--wzl-accent) calc(var(--btn-equator,52%) + var(--btn-equator-spread,12%) * 1.6), color-mix(in srgb, var(--wzl-accent) var(--btn-base-tint,70%), black) 100%);-webkit-backdrop-filter:blur(var(--btn-blur,6px)) saturate(var(--btn-saturate,1.3));color:var(--wzl-fg-on-accent);text-shadow:0 1px 0 rgba(0, 0, 0, var(--btn-text-shadow,.35)), var(--btn-text-inset-x,0px) var(--btn-text-inset-y,1px) 0 rgba(0, 0, 0, var(--btn-text-inset,.55)), 0 0 6px rgba(0, 0, 0, calc(var(--btn-text-shadow,.35) * .5));box-shadow:inset 0 1px 0 rgba(255, 255, 255, var(--btn-inset-hi,.42)), inset 0 -1px 2px rgba(0, 0, 0, var(--btn-inset-lo,.3)), 0 0 0 1px rgba(0, 0, 0, var(--btn-rim,.22)), 0 1px 2px rgba(0, 0, 0, var(--btn-drop-near,.3)), 0 2px 4px rgba(0, 0, 0, calc(var(--btn-drop-far,.18) * .8))}._segmentSelected_1hmjs_79:before{content:"";inset:1px 1px var(--btn-gloss-bottom,50%) 1px;border-radius:inherit;background:linear-gradient(180deg, rgba(255, 255, 255, var(--btn-gloss-top,.42)) 0%, rgba(255, 255, 255, var(--btn-gloss-mid,.12)) 60%, #fff0 100%);pointer-events:none;z-index:1;border-bottom-right-radius:0;border-bottom-left-radius:0;position:absolute}._segmentSelected_1hmjs_79>*{z-index:2;position:relative}._size_sm_1hmjs_137{height:17px;padding:1px}._size_sm_1hmjs_137 ._segment_1hmjs_32{padding:0 8px;font-size:11px}._variant_minimal_1hmjs_150{height:auto;box-shadow:none;background:0 0;border-radius:0;gap:2px;padding:0}._variant_minimal_1hmjs_150 ._segment_1hmjs_32{color:var(--wzl-fg-muted);border-radius:2px;padding:0 4px;font-size:11px;font-weight:400;line-height:1.4;transition:none}._variant_minimal_1hmjs_150 ._segment_1hmjs_32:first-child,._variant_minimal_1hmjs_150 ._segment_1hmjs_32:last-child,._variant_minimal_1hmjs_150 ._segment_1hmjs_32:only-child{border-radius:2px}._variant_minimal_1hmjs_150 ._segment_1hmjs_32:hover:not(:disabled):not(._segmentSelected_1hmjs_79){color:var(--wzl-fg);background:#ffffff0f}._variant_minimal_1hmjs_150 ._segmentSelected_1hmjs_79{-webkit-backdrop-filter:none;color:var(--wzl-accent-fg,var(--wzl-accent));text-shadow:none;box-shadow:none;background:0 0;font-weight:500}._variant_minimal_1hmjs_150 ._segmentSelected_1hmjs_79:before{content:none}._badge_16w4d_1{vertical-align:baseline;align-items:baseline;gap:var(--badge-gap,4px);font-size:var(--badge-font-size,10px);text-transform:uppercase;letter-spacing:.04em;color:var(--badge-fg,var(--wzl-fg-muted));--badge-edge:var(--wzl-border);--badge-fill:var(--wzl-surface);--badge-fg:var(--badge-edge);font:inherit;background:0 0;border:0;font-family:inherit;text-decoration:none;display:inline-flex;position:relative}._badge_16w4d_1 *{text-decoration:none}._badge_16w4d_1[data-size=md]{--badge-gap:6px;--badge-pad-x:10px;--badge-pad-y:3px;--badge-font-size:12px}._deco_16w4d_33{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}._deco_16w4d_33 .badge-fill{fill:var(--badge-fill);stroke:none}._deco_16w4d_33 .badge-stroke{fill:none;stroke:var(--badge-edge);stroke-width:var(--badge-stroke-width,1px);vector-effect:non-scaling-stroke}._deco_16w4d_33 .badge-focus{fill:none;stroke:var(--badge-edge);stroke-width:calc(var(--badge-stroke-width,1px) + 1px);vector-effect:non-scaling-stroke;opacity:.6}._deco_16w4d_33 .badge-bevel-light{fill:#ffffff38;stroke:none}._deco_16w4d_33 .badge-bevel-medium-light{fill:#ffffff1a;stroke:none}._deco_16w4d_33 .badge-bevel-medium-dark{fill:#00000029;stroke:none}._deco_16w4d_33 .badge-bevel-dark{fill:#00000052;stroke:none}._content_16w4d_49{align-items:baseline;gap:inherit;z-index:1;display:inline-flex;position:relative}._badge_16w4d_1[data-tone=accent]{--badge-edge:var(--wzl-accent-fg,var(--wzl-accent,#7fb069))}._badge_16w4d_1[data-tone=info]{--badge-edge:#7ab8d4}._badge_16w4d_1[data-tone=warn]{--badge-edge:#d4a574}._badge_16w4d_1[data-tone=danger]{--badge-edge:#c43c3c}._badge_16w4d_1[data-tone=muted]{--badge-edge:var(--wzl-fg-muted)}._badge_16w4d_1[data-tone=neutral]{--badge-edge:var(--wzl-border);--badge-fg:var(--wzl-fg-muted)}._badge_16w4d_1[data-variant=outline]{--badge-fill:var(--wzl-surface);--badge-fg:var(--badge-edge)}._badge_16w4d_1[data-variant=solid]{--badge-fill:var(--badge-edge);--badge-fg:#fff;font-weight:600}._badge_16w4d_1[data-variant=subtle]{--badge-fill:color-mix(in oklab, var(--badge-edge) 14%, transparent);--badge-fg:var(--badge-edge)}._badge_16w4d_1[data-tone=neutral]:not([data-variant=solid]){--badge-fg:var(--wzl-fg-muted)}._badge_16w4d_1{padding:calc(var(--badge-pad-y,1px) + var(--badge-inset-top,0px)) calc(var(--badge-pad-x,6px) + var(--badge-inset-right,0px)) calc(var(--badge-pad-y,1px) + var(--badge-inset-bottom,0px)) calc(var(--badge-pad-x,6px) + var(--badge-inset-left,0px))}._badge_16w4d_1[data-shape=pill]{box-sizing:border-box;-webkit-box-decoration-break:slice;box-decoration-break:slice;border-radius:9999px;display:inline}._badge_16w4d_1[data-shape=pill] ._content_16w4d_49,._badge_16w4d_1[data-shape=plain] ._content_16w4d_49{display:inline}._badge_16w4d_1[data-shape=pill][data-variant=solid],._badge_16w4d_1[data-shape=pill][data-variant=subtle]{background:var(--badge-fill)}._badge_16w4d_1[data-shape=pill]{border:var(--badge-stroke-width,1px) solid transparent}._badge_16w4d_1[data-shape=pill][data-variant=outline],._badge_16w4d_1[data-shape=pill][data-variant=solid]{border-color:var(--badge-edge)}._badge_16w4d_1[data-shape=pill][data-focused=true]{outline:2px solid color-mix(in oklab, var(--badge-edge) 60%, transparent);outline-offset:2px}._badge_16w4d_1[data-shape=plain]{letter-spacing:.04em;text-transform:none;color:var(--badge-fg);-webkit-box-decoration-break:slice;box-decoration-break:slice;background:0 0;padding:0;display:inline}._badge_16w4d_1[data-shape=plain][data-focused=true]{outline:2px solid color-mix(in oklab, var(--badge-edge) 60%, transparent);outline-offset:3px;border-radius:2px}._badge_16w4d_1[data-shape=plaque] ._content_16w4d_49{text-shadow:0 1px #ffffff24,0 -.5px #00000080}button._badge_16w4d_1,a._badge_16w4d_1{cursor:pointer;border:0 solid #0000;outline:0}button._badge_16w4d_1:hover,a._badge_16w4d_1:hover{--badge-edge:color-mix(in oklab, var(--badge-edge) 88%, white)}@media (prefers-reduced-motion:reduce){button._badge_16w4d_1:hover,a._badge_16w4d_1:hover{--badge-edge:var(--badge-edge)}}._remove_16w4d_161{width:14px;height:14px;color:var(--badge-fg);cursor:pointer;font:inherit;vertical-align:middle;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;margin-left:2px;padding:0;font-size:14px;line-height:1;display:inline-flex}._remove_16w4d_161:hover{background:color-mix(in oklab, var(--badge-fg) 20%, transparent)}._remove_16w4d_161>svg{display:block}._badge_16w4d_1[data-size=md] ._remove_16w4d_161{width:16px;height:16px;font-size:16px}._badge_16w4d_1[data-size=md] ._remove_16w4d_161>svg{width:12px;height:12px}._button_yji6d_3{--btn-radius:calc(var(--btn-height) * .1);--btn-fontweight:400;--btn-fontsize:14px;--btn-height:24px;--btn-padx:12px;--btn-top-alpha:45%;--btn-upper-alpha:70%;--btn-equator:52%;--btn-equator-spread:12%;--btn-equator-tint:95%;--btn-base-tint:70%;--btn-blur:6px;--btn-saturate:1.3;--btn-gloss-top:.42;--btn-gloss-mid:.12;--btn-gloss-bottom:50%;--btn-rim:.22;--btn-drop-near:.3;--btn-drop-far:.18;--btn-inset-hi:.42;--btn-inset-lo:.3;--btn-text-shadow:.35;--btn-text-inset:.55;--btn-text-inset-x:0px;--btn-text-inset-y:1px;border-radius:var(--btn-radius);font-family:var(--wzl-font-ui);font-weight:var(--btn-fontweight);font-style:normal;font-size:var(--btn-fontsize);height:var(--btn-height);padding:0 var(--btn-padx);cursor:pointer;-webkit-user-select:none;user-select:none;isolation:isolate;transition:filter var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast), transform 80ms;border:none;justify-content:center;align-items:center;gap:6px;line-height:1;display:inline-flex;position:relative;overflow:hidden}._button_yji6d_3:before{content:"";inset:1px 1px var(--btn-gloss-bottom) 1px;border-top-left-radius:var(--btn-radius);border-top-right-radius:var(--btn-radius);background:linear-gradient(180deg, rgba(255, 255, 255, var(--btn-gloss-top)) 0%, rgba(255, 255, 255, var(--btn-gloss-mid)) 60%, #fff0 100%);pointer-events:none;z-index:1;transition:opacity var(--wzl-motion-fast);border-bottom-right-radius:0;border-bottom-left-radius:0;position:absolute}._button_yji6d_3>*{z-index:2;position:relative}._button_yji6d_3:focus-visible{outline:2px solid var(--wzl-focus-ring);outline-offset:1px}._button_yji6d_3:disabled{opacity:.5;cursor:not-allowed}._size_sm_yji6d_110{--btn-height:20px;--btn-padx:8px;--btn-fontsize:13px}._size_md_yji6d_111{--btn-height:24px;--btn-padx:12px;--btn-fontsize:14px}._iconOnly_yji6d_113._size_sm_yji6d_110{--btn-padx:0;width:20px}._iconOnly_yji6d_113._size_md_yji6d_111{--btn-padx:0;width:24px}._variant_primary_yji6d_121{background:linear-gradient(180deg, color-mix(in srgb, var(--wzl-accent) var(--btn-top-alpha), transparent) 0%, color-mix(in srgb, var(--wzl-accent) var(--btn-upper-alpha), transparent) calc(var(--btn-equator) - var(--btn-equator-spread)), color-mix(in srgb, var(--wzl-accent) var(--btn-equator-tint), white) var(--btn-equator), var(--wzl-accent) calc(var(--btn-equator) + var(--btn-equator-spread) * 1.6), color-mix(in srgb, var(--wzl-accent) var(--btn-base-tint), black) 100%);-webkit-backdrop-filter:blur(var(--btn-blur)) saturate(var(--btn-saturate));color:var(--wzl-fg-on-accent);text-shadow:0 1px 0 rgba(0, 0, 0, var(--btn-text-shadow)), var(--btn-text-inset-x) var(--btn-text-inset-y) 0 rgba(0, 0, 0, var(--btn-text-inset)), 0 0 6px rgba(0, 0, 0, calc(var(--btn-text-shadow) * .5));box-shadow:inset 0 1px 0 rgba(255, 255, 255, var(--btn-inset-hi)), inset 0 -1px 2px rgba(0, 0, 0, var(--btn-inset-lo)), 0 0 0 1px rgba(0, 0, 0, var(--btn-rim)), 0 1px 2px rgba(0, 0, 0, var(--btn-drop-near)), 0 3px 6px rgba(0, 0, 0, var(--btn-drop-far))}._variant_primary_yji6d_121:hover:not(:disabled){filter:brightness(1.08)saturate(1.06)}._variant_primary_yji6d_121:active:not(:disabled){background:linear-gradient(180deg, color-mix(in srgb, var(--wzl-accent) 80%, black) 0%, color-mix(in srgb, var(--wzl-accent) 95%, black) 50%, color-mix(in srgb, var(--wzl-accent) 60%, white) 100%);box-shadow:inset 0 2px 4px #00000059, inset 0 -1px 0 #ffffff40, 0 0 0 1px rgba(0, 0, 0, calc(var(--btn-rim) + .06));transform:translateY(.5px)}._variant_primary_yji6d_121:active:before{opacity:.3}._variant_secondary_yji6d_168{background:linear-gradient(180deg, color-mix(in srgb, var(--wzl-fg) 25%, transparent) 0%, color-mix(in srgb, var(--wzl-fg) 10%, transparent) calc(var(--btn-equator) - var(--btn-equator-spread)), color-mix(in srgb, var(--wzl-surface-raised) 90%, white) var(--btn-equator), var(--wzl-surface-raised) calc(var(--btn-equator) + var(--btn-equator-spread) * 1.6), color-mix(in srgb, var(--wzl-surface-sunken) 80%, black) 100%);-webkit-backdrop-filter:blur(var(--btn-blur)) saturate(var(--btn-saturate));color:var(--wzl-fg);text-shadow:0 1px 0 rgba(0, 0, 0, calc(var(--btn-text-shadow) * .7)), var(--btn-text-inset-x) var(--btn-text-inset-y) 0 rgba(0, 0, 0, calc(var(--btn-text-inset) * .7));box-shadow:inset 0 1px 0 rgba(255, 255, 255, calc(var(--btn-inset-hi) * .5)), inset 0 -1px 2px rgba(0, 0, 0, calc(var(--btn-inset-lo) * .83)), 0 0 0 1px rgba(0, 0, 0, calc(var(--btn-rim) + .03)), 0 1px 2px rgba(0, 0, 0, calc(var(--btn-drop-near) * .93)), 0 3px 6px rgba(0, 0, 0, calc(var(--btn-drop-far) * .89))}._variant_secondary_yji6d_168:hover:not(:disabled){filter:brightness(1.1)}._variant_secondary_yji6d_168:active:not(:disabled){background:linear-gradient(180deg, var(--wzl-surface-sunken) 0%, var(--wzl-surface-raised) 100%);transform:translateY(.5px);box-shadow:inset 0 2px 4px #0006,0 0 0 1px #0000004d}._variant_secondary_yji6d_168:active:before{opacity:.2}._variant_ghost_yji6d_203{color:var(--wzl-fg);box-shadow:none;background:0 0}._variant_ghost_yji6d_203:before{display:none}._variant_ghost_yji6d_203:hover:not(:disabled){background:color-mix(in srgb, var(--wzl-fg) 10%, transparent)}._variant_ghost_yji6d_203:active:not(:disabled){background:color-mix(in srgb, var(--wzl-fg) 18%, transparent)}._fullWidth_yji6d_220{width:100%}._loading_yji6d_221 ._label_yji6d_221{opacity:.7}._iconSlot_yji6d_225{flex:none;justify-content:center;align-items:center;display:inline-flex}._size_sm_yji6d_110 ._iconSlot_yji6d_225>svg{width:12px;height:12px}._size_md_yji6d_111 ._iconSlot_yji6d_225>svg{width:14px;height:14px}._label_yji6d_221{display:inline-block}._spinner_yji6d_239{justify-content:center;align-items:center;animation:.7s linear infinite _wzl-btn-spin_yji6d_1;display:inline-flex}@keyframes _wzl-btn-spin_yji6d_1{to{transform:rotate(360deg)}}._anchor_18o4b_1{pointer-events:none;position:fixed}._popover_18o4b_6{z-index:1200;--callout-accent:var(--wzl-accent-strong);background:var(--wzl-surface);border:1px solid var(--callout-accent);border-radius:var(--wzl-radius-md);color:var(--wzl-fg);font-family:var(--wzl-font-ui);max-width:320px;transition:opacity var(--wzl-motion-fast);box-shadow:0 12px 40px #0006}._popover_18o4b_6[data-entering],._popover_18o4b_6[data-exiting]{opacity:0}._toneWarning_18o4b_25{--callout-accent:var(--wzl-warning,#d99a3f)}._toneDanger_18o4b_29{--callout-accent:var(--wzl-danger,#d94a3f)}._arrow_18o4b_33 svg{fill:var(--wzl-surface);stroke:var(--callout-accent);stroke-width:1px;display:block}._arrow_18o4b_33[data-placement=bottom] svg{transform:rotate(180deg)}._arrow_18o4b_33[data-placement=left] svg{transform:rotate(-90deg)}._arrow_18o4b_33[data-placement=right] svg{transform:rotate(90deg)}._dialog_18o4b_52{max-height:inherit;outline:none;flex-direction:column;display:flex}._header_18o4b_59{align-items:center;gap:8px;padding:10px 12px 0;display:flex}._title_18o4b_66{flex:1;margin:0;font-size:13px;font-weight:600}._close_18o4b_73{color:var(--wzl-fg-muted);cursor:pointer;border-radius:var(--wzl-radius-sm);background:0 0;border:none;flex:none;padding:2px 4px;font-size:16px;line-height:1}._close_18o4b_73:hover{color:var(--wzl-fg)}._body_18o4b_89{padding:8px 12px 10px;font-size:13px;line-height:1.4;overflow-y:auto}._footer_18o4b_96{justify-content:flex-end;gap:8px;padding:0 12px 10px;display:flex}._checkbox_18mi9_1{cursor:pointer;font-family:var(--wzl-font-ui);color:var(--wzl-fg);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:13px;display:inline-flex}._checkbox_18mi9_1[data-disabled]{opacity:.5;cursor:not-allowed}._box_18mi9_18{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border-strong);border-radius:var(--wzl-radius-sm);width:14px;height:14px;transition:background-color var(--wzl-motion-fast), border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);flex:none;position:relative}._checkbox_18mi9_1[data-focus-visible] ._box_18mi9_18{box-shadow:0 0 0 2px var(--wzl-focus-ring)}._checkbox_18mi9_1[data-hovered]:not([data-disabled]) ._box_18mi9_18{border-color:var(--wzl-fg-muted)}._checkbox_18mi9_1[data-selected] ._box_18mi9_18,._checkbox_18mi9_1[data-indeterminate] ._box_18mi9_18{background:var(--wzl-accent-strong);border-color:var(--wzl-accent-strong)}._checkbox_18mi9_1[data-invalid] ._box_18mi9_18{border-color:var(--wzl-danger,#ff5b5b)}._checkmark_18mi9_47{color:var(--wzl-fg-on-accent);opacity:0;pointer-events:none;position:absolute;inset:0}._checkbox_18mi9_1[data-selected] ._checkmark_18mi9_47,._checkbox_18mi9_1[data-indeterminate] ._checkmark_18mi9_47{opacity:1}._label_18mi9_60{line-height:1.2}._root_r50jb_1{align-items:center;gap:6px;display:inline-flex}._chip_r50jb_7{border-radius:4px;display:inline-flex;position:relative;overflow:hidden}._color_r50jb_14{border:1px solid var(--wzl-border,#444);cursor:pointer;background:0 0;border-radius:4px;block-size:20px;inline-size:28px;padding:0}._root_r50jb_1[data-mixed] ._chip_r50jb_7:after{content:"";pointer-events:none;background:repeating-conic-gradient(var(--wzl-border,#666) 0% 25%, var(--wzl-surface,#2e2f36) 0% 50%) 50% / 8px 8px;border-radius:3px;position:absolute;inset:1px}._alphaRange_r50jb_39{min-inline-size:48px;accent-color:var(--wzl-accent,#7ab8d4);flex:1}._alphaRange_r50jb_39:disabled{opacity:.45}._alphaReadout_r50jb_49{text-align:end;opacity:.7;min-inline-size:3ch;font-size:11px}._field_aqiak_1{font-family:var(--wzl-font-ui);color:var(--wzl-fg);flex-direction:column;gap:4px;display:flex}._label_aqiak_9{color:var(--wzl-fg);cursor:default;font-size:12px;font-weight:500}._hint_aqiak_16{color:var(--wzl-fg-subtle);font-size:11px;line-height:1.4}._error_aqiak_22{color:var(--wzl-danger,#ff5b5b);font-size:11px;line-height:1.4}._row_aqiak_28{flex-direction:row;align-items:center;gap:8px}._row_aqiak_28 ._label_aqiak_9{flex:1;min-width:0}._field_7wlzm_1{flex-direction:column;gap:4px;width:100%;min-width:0;display:flex}._frame_7wlzm_9{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-sm);height:24px;color:var(--wzl-fg);font-family:var(--wzl-font-ui);transition:border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);align-items:stretch;font-size:13px;line-height:1;display:flex;overflow:hidden}._frame_7wlzm_9:focus-within{border-color:var(--wzl-focus-ring);box-shadow:0 0 0 1px var(--wzl-focus-ring)}._field_7wlzm_1[data-invalid] ._frame_7wlzm_9{border-color:var(--wzl-danger,#ff5b5b)}._field_7wlzm_1[data-disabled] ._frame_7wlzm_9{opacity:.5;cursor:not-allowed}._frame_7wlzm_9 input{min-width:0;color:inherit;font:inherit;background:0 0;border:none;outline:none;flex:1;padding:0 8px}._frame_7wlzm_9 input::placeholder{color:var(--wzl-fg-subtle)}._openButton_7wlzm_53{border:none;border-left:1px solid var(--wzl-border);width:22px;color:var(--wzl-fg-muted);cursor:pointer;background:0 0;justify-content:center;align-items:center;padding:0;display:inline-flex}._openButton_7wlzm_53[data-hovered]:not([data-disabled]){color:var(--wzl-fg)}._openButton_7wlzm_53 svg{width:10px;height:10px}._popover_7wlzm_75{min-width:var(--trigger-width);outline:none}._listbox_7wlzm_80{background:var(--wzl-surface-raised);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-md);max-height:280px;font-family:var(--wzl-font-ui);outline:none;padding:4px;font-size:13px;overflow:auto;box-shadow:0 8px 24px #0000004d}._option_7wlzm_93{cursor:pointer;color:var(--wzl-fg);border-radius:3px;outline:none;align-items:center;padding:4px 8px;display:flex}._option_7wlzm_93[data-focused]{background:color-mix(in srgb, var(--wzl-fg) 10%, transparent)}._option_7wlzm_93[data-selected]{font-weight:500}._option_7wlzm_93[data-disabled]{opacity:.4;cursor:not-allowed}._empty_7wlzm_116{color:var(--wzl-fg-subtle);padding:6px 8px;font-size:12px}._root_1djm7_1{--plot-bg:var(--wzl-surface-sunken);--plot-grid:var(--wzl-line);--plot-axis:var(--wzl-fg);background:var(--plot-bg);-webkit-user-select:none;user-select:none;touch-action:none;outline:none;display:block;overflow:visible}._root_1djm7_1:focus-visible{outline:2px solid var(--wzl-focus-ring);outline-offset:2px}._grid_1djm7_28{stroke:var(--plot-grid);stroke-width:1px;fill:none}._axis_1djm7_34{stroke:var(--plot-axis);stroke-width:var(--wzl-line-width);fill:none}._root_ybpym_1{--curve-line:var(--wzl-curve-color);--curve-line-width:var(--wzl-curve-width);--curve-fill:color-mix(in srgb, var(--curve-line) 30%, transparent);--curve-anchor-fill:var(--wzl-surface);--curve-anchor-stroke:var(--curve-line);--curve-anchor-radius:4;--curve-anchor-active-fill:var(--curve-line);--curve-pinned-fill:var(--wzl-fg-subtle)}._fill_ybpym_19{fill:var(--curve-fill);stroke:none;pointer-events:none}._curve_ybpym_25{stroke:var(--curve-line);stroke-width:var(--curve-line-width);fill:none;pointer-events:stroke}._anchor_ybpym_32{fill:var(--curve-anchor-fill);stroke:var(--curve-anchor-stroke);stroke-width:1.5px;cursor:grab}._anchor_ybpym_32:hover{fill:var(--curve-anchor-active-fill)}._anchor_ybpym_32._active_ybpym_43{fill:var(--curve-anchor-active-fill);cursor:grabbing}._anchor_ybpym_32._pinned_ybpym_48{fill:var(--curve-pinned-fill);cursor:default}._anchor_ybpym_32._locked_ybpym_55{cursor:not-allowed}._hidden_ybpym_71{display:none}._grid_wvlvv_1{width:100%;position:relative}._table_wvlvv_6{border-collapse:collapse;width:100%;font-size:11px}._table_wvlvv_6 th,._table_wvlvv_6 td{text-align:left;vertical-align:middle;padding:3px 6px}._table_wvlvv_6 tbody tr{border-bottom:1px solid #ffffff0a}._table_wvlvv_6 th{color:var(--wzl-fg-muted);background:var(--wzl-surface,#2a2018);z-index:1;border-bottom:1px solid var(--wzl-border);font-weight:600;position:sticky;top:0}._sortable_wvlvv_34{cursor:pointer;-webkit-user-select:none;user-select:none}._sortable_wvlvv_34:hover,._sortActive_wvlvv_39{color:var(--wzl-fg,#e6e7e9)}._empty_wvlvv_41{color:var(--wzl-fg-muted);text-align:center;padding:8px 0;font-style:italic}._handleCol_wvlvv_49{width:14px}._handleCell_wvlvv_50{cursor:grab;width:14px;color:var(--wzl-fg-muted);-webkit-user-select:none;user-select:none;text-align:center}._handleCell_wvlvv_50:active{cursor:grabbing}._dragging_wvlvv_59{opacity:.4}._dropIndicator_wvlvv_61{background:var(--wzl-accent,#7fb069);pointer-events:none;height:2px;position:absolute;left:0;right:0}._overlay_13xy9_1{z-index:1000;opacity:0;transition:opacity var(--wzl-motion-fast);background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}._overlay_13xy9_1[data-entering]{opacity:0}._overlay_13xy9_1[data-entering][data-rac]{opacity:1}._overlay_13xy9_1[data-exiting]{opacity:0}._overlay_13xy9_1[data-rac]:not([data-entering]):not([data-exiting]){opacity:1}._modal_13xy9_29{background:var(--wzl-surface);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-md);color:var(--wzl-fg);font-family:var(--wzl-font-ui);outline:none;flex-direction:column;max-width:min(900px,100vw - 32px);max-height:calc(100vh - 32px);display:flex;box-shadow:0 24px 64px #00000073}._dialog_13xy9_43{outline:none;flex-direction:column;flex:1;min-height:0;display:flex}._header_13xy9_51{border-bottom:1px solid var(--wzl-border);flex:none;align-items:center;gap:12px;padding:14px 16px;display:flex}._title_13xy9_60{color:var(--wzl-fg);flex:1;margin:0;font-size:14px;font-weight:600}._close_13xy9_68{border-radius:var(--wzl-radius-sm);width:22px;height:22px;color:var(--wzl-fg-muted);cursor:pointer;background:0 0;border:1px solid #0000;flex:none;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:inline-flex}._close_13xy9_68:hover{background:color-mix(in srgb, var(--wzl-fg) 10%, transparent);color:var(--wzl-fg)}._body_13xy9_90{flex:1;min-height:0;padding:16px;overflow:auto}._footer_13xy9_97{border-top:1px solid var(--wzl-border);flex:none;justify-content:flex-end;align-items:center;gap:8px;padding:12px 16px;display:flex}._root_q2asl_1{-webkit-user-select:none;user-select:none;touch-action:none;position:relative}._row_q2asl_8{align-items:center;gap:8px;display:flex}._track_q2asl_14{min-width:0;height:var(--rp-track-height,24px);background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border);cursor:crosshair;border-radius:3px;flex:1;position:relative}._trackInner_q2asl_25{border-radius:3px;position:absolute;inset:0;overflow:hidden}._thumb_q2asl_35{background:color-mix(in srgb, var(--wzl-fg-muted) 70%, transparent);border:1px solid var(--wzl-border-strong);cursor:ew-resize;-webkit-backdrop-filter:blur(3px);font-variant-numeric:tabular-nums;width:14px;color:var(--wzl-fg-inverse);text-shadow:0 0 2px #ffffffb3;border-radius:3px;justify-content:center;align-items:center;margin-left:-7px;font:500 .65rem/1 ui-sans-serif,system-ui,sans-serif;display:flex;position:absolute;top:-2px;bottom:-2px;box-shadow:0 1px 2px #0003}._thumb_q2asl_35:focus-visible{outline:2px solid var(--wzl-accent);outline-offset:1px}._thumbActive_q2asl_74{z-index:1}._readoutsBelow_q2asl_79{height:14px;margin-top:4px;position:relative}._readoutBelow_q2asl_85{color:var(--wzl-fg-muted);white-space:nowrap;font:500 .65rem/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;position:absolute;transform:translate(-50%)}._readoutInline_q2asl_93{color:var(--wzl-fg-muted);vertical-align:middle;margin-left:8px;font:500 .7rem/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;display:inline-block}._notched_q2asl_101{background:var(--thumb-svg,none);-webkit-backdrop-filter:none;box-shadow:none;filter:drop-shadow(0 1px 1px #00000040);--thumb-svg:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 30' preserveAspectRatio='none'%3E%3Cpolygon points='0,0 2.52,0 7,10.3 11.48,0 14,0 14,30 0,30' fill='rgba(255,255,255,0.62)' stroke='rgba(0,0,0,0.55)' stroke-width='0.75' stroke-linejoin='miter'/%3E%3C/svg%3E");background-color:#0000;background-repeat:no-repeat;background-size:100% 100%;border:none}._root_1pyfg_6{height:var(--wzl-tb-height,28px);-webkit-user-select:none;user-select:none;touch-action:none;background:linear-gradient(#0000002e 0%,#0000000d 100%);border-radius:999px;padding:2px;display:inline-flex;overflow:hidden;box-shadow:inset 0 1px 2px #0006,0 1px #ffffff0f}._segment_1pyfg_28{min-width:0;font-family:var(--wzl-font-ui);font-weight:300;font-size:var(--btn-fontsize,14px);color:var(--wzl-fg-muted);cursor:pointer;isolation:isolate;transition:color var(--wzl-motion-fast);background:0 0;border:none;border-radius:0;flex:1 1 0;justify-content:center;align-items:center;margin:0;padding:0 12px;line-height:1;display:inline-flex;position:relative;overflow:hidden}._segment_1pyfg_28:first-child{border-radius:999px 0 0 999px}._segment_1pyfg_28:last-child{border-radius:0 999px 999px 0}._segment_1pyfg_28:only-child{border-radius:999px}._segment_1pyfg_28:focus-visible{outline:2px solid var(--wzl-accent);outline-offset:-2px}._segment_1pyfg_28:disabled{opacity:.5;cursor:not-allowed}._segment_1pyfg_28:hover:not(:disabled):not(._segmentSelected_1pyfg_75){color:var(--wzl-fg)}._segmentSelected_1pyfg_75{background:linear-gradient(180deg, color-mix(in srgb, var(--wzl-accent) var(--btn-top-alpha,45%), transparent) 0%, color-mix(in srgb, var(--wzl-accent) var(--btn-upper-alpha,70%), transparent) calc(var(--btn-equator,52%) - var(--btn-equator-spread,12%)), color-mix(in srgb, var(--wzl-accent) var(--btn-equator-tint,95%), white) var(--btn-equator,52%), var(--wzl-accent) calc(var(--btn-equator,52%) + var(--btn-equator-spread,12%) * 1.6), color-mix(in srgb, var(--wzl-accent) var(--btn-base-tint,70%), black) 100%);-webkit-backdrop-filter:blur(var(--btn-blur,6px)) saturate(var(--btn-saturate,1.3));color:var(--wzl-fg-on-accent);text-shadow:0 1px 0 rgba(0, 0, 0, var(--btn-text-shadow,.35)), var(--btn-text-inset-x,0px) var(--btn-text-inset-y,1px) 0 rgba(0, 0, 0, var(--btn-text-inset,.55)), 0 0 6px rgba(0, 0, 0, calc(var(--btn-text-shadow,.35) * .5));box-shadow:inset 0 1px 0 rgba(255, 255, 255, var(--btn-inset-hi,.42)), inset 0 -1px 2px rgba(0, 0, 0, var(--btn-inset-lo,.3)), 0 0 0 1px rgba(0, 0, 0, var(--btn-rim,.22)), 0 1px 2px rgba(0, 0, 0, var(--btn-drop-near,.3)), 0 2px 4px rgba(0, 0, 0, calc(var(--btn-drop-far,.18) * .8))}._segmentSelected_1pyfg_75:before{content:"";inset:1px 1px var(--btn-gloss-bottom,50%) 1px;border-radius:inherit;background:linear-gradient(180deg, rgba(255, 255, 255, var(--btn-gloss-top,.42)) 0%, rgba(255, 255, 255, var(--btn-gloss-mid,.12)) 60%, #fff0 100%);pointer-events:none;z-index:1;border-bottom-right-radius:0;border-bottom-left-radius:0;position:absolute}._segmentSelected_1pyfg_75>*{z-index:2;position:relative}._segmentMixed_1pyfg_134{background:color-mix(in srgb, var(--wzl-accent) 22%, transparent);color:var(--wzl-fg);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--wzl-accent) 45%, transparent)}._segmentMixed_1pyfg_134:hover:not(:disabled){background:color-mix(in srgb, var(--wzl-accent) 32%, transparent)}._variant_minimal_1pyfg_144 ._segmentMixed_1pyfg_134{background:color-mix(in srgb, var(--wzl-accent) 18%, transparent);box-shadow:none;color:var(--wzl-fg)}._size_sm_1pyfg_153{height:17px;padding:1px}._size_sm_1pyfg_153 ._segment_1pyfg_28{padding:0 8px;font-size:11px}._variant_minimal_1pyfg_144{border:1px solid var(--wzl-border,#ffffff2e);height:auto;box-shadow:none;background:0 0;border-radius:3px;gap:0;padding:0}._variant_minimal_1pyfg_144 ._segment_1pyfg_28{color:var(--wzl-fg-muted);border-radius:0;padding:0 6px;font-size:11px;font-weight:400;line-height:1.4;transition:none}._variant_minimal_1pyfg_144 ._segment_1pyfg_28+._segment_1pyfg_28{border-left:1px solid var(--wzl-border,#ffffff2e)}._variant_minimal_1pyfg_144 ._segment_1pyfg_28:first-child,._variant_minimal_1pyfg_144 ._segment_1pyfg_28:last-child,._variant_minimal_1pyfg_144 ._segment_1pyfg_28:only-child{border-radius:0}._variant_minimal_1pyfg_144 ._segment_1pyfg_28:hover:not(:disabled):not(._segmentSelected_1pyfg_75){color:var(--wzl-fg);background:#ffffff0f}._variant_minimal_1pyfg_144 ._segmentSelected_1pyfg_75{-webkit-backdrop-filter:none;color:var(--wzl-accent-fg,var(--wzl-accent));text-shadow:none;box-shadow:none;background:0 0;font-weight:500}._variant_minimal_1pyfg_144 ._segmentSelected_1pyfg_75:before{content:none}._root_15yko_1{flex-direction:column;gap:8px;min-inline-size:0;display:flex}._swatches_15yko_8{flex-wrap:wrap;gap:6px;display:flex}._swatch_15yko_8{flex:0 auto;min-inline-size:0}._overlay_6yu3h_3{pointer-events:none;position:absolute;inset:0}._guide_6yu3h_13{fill:none;stroke:#fff;stroke-opacity:.7;stroke-dasharray:4 4;paint-order:stroke}._handle_6yu3h_21{fill:#fff;stroke:#222;stroke-width:2px;cursor:grab;pointer-events:auto}._handle_6yu3h_21:active{cursor:grabbing}._handle_6yu3h_21:focus-visible{outline:2px solid var(--wzl-accent,#4a9eff);outline-offset:2px}._field_cahom_1{flex-direction:column;gap:4px;width:100%;min-width:0;display:flex}._frame_cahom_9{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-sm);height:24px;color:var(--wzl-fg);font-family:var(--wzl-font-ui);transition:border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);align-items:center;gap:6px;padding:0 8px;font-size:13px;line-height:1;display:flex}._frame_cahom_9:focus-within{border-color:var(--wzl-focus-ring);box-shadow:0 0 0 1px var(--wzl-focus-ring)}._field_cahom_1[data-invalid] ._frame_cahom_9{border-color:var(--wzl-danger,#ff5b5b)}._field_cahom_1[data-disabled] ._frame_cahom_9{opacity:.5;cursor:not-allowed}._frame_cahom_9 input{min-width:0;color:inherit;font:inherit;background:0 0;border:none;outline:none;flex:1;padding:0}._frame_cahom_9 input::placeholder{color:var(--wzl-fg-subtle)}._adornment_cahom_54{color:var(--wzl-fg-subtle);pointer-events:none;align-items:center;font-size:12px;display:inline-flex}._keys_n4bkk_2{vertical-align:bottom;flex-wrap:wrap;align-items:flex-end;gap:3px;display:inline-flex}._keysEmpty_n4bkk_16{color:var(--wzl-fg-muted)}._sep_n4bkk_20{color:var(--wzl-fg-muted);font-size:11px;line-height:1}._key_n4bkk_2{box-sizing:border-box;background:var(--wzl-fg,#e6e7e9);height:18px;color:var(--wzl-surface);border:1px solid #25272c;border-bottom-width:2px;border-radius:3px;justify-content:center;align-items:center;padding:0 4px;font-family:ui-sans-serif,system-ui,sans-serif;font-size:11px;font-weight:700;line-height:1;display:inline-flex}._key_n4bkk_2[data-kind=square]{width:18px;padding:0}._key_n4bkk_2[data-kind=modifier]{min-width:26px;padding:0 6px}._key_n4bkk_2[data-kind=wide]{min-width:32px;padding:0 8px}._key_n4bkk_2[data-inverted]{background:var(--wzl-surface);color:color-mix(in srgb, var(--wzl-fg,#e6e7e9) 60%, transparent);border-style:dotted;border-color:color-mix(in srgb, var(--wzl-fg,#e6e7e9) 40%, transparent);border-width:1.5px}._key_n4bkk_2[data-variant=minimal]{color:currentColor;background:0 0;border-color:currentColor}._key_n4bkk_2[data-variant=minimal][data-inverted]{color:currentColor;border:1.5px dotted}._field_e75yx_1{flex-direction:column;gap:4px;width:100%;min-width:0;display:flex}._frame_e75yx_9{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-sm);height:24px;color:var(--wzl-fg);font-family:var(--wzl-font-ui);transition:border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);align-items:stretch;font-size:13px;line-height:1;display:flex;overflow:hidden}._frame_e75yx_9:focus-within{border-color:var(--wzl-focus-ring);box-shadow:0 0 0 1px var(--wzl-focus-ring)}._field_e75yx_1[data-invalid] ._frame_e75yx_9{border-color:var(--wzl-danger,#ff5b5b)}._field_e75yx_1[data-disabled] ._frame_e75yx_9{opacity:.5;cursor:not-allowed}._frame_e75yx_9 input{min-width:0;color:inherit;font:inherit;text-align:right;-moz-appearance:textfield;background:0 0;border:none;outline:none;flex:1;padding:0 8px}._frame_e75yx_9 input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}._frame_e75yx_9 input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}._steppers_e75yx_57{border-left:1px solid var(--wzl-border);flex-direction:column;display:flex}._stepper_e75yx_57{width:18px;color:var(--wzl-fg-muted);cursor:pointer;background:0 0;border:none;flex:1;justify-content:center;align-items:center;padding:0;font-size:9px;line-height:1;display:inline-flex}._stepper_e75yx_57:not(:last-child){border-bottom:1px solid var(--wzl-border)}._stepper_e75yx_57[data-hovered]:not([data-disabled]){background:color-mix(in srgb, var(--wzl-fg) 10%, transparent);color:var(--wzl-fg)}._stepper_e75yx_57[data-pressed]:not([data-disabled]){background:color-mix(in srgb, var(--wzl-fg) 18%, transparent)}._stepper_e75yx_57[data-disabled]{opacity:.4;cursor:not-allowed}._row_q3wun_1{align-items:stretch;gap:var(--powerline-gap,.2em);display:inline-flex}._matrix_q3wun_7{gap:12px;display:grid}._segment_q3wun_15{font-size:inherit;text-transform:none;letter-spacing:normal}._group_kaubu_1{font-family:var(--wzl-font-ui);color:var(--wzl-fg);flex-direction:column;gap:6px;display:flex}._group_kaubu_1[data-orientation=horizontal]{flex-direction:row;gap:16px}._legend_kaubu_14{color:var(--wzl-fg);font-size:12px;font-weight:500}._radio_kaubu_20{cursor:pointer;color:var(--wzl-fg);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:13px;display:inline-flex}._radio_kaubu_20[data-disabled]{opacity:.5;cursor:not-allowed}._dot_kaubu_36{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border-strong);width:14px;height:14px;transition:border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);border-radius:50%;flex:none;position:relative}._radio_kaubu_20[data-focus-visible] ._dot_kaubu_36{box-shadow:0 0 0 2px var(--wzl-focus-ring)}._radio_kaubu_20[data-hovered]:not([data-disabled]) ._dot_kaubu_36{border-color:var(--wzl-fg-muted)}._radio_kaubu_20[data-selected] ._dot_kaubu_36{border-color:var(--wzl-accent-strong)}._dot_kaubu_36:after{content:"";background:var(--wzl-accent-strong);transition:transform var(--wzl-motion-fast);border-radius:50%;position:absolute;inset:3px;transform:scale(0)}._radio_kaubu_20[data-selected] ._dot_kaubu_36:after{transform:scale(1)}._slider_1644w_1{width:100%;font-family:var(--wzl-font-ui);color:var(--wzl-fg);flex-direction:column;gap:4px;display:flex}._slider_1644w_1[data-orientation=vertical]{flex-direction:row;align-items:stretch;width:28px;height:160px}._head_1644w_17{justify-content:space-between;align-items:baseline;gap:8px;display:flex}._label_1644w_24{color:var(--wzl-fg);font-size:12px;font-weight:500}._output_1644w_30{color:var(--wzl-fg-subtle);font-variant-numeric:tabular-nums;font-size:12px}._track_1644w_36{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border);border-radius:3px;min-width:80px;height:6px;position:relative}._slider_1644w_1[data-orientation=vertical] ._track_1644w_36{width:6px;height:100%}._fill_1644w_50{background:var(--wzl-accent-strong);border-radius:3px;position:absolute;top:0;bottom:0;left:0}._thumb_1644w_59{background:var(--wzl-fg-muted);border:1px solid var(--wzl-border-strong);cursor:ew-resize;width:14px;height:14px;transition:box-shadow var(--wzl-motion-fast);border-radius:50%;outline:none}._slider_1644w_1[data-orientation=vertical] ._thumb_1644w_59{cursor:ns-resize}._thumb_1644w_59[data-focus-visible]{box-shadow:0 0 0 2px var(--wzl-focus-ring)}._thumb_1644w_59[data-dragging]{background:var(--wzl-accent-strong)}._slider_1644w_1[data-disabled]{opacity:.5;cursor:not-allowed}._field_nq1le_1{flex-direction:column;gap:4px;width:100%;min-width:0;display:flex}._trigger_nq1le_9{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-sm);width:100%;height:24px;color:var(--wzl-fg);font-family:var(--wzl-font-ui);cursor:pointer;transition:border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);align-items:center;gap:6px;padding:0 6px 0 10px;font-size:13px;line-height:1;display:flex}._trigger_nq1le_9[data-focus-visible]{border-color:var(--wzl-focus-ring);box-shadow:0 0 0 1px var(--wzl-focus-ring)}._field_nq1le_1[data-invalid] ._trigger_nq1le_9{border-color:var(--wzl-danger,#ff5b5b)}._trigger_nq1le_9[data-disabled]{opacity:.5;cursor:not-allowed}._value_nq1le_41{text-align:left;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}._value_nq1le_41[data-placeholder]{color:var(--wzl-fg-subtle)}._chevron_nq1le_54{width:10px;height:10px;color:var(--wzl-fg-muted);flex:none}._popover_nq1le_61{min-width:var(--trigger-width);max-height:inherit;outline:none}._listbox_nq1le_67{background:var(--wzl-surface-raised);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-md);max-height:280px;font-family:var(--wzl-font-ui);outline:none;padding:4px;font-size:13px;overflow:auto;box-shadow:0 8px 24px #0000004d}._option_nq1le_80{cursor:pointer;color:var(--wzl-fg);border-radius:3px;outline:none;align-items:center;gap:8px;padding:4px 8px;display:flex}._option_nq1le_80[data-focused]{background:color-mix(in srgb, var(--wzl-fg) 10%, transparent)}._option_nq1le_80[data-selected]{color:var(--wzl-fg);font-weight:500}._option_nq1le_80[data-disabled]{opacity:.4;cursor:not-allowed}._check_nq1le_105{opacity:0;flex:none;width:10px;height:10px}._option_nq1le_80[data-selected] ._check_nq1le_105{opacity:1}._switch_qsj3o_1{cursor:pointer;font-family:var(--wzl-font-ui);color:var(--wzl-fg);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:13px;display:inline-flex}._switch_qsj3o_1[data-disabled]{opacity:.5;cursor:not-allowed}._track_qsj3o_18{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border-strong);width:28px;height:16px;transition:background-color var(--wzl-motion-fast), border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);border-radius:8px;flex:none;position:relative}._switch_qsj3o_1[data-focus-visible] ._track_qsj3o_18{box-shadow:0 0 0 2px var(--wzl-focus-ring)}._switch_qsj3o_1[data-selected] ._track_qsj3o_18{background:var(--wzl-accent-strong);border-color:var(--wzl-accent-strong)}._thumb_qsj3o_38{background:var(--wzl-fg);width:12px;height:12px;transition:transform var(--wzl-motion-fast);border-radius:50%;position:absolute;top:1px;left:1px}._switch_qsj3o_1[data-selected] ._thumb_qsj3o_38{background:var(--wzl-fg-on-accent);transform:translate(12px)}._label_qsj3o_54{line-height:1.2}._columns_y5ks5_5{flex-flow:wrap;align-items:flex-start;gap:12px;padding-right:4px;display:flex;overflow-y:auto}._column_y5ks5_5{flex:0 0 var(--wzl-prefs-column-width,300px);width:var(--wzl-prefs-column-width,300px);flex-direction:column;gap:8px;display:flex}._panel_y5ks5_23{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-sm);flex-direction:column;gap:8px;padding:10px;display:flex}._subpanel_y5ks5_33{background:var(--wzl-surface-sunken);border-left:2px solid var(--wzl-border);border-radius:2px;flex-direction:column;gap:6px;margin-top:6px;padding:8px 8px 8px 10px;display:flex}._groupHeader_y5ks5_44{border-bottom:1px solid var(--wzl-border);flex-direction:column;gap:2px;padding-bottom:4px;display:flex}._subpanel_y5ks5_33 ._groupHeader_y5ks5_44{border-bottom:none;padding-bottom:2px}._groupTitle_y5ks5_57{color:var(--wzl-fg);letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:12px;font-weight:600}._subpanel_y5ks5_33 ._groupTitle_y5ks5_57{text-transform:none;letter-spacing:0;font-size:11px}._groupDesc_y5ks5_72{color:var(--wzl-fg-subtle);margin:0;font-size:11px;line-height:1.35}._rows_y5ks5_79{flex-direction:column;gap:6px;display:flex}._row_y5ks5_79{color:var(--wzl-fg);cursor:default;justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}._rowLabel_y5ks5_95{flex:auto;align-items:center;gap:4px;min-width:0;display:inline-flex}._help_y5ks5_104{color:var(--wzl-fg-subtle);cursor:help;border-radius:var(--wzl-radius-sm);background:0 0;border:none;flex:none;padding:0;font-size:11px;line-height:1}._help_y5ks5_104:hover{color:var(--wzl-fg)}._help_y5ks5_104:focus-visible{outline:2px solid var(--wzl-focus-ring);outline-offset:1px;color:var(--wzl-fg)}._rowControl_y5ks5_128{flex:0 0 110px;align-items:center;min-width:0;display:flex}._textarea_y5ks5_135{background:var(--wzl-surface-sunken);width:100%;color:var(--wzl-fg);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-sm);font:inherit;resize:vertical;padding:4px 8px;font-size:12px}._unrenderable_y5ks5_147{font-family:var(--wzl-font-mono);color:var(--wzl-fg-subtle);font-size:11px}._titleRow_y5ks5_154{flex:1;align-items:center;gap:12px;min-width:0;display:flex}._titleRow_y5ks5_154>span:first-child{flex:1;min-width:0}._handle_c4v7n_1{cursor:ew-resize;border-left:1px solid var(--wzl-border);touch-action:none;background:0 0;flex-shrink:0;align-self:stretch;width:4px}._handle_c4v7n_1._horizontal_c4v7n_14{cursor:ns-resize;border-left:none;border-top:1px solid var(--wzl-border);align-self:auto;width:auto;height:4px}._handle_c4v7n_1:hover{background:var(--wzl-border)}._handle_c4v7n_1:focus-visible{outline:2px solid var(--wzl-focus-ring,var(--wzl-accent));outline-offset:-1px}._root_zqa5p_1{color:var(--wzl-fg);flex-direction:column;font-size:12px;display:flex}._header_zqa5p_8{border-block-end:1px solid var(--wzl-border);align-items:baseline;gap:8px;padding:8px 10px;display:flex}._kind_zqa5p_16{font-size:13px;font-weight:600}._breakdown_zqa5p_21{opacity:.6;font-size:11px}._section_zqa5p_26{border-block-end:1px solid var(--wzl-border);padding:6px 10px 8px}._section_zqa5p_26:last-child{border-block-end:none}._sectionTitle_zqa5p_35{text-transform:uppercase;letter-spacing:.06em;opacity:.55;margin:0 0 6px;font-size:10px;font-weight:600}._row_zqa5p_44{grid-template-columns:64px 1fr;align-items:center;gap:6px;margin-block-end:5px;display:grid}._rowLabel_zqa5p_52{opacity:.75}._rowControls_zqa5p_56{align-items:center;gap:6px;min-inline-size:0;display:flex}._rowControls_zqa5p_56>*{flex:1;min-inline-size:0}._number_zqa5p_68 input,._select_zqa5p_69{font-size:11px}._unitSuffix_zqa5p_73{opacity:.6;flex:none;font-size:11px}._mixedSwitch_zqa5p_79{opacity:.55}._unrenderable_zqa5p_83{opacity:.5;font-size:11px;font-style:italic}._sidebar_toyo8_1{background:var(--wzl-surface);color:var(--wzl-fg);flex-direction:column;gap:4px;display:flex}._sidebar_toyo8_1._left_toyo8_9{border-right:1px solid var(--wzl-border)}._sidebar_toyo8_1._right_toyo8_12{border-left:1px solid var(--wzl-border)}._panel_1u064_1{background:var(--wzl-surface);color:var(--wzl-fg);padding:8px}._title_1u064_7{text-transform:uppercase;letter-spacing:.05em;color:var(--wzl-fg-muted);font-size:11px;font-weight:600}._titleRow_1u064_15{justify-content:space-between;align-items:center;margin-bottom:4px;padding:0;display:flex}._titleButton_1u064_23{cursor:pointer;color:inherit;font:inherit;text-align:left;background:0 0;border:0;flex:auto;align-items:center;gap:4px;padding:4px 8px;display:inline-flex}._titleButton_1u064_23:hover{color:var(--wzl-fg)}._chevron_1u064_40{color:var(--wzl-fg-muted);transition:transform var(--wzl-motion-fast) ease;font-size:10px;line-height:1;display:inline-block}._chevronCollapsed_1u064_47{transform:rotate(-90deg)}._hideButton_1u064_51{color:var(--wzl-fg-muted);cursor:pointer;background:0 0;border:0;padding:0 6px;font-size:14px;line-height:1}._hideButton_1u064_51:hover{color:var(--wzl-fg)}._panel_1u064_1._collapsed_1u064_64{padding-bottom:4px}._body_1u064_68{padding:0 4px}._bar_38xae_1{font-family:var(--wzl-font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);color:var(--wzl-fg-muted);background:var(--wzl-surface);border-top:1px solid var(--wzl-border);flex-shrink:0;align-items:center;gap:16px;padding:4px 12px;font-size:11px;display:flex}._item_38xae_14{white-space:nowrap}._muted_38xae_18{opacity:.6;font-variant-numeric:tabular-nums}._hasTitle_38xae_23{cursor:help}._spacer_38xae_27{margin-left:auto}._tabs_ce73l_1{font-family:var(--wzl-font-ui);color:var(--wzl-fg);flex-direction:column;gap:0;display:flex}._tabs_ce73l_1[data-orientation=horizontal]{flex-direction:column}._tabs_ce73l_1[data-orientation=vertical]{flex-direction:row;gap:12px}._list_ce73l_18{border-bottom:1px solid var(--wzl-border);gap:2px;display:flex}._tabs_ce73l_1[data-orientation=vertical] ._list_ce73l_18{border-bottom:none;border-right:1px solid var(--wzl-border);flex-direction:column;padding-right:8px}._tab_ce73l_1{color:var(--wzl-fg-muted);font:inherit;cursor:pointer;transition:color var(--wzl-motion-fast);background:0 0;border:none;outline:none;padding:6px 10px;font-size:12px;position:relative}._tab_ce73l_1[data-hovered]:not([data-disabled]),._tab_ce73l_1[data-selected]{color:var(--wzl-fg)}._tab_ce73l_1[data-selected]:after{content:"";background:var(--wzl-accent-strong);height:2px;position:absolute;bottom:-1px;left:0;right:0}._tabs_ce73l_1[data-orientation=vertical] ._tab_ce73l_1[data-selected]:after{width:2px;height:auto;inset:0 -9px 0 auto}._tab_ce73l_1[data-focus-visible]{box-shadow:inset 0 0 0 2px var(--wzl-focus-ring);border-radius:var(--wzl-radius-sm)}._tab_ce73l_1[data-disabled]{opacity:.5;cursor:not-allowed}._panel_ce73l_81{outline:none;padding:12px 0}._panel_ce73l_81[data-focus-visible]{box-shadow:inset 0 0 0 2px var(--wzl-focus-ring);border-radius:var(--wzl-radius-sm)}._region_18i9b_1{z-index:1100;outline:none;flex-direction:column-reverse;gap:8px;max-width:360px;display:flex;position:fixed}._bottomRight_18i9b_17{bottom:16px;right:16px}._bottomLeft_18i9b_18{bottom:16px;left:16px}._topRight_18i9b_19{flex-direction:column;top:16px;right:16px}._topLeft_18i9b_20{flex-direction:column;top:16px;left:16px}._toast_18i9b_22{--toast-accent:var(--wzl-accent-strong);view-transition-class:wzl-toast;background:var(--wzl-surface);border:1px solid var(--wzl-border);border-left:3px solid var(--toast-accent);border-radius:var(--wzl-radius-md);color:var(--wzl-fg);font-family:var(--wzl-font-ui);outline:none;align-items:flex-start;gap:8px;padding:10px 12px;display:flex;box-shadow:0 8px 24px #00000059}._region_18i9b_1[data-focus-visible],._toast_18i9b_22[data-focus-visible]{outline:2px solid var(--wzl-focus-ring);outline-offset:1px}._toneSuccess_18i9b_49{--toast-accent:var(--wzl-success,#2ec27e)}._toneWarning_18i9b_50{--toast-accent:var(--wzl-warning,#d99a3f)}._toneError_18i9b_51{--toast-accent:var(--wzl-danger,#d94a3f)}._content_18i9b_53{flex:1;min-width:0}._title_18i9b_58{font-size:13px;font-weight:600;display:block}._description_18i9b_64{color:var(--wzl-fg-muted);margin-top:2px;font-size:12px;display:block}._close_18i9b_71{color:var(--wzl-fg-muted);cursor:pointer;border-radius:var(--wzl-radius-sm);background:0 0;border:none;flex:none;padding:2px 4px;font-size:16px;line-height:1}._close_18i9b_71:hover{color:var(--wzl-fg)}:root.wzl-toast-vt{view-transition-name:none}:root.wzl-toast-vt::view-transition{pointer-events:none}:root.wzl-toast-vt::view-transition-new(.wzl-toast):only-child{animation:wzl-toast-enter var(--wzl-motion-medium,.24s) var(--wzl-ease-out-cubic,ease-out) both}:root.wzl-toast-vt::view-transition-old(.wzl-toast):only-child{animation:wzl-toast-exit var(--wzl-motion-fast,.12s) var(--wzl-ease-in-cubic,ease-in) both}@keyframes wzl-toast-enter{0%{opacity:0;translate:0 16px}}@keyframes wzl-toast-exit{to{opacity:0;scale:.92}}._button_1jvxe_1{min-width:44px;color:var(--wzl-fg);cursor:default;background:0 0;border:1px solid #0000;border-radius:3px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:6px 4px;font-family:inherit;font-size:10px;line-height:1.1;display:inline-flex}._button_1jvxe_1:hover:not([disabled]){background:var(--wzl-surface-hover);color:var(--wzl-fg)}._button_1jvxe_1:focus-visible{outline:2px solid var(--wzl-accent);outline-offset:-2px}._button_1jvxe_1._active_1jvxe_26{background:var(--wzl-surface-pressed);border-color:var(--wzl-accent);color:var(--wzl-fg)}._button_1jvxe_1[disabled]{opacity:.4}._icon_1jvxe_35,._icon_1jvxe_35>svg{display:block}._label_1jvxe_37{font-size:10px}._shortcut_1jvxe_38{color:var(--wzl-fg-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px}._group_o2pho_1{flex-direction:column;gap:2px;display:flex}._group_o2pho_1._horizontal_o2pho_6{flex-direction:row}._root_ps46a_13{height:var(--wzl-tb-height,28px);background:var(--wzl-surface);border-bottom:1px solid var(--wzl-border);color:var(--wzl-fg);align-items:center;gap:8px;padding:0 8px;display:flex;overflow:hidden}._label_ps46a_25{text-transform:uppercase;letter-spacing:.05em;color:var(--wzl-fg-muted);white-space:nowrap;flex:none;font-size:11px;font-weight:600}._controls_ps46a_6{scrollbar-width:thin;flex:auto;align-items:center;gap:6px;min-width:0;height:100%;display:flex;overflow:auto hidden}._controls_ps46a_6::-webkit-scrollbar{height:4px}._controls_ps46a_6::-webkit-scrollbar-track{background:0 0}._controls_ps46a_6::-webkit-scrollbar-thumb{background:var(--wzl-border);border-radius:2px}._palette_1mz1c_1{background:var(--wzl-surface);border:1px solid var(--wzl-border);-webkit-user-select:none;user-select:none;border-radius:4px;flex-direction:column;gap:4px;padding:4px;display:flex}._palette_1mz1c_1._horizontal_1mz1c_11{flex-direction:row}._ineligibleBtn_1mz1c_20{opacity:.35;cursor:not-allowed}._separator_1mz1c_25{background:var(--wzl-border)}._palette_1mz1c_1:not(._horizontal_1mz1c_11) ._separator_1mz1c_25{height:1px;margin:2px 0}._palette_1mz1c_1._horizontal_1mz1c_11 ._separator_1mz1c_25{width:1px;margin:0 2px}
146
+ ._tooltip_1km1f_1{z-index:1200;background:var(--wzl-surface);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-sm);color:var(--wzl-fg);font-family:var(--wzl-font-ui);max-width:260px;transition:opacity var(--wzl-motion-fast);padding:4px 8px;font-size:12px;line-height:1.3;box-shadow:0 4px 16px #00000059}._tooltip_1km1f_1[data-entering],._tooltip_1km1f_1[data-exiting]{opacity:0}._arrow_1km1f_22 svg{fill:var(--wzl-surface);stroke:var(--wzl-border);stroke-width:1px;display:block}._arrow_1km1f_22[data-placement=bottom] svg{transform:rotate(180deg)}._arrow_1km1f_22[data-placement=left] svg{transform:rotate(-90deg)}._arrow_1km1f_22[data-placement=right] svg{transform:rotate(90deg)}._bar_147qb_7{background:var(--wzl-surface);border:1px solid var(--wzl-border);-webkit-user-select:none;user-select:none;border-radius:4px;flex-direction:row;gap:1px;padding:2px;display:flex}._bar_147qb_7._vertical_147qb_18{flex-direction:column}._button_147qb_22{width:28px;height:28px;color:var(--wzl-fg);cursor:default;background:0 0;border:0;border-radius:2px;justify-content:center;align-items:center;padding:0;display:inline-flex}._button_147qb_22:hover:not([disabled]){background:var(--wzl-border)}._button_147qb_22:active:not([disabled]){background:color-mix(in srgb, var(--wzl-border) 70%, transparent)}._button_147qb_22[disabled]{opacity:.4;cursor:default}._button_147qb_22>svg{display:block}._root_1hmjs_10{height:var(--wzl-tb-height,28px);-webkit-user-select:none;user-select:none;touch-action:none;background:linear-gradient(#0000002e 0%,#0000000d 100%);border-radius:999px;padding:2px;display:inline-flex;overflow:hidden;box-shadow:inset 0 1px 2px #0006,0 1px #ffffff0f}._segment_1hmjs_32{min-width:0;font-family:var(--wzl-font-ui);font-weight:300;font-size:var(--btn-fontsize,14px);color:var(--wzl-fg-muted);cursor:pointer;isolation:isolate;transition:color var(--wzl-motion-fast);background:0 0;border:none;border-radius:0;flex:1 1 0;justify-content:center;align-items:center;margin:0;padding:0 12px;line-height:1;display:inline-flex;position:relative;overflow:hidden}._segment_1hmjs_32:first-child{border-radius:999px 0 0 999px}._segment_1hmjs_32:last-child{border-radius:0 999px 999px 0}._segment_1hmjs_32:only-child{border-radius:999px}._segment_1hmjs_32:focus-visible{outline:2px solid var(--wzl-accent);outline-offset:-2px}._segment_1hmjs_32:disabled{opacity:.5;cursor:not-allowed}._segment_1hmjs_32:hover:not(:disabled):not(._segmentSelected_1hmjs_79){color:var(--wzl-fg)}._segmentSelected_1hmjs_79{background:linear-gradient(180deg, color-mix(in srgb, var(--wzl-accent) var(--btn-top-alpha,45%), transparent) 0%, color-mix(in srgb, var(--wzl-accent) var(--btn-upper-alpha,70%), transparent) calc(var(--btn-equator,52%) - var(--btn-equator-spread,12%)), color-mix(in srgb, var(--wzl-accent) var(--btn-equator-tint,95%), white) var(--btn-equator,52%), var(--wzl-accent) calc(var(--btn-equator,52%) + var(--btn-equator-spread,12%) * 1.6), color-mix(in srgb, var(--wzl-accent) var(--btn-base-tint,70%), black) 100%);-webkit-backdrop-filter:blur(var(--btn-blur,6px)) saturate(var(--btn-saturate,1.3));color:var(--wzl-fg-on-accent);text-shadow:0 1px 0 rgba(0, 0, 0, var(--btn-text-shadow,.35)), var(--btn-text-inset-x,0px) var(--btn-text-inset-y,1px) 0 rgba(0, 0, 0, var(--btn-text-inset,.55)), 0 0 6px rgba(0, 0, 0, calc(var(--btn-text-shadow,.35) * .5));box-shadow:inset 0 1px 0 rgba(255, 255, 255, var(--btn-inset-hi,.42)), inset 0 -1px 2px rgba(0, 0, 0, var(--btn-inset-lo,.3)), 0 0 0 1px rgba(0, 0, 0, var(--btn-rim,.22)), 0 1px 2px rgba(0, 0, 0, var(--btn-drop-near,.3)), 0 2px 4px rgba(0, 0, 0, calc(var(--btn-drop-far,.18) * .8))}._segmentSelected_1hmjs_79:before{content:"";inset:1px 1px var(--btn-gloss-bottom,50%) 1px;border-radius:inherit;background:linear-gradient(180deg, rgba(255, 255, 255, var(--btn-gloss-top,.42)) 0%, rgba(255, 255, 255, var(--btn-gloss-mid,.12)) 60%, #fff0 100%);pointer-events:none;z-index:1;border-bottom-right-radius:0;border-bottom-left-radius:0;position:absolute}._segmentSelected_1hmjs_79>*{z-index:2;position:relative}._size_sm_1hmjs_137{height:17px;padding:1px}._size_sm_1hmjs_137 ._segment_1hmjs_32{padding:0 8px;font-size:11px}._variant_minimal_1hmjs_150{height:auto;box-shadow:none;background:0 0;border-radius:0;gap:2px;padding:0}._variant_minimal_1hmjs_150 ._segment_1hmjs_32{color:var(--wzl-fg-muted);border-radius:2px;padding:0 4px;font-size:11px;font-weight:400;line-height:1.4;transition:none}._variant_minimal_1hmjs_150 ._segment_1hmjs_32:first-child,._variant_minimal_1hmjs_150 ._segment_1hmjs_32:last-child,._variant_minimal_1hmjs_150 ._segment_1hmjs_32:only-child{border-radius:2px}._variant_minimal_1hmjs_150 ._segment_1hmjs_32:hover:not(:disabled):not(._segmentSelected_1hmjs_79){color:var(--wzl-fg);background:#ffffff0f}._variant_minimal_1hmjs_150 ._segmentSelected_1hmjs_79{-webkit-backdrop-filter:none;color:var(--wzl-accent-fg,var(--wzl-accent));text-shadow:none;box-shadow:none;background:0 0;font-weight:500}._variant_minimal_1hmjs_150 ._segmentSelected_1hmjs_79:before{content:none}._badge_16w4d_1{vertical-align:baseline;align-items:baseline;gap:var(--badge-gap,4px);font-size:var(--badge-font-size,10px);text-transform:uppercase;letter-spacing:.04em;color:var(--badge-fg,var(--wzl-fg-muted));--badge-edge:var(--wzl-border);--badge-fill:var(--wzl-surface);--badge-fg:var(--badge-edge);font:inherit;background:0 0;border:0;font-family:inherit;text-decoration:none;display:inline-flex;position:relative}._badge_16w4d_1 *{text-decoration:none}._badge_16w4d_1[data-size=md]{--badge-gap:6px;--badge-pad-x:10px;--badge-pad-y:3px;--badge-font-size:12px}._deco_16w4d_33{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}._deco_16w4d_33 .badge-fill{fill:var(--badge-fill);stroke:none}._deco_16w4d_33 .badge-stroke{fill:none;stroke:var(--badge-edge);stroke-width:var(--badge-stroke-width,1px);vector-effect:non-scaling-stroke}._deco_16w4d_33 .badge-focus{fill:none;stroke:var(--badge-edge);stroke-width:calc(var(--badge-stroke-width,1px) + 1px);vector-effect:non-scaling-stroke;opacity:.6}._deco_16w4d_33 .badge-bevel-light{fill:#ffffff38;stroke:none}._deco_16w4d_33 .badge-bevel-medium-light{fill:#ffffff1a;stroke:none}._deco_16w4d_33 .badge-bevel-medium-dark{fill:#00000029;stroke:none}._deco_16w4d_33 .badge-bevel-dark{fill:#00000052;stroke:none}._content_16w4d_49{align-items:baseline;gap:inherit;z-index:1;display:inline-flex;position:relative}._badge_16w4d_1[data-tone=accent]{--badge-edge:var(--wzl-accent-fg,var(--wzl-accent,#7fb069))}._badge_16w4d_1[data-tone=info]{--badge-edge:#7ab8d4}._badge_16w4d_1[data-tone=warn]{--badge-edge:#d4a574}._badge_16w4d_1[data-tone=danger]{--badge-edge:#c43c3c}._badge_16w4d_1[data-tone=muted]{--badge-edge:var(--wzl-fg-muted)}._badge_16w4d_1[data-tone=neutral]{--badge-edge:var(--wzl-border);--badge-fg:var(--wzl-fg-muted)}._badge_16w4d_1[data-variant=outline]{--badge-fill:var(--wzl-surface);--badge-fg:var(--badge-edge)}._badge_16w4d_1[data-variant=solid]{--badge-fill:var(--badge-edge);--badge-fg:#fff;font-weight:600}._badge_16w4d_1[data-variant=subtle]{--badge-fill:color-mix(in oklab, var(--badge-edge) 14%, transparent);--badge-fg:var(--badge-edge)}._badge_16w4d_1[data-tone=neutral]:not([data-variant=solid]){--badge-fg:var(--wzl-fg-muted)}._badge_16w4d_1{padding:calc(var(--badge-pad-y,1px) + var(--badge-inset-top,0px)) calc(var(--badge-pad-x,6px) + var(--badge-inset-right,0px)) calc(var(--badge-pad-y,1px) + var(--badge-inset-bottom,0px)) calc(var(--badge-pad-x,6px) + var(--badge-inset-left,0px))}._badge_16w4d_1[data-shape=pill]{box-sizing:border-box;-webkit-box-decoration-break:slice;box-decoration-break:slice;border-radius:9999px;display:inline}._badge_16w4d_1[data-shape=pill] ._content_16w4d_49,._badge_16w4d_1[data-shape=plain] ._content_16w4d_49{display:inline}._badge_16w4d_1[data-shape=pill][data-variant=solid],._badge_16w4d_1[data-shape=pill][data-variant=subtle]{background:var(--badge-fill)}._badge_16w4d_1[data-shape=pill]{border:var(--badge-stroke-width,1px) solid transparent}._badge_16w4d_1[data-shape=pill][data-variant=outline],._badge_16w4d_1[data-shape=pill][data-variant=solid]{border-color:var(--badge-edge)}._badge_16w4d_1[data-shape=pill][data-focused=true]{outline:2px solid color-mix(in oklab, var(--badge-edge) 60%, transparent);outline-offset:2px}._badge_16w4d_1[data-shape=plain]{letter-spacing:.04em;text-transform:none;color:var(--badge-fg);-webkit-box-decoration-break:slice;box-decoration-break:slice;background:0 0;padding:0;display:inline}._badge_16w4d_1[data-shape=plain][data-focused=true]{outline:2px solid color-mix(in oklab, var(--badge-edge) 60%, transparent);outline-offset:3px;border-radius:2px}._badge_16w4d_1[data-shape=plaque] ._content_16w4d_49{text-shadow:0 1px #ffffff24,0 -.5px #00000080}button._badge_16w4d_1,a._badge_16w4d_1{cursor:pointer;border:0 solid #0000;outline:0}button._badge_16w4d_1:hover,a._badge_16w4d_1:hover{--badge-edge:color-mix(in oklab, var(--badge-edge) 88%, white)}@media (prefers-reduced-motion:reduce){button._badge_16w4d_1:hover,a._badge_16w4d_1:hover{--badge-edge:var(--badge-edge)}}._remove_16w4d_161{width:14px;height:14px;color:var(--badge-fg);cursor:pointer;font:inherit;vertical-align:middle;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;margin-left:2px;padding:0;font-size:14px;line-height:1;display:inline-flex}._remove_16w4d_161:hover{background:color-mix(in oklab, var(--badge-fg) 20%, transparent)}._remove_16w4d_161>svg{display:block}._badge_16w4d_1[data-size=md] ._remove_16w4d_161{width:16px;height:16px;font-size:16px}._badge_16w4d_1[data-size=md] ._remove_16w4d_161>svg{width:12px;height:12px}._root_amv2k_1{-webkit-user-select:none;user-select:none;touch-action:none;flex-direction:column;gap:2px;display:flex;position:relative}._label_amv2k_11{font:var(--wzl-font-weight-medium,500) var(--wzl-font-size-sm,.75rem) / 1.4 var(--wzl-font-ui,ui-sans-serif, system-ui, sans-serif);color:var(--wzl-fg-muted)}._ruler_amv2k_19{height:var(--be-ruler-height,20px);cursor:crosshair;position:relative}._tick_amv2k_25{left:var(--be-at);background:var(--wzl-fg-subtle);pointer-events:none;width:1px;height:6px;position:absolute;bottom:0}._tickLabel_amv2k_35{font:var(--wzl-font-weight-medium,500) .65rem / 1 var(--wzl-font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);color:var(--wzl-fg-muted);white-space:nowrap;position:absolute;bottom:7px;left:0;transform:translate(-50%)}._bands_amv2k_45{height:var(--be-band-height,34px);position:relative}._band_amv2k_45{top:0;bottom:0;left:var(--be-from);width:calc(var(--be-to) - var(--be-from));background:var(--wzl-surface-raised);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-sm,3px);color:var(--wzl-fg);font:var(--wzl-font-weight-medium,500) .7rem / 1 var(--wzl-font-ui,ui-sans-serif, system-ui, sans-serif);cursor:grab;justify-content:center;align-items:center;margin:0;padding:0 4px;display:flex;position:absolute;overflow:hidden}._band_amv2k_45:hover{background:var(--wzl-surface-hover)}._band_amv2k_45:active{cursor:grabbing}._band_amv2k_45:focus-visible{outline:2px solid var(--wzl-accent);outline-offset:-2px}._band_amv2k_45:first-of-type,._band_amv2k_45:last-of-type{cursor:default}._selected_amv2k_92{background:color-mix(in srgb, var(--wzl-accent) 22%, transparent);border-color:var(--wzl-accent);box-shadow:inset 0 0 0 1px var(--wzl-accent);color:var(--wzl-fg)}._bandContent_amv2k_99{text-overflow:ellipsis;white-space:nowrap;pointer-events:none;overflow:hidden}._seam_amv2k_107{left:var(--be-at);z-index:1;cursor:ew-resize;background:0 0;border:none;width:11px;margin-left:-5px;position:absolute;top:-3px;bottom:-3px}._seam_amv2k_107:before{content:"";background:var(--wzl-border-strong);width:1px;position:absolute;top:0;bottom:0;left:5px}._seam_amv2k_107:hover:before,._seam_amv2k_107:focus-visible:before{background:var(--wzl-accent);width:2px}._seam_amv2k_107:focus-visible{outline:2px solid var(--wzl-accent);outline-offset:0;border-radius:2px}._button_yji6d_3{--btn-radius:calc(var(--btn-height) * .1);--btn-fontweight:400;--btn-fontsize:14px;--btn-height:24px;--btn-padx:12px;--btn-top-alpha:45%;--btn-upper-alpha:70%;--btn-equator:52%;--btn-equator-spread:12%;--btn-equator-tint:95%;--btn-base-tint:70%;--btn-blur:6px;--btn-saturate:1.3;--btn-gloss-top:.42;--btn-gloss-mid:.12;--btn-gloss-bottom:50%;--btn-rim:.22;--btn-drop-near:.3;--btn-drop-far:.18;--btn-inset-hi:.42;--btn-inset-lo:.3;--btn-text-shadow:.35;--btn-text-inset:.55;--btn-text-inset-x:0px;--btn-text-inset-y:1px;border-radius:var(--btn-radius);font-family:var(--wzl-font-ui);font-weight:var(--btn-fontweight);font-style:normal;font-size:var(--btn-fontsize);height:var(--btn-height);padding:0 var(--btn-padx);cursor:pointer;-webkit-user-select:none;user-select:none;isolation:isolate;transition:filter var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast), transform 80ms;border:none;justify-content:center;align-items:center;gap:6px;line-height:1;display:inline-flex;position:relative;overflow:hidden}._button_yji6d_3:before{content:"";inset:1px 1px var(--btn-gloss-bottom) 1px;border-top-left-radius:var(--btn-radius);border-top-right-radius:var(--btn-radius);background:linear-gradient(180deg, rgba(255, 255, 255, var(--btn-gloss-top)) 0%, rgba(255, 255, 255, var(--btn-gloss-mid)) 60%, #fff0 100%);pointer-events:none;z-index:1;transition:opacity var(--wzl-motion-fast);border-bottom-right-radius:0;border-bottom-left-radius:0;position:absolute}._button_yji6d_3>*{z-index:2;position:relative}._button_yji6d_3:focus-visible{outline:2px solid var(--wzl-focus-ring);outline-offset:1px}._button_yji6d_3:disabled{opacity:.5;cursor:not-allowed}._size_sm_yji6d_110{--btn-height:20px;--btn-padx:8px;--btn-fontsize:13px}._size_md_yji6d_111{--btn-height:24px;--btn-padx:12px;--btn-fontsize:14px}._iconOnly_yji6d_113._size_sm_yji6d_110{--btn-padx:0;width:20px}._iconOnly_yji6d_113._size_md_yji6d_111{--btn-padx:0;width:24px}._variant_primary_yji6d_121{background:linear-gradient(180deg, color-mix(in srgb, var(--wzl-accent) var(--btn-top-alpha), transparent) 0%, color-mix(in srgb, var(--wzl-accent) var(--btn-upper-alpha), transparent) calc(var(--btn-equator) - var(--btn-equator-spread)), color-mix(in srgb, var(--wzl-accent) var(--btn-equator-tint), white) var(--btn-equator), var(--wzl-accent) calc(var(--btn-equator) + var(--btn-equator-spread) * 1.6), color-mix(in srgb, var(--wzl-accent) var(--btn-base-tint), black) 100%);-webkit-backdrop-filter:blur(var(--btn-blur)) saturate(var(--btn-saturate));color:var(--wzl-fg-on-accent);text-shadow:0 1px 0 rgba(0, 0, 0, var(--btn-text-shadow)), var(--btn-text-inset-x) var(--btn-text-inset-y) 0 rgba(0, 0, 0, var(--btn-text-inset)), 0 0 6px rgba(0, 0, 0, calc(var(--btn-text-shadow) * .5));box-shadow:inset 0 1px 0 rgba(255, 255, 255, var(--btn-inset-hi)), inset 0 -1px 2px rgba(0, 0, 0, var(--btn-inset-lo)), 0 0 0 1px rgba(0, 0, 0, var(--btn-rim)), 0 1px 2px rgba(0, 0, 0, var(--btn-drop-near)), 0 3px 6px rgba(0, 0, 0, var(--btn-drop-far))}._variant_primary_yji6d_121:hover:not(:disabled){filter:brightness(1.08)saturate(1.06)}._variant_primary_yji6d_121:active:not(:disabled){background:linear-gradient(180deg, color-mix(in srgb, var(--wzl-accent) 80%, black) 0%, color-mix(in srgb, var(--wzl-accent) 95%, black) 50%, color-mix(in srgb, var(--wzl-accent) 60%, white) 100%);box-shadow:inset 0 2px 4px #00000059, inset 0 -1px 0 #ffffff40, 0 0 0 1px rgba(0, 0, 0, calc(var(--btn-rim) + .06));transform:translateY(.5px)}._variant_primary_yji6d_121:active:before{opacity:.3}._variant_secondary_yji6d_168{background:linear-gradient(180deg, color-mix(in srgb, var(--wzl-fg) 25%, transparent) 0%, color-mix(in srgb, var(--wzl-fg) 10%, transparent) calc(var(--btn-equator) - var(--btn-equator-spread)), color-mix(in srgb, var(--wzl-surface-raised) 90%, white) var(--btn-equator), var(--wzl-surface-raised) calc(var(--btn-equator) + var(--btn-equator-spread) * 1.6), color-mix(in srgb, var(--wzl-surface-sunken) 80%, black) 100%);-webkit-backdrop-filter:blur(var(--btn-blur)) saturate(var(--btn-saturate));color:var(--wzl-fg);text-shadow:0 1px 0 rgba(0, 0, 0, calc(var(--btn-text-shadow) * .7)), var(--btn-text-inset-x) var(--btn-text-inset-y) 0 rgba(0, 0, 0, calc(var(--btn-text-inset) * .7));box-shadow:inset 0 1px 0 rgba(255, 255, 255, calc(var(--btn-inset-hi) * .5)), inset 0 -1px 2px rgba(0, 0, 0, calc(var(--btn-inset-lo) * .83)), 0 0 0 1px rgba(0, 0, 0, calc(var(--btn-rim) + .03)), 0 1px 2px rgba(0, 0, 0, calc(var(--btn-drop-near) * .93)), 0 3px 6px rgba(0, 0, 0, calc(var(--btn-drop-far) * .89))}._variant_secondary_yji6d_168:hover:not(:disabled){filter:brightness(1.1)}._variant_secondary_yji6d_168:active:not(:disabled){background:linear-gradient(180deg, var(--wzl-surface-sunken) 0%, var(--wzl-surface-raised) 100%);transform:translateY(.5px);box-shadow:inset 0 2px 4px #0006,0 0 0 1px #0000004d}._variant_secondary_yji6d_168:active:before{opacity:.2}._variant_ghost_yji6d_203{color:var(--wzl-fg);box-shadow:none;background:0 0}._variant_ghost_yji6d_203:before{display:none}._variant_ghost_yji6d_203:hover:not(:disabled){background:color-mix(in srgb, var(--wzl-fg) 10%, transparent)}._variant_ghost_yji6d_203:active:not(:disabled){background:color-mix(in srgb, var(--wzl-fg) 18%, transparent)}._fullWidth_yji6d_220{width:100%}._loading_yji6d_221 ._label_yji6d_221{opacity:.7}._iconSlot_yji6d_225{flex:none;justify-content:center;align-items:center;display:inline-flex}._size_sm_yji6d_110 ._iconSlot_yji6d_225>svg{width:12px;height:12px}._size_md_yji6d_111 ._iconSlot_yji6d_225>svg{width:14px;height:14px}._label_yji6d_221{display:inline-block}._spinner_yji6d_239{justify-content:center;align-items:center;animation:.7s linear infinite _wzl-btn-spin_yji6d_1;display:inline-flex}@keyframes _wzl-btn-spin_yji6d_1{to{transform:rotate(360deg)}}._anchor_18o4b_1{pointer-events:none;position:fixed}._popover_18o4b_6{z-index:1200;--callout-accent:var(--wzl-accent-strong);background:var(--wzl-surface);border:1px solid var(--callout-accent);border-radius:var(--wzl-radius-md);color:var(--wzl-fg);font-family:var(--wzl-font-ui);max-width:320px;transition:opacity var(--wzl-motion-fast);box-shadow:0 12px 40px #0006}._popover_18o4b_6[data-entering],._popover_18o4b_6[data-exiting]{opacity:0}._toneWarning_18o4b_25{--callout-accent:var(--wzl-warning,#d99a3f)}._toneDanger_18o4b_29{--callout-accent:var(--wzl-danger,#d94a3f)}._arrow_18o4b_33 svg{fill:var(--wzl-surface);stroke:var(--callout-accent);stroke-width:1px;display:block}._arrow_18o4b_33[data-placement=bottom] svg{transform:rotate(180deg)}._arrow_18o4b_33[data-placement=left] svg{transform:rotate(-90deg)}._arrow_18o4b_33[data-placement=right] svg{transform:rotate(90deg)}._dialog_18o4b_52{max-height:inherit;outline:none;flex-direction:column;display:flex}._header_18o4b_59{align-items:center;gap:8px;padding:10px 12px 0;display:flex}._title_18o4b_66{flex:1;margin:0;font-size:13px;font-weight:600}._close_18o4b_73{color:var(--wzl-fg-muted);cursor:pointer;border-radius:var(--wzl-radius-sm);background:0 0;border:none;flex:none;padding:2px 4px;font-size:16px;line-height:1}._close_18o4b_73:hover{color:var(--wzl-fg)}._body_18o4b_89{padding:8px 12px 10px;font-size:13px;line-height:1.4;overflow-y:auto}._footer_18o4b_96{justify-content:flex-end;gap:8px;padding:0 12px 10px;display:flex}._checkbox_18mi9_1{cursor:pointer;font-family:var(--wzl-font-ui);color:var(--wzl-fg);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:13px;display:inline-flex}._checkbox_18mi9_1[data-disabled]{opacity:.5;cursor:not-allowed}._box_18mi9_18{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border-strong);border-radius:var(--wzl-radius-sm);width:14px;height:14px;transition:background-color var(--wzl-motion-fast), border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);flex:none;position:relative}._checkbox_18mi9_1[data-focus-visible] ._box_18mi9_18{box-shadow:0 0 0 2px var(--wzl-focus-ring)}._checkbox_18mi9_1[data-hovered]:not([data-disabled]) ._box_18mi9_18{border-color:var(--wzl-fg-muted)}._checkbox_18mi9_1[data-selected] ._box_18mi9_18,._checkbox_18mi9_1[data-indeterminate] ._box_18mi9_18{background:var(--wzl-accent-strong);border-color:var(--wzl-accent-strong)}._checkbox_18mi9_1[data-invalid] ._box_18mi9_18{border-color:var(--wzl-danger,#ff5b5b)}._checkmark_18mi9_47{color:var(--wzl-fg-on-accent);opacity:0;pointer-events:none;position:absolute;inset:0}._checkbox_18mi9_1[data-selected] ._checkmark_18mi9_47,._checkbox_18mi9_1[data-indeterminate] ._checkmark_18mi9_47{opacity:1}._label_18mi9_60{line-height:1.2}._root_r50jb_1{align-items:center;gap:6px;display:inline-flex}._chip_r50jb_7{border-radius:4px;display:inline-flex;position:relative;overflow:hidden}._color_r50jb_14{border:1px solid var(--wzl-border,#444);cursor:pointer;background:0 0;border-radius:4px;block-size:20px;inline-size:28px;padding:0}._root_r50jb_1[data-mixed] ._chip_r50jb_7:after{content:"";pointer-events:none;background:repeating-conic-gradient(var(--wzl-border,#666) 0% 25%, var(--wzl-surface,#2e2f36) 0% 50%) 50% / 8px 8px;border-radius:3px;position:absolute;inset:1px}._alphaRange_r50jb_39{min-inline-size:48px;accent-color:var(--wzl-accent,#7ab8d4);flex:1}._alphaRange_r50jb_39:disabled{opacity:.45}._alphaReadout_r50jb_49{text-align:end;opacity:.7;min-inline-size:3ch;font-size:11px}._field_aqiak_1{font-family:var(--wzl-font-ui);color:var(--wzl-fg);flex-direction:column;gap:4px;display:flex}._label_aqiak_9{color:var(--wzl-fg);cursor:default;font-size:12px;font-weight:500}._hint_aqiak_16{color:var(--wzl-fg-subtle);font-size:11px;line-height:1.4}._error_aqiak_22{color:var(--wzl-danger,#ff5b5b);font-size:11px;line-height:1.4}._row_aqiak_28{flex-direction:row;align-items:center;gap:8px}._row_aqiak_28 ._label_aqiak_9{flex:1;min-width:0}._field_7wlzm_1{flex-direction:column;gap:4px;width:100%;min-width:0;display:flex}._frame_7wlzm_9{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-sm);height:24px;color:var(--wzl-fg);font-family:var(--wzl-font-ui);transition:border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);align-items:stretch;font-size:13px;line-height:1;display:flex;overflow:hidden}._frame_7wlzm_9:focus-within{border-color:var(--wzl-focus-ring);box-shadow:0 0 0 1px var(--wzl-focus-ring)}._field_7wlzm_1[data-invalid] ._frame_7wlzm_9{border-color:var(--wzl-danger,#ff5b5b)}._field_7wlzm_1[data-disabled] ._frame_7wlzm_9{opacity:.5;cursor:not-allowed}._frame_7wlzm_9 input{min-width:0;color:inherit;font:inherit;background:0 0;border:none;outline:none;flex:1;padding:0 8px}._frame_7wlzm_9 input::placeholder{color:var(--wzl-fg-subtle)}._openButton_7wlzm_53{border:none;border-left:1px solid var(--wzl-border);width:22px;color:var(--wzl-fg-muted);cursor:pointer;background:0 0;justify-content:center;align-items:center;padding:0;display:inline-flex}._openButton_7wlzm_53[data-hovered]:not([data-disabled]){color:var(--wzl-fg)}._openButton_7wlzm_53 svg{width:10px;height:10px}._popover_7wlzm_75{min-width:var(--trigger-width);outline:none}._listbox_7wlzm_80{background:var(--wzl-surface-raised);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-md);max-height:280px;font-family:var(--wzl-font-ui);outline:none;padding:4px;font-size:13px;overflow:auto;box-shadow:0 8px 24px #0000004d}._option_7wlzm_93{cursor:pointer;color:var(--wzl-fg);border-radius:3px;outline:none;align-items:center;padding:4px 8px;display:flex}._option_7wlzm_93[data-focused]{background:color-mix(in srgb, var(--wzl-fg) 10%, transparent)}._option_7wlzm_93[data-selected]{font-weight:500}._option_7wlzm_93[data-disabled]{opacity:.4;cursor:not-allowed}._empty_7wlzm_116{color:var(--wzl-fg-subtle);padding:6px 8px;font-size:12px}._root_1djm7_1{--plot-bg:var(--wzl-surface-sunken);--plot-grid:var(--wzl-line);--plot-axis:var(--wzl-fg);background:var(--plot-bg);-webkit-user-select:none;user-select:none;touch-action:none;outline:none;display:block;overflow:visible}._root_1djm7_1:focus-visible{outline:2px solid var(--wzl-focus-ring);outline-offset:2px}._grid_1djm7_28{stroke:var(--plot-grid);stroke-width:1px;fill:none}._axis_1djm7_34{stroke:var(--plot-axis);stroke-width:var(--wzl-line-width);fill:none}._root_ybpym_1{--curve-line:var(--wzl-curve-color);--curve-line-width:var(--wzl-curve-width);--curve-fill:color-mix(in srgb, var(--curve-line) 30%, transparent);--curve-anchor-fill:var(--wzl-surface);--curve-anchor-stroke:var(--curve-line);--curve-anchor-radius:4;--curve-anchor-active-fill:var(--curve-line);--curve-pinned-fill:var(--wzl-fg-subtle)}._fill_ybpym_19{fill:var(--curve-fill);stroke:none;pointer-events:none}._curve_ybpym_25{stroke:var(--curve-line);stroke-width:var(--curve-line-width);fill:none;pointer-events:stroke}._anchor_ybpym_32{fill:var(--curve-anchor-fill);stroke:var(--curve-anchor-stroke);stroke-width:1.5px;cursor:grab}._anchor_ybpym_32:hover{fill:var(--curve-anchor-active-fill)}._anchor_ybpym_32._active_ybpym_43{fill:var(--curve-anchor-active-fill);cursor:grabbing}._anchor_ybpym_32._pinned_ybpym_48{fill:var(--curve-pinned-fill);cursor:default}._anchor_ybpym_32._locked_ybpym_55{cursor:not-allowed}._hidden_ybpym_71{display:none}._grid_1uuch_1{width:100%;position:relative}._table_1uuch_6{border-collapse:collapse;width:100%;font-size:11px}._table_1uuch_6 th,._table_1uuch_6 td{text-align:left;vertical-align:middle;padding:3px 6px}._table_1uuch_6 tbody tr{border-bottom:1px solid #ffffff0a}._table_1uuch_6 th{color:var(--wzl-fg-muted);background:var(--wzl-surface,#2a2018);z-index:1;border-bottom:1px solid var(--wzl-border);font-weight:600;position:sticky;top:0}._sortButton_1uuch_34{all:unset;cursor:pointer;-webkit-user-select:none;user-select:none;width:100%;display:block}._sortButton_1uuch_34:hover{color:var(--wzl-fg,#e6e7e9)}._sortButton_1uuch_34:focus-visible{outline:2px solid var(--wzl-focus-ring,var(--wzl-accent,#7fb069));outline-offset:-2px}._sortActive_1uuch_46{color:var(--wzl-fg,#e6e7e9)}._empty_1uuch_48{color:var(--wzl-fg-muted);text-align:center;padding:8px 0;font-style:italic}._handleCol_1uuch_56{width:14px}._handleCell_1uuch_57{cursor:grab;width:14px;color:var(--wzl-fg-muted);-webkit-user-select:none;user-select:none;text-align:center}._handleCell_1uuch_57:active{cursor:grabbing}._dragging_1uuch_66{opacity:.4}._dropBefore_1uuch_68>td{box-shadow:inset 0 2px 0 0 var(--wzl-accent,#7fb069)}._dropAfter_1uuch_69>td{box-shadow:inset 0 -2px 0 0 var(--wzl-accent,#7fb069)}._overlay_13xy9_1{z-index:1000;opacity:0;transition:opacity var(--wzl-motion-fast);background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}._overlay_13xy9_1[data-entering]{opacity:0}._overlay_13xy9_1[data-entering][data-rac]{opacity:1}._overlay_13xy9_1[data-exiting]{opacity:0}._overlay_13xy9_1[data-rac]:not([data-entering]):not([data-exiting]){opacity:1}._modal_13xy9_29{background:var(--wzl-surface);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-md);color:var(--wzl-fg);font-family:var(--wzl-font-ui);outline:none;flex-direction:column;max-width:min(900px,100vw - 32px);max-height:calc(100vh - 32px);display:flex;box-shadow:0 24px 64px #00000073}._dialog_13xy9_43{outline:none;flex-direction:column;flex:1;min-height:0;display:flex}._header_13xy9_51{border-bottom:1px solid var(--wzl-border);flex:none;align-items:center;gap:12px;padding:14px 16px;display:flex}._title_13xy9_60{color:var(--wzl-fg);flex:1;margin:0;font-size:14px;font-weight:600}._close_13xy9_68{border-radius:var(--wzl-radius-sm);width:22px;height:22px;color:var(--wzl-fg-muted);cursor:pointer;background:0 0;border:1px solid #0000;flex:none;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;display:inline-flex}._close_13xy9_68:hover{background:color-mix(in srgb, var(--wzl-fg) 10%, transparent);color:var(--wzl-fg)}._body_13xy9_90{flex:1;min-height:0;padding:16px;overflow:auto}._footer_13xy9_97{border-top:1px solid var(--wzl-border);flex:none;justify-content:flex-end;align-items:center;gap:8px;padding:12px 16px;display:flex}._root_q2asl_1{-webkit-user-select:none;user-select:none;touch-action:none;position:relative}._row_q2asl_8{align-items:center;gap:8px;display:flex}._track_q2asl_14{min-width:0;height:var(--rp-track-height,24px);background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border);cursor:crosshair;border-radius:3px;flex:1;position:relative}._trackInner_q2asl_25{border-radius:3px;position:absolute;inset:0;overflow:hidden}._thumb_q2asl_35{background:color-mix(in srgb, var(--wzl-fg-muted) 70%, transparent);border:1px solid var(--wzl-border-strong);cursor:ew-resize;-webkit-backdrop-filter:blur(3px);font-variant-numeric:tabular-nums;width:14px;color:var(--wzl-fg-inverse);text-shadow:0 0 2px #ffffffb3;border-radius:3px;justify-content:center;align-items:center;margin-left:-7px;font:500 .65rem/1 ui-sans-serif,system-ui,sans-serif;display:flex;position:absolute;top:-2px;bottom:-2px;box-shadow:0 1px 2px #0003}._thumb_q2asl_35:focus-visible{outline:2px solid var(--wzl-accent);outline-offset:1px}._thumbActive_q2asl_74{z-index:1}._readoutsBelow_q2asl_79{height:14px;margin-top:4px;position:relative}._readoutBelow_q2asl_85{color:var(--wzl-fg-muted);white-space:nowrap;font:500 .65rem/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;position:absolute;transform:translate(-50%)}._readoutInline_q2asl_93{color:var(--wzl-fg-muted);vertical-align:middle;margin-left:8px;font:500 .7rem/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;display:inline-block}._notched_q2asl_101{background:var(--thumb-svg,none);-webkit-backdrop-filter:none;box-shadow:none;filter:drop-shadow(0 1px 1px #00000040);--thumb-svg:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 30' preserveAspectRatio='none'%3E%3Cpolygon points='0,0 2.52,0 7,10.3 11.48,0 14,0 14,30 0,30' fill='rgba(255,255,255,0.62)' stroke='rgba(0,0,0,0.55)' stroke-width='0.75' stroke-linejoin='miter'/%3E%3C/svg%3E");background-color:#0000;background-repeat:no-repeat;background-size:100% 100%;border:none}._root_1pyfg_6{height:var(--wzl-tb-height,28px);-webkit-user-select:none;user-select:none;touch-action:none;background:linear-gradient(#0000002e 0%,#0000000d 100%);border-radius:999px;padding:2px;display:inline-flex;overflow:hidden;box-shadow:inset 0 1px 2px #0006,0 1px #ffffff0f}._segment_1pyfg_28{min-width:0;font-family:var(--wzl-font-ui);font-weight:300;font-size:var(--btn-fontsize,14px);color:var(--wzl-fg-muted);cursor:pointer;isolation:isolate;transition:color var(--wzl-motion-fast);background:0 0;border:none;border-radius:0;flex:1 1 0;justify-content:center;align-items:center;margin:0;padding:0 12px;line-height:1;display:inline-flex;position:relative;overflow:hidden}._segment_1pyfg_28:first-child{border-radius:999px 0 0 999px}._segment_1pyfg_28:last-child{border-radius:0 999px 999px 0}._segment_1pyfg_28:only-child{border-radius:999px}._segment_1pyfg_28:focus-visible{outline:2px solid var(--wzl-accent);outline-offset:-2px}._segment_1pyfg_28:disabled{opacity:.5;cursor:not-allowed}._segment_1pyfg_28:hover:not(:disabled):not(._segmentSelected_1pyfg_75){color:var(--wzl-fg)}._segmentSelected_1pyfg_75{background:linear-gradient(180deg, color-mix(in srgb, var(--wzl-accent) var(--btn-top-alpha,45%), transparent) 0%, color-mix(in srgb, var(--wzl-accent) var(--btn-upper-alpha,70%), transparent) calc(var(--btn-equator,52%) - var(--btn-equator-spread,12%)), color-mix(in srgb, var(--wzl-accent) var(--btn-equator-tint,95%), white) var(--btn-equator,52%), var(--wzl-accent) calc(var(--btn-equator,52%) + var(--btn-equator-spread,12%) * 1.6), color-mix(in srgb, var(--wzl-accent) var(--btn-base-tint,70%), black) 100%);-webkit-backdrop-filter:blur(var(--btn-blur,6px)) saturate(var(--btn-saturate,1.3));color:var(--wzl-fg-on-accent);text-shadow:0 1px 0 rgba(0, 0, 0, var(--btn-text-shadow,.35)), var(--btn-text-inset-x,0px) var(--btn-text-inset-y,1px) 0 rgba(0, 0, 0, var(--btn-text-inset,.55)), 0 0 6px rgba(0, 0, 0, calc(var(--btn-text-shadow,.35) * .5));box-shadow:inset 0 1px 0 rgba(255, 255, 255, var(--btn-inset-hi,.42)), inset 0 -1px 2px rgba(0, 0, 0, var(--btn-inset-lo,.3)), 0 0 0 1px rgba(0, 0, 0, var(--btn-rim,.22)), 0 1px 2px rgba(0, 0, 0, var(--btn-drop-near,.3)), 0 2px 4px rgba(0, 0, 0, calc(var(--btn-drop-far,.18) * .8))}._segmentSelected_1pyfg_75:before{content:"";inset:1px 1px var(--btn-gloss-bottom,50%) 1px;border-radius:inherit;background:linear-gradient(180deg, rgba(255, 255, 255, var(--btn-gloss-top,.42)) 0%, rgba(255, 255, 255, var(--btn-gloss-mid,.12)) 60%, #fff0 100%);pointer-events:none;z-index:1;border-bottom-right-radius:0;border-bottom-left-radius:0;position:absolute}._segmentSelected_1pyfg_75>*{z-index:2;position:relative}._segmentMixed_1pyfg_134{background:color-mix(in srgb, var(--wzl-accent) 22%, transparent);color:var(--wzl-fg);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--wzl-accent) 45%, transparent)}._segmentMixed_1pyfg_134:hover:not(:disabled){background:color-mix(in srgb, var(--wzl-accent) 32%, transparent)}._variant_minimal_1pyfg_144 ._segmentMixed_1pyfg_134{background:color-mix(in srgb, var(--wzl-accent) 18%, transparent);box-shadow:none;color:var(--wzl-fg)}._size_sm_1pyfg_153{height:17px;padding:1px}._size_sm_1pyfg_153 ._segment_1pyfg_28{padding:0 8px;font-size:11px}._variant_minimal_1pyfg_144{border:1px solid var(--wzl-border,#ffffff2e);height:auto;box-shadow:none;background:0 0;border-radius:3px;gap:0;padding:0}._variant_minimal_1pyfg_144 ._segment_1pyfg_28{color:var(--wzl-fg-muted);border-radius:0;padding:0 6px;font-size:11px;font-weight:400;line-height:1.4;transition:none}._variant_minimal_1pyfg_144 ._segment_1pyfg_28+._segment_1pyfg_28{border-left:1px solid var(--wzl-border,#ffffff2e)}._variant_minimal_1pyfg_144 ._segment_1pyfg_28:first-child,._variant_minimal_1pyfg_144 ._segment_1pyfg_28:last-child,._variant_minimal_1pyfg_144 ._segment_1pyfg_28:only-child{border-radius:0}._variant_minimal_1pyfg_144 ._segment_1pyfg_28:hover:not(:disabled):not(._segmentSelected_1pyfg_75){color:var(--wzl-fg);background:#ffffff0f}._variant_minimal_1pyfg_144 ._segmentSelected_1pyfg_75{-webkit-backdrop-filter:none;color:var(--wzl-accent-fg,var(--wzl-accent));text-shadow:none;box-shadow:none;background:0 0;font-weight:500}._variant_minimal_1pyfg_144 ._segmentSelected_1pyfg_75:before{content:none}._root_15yko_1{flex-direction:column;gap:8px;min-inline-size:0;display:flex}._swatches_15yko_8{flex-wrap:wrap;gap:6px;display:flex}._swatch_15yko_8{flex:0 auto;min-inline-size:0}._overlay_6yu3h_3{pointer-events:none;position:absolute;inset:0}._guide_6yu3h_13{fill:none;stroke:#fff;stroke-opacity:.7;stroke-dasharray:4 4;paint-order:stroke}._handle_6yu3h_21{fill:#fff;stroke:#222;stroke-width:2px;cursor:grab;pointer-events:auto}._handle_6yu3h_21:active{cursor:grabbing}._handle_6yu3h_21:focus-visible{outline:2px solid var(--wzl-accent,#4a9eff);outline-offset:2px}._field_cahom_1{flex-direction:column;gap:4px;width:100%;min-width:0;display:flex}._frame_cahom_9{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-sm);height:24px;color:var(--wzl-fg);font-family:var(--wzl-font-ui);transition:border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);align-items:center;gap:6px;padding:0 8px;font-size:13px;line-height:1;display:flex}._frame_cahom_9:focus-within{border-color:var(--wzl-focus-ring);box-shadow:0 0 0 1px var(--wzl-focus-ring)}._field_cahom_1[data-invalid] ._frame_cahom_9{border-color:var(--wzl-danger,#ff5b5b)}._field_cahom_1[data-disabled] ._frame_cahom_9{opacity:.5;cursor:not-allowed}._frame_cahom_9 input{min-width:0;color:inherit;font:inherit;background:0 0;border:none;outline:none;flex:1;padding:0}._frame_cahom_9 input::placeholder{color:var(--wzl-fg-subtle)}._adornment_cahom_54{color:var(--wzl-fg-subtle);pointer-events:none;align-items:center;font-size:12px;display:inline-flex}._keys_n4bkk_2{vertical-align:bottom;flex-wrap:wrap;align-items:flex-end;gap:3px;display:inline-flex}._keysEmpty_n4bkk_16{color:var(--wzl-fg-muted)}._sep_n4bkk_20{color:var(--wzl-fg-muted);font-size:11px;line-height:1}._key_n4bkk_2{box-sizing:border-box;background:var(--wzl-fg,#e6e7e9);height:18px;color:var(--wzl-surface);border:1px solid #25272c;border-bottom-width:2px;border-radius:3px;justify-content:center;align-items:center;padding:0 4px;font-family:ui-sans-serif,system-ui,sans-serif;font-size:11px;font-weight:700;line-height:1;display:inline-flex}._key_n4bkk_2[data-kind=square]{width:18px;padding:0}._key_n4bkk_2[data-kind=modifier]{min-width:26px;padding:0 6px}._key_n4bkk_2[data-kind=wide]{min-width:32px;padding:0 8px}._key_n4bkk_2[data-inverted]{background:var(--wzl-surface);color:color-mix(in srgb, var(--wzl-fg,#e6e7e9) 60%, transparent);border-style:dotted;border-color:color-mix(in srgb, var(--wzl-fg,#e6e7e9) 40%, transparent);border-width:1.5px}._key_n4bkk_2[data-variant=minimal]{color:currentColor;background:0 0;border-color:currentColor}._key_n4bkk_2[data-variant=minimal][data-inverted]{color:currentColor;border:1.5px dotted}._field_e75yx_1{flex-direction:column;gap:4px;width:100%;min-width:0;display:flex}._frame_e75yx_9{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-sm);height:24px;color:var(--wzl-fg);font-family:var(--wzl-font-ui);transition:border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);align-items:stretch;font-size:13px;line-height:1;display:flex;overflow:hidden}._frame_e75yx_9:focus-within{border-color:var(--wzl-focus-ring);box-shadow:0 0 0 1px var(--wzl-focus-ring)}._field_e75yx_1[data-invalid] ._frame_e75yx_9{border-color:var(--wzl-danger,#ff5b5b)}._field_e75yx_1[data-disabled] ._frame_e75yx_9{opacity:.5;cursor:not-allowed}._frame_e75yx_9 input{min-width:0;color:inherit;font:inherit;text-align:right;-moz-appearance:textfield;background:0 0;border:none;outline:none;flex:1;padding:0 8px}._frame_e75yx_9 input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}._frame_e75yx_9 input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}._steppers_e75yx_57{border-left:1px solid var(--wzl-border);flex-direction:column;display:flex}._stepper_e75yx_57{width:18px;color:var(--wzl-fg-muted);cursor:pointer;background:0 0;border:none;flex:1;justify-content:center;align-items:center;padding:0;font-size:9px;line-height:1;display:inline-flex}._stepper_e75yx_57:not(:last-child){border-bottom:1px solid var(--wzl-border)}._stepper_e75yx_57[data-hovered]:not([data-disabled]){background:color-mix(in srgb, var(--wzl-fg) 10%, transparent);color:var(--wzl-fg)}._stepper_e75yx_57[data-pressed]:not([data-disabled]){background:color-mix(in srgb, var(--wzl-fg) 18%, transparent)}._stepper_e75yx_57[data-disabled]{opacity:.4;cursor:not-allowed}._row_q3wun_1{align-items:stretch;gap:var(--powerline-gap,.2em);display:inline-flex}._matrix_q3wun_7{gap:12px;display:grid}._segment_q3wun_15{font-size:inherit;text-transform:none;letter-spacing:normal}._group_kaubu_1{font-family:var(--wzl-font-ui);color:var(--wzl-fg);flex-direction:column;gap:6px;display:flex}._group_kaubu_1[data-orientation=horizontal]{flex-direction:row;gap:16px}._legend_kaubu_14{color:var(--wzl-fg);font-size:12px;font-weight:500}._radio_kaubu_20{cursor:pointer;color:var(--wzl-fg);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:13px;display:inline-flex}._radio_kaubu_20[data-disabled]{opacity:.5;cursor:not-allowed}._dot_kaubu_36{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border-strong);width:14px;height:14px;transition:border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);border-radius:50%;flex:none;position:relative}._radio_kaubu_20[data-focus-visible] ._dot_kaubu_36{box-shadow:0 0 0 2px var(--wzl-focus-ring)}._radio_kaubu_20[data-hovered]:not([data-disabled]) ._dot_kaubu_36{border-color:var(--wzl-fg-muted)}._radio_kaubu_20[data-selected] ._dot_kaubu_36{border-color:var(--wzl-accent-strong)}._dot_kaubu_36:after{content:"";background:var(--wzl-accent-strong);transition:transform var(--wzl-motion-fast);border-radius:50%;position:absolute;inset:3px;transform:scale(0)}._radio_kaubu_20[data-selected] ._dot_kaubu_36:after{transform:scale(1)}._slider_1644w_1{width:100%;font-family:var(--wzl-font-ui);color:var(--wzl-fg);flex-direction:column;gap:4px;display:flex}._slider_1644w_1[data-orientation=vertical]{flex-direction:row;align-items:stretch;width:28px;height:160px}._head_1644w_17{justify-content:space-between;align-items:baseline;gap:8px;display:flex}._label_1644w_24{color:var(--wzl-fg);font-size:12px;font-weight:500}._output_1644w_30{color:var(--wzl-fg-subtle);font-variant-numeric:tabular-nums;font-size:12px}._track_1644w_36{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border);border-radius:3px;min-width:80px;height:6px;position:relative}._slider_1644w_1[data-orientation=vertical] ._track_1644w_36{width:6px;height:100%}._fill_1644w_50{background:var(--wzl-accent-strong);border-radius:3px;position:absolute;top:0;bottom:0;left:0}._thumb_1644w_59{background:var(--wzl-fg-muted);border:1px solid var(--wzl-border-strong);cursor:ew-resize;width:14px;height:14px;transition:box-shadow var(--wzl-motion-fast);border-radius:50%;outline:none}._slider_1644w_1[data-orientation=vertical] ._thumb_1644w_59{cursor:ns-resize}._thumb_1644w_59[data-focus-visible]{box-shadow:0 0 0 2px var(--wzl-focus-ring)}._thumb_1644w_59[data-dragging]{background:var(--wzl-accent-strong)}._slider_1644w_1[data-disabled]{opacity:.5;cursor:not-allowed}._field_nq1le_1{flex-direction:column;gap:4px;width:100%;min-width:0;display:flex}._trigger_nq1le_9{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-sm);width:100%;height:24px;color:var(--wzl-fg);font-family:var(--wzl-font-ui);cursor:pointer;transition:border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);align-items:center;gap:6px;padding:0 6px 0 10px;font-size:13px;line-height:1;display:flex}._trigger_nq1le_9[data-focus-visible]{border-color:var(--wzl-focus-ring);box-shadow:0 0 0 1px var(--wzl-focus-ring)}._field_nq1le_1[data-invalid] ._trigger_nq1le_9{border-color:var(--wzl-danger,#ff5b5b)}._trigger_nq1le_9[data-disabled]{opacity:.5;cursor:not-allowed}._value_nq1le_41{text-align:left;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}._value_nq1le_41[data-placeholder]{color:var(--wzl-fg-subtle)}._chevron_nq1le_54{width:10px;height:10px;color:var(--wzl-fg-muted);flex:none}._popover_nq1le_61{min-width:var(--trigger-width);max-height:inherit;outline:none}._listbox_nq1le_67{background:var(--wzl-surface-raised);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-md);max-height:280px;font-family:var(--wzl-font-ui);outline:none;padding:4px;font-size:13px;overflow:auto;box-shadow:0 8px 24px #0000004d}._option_nq1le_80{cursor:pointer;color:var(--wzl-fg);border-radius:3px;outline:none;align-items:center;gap:8px;padding:4px 8px;display:flex}._option_nq1le_80[data-focused]{background:color-mix(in srgb, var(--wzl-fg) 10%, transparent)}._option_nq1le_80[data-selected]{color:var(--wzl-fg);font-weight:500}._option_nq1le_80[data-disabled]{opacity:.4;cursor:not-allowed}._check_nq1le_105{opacity:0;flex:none;width:10px;height:10px}._option_nq1le_80[data-selected] ._check_nq1le_105{opacity:1}._switch_qsj3o_1{cursor:pointer;font-family:var(--wzl-font-ui);color:var(--wzl-fg);-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:13px;display:inline-flex}._switch_qsj3o_1[data-disabled]{opacity:.5;cursor:not-allowed}._track_qsj3o_18{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border-strong);width:28px;height:16px;transition:background-color var(--wzl-motion-fast), border-color var(--wzl-motion-fast), box-shadow var(--wzl-motion-fast);border-radius:8px;flex:none;position:relative}._switch_qsj3o_1[data-focus-visible] ._track_qsj3o_18{box-shadow:0 0 0 2px var(--wzl-focus-ring)}._switch_qsj3o_1[data-selected] ._track_qsj3o_18{background:var(--wzl-accent-strong);border-color:var(--wzl-accent-strong)}._thumb_qsj3o_38{background:var(--wzl-fg);width:12px;height:12px;transition:transform var(--wzl-motion-fast);border-radius:50%;position:absolute;top:1px;left:1px}._switch_qsj3o_1[data-selected] ._thumb_qsj3o_38{background:var(--wzl-fg-on-accent);transform:translate(12px)}._label_qsj3o_54{line-height:1.2}._columns_y5ks5_5{flex-flow:wrap;align-items:flex-start;gap:12px;padding-right:4px;display:flex;overflow-y:auto}._column_y5ks5_5{flex:0 0 var(--wzl-prefs-column-width,300px);width:var(--wzl-prefs-column-width,300px);flex-direction:column;gap:8px;display:flex}._panel_y5ks5_23{background:var(--wzl-surface-sunken);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-sm);flex-direction:column;gap:8px;padding:10px;display:flex}._subpanel_y5ks5_33{background:var(--wzl-surface-sunken);border-left:2px solid var(--wzl-border);border-radius:2px;flex-direction:column;gap:6px;margin-top:6px;padding:8px 8px 8px 10px;display:flex}._groupHeader_y5ks5_44{border-bottom:1px solid var(--wzl-border);flex-direction:column;gap:2px;padding-bottom:4px;display:flex}._subpanel_y5ks5_33 ._groupHeader_y5ks5_44{border-bottom:none;padding-bottom:2px}._groupTitle_y5ks5_57{color:var(--wzl-fg);letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:12px;font-weight:600}._subpanel_y5ks5_33 ._groupTitle_y5ks5_57{text-transform:none;letter-spacing:0;font-size:11px}._groupDesc_y5ks5_72{color:var(--wzl-fg-subtle);margin:0;font-size:11px;line-height:1.35}._rows_y5ks5_79{flex-direction:column;gap:6px;display:flex}._row_y5ks5_79{color:var(--wzl-fg);cursor:default;justify-content:space-between;align-items:center;gap:8px;font-size:12px;display:flex}._rowLabel_y5ks5_95{flex:auto;align-items:center;gap:4px;min-width:0;display:inline-flex}._help_y5ks5_104{color:var(--wzl-fg-subtle);cursor:help;border-radius:var(--wzl-radius-sm);background:0 0;border:none;flex:none;padding:0;font-size:11px;line-height:1}._help_y5ks5_104:hover{color:var(--wzl-fg)}._help_y5ks5_104:focus-visible{outline:2px solid var(--wzl-focus-ring);outline-offset:1px;color:var(--wzl-fg)}._rowControl_y5ks5_128{flex:0 0 110px;align-items:center;min-width:0;display:flex}._textarea_y5ks5_135{background:var(--wzl-surface-sunken);width:100%;color:var(--wzl-fg);border:1px solid var(--wzl-border);border-radius:var(--wzl-radius-sm);font:inherit;resize:vertical;padding:4px 8px;font-size:12px}._unrenderable_y5ks5_147{font-family:var(--wzl-font-mono);color:var(--wzl-fg-subtle);font-size:11px}._titleRow_y5ks5_154{flex:1;align-items:center;gap:12px;min-width:0;display:flex}._titleRow_y5ks5_154>span:first-child{flex:1;min-width:0}._handle_c4v7n_1{cursor:ew-resize;border-left:1px solid var(--wzl-border);touch-action:none;background:0 0;flex-shrink:0;align-self:stretch;width:4px}._handle_c4v7n_1._horizontal_c4v7n_14{cursor:ns-resize;border-left:none;border-top:1px solid var(--wzl-border);align-self:auto;width:auto;height:4px}._handle_c4v7n_1:hover{background:var(--wzl-border)}._handle_c4v7n_1:focus-visible{outline:2px solid var(--wzl-focus-ring,var(--wzl-accent));outline-offset:-1px}._root_zqa5p_1{color:var(--wzl-fg);flex-direction:column;font-size:12px;display:flex}._header_zqa5p_8{border-block-end:1px solid var(--wzl-border);align-items:baseline;gap:8px;padding:8px 10px;display:flex}._kind_zqa5p_16{font-size:13px;font-weight:600}._breakdown_zqa5p_21{opacity:.6;font-size:11px}._section_zqa5p_26{border-block-end:1px solid var(--wzl-border);padding:6px 10px 8px}._section_zqa5p_26:last-child{border-block-end:none}._sectionTitle_zqa5p_35{text-transform:uppercase;letter-spacing:.06em;opacity:.55;margin:0 0 6px;font-size:10px;font-weight:600}._row_zqa5p_44{grid-template-columns:64px 1fr;align-items:center;gap:6px;margin-block-end:5px;display:grid}._rowLabel_zqa5p_52{opacity:.75}._rowControls_zqa5p_56{align-items:center;gap:6px;min-inline-size:0;display:flex}._rowControls_zqa5p_56>*{flex:1;min-inline-size:0}._number_zqa5p_68 input,._select_zqa5p_69{font-size:11px}._unitSuffix_zqa5p_73{opacity:.6;flex:none;font-size:11px}._mixedSwitch_zqa5p_79{opacity:.55}._unrenderable_zqa5p_83{opacity:.5;font-size:11px;font-style:italic}._sidebar_toyo8_1{background:var(--wzl-surface);color:var(--wzl-fg);flex-direction:column;gap:4px;display:flex}._sidebar_toyo8_1._left_toyo8_9{border-right:1px solid var(--wzl-border)}._sidebar_toyo8_1._right_toyo8_12{border-left:1px solid var(--wzl-border)}._panel_1u064_1{background:var(--wzl-surface);color:var(--wzl-fg);padding:8px}._title_1u064_7{text-transform:uppercase;letter-spacing:.05em;color:var(--wzl-fg-muted);font-size:11px;font-weight:600}._titleRow_1u064_15{justify-content:space-between;align-items:center;margin-bottom:4px;padding:0;display:flex}._titleButton_1u064_23{cursor:pointer;color:inherit;font:inherit;text-align:left;background:0 0;border:0;flex:auto;align-items:center;gap:4px;padding:4px 8px;display:inline-flex}._titleButton_1u064_23:hover{color:var(--wzl-fg)}._chevron_1u064_40{color:var(--wzl-fg-muted);transition:transform var(--wzl-motion-fast) ease;font-size:10px;line-height:1;display:inline-block}._chevronCollapsed_1u064_47{transform:rotate(-90deg)}._hideButton_1u064_51{color:var(--wzl-fg-muted);cursor:pointer;background:0 0;border:0;padding:0 6px;font-size:14px;line-height:1}._hideButton_1u064_51:hover{color:var(--wzl-fg)}._panel_1u064_1._collapsed_1u064_64{padding-bottom:4px}._body_1u064_68{padding:0 4px}._bar_38xae_1{font-family:var(--wzl-font-mono,ui-monospace, SFMono-Regular, Menlo, monospace);color:var(--wzl-fg-muted);background:var(--wzl-surface);border-top:1px solid var(--wzl-border);flex-shrink:0;align-items:center;gap:16px;padding:4px 12px;font-size:11px;display:flex}._item_38xae_14{white-space:nowrap}._muted_38xae_18{opacity:.6;font-variant-numeric:tabular-nums}._hasTitle_38xae_23{cursor:help}._spacer_38xae_27{margin-left:auto}._tabs_ce73l_1{font-family:var(--wzl-font-ui);color:var(--wzl-fg);flex-direction:column;gap:0;display:flex}._tabs_ce73l_1[data-orientation=horizontal]{flex-direction:column}._tabs_ce73l_1[data-orientation=vertical]{flex-direction:row;gap:12px}._list_ce73l_18{border-bottom:1px solid var(--wzl-border);gap:2px;display:flex}._tabs_ce73l_1[data-orientation=vertical] ._list_ce73l_18{border-bottom:none;border-right:1px solid var(--wzl-border);flex-direction:column;padding-right:8px}._tab_ce73l_1{color:var(--wzl-fg-muted);font:inherit;cursor:pointer;transition:color var(--wzl-motion-fast);background:0 0;border:none;outline:none;padding:6px 10px;font-size:12px;position:relative}._tab_ce73l_1[data-hovered]:not([data-disabled]),._tab_ce73l_1[data-selected]{color:var(--wzl-fg)}._tab_ce73l_1[data-selected]:after{content:"";background:var(--wzl-accent-strong);height:2px;position:absolute;bottom:-1px;left:0;right:0}._tabs_ce73l_1[data-orientation=vertical] ._tab_ce73l_1[data-selected]:after{width:2px;height:auto;inset:0 -9px 0 auto}._tab_ce73l_1[data-focus-visible]{box-shadow:inset 0 0 0 2px var(--wzl-focus-ring);border-radius:var(--wzl-radius-sm)}._tab_ce73l_1[data-disabled]{opacity:.5;cursor:not-allowed}._panel_ce73l_81{outline:none;padding:12px 0}._panel_ce73l_81[data-focus-visible]{box-shadow:inset 0 0 0 2px var(--wzl-focus-ring);border-radius:var(--wzl-radius-sm)}._region_18i9b_1{z-index:1100;outline:none;flex-direction:column-reverse;gap:8px;max-width:360px;display:flex;position:fixed}._bottomRight_18i9b_17{bottom:16px;right:16px}._bottomLeft_18i9b_18{bottom:16px;left:16px}._topRight_18i9b_19{flex-direction:column;top:16px;right:16px}._topLeft_18i9b_20{flex-direction:column;top:16px;left:16px}._toast_18i9b_22{--toast-accent:var(--wzl-accent-strong);view-transition-class:wzl-toast;background:var(--wzl-surface);border:1px solid var(--wzl-border);border-left:3px solid var(--toast-accent);border-radius:var(--wzl-radius-md);color:var(--wzl-fg);font-family:var(--wzl-font-ui);outline:none;align-items:flex-start;gap:8px;padding:10px 12px;display:flex;box-shadow:0 8px 24px #00000059}._region_18i9b_1[data-focus-visible],._toast_18i9b_22[data-focus-visible]{outline:2px solid var(--wzl-focus-ring);outline-offset:1px}._toneSuccess_18i9b_49{--toast-accent:var(--wzl-success,#2ec27e)}._toneWarning_18i9b_50{--toast-accent:var(--wzl-warning,#d99a3f)}._toneError_18i9b_51{--toast-accent:var(--wzl-danger,#d94a3f)}._content_18i9b_53{flex:1;min-width:0}._title_18i9b_58{font-size:13px;font-weight:600;display:block}._description_18i9b_64{color:var(--wzl-fg-muted);margin-top:2px;font-size:12px;display:block}._close_18i9b_71{color:var(--wzl-fg-muted);cursor:pointer;border-radius:var(--wzl-radius-sm);background:0 0;border:none;flex:none;padding:2px 4px;font-size:16px;line-height:1}._close_18i9b_71:hover{color:var(--wzl-fg)}:root.wzl-toast-vt{view-transition-name:none}:root.wzl-toast-vt::view-transition{pointer-events:none}:root.wzl-toast-vt::view-transition-new(.wzl-toast):only-child{animation:wzl-toast-enter var(--wzl-motion-medium,.24s) var(--wzl-ease-out-cubic,ease-out) both}:root.wzl-toast-vt::view-transition-old(.wzl-toast):only-child{animation:wzl-toast-exit var(--wzl-motion-fast,.12s) var(--wzl-ease-in-cubic,ease-in) both}@keyframes wzl-toast-enter{0%{opacity:0;translate:0 16px}}@keyframes wzl-toast-exit{to{opacity:0;scale:.92}}._button_1jvxe_1{min-width:44px;color:var(--wzl-fg);cursor:default;background:0 0;border:1px solid #0000;border-radius:3px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:6px 4px;font-family:inherit;font-size:10px;line-height:1.1;display:inline-flex}._button_1jvxe_1:hover:not([disabled]){background:var(--wzl-surface-hover);color:var(--wzl-fg)}._button_1jvxe_1:focus-visible{outline:2px solid var(--wzl-accent);outline-offset:-2px}._button_1jvxe_1._active_1jvxe_26{background:var(--wzl-surface-pressed);border-color:var(--wzl-accent);color:var(--wzl-fg)}._button_1jvxe_1[disabled]{opacity:.4}._icon_1jvxe_35,._icon_1jvxe_35>svg{display:block}._label_1jvxe_37{font-size:10px}._shortcut_1jvxe_38{color:var(--wzl-fg-muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px}._group_o2pho_1{flex-direction:column;gap:2px;display:flex}._group_o2pho_1._horizontal_o2pho_6{flex-direction:row}._root_ps46a_13{height:var(--wzl-tb-height,28px);background:var(--wzl-surface);border-bottom:1px solid var(--wzl-border);color:var(--wzl-fg);align-items:center;gap:8px;padding:0 8px;display:flex;overflow:hidden}._label_ps46a_25{text-transform:uppercase;letter-spacing:.05em;color:var(--wzl-fg-muted);white-space:nowrap;flex:none;font-size:11px;font-weight:600}._controls_ps46a_6{scrollbar-width:thin;flex:auto;align-items:center;gap:6px;min-width:0;height:100%;display:flex;overflow:auto hidden}._controls_ps46a_6::-webkit-scrollbar{height:4px}._controls_ps46a_6::-webkit-scrollbar-track{background:0 0}._controls_ps46a_6::-webkit-scrollbar-thumb{background:var(--wzl-border);border-radius:2px}._palette_1mz1c_1{background:var(--wzl-surface);border:1px solid var(--wzl-border);-webkit-user-select:none;user-select:none;border-radius:4px;flex-direction:column;gap:4px;padding:4px;display:flex}._palette_1mz1c_1._horizontal_1mz1c_11{flex-direction:row}._ineligibleBtn_1mz1c_20{opacity:.35;cursor:not-allowed}._separator_1mz1c_25{background:var(--wzl-border)}._palette_1mz1c_1:not(._horizontal_1mz1c_11) ._separator_1mz1c_25{height:1px;margin:2px 0}._palette_1mz1c_1._horizontal_1mz1c_11 ._separator_1mz1c_25{width:1px;margin:0 2px}
147
147
  /*$vite$:1*/
148
+ /*
149
+ * @windease/react baseline stylesheet.
150
+ *
151
+ * Ships the structural rules the library's React components depend on:
152
+ * - .windease-zone is positioned and fills its parent so absolute children
153
+ * render relative to it and clip on overflow. Add
154
+ * .windease-zone--unclipped to keep the positioning and drop the clipping.
155
+ * - .windease-window reads the --w-x/y/w/h custom properties the library
156
+ * writes per-instance, and exposes itself as a named CSS size container
157
+ * so widgets can adapt with @container queries.
158
+ * - .windease-insertion-line gets a subtle default appearance.
159
+ * - .windease-measure wraps a content-sized pane's children so `hints.sizing`
160
+ * measures the content rather than the extent the layout just wrote.
161
+ * - .windease-focus-root exists only to catch bubbled focusin/keydown, so
162
+ * it must not take a layout box — a plain block div here breaks any
163
+ * height: 100% chain the consumer's own layout depends on.
164
+ *
165
+ * Cosmetics (colors, borders, transitions, drop-state styling) are left to
166
+ * consumers — style off [data-drop-target], [data-drop-rejected], etc.
167
+ *
168
+ * Import: import '@windease/react/styles.css';
169
+ */
170
+
171
+ .windease-zone {
172
+ position: relative;
173
+ overflow: hidden;
174
+ width: 100%;
175
+ height: 100%;
176
+ box-sizing: border-box;
177
+ }
178
+
179
+ /*
180
+ * Opt out of clipping without opting out of the stylesheet. A host that draws
181
+ * its own surface across the zone — one canvas behind every panel — is clipped
182
+ * by the base rule, and dropping the class to escape it forfeits the
183
+ * positioning the absolute children depend on and the container queries too.
184
+ * Two classes rather than !important.
185
+ */
186
+ .windease-zone.windease-zone--unclipped {
187
+ overflow: visible;
188
+ }
189
+
190
+ .windease-window {
191
+ position: absolute;
192
+ left: var(--w-x);
193
+ top: var(--w-y);
194
+ width: var(--w-w);
195
+ height: var(--w-h);
196
+ box-sizing: border-box;
197
+ container-type: size;
198
+ container-name: windease-window;
199
+ }
200
+
201
+ .windease-insertion-line {
202
+ background: currentColor;
203
+ }
204
+
205
+ .windease-insertion-outline {
206
+ border: 2px dashed currentColor;
207
+ box-sizing: border-box;
208
+ border-radius: 4px;
209
+ }
210
+
211
+ /*
212
+ * Preset chrome components (<Panel>, <Group>) — visual defaults consumers can
213
+ * override with className/style or by writing their own chrome handler.
214
+ */
215
+
216
+ .windease-panel,
217
+ .windease-group {
218
+ box-sizing: border-box;
219
+ width: 100%;
220
+ height: 100%;
221
+ display: flex;
222
+ flex-direction: column;
223
+ background: #fff;
224
+ border: 1px solid #d4d4dc;
225
+ border-radius: 6px;
226
+ font:
227
+ 13px / 1.4 system-ui,
228
+ sans-serif;
229
+ color: #111827;
230
+ overflow: hidden;
231
+ }
232
+
233
+ .windease-panel__title,
234
+ .windease-group__title {
235
+ flex: 0 0 auto;
236
+ padding: 6px 10px;
237
+ font-weight: 600;
238
+ font-size: 12px;
239
+ letter-spacing: 0.02em;
240
+ background: #f8fafc;
241
+ border-bottom: 1px solid #e2e8f0;
242
+ }
243
+
244
+ .windease-focus-root {
245
+ display: contents;
246
+ }
247
+
248
+ /*
249
+ * Measurement box for `hints.sizing`. The pane wrapper carries the extent the
250
+ * layout just wrote, so it cannot be what we measure; this inner div sizes to
251
+ * its content on whichever axis asked to be measured. Width stays 100% by
252
+ * default so text wraps at the real pane width — a `max-content` width there
253
+ * would report the unwrapped line length.
254
+ */
255
+ .windease-measure {
256
+ inline-size: 100%;
257
+ block-size: auto;
258
+ }
259
+
260
+ .windease-measure.windease-measure--w {
261
+ inline-size: max-content;
262
+ }
263
+
264
+ /*
265
+ * Announcements for changes that move no focus. Visually hidden rather than
266
+ * display:none or visibility:hidden, both of which take the region out of the
267
+ * accessibility tree and silence it.
268
+ */
269
+ .windease-live-region {
270
+ position: absolute;
271
+ width: 1px;
272
+ height: 1px;
273
+ margin: -1px;
274
+ padding: 0;
275
+ border: 0;
276
+ overflow: hidden;
277
+ clip-path: inset(50%);
278
+ white-space: nowrap;
279
+ }
280
+
148
281
  @font-face {
149
282
  font-family: 'Oswald';
150
283
  font-style: normal;
@@ -224,13 +357,37 @@
224
357
  line-height: 1.2;
225
358
  }
226
359
  .lk-workspace-grid {
227
- display: grid;
228
- grid-template-columns: repeat(var(--lk-grid-cols, 1), 1fr);
229
- grid-template-rows: repeat(var(--lk-grid-rows, 1), 1fr);
230
- gap: var(--wzl-space-md);
231
- width: 100%;
360
+ min-height: 0;
361
+ }
362
+ .lk-workspace-tile {
363
+ display: flex;
364
+ flex-direction: column;
232
365
  height: 100%;
233
366
  }
367
+ .lk-workspace-tile__grip {
368
+ flex: 0 0 auto;
369
+ display: flex;
370
+ align-items: center;
371
+ justify-content: center;
372
+ height: 14px;
373
+ cursor: grab;
374
+ border-radius: var(--wzl-radius-sm) var(--wzl-radius-sm) 0 0;
375
+ background: var(--wzl-surface-sunken);
376
+ }
377
+ .lk-workspace-tile__grip:active {
378
+ cursor: grabbing;
379
+ }
380
+ .lk-workspace-tile__grip-dots {
381
+ width: 28px;
382
+ height: 3px;
383
+ border-radius: 999px;
384
+ background: var(--wzl-fg-muted);
385
+ opacity: 0.5;
386
+ }
387
+ .lk-workspace-tile__body {
388
+ flex: 1;
389
+ min-height: 0;
390
+ }
234
391
  .lk-shell {
235
392
  display: flex;
236
393
  flex-direction: column;
@@ -1,6 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { ReactNode } from 'react';
3
3
 
4
+ /** One card in a layer stack: its identity, the label shown when collapsed,
5
+ * and the optional select hoisted into its header. */
4
6
  interface LayerStackItem {
5
7
  /** Stable id used for keys, onRemove, onReorder. Numeric to match
6
8
  * common id-from-nextId conventions; string ids also work. */
@@ -21,6 +23,7 @@ interface LayerStackItem {
21
23
  /** Initial expanded state. Defaults to true for newly-added items. */
22
24
  defaultExpanded?: boolean;
23
25
  }
26
+ /** Props for `<LayerStack>`. */
24
27
  interface LayerStackProps {
25
28
  title: string;
26
29
  items: LayerStackItem[];
@@ -36,6 +39,8 @@ interface LayerStackProps {
36
39
  * own head — see speech-balloons Tails panel). */
37
40
  hideHead?: boolean;
38
41
  }
42
+ /** A drag-reorderable stack of expandable cards, with a palette in the header
43
+ * for adding more. The body of each card is the caller's to render. */
39
44
  declare function LayerStack({ title, items, paletteKinds, onAdd, onRemove, onReorder, onPrimaryChange, renderBody, hideHead, }: LayerStackProps): react_jsx_runtime.JSX.Element;
40
45
 
41
46
  export { LayerStack };
@@ -1,5 +1,5 @@
1
- export { LayerStack } from '../../chunk-2ZRE7WGQ.js';
2
- import '../../chunk-R4TACNW7.js';
3
- import '../../chunk-3P56ZCCJ.js';
1
+ export { LayerStack } from '../../chunk-DEWXYFEU.js';
2
+ import '../../chunk-BAPZPDDA.js';
3
+ import '../../chunk-DWV7SFKR.js';
4
4
  //# sourceMappingURL=index.js.map
5
5
  //# sourceMappingURL=index.js.map