@codemonster-ru/vueforge-core 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +1 -0
  2. package/dist/components/accordion/VfAccordion.vue.d.ts.map +1 -1
  3. package/dist/components/alert/VfAlert.vue.d.ts.map +1 -1
  4. package/dist/components/checkbox/VfCheckbox.vue.d.ts +38 -0
  5. package/dist/components/checkbox/VfCheckbox.vue.d.ts.map +1 -0
  6. package/dist/components/checkbox/index.d.ts +2 -0
  7. package/dist/components/checkbox/index.d.ts.map +1 -0
  8. package/dist/components/dialog/VfDialog.vue.d.ts +5 -1
  9. package/dist/components/dialog/VfDialog.vue.d.ts.map +1 -1
  10. package/dist/components/drawer/VfDrawer.vue.d.ts +68 -0
  11. package/dist/components/drawer/VfDrawer.vue.d.ts.map +1 -0
  12. package/dist/components/drawer/index.d.ts +2 -0
  13. package/dist/components/drawer/index.d.ts.map +1 -0
  14. package/dist/components/dropdown/VfDropdown.vue.d.ts +4 -0
  15. package/dist/components/dropdown/VfDropdown.vue.d.ts.map +1 -1
  16. package/dist/components/index.d.ts +5 -0
  17. package/dist/components/index.d.ts.map +1 -1
  18. package/dist/components/link/VfLink.vue.d.ts +7 -2
  19. package/dist/components/link/VfLink.vue.d.ts.map +1 -1
  20. package/dist/components/nav-menu/VfNavMenu.vue.d.ts +24 -0
  21. package/dist/components/nav-menu/VfNavMenu.vue.d.ts.map +1 -0
  22. package/dist/components/nav-menu/VfNavMenuItemNode.vue.d.ts +23 -0
  23. package/dist/components/nav-menu/VfNavMenuItemNode.vue.d.ts.map +1 -0
  24. package/dist/components/nav-menu/index.d.ts +2 -0
  25. package/dist/components/nav-menu/index.d.ts.map +1 -0
  26. package/dist/components/popover/VfPopover.vue.d.ts +5 -1
  27. package/dist/components/popover/VfPopover.vue.d.ts.map +1 -1
  28. package/dist/components/radio/VfRadio.vue.d.ts +40 -0
  29. package/dist/components/radio/VfRadio.vue.d.ts.map +1 -0
  30. package/dist/components/radio/index.d.ts +2 -0
  31. package/dist/components/radio/index.d.ts.map +1 -0
  32. package/dist/components/switch/VfSwitch.vue.d.ts +36 -0
  33. package/dist/components/switch/VfSwitch.vue.d.ts.map +1 -0
  34. package/dist/components/switch/index.d.ts +2 -0
  35. package/dist/components/switch/index.d.ts.map +1 -0
  36. package/dist/components/tooltip/VfTooltip.vue.d.ts +4 -0
  37. package/dist/components/tooltip/VfTooltip.vue.d.ts.map +1 -1
  38. package/dist/index.d.ts +2 -2
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/providers/VfThemeProvider.vue.d.ts.map +1 -1
  41. package/dist/public-CFcLjh0P.js +306 -0
  42. package/dist/styles.css +1 -1
  43. package/dist/theme/default-preset.d.ts.map +1 -1
  44. package/dist/theme/motion.d.ts +10 -0
  45. package/dist/theme/motion.d.ts.map +1 -0
  46. package/dist/theme-api.js +1 -1
  47. package/dist/theme.css +39 -1
  48. package/dist/tokens.css +70 -2
  49. package/dist/types/components.d.ts +17 -3
  50. package/dist/types/components.d.ts.map +1 -1
  51. package/dist/types/theme.d.ts +69 -1
  52. package/dist/types/theme.d.ts.map +1 -1
  53. package/dist/vueforge-core.js +1497 -737
  54. package/package.json +2 -3
  55. package/dist/public-D2viaiWv.js +0 -202
@@ -0,0 +1,306 @@
1
+ import { b as t } from "./breakpoints-hxAiWC8U.js";
2
+ const n = {
3
+ durationFast: "220ms",
4
+ durationNormal: "320ms",
5
+ easeStandard: "cubic-bezier(0.16, 1, 0.3, 1)"
6
+ };
7
+ function i(r) {
8
+ return Number.parseInt(r, 10);
9
+ }
10
+ const C = {
11
+ fast: i(n.durationFast),
12
+ normal: i(n.durationNormal)
13
+ }, d = {
14
+ breakpointXs: `${t.xs}px`,
15
+ breakpointSm: `${t.sm}px`,
16
+ breakpointMd: `${t.md}px`,
17
+ breakpointLg: `${t.lg}px`,
18
+ breakpointXl: `${t.xl}px`,
19
+ breakpoint2xl: `${t["2xl"]}px`
20
+ }, v = {
21
+ name: "vueforge-default",
22
+ tokens: {
23
+ colorBg: "#fcfcfd",
24
+ colorSurface: "#ffffff",
25
+ colorSurfaceMuted: "#f5f7fb",
26
+ colorText: "#172033",
27
+ colorMuted: "#69738a",
28
+ colorBorder: "#d8e0ef",
29
+ colorPrimary: "#0b63f6",
30
+ colorPrimaryContrast: "#ffffff",
31
+ colorPrimarySoft: "color-mix(in srgb, var(--vf-color-primary) 12%, var(--vf-color-surface))",
32
+ colorPrimaryBorderSoft: "color-mix(in srgb, var(--vf-color-primary) 22%, var(--vf-color-border))",
33
+ colorFocusRing: "color-mix(in srgb, var(--vf-color-primary) 32%, var(--vf-color-surface))",
34
+ colorSuccess: "#16a34a",
35
+ colorSuccessContrast: "#ffffff",
36
+ colorInfo: "#0ea5e9",
37
+ colorInfoContrast: "#ffffff",
38
+ colorWarn: "#f59e0b",
39
+ colorWarnContrast: "#1f1300",
40
+ colorHelp: "#8b5cf6",
41
+ colorHelpContrast: "#ffffff",
42
+ colorDanger: "#dc2626",
43
+ colorDangerContrast: "#ffffff",
44
+ colorContrast: "#111827",
45
+ colorContrastContrast: "#ffffff",
46
+ colorSuccessSoft: "color-mix(in srgb, var(--vf-color-success) 12%, var(--vf-color-surface))",
47
+ colorInfoSoft: "color-mix(in srgb, var(--vf-color-info) 12%, var(--vf-color-surface))",
48
+ colorWarnSoft: "color-mix(in srgb, var(--vf-color-warn) 12%, var(--vf-color-surface))",
49
+ colorHelpSoft: "color-mix(in srgb, var(--vf-color-help) 12%, var(--vf-color-surface))",
50
+ colorDangerSoft: "color-mix(in srgb, var(--vf-color-danger) 12%, var(--vf-color-surface))",
51
+ colorContrastSoft: "color-mix(in srgb, var(--vf-color-contrast) 10%, var(--vf-color-surface))",
52
+ colorSuccessBorderSoft: "color-mix(in srgb, var(--vf-color-success) 24%, var(--vf-color-border))",
53
+ colorInfoBorderSoft: "color-mix(in srgb, var(--vf-color-info) 24%, var(--vf-color-border))",
54
+ colorWarnBorderSoft: "color-mix(in srgb, var(--vf-color-warn) 24%, var(--vf-color-border))",
55
+ colorHelpBorderSoft: "color-mix(in srgb, var(--vf-color-help) 24%, var(--vf-color-border))",
56
+ colorDangerBorderSoft: "color-mix(in srgb, var(--vf-color-danger) 24%, var(--vf-color-border))",
57
+ colorContrastBorderSoft: "color-mix(in srgb, var(--vf-color-contrast) 24%, var(--vf-color-border))",
58
+ focusRingWidth: "3px",
59
+ radius: "0.75rem",
60
+ radiusControl: "calc(var(--vf-radius) - 0.125rem)",
61
+ radiusControlTight: "calc(var(--vf-radius) - 0.25rem)",
62
+ radiusSurface: "var(--vf-radius)",
63
+ radiusOverlay: "calc(var(--vf-radius) + 0.125rem)",
64
+ ...d,
65
+ controlHeightSm: "1.75rem",
66
+ controlHeightMd: "2.25rem",
67
+ controlHeightLg: "2.5rem",
68
+ controlFontSizeSm: "0.875rem",
69
+ controlFontSizeMd: "0.9375rem",
70
+ controlFontSizeLg: "1rem",
71
+ buttonPaddingSm: "0.25rem 0.55rem",
72
+ buttonPaddingMd: "0.375rem 0.75rem",
73
+ buttonPaddingLg: "0.5rem 0.875rem",
74
+ buttonGap: "0.5rem",
75
+ fieldPaddingSm: "0.25rem 0.55rem",
76
+ fieldPaddingMd: "0.375rem 0.65rem",
77
+ fieldPaddingLg: "0.5rem 0.75rem",
78
+ checkboxSizeSm: "1rem",
79
+ checkboxSizeMd: "1.125rem",
80
+ checkboxSizeLg: "1.25rem",
81
+ selectionGap: "0.65rem",
82
+ checkboxMarkWidth: "0.3rem",
83
+ checkboxMarkHeight: "0.55rem",
84
+ checkboxMarkStrokeWidth: "2px",
85
+ checkboxMarkOffsetY: "-0.05rem",
86
+ radioDotSize: "0.5rem",
87
+ switchWidthSm: "2rem",
88
+ switchWidthMd: "2.25rem",
89
+ switchWidthLg: "2.5rem",
90
+ switchHeightSm: "1.125rem",
91
+ switchHeightMd: "1.25rem",
92
+ switchHeightLg: "1.375rem",
93
+ switchThumbSizeSm: "0.75rem",
94
+ switchThumbSizeMd: "0.875rem",
95
+ switchThumbSizeLg: "1rem",
96
+ switchThumbInset: "0.1875rem",
97
+ textareaMinHeightSm: "4.5rem",
98
+ textareaMinHeightMd: "6rem",
99
+ textareaMinHeightLg: "7rem",
100
+ overlayPadding: "0.875rem",
101
+ overlayGap: "0.75rem",
102
+ overlayViewportPadding: "1rem",
103
+ menuPadding: "0.4rem",
104
+ menuGap: "0.2rem",
105
+ menuMinWidth: "12rem",
106
+ surfacePadding: "0.95rem",
107
+ surfaceGap: "0.625rem",
108
+ surfacePaddingCompact: "0.7rem",
109
+ surfaceGapCompact: "0.5rem",
110
+ sectionPadding: "0.75rem 0.9rem",
111
+ sectionGap: "0.75rem",
112
+ tabsGap: "0.875rem",
113
+ tabsListGap: "0.375rem",
114
+ tabsListPadding: "0.25rem",
115
+ tabsTabPaddingInline: "0.8rem",
116
+ tabsPanelPaddingTop: "0.75rem",
117
+ navMenuListGap: "0.2rem",
118
+ navMenuNestedGap: "0.15rem",
119
+ navMenuCollapseOffsetTop: "0.1rem",
120
+ navMenuCollapseInsetLevel0Margin: "1.275rem",
121
+ navMenuCollapseInsetLevel0Padding: "0.7rem",
122
+ navMenuCollapseInsetSimpleLevel0Margin: "0.75rem",
123
+ navMenuCollapseInsetSimpleLevel0Padding: "0.45rem",
124
+ navMenuCollapseInsetDeepMargin: "0.35rem",
125
+ navMenuCollapseInsetDeepPadding: "0.35rem",
126
+ navMenuCollapseInsetSimpleDeepMargin: "0.2rem",
127
+ navMenuCollapseInsetSimpleDeepPadding: "0.2rem",
128
+ navMenuNodeGroupSpacing: "0.1rem",
129
+ navMenuGroupPadding: "0.35rem 0.65rem",
130
+ navMenuGroupFontSize: "0.875rem",
131
+ navMenuItemPadding: "0.35rem 0.65rem",
132
+ navMenuItemGap: "0.55rem",
133
+ navMenuLeadingIconSize: "1rem",
134
+ navMenuLeadingIconColumnSize: "1.25rem",
135
+ badgeHeight: "1.625rem",
136
+ badgePadding: "0.2rem 0.55rem",
137
+ badgeGap: "0.375rem",
138
+ badgeRadius: "999px",
139
+ badgeFontSize: "0.8125rem",
140
+ badgeLineHeight: "1.2",
141
+ tagHeight: "1.75rem",
142
+ tagPadding: "0.25rem 0.6rem",
143
+ tagFontSize: "0.8125rem",
144
+ tagLineHeight: "1.2",
145
+ tooltipPadding: "0.45rem 0.65rem",
146
+ tooltipMaxWidth: "16rem",
147
+ tooltipFontSize: "0.8125rem",
148
+ tooltipLineHeight: "1.4",
149
+ dialogWidthSm: "28rem",
150
+ dialogWidthMd: "36rem",
151
+ dialogWidthLg: "48rem",
152
+ dialogMaxHeight: "min(85vh, 48rem)",
153
+ drawerSizeSm: "20rem",
154
+ drawerSizeMd: "26rem",
155
+ drawerSizeLg: "32rem",
156
+ drawerOffsetTop: "0px",
157
+ drawerBodyPadding: "var(--vf-overlay-padding)",
158
+ dialogTitleFontSize: "1.125rem",
159
+ dialogHeaderGap: "0.75rem",
160
+ dialogActionsGap: "0.5rem",
161
+ popoverWidth: "min(100vw - 2rem, 22rem)",
162
+ floatingArrowSize: "0.625rem",
163
+ overlayBackdrop: "rgba(15, 23, 42, 0.56)",
164
+ alertPrimarySoft: "color-mix(in srgb, var(--vf-color-primary) 8%, var(--vf-color-surface))",
165
+ alertPrimaryBorderSoft: "color-mix(in srgb, var(--vf-color-primary) 22%, var(--vf-color-border))",
166
+ alertContentGap: "0.25rem",
167
+ alertTitleFontSize: "0.9375rem",
168
+ cardTitleFontSize: "1rem",
169
+ panelTitleFontSize: "0.9375rem",
170
+ textLineHeight: "1.5",
171
+ headingLineHeight: "1.3",
172
+ tabsLineHeight: "1.2",
173
+ motionDurationFast: n.durationFast,
174
+ motionDurationNormal: n.durationNormal,
175
+ motionEaseStandard: n.easeStandard,
176
+ zOverlay: "1000",
177
+ zDrawer: "1000",
178
+ zDropdown: "900",
179
+ zPopover: "925",
180
+ zTooltip: "950",
181
+ spacing: "1rem",
182
+ shadow: "none"
183
+ },
184
+ dark: {
185
+ colorBg: "#0f172a",
186
+ colorSurface: "#162033",
187
+ colorSurfaceMuted: "#1b2840",
188
+ colorText: "#eff4ff",
189
+ colorMuted: "#9fb0cf",
190
+ colorBorder: "#2d405f",
191
+ colorPrimary: "#6ea8fe",
192
+ colorPrimaryContrast: "#081120",
193
+ colorPrimarySoft: "color-mix(in srgb, var(--vf-color-primary) 12%, var(--vf-color-surface))",
194
+ colorPrimaryBorderSoft: "color-mix(in srgb, var(--vf-color-primary) 22%, var(--vf-color-border))",
195
+ colorFocusRing: "color-mix(in srgb, var(--vf-color-primary) 32%, var(--vf-color-surface))",
196
+ colorSuccess: "#4ade80",
197
+ colorSuccessContrast: "#081120",
198
+ colorInfo: "#38bdf8",
199
+ colorInfoContrast: "#081120",
200
+ colorWarn: "#fbbf24",
201
+ colorWarnContrast: "#1f1300",
202
+ colorHelp: "#a78bfa",
203
+ colorHelpContrast: "#081120",
204
+ colorDanger: "#f87171",
205
+ colorDangerContrast: "#081120",
206
+ colorContrast: "#f3f4f6",
207
+ colorContrastContrast: "#111827",
208
+ colorSuccessSoft: "color-mix(in srgb, var(--vf-color-success) 12%, var(--vf-color-surface))",
209
+ colorInfoSoft: "color-mix(in srgb, var(--vf-color-info) 12%, var(--vf-color-surface))",
210
+ colorWarnSoft: "color-mix(in srgb, var(--vf-color-warn) 12%, var(--vf-color-surface))",
211
+ colorHelpSoft: "color-mix(in srgb, var(--vf-color-help) 12%, var(--vf-color-surface))",
212
+ colorDangerSoft: "color-mix(in srgb, var(--vf-color-danger) 12%, var(--vf-color-surface))",
213
+ colorContrastSoft: "color-mix(in srgb, var(--vf-color-contrast) 10%, var(--vf-color-surface))",
214
+ colorSuccessBorderSoft: "color-mix(in srgb, var(--vf-color-success) 24%, var(--vf-color-border))",
215
+ colorInfoBorderSoft: "color-mix(in srgb, var(--vf-color-info) 24%, var(--vf-color-border))",
216
+ colorWarnBorderSoft: "color-mix(in srgb, var(--vf-color-warn) 24%, var(--vf-color-border))",
217
+ colorHelpBorderSoft: "color-mix(in srgb, var(--vf-color-help) 24%, var(--vf-color-border))",
218
+ colorDangerBorderSoft: "color-mix(in srgb, var(--vf-color-danger) 24%, var(--vf-color-border))",
219
+ colorContrastBorderSoft: "color-mix(in srgb, var(--vf-color-contrast) 24%, var(--vf-color-border))",
220
+ focusRingWidth: "3px",
221
+ zOverlay: "1000",
222
+ zDrawer: "1000",
223
+ zDropdown: "900",
224
+ zPopover: "925",
225
+ zTooltip: "950",
226
+ shadow: "none"
227
+ }
228
+ }, g = "vf-theme", u = "data-vf-theme";
229
+ function P(r) {
230
+ return r === "light" || r === "dark" || r === "system";
231
+ }
232
+ function k(r, o) {
233
+ return r === "system" ? o : r;
234
+ }
235
+ const m = "vf", p = "vf-theme-preset", b = ":root";
236
+ function S(r) {
237
+ return r.replace(/[A-Z]/g, (o) => `-${o.toLowerCase()}`);
238
+ }
239
+ function l(...r) {
240
+ return Object.assign({}, ...r);
241
+ }
242
+ function y(r) {
243
+ return r;
244
+ }
245
+ function h(r = {}) {
246
+ const o = r.prefix ?? m, e = r.rootSelector ?? b, a = r.attribute ?? u;
247
+ return {
248
+ prefix: o,
249
+ rootSelector: e,
250
+ darkModeSelector: r.darkModeSelector ?? `${e}[${a}='dark']`,
251
+ attribute: a,
252
+ storageKey: r.storageKey ?? g,
253
+ styleId: r.styleId ?? p
254
+ };
255
+ }
256
+ function x(r = {}) {
257
+ const o = r.preset ?? v, e = r.extend, a = l(o.tokens, e, r.light), c = l(o.tokens, o.dark, e, r.dark);
258
+ return {
259
+ name: o.name,
260
+ light: a,
261
+ dark: c
262
+ };
263
+ }
264
+ function z(r = {}) {
265
+ return {
266
+ preset: x(r),
267
+ options: h(r.options)
268
+ };
269
+ }
270
+ function s(r, o = m) {
271
+ return Object.fromEntries(
272
+ Object.entries(r).map(([e, a]) => [`--${o}-${S(e)}`, a])
273
+ );
274
+ }
275
+ function f(r) {
276
+ return Object.entries(r).map(([o, e]) => ` ${o}: ${e};`).join(`
277
+ `);
278
+ }
279
+ function M(r) {
280
+ const { preset: o, options: e } = r, a = f(s(o.light, e.prefix)), c = f(s(o.dark, e.prefix));
281
+ return [
282
+ `${e.rootSelector} {
283
+ ${a}
284
+ }`,
285
+ `${e.darkModeSelector} {
286
+ ${c}
287
+ }`
288
+ ].join(`
289
+
290
+ `);
291
+ }
292
+ function L(r, o = document) {
293
+ const e = r.options.styleId, a = o.getElementById(e) ?? Object.assign(o.createElement("style"), { id: e });
294
+ return a.textContent = M(r), a.parentNode || o.head.appendChild(a), a;
295
+ }
296
+ export {
297
+ g as D,
298
+ L as a,
299
+ k as b,
300
+ u as c,
301
+ y as d,
302
+ v as e,
303
+ P as i,
304
+ z as r,
305
+ C as v
306
+ };
package/dist/styles.css CHANGED
@@ -1 +1 @@
1
- :root{--vf-breakpoint-xs: 480px;--vf-breakpoint-sm: 640px;--vf-breakpoint-md: 768px;--vf-breakpoint-lg: 1024px;--vf-breakpoint-xl: 1280px;--vf-breakpoint-2xl: 1536px}:root{--vf-color-bg: #fcfcfd;--vf-color-surface: #ffffff;--vf-color-surface-muted: #f5f7fb;--vf-color-text: #172033;--vf-color-muted: #69738a;--vf-color-border: #d8e0ef;--vf-color-primary: #0b63f6;--vf-color-primary-contrast: #ffffff;--vf-color-primary-soft: color-mix(in srgb, var(--vf-color-primary) 12%, var(--vf-color-surface));--vf-color-primary-border-soft: color-mix(in srgb, var(--vf-color-primary) 22%, var(--vf-color-border));--vf-color-focus-ring: color-mix(in srgb, var(--vf-color-primary) 52%, var(--vf-color-surface));--vf-color-success: #16a34a;--vf-color-danger: #dc2626;--vf-color-success-soft: color-mix(in srgb, var(--vf-color-success) 12%, var(--vf-color-surface));--vf-color-danger-soft: color-mix(in srgb, var(--vf-color-danger) 12%, var(--vf-color-surface));--vf-color-success-border-soft: color-mix(in srgb, var(--vf-color-success) 24%, var(--vf-color-border));--vf-color-danger-border-soft: color-mix(in srgb, var(--vf-color-danger) 24%, var(--vf-color-border));--vf-radius: .75rem;--vf-radius-control: calc(var(--vf-radius) - .125rem);--vf-radius-control-tight: calc(var(--vf-radius) - .25rem);--vf-radius-surface: var(--vf-radius);--vf-radius-overlay: calc(var(--vf-radius) + .125rem);--vf-control-height-sm: 1.75rem;--vf-control-height-md: 2.25rem;--vf-control-height-lg: 2.5rem;--vf-control-font-size-sm: .875rem;--vf-control-font-size-md: .9375rem;--vf-control-font-size-lg: 1rem;--vf-button-padding-sm: .25rem .55rem;--vf-button-padding-md: .375rem .75rem;--vf-button-padding-lg: .5rem .875rem;--vf-button-gap: .5rem;--vf-field-padding-sm: .25rem .55rem;--vf-field-padding-md: .375rem .65rem;--vf-field-padding-lg: .5rem .75rem;--vf-textarea-min-height-sm: 4.5rem;--vf-textarea-min-height-md: 6rem;--vf-textarea-min-height-lg: 7rem;--vf-overlay-padding: .875rem;--vf-overlay-gap: .75rem;--vf-overlay-viewport-padding: 1rem;--vf-menu-padding: .4rem;--vf-menu-gap: .2rem;--vf-menu-min-width: 12rem;--vf-surface-padding: .95rem;--vf-surface-gap: .625rem;--vf-surface-padding-compact: .7rem;--vf-surface-gap-compact: .5rem;--vf-section-padding: .75rem .9rem;--vf-section-gap: .75rem;--vf-tabs-gap: .875rem;--vf-tabs-list-gap: .375rem;--vf-tabs-list-padding: .25rem;--vf-tabs-tab-padding-inline: .8rem;--vf-tabs-panel-padding-top: .75rem;--vf-badge-height: 1.625rem;--vf-badge-padding: .2rem .55rem;--vf-badge-gap: .375rem;--vf-badge-radius: 999px;--vf-badge-font-size: .8125rem;--vf-badge-line-height: 1.2;--vf-tag-height: 1.75rem;--vf-tag-padding: .25rem .6rem;--vf-tag-font-size: .8125rem;--vf-tag-line-height: 1.2;--vf-tooltip-padding: .45rem .65rem;--vf-tooltip-max-width: 16rem;--vf-tooltip-font-size: .8125rem;--vf-tooltip-line-height: 1.4;--vf-dialog-width-sm: 28rem;--vf-dialog-width-md: 36rem;--vf-dialog-width-lg: 48rem;--vf-dialog-max-height: min(85vh, 48rem);--vf-dialog-title-font-size: 1.125rem;--vf-dialog-header-gap: .75rem;--vf-dialog-actions-gap: .5rem;--vf-popover-width: min(100vw - 2rem, 22rem);--vf-floating-arrow-size: .625rem;--vf-overlay-backdrop: rgba(15, 23, 42, .56);--vf-overlay-backdrop-blur: 6px;--vf-alert-primary-soft: color-mix(in srgb, var(--vf-color-primary) 8%, var(--vf-color-surface));--vf-alert-primary-border-soft: color-mix(in srgb, var(--vf-color-primary) 22%, var(--vf-color-border));--vf-alert-content-gap: .25rem;--vf-alert-title-font-size: .9375rem;--vf-card-title-font-size: 1rem;--vf-panel-title-font-size: .9375rem;--vf-text-line-height: 1.5;--vf-heading-line-height: 1.3;--vf-tabs-line-height: 1.2;--vf-spacing: 1rem;--vf-shadow: none}:root{color-scheme:light;background-color:var(--vf-color-bg);color:var(--vf-color-text)}:root[data-vf-theme=dark]{color-scheme:dark;--vf-color-bg: #0f172a;--vf-color-surface: #162033;--vf-color-surface-muted: #1b2840;--vf-color-text: #eff4ff;--vf-color-muted: #9fb0cf;--vf-color-border: #2d405f;--vf-color-primary: #6ea8fe;--vf-color-primary-contrast: #081120;--vf-color-primary-soft: color-mix(in srgb, var(--vf-color-primary) 12%, var(--vf-color-surface));--vf-color-primary-border-soft: color-mix(in srgb, var(--vf-color-primary) 22%, var(--vf-color-border));--vf-color-focus-ring: color-mix(in srgb, var(--vf-color-primary) 52%, var(--vf-color-surface));--vf-color-success: #4ade80;--vf-color-danger: #f87171;--vf-color-success-soft: color-mix(in srgb, var(--vf-color-success) 12%, var(--vf-color-surface));--vf-color-danger-soft: color-mix(in srgb, var(--vf-color-danger) 12%, var(--vf-color-surface));--vf-color-success-border-soft: color-mix(in srgb, var(--vf-color-success) 24%, var(--vf-color-border));--vf-color-danger-border-soft: color-mix(in srgb, var(--vf-color-danger) 24%, var(--vf-color-border));--vf-shadow: none}.vf-button,.vf-link,.vf-input,.vf-card,.vf-textarea,.vf-panel,.vf-badge,.vf-divider,.vf-dialog,.vf-dialog__overlay,.vf-dialog__content,.vf-dropdown,.vf-dropdown__trigger,.vf-dropdown__menu,.vf-accordion,.vf-accordion__trigger,.vf-tooltip,.vf-tooltip__trigger,.vf-tooltip__content,.vf-tabs,.vf-tabs__list,.vf-tabs__tab,.vf-tabs__panel{box-sizing:border-box;font:inherit}.vf-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--vf-button-gap);min-height:var(--vf-control-height-md);padding:var(--vf-button-padding-md);border:1px solid transparent;border-radius:var(--vf-radius-control);background:var(--vf-color-primary);color:var(--vf-color-primary-contrast);cursor:pointer;text-decoration:none;transition:background-color .18s ease,border-color .18s ease,color .18s ease}.vf-icon-button{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--vf-control-height-md);height:var(--vf-control-height-md);padding:0;border:1px solid transparent;border-radius:var(--vf-radius-control);background:transparent;color:var(--vf-color-text);cursor:pointer;transition:background-color .18s ease,border-color .18s ease,color .18s ease}.vf-button:hover:not(:disabled){background:var(--vf-color-primary);filter:brightness(.96)}.vf-button:focus-visible,.vf-icon-button:focus-visible{outline:none;border-color:var(--vf-color-primary);border-radius:var(--vf-radius-control);box-shadow:0 0 0 2px var(--vf-color-focus-ring)}.vf-button:disabled,.vf-icon-button:disabled{opacity:.65;cursor:not-allowed}.vf-button--secondary{background:var(--vf-color-surface-muted);border-color:var(--vf-color-border);color:var(--vf-color-text)}.vf-icon-button--primary{background:var(--vf-color-primary);color:var(--vf-color-primary-contrast)}.vf-icon-button--secondary{background:var(--vf-color-surface-muted);border-color:var(--vf-color-border);color:var(--vf-color-text)}.vf-button--ghost,.vf-icon-button--ghost{background:transparent;color:var(--vf-color-text)}.vf-button--secondary:hover:not(:disabled),.vf-button--ghost:hover:not(:disabled),.vf-icon-button--secondary:hover:not(:disabled),.vf-icon-button--ghost:hover:not(:disabled){background:var(--vf-color-surface-muted);border-color:var(--vf-color-primary)}.vf-icon-button--primary:hover:not(:disabled){background:var(--vf-color-primary);filter:brightness(.96)}.vf-button--sm{min-height:var(--vf-control-height-sm);padding:var(--vf-button-padding-sm);font-size:var(--vf-control-font-size-sm)}.vf-icon-button--sm{width:var(--vf-control-height-sm);height:var(--vf-control-height-sm)}.vf-button--lg{min-height:var(--vf-control-height-lg);padding:var(--vf-button-padding-lg);font-size:var(--vf-control-font-size-lg)}.vf-icon-button--lg{width:var(--vf-control-height-lg);height:var(--vf-control-height-lg)}.vf-button--block{width:100%}.vf-link{display:inline-flex;width:fit-content;max-width:100%;align-self:flex-start;border:1px solid transparent;color:var(--vf-color-primary);text-decoration:none;text-underline-offset:.2em;transition:color .18s ease}.vf-link:hover{color:var(--vf-color-primary)}.vf-link:focus-visible{outline:none;border-color:var(--vf-color-primary);border-radius:var(--vf-radius-control);box-shadow:0 0 0 2px var(--vf-color-focus-ring)}.vf-link--muted{color:var(--vf-color-muted)}.vf-link--underline{text-decoration:underline}.vf-link--underline:focus-visible{text-decoration:none}.vf-input,.vf-textarea{width:100%}.vf-input{min-height:var(--vf-control-height-md);padding:var(--vf-field-padding-md);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-control);background:var(--vf-color-surface);color:var(--vf-color-text);transition:border-color .18s ease}.vf-input::placeholder{color:var(--vf-color-muted)}.vf-input:focus,.vf-input:focus-visible{border-color:var(--vf-color-primary)}.vf-input:focus-visible,.vf-textarea:focus-visible{outline:none;border-radius:var(--vf-radius-control);box-shadow:0 0 0 2px var(--vf-color-focus-ring)}.vf-input--sm{min-height:var(--vf-control-height-sm);padding:var(--vf-field-padding-sm);font-size:var(--vf-control-font-size-sm)}.vf-input--lg{min-height:var(--vf-control-height-lg);padding:var(--vf-field-padding-lg)}.vf-input--invalid{border-color:var(--vf-color-danger)}.vf-textarea{min-height:var(--vf-textarea-min-height-md);padding:var(--vf-field-padding-md);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-control);background:var(--vf-color-surface);color:var(--vf-color-text);resize:vertical;transition:border-color .18s ease}.vf-textarea::placeholder{color:var(--vf-color-muted)}.vf-textarea:focus,.vf-textarea:focus-visible{border-color:var(--vf-color-primary)}.vf-textarea--sm{min-height:var(--vf-textarea-min-height-sm);padding:var(--vf-field-padding-sm);font-size:var(--vf-control-font-size-sm)}.vf-textarea--lg{min-height:var(--vf-textarea-min-height-lg);padding:var(--vf-field-padding-lg)}.vf-textarea--invalid{border-color:var(--vf-color-danger)}.vf-input:disabled,.vf-textarea:disabled{opacity:.65;cursor:not-allowed}.vf-card{display:flex;flex-direction:column;gap:var(--vf-surface-gap);padding:var(--vf-surface-padding);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-surface);background:var(--vf-color-surface);color:var(--vf-color-text);line-height:var(--vf-text-line-height)}.vf-card--compact{padding:var(--vf-surface-padding-compact);gap:var(--vf-surface-gap-compact)}.vf-card__title{margin:0;font-size:var(--vf-card-title-font-size);font-weight:600;line-height:var(--vf-heading-line-height)}.vf-card__body{color:var(--vf-color-muted)}.vf-panel{display:flex;flex-direction:column;gap:var(--vf-surface-gap);padding:var(--vf-surface-padding);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-surface);background:var(--vf-color-surface);color:var(--vf-color-text);line-height:var(--vf-text-line-height)}.vf-panel--subtle{background:transparent;box-shadow:none}.vf-panel__title{margin:0;font-size:var(--vf-panel-title-font-size);font-weight:600;line-height:var(--vf-heading-line-height)}.vf-badge{display:inline-flex;align-items:center;gap:var(--vf-badge-gap);min-height:var(--vf-badge-height);padding:var(--vf-badge-padding);border-radius:var(--vf-badge-radius);font-size:var(--vf-badge-font-size);font-weight:600;line-height:var(--vf-badge-line-height);white-space:nowrap;background:var(--vf-color-surface-muted);border:1px solid var(--vf-color-border);color:var(--vf-color-text)}.vf-badge--primary{background:var(--vf-color-primary-soft);border-color:var(--vf-color-primary);color:var(--vf-color-primary)}.vf-badge--success{background:var(--vf-color-success-soft);border-color:var(--vf-color-success);color:var(--vf-color-success)}.vf-badge--danger{background:var(--vf-color-danger-soft);border-color:var(--vf-color-danger);color:var(--vf-color-danger)}.vf-tag{display:inline-flex;align-items:center;min-height:var(--vf-tag-height);padding:var(--vf-tag-padding);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-control-tight);background:var(--vf-color-surface);color:var(--vf-color-text);font-size:var(--vf-tag-font-size);line-height:var(--vf-tag-line-height);white-space:nowrap}.vf-tag--primary{border-color:var(--vf-color-primary);color:var(--vf-color-primary)}.vf-tag--success{border-color:var(--vf-color-success);color:var(--vf-color-success)}.vf-tag--danger{border-color:var(--vf-color-danger);color:var(--vf-color-danger)}.vf-alert{display:grid;grid-template-columns:auto 1fr;gap:var(--vf-section-gap);padding:var(--vf-section-padding);border:1px solid var(--vf-alert-primary-border-soft);border-radius:var(--vf-radius-surface);background:var(--vf-alert-primary-soft);color:var(--vf-color-text);line-height:var(--vf-text-line-height)}.vf-alert--success{border-color:var(--vf-color-success-border-soft);background:var(--vf-color-success-soft)}.vf-alert--danger{border-color:var(--vf-color-danger-border-soft);background:var(--vf-color-danger-soft)}.vf-alert__icon{display:inline-flex;align-items:center;justify-content:center;align-self:start;color:var(--vf-color-primary)}.vf-alert--success .vf-alert__icon{color:var(--vf-color-success)}.vf-alert--danger .vf-alert__icon{color:var(--vf-color-danger)}.vf-alert__content{display:grid;gap:var(--vf-alert-content-gap)}.vf-alert__title{margin:0;font-size:var(--vf-alert-title-font-size);font-weight:600;line-height:var(--vf-heading-line-height)}.vf-alert__body{color:var(--vf-color-muted);line-height:var(--vf-text-line-height)}.vf-divider{margin:0;border:0;background:var(--vf-color-border);flex-shrink:0}.vf-divider--horizontal{width:100%;height:1px}.vf-divider--vertical{width:1px;align-self:stretch}.vf-dialog{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:var(--vf-overlay-viewport-padding)}.vf-dialog__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vf-overlay-backdrop);-webkit-backdrop-filter:blur(var(--vf-overlay-backdrop-blur));backdrop-filter:blur(var(--vf-overlay-backdrop-blur))}.vf-dialog__content{position:relative;z-index:1;display:flex;flex-direction:column;gap:var(--vf-overlay-gap);width:min(100%,var(--vf-dialog-width-md));max-height:var(--vf-dialog-max-height);overflow:auto;padding:var(--vf-overlay-padding);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-overlay);background:var(--vf-color-surface);color:var(--vf-color-text);line-height:var(--vf-text-line-height)}.vf-dialog__content:focus-visible{outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 2px var(--vf-color-focus-ring)}.vf-dialog__content--sm{width:min(100%,var(--vf-dialog-width-sm))}.vf-dialog__content--lg{width:min(100%,var(--vf-dialog-width-lg))}.vf-dialog__header,.vf-dialog__footer{display:flex;align-items:center;justify-content:space-between;gap:var(--vf-dialog-header-gap)}.vf-dialog__actions{display:inline-flex;align-items:center;gap:var(--vf-dialog-actions-gap)}.vf-dialog__title{margin:0;font-size:var(--vf-dialog-title-font-size);font-weight:700;line-height:var(--vf-heading-line-height)}.vf-dialog__description{margin:0;color:var(--vf-color-muted);line-height:var(--vf-text-line-height)}.vf-dialog__body{color:var(--vf-color-text);line-height:var(--vf-text-line-height)}.vf-dropdown,.vf-popover{position:relative;display:inline-flex;flex-direction:column}.vf-dropdown__trigger,.vf-popover__trigger{width:fit-content;border:1px solid transparent;border-radius:var(--vf-radius-control)}.vf-dropdown__trigger:focus-visible,.vf-popover__trigger:focus-visible{outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 2px var(--vf-color-focus-ring)}.vf-dropdown__menu{position:fixed;top:0;left:0;z-index:900;display:flex;flex-direction:column;gap:var(--vf-menu-gap);min-width:var(--vf-menu-min-width);padding:var(--vf-menu-padding);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-control);background:var(--vf-color-surface);will-change:left,top}.vf-dropdown__arrow{position:absolute;z-index:0;width:var(--vf-floating-arrow-size);height:var(--vf-floating-arrow-size);background:var(--vf-color-surface);border-left:1px solid var(--vf-color-border);border-top:1px solid var(--vf-color-border);transform:rotate(45deg);pointer-events:none}.vf-dropdown__arrow--bottom{margin-top:-1px}.vf-dropdown__arrow--top{margin-top:1px}.vf-popover__content{position:fixed;left:0;top:0;z-index:925;width:var(--vf-popover-width);padding:var(--vf-section-padding);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-surface);background:var(--vf-color-surface);color:var(--vf-color-text);line-height:var(--vf-text-line-height);will-change:left,top}.vf-popover__arrow{position:absolute;width:var(--vf-floating-arrow-size);height:var(--vf-floating-arrow-size);background:var(--vf-color-surface);border-left:1px solid var(--vf-color-border);border-top:1px solid var(--vf-color-border);transform:rotate(45deg);pointer-events:none}.vf-popover__arrow--bottom{margin-top:-1px}.vf-popover__arrow--top{margin-top:1px}.vf-dropdown__item{position:relative;z-index:1;display:flex;align-items:center;width:100%;min-height:var(--vf-control-height-sm);padding:var(--vf-field-padding-sm);border:1px solid transparent;border-radius:var(--vf-radius-control-tight);background:transparent;color:var(--vf-color-text);text-align:left;cursor:pointer}.vf-dropdown__item:hover{background:transparent;color:var(--vf-color-primary)}.vf-dropdown__item:focus-visible{outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 2px var(--vf-color-focus-ring);background:transparent;color:var(--vf-color-primary)}.vf-tooltip{position:relative;display:inline-flex;width:fit-content;max-width:100%;align-self:flex-start}.vf-tooltip__trigger{display:inline-flex;width:fit-content;max-width:100%}.vf-tooltip__content{position:fixed;left:0;top:0;z-index:950;max-width:var(--vf-tooltip-max-width);padding:var(--vf-tooltip-padding);border-radius:var(--vf-radius-control-tight);background:var(--vf-color-text);color:var(--vf-color-bg);font-size:var(--vf-tooltip-font-size);line-height:var(--vf-tooltip-line-height);will-change:left,top}.vf-tooltip__arrow{position:absolute;width:var(--vf-floating-arrow-size);height:var(--vf-floating-arrow-size);background:var(--vf-color-text);transform:rotate(45deg);pointer-events:none}.vf-accordion{border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-surface);background:var(--vf-color-surface);color:var(--vf-color-text)}.vf-accordion__trigger{display:flex;align-items:center;justify-content:space-between;gap:var(--vf-spacing);position:relative;z-index:1;width:100%;padding:var(--vf-section-padding);border:1px solid transparent;border-radius:inherit;background:transparent;color:inherit;cursor:pointer;text-align:left}.vf-accordion__trigger[aria-expanded=true]{border-bottom-left-radius:0;border-bottom-right-radius:0}.vf-accordion__trigger:hover:not(:disabled){background:transparent;color:var(--vf-color-primary)}.vf-accordion__trigger:focus-visible{z-index:2;outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 2px var(--vf-color-focus-ring)}.vf-accordion__icon{flex-shrink:0;color:var(--vf-color-muted);transition:transform .18s ease}.vf-accordion__icon--open{transform:rotate(180deg)}.vf-accordion__content{position:relative;z-index:1;border-top:1px solid var(--vf-color-border);border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;padding:var(--vf-section-padding);background:var(--vf-color-surface);color:var(--vf-color-muted);line-height:var(--vf-text-line-height)}.vf-tabs{display:flex;flex-direction:column;gap:var(--vf-tabs-gap)}.vf-tabs__list{display:inline-flex;align-items:center;gap:var(--vf-tabs-list-gap);width:fit-content;padding:var(--vf-tabs-list-padding);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-overlay);background:var(--vf-color-surface-muted)}.vf-tabs__tab{display:inline-flex;align-items:center;justify-content:center;min-height:var(--vf-control-height-md);padding:0 var(--vf-tabs-tab-padding-inline);border:1px solid transparent;border-radius:var(--vf-radius-control-tight);background:transparent;color:var(--vf-color-muted);cursor:pointer;white-space:nowrap;line-height:var(--vf-tabs-line-height)}.vf-tabs__tab:hover:not(:disabled){color:var(--vf-color-primary);background:transparent}.vf-tabs__tab[aria-selected=true]{background:var(--vf-color-surface);color:var(--vf-color-primary);border:1px solid var(--vf-color-primary)}.vf-tabs__tab:focus-visible{outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 2px var(--vf-color-focus-ring)}.vf-tabs__tab:disabled{cursor:not-allowed;opacity:.5}.vf-tabs__panel{border:1px solid transparent;border-radius:var(--vf-radius-control);padding:var(--vf-tabs-panel-padding-top) 0 0;color:var(--vf-color-text);line-height:var(--vf-text-line-height)}.vf-tabs__panel:focus-visible{outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 2px var(--vf-color-focus-ring)}
1
+ :root{--vf-breakpoint-xs: 480px;--vf-breakpoint-sm: 640px;--vf-breakpoint-md: 768px;--vf-breakpoint-lg: 1024px;--vf-breakpoint-xl: 1280px;--vf-breakpoint-2xl: 1536px}:root{--vf-color-bg: #fcfcfd;--vf-color-surface: #ffffff;--vf-color-surface-muted: #f5f7fb;--vf-color-text: #172033;--vf-color-muted: #69738a;--vf-color-border: #d8e0ef;--vf-color-primary: #0b63f6;--vf-color-primary-contrast: #ffffff;--vf-color-primary-soft: color-mix(in srgb, var(--vf-color-primary) 12%, var(--vf-color-surface));--vf-color-primary-border-soft: color-mix(in srgb, var(--vf-color-primary) 22%, var(--vf-color-border));--vf-color-focus-ring: color-mix(in srgb, var(--vf-color-primary) 32%, var(--vf-color-surface));--vf-color-success: #16a34a;--vf-color-success-contrast: #ffffff;--vf-color-info: #0ea5e9;--vf-color-info-contrast: #ffffff;--vf-color-warn: #f59e0b;--vf-color-warn-contrast: #1f1300;--vf-color-help: #8b5cf6;--vf-color-help-contrast: #ffffff;--vf-color-danger: #dc2626;--vf-color-danger-contrast: #ffffff;--vf-color-contrast: #111827;--vf-color-contrast-contrast: #ffffff;--vf-color-success-soft: color-mix(in srgb, var(--vf-color-success) 12%, var(--vf-color-surface));--vf-color-info-soft: color-mix(in srgb, var(--vf-color-info) 12%, var(--vf-color-surface));--vf-color-warn-soft: color-mix(in srgb, var(--vf-color-warn) 12%, var(--vf-color-surface));--vf-color-help-soft: color-mix(in srgb, var(--vf-color-help) 12%, var(--vf-color-surface));--vf-color-danger-soft: color-mix(in srgb, var(--vf-color-danger) 12%, var(--vf-color-surface));--vf-color-contrast-soft: color-mix(in srgb, var(--vf-color-contrast) 10%, var(--vf-color-surface));--vf-color-success-border-soft: color-mix(in srgb, var(--vf-color-success) 24%, var(--vf-color-border));--vf-color-info-border-soft: color-mix(in srgb, var(--vf-color-info) 24%, var(--vf-color-border));--vf-color-warn-border-soft: color-mix(in srgb, var(--vf-color-warn) 24%, var(--vf-color-border));--vf-color-help-border-soft: color-mix(in srgb, var(--vf-color-help) 24%, var(--vf-color-border));--vf-color-danger-border-soft: color-mix(in srgb, var(--vf-color-danger) 24%, var(--vf-color-border));--vf-color-contrast-border-soft: color-mix(in srgb, var(--vf-color-contrast) 24%, var(--vf-color-border));--vf-focus-ring-width: 3px;--vf-radius: .75rem;--vf-radius-control: calc(var(--vf-radius) - .125rem);--vf-radius-control-tight: calc(var(--vf-radius) - .25rem);--vf-radius-surface: var(--vf-radius);--vf-radius-overlay: calc(var(--vf-radius) + .125rem);--vf-control-height-sm: 1.75rem;--vf-control-height-md: 2.25rem;--vf-control-height-lg: 2.5rem;--vf-control-font-size-sm: .875rem;--vf-control-font-size-md: .9375rem;--vf-control-font-size-lg: 1rem;--vf-button-padding-sm: .25rem .55rem;--vf-button-padding-md: .375rem .75rem;--vf-button-padding-lg: .5rem .875rem;--vf-button-gap: .5rem;--vf-field-padding-sm: .25rem .55rem;--vf-field-padding-md: .375rem .65rem;--vf-field-padding-lg: .5rem .75rem;--vf-checkbox-size-sm: 1rem;--vf-checkbox-size-md: 1.125rem;--vf-checkbox-size-lg: 1.25rem;--vf-selection-gap: .65rem;--vf-checkbox-mark-width: .3rem;--vf-checkbox-mark-height: .55rem;--vf-checkbox-mark-stroke-width: 2px;--vf-checkbox-mark-offset-y: -.05rem;--vf-radio-dot-size: .5rem;--vf-switch-width-sm: 2rem;--vf-switch-width-md: 2.25rem;--vf-switch-width-lg: 2.5rem;--vf-switch-height-sm: 1.125rem;--vf-switch-height-md: 1.25rem;--vf-switch-height-lg: 1.375rem;--vf-switch-thumb-size-sm: .75rem;--vf-switch-thumb-size-md: .875rem;--vf-switch-thumb-size-lg: 1rem;--vf-switch-thumb-inset: .1875rem;--vf-textarea-min-height-sm: 4.5rem;--vf-textarea-min-height-md: 6rem;--vf-textarea-min-height-lg: 7rem;--vf-overlay-padding: .875rem;--vf-overlay-gap: .75rem;--vf-overlay-viewport-padding: 1rem;--vf-menu-padding: .4rem;--vf-menu-gap: .2rem;--vf-menu-min-width: 12rem;--vf-surface-padding: .95rem;--vf-surface-gap: .625rem;--vf-surface-padding-compact: .7rem;--vf-surface-gap-compact: .5rem;--vf-section-padding: .75rem .9rem;--vf-section-gap: .75rem;--vf-tabs-gap: .875rem;--vf-tabs-list-gap: .375rem;--vf-tabs-list-padding: .25rem;--vf-tabs-tab-padding-inline: .8rem;--vf-tabs-panel-padding-top: .75rem;--vf-nav-menu-list-gap: .2rem;--vf-nav-menu-nested-gap: .15rem;--vf-nav-menu-collapse-offset-top: .1rem;--vf-nav-menu-collapse-inset-level-0-margin: 1.275rem;--vf-nav-menu-collapse-inset-level-0-padding: .7rem;--vf-nav-menu-collapse-inset-simple-level-0-margin: .75rem;--vf-nav-menu-collapse-inset-simple-level-0-padding: .45rem;--vf-nav-menu-collapse-inset-deep-margin: .35rem;--vf-nav-menu-collapse-inset-deep-padding: .35rem;--vf-nav-menu-collapse-inset-simple-deep-margin: .2rem;--vf-nav-menu-collapse-inset-simple-deep-padding: .2rem;--vf-nav-menu-node-group-spacing: .1rem;--vf-nav-menu-group-padding: .35rem .65rem;--vf-nav-menu-group-font-size: .875rem;--vf-nav-menu-item-padding: .35rem .65rem;--vf-nav-menu-item-gap: .55rem;--vf-nav-menu-leading-icon-size: 1rem;--vf-nav-menu-leading-icon-column-size: 1.25rem;--vf-badge-height: 1.625rem;--vf-badge-padding: .2rem .55rem;--vf-badge-gap: .375rem;--vf-badge-radius: 999px;--vf-badge-font-size: .8125rem;--vf-badge-line-height: 1.2;--vf-tag-height: 1.75rem;--vf-tag-padding: .25rem .6rem;--vf-tag-font-size: .8125rem;--vf-tag-line-height: 1.2;--vf-tooltip-padding: .45rem .65rem;--vf-tooltip-max-width: 16rem;--vf-tooltip-font-size: .8125rem;--vf-tooltip-line-height: 1.4;--vf-dialog-width-sm: 28rem;--vf-dialog-width-md: 36rem;--vf-dialog-width-lg: 48rem;--vf-dialog-max-height: min(85vh, 48rem);--vf-drawer-size-sm: 20rem;--vf-drawer-size-md: 26rem;--vf-drawer-size-lg: 32rem;--vf-drawer-offset-top: 0px;--vf-drawer-body-padding: var(--vf-overlay-padding);--vf-dialog-title-font-size: 1.125rem;--vf-dialog-header-gap: .75rem;--vf-dialog-actions-gap: .5rem;--vf-popover-width: min(100vw - 2rem, 22rem);--vf-floating-arrow-size: .625rem;--vf-overlay-backdrop: rgba(15, 23, 42, .56);--vf-alert-primary-soft: color-mix(in srgb, var(--vf-color-primary) 8%, var(--vf-color-surface));--vf-alert-primary-border-soft: color-mix(in srgb, var(--vf-color-primary) 22%, var(--vf-color-border));--vf-alert-content-gap: .25rem;--vf-alert-title-font-size: .9375rem;--vf-card-title-font-size: 1rem;--vf-panel-title-font-size: .9375rem;--vf-text-line-height: 1.5;--vf-heading-line-height: 1.3;--vf-tabs-line-height: 1.2;--vf-motion-duration-fast: .22s;--vf-motion-duration-normal: .32s;--vf-motion-ease-standard: cubic-bezier(.16, 1, .3, 1);--vf-z-overlay: 1000;--vf-z-drawer: 1000;--vf-z-dropdown: 900;--vf-z-popover: 925;--vf-z-tooltip: 950;--vf-spacing: 1rem;--vf-shadow: none}:root{color-scheme:light;background-color:var(--vf-color-bg);color:var(--vf-color-text)}:root[data-vf-theme=dark]{color-scheme:dark;--vf-color-bg: #0f172a;--vf-color-surface: #162033;--vf-color-surface-muted: #1b2840;--vf-color-text: #eff4ff;--vf-color-muted: #9fb0cf;--vf-color-border: #2d405f;--vf-color-primary: #6ea8fe;--vf-color-primary-contrast: #081120;--vf-color-primary-soft: color-mix(in srgb, var(--vf-color-primary) 12%, var(--vf-color-surface));--vf-color-primary-border-soft: color-mix(in srgb, var(--vf-color-primary) 22%, var(--vf-color-border));--vf-color-focus-ring: color-mix(in srgb, var(--vf-color-primary) 32%, var(--vf-color-surface));--vf-color-success: #4ade80;--vf-color-success-contrast: #081120;--vf-color-info: #38bdf8;--vf-color-info-contrast: #081120;--vf-color-warn: #fbbf24;--vf-color-warn-contrast: #1f1300;--vf-color-help: #a78bfa;--vf-color-help-contrast: #081120;--vf-color-danger: #f87171;--vf-color-danger-contrast: #081120;--vf-color-contrast: #f3f4f6;--vf-color-contrast-contrast: #111827;--vf-color-success-soft: color-mix(in srgb, var(--vf-color-success) 12%, var(--vf-color-surface));--vf-color-info-soft: color-mix(in srgb, var(--vf-color-info) 12%, var(--vf-color-surface));--vf-color-warn-soft: color-mix(in srgb, var(--vf-color-warn) 12%, var(--vf-color-surface));--vf-color-help-soft: color-mix(in srgb, var(--vf-color-help) 12%, var(--vf-color-surface));--vf-color-danger-soft: color-mix(in srgb, var(--vf-color-danger) 12%, var(--vf-color-surface));--vf-color-contrast-soft: color-mix(in srgb, var(--vf-color-contrast) 10%, var(--vf-color-surface));--vf-color-success-border-soft: color-mix(in srgb, var(--vf-color-success) 24%, var(--vf-color-border));--vf-color-info-border-soft: color-mix(in srgb, var(--vf-color-info) 24%, var(--vf-color-border));--vf-color-warn-border-soft: color-mix(in srgb, var(--vf-color-warn) 24%, var(--vf-color-border));--vf-color-help-border-soft: color-mix(in srgb, var(--vf-color-help) 24%, var(--vf-color-border));--vf-color-danger-border-soft: color-mix(in srgb, var(--vf-color-danger) 24%, var(--vf-color-border));--vf-color-contrast-border-soft: color-mix(in srgb, var(--vf-color-contrast) 24%, var(--vf-color-border));--vf-shadow: none}:root.vf-theme-transitioning,:root.vf-theme-transitioning body,:root.vf-theme-transitioning #app,:root.vf-theme-transitioning [class^=vf-],:root.vf-theme-transitioning [class*=" vf-"],:root.vf-theme-transitioning .demo-page,:root.vf-theme-transitioning .demo-container,:root.vf-theme-transitioning .demo-header,:root.vf-theme-transitioning .demo-block,:root.vf-theme-transitioning .demo-example,:root.vf-theme-transitioning .demo-item{transition:background-color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),border-color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),box-shadow var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),fill var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),stroke var(--vf-motion-duration-normal) var(--vf-motion-ease-standard)}.vf-button,.vf-link,.vf-input,.vf-card,.vf-textarea,.vf-panel,.vf-badge,.vf-divider,.vf-dialog,.vf-dialog__overlay,.vf-dialog__content,.vf-drawer,.vf-drawer__overlay,.vf-drawer__content,.vf-dropdown,.vf-dropdown__trigger,.vf-dropdown__menu,.vf-accordion,.vf-accordion__trigger,.vf-nav-menu,.vf-nav-menu__item,.vf-tooltip,.vf-tooltip__trigger,.vf-tooltip__content,.vf-tabs,.vf-tabs__list,.vf-tabs__tab,.vf-tabs__panel{box-sizing:border-box;font:inherit}.vf-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--vf-button-gap);min-height:var(--vf-control-height-md);padding:var(--vf-button-padding-md);border:1px solid transparent;border-radius:var(--vf-radius-control);background:var(--vf-color-primary);color:var(--vf-color-primary-contrast);cursor:pointer;text-decoration:none;transition:background-color .18s ease,border-color .18s ease,color .18s ease}.vf-icon-button{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--vf-control-height-md);height:var(--vf-control-height-md);padding:0;border:1px solid transparent;border-radius:var(--vf-radius-control);background:transparent;color:var(--vf-color-text);cursor:pointer;transition:background-color .18s ease,border-color .18s ease,color .18s ease}.vf-button:focus-visible,.vf-icon-button:focus-visible{outline:none;border-color:var(--vf-color-primary);border-radius:var(--vf-radius-control);box-shadow:0 0 0 var(--vf-focus-ring-width) var(--vf-color-focus-ring)}.vf-button:disabled,.vf-icon-button:disabled{opacity:.65;cursor:not-allowed}.vf-button--secondary{background:var(--vf-color-surface-muted);border-color:var(--vf-color-border);color:var(--vf-color-text)}.vf-button--primary,.vf-icon-button--primary{background:var(--vf-color-primary);color:var(--vf-color-primary-contrast)}.vf-button--success,.vf-icon-button--success{background:var(--vf-color-success);color:var(--vf-color-success-contrast)}.vf-button--info,.vf-icon-button--info{background:var(--vf-color-info);color:var(--vf-color-info-contrast)}.vf-button--warn,.vf-icon-button--warn{background:var(--vf-color-warn);color:var(--vf-color-warn-contrast)}.vf-button--help,.vf-icon-button--help{background:var(--vf-color-help);color:var(--vf-color-help-contrast)}.vf-button--danger,.vf-icon-button--danger{background:var(--vf-color-danger);color:var(--vf-color-danger-contrast)}.vf-button--contrast,.vf-icon-button--contrast{background:var(--vf-color-contrast);color:var(--vf-color-contrast-contrast)}.vf-icon-button--secondary{background:var(--vf-color-surface-muted);border-color:var(--vf-color-border);color:var(--vf-color-text)}.vf-button--ghost,.vf-icon-button--ghost{background:transparent;color:var(--vf-color-text)}.vf-button--secondary:hover:not(:disabled),.vf-icon-button--secondary:hover:not(:disabled){background:var(--vf-color-surface-muted);border-color:var(--vf-color-border);filter:brightness(.98)}.vf-button--ghost:hover:not(:disabled),.vf-icon-button--ghost:hover:not(:disabled){background:var(--vf-color-surface-muted);border-color:transparent}.vf-button--primary:hover:not(:disabled),.vf-button--success:hover:not(:disabled),.vf-button--info:hover:not(:disabled),.vf-button--warn:hover:not(:disabled),.vf-button--help:hover:not(:disabled),.vf-button--danger:hover:not(:disabled),.vf-button--contrast:hover:not(:disabled),.vf-icon-button--primary:hover:not(:disabled){filter:brightness(.96)}.vf-icon-button--success:hover:not(:disabled),.vf-icon-button--info:hover:not(:disabled),.vf-icon-button--warn:hover:not(:disabled),.vf-icon-button--help:hover:not(:disabled),.vf-icon-button--danger:hover:not(:disabled),.vf-icon-button--contrast:hover:not(:disabled){filter:brightness(.96)}.vf-button--sm{min-height:var(--vf-control-height-sm);padding:var(--vf-button-padding-sm);font-size:var(--vf-control-font-size-sm)}.vf-icon-button--sm{width:var(--vf-control-height-sm);height:var(--vf-control-height-sm)}.vf-button--lg{min-height:var(--vf-control-height-lg);padding:var(--vf-button-padding-lg);font-size:var(--vf-control-font-size-lg)}.vf-icon-button--lg{width:var(--vf-control-height-lg);height:var(--vf-control-height-lg)}.vf-button--block{width:100%}.vf-link{display:inline-flex;width:fit-content;max-width:100%;align-self:flex-start;border:1px solid transparent;color:var(--vf-color-primary);text-decoration:none;text-underline-offset:.2em;transition:color .18s ease}.vf-link:hover{color:var(--vf-color-primary)}.vf-link:focus-visible{outline:none;border-color:var(--vf-color-primary);border-radius:var(--vf-radius-control);box-shadow:0 0 0 var(--vf-focus-ring-width) var(--vf-color-focus-ring)}.vf-link--muted{color:var(--vf-color-muted)}.vf-link--underline{text-decoration:underline}.vf-link--underline:focus-visible{text-decoration:none}.vf-input,.vf-textarea{width:100%}.vf-checkbox,.vf-switch,.vf-radio{position:relative;display:inline-flex;align-items:center;gap:var(--vf-selection-gap);width:fit-content;min-width:0;color:var(--vf-color-text);cursor:pointer}.vf-input{min-height:var(--vf-control-height-md);padding:var(--vf-field-padding-md);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-control);background:var(--vf-color-surface);color:var(--vf-color-text);transition:border-color .18s ease}.vf-input::placeholder{color:var(--vf-color-muted)}.vf-input:hover:not(:disabled):not(.vf-input--invalid):not(:focus):not(:focus-visible){border-color:var(--vf-color-primary-border-soft)}.vf-input:focus,.vf-input:focus-visible{border-color:var(--vf-color-primary)}.vf-input:focus-visible,.vf-textarea:focus-visible{outline:none;border-radius:var(--vf-radius-control);box-shadow:0 0 0 var(--vf-focus-ring-width) var(--vf-color-focus-ring)}.vf-input--sm{min-height:var(--vf-control-height-sm);padding:var(--vf-field-padding-sm);font-size:var(--vf-control-font-size-sm)}.vf-input--lg{min-height:var(--vf-control-height-lg);padding:var(--vf-field-padding-lg)}.vf-input--invalid{border-color:var(--vf-color-danger)}.vf-input--invalid:hover:not(:disabled):not(:focus):not(:focus-visible){border-color:var(--vf-color-primary-border-soft)}.vf-textarea{min-height:var(--vf-textarea-min-height-md);padding:var(--vf-field-padding-md);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-control);background:var(--vf-color-surface);color:var(--vf-color-text);resize:vertical;transition:border-color .18s ease}.vf-textarea::placeholder{color:var(--vf-color-muted)}.vf-textarea:hover:not(:disabled):not(.vf-textarea--invalid):not(:focus):not(:focus-visible){border-color:var(--vf-color-primary-border-soft)}.vf-textarea:focus,.vf-textarea:focus-visible{border-color:var(--vf-color-primary)}.vf-textarea--sm{min-height:var(--vf-textarea-min-height-sm);padding:var(--vf-field-padding-sm);font-size:var(--vf-control-font-size-sm)}.vf-textarea--lg{min-height:var(--vf-textarea-min-height-lg);padding:var(--vf-field-padding-lg)}.vf-textarea--invalid{border-color:var(--vf-color-danger)}.vf-textarea--invalid:hover:not(:disabled):not(:focus):not(:focus-visible){border-color:var(--vf-color-primary-border-soft)}.vf-input:disabled,.vf-textarea:disabled{opacity:.65;cursor:not-allowed}.vf-checkbox--disabled,.vf-switch--disabled,.vf-radio--disabled{opacity:.65;cursor:not-allowed}.vf-checkbox__input,.vf-switch__input,.vf-radio__input{position:absolute;width:1px;height:1px;margin:0;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;opacity:0}.vf-checkbox__control,.vf-switch__control,.vf-radio__control{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border:1px solid var(--vf-color-border);background:var(--vf-color-surface);transition:background-color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),border-color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),box-shadow var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),transform var(--vf-motion-duration-normal) var(--vf-motion-ease-standard)}.vf-checkbox__content,.vf-switch__content,.vf-radio__content{min-width:0;color:currentColor;line-height:var(--vf-text-line-height)}.vf-checkbox__control{width:var(--vf-checkbox-size-md);height:var(--vf-checkbox-size-md);border-radius:calc(var(--vf-radius-control-tight) - .0625rem)}.vf-checkbox__mark{width:var(--vf-checkbox-mark-width);height:var(--vf-checkbox-mark-height);border-right:var(--vf-checkbox-mark-stroke-width) solid transparent;border-bottom:var(--vf-checkbox-mark-stroke-width) solid transparent;transform:translateY(var(--vf-checkbox-mark-offset-y)) rotate(45deg) scale(.8);opacity:0;transition:opacity var(--vf-motion-duration-fast) var(--vf-motion-ease-standard),transform var(--vf-motion-duration-fast) var(--vf-motion-ease-standard),border-color var(--vf-motion-duration-fast) var(--vf-motion-ease-standard)}.vf-checkbox__input:checked+.vf-checkbox__control{border-color:var(--vf-color-primary);background:var(--vf-color-primary)}.vf-checkbox__input:checked+.vf-checkbox__control .vf-checkbox__mark{border-right-color:var(--vf-color-primary-contrast);border-bottom-color:var(--vf-color-primary-contrast);transform:translateY(var(--vf-checkbox-mark-offset-y)) rotate(45deg) scale(1);opacity:1}.vf-checkbox:hover:not(.vf-checkbox--disabled) .vf-checkbox__input:not(:checked)+.vf-checkbox__control{border-color:var(--vf-color-primary-border-soft)}.vf-checkbox__input:focus-visible+.vf-checkbox__control{outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 var(--vf-focus-ring-width) var(--vf-color-focus-ring)}.vf-checkbox--invalid .vf-checkbox__control{border-color:var(--vf-color-danger)}.vf-checkbox--invalid:hover:not(.vf-checkbox--disabled) .vf-checkbox__input:not(:checked)+.vf-checkbox__control{border-color:var(--vf-color-primary-border-soft)}.vf-checkbox--sm .vf-checkbox__control{width:var(--vf-checkbox-size-sm);height:var(--vf-checkbox-size-sm)}.vf-checkbox--sm .vf-checkbox__content{font-size:var(--vf-control-font-size-sm)}.vf-checkbox--lg .vf-checkbox__control{width:var(--vf-checkbox-size-lg);height:var(--vf-checkbox-size-lg)}.vf-radio__control{width:var(--vf-checkbox-size-md);height:var(--vf-checkbox-size-md);border-radius:999px;background:color-mix(in srgb,var(--vf-color-border) 12%,var(--vf-color-surface))}.vf-radio__dot{width:var(--vf-radio-dot-size);height:var(--vf-radio-dot-size);border-radius:999px;background:var(--vf-color-primary);transform:scale(.35);opacity:0;transition:opacity var(--vf-motion-duration-fast) var(--vf-motion-ease-standard),transform var(--vf-motion-duration-fast) var(--vf-motion-ease-standard)}.vf-radio__input:checked+.vf-radio__control{border-color:var(--vf-color-primary)}.vf-radio__input:checked+.vf-radio__control .vf-radio__dot{transform:scale(1);opacity:1}.vf-radio:hover:not(.vf-radio--disabled) .vf-radio__input:not(:checked)+.vf-radio__control{border-color:var(--vf-color-primary-border-soft)}.vf-radio__input:focus-visible+.vf-radio__control{outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 var(--vf-focus-ring-width) var(--vf-color-focus-ring)}.vf-radio--invalid .vf-radio__control{border-color:var(--vf-color-danger)}.vf-radio--invalid:hover:not(.vf-radio--disabled) .vf-radio__input:not(:checked)+.vf-radio__control{border-color:var(--vf-color-primary-border-soft)}.vf-radio--sm .vf-radio__control{width:var(--vf-checkbox-size-sm);height:var(--vf-checkbox-size-sm)}.vf-radio--sm .vf-radio__content{font-size:var(--vf-control-font-size-sm)}.vf-radio--lg .vf-radio__control{width:var(--vf-checkbox-size-lg);height:var(--vf-checkbox-size-lg)}.vf-switch__control{width:var(--vf-switch-width-md);height:var(--vf-switch-height-md);border-radius:999px;background:color-mix(in srgb,var(--vf-color-text) 10%,var(--vf-color-surface))}.vf-switch__thumb{position:absolute;left:var(--vf-switch-thumb-inset);width:var(--vf-switch-thumb-size-md);height:var(--vf-switch-thumb-size-md);border-radius:999px;border:1px solid color-mix(in srgb,var(--vf-color-surface) 80%,var(--vf-color-border));background:color-mix(in srgb,var(--vf-color-surface) 88%,var(--vf-color-surface-muted));box-shadow:0 1px 2px color-mix(in srgb,var(--vf-color-text) 18%,transparent);transform:translate(0);transition:transform var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),background-color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),border-color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),box-shadow var(--vf-motion-duration-normal) var(--vf-motion-ease-standard)}.vf-switch__input:checked+.vf-switch__control{border-color:var(--vf-color-primary);background:var(--vf-color-primary)}.vf-switch__input:checked+.vf-switch__control .vf-switch__thumb{transform:translate(calc(var(--vf-switch-width-md) - var(--vf-switch-thumb-size-md) - (var(--vf-switch-thumb-inset) * 2)));border-color:color-mix(in srgb,var(--vf-color-primary) 12%,var(--vf-color-surface));background:var(--vf-color-surface);box-shadow:0 1px 1.5px color-mix(in srgb,var(--vf-color-text) 12%,transparent)}.vf-switch:hover:not(.vf-switch--disabled) .vf-switch__control{background:color-mix(in srgb,var(--vf-color-text) 12%,var(--vf-color-surface))}.vf-switch:hover:not(.vf-switch--disabled) .vf-switch__input:checked+.vf-switch__control{background:color-mix(in srgb,var(--vf-color-primary) 92%,var(--vf-color-surface))}.vf-switch__input:focus-visible+.vf-switch__control{outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 var(--vf-focus-ring-width) var(--vf-color-focus-ring)}.vf-switch--sm .vf-switch__control{width:var(--vf-switch-width-sm);height:var(--vf-switch-height-sm)}.vf-switch--sm .vf-switch__thumb{left:var(--vf-switch-thumb-inset);width:var(--vf-switch-thumb-size-sm);height:var(--vf-switch-thumb-size-sm)}.vf-switch--sm .vf-switch__input:checked+.vf-switch__control .vf-switch__thumb{transform:translate(calc(var(--vf-switch-width-sm) - var(--vf-switch-thumb-size-sm) - (var(--vf-switch-thumb-inset) * 2)))}.vf-switch--sm .vf-switch__content{font-size:var(--vf-control-font-size-sm)}.vf-switch--lg .vf-switch__control{width:var(--vf-switch-width-lg);height:var(--vf-switch-height-lg)}.vf-switch--lg .vf-switch__thumb{left:var(--vf-switch-thumb-inset);width:var(--vf-switch-thumb-size-lg);height:var(--vf-switch-thumb-size-lg)}.vf-switch--lg .vf-switch__input:checked+.vf-switch__control .vf-switch__thumb{transform:translate(calc(var(--vf-switch-width-lg) - var(--vf-switch-thumb-size-lg) - (var(--vf-switch-thumb-inset) * 2)))}.vf-card{display:flex;flex-direction:column;gap:var(--vf-surface-gap);padding:var(--vf-surface-padding);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-surface);background:var(--vf-color-surface);color:var(--vf-color-text);line-height:var(--vf-text-line-height)}.vf-card--compact{padding:var(--vf-surface-padding-compact);gap:var(--vf-surface-gap-compact)}.vf-card__title{margin:0;font-size:var(--vf-card-title-font-size);font-weight:600;line-height:var(--vf-heading-line-height)}.vf-card__body{color:var(--vf-color-muted)}.vf-panel{display:flex;flex-direction:column;gap:var(--vf-surface-gap);padding:var(--vf-surface-padding);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-surface);background:var(--vf-color-surface);color:var(--vf-color-text);line-height:var(--vf-text-line-height)}.vf-panel--subtle{background:transparent;box-shadow:none}.vf-panel__title{margin:0;font-size:var(--vf-panel-title-font-size);font-weight:600;line-height:var(--vf-heading-line-height)}.vf-badge{display:inline-flex;align-items:center;gap:var(--vf-badge-gap);min-height:var(--vf-badge-height);padding:var(--vf-badge-padding);border-radius:var(--vf-badge-radius);font-size:var(--vf-badge-font-size);font-weight:600;line-height:var(--vf-badge-line-height);white-space:nowrap;background:var(--vf-color-surface-muted);border:1px solid var(--vf-color-border);color:var(--vf-color-text)}.vf-badge--primary{background:var(--vf-color-primary-soft);border-color:var(--vf-color-primary);color:var(--vf-color-primary)}.vf-badge--success{background:var(--vf-color-success-soft);border-color:var(--vf-color-success);color:var(--vf-color-success)}.vf-badge--info{background:var(--vf-color-info-soft);border-color:var(--vf-color-info);color:var(--vf-color-info)}.vf-badge--warn{background:var(--vf-color-warn-soft);border-color:var(--vf-color-warn);color:var(--vf-color-warn)}.vf-badge--help{background:var(--vf-color-help-soft);border-color:var(--vf-color-help);color:var(--vf-color-help)}.vf-badge--danger{background:var(--vf-color-danger-soft);border-color:var(--vf-color-danger);color:var(--vf-color-danger)}.vf-badge--contrast{background:var(--vf-color-contrast-soft);border-color:var(--vf-color-contrast);color:var(--vf-color-contrast)}.vf-tag{display:inline-flex;align-items:center;min-height:var(--vf-tag-height);padding:var(--vf-tag-padding);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-control-tight);background:var(--vf-color-surface);color:var(--vf-color-text);font-size:var(--vf-tag-font-size);line-height:var(--vf-tag-line-height);white-space:nowrap}.vf-tag--primary{border-color:var(--vf-color-primary);color:var(--vf-color-primary)}.vf-tag--success{border-color:var(--vf-color-success);color:var(--vf-color-success)}.vf-tag--info{border-color:var(--vf-color-info);color:var(--vf-color-info)}.vf-tag--warn{border-color:var(--vf-color-warn);color:var(--vf-color-warn)}.vf-tag--help{border-color:var(--vf-color-help);color:var(--vf-color-help)}.vf-tag--danger{border-color:var(--vf-color-danger);color:var(--vf-color-danger)}.vf-tag--contrast{border-color:var(--vf-color-contrast);color:var(--vf-color-contrast)}.vf-alert{display:grid;grid-template-columns:auto 1fr;gap:var(--vf-section-gap);padding:var(--vf-section-padding);border:1px solid var(--vf-alert-primary-border-soft);border-radius:var(--vf-radius-surface);background:var(--vf-alert-primary-soft);color:var(--vf-color-text);line-height:var(--vf-text-line-height)}.vf-alert--success{border-color:var(--vf-color-success-border-soft);background:var(--vf-color-success-soft)}.vf-alert--info{border-color:var(--vf-color-info-border-soft);background:var(--vf-color-info-soft)}.vf-alert--warn{border-color:var(--vf-color-warn-border-soft);background:var(--vf-color-warn-soft)}.vf-alert--help{border-color:var(--vf-color-help-border-soft);background:var(--vf-color-help-soft)}.vf-alert--danger{border-color:var(--vf-color-danger-border-soft);background:var(--vf-color-danger-soft)}.vf-alert--contrast{border-color:var(--vf-color-contrast-border-soft);background:var(--vf-color-contrast-soft)}.vf-alert__icon{display:inline-flex;align-items:center;justify-content:center;align-self:start;color:var(--vf-color-primary)}.vf-alert--success .vf-alert__icon{color:var(--vf-color-success)}.vf-alert--info .vf-alert__icon{color:var(--vf-color-info)}.vf-alert--warn .vf-alert__icon{color:var(--vf-color-warn)}.vf-alert--help .vf-alert__icon{color:var(--vf-color-help)}.vf-alert--danger .vf-alert__icon{color:var(--vf-color-danger)}.vf-alert--contrast .vf-alert__icon{color:var(--vf-color-contrast)}.vf-alert__content{display:grid;gap:var(--vf-alert-content-gap)}.vf-alert__title{margin:0;font-size:var(--vf-alert-title-font-size);font-weight:600;line-height:var(--vf-heading-line-height)}.vf-alert__body{color:var(--vf-color-muted);line-height:var(--vf-text-line-height)}.vf-divider{margin:0;border:0;background:var(--vf-color-border);flex-shrink:0}.vf-divider--horizontal{width:100%;height:1px}.vf-divider--vertical{width:1px;align-self:stretch}.vf-dialog{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vf-z-overlay);display:flex;align-items:center;justify-content:center;padding:var(--vf-overlay-viewport-padding)}.vf-drawer{position:fixed;inset-inline:0;inset-block-end:0;inset-block-start:var(--vf-drawer-offset-top);z-index:var(--vf-z-drawer);display:flex;--vf-drawer-offset-x: 0;--vf-drawer-offset-y: 0}.vf-drawer--left{justify-content:flex-start;--vf-drawer-offset-x: -100%}.vf-drawer--right{justify-content:flex-end;--vf-drawer-offset-x: 100%}.vf-drawer--top{align-items:flex-start;--vf-drawer-offset-y: -100%}.vf-drawer--bottom{align-items:flex-end;--vf-drawer-offset-y: 100%}.vf-dialog__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vf-overlay-backdrop);opacity:1;transition:opacity var(--vf-motion-duration-fast) var(--vf-motion-ease-standard)}.vf-drawer__overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vf-overlay-backdrop);opacity:1;transition:opacity var(--vf-motion-duration-normal) var(--vf-motion-ease-standard)}.vf-dialog__content{position:relative;z-index:1;display:flex;flex-direction:column;gap:var(--vf-overlay-gap);width:min(100%,var(--vf-dialog-width-md));max-height:var(--vf-dialog-max-height);overflow:auto;padding:var(--vf-overlay-padding);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-overlay);background:var(--vf-color-surface);color:var(--vf-color-text);line-height:var(--vf-text-line-height);opacity:1;transform:translateZ(0);transition:transform var(--vf-motion-duration-fast) var(--vf-motion-ease-standard),opacity var(--vf-motion-duration-fast) var(--vf-motion-ease-standard)}.vf-drawer__content{position:relative;z-index:1;display:flex;flex-direction:column;gap:var(--vf-overlay-gap);overflow:hidden;padding:0;border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-overlay);background:var(--vf-color-surface);color:var(--vf-color-text);line-height:var(--vf-text-line-height);transform:translateZ(0);transition:transform var(--vf-motion-duration-normal) var(--vf-motion-ease-standard)}.vf-dialog-transition-enter-active,.vf-dialog-transition-leave-active{transition:none}.vf-dialog-transition-enter-from .vf-dialog__overlay,.vf-dialog-transition-leave-to .vf-dialog__overlay{opacity:0}.vf-dialog-transition-enter-from .vf-dialog__content,.vf-dialog-transition-leave-to .vf-dialog__content{opacity:0;transform:translate3d(0,.75rem,0)}.vf-drawer-transition-enter-active,.vf-drawer-transition-leave-active{transition:none}.vf-drawer-transition-enter-from .vf-drawer__overlay,.vf-drawer-transition-leave-to .vf-drawer__overlay{opacity:0}.vf-drawer-transition-enter-from .vf-drawer__content,.vf-drawer-transition-leave-to .vf-drawer__content{transform:translate3d(var(--vf-drawer-offset-x),var(--vf-drawer-offset-y),0)}.vf-dialog__content:focus-visible{outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 var(--vf-focus-ring-width) var(--vf-color-focus-ring)}.vf-drawer__content:focus-visible{outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 var(--vf-focus-ring-width) var(--vf-color-focus-ring)}.vf-dialog__content--sm{width:min(100%,var(--vf-dialog-width-sm))}.vf-dialog__content--lg{width:min(100%,var(--vf-dialog-width-lg))}.vf-drawer__content--left,.vf-drawer__content--right{width:min(100dvw,var(--vf-drawer-size-md));height:100%}.vf-drawer__content--left{border-left:none;border-top:none;border-bottom:none;border-top-right-radius:var(--vf-drawer-radius-top-right, var(--vf-radius-overlay));border-bottom-right-radius:var(--vf-drawer-radius-bottom-right, var(--vf-radius-overlay));border-top-left-radius:var(--vf-drawer-radius-top-left, 0);border-bottom-left-radius:var(--vf-drawer-radius-bottom-left, 0)}.vf-drawer__content--right{border-right:none;border-top:none;border-bottom:none;border-top-left-radius:var(--vf-drawer-radius-top-left, var(--vf-radius-overlay));border-bottom-left-radius:var(--vf-drawer-radius-bottom-left, var(--vf-radius-overlay));border-top-right-radius:var(--vf-drawer-radius-top-right, 0);border-bottom-right-radius:var(--vf-drawer-radius-bottom-right, 0)}.vf-drawer__content--top,.vf-drawer__content--bottom{width:100dvw;min-height:min(100%,var(--vf-drawer-size-md));max-height:100%}.vf-drawer__content--top{border-top:none;border-left:none;border-right:none;border-bottom-left-radius:var(--vf-drawer-radius-bottom-left, var(--vf-radius-overlay));border-bottom-right-radius:var(--vf-drawer-radius-bottom-right, var(--vf-radius-overlay));border-top-left-radius:var(--vf-drawer-radius-top-left, 0);border-top-right-radius:var(--vf-drawer-radius-top-right, 0)}.vf-drawer__content--bottom{border-bottom:none;border-left:none;border-right:none;border-top-left-radius:var(--vf-drawer-radius-top-left, var(--vf-radius-overlay));border-top-right-radius:var(--vf-drawer-radius-top-right, var(--vf-radius-overlay));border-bottom-left-radius:var(--vf-drawer-radius-bottom-left, 0);border-bottom-right-radius:var(--vf-drawer-radius-bottom-right, 0)}.vf-drawer--offset-top.vf-drawer--left .vf-drawer__content--left,.vf-drawer--offset-top.vf-drawer--right .vf-drawer__content--right,.vf-drawer--offset-top.vf-drawer--top .vf-drawer__content--top{border-top:1px solid var(--vf-color-border)}.vf-drawer__content--sm.vf-drawer__content--left,.vf-drawer__content--sm.vf-drawer__content--right{width:min(100dvw,var(--vf-drawer-size-sm))}.vf-drawer__content--lg.vf-drawer__content--left,.vf-drawer__content--lg.vf-drawer__content--right{width:min(100dvw,var(--vf-drawer-size-lg))}.vf-drawer__content--sm.vf-drawer__content--top,.vf-drawer__content--sm.vf-drawer__content--bottom{min-height:min(100dvh,var(--vf-drawer-size-sm))}.vf-drawer__content--lg.vf-drawer__content--top,.vf-drawer__content--lg.vf-drawer__content--bottom{min-height:min(100dvh,var(--vf-drawer-size-lg))}.vf-dialog__header,.vf-dialog__footer,.vf-drawer__header,.vf-drawer__footer{display:flex;align-items:center;justify-content:space-between;gap:var(--vf-dialog-header-gap)}.vf-dialog__actions,.vf-drawer__actions{display:inline-flex;align-items:center;gap:var(--vf-dialog-actions-gap)}.vf-dialog__actions .vf-icon-button,.vf-drawer__actions .vf-icon-button{color:var(--vf-color-muted)}.vf-dialog__actions .vf-icon-button .vif-icon,.vf-drawer__actions .vf-icon-button .vif-icon{width:1rem;height:1rem}.vf-dialog__actions .vf-icon-button:hover:not(:disabled),.vf-drawer__actions .vf-icon-button:hover:not(:disabled){background:var(--vf-color-surface-muted);border-color:var(--vf-color-border);color:var(--vf-color-text)}.vf-dialog__actions .vf-icon-button:active:not(:disabled),.vf-drawer__actions .vf-icon-button:active:not(:disabled){background:var(--vf-color-surface-muted);border-color:var(--vf-color-primary);color:var(--vf-color-primary)}.vf-dialog__title,.vf-drawer__title{margin:0;font-size:var(--vf-dialog-title-font-size);font-weight:700;line-height:var(--vf-heading-line-height)}.vf-dialog__description{margin:0;color:var(--vf-color-muted);line-height:var(--vf-text-line-height)}.vf-dialog__body,.vf-drawer__body{flex:1 1 auto;min-height:0;overflow:auto;color:var(--vf-color-text);line-height:var(--vf-text-line-height)}.vf-drawer__header,.vf-drawer__footer{padding:var(--vf-overlay-padding)}.vf-drawer__body{padding:var(--vf-drawer-body-padding)}.vf-dropdown,.vf-popover{position:relative;display:inline-flex;flex-direction:column}.vf-dropdown__trigger,.vf-popover__trigger{width:fit-content;border:1px solid transparent;border-radius:var(--vf-radius-control)}.vf-dropdown__trigger:focus-visible,.vf-popover__trigger:focus-visible{outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 var(--vf-focus-ring-width) var(--vf-color-focus-ring)}.vf-dropdown__menu{position:fixed;top:0;left:0;z-index:var(--vf-z-dropdown);display:flex;flex-direction:column;gap:var(--vf-menu-gap);min-width:var(--vf-menu-min-width);padding:var(--vf-menu-padding);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-control);background:var(--vf-color-surface);opacity:1;transform:translateZ(0) scale(1);transition:transform var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),opacity var(--vf-motion-duration-normal) var(--vf-motion-ease-standard);will-change:left,top}.vf-dropdown__arrow{position:absolute;z-index:0;width:var(--vf-floating-arrow-size);height:var(--vf-floating-arrow-size);background:var(--vf-color-surface);border-left:1px solid var(--vf-color-border);border-top:1px solid var(--vf-color-border);transform:rotate(45deg);pointer-events:none}.vf-dropdown__arrow--bottom{margin-top:-1px}.vf-dropdown__arrow--top{margin-top:1px}.vf-popover__content{position:fixed;left:0;top:0;z-index:var(--vf-z-popover);width:var(--vf-popover-width);padding:var(--vf-section-padding);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-surface);background:var(--vf-color-surface);color:var(--vf-color-text);line-height:var(--vf-text-line-height);opacity:1;transform:translateZ(0) scale(1);transition:transform var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),opacity var(--vf-motion-duration-normal) var(--vf-motion-ease-standard);will-change:left,top}.vf-popover__arrow{position:absolute;width:var(--vf-floating-arrow-size);height:var(--vf-floating-arrow-size);background:var(--vf-color-surface);border-left:1px solid var(--vf-color-border);border-top:1px solid var(--vf-color-border);transform:rotate(45deg);pointer-events:none}.vf-popover__arrow--bottom{margin-top:-1px}.vf-popover__arrow--top{margin-top:1px}.vf-dropdown__item{position:relative;z-index:1;display:flex;align-items:center;width:100%;min-height:var(--vf-control-height-sm);padding:var(--vf-field-padding-sm);border:1px solid transparent;border-radius:var(--vf-radius-control-tight);background:transparent;color:var(--vf-color-text);text-align:left;cursor:pointer}.vf-dropdown__item:hover{background:transparent;color:var(--vf-color-primary)}.vf-dropdown__item:focus-visible{outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 var(--vf-focus-ring-width) var(--vf-color-focus-ring);background:transparent;color:var(--vf-color-primary)}.vf-tooltip{position:relative;display:inline-flex;width:fit-content;max-width:100%;align-self:flex-start}.vf-tooltip__trigger{display:inline-flex;width:fit-content;max-width:100%}.vf-tooltip__content{position:fixed;left:0;top:0;z-index:var(--vf-z-tooltip);max-width:var(--vf-tooltip-max-width);padding:var(--vf-tooltip-padding);border-radius:var(--vf-radius-control-tight);background:var(--vf-color-text);color:var(--vf-color-bg);font-size:var(--vf-tooltip-font-size);line-height:var(--vf-tooltip-line-height);opacity:1;transform:translateZ(0) scale(1);transition:transform var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),opacity var(--vf-motion-duration-normal) var(--vf-motion-ease-standard);will-change:left,top}.vf-floating-transition-enter-from.vf-dropdown__menu,.vf-floating-transition-leave-to.vf-dropdown__menu,.vf-floating-transition-enter-from.vf-popover__content,.vf-floating-transition-leave-to.vf-popover__content,.vf-floating-transition-enter-from.vf-tooltip__content,.vf-floating-transition-leave-to.vf-tooltip__content{opacity:0;transform:translate3d(0,.25rem,0) scale(.97)}.vf-tooltip__arrow{position:absolute;width:var(--vf-floating-arrow-size);height:var(--vf-floating-arrow-size);background:var(--vf-color-text);transform:rotate(45deg);pointer-events:none}.vf-accordion{border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-surface);background:var(--vf-color-surface);color:var(--vf-color-text)}.vf-accordion__trigger{display:flex;align-items:center;justify-content:space-between;gap:var(--vf-spacing);position:relative;z-index:1;width:100%;padding:var(--vf-section-padding);border:1px solid transparent;border-radius:inherit;background:transparent;color:inherit;cursor:pointer;text-align:left}.vf-accordion__trigger[aria-expanded=true]{border-bottom-left-radius:0;border-bottom-right-radius:0}.vf-accordion__trigger:hover:not(:disabled){background:transparent;color:var(--vf-color-primary)}.vf-accordion__trigger:focus-visible{z-index:2;outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 var(--vf-focus-ring-width) var(--vf-color-focus-ring)}.vf-accordion__icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1rem;height:1rem;line-height:1;color:var(--vf-color-muted);transition:transform var(--vf-motion-duration-normal) var(--vf-motion-ease-standard)}.vf-accordion__icon .vif-icon{width:1rem;height:1rem}.vf-accordion__icon--open{transform:rotate(180deg)}.vf-accordion__content{overflow:hidden;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;background:var(--vf-color-surface)}.vf-accordion__content-inner{position:relative;z-index:1;border-top:1px solid var(--vf-color-border);padding:var(--vf-section-padding);color:var(--vf-color-muted);line-height:var(--vf-text-line-height)}.vf-tabs{display:flex;flex-direction:column;gap:var(--vf-tabs-gap)}.vf-tabs__list{display:inline-flex;align-items:center;gap:var(--vf-tabs-list-gap);width:fit-content;padding:var(--vf-tabs-list-padding);border:1px solid var(--vf-color-border);border-radius:var(--vf-radius-overlay);background:var(--vf-color-surface-muted)}.vf-tabs__tab{display:inline-flex;align-items:center;justify-content:center;min-height:var(--vf-control-height-md);padding:0 var(--vf-tabs-tab-padding-inline);border:1px solid transparent;border-radius:var(--vf-radius-control-tight);background:transparent;color:var(--vf-color-muted);cursor:pointer;white-space:nowrap;line-height:var(--vf-tabs-line-height);transition:background-color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),border-color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),box-shadow var(--vf-motion-duration-normal) var(--vf-motion-ease-standard)}.vf-tabs__tab:hover:not(:disabled){color:var(--vf-color-primary);background:transparent}.vf-tabs__tab[aria-selected=true]{background:var(--vf-color-surface);color:var(--vf-color-primary);border:1px solid var(--vf-color-primary)}.vf-tabs__tab:focus-visible{outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 var(--vf-focus-ring-width) var(--vf-color-focus-ring)}.vf-tabs__tab:disabled{cursor:not-allowed;opacity:.5}.vf-tabs__panel{border:1px solid transparent;border-radius:var(--vf-radius-control);padding:var(--vf-tabs-panel-padding-top) 0 0;color:var(--vf-color-text);line-height:var(--vf-text-line-height)}.vf-tabs__panel:focus-visible{outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 var(--vf-focus-ring-width) var(--vf-color-focus-ring)}.vf-nav-menu{display:flex;flex-direction:column;width:100%;min-width:0}.vf-nav-menu__list{display:grid;gap:var(--vf-nav-menu-list-gap);margin:0;padding:0;list-style:none}.vf-nav-menu__list--nested{margin-top:0;gap:var(--vf-nav-menu-nested-gap);padding-top:0}.vf-nav-menu__collapse{overflow:hidden;margin-top:var(--vf-nav-menu-collapse-offset-top)}.vf-nav-menu__collapse--level-0{margin-left:var(--vf-nav-menu-collapse-inset-level-0-margin);padding-left:var(--vf-nav-menu-collapse-inset-level-0-padding)}.vf-nav-menu--simple .vf-nav-menu__collapse--level-0{margin-left:var(--vf-nav-menu-collapse-inset-simple-level-0-margin);padding-left:var(--vf-nav-menu-collapse-inset-simple-level-0-padding)}.vf-nav-menu__collapse:not(.vf-nav-menu__collapse--level-0){margin-left:var(--vf-nav-menu-collapse-inset-deep-margin);padding-left:var(--vf-nav-menu-collapse-inset-deep-padding)}.vf-nav-menu--simple .vf-nav-menu__collapse:not(.vf-nav-menu__collapse--level-0){margin-left:var(--vf-nav-menu-collapse-inset-simple-deep-margin);padding-left:var(--vf-nav-menu-collapse-inset-simple-deep-padding)}.vf-nav-menu__node{display:block}.vf-nav-menu__node:has(.vf-nav-menu__group)+.vf-nav-menu__node:has(.vf-nav-menu__group){margin-top:var(--vf-nav-menu-node-group-spacing)}.vf-nav-menu__collapse>.vf-nav-menu__list--nested>.vf-nav-menu__node:first-child>.vf-nav-menu__group{padding-top:0}.vf-nav-menu__group{display:flex;align-items:center;min-height:var(--vf-control-height-sm);padding:var(--vf-nav-menu-group-padding);cursor:default}.vf-nav-menu__group-label{font-size:var(--vf-nav-menu-group-font-size);font-weight:400;letter-spacing:0;color:color-mix(in srgb,var(--vf-color-muted) 88%,var(--vf-color-text))}.vf-nav-menu__item-content{display:inline-flex;align-items:center;gap:var(--vf-nav-menu-item-gap);min-width:0}.vf-nav-menu__leading-icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--vf-nav-menu-leading-icon-column-size);min-width:var(--vf-nav-menu-leading-icon-column-size);color:currentColor}.vf-nav-menu__leading-icon .vif-icon{width:var(--vf-nav-menu-leading-icon-size);height:var(--vf-nav-menu-leading-icon-size)}.vf-nav-menu__item{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:var(--vf-control-height-sm);padding:var(--vf-nav-menu-item-padding);border:1px solid transparent;border-radius:var(--vf-radius-control);background:transparent;font-size:1rem;color:var(--vf-color-muted);text-align:left;text-decoration:none;cursor:pointer;transition:background-color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),border-color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),box-shadow var(--vf-motion-duration-normal) var(--vf-motion-ease-standard)}.vf-nav-menu__item:hover:not(:disabled):not(.vf-nav-menu__item--active){color:var(--vf-color-primary);background:color-mix(in srgb,var(--vf-color-primary) 12%,var(--vf-color-surface))}.vf-nav-menu__item:focus-visible{outline:none;border-color:var(--vf-color-primary);box-shadow:0 0 0 var(--vf-focus-ring-width) var(--vf-color-focus-ring)}.vf-nav-menu__item--active{color:var(--vf-color-primary);background:color-mix(in srgb,var(--vf-color-primary) 16%,var(--vf-color-surface))}.vf-nav-menu__item--disabled{cursor:not-allowed;opacity:.5}.vf-nav-menu__item--branch{font-weight:400;color:color-mix(in srgb,var(--vf-color-text) 82%,var(--vf-color-muted))}.vf-nav-menu__label{min-width:0;overflow-wrap:anywhere}.vf-nav-menu__icon{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:1rem;height:1rem;line-height:1;color:var(--vf-color-muted);transition:transform var(--vf-motion-duration-normal) var(--vf-motion-ease-standard)}.vf-nav-menu__icon .vif-icon{width:1rem;height:1rem}.vf-nav-menu__icon--open{transform:rotate(180deg)}
@@ -1 +1 @@
1
- {"version":3,"file":"default-preset.d.ts","sourceRoot":"","sources":["../../src/theme/default-preset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAYlD,eAAO,MAAM,kBAAkB,EAAE,aAoHhC,CAAA"}
1
+ {"version":3,"file":"default-preset.d.ts","sourceRoot":"","sources":["../../src/theme/default-preset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAalD,eAAO,MAAM,kBAAkB,EAAE,aAgNhC,CAAA"}
@@ -0,0 +1,10 @@
1
+ export declare const vfMotionTokens: {
2
+ readonly durationFast: "220ms";
3
+ readonly durationNormal: "320ms";
4
+ readonly easeStandard: "cubic-bezier(0.16, 1, 0.3, 1)";
5
+ };
6
+ export declare const vfMotionDurationsMs: {
7
+ readonly fast: number;
8
+ readonly normal: number;
9
+ };
10
+ //# sourceMappingURL=motion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion.d.ts","sourceRoot":"","sources":["../../src/theme/motion.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;;;;CAIjB,CAAA;AAMV,eAAO,MAAM,mBAAmB;;;CAGtB,CAAA"}
package/dist/theme-api.js CHANGED
@@ -1,4 +1,4 @@
1
- import { d as t, e as a } from "./public-D2viaiWv.js";
1
+ import { d as t, e as a } from "./public-CFcLjh0P.js";
2
2
  export {
3
3
  t as createThemePreset,
4
4
  a as defaultThemePreset
package/dist/theme.css CHANGED
@@ -18,12 +18,50 @@
18
18
  --vf-color-primary-contrast: #081120;
19
19
  --vf-color-primary-soft: color-mix(in srgb, var(--vf-color-primary) 12%, var(--vf-color-surface));
20
20
  --vf-color-primary-border-soft: color-mix(in srgb, var(--vf-color-primary) 22%, var(--vf-color-border));
21
- --vf-color-focus-ring: color-mix(in srgb, var(--vf-color-primary) 52%, var(--vf-color-surface));
21
+ --vf-color-focus-ring: color-mix(in srgb, var(--vf-color-primary) 32%, var(--vf-color-surface));
22
22
  --vf-color-success: #4ade80;
23
+ --vf-color-success-contrast: #081120;
24
+ --vf-color-info: #38bdf8;
25
+ --vf-color-info-contrast: #081120;
26
+ --vf-color-warn: #fbbf24;
27
+ --vf-color-warn-contrast: #1f1300;
28
+ --vf-color-help: #a78bfa;
29
+ --vf-color-help-contrast: #081120;
23
30
  --vf-color-danger: #f87171;
31
+ --vf-color-danger-contrast: #081120;
32
+ --vf-color-contrast: #f3f4f6;
33
+ --vf-color-contrast-contrast: #111827;
24
34
  --vf-color-success-soft: color-mix(in srgb, var(--vf-color-success) 12%, var(--vf-color-surface));
35
+ --vf-color-info-soft: color-mix(in srgb, var(--vf-color-info) 12%, var(--vf-color-surface));
36
+ --vf-color-warn-soft: color-mix(in srgb, var(--vf-color-warn) 12%, var(--vf-color-surface));
37
+ --vf-color-help-soft: color-mix(in srgb, var(--vf-color-help) 12%, var(--vf-color-surface));
25
38
  --vf-color-danger-soft: color-mix(in srgb, var(--vf-color-danger) 12%, var(--vf-color-surface));
39
+ --vf-color-contrast-soft: color-mix(in srgb, var(--vf-color-contrast) 10%, var(--vf-color-surface));
26
40
  --vf-color-success-border-soft: color-mix(in srgb, var(--vf-color-success) 24%, var(--vf-color-border));
41
+ --vf-color-info-border-soft: color-mix(in srgb, var(--vf-color-info) 24%, var(--vf-color-border));
42
+ --vf-color-warn-border-soft: color-mix(in srgb, var(--vf-color-warn) 24%, var(--vf-color-border));
43
+ --vf-color-help-border-soft: color-mix(in srgb, var(--vf-color-help) 24%, var(--vf-color-border));
27
44
  --vf-color-danger-border-soft: color-mix(in srgb, var(--vf-color-danger) 24%, var(--vf-color-border));
45
+ --vf-color-contrast-border-soft: color-mix(in srgb, var(--vf-color-contrast) 24%, var(--vf-color-border));
28
46
  --vf-shadow: none;
29
47
  }
48
+
49
+ :root.vf-theme-transitioning,
50
+ :root.vf-theme-transitioning body,
51
+ :root.vf-theme-transitioning #app,
52
+ :root.vf-theme-transitioning [class^='vf-'],
53
+ :root.vf-theme-transitioning [class*=' vf-'],
54
+ :root.vf-theme-transitioning .demo-page,
55
+ :root.vf-theme-transitioning .demo-container,
56
+ :root.vf-theme-transitioning .demo-header,
57
+ :root.vf-theme-transitioning .demo-block,
58
+ :root.vf-theme-transitioning .demo-example,
59
+ :root.vf-theme-transitioning .demo-item {
60
+ transition:
61
+ background-color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),
62
+ border-color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),
63
+ color var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),
64
+ box-shadow var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),
65
+ fill var(--vf-motion-duration-normal) var(--vf-motion-ease-standard),
66
+ stroke var(--vf-motion-duration-normal) var(--vf-motion-ease-standard);
67
+ }