@codemonster-ru/vueforge-core 1.3.0 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -8,13 +8,14 @@ Stable foundation layer for the VueForge design system.
8
8
 
9
9
  ## Current scope
10
10
 
11
- Version `1.1.0` focuses on:
11
+ Version `1.3.0` focuses on:
12
12
 
13
13
  - Vue 3 library build with Vite
14
14
  - TypeScript declarations
15
15
  - Vitest + Vue Test Utils
16
16
  - Theme provider and `useTheme`
17
17
  - CSS design tokens and theme variables
18
+ - Built-in default theme preset powered by the shared `@codemonster-ru/vueforge-theme` engine
18
19
 
19
20
  ## Installation
20
21
 
@@ -47,6 +48,22 @@ app.use(VueForge, {
47
48
 
48
49
  For the full theme runtime and preset API, see [Theme API](./docs/theme-api.md).
49
50
 
51
+ ## Theme Architecture
52
+
53
+ VueForge now has two theme layers:
54
+
55
+ - `@codemonster-ru/vueforge-theme`
56
+ - neutral theme engine
57
+ - token and preset types
58
+ - preset resolution and CSS variable serialization
59
+ - mode helpers and shared motion tokens
60
+ - `@codemonster-ru/vueforge-core`
61
+ - built-in `defaultThemePreset`
62
+ - Vue plugin and `VfThemeProvider`
63
+ - component library and package CSS
64
+
65
+ This means `vueforge-core` is still the easiest way to consume the default VueForge design language, while higher-level packages can share the same engine without depending on `core` runtime helpers.
66
+
50
67
  ## Foundation Usage
51
68
 
52
69
  Use the full package when you need VueForge components, styles, and theme runtime together.
@@ -1,2 +1,2 @@
1
- @import "./tokens.css";
2
- @import "./theme.css";
1
+ @import "../../.generated/theme/tokens.css";
2
+ @import "../../.generated/theme/theme.css";
@@ -1,4 +1,4 @@
1
- /* Generated from src/foundation/breakpoints.json */
1
+ /* Generated from src/theme/default-preset-source.ts */
2
2
  :root {
3
3
  --vf-breakpoint-xs: 480px;
4
4
  --vf-breakpoint-sm: 640px;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,yBAAyB,CAAC;AAEjC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,QAAQ,EACR,MAAM,EACN,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,YAAY,EACZ,OAAO,EACP,MAAM,EACN,SAAS,EACT,OAAO,EACP,SAAS,EACT,OAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACN,UAAU,EACV,SAAS,GACV,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,eAAe,EACf,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,KAAK,EACL,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EACV,WAAW,EACX,eAAe,EACf,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,SAAS,EACT,kBAAkB,EAClB,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,eAAe,EACf,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gCAAgC,CAAC;AACxC,OAAO,+BAA+B,CAAC;AACvC,OAAO,yBAAyB,CAAC;AAEjC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,QAAQ,EACR,MAAM,EACN,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,UAAU,EACV,YAAY,EACZ,OAAO,EACP,MAAM,EACN,SAAS,EACT,OAAO,EACP,SAAS,EACT,OAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACN,UAAU,EACV,SAAS,GACV,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,eAAe,EACf,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,KAAK,EACL,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EACV,WAAW,EACX,eAAe,EACf,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,SAAS,EACT,kBAAkB,EAClB,UAAU,GACX,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACV,eAAe,EACf,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,EACb,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,cAAc,CAAC"}
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) 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
+ :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-focus-ring-width: 3px;--vf-z-overlay: 1000;--vf-z-drawer: 1000;--vf-z-dropdown: 900;--vf-z-popover: 925;--vf-z-tooltip: 950;--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)}
@@ -0,0 +1,223 @@
1
+ export declare const breakpointTokens: {
2
+ breakpointXs: string;
3
+ breakpointSm: string;
4
+ breakpointMd: string;
5
+ breakpointLg: string;
6
+ breakpointXl: string;
7
+ breakpoint2xl: string;
8
+ };
9
+ export declare const defaultThemePresetSource: {
10
+ name: string;
11
+ tokens: {
12
+ controlHeightSm: string;
13
+ controlHeightMd: string;
14
+ controlHeightLg: string;
15
+ controlFontSizeSm: string;
16
+ controlFontSizeMd: string;
17
+ controlFontSizeLg: string;
18
+ buttonPaddingSm: string;
19
+ buttonPaddingMd: string;
20
+ buttonPaddingLg: string;
21
+ buttonGap: string;
22
+ fieldPaddingSm: string;
23
+ fieldPaddingMd: string;
24
+ fieldPaddingLg: string;
25
+ checkboxSizeSm: string;
26
+ checkboxSizeMd: string;
27
+ checkboxSizeLg: string;
28
+ selectionGap: string;
29
+ checkboxMarkWidth: string;
30
+ checkboxMarkHeight: string;
31
+ checkboxMarkStrokeWidth: string;
32
+ checkboxMarkOffsetY: string;
33
+ radioDotSize: string;
34
+ switchWidthSm: string;
35
+ switchWidthMd: string;
36
+ switchWidthLg: string;
37
+ switchHeightSm: string;
38
+ switchHeightMd: string;
39
+ switchHeightLg: string;
40
+ switchThumbSizeSm: string;
41
+ switchThumbSizeMd: string;
42
+ switchThumbSizeLg: string;
43
+ switchThumbInset: string;
44
+ textareaMinHeightSm: string;
45
+ textareaMinHeightMd: string;
46
+ textareaMinHeightLg: string;
47
+ overlayPadding: string;
48
+ overlayGap: string;
49
+ overlayViewportPadding: string;
50
+ menuPadding: string;
51
+ menuGap: string;
52
+ menuMinWidth: string;
53
+ surfacePadding: string;
54
+ surfaceGap: string;
55
+ surfacePaddingCompact: string;
56
+ surfaceGapCompact: string;
57
+ sectionPadding: string;
58
+ sectionGap: string;
59
+ tabsGap: string;
60
+ tabsListGap: string;
61
+ tabsListPadding: string;
62
+ tabsTabPaddingInline: string;
63
+ tabsPanelPaddingTop: string;
64
+ navMenuListGap: string;
65
+ navMenuNestedGap: string;
66
+ navMenuCollapseOffsetTop: string;
67
+ navMenuCollapseInsetLevel0Margin: string;
68
+ navMenuCollapseInsetLevel0Padding: string;
69
+ navMenuCollapseInsetSimpleLevel0Margin: string;
70
+ navMenuCollapseInsetSimpleLevel0Padding: string;
71
+ navMenuCollapseInsetDeepMargin: string;
72
+ navMenuCollapseInsetDeepPadding: string;
73
+ navMenuCollapseInsetSimpleDeepMargin: string;
74
+ navMenuCollapseInsetSimpleDeepPadding: string;
75
+ navMenuNodeGroupSpacing: string;
76
+ navMenuGroupPadding: string;
77
+ navMenuGroupFontSize: string;
78
+ navMenuItemPadding: string;
79
+ navMenuItemGap: string;
80
+ navMenuLeadingIconSize: string;
81
+ navMenuLeadingIconColumnSize: string;
82
+ badgeHeight: string;
83
+ badgePadding: string;
84
+ badgeGap: string;
85
+ badgeRadius: string;
86
+ badgeFontSize: string;
87
+ badgeLineHeight: string;
88
+ tagHeight: string;
89
+ tagPadding: string;
90
+ tagFontSize: string;
91
+ tagLineHeight: string;
92
+ tooltipPadding: string;
93
+ tooltipMaxWidth: string;
94
+ tooltipFontSize: string;
95
+ tooltipLineHeight: string;
96
+ dialogWidthSm: string;
97
+ dialogWidthMd: string;
98
+ dialogWidthLg: string;
99
+ dialogMaxHeight: string;
100
+ drawerSizeSm: string;
101
+ drawerSizeMd: string;
102
+ drawerSizeLg: string;
103
+ drawerOffsetTop: string;
104
+ drawerBodyPadding: string;
105
+ dialogTitleFontSize: string;
106
+ dialogHeaderGap: string;
107
+ dialogActionsGap: string;
108
+ popoverWidth: string;
109
+ floatingArrowSize: string;
110
+ overlayBackdrop: string;
111
+ alertPrimarySoft: string;
112
+ alertPrimaryBorderSoft: string;
113
+ alertContentGap: string;
114
+ alertTitleFontSize: string;
115
+ cardTitleFontSize: string;
116
+ panelTitleFontSize: string;
117
+ textLineHeight: string;
118
+ headingLineHeight: string;
119
+ tabsLineHeight: string;
120
+ motionDurationFast: "220ms";
121
+ motionDurationNormal: "320ms";
122
+ motionEaseStandard: "cubic-bezier(0.16, 1, 0.3, 1)";
123
+ zOverlay: string;
124
+ zDrawer: string;
125
+ zDropdown: string;
126
+ zPopover: string;
127
+ zTooltip: string;
128
+ spacing: string;
129
+ shadow: string;
130
+ breakpointXs: string;
131
+ breakpointSm: string;
132
+ breakpointMd: string;
133
+ breakpointLg: string;
134
+ breakpointXl: string;
135
+ breakpoint2xl: string;
136
+ colorBg: string;
137
+ colorSurface: string;
138
+ colorSurfaceMuted: string;
139
+ colorText: string;
140
+ colorMuted: string;
141
+ colorBorder: string;
142
+ colorPrimary: string;
143
+ colorPrimaryContrast: string;
144
+ colorPrimarySoft: string;
145
+ colorPrimaryBorderSoft: string;
146
+ colorFocusRing: string;
147
+ colorSuccess: string;
148
+ colorSuccessContrast: string;
149
+ colorInfo: string;
150
+ colorInfoContrast: string;
151
+ colorWarn: string;
152
+ colorWarnContrast: string;
153
+ colorHelp: string;
154
+ colorHelpContrast: string;
155
+ colorDanger: string;
156
+ colorDangerContrast: string;
157
+ colorContrast: string;
158
+ colorContrastContrast: string;
159
+ colorSuccessSoft: string;
160
+ colorInfoSoft: string;
161
+ colorWarnSoft: string;
162
+ colorHelpSoft: string;
163
+ colorDangerSoft: string;
164
+ colorContrastSoft: string;
165
+ colorSuccessBorderSoft: string;
166
+ colorInfoBorderSoft: string;
167
+ colorWarnBorderSoft: string;
168
+ colorHelpBorderSoft: string;
169
+ colorDangerBorderSoft: string;
170
+ colorContrastBorderSoft: string;
171
+ focusRingWidth: string;
172
+ radius: string;
173
+ radiusControl: string;
174
+ radiusControlTight: string;
175
+ radiusSurface: string;
176
+ radiusOverlay: string;
177
+ };
178
+ dark: {
179
+ colorBg: string;
180
+ colorSurface: string;
181
+ colorSurfaceMuted: string;
182
+ colorText: string;
183
+ colorMuted: string;
184
+ colorBorder: string;
185
+ colorPrimary: string;
186
+ colorPrimaryContrast: string;
187
+ colorPrimarySoft: string;
188
+ colorPrimaryBorderSoft: string;
189
+ colorFocusRing: string;
190
+ colorSuccess: string;
191
+ colorSuccessContrast: string;
192
+ colorInfo: string;
193
+ colorInfoContrast: string;
194
+ colorWarn: string;
195
+ colorWarnContrast: string;
196
+ colorHelp: string;
197
+ colorHelpContrast: string;
198
+ colorDanger: string;
199
+ colorDangerContrast: string;
200
+ colorContrast: string;
201
+ colorContrastContrast: string;
202
+ colorSuccessSoft: string;
203
+ colorInfoSoft: string;
204
+ colorWarnSoft: string;
205
+ colorHelpSoft: string;
206
+ colorDangerSoft: string;
207
+ colorContrastSoft: string;
208
+ colorSuccessBorderSoft: string;
209
+ colorInfoBorderSoft: string;
210
+ colorWarnBorderSoft: string;
211
+ colorHelpBorderSoft: string;
212
+ colorDangerBorderSoft: string;
213
+ colorContrastBorderSoft: string;
214
+ focusRingWidth: string;
215
+ zOverlay: string;
216
+ zDrawer: string;
217
+ zDropdown: string;
218
+ zPopover: string;
219
+ zTooltip: string;
220
+ shadow: string;
221
+ };
222
+ };
223
+ //# sourceMappingURL=default-preset-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-preset-source.d.ts","sourceRoot":"","sources":["../../src/theme/default-preset-source.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB;;;;;;;CAO5B,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgPpC,CAAC"}
@@ -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,CAAC;AAanD,eAAO,MAAM,kBAAkB,EAAE,aAgPhC,CAAC"}
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,CAAC;AAGnD,eAAO,MAAM,kBAAkB,EAAE,aAAwC,CAAC"}
package/dist/theme-api.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { vfMotionTokens as o } from "@codemonster-ru/vueforge-theme";
2
- import { createThemePreset as t } from "@codemonster-ru/vueforge-theme";
2
+ import { createThemePreset as f } from "@codemonster-ru/vueforge-theme";
3
3
  import { b as r } from "./breakpoints-hxAiWC8U.js";
4
4
  const e = {
5
5
  breakpointXs: `${r.xs}px`,
@@ -8,7 +8,7 @@ const e = {
8
8
  breakpointLg: `${r.lg}px`,
9
9
  breakpointXl: `${r.xl}px`,
10
10
  breakpoint2xl: `${r["2xl"]}px`
11
- }, i = {
11
+ }, a = {
12
12
  name: "vueforge-default",
13
13
  tokens: {
14
14
  colorBg: "#fcfcfd",
@@ -216,8 +216,8 @@ const e = {
216
216
  zTooltip: "950",
217
217
  shadow: "none"
218
218
  }
219
- };
219
+ }, l = a;
220
220
  export {
221
- t as createThemePreset,
222
- i as defaultThemePreset
221
+ f as createThemePreset,
222
+ l as defaultThemePreset
223
223
  };
package/dist/theme.css CHANGED
@@ -1,5 +1,5 @@
1
- /* Fallback mode styles for package CSS consumers.
2
- Runtime preset injection is the primary theme API. */
1
+ /* Generated from src/theme/default-preset-source.ts. */
2
+ /* Fallback mode styles for package CSS consumers. */
3
3
  :root {
4
4
  color-scheme: light;
5
5
  background-color: var(--vf-color-bg);
@@ -16,21 +16,9 @@
16
16
  --vf-color-border: #2d405f;
17
17
  --vf-color-primary: #6ea8fe;
18
18
  --vf-color-primary-contrast: #081120;
19
- --vf-color-primary-soft: color-mix(
20
- in srgb,
21
- var(--vf-color-primary) 12%,
22
- var(--vf-color-surface)
23
- );
24
- --vf-color-primary-border-soft: color-mix(
25
- in srgb,
26
- var(--vf-color-primary) 22%,
27
- var(--vf-color-border)
28
- );
29
- --vf-color-focus-ring: color-mix(
30
- in srgb,
31
- var(--vf-color-primary) 32%,
32
- var(--vf-color-surface)
33
- );
19
+ --vf-color-primary-soft: color-mix(in srgb, var(--vf-color-primary) 12%, var(--vf-color-surface));
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) 32%, var(--vf-color-surface));
34
22
  --vf-color-success: #4ade80;
35
23
  --vf-color-success-contrast: #081120;
36
24
  --vf-color-info: #38bdf8;
@@ -43,66 +31,24 @@
43
31
  --vf-color-danger-contrast: #081120;
44
32
  --vf-color-contrast: #f3f4f6;
45
33
  --vf-color-contrast-contrast: #111827;
46
- --vf-color-success-soft: color-mix(
47
- in srgb,
48
- var(--vf-color-success) 12%,
49
- var(--vf-color-surface)
50
- );
51
- --vf-color-info-soft: color-mix(
52
- in srgb,
53
- var(--vf-color-info) 12%,
54
- var(--vf-color-surface)
55
- );
56
- --vf-color-warn-soft: color-mix(
57
- in srgb,
58
- var(--vf-color-warn) 12%,
59
- var(--vf-color-surface)
60
- );
61
- --vf-color-help-soft: color-mix(
62
- in srgb,
63
- var(--vf-color-help) 12%,
64
- var(--vf-color-surface)
65
- );
66
- --vf-color-danger-soft: color-mix(
67
- in srgb,
68
- var(--vf-color-danger) 12%,
69
- var(--vf-color-surface)
70
- );
71
- --vf-color-contrast-soft: color-mix(
72
- in srgb,
73
- var(--vf-color-contrast) 10%,
74
- var(--vf-color-surface)
75
- );
76
- --vf-color-success-border-soft: color-mix(
77
- in srgb,
78
- var(--vf-color-success) 24%,
79
- var(--vf-color-border)
80
- );
81
- --vf-color-info-border-soft: color-mix(
82
- in srgb,
83
- var(--vf-color-info) 24%,
84
- var(--vf-color-border)
85
- );
86
- --vf-color-warn-border-soft: color-mix(
87
- in srgb,
88
- var(--vf-color-warn) 24%,
89
- var(--vf-color-border)
90
- );
91
- --vf-color-help-border-soft: color-mix(
92
- in srgb,
93
- var(--vf-color-help) 24%,
94
- var(--vf-color-border)
95
- );
96
- --vf-color-danger-border-soft: color-mix(
97
- in srgb,
98
- var(--vf-color-danger) 24%,
99
- var(--vf-color-border)
100
- );
101
- --vf-color-contrast-border-soft: color-mix(
102
- in srgb,
103
- var(--vf-color-contrast) 24%,
104
- var(--vf-color-border)
105
- );
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));
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));
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));
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));
46
+ --vf-focus-ring-width: 3px;
47
+ --vf-z-overlay: 1000;
48
+ --vf-z-drawer: 1000;
49
+ --vf-z-dropdown: 900;
50
+ --vf-z-popover: 925;
51
+ --vf-z-tooltip: 950;
106
52
  --vf-shadow: none;
107
53
  }
108
54
 
package/dist/tokens.css CHANGED
@@ -1,5 +1,5 @@
1
- /* Fallback baseline tokens for package CSS consumers.
2
- Canonical token values live in src/theme/default-preset.ts. */
1
+ /* Generated from src/theme/default-preset-source.ts. */
2
+ /* Fallback baseline tokens for package CSS consumers. */
3
3
  @import "./generated-breakpoints.css";
4
4
 
5
5
  :root {
@@ -11,21 +11,9 @@
11
11
  --vf-color-border: #d8e0ef;
12
12
  --vf-color-primary: #0b63f6;
13
13
  --vf-color-primary-contrast: #ffffff;
14
- --vf-color-primary-soft: color-mix(
15
- in srgb,
16
- var(--vf-color-primary) 12%,
17
- var(--vf-color-surface)
18
- );
19
- --vf-color-primary-border-soft: color-mix(
20
- in srgb,
21
- var(--vf-color-primary) 22%,
22
- var(--vf-color-border)
23
- );
24
- --vf-color-focus-ring: color-mix(
25
- in srgb,
26
- var(--vf-color-primary) 32%,
27
- var(--vf-color-surface)
28
- );
14
+ --vf-color-primary-soft: color-mix(in srgb, var(--vf-color-primary) 12%, var(--vf-color-surface));
15
+ --vf-color-primary-border-soft: color-mix(in srgb, var(--vf-color-primary) 22%, var(--vf-color-border));
16
+ --vf-color-focus-ring: color-mix(in srgb, var(--vf-color-primary) 32%, var(--vf-color-surface));
29
17
  --vf-color-success: #16a34a;
30
18
  --vf-color-success-contrast: #ffffff;
31
19
  --vf-color-info: #0ea5e9;
@@ -38,66 +26,18 @@
38
26
  --vf-color-danger-contrast: #ffffff;
39
27
  --vf-color-contrast: #111827;
40
28
  --vf-color-contrast-contrast: #ffffff;
41
- --vf-color-success-soft: color-mix(
42
- in srgb,
43
- var(--vf-color-success) 12%,
44
- var(--vf-color-surface)
45
- );
46
- --vf-color-info-soft: color-mix(
47
- in srgb,
48
- var(--vf-color-info) 12%,
49
- var(--vf-color-surface)
50
- );
51
- --vf-color-warn-soft: color-mix(
52
- in srgb,
53
- var(--vf-color-warn) 12%,
54
- var(--vf-color-surface)
55
- );
56
- --vf-color-help-soft: color-mix(
57
- in srgb,
58
- var(--vf-color-help) 12%,
59
- var(--vf-color-surface)
60
- );
61
- --vf-color-danger-soft: color-mix(
62
- in srgb,
63
- var(--vf-color-danger) 12%,
64
- var(--vf-color-surface)
65
- );
66
- --vf-color-contrast-soft: color-mix(
67
- in srgb,
68
- var(--vf-color-contrast) 10%,
69
- var(--vf-color-surface)
70
- );
71
- --vf-color-success-border-soft: color-mix(
72
- in srgb,
73
- var(--vf-color-success) 24%,
74
- var(--vf-color-border)
75
- );
76
- --vf-color-info-border-soft: color-mix(
77
- in srgb,
78
- var(--vf-color-info) 24%,
79
- var(--vf-color-border)
80
- );
81
- --vf-color-warn-border-soft: color-mix(
82
- in srgb,
83
- var(--vf-color-warn) 24%,
84
- var(--vf-color-border)
85
- );
86
- --vf-color-help-border-soft: color-mix(
87
- in srgb,
88
- var(--vf-color-help) 24%,
89
- var(--vf-color-border)
90
- );
91
- --vf-color-danger-border-soft: color-mix(
92
- in srgb,
93
- var(--vf-color-danger) 24%,
94
- var(--vf-color-border)
95
- );
96
- --vf-color-contrast-border-soft: color-mix(
97
- in srgb,
98
- var(--vf-color-contrast) 24%,
99
- var(--vf-color-border)
100
- );
29
+ --vf-color-success-soft: color-mix(in srgb, var(--vf-color-success) 12%, var(--vf-color-surface));
30
+ --vf-color-info-soft: color-mix(in srgb, var(--vf-color-info) 12%, var(--vf-color-surface));
31
+ --vf-color-warn-soft: color-mix(in srgb, var(--vf-color-warn) 12%, var(--vf-color-surface));
32
+ --vf-color-help-soft: color-mix(in srgb, var(--vf-color-help) 12%, var(--vf-color-surface));
33
+ --vf-color-danger-soft: color-mix(in srgb, var(--vf-color-danger) 12%, var(--vf-color-surface));
34
+ --vf-color-contrast-soft: color-mix(in srgb, var(--vf-color-contrast) 10%, var(--vf-color-surface));
35
+ --vf-color-success-border-soft: color-mix(in srgb, var(--vf-color-success) 24%, var(--vf-color-border));
36
+ --vf-color-info-border-soft: color-mix(in srgb, var(--vf-color-info) 24%, var(--vf-color-border));
37
+ --vf-color-warn-border-soft: color-mix(in srgb, var(--vf-color-warn) 24%, var(--vf-color-border));
38
+ --vf-color-help-border-soft: color-mix(in srgb, var(--vf-color-help) 24%, var(--vf-color-border));
39
+ --vf-color-danger-border-soft: color-mix(in srgb, var(--vf-color-danger) 24%, var(--vf-color-border));
40
+ --vf-color-contrast-border-soft: color-mix(in srgb, var(--vf-color-contrast) 24%, var(--vf-color-border));
101
41
  --vf-focus-ring-width: 3px;
102
42
  --vf-radius: 0.75rem;
103
43
  --vf-radius-control: calc(var(--vf-radius) - 0.125rem);
@@ -203,16 +143,8 @@
203
143
  --vf-popover-width: min(100vw - 2rem, 22rem);
204
144
  --vf-floating-arrow-size: 0.625rem;
205
145
  --vf-overlay-backdrop: rgba(15, 23, 42, 0.56);
206
- --vf-alert-primary-soft: color-mix(
207
- in srgb,
208
- var(--vf-color-primary) 8%,
209
- var(--vf-color-surface)
210
- );
211
- --vf-alert-primary-border-soft: color-mix(
212
- in srgb,
213
- var(--vf-color-primary) 22%,
214
- var(--vf-color-border)
215
- );
146
+ --vf-alert-primary-soft: color-mix(in srgb, var(--vf-color-primary) 8%, var(--vf-color-surface));
147
+ --vf-alert-primary-border-soft: color-mix(in srgb, var(--vf-color-primary) 22%, var(--vf-color-border));
216
148
  --vf-alert-content-gap: 0.25rem;
217
149
  --vf-alert-title-font-size: 0.9375rem;
218
150
  --vf-card-title-font-size: 1rem;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codemonster-ru/vueforge-core",
3
- "version": "1.3.0",
3
+ "version": "1.3.2",
4
4
  "description": "Foundation layer for the VueForge design system.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -97,7 +97,7 @@
97
97
  },
98
98
  "dependencies": {
99
99
  "@codemonster-ru/floater.js": "^1.0.8",
100
- "@codemonster-ru/vueforge-theme": "^1.0.0",
100
+ "@codemonster-ru/vueforge-theme": "^1.1.0",
101
101
  "@codemonster-ru/vueiconify": "^1.0.1"
102
102
  }
103
103
  }