@openvoxproject/voxblocks 0.9.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +17 -9
  2. package/dist/cdn/voxblocks.css +1 -1
  3. package/dist/cdn/voxblocks.js +1987 -1279
  4. package/dist/types/components/accordion/vox-accordion.d.ts +2 -0
  5. package/dist/types/components/alert/vox-alert.d.ts +2 -1
  6. package/dist/types/components/callout/vox-callout.d.ts +2 -1
  7. package/dist/types/components/disclosure/vox-disclosure.d.ts +2 -0
  8. package/dist/types/components/dropdown/vox-dropdown.d.ts +3 -0
  9. package/dist/types/components/header/vox-header.d.ts +11 -1
  10. package/dist/types/components/icon/icon-paths.d.ts +30 -0
  11. package/dist/types/components/icon/vox-icon.d.ts +22 -0
  12. package/dist/types/components/link-hub/vox-link-hub.d.ts +3 -0
  13. package/dist/types/components/pagination/vox-pagination.d.ts +6 -4
  14. package/dist/types/components/sidenav/vox-sidenav.d.ts +20 -0
  15. package/dist/types/components/toc/vox-toc.d.ts +43 -0
  16. package/dist/types/index.d.ts +4 -0
  17. package/dist/types/internal/field.d.ts +4 -0
  18. package/dist/voxblocks.css +1 -1
  19. package/dist/voxblocks.js +1705 -997
  20. package/package.json +9 -6
  21. package/src/components/accordion/vox-accordion.ts +6 -1
  22. package/src/components/alert/vox-alert.ts +46 -2
  23. package/src/components/avatar/vox-avatar.ts +9 -2
  24. package/src/components/callout/vox-callout.ts +53 -3
  25. package/src/components/card/vox-card.ts +6 -1
  26. package/src/components/checkbox/vox-checkbox.ts +4 -3
  27. package/src/components/dialog/vox-dialog.ts +2 -2
  28. package/src/components/disclosure/vox-disclosure.ts +6 -1
  29. package/src/components/dropdown/vox-dropdown.ts +32 -8
  30. package/src/components/empty-state/vox-empty-state.ts +1 -1
  31. package/src/components/file-input/vox-file-input.ts +4 -1
  32. package/src/components/header/vox-header.ts +142 -7
  33. package/src/components/icon/icon-paths.ts +287 -0
  34. package/src/components/icon/vox-icon.ts +78 -0
  35. package/src/components/input/vox-input.ts +2 -0
  36. package/src/components/link-hub/vox-link-hub.ts +21 -0
  37. package/src/components/pagination/vox-pagination.ts +9 -6
  38. package/src/components/radio/vox-radio-group.ts +17 -6
  39. package/src/components/select/vox-select.ts +3 -0
  40. package/src/components/sidenav/vox-sidenav.ts +164 -4
  41. package/src/components/step-indicator/vox-step-indicator.ts +16 -2
  42. package/src/components/tabs/vox-tabs.ts +26 -2
  43. package/src/components/textarea/vox-textarea.ts +2 -0
  44. package/src/components/toc/vox-toc.ts +140 -0
  45. package/src/index.ts +6 -0
  46. package/src/internal/field.ts +20 -2
  47. package/src/styles/utilities.css +158 -0
  48. package/src/tokens/palette.css +95 -0
  49. package/src/tokens/tokens.css +7 -7
@@ -18,8 +18,10 @@ export declare class VoxAccordion extends LitElement {
18
18
  * @fires vox-toggle - When the panel opens or closes.
19
19
  */
20
20
  export declare class VoxAccordionItem extends LitElement {
21
+ private static nextId;
21
22
  heading: string;
22
23
  open: boolean;
24
+ private readonly panelId;
23
25
  static styles: import("lit").CSSResult;
24
26
  toggle(): void;
25
27
  render(): import("lit-html").TemplateResult<1>;
@@ -1,7 +1,8 @@
1
1
  import { LitElement } from 'lit';
2
2
  export type AlertVariant = 'info' | 'success' | 'warning' | 'danger';
3
3
  /**
4
- * A page-level notification message, optionally dismissible.
4
+ * A page-level notification message, optionally dismissible. Shows an
5
+ * icon matching `variant` automatically — no icon slot to fill in.
5
6
  * For static advisory text inside prose, see `<vox-callout>`.
6
7
  *
7
8
  * @slot - Alert message.
@@ -2,7 +2,8 @@ import { LitElement } from 'lit';
2
2
  export type CalloutVariant = 'info' | 'tip' | 'warning' | 'danger';
3
3
  /**
4
4
  * An admonition block matching the custom containers on the OpenVox docs
5
- * (::: tip, ::: warning, ...).
5
+ * (::: tip, ::: warning, ...). Shows an icon matching `variant`
6
+ * automatically — no icon slot to fill in.
6
7
  *
7
8
  * @slot - Callout body content.
8
9
  */
@@ -6,8 +6,10 @@ import { LitElement } from 'lit';
6
6
  * @fires vox-toggle - When the content is shown or hidden.
7
7
  */
8
8
  export declare class VoxDisclosure extends LitElement {
9
+ private static nextId;
9
10
  summary: string;
10
11
  open: boolean;
12
+ private readonly panelId;
11
13
  static styles: import("lit").CSSResult;
12
14
  toggle(): void;
13
15
  render(): import("lit-html").TemplateResult<1>;
@@ -18,6 +18,9 @@ export declare class VoxDropdown extends LitElement {
18
18
  connectedCallback(): void;
19
19
  disconnectedCallback(): void;
20
20
  private handleOutsideClick;
21
+ /** Close when focus leaves the component entirely (e.g. Tab past the last item). */
22
+ private handleFocusOut;
23
+ private focusItem;
21
24
  private handleKeydown;
22
25
  private toggle;
23
26
  render(): import("lit-html").TemplateResult<1>;
@@ -2,7 +2,8 @@ import { LitElement } from 'lit';
2
2
  /**
3
3
  * A site header with brand, primary navigation, and an actions area.
4
4
  * Nav entries are plain links; mark the current page with
5
- * `aria-current="page"`.
5
+ * `aria-current="page"`. Below 768px, nav and actions collapse behind a
6
+ * menu button.
6
7
  *
7
8
  * @slot logo - Brand mark shown before the site title.
8
9
  * @slot - Navigation links.
@@ -13,7 +14,16 @@ export declare class VoxHeader extends LitElement {
13
14
  siteTitle: string;
14
15
  /** Where the brand links to. */
15
16
  href: string;
17
+ private mobileOpen;
16
18
  static styles: import("lit").CSSResult;
19
+ connectedCallback(): void;
20
+ disconnectedCallback(): void;
21
+ private handleOutsideClick;
22
+ /** Close the mobile menu once focus tabs past its last item. */
23
+ private handleFocusOut;
24
+ private handleKeydown;
25
+ private toggleMobileMenu;
26
+ private closeMobileMenu;
17
27
  render(): import("lit-html").TemplateResult<1>;
18
28
  }
19
29
  declare global {
@@ -0,0 +1,30 @@
1
+ import { type SVGTemplateResult } from 'lit';
2
+ /**
3
+ * The VoxBlocks icon set. Every icon shares one drawing rule: 48x48
4
+ * viewBox, 2px stroke, round caps/joins, `currentColor` — see
5
+ * docs/guide/colors.md and the card/empty-state doc icons this set
6
+ * grew out of. Add new icons here and to `IconName` below; nowhere
7
+ * else needs to change.
8
+ *
9
+ * Grouped by the phases from the icon roadmap:
10
+ * - Phase 1: shared UI baseline — search through refresh, plus eye-slash.
11
+ * - Phase 2: OpenVox marketing site — community through heart.
12
+ * - Phase 3: module registry (Forge replacement) — module through collection.
13
+ * - Phase 4: fleet console (Puppet Enterprise replacement) — dashboard
14
+ * through drift.
15
+ *
16
+ * A few concepts repeat across phases (e.g. a release tag and a topic
17
+ * tag) and deliberately share one icon rather than drawing
18
+ * near-duplicates — `star` also covers "rating", `copy` also covers
19
+ * "copy install command", `terminal` also covers "live management
20
+ * session", and `key` covers both PKI and API keys.
21
+ *
22
+ * `blocks`, `plug`, `ballot`, `sun`, and `accessibility` were added
23
+ * later, consolidating hand-drawn SVGs that had been copy-pasted
24
+ * inline across docs/index.md, card.md, and marketing.md before this
25
+ * component existed — see each one's call site for what it replaced.
26
+ * `settings` was added when components (not just docs) started using
27
+ * icons — e.g. a sidenav "Settings" item needed one that didn't exist yet.
28
+ */
29
+ export type IconName = 'search' | 'close' | 'menu' | 'chevron-up' | 'chevron-down' | 'chevron-left' | 'chevron-right' | 'external-link' | 'copy' | 'check' | 'warning' | 'info' | 'add' | 'remove' | 'edit' | 'delete' | 'filter' | 'sort' | 'calendar' | 'clock' | 'person' | 'people' | 'lock' | 'eye' | 'eye-slash' | 'refresh' | 'community' | 'book' | 'terminal' | 'shield' | 'roadmap' | 'help' | 'repository' | 'star' | 'chat' | 'heart' | 'module' | 'tag' | 'dependency' | 'verified' | 'archived' | 'publish' | 'changelog' | 'vulnerability' | 'gauge' | 'file-tree' | 'check-circle' | 'x-circle' | 'fork' | 'trending' | 'collection' | 'dashboard' | 'node' | 'node-group' | 'pulse' | 'compliance' | 'report' | 'activity-log' | 'bell' | 'orchestrate' | 'plan' | 'badge' | 'audit' | 'key' | 'layers' | 'classifier' | 'deploy' | 'metrics' | 'schedule' | 'backup' | 'webhook' | 'organization' | 'drift' | 'blocks' | 'plug' | 'ballot' | 'sun' | 'moon' | 'accessibility' | 'settings' | 'github';
30
+ export declare const ICON_PATHS: Record<IconName, SVGTemplateResult>;
@@ -0,0 +1,22 @@
1
+ import { LitElement, nothing } from 'lit';
2
+ import { type IconName } from './icon-paths.js';
3
+ export type { IconName };
4
+ export type IconSize = 'sm' | 'md' | 'lg' | 'xl';
5
+ /**
6
+ * One icon from the shared VoxBlocks icon set, drawn as inline SVG so
7
+ * it inherits `color` from its context like text does. Decorative by
8
+ * default (`aria-hidden`); set `label` when the icon is the only
9
+ * content conveying meaning (e.g. an icon-only button).
10
+ */
11
+ export declare class VoxIcon extends LitElement {
12
+ name: IconName;
13
+ size: IconSize;
14
+ label?: string;
15
+ static styles: import("lit").CSSResult;
16
+ render(): typeof nothing | import("lit-html").TemplateResult<1>;
17
+ }
18
+ declare global {
19
+ interface HTMLElementTagNameMap {
20
+ 'vox-icon': VoxIcon;
21
+ }
22
+ }
@@ -12,11 +12,14 @@ export declare class VoxLinkHub extends LitElement {
12
12
  * One link in a `<vox-link-hub>`.
13
13
  *
14
14
  * @slot - Short description under the link title.
15
+ * @slot icon - Optional icon before the heading, e.g. `<vox-icon>`.
15
16
  */
16
17
  export declare class VoxLinkHubItem extends LitElement {
17
18
  href: string;
18
19
  heading: string;
19
20
  static styles: import("lit").CSSResult;
21
+ private hasIcon;
22
+ private handleIconSlotChange;
20
23
  render(): import("lit-html").TemplateResult<1>;
21
24
  }
22
25
  declare global {
@@ -1,17 +1,19 @@
1
1
  import { LitElement } from 'lit';
2
2
  /**
3
- * Page-number navigation. Children are plain links; mark the current
4
- * page with `aria-current="page"`:
3
+ * Page-number navigation. Children are plain links, with the current
4
+ * page as a non-interactive `<span aria-current="page">` — like
5
+ * `<vox-breadcrumbs>`, it shouldn't be a link to itself:
5
6
  *
6
7
  * ```html
7
8
  * <vox-pagination>
8
9
  * <a href="?page=1">1</a>
9
- * <a href="?page=2" aria-current="page">2</a>
10
+ * <span aria-current="page">2</span>
10
11
  * <a href="?page=3">3</a>
11
12
  * </vox-pagination>
12
13
  * ```
13
14
  *
14
- * @slot - `<a>` elements (including any prev/next links).
15
+ * @slot - `<a>` elements (including any prev/next links) and the
16
+ * current-page `<span>`.
15
17
  */
16
18
  export declare class VoxPagination extends LitElement {
17
19
  label: string;
@@ -1,6 +1,9 @@
1
1
  import { LitElement } from 'lit';
2
2
  /**
3
3
  * A vertical section navigation, in the style of the OpenVox docs sidebar.
4
+ * Below 768px, collapses behind a toggle button — the same breakpoint and
5
+ * pattern `vox-header` uses for its own nav, so a page's top nav and side
6
+ * nav switch to mobile mode together.
4
7
  *
5
8
  * ```html
6
9
  * <vox-sidenav>
@@ -14,8 +17,20 @@ import { LitElement } from 'lit';
14
17
  * @slot - `<vox-sidenav-item>` and `<vox-sidenav-group>` elements.
15
18
  */
16
19
  export declare class VoxSidenav extends LitElement {
20
+ /** Accessible name for the `<nav>` landmark. */
17
21
  label: string;
22
+ /** Visible text on the mobile toggle button. */
23
+ toggleLabel: string;
24
+ private mobileOpen;
18
25
  static styles: import("lit").CSSResult;
26
+ connectedCallback(): void;
27
+ disconnectedCallback(): void;
28
+ private handleOutsideClick;
29
+ /** Close the mobile menu once focus tabs past its last item. */
30
+ private handleFocusOut;
31
+ private handleKeydown;
32
+ private toggleMobile;
33
+ private handleNavClick;
19
34
  render(): import("lit-html").TemplateResult<1>;
20
35
  }
21
36
  /**
@@ -24,8 +39,10 @@ export declare class VoxSidenav extends LitElement {
24
39
  * @slot - `<vox-sidenav-item>` elements.
25
40
  */
26
41
  export declare class VoxSidenavGroup extends LitElement {
42
+ private static nextId;
27
43
  heading: string;
28
44
  open: boolean;
45
+ private readonly itemsId;
29
46
  static styles: import("lit").CSSResult;
30
47
  private toggle;
31
48
  render(): import("lit-html").TemplateResult<1>;
@@ -34,11 +51,14 @@ export declare class VoxSidenavGroup extends LitElement {
34
51
  * One sidenav link. Set `current` on the active page's item.
35
52
  *
36
53
  * @slot - Link text.
54
+ * @slot icon - Optional icon before the link text, e.g. `<vox-icon>`.
37
55
  */
38
56
  export declare class VoxSidenavItem extends LitElement {
39
57
  href: string;
40
58
  current: boolean;
41
59
  static styles: import("lit").CSSResult;
60
+ private hasIcon;
61
+ private handleIconSlotChange;
42
62
  render(): import("lit-html").TemplateResult<1>;
43
63
  }
44
64
  declare global {
@@ -0,0 +1,43 @@
1
+ import { LitElement } from 'lit';
2
+ /**
3
+ * An in-page table of contents / heading outline, in the style of the
4
+ * OpenVox docs "On this page" panel. Nest `<vox-toc-item>` for
5
+ * sub-headings via the `children` slot.
6
+ *
7
+ * ```html
8
+ * <vox-toc heading="On this page">
9
+ * <vox-toc-item href="#palette" current>Palette</vox-toc-item>
10
+ * <vox-toc-item href="#pairing-hues">
11
+ * Pairing hues
12
+ * <vox-toc-item slot="children" href="#soft-badge">Soft badge</vox-toc-item>
13
+ * </vox-toc-item>
14
+ * </vox-toc>
15
+ * ```
16
+ *
17
+ * @slot - `<vox-toc-item>` elements.
18
+ */
19
+ export declare class VoxToc extends LitElement {
20
+ heading: string;
21
+ static styles: import("lit").CSSResult;
22
+ render(): import("lit-html").TemplateResult<1>;
23
+ }
24
+ /**
25
+ * One heading link in a vox-toc. Set `current` on the active section.
26
+ *
27
+ * @slot - Link text.
28
+ * @slot children - Nested `<vox-toc-item>` elements for sub-headings.
29
+ */
30
+ export declare class VoxTocItem extends LitElement {
31
+ href: string;
32
+ current: boolean;
33
+ static styles: import("lit").CSSResult;
34
+ private hasChildren;
35
+ private handleChildrenSlotChange;
36
+ render(): import("lit-html").TemplateResult<1>;
37
+ }
38
+ declare global {
39
+ interface HTMLElementTagNameMap {
40
+ 'vox-toc': VoxToc;
41
+ 'vox-toc-item': VoxTocItem;
42
+ }
43
+ }
@@ -1,8 +1,10 @@
1
1
  import './tokens/tokens.css';
2
+ import './tokens/palette.css';
2
3
  import './styles/utilities.css';
3
4
  export { VoxButton } from './components/button/vox-button.js';
4
5
  export { VoxCta } from './components/cta/vox-cta.js';
5
6
  export { VoxThemeToggle } from './components/theme-toggle/vox-theme-toggle.js';
7
+ export { VoxIcon } from './components/icon/vox-icon.js';
6
8
  export { VoxCheckbox } from './components/checkbox/vox-checkbox.js';
7
9
  export { VoxFileInput } from './components/file-input/vox-file-input.js';
8
10
  export { VoxInput } from './components/input/vox-input.js';
@@ -20,6 +22,7 @@ export { VoxSeriesNav } from './components/series-nav/vox-series-nav.js';
20
22
  export { VoxSidenav, VoxSidenavGroup, VoxSidenavItem } from './components/sidenav/vox-sidenav.js';
21
23
  export { VoxSubnav } from './components/subnav/vox-subnav.js';
22
24
  export { VoxTabs, VoxTab, VoxTabPanel } from './components/tabs/vox-tabs.js';
25
+ export { VoxToc, VoxTocItem } from './components/toc/vox-toc.js';
23
26
  export { VoxDialog } from './components/dialog/vox-dialog.js';
24
27
  export { VoxDisclosure } from './components/disclosure/vox-disclosure.js';
25
28
  export { VoxDropdown } from './components/dropdown/vox-dropdown.js';
@@ -42,6 +45,7 @@ export { VoxSponsor, VoxSponsorTier } from './components/sponsor/vox-sponsor.js'
42
45
  export { VoxStat } from './components/stat/vox-stat.js';
43
46
  export { VoxStepIndicator, VoxStep } from './components/step-indicator/vox-step-indicator.js';
44
47
  export { VoxTimeline, VoxTimelineItem } from './components/timeline/vox-timeline.js';
48
+ export type { IconName, IconSize } from './components/icon/vox-icon.js';
45
49
  export type { ButtonVariant, ButtonSize } from './components/button/vox-button.js';
46
50
  export type { CalloutVariant } from './components/callout/vox-callout.js';
47
51
  export type { BadgeVariant } from './components/badge/vox-badge.js';
@@ -6,6 +6,8 @@ import { LitElement, nothing } from 'lit';
6
6
  export declare class VoxFieldElement extends LitElement {
7
7
  static formAssociated: boolean;
8
8
  protected internals: ElementInternals;
9
+ /** Whether the control currently fails validation; drives `aria-invalid`. */
10
+ protected invalid: boolean;
9
11
  name: string;
10
12
  label: string;
11
13
  note: string;
@@ -20,6 +22,8 @@ export declare class VoxFieldElement extends LitElement {
20
22
  /** Mirror a native inner control's validity onto the host element. */
21
23
  protected syncValidity(inner: HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement): void;
22
24
  protected renderLabel(forId: string): typeof nothing | import("lit-html").TemplateResult<1>;
25
+ /** `note`'s id when present, for `aria-describedby` on the native control. */
26
+ protected get noteId(): string | undefined;
23
27
  protected renderNote(): typeof nothing | import("lit-html").TemplateResult<1>;
24
28
  }
25
29
  export declare const fieldStyles: import("lit").CSSResult;
@@ -1 +1 @@
1
- :root{--vox-color-brand-1: #0f5c5c;--vox-color-brand-2: #0a4f49;--vox-color-brand-3: #106b66;--vox-color-brand-soft: rgba(16, 107, 102, .14);--vox-color-tip-1: #18794e;--vox-color-tip-soft: rgba(16, 185, 129, .14);--vox-color-warning-1: #915930;--vox-color-warning-soft: rgba(234, 179, 8, .14);--vox-color-danger-1: #b8272c;--vox-color-danger-2: #d5393e;--vox-color-danger-3: #e0575b;--vox-color-danger-soft: rgba(244, 63, 94, .14);--vox-color-bg: #f5faf9;--vox-color-bg-alt: #e8f1ef;--vox-color-bg-soft: #e8f1ef;--vox-color-bg-elv: #ffffff;--vox-color-text-1: #12262c;--vox-color-text-2: #4c6469;--vox-color-text-3: #86999c;--vox-color-text-inverse: #ffffff;--vox-color-divider: rgba(18, 38, 44, .12);--vox-color-border: rgba(18, 38, 44, .28);--vox-font-family-base: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--vox-font-family-display: "Source Serif 4", Georgia, "Times New Roman", serif;--vox-font-family-mono: "JetBrains Mono", "Source Code Pro", ui-monospace, "SF Mono", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;--vox-radius-sm: 4px;--vox-radius-md: 8px;--vox-radius-lg: 12px;--vox-radius-full: 9999px;--vox-space-1: .25rem;--vox-space-2: .5rem;--vox-space-3: .75rem;--vox-space-4: 1rem;--vox-space-6: 1.5rem;--vox-space-8: 2rem;--vox-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vox-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vox-transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--vox-transition-base: .25s cubic-bezier(.4, 0, .2, 1)}.dark,[data-vox-theme=dark]{--vox-color-brand-1: #7fd8cf;--vox-color-brand-2: #0b5c52;--vox-color-brand-3: #0e7267;--vox-color-brand-soft: rgba(127, 216, 207, .16);--vox-color-tip-1: #3dd68c;--vox-color-tip-soft: rgba(16, 185, 129, .16);--vox-color-warning-1: #f9b44e;--vox-color-warning-soft: rgba(234, 179, 8, .16);--vox-color-danger-1: #f66f81;--vox-color-danger-2: #f14158;--vox-color-danger-3: #b62a3c;--vox-color-danger-soft: rgba(244, 63, 94, .16);--vox-color-bg: #0d1417;--vox-color-bg-alt: #131b1f;--vox-color-bg-soft: #131b1f;--vox-color-bg-elv: #161f23;--vox-color-text-1: #dff3f0;--vox-color-text-2: #9fb8bb;--vox-color-text-3: #5f7275;--vox-color-text-inverse: #ffffff;--vox-color-divider: rgba(159, 184, 187, .24);--vox-color-border: rgba(159, 184, 187, .5);--vox-shadow-1: 0 1px 2px rgba(0, 0, 0, .2), 0 1px 2px rgba(0, 0, 0, .24);--vox-shadow-2: 0 3px 12px rgba(0, 0, 0, .26), 0 1px 4px rgba(0, 0, 0, .26)}body{margin:0;font-family:var(--vox-font-family-base);background-color:var(--vox-color-bg);color:var(--vox-color-text-1)}vox-hero a,vox-alert a,vox-callout a,vox-dialog a,vox-accordion-item a{color:var(--vox-color-brand-1);text-decoration:underline}vox-hero a:hover,vox-alert a:hover,vox-callout a:hover,vox-dialog a:hover,vox-accordion-item a:hover{color:var(--vox-color-brand-2)}.vox-table{width:100%;border-collapse:collapse;font-family:var(--vox-font-family-base);font-size:14px;color:var(--vox-color-text-1)}.vox-table caption{margin-bottom:.5rem;font-weight:600;text-align:left;color:var(--vox-color-text-1)}.vox-table th{padding:.6rem .9rem;border-bottom:2px solid var(--vox-color-divider);font-weight:600;text-align:left;white-space:nowrap;color:var(--vox-color-text-1);background-color:var(--vox-color-bg-soft)}.vox-table td{padding:.6rem .9rem;border-bottom:1px solid var(--vox-color-divider);color:var(--vox-color-text-2)}.vox-table--striped tbody tr:nth-child(odd){background-color:var(--vox-color-bg-soft)}.vox-table--compact th,.vox-table--compact td{padding:.35rem .6rem}.vox-table-wrap{overflow-x:auto;border:1px solid var(--vox-color-divider);border-radius:var(--vox-radius-lg)}.vox-table-wrap .vox-table tbody tr:last-child th,.vox-table-wrap .vox-table tbody tr:last-child td{border-bottom:none}.vox-list{font-family:var(--vox-font-family-base);font-size:14px;line-height:1.7;color:var(--vox-color-text-2);padding-left:1.25rem}.vox-list li+li{margin-top:.25rem}.vox-list--plain{list-style:none;padding-left:0}.vox-list--inline{list-style:none;padding-left:0;display:flex;flex-wrap:wrap;gap:.25rem 1.25rem}.vox-list--inline li+li{margin-top:0}.vox-prose{max-width:44rem;font-family:var(--vox-font-family-base);font-size:16px;line-height:1.75;color:var(--vox-color-text-2)}.vox-prose+.vox-prose{margin-top:var(--vox-space-4)}.vox-prose a{color:var(--vox-color-brand-1);text-decoration:underline}.vox-prose a:hover{color:var(--vox-color-brand-2)}.vox-m-all-none{margin:0!important}.vox-m-all-xs{margin:.25rem!important}.vox-m-all-sm{margin:.5rem!important}.vox-m-all-md{margin:1rem!important}.vox-m-all-lg{margin:1.5rem!important}.vox-m-all-xl{margin:2rem!important}.vox-m-all-xxl{margin:3rem!important}.vox-m-top-none{margin-top:0!important}.vox-m-top-xs{margin-top:.25rem!important}.vox-m-top-sm{margin-top:.5rem!important}.vox-m-top-md{margin-top:1rem!important}.vox-m-top-lg{margin-top:1.5rem!important}.vox-m-top-xl{margin-top:2rem!important}.vox-m-top-xxl{margin-top:3rem!important}.vox-m-right-none{margin-right:0!important}.vox-m-right-xs{margin-right:.25rem!important}.vox-m-right-sm{margin-right:.5rem!important}.vox-m-right-md{margin-right:1rem!important}.vox-m-right-lg{margin-right:1.5rem!important}.vox-m-right-xl{margin-right:2rem!important}.vox-m-right-xxl{margin-right:3rem!important}.vox-m-bottom-none{margin-bottom:0!important}.vox-m-bottom-xs{margin-bottom:.25rem!important}.vox-m-bottom-sm{margin-bottom:.5rem!important}.vox-m-bottom-md{margin-bottom:1rem!important}.vox-m-bottom-lg{margin-bottom:1.5rem!important}.vox-m-bottom-xl{margin-bottom:2rem!important}.vox-m-bottom-xxl{margin-bottom:3rem!important}.vox-m-left-none{margin-left:0!important}.vox-m-left-xs{margin-left:.25rem!important}.vox-m-left-sm{margin-left:.5rem!important}.vox-m-left-md{margin-left:1rem!important}.vox-m-left-lg{margin-left:1.5rem!important}.vox-m-left-xl{margin-left:2rem!important}.vox-m-left-xxl{margin-left:3rem!important}.vox-m-x-none{margin-left:0!important;margin-right:0!important}.vox-m-x-xs{margin-left:.25rem!important;margin-right:.25rem!important}.vox-m-x-sm{margin-left:.5rem!important;margin-right:.5rem!important}.vox-m-x-md{margin-left:1rem!important;margin-right:1rem!important}.vox-m-x-lg{margin-left:1.5rem!important;margin-right:1.5rem!important}.vox-m-x-xl{margin-left:2rem!important;margin-right:2rem!important}.vox-m-x-xxl{margin-left:3rem!important;margin-right:3rem!important}.vox-m-x-auto{margin-left:auto!important;margin-right:auto!important}.vox-m-y-none{margin-top:0!important;margin-bottom:0!important}.vox-m-y-xs{margin-top:.25rem!important;margin-bottom:.25rem!important}.vox-m-y-sm{margin-top:.5rem!important;margin-bottom:.5rem!important}.vox-m-y-md{margin-top:1rem!important;margin-bottom:1rem!important}.vox-m-y-lg{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.vox-m-y-xl{margin-top:2rem!important;margin-bottom:2rem!important}.vox-m-y-xxl{margin-top:3rem!important;margin-bottom:3rem!important}.vox-p-all-none{padding:0!important}.vox-p-all-xs{padding:.25rem!important}.vox-p-all-sm{padding:.5rem!important}.vox-p-all-md{padding:1rem!important}.vox-p-all-lg{padding:1.5rem!important}.vox-p-all-xl{padding:2rem!important}.vox-p-all-xxl{padding:3rem!important}.vox-p-top-none{padding-top:0!important}.vox-p-top-xs{padding-top:.25rem!important}.vox-p-top-sm{padding-top:.5rem!important}.vox-p-top-md{padding-top:1rem!important}.vox-p-top-lg{padding-top:1.5rem!important}.vox-p-top-xl{padding-top:2rem!important}.vox-p-top-xxl{padding-top:3rem!important}.vox-p-right-none{padding-right:0!important}.vox-p-right-xs{padding-right:.25rem!important}.vox-p-right-sm{padding-right:.5rem!important}.vox-p-right-md{padding-right:1rem!important}.vox-p-right-lg{padding-right:1.5rem!important}.vox-p-right-xl{padding-right:2rem!important}.vox-p-right-xxl{padding-right:3rem!important}.vox-p-bottom-none{padding-bottom:0!important}.vox-p-bottom-xs{padding-bottom:.25rem!important}.vox-p-bottom-sm{padding-bottom:.5rem!important}.vox-p-bottom-md{padding-bottom:1rem!important}.vox-p-bottom-lg{padding-bottom:1.5rem!important}.vox-p-bottom-xl{padding-bottom:2rem!important}.vox-p-bottom-xxl{padding-bottom:3rem!important}.vox-p-left-none{padding-left:0!important}.vox-p-left-xs{padding-left:.25rem!important}.vox-p-left-sm{padding-left:.5rem!important}.vox-p-left-md{padding-left:1rem!important}.vox-p-left-lg{padding-left:1.5rem!important}.vox-p-left-xl{padding-left:2rem!important}.vox-p-left-xxl{padding-left:3rem!important}.vox-p-x-none{padding-left:0!important;padding-right:0!important}.vox-p-x-xs{padding-left:.25rem!important;padding-right:.25rem!important}.vox-p-x-sm{padding-left:.5rem!important;padding-right:.5rem!important}.vox-p-x-md{padding-left:1rem!important;padding-right:1rem!important}.vox-p-x-lg{padding-left:1.5rem!important;padding-right:1.5rem!important}.vox-p-x-xl{padding-left:2rem!important;padding-right:2rem!important}.vox-p-x-xxl{padding-left:3rem!important;padding-right:3rem!important}.vox-p-y-none{padding-top:0!important;padding-bottom:0!important}.vox-p-y-xs{padding-top:.25rem!important;padding-bottom:.25rem!important}.vox-p-y-sm{padding-top:.5rem!important;padding-bottom:.5rem!important}.vox-p-y-md{padding-top:1rem!important;padding-bottom:1rem!important}.vox-p-y-lg{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.vox-p-y-xl{padding-top:2rem!important;padding-bottom:2rem!important}.vox-p-y-xxl{padding-top:3rem!important;padding-bottom:3rem!important}.vox-ts-xs{font-size:12px!important}.vox-ts-sm{font-size:14px!important}.vox-ts-md{font-size:16px!important}.vox-ts-lg{font-size:18px!important}.vox-ts-xl{font-size:22px!important}.vox-ts-xxl{font-size:28px!important}.vox-ts-3xl{font-size:36px!important}.vox-text-regular{font-weight:400!important}.vox-text-medium{font-weight:500!important}.vox-text-semibold{font-weight:600!important}.vox-text-bold{font-weight:700!important}.vox-text-left{text-align:left!important}.vox-text-center{text-align:center!important}.vox-text-right{text-align:right!important}.vox-text-uppercase{text-transform:uppercase!important;letter-spacing:.05em!important}.vox-text-mono{font-family:var(--vox-font-family-mono)!important}.vox-lh-tight{line-height:1.25!important}.vox-lh-base{line-height:1.5!important}.vox-lh-loose{line-height:1.75!important}.vox-color-text-1{color:var(--vox-color-text-1)!important}.vox-color-text-2{color:var(--vox-color-text-2)!important}.vox-color-text-3{color:var(--vox-color-text-3)!important}.vox-color-brand{color:var(--vox-color-brand-1)!important}.vox-color-tip{color:var(--vox-color-tip-1)!important}.vox-color-warning{color:var(--vox-color-warning-1)!important}.vox-color-danger{color:var(--vox-color-danger-1)!important}.vox-bg{background-color:var(--vox-color-bg)!important}.vox-bg-alt{background-color:var(--vox-color-bg-alt)!important}.vox-bg-soft{background-color:var(--vox-color-bg-soft)!important}.vox-bg-elv{background-color:var(--vox-color-bg-elv)!important}.vox-bg-brand{background-color:var(--vox-color-brand-3)!important;color:var(--vox-color-text-inverse)!important}.vox-bg-brand-soft{background-color:var(--vox-color-brand-soft)!important}.vox-bg-tip-soft{background-color:var(--vox-color-tip-soft)!important}.vox-bg-warning-soft{background-color:var(--vox-color-warning-soft)!important}.vox-bg-danger-soft{background-color:var(--vox-color-danger-soft)!important}.vox-border-all{border:1px solid var(--vox-color-divider)!important}.vox-border-top{border-top:1px solid var(--vox-color-divider)!important}.vox-border-right{border-right:1px solid var(--vox-color-divider)!important}.vox-border-bottom{border-bottom:1px solid var(--vox-color-divider)!important}.vox-border-left{border-left:1px solid var(--vox-color-divider)!important}.vox-border-none{border:none!important}.vox-radius-sm{border-radius:var(--vox-radius-sm)!important}.vox-radius-md{border-radius:var(--vox-radius-md)!important}.vox-radius-lg{border-radius:var(--vox-radius-lg)!important}.vox-radius-full{border-radius:var(--vox-radius-full)!important}.vox-display-block{display:block!important}.vox-display-inline{display:inline!important}.vox-display-inline-block{display:inline-block!important}.vox-display-flex{display:flex!important}.vox-display-inline-flex{display:inline-flex!important}.vox-display-grid{display:grid!important}.vox-flex-row{flex-direction:row!important}.vox-flex-column{flex-direction:column!important}.vox-flex-wrap{flex-wrap:wrap!important}.vox-flex-nowrap{flex-wrap:nowrap!important}.vox-justify-start{justify-content:flex-start!important}.vox-justify-center{justify-content:center!important}.vox-justify-end{justify-content:flex-end!important}.vox-justify-between{justify-content:space-between!important}.vox-items-start{align-items:flex-start!important}.vox-items-center{align-items:center!important}.vox-items-end{align-items:flex-end!important}.vox-items-stretch{align-items:stretch!important}.vox-grow-0{flex-grow:0!important}.vox-grow-1{flex-grow:1!important}.vox-shrink-0{flex-shrink:0!important}.vox-gap-none{gap:0!important}.vox-gap-xs{gap:.25rem!important}.vox-gap-sm{gap:.5rem!important}.vox-gap-md{gap:1rem!important}.vox-gap-lg{gap:1.5rem!important}.vox-gap-xl{gap:2rem!important}.vox-gap-xxl{gap:3rem!important}.vox-shadow-1{box-shadow:var(--vox-shadow-1)!important}.vox-shadow-2{box-shadow:var(--vox-shadow-2)!important}.vox-shadow-none{box-shadow:none!important}.vox-hide{display:none!important}.vox-sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important;border:0!important}@media(max-width:479.98px){.vox-hide-sm-down{display:none!important}}@media(max-width:767.98px){.vox-hide-md-down{display:none!important}}@media(max-width:1023.98px){.vox-hide-lg-down{display:none!important}}@media(min-width:480px){.vox-hide-sm-up{display:none!important}}@media(min-width:768px){.vox-hide-md-up{display:none!important}}@media(min-width:1024px){.vox-hide-lg-up{display:none!important}}.vox-width-full{width:100%!important}.vox-width-auto{width:auto!important}.vox-width-sm{width:20rem!important}.vox-width-md{width:30rem!important}.vox-width-lg{width:40rem!important}.vox-width-xl{width:50rem!important}.vox-max-width-sm{max-width:20rem!important}.vox-max-width-md{max-width:30rem!important}.vox-max-width-lg{max-width:40rem!important}.vox-max-width-xl{max-width:50rem!important}.vox-max-width-full{max-width:100%!important}.vox-z-0{z-index:0!important}.vox-z-10{z-index:10!important}.vox-z-100{z-index:100!important}.vox-z-1000{z-index:1000!important}
1
+ :root{--vox-color-brand-1: #0f5c5c;--vox-color-brand-2: #0a4f49;--vox-color-brand-3: #106b66;--vox-color-brand-soft: rgba(16, 107, 102, .14);--vox-color-tip-1: #18794e;--vox-color-tip-soft: rgba(16, 185, 129, .14);--vox-color-warning-1: #915930;--vox-color-warning-soft: rgba(234, 179, 8, .14);--vox-color-danger-1: #b8272c;--vox-color-danger-2: #c9333a;--vox-color-danger-3: #d5393e;--vox-color-danger-soft: rgba(244, 63, 94, .14);--vox-color-bg: #f5faf9;--vox-color-bg-alt: #e8f1ef;--vox-color-bg-soft: #e8f1ef;--vox-color-bg-elv: #ffffff;--vox-color-text-1: #12262c;--vox-color-text-2: #4c6469;--vox-color-text-3: #5c7377;--vox-color-text-inverse: #ffffff;--vox-color-divider: rgba(18, 38, 44, .12);--vox-color-border: rgba(18, 38, 44, .55);--vox-font-family-base: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--vox-font-family-display: "Source Serif 4", Georgia, "Times New Roman", serif;--vox-font-family-mono: "JetBrains Mono", "Source Code Pro", ui-monospace, "SF Mono", "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;--vox-radius-sm: 4px;--vox-radius-md: 8px;--vox-radius-lg: 12px;--vox-radius-full: 9999px;--vox-space-1: .25rem;--vox-space-2: .5rem;--vox-space-3: .75rem;--vox-space-4: 1rem;--vox-space-6: 1.5rem;--vox-space-8: 2rem;--vox-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vox-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vox-transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--vox-transition-base: .25s cubic-bezier(.4, 0, .2, 1)}.dark,[data-vox-theme=dark]{--vox-color-brand-1: #7fd8cf;--vox-color-brand-2: #0b5c52;--vox-color-brand-3: #0e7267;--vox-color-brand-soft: rgba(127, 216, 207, .16);--vox-color-tip-1: #3dd68c;--vox-color-tip-soft: rgba(16, 185, 129, .16);--vox-color-warning-1: #f9b44e;--vox-color-warning-soft: rgba(234, 179, 8, .16);--vox-color-danger-1: #f66f81;--vox-color-danger-2: #d13b52;--vox-color-danger-3: #b62a3c;--vox-color-danger-soft: rgba(244, 63, 94, .16);--vox-color-bg: #0d1417;--vox-color-bg-alt: #131b1f;--vox-color-bg-soft: #131b1f;--vox-color-bg-elv: #161f23;--vox-color-text-1: #dff3f0;--vox-color-text-2: #9fb8bb;--vox-color-text-3: #88999c;--vox-color-text-inverse: #ffffff;--vox-color-divider: rgba(159, 184, 187, .24);--vox-color-border: rgba(159, 184, 187, .6);--vox-shadow-1: 0 1px 2px rgba(0, 0, 0, .2), 0 1px 2px rgba(0, 0, 0, .24);--vox-shadow-2: 0 3px 12px rgba(0, 0, 0, .26), 0 1px 4px rgba(0, 0, 0, .26)}body{margin:0;font-family:var(--vox-font-family-base);background-color:var(--vox-color-bg);color:var(--vox-color-text-1)}vox-hero a,vox-alert a,vox-callout a,vox-dialog a,vox-accordion-item a{color:var(--vox-color-brand-1);text-decoration:underline}vox-hero a:hover,vox-alert a:hover,vox-callout a:hover,vox-dialog a:hover,vox-accordion-item a:hover{color:var(--vox-color-brand-2)}:root{--vox-palette-gray-100: #f1f3f4;--vox-palette-gray-200: #dde1e3;--vox-palette-gray-300: #c1c9cd;--vox-palette-gray-400: #a0abb1;--vox-palette-gray-500: #7e8e95;--vox-palette-gray-600: #67777e;--vox-palette-gray-700: #535f65;--vox-palette-gray-800: #404a4f;--vox-palette-gray-900: #2c3235;--vox-palette-teal-100: #eafaf9;--vox-palette-teal-200: #cdf3f1;--vox-palette-teal-300: #a4eae5;--vox-palette-teal-400: #73ded7;--vox-palette-teal-500: #41d2c9;--vox-palette-teal-600: #2cbab0;--vox-palette-teal-700: #23958d;--vox-palette-teal-800: #1b746e;--vox-palette-teal-900: #124e4a;--vox-palette-blue-100: #e9f2fb;--vox-palette-blue-200: #cadff6;--vox-palette-blue-300: #9fc4ef;--vox-palette-blue-400: #6aa4e7;--vox-palette-blue-500: #3584de;--vox-palette-blue-600: #206dc5;--vox-palette-blue-700: #1a579e;--vox-palette-blue-800: #14447b;--vox-palette-blue-900: #0e2e53;--vox-palette-green-100: #ecf9f1;--vox-palette-green-200: #d1f0dc;--vox-palette-green-300: #abe3bf;--vox-palette-green-400: #7dd49d;--vox-palette-green-500: #4fc47a;--vox-palette-green-600: #39ac63;--vox-palette-green-700: #2e8a50;--vox-palette-green-800: #246b3e;--vox-palette-green-900: #18492a;--vox-palette-gold-100: #fdf6e8;--vox-palette-gold-200: #f9e9c7;--vox-palette-gold-300: #f5d699;--vox-palette-gold-400: #efc061;--vox-palette-gold-500: #eaaa2a;--vox-palette-gold-600: #d19215;--vox-palette-gold-700: #a77511;--vox-palette-gold-800: #825b0d;--vox-palette-gold-900: #583e09;--vox-palette-red-100: #fbeaeb;--vox-palette-red-200: #f5cccf;--vox-palette-red-300: #eda1a7;--vox-palette-red-400: #e36d77;--vox-palette-red-500: #d93a47;--vox-palette-red-600: #c12532;--vox-palette-red-700: #9a1d28;--vox-palette-red-800: #78171f;--vox-palette-red-900: #511015;--vox-palette-purple-100: #f1ecf9;--vox-palette-purple-200: #ded1f0;--vox-palette-purple-300: #c2abe3;--vox-palette-purple-400: #a17dd4;--vox-palette-purple-500: #804fc4;--vox-palette-purple-600: #6939ac;--vox-palette-purple-700: #542e8a;--vox-palette-purple-800: #41246b;--vox-palette-purple-900: #2c1849}.vox-table{width:100%;border-collapse:collapse;font-family:var(--vox-font-family-base);font-size:14px;color:var(--vox-color-text-1)}.vox-table caption{margin-bottom:.5rem;font-weight:600;text-align:left;color:var(--vox-color-text-1)}.vox-table th{padding:.6rem .9rem;border-bottom:2px solid var(--vox-color-divider);font-weight:600;text-align:left;white-space:nowrap;color:var(--vox-color-text-1);background-color:var(--vox-color-bg-soft)}.vox-table td{padding:.6rem .9rem;border-bottom:1px solid var(--vox-color-divider);color:var(--vox-color-text-2)}.vox-table--striped tbody tr:nth-child(odd){background-color:var(--vox-color-bg-soft)}.vox-table--compact th,.vox-table--compact td{padding:.35rem .6rem}.vox-table-wrap{overflow-x:auto;border:1px solid var(--vox-color-divider);border-radius:var(--vox-radius-lg)}.vox-table-wrap .vox-table tbody tr:last-child th,.vox-table-wrap .vox-table tbody tr:last-child td{border-bottom:none}.vox-list{font-family:var(--vox-font-family-base);font-size:14px;line-height:1.7;color:var(--vox-color-text-2);padding-left:1.25rem}.vox-list li+li{margin-top:.25rem}.vox-list--plain{list-style:none;padding-left:0}.vox-list--inline{list-style:none;padding-left:0;display:flex;flex-wrap:wrap;gap:.25rem 1.25rem}.vox-list--inline li+li{margin-top:0}.vox-prose{max-width:44rem;font-family:var(--vox-font-family-base);font-size:16px;line-height:1.75;color:var(--vox-color-text-2)}.vox-prose+.vox-prose{margin-top:var(--vox-space-4)}.vox-prose a{color:var(--vox-color-brand-1);text-decoration:underline}.vox-prose a:hover{color:var(--vox-color-brand-2)}.vox-container{max-width:1280px;margin:0 auto;padding-left:var(--vox-space-6);padding-right:var(--vox-space-6)}.vox-m-all-none{margin:0!important}.vox-m-all-xs{margin:.25rem!important}.vox-m-all-sm{margin:.5rem!important}.vox-m-all-md{margin:1rem!important}.vox-m-all-lg{margin:1.5rem!important}.vox-m-all-xl{margin:2rem!important}.vox-m-all-xxl{margin:3rem!important}.vox-m-top-none{margin-top:0!important}.vox-m-top-xs{margin-top:.25rem!important}.vox-m-top-sm{margin-top:.5rem!important}.vox-m-top-md{margin-top:1rem!important}.vox-m-top-lg{margin-top:1.5rem!important}.vox-m-top-xl{margin-top:2rem!important}.vox-m-top-xxl{margin-top:3rem!important}.vox-m-right-none{margin-right:0!important}.vox-m-right-xs{margin-right:.25rem!important}.vox-m-right-sm{margin-right:.5rem!important}.vox-m-right-md{margin-right:1rem!important}.vox-m-right-lg{margin-right:1.5rem!important}.vox-m-right-xl{margin-right:2rem!important}.vox-m-right-xxl{margin-right:3rem!important}.vox-m-bottom-none{margin-bottom:0!important}.vox-m-bottom-xs{margin-bottom:.25rem!important}.vox-m-bottom-sm{margin-bottom:.5rem!important}.vox-m-bottom-md{margin-bottom:1rem!important}.vox-m-bottom-lg{margin-bottom:1.5rem!important}.vox-m-bottom-xl{margin-bottom:2rem!important}.vox-m-bottom-xxl{margin-bottom:3rem!important}.vox-m-left-none{margin-left:0!important}.vox-m-left-xs{margin-left:.25rem!important}.vox-m-left-sm{margin-left:.5rem!important}.vox-m-left-md{margin-left:1rem!important}.vox-m-left-lg{margin-left:1.5rem!important}.vox-m-left-xl{margin-left:2rem!important}.vox-m-left-xxl{margin-left:3rem!important}.vox-m-x-none{margin-left:0!important;margin-right:0!important}.vox-m-x-xs{margin-left:.25rem!important;margin-right:.25rem!important}.vox-m-x-sm{margin-left:.5rem!important;margin-right:.5rem!important}.vox-m-x-md{margin-left:1rem!important;margin-right:1rem!important}.vox-m-x-lg{margin-left:1.5rem!important;margin-right:1.5rem!important}.vox-m-x-xl{margin-left:2rem!important;margin-right:2rem!important}.vox-m-x-xxl{margin-left:3rem!important;margin-right:3rem!important}.vox-m-x-auto{margin-left:auto!important;margin-right:auto!important}.vox-m-y-none{margin-top:0!important;margin-bottom:0!important}.vox-m-y-xs{margin-top:.25rem!important;margin-bottom:.25rem!important}.vox-m-y-sm{margin-top:.5rem!important;margin-bottom:.5rem!important}.vox-m-y-md{margin-top:1rem!important;margin-bottom:1rem!important}.vox-m-y-lg{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.vox-m-y-xl{margin-top:2rem!important;margin-bottom:2rem!important}.vox-m-y-xxl{margin-top:3rem!important;margin-bottom:3rem!important}.vox-p-all-none{padding:0!important}.vox-p-all-xs{padding:.25rem!important}.vox-p-all-sm{padding:.5rem!important}.vox-p-all-md{padding:1rem!important}.vox-p-all-lg{padding:1.5rem!important}.vox-p-all-xl{padding:2rem!important}.vox-p-all-xxl{padding:3rem!important}.vox-p-top-none{padding-top:0!important}.vox-p-top-xs{padding-top:.25rem!important}.vox-p-top-sm{padding-top:.5rem!important}.vox-p-top-md{padding-top:1rem!important}.vox-p-top-lg{padding-top:1.5rem!important}.vox-p-top-xl{padding-top:2rem!important}.vox-p-top-xxl{padding-top:3rem!important}.vox-p-right-none{padding-right:0!important}.vox-p-right-xs{padding-right:.25rem!important}.vox-p-right-sm{padding-right:.5rem!important}.vox-p-right-md{padding-right:1rem!important}.vox-p-right-lg{padding-right:1.5rem!important}.vox-p-right-xl{padding-right:2rem!important}.vox-p-right-xxl{padding-right:3rem!important}.vox-p-bottom-none{padding-bottom:0!important}.vox-p-bottom-xs{padding-bottom:.25rem!important}.vox-p-bottom-sm{padding-bottom:.5rem!important}.vox-p-bottom-md{padding-bottom:1rem!important}.vox-p-bottom-lg{padding-bottom:1.5rem!important}.vox-p-bottom-xl{padding-bottom:2rem!important}.vox-p-bottom-xxl{padding-bottom:3rem!important}.vox-p-left-none{padding-left:0!important}.vox-p-left-xs{padding-left:.25rem!important}.vox-p-left-sm{padding-left:.5rem!important}.vox-p-left-md{padding-left:1rem!important}.vox-p-left-lg{padding-left:1.5rem!important}.vox-p-left-xl{padding-left:2rem!important}.vox-p-left-xxl{padding-left:3rem!important}.vox-p-x-none{padding-left:0!important;padding-right:0!important}.vox-p-x-xs{padding-left:.25rem!important;padding-right:.25rem!important}.vox-p-x-sm{padding-left:.5rem!important;padding-right:.5rem!important}.vox-p-x-md{padding-left:1rem!important;padding-right:1rem!important}.vox-p-x-lg{padding-left:1.5rem!important;padding-right:1.5rem!important}.vox-p-x-xl{padding-left:2rem!important;padding-right:2rem!important}.vox-p-x-xxl{padding-left:3rem!important;padding-right:3rem!important}.vox-p-y-none{padding-top:0!important;padding-bottom:0!important}.vox-p-y-xs{padding-top:.25rem!important;padding-bottom:.25rem!important}.vox-p-y-sm{padding-top:.5rem!important;padding-bottom:.5rem!important}.vox-p-y-md{padding-top:1rem!important;padding-bottom:1rem!important}.vox-p-y-lg{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.vox-p-y-xl{padding-top:2rem!important;padding-bottom:2rem!important}.vox-p-y-xxl{padding-top:3rem!important;padding-bottom:3rem!important}.vox-ts-xs{font-size:12px!important}.vox-ts-sm{font-size:14px!important}.vox-ts-md{font-size:16px!important}.vox-ts-lg{font-size:18px!important}.vox-ts-xl{font-size:22px!important}.vox-ts-xxl{font-size:28px!important}.vox-ts-3xl{font-size:36px!important}.vox-text-regular{font-weight:400!important}.vox-text-medium{font-weight:500!important}.vox-text-semibold{font-weight:600!important}.vox-text-bold{font-weight:700!important}.vox-text-left{text-align:left!important}.vox-text-center{text-align:center!important}.vox-text-right{text-align:right!important}.vox-text-uppercase{text-transform:uppercase!important;letter-spacing:.05em!important}.vox-text-mono{font-family:var(--vox-font-family-mono)!important}.vox-lh-tight{line-height:1.25!important}.vox-lh-base{line-height:1.5!important}.vox-lh-loose{line-height:1.75!important}.vox-color-text-1{color:var(--vox-color-text-1)!important}.vox-color-text-2{color:var(--vox-color-text-2)!important}.vox-color-text-3{color:var(--vox-color-text-3)!important}.vox-color-brand{color:var(--vox-color-brand-1)!important}.vox-color-tip{color:var(--vox-color-tip-1)!important}.vox-color-warning{color:var(--vox-color-warning-1)!important}.vox-color-danger{color:var(--vox-color-danger-1)!important}.vox-bg{background-color:var(--vox-color-bg)!important}.vox-bg-alt{background-color:var(--vox-color-bg-alt)!important}.vox-bg-soft{background-color:var(--vox-color-bg-soft)!important}.vox-bg-elv{background-color:var(--vox-color-bg-elv)!important}.vox-bg-brand{background-color:var(--vox-color-brand-3)!important;color:var(--vox-color-text-inverse)!important}.vox-bg-brand-soft{background-color:var(--vox-color-brand-soft)!important}.vox-bg-tip-soft{background-color:var(--vox-color-tip-soft)!important}.vox-bg-warning-soft{background-color:var(--vox-color-warning-soft)!important}.vox-bg-danger-soft{background-color:var(--vox-color-danger-soft)!important}.vox-color-gray-100{color:var(--vox-palette-gray-100)!important}.vox-color-gray-200{color:var(--vox-palette-gray-200)!important}.vox-color-gray-300{color:var(--vox-palette-gray-300)!important}.vox-color-gray-400{color:var(--vox-palette-gray-400)!important}.vox-color-gray-500{color:var(--vox-palette-gray-500)!important}.vox-color-gray-600{color:var(--vox-palette-gray-600)!important}.vox-color-gray-700{color:var(--vox-palette-gray-700)!important}.vox-color-gray-800{color:var(--vox-palette-gray-800)!important}.vox-color-gray-900{color:var(--vox-palette-gray-900)!important}.vox-bg-gray-100{background-color:var(--vox-palette-gray-100)!important}.vox-bg-gray-200{background-color:var(--vox-palette-gray-200)!important}.vox-bg-gray-300{background-color:var(--vox-palette-gray-300)!important}.vox-bg-gray-400{background-color:var(--vox-palette-gray-400)!important}.vox-bg-gray-500{background-color:var(--vox-palette-gray-500)!important}.vox-bg-gray-600{background-color:var(--vox-palette-gray-600)!important}.vox-bg-gray-700{background-color:var(--vox-palette-gray-700)!important}.vox-bg-gray-800{background-color:var(--vox-palette-gray-800)!important}.vox-bg-gray-900{background-color:var(--vox-palette-gray-900)!important}.vox-color-teal-100{color:var(--vox-palette-teal-100)!important}.vox-color-teal-200{color:var(--vox-palette-teal-200)!important}.vox-color-teal-300{color:var(--vox-palette-teal-300)!important}.vox-color-teal-400{color:var(--vox-palette-teal-400)!important}.vox-color-teal-500{color:var(--vox-palette-teal-500)!important}.vox-color-teal-600{color:var(--vox-palette-teal-600)!important}.vox-color-teal-700{color:var(--vox-palette-teal-700)!important}.vox-color-teal-800{color:var(--vox-palette-teal-800)!important}.vox-color-teal-900{color:var(--vox-palette-teal-900)!important}.vox-bg-teal-100{background-color:var(--vox-palette-teal-100)!important}.vox-bg-teal-200{background-color:var(--vox-palette-teal-200)!important}.vox-bg-teal-300{background-color:var(--vox-palette-teal-300)!important}.vox-bg-teal-400{background-color:var(--vox-palette-teal-400)!important}.vox-bg-teal-500{background-color:var(--vox-palette-teal-500)!important}.vox-bg-teal-600{background-color:var(--vox-palette-teal-600)!important}.vox-bg-teal-700{background-color:var(--vox-palette-teal-700)!important}.vox-bg-teal-800{background-color:var(--vox-palette-teal-800)!important}.vox-bg-teal-900{background-color:var(--vox-palette-teal-900)!important}.vox-color-blue-100{color:var(--vox-palette-blue-100)!important}.vox-color-blue-200{color:var(--vox-palette-blue-200)!important}.vox-color-blue-300{color:var(--vox-palette-blue-300)!important}.vox-color-blue-400{color:var(--vox-palette-blue-400)!important}.vox-color-blue-500{color:var(--vox-palette-blue-500)!important}.vox-color-blue-600{color:var(--vox-palette-blue-600)!important}.vox-color-blue-700{color:var(--vox-palette-blue-700)!important}.vox-color-blue-800{color:var(--vox-palette-blue-800)!important}.vox-color-blue-900{color:var(--vox-palette-blue-900)!important}.vox-bg-blue-100{background-color:var(--vox-palette-blue-100)!important}.vox-bg-blue-200{background-color:var(--vox-palette-blue-200)!important}.vox-bg-blue-300{background-color:var(--vox-palette-blue-300)!important}.vox-bg-blue-400{background-color:var(--vox-palette-blue-400)!important}.vox-bg-blue-500{background-color:var(--vox-palette-blue-500)!important}.vox-bg-blue-600{background-color:var(--vox-palette-blue-600)!important}.vox-bg-blue-700{background-color:var(--vox-palette-blue-700)!important}.vox-bg-blue-800{background-color:var(--vox-palette-blue-800)!important}.vox-bg-blue-900{background-color:var(--vox-palette-blue-900)!important}.vox-color-green-100{color:var(--vox-palette-green-100)!important}.vox-color-green-200{color:var(--vox-palette-green-200)!important}.vox-color-green-300{color:var(--vox-palette-green-300)!important}.vox-color-green-400{color:var(--vox-palette-green-400)!important}.vox-color-green-500{color:var(--vox-palette-green-500)!important}.vox-color-green-600{color:var(--vox-palette-green-600)!important}.vox-color-green-700{color:var(--vox-palette-green-700)!important}.vox-color-green-800{color:var(--vox-palette-green-800)!important}.vox-color-green-900{color:var(--vox-palette-green-900)!important}.vox-bg-green-100{background-color:var(--vox-palette-green-100)!important}.vox-bg-green-200{background-color:var(--vox-palette-green-200)!important}.vox-bg-green-300{background-color:var(--vox-palette-green-300)!important}.vox-bg-green-400{background-color:var(--vox-palette-green-400)!important}.vox-bg-green-500{background-color:var(--vox-palette-green-500)!important}.vox-bg-green-600{background-color:var(--vox-palette-green-600)!important}.vox-bg-green-700{background-color:var(--vox-palette-green-700)!important}.vox-bg-green-800{background-color:var(--vox-palette-green-800)!important}.vox-bg-green-900{background-color:var(--vox-palette-green-900)!important}.vox-color-gold-100{color:var(--vox-palette-gold-100)!important}.vox-color-gold-200{color:var(--vox-palette-gold-200)!important}.vox-color-gold-300{color:var(--vox-palette-gold-300)!important}.vox-color-gold-400{color:var(--vox-palette-gold-400)!important}.vox-color-gold-500{color:var(--vox-palette-gold-500)!important}.vox-color-gold-600{color:var(--vox-palette-gold-600)!important}.vox-color-gold-700{color:var(--vox-palette-gold-700)!important}.vox-color-gold-800{color:var(--vox-palette-gold-800)!important}.vox-color-gold-900{color:var(--vox-palette-gold-900)!important}.vox-bg-gold-100{background-color:var(--vox-palette-gold-100)!important}.vox-bg-gold-200{background-color:var(--vox-palette-gold-200)!important}.vox-bg-gold-300{background-color:var(--vox-palette-gold-300)!important}.vox-bg-gold-400{background-color:var(--vox-palette-gold-400)!important}.vox-bg-gold-500{background-color:var(--vox-palette-gold-500)!important}.vox-bg-gold-600{background-color:var(--vox-palette-gold-600)!important}.vox-bg-gold-700{background-color:var(--vox-palette-gold-700)!important}.vox-bg-gold-800{background-color:var(--vox-palette-gold-800)!important}.vox-bg-gold-900{background-color:var(--vox-palette-gold-900)!important}.vox-color-red-100{color:var(--vox-palette-red-100)!important}.vox-color-red-200{color:var(--vox-palette-red-200)!important}.vox-color-red-300{color:var(--vox-palette-red-300)!important}.vox-color-red-400{color:var(--vox-palette-red-400)!important}.vox-color-red-500{color:var(--vox-palette-red-500)!important}.vox-color-red-600{color:var(--vox-palette-red-600)!important}.vox-color-red-700{color:var(--vox-palette-red-700)!important}.vox-color-red-800{color:var(--vox-palette-red-800)!important}.vox-color-red-900{color:var(--vox-palette-red-900)!important}.vox-bg-red-100{background-color:var(--vox-palette-red-100)!important}.vox-bg-red-200{background-color:var(--vox-palette-red-200)!important}.vox-bg-red-300{background-color:var(--vox-palette-red-300)!important}.vox-bg-red-400{background-color:var(--vox-palette-red-400)!important}.vox-bg-red-500{background-color:var(--vox-palette-red-500)!important}.vox-bg-red-600{background-color:var(--vox-palette-red-600)!important}.vox-bg-red-700{background-color:var(--vox-palette-red-700)!important}.vox-bg-red-800{background-color:var(--vox-palette-red-800)!important}.vox-bg-red-900{background-color:var(--vox-palette-red-900)!important}.vox-color-purple-100{color:var(--vox-palette-purple-100)!important}.vox-color-purple-200{color:var(--vox-palette-purple-200)!important}.vox-color-purple-300{color:var(--vox-palette-purple-300)!important}.vox-color-purple-400{color:var(--vox-palette-purple-400)!important}.vox-color-purple-500{color:var(--vox-palette-purple-500)!important}.vox-color-purple-600{color:var(--vox-palette-purple-600)!important}.vox-color-purple-700{color:var(--vox-palette-purple-700)!important}.vox-color-purple-800{color:var(--vox-palette-purple-800)!important}.vox-color-purple-900{color:var(--vox-palette-purple-900)!important}.vox-bg-purple-100{background-color:var(--vox-palette-purple-100)!important}.vox-bg-purple-200{background-color:var(--vox-palette-purple-200)!important}.vox-bg-purple-300{background-color:var(--vox-palette-purple-300)!important}.vox-bg-purple-400{background-color:var(--vox-palette-purple-400)!important}.vox-bg-purple-500{background-color:var(--vox-palette-purple-500)!important}.vox-bg-purple-600{background-color:var(--vox-palette-purple-600)!important}.vox-bg-purple-700{background-color:var(--vox-palette-purple-700)!important}.vox-bg-purple-800{background-color:var(--vox-palette-purple-800)!important}.vox-bg-purple-900{background-color:var(--vox-palette-purple-900)!important}.vox-border-all{border:1px solid var(--vox-color-divider)!important}.vox-border-top{border-top:1px solid var(--vox-color-divider)!important}.vox-border-right{border-right:1px solid var(--vox-color-divider)!important}.vox-border-bottom{border-bottom:1px solid var(--vox-color-divider)!important}.vox-border-left{border-left:1px solid var(--vox-color-divider)!important}.vox-border-none{border:none!important}.vox-radius-sm{border-radius:var(--vox-radius-sm)!important}.vox-radius-md{border-radius:var(--vox-radius-md)!important}.vox-radius-lg{border-radius:var(--vox-radius-lg)!important}.vox-radius-full{border-radius:var(--vox-radius-full)!important}.vox-display-block{display:block!important}.vox-display-inline{display:inline!important}.vox-display-inline-block{display:inline-block!important}.vox-display-flex{display:flex!important}.vox-display-inline-flex{display:inline-flex!important}.vox-display-grid{display:grid!important}.vox-flex-row{flex-direction:row!important}.vox-flex-column{flex-direction:column!important}.vox-flex-wrap{flex-wrap:wrap!important}.vox-flex-nowrap{flex-wrap:nowrap!important}.vox-justify-start{justify-content:flex-start!important}.vox-justify-center{justify-content:center!important}.vox-justify-end{justify-content:flex-end!important}.vox-justify-between{justify-content:space-between!important}.vox-items-start{align-items:flex-start!important}.vox-items-center{align-items:center!important}.vox-items-end{align-items:flex-end!important}.vox-items-stretch{align-items:stretch!important}.vox-grow-0{flex-grow:0!important}.vox-grow-1{flex-grow:1!important}.vox-shrink-0{flex-shrink:0!important}.vox-gap-none{gap:0!important}.vox-gap-xs{gap:.25rem!important}.vox-gap-sm{gap:.5rem!important}.vox-gap-md{gap:1rem!important}.vox-gap-lg{gap:1.5rem!important}.vox-gap-xl{gap:2rem!important}.vox-gap-xxl{gap:3rem!important}.vox-shadow-1{box-shadow:var(--vox-shadow-1)!important}.vox-shadow-2{box-shadow:var(--vox-shadow-2)!important}.vox-shadow-none{box-shadow:none!important}.vox-hide{display:none!important}.vox-sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important;border:0!important}@media(max-width:479.98px){.vox-hide-sm-down{display:none!important}}@media(max-width:767.98px){.vox-hide-md-down{display:none!important}}@media(max-width:1023.98px){.vox-hide-lg-down{display:none!important}}@media(min-width:480px){.vox-hide-sm-up{display:none!important}}@media(min-width:768px){.vox-hide-md-up{display:none!important}}@media(min-width:1024px){.vox-hide-lg-up{display:none!important}}.vox-width-full{width:100%!important}.vox-width-auto{width:auto!important}.vox-width-sm{width:20rem!important}.vox-width-md{width:30rem!important}.vox-width-lg{width:40rem!important}.vox-width-xl{width:50rem!important}.vox-max-width-sm{max-width:20rem!important}.vox-max-width-md{max-width:30rem!important}.vox-max-width-lg{max-width:40rem!important}.vox-max-width-xl{max-width:50rem!important}.vox-max-width-full{max-width:100%!important}.vox-z-0{z-index:0!important}.vox-z-10{z-index:10!important}.vox-z-100{z-index:100!important}.vox-z-1000{z-index:1000!important}