@sentropic/design-system-vue 0.36.44 → 0.36.46

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 (53) hide show
  1. package/dist/AppShell.d.ts +93 -0
  2. package/dist/AppShell.d.ts.map +1 -0
  3. package/dist/AppShell.js +34 -0
  4. package/dist/AppShell.js.map +1 -0
  5. package/dist/Badge.d.ts +34 -0
  6. package/dist/Badge.d.ts.map +1 -1
  7. package/dist/Badge.js +3 -1
  8. package/dist/Badge.js.map +1 -1
  9. package/dist/Collapsible.d.ts.map +1 -1
  10. package/dist/Collapsible.js +6 -0
  11. package/dist/Collapsible.js.map +1 -1
  12. package/dist/ContextPanel.d.ts +49 -0
  13. package/dist/ContextPanel.d.ts.map +1 -0
  14. package/dist/ContextPanel.js +19 -0
  15. package/dist/ContextPanel.js.map +1 -0
  16. package/dist/Drawer.d.ts +1 -1
  17. package/dist/Drawer.d.ts.map +1 -1
  18. package/dist/MenuTriggerButton.d.ts +1 -1
  19. package/dist/NavDrawer.d.ts +6 -0
  20. package/dist/NavDrawer.d.ts.map +1 -0
  21. package/dist/NavDrawer.js +10 -0
  22. package/dist/NavDrawer.js.map +1 -0
  23. package/dist/NavItem.d.ts +189 -0
  24. package/dist/NavItem.d.ts.map +1 -0
  25. package/dist/NavItem.js +121 -0
  26. package/dist/NavItem.js.map +1 -0
  27. package/dist/NavRail.d.ts +61 -0
  28. package/dist/NavRail.d.ts.map +1 -0
  29. package/dist/NavRail.js +27 -0
  30. package/dist/NavRail.js.map +1 -0
  31. package/dist/NavSection.d.ts +109 -0
  32. package/dist/NavSection.d.ts.map +1 -0
  33. package/dist/NavSection.js +104 -0
  34. package/dist/NavSection.js.map +1 -0
  35. package/dist/NavShell.d.ts +105 -0
  36. package/dist/NavShell.d.ts.map +1 -0
  37. package/dist/NavShell.js +34 -0
  38. package/dist/NavShell.js.map +1 -0
  39. package/dist/SelectableRow.d.ts +11 -0
  40. package/dist/SelectableRow.d.ts.map +1 -1
  41. package/dist/SelectableRow.js +25 -6
  42. package/dist/SelectableRow.js.map +1 -1
  43. package/dist/Typography.d.ts +1 -1
  44. package/dist/UtilityPanel.d.ts +72 -0
  45. package/dist/UtilityPanel.d.ts.map +1 -0
  46. package/dist/UtilityPanel.js +21 -0
  47. package/dist/UtilityPanel.js.map +1 -0
  48. package/dist/index.d.ts +17 -1
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +8 -0
  51. package/dist/index.js.map +1 -1
  52. package/dist/styles.css +1079 -508
  53. package/package.json +1 -1
package/dist/styles.css CHANGED
@@ -417,6 +417,33 @@
417
417
  text-transform: var(--st-component-badge-textTransform, none);
418
418
  }
419
419
 
420
+ /* Shape variants (additive). `pill` is the UNTOUCHED base `.st-badge` above — no
421
+ `--pill` rule exists, so a `shape="pill"` (or unset) badge renders
422
+ byte-identically. `--circle` overlays an equal-sided round bubble ON TOP of
423
+ the base rules: equal min-width/min-height, equal inline/block padding,
424
+ centered, tabular-nums for stable digit width. 3+ digit content degrades to a
425
+ rounded-rect (the box grows past the diameter, never clips), so large counts
426
+ stay legible. Every leaf falls back to a base literal so a theme that emits no
427
+ `--st-component-badge-circle-*` renders the variant identically. */
428
+ .st-badge--circle {
429
+ border-radius: var(--st-component-badge-circle-radius, 50%);
430
+ box-sizing: border-box;
431
+ font-variant-numeric: tabular-nums;
432
+ justify-content: center;
433
+ min-width: var(--st-component-badge-circle-size, 1.25rem);
434
+ min-height: var(--st-component-badge-circle-size, 1.25rem);
435
+ /* Equal inline/block padding keeps 1–2 digits round; the inline padding lets
436
+ 3+ digits grow the box into a rounded-rect instead of clipping. */
437
+ padding: var(--st-component-badge-circle-padding, 0.125rem);
438
+ text-align: center;
439
+ }
440
+
441
+ /* Density variant (additive). `md` is the UNTOUCHED base font-size; `--sm`
442
+ reuses the Tag `sm` scale for cross-house consistency. */
443
+ .st-badge--sm {
444
+ font-size: var(--st-component-badge-sm-fontSize, 0.6875rem);
445
+ }
446
+
420
447
  .st-badge--neutral {
421
448
  background: var(--st-semantic-surface-subtle);
422
449
  color: var(--st-semantic-text-secondary);
@@ -2753,15 +2780,27 @@
2753
2780
 
2754
2781
  .st-forceGraph__edge--weak {
2755
2782
  stroke: var(--st-semantic-border-subtle);
2756
- stroke-dasharray: 3 3;
2757
2783
  opacity: 0.5;
2758
2784
  }
2759
2785
 
2786
+ /* Emphasised edge (e.g. reconciliation match): thicker, fully opaque, on top. */
2787
+ .st-forceGraph__edge--emphasis {
2788
+ stroke: var(--st-semantic-border-interactive, var(--st-semantic-border-strong));
2789
+ opacity: 0.95;
2790
+ }
2791
+
2792
+ /* Hover: match the node hover (fully visible) so the edge is never paler
2793
+ than the two nodes it connects. */
2760
2794
  .st-forceGraph__edge--hovered {
2761
- opacity: 0.9;
2795
+ opacity: 1;
2762
2796
  stroke-width: 2;
2763
2797
  }
2764
2798
 
2799
+ /* Dimmed by an active selection (edge touches no selected/focused node). */
2800
+ .st-forceGraph__edge--dim {
2801
+ opacity: 0.12;
2802
+ }
2803
+
2765
2804
  /* Invisible wide hit target for edge hover */
2766
2805
  .st-forceGraph__edgeHit {
2767
2806
  stroke: transparent;
@@ -2945,8 +2984,7 @@
2945
2984
  .st-forceGraph__resetBtn { transition: none; }
2946
2985
  }
2947
2986
 
2948
- /* GraphLegend standalone component */
2949
- .st-graphLegend {
2987
+ .st-graphLegend {
2950
2988
  background: var(--st-semantic-surface-overlay, rgba(0,0,0,0.45));
2951
2989
  border-radius: var(--st-radius-sm, 0.25rem);
2952
2990
  color: var(--st-semantic-text-inverse);
@@ -7548,7 +7586,14 @@
7548
7586
  gap: 0.5rem;
7549
7587
  }
7550
7588
 
7551
- /* Layout system — Flex / Stack / Inline / Container / Row / Col / Hidden / Divider */
7589
+
7590
+ /* ==========================================================================
7591
+ Layout system (Flex / Stack / Inline / Container / Row / Col / Hidden /
7592
+ Divider) — ported from components-svelte scoped styles. Dynamic values
7593
+ (gap / align / justify / span / offset) are applied inline via style props.
7594
+ ========================================================================== */
7595
+
7596
+ /* Flex / Stack / Inline */
7552
7597
  .st-flex {
7553
7598
  box-sizing: border-box;
7554
7599
  min-width: 0;
@@ -7738,7 +7783,6 @@
7738
7783
  white-space: nowrap;
7739
7784
  }
7740
7785
 
7741
-
7742
7786
  /* ===========================================================================
7743
7787
  Avatar — ported from components-svelte/src/lib/Avatar.svelte
7744
7788
  =========================================================================== */
@@ -8226,6 +8270,15 @@
8226
8270
  flex: 1 1 auto;
8227
8271
  }
8228
8272
 
8273
+ /* Trigger trailing slot (additive). Holds a count badge / status / glyph
8274
+ between the title and the chevron; never grows, so the chevron stays the
8275
+ rightmost affordance and the title keeps `flex: 1 1 auto`. */
8276
+ .st-collapsible__trailing {
8277
+ align-items: center;
8278
+ display: inline-flex;
8279
+ flex: 0 0 auto;
8280
+ }
8281
+
8229
8282
  .st-collapsible__icon {
8230
8283
  align-items: center;
8231
8284
  color: var(--st-semantic-text-secondary);
@@ -9025,6 +9078,36 @@
9025
9078
  white-space: nowrap;
9026
9079
  }
9027
9080
 
9081
+ /* Caption variant (additive). Rows WITHOUT a caption keep the single-line
9082
+ `.st-selectableRow__content` above byte-identically (no `--stacked` rule
9083
+ applies). `--stacked` overlays a vertical column: the primary `__label` keeps
9084
+ its own single-line ellipsis, and the muted `__caption` truncates
9085
+ independently so a long legend never pushes the row width. Every leaf falls
9086
+ back to a base literal so a theme that emits no
9087
+ `--st-component-selectableRow-caption*` renders the caption identically. */
9088
+ .st-selectableRow__content--stacked {
9089
+ display: flex;
9090
+ flex-direction: column;
9091
+ /* The column stack drops the inline ellipsis/nowrap (each line truncates on
9092
+ its own child); keep min-width:0 so the column can shrink and ellipsize. */
9093
+ overflow: visible;
9094
+ white-space: normal;
9095
+ gap: var(--st-component-selectableRow-captionGap, 0.125rem);
9096
+ }
9097
+
9098
+ .st-selectableRow__label,
9099
+ .st-selectableRow__caption {
9100
+ min-width: 0;
9101
+ overflow: hidden;
9102
+ text-overflow: ellipsis;
9103
+ white-space: nowrap;
9104
+ }
9105
+
9106
+ .st-selectableRow__caption {
9107
+ color: var(--st-component-selectableRow-captionColor, var(--st-semantic-text-muted));
9108
+ font-size: var(--st-component-selectableRow-captionFontSize, 0.75rem);
9109
+ }
9110
+
9028
9111
  @media (prefers-reduced-motion: reduce) {
9029
9112
  .st-selectableRow {
9030
9113
  transition: none;
@@ -9043,7 +9126,7 @@
9043
9126
  }
9044
9127
 
9045
9128
  /* ---------------------------------------------------------------------------
9046
- KpiCard — single metric card with optional delta + sparkline.
9129
+ KpiCard — indicateur chiffré avec delta, tendance et sparkline optionnels.
9047
9130
  --------------------------------------------------------------------------- */
9048
9131
  .st-kpiCard {
9049
9132
  background: var(--st-component-card-background, var(--st-semantic-surface-raised));
@@ -9069,28 +9152,17 @@
9069
9152
  padding: var(--st-spacing-6, 1.5rem);
9070
9153
  }
9071
9154
 
9072
- /* Accent catégoriel : pastille inline discrète devant l'étiquette.
9073
- (Pas de liseré gauche sur un conteneur arrondi — anti-pattern proscrit.) */
9074
9155
  .st-kpiCard__label {
9075
9156
  align-items: center;
9076
9157
  color: var(--st-semantic-text-secondary);
9077
9158
  display: flex;
9078
9159
  font-size: 0.8125rem;
9079
9160
  font-weight: 500;
9080
- gap: var(--st-spacing-2, 0.5rem);
9161
+ gap: var(--st-spacing-1, 0.25rem);
9081
9162
  line-height: 1.25;
9082
9163
  margin: 0;
9083
9164
  }
9084
9165
 
9085
- .st-kpiCard__swatch {
9086
- background: var(--st-kpiCard-accent, var(--st-semantic-data-category1));
9087
- border-radius: var(--st-radius-full, 9999px);
9088
- display: inline-block;
9089
- flex: 0 0 auto;
9090
- height: 0.5rem;
9091
- width: 0.5rem;
9092
- }
9093
-
9094
9166
  .st-kpiCard--lg .st-kpiCard__label {
9095
9167
  font-size: 0.875rem;
9096
9168
  }
@@ -9173,17 +9245,44 @@
9173
9245
  color: var(--st-semantic-text-secondary);
9174
9246
  }
9175
9247
 
9176
- .st-kpiCard--category1 { --st-kpiCard-accent: var(--st-semantic-data-category1); }
9177
- .st-kpiCard--category2 { --st-kpiCard-accent: var(--st-semantic-data-category2); }
9178
- .st-kpiCard--category3 { --st-kpiCard-accent: var(--st-semantic-data-category3); }
9179
- .st-kpiCard--category4 { --st-kpiCard-accent: var(--st-semantic-data-category4); }
9180
- .st-kpiCard--category5 { --st-kpiCard-accent: var(--st-semantic-data-category5); }
9181
- .st-kpiCard--category6 { --st-kpiCard-accent: var(--st-semantic-data-category6); }
9182
- .st-kpiCard--category7 { --st-kpiCard-accent: var(--st-semantic-data-category7); }
9183
- .st-kpiCard--category8 { --st-kpiCard-accent: var(--st-semantic-data-category8); }
9248
+ /* Accent catégoriel discret : pastille inline près de l'étiquette
9249
+ (remplace l'ancien liseré gauche, anti-pattern sur conteneur arrondi). */
9250
+ .st-kpiCard__swatch {
9251
+ background: var(--st-semantic-border-subtle);
9252
+ border-radius: 50%;
9253
+ display: inline-block;
9254
+ flex: 0 0 auto;
9255
+ height: 0.5rem;
9256
+ width: 0.5rem;
9257
+ }
9258
+
9259
+ .st-kpiCard--category1 .st-kpiCard__swatch {
9260
+ background: var(--st-semantic-data-category1);
9261
+ }
9262
+ .st-kpiCard--category2 .st-kpiCard__swatch {
9263
+ background: var(--st-semantic-data-category2);
9264
+ }
9265
+ .st-kpiCard--category3 .st-kpiCard__swatch {
9266
+ background: var(--st-semantic-data-category3);
9267
+ }
9268
+ .st-kpiCard--category4 .st-kpiCard__swatch {
9269
+ background: var(--st-semantic-data-category4);
9270
+ }
9271
+ .st-kpiCard--category5 .st-kpiCard__swatch {
9272
+ background: var(--st-semantic-data-category5);
9273
+ }
9274
+ .st-kpiCard--category6 .st-kpiCard__swatch {
9275
+ background: var(--st-semantic-data-category6);
9276
+ }
9277
+ .st-kpiCard--category7 .st-kpiCard__swatch {
9278
+ background: var(--st-semantic-data-category7);
9279
+ }
9280
+ .st-kpiCard--category8 .st-kpiCard__swatch {
9281
+ background: var(--st-semantic-data-category8);
9282
+ }
9184
9283
 
9185
9284
  /* ---------------------------------------------------------------------------
9186
- ComboChart — grouped bars on a left axis + lines on a right axis.
9285
+ ComboChart — barres groupées (axe gauche) + lignes (axe droit).
9187
9286
  --------------------------------------------------------------------------- */
9188
9287
  .st-comboChart {
9189
9288
  color: var(--st-semantic-text-secondary);
@@ -9433,7 +9532,7 @@
9433
9532
  }
9434
9533
 
9435
9534
  /* ---------------------------------------------------------------------------
9436
- GaugeChart — radial meter with optional threshold bands and a needle.
9535
+ GaugeChart — jauge en arc avec bandes de seuils, aiguille et valeur centrale.
9437
9536
  --------------------------------------------------------------------------- */
9438
9537
  .st-gaugeChart {
9439
9538
  color: var(--st-semantic-text-secondary);
@@ -9486,12 +9585,14 @@
9486
9585
  font-weight: 500;
9487
9586
  }
9488
9587
 
9489
- .st-gaugeChart__band--neutral { stroke: var(--st-semantic-surface-subtle, var(--st-semantic-border-subtle)); }
9588
+ /* Tons sémantiques de feedback */
9589
+ .st-gaugeChart__band--neutral { stroke: var(--st-semantic-border-strong, var(--st-semantic-surface-subtle)); }
9490
9590
  .st-gaugeChart__band--info { stroke: var(--st-semantic-feedback-info, var(--st-semantic-action-primary)); }
9491
9591
  .st-gaugeChart__band--success { stroke: var(--st-semantic-feedback-success); }
9492
9592
  .st-gaugeChart__band--warning { stroke: var(--st-semantic-feedback-warning); }
9493
9593
  .st-gaugeChart__band--error { stroke: var(--st-semantic-feedback-error); }
9494
9594
 
9595
+ /* Tons catégoriels data */
9495
9596
  .st-gaugeChart__band--category1 { stroke: var(--st-semantic-data-category1); }
9496
9597
  .st-gaugeChart__band--category2 { stroke: var(--st-semantic-data-category2); }
9497
9598
  .st-gaugeChart__band--category3 { stroke: var(--st-semantic-data-category3); }
@@ -10159,7 +10260,7 @@
10159
10260
  }
10160
10261
 
10161
10262
  /* ---------------------------------------------------------------------------
10162
- FunnelChart — decreasing trapezoid stages, vertical or horizontal.
10263
+ FunnelChart — entonnoir de trapèzes décroissants (vertical/horizontal).
10163
10264
  --------------------------------------------------------------------------- */
10164
10265
  .st-funnelChart {
10165
10266
  color: var(--st-semantic-text-secondary);
@@ -10195,15 +10296,15 @@
10195
10296
  .st-funnelChart__segment--category7 { fill: var(--st-semantic-data-category7); }
10196
10297
  .st-funnelChart__segment--category8 { fill: var(--st-semantic-data-category8); }
10197
10298
 
10198
- /* Couleur de texte fixée inline par le composant selon la luminance du fill
10199
- (contraste WCAG garanti) ; ces règles ne portent que la typo. */
10200
10299
  .st-funnelChart__label {
10300
+ fill: var(--st-component-funnelChart-labelColor, var(--st-semantic-text-inverse));
10201
10301
  font-size: 0.75rem;
10202
10302
  font-weight: 600;
10203
10303
  pointer-events: none;
10204
10304
  }
10205
10305
 
10206
10306
  .st-funnelChart__value {
10307
+ fill: var(--st-component-funnelChart-valueColor, var(--st-semantic-text-inverse));
10207
10308
  font-size: 0.6875rem;
10208
10309
  pointer-events: none;
10209
10310
  }
@@ -10267,7 +10368,7 @@
10267
10368
  }
10268
10369
 
10269
10370
  /* ---------------------------------------------------------------------------
10270
- WaterfallChart — floating bars tracing a running cumulative total.
10371
+ WaterfallChart — barres flottantes cumulatives (hausse/baisse/total).
10271
10372
  --------------------------------------------------------------------------- */
10272
10373
  .st-waterfallChart {
10273
10374
  color: var(--st-semantic-text-secondary);
@@ -10401,7 +10502,7 @@
10401
10502
  }
10402
10503
 
10403
10504
  /* ---------------------------------------------------------------------------
10404
- TreemapChart — squarified hierarchical rectangles (1 or 2 levels).
10505
+ TreemapChart — pavage squarified hiérarchique (1 ou 2 niveaux).
10405
10506
  --------------------------------------------------------------------------- */
10406
10507
  .st-treemapChart {
10407
10508
  color: var(--st-semantic-text-secondary);
@@ -10443,15 +10544,15 @@
10443
10544
  .st-treemapChart__rect--category7 { fill: var(--st-semantic-data-category7); }
10444
10545
  .st-treemapChart__rect--category8 { fill: var(--st-semantic-data-category8); }
10445
10546
 
10446
- /* Couleur de texte fixée inline par le composant selon la luminance du fill
10447
- (contraste WCAG garanti) ; ces règles ne portent que la typo. */
10448
10547
  .st-treemapChart__label {
10548
+ fill: var(--st-component-treemapChart-labelColor, #fff);
10449
10549
  font-size: 0.75rem;
10450
10550
  font-weight: 600;
10451
10551
  pointer-events: none;
10452
10552
  }
10453
10553
 
10454
10554
  .st-treemapChart__value {
10555
+ fill: var(--st-component-treemapChart-valueColor, #fff);
10455
10556
  font-size: 0.6875rem;
10456
10557
  opacity: 0.85;
10457
10558
  pointer-events: none;
@@ -10509,6 +10610,8 @@
10509
10610
  .st-treemapChart__legendSwatch--category7 { background: var(--st-semantic-data-category7); }
10510
10611
  .st-treemapChart__legendSwatch--category8 { background: var(--st-semantic-data-category8); }
10511
10612
 
10613
+ /* ── Lot 2 : Heatmap / Sankey / BoxPlot / Histogram / Radar / Sunburst ── */
10614
+
10512
10615
  .st-heatmapChart,
10513
10616
  .st-histogramChart,
10514
10617
  .st-boxPlotChart,
@@ -10518,71 +10621,171 @@
10518
10621
  color: var(--st-semantic-text-secondary);
10519
10622
  display: block;
10520
10623
  font-family: inherit;
10624
+ max-width: 100%;
10521
10625
  position: relative;
10522
10626
  width: 100%;
10523
10627
  }
10524
10628
 
10525
10629
  .st-heatmapChart svg,
10526
- .st-histogramChart svg,
10527
- .st-boxPlotChart svg,
10528
- .st-radarChart svg,
10529
- .st-sankeyChart svg,
10530
- .st-sunburstChart svg,
10531
10630
  .st-heatmapChart__visual,
10631
+ .st-histogramChart svg,
10532
10632
  .st-histogramChart__visual,
10633
+ .st-boxPlotChart svg,
10533
10634
  .st-boxPlotChart__visual,
10635
+ .st-radarChart svg,
10534
10636
  .st-radarChart__visual,
10637
+ .st-sankeyChart svg,
10535
10638
  .st-sankeyChart__visual,
10639
+ .st-sunburstChart svg,
10536
10640
  .st-sunburstChart__visual {
10537
10641
  display: block;
10538
10642
  overflow: visible;
10539
10643
  }
10540
10644
 
10645
+ /* ── Axis labels ── */
10541
10646
  .st-heatmapChart__axisLabel,
10542
- .st-histogramChart__tickLabel,
10543
- .st-histogramChart__categoryLabel,
10544
- .st-boxPlotChart__tickLabel,
10545
- .st-boxPlotChart__categoryLabel,
10647
+ .st-histogramChart__label,
10648
+ .st-boxPlotChart__label,
10546
10649
  .st-radarChart__axisLabel,
10547
- .st-radarChart__maxLabel,
10548
10650
  .st-sankeyChart__nodeLabel {
10549
10651
  fill: var(--st-semantic-text-secondary);
10550
- font-size: 0.6875rem;
10652
+ font-size: 0.75rem;
10551
10653
  }
10552
10654
 
10553
- .st-histogramChart__grid,
10554
- .st-boxPlotChart__grid,
10555
- .st-radarChart__grid {
10655
+ /* ── Axes / grids ── */
10656
+ .st-histogramChart__axis,
10657
+ .st-boxPlotChart__axis {
10556
10658
  stroke: var(--st-semantic-border-subtle);
10557
- stroke-dasharray: 2 3;
10558
10659
  stroke-width: 1;
10559
- opacity: 0.7;
10560
10660
  }
10561
10661
 
10562
- .st-histogramChart__axis,
10563
- .st-boxPlotChart__axis,
10662
+ .st-radarChart__ring,
10564
10663
  .st-radarChart__axis {
10565
10664
  stroke: var(--st-semantic-border-subtle);
10566
10665
  stroke-width: 1;
10567
10666
  }
10568
10667
 
10569
- .st-heatmapChart__cell,
10570
- .st-histogramChart__bar,
10571
- .st-boxPlotChart__box,
10572
- .st-sankeyChart__node,
10668
+ .st-radarChart__ring {
10669
+ fill: none;
10670
+ }
10671
+
10672
+ /* ── Heatmap ── */
10673
+ .st-heatmapChart__plot {
10674
+ fill: none;
10675
+ stroke: var(--st-semantic-border-subtle);
10676
+ stroke-width: 1;
10677
+ }
10678
+
10679
+ .st-heatmapChart__cell {
10680
+ cursor: pointer;
10681
+ stroke: var(--st-semantic-surface-default, Canvas);
10682
+ stroke-width: 1;
10683
+ transition: opacity 120ms ease;
10684
+ }
10685
+
10686
+ .st-heatmapChart__cell--dim {
10687
+ opacity: 0.45;
10688
+ }
10689
+
10690
+ /* ── Histogram ── */
10691
+ .st-histogramChart__bar {
10692
+ cursor: pointer;
10693
+ transition: opacity 120ms ease;
10694
+ }
10695
+
10696
+ .st-histogramChart__bar--dim {
10697
+ opacity: 0.45;
10698
+ }
10699
+
10700
+ /* ── BoxPlot ── */
10701
+ .st-boxPlotChart__axis,
10702
+ .st-boxPlotChart__whisker,
10703
+ .st-boxPlotChart__whiskerCap {
10704
+ stroke: var(--st-semantic-border-subtle);
10705
+ stroke-width: 1;
10706
+ }
10707
+
10708
+ .st-boxPlotChart__median {
10709
+ stroke: var(--st-semantic-text-primary);
10710
+ stroke-width: 2;
10711
+ }
10712
+
10713
+ .st-boxPlotChart__box {
10714
+ cursor: pointer;
10715
+ fill-opacity: 0.72;
10716
+ stroke: var(--st-semantic-surface-default, Canvas);
10717
+ stroke-width: 1;
10718
+ transition: opacity 120ms ease;
10719
+ }
10720
+
10721
+ .st-boxPlotChart__box--dim {
10722
+ opacity: 0.45;
10723
+ }
10724
+
10725
+ .st-boxPlotChart__outlier {
10726
+ fill: var(--st-semantic-surface-default, Canvas);
10727
+ stroke: var(--st-semantic-text-secondary);
10728
+ stroke-width: 1.5;
10729
+ }
10730
+
10731
+ /* ── Radar ── */
10732
+ .st-radarChart__polygon {
10733
+ cursor: pointer;
10734
+ fill-opacity: 0.16;
10735
+ stroke-width: 2;
10736
+ transition: opacity 120ms ease;
10737
+ }
10738
+
10739
+ .st-radarChart__polygon--dim {
10740
+ opacity: 0.35;
10741
+ }
10742
+
10743
+ .st-radarChart__point {
10744
+ stroke: var(--st-semantic-surface-default, Canvas);
10745
+ stroke-width: 1;
10746
+ }
10747
+
10748
+ /* ── Sankey ── */
10749
+ .st-sankeyChart__node {
10750
+ stroke: var(--st-semantic-surface-default, Canvas);
10751
+ stroke-width: 1;
10752
+ }
10753
+
10754
+ .st-sankeyChart__link {
10755
+ cursor: pointer;
10756
+ fill: none;
10757
+ opacity: 0.38;
10758
+ stroke-linecap: round;
10759
+ transition: opacity 120ms ease;
10760
+ }
10761
+
10762
+ .st-sankeyChart__link:hover {
10763
+ opacity: 0.62;
10764
+ }
10765
+
10766
+ .st-sankeyChart__link--dim {
10767
+ opacity: 0.16;
10768
+ }
10769
+
10770
+ /* ── Sunburst ── */
10573
10771
  .st-sunburstChart__arc {
10574
10772
  cursor: pointer;
10575
- transition: opacity var(--st-motion-fast, 120ms) var(--st-motion-easing, ease);
10773
+ stroke: var(--st-semantic-surface-default, Canvas);
10774
+ stroke-width: 1;
10775
+ transition: opacity 120ms ease;
10576
10776
  }
10577
10777
 
10578
- .st-heatmapChart__cell:hover,
10579
- .st-histogramChart__bar:hover,
10580
- .st-boxPlotChart__box:hover,
10581
- .st-sankeyChart__node:hover,
10582
- .st-sunburstChart__arc:hover {
10583
- opacity: 0.82;
10778
+ .st-sunburstChart__arc--dim {
10779
+ opacity: 0.4;
10780
+ }
10781
+
10782
+ .st-sunburstChart__label {
10783
+ font-size: 0.68rem;
10784
+ font-weight: 650;
10785
+ pointer-events: none;
10584
10786
  }
10585
10787
 
10788
+ /* ── Category fills — cells / bars / boxes / nodes / arcs ── */
10586
10789
  .st-heatmapChart__cell--category1,
10587
10790
  .st-histogramChart__bar--category1,
10588
10791
  .st-boxPlotChart__box--category1,
@@ -10624,76 +10827,133 @@
10624
10827
  .st-sankeyChart__node--category8,
10625
10828
  .st-sunburstChart__arc--category8 { fill: var(--st-semantic-data-category8); }
10626
10829
 
10627
- .st-boxPlotChart__box {
10628
- fill-opacity: 0.22;
10629
- stroke: currentColor;
10630
- stroke-width: 1.5;
10631
- }
10830
+ /* ── Radar polygon + point (fill + stroke) ── */
10831
+ .st-radarChart__polygon--category1,
10832
+ .st-radarChart__point--category1,
10833
+ .st-radarChart__legendSwatch--category1 { fill: var(--st-semantic-data-category1); stroke: var(--st-semantic-data-category1); background: var(--st-semantic-data-category1); }
10834
+ .st-radarChart__polygon--category2,
10835
+ .st-radarChart__point--category2,
10836
+ .st-radarChart__legendSwatch--category2 { fill: var(--st-semantic-data-category2); stroke: var(--st-semantic-data-category2); background: var(--st-semantic-data-category2); }
10837
+ .st-radarChart__polygon--category3,
10838
+ .st-radarChart__point--category3,
10839
+ .st-radarChart__legendSwatch--category3 { fill: var(--st-semantic-data-category3); stroke: var(--st-semantic-data-category3); background: var(--st-semantic-data-category3); }
10840
+ .st-radarChart__polygon--category4,
10841
+ .st-radarChart__point--category4,
10842
+ .st-radarChart__legendSwatch--category4 { fill: var(--st-semantic-data-category4); stroke: var(--st-semantic-data-category4); background: var(--st-semantic-data-category4); }
10843
+ .st-radarChart__polygon--category5,
10844
+ .st-radarChart__point--category5,
10845
+ .st-radarChart__legendSwatch--category5 { fill: var(--st-semantic-data-category5); stroke: var(--st-semantic-data-category5); background: var(--st-semantic-data-category5); }
10846
+ .st-radarChart__polygon--category6,
10847
+ .st-radarChart__point--category6,
10848
+ .st-radarChart__legendSwatch--category6 { fill: var(--st-semantic-data-category6); stroke: var(--st-semantic-data-category6); background: var(--st-semantic-data-category6); }
10849
+ .st-radarChart__polygon--category7,
10850
+ .st-radarChart__point--category7,
10851
+ .st-radarChart__legendSwatch--category7 { fill: var(--st-semantic-data-category7); stroke: var(--st-semantic-data-category7); background: var(--st-semantic-data-category7); }
10852
+ .st-radarChart__polygon--category8,
10853
+ .st-radarChart__point--category8,
10854
+ .st-radarChart__legendSwatch--category8 { fill: var(--st-semantic-data-category8); stroke: var(--st-semantic-data-category8); background: var(--st-semantic-data-category8); }
10855
+
10856
+ /* ── Sankey links (stroke seulement) ── */
10857
+ .st-sankeyChart__link--category1 { stroke: var(--st-semantic-data-category1); }
10858
+ .st-sankeyChart__link--category2 { stroke: var(--st-semantic-data-category2); }
10859
+ .st-sankeyChart__link--category3 { stroke: var(--st-semantic-data-category3); }
10860
+ .st-sankeyChart__link--category4 { stroke: var(--st-semantic-data-category4); }
10861
+ .st-sankeyChart__link--category5 { stroke: var(--st-semantic-data-category5); }
10862
+ .st-sankeyChart__link--category6 { stroke: var(--st-semantic-data-category6); }
10863
+ .st-sankeyChart__link--category7 { stroke: var(--st-semantic-data-category7); }
10864
+ .st-sankeyChart__link--category8 { stroke: var(--st-semantic-data-category8); }
10632
10865
 
10633
- .st-boxPlotChart__whisker,
10634
- .st-boxPlotChart__whiskerCap,
10635
- .st-boxPlotChart__median {
10636
- stroke: var(--st-semantic-text-secondary);
10637
- stroke-width: 1.5;
10866
+ /* ── Heatmap legend (gradient ramp) ── */
10867
+ .st-heatmapChart__legend {
10868
+ align-items: center;
10869
+ display: flex;
10870
+ gap: var(--st-spacing-2, 0.5rem);
10871
+ margin-top: var(--st-spacing-2, 0.5rem);
10638
10872
  }
10639
10873
 
10640
- .st-boxPlotChart__median {
10641
- stroke: var(--st-semantic-text-primary);
10642
- stroke-width: 2;
10874
+ .st-heatmapChart__legendRamp {
10875
+ display: inline-grid;
10876
+ grid-template-columns: repeat(8, minmax(0.75rem, 1fr));
10877
+ min-width: 8rem;
10643
10878
  }
10644
10879
 
10645
- .st-boxPlotChart__outlier {
10646
- fill: var(--st-semantic-surface-default);
10647
- stroke: var(--st-semantic-text-secondary);
10648
- stroke-width: 1.5;
10880
+ .st-heatmapChart__legendSwatch {
10881
+ display: block;
10882
+ height: 0.5rem;
10649
10883
  }
10650
10884
 
10651
- .st-radarChart__grid {
10652
- fill: none;
10885
+ .st-heatmapChart__legendText {
10886
+ color: var(--st-semantic-text-secondary);
10887
+ font-size: 0.75rem;
10653
10888
  }
10654
10889
 
10655
- .st-radarChart__polygon {
10656
- cursor: pointer;
10657
- fill: currentColor;
10658
- fill-opacity: 0.16;
10659
- stroke: currentColor;
10660
- stroke-width: 2;
10661
- transition: fill-opacity var(--st-motion-fast, 120ms) var(--st-motion-easing, ease);
10662
- }
10890
+ .st-heatmapChart__legendSwatch--category1 { background: var(--st-semantic-data-category1); }
10891
+ .st-heatmapChart__legendSwatch--category2 { background: var(--st-semantic-data-category2); }
10892
+ .st-heatmapChart__legendSwatch--category3 { background: var(--st-semantic-data-category3); }
10893
+ .st-heatmapChart__legendSwatch--category4 { background: var(--st-semantic-data-category4); }
10894
+ .st-heatmapChart__legendSwatch--category5 { background: var(--st-semantic-data-category5); }
10895
+ .st-heatmapChart__legendSwatch--category6 { background: var(--st-semantic-data-category6); }
10896
+ .st-heatmapChart__legendSwatch--category7 { background: var(--st-semantic-data-category7); }
10897
+ .st-heatmapChart__legendSwatch--category8 { background: var(--st-semantic-data-category8); }
10663
10898
 
10664
- .st-radarChart__polygon:hover {
10665
- fill-opacity: 0.24;
10899
+ /* ── Radar legend ── */
10900
+ .st-radarChart__legend {
10901
+ display: flex;
10902
+ flex-wrap: wrap;
10903
+ gap: var(--st-spacing-2, 0.5rem) var(--st-spacing-4, 1rem);
10904
+ list-style: none;
10905
+ margin: var(--st-spacing-2, 0.5rem) 0 0;
10906
+ padding: 0;
10666
10907
  }
10667
10908
 
10668
- .st-radarChart__polygon--category1 { color: var(--st-semantic-data-category1); }
10669
- .st-radarChart__polygon--category2 { color: var(--st-semantic-data-category2); }
10670
- .st-radarChart__polygon--category3 { color: var(--st-semantic-data-category3); }
10671
- .st-radarChart__polygon--category4 { color: var(--st-semantic-data-category4); }
10672
- .st-radarChart__polygon--category5 { color: var(--st-semantic-data-category5); }
10673
- .st-radarChart__polygon--category6 { color: var(--st-semantic-data-category6); }
10674
- .st-radarChart__polygon--category7 { color: var(--st-semantic-data-category7); }
10675
- .st-radarChart__polygon--category8 { color: var(--st-semantic-data-category8); }
10676
-
10677
- .st-sankeyChart__link {
10678
- opacity: 0.34;
10679
- pointer-events: stroke;
10680
- stroke-linecap: round;
10681
- transition: opacity var(--st-motion-fast, 120ms) var(--st-motion-easing, ease);
10909
+ .st-radarChart__legendItem {
10910
+ align-items: center;
10911
+ color: var(--st-semantic-text-secondary);
10912
+ display: inline-flex;
10913
+ font-size: 0.75rem;
10914
+ gap: var(--st-spacing-2, 0.5rem);
10682
10915
  }
10683
10916
 
10684
- .st-sankeyChart__link:hover {
10685
- opacity: 0.58;
10686
- }
10917
+ .st-radarChart__legendSwatch {
10918
+ display: inline-block;
10919
+ height: 0.625rem;
10920
+ width: 0.625rem;
10921
+ }
10687
10922
 
10688
- .st-sankeyChart__link--category1 { stroke: var(--st-semantic-data-category1); }
10689
- .st-sankeyChart__link--category2 { stroke: var(--st-semantic-data-category2); }
10690
- .st-sankeyChart__link--category3 { stroke: var(--st-semantic-data-category3); }
10691
- .st-sankeyChart__link--category4 { stroke: var(--st-semantic-data-category4); }
10692
- .st-sankeyChart__link--category5 { stroke: var(--st-semantic-data-category5); }
10693
- .st-sankeyChart__link--category6 { stroke: var(--st-semantic-data-category6); }
10694
- .st-sankeyChart__link--category7 { stroke: var(--st-semantic-data-category7); }
10695
- .st-sankeyChart__link--category8 { stroke: var(--st-semantic-data-category8); }
10923
+ /* ── Sunburst legend ── */
10924
+ .st-sunburstChart__legend {
10925
+ display: flex;
10926
+ flex-wrap: wrap;
10927
+ gap: var(--st-spacing-2, 0.5rem) var(--st-spacing-4, 1rem);
10928
+ list-style: none;
10929
+ margin: var(--st-spacing-2, 0.5rem) 0 0;
10930
+ padding: 0;
10931
+ }
10696
10932
 
10933
+ .st-sunburstChart__legendItem {
10934
+ align-items: center;
10935
+ color: var(--st-semantic-text-secondary);
10936
+ display: inline-flex;
10937
+ font-size: 0.75rem;
10938
+ gap: var(--st-spacing-2, 0.5rem);
10939
+ }
10940
+
10941
+ .st-sunburstChart__legendSwatch {
10942
+ display: inline-block;
10943
+ height: 0.625rem;
10944
+ width: 0.625rem;
10945
+ }
10946
+
10947
+ .st-sunburstChart__legendSwatch--category1 { background: var(--st-semantic-data-category1); }
10948
+ .st-sunburstChart__legendSwatch--category2 { background: var(--st-semantic-data-category2); }
10949
+ .st-sunburstChart__legendSwatch--category3 { background: var(--st-semantic-data-category3); }
10950
+ .st-sunburstChart__legendSwatch--category4 { background: var(--st-semantic-data-category4); }
10951
+ .st-sunburstChart__legendSwatch--category5 { background: var(--st-semantic-data-category5); }
10952
+ .st-sunburstChart__legendSwatch--category6 { background: var(--st-semantic-data-category6); }
10953
+ .st-sunburstChart__legendSwatch--category7 { background: var(--st-semantic-data-category7); }
10954
+ .st-sunburstChart__legendSwatch--category8 { background: var(--st-semantic-data-category8); }
10955
+
10956
+ /* ── Tooltips communs ── */
10697
10957
  .st-heatmapChart__tooltip,
10698
10958
  .st-histogramChart__tooltip,
10699
10959
  .st-boxPlotChart__tooltip,
@@ -10711,11 +10971,17 @@
10711
10971
  padding: 0.375rem 0.5rem;
10712
10972
  pointer-events: none;
10713
10973
  position: absolute;
10714
- transform: translate(-50%, calc(-100% - 8px));
10974
+ transform: translate(-50%, -115%);
10715
10975
  white-space: nowrap;
10716
10976
  z-index: 1;
10717
10977
  }
10718
10978
 
10979
+ .st-radarChart__tooltip {
10980
+ left: 50%;
10981
+ top: 50%;
10982
+ transform: translate(-50%, -50%);
10983
+ }
10984
+
10719
10985
  .st-heatmapChart__tooltipLabel,
10720
10986
  .st-histogramChart__tooltipLabel,
10721
10987
  .st-boxPlotChart__tooltipLabel,
@@ -10728,184 +10994,211 @@
10728
10994
  .st-heatmapChart__tooltipValue,
10729
10995
  .st-histogramChart__tooltipValue,
10730
10996
  .st-boxPlotChart__tooltipValue,
10731
- .st-radarChart__tooltipValue,
10732
10997
  .st-sankeyChart__tooltipValue,
10733
10998
  .st-sunburstChart__tooltipValue {
10734
10999
  opacity: 0.85;
10735
11000
  }
10736
11001
 
10737
- .st-heatmapChart__legend,
10738
- .st-radarChart__legend,
10739
- .st-sunburstChart__legend {
10740
- display: flex;
10741
- flex-wrap: wrap;
10742
- gap: var(--st-spacing-3, 0.75rem);
10743
- list-style: none;
10744
- margin: var(--st-spacing-2, 0.5rem) 0 0;
10745
- padding: 0;
10746
- }
10747
-
10748
- .st-heatmapChart__legendItem,
10749
- .st-radarChart__legendItem,
10750
- .st-sunburstChart__legendItem {
10751
- align-items: center;
10752
- color: var(--st-semantic-text-secondary);
10753
- display: inline-flex;
10754
- font-size: 0.75rem;
10755
- gap: var(--st-spacing-1, 0.35rem);
10756
- }
10757
-
10758
- .st-heatmapChart__legendSwatch,
10759
- .st-radarChart__legendSwatch,
10760
- .st-sunburstChart__legendSwatch {
10761
- border-radius: 2px;
10762
- height: 0.7rem;
10763
- width: 0.7rem;
10764
- }
10765
-
10766
- .st-heatmapChart__legendSwatch--category1,
10767
- .st-radarChart__legendSwatch--category1,
10768
- .st-sunburstChart__legendSwatch--category1 { background: var(--st-semantic-data-category1); }
10769
- .st-heatmapChart__legendSwatch--category2,
10770
- .st-radarChart__legendSwatch--category2,
10771
- .st-sunburstChart__legendSwatch--category2 { background: var(--st-semantic-data-category2); }
10772
- .st-heatmapChart__legendSwatch--category3,
10773
- .st-radarChart__legendSwatch--category3,
10774
- .st-sunburstChart__legendSwatch--category3 { background: var(--st-semantic-data-category3); }
10775
- .st-heatmapChart__legendSwatch--category4,
10776
- .st-radarChart__legendSwatch--category4,
10777
- .st-sunburstChart__legendSwatch--category4 { background: var(--st-semantic-data-category4); }
10778
- .st-heatmapChart__legendSwatch--category5,
10779
- .st-radarChart__legendSwatch--category5,
10780
- .st-sunburstChart__legendSwatch--category5 { background: var(--st-semantic-data-category5); }
10781
- .st-heatmapChart__legendSwatch--category6,
10782
- .st-radarChart__legendSwatch--category6,
10783
- .st-sunburstChart__legendSwatch--category6 { background: var(--st-semantic-data-category6); }
10784
- .st-heatmapChart__legendSwatch--category7,
10785
- .st-radarChart__legendSwatch--category7,
10786
- .st-sunburstChart__legendSwatch--category7 { background: var(--st-semantic-data-category7); }
10787
- .st-heatmapChart__legendSwatch--category8,
10788
- .st-radarChart__legendSwatch--category8,
10789
- .st-sunburstChart__legendSwatch--category8 { background: var(--st-semantic-data-category8); }
10790
-
11002
+ /* ── reduced-motion ── */
10791
11003
  @media (prefers-reduced-motion: reduce) {
10792
11004
  .st-heatmapChart__cell,
10793
11005
  .st-histogramChart__bar,
10794
11006
  .st-boxPlotChart__box,
10795
11007
  .st-radarChart__polygon,
10796
- .st-sankeyChart__node,
10797
11008
  .st-sankeyChart__link,
10798
11009
  .st-sunburstChart__arc {
10799
11010
  transition: none;
10800
11011
  }
10801
11012
  }
10802
11013
 
10803
- /* ---- Bi-charts lot 2 – styles canoniques alignés sur Svelte ---- */
11014
+ /* ── BulletChart (lot-3) ── */
11015
+ .st-bulletChart {
11016
+ color: var(--st-semantic-text-secondary);
11017
+ display: block;
11018
+ font-family: inherit;
11019
+ position: relative;
11020
+ width: 100%;
11021
+ }
10804
11022
 
10805
- /* sankeyChart: le lien est un stroke, pas un fill */
10806
- .st-sankeyChart__link {
10807
- fill: none;
11023
+ .st-bulletChart svg {
11024
+ display: block;
11025
+ overflow: visible;
10808
11026
  }
10809
11027
 
10810
- /* Heatmap: bordure du plot */
10811
- .st-heatmapChart__plot {
10812
- fill: none;
11028
+ .st-bulletChart__visual {
11029
+ display: block;
11030
+ }
11031
+
11032
+ .st-bulletChart__axis {
10813
11033
  stroke: var(--st-semantic-border-subtle);
10814
11034
  stroke-width: 1;
10815
11035
  }
10816
11036
 
10817
- /* Heatmap: légende gradient Low→High */
10818
- .st-heatmapChart__legend {
10819
- align-items: center;
10820
- display: flex;
10821
- gap: var(--st-spacing-2, 0.5rem);
10822
- margin-top: var(--st-spacing-2, 0.5rem);
11037
+ .st-bulletChart__baseline {
11038
+ stroke: var(--st-semantic-border-subtle);
11039
+ stroke-width: 1.5;
10823
11040
  }
10824
11041
 
10825
- .st-heatmapChart__legendRamp {
10826
- display: inline-grid;
10827
- grid-template-columns: repeat(8, minmax(0.75rem, 1fr));
10828
- min-width: 8rem;
11042
+ .st-bulletChart__grid {
11043
+ stroke: var(--st-semantic-border-subtle);
11044
+ stroke-dasharray: 2 3;
11045
+ stroke-width: 1;
11046
+ opacity: 0.6;
10829
11047
  }
10830
11048
 
10831
- .st-heatmapChart__legendSwatch {
10832
- display: block;
10833
- height: 0.5rem;
11049
+ .st-bulletChart__range {
11050
+ fill: var(--st-semantic-data-category1);
10834
11051
  }
10835
11052
 
10836
- .st-heatmapChart__legendText {
10837
- color: var(--st-semantic-text-secondary);
10838
- font-size: 0.75rem;
11053
+ .st-bulletChart__bar {
11054
+ cursor: pointer;
11055
+ fill: var(--st-semantic-text-secondary);
11056
+ transition: opacity 120ms ease;
10839
11057
  }
10840
11058
 
10841
- /* Dim states (hover-based opacity) */
10842
- .st-heatmapChart__cell--dim,
10843
- .st-histogramChart__bar--dim,
10844
- .st-boxPlotChart__box--dim,
10845
- .st-radarChart__polygon--dim,
10846
- .st-sunburstChart__arc--dim {
10847
- opacity: 0.45;
11059
+ .st-bulletChart__bar:hover {
11060
+ opacity: 0.75;
10848
11061
  }
10849
11062
 
10850
- .st-sankeyChart__link--dim {
10851
- opacity: 0.16;
11063
+ @media (prefers-reduced-motion: reduce) {
11064
+ .st-bulletChart__bar {
11065
+ transition: none;
11066
+ }
11067
+ }
11068
+
11069
+ .st-bulletChart__target {
11070
+ stroke: var(--st-semantic-text-primary, currentColor);
11071
+ stroke-width: 2.5;
10852
11072
  }
10853
11073
 
10854
- /* BoxPlot: x-axis label below each box */
10855
- .st-boxPlotChart__label {
11074
+ .st-bulletChart__tickLabel,
11075
+ .st-bulletChart__categoryLabel {
10856
11076
  fill: var(--st-semantic-text-secondary);
11077
+ font-size: 0.6875rem;
11078
+ }
11079
+
11080
+ .st-bulletChart__tooltip {
11081
+ background: var(--st-semantic-surface-inverse);
11082
+ border-radius: var(--st-radius-sm, 0.25rem);
11083
+ color: var(--st-semantic-text-inverse);
11084
+ display: inline-flex;
11085
+ flex-direction: column;
10857
11086
  font-size: 0.75rem;
11087
+ gap: 0.125rem;
11088
+ line-height: 1.2;
11089
+ padding: 0.375rem 0.5rem;
11090
+ pointer-events: none;
11091
+ position: absolute;
11092
+ transform: translate(-50%, calc(-100% - 8px));
11093
+ white-space: nowrap;
11094
+ z-index: 1;
10858
11095
  }
10859
11096
 
10860
- /* BoxPlot: fill-opacity canonical value */
10861
- .st-boxPlotChart__box {
10862
- fill-opacity: 0.72;
11097
+ .st-bulletChart__tooltipLabel {
11098
+ font-weight: 600;
10863
11099
  }
10864
11100
 
10865
- /* BoxPlot: whisker/cap strokes */
10866
- .st-boxPlotChart__whisker,
10867
- .st-boxPlotChart__whiskerCap {
10868
- stroke: var(--st-semantic-border-subtle);
10869
- stroke-width: 1;
11101
+ .st-bulletChart__tooltipValue {
11102
+ opacity: 0.85;
10870
11103
  }
10871
11104
 
10872
- /* RadarChart: ring (polygon grid) */
10873
- .st-radarChart__ring {
10874
- fill: none;
10875
- stroke: var(--st-semantic-border-subtle);
10876
- stroke-width: 1;
11105
+ /* ── LollipopChart ── */
11106
+ .st-lollipopChart {
11107
+ color: var(--st-semantic-text-secondary);
11108
+ display: block;
11109
+ font-family: inherit;
11110
+ position: relative;
11111
+ width: 100%;
10877
11112
  }
10878
11113
 
10879
- /* RadarChart: axis spokes */
10880
- .st-radarChart__axis {
10881
- stroke: var(--st-semantic-border-subtle);
11114
+ .st-lollipopChart svg {
11115
+ display: block;
11116
+ overflow: visible;
11117
+ }
11118
+
11119
+ .st-lollipopChart__visual {
11120
+ display: block;
11121
+ }
11122
+
11123
+ .st-lollipopChart__grid {
11124
+ stroke: var(--st-component-lollipopChart-gridStroke, var(--st-semantic-border-subtle));
11125
+ stroke-dasharray: 2 3;
10882
11126
  stroke-width: 1;
11127
+ opacity: 0.7;
10883
11128
  }
10884
11129
 
10885
- /* RadarChart: data points */
10886
- .st-radarChart__point {
10887
- stroke: var(--st-semantic-surface-default, Canvas);
11130
+ .st-lollipopChart__axis {
11131
+ stroke: var(--st-component-lollipopChart-axisStroke, var(--st-semantic-border-subtle));
10888
11132
  stroke-width: 1;
10889
11133
  }
10890
11134
 
10891
- .st-radarChart__point--category1 { fill: var(--st-semantic-data-category1); }
10892
- .st-radarChart__point--category2 { fill: var(--st-semantic-data-category2); }
10893
- .st-radarChart__point--category3 { fill: var(--st-semantic-data-category3); }
10894
- .st-radarChart__point--category4 { fill: var(--st-semantic-data-category4); }
10895
- .st-radarChart__point--category5 { fill: var(--st-semantic-data-category5); }
10896
- .st-radarChart__point--category6 { fill: var(--st-semantic-data-category6); }
10897
- .st-radarChart__point--category7 { fill: var(--st-semantic-data-category7); }
10898
- .st-radarChart__point--category8 { fill: var(--st-semantic-data-category8); }
11135
+ .st-lollipopChart__tickLabel,
11136
+ .st-lollipopChart__categoryLabel {
11137
+ fill: var(--st-component-lollipopChart-labelColor, var(--st-semantic-text-secondary));
11138
+ font-size: 0.6875rem;
11139
+ }
10899
11140
 
10900
- /* SunburstChart: arc label (fill set inline by contrastTextForTone) */
10901
- .st-sunburstChart__label {
10902
- font-size: 0.68rem;
10903
- font-weight: 650;
11141
+ .st-lollipopChart__valueLabel {
11142
+ font-size: 0.625rem;
11143
+ font-weight: 600;
11144
+ }
11145
+
11146
+ .st-lollipopChart__stem {
11147
+ stroke: var(--st-semantic-border-interactive, var(--st-semantic-border-subtle));
11148
+ stroke-width: 1.5;
11149
+ }
11150
+
11151
+ .st-lollipopChart__dot {
11152
+ cursor: pointer;
11153
+ transition: opacity var(--st-motion-fast, 120ms) var(--st-motion-easing, ease);
11154
+ }
11155
+
11156
+ .st-lollipopChart__dot:hover {
11157
+ opacity: 0.82;
11158
+ }
11159
+
11160
+ .st-lollipopChart__dot--category1 { fill: var(--st-semantic-data-category1); }
11161
+ .st-lollipopChart__dot--category2 { fill: var(--st-semantic-data-category2); }
11162
+ .st-lollipopChart__dot--category3 { fill: var(--st-semantic-data-category3); }
11163
+ .st-lollipopChart__dot--category4 { fill: var(--st-semantic-data-category4); }
11164
+ .st-lollipopChart__dot--category5 { fill: var(--st-semantic-data-category5); }
11165
+ .st-lollipopChart__dot--category6 { fill: var(--st-semantic-data-category6); }
11166
+ .st-lollipopChart__dot--category7 { fill: var(--st-semantic-data-category7); }
11167
+ .st-lollipopChart__dot--category8 { fill: var(--st-semantic-data-category8); }
11168
+
11169
+ .st-lollipopChart__tooltip {
11170
+ background: var(--st-component-lollipopChart-tooltipBackground, var(--st-semantic-surface-inverse));
11171
+ border-radius: var(--st-radius-sm, 0.25rem);
11172
+ color: var(--st-component-lollipopChart-tooltipText, var(--st-semantic-text-inverse));
11173
+ display: inline-flex;
11174
+ flex-direction: column;
11175
+ font-size: 0.75rem;
11176
+ gap: 0.125rem;
11177
+ line-height: 1.2;
11178
+ padding: 0.375rem 0.5rem;
10904
11179
  pointer-events: none;
11180
+ position: absolute;
11181
+ transform: translate(-50%, calc(-100% - 8px));
11182
+ white-space: nowrap;
11183
+ z-index: 1;
10905
11184
  }
10906
11185
 
10907
- /* ── BulletChart (lot-3) ── */
10908
- .st-bulletChart {
11186
+ .st-lollipopChart__tooltipLabel {
11187
+ font-weight: 600;
11188
+ }
11189
+
11190
+ .st-lollipopChart__tooltipValue {
11191
+ opacity: 0.85;
11192
+ }
11193
+
11194
+ @media (prefers-reduced-motion: reduce) {
11195
+ .st-lollipopChart__dot {
11196
+ transition: none;
11197
+ }
11198
+ }
11199
+
11200
+ /* ── ParetoChart ── */
11201
+ .st-paretoChart {
10909
11202
  color: var(--st-semantic-text-secondary);
10910
11203
  display: block;
10911
11204
  font-family: inherit;
@@ -10913,67 +11206,71 @@
10913
11206
  width: 100%;
10914
11207
  }
10915
11208
 
10916
- .st-bulletChart svg {
11209
+ .st-paretoChart svg {
10917
11210
  display: block;
10918
11211
  overflow: visible;
10919
11212
  }
10920
11213
 
10921
- .st-bulletChart__visual {
11214
+ .st-paretoChart__visual {
10922
11215
  display: block;
10923
11216
  }
10924
11217
 
10925
- .st-bulletChart__axis {
10926
- stroke: var(--st-semantic-border-subtle);
11218
+ .st-paretoChart__grid {
11219
+ stroke: var(--st-component-paretoChart-gridStroke, var(--st-semantic-border-subtle));
11220
+ stroke-dasharray: 2 3;
10927
11221
  stroke-width: 1;
11222
+ opacity: 0.7;
10928
11223
  }
10929
11224
 
10930
- .st-bulletChart__baseline {
10931
- stroke: var(--st-semantic-border-subtle);
10932
- stroke-width: 1.5;
10933
- }
10934
-
10935
- .st-bulletChart__grid {
10936
- stroke: var(--st-semantic-border-subtle);
10937
- stroke-dasharray: 2 3;
11225
+ .st-paretoChart__axis {
11226
+ stroke: var(--st-component-paretoChart-axisStroke, var(--st-semantic-border-subtle));
10938
11227
  stroke-width: 1;
10939
- opacity: 0.6;
10940
11228
  }
10941
11229
 
10942
- .st-bulletChart__range {
10943
- fill: var(--st-semantic-data-category1);
11230
+ .st-paretoChart__tickLabel,
11231
+ .st-paretoChart__categoryLabel,
11232
+ .st-paretoChart__percentLabel {
11233
+ fill: var(--st-component-paretoChart-labelColor, var(--st-semantic-text-secondary));
11234
+ font-size: 0.6875rem;
10944
11235
  }
10945
11236
 
10946
- .st-bulletChart__bar {
11237
+ .st-paretoChart__bar {
10947
11238
  cursor: pointer;
10948
- fill: var(--st-semantic-text-secondary);
10949
- transition: opacity 120ms ease;
11239
+ transition: opacity var(--st-motion-fast, 120ms) var(--st-motion-easing, ease);
11240
+ }
11241
+
11242
+ .st-paretoChart__bar:hover {
11243
+ opacity: 0.82;
10950
11244
  }
10951
11245
 
10952
- .st-bulletChart__bar:hover {
10953
- opacity: 0.75;
10954
- }
11246
+ .st-paretoChart__bar--category1 { fill: var(--st-semantic-data-category1); }
11247
+ .st-paretoChart__bar--category2 { fill: var(--st-semantic-data-category2); }
11248
+ .st-paretoChart__bar--category3 { fill: var(--st-semantic-data-category3); }
11249
+ .st-paretoChart__bar--category4 { fill: var(--st-semantic-data-category4); }
11250
+ .st-paretoChart__bar--category5 { fill: var(--st-semantic-data-category5); }
11251
+ .st-paretoChart__bar--category6 { fill: var(--st-semantic-data-category6); }
11252
+ .st-paretoChart__bar--category7 { fill: var(--st-semantic-data-category7); }
11253
+ .st-paretoChart__bar--category8 { fill: var(--st-semantic-data-category8); }
10955
11254
 
10956
- @media (prefers-reduced-motion: reduce) {
10957
- .st-bulletChart__bar {
10958
- transition: none;
10959
- }
11255
+ .st-paretoChart__cumLine {
11256
+ stroke: var(--st-semantic-action-primary, var(--st-semantic-border-interactive));
11257
+ stroke-width: 2;
10960
11258
  }
10961
11259
 
10962
- .st-bulletChart__target {
10963
- stroke: var(--st-semantic-text-primary, currentColor);
10964
- stroke-width: 2.5;
11260
+ .st-paretoChart__cumDot {
11261
+ cursor: pointer;
11262
+ fill: var(--st-semantic-action-primary, var(--st-semantic-border-interactive));
11263
+ transition: opacity var(--st-motion-fast, 120ms) var(--st-motion-easing, ease);
10965
11264
  }
10966
11265
 
10967
- .st-bulletChart__tickLabel,
10968
- .st-bulletChart__categoryLabel {
10969
- fill: var(--st-semantic-text-secondary);
10970
- font-size: 0.6875rem;
11266
+ .st-paretoChart__cumDot:hover {
11267
+ opacity: 0.82;
10971
11268
  }
10972
11269
 
10973
- .st-bulletChart__tooltip {
10974
- background: var(--st-semantic-surface-inverse);
11270
+ .st-paretoChart__tooltip {
11271
+ background: var(--st-component-paretoChart-tooltipBackground, var(--st-semantic-surface-inverse));
10975
11272
  border-radius: var(--st-radius-sm, 0.25rem);
10976
- color: var(--st-semantic-text-inverse);
11273
+ color: var(--st-component-paretoChart-tooltipText, var(--st-semantic-text-inverse));
10977
11274
  display: inline-flex;
10978
11275
  flex-direction: column;
10979
11276
  font-size: 0.75rem;
@@ -10987,14 +11284,21 @@
10987
11284
  z-index: 1;
10988
11285
  }
10989
11286
 
10990
- .st-bulletChart__tooltipLabel {
11287
+ .st-paretoChart__tooltipLabel {
10991
11288
  font-weight: 600;
10992
11289
  }
10993
11290
 
10994
- .st-bulletChart__tooltipValue {
11291
+ .st-paretoChart__tooltipValue {
10995
11292
  opacity: 0.85;
10996
11293
  }
10997
11294
 
11295
+ @media (prefers-reduced-motion: reduce) {
11296
+ .st-paretoChart__bar,
11297
+ .st-paretoChart__cumDot {
11298
+ transition: none;
11299
+ }
11300
+ }
11301
+
10998
11302
  /* ── MarimekkoChart (lot-3) ── */
10999
11303
  .st-marimekkoChart {
11000
11304
  color: var(--st-semantic-text-secondary);
@@ -12175,229 +12479,32 @@
12175
12479
  border: 0;
12176
12480
  border-radius: 50%;
12177
12481
  color: inherit;
12178
- cursor: pointer;
12179
- display: inline-flex;
12180
- font: inherit;
12181
- font-size: 1em;
12182
- height: 1.25em;
12183
- justify-content: center;
12184
- line-height: 1;
12185
- margin-inline-start: 0.0625rem;
12186
- padding: 0;
12187
- transition: background-color var(--st-motion-fast, 120ms) var(--st-motion-easing, ease);
12188
- width: 1.25em;
12189
- }
12190
-
12191
- .st-selectionChip__clear:hover:not(:disabled) {
12192
- background: var(--st-semantic-surface-subtle, #f1f5f9);
12193
- }
12194
-
12195
- .st-selectionChip__clear:focus-visible {
12196
- outline: 2px solid currentColor;
12197
- outline-offset: 1px;
12198
- }
12199
-
12200
- .st-selectionChip__clear:disabled { cursor: var(--st-cursor-disabled, not-allowed); }
12201
-
12202
- @media (prefers-reduced-motion: reduce) {
12203
- .st-selectionChip__clear { transition: none; }
12204
- }
12205
-
12206
- /* ── LollipopChart ── */
12207
- .st-lollipopChart {
12208
- color: var(--st-semantic-text-secondary);
12209
- display: block;
12210
- font-family: inherit;
12211
- position: relative;
12212
- width: 100%;
12213
- }
12214
-
12215
- .st-lollipopChart svg {
12216
- display: block;
12217
- overflow: visible;
12218
- }
12219
-
12220
- .st-lollipopChart__visual {
12221
- display: block;
12222
- }
12223
-
12224
- .st-lollipopChart__grid {
12225
- stroke: var(--st-component-lollipopChart-gridStroke, var(--st-semantic-border-subtle));
12226
- stroke-dasharray: 2 3;
12227
- stroke-width: 1;
12228
- opacity: 0.7;
12229
- }
12230
-
12231
- .st-lollipopChart__axis {
12232
- stroke: var(--st-component-lollipopChart-axisStroke, var(--st-semantic-border-subtle));
12233
- stroke-width: 1;
12234
- }
12235
-
12236
- .st-lollipopChart__tickLabel,
12237
- .st-lollipopChart__categoryLabel {
12238
- fill: var(--st-component-lollipopChart-labelColor, var(--st-semantic-text-secondary));
12239
- font-size: 0.6875rem;
12240
- }
12241
-
12242
- .st-lollipopChart__valueLabel {
12243
- font-size: 0.625rem;
12244
- font-weight: 600;
12245
- }
12246
-
12247
- .st-lollipopChart__stem {
12248
- stroke: var(--st-semantic-border-interactive, var(--st-semantic-border-subtle));
12249
- stroke-width: 1.5;
12250
- }
12251
-
12252
- .st-lollipopChart__dot {
12253
- cursor: pointer;
12254
- transition: opacity var(--st-motion-fast, 120ms) var(--st-motion-easing, ease);
12255
- }
12256
-
12257
- .st-lollipopChart__dot:hover {
12258
- opacity: 0.82;
12259
- }
12260
-
12261
- .st-lollipopChart__dot--category1 { fill: var(--st-semantic-data-category1); }
12262
- .st-lollipopChart__dot--category2 { fill: var(--st-semantic-data-category2); }
12263
- .st-lollipopChart__dot--category3 { fill: var(--st-semantic-data-category3); }
12264
- .st-lollipopChart__dot--category4 { fill: var(--st-semantic-data-category4); }
12265
- .st-lollipopChart__dot--category5 { fill: var(--st-semantic-data-category5); }
12266
- .st-lollipopChart__dot--category6 { fill: var(--st-semantic-data-category6); }
12267
- .st-lollipopChart__dot--category7 { fill: var(--st-semantic-data-category7); }
12268
- .st-lollipopChart__dot--category8 { fill: var(--st-semantic-data-category8); }
12269
-
12270
- .st-lollipopChart__tooltip {
12271
- background: var(--st-component-lollipopChart-tooltipBackground, var(--st-semantic-surface-inverse));
12272
- border-radius: var(--st-radius-sm, 0.25rem);
12273
- color: var(--st-component-lollipopChart-tooltipText, var(--st-semantic-text-inverse));
12274
- display: inline-flex;
12275
- flex-direction: column;
12276
- font-size: 0.75rem;
12277
- gap: 0.125rem;
12278
- line-height: 1.2;
12279
- padding: 0.375rem 0.5rem;
12280
- pointer-events: none;
12281
- position: absolute;
12282
- transform: translate(-50%, calc(-100% - 8px));
12283
- white-space: nowrap;
12284
- z-index: 1;
12285
- }
12286
-
12287
- .st-lollipopChart__tooltipLabel {
12288
- font-weight: 600;
12289
- }
12290
-
12291
- .st-lollipopChart__tooltipValue {
12292
- opacity: 0.85;
12293
- }
12294
-
12295
- @media (prefers-reduced-motion: reduce) {
12296
- .st-lollipopChart__dot {
12297
- transition: none;
12298
- }
12299
- }
12300
-
12301
- /* ── ParetoChart ── */
12302
- .st-paretoChart {
12303
- color: var(--st-semantic-text-secondary);
12304
- display: block;
12305
- font-family: inherit;
12306
- position: relative;
12307
- width: 100%;
12308
- }
12309
-
12310
- .st-paretoChart svg {
12311
- display: block;
12312
- overflow: visible;
12313
- }
12314
-
12315
- .st-paretoChart__visual {
12316
- display: block;
12317
- }
12318
-
12319
- .st-paretoChart__grid {
12320
- stroke: var(--st-component-paretoChart-gridStroke, var(--st-semantic-border-subtle));
12321
- stroke-dasharray: 2 3;
12322
- stroke-width: 1;
12323
- opacity: 0.7;
12324
- }
12325
-
12326
- .st-paretoChart__axis {
12327
- stroke: var(--st-component-paretoChart-axisStroke, var(--st-semantic-border-subtle));
12328
- stroke-width: 1;
12329
- }
12330
-
12331
- .st-paretoChart__tickLabel,
12332
- .st-paretoChart__categoryLabel,
12333
- .st-paretoChart__percentLabel {
12334
- fill: var(--st-component-paretoChart-labelColor, var(--st-semantic-text-secondary));
12335
- font-size: 0.6875rem;
12336
- }
12337
-
12338
- .st-paretoChart__bar {
12339
- cursor: pointer;
12340
- transition: opacity var(--st-motion-fast, 120ms) var(--st-motion-easing, ease);
12341
- }
12342
-
12343
- .st-paretoChart__bar:hover {
12344
- opacity: 0.82;
12345
- }
12346
-
12347
- .st-paretoChart__bar--category1 { fill: var(--st-semantic-data-category1); }
12348
- .st-paretoChart__bar--category2 { fill: var(--st-semantic-data-category2); }
12349
- .st-paretoChart__bar--category3 { fill: var(--st-semantic-data-category3); }
12350
- .st-paretoChart__bar--category4 { fill: var(--st-semantic-data-category4); }
12351
- .st-paretoChart__bar--category5 { fill: var(--st-semantic-data-category5); }
12352
- .st-paretoChart__bar--category6 { fill: var(--st-semantic-data-category6); }
12353
- .st-paretoChart__bar--category7 { fill: var(--st-semantic-data-category7); }
12354
- .st-paretoChart__bar--category8 { fill: var(--st-semantic-data-category8); }
12355
-
12356
- .st-paretoChart__cumLine {
12357
- stroke: var(--st-semantic-action-primary, var(--st-semantic-border-interactive));
12358
- stroke-width: 2;
12359
- }
12360
-
12361
- .st-paretoChart__cumDot {
12362
- cursor: pointer;
12363
- fill: var(--st-semantic-action-primary, var(--st-semantic-border-interactive));
12364
- transition: opacity var(--st-motion-fast, 120ms) var(--st-motion-easing, ease);
12365
- }
12366
-
12367
- .st-paretoChart__cumDot:hover {
12368
- opacity: 0.82;
12369
- }
12370
-
12371
- .st-paretoChart__tooltip {
12372
- background: var(--st-component-paretoChart-tooltipBackground, var(--st-semantic-surface-inverse));
12373
- border-radius: var(--st-radius-sm, 0.25rem);
12374
- color: var(--st-component-paretoChart-tooltipText, var(--st-semantic-text-inverse));
12375
- display: inline-flex;
12376
- flex-direction: column;
12377
- font-size: 0.75rem;
12378
- gap: 0.125rem;
12379
- line-height: 1.2;
12380
- padding: 0.375rem 0.5rem;
12381
- pointer-events: none;
12382
- position: absolute;
12383
- transform: translate(-50%, calc(-100% - 8px));
12384
- white-space: nowrap;
12385
- z-index: 1;
12482
+ cursor: pointer;
12483
+ display: inline-flex;
12484
+ font: inherit;
12485
+ font-size: 1em;
12486
+ height: 1.25em;
12487
+ justify-content: center;
12488
+ line-height: 1;
12489
+ margin-inline-start: 0.0625rem;
12490
+ padding: 0;
12491
+ transition: background-color var(--st-motion-fast, 120ms) var(--st-motion-easing, ease);
12492
+ width: 1.25em;
12386
12493
  }
12387
12494
 
12388
- .st-paretoChart__tooltipLabel {
12389
- font-weight: 600;
12495
+ .st-selectionChip__clear:hover:not(:disabled) {
12496
+ background: var(--st-semantic-surface-subtle, #f1f5f9);
12390
12497
  }
12391
12498
 
12392
- .st-paretoChart__tooltipValue {
12393
- opacity: 0.85;
12499
+ .st-selectionChip__clear:focus-visible {
12500
+ outline: 2px solid currentColor;
12501
+ outline-offset: 1px;
12394
12502
  }
12395
12503
 
12504
+ .st-selectionChip__clear:disabled { cursor: var(--st-cursor-disabled, not-allowed); }
12505
+
12396
12506
  @media (prefers-reduced-motion: reduce) {
12397
- .st-paretoChart__bar,
12398
- .st-paretoChart__cumDot {
12399
- transition: none;
12400
- }
12507
+ .st-selectionChip__clear { transition: none; }
12401
12508
  }
12402
12509
 
12403
12510
  /* --- Shell : AppHeader / LanguageToggle / IdentityMenu (calque sentropic) --- */
@@ -17048,13 +17155,12 @@
17048
17155
  line-height: 1.4;
17049
17156
  }
17050
17157
 
17051
- /* ============================================================================
17052
- NavSystem wave 1 — Vue parity (Overline, StatusDot, NavActionStack) +
17053
- Checkbox (description/trailing) & Search (fluid) extensions.
17054
- Token-only, AUCUN hex en dur — chaque var retombe sur le littéral de base.
17055
- ========================================================================== */
17158
+ /* ===========================================================================
17159
+ Wave 1 NavSystem — Overline, StatusDot, NavActionStack + Checkbox/Search ext.
17160
+ Token-only (P-C : anatomie par thème). Aucun hex littéral.
17161
+ =========================================================================== */
17056
17162
 
17057
- /* Overline étiquette de section discrète en small-caps. */
17163
+ /* --- Overline ------------------------------------------------------------ */
17058
17164
  .st-overline {
17059
17165
  color: var(--st-component-overline-color, var(--st-semantic-text-secondary, inherit));
17060
17166
  display: var(--st-component-overline-display, inline-block);
@@ -17067,7 +17173,7 @@
17067
17173
  text-transform: var(--st-component-overline-textTransform, uppercase);
17068
17174
  }
17069
17175
 
17070
- /* StatusDot pastille de statut (point coloré + label optionnel). */
17176
+ /* --- StatusDot ----------------------------------------------------------- */
17071
17177
  .st-statusDot {
17072
17178
  align-items: center;
17073
17179
  color: var(--st-semantic-text-primary, inherit);
@@ -17085,6 +17191,8 @@
17085
17191
  flex: none;
17086
17192
  }
17087
17193
 
17194
+ /* Tone background + matching `color` so `currentColor` in the pulse keyframe
17195
+ follows the dot. */
17088
17196
  .st-statusDot__dot--neutral {
17089
17197
  background-color: var(--st-component-statusDot-neutral, var(--st-semantic-text-secondary));
17090
17198
  color: var(--st-component-statusDot-neutral, var(--st-semantic-text-secondary));
@@ -17136,7 +17244,7 @@
17136
17244
  }
17137
17245
  }
17138
17246
 
17139
- /* NavActionStack pile d'actions hiérarchisées + zone sensible. */
17247
+ /* --- NavActionStack ------------------------------------------------------ */
17140
17248
  .st-navActionStack {
17141
17249
  display: flex;
17142
17250
  flex-direction: column;
@@ -17160,6 +17268,7 @@
17160
17268
  align-items: center;
17161
17269
  }
17162
17270
 
17271
+ /* Pleine largeur en pile verticale ; largeur naturelle en rangée. */
17163
17272
  .st-navActionStack--vertical .st-navActionStack__item {
17164
17273
  inline-size: 100%;
17165
17274
  }
@@ -17180,11 +17289,15 @@
17180
17289
  text-transform: var(--st-component-overline-textTransform, uppercase);
17181
17290
  }
17182
17291
 
17292
+ /* La zone sensible est pleine largeur quelle que soit l'orientation. */
17183
17293
  .st-navActionStack .st-navActionStack__dangerAction {
17184
17294
  inline-size: 100%;
17185
17295
  }
17186
17296
 
17187
- /* Checkbox extension — secondary muted description + trailing slot. */
17297
+ /* --- Checkbox extensions (description + trailing) ------------------------- */
17298
+ /* SIGNAL filter row: input + content + trailing count, content fills, trailing
17299
+ pushed to the row end. Top-aligned so the box rides the first text line when a
17300
+ secondary description wraps below the label. */
17188
17301
  .st-choice:has(.st-choice__trailing) {
17189
17302
  align-items: start;
17190
17303
  grid-template-columns: auto 1fr auto;
@@ -17200,14 +17313,472 @@
17200
17313
  justify-content: flex-end;
17201
17314
  }
17202
17315
 
17316
+ /* Secondary muted description under the label (SIGNAL filter hint). */
17203
17317
  .st-choice__description {
17204
17318
  color: var(--st-semantic-text-secondary);
17205
17319
  font-size: 0.8125rem;
17206
17320
  line-height: 1.4;
17207
17321
  }
17208
17322
 
17209
- /* Search extension fluid lifts the field width cap. */
17210
- .st-search.st-search--fluid {
17323
+ /* --- Search extension (fluid) -------------------------------------------- */
17324
+ /* Fluid mode: lift the width cap so the field fills a narrow drawer/rail. */
17325
+ .st-search--fluid {
17211
17326
  max-width: none;
17212
17327
  width: 100%;
17213
17328
  }
17329
+
17330
+ /* ===========================================================================
17331
+ NavItem — canonical nav-row anatomy (wave 2). Composes SelectableRow +
17332
+ ColorSwatch / StatusDot (head) + Badge (count). Token-only, no raw hex.
17333
+ =========================================================================== */
17334
+ .st-navItem {
17335
+ display: block;
17336
+ inline-size: 100%;
17337
+ }
17338
+
17339
+ /* Depth INDENTATION: offset the composed SelectableRow (its head included) by an
17340
+ inline-start padding ADDITIVE to its base padding (0.75rem). The
17341
+ --st-navItem-indent var is set on the wrapper and inherited by the row. */
17342
+ .st-navItem .st-selectableRow {
17343
+ padding-inline-start: calc(0.75rem + var(--st-navItem-indent, 0rem));
17344
+ }
17345
+
17346
+ /* Typographic scale: weight AND size DECREASE with depth so the hierarchy reads
17347
+ without a colour cue. Each token falls back to a literal → a silent theme
17348
+ renders byte-identically. */
17349
+ .st-navItem--depth0 .st-navItem__title {
17350
+ font-size: var(--st-component-navItem-depth0-fontSize, 0.875rem);
17351
+ font-weight: var(--st-component-navItem-depth0-fontWeight, 600);
17352
+ }
17353
+ .st-navItem--depth1 .st-navItem__title {
17354
+ font-size: var(--st-component-navItem-depth1-fontSize, 0.8125rem);
17355
+ font-weight: var(--st-component-navItem-depth1-fontWeight, 500);
17356
+ }
17357
+ .st-navItem--depth2 .st-navItem__title {
17358
+ font-size: var(--st-component-navItem-depth2-fontSize, 0.8125rem);
17359
+ font-weight: var(--st-component-navItem-depth2-fontWeight, 400);
17360
+ }
17361
+ /* L3 — muted: same metric as L2, dimmed colour. */
17362
+ .st-navItem--depth3 .st-navItem__title {
17363
+ font-size: var(--st-component-navItem-depth3-fontSize, 0.8125rem);
17364
+ font-weight: var(--st-component-navItem-depth3-fontWeight, 400);
17365
+ color: var(--st-component-navItem-depth3-color, var(--st-semantic-text-muted));
17366
+ }
17367
+
17368
+ .st-navItem__title {
17369
+ display: block;
17370
+ min-width: 0;
17371
+ overflow: hidden;
17372
+ text-overflow: ellipsis;
17373
+ white-space: nowrap;
17374
+ }
17375
+
17376
+ .st-navItem__caption {
17377
+ display: block;
17378
+ min-width: 0;
17379
+ overflow: hidden;
17380
+ text-overflow: ellipsis;
17381
+ white-space: nowrap;
17382
+ }
17383
+
17384
+ /* Semantic ROW status: tints the title with the matching feedback. A "HTTP 403"
17385
+ error becomes a real semantic red. Each tone falls back to its
17386
+ --st-semantic-feedback-* token. */
17387
+ .st-navItem--status-info .st-navItem__title {
17388
+ color: var(--st-component-navItem-status-info, var(--st-semantic-feedback-info));
17389
+ }
17390
+ .st-navItem--status-success .st-navItem__title {
17391
+ color: var(--st-component-navItem-status-success, var(--st-semantic-feedback-success));
17392
+ }
17393
+ .st-navItem--status-warning .st-navItem__title {
17394
+ color: var(--st-component-navItem-status-warning, var(--st-semantic-feedback-warning));
17395
+ }
17396
+ .st-navItem--status-error .st-navItem__title {
17397
+ color: var(--st-component-navItem-status-error, var(--st-semantic-feedback-error));
17398
+ }
17399
+
17400
+ /* Token-only divider: a fine full-width rule after the row. */
17401
+ .st-navItem__divider {
17402
+ border: 0;
17403
+ border-top: var(--st-border-width-thin, 1px) solid
17404
+ var(--st-component-navItem-dividerColor, var(--st-semantic-border-subtle, rgba(0, 0, 0, 0.08)));
17405
+ margin-block: var(--st-component-navItem-dividerGap, 0.375rem);
17406
+ }
17407
+
17408
+ /* ===========================================================================
17409
+ NavSection — group header of a rail / drawer. Composes Overline (label),
17410
+ Badge (count), Collapsible (disclosure). Token-only scoped.
17411
+ =========================================================================== */
17412
+ .st-navSection {
17413
+ inline-size: 100%;
17414
+ }
17415
+
17416
+ .st-navSection__header {
17417
+ align-items: baseline;
17418
+ display: flex;
17419
+ gap: var(--st-spacing-2, 0.5rem);
17420
+ justify-content: space-between;
17421
+ padding-block: var(--st-component-navSection-headerPaddingBlock, 0.375rem);
17422
+ }
17423
+
17424
+ /* The label and its count form one block; the circle Badge aligns to the
17425
+ vertical centre of the small-caps text. */
17426
+ .st-navSection .st-navSection__label {
17427
+ align-items: center;
17428
+ display: inline-flex;
17429
+ gap: var(--st-spacing-2, 0.5rem);
17430
+ }
17431
+
17432
+ .st-navSection .st-navSection__count {
17433
+ flex: 0 0 auto;
17434
+ }
17435
+
17436
+ /* Section-action focus: anchored right, does not grow. */
17437
+ .st-navSection__action {
17438
+ align-items: center;
17439
+ display: inline-flex;
17440
+ flex: 0 0 auto;
17441
+ }
17442
+
17443
+ .st-navSection__body {
17444
+ display: block;
17445
+ }
17446
+
17447
+ /* NavSystem wave 3 primitives */
17448
+ .st-appShell {
17449
+ background: var(--st-component-appShell-surface, var(--st-semantic-surface-default));
17450
+ color: var(--st-semantic-text-primary);
17451
+ min-block-size: 100vh;
17452
+ }
17453
+
17454
+ .st-appShell--workspace {
17455
+ display: grid;
17456
+ grid-template-areas:
17457
+ "top top top top"
17458
+ "rail nav main context"
17459
+ "bottom bottom bottom bottom";
17460
+ grid-template-columns: auto minmax(0, var(--st-component-navShell-width, 18rem)) minmax(0, 1fr) minmax(0, var(--st-component-contextPanel-width, 20rem));
17461
+ grid-template-rows: auto minmax(0, 1fr) auto;
17462
+ position: relative;
17463
+ }
17464
+
17465
+ .st-appShell--workspace:has(.st-appShell__utilityPanel)[data-utility-mode="reserve"]:not([data-utility-side]),
17466
+ .st-appShell--workspace:has(.st-appShell__utilityPanel)[data-utility-mode="reserve"][data-utility-side="right"] {
17467
+ grid-template-areas:
17468
+ "top top top top top"
17469
+ "rail nav main context utility"
17470
+ "bottom bottom bottom bottom bottom";
17471
+ grid-template-columns: auto minmax(0, var(--st-component-navShell-width, 18rem)) minmax(0, 1fr) minmax(0, var(--st-component-contextPanel-width, 20rem)) minmax(0, var(--st-component-utilityPanel-width, 24rem));
17472
+ grid-template-rows: auto minmax(0, 1fr) auto;
17473
+ }
17474
+
17475
+ .st-appShell--workspace:has(.st-appShell__utilityPanel)[data-utility-mode="reserve"][data-utility-side="left"] {
17476
+ grid-template-areas:
17477
+ "top top top top top"
17478
+ "rail nav utility main context"
17479
+ "bottom bottom bottom bottom bottom";
17480
+ grid-template-columns: auto minmax(0, var(--st-component-navShell-width, 18rem)) minmax(0, var(--st-component-utilityPanel-width, 24rem)) minmax(0, 1fr) minmax(0, var(--st-component-contextPanel-width, 20rem));
17481
+ grid-template-rows: auto minmax(0, 1fr) auto;
17482
+ }
17483
+
17484
+ .st-appShell--workspace:has(.st-appShell__utilityPanel)[data-utility-mode="reserve"][data-utility-side="bottom"] {
17485
+ grid-template-areas:
17486
+ "top top top top"
17487
+ "rail nav main context"
17488
+ "rail nav utility utility"
17489
+ "bottom bottom bottom bottom";
17490
+ grid-template-columns: auto minmax(0, var(--st-component-navShell-width, 18rem)) minmax(0, 1fr) minmax(0, var(--st-component-contextPanel-width, 20rem));
17491
+ grid-template-rows: auto minmax(0, 1fr) auto auto;
17492
+ }
17493
+
17494
+ .st-appShell__topChrome { grid-area: top; }
17495
+ .st-appShell__primaryRail { grid-area: rail; min-block-size: 0; }
17496
+ .st-appShell__navigationPanel { grid-area: nav; min-block-size: 0; overflow: hidden; }
17497
+ .st-appShell__main { grid-area: main; min-block-size: 0; min-inline-size: 0; overflow: auto; }
17498
+ .st-appShell__contextPanel { grid-area: context; min-block-size: 0; overflow: hidden; }
17499
+ .st-appShell__utilityPanel { grid-area: utility; inline-size: 100%; min-block-size: 0; overflow: hidden; }
17500
+ .st-appShell__bottomPanel { grid-area: bottom; }
17501
+
17502
+ .st-appShell[data-utility-mode="overlay"] .st-appShell__utilityPanel,
17503
+ .st-appShell[data-utility-mode="floating"] .st-appShell__utilityPanel {
17504
+ box-shadow: var(--st-component-appShell-utilityShadow, 0 18px 45px rgb(15 23 42 / 0.18));
17505
+ max-block-size: 100%;
17506
+ position: absolute;
17507
+ z-index: var(--st-component-appShell-utility-zIndex, 40);
17508
+ }
17509
+
17510
+ .st-appShell[data-utility-mode="overlay"][data-utility-side="right"] .st-appShell__utilityPanel,
17511
+ .st-appShell[data-utility-mode="floating"][data-utility-side="right"] .st-appShell__utilityPanel {
17512
+ block-size: 100%;
17513
+ inline-size: min(100%, var(--st-component-utilityPanel-width, 24rem));
17514
+ inset-block: 0;
17515
+ inset-inline-end: 0;
17516
+ }
17517
+
17518
+ .st-appShell[data-utility-mode="overlay"][data-utility-side="left"] .st-appShell__utilityPanel,
17519
+ .st-appShell[data-utility-mode="floating"][data-utility-side="left"] .st-appShell__utilityPanel {
17520
+ block-size: 100%;
17521
+ inline-size: min(100%, var(--st-component-utilityPanel-width, 24rem));
17522
+ inset-block: 0;
17523
+ inset-inline-start: 0;
17524
+ }
17525
+
17526
+ .st-appShell[data-utility-mode="overlay"][data-utility-side="bottom"] .st-appShell__utilityPanel,
17527
+ .st-appShell[data-utility-mode="floating"][data-utility-side="bottom"] .st-appShell__utilityPanel {
17528
+ block-size: var(--st-component-appShell-utilityBottomHeight, min(40%, 20rem));
17529
+ inline-size: auto;
17530
+ inset-block-end: 0;
17531
+ inset-inline: 0;
17532
+ }
17533
+
17534
+ .st-appShell[data-utility-mode="floating"] .st-appShell__utilityPanel {
17535
+ border: 1px solid var(--st-component-appShell-border, var(--st-semantic-border-subtle));
17536
+ border-radius: var(--st-radius-lg, 0.75rem);
17537
+ margin: var(--st-spacing-4, 1rem);
17538
+ }
17539
+
17540
+ .st-navRail {
17541
+ align-items: stretch;
17542
+ background: var(--st-component-navRail-surface, var(--st-semantic-surface-raised));
17543
+ color: var(--st-semantic-text-primary);
17544
+ display: grid;
17545
+ grid-template-rows: 1fr auto;
17546
+ block-size: 100%;
17547
+ inline-size: var(--st-component-navRail-width, 4.5rem);
17548
+ padding: var(--st-spacing-2, 0.5rem);
17549
+ }
17550
+
17551
+ .st-navRail__items,
17552
+ .st-navRail__footer {
17553
+ align-items: center;
17554
+ display: flex;
17555
+ flex-direction: column;
17556
+ gap: var(--st-spacing-2, 0.5rem);
17557
+ }
17558
+
17559
+ .st-navRail__items {
17560
+ min-block-size: 0;
17561
+ overflow-y: auto;
17562
+ }
17563
+
17564
+ .st-navRail__item {
17565
+ align-items: center;
17566
+ background: transparent;
17567
+ border: 1px solid transparent;
17568
+ border-radius: var(--st-radius-md, 0.375rem);
17569
+ color: var(--st-semantic-text-secondary);
17570
+ cursor: pointer;
17571
+ display: inline-flex;
17572
+ flex-direction: column;
17573
+ font: inherit;
17574
+ gap: var(--st-spacing-1, 0.25rem);
17575
+ inline-size: 100%;
17576
+ min-block-size: 3.25rem;
17577
+ padding: var(--st-spacing-2, 0.5rem);
17578
+ position: relative;
17579
+ text-align: center;
17580
+ text-decoration: none;
17581
+ }
17582
+
17583
+ .st-navRail__item:hover,
17584
+ .st-navRail__item--active {
17585
+ background: var(--st-component-navRail-activeBackground, var(--st-semantic-surface-subtle));
17586
+ color: var(--st-semantic-text-primary);
17587
+ }
17588
+
17589
+ .st-navRail__item--active {
17590
+ border-color: var(--st-component-navRail-activeBorder, var(--st-semantic-border-strong));
17591
+ }
17592
+
17593
+ .st-navRail__item:disabled {
17594
+ cursor: not-allowed;
17595
+ opacity: 0.5;
17596
+ }
17597
+
17598
+ .st-navRail__label {
17599
+ font-size: 0.6875rem;
17600
+ font-weight: 650;
17601
+ line-height: 1.1;
17602
+ }
17603
+
17604
+ .st-navRail__badge {
17605
+ background: var(--st-component-navRail-badgeBackground, var(--st-semantic-surface-inverse));
17606
+ border-radius: 999px;
17607
+ color: var(--st-semantic-text-inverse);
17608
+ font-size: 0.625rem;
17609
+ line-height: 1;
17610
+ padding: 0.125rem 0.3rem;
17611
+ position: absolute;
17612
+ right: 0.25rem;
17613
+ top: 0.25rem;
17614
+ }
17615
+
17616
+ .st-navShell {
17617
+ background: var(--st-component-navShell-surface, var(--st-semantic-surface-raised));
17618
+ border-inline-end: 1px solid var(--st-component-navShell-border, var(--st-semantic-border-subtle));
17619
+ color: var(--st-semantic-text-primary);
17620
+ display: grid;
17621
+ grid-template-rows: auto auto minmax(0, 1fr) auto;
17622
+ min-block-size: 0;
17623
+ }
17624
+
17625
+ .st-navShell--drawer {
17626
+ border-inline-end: 0;
17627
+ }
17628
+
17629
+ .st-navShell__header {
17630
+ align-items: start;
17631
+ border-block-end: 1px solid var(--st-component-navShell-border, var(--st-semantic-border-subtle));
17632
+ display: flex;
17633
+ gap: var(--st-spacing-2, 0.5rem);
17634
+ padding: var(--st-spacing-4, 1rem);
17635
+ }
17636
+
17637
+ .st-navShell__back {
17638
+ align-items: center;
17639
+ background: transparent;
17640
+ border: 1px solid var(--st-semantic-border-subtle);
17641
+ border-radius: 999px;
17642
+ color: inherit;
17643
+ cursor: pointer;
17644
+ display: inline-flex;
17645
+ block-size: 2rem;
17646
+ inline-size: 2rem;
17647
+ justify-content: center;
17648
+ }
17649
+
17650
+ .st-navShell__heading {
17651
+ display: grid;
17652
+ gap: var(--st-spacing-1, 0.25rem);
17653
+ }
17654
+
17655
+ .st-navShell__title,
17656
+ .st-navShell__subtitle {
17657
+ margin: 0;
17658
+ }
17659
+
17660
+ .st-navShell__title {
17661
+ font-weight: 700;
17662
+ }
17663
+
17664
+ .st-navShell__subtitle {
17665
+ color: var(--st-semantic-text-secondary);
17666
+ font-size: 0.875rem;
17667
+ }
17668
+
17669
+ .st-navShell__search {
17670
+ border-block-end: 1px solid var(--st-component-navShell-border, var(--st-semantic-border-subtle));
17671
+ padding: var(--st-spacing-3, 0.75rem) var(--st-spacing-4, 1rem);
17672
+ }
17673
+
17674
+ .st-navShell__body {
17675
+ min-block-size: 0;
17676
+ overflow: auto;
17677
+ padding: var(--st-spacing-3, 0.75rem);
17678
+ }
17679
+
17680
+ .st-navShell__footer {
17681
+ border-block-start: 1px solid var(--st-component-navShell-border, var(--st-semantic-border-subtle));
17682
+ padding: var(--st-spacing-3, 0.75rem) var(--st-spacing-4, 1rem);
17683
+ }
17684
+
17685
+ .st-contextPanel,
17686
+ .st-utilityPanel {
17687
+ background: var(--st-component-panel-surface, var(--st-semantic-surface-raised));
17688
+ color: var(--st-semantic-text-primary);
17689
+ display: grid;
17690
+ min-block-size: 0;
17691
+ }
17692
+
17693
+ .st-contextPanel {
17694
+ border-inline-start: 1px solid var(--st-component-panel-border, var(--st-semantic-border-subtle));
17695
+ grid-template-rows: auto minmax(0, 1fr) auto;
17696
+ }
17697
+
17698
+ .st-utilityPanel {
17699
+ border-block-start: 1px solid var(--st-component-panel-border, var(--st-semantic-border-subtle));
17700
+ grid-template-rows: auto minmax(0, 1fr);
17701
+ }
17702
+
17703
+ .st-contextPanel--left {
17704
+ border-inline-start: 0;
17705
+ border-inline-end: 1px solid var(--st-component-panel-border, var(--st-semantic-border-subtle));
17706
+ }
17707
+
17708
+ .st-contextPanel__header,
17709
+ .st-utilityPanel__header {
17710
+ align-items: center;
17711
+ border-block-end: 1px solid var(--st-component-panel-border, var(--st-semantic-border-subtle));
17712
+ display: flex;
17713
+ gap: var(--st-spacing-3, 0.75rem);
17714
+ justify-content: space-between;
17715
+ padding: var(--st-spacing-3, 0.75rem) var(--st-spacing-4, 1rem);
17716
+ }
17717
+
17718
+ .st-contextPanel__title,
17719
+ .st-utilityPanel__title {
17720
+ font-weight: 700;
17721
+ margin: 0;
17722
+ }
17723
+
17724
+ .st-contextPanel__body,
17725
+ .st-utilityPanel__body {
17726
+ min-block-size: 0;
17727
+ overflow: auto;
17728
+ padding: var(--st-spacing-4, 1rem);
17729
+ }
17730
+
17731
+ .st-contextPanel__footer {
17732
+ border-block-start: 1px solid var(--st-component-panel-border, var(--st-semantic-border-subtle));
17733
+ padding: var(--st-spacing-3, 0.75rem) var(--st-spacing-4, 1rem);
17734
+ }
17735
+
17736
+ .st-drawer--bottom {
17737
+ align-items: end;
17738
+ justify-content: stretch;
17739
+ }
17740
+
17741
+ .st-drawer--bottom .st-drawer__panel {
17742
+ block-size: min(70vh, var(--st-component-drawer-bottomHeight, 42rem));
17743
+ inline-size: 100%;
17744
+ max-inline-size: none;
17745
+ }
17746
+
17747
+ @media (max-width: 900px) {
17748
+ .st-appShell--workspace {
17749
+ grid-template-areas:
17750
+ "top"
17751
+ "rail"
17752
+ "nav"
17753
+ "main"
17754
+ "context"
17755
+ "utility"
17756
+ "bottom";
17757
+ grid-template-columns: minmax(0, 1fr);
17758
+ grid-template-rows: auto auto auto minmax(0, 1fr) auto auto auto;
17759
+ }
17760
+
17761
+ .st-navRail {
17762
+ block-size: auto;
17763
+ inline-size: 100%;
17764
+ }
17765
+
17766
+ .st-navRail__items,
17767
+ .st-navRail__footer {
17768
+ flex-direction: row;
17769
+ overflow-x: auto;
17770
+ overflow-y: hidden;
17771
+ }
17772
+
17773
+ .st-navRail__item {
17774
+ inline-size: auto;
17775
+ min-inline-size: 4rem;
17776
+ }
17777
+
17778
+ .st-navShell,
17779
+ .st-contextPanel {
17780
+ border-inline-end: 0;
17781
+ border-inline-start: 0;
17782
+ border-block-end: 1px solid var(--st-component-panel-border, var(--st-semantic-border-subtle));
17783
+ }
17784
+ }