@dnax/ui 0.0.28 → 0.0.30

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/styles/main.css CHANGED
@@ -9024,6 +9024,38 @@ html.dark body {
9024
9024
  color: var(--q-tiptap-primary);
9025
9025
  }
9026
9026
 
9027
+ /* ===== QBar ===== */
9028
+ .q-bar {
9029
+ display: flex;
9030
+ align-items: center;
9031
+ gap: 10px;
9032
+ min-height: 40px;
9033
+ padding: 0 12px;
9034
+ font-size: 13px;
9035
+ line-height: 1.4;
9036
+ color: var(--foreground, #1d1d1d);
9037
+ background: transparent;
9038
+ user-select: none;
9039
+ }
9040
+ .q-bar--dense {
9041
+ gap: 8px;
9042
+ min-height: 32px;
9043
+ padding: 0 10px;
9044
+ font-size: 12px;
9045
+ }
9046
+ .q-bar--dark {
9047
+ color: #ececef;
9048
+ background: #1d1d1d;
9049
+ }
9050
+ .q-bar > * {
9051
+ flex-shrink: 0;
9052
+ }
9053
+ .q-bar__dot {
9054
+ width: 12px;
9055
+ height: 12px;
9056
+ border-radius: 50%;
9057
+ }
9058
+
9027
9059
  /* ===== QEditorJs (Editor.js, éditeur par blocs) ===== */
9028
9060
  .q-editor-js {
9029
9061
  border: 1px solid var(--border, rgb(0 0 0 / 0.12));
@@ -9193,3 +9225,1315 @@ html.dark body {
9193
9225
  color: var(--q-tiptap-muted);
9194
9226
  text-decoration: line-through;
9195
9227
  }
9228
+
9229
+ /* ===== QSpreadsheet (tableur type Excel) ===== */
9230
+ .q-spreadsheet {
9231
+ --q-spreadsheet-border: rgb(0 0 0 / 0.1);
9232
+ --q-spreadsheet-header-bg: rgb(0 0 0 / 0.03);
9233
+ --q-spreadsheet-row-alt: rgb(0 0 0 / 0.015);
9234
+ --q-spreadsheet-range: rgb(25 118 210 / 0.1);
9235
+ --q-spreadsheet-range-brd: var(--primary, #1976d2);
9236
+
9237
+ position: relative;
9238
+ display: flex;
9239
+ flex-direction: column;
9240
+ width: 100%;
9241
+ overflow: hidden;
9242
+ border-radius: var(--q-radius, 0);
9243
+ background: #fff;
9244
+ color: var(--foreground, #1d1d1d);
9245
+ font-size: 13px;
9246
+ }
9247
+ .q-spreadsheet--bordered {
9248
+ border: 1px solid var(--q-spreadsheet-border);
9249
+ }
9250
+ .q-spreadsheet--flat {
9251
+ box-shadow: none;
9252
+ }
9253
+ .q-spreadsheet--disable {
9254
+ opacity: 0.6;
9255
+ pointer-events: none;
9256
+ user-select: none;
9257
+ }
9258
+ .q-spreadsheet--dark,
9259
+ .dark .q-spreadsheet {
9260
+ --q-spreadsheet-border: rgb(255 255 255 / 0.12);
9261
+ --q-spreadsheet-header-bg: rgb(255 255 255 / 0.05);
9262
+ --q-spreadsheet-row-alt: rgb(255 255 255 / 0.02);
9263
+ background: var(--card, #1d1d1d);
9264
+ color: var(--foreground, #ececef);
9265
+ }
9266
+
9267
+ /* ─── Barre d'outils ─── */
9268
+ .q-spreadsheet__toolbar {
9269
+ display: flex;
9270
+ align-items: center;
9271
+ flex-wrap: wrap;
9272
+ gap: 4px;
9273
+ padding: 6px 8px;
9274
+ border-bottom: 1px solid var(--q-spreadsheet-border);
9275
+ background: var(--q-spreadsheet-header-bg);
9276
+ }
9277
+ .q-spreadsheet__sheet-name {
9278
+ display: inline-flex;
9279
+ align-items: center;
9280
+ gap: 6px;
9281
+ margin-right: 6px;
9282
+ padding: 3px 10px;
9283
+ font-size: 12px;
9284
+ font-weight: 600;
9285
+ color: var(--foreground, #1d1d1d);
9286
+ background: rgb(25 118 210 / 0.08);
9287
+ border-radius: 6px;
9288
+ white-space: nowrap;
9289
+ }
9290
+ .q-spreadsheet__tb-group {
9291
+ display: inline-flex;
9292
+ align-items: center;
9293
+ gap: 2px;
9294
+ padding: 0 4px;
9295
+ border-left: 1px solid var(--q-spreadsheet-border);
9296
+ }
9297
+ .q-spreadsheet__tool {
9298
+ display: inline-flex;
9299
+ align-items: center;
9300
+ justify-content: center;
9301
+ width: 28px;
9302
+ height: 28px;
9303
+ padding: 0;
9304
+ border: 0;
9305
+ border-radius: 6px;
9306
+ background: transparent;
9307
+ color: var(--foreground, #1d1d1d);
9308
+ cursor: pointer;
9309
+ transition: background-color 0.15s ease;
9310
+ }
9311
+ .q-spreadsheet__tool:hover:not(:disabled) {
9312
+ background: rgb(25 118 210 / 0.1);
9313
+ color: var(--primary, #1976d2);
9314
+ }
9315
+ .q-spreadsheet__tool:disabled {
9316
+ opacity: 0.35;
9317
+ cursor: default;
9318
+ }
9319
+ .q-spreadsheet__tool .iconify {
9320
+ font-size: 17px;
9321
+ }
9322
+ .q-spreadsheet--dense .q-spreadsheet__tool {
9323
+ width: 24px;
9324
+ height: 24px;
9325
+ }
9326
+
9327
+ /* ─── Viewport / table ─── */
9328
+ .q-spreadsheet__viewport {
9329
+ position: relative;
9330
+ overflow: auto;
9331
+ outline: none;
9332
+ }
9333
+ .q-spreadsheet__table {
9334
+ width: max-content;
9335
+ min-width: 100%;
9336
+ border-collapse: separate;
9337
+ border-spacing: 0;
9338
+ table-layout: fixed;
9339
+ font-size: 13px;
9340
+ }
9341
+
9342
+ /* ─── En-têtes ─── */
9343
+ .q-spreadsheet__corner,
9344
+ .q-spreadsheet__colhead,
9345
+ .q-spreadsheet__rownum {
9346
+ position: sticky;
9347
+ background-color: var(--q-spreadsheet-header-bg);
9348
+ color: var(--foreground, #1d1d1d);
9349
+ font-weight: 600;
9350
+ user-select: none;
9351
+ }
9352
+ .q-spreadsheet__corner {
9353
+ top: 0;
9354
+ left: 0;
9355
+ z-index: 6;
9356
+ width: 34px;
9357
+ min-width: 34px;
9358
+ height: 28px;
9359
+ border-right: 1px solid var(--q-spreadsheet-border);
9360
+ border-bottom: 1px solid var(--q-spreadsheet-border);
9361
+ text-align: center;
9362
+ vertical-align: middle;
9363
+ cursor: pointer;
9364
+ }
9365
+ .q-spreadsheet__colhead {
9366
+ top: 0;
9367
+ z-index: 4;
9368
+ height: 28px;
9369
+ padding: 0 10px 0 6px;
9370
+ border-right: 1px solid var(--q-spreadsheet-border);
9371
+ border-bottom: 1px solid var(--q-spreadsheet-border);
9372
+ text-align: left;
9373
+ white-space: nowrap;
9374
+ overflow: hidden;
9375
+ cursor: pointer;
9376
+ }
9377
+ .q-spreadsheet__colhead--sel {
9378
+ background: rgb(25 118 210 / 0.12);
9379
+ }
9380
+ .q-spreadsheet__colhead-inner {
9381
+ display: flex;
9382
+ flex-direction: column;
9383
+ justify-content: center;
9384
+ min-width: 0;
9385
+ height: 100%;
9386
+ padding-right: 6px;
9387
+ }
9388
+ .q-spreadsheet__colhead-letter {
9389
+ font-size: 9.5px;
9390
+ font-weight: 700;
9391
+ line-height: 1.1;
9392
+ letter-spacing: 0.04em;
9393
+ text-transform: uppercase;
9394
+ color: var(--primary, #1976d2);
9395
+ }
9396
+ .q-spreadsheet__colhead-label {
9397
+ font-size: 11.5px;
9398
+ line-height: 1.25;
9399
+ overflow: hidden;
9400
+ text-overflow: ellipsis;
9401
+ }
9402
+ .q-spreadsheet__rownum {
9403
+ left: 0;
9404
+ z-index: 3;
9405
+ width: 34px;
9406
+ min-width: 34px;
9407
+ border-right: 1px solid var(--q-spreadsheet-border);
9408
+ border-bottom: 1px solid var(--q-spreadsheet-border);
9409
+ font-size: 11px;
9410
+ font-weight: 500;
9411
+ text-align: center;
9412
+ vertical-align: middle;
9413
+ cursor: pointer;
9414
+ }
9415
+ .q-spreadsheet__rownum--sel {
9416
+ background: rgb(25 118 210 / 0.12);
9417
+ color: var(--primary, #1976d2);
9418
+ }
9419
+ .q-spreadsheet__row--sel {
9420
+ background: var(--q-spreadsheet-range);
9421
+ }
9422
+ .q-spreadsheet__resize {
9423
+ position: absolute;
9424
+ top: 0;
9425
+ right: 0;
9426
+ bottom: 0;
9427
+ z-index: 5;
9428
+ width: 6px;
9429
+ cursor: col-resize;
9430
+ }
9431
+ .q-spreadsheet__colhead {
9432
+ position: sticky;
9433
+ }
9434
+
9435
+ /* ─── Cellules ─── */
9436
+ .q-spreadsheet__cell {
9437
+ position: relative;
9438
+ height: var(--q-spreadsheet-row-height, 32px);
9439
+ padding: 2px 8px;
9440
+ border-right: 1px solid var(--q-spreadsheet-border);
9441
+ border-bottom: 1px solid var(--q-spreadsheet-border);
9442
+ background: transparent;
9443
+ text-align: left;
9444
+ white-space: nowrap;
9445
+ overflow: hidden;
9446
+ text-overflow: ellipsis;
9447
+ cursor: cell;
9448
+ outline: none;
9449
+ }
9450
+ .q-spreadsheet__cell-text {
9451
+ display: block;
9452
+ overflow: hidden;
9453
+ text-overflow: ellipsis;
9454
+ }
9455
+ .q-spreadsheet__cell--number {
9456
+ text-align: right;
9457
+ font-variant-numeric: tabular-nums;
9458
+ }
9459
+ .q-spreadsheet__cell--center {
9460
+ text-align: center;
9461
+ }
9462
+ .q-spreadsheet__cell--right {
9463
+ text-align: right;
9464
+ }
9465
+ .q-spreadsheet__cell--in-range {
9466
+ background: var(--q-spreadsheet-range);
9467
+ }
9468
+ .q-spreadsheet__cell--active {
9469
+ background: var(--q-spreadsheet-range);
9470
+ box-shadow: inset 0 0 0 2px var(--q-spreadsheet-range-brd);
9471
+ }
9472
+ .q-spreadsheet__cell--editing {
9473
+ background: #fff;
9474
+ box-shadow: none;
9475
+ }
9476
+ .q-spreadsheet__cell--readonly {
9477
+ cursor: default;
9478
+ }
9479
+ .q-spreadsheet__cell--bool {
9480
+ text-align: center;
9481
+ }
9482
+
9483
+ /* ─── Case à cocher booléenne ─── */
9484
+ .q-spreadsheet__checkbox {
9485
+ display: inline-flex;
9486
+ align-items: center;
9487
+ justify-content: center;
9488
+ width: 17px;
9489
+ height: 17px;
9490
+ padding: 0;
9491
+ border: 1.5px solid var(--q-spreadsheet-border);
9492
+ border-radius: 4px;
9493
+ background: transparent;
9494
+ color: #fff;
9495
+ cursor: pointer;
9496
+ vertical-align: middle;
9497
+ }
9498
+ .q-spreadsheet__checkbox--on {
9499
+ background: var(--primary, #1976d2);
9500
+ border-color: var(--primary, #1976d2);
9501
+ }
9502
+ .q-spreadsheet__checkbox:disabled {
9503
+ cursor: default;
9504
+ opacity: 0.6;
9505
+ }
9506
+ .q-spreadsheet__checkbox .iconify {
9507
+ font-size: 12px;
9508
+ }
9509
+
9510
+ /* ─── Badges (type select + chip) ─── */
9511
+ .q-spreadsheet__badge {
9512
+ display: inline-block;
9513
+ max-width: 100%;
9514
+ padding: 1px 8px;
9515
+ border-radius: 999px;
9516
+ font-size: 11.5px;
9517
+ font-weight: 600;
9518
+ line-height: 1.6;
9519
+ white-space: nowrap;
9520
+ overflow: hidden;
9521
+ text-overflow: ellipsis;
9522
+ vertical-align: middle;
9523
+ }
9524
+
9525
+ /* ─── Éditeur overlay ─── */
9526
+ .q-spreadsheet__editor {
9527
+ position: absolute;
9528
+ z-index: 20;
9529
+ display: flex;
9530
+ align-items: center;
9531
+ border: 2px solid var(--primary, #1976d2);
9532
+ background: #fff;
9533
+ box-shadow: 0 6px 18px rgb(0 0 0 / 0.14);
9534
+ }
9535
+ .q-spreadsheet--dark .q-spreadsheet__editor,
9536
+ .dark .q-spreadsheet__editor {
9537
+ background: var(--card, #1d1d1d);
9538
+ }
9539
+ .q-spreadsheet__editor-input {
9540
+ width: 100%;
9541
+ min-width: 0;
9542
+ height: 100%;
9543
+ padding: 2px 6px;
9544
+ border: 0;
9545
+ outline: none;
9546
+ background: transparent;
9547
+ color: var(--foreground, #1d1d1d);
9548
+ font: inherit;
9549
+ }
9550
+ .q-spreadsheet__editor--select {
9551
+ flex-direction: column;
9552
+ align-items: stretch;
9553
+ border-color: rgb(25 118 210 / 0.45);
9554
+ }
9555
+ .q-spreadsheet__editor--select .q-spreadsheet__editor-input {
9556
+ border-bottom: 1px solid var(--q-spreadsheet-border);
9557
+ }
9558
+ .q-spreadsheet__options {
9559
+ max-height: 180px;
9560
+ overflow: auto;
9561
+ padding: 4px;
9562
+ }
9563
+ .q-spreadsheet__option {
9564
+ display: flex;
9565
+ align-items: center;
9566
+ gap: 8px;
9567
+ width: 100%;
9568
+ padding: 5px 8px;
9569
+ border: 0;
9570
+ border-radius: 6px;
9571
+ background: transparent;
9572
+ color: var(--foreground, #1d1d1d);
9573
+ font-size: 12.5px;
9574
+ text-align: left;
9575
+ cursor: pointer;
9576
+ }
9577
+ .q-spreadsheet__option:hover,
9578
+ .q-spreadsheet__option--active {
9579
+ background: rgb(25 118 210 / 0.1);
9580
+ }
9581
+ .q-spreadsheet__option-swatch {
9582
+ flex-shrink: 0;
9583
+ width: 12px;
9584
+ height: 12px;
9585
+ border-radius: 3px;
9586
+ border: 1px solid var(--q-spreadsheet-border);
9587
+ }
9588
+
9589
+ /* ─── Barre de formule (fx) ─── */
9590
+ .q-spreadsheet__fx {
9591
+ display: flex;
9592
+ align-items: center;
9593
+ gap: 8px;
9594
+ padding: 4px 8px;
9595
+ border-bottom: 1px solid var(--q-spreadsheet-border);
9596
+ background: var(--q-spreadsheet-header-bg);
9597
+ }
9598
+ .q-spreadsheet__fx-ref {
9599
+ flex-shrink: 0;
9600
+ min-width: 46px;
9601
+ padding: 2px 6px;
9602
+ text-align: center;
9603
+ font-weight: 700;
9604
+ font-size: 11.5px;
9605
+ color: var(--primary, #1976d2);
9606
+ background: rgb(25 118 210 / 0.08);
9607
+ border: 1px solid var(--q-spreadsheet-border);
9608
+ border-radius: 4px;
9609
+ }
9610
+ .q-spreadsheet__fx-badge {
9611
+ flex-shrink: 0;
9612
+ font-style: italic;
9613
+ font-weight: 600;
9614
+ font-size: 11px;
9615
+ color: #8b93a1;
9616
+ user-select: none;
9617
+ }
9618
+ .q-spreadsheet__fx-input {
9619
+ flex: 1;
9620
+ min-width: 0;
9621
+ padding: 4px 8px;
9622
+ border: 1px solid transparent;
9623
+ border-radius: 4px;
9624
+ background: transparent;
9625
+ color: var(--foreground, #1d1d1d);
9626
+ font: inherit;
9627
+ font-size: 12.5px;
9628
+ outline: none;
9629
+ }
9630
+ .q-spreadsheet__fx-input:focus {
9631
+ border-color: var(--primary, #1976d2);
9632
+ background: #fff;
9633
+ }
9634
+ .dark .q-spreadsheet__fx-input:focus,
9635
+ .q-spreadsheet--dark .q-spreadsheet__fx-input:focus {
9636
+ background: var(--card, #1d1d1d);
9637
+ }
9638
+ .q-spreadsheet__fx-input:disabled {
9639
+ opacity: 0.55;
9640
+ }
9641
+
9642
+ /* ─── Éditeur formule (textarea monospace) ─── */
9643
+ .q-spreadsheet__editor--formula {
9644
+ align-items: stretch;
9645
+ border-color: rgb(25 118 210 / 0.55);
9646
+ }
9647
+ .q-spreadsheet__editor-area {
9648
+ width: 100%;
9649
+ min-height: 28px;
9650
+ padding: 4px 6px;
9651
+ border: 0;
9652
+ outline: none;
9653
+ background: transparent;
9654
+ color: var(--foreground, #1d1d1d);
9655
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
9656
+ font-size: 12.5px;
9657
+ line-height: 1.45;
9658
+ resize: none;
9659
+ }
9660
+
9661
+ /* ─── Erreurs de formule ─── */
9662
+ .q-spreadsheet__cell--error {
9663
+ color: #c62828;
9664
+ font-weight: 600;
9665
+ }
9666
+ .q-spreadsheet--dark .q-spreadsheet__cell--error,
9667
+ .dark .q-spreadsheet__cell--error {
9668
+ color: #ff8a80;
9669
+ }
9670
+
9671
+ /* ─── fond opaque pour le freeze (variables) ─── */
9672
+ .q-spreadsheet {
9673
+ --q-spreadsheet-bg: #ffffff;
9674
+ }
9675
+ .q-spreadsheet--dark,
9676
+ .dark .q-spreadsheet {
9677
+ --q-spreadsheet-bg: var(--card, #1d1d1d);
9678
+ }
9679
+
9680
+ /* ─── Resize lignes (handle bas du numéro) ─── */
9681
+ .q-spreadsheet__row-resize {
9682
+ position: absolute;
9683
+ right: 0;
9684
+ bottom: 0;
9685
+ left: 0;
9686
+ height: 5px;
9687
+ cursor: row-resize;
9688
+ }
9689
+ /* ─── Bouton filtre colonne ─── */
9690
+ .q-spreadsheet__fbtn {
9691
+ position: absolute;
9692
+ top: 50%;
9693
+ right: 12px;
9694
+ display: inline-flex;
9695
+ align-items: center;
9696
+ justify-content: center;
9697
+ width: 16px;
9698
+ height: 16px;
9699
+ padding: 0;
9700
+ border: 0;
9701
+ border-radius: 4px;
9702
+ background: transparent;
9703
+ color: #8b93a1;
9704
+ opacity: 0.45;
9705
+ cursor: pointer;
9706
+ transform: translateY(-50%);
9707
+ }
9708
+ .q-spreadsheet__colhead:hover .q-spreadsheet__fbtn,
9709
+ .q-spreadsheet__fbtn--on {
9710
+ opacity: 1;
9711
+ }
9712
+ .q-spreadsheet__fbtn--on {
9713
+ color: var(--primary, #1976d2);
9714
+ background: rgb(25 118 210 / 0.12);
9715
+ }
9716
+ .q-spreadsheet__fbtn .iconify {
9717
+ font-size: 13px;
9718
+ }
9719
+
9720
+ /* ─── Freeze panes ─── */
9721
+ .q-spreadsheet__cell--frozen-row,
9722
+ .q-spreadsheet__cell--frozen-col {
9723
+ position: sticky;
9724
+ z-index: 2;
9725
+ }
9726
+ .q-spreadsheet__cell--frozen-both {
9727
+ position: sticky;
9728
+ z-index: 3;
9729
+ }
9730
+ .q-spreadsheet__colhead--frozen {
9731
+ z-index: 5;
9732
+ }
9733
+ .q-spreadsheet__rownum--frozen {
9734
+ z-index: 3;
9735
+ }
9736
+ .q-spreadsheet__rownum--frozen,
9737
+ .q-spreadsheet__colhead--frozen,
9738
+ .q-spreadsheet__cell--frozen-row,
9739
+ .q-spreadsheet__cell--frozen-col,
9740
+ .q-spreadsheet__cell--frozen-both {
9741
+ box-shadow: -1px 0 0 0 var(--q-spreadsheet-border), 0 -1px 0 0 var(--q-spreadsheet-border);
9742
+ }
9743
+
9744
+ /* ─── Poignée autofill + prévisualisation ─── */
9745
+ .q-spreadsheet__fill {
9746
+ position: absolute;
9747
+ z-index: 40;
9748
+ width: 8px;
9749
+ height: 8px;
9750
+ border: 1.5px solid #fff;
9751
+ border-radius: 2px;
9752
+ background: var(--primary, #1976d2);
9753
+ cursor: crosshair;
9754
+ box-shadow: 0 0 0 1px rgb(0 0 0 / 0.2);
9755
+ }
9756
+ .q-spreadsheet__cell--fill {
9757
+ box-shadow: inset 0 0 0 2px var(--primary, #1976d2);
9758
+ }
9759
+
9760
+ /* ─── Pas de lignes ─── */
9761
+ .q-spreadsheet__no-rows {
9762
+ padding: 14px 16px;
9763
+ color: #8b93a1;
9764
+ font-size: 12.5px;
9765
+ text-align: center;
9766
+ border-right: 1px solid var(--q-spreadsheet-border);
9767
+ border-bottom: 1px solid var(--q-spreadsheet-border);
9768
+ }
9769
+
9770
+ /* ─── Menu contextuel / popup filtre (téléportés body) ─── */
9771
+ .q-spreadsheet__ctx,
9772
+ .q-spreadsheet__fpop {
9773
+ z-index: 1300;
9774
+ min-width: 214px;
9775
+ max-width: 300px;
9776
+ padding: 5px;
9777
+ color: var(--foreground, #1d1d1d);
9778
+ background: var(--card, #fff);
9779
+ border: 1px solid var(--border, rgb(0 0 0 / 0.12));
9780
+ border-radius: 9px;
9781
+ box-shadow: 0 12px 32px rgb(0 0 0 / 0.16);
9782
+ font-size: 13px;
9783
+ user-select: none;
9784
+ }
9785
+ .dark .q-spreadsheet__ctx,
9786
+ .dark .q-spreadsheet__fpop {
9787
+ color: #ececef;
9788
+ background: #1d1d1d;
9789
+ }
9790
+ .q-spreadsheet__ctx-title {
9791
+ padding: 4px 8px 6px;
9792
+ font-size: 11px;
9793
+ font-weight: 700;
9794
+ letter-spacing: 0.04em;
9795
+ text-transform: uppercase;
9796
+ color: #8b93a1;
9797
+ border-bottom: 1px solid var(--border, rgb(0 0 0 / 0.08));
9798
+ margin-bottom: 4px;
9799
+ }
9800
+ .q-spreadsheet__mi {
9801
+ display: flex;
9802
+ align-items: center;
9803
+ gap: 9px;
9804
+ width: 100%;
9805
+ padding: 5px 9px;
9806
+ border: 0;
9807
+ border-radius: 6px;
9808
+ background: transparent;
9809
+ color: inherit;
9810
+ font: inherit;
9811
+ font-size: 12.5px;
9812
+ text-align: left;
9813
+ cursor: pointer;
9814
+ }
9815
+ .q-spreadsheet__mi:hover:not(:disabled) {
9816
+ background: rgb(25 118 210 / 0.09);
9817
+ }
9818
+ .q-spreadsheet__mi--on {
9819
+ color: var(--primary, #1976d2);
9820
+ background: rgb(25 118 210 / 0.12);
9821
+ }
9822
+ .q-spreadsheet__mi:disabled {
9823
+ opacity: 0.38;
9824
+ cursor: default;
9825
+ }
9826
+ .q-spreadsheet__mi .iconify {
9827
+ font-size: 15px;
9828
+ flex-shrink: 0;
9829
+ }
9830
+ .q-spreadsheet__sep {
9831
+ height: 1px;
9832
+ margin: 5px 6px;
9833
+ background: var(--border, rgb(0 0 0 / 0.09));
9834
+ }
9835
+ .q-spreadsheet__ctx-label {
9836
+ padding: 6px 8px 3px;
9837
+ font-size: 10px;
9838
+ font-weight: 700;
9839
+ text-transform: uppercase;
9840
+ letter-spacing: 0.05em;
9841
+ color: #8b93a1;
9842
+ }
9843
+ .q-spreadsheet__swatches {
9844
+ display: flex;
9845
+ flex-wrap: wrap;
9846
+ gap: 4px;
9847
+ padding: 2px 6px 6px;
9848
+ }
9849
+ .q-spreadsheet__swatch {
9850
+ width: 17px;
9851
+ height: 17px;
9852
+ padding: 0;
9853
+ border: 1px solid var(--border, rgb(0 0 0 / 0.14));
9854
+ border-radius: 4px;
9855
+ cursor: pointer;
9856
+ }
9857
+ .q-spreadsheet__swatch--on {
9858
+ outline: 2px solid var(--primary, #1976d2);
9859
+ outline-offset: 1px;
9860
+ }
9861
+ .q-spreadsheet__swatch:disabled {
9862
+ opacity: 0.45;
9863
+ cursor: default;
9864
+ }
9865
+
9866
+ /* ─── Popup filtre ─── */
9867
+ .q-spreadsheet__fpop {
9868
+ width: 248px;
9869
+ }
9870
+ .q-spreadsheet__fpop-head {
9871
+ display: flex;
9872
+ align-items: center;
9873
+ gap: 8px;
9874
+ padding: 4px 6px 6px;
9875
+ }
9876
+ .q-spreadsheet__fpop-head .iconify {
9877
+ color: var(--primary, #1976d2);
9878
+ flex-shrink: 0;
9879
+ }
9880
+ .q-spreadsheet__fpop-name {
9881
+ flex: 1;
9882
+ font-weight: 600;
9883
+ font-size: 12.5px;
9884
+ overflow: hidden;
9885
+ text-overflow: ellipsis;
9886
+ white-space: nowrap;
9887
+ }
9888
+ .q-spreadsheet__fpop-close {
9889
+ display: inline-flex;
9890
+ align-items: center;
9891
+ justify-content: center;
9892
+ width: 22px;
9893
+ height: 22px;
9894
+ padding: 0;
9895
+ border: 0;
9896
+ border-radius: 5px;
9897
+ background: transparent;
9898
+ color: inherit;
9899
+ cursor: pointer;
9900
+ }
9901
+ .q-spreadsheet__fpop-close:hover {
9902
+ background: rgb(0 0 0 / 0.08);
9903
+ }
9904
+ .q-spreadsheet__fpop-search {
9905
+ width: 100%;
9906
+ padding: 5px 8px;
9907
+ border: 1px solid var(--border, rgb(0 0 0 / 0.16));
9908
+ border-radius: 6px;
9909
+ background: transparent;
9910
+ color: inherit;
9911
+ font: inherit;
9912
+ font-size: 12.5px;
9913
+ outline: none;
9914
+ }
9915
+ .q-spreadsheet__fpop-search:focus {
9916
+ border-color: var(--primary, #1976d2);
9917
+ }
9918
+ .q-spreadsheet__fpop-list {
9919
+ max-height: 240px;
9920
+ overflow: auto;
9921
+ margin-top: 6px;
9922
+ }
9923
+ .q-spreadsheet__fpop-row {
9924
+ display: flex;
9925
+ align-items: center;
9926
+ gap: 8px;
9927
+ width: 100%;
9928
+ padding: 4px 8px;
9929
+ border: 0;
9930
+ border-radius: 5px;
9931
+ background: transparent;
9932
+ color: inherit;
9933
+ font: inherit;
9934
+ font-size: 12.5px;
9935
+ text-align: left;
9936
+ cursor: pointer;
9937
+ }
9938
+ .q-spreadsheet__fpop-row:hover {
9939
+ background: rgb(25 118 210 / 0.08);
9940
+ }
9941
+ .q-spreadsheet__fpop-check {
9942
+ display: inline-flex;
9943
+ align-items: center;
9944
+ justify-content: center;
9945
+ width: 15px;
9946
+ height: 15px;
9947
+ flex-shrink: 0;
9948
+ border: 1px solid var(--border, rgb(0 0 0 / 0.2));
9949
+ border-radius: 4px;
9950
+ color: #fff;
9951
+ }
9952
+ .q-spreadsheet__fpop-row--on .q-spreadsheet__fpop-check {
9953
+ background: var(--primary, #1976d2);
9954
+ border-color: var(--primary, #1976d2);
9955
+ }
9956
+ .q-spreadsheet__fpop-check .iconify {
9957
+ font-size: 11px;
9958
+ }
9959
+ .q-spreadsheet__fpop-label {
9960
+ flex: 1;
9961
+ min-width: 0;
9962
+ overflow: hidden;
9963
+ text-overflow: ellipsis;
9964
+ white-space: nowrap;
9965
+ }
9966
+ .q-spreadsheet__fpop-label--blank {
9967
+ color: #8b93a1;
9968
+ font-style: italic;
9969
+ }
9970
+ .q-spreadsheet__fpop-count {
9971
+ color: #8b93a1;
9972
+ font-size: 11.5px;
9973
+ }
9974
+ .q-spreadsheet__fpop-empty {
9975
+ padding: 10px;
9976
+ color: #8b93a1;
9977
+ font-size: 12px;
9978
+ text-align: center;
9979
+ }
9980
+ .q-spreadsheet__fpop > .q-spreadsheet__mi {
9981
+ margin-top: 4px;
9982
+ }
9983
+
9984
+ /* ─── place pour le bouton filtre dans l'en-tête ─── */
9985
+ .q-spreadsheet__colhead-inner {
9986
+ padding-right: 26px;
9987
+ }
9988
+
9989
+ /* ─── Suggestions de fonctions (formule) ─── */
9990
+ .q-spreadsheet__editor--formula {
9991
+ flex-direction: column;
9992
+ align-items: stretch;
9993
+ }
9994
+ .q-spreadsheet__fnsug {
9995
+ display: flex;
9996
+ flex-direction: column;
9997
+ max-height: 208px;
9998
+ overflow: auto;
9999
+ padding: 3px;
10000
+ border-top: 1px solid var(--q-spreadsheet-border);
10001
+ background: var(--card, #fff);
10002
+ }
10003
+ .q-spreadsheet--dark .q-spreadsheet__fnsug,
10004
+ .dark .q-spreadsheet__fnsug {
10005
+ background: var(--card, #1d1d1d);
10006
+ }
10007
+ .q-spreadsheet__fnsug-item {
10008
+ display: flex;
10009
+ align-items: baseline;
10010
+ gap: 8px;
10011
+ width: 100%;
10012
+ padding: 4px 8px;
10013
+ border: 0;
10014
+ border-radius: 5px;
10015
+ background: transparent;
10016
+ color: inherit;
10017
+ font: inherit;
10018
+ font-size: 12.5px;
10019
+ text-align: left;
10020
+ cursor: pointer;
10021
+ }
10022
+ .q-spreadsheet__fnsug-item code {
10023
+ color: var(--primary, #1976d2);
10024
+ font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
10025
+ font-weight: 700;
10026
+ }
10027
+ .q-spreadsheet__fnsug-item span {
10028
+ color: #8b93a1;
10029
+ font-size: 11.5px;
10030
+ }
10031
+ .q-spreadsheet__fnsug-item:hover,
10032
+ .q-spreadsheet__fnsug-item--on {
10033
+ background: rgb(25 118 210 / 0.1);
10034
+ }
10035
+ .q-spreadsheet__fnsug--fx {
10036
+ position: fixed;
10037
+ z-index: 1320;
10038
+ border: 1px solid var(--border, rgb(0 0 0 / 0.12));
10039
+ border-radius: 8px;
10040
+ box-shadow: 0 10px 26px rgb(0 0 0 / 0.16);
10041
+ }
10042
+
10043
+ /* ─── Virtualisation : rangées d'espacement ─── */
10044
+ .q-spreadsheet__vpad td {
10045
+ padding: 0 !important;
10046
+ border: none !important;
10047
+ }
10048
+
10049
+ /* ─── Onglets de feuilles (classeur multi) ─── */
10050
+ .q-spreadsheet__sheets {
10051
+ display: flex;
10052
+ align-items: flex-end;
10053
+ gap: 2px;
10054
+ padding: 6px 8px 0;
10055
+ overflow-x: auto;
10056
+ background: var(--q-spreadsheet-header-bg);
10057
+ border-bottom: 1px solid var(--q-spreadsheet-border);
10058
+ user-select: none;
10059
+ }
10060
+ .q-spreadsheet__sheet-tab {
10061
+ display: inline-flex;
10062
+ align-items: center;
10063
+ gap: 6px;
10064
+ max-width: 180px;
10065
+ padding: 5px 10px 6px;
10066
+ border: 1px solid transparent;
10067
+ border-bottom: 0;
10068
+ border-radius: 7px 7px 0 0;
10069
+ background: transparent;
10070
+ color: var(--foreground, #1d1d1d);
10071
+ font-size: 12px;
10072
+ cursor: pointer;
10073
+ white-space: nowrap;
10074
+ }
10075
+ .q-spreadsheet__sheet-tab:hover {
10076
+ background: rgb(0 0 0 / 0.05);
10077
+ }
10078
+ .dark .q-spreadsheet__sheet-tab:hover,
10079
+ .q-spreadsheet--dark .q-spreadsheet__sheet-tab:hover {
10080
+ background: rgb(255 255 255 / 0.08);
10081
+ }
10082
+ .q-spreadsheet__sheet-tab--on {
10083
+ background: var(--card, #fff);
10084
+ border-color: var(--q-spreadsheet-border);
10085
+ color: var(--primary, #1976d2);
10086
+ font-weight: 600;
10087
+ }
10088
+ .dark .q-spreadsheet__sheet-tab--on,
10089
+ .q-spreadsheet--dark .q-spreadsheet__sheet-tab--on {
10090
+ background: var(--card, #1d1d1d);
10091
+ }
10092
+ .q-spreadsheet__sheet-name-label {
10093
+ overflow: hidden;
10094
+ text-overflow: ellipsis;
10095
+ }
10096
+ .q-spreadsheet__sheet-rename {
10097
+ width: 110px;
10098
+ padding: 2px 4px;
10099
+ border: 1px solid var(--primary, #1976d2);
10100
+ border-radius: 4px;
10101
+ background: transparent;
10102
+ color: inherit;
10103
+ font: inherit;
10104
+ font-size: 12px;
10105
+ outline: none;
10106
+ }
10107
+ .q-spreadsheet__sheet-close,
10108
+ .q-spreadsheet__sheet-add {
10109
+ display: inline-flex;
10110
+ align-items: center;
10111
+ justify-content: center;
10112
+ width: 18px;
10113
+ height: 18px;
10114
+ padding: 0;
10115
+ border: 0;
10116
+ border-radius: 4px;
10117
+ background: transparent;
10118
+ color: inherit;
10119
+ cursor: pointer;
10120
+ flex-shrink: 0;
10121
+ }
10122
+ .q-spreadsheet__sheet-close:hover {
10123
+ color: #c62828;
10124
+ background: rgb(198 40 40 / 0.12);
10125
+ }
10126
+ .q-spreadsheet__sheet-close .iconify {
10127
+ font-size: 12px;
10128
+ }
10129
+ .q-spreadsheet__sheet-add {
10130
+ margin: 0 2px 4px;
10131
+ color: #8b93a1;
10132
+ font-size: 15px;
10133
+ }
10134
+ .q-spreadsheet__sheet-add:hover {
10135
+ color: var(--primary, #1976d2);
10136
+ background: rgb(25 118 210 / 0.1);
10137
+ }
10138
+
10139
+ /* ─── Find & Replace ─── */
10140
+ .q-spreadsheet__find {
10141
+ display: flex;
10142
+ align-items: center;
10143
+ gap: 6px;
10144
+ padding: 4px 8px;
10145
+ border-bottom: 1px solid var(--q-spreadsheet-border);
10146
+ background: rgb(255 251 235);
10147
+ }
10148
+ .dark .q-spreadsheet__find,
10149
+ .q-spreadsheet--dark .q-spreadsheet__find {
10150
+ background: rgb(255 180 0 / 0.08);
10151
+ }
10152
+ .q-spreadsheet__find-icon {
10153
+ flex-shrink: 0;
10154
+ color: #8b93a1;
10155
+ font-size: 15px;
10156
+ }
10157
+ .q-spreadsheet__find-input {
10158
+ min-width: 0;
10159
+ padding: 4px 8px;
10160
+ border: 1px solid var(--q-spreadsheet-border);
10161
+ border-radius: 6px;
10162
+ background: transparent;
10163
+ color: inherit;
10164
+ font: inherit;
10165
+ font-size: 12.5px;
10166
+ outline: none;
10167
+ }
10168
+ .q-spreadsheet__find-input:focus {
10169
+ border-color: var(--primary, #1976d2);
10170
+ }
10171
+ .q-spreadsheet__find-input--repl {
10172
+ flex: 1;
10173
+ }
10174
+ .q-spreadsheet__find-count {
10175
+ font-size: 11.5px;
10176
+ color: #8b93a1;
10177
+ white-space: nowrap;
10178
+ }
10179
+ .q-spreadsheet__find-close {
10180
+ margin-left: 2px;
10181
+ }
10182
+ .q-spreadsheet__cell--find {
10183
+ background-color: rgb(255 235 59 / 0.35) !important;
10184
+ }
10185
+ .q-spreadsheet__cell--find-cur {
10186
+ background-color: rgb(255 214 0 / 0.45) !important;
10187
+ box-shadow: inset 0 0 0 2px #f5b301 !important;
10188
+ }
10189
+
10190
+ /* ─── Wrap text / hauteur auto / fusion / lignes masquées ─── */
10191
+ .q-spreadsheet__cell-text--wrap {
10192
+ white-space: pre-wrap;
10193
+ overflow: visible;
10194
+ text-overflow: clip;
10195
+ word-break: break-word;
10196
+ line-height: 1.35;
10197
+ }
10198
+ .q-spreadsheet__cell--merged {
10199
+ overflow: hidden;
10200
+ }
10201
+ .q-spreadsheet__cell--invalid {
10202
+ box-shadow: inset 0 0 0 2px #ef4444 !important;
10203
+ }
10204
+
10205
+ /* ─── Toolbar actif ─── */
10206
+ .q-spreadsheet__tool--on {
10207
+ color: var(--primary, #1976d2);
10208
+ background: rgb(25 118 210 / 0.14);
10209
+ }
10210
+
10211
+ /* ─── Panneau Conditional formatting ─── */
10212
+ .q-spreadsheet__cf {
10213
+ display: flex;
10214
+ align-items: center;
10215
+ flex-wrap: wrap;
10216
+ gap: 6px;
10217
+ padding: 5px 8px;
10218
+ border-bottom: 1px solid var(--q-spreadsheet-border);
10219
+ background: rgb(239 246 255);
10220
+ font-size: 12.5px;
10221
+ }
10222
+ .dark .q-spreadsheet__cf,
10223
+ .q-spreadsheet--dark .q-spreadsheet__cf {
10224
+ background: rgb(30 58 138 / 0.25);
10225
+ }
10226
+ .q-spreadsheet__cf-title {
10227
+ font-weight: 600;
10228
+ color: var(--primary, #1976d2);
10229
+ }
10230
+ .q-spreadsheet__cf-kind {
10231
+ padding: 4px 6px;
10232
+ border: 1px solid var(--q-spreadsheet-border);
10233
+ border-radius: 6px;
10234
+ background: transparent;
10235
+ color: inherit;
10236
+ font: inherit;
10237
+ font-size: 12px;
10238
+ }
10239
+ .q-spreadsheet__swatches--mini {
10240
+ gap: 3px;
10241
+ padding: 2px;
10242
+ }
10243
+ .q-spreadsheet__swatches--mini .q-spreadsheet__swatch {
10244
+ width: 14px;
10245
+ height: 14px;
10246
+ }
10247
+ .q-spreadsheet__cf-apply {
10248
+ padding: 3px 10px !important;
10249
+ }
10250
+ .q-spreadsheet__cf-list {
10251
+ display: flex;
10252
+ flex-wrap: wrap;
10253
+ gap: 4px;
10254
+ width: 100%;
10255
+ }
10256
+ .q-spreadsheet__cf-chip {
10257
+ display: inline-flex;
10258
+ align-items: center;
10259
+ gap: 4px;
10260
+ padding: 2px 6px;
10261
+ border: 1px solid var(--q-spreadsheet-border);
10262
+ border-radius: 999px;
10263
+ font-size: 11px;
10264
+ }
10265
+ .q-spreadsheet__cf-chip .q-spreadsheet__sheet-close {
10266
+ width: 14px;
10267
+ height: 14px;
10268
+ }
10269
+ .q-spreadsheet__cell--hide,
10270
+ .q-spreadsheet__colhead--hide {
10271
+ display: none;
10272
+ }
10273
+
10274
+ /* ─── Barre d'état + zoom ─── */
10275
+ .q-spreadsheet__status {
10276
+ display: flex;
10277
+ align-items: center;
10278
+ gap: 10px;
10279
+ min-height: 24px;
10280
+ padding: 2px 8px;
10281
+ border-top: 1px solid var(--q-spreadsheet-border);
10282
+ background: var(--q-spreadsheet-header-bg);
10283
+ font-size: 11.5px;
10284
+ color: #8b93a1;
10285
+ user-select: none;
10286
+ }
10287
+ .q-spreadsheet__status-cell {
10288
+ display: inline-flex;
10289
+ align-items: center;
10290
+ gap: 5px;
10291
+ font-weight: 600;
10292
+ color: var(--foreground, #1d1d1d);
10293
+ }
10294
+ .q-spreadsheet__status-item {
10295
+ color: #8b93a1;
10296
+ }
10297
+ .q-spreadsheet__status-stats {
10298
+ font-variant-numeric: tabular-nums;
10299
+ color: var(--primary, #1976d2);
10300
+ }
10301
+ .q-spreadsheet__status-chip {
10302
+ padding: 1px 7px;
10303
+ border-radius: 999px;
10304
+ background: rgb(25 118 210 / 0.12);
10305
+ color: var(--primary, #1976d2);
10306
+ }
10307
+ .q-spreadsheet__status-spacer {
10308
+ flex: 1;
10309
+ }
10310
+ .q-spreadsheet__status-zoom {
10311
+ display: inline-flex;
10312
+ align-items: center;
10313
+ gap: 2px;
10314
+ }
10315
+ .q-spreadsheet__status-zoom .q-spreadsheet__tool {
10316
+ width: 22px;
10317
+ height: 20px;
10318
+ }
10319
+ .q-spreadsheet__status-zoom-pct {
10320
+ min-width: 42px;
10321
+ padding: 2px 4px;
10322
+ border: 1px solid var(--q-spreadsheet-border);
10323
+ border-radius: 4px;
10324
+ background: transparent;
10325
+ color: inherit;
10326
+ font: inherit;
10327
+ font-size: 11px;
10328
+ text-align: center;
10329
+ cursor: pointer;
10330
+ }
10331
+ .q-spreadsheet__status-zoom-pct:hover {
10332
+ color: var(--primary, #1976d2);
10333
+ border-color: var(--primary, #1976d2);
10334
+ }
10335
+
10336
+ /* ─── Scroll animé (smooth) pour la virtualisation ─── */
10337
+ .q-spreadsheet__viewport {
10338
+ scroll-behavior: smooth;
10339
+ }
10340
+ .q-spreadsheet__viewport:focus {
10341
+ outline: none;
10342
+ }
10343
+ @media (prefers-reduced-motion: reduce) {
10344
+ .q-spreadsheet__viewport {
10345
+ scroll-behavior: auto;
10346
+ }
10347
+ }
10348
+
10349
+ /* ─── Onglets de feuilles en bas (Excel) ─── */
10350
+ .q-spreadsheet__sheets--bottom {
10351
+ align-items: flex-start;
10352
+ padding: 0 8px 6px;
10353
+ border-bottom: 0;
10354
+ border-top: 1px solid var(--q-spreadsheet-border);
10355
+ }
10356
+ .q-spreadsheet__sheets--bottom .q-spreadsheet__sheet-tab {
10357
+ border-top: 0;
10358
+ border-bottom: 1px solid transparent;
10359
+ border-radius: 0 0 7px 7px;
10360
+ }
10361
+ .q-spreadsheet__sheets--bottom .q-spreadsheet__sheet-tab--on {
10362
+ border-color: var(--q-spreadsheet-border);
10363
+ }
10364
+ .q-spreadsheet__sheets--bottom .q-spreadsheet__sheet-add {
10365
+ margin: 4px 2px 0;
10366
+ }
10367
+
10368
+ /* ─── Drag & drop réordonner lignes / colonnes ─── */
10369
+ .q-spreadsheet__rownum,
10370
+ .q-spreadsheet__colhead {
10371
+ cursor: grab;
10372
+ }
10373
+ .q-spreadsheet__rownum--drop,
10374
+ .q-spreadsheet__colhead--drop {
10375
+ background: rgb(25 118 210 / 0.22) !important;
10376
+ }
10377
+
10378
+ /* ===== QInteract (drag & resize de widgets) ===== */
10379
+ .q-interact {
10380
+ --q-interact-border: rgb(0 0 0 / 0.1);
10381
+ --q-interact-line: rgb(25 118 210 / 0.14);
10382
+ --q-interact-accent: var(--primary, #1976d2);
10383
+
10384
+ position: relative;
10385
+ width: 100%;
10386
+ overflow: hidden;
10387
+ border: 1px solid var(--q-interact-border);
10388
+ border-radius: 10px;
10389
+ background: rgb(0 0 0 / 0.015);
10390
+ user-select: none;
10391
+ }
10392
+ .q-interact--grid {
10393
+ background-image:
10394
+ linear-gradient(var(--q-interact-line) 1px, transparent 1px),
10395
+ linear-gradient(90deg, var(--q-interact-line) 1px, transparent 1px);
10396
+ background-position: -1px -1px;
10397
+ }
10398
+ .q-interact--static {
10399
+ cursor: default;
10400
+ }
10401
+ .q-interact__item {
10402
+ position: absolute;
10403
+ display: flex;
10404
+ flex-direction: column;
10405
+ border: 1px solid var(--q-interact-border);
10406
+ border-radius: 8px;
10407
+ background: var(--card, #fff);
10408
+ box-shadow: 0 1px 3px rgb(0 0 0 / 0.08);
10409
+ cursor: grab;
10410
+ touch-action: none;
10411
+ }
10412
+ .q-interact__item--active {
10413
+ border-color: var(--q-interact-accent);
10414
+ box-shadow: 0 0 0 1.5px var(--q-interact-accent), 0 6px 18px rgb(0 0 0 / 0.12);
10415
+ z-index: 10;
10416
+ }
10417
+ .q-interact__item--dragging,
10418
+ .q-interact__item--resizing {
10419
+ z-index: 11;
10420
+ cursor: grabbing;
10421
+ box-shadow: 0 12px 26px rgb(0 0 0 / 0.18);
10422
+ }
10423
+ .q-interact__handle {
10424
+ display: flex;
10425
+ align-items: center;
10426
+ gap: 6px;
10427
+ padding: 5px 10px;
10428
+ font-size: 12px;
10429
+ font-weight: 600;
10430
+ color: var(--foreground, #1d1d1d);
10431
+ border-bottom: 1px solid var(--q-interact-border);
10432
+ background: rgb(0 0 0 / 0.03);
10433
+ cursor: grab;
10434
+ }
10435
+ .q-interact--dense .q-interact__handle {
10436
+ padding: 3px 8px;
10437
+ font-size: 11px;
10438
+ }
10439
+ .q-interact__grip {
10440
+ display: inline-flex;
10441
+ color: #8b93a1;
10442
+ }
10443
+ .q-interact__content {
10444
+ flex: 1;
10445
+ min-height: 0;
10446
+ overflow: hidden;
10447
+ }
10448
+ .q-interact__default {
10449
+ padding: 12px;
10450
+ font-size: 13px;
10451
+ }
10452
+ .q-interact__resize {
10453
+ position: absolute;
10454
+ right: 0;
10455
+ bottom: 0;
10456
+ z-index: 2;
10457
+ width: 18px;
10458
+ height: 18px;
10459
+ cursor: nwse-resize;
10460
+ }
10461
+ .q-interact__resize::after {
10462
+ content: "";
10463
+ position: absolute;
10464
+ right: 3px;
10465
+ bottom: 3px;
10466
+ width: 8px;
10467
+ height: 8px;
10468
+ border-right: 2px solid var(--q-interact-accent);
10469
+ border-bottom: 2px solid var(--q-interact-accent);
10470
+ opacity: 0.55;
10471
+ }
10472
+ .q-interact__item:hover .q-interact__resize::after {
10473
+ opacity: 1;
10474
+ }
10475
+ .q-interact--dark {
10476
+ --q-interact-border: rgb(255 255 255 / 0.12);
10477
+ background: rgb(255 255 255 / 0.02);
10478
+ }
10479
+ .q-interact--dark .q-interact__item {
10480
+ background: var(--card, #1d1d1d);
10481
+ color: #ececef;
10482
+ }
10483
+ .q-interact--dark .q-interact__handle {
10484
+ background: rgb(255 255 255 / 0.05);
10485
+ }
10486
+
10487
+ /* ===== QBoard (dashboard type Power BI) ===== */
10488
+ .q-board {
10489
+ --q-board-line: rgb(25 118 210 / 0.12);
10490
+ --q-board-label: rgb(139 147 161 / 0.6);
10491
+
10492
+ position: relative;
10493
+ width: 100%;
10494
+ border: 1px solid var(--q-interact-border, rgb(0 0 0 / 0.1));
10495
+ border-radius: 10px;
10496
+ background: rgb(0 0 0 / 0.02);
10497
+ overflow: hidden;
10498
+ }
10499
+ .q-board__grid {
10500
+ position: absolute;
10501
+ inset: 0;
10502
+ background-image:
10503
+ linear-gradient(var(--q-board-line) 1px, transparent 1px),
10504
+ linear-gradient(90deg, var(--q-board-line) 1px, transparent 1px);
10505
+ background-position: -1px -1px;
10506
+ pointer-events: none;
10507
+ }
10508
+ .q-board__cell-label {
10509
+ position: absolute;
10510
+ display: flex;
10511
+ align-items: center;
10512
+ justify-content: center;
10513
+ font-size: 10px;
10514
+ color: var(--q-board-label);
10515
+ user-select: none;
10516
+ }
10517
+ .q-board__cell-label--col {
10518
+ top: 2px;
10519
+ }
10520
+ .q-board__cell-label--row {
10521
+ left: 3px;
10522
+ }
10523
+ .q-board__interact {
10524
+ position: absolute !important;
10525
+ inset: 0 !important;
10526
+ width: 100% !important;
10527
+ height: 100% !important;
10528
+ border: 0 !important;
10529
+ border-radius: 0 !important;
10530
+ background: transparent !important;
10531
+ box-shadow: none !important;
10532
+ }
10533
+ .q-board--dark {
10534
+ --q-board-line: rgb(255 255 255 / 0.1);
10535
+ background: rgb(255 255 255 / 0.02);
10536
+ }
10537
+ .q-board--dense .q-board__cell-label {
10538
+ font-size: 9px;
10539
+ }