@sentropic/design-system-vue 0.11.0 → 0.12.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/dist/styles.css CHANGED
@@ -809,7 +809,7 @@
809
809
  .st-chatMessage--failed .st-chatMessage__bubble {
810
810
  border-color: var(
811
811
  --st-component-chatMessage-errorBorder,
812
- var(--st-semantic-feedback-danger, #b91c1c)
812
+ var(--st-semantic-feedback-error, #b91c1c)
813
813
  );
814
814
  }
815
815
 
@@ -2944,7 +2944,7 @@
2944
2944
  }
2945
2945
 
2946
2946
  .st-iconButton--danger {
2947
- color: var(--st-semantic-feedback-danger, #b91c1c);
2947
+ color: var(--st-semantic-feedback-error, #b91c1c);
2948
2948
  }
2949
2949
 
2950
2950
  .st-iconButton:hover:not(:disabled) {
@@ -8278,3 +8278,722 @@
8278
8278
  gap: var(--st-spacing-1, 0.25rem);
8279
8279
  width: 100%;
8280
8280
  }
8281
+
8282
+ /* ---------------------------------------------------------------------------
8283
+ KpiCard — single metric card with optional delta + sparkline.
8284
+ --------------------------------------------------------------------------- */
8285
+ .st-kpiCard {
8286
+ background: var(--st-component-card-background, var(--st-semantic-surface-raised));
8287
+ border-width: var(--st-component-card-anatomy-shape-borderWidth, 1px);
8288
+ border-style: var(--st-component-card-anatomy-shape-borderStyle, solid);
8289
+ border-color: var(--st-component-card-border, var(--st-semantic-border-subtle));
8290
+ border-radius: var(--st-component-card-anatomy-shape-radius, 0.5rem);
8291
+ box-shadow: var(--st-component-card-shadow, 0 1px 2px rgb(15 23 42 / 0.08));
8292
+ color: var(--st-semantic-text-primary);
8293
+ display: flex;
8294
+ flex-direction: column;
8295
+ gap: var(--st-spacing-2, 0.5rem);
8296
+ padding: var(--st-spacing-4, 1rem);
8297
+ }
8298
+
8299
+ .st-kpiCard--sm {
8300
+ gap: var(--st-spacing-1, 0.25rem);
8301
+ padding: var(--st-spacing-3, 0.75rem);
8302
+ }
8303
+
8304
+ .st-kpiCard--lg {
8305
+ gap: var(--st-spacing-3, 0.75rem);
8306
+ padding: var(--st-spacing-6, 1.5rem);
8307
+ }
8308
+
8309
+ /* Accent catégoriel : pastille inline discrète devant l'étiquette.
8310
+ (Pas de liseré gauche sur un conteneur arrondi — anti-pattern proscrit.) */
8311
+ .st-kpiCard__label {
8312
+ align-items: center;
8313
+ color: var(--st-semantic-text-secondary);
8314
+ display: flex;
8315
+ font-size: 0.8125rem;
8316
+ font-weight: 500;
8317
+ gap: var(--st-spacing-2, 0.5rem);
8318
+ line-height: 1.25;
8319
+ margin: 0;
8320
+ }
8321
+
8322
+ .st-kpiCard__swatch {
8323
+ background: var(--st-kpiCard-accent, var(--st-semantic-data-category1));
8324
+ border-radius: var(--st-radius-full, 9999px);
8325
+ display: inline-block;
8326
+ flex: 0 0 auto;
8327
+ height: 0.5rem;
8328
+ width: 0.5rem;
8329
+ }
8330
+
8331
+ .st-kpiCard--lg .st-kpiCard__label {
8332
+ font-size: 0.875rem;
8333
+ }
8334
+
8335
+ .st-kpiCard__value {
8336
+ align-items: baseline;
8337
+ color: var(--st-semantic-text-primary);
8338
+ display: flex;
8339
+ flex-wrap: wrap;
8340
+ gap: var(--st-spacing-1, 0.25rem);
8341
+ margin: 0;
8342
+ }
8343
+
8344
+ .st-kpiCard__number {
8345
+ font-size: 1.5rem;
8346
+ font-weight: 700;
8347
+ letter-spacing: 0;
8348
+ line-height: 1.1;
8349
+ }
8350
+
8351
+ .st-kpiCard--sm .st-kpiCard__number {
8352
+ font-size: 1.25rem;
8353
+ }
8354
+
8355
+ .st-kpiCard--lg .st-kpiCard__number {
8356
+ font-size: 2.25rem;
8357
+ }
8358
+
8359
+ .st-kpiCard__unit {
8360
+ color: var(--st-semantic-text-secondary);
8361
+ font-size: 0.875rem;
8362
+ font-weight: 500;
8363
+ }
8364
+
8365
+ .st-kpiCard__footer {
8366
+ align-items: center;
8367
+ display: flex;
8368
+ flex-wrap: wrap;
8369
+ gap: var(--st-spacing-3, 0.75rem);
8370
+ justify-content: space-between;
8371
+ }
8372
+
8373
+ .st-kpiCard__delta {
8374
+ align-items: center;
8375
+ display: inline-flex;
8376
+ font-size: 0.8125rem;
8377
+ font-weight: 600;
8378
+ gap: var(--st-spacing-1, 0.25rem);
8379
+ line-height: 1;
8380
+ }
8381
+
8382
+ .st-kpiCard__arrow {
8383
+ display: block;
8384
+ flex: 0 0 auto;
8385
+ }
8386
+
8387
+ .st-kpiCard__delta--up {
8388
+ color: var(--st-semantic-feedback-success);
8389
+ }
8390
+
8391
+ .st-kpiCard__delta--down {
8392
+ color: var(--st-semantic-feedback-error);
8393
+ }
8394
+
8395
+ .st-kpiCard__delta--flat {
8396
+ color: var(--st-semantic-text-secondary);
8397
+ }
8398
+
8399
+ .st-kpiCard--category1 { --st-kpiCard-accent: var(--st-semantic-data-category1); }
8400
+ .st-kpiCard--category2 { --st-kpiCard-accent: var(--st-semantic-data-category2); }
8401
+ .st-kpiCard--category3 { --st-kpiCard-accent: var(--st-semantic-data-category3); }
8402
+ .st-kpiCard--category4 { --st-kpiCard-accent: var(--st-semantic-data-category4); }
8403
+ .st-kpiCard--category5 { --st-kpiCard-accent: var(--st-semantic-data-category5); }
8404
+ .st-kpiCard--category6 { --st-kpiCard-accent: var(--st-semantic-data-category6); }
8405
+ .st-kpiCard--category7 { --st-kpiCard-accent: var(--st-semantic-data-category7); }
8406
+ .st-kpiCard--category8 { --st-kpiCard-accent: var(--st-semantic-data-category8); }
8407
+
8408
+ /* ---------------------------------------------------------------------------
8409
+ ComboChart — grouped bars on a left axis + lines on a right axis.
8410
+ --------------------------------------------------------------------------- */
8411
+ .st-comboChart {
8412
+ color: var(--st-semantic-text-secondary);
8413
+ display: block;
8414
+ font-family: inherit;
8415
+ position: relative;
8416
+ width: 100%;
8417
+ }
8418
+
8419
+ .st-comboChart svg {
8420
+ display: block;
8421
+ overflow: visible;
8422
+ }
8423
+
8424
+ .st-comboChart__visual {
8425
+ display: block;
8426
+ }
8427
+
8428
+ .st-comboChart__grid {
8429
+ stroke: var(--st-component-comboChart-gridStroke, var(--st-semantic-border-subtle));
8430
+ stroke-dasharray: 2 3;
8431
+ stroke-width: 1;
8432
+ opacity: 0.7;
8433
+ }
8434
+
8435
+ .st-comboChart__axis {
8436
+ stroke: var(--st-component-comboChart-axisStroke, var(--st-semantic-border-subtle));
8437
+ stroke-width: 1;
8438
+ }
8439
+
8440
+ .st-comboChart__tickLabel,
8441
+ .st-comboChart__categoryLabel {
8442
+ fill: var(--st-component-comboChart-labelColor, var(--st-semantic-text-secondary));
8443
+ font-size: 0.6875rem;
8444
+ }
8445
+
8446
+ .st-comboChart__axisLabel {
8447
+ fill: var(--st-component-comboChart-labelColor, var(--st-semantic-text-secondary));
8448
+ font-size: 0.6875rem;
8449
+ font-weight: 600;
8450
+ }
8451
+
8452
+ .st-comboChart__bar {
8453
+ cursor: pointer;
8454
+ transition: opacity 120ms ease;
8455
+ }
8456
+
8457
+ .st-comboChart__bar:hover {
8458
+ opacity: 0.82;
8459
+ }
8460
+
8461
+ .st-comboChart__bar--category1 { fill: var(--st-semantic-data-category1); }
8462
+ .st-comboChart__bar--category2 { fill: var(--st-semantic-data-category2); }
8463
+ .st-comboChart__bar--category3 { fill: var(--st-semantic-data-category3); }
8464
+ .st-comboChart__bar--category4 { fill: var(--st-semantic-data-category4); }
8465
+ .st-comboChart__bar--category5 { fill: var(--st-semantic-data-category5); }
8466
+ .st-comboChart__bar--category6 { fill: var(--st-semantic-data-category6); }
8467
+ .st-comboChart__bar--category7 { fill: var(--st-semantic-data-category7); }
8468
+ .st-comboChart__bar--category8 { fill: var(--st-semantic-data-category8); }
8469
+
8470
+ .st-comboChart__line--category1 { stroke: var(--st-semantic-data-category1); }
8471
+ .st-comboChart__line--category2 { stroke: var(--st-semantic-data-category2); }
8472
+ .st-comboChart__line--category3 { stroke: var(--st-semantic-data-category3); }
8473
+ .st-comboChart__line--category4 { stroke: var(--st-semantic-data-category4); }
8474
+ .st-comboChart__line--category5 { stroke: var(--st-semantic-data-category5); }
8475
+ .st-comboChart__line--category6 { stroke: var(--st-semantic-data-category6); }
8476
+ .st-comboChart__line--category7 { stroke: var(--st-semantic-data-category7); }
8477
+ .st-comboChart__line--category8 { stroke: var(--st-semantic-data-category8); }
8478
+
8479
+ .st-comboChart__dot {
8480
+ stroke: var(--st-semantic-surface-default);
8481
+ stroke-width: 1.5;
8482
+ cursor: pointer;
8483
+ transition: r 120ms ease;
8484
+ }
8485
+
8486
+ .st-comboChart__dot:hover {
8487
+ r: 5.5;
8488
+ }
8489
+
8490
+ .st-comboChart__dot--category1 { fill: var(--st-semantic-data-category1); }
8491
+ .st-comboChart__dot--category2 { fill: var(--st-semantic-data-category2); }
8492
+ .st-comboChart__dot--category3 { fill: var(--st-semantic-data-category3); }
8493
+ .st-comboChart__dot--category4 { fill: var(--st-semantic-data-category4); }
8494
+ .st-comboChart__dot--category5 { fill: var(--st-semantic-data-category5); }
8495
+ .st-comboChart__dot--category6 { fill: var(--st-semantic-data-category6); }
8496
+ .st-comboChart__dot--category7 { fill: var(--st-semantic-data-category7); }
8497
+ .st-comboChart__dot--category8 { fill: var(--st-semantic-data-category8); }
8498
+
8499
+ @media (prefers-reduced-motion: reduce) {
8500
+ .st-comboChart__bar,
8501
+ .st-comboChart__dot {
8502
+ transition: none;
8503
+ }
8504
+ }
8505
+
8506
+ .st-comboChart__legend {
8507
+ display: flex;
8508
+ flex-wrap: wrap;
8509
+ gap: var(--st-spacing-3, 0.75rem);
8510
+ list-style: none;
8511
+ margin: var(--st-spacing-2, 0.5rem) 0 0;
8512
+ padding: 0;
8513
+ }
8514
+
8515
+ .st-comboChart__legendItem {
8516
+ align-items: center;
8517
+ color: var(--st-semantic-text-secondary);
8518
+ display: inline-flex;
8519
+ font-size: 0.75rem;
8520
+ gap: var(--st-spacing-1, 0.25rem);
8521
+ }
8522
+
8523
+ .st-comboChart__legendSwatch {
8524
+ display: inline-block;
8525
+ flex: none;
8526
+ }
8527
+
8528
+ .st-comboChart__legendSwatch--bar {
8529
+ border-radius: 2px;
8530
+ height: 0.75rem;
8531
+ width: 0.75rem;
8532
+ }
8533
+
8534
+ .st-comboChart__legendSwatch--line {
8535
+ border-radius: 999px;
8536
+ height: 0.25rem;
8537
+ width: 1rem;
8538
+ }
8539
+
8540
+ .st-comboChart__legendSwatch--category1 { background: var(--st-semantic-data-category1); }
8541
+ .st-comboChart__legendSwatch--category2 { background: var(--st-semantic-data-category2); }
8542
+ .st-comboChart__legendSwatch--category3 { background: var(--st-semantic-data-category3); }
8543
+ .st-comboChart__legendSwatch--category4 { background: var(--st-semantic-data-category4); }
8544
+ .st-comboChart__legendSwatch--category5 { background: var(--st-semantic-data-category5); }
8545
+ .st-comboChart__legendSwatch--category6 { background: var(--st-semantic-data-category6); }
8546
+ .st-comboChart__legendSwatch--category7 { background: var(--st-semantic-data-category7); }
8547
+ .st-comboChart__legendSwatch--category8 { background: var(--st-semantic-data-category8); }
8548
+
8549
+ .st-comboChart__tooltip {
8550
+ background: var(--st-component-comboChart-tooltipBackground, var(--st-semantic-surface-inverse));
8551
+ border-radius: var(--st-radius-sm, 0.25rem);
8552
+ color: var(--st-component-comboChart-tooltipText, var(--st-semantic-text-inverse));
8553
+ display: inline-flex;
8554
+ flex-direction: column;
8555
+ font-size: 0.75rem;
8556
+ gap: 0.125rem;
8557
+ line-height: 1.2;
8558
+ padding: 0.375rem 0.5rem;
8559
+ pointer-events: none;
8560
+ position: absolute;
8561
+ transform: translate(-50%, calc(-100% - 8px));
8562
+ white-space: nowrap;
8563
+ z-index: 1;
8564
+ }
8565
+
8566
+ .st-comboChart__tooltipLabel {
8567
+ font-weight: 600;
8568
+ }
8569
+
8570
+ .st-comboChart__tooltipValue {
8571
+ opacity: 0.85;
8572
+ }
8573
+
8574
+ /* ---------------------------------------------------------------------------
8575
+ GaugeChart — radial meter with optional threshold bands and a needle.
8576
+ --------------------------------------------------------------------------- */
8577
+ .st-gaugeChart {
8578
+ color: var(--st-semantic-text-secondary);
8579
+ display: block;
8580
+ font-family: inherit;
8581
+ max-width: 100%;
8582
+ position: relative;
8583
+ }
8584
+
8585
+ .st-gaugeChart__visual,
8586
+ .st-gaugeChart svg {
8587
+ display: block;
8588
+ overflow: visible;
8589
+ }
8590
+
8591
+ .st-gaugeChart__track {
8592
+ stroke: var(--st-semantic-surface-subtle);
8593
+ stroke-linecap: round;
8594
+ }
8595
+
8596
+ .st-gaugeChart__band {
8597
+ stroke-linecap: butt;
8598
+ }
8599
+
8600
+ .st-gaugeChart__progress {
8601
+ stroke: var(--st-semantic-action-primary);
8602
+ stroke-linecap: round;
8603
+ transition: d var(--st-motion-fast, 200ms) var(--st-motion-easing, ease);
8604
+ }
8605
+
8606
+ .st-gaugeChart__needle {
8607
+ fill: var(--st-semantic-text-primary);
8608
+ transition: d var(--st-motion-fast, 200ms) var(--st-motion-easing, ease);
8609
+ }
8610
+
8611
+ .st-gaugeChart__hub {
8612
+ fill: var(--st-semantic-text-primary);
8613
+ }
8614
+
8615
+ .st-gaugeChart__value {
8616
+ fill: var(--st-semantic-text-primary);
8617
+ font-size: 1.5rem;
8618
+ font-variant-numeric: tabular-nums;
8619
+ font-weight: 700;
8620
+ }
8621
+
8622
+ .st-gaugeChart__label {
8623
+ fill: var(--st-semantic-text-secondary);
8624
+ font-size: 0.8125rem;
8625
+ font-weight: 500;
8626
+ }
8627
+
8628
+ .st-gaugeChart__band--neutral { stroke: var(--st-semantic-surface-subtle, var(--st-semantic-border-subtle)); }
8629
+ .st-gaugeChart__band--info { stroke: var(--st-semantic-feedback-info, var(--st-semantic-action-primary)); }
8630
+ .st-gaugeChart__band--success { stroke: var(--st-semantic-feedback-success); }
8631
+ .st-gaugeChart__band--warning { stroke: var(--st-semantic-feedback-warning); }
8632
+ .st-gaugeChart__band--error { stroke: var(--st-semantic-feedback-error); }
8633
+
8634
+ .st-gaugeChart__band--category1 { stroke: var(--st-semantic-data-category1); }
8635
+ .st-gaugeChart__band--category2 { stroke: var(--st-semantic-data-category2); }
8636
+ .st-gaugeChart__band--category3 { stroke: var(--st-semantic-data-category3); }
8637
+ .st-gaugeChart__band--category4 { stroke: var(--st-semantic-data-category4); }
8638
+ .st-gaugeChart__band--category5 { stroke: var(--st-semantic-data-category5); }
8639
+ .st-gaugeChart__band--category6 { stroke: var(--st-semantic-data-category6); }
8640
+ .st-gaugeChart__band--category7 { stroke: var(--st-semantic-data-category7); }
8641
+ .st-gaugeChart__band--category8 { stroke: var(--st-semantic-data-category8); }
8642
+
8643
+ @media (prefers-reduced-motion: reduce) {
8644
+ .st-gaugeChart__progress,
8645
+ .st-gaugeChart__needle {
8646
+ transition: none;
8647
+ }
8648
+ }
8649
+
8650
+ /* ---------------------------------------------------------------------------
8651
+ FunnelChart — decreasing trapezoid stages, vertical or horizontal.
8652
+ --------------------------------------------------------------------------- */
8653
+ .st-funnelChart {
8654
+ color: var(--st-semantic-text-secondary);
8655
+ display: block;
8656
+ font-family: inherit;
8657
+ position: relative;
8658
+ width: 100%;
8659
+ }
8660
+
8661
+ .st-funnelChart svg,
8662
+ .st-funnelChart__visual {
8663
+ display: block;
8664
+ overflow: visible;
8665
+ }
8666
+
8667
+ .st-funnelChart__segment {
8668
+ cursor: pointer;
8669
+ stroke: var(--st-semantic-surface-default, #fff);
8670
+ stroke-width: 1;
8671
+ transition: opacity 120ms ease;
8672
+ }
8673
+
8674
+ .st-funnelChart__segment--dim {
8675
+ opacity: 0.45;
8676
+ }
8677
+
8678
+ .st-funnelChart__segment--category1 { fill: var(--st-semantic-data-category1); }
8679
+ .st-funnelChart__segment--category2 { fill: var(--st-semantic-data-category2); }
8680
+ .st-funnelChart__segment--category3 { fill: var(--st-semantic-data-category3); }
8681
+ .st-funnelChart__segment--category4 { fill: var(--st-semantic-data-category4); }
8682
+ .st-funnelChart__segment--category5 { fill: var(--st-semantic-data-category5); }
8683
+ .st-funnelChart__segment--category6 { fill: var(--st-semantic-data-category6); }
8684
+ .st-funnelChart__segment--category7 { fill: var(--st-semantic-data-category7); }
8685
+ .st-funnelChart__segment--category8 { fill: var(--st-semantic-data-category8); }
8686
+
8687
+ /* Couleur de texte fixée inline par le composant selon la luminance du fill
8688
+ (contraste WCAG garanti) ; ces règles ne portent que la typo. */
8689
+ .st-funnelChart__label {
8690
+ font-size: 0.75rem;
8691
+ font-weight: 600;
8692
+ pointer-events: none;
8693
+ }
8694
+
8695
+ .st-funnelChart__value {
8696
+ font-size: 0.6875rem;
8697
+ pointer-events: none;
8698
+ }
8699
+
8700
+ .st-funnelChart__tooltip {
8701
+ background: var(--st-semantic-surface-inverse);
8702
+ border-radius: var(--st-radius-sm, 0.25rem);
8703
+ color: var(--st-semantic-text-inverse);
8704
+ display: inline-flex;
8705
+ flex-direction: column;
8706
+ font-size: 0.75rem;
8707
+ gap: 0.125rem;
8708
+ line-height: 1.2;
8709
+ padding: 0.375rem 0.5rem;
8710
+ pointer-events: none;
8711
+ position: absolute;
8712
+ transform: translate(-50%, calc(-100% - 8px));
8713
+ white-space: nowrap;
8714
+ z-index: 1;
8715
+ }
8716
+
8717
+ .st-funnelChart__tooltipLabel { font-weight: 600; }
8718
+ .st-funnelChart__tooltipValue { opacity: 0.85; }
8719
+
8720
+ .st-funnelChart__legend {
8721
+ display: flex;
8722
+ flex-wrap: wrap;
8723
+ gap: 0.75rem;
8724
+ list-style: none;
8725
+ margin: 0.5rem 0 0;
8726
+ padding: 0;
8727
+ }
8728
+
8729
+ .st-funnelChart__legendItem {
8730
+ align-items: center;
8731
+ color: var(--st-semantic-text-secondary);
8732
+ display: inline-flex;
8733
+ font-size: 0.75rem;
8734
+ gap: 0.35rem;
8735
+ }
8736
+
8737
+ .st-funnelChart__legendSwatch {
8738
+ border-radius: 2px;
8739
+ height: 0.7rem;
8740
+ width: 0.7rem;
8741
+ }
8742
+
8743
+ .st-funnelChart__legendSwatch--category1 { background: var(--st-semantic-data-category1); }
8744
+ .st-funnelChart__legendSwatch--category2 { background: var(--st-semantic-data-category2); }
8745
+ .st-funnelChart__legendSwatch--category3 { background: var(--st-semantic-data-category3); }
8746
+ .st-funnelChart__legendSwatch--category4 { background: var(--st-semantic-data-category4); }
8747
+ .st-funnelChart__legendSwatch--category5 { background: var(--st-semantic-data-category5); }
8748
+ .st-funnelChart__legendSwatch--category6 { background: var(--st-semantic-data-category6); }
8749
+ .st-funnelChart__legendSwatch--category7 { background: var(--st-semantic-data-category7); }
8750
+ .st-funnelChart__legendSwatch--category8 { background: var(--st-semantic-data-category8); }
8751
+
8752
+ @media (prefers-reduced-motion: reduce) {
8753
+ .st-funnelChart__segment {
8754
+ transition: none;
8755
+ }
8756
+ }
8757
+
8758
+ /* ---------------------------------------------------------------------------
8759
+ WaterfallChart — floating bars tracing a running cumulative total.
8760
+ --------------------------------------------------------------------------- */
8761
+ .st-waterfallChart {
8762
+ color: var(--st-semantic-text-secondary);
8763
+ display: block;
8764
+ font-family: inherit;
8765
+ position: relative;
8766
+ width: 100%;
8767
+ }
8768
+
8769
+ .st-waterfallChart svg {
8770
+ display: block;
8771
+ overflow: visible;
8772
+ }
8773
+
8774
+ .st-waterfallChart__visual {
8775
+ display: block;
8776
+ }
8777
+
8778
+ .st-waterfallChart__grid {
8779
+ stroke: var(--st-component-waterfallChart-gridStroke, var(--st-semantic-border-subtle));
8780
+ stroke-dasharray: 2 3;
8781
+ stroke-width: 1;
8782
+ opacity: 0.7;
8783
+ }
8784
+
8785
+ .st-waterfallChart__axis {
8786
+ stroke: var(--st-component-waterfallChart-axisStroke, var(--st-semantic-border-subtle));
8787
+ stroke-width: 1;
8788
+ }
8789
+
8790
+ .st-waterfallChart__zero {
8791
+ stroke: var(--st-component-waterfallChart-zeroStroke, var(--st-semantic-border-strong));
8792
+ stroke-width: 1;
8793
+ }
8794
+
8795
+ .st-waterfallChart__connector {
8796
+ stroke: var(--st-component-waterfallChart-connectorStroke, var(--st-semantic-border-strong));
8797
+ stroke-dasharray: 3 2;
8798
+ stroke-width: 1;
8799
+ opacity: 0.6;
8800
+ }
8801
+
8802
+ .st-waterfallChart__tickLabel,
8803
+ .st-waterfallChart__categoryLabel {
8804
+ fill: var(--st-component-waterfallChart-labelColor, var(--st-semantic-text-secondary));
8805
+ font-size: 0.6875rem;
8806
+ }
8807
+
8808
+ .st-waterfallChart__bar {
8809
+ cursor: pointer;
8810
+ transition: opacity 120ms ease;
8811
+ }
8812
+
8813
+ .st-waterfallChart__bar:hover {
8814
+ opacity: 0.82;
8815
+ }
8816
+
8817
+ .st-waterfallChart__bar--increase {
8818
+ fill: var(--st-component-waterfallChart-increaseFill, var(--st-semantic-feedback-success));
8819
+ }
8820
+ .st-waterfallChart__bar--decrease {
8821
+ fill: var(--st-component-waterfallChart-decreaseFill, var(--st-semantic-feedback-error));
8822
+ }
8823
+ .st-waterfallChart__bar--total {
8824
+ fill: var(--st-component-waterfallChart-totalFill, var(--st-semantic-data-category1));
8825
+ }
8826
+
8827
+ @media (prefers-reduced-motion: reduce) {
8828
+ .st-waterfallChart__bar {
8829
+ transition: none;
8830
+ }
8831
+ }
8832
+
8833
+ .st-waterfallChart__legend {
8834
+ display: flex;
8835
+ flex-wrap: wrap;
8836
+ gap: var(--st-spacing-3, 0.75rem);
8837
+ list-style: none;
8838
+ margin: var(--st-spacing-2, 0.5rem) 0 0;
8839
+ padding: 0;
8840
+ }
8841
+
8842
+ .st-waterfallChart__legendItem {
8843
+ align-items: center;
8844
+ color: var(--st-semantic-text-secondary);
8845
+ display: inline-flex;
8846
+ font-size: 0.75rem;
8847
+ gap: var(--st-spacing-1, 0.25rem);
8848
+ }
8849
+
8850
+ .st-waterfallChart__legendSwatch {
8851
+ border-radius: var(--st-radius-sm, 0.25rem);
8852
+ display: inline-block;
8853
+ height: 0.75rem;
8854
+ width: 0.75rem;
8855
+ }
8856
+
8857
+ .st-waterfallChart__legendSwatch--increase {
8858
+ background: var(--st-component-waterfallChart-increaseFill, var(--st-semantic-feedback-success));
8859
+ }
8860
+ .st-waterfallChart__legendSwatch--decrease {
8861
+ background: var(--st-component-waterfallChart-decreaseFill, var(--st-semantic-feedback-error));
8862
+ }
8863
+ .st-waterfallChart__legendSwatch--total {
8864
+ background: var(--st-component-waterfallChart-totalFill, var(--st-semantic-data-category1));
8865
+ }
8866
+
8867
+ .st-waterfallChart__tooltip {
8868
+ background: var(--st-component-waterfallChart-tooltipBackground, var(--st-semantic-surface-inverse));
8869
+ border-radius: var(--st-radius-sm, 0.25rem);
8870
+ color: var(--st-component-waterfallChart-tooltipText, var(--st-semantic-text-inverse));
8871
+ display: inline-flex;
8872
+ flex-direction: column;
8873
+ font-size: 0.75rem;
8874
+ gap: 0.125rem;
8875
+ line-height: 1.2;
8876
+ padding: 0.375rem 0.5rem;
8877
+ pointer-events: none;
8878
+ position: absolute;
8879
+ transform: translate(-50%, calc(-100% - 8px));
8880
+ white-space: nowrap;
8881
+ z-index: 1;
8882
+ }
8883
+
8884
+ .st-waterfallChart__tooltipLabel {
8885
+ font-weight: 600;
8886
+ }
8887
+
8888
+ .st-waterfallChart__tooltipValue {
8889
+ opacity: 0.85;
8890
+ }
8891
+
8892
+ /* ---------------------------------------------------------------------------
8893
+ TreemapChart — squarified hierarchical rectangles (1 or 2 levels).
8894
+ --------------------------------------------------------------------------- */
8895
+ .st-treemapChart {
8896
+ color: var(--st-semantic-text-secondary);
8897
+ display: block;
8898
+ font-family: inherit;
8899
+ position: relative;
8900
+ width: 100%;
8901
+ }
8902
+
8903
+ .st-treemapChart svg,
8904
+ .st-treemapChart__visual {
8905
+ display: block;
8906
+ overflow: visible;
8907
+ }
8908
+
8909
+ .st-treemapChart__rect {
8910
+ cursor: pointer;
8911
+ stroke: var(--st-semantic-surface-default, #fff);
8912
+ stroke-width: 1.5;
8913
+ transition: opacity 120ms ease;
8914
+ }
8915
+
8916
+ .st-treemapChart__rect--dim {
8917
+ opacity: 0.45;
8918
+ }
8919
+
8920
+ @media (prefers-reduced-motion: reduce) {
8921
+ .st-treemapChart__rect {
8922
+ transition: none;
8923
+ }
8924
+ }
8925
+
8926
+ .st-treemapChart__rect--category1 { fill: var(--st-semantic-data-category1); }
8927
+ .st-treemapChart__rect--category2 { fill: var(--st-semantic-data-category2); }
8928
+ .st-treemapChart__rect--category3 { fill: var(--st-semantic-data-category3); }
8929
+ .st-treemapChart__rect--category4 { fill: var(--st-semantic-data-category4); }
8930
+ .st-treemapChart__rect--category5 { fill: var(--st-semantic-data-category5); }
8931
+ .st-treemapChart__rect--category6 { fill: var(--st-semantic-data-category6); }
8932
+ .st-treemapChart__rect--category7 { fill: var(--st-semantic-data-category7); }
8933
+ .st-treemapChart__rect--category8 { fill: var(--st-semantic-data-category8); }
8934
+
8935
+ /* Couleur de texte fixée inline par le composant selon la luminance du fill
8936
+ (contraste WCAG garanti) ; ces règles ne portent que la typo. */
8937
+ .st-treemapChart__label {
8938
+ font-size: 0.75rem;
8939
+ font-weight: 600;
8940
+ pointer-events: none;
8941
+ }
8942
+
8943
+ .st-treemapChart__value {
8944
+ font-size: 0.6875rem;
8945
+ opacity: 0.85;
8946
+ pointer-events: none;
8947
+ }
8948
+
8949
+ .st-treemapChart__tooltip {
8950
+ background: var(--st-semantic-surface-inverse);
8951
+ border-radius: var(--st-radius-sm, 0.25rem);
8952
+ color: var(--st-semantic-text-inverse);
8953
+ display: inline-flex;
8954
+ flex-direction: column;
8955
+ font-size: 0.75rem;
8956
+ gap: 0.125rem;
8957
+ line-height: 1.2;
8958
+ padding: 0.375rem 0.5rem;
8959
+ pointer-events: none;
8960
+ position: absolute;
8961
+ transform: translate(-50%, calc(-100% - 8px));
8962
+ white-space: nowrap;
8963
+ z-index: 1;
8964
+ }
8965
+
8966
+ .st-treemapChart__tooltipLabel { font-weight: 600; }
8967
+ .st-treemapChart__tooltipValue { opacity: 0.85; }
8968
+
8969
+ .st-treemapChart__legend {
8970
+ display: flex;
8971
+ flex-wrap: wrap;
8972
+ gap: var(--st-spacing-3, 0.75rem);
8973
+ list-style: none;
8974
+ margin: var(--st-spacing-2, 0.5rem) 0 0;
8975
+ padding: 0;
8976
+ }
8977
+
8978
+ .st-treemapChart__legendItem {
8979
+ align-items: center;
8980
+ color: var(--st-semantic-text-secondary);
8981
+ display: inline-flex;
8982
+ font-size: 0.75rem;
8983
+ gap: var(--st-spacing-1, 0.35rem);
8984
+ }
8985
+
8986
+ .st-treemapChart__legendSwatch {
8987
+ border-radius: 2px;
8988
+ height: 0.7rem;
8989
+ width: 0.7rem;
8990
+ }
8991
+
8992
+ .st-treemapChart__legendSwatch--category1 { background: var(--st-semantic-data-category1); }
8993
+ .st-treemapChart__legendSwatch--category2 { background: var(--st-semantic-data-category2); }
8994
+ .st-treemapChart__legendSwatch--category3 { background: var(--st-semantic-data-category3); }
8995
+ .st-treemapChart__legendSwatch--category4 { background: var(--st-semantic-data-category4); }
8996
+ .st-treemapChart__legendSwatch--category5 { background: var(--st-semantic-data-category5); }
8997
+ .st-treemapChart__legendSwatch--category6 { background: var(--st-semantic-data-category6); }
8998
+ .st-treemapChart__legendSwatch--category7 { background: var(--st-semantic-data-category7); }
8999
+ .st-treemapChart__legendSwatch--category8 { background: var(--st-semantic-data-category8); }