@blukavantui/charts-community 1.0.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +0 -2
- package/README.md +75 -70
- package/dist/bar.js +1 -1
- package/dist/browser/charts-community.css +1 -1
- package/dist/browser/charts-community.js +17 -17
- package/dist/build-audit.json +129 -84
- package/dist/catalogue-runtime.d.ts +13 -1
- package/dist/chunk-2GUWWKHW.js +1 -0
- package/dist/chunk-3PITHTEO.js +1 -0
- package/dist/chunk-4B5MQ6GZ.js +1 -0
- package/dist/chunk-4EQMOBBN.js +1 -0
- package/dist/chunk-4WDZUJDS.js +1 -0
- package/dist/chunk-5NUOOMHV.js +1 -0
- package/dist/chunk-7OCMRHIH.js +1 -0
- package/dist/chunk-CF5Q2DDP.js +1 -0
- package/dist/chunk-EITBQBN2.js +1 -0
- package/dist/chunk-FXNKAHRG.js +1 -0
- package/dist/chunk-IDMAFTWV.js +1 -0
- package/dist/chunk-ILTENI35.js +1 -0
- package/dist/chunk-KRMM7EWI.js +1 -0
- package/dist/chunk-LUUPBBD4.js +1 -0
- package/dist/chunk-MR5VITXX.js +1 -0
- package/dist/chunk-NASBRHIW.js +1 -0
- package/dist/chunk-NXDBBMF5.js +1 -0
- package/dist/chunk-OQ6MP7PY.js +1 -0
- package/dist/{chunk-QETOF22L.js → chunk-RC2TCMJF.js} +1 -1
- package/dist/{chunk-MSZ5J5WG.js → chunk-RXOGAN23.js} +1 -1
- package/dist/chunk-UGXWOWAG.js +2 -0
- package/dist/chunk-UO2KNHTU.js +2 -0
- package/dist/chunk-UQMMBG26.js +3 -0
- package/dist/chunk-VTJ4XPRV.js +1 -0
- package/dist/chunk-WJ3UHH6J.js +1 -0
- package/dist/chunk-XLJUSNGV.js +1 -0
- package/dist/doughnut.js +1 -1
- package/dist/heatmap.js +1 -1
- package/dist/index.js +1 -1
- package/dist/line.js +1 -1
- package/dist/motion/bar.css +1 -0
- package/dist/motion/bar.d.ts +8 -0
- package/dist/motion/bar.js +1 -0
- package/dist/motion/doughnut.css +1 -0
- package/dist/motion/doughnut.d.ts +8 -0
- package/dist/motion/doughnut.js +1 -0
- package/dist/motion/heatmap.css +1 -0
- package/dist/motion/heatmap.d.ts +7 -0
- package/dist/motion/heatmap.js +1 -0
- package/dist/motion/line.css +1 -0
- package/dist/motion/line.d.ts +8 -0
- package/dist/motion/line.js +1 -0
- package/dist/motion/pie.css +1 -0
- package/dist/motion/pie.d.ts +8 -0
- package/dist/motion/pie.js +1 -0
- package/dist/motion/radar.css +1 -0
- package/dist/motion/radar.d.ts +8 -0
- package/dist/motion/radar.js +1 -0
- package/dist/motion/scatter.css +1 -0
- package/dist/motion/scatter.d.ts +8 -0
- package/dist/motion/scatter.js +1 -0
- package/dist/motion/sparkline.d.ts +7 -0
- package/dist/motion/sparkline.js +1 -0
- package/dist/motion-collection.d.ts +7 -0
- package/dist/motion-community.d.ts +40 -0
- package/dist/motion-policy.d.ts +14 -0
- package/dist/motion.css +1 -0
- package/dist/motion.d.ts +40 -0
- package/dist/motion.js +1 -0
- package/dist/pie.js +1 -1
- package/dist/radar.js +1 -1
- package/dist/scatter.js +1 -1
- package/dist/sparkline.js +1 -1
- package/dist/styles.css +8 -0
- package/dist/web-api.json +162 -2
- package/dist/web-motion-sparkline.d.ts +4 -0
- package/edition.json +1 -1
- package/package.json +40 -33
- package/src/catalogue-runtime.ts +49 -5
- package/src/motion/bar.ts +15 -0
- package/src/motion/doughnut.ts +14 -0
- package/src/motion/heatmap.ts +14 -0
- package/src/motion/line.ts +15 -0
- package/src/motion/pie.ts +14 -0
- package/src/motion/radar.ts +15 -0
- package/src/motion/scatter.ts +15 -0
- package/src/motion/sparkline.ts +10 -0
- package/src/motion-collection.ts +20 -0
- package/src/motion-community.ts +22 -0
- package/src/motion-policy.ts +36 -0
- package/src/web-motion-sparkline.ts +37 -0
- package/dist/chunk-5NXLEMCV.js +0 -3
- package/dist/chunk-FHHQWCUO.js +0 -1
- package/dist/chunk-FZ7J7BEC.js +0 -1
- package/dist/chunk-JNSBTZUP.js +0 -2
- package/dist/chunk-KCW3WN5P.js +0 -1
- package/dist/chunk-QBKO4AG7.js +0 -1
- package/dist/chunk-QFXXWRD5.js +0 -1
- package/dist/chunk-YJKEV5J7.js +0 -2
- package/scripts/build.mjs +0 -31
- package/tsconfig.json +0 -16
package/LICENSE.txt
CHANGED
|
@@ -13,8 +13,6 @@ Authorized public distribution sources are:
|
|
|
13
13
|
- Blutek Media's official BluKavantUI website at https://blukavantui.blutekmedia.com;
|
|
14
14
|
- the official @blukavantui/community package published by Blutek Media on the
|
|
15
15
|
npm public registry at https://www.npmjs.com/package/@blukavantui/community;
|
|
16
|
-
- the official @blukavantui/charts-community package published by Blutek Media on
|
|
17
|
-
the npm public registry at https://www.npmjs.com/package/@blukavantui/charts-community;
|
|
18
16
|
- Blutek Media's official Community listing on OutSystems Forge, linked from
|
|
19
17
|
the official website, when that listing is published.
|
|
20
18
|
|
package/README.md
CHANGED
|
@@ -1,94 +1,99 @@
|
|
|
1
|
-
# BluKavantUI Charts
|
|
1
|
+
# BluKavantUI Charts 1.0
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
Doughnut, Scatter, Radar and Heatmap**. Charts are separate from the UI library.
|
|
5
|
-
Per-chart imports let your bundler include the chart you use; Sparkline uses SVG
|
|
6
|
-
and does not load ECharts.
|
|
3
|
+
Charts ship separately from the UI library. Importing UI components does not load ECharts.
|
|
7
4
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
· [Contact](https://blutekmedia.com/contact)
|
|
5
|
+
- `@blukavantui/charts-community`: Sparkline, Line, Bar, Pie, Doughnut, Scatter, Radar, Heatmap.
|
|
6
|
+
- `@blukavantui/charts-pro`: Mixed, Nightingale, Polar, Treemap, Sankey, Funnel, GeoMap, CalendarHeatmap.
|
|
11
7
|
|
|
12
|
-
|
|
8
|
+
Charts Pro is included in the existing BluKavantUI Pro developer license, with the same key, application scope, update coverage and activation policy. It is a separate download, with no additional chart charge. It does not depend on the full UI Pro package. Shared Chip and Skeleton UI comes from Community.
|
|
13
9
|
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
Use a per-chart import in a bundler:
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
import {createLineChart} from '@blukavantui/charts-community/line';
|
|
14
|
+
import '@blukavantui/charts-community/theme.css'; // Once, if your app does not already load the shared theme.
|
|
15
|
+
import '@blukavantui/charts-community/styles.css';
|
|
16
|
+
const chart = createLineChart(document.querySelector<HTMLElement>('#chart')!, {
|
|
17
|
+
Title: 'Monthly revenue',
|
|
18
|
+
Categories: [{Key:'jan',Label:'Jan'},{Key:'feb',Label:'Feb'}],
|
|
19
|
+
Series: [{Key:'revenue',Label:'Revenue',Values:[42,58]}],
|
|
20
|
+
LegendStyle: 'Compact', LegendPosition: 'Bottom',
|
|
21
|
+
});
|
|
22
|
+
// chart.update(...); chart.download('png'); chart.destroy();
|
|
16
23
|
```
|
|
17
24
|
|
|
18
|
-
The
|
|
19
|
-
full-sized charts. npm installs those dependencies. TypeScript declarations are
|
|
20
|
-
included; no separate `@types` package is required. Use a browser application
|
|
21
|
-
with an ESM-capable bundler such as Vite. In an SSR application, import and mount
|
|
22
|
-
the charts on the client after their host element exists.
|
|
25
|
+
The ESM packages share the `echarts` dependency and register only the renderers required by the chart factory you import. Bundlers can remove unused entry points. The browser files in `dist/browser` contain the entire selected edition and ECharts for script-tag use. Include `dist/styles.css` and one shared `dist/theme.css`; preserve the `fonts/` directory. GeoMap browser users also keep the adjacent `browser/maps/` folder. Built-in map JSON is fetched only when a map chart needs it; custom maps are supplied in the `GeoJSON` option.
|
|
23
26
|
|
|
24
|
-
|
|
25
|
-
|
|
27
|
+
```ts
|
|
28
|
+
import {setLicenseKey} from '@blukavantui/charts-pro/license';
|
|
29
|
+
await setLicenseKey(yourLicenseKey, {applicationId: 'your-licensed-application'});
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
The shared licensing state also recognizes keys configured through `@blukavantui/pro/license`. Public web-demo license configuration belongs to the website, never these packages or downloaded examples.
|
|
26
33
|
|
|
27
|
-
|
|
34
|
+
The 15 ECharts-based charts retain the POC's editable data contracts, optional patterns, accessible data table and keyboard selection, theme colors, loading Skeleton, four shared legend styles and positions, and PNG/SVG export. `Height` controls the plot; external legends add space around it. Chart exports include their legend.
|
|
28
35
|
|
|
29
|
-
|
|
36
|
+
## Build and verify
|
|
30
37
|
|
|
31
|
-
```
|
|
32
|
-
|
|
38
|
+
```sh
|
|
39
|
+
npm ci
|
|
40
|
+
npm run check
|
|
41
|
+
npm test
|
|
42
|
+
npm run build
|
|
43
|
+
npm run pack:releases
|
|
33
44
|
```
|
|
34
45
|
|
|
35
|
-
|
|
46
|
+
`packages/community` and `packages/pro` are the independently installable npm packages. Release archives go to `releases/`. These are new Web artifacts; the original POC remains available for comparison. Web archives do not install into Service Studio. Native Community and Pro packages are separate account downloads with customer-managed IPP instructions. The native 1.0 update is prepared in `src/native` and `native-preparation`; see [Native preparation](docs/NATIVE_PREPARATION.md). Publication and deployment are separate release steps; a successful local pack does not mean the package is published on npm.
|
|
36
47
|
|
|
37
|
-
|
|
38
|
-
import { createLineChart } from '@blukavantui/charts-community/line'
|
|
39
|
-
import '@blukavantui/charts-community/theme.css'
|
|
40
|
-
import '@blukavantui/charts-community/styles.css'
|
|
48
|
+
## Web integration and release candidate
|
|
41
49
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
LegendStyle: 'Compact',
|
|
47
|
-
LegendPosition: 'Bottom',
|
|
48
|
-
})
|
|
49
|
-
|
|
50
|
-
// Before removing the host element:
|
|
51
|
-
// chart.destroy()
|
|
52
|
-
```
|
|
50
|
+
The main site consumes the built per-chart package exports, not the POC. Its
|
|
51
|
+
`build:charts` task prepares the marketing page, 16 documentation playgrounds and
|
|
52
|
+
four screen previews. Build the chart workspace before the site. UI-only consumers
|
|
53
|
+
retain their existing imports and do not gain an ECharts dependency.
|
|
53
54
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
The website owns the sample data and screen compositions in
|
|
56
|
+
`../bluui-site/resources/js/charts`. Run `npm run build:chart-starters` there after
|
|
57
|
+
packing a release to create Community and Pro screen starter ZIPs. The public
|
|
58
|
+
Community starter contains the student and commerce experiences. The protected
|
|
59
|
+
Pro starter adds revenue analytics and software development, with matching local
|
|
60
|
+
package archives. None includes the website's first-party license key.
|
|
59
61
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
62
|
+
`npm run verify:packages` checks the actual packed exports and consumer bundles.
|
|
63
|
+
Bundle size depends on the imported chart and consumer bundler. CSS, fonts and
|
|
64
|
+
maps are separate. UI-only imports do not load ECharts. The 1.0 Web artifacts
|
|
65
|
+
are release candidates; the previously published 0.1.0 archives remain immutable.
|
|
66
|
+
Publishing to npm has not been performed.
|
|
63
67
|
|
|
64
|
-
|
|
68
|
+
For deployment, copy the three exact Pro filenames from the release manifest to
|
|
69
|
+
the server's existing `PRO_RELEASES_DIRECTORY` (outside the public web root).
|
|
70
|
+
The account routes enforce ownership, billing mode, revocation and release-date
|
|
71
|
+
coverage. Community files are copied to the site's public downloads directory.
|
|
72
|
+
Keep the immutable `releasedAt` value aligned between this package's licensing
|
|
73
|
+
manifest and `bluui-site/app/services/chart_releases.ts`. Never overwrite a
|
|
74
|
+
published version; assign a new version for subsequent changes. Build the site
|
|
75
|
+
locally with its sibling workspaces and deploy its resulting `build/` output.
|
|
76
|
+
The native 1.0 update requires its own Service Studio integration and export checks.
|
|
65
77
|
|
|
66
|
-
|
|
67
|
-
The package includes a standalone build script and TypeScript configuration.
|
|
68
|
-
To rebuild a private working copy, use Node.js 24 with npm:
|
|
78
|
+
## OutSystems installation
|
|
69
79
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
80
|
+
Native Charts Community and Pro packages are available separately from account
|
|
81
|
+
downloads. They contain real Service Studio producers; these Web archives do not.
|
|
82
|
+
See https://blukavantui.blutekmedia.com/integration#charts-modules for dependencies,
|
|
83
|
+
typed data bindings and events. Customers process IPP for their own destination.
|
|
84
|
+
Community downloads are free; Pro requires a valid covered license.
|
|
75
85
|
|
|
76
|
-
The
|
|
77
|
-
|
|
78
|
-
|
|
86
|
+
The current published native exports retain their existing version. The 1.0
|
|
87
|
+
native update is pending fresh editor integration, publish, behavior checks and
|
|
88
|
+
export. Do not relabel an older native package as having the new runtime.
|
|
79
89
|
|
|
80
|
-
##
|
|
90
|
+
## Sparkline
|
|
81
91
|
|
|
82
|
-
Charts Community
|
|
83
|
-
under the included [Community license](./LICENSE.txt), with private source
|
|
84
|
-
modification allowed. This is a **custom source-available license**, not MIT or
|
|
85
|
-
BSD; redistribution of the reusable library is restricted. Third-party software
|
|
86
|
-
and fonts retain their own licenses; see [third-party notices](./THIRD_PARTY_NOTICES.txt).
|
|
92
|
+
Sparkline is now part of Charts Community. Import `createSparkline` and its types from `@blukavantui/charts-community/sparkline`, and load `@blukavantui/charts-community/sparkline.css`. `LineStyle` selects `Smooth` (the default) or `Straight`. The smooth curve passes through each observation without overshooting between values, and the area fill and animated point follow the same curve. A glow and point travel along the line once by default; `Animation` accepts `Off`, `Once` and `Continuous`, with `AnimationDuration` controlling seconds per pass. `AreaOpacity` sets the fill strength and `AreaFade` fades it to transparent at the bottom. Reduced-motion preferences disable the animation. Its compact SVG renderer preserves the existing Points, Color, Height, area, end-marker, summary and data-table options without loading ECharts. It does not use the large-chart legend or export toolbar. Existing UI package Sparkline exports remain available for compatibility; native OutSystems packaging has not changed.
|
|
87
93
|
|
|
88
|
-
|
|
89
|
-
by this package, or part of this npm release. Native OutSystems distributions
|
|
90
|
-
are also separate from these browser packages.
|
|
94
|
+
## Release verification
|
|
91
95
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
96
|
+
The Web target is **1.0.0**. `npm run verify:local` checks built package directories;
|
|
97
|
+
`npm run verify:packages` checks the actual archives. Native build preparation is
|
|
98
|
+
not proof of a published producer. The repository's release guide records the
|
|
99
|
+
remaining native gates and preserved source history.
|
package/dist/bar.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"./chunk-
|
|
1
|
+
import{a}from"./chunk-IDMAFTWV.js";import"./chunk-EITBQBN2.js";import"./chunk-MR5VITXX.js";import"./chunk-RC2TCMJF.js";export{a as createBarChart};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
.blu-skeleton{box-sizing:border-box;min-width:0;font-family:var(--bluui-font, Inter, ui-sans-serif, system-ui, sans-serif)}.blu-skeleton{display:block;position:relative;overflow:hidden;max-width:100%;-servicestudio-height:16px;-servicestudio-min-width:120px;-servicestudio-background-color:var(--bluui-skeleton-base, #e2e8f0);-servicestudio-border-radius:4px;background:var(--bluui-skeleton-base, #e2e8f0)}.blu-skeleton--text{border-radius:4px}.blu-skeleton--rectangle{border-radius:10px}.blu-skeleton--circle{border-radius:50%}.blu-skeleton--animated:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,var(--bluui-skeleton-shine, rgb(255 255 255 / 65%)),transparent);transform:translate(-100%);animation:blu-skeleton-wave 1.6s ease-in-out 3}@keyframes blu-skeleton-wave{to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){.blu-skeleton--animated:after{animation:none;display:none}}.blu-skeleton{-servicestudio-width:180px;-servicestudio-height:20px}.blu-chip{box-sizing:border-box;min-width:0;font-family:var(--bluui-font, Inter, ui-sans-serif, system-ui, sans-serif)}.blu-chip{--chip-bg: var(--bluui-secondary-soft, #f1f5f9);--chip-fg: var(--bluui-secondary-text, #334155);--chip-border: var(--bluui-border, #cbd5e1);display:inline-flex;align-items:stretch;width:auto;max-width:100%;border:1px solid var(--chip-border);border-radius:999px;background:var(--chip-bg);color:var(--chip-fg);vertical-align:middle}.blu-chip.blu-chip--default{--chip-bg: var(--bluui-color-default-solid);--chip-fg: var(--bluui-color-default-contrast);--chip-border: var(--bluui-color-default-solid)}.blu-chip.blu-chip--primary{--chip-bg: var(--bluui-color-primary-solid);--chip-fg: var(--bluui-color-primary-contrast);--chip-border: var(--bluui-color-primary-solid)}.blu-chip.blu-chip--secondary{--chip-bg: var(--bluui-color-secondary-soft);--chip-fg: var(--bluui-color-secondary-text);--chip-border: var(--bluui-color-secondary-soft)}.blu-chip.blu-chip--success{--chip-bg: var(--bluui-color-success-solid);--chip-fg: var(--bluui-color-success-contrast);--chip-border: var(--bluui-color-success-solid)}.blu-chip.blu-chip--processing{--chip-bg: var(--bluui-color-processing-solid);--chip-fg: var(--bluui-color-processing-contrast);--chip-border: var(--bluui-color-processing-solid)}.blu-chip.blu-chip--warning{--chip-bg: var(--bluui-color-warning-solid);--chip-fg: var(--bluui-color-warning-contrast);--chip-border: var(--bluui-color-warning-solid)}.blu-chip.blu-chip--error{--chip-bg: var(--bluui-color-error-solid);--chip-fg: var(--bluui-color-error-contrast);--chip-border: var(--bluui-color-error-solid)}.blu-chip.blu-chip--danger{--chip-bg: var(--bluui-color-danger-solid);--chip-fg: var(--bluui-color-danger-contrast);--chip-border: var(--bluui-color-danger-solid)}.blu-chip.blu-chip--magenta{--chip-bg: var(--bluui-color-magenta-soft);--chip-fg: var(--bluui-color-magenta-text);--chip-border: var(--bluui-color-magenta-soft)}.blu-chip.blu-chip--red{--chip-bg: var(--bluui-color-red-soft);--chip-fg: var(--bluui-color-red-text);--chip-border: var(--bluui-color-red-soft)}.blu-chip.blu-chip--volcano{--chip-bg: var(--bluui-color-volcano-soft);--chip-fg: var(--bluui-color-volcano-text);--chip-border: var(--bluui-color-volcano-soft)}.blu-chip.blu-chip--orange{--chip-bg: var(--bluui-color-orange-soft);--chip-fg: var(--bluui-color-orange-text);--chip-border: var(--bluui-color-orange-soft)}.blu-chip.blu-chip--gold{--chip-bg: var(--bluui-color-gold-soft);--chip-fg: var(--bluui-color-gold-text);--chip-border: var(--bluui-color-gold-soft)}.blu-chip.blu-chip--lime{--chip-bg: var(--bluui-color-lime-soft);--chip-fg: var(--bluui-color-lime-text);--chip-border: var(--bluui-color-lime-soft)}.blu-chip.blu-chip--green{--chip-bg: var(--bluui-color-green-soft);--chip-fg: var(--bluui-color-green-text);--chip-border: var(--bluui-color-green-soft)}.blu-chip.blu-chip--cyan{--chip-bg: var(--bluui-color-cyan-soft);--chip-fg: var(--bluui-color-cyan-text);--chip-border: var(--bluui-color-cyan-soft)}.blu-chip.blu-chip--blue{--chip-bg: var(--bluui-color-blue-soft);--chip-fg: var(--bluui-color-blue-text);--chip-border: var(--bluui-color-blue-soft)}.blu-chip.blu-chip--geekblue{--chip-bg: var(--bluui-color-geekblue-soft);--chip-fg: var(--bluui-color-geekblue-text);--chip-border: var(--bluui-color-geekblue-soft)}.blu-chip.blu-chip--purple{--chip-bg: var(--bluui-color-purple-soft);--chip-fg: var(--bluui-color-purple-text);--chip-border: var(--bluui-color-purple-soft)}.blu-chip--selected{box-shadow:0 0 0 2px var(--bluui-primary, #4f46e5)}.blu-chip--disabled{opacity:.55}.blu-chip.blu-chip :is(.blu-chip__select,.blu-chip__remove){appearance:none;display:inline-flex;align-items:center;justify-content:center;width:auto;min-height:36px;height:auto;margin:0;border:0;border-radius:999px;padding:7px 12px;background:transparent;color:inherit;font:inherit;font-size:13px;line-height:1.4;box-shadow:none;cursor:pointer;white-space:normal;overflow-wrap:anywhere}.blu-chip.blu-chip .blu-chip__remove{min-width:36px;padding:6px 10px}.blu-chip .blu-chip__label{display:inline-flex;align-items:center;padding:7px 12px;font-size:13px;overflow-wrap:anywhere}.blu-chip.blu-chip :is(.blu-chip__select,.blu-chip__remove):disabled{cursor:default}.blu-chip.blu-chip :is(.blu-chip__select,.blu-chip__remove):focus-visible{outline:2px solid var(--bluui-primary, #4f46e5);outline-offset:3px}.blu-chip.blu-chip :is(.blu-chip__select,.blu-chip__remove):hover:not(:disabled){background:color-mix(in srgb,currentColor 8%,transparent)}.blu-chart__body{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;min-width:0}.blu-chart__body[data-legend-position=Top] .blu-chart__legend{grid-row:1}.blu-chart__body[data-legend-position=Bottom] .blu-chart__legend{grid-row:2}.blu-chart__body[data-legend-position=Left]{grid-template-columns:190px minmax(0,1fr);align-items:center}.blu-chart__body[data-legend-position=Right]{grid-template-columns:minmax(0,1fr) 190px;align-items:center}.blu-chart__body[data-legend-position=Left] .blu-chart__legend{grid-column:1;grid-row:1}.blu-chart__body[data-legend-position=Left] .blu-chart__stage,.blu-chart__body[data-legend-position=Right] .blu-chart__legend{grid-column:2;grid-row:1}.blu-chart__body[data-legend-position=Right] .blu-chart__stage{grid-column:1;grid-row:1}.blu-chart__body.blu-chart__body--no-legend{grid-template-columns:minmax(0,1fr);gap:0}.blu-chart__body--no-legend .blu-chart__stage{grid-column:1!important;grid-row:1!important}.blu-chart__legend{--legend-selected:color-mix(in srgb,var(--bluui-primary) 9%,var(--bluui-surface));min-width:0;padding:8px 20px 16px;font:12px/1.45 var(--bluui-font,Inter,system-ui,sans-serif);color:var(--bluui-text)}.blu-chart__legend-items{display:flex;flex-wrap:wrap;gap:8px}.blu-chart__legend-entry{min-width:0;max-width:100%;display:flex;align-items:center;gap:10px;border:1px solid transparent;background:transparent;color:inherit;font:inherit;text-align:left;padding:7px 8px;border-radius:8px;cursor:pointer;min-height:36px}.blu-chart__legend-entry:hover{background:var(--bluui-surface-muted)}.blu-chart__legend-entry[aria-pressed=true]{text-decoration:none;background:var(--legend-selected)}.blu-chart__legend-heading{display:flex;align-items:center;gap:7px;min-width:0}.blu-chart__legend-marker{display:flex;flex-shrink:0}.blu-chart__legend-text{overflow-wrap:anywhere}.blu-chart__legend-label{font-weight:500}.blu-chart__legend-detail,.blu-chart__legend-percent,.blu-chart__legend-note{font-size:11px;color:var(--bluui-text-muted)}.blu-chart__legend-numbers{display:flex;align-items:baseline;gap:10px;min-width:0;font-variant-numeric:tabular-nums}.blu-chart__legend-value{font-weight:600;letter-spacing:-.25px}.blu-chart__legend-check{visibility:hidden;margin-left:auto;color:var(--bluui-primary);font-weight:700;font-size:12px}[aria-pressed=true] .blu-chart__legend-check{visibility:visible}.blu-chart__legend[data-style=Standard] .blu-chart__legend-detail,.blu-chart__legend[data-style=Standard] .blu-chart__legend-check{display:none}.blu-chart__legend[data-style=Standard] .blu-chart__legend-value{font-size:11px;color:var(--bluui-text-muted)}.blu-chart__legend-track{display:none;height:3px;background:var(--bluui-border);border-radius:2px;overflow:hidden}.blu-chart__legend-track>span{display:block;height:100%}.blu-chart__legend-chip-host{min-width:0;max-width:100%}.blu-chart__legend .blu-chip.blu-chart__legend-chip{--chip-bg:transparent;--chip-fg:var(--bluui-text);--chip-border:var(--bluui-border);max-width:100%;box-shadow:none}.blu-chart__legend .blu-chart__legend-chip.blu-chip--selected{--chip-bg:var(--legend-selected);--chip-border:var(--bluui-primary);box-shadow:none}.blu-chart__legend .blu-chart__legend-chip .blu-chip__select{min-height:38px;padding:9px 12px;gap:10px;font:inherit;font-size:11px;text-align:left;justify-content:flex-start}.blu-chart__legend-chip .blu-chart__legend-label{font-weight:500}.blu-chart__legend-chip .blu-chart__legend-detail,.blu-chart__legend-chip .blu-chart__legend-check{display:none}.blu-chart__legend-chip [aria-pressed=true]{text-decoration:none}.blu-chart__legend-chip [aria-pressed=true] .blu-chart__legend-label{text-decoration:underline;text-underline-offset:3px}.blu-chart__legend-chip .blu-chart__legend-numbers{gap:7px;flex-wrap:wrap}.blu-chart__legend[data-style=ValueList] .blu-chart__legend-items,.blu-chart__legend[data-style=SummaryCards] .blu-chart__legend-items{display:grid;grid-template-columns:repeat(var(--legend-columns,1),minmax(0,1fr));gap:10px}.blu-chart__legend[data-style=ValueList] .blu-chart__legend-entry{display:flex;flex-direction:column;align-items:stretch;gap:5px;padding:10px 11px;border:0}.blu-chart__legend[data-style=ValueList] .blu-chart__legend-numbers{margin-left:23px;justify-content:space-between}.blu-chart__legend[data-style=ValueList] .blu-chart__legend-value{font-size:19px;letter-spacing:-.4px;line-height:1.3}.blu-chart__legend[data-style=ValueList] .blu-chart__legend-detail{margin-left:23px}.blu-chart__legend[data-style=ValueList] .blu-chart__legend-track{display:block;margin:3px 0 0 23px}.blu-chart__legend[data-style=SummaryCards] .blu-chart__legend-entry{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:0;padding:12px;min-height:36px;align-self:start;border-color:var(--bluui-border);border-radius:12px}.blu-chart__legend[data-style=SummaryCards] .blu-chart__legend-entry[aria-pressed=true]{border-color:var(--bluui-primary)}.blu-chart__legend[data-style=SummaryCards] .blu-chart__legend-heading{font-size:11px}.blu-chart__legend[data-style=SummaryCards] .blu-chart__legend-numbers{flex-direction:column;align-items:stretch;gap:6px;margin-top:10px}.blu-chart__legend[data-style=SummaryCards] .blu-chart__legend-value{font-size:24px;letter-spacing:-.6px;line-height:1.2}.blu-chart__legend[data-style=SummaryCards] .blu-chart__legend-detail{margin-top:6px}.blu-chart__body:is([data-legend-position=Left],[data-legend-position=Right]) .blu-chart__legend{padding:8px 12px 16px}.blu-chart__body:is([data-legend-position=Left],[data-legend-position=Right]) .blu-chart__legend-items{display:flex;flex-direction:column}.blu-chart__body:is([data-legend-position=Left],[data-legend-position=Right]) .blu-chart__legend-entry{width:100%}.blu-chart__body:is([data-legend-position=Left],[data-legend-position=Right]) .blu-chart__legend[data-style=Standard] .blu-chart__legend-entry{flex-wrap:wrap;gap:4px 10px}.blu-chart__legend-scale{max-width:360px;min-width:0;margin:0 0 8px}.blu-chart__legend-scale-title{display:block;font-size:11px;font-weight:500;margin-bottom:10px;color:var(--bluui-text-muted)}.blu-chart__legend-gradient{height:8px;border-radius:4px}.blu-chart__legend-range{display:flex;justify-content:space-between;gap:12px;margin-top:8px;font-variant-numeric:tabular-nums}.blu-chart__legend[data-style=Compact] .blu-chart__legend-scale{padding:12px 16px;border:1px solid var(--bluui-border);border-radius:18px}.blu-chart__legend[data-style=ValueList] .blu-chart__legend-scale{padding:10px 11px}.blu-chart__legend[data-style=SummaryCards] .blu-chart__legend-scale{padding:16px;border:1px solid var(--bluui-border);border-radius:12px}.blu-chart__legend-note{display:block;margin-top:10px}@media(forced-colors:active){.blu-chart__legend-entry{border:1px solid ButtonText!important}.blu-chart__legend-entry[aria-pressed=true],.blu-chart__legend .blu-chart__legend-chip.blu-chip--selected{outline:1px solid Highlight}.blu-chart__legend-marker svg{forced-color-adjust:none}.blu-chart__legend-gradient{background:Canvas!important;border:1px solid CanvasText}}.blu-chart{width:100%;min-width:0;color:var(--bluui-text,#182230);background:var(--bluui-surface,#fff);font:13px/1.5 var(--blu-font-family,Inter,system-ui,sans-serif)}.blu-chart [hidden]{display:none!important}.blu-chart__heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 16px 12px}.blu-chart__heading>div:first-child{min-width:0}.blu-chart__heading h3{margin:0;color:inherit;font-size:16px;font-weight:650;letter-spacing:-.3px;overflow-wrap:anywhere}.blu-chart__heading p{margin:5px 0 0;font-size:11px;color:var(--bluui-text-muted,#667085);line-height:1.6;overflow-wrap:anywhere}.blu-chart__export{display:flex;gap:5px;flex-shrink:0;margin-left:auto}.blu-chart__export :is(select,button){font:inherit;font-size:11px;border:1px solid var(--bluui-border,#ddd);color:inherit;border-radius:6px;background:var(--bluui-surface,#fff);min-height:34px;padding:6px 8px;cursor:pointer}.blu-chart__export button:disabled{opacity:.5;cursor:default}.blu-chart__stage{position:relative;min-width:0}.blu-chart__plot{width:100%;min-width:0}.blu-chart__state{position:absolute;inset:0;display:grid;place-items:center;background:var(--bluui-surface-muted,#f8f8fa);color:var(--bluui-text-muted,#667085);padding:20px;text-align:center}.blu-chart__state--loading{grid-template-rows:minmax(0,1fr) auto;gap:14px;place-items:stretch;background:var(--bluui-surface,#fff);padding:16px}.blu-chart__skeleton{display:flex;flex-direction:column;gap:24px;min-width:0;min-height:0}.blu-chart__skeleton-key{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.blu-chart__skeleton-plot{flex:1;min-height:0}.blu-chart__skeleton-plot>div{height:100%}.blu-chart__state-message{font-size:12px}.blu-chart__data{margin:12px 16px 0;border-top:1px solid var(--bluui-border,#ddd);font-size:11px}.blu-chart__data summary{cursor:pointer;padding:12px 0;color:var(--bluui-text-muted,#667085)}.blu-chart__data--compact{margin-top:0;border-top:0}.blu-chart__data--compact summary{padding:6px 0}.blu-chart__table{overflow:auto;max-height:320px}.blu-chart__table table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:11px;font-variant-numeric:tabular-nums}.blu-chart__table caption{text-align:left;color:var(--bluui-text-muted,#667085);padding:8px}.blu-chart__table th,.blu-chart__table td{padding:8px;border-bottom:1px solid var(--bluui-border,#ddd);text-align:right}.blu-chart__table th:first-child{text-align:left}.blu-chart__table button{font:inherit;color:var(--bluui-primary,#6557e8);background:transparent;border:0;border-radius:3px;padding:5px;cursor:pointer}.blu-chart__table button[aria-pressed=true]{background:var(--bluui-selected,#eeeaff);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px;font-weight:700}.blu-chart :is(button,select,summary,[tabindex]):focus-visible{outline:2px solid var(--bluui-primary,#6557e8);outline-offset:2px}.blu-chart__status{font-size:11px;color:var(--bluui-text-muted,#667085);margin:0 16px}.blu-chart__status:not(:empty){padding:8px 0}@media(max-width:640px){.blu-chart__heading{flex-wrap:wrap;padding-inline:12px}.blu-chart__export{margin-left:0}.blu-chart__data{margin-inline:12px}}.blu-chart__navigation{display:flex;flex-wrap:wrap;gap:6px;padding:8px 16px}.blu-chart__navigation button{min-width:32px;min-height:32px;padding:5px 9px;font:inherit;font-size:12px;color:var(--bluui-text);background:var(--bluui-surface);border:1px solid var(--bluui-control-border);border-radius:5px;cursor:pointer}.blu-chart__stage[tabindex]:focus-visible{outline-offset:-3px}.blu-chart__state-announcement{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.blu-chart__patterns{display:flex;align-items:center;gap:8px;font-size:12px;padding:6px 0 12px;cursor:pointer}.blu-chart__patterns input{width:24px;height:24px;margin:0;accent-color:var(--bluui-color-primary-solid)}.blu-chart__missing-note{margin:8px 12px;color:var(--bluui-text-muted);font-size:12px;line-height:1.5}.blu-chart .blu-chart__patterns input[type=checkbox]{-webkit-appearance:none;appearance:none;box-sizing:border-box;position:relative;display:inline-block;flex:0 0 22px;width:22px;height:22px;min-width:22px;min-height:22px;margin:0;padding:0;border:1.5px solid var(--bluui-control-border,#7b8799);border-radius:6px;background-color:var(--bluui-surface,#fff);background-image:none;box-shadow:0 1px 2px #0f172a0f;vertical-align:middle;cursor:pointer;opacity:1;filter:none;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease}.blu-chart .blu-chart__patterns input[type=checkbox]:after{content:none}.blu-chart .blu-chart__patterns input[type=checkbox]:checked,.blu-chart .blu-chart__patterns input[type=checkbox]:indeterminate{border-color:var(--bluui-color-primary-solid,#4f46e5);background-color:var(--bluui-color-primary-solid,#4f46e5)}.blu-chart .blu-chart__patterns input[type=checkbox]:checked:after,.blu-chart .blu-chart__patterns input[type=checkbox]:indeterminate:after{content:"";box-sizing:content-box;position:absolute;width:10px;height:6px;inset:5px auto auto 4px;border:solid var(--bluui-color-primary-contrast,#fff);border-width:0 0 2px 2px;border-radius:0;background:none;-webkit-mask:none;mask:none;transform:rotate(-45deg);pointer-events:none}.blu-chart .blu-chart__patterns input[type=checkbox]:indeterminate:after{height:0;top:8px;border-width:0 0 2px;transform:none}.blu-chart .blu-chart__patterns input[type=checkbox]:hover:not(:disabled){border-color:var(--bluui-color-primary-solid,#4f46e5);box-shadow:0 0 0 3px var(--bluui-color-primary-soft,#eef2ff)}.blu-chart .blu-chart__patterns input[type=checkbox]:focus-visible{outline:2px solid var(--bluui-color-primary-solid,#4f46e5);outline-offset:3px}.blu-chart .blu-chart__patterns input[type=checkbox]:disabled{border-color:var(--bluui-border-strong,#b8c4d4);background-color:var(--bluui-surface-muted,#f7f8fb);box-shadow:none;cursor:not-allowed}.blu-chart .blu-chart__patterns input[type=checkbox]:disabled:checked,.blu-chart .blu-chart__patterns input[type=checkbox]:disabled:indeterminate{border-color:var(--bluui-text-muted,#5c6b80);background-color:var(--bluui-text-muted,#5c6b80)}@media(prefers-reduced-motion:reduce){.blu-chart .blu-chart__patterns input[type=checkbox]{transition:none}}.blu-chart .blu-chart__patterns input[type=checkbox]:before{content:none}@media(forced-colors:active){.blu-chart .blu-chart__patterns input[type=checkbox],.blu-chart .blu-chart__patterns input[type=checkbox]:checked,.blu-chart .blu-chart__patterns input[type=checkbox]:indeterminate,.blu-chart .blu-chart__patterns input[type=checkbox]:disabled,.blu-chart .blu-chart__patterns input[type=checkbox]:disabled:checked,.blu-chart .blu-chart__patterns input[type=checkbox]:disabled:indeterminate{-webkit-appearance:checkbox;appearance:auto;background:revert;border:revert;box-shadow:none;forced-color-adjust:auto}.blu-chart .blu-chart__patterns input[type=checkbox]:checked:after,.blu-chart .blu-chart__patterns input[type=checkbox]:indeterminate:after{content:none}}
|
|
1
|
+
.blu-skeleton{box-sizing:border-box;min-width:0;font-family:var(--bluui-font, Inter, ui-sans-serif, system-ui, sans-serif)}.blu-skeleton{display:block;position:relative;overflow:hidden;max-width:100%;-servicestudio-height:16px;-servicestudio-min-width:120px;-servicestudio-background-color:var(--bluui-skeleton-base, #e2e8f0);-servicestudio-border-radius:4px;background:var(--bluui-skeleton-base, #e2e8f0)}.blu-skeleton--text{border-radius:4px}.blu-skeleton--rectangle{border-radius:10px}.blu-skeleton--circle{border-radius:50%}.blu-skeleton--animated:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,var(--bluui-skeleton-shine, rgb(255 255 255 / 65%)),transparent);transform:translate(-100%);animation:blu-skeleton-wave 1.6s ease-in-out 3}@keyframes blu-skeleton-wave{to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){.blu-skeleton--animated:after{animation:none;display:none}}.blu-skeleton{-servicestudio-width:180px;-servicestudio-height:20px}.blu-skeleton[data-blu-native-motion=loading-skeleton]:after{animation:none!important;display:none!important}.blu-chip{box-sizing:border-box;min-width:0;font-family:var(--bluui-font, Inter, ui-sans-serif, system-ui, sans-serif)}.blu-chip{--chip-bg: var(--bluui-secondary-soft, #f1f5f9);--chip-fg: var(--bluui-secondary-text, #334155);--chip-border: var(--bluui-border, #cbd5e1);display:inline-flex;align-items:stretch;width:auto;max-width:100%;border:1px solid var(--chip-border);border-radius:999px;background:var(--chip-bg);color:var(--chip-fg);vertical-align:middle}.blu-chip.blu-chip--default{--chip-bg: var(--bluui-color-default-solid);--chip-fg: var(--bluui-color-default-contrast);--chip-border: var(--bluui-color-default-solid)}.blu-chip.blu-chip--primary{--chip-bg: var(--bluui-color-primary-solid);--chip-fg: var(--bluui-color-primary-contrast);--chip-border: var(--bluui-color-primary-solid)}.blu-chip.blu-chip--secondary{--chip-bg: var(--bluui-color-secondary-soft);--chip-fg: var(--bluui-color-secondary-text);--chip-border: var(--bluui-color-secondary-soft)}.blu-chip.blu-chip--success{--chip-bg: var(--bluui-color-success-solid);--chip-fg: var(--bluui-color-success-contrast);--chip-border: var(--bluui-color-success-solid)}.blu-chip.blu-chip--processing{--chip-bg: var(--bluui-color-processing-solid);--chip-fg: var(--bluui-color-processing-contrast);--chip-border: var(--bluui-color-processing-solid)}.blu-chip.blu-chip--warning{--chip-bg: var(--bluui-color-warning-solid);--chip-fg: var(--bluui-color-warning-contrast);--chip-border: var(--bluui-color-warning-solid)}.blu-chip.blu-chip--error{--chip-bg: var(--bluui-color-error-solid);--chip-fg: var(--bluui-color-error-contrast);--chip-border: var(--bluui-color-error-solid)}.blu-chip.blu-chip--danger{--chip-bg: var(--bluui-color-danger-solid);--chip-fg: var(--bluui-color-danger-contrast);--chip-border: var(--bluui-color-danger-solid)}.blu-chip.blu-chip--magenta{--chip-bg: var(--bluui-color-magenta-soft);--chip-fg: var(--bluui-color-magenta-text);--chip-border: var(--bluui-color-magenta-soft)}.blu-chip.blu-chip--red{--chip-bg: var(--bluui-color-red-soft);--chip-fg: var(--bluui-color-red-text);--chip-border: var(--bluui-color-red-soft)}.blu-chip.blu-chip--volcano{--chip-bg: var(--bluui-color-volcano-soft);--chip-fg: var(--bluui-color-volcano-text);--chip-border: var(--bluui-color-volcano-soft)}.blu-chip.blu-chip--orange{--chip-bg: var(--bluui-color-orange-soft);--chip-fg: var(--bluui-color-orange-text);--chip-border: var(--bluui-color-orange-soft)}.blu-chip.blu-chip--gold{--chip-bg: var(--bluui-color-gold-soft);--chip-fg: var(--bluui-color-gold-text);--chip-border: var(--bluui-color-gold-soft)}.blu-chip.blu-chip--lime{--chip-bg: var(--bluui-color-lime-soft);--chip-fg: var(--bluui-color-lime-text);--chip-border: var(--bluui-color-lime-soft)}.blu-chip.blu-chip--green{--chip-bg: var(--bluui-color-green-soft);--chip-fg: var(--bluui-color-green-text);--chip-border: var(--bluui-color-green-soft)}.blu-chip.blu-chip--cyan{--chip-bg: var(--bluui-color-cyan-soft);--chip-fg: var(--bluui-color-cyan-text);--chip-border: var(--bluui-color-cyan-soft)}.blu-chip.blu-chip--blue{--chip-bg: var(--bluui-color-blue-soft);--chip-fg: var(--bluui-color-blue-text);--chip-border: var(--bluui-color-blue-soft)}.blu-chip.blu-chip--geekblue{--chip-bg: var(--bluui-color-geekblue-soft);--chip-fg: var(--bluui-color-geekblue-text);--chip-border: var(--bluui-color-geekblue-soft)}.blu-chip.blu-chip--purple{--chip-bg: var(--bluui-color-purple-soft);--chip-fg: var(--bluui-color-purple-text);--chip-border: var(--bluui-color-purple-soft)}.blu-chip--selected{box-shadow:0 0 0 2px var(--bluui-primary, #4f46e5)}.blu-chip--disabled{opacity:.55}.blu-chip.blu-chip :is(.blu-chip__select,.blu-chip__remove){appearance:none;display:inline-flex;align-items:center;justify-content:center;width:auto;min-height:36px;height:auto;margin:0;border:0;border-radius:999px;padding:7px 12px;background:transparent;color:inherit;font:inherit;font-size:13px;line-height:1.4;box-shadow:none;cursor:pointer;white-space:normal;overflow-wrap:anywhere}.blu-chip.blu-chip .blu-chip__remove{min-width:36px;padding:6px 10px}.blu-chip .blu-chip__label{display:inline-flex;align-items:center;padding:7px 12px;font-size:13px;overflow-wrap:anywhere}.blu-chip.blu-chip :is(.blu-chip__select,.blu-chip__remove):disabled{cursor:default}.blu-chip.blu-chip :is(.blu-chip__select,.blu-chip__remove):focus-visible{outline:2px solid var(--bluui-primary, #4f46e5);outline-offset:3px}.blu-chip.blu-chip :is(.blu-chip__select,.blu-chip__remove):hover:not(:disabled){background:color-mix(in srgb,currentColor 8%,transparent)}.blu-chart__body{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;min-width:0}.blu-chart__body[data-legend-position=Top] .blu-chart__legend{grid-row:1}.blu-chart__body[data-legend-position=Bottom] .blu-chart__legend{grid-row:2}.blu-chart__body[data-legend-position=Left]{grid-template-columns:190px minmax(0,1fr);align-items:center}.blu-chart__body[data-legend-position=Right]{grid-template-columns:minmax(0,1fr) 190px;align-items:center}.blu-chart__body[data-legend-position=Left] .blu-chart__legend{grid-column:1;grid-row:1}.blu-chart__body[data-legend-position=Left] .blu-chart__stage,.blu-chart__body[data-legend-position=Right] .blu-chart__legend{grid-column:2;grid-row:1}.blu-chart__body[data-legend-position=Right] .blu-chart__stage{grid-column:1;grid-row:1}.blu-chart__body.blu-chart__body--no-legend{grid-template-columns:minmax(0,1fr);gap:0}.blu-chart__body--no-legend .blu-chart__stage{grid-column:1!important;grid-row:1!important}.blu-chart__legend{--legend-selected:color-mix(in srgb,var(--bluui-primary) 9%,var(--bluui-surface));min-width:0;padding:8px 20px 16px;font:12px/1.45 var(--bluui-font,Inter,system-ui,sans-serif);color:var(--bluui-text)}.blu-chart__legend-items{display:flex;flex-wrap:wrap;gap:8px}.blu-chart__legend-entry{min-width:0;max-width:100%;display:flex;align-items:center;gap:10px;border:1px solid transparent;background:transparent;color:inherit;font:inherit;text-align:left;padding:7px 8px;border-radius:8px;cursor:pointer;min-height:36px}.blu-chart__legend-entry:hover{background:var(--bluui-surface-muted)}.blu-chart__legend-entry[aria-pressed=true]{text-decoration:none;background:var(--legend-selected)}.blu-chart__legend-heading{display:flex;align-items:center;gap:7px;min-width:0}.blu-chart__legend-marker{display:flex;flex-shrink:0}.blu-chart__legend-text{overflow-wrap:anywhere}.blu-chart__legend-label{font-weight:500}.blu-chart__legend-detail,.blu-chart__legend-percent,.blu-chart__legend-note{font-size:11px;color:var(--bluui-text-muted)}.blu-chart__legend-numbers{display:flex;align-items:baseline;gap:10px;min-width:0;font-variant-numeric:tabular-nums}.blu-chart__legend-value{font-weight:600;letter-spacing:-.25px}.blu-chart__legend-check{visibility:hidden;margin-left:auto;color:var(--bluui-primary);font-weight:700;font-size:12px}[aria-pressed=true] .blu-chart__legend-check{visibility:visible}.blu-chart__legend[data-style=Standard] .blu-chart__legend-detail,.blu-chart__legend[data-style=Standard] .blu-chart__legend-check{display:none}.blu-chart__legend[data-style=Standard] .blu-chart__legend-value{font-size:11px;color:var(--bluui-text-muted)}.blu-chart__legend-track{display:none;height:3px;background:var(--bluui-border);border-radius:2px;overflow:hidden}.blu-chart__legend-track>span{display:block;height:100%}.blu-chart__legend-chip-host{min-width:0;max-width:100%}.blu-chart__legend .blu-chip.blu-chart__legend-chip{--chip-bg:transparent;--chip-fg:var(--bluui-text);--chip-border:var(--bluui-border);max-width:100%;box-shadow:none}.blu-chart__legend .blu-chart__legend-chip.blu-chip--selected{--chip-bg:var(--legend-selected);--chip-border:var(--bluui-primary);box-shadow:none}.blu-chart__legend .blu-chart__legend-chip .blu-chip__select{min-height:38px;padding:9px 12px;gap:10px;font:inherit;font-size:11px;text-align:left;justify-content:flex-start}.blu-chart__legend-chip .blu-chart__legend-label{font-weight:500}.blu-chart__legend-chip .blu-chart__legend-detail,.blu-chart__legend-chip .blu-chart__legend-check{display:none}.blu-chart__legend-chip [aria-pressed=true]{text-decoration:none}.blu-chart__legend-chip [aria-pressed=true] .blu-chart__legend-label{text-decoration:underline;text-underline-offset:3px}.blu-chart__legend-chip .blu-chart__legend-numbers{gap:7px;flex-wrap:wrap}.blu-chart__legend[data-style=ValueList] .blu-chart__legend-items,.blu-chart__legend[data-style=SummaryCards] .blu-chart__legend-items{display:grid;grid-template-columns:repeat(var(--legend-columns,1),minmax(0,1fr));gap:10px}.blu-chart__legend[data-style=ValueList] .blu-chart__legend-entry{display:flex;flex-direction:column;align-items:stretch;gap:5px;padding:10px 11px;border:0}.blu-chart__legend[data-style=ValueList] .blu-chart__legend-numbers{margin-left:23px;justify-content:space-between}.blu-chart__legend[data-style=ValueList] .blu-chart__legend-value{font-size:19px;letter-spacing:-.4px;line-height:1.3}.blu-chart__legend[data-style=ValueList] .blu-chart__legend-detail{margin-left:23px}.blu-chart__legend[data-style=ValueList] .blu-chart__legend-track{display:block;margin:3px 0 0 23px}.blu-chart__legend[data-style=SummaryCards] .blu-chart__legend-entry{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:0;padding:12px;min-height:36px;align-self:start;border-color:var(--bluui-border);border-radius:12px}.blu-chart__legend[data-style=SummaryCards] .blu-chart__legend-entry[aria-pressed=true]{border-color:var(--bluui-primary)}.blu-chart__legend[data-style=SummaryCards] .blu-chart__legend-heading{font-size:11px}.blu-chart__legend[data-style=SummaryCards] .blu-chart__legend-numbers{flex-direction:column;align-items:stretch;gap:6px;margin-top:10px}.blu-chart__legend[data-style=SummaryCards] .blu-chart__legend-value{font-size:24px;letter-spacing:-.6px;line-height:1.2}.blu-chart__legend[data-style=SummaryCards] .blu-chart__legend-detail{margin-top:6px}.blu-chart__body:is([data-legend-position=Left],[data-legend-position=Right]) .blu-chart__legend{padding:8px 12px 16px}.blu-chart__body:is([data-legend-position=Left],[data-legend-position=Right]) .blu-chart__legend-items{display:flex;flex-direction:column}.blu-chart__body:is([data-legend-position=Left],[data-legend-position=Right]) .blu-chart__legend-entry{width:100%}.blu-chart__body:is([data-legend-position=Left],[data-legend-position=Right]) .blu-chart__legend[data-style=Standard] .blu-chart__legend-entry{flex-wrap:wrap;gap:4px 10px}.blu-chart__legend-scale{max-width:360px;min-width:0;margin:0 0 8px}.blu-chart__legend-scale-title{display:block;font-size:11px;font-weight:500;margin-bottom:10px;color:var(--bluui-text-muted)}.blu-chart__legend-gradient{height:8px;border-radius:4px}.blu-chart__legend-range{display:flex;justify-content:space-between;gap:12px;margin-top:8px;font-variant-numeric:tabular-nums}.blu-chart__legend[data-style=Compact] .blu-chart__legend-scale{padding:12px 16px;border:1px solid var(--bluui-border);border-radius:18px}.blu-chart__legend[data-style=ValueList] .blu-chart__legend-scale{padding:10px 11px}.blu-chart__legend[data-style=SummaryCards] .blu-chart__legend-scale{padding:16px;border:1px solid var(--bluui-border);border-radius:12px}.blu-chart__legend-note{display:block;margin-top:10px}@media(forced-colors:active){.blu-chart__legend-entry{border:1px solid ButtonText!important}.blu-chart__legend-entry[aria-pressed=true],.blu-chart__legend .blu-chart__legend-chip.blu-chip--selected{outline:1px solid Highlight}.blu-chart__legend-marker svg{forced-color-adjust:none}.blu-chart__legend-gradient{background:Canvas!important;border:1px solid CanvasText}}.blu-chart{width:100%;min-width:0;color:var(--bluui-text,#182230);background:var(--bluui-surface,#fff);font:13px/1.5 var(--blu-font-family,Inter,system-ui,sans-serif)}.blu-chart [hidden]{display:none!important}.blu-chart__heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 16px 12px}.blu-chart__heading>div:first-child{min-width:0}.blu-chart__heading h3{margin:0;color:inherit;font-size:16px;font-weight:650;letter-spacing:-.3px;overflow-wrap:anywhere}.blu-chart__heading p{margin:5px 0 0;font-size:11px;color:var(--bluui-text-muted,#667085);line-height:1.6;overflow-wrap:anywhere}.blu-chart__export{display:flex;gap:5px;flex-shrink:0;margin-left:auto}.blu-chart__export :is(select,button){font:inherit;font-size:11px;border:1px solid var(--bluui-border,#ddd);color:inherit;border-radius:6px;background:var(--bluui-surface,#fff);min-height:34px;padding:6px 8px;cursor:pointer}.blu-chart__export button:disabled{opacity:.5;cursor:default}.blu-chart__stage{position:relative;min-width:0}.blu-chart__plot{width:100%;min-width:0}.blu-chart__state{position:absolute;inset:0;display:grid;place-items:center;background:var(--bluui-surface-muted,#f8f8fa);color:var(--bluui-text-muted,#667085);padding:20px;text-align:center}.blu-chart__state--loading{grid-template-rows:minmax(0,1fr) auto;gap:14px;place-items:stretch;background:var(--bluui-surface,#fff);padding:16px}.blu-chart__skeleton{display:flex;flex-direction:column;gap:24px;min-width:0;min-height:0}.blu-chart__skeleton-key{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.blu-chart__skeleton-plot{flex:1;min-height:0}.blu-chart__skeleton-plot>div{height:100%}.blu-chart__state-message{font-size:12px}.blu-chart__data{margin:12px 16px 0;border-top:1px solid var(--bluui-border,#ddd);font-size:11px}.blu-chart__data summary{cursor:pointer;padding:12px 0;color:var(--bluui-text-muted,#667085)}.blu-chart__data--compact{margin-top:0;border-top:0}.blu-chart__data--compact summary{padding:6px 0}.blu-chart__table{overflow:auto;max-height:320px}.blu-chart__table table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:11px;font-variant-numeric:tabular-nums}.blu-chart__table caption{text-align:left;color:var(--bluui-text-muted,#667085);padding:8px}.blu-chart__table th,.blu-chart__table td{padding:8px;border-bottom:1px solid var(--bluui-border,#ddd);text-align:right}.blu-chart__table th:first-child{text-align:left}.blu-chart__table button{font:inherit;color:var(--bluui-primary,#6557e8);background:transparent;border:0;border-radius:3px;padding:5px;cursor:pointer}.blu-chart__table button[aria-pressed=true]{background:var(--bluui-selected,#eeeaff);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px;font-weight:700}.blu-chart :is(button,select,summary,[tabindex]):focus-visible{outline:2px solid var(--bluui-primary,#6557e8);outline-offset:2px}.blu-chart__status{font-size:11px;color:var(--bluui-text-muted,#667085);margin:0 16px}.blu-chart__status:not(:empty){padding:8px 0}@media(max-width:640px){.blu-chart__heading{flex-wrap:wrap;padding-inline:12px}.blu-chart__export{margin-left:0}.blu-chart__data{margin-inline:12px}}.blu-chart__navigation{display:flex;flex-wrap:wrap;gap:6px;padding:8px 16px}.blu-chart__navigation button{min-width:32px;min-height:32px;padding:5px 9px;font:inherit;font-size:12px;color:var(--bluui-text);background:var(--bluui-surface);border:1px solid var(--bluui-control-border);border-radius:5px;cursor:pointer}.blu-chart__stage[tabindex]:focus-visible{outline-offset:-3px}.blu-chart__state-announcement{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.blu-chart__patterns{display:flex;align-items:center;gap:8px;font-size:12px;padding:6px 0 12px;cursor:pointer}.blu-chart__patterns input{width:24px;height:24px;margin:0;accent-color:var(--bluui-color-primary-solid)}.blu-chart__missing-note{margin:8px 12px;color:var(--bluui-text-muted);font-size:12px;line-height:1.5}.blu-chart .blu-chart__patterns input[type=checkbox]{-webkit-appearance:none;appearance:none;box-sizing:border-box;position:relative;display:inline-block;flex:0 0 22px;width:22px;height:22px;min-width:22px;min-height:22px;margin:0;padding:0;border:1.5px solid var(--bluui-control-border,#7b8799);border-radius:6px;background-color:var(--bluui-surface,#fff);background-image:none;box-shadow:0 1px 2px #0f172a0f;vertical-align:middle;cursor:pointer;opacity:1;filter:none;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease}.blu-chart .blu-chart__patterns input[type=checkbox]:after{content:none}.blu-chart .blu-chart__patterns input[type=checkbox]:checked,.blu-chart .blu-chart__patterns input[type=checkbox]:indeterminate{border-color:var(--bluui-color-primary-solid,#4f46e5);background-color:var(--bluui-color-primary-solid,#4f46e5)}.blu-chart .blu-chart__patterns input[type=checkbox]:checked:after,.blu-chart .blu-chart__patterns input[type=checkbox]:indeterminate:after{content:"";box-sizing:content-box;position:absolute;width:10px;height:6px;inset:5px auto auto 4px;border:solid var(--bluui-color-primary-contrast,#fff);border-width:0 0 2px 2px;border-radius:0;background:none;-webkit-mask:none;mask:none;transform:rotate(-45deg);pointer-events:none}.blu-chart .blu-chart__patterns input[type=checkbox]:indeterminate:after{height:0;top:8px;border-width:0 0 2px;transform:none}.blu-chart .blu-chart__patterns input[type=checkbox]:hover:not(:disabled){border-color:var(--bluui-color-primary-solid,#4f46e5);box-shadow:0 0 0 3px var(--bluui-color-primary-soft,#eef2ff)}.blu-chart .blu-chart__patterns input[type=checkbox]:focus-visible{outline:2px solid var(--bluui-color-primary-solid,#4f46e5);outline-offset:3px}.blu-chart .blu-chart__patterns input[type=checkbox]:disabled{border-color:var(--bluui-border-strong,#b8c4d4);background-color:var(--bluui-surface-muted,#f7f8fb);box-shadow:none;cursor:not-allowed}.blu-chart .blu-chart__patterns input[type=checkbox]:disabled:checked,.blu-chart .blu-chart__patterns input[type=checkbox]:disabled:indeterminate{border-color:var(--bluui-text-muted,#5c6b80);background-color:var(--bluui-text-muted,#5c6b80)}@media(prefers-reduced-motion:reduce){.blu-chart .blu-chart__patterns input[type=checkbox]{transition:none}}.blu-chart .blu-chart__patterns input[type=checkbox]:before{content:none}@media(forced-colors:active){.blu-chart .blu-chart__patterns input[type=checkbox],.blu-chart .blu-chart__patterns input[type=checkbox]:checked,.blu-chart .blu-chart__patterns input[type=checkbox]:indeterminate,.blu-chart .blu-chart__patterns input[type=checkbox]:disabled,.blu-chart .blu-chart__patterns input[type=checkbox]:disabled:checked,.blu-chart .blu-chart__patterns input[type=checkbox]:disabled:indeterminate{-webkit-appearance:checkbox;appearance:auto;background:revert;border:revert;box-shadow:none;forced-color-adjust:auto}.blu-chart .blu-chart__patterns input[type=checkbox]:checked:after,.blu-chart .blu-chart__patterns input[type=checkbox]:indeterminate:after{content:none}}
|