@gyramais/gyra-design 0.2.49 → 0.2.52

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 (56) hide show
  1. package/dist/components/ContextMenu/index.js +1 -1
  2. package/dist/components/ContextMenu/index.js.map +1 -1
  3. package/dist/components/Drawer/Drawer.d.ts +25 -1
  4. package/dist/components/Drawer/index.js +7 -7
  5. package/dist/components/Drawer/index.js.map +1 -1
  6. package/dist/components/DropdownMenu/index.js +1 -1
  7. package/dist/components/DropdownMenu/index.js.map +1 -1
  8. package/dist/components/Modal/Modal.d.ts +11 -1
  9. package/dist/components/Modal/index.js +9 -9
  10. package/dist/components/Modal/index.js.map +1 -1
  11. package/dist/components/MultiSelectPicker/index.js +7 -7
  12. package/dist/components/MultiSelectPicker/index.js.map +1 -1
  13. package/dist/components/OperatorPicker/index.js +1 -1
  14. package/dist/components/OperatorPicker/index.js.map +1 -1
  15. package/dist/components/PickerPopover/index.js +1 -1
  16. package/dist/components/PickerPopover/index.js.map +1 -1
  17. package/dist/components/Popover/Popover.d.ts +16 -1
  18. package/dist/components/Popover/index.js +1 -1
  19. package/dist/components/Popover/index.js.map +1 -1
  20. package/dist/components/Rail/Rail.d.ts +19 -5
  21. package/dist/components/Rail/RailInlineSelect.d.ts +44 -0
  22. package/dist/components/Rail/RailMini.d.ts +11 -7
  23. package/dist/components/Rail/RailStep.d.ts +8 -13
  24. package/dist/components/Rail/index.d.ts +1 -0
  25. package/dist/components/Rail/index.js +7 -7
  26. package/dist/components/Rail/index.js.map +1 -1
  27. package/dist/components/Rail/labels.d.ts +34 -5
  28. package/dist/components/Rail/types.d.ts +53 -8
  29. package/dist/components/RuleSearchPicker/index.js +1 -1
  30. package/dist/components/RuleSearchPicker/index.js.map +1 -1
  31. package/dist/components/SegmentedPicker/index.js +1 -1
  32. package/dist/components/SegmentedPicker/index.js.map +1 -1
  33. package/dist/emails/balance-sheet-finalized/components/Drawer/Drawer.d.ts +25 -1
  34. package/dist/emails/balance-sheet-finalized/components/Modal/Modal.d.ts +11 -1
  35. package/dist/emails/balance-sheet-finalized/components/Popover/Popover.d.ts +16 -1
  36. package/dist/emails/balance-sheet-finalized/components/Rail/Rail.d.ts +19 -5
  37. package/dist/emails/balance-sheet-finalized/components/Rail/RailInlineSelect.d.ts +44 -0
  38. package/dist/emails/balance-sheet-finalized/components/Rail/RailMini.d.ts +11 -7
  39. package/dist/emails/balance-sheet-finalized/components/Rail/RailStep.d.ts +8 -13
  40. package/dist/emails/balance-sheet-finalized/components/Rail/index.d.ts +1 -0
  41. package/dist/emails/balance-sheet-finalized/components/Rail/labels.d.ts +34 -5
  42. package/dist/emails/balance-sheet-finalized/components/Rail/types.d.ts +53 -8
  43. package/dist/emails/balance-sheet-finalized/index.d.ts +33 -64
  44. package/dist/emails/email/components/Drawer/Drawer.d.ts +25 -1
  45. package/dist/emails/email/components/Modal/Modal.d.ts +11 -1
  46. package/dist/emails/email/components/Popover/Popover.d.ts +16 -1
  47. package/dist/emails/email/components/Rail/Rail.d.ts +19 -5
  48. package/dist/emails/email/components/Rail/RailInlineSelect.d.ts +44 -0
  49. package/dist/emails/email/components/Rail/RailMini.d.ts +11 -7
  50. package/dist/emails/email/components/Rail/RailStep.d.ts +8 -13
  51. package/dist/emails/email/components/Rail/index.d.ts +1 -0
  52. package/dist/emails/email/components/Rail/labels.d.ts +34 -5
  53. package/dist/emails/email/components/Rail/types.d.ts +53 -8
  54. package/dist/emails/email/index.d.ts +94 -64
  55. package/dist/index.css +769 -249
  56. package/package.json +1 -1
package/dist/index.css CHANGED
@@ -732,6 +732,9 @@ video {
732
732
  .max-w-\[500px\] {
733
733
  max-width: 500px;
734
734
  }
735
+ .max-w-full {
736
+ max-width: 100%;
737
+ }
735
738
  .shrink-0 {
736
739
  flex-shrink: 0;
737
740
  }
@@ -755,9 +758,6 @@ video {
755
758
  .flex-col {
756
759
  flex-direction: column;
757
760
  }
758
- .flex-wrap {
759
- flex-wrap: wrap;
760
- }
761
761
  .items-center {
762
762
  align-items: center;
763
763
  }
@@ -776,6 +776,9 @@ video {
776
776
  .gap-3 {
777
777
  gap: 0.75rem;
778
778
  }
779
+ .gap-4 {
780
+ gap: 1rem;
781
+ }
779
782
  .gap-x-1 {
780
783
  -moz-column-gap: 0.25rem;
781
784
  column-gap: 0.25rem;
@@ -889,6 +892,9 @@ video {
889
892
  font-size: 1rem !important;
890
893
  line-height: 1.5rem !important;
891
894
  }
895
+ .text-\[13px\] {
896
+ font-size: 13px;
897
+ }
892
898
  .text-\[16px\] {
893
899
  font-size: 16px;
894
900
  }
@@ -919,9 +925,16 @@ video {
919
925
  .uppercase {
920
926
  text-transform: uppercase;
921
927
  }
928
+ .capitalize {
929
+ text-transform: capitalize;
930
+ }
922
931
  .italic {
923
932
  font-style: italic;
924
933
  }
934
+ .tabular-nums {
935
+ --tw-numeric-spacing: tabular-nums;
936
+ font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
937
+ }
925
938
  .leading-none {
926
939
  line-height: 1;
927
940
  }
@@ -1136,6 +1149,11 @@ video {
1136
1149
  --gyra-blue-subtle: #F5F8FF;
1137
1150
  --gyra-teal: #1FB58A;
1138
1151
  --gyra-teal-light: #E6F7F1;
1152
+ /* Teal escurecido para texto/glifo sobre --gyra-teal-light (o brand teal
1153
+ puro da 2,36:1 ali e reprova em AA). Par medido: 4,77:1 sobre
1154
+ --gyra-teal-light e 5,29:1 sobre branco, na mesma faixa dos
1155
+ --status-*-text. */
1156
+ --gyra-teal-text: #0F7A60;
1139
1157
  --gyra-black: #1D1D1F;
1140
1158
 
1141
1159
  /* ---- Neutrals (Apple gray scale) ----------------------------------- */
@@ -5587,78 +5605,110 @@ h6 {
5587
5605
 
5588
5606
  /* v2 Drawer chrome — flat-first: hairline borders, no soft halo. */
5589
5607
  .gyramais-drawer {
5590
- min-width: 100%;
5591
- max-width: 100%;
5592
- --tw-shadow: 0 0 #0000;
5593
- --tw-shadow-colored: 0 0 #0000;
5594
- box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
5608
+ min-width: 100%;
5609
+ max-width: 100%;
5610
+ --tw-shadow: 0 0 #0000;
5611
+ --tw-shadow-colored: 0 0 #0000;
5612
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
5595
5613
  }
5596
5614
  @media (min-width: 768px) {
5597
- .gyramais-drawer {
5598
- min-width: 0px;
5599
- max-width: 100%
5600
- }
5615
+ .gyramais-drawer {
5616
+ min-width: 0px;
5617
+ max-width: 100%;
5618
+ }
5601
5619
  }
5602
5620
 
5603
5621
  .gyramais-drawer .gyramais-drawer-container {
5604
- display: flex;
5605
- height: 100%;
5606
- flex-direction: column;
5607
- justify-content: space-between
5622
+ display: flex;
5623
+ height: 100%;
5624
+ flex-direction: column;
5625
+ justify-content: space-between;
5608
5626
  }
5609
5627
 
5610
5628
  .gyramais-drawer .gyramais-drawer-header {
5611
- display: flex;
5612
- align-items: center;
5613
- justify-content: space-between;
5614
- border-bottom-width: 1px;
5615
- border-color: var(--color-border-secondary);
5616
- padding-left: 24px;
5617
- padding-right: 24px;
5618
- padding-top: 20px;
5619
- padding-bottom: 20px
5629
+ display: flex;
5630
+ align-items: center;
5631
+ justify-content: space-between;
5632
+ border-bottom-width: 1px;
5633
+ border-color: var(--color-border-secondary);
5634
+ padding-left: 24px;
5635
+ padding-right: 24px;
5636
+ padding-top: 20px;
5637
+ padding-bottom: 20px;
5620
5638
  }
5621
5639
 
5622
5640
  .gyramais-drawer .gyramais-drawer-title {
5623
- margin: 0px;
5624
- font-size: 18px;
5625
- font-weight: 600;
5626
- color: var(--color-text-primary)
5641
+ margin: 0px;
5642
+ font-size: 18px;
5643
+ font-weight: 600;
5644
+ color: var(--color-text-primary);
5627
5645
  }
5628
5646
  .gyramais-drawer .gyramais-drawer-subtitle {
5629
- margin-top: 0.25rem;
5630
- font-size: 0.875rem;
5631
- line-height: 1.25rem;
5632
- color: var(--color-text-secondary)
5647
+ margin-top: 0.25rem;
5648
+ font-size: 0.875rem;
5649
+ line-height: 1.25rem;
5650
+ color: var(--color-text-secondary);
5633
5651
  }
5634
5652
 
5635
5653
  .gyramais-drawer .gyramais-drawer-content {
5636
- height: 100%;
5637
- overflow-y: auto;
5638
- padding-left: 24px;
5639
- padding-right: 24px;
5640
- padding-top: 20px;
5641
- padding-bottom: 20px
5654
+ height: 100%;
5655
+ overflow-y: auto;
5656
+ padding-left: 24px;
5657
+ padding-right: 24px;
5658
+ padding-top: 20px;
5659
+ padding-bottom: 20px;
5642
5660
  }
5643
5661
 
5644
5662
  .gyramais-drawer .gyramais-drawer-footer {
5645
- border-top-width: 1px;
5646
- border-color: var(--color-border-secondary);
5647
- padding-left: 24px;
5648
- padding-right: 24px;
5649
- padding-top: 20px;
5650
- padding-bottom: 20px
5663
+ border-top-width: 1px;
5664
+ border-color: var(--color-border-secondary);
5665
+ padding-left: 24px;
5666
+ padding-right: 24px;
5667
+ padding-top: 20px;
5668
+ padding-bottom: 20px;
5669
+ }
5670
+
5671
+ /* Botao de fechar de verdade: <button aria-label="Fechar">, focavel pelo
5672
+ teclado, com anel de foco via ::after (o index.css global mata o outline
5673
+ de todo elemento; o pseudo-elemento nao entra nessa regra). A caixa e de
5674
+ 24px, o tamanho que o icone solto ja ocupava, para o cabecalho nao mudar
5675
+ de altura em nenhum consumidor. */
5676
+ .gyramais-drawer .gyramais-drawer-close {
5677
+ position: relative;
5678
+ margin: 0px;
5679
+ display: flex;
5680
+ height: 24px;
5681
+ width: 24px;
5682
+ flex-shrink: 0;
5683
+ cursor: pointer;
5684
+ align-items: center;
5685
+ justify-content: center;
5686
+ border-radius: var(--radius-sm);
5687
+ border-width: 0px;
5688
+ background-color: transparent;
5689
+ padding: 0px;
5690
+ color: var(--color-text-secondary);
5691
+ transition-duration: 150ms;
5692
+ animation-duration: 150ms;
5693
+ }
5694
+ .gyramais-drawer .gyramais-drawer-close:hover {
5695
+ color: var(--color-text-primary);
5696
+ }
5697
+ .gyramais-drawer .gyramais-drawer-close:focus-visible::after {
5698
+ content: "";
5699
+ pointer-events: none;
5700
+ position: absolute;
5701
+ inset: -4px;
5702
+ border-radius: var(--radius-md);
5703
+ border-width: 2px;
5704
+ border-color: var(--gyra-blue);
5651
5705
  }
5652
5706
 
5653
5707
  .gyramais-drawer .gyramais-drawer-close-icon {
5654
- cursor: pointer;
5655
- font-size: 24px;
5656
- color: var(--color-text-secondary);
5657
- transition-duration: 150ms;
5658
- animation-duration: 150ms
5659
- }
5660
- .gyramais-drawer .gyramais-drawer-close-icon:hover {
5661
- color: var(--color-text-primary)
5708
+ cursor: pointer;
5709
+ font-size: 24px;
5710
+ transition-duration: 150ms;
5711
+ animation-duration: 150ms;
5662
5712
  }
5663
5713
 
5664
5714
  /* v2 DropdownMenu chrome — hairline border + subtle elevation, flat items. */
@@ -6985,11 +7035,38 @@ h6 {
6985
7035
  20px;
6986
7036
  }
6987
7037
 
6988
- .gyramais-modal .gyramais-modal-close-icon {
7038
+ /* Botao de fechar de verdade: <button aria-label="Fechar">, focavel pelo
7039
+ teclado, com anel de foco via ::after (o index.css global mata o outline
7040
+ de todo elemento; o pseudo-elemento nao entra nessa regra). A caixa e de
7041
+ 24px, o tamanho que o icone solto ja ocupava, para o cabecalho nao mudar
7042
+ de altura em nenhum consumidor. */
7043
+ .gyramais-modal .gyramais-modal-close {
7044
+ position:
7045
+ relative;
7046
+ margin:
7047
+ 0px;
7048
+ display:
7049
+ flex;
7050
+ height:
7051
+ 24px;
7052
+ width:
7053
+ 24px;
7054
+ flex-shrink:
7055
+ 0;
6989
7056
  cursor:
6990
7057
  pointer;
6991
- font-size:
6992
- 24px;
7058
+ align-items:
7059
+ center;
7060
+ justify-content:
7061
+ center;
7062
+ border-radius:
7063
+ var(--radius-sm);
7064
+ border-width:
7065
+ 0px;
7066
+ background-color:
7067
+ transparent;
7068
+ padding:
7069
+ 0px;
6993
7070
  color:
6994
7071
  var(--color-text-secondary);
6995
7072
  transition-duration:
@@ -6997,10 +7074,42 @@ h6 {
6997
7074
  animation-duration:
6998
7075
  150ms;
6999
7076
  }
7000
- .gyramais-modal .gyramais-modal-close-icon:hover {
7077
+ .gyramais-modal .gyramais-modal-close:hover:not(:disabled) {
7001
7078
  color:
7002
7079
  var(--color-text-primary);
7003
7080
  }
7081
+ .gyramais-modal .gyramais-modal-close:disabled {
7082
+ cursor:
7083
+ not-allowed;
7084
+ opacity:
7085
+ 0.6;
7086
+ }
7087
+ .gyramais-modal .gyramais-modal-close:focus-visible::after {
7088
+ content: "";
7089
+ pointer-events:
7090
+ none;
7091
+ position:
7092
+ absolute;
7093
+ inset:
7094
+ -4px;
7095
+ border-radius:
7096
+ var(--radius-md);
7097
+ border-width:
7098
+ 2px;
7099
+ border-color:
7100
+ var(--gyra-blue);
7101
+ }
7102
+
7103
+ .gyramais-modal .gyramais-modal-close-icon {
7104
+ cursor:
7105
+ pointer;
7106
+ font-size:
7107
+ 24px;
7108
+ transition-duration:
7109
+ 150ms;
7110
+ animation-duration:
7111
+ 150ms;
7112
+ }
7004
7113
 
7005
7114
  @keyframes modal-entry {
7006
7115
  0% {
@@ -7268,9 +7377,13 @@ h6 {
7268
7377
  --tw-text-opacity: 1;
7269
7378
  color: rgb(98 105 118 / var(--tw-text-opacity, 1))
7270
7379
  }
7271
- /* Rail — a esteira Gyra+ (lista vertical de etapas + conector condicional).
7380
+ /* Rail, a esteira Gyra+ (lista vertical de etapas + conector condicional).
7272
7381
  Todas as cores saem dos tokens do design system: nada de hex solto aqui.
7273
7382
 
7383
+ Escala: tipografia 15 (nome) / 13 (linha 2) / 12 (estado, conector, motivo);
7384
+ espacamento em multiplos de 4: padding do cartao 12, gap entre linhas 2,
7385
+ gap entre cartoes 20 (via o conector de 44px: 24 de pilula + 10 + 10).
7386
+
7274
7387
  Armadilha do repositorio: o index.css global tem `* { outline: none
7275
7388
  !important }` e `*:focus { box-shadow: none !important }`. Anel de foco
7276
7389
  desenhado no proprio elemento morre em silencio. Por isso o foco visivel
@@ -7291,82 +7404,131 @@ h6 {
7291
7404
  padding: 0px;
7292
7405
  }
7293
7406
 
7407
+ /* Coluna do trilho: 8px de marcador + 12px de folga ate o cartao. */
7294
7408
  .gyramais-rail-item {
7295
7409
  position: relative;
7296
7410
  display: flex;
7297
7411
  flex-direction: column;
7298
- padding-left: 30px;
7412
+ padding-left: 20px;
7299
7413
  }
7300
7414
 
7301
- /* O trilho: uma linha continua atras de todas as etapas. */
7302
- .gyramais-rail-item::before {
7415
+ /* ---- Trilho: linha de 1px na cor de borda ------------------------------
7416
+ Cada peca (conector, etapa) desenha o seu proprio segmento, assim a linha
7417
+ comeca no marcador da primeira etapa e termina no marcador da ultima. */
7418
+
7419
+ .gyramais-rail-connector::before,
7420
+ .gyramais-rail-step::before {
7303
7421
  content: "";
7304
7422
  position: absolute;
7305
- left: 11px;
7306
- top: 0px;
7307
- bottom: 0px;
7308
- width: 2px;
7309
- background-color: var(--color-border-secondary);
7423
+ left: -16.5px;
7424
+ top: 0;
7425
+ bottom: 0;
7426
+ width: 1px;
7427
+ background: var(--color-border-secondary);
7310
7428
  }
7311
- .gyramais-rail-item:first-child::before {
7312
- top: 26px;
7429
+ .gyramais-rail-item:first-child .gyramais-rail-step::before {
7430
+ top: 23px;
7313
7431
  }
7314
- .gyramais-rail-item:last-child::before {
7432
+ .gyramais-rail-item:last-child .gyramais-rail-step::before {
7315
7433
  bottom: auto;
7316
- height: 26px;
7434
+ height: 23px;
7435
+ }
7436
+ .gyramais-rail-item:first-child:last-child .gyramais-rail-step::before {
7437
+ display: none;
7438
+ }
7439
+
7440
+ /* Linha do tempo (modo run): o trilho fica preenchido ate a etapa atual e
7441
+ apagado depois. E a mesma linha de 1px, so que agora ela diz onde a
7442
+ execucao esta sem precisar de mais nada na tela. */
7443
+ .gyramais-rail-run .gyramais-rail-item.is-tracked .gyramais-rail-connector::before,
7444
+ .gyramais-rail-run .gyramais-rail-item.is-tracked .gyramais-rail-step::before {
7445
+ background: var(--gyra-blue);
7446
+ }
7447
+ /* Na etapa atual o preenchimento para no marcador (23px, a mesma altura em
7448
+ que a primeira etapa comeca a desenhar o trilho). */
7449
+ .gyramais-rail-run .gyramais-rail-item.is-current .gyramais-rail-step::before {
7450
+ background: linear-gradient(
7451
+ to bottom,
7452
+ var(--gyra-blue) 23px,
7453
+ var(--color-border-secondary) 23px
7454
+ );
7455
+ }
7456
+ /* A primeira etapa ja desenha a partir do marcador: se ela e a atual, nao
7457
+ sobra nada preenchido abaixo dele. */
7458
+ .gyramais-rail-run .gyramais-rail-item:first-child.is-current .gyramais-rail-step::before {
7459
+ background: var(--color-border-secondary);
7317
7460
  }
7318
7461
 
7319
- /* ---- Conector ---------------------------------------------------------- */
7462
+ /* ---- Conector (pilula de 24px alinhada ao trilho) ----------------------- */
7320
7463
 
7321
7464
  .gyramais-rail-connector {
7465
+ position: relative;
7322
7466
  display: flex;
7323
- min-height: 12px;
7467
+ min-height: 44px;
7324
7468
  align-items: center;
7325
- gap: 8px;
7326
- padding-top: 6px;
7327
- padding-bottom: 6px;
7328
- }
7329
- .gyramais-rail-item:first-child .gyramais-rail-connector:empty {
7330
- display: none;
7469
+ gap: 6px;
7470
+ padding-top: 10px;
7471
+ padding-bottom: 10px;
7331
7472
  }
7332
7473
 
7333
7474
  .gyramais-rail-gate-editor {
7334
7475
  display: inline-flex;
7335
7476
  }
7336
7477
 
7337
- .gyramais-rail-gate.gyramais-segmented-picker {
7338
- padding-top: 4px;
7339
- padding-bottom: 4px;
7340
- padding-left: 10px;
7341
- padding-right: 10px;
7342
- font-size: 12.5px;
7478
+ /* A pilula editavel e o SegmentedPicker "secondary" com a densidade da
7479
+ esteira: 24px de altura, 12px de texto, 12px de icone. */
7480
+ .gyramais-rail-gate.gyramais-segmented-picker.gyramais-segmented-picker-secondary {
7481
+ height: 24px;
7482
+ gap: 4px;
7483
+ border-radius: 9999px;
7484
+ border-width: 1px;
7485
+ border-color: var(--color-border-secondary);
7486
+ background-color: var(--color-surface-primary);
7487
+ padding-top: 0px;
7488
+ padding-bottom: 0px;
7489
+ padding-left: 6px;
7490
+ padding-right: 6px;
7491
+ font-size: var(--fs-footnote);
7343
7492
  font-weight: 500;
7493
+ line-height: 1;
7494
+ color: var(--color-text-secondary);
7495
+ }
7496
+ .gyramais-rail-gate.gyramais-segmented-picker.gyramais-segmented-picker-secondary:hover {
7497
+ border-color: var(--color-border-primary);
7498
+ background-color: var(--color-surface-secondary);
7499
+ color: var(--color-text-primary);
7500
+ }
7501
+ .gyramais-rail-gate.gyramais-segmented-picker-secondary .gyramais-segmented-picker-icon svg {
7502
+ font-size: 12px;
7503
+ }
7504
+ .gyramais-rail-gate.gyramais-segmented-picker-secondary .gyramais-segmented-picker-chev {
7505
+ margin-left: 0px;
7506
+ font-size: 14px;
7344
7507
  }
7345
7508
 
7346
7509
  .gyramais-rail-gate-static {
7347
7510
  display: inline-flex;
7511
+ height: 24px;
7348
7512
  align-items: center;
7349
- gap: 6px;
7513
+ gap: 4px;
7350
7514
  border-radius: 9999px;
7351
7515
  border-width: 1px;
7352
7516
  border-color: var(--color-border-secondary);
7353
- background-color: var(--color-surface-secondary);
7354
- padding-left: 10px;
7355
- padding-right: 10px;
7356
- padding-top: 3px;
7357
- padding-bottom: 3px;
7358
- font-size: 12.5px;
7517
+ background-color: var(--color-surface-primary);
7518
+ padding-left: 8px;
7519
+ padding-right: 8px;
7520
+ font-size: var(--fs-footnote);
7359
7521
  font-weight: 500;
7522
+ line-height: 1;
7360
7523
  color: var(--color-text-secondary);
7361
7524
  }
7362
7525
  .gyramais-rail-gate-static.is-passed {
7363
- border-color: var(--color-success);
7526
+ border-color: var(--color-success-light);
7364
7527
  background-color: var(--color-success-light);
7365
7528
  color: var(--status-success-text);
7366
7529
  }
7367
7530
  .gyramais-rail-gate-static.is-blocked {
7368
- border-color: var(--color-border-primary);
7369
- background-color: var(--color-surface-secondary);
7531
+ border-style: dashed;
7370
7532
  color: var(--color-text-tertiary);
7371
7533
  }
7372
7534
 
@@ -7381,58 +7543,78 @@ h6 {
7381
7543
 
7382
7544
  /* Acento por condicao, valendo tanto na pilula editavel quanto na estatica. */
7383
7545
  .gyramais-rail-gate.is-approved .gyramais-segmented-picker-icon,
7384
- .gyramais-rail-gate.is-approved.gyramais-rail-gate-static .gyramais-rail-gate-icon {
7546
+ .gyramais-rail-gate.is-approved.gyramais-rail-gate-static:not(.is-blocked) .gyramais-rail-gate-icon {
7385
7547
  color: var(--color-success);
7386
7548
  }
7387
7549
  .gyramais-rail-gate.is-alert .gyramais-segmented-picker-icon,
7388
- .gyramais-rail-gate.is-alert.gyramais-rail-gate-static .gyramais-rail-gate-icon {
7550
+ .gyramais-rail-gate.is-alert.gyramais-rail-gate-static:not(.is-blocked) .gyramais-rail-gate-icon {
7389
7551
  color: var(--color-warning);
7390
7552
  }
7391
7553
  .gyramais-rail-gate.is-reproved .gyramais-segmented-picker-icon,
7392
- .gyramais-rail-gate.is-reproved.gyramais-rail-gate-static .gyramais-rail-gate-icon {
7554
+ .gyramais-rail-gate.is-reproved.gyramais-rail-gate-static:not(.is-blocked) .gyramais-rail-gate-icon {
7393
7555
  color: var(--color-danger);
7394
7556
  }
7557
+ .gyramais-rail-gate-static.is-passed .gyramais-rail-gate-icon {
7558
+ color: var(--status-success-text);
7559
+ }
7395
7560
 
7396
7561
  /* ---- Inserir / adicionar etapa ----------------------------------------- */
7397
7562
 
7398
- .gyramais-rail-insert,
7399
- .gyramais-rail-add {
7563
+ /* O "+" entre etapas so aparece quando o conector esta em hover ou com foco:
7564
+ e uma acao secundaria e nao precisa competir com a pilula. */
7565
+ .gyramais-rail-insert {
7400
7566
  position: relative;
7401
7567
  display: inline-flex;
7568
+ height: 20px;
7569
+ width: 20px;
7402
7570
  cursor: pointer;
7403
7571
  align-items: center;
7404
7572
  justify-content: center;
7405
- gap: 6px;
7573
+ border-radius: 9999px;
7406
7574
  border-width: 1px;
7407
7575
  border-style: dashed;
7408
7576
  border-color: var(--color-border-primary);
7409
7577
  background-color: var(--color-surface-primary);
7410
7578
  color: var(--color-text-tertiary);
7411
- transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
7579
+ opacity: 0;
7580
+ transition-property: opacity;
7412
7581
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7413
- transition-duration: 200ms;
7414
- animation-duration: 200ms;
7582
+ transition-duration: 150ms;
7583
+ animation-duration: 150ms;
7415
7584
  }
7416
-
7417
- .gyramais-rail-insert {
7418
- height: 22px;
7419
- width: 22px;
7420
- flex-shrink: 0;
7421
- border-radius: 9999px;
7585
+ .gyramais-rail-connector:hover .gyramais-rail-insert,
7586
+ .gyramais-rail-connector:focus-within .gyramais-rail-insert,
7587
+ .gyramais-rail-insert:focus-visible {
7588
+ opacity: 1;
7589
+ }
7590
+ @media (hover: none) {
7591
+ .gyramais-rail-insert {
7592
+ opacity: 1;
7593
+ }
7422
7594
  }
7423
7595
 
7424
7596
  .gyramais-rail-add {
7425
- margin-left: 30px;
7426
- margin-top: 10px;
7597
+ position: relative;
7598
+ margin-left: 20px;
7599
+ margin-top: 4px;
7600
+ display: inline-flex;
7601
+ height: 28px;
7602
+ cursor: pointer;
7603
+ align-items: center;
7604
+ gap: 6px;
7427
7605
  align-self: flex-start;
7428
- border-radius: var(--radius-md);
7429
- padding-left: 14px;
7430
- padding-right: 14px;
7431
- padding-top: 7px;
7432
- padding-bottom: 7px;
7433
- font-size: 13px;
7606
+ border-radius: var(--radius-sm);
7607
+ border-width: 0px;
7608
+ background-color: transparent;
7609
+ padding-left: 8px;
7610
+ padding-right: 8px;
7611
+ font-size: var(--fs-subheadline);
7434
7612
  font-weight: 500;
7435
7613
  color: var(--color-text-secondary);
7614
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
7615
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7616
+ transition-duration: 150ms;
7617
+ animation-duration: 150ms;
7436
7618
  }
7437
7619
 
7438
7620
  .gyramais-rail-insert:hover,
@@ -7446,8 +7628,10 @@ h6 {
7446
7628
  .gyramais-rail-add:focus-visible::after,
7447
7629
  .gyramais-rail-step:focus-visible::after,
7448
7630
  .gyramais-rail-leaf:focus-visible::after,
7631
+ .gyramais-rail-leaves-toggle:focus-visible::after,
7449
7632
  .gyramais-rail-step-open:focus-visible::after,
7450
- .gyramais-rail-step-action:focus-visible::after {
7633
+ .gyramais-rail-step-action:focus-visible::after,
7634
+ .gyramais-rail-inline-select:focus-visible::after {
7451
7635
  content: "";
7452
7636
  pointer-events: none;
7453
7637
  position: absolute;
@@ -7460,181 +7644,468 @@ h6 {
7460
7644
  .gyramais-rail-step-action:focus-visible::after {
7461
7645
  border-radius: 9999px;
7462
7646
  }
7647
+ .gyramais-rail-inline-select:focus-visible::after,
7648
+ .gyramais-rail-leaves-toggle:focus-visible::after,
7649
+ .gyramais-rail-step-open:focus-visible::after {
7650
+ inset: -2px;
7651
+ border-radius: var(--radius-sm);
7652
+ }
7463
7653
 
7464
7654
  /* ---- Etapa ------------------------------------------------------------- */
7465
7655
 
7466
7656
  .gyramais-rail-step {
7467
7657
  position: relative;
7468
- padding-bottom: 6px;
7469
7658
  }
7470
7659
 
7660
+ /* Marcador de 8px sobre o trilho, centrado na linha 1 do cartao
7661
+ (1px de borda + 12px de padding + (20px de linha - 8px) / 2 = 19px). */
7471
7662
  .gyramais-rail-node {
7472
7663
  position: absolute;
7473
- left: -26px;
7474
- top: 20px;
7475
- height: 16px;
7476
- width: 16px;
7664
+ left: -20px;
7665
+ top: 19px;
7666
+ z-index: 1;
7667
+ height: 8px;
7668
+ width: 8px;
7477
7669
  border-radius: 9999px;
7478
- border-width: 2px;
7670
+ border-width: 1px;
7479
7671
  border-color: var(--color-border-strong);
7480
7672
  background-color: var(--color-surface-primary);
7481
7673
  }
7482
- .gyramais-rail-node.is-running {
7674
+ .gyramais-rail-edit .gyramais-rail-node {
7675
+ border-color: var(--color-gray-300);
7676
+ background-color: var(--color-gray-300);
7677
+ }
7678
+ .gyramais-rail-node.is-info {
7483
7679
  border-color: var(--gyra-blue);
7484
- background-color: var(--gyra-blue-light);
7680
+ background-color: var(--gyra-blue);
7485
7681
  }
7486
- .gyramais-rail-node.is-done {
7682
+ .gyramais-rail-node.is-success {
7487
7683
  border-color: var(--color-success);
7488
- background-color: var(--color-success-light);
7684
+ background-color: var(--color-success);
7489
7685
  }
7490
- .gyramais-rail-node.is-waiting {
7686
+ .gyramais-rail-node.is-warning {
7491
7687
  border-color: var(--color-warning);
7492
- background-color: var(--color-warning-light);
7688
+ background-color: var(--color-warning);
7493
7689
  }
7494
- .gyramais-rail-node.is-error {
7690
+ .gyramais-rail-node.is-danger {
7495
7691
  border-color: var(--color-danger);
7496
- background-color: var(--color-danger-light);
7692
+ background-color: var(--color-danger);
7693
+ }
7694
+ .gyramais-rail-node.is-neutral {
7695
+ border-color: var(--color-border-strong);
7696
+ background-color: var(--color-surface-primary);
7497
7697
  }
7498
7698
  .gyramais-rail-node.is-skipped {
7499
7699
  border-color: var(--color-border-primary);
7500
- background-color: var(--color-surface-secondary);
7700
+ background-color: var(--color-surface-primary);
7501
7701
  }
7502
7702
 
7503
- .gyramais-rail-step .gyramais-rail-step-card {
7703
+ /* O Card do design system como contentor (borda, raio, fundo), com a
7704
+ densidade da esteira. O header do Card nao e usado: a anatomia de duas
7705
+ linhas e o conteudo. */
7706
+ .gyramais-rail-step-card.gyramais-card {
7707
+ border-radius: var(--radius-md);
7708
+ padding: 12px;
7504
7709
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
7505
7710
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7506
- transition-duration: 200ms;
7507
- animation-duration: 200ms;
7711
+ transition-duration: 150ms;
7712
+ animation-duration: 150ms;
7508
7713
  }
7509
- .gyramais-rail-step.is-active .gyramais-rail-step-card,
7510
- .gyramais-rail-step.is-selected .gyramais-rail-step-card {
7714
+ .gyramais-rail-step-card.gyramais-card .gyramais-card-content {
7715
+ position: static;
7716
+ }
7717
+ .gyramais-rail-step:hover .gyramais-rail-step-card.gyramais-card {
7718
+ border-color: var(--color-border-primary);
7719
+ }
7720
+ .gyramais-rail-step.is-active .gyramais-rail-step-card.gyramais-card,
7721
+ .gyramais-rail-step.is-selected .gyramais-rail-step-card.gyramais-card {
7511
7722
  border-color: var(--gyra-blue);
7723
+ }
7724
+ .gyramais-rail-step.is-selected .gyramais-rail-step-card.gyramais-card {
7512
7725
  background-color: var(--gyra-blue-subtle);
7513
7726
  }
7514
7727
 
7515
- /* Etapa que nao disparou: cartao translucido. O motivo NAO entra aqui,
7516
- fica fora do cartao, em contraste cheio. */
7517
- .gyramais-rail-step.is-skipped .gyramais-rail-step-card {
7728
+ /* Elevacao SO na etapa atual do modo run: sombra sutil e borda um tom mais
7729
+ forte. Todo o resto da esteira continua plano, senao a elevacao deixa de
7730
+ apontar para onde a execucao esta. */
7731
+ .gyramais-rail-run .gyramais-rail-step.is-active .gyramais-rail-step-card.gyramais-card {
7732
+ border-color: var(--color-border-strong);
7733
+ box-shadow: var(--shadow-dropdown);
7734
+ }
7735
+
7736
+ /* O unico cartao que pede acao humana: acento ambar na borda esquerda. Sem
7737
+ piscar e sem animacao; o botao primario "Decidir" vem do consumer. O
7738
+ padding esquerdo cai 2px para compensar os 2px extras da borda e o
7739
+ conteudo nao andar. */
7740
+ .gyramais-rail-run .gyramais-rail-step.is-waiting .gyramais-rail-step-card.gyramais-card {
7741
+ border-left-width: 3px;
7742
+ border-left-color: var(--color-warning);
7743
+ padding-left: 10px;
7744
+ }
7745
+
7746
+ /* Etapa que nao disparou: cartao apagado. A opacidade fica no CONTEUDO, nao no
7747
+ cartao inteiro: no cartao ela tambem apagava o glifo, e o #8E8E93 que vale
7748
+ 3,26:1 sobre o branco chegava a tela como #C7C7C9, 1,69:1. Medir o token nao
7749
+ e medir o pixel. Borda e conteudo recebem o apagamento explicito; o glifo
7750
+ fica de fora e chega inteiro. */
7751
+ .gyramais-rail-step.is-skipped .gyramais-rail-step-card.gyramais-card {
7518
7752
  border-style: dashed;
7519
- opacity: 0.55;
7753
+ border-color: var(--color-border-secondary);
7754
+ }
7755
+ .gyramais-rail-step.is-skipped .gyramais-rail-step-main,
7756
+ .gyramais-rail-step.is-skipped .gyramais-rail-step-side,
7757
+ .gyramais-rail-step.is-skipped .gyramais-rail-step-content {
7758
+ opacity: 0.5;
7520
7759
  }
7521
- .gyramais-rail-step.is-disabled .gyramais-rail-step-card {
7760
+ .gyramais-rail-step.is-disabled .gyramais-rail-step-card.gyramais-card {
7522
7761
  opacity: 0.6;
7523
7762
  }
7524
7763
 
7764
+ .gyramais-rail-step-row {
7765
+ display: flex;
7766
+ align-items: flex-start;
7767
+ gap: 10px;
7768
+ }
7769
+
7770
+ /* Glifo do tipo: chip de 24px. O tipo vive aqui e no tooltip, nunca como
7771
+ texto no cartao. O fundo neutro e o fallback; cada tipo pinta o seu logo
7772
+ abaixo. */
7525
7773
  .gyramais-rail-step-glyph {
7526
7774
  display: inline-flex;
7527
- height: 32px;
7528
- width: 32px;
7775
+ height: 24px;
7776
+ width: 24px;
7777
+ flex-shrink: 0;
7529
7778
  align-items: center;
7530
7779
  justify-content: center;
7531
- border-radius: var(--radius-md);
7780
+ border-radius: var(--radius-sm);
7781
+ background-color: var(--color-gray-50);
7782
+ color: var(--color-text-secondary);
7783
+ margin-top: -2px;
7784
+ }
7785
+
7786
+ /* Cor semantica por FAMILIA de consulta, nao por tipo. Duas cores, e as duas
7787
+ se distinguem de verdade:
7788
+ azul = analise (Analise e Aprofundar consultam o mesmo relatorio),
7789
+ teal = vinculos (consulta OUTROS documentos).
7790
+ A cor e REDUNDANTE de proposito: o glifo e o tooltip continuam carregando o
7791
+ tipo, entao quem nao distingue as cores nao perde informacao nenhuma.
7792
+
7793
+ Por que Aprofundar NAO ganha uma cor propria (intencional, medido): o par
7794
+ #EEF1FB x #EBF4FF tinha dE2000 = 2,7, no limiar de percepcao (JND ~2,3), ou
7795
+ seja, prometia quatro sinais e entregava tres. Nao ha no design system um
7796
+ quarto fundo diluido que fique a dE >= 8 dos outros dois sem roubar a cor de
7797
+ um estado (verde/vermelho). Entre inventar um sinal que ninguem enxerga e
7798
+ assumir a familia, assumimos a familia: uma camada E uma analise a mais
7799
+ sobre o mesmo relatorio, e o glifo (camadas x alvo) separa as duas.
7800
+ Medido (dE2000 entre os fundos): azul x teal 10,7; azul x neutro 3,8 (o
7801
+ neutro nao e um sinal, e a ausencia dele).
7802
+
7803
+ Por que o Checkpoint perdeu o ambar: no resto do produto ambar significa
7804
+ ESTADO ("aguardando"). Um checkpoint parado ficava ambar por dois motivos
7805
+ diferentes (tipo e estado) no mesmo cartao, sem como saber qual. O
7806
+ checkpoint tambem nao consulta fonte nenhuma, entao nao pertence a familia
7807
+ nenhuma: chip neutro, e o ambar volta a significar so estado.
7808
+ Contraste medido do glifo sobre o proprio chip: azul 4,90:1, teal 4,77:1,
7809
+ neutro 5,50:1 (todos acima de 4,5:1). */
7810
+ .gyramais-rail-step.is-analysis .gyramais-rail-step-glyph,
7811
+ .gyramais-rail-step.is-deepen .gyramais-rail-step-glyph {
7532
7812
  background-color: var(--gyra-blue-light);
7533
- font-size: 15px;
7534
- line-height: 1;
7535
7813
  color: var(--gyra-blue);
7536
7814
  }
7815
+ /* O chip neutro do Checkpoint ganha CONTORNO, nao outra cor: sobre o cartao
7816
+ branco o fundo #F5F5F7 esta a dE2000 2,25 (no limiar de percepcao) e quase
7817
+ nao lia como chip. A borda #E8E8ED e uma aresta, nao um pigmento: resolve a
7818
+ leitura sem mexer nas distancias medidas entre os fundos (azul x neutro
7819
+ 3,8) nem no contraste do glifo (5,50:1). */
7537
7820
  .gyramais-rail-step.is-checkpoint .gyramais-rail-step-glyph {
7538
- background-color: var(--color-warning-light);
7539
- color: var(--color-warning);
7821
+ border-width: 1px;
7822
+ border-color: var(--color-border-secondary);
7823
+ background-color: var(--color-gray-50);
7824
+ color: var(--color-text-secondary);
7540
7825
  }
7541
7826
  .gyramais-rail-step.is-relationships .gyramais-rail-step-glyph {
7542
7827
  background-color: var(--gyra-teal-light);
7543
- color: var(--gyra-teal);
7828
+ color: var(--gyra-teal-text);
7829
+ }
7830
+ .gyramais-rail-step.is-result .gyramais-rail-step-glyph,
7831
+ .gyramais-rail-step.is-offer_review .gyramais-rail-step-glyph,
7832
+ .gyramais-rail-step.is-authority .gyramais-rail-step-glyph {
7833
+ background-color: var(--gyra-blue-light);
7834
+ color: var(--gyra-blue);
7835
+ }
7836
+ .gyramais-rail-step.is-committee .gyramais-rail-step-glyph {
7837
+ color: #5945b8;
7838
+ background: #f0edff;
7544
7839
  }
7840
+ /* Etapa que nao rodou nao merece o pigmento do tipo: o cartao inteiro ja
7841
+ esta translucido e a cor cheia so competiria com quem rodou.
7545
7842
 
7546
- .gyramais-rail-step-title {
7547
- display: inline-flex;
7843
+ E ela tambem nao herda o chip NEUTRO: o neutro e o tipo Checkpoint, e o
7844
+ mesmo fundo em dois papeis fazia o cinza significar duas coisas. Aqui o chip
7845
+ simplesmente nao existe (sem fundo, sem contorno), que e o que a etapa pulada
7846
+ e: ausencia. O glifo assenta no branco do cartao e, com a opacidade fora do
7847
+ cartao (acima), o #8E8E93 chega a tela inteiro: 3,26:1 medido no pixel
7848
+ renderizado, e nao no token (WCAG 1.4.11 pede 3:1). */
7849
+ .gyramais-rail-step.is-skipped .gyramais-rail-step-glyph {
7850
+ border-width: 0px;
7851
+ background-color: transparent;
7852
+ color: var(--color-text-tertiary);
7853
+ }
7854
+
7855
+ .gyramais-rail-step-main {
7856
+ display: flex;
7857
+ min-width: 0px;
7858
+ flex: 1 1 0%;
7859
+ flex-direction: column;
7860
+ gap: 2px;
7861
+ }
7862
+
7863
+ .gyramais-rail-step-line1 {
7864
+ display: flex;
7865
+ min-height: 20px;
7866
+ min-width: 0px;
7548
7867
  align-items: center;
7549
- gap: 6px;
7550
- font-family: var(--font-display);
7868
+ gap: 8px;
7551
7869
  }
7552
7870
 
7553
7871
  .gyramais-rail-step-name {
7872
+ display: block;
7873
+ overflow: hidden;
7874
+ text-overflow: ellipsis;
7875
+ white-space: nowrap;
7876
+ font-size: var(--fs-body);
7877
+ font-weight: 600;
7878
+ line-height: 20px;
7879
+ letter-spacing: var(--tracking-normal);
7554
7880
  color: var(--color-text-primary);
7555
7881
  }
7556
7882
 
7557
7883
  .gyramais-rail-step-open {
7558
7884
  position: relative;
7559
7885
  display: inline-flex;
7886
+ min-width: 0px;
7560
7887
  cursor: pointer;
7561
7888
  align-items: center;
7562
- gap: 5px;
7889
+ gap: 4px;
7563
7890
  border-width: 0px;
7564
7891
  background-color: transparent;
7565
7892
  padding: 0px;
7566
- color: var(--color-text-primary);
7567
7893
  text-decoration-line: none;
7568
7894
  font-family: inherit;
7569
- font-size: inherit;
7570
- font-weight: inherit;
7571
7895
  }
7572
- .gyramais-rail-step-open:hover {
7896
+ .gyramais-rail-step-open:hover .gyramais-rail-step-name {
7573
7897
  color: var(--gyra-blue);
7574
- text-decoration-line: underline;
7575
7898
  }
7576
-
7577
7899
  .gyramais-rail-step-open-icon {
7578
- color: var(--color-text-tertiary);
7900
+ flex-shrink: 0;
7901
+ color: var(--color-text-quaternary);
7579
7902
  }
7580
7903
 
7581
- .gyramais-rail-step-subtitle {
7904
+ .gyramais-rail-step-meta {
7582
7905
  display: inline-flex;
7583
- flex-wrap: wrap;
7906
+ flex-shrink: 0;
7584
7907
  align-items: center;
7585
- gap: 6px;
7908
+ gap: 4px;
7909
+ }
7910
+ /* Tag do design system, na densidade de um chip de 20px. */
7911
+ .gyramais-rail-step-meta .gyramais-tag {
7912
+ height: 20px;
7913
+ border-radius: var(--radius-xs);
7914
+ border-color: var(--color-border-subtle);
7915
+ background-color: var(--color-gray-50);
7916
+ padding-left: 6px;
7917
+ padding-right: 6px;
7918
+ padding-top: 0px;
7919
+ padding-bottom: 0px;
7920
+ }
7921
+ .gyramais-rail-step-meta .gyramais-tag .gyramais-tag-content {
7922
+ font-size: var(--fs-footnote);
7923
+ line-height: 18px;
7586
7924
  color: var(--color-text-secondary);
7587
7925
  }
7926
+ .gyramais-rail-step-meta .gyramais-tag .gyramais-tag-icon {
7927
+ margin-right: 4px;
7928
+ --tw-scale-x: 1;
7929
+ --tw-scale-y: 1;
7930
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
7931
+ }
7588
7932
 
7589
- .gyramais-rail-step-kind {
7590
- font-weight: 600;
7591
- text-transform: uppercase;
7592
- letter-spacing: var(--tracking-wide);
7593
- color: var(--fs-caption);
7594
- color: var(--color-text-tertiary);
7933
+ .gyramais-rail-step-line2 {
7934
+ display: flex;
7935
+ min-height: 18px;
7936
+ min-width: 0px;
7937
+ align-items: center;
7595
7938
  }
7596
7939
 
7597
- .gyramais-rail-step-dot {
7598
- color: var(--color-text-quaternary);
7940
+ .gyramais-rail-step-text {
7941
+ font-size: var(--fs-subheadline);
7942
+ line-height: 18px;
7943
+ color: var(--color-text-secondary);
7599
7944
  }
7600
7945
 
7601
- /* O resto do subtitulo (separador + texto) e UM item do flex: assim o "·"
7602
- quebra de linha junto com a primeira palavra que ele separa, em vez de
7603
- ficar pendurado sozinho no fim da linha de cima. */
7604
- .gyramais-rail-step-subtitle-rest {
7946
+ /* Seletor inline: texto + chevron no corpo do texto, sem borda. O padding
7947
+ horizontal e compensado por uma margem negativa para o texto alinhar
7948
+ com o nome da etapa. */
7949
+ /* Largura: o gatilho ocupa o que o texto pede e so encolhe (com
7950
+ reticencias) quando a linha de fato nao o comporta. `min-w-0` deixa o
7951
+ flex encolher; NAO usar `max-w-full`: com a margem negativa de 6px, um
7952
+ invólucro shrink-to-fit (o `span` do toolbox em volta do gatilho) mede a
7953
+ caixa de margem, e 100% dela e 6px menos que o proprio conteudo, o que
7954
+ truncava toda politica por 6px com meio cartao vazio (E2 do guard). */
7955
+ .gyramais-rail-inline-select {
7956
+ position: relative;
7957
+ margin-left: -6px;
7958
+ display: inline-flex;
7959
+ height: 20px;
7605
7960
  min-width: 0px;
7961
+ cursor: pointer;
7962
+ align-items: center;
7963
+ gap: 2px;
7964
+ border-radius: var(--radius-sm);
7965
+ border-width: 0px;
7966
+ background-color: transparent;
7967
+ padding-left: 6px;
7968
+ padding-right: 4px;
7969
+ font-size: var(--fs-subheadline);
7970
+ font-weight: 400;
7971
+ line-height: 18px;
7972
+ color: var(--color-text-primary);
7973
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
7974
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7975
+ transition-duration: 150ms;
7976
+ animation-duration: 150ms;
7977
+ font-family: inherit;
7978
+ }
7979
+ /* Mesmo papel, mesmo peso nos dois modos: a linha da politica e 13/400 no
7980
+ edit (aqui) e 13/400 no run (`.gyramais-rail-step-text`). O que diz que
7981
+ este e clicavel e o chevron e o hover, nao meio grau de peso. */
7982
+
7983
+ /* Quando o nome da etapa E a politica, o seletor sobe para a linha 1 e passa
7984
+ a ser o titulo: 15/600, a mesma tipografia de `.gyramais-rail-step-name`.
7985
+ Nao ha dois textos, ha um so, e ele e clicavel. */
7986
+ .gyramais-rail-step-line1.is-policy-title .gyramais-rail-inline-select {
7987
+ height: 20px;
7988
+ font-size: var(--fs-body);
7989
+ font-weight: 600;
7990
+ line-height: 20px;
7991
+ letter-spacing: var(--tracking-normal);
7992
+ }
7993
+ .gyramais-rail-inline-select:hover:not(:disabled) {
7994
+ background-color: var(--color-surface-active);
7995
+ }
7996
+ .gyramais-rail-inline-select:disabled {
7997
+ cursor: not-allowed;
7998
+ opacity: 0.6;
7999
+ }
8000
+ .gyramais-rail-inline-select.is-placeholder {
8001
+ font-weight: 400;
8002
+ color: var(--color-text-tertiary);
8003
+ }
8004
+ .gyramais-rail-inline-select.is-warning {
8005
+ color: var(--status-warning-text);
8006
+ }
8007
+ .gyramais-rail-inline-select-text {
8008
+ overflow: hidden;
8009
+ text-overflow: ellipsis;
8010
+ white-space: nowrap;
8011
+ }
8012
+ .gyramais-rail-inline-select-chevron {
8013
+ flex-shrink: 0;
8014
+ color: var(--color-text-tertiary);
7606
8015
  }
7607
8016
 
7608
- .gyramais-rail-step-header-right {
8017
+ .gyramais-rail-step-side {
7609
8018
  display: flex;
7610
- flex-wrap: wrap;
8019
+ min-height: 20px;
8020
+ flex-shrink: 0;
7611
8021
  align-items: center;
7612
- justify-content: flex-end;
7613
8022
  gap: 8px;
7614
8023
  }
7615
8024
 
8025
+ /* Estado: ponto de 6px + texto de 12px. A cor mora no ponto. */
8026
+ .gyramais-rail-status {
8027
+ display: inline-flex;
8028
+ align-items: center;
8029
+ gap: 6px;
8030
+ white-space: nowrap;
8031
+ font-size: var(--fs-footnote);
8032
+ line-height: 16px;
8033
+ color: var(--color-text-secondary);
8034
+ }
8035
+ .gyramais-rail-status-dot {
8036
+ height: 6px;
8037
+ width: 6px;
8038
+ flex-shrink: 0;
8039
+ border-radius: 9999px;
8040
+ background-color: var(--color-gray-300);
8041
+ }
8042
+ .gyramais-rail-status.is-info .gyramais-rail-status-dot {
8043
+ background-color: var(--gyra-blue);
8044
+ }
8045
+ .gyramais-rail-status.is-success .gyramais-rail-status-dot {
8046
+ background-color: var(--color-success);
8047
+ }
8048
+ .gyramais-rail-status.is-warning .gyramais-rail-status-dot {
8049
+ background-color: var(--color-warning);
8050
+ }
8051
+ .gyramais-rail-status.is-danger .gyramais-rail-status-dot {
8052
+ background-color: var(--color-danger);
8053
+ }
8054
+ .gyramais-rail-status.is-warning .gyramais-rail-status-label {
8055
+ color: var(--status-warning-text);
8056
+ }
8057
+ .gyramais-rail-status.is-danger .gyramais-rail-status-label {
8058
+ color: var(--status-danger-text);
8059
+ }
8060
+
8061
+ /* O botao do consumer ("Decidir"), na densidade da linha. */
8062
+ .gyramais-rail-step-actions .gyramais-button.gyramais-button-small {
8063
+ height: 24px;
8064
+ padding-left: 10px;
8065
+ padding-right: 10px;
8066
+ padding-top: 0px;
8067
+ padding-bottom: 0px;
8068
+ font-size: var(--fs-footnote);
8069
+ }
8070
+
8071
+ /* Ordenar/remover: so no hover e no foco. */
7616
8072
  .gyramais-rail-step-toolbar {
7617
8073
  display: flex;
7618
8074
  align-items: center;
7619
8075
  gap: 2px;
8076
+ opacity: 0;
8077
+ transition-property: opacity;
8078
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
8079
+ transition-duration: 150ms;
8080
+ animation-duration: 150ms;
8081
+ }
8082
+ .gyramais-rail-step:hover .gyramais-rail-step-toolbar,
8083
+ .gyramais-rail-step:focus-within .gyramais-rail-step-toolbar,
8084
+ .gyramais-rail-step.is-selected .gyramais-rail-step-toolbar {
8085
+ opacity: 1;
8086
+ }
8087
+ @media (hover: none) {
8088
+ .gyramais-rail-step-toolbar {
8089
+ opacity: 1;
8090
+ }
7620
8091
  }
7621
8092
 
7622
8093
  .gyramais-rail-step-action {
7623
8094
  position: relative;
7624
8095
  display: inline-flex;
7625
- height: 26px;
7626
- width: 26px;
8096
+ height: 24px;
8097
+ width: 24px;
7627
8098
  cursor: pointer;
7628
8099
  align-items: center;
7629
8100
  justify-content: center;
7630
- border-radius: 9999px;
8101
+ border-radius: var(--radius-sm);
7631
8102
  border-width: 0px;
7632
8103
  background-color: transparent;
7633
8104
  color: var(--color-text-tertiary);
7634
8105
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
7635
8106
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7636
- transition-duration: 200ms;
7637
- animation-duration: 200ms;
8107
+ transition-duration: 150ms;
8108
+ animation-duration: 150ms;
7638
8109
  }
7639
8110
  .gyramais-rail-step-action:hover:not(:disabled) {
7640
8111
  background-color: var(--color-surface-active);
@@ -7645,60 +8116,98 @@ h6 {
7645
8116
  }
7646
8117
  .gyramais-rail-step-action:disabled {
7647
8118
  cursor: not-allowed;
7648
- opacity: 0.35;
8119
+ opacity: 0.3;
7649
8120
  }
7650
8121
 
7651
8122
  .gyramais-rail-step-content {
8123
+ margin-top: 8px;
7652
8124
  display: flex;
7653
8125
  flex-direction: column;
7654
- gap: 10px;
7655
- color: var(--fs-callout);
8126
+ gap: 8px;
8127
+ font-size: var(--fs-subheadline);
7656
8128
  color: var(--color-text-secondary);
7657
8129
  }
7658
8130
 
7659
8131
  /* O motivo de a etapa nao ter disparado. Fora do cartao translucido de
7660
8132
  proposito: e a informacao que precisa ser lida. */
7661
8133
  .gyramais-rail-step-reason {
7662
- margin-top: 6px;
8134
+ margin-top: 4px;
7663
8135
  margin-bottom: 0px;
7664
8136
  display: flex;
7665
8137
  align-items: flex-start;
7666
- gap: 6px;
7667
- border-left-width: 2px;
7668
- border-color: var(--color-border-primary);
7669
- padding-left: 10px;
7670
- line-height: var(--lh-normal);
7671
- color: var(--fs-footnote);
8138
+ gap: 8px;
8139
+ padding-left: 12px;
8140
+ font-size: var(--fs-footnote);
8141
+ line-height: 16px;
7672
8142
  color: var(--color-text-secondary);
7673
8143
  }
8144
+ .gyramais-rail-step-reason-mark {
8145
+ margin-top: 5px;
8146
+ height: 6px;
8147
+ width: 6px;
8148
+ flex-shrink: 0;
8149
+ border-radius: 9999px;
8150
+ background-color: var(--color-gray-300);
8151
+ }
7674
8152
  .gyramais-rail-step.is-error .gyramais-rail-step-reason {
7675
- border-color: var(--color-danger);
7676
8153
  color: var(--status-danger-text);
7677
8154
  }
8155
+ .gyramais-rail-step.is-error .gyramais-rail-step-reason-mark {
8156
+ background-color: var(--color-danger);
8157
+ }
7678
8158
 
7679
8159
  /* ---- Folhas (relatorios derivados dos vinculos) ------------------------ */
7680
8160
 
7681
8161
  .gyramais-rail-leaves {
7682
- margin-top: 10px;
8162
+ margin-top: 8px;
7683
8163
  display: flex;
7684
8164
  flex-direction: column;
7685
- gap: 6px;
7686
8165
  }
7687
8166
 
7688
- .gyramais-rail-leaves-label {
7689
- font-weight: 600;
7690
- text-transform: uppercase;
7691
- letter-spacing: var(--tracking-wide);
7692
- color: var(--fs-caption);
8167
+ .gyramais-rail-leaves-toggle {
8168
+ position: relative;
8169
+ margin-left: -4px;
8170
+ display: inline-flex;
8171
+ height: 20px;
8172
+ cursor: pointer;
8173
+ align-items: center;
8174
+ gap: 2px;
8175
+ align-self: flex-start;
8176
+ border-radius: var(--radius-sm);
8177
+ border-width: 0px;
8178
+ background-color: transparent;
8179
+ padding-left: 4px;
8180
+ padding-right: 4px;
8181
+ font-size: var(--fs-footnote);
8182
+ font-weight: 500;
8183
+ color: var(--color-text-secondary);
8184
+ font-family: inherit;
8185
+ }
8186
+ .gyramais-rail-leaves-toggle:hover {
8187
+ background-color: var(--color-surface-active);
8188
+ color: var(--color-text-primary);
8189
+ }
8190
+ .gyramais-rail-leaves-chevron {
8191
+ --tw-rotate: -90deg;
8192
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
7693
8193
  color: var(--color-text-tertiary);
8194
+ transition-property: transform;
8195
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
8196
+ transition-duration: 150ms;
8197
+ animation-duration: 150ms;
8198
+ }
8199
+ .gyramais-rail-leaves-chevron.is-open {
8200
+ --tw-rotate: 0deg;
8201
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
7694
8202
  }
7695
8203
 
7696
8204
  .gyramais-rail-leaves-list {
7697
8205
  margin: 0px;
8206
+ margin-top: 4px;
7698
8207
  display: flex;
7699
8208
  list-style-type: none;
7700
8209
  flex-direction: column;
7701
- gap: 4px;
8210
+ gap: 2px;
7702
8211
  padding: 0px;
7703
8212
  }
7704
8213
 
@@ -7708,31 +8217,33 @@ h6 {
7708
8217
 
7709
8218
  .gyramais-rail-leaf {
7710
8219
  position: relative;
8220
+ margin-left: -8px;
8221
+ margin-right: -8px;
7711
8222
  display: flex;
7712
8223
  width: 100%;
8224
+ min-width: 0px;
7713
8225
  flex: 1 1 0%;
7714
8226
  cursor: pointer;
7715
8227
  align-items: center;
7716
8228
  justify-content: space-between;
7717
- gap: 10px;
7718
- border-radius: var(--radius-md);
7719
- border-width: 1px;
7720
- border-color: var(--color-border-subtle);
7721
- background-color: var(--color-surface-secondary);
7722
- padding-left: 12px;
7723
- padding-right: 12px;
7724
- padding-top: 8px;
7725
- padding-bottom: 8px;
8229
+ gap: 8px;
8230
+ border-radius: var(--radius-sm);
8231
+ border-width: 0px;
8232
+ background-color: transparent;
8233
+ padding-left: 8px;
8234
+ padding-right: 8px;
8235
+ padding-top: 6px;
8236
+ padding-bottom: 6px;
7726
8237
  text-align: left;
7727
8238
  text-decoration-line: none;
7728
8239
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
7729
8240
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7730
- transition-duration: 200ms;
7731
- animation-duration: 200ms;
8241
+ transition-duration: 150ms;
8242
+ animation-duration: 150ms;
8243
+ font-family: inherit;
7732
8244
  }
7733
8245
  .gyramais-rail-leaf:hover:not(:disabled) {
7734
- border-color: var(--gyra-blue);
7735
- background-color: var(--gyra-blue-subtle);
8246
+ background-color: var(--color-surface-active);
7736
8247
  }
7737
8248
  .gyramais-rail-leaf:disabled {
7738
8249
  cursor: default;
@@ -7741,25 +8252,29 @@ h6 {
7741
8252
 
7742
8253
  .gyramais-rail-leaf-text {
7743
8254
  display: flex;
8255
+ min-width: 0px;
7744
8256
  flex-wrap: wrap;
7745
8257
  align-items: baseline;
7746
- gap: 8px;
8258
+ -moz-column-gap: 8px;
8259
+ column-gap: 8px;
8260
+ row-gap: 0px;
7747
8261
  }
7748
8262
 
7749
8263
  .gyramais-rail-leaf-title {
8264
+ font-size: var(--fs-subheadline);
7750
8265
  font-weight: 500;
7751
- color: var(--fs-callout);
8266
+ line-height: 18px;
7752
8267
  color: var(--color-text-primary);
7753
8268
  }
7754
8269
 
7755
8270
  .gyramais-rail-leaf-document {
7756
- color: var(--fs-footnote);
8271
+ font-size: var(--fs-footnote);
7757
8272
  color: var(--color-text-secondary);
7758
- font-family: var(--font-mono);
8273
+ font-variant-numeric: tabular-nums;
7759
8274
  }
7760
8275
 
7761
8276
  .gyramais-rail-leaf-subtitle {
7762
- color: var(--fs-footnote);
8277
+ font-size: var(--fs-footnote);
7763
8278
  color: var(--color-text-tertiary);
7764
8279
  }
7765
8280
 
@@ -7773,23 +8288,24 @@ h6 {
7773
8288
  display: flex;
7774
8289
  flex-direction: column;
7775
8290
  align-items: flex-start;
7776
- gap: 10px;
7777
- border-radius: var(--radius-lg);
8291
+ gap: 8px;
8292
+ border-radius: var(--radius-md);
7778
8293
  border-width: 1px;
7779
8294
  border-style: dashed;
7780
8295
  border-color: var(--color-border-primary);
7781
8296
  background-color: var(--color-surface-secondary);
7782
- padding: 20px;
8297
+ padding: 16px;
7783
8298
  }
7784
8299
 
7785
8300
  .gyramais-rail-empty-text {
7786
8301
  margin: 0px;
7787
- color: var(--fs-callout);
8302
+ font-size: var(--fs-subheadline);
8303
+ line-height: 18px;
7788
8304
  color: var(--color-text-secondary);
7789
8305
  }
7790
8306
  .gyramais-rail-empty .gyramais-rail-add {
7791
- margin-left: 0px;
7792
8307
  margin-top: 0px;
8308
+ margin-left: -8px;
7793
8309
  }
7794
8310
 
7795
8311
  /* ---- Somente leitor de tela -------------------------------------------- */
@@ -7806,32 +8322,37 @@ h6 {
7806
8322
  clip: rect(0, 0, 0, 0);
7807
8323
  }
7808
8324
 
7809
- @media (max-width: 768px) {
7810
- .gyramais-rail-step-header-right {
7811
- justify-content: flex-start;
7812
- }
7813
- }
7814
-
7815
8325
  /* ---- Miniatura (RailMini) ---------------------------------------------
7816
- A esteira do tamanho de uma linha de lista: uma marca por etapa, ligadas
7817
- por um fio, mais o resumo em texto. As cores sao as mesmas do modo run. */
8326
+ A esteira do tamanho de uma celula de lista: uma bolinha de 6px por etapa,
8327
+ ligadas por um fio de 1px, no maximo ~120px. As cores sao as do modo run. */
7818
8328
 
7819
8329
  .gyramais-rail-mini {
7820
8330
  display: inline-flex;
7821
- max-width: 100%;
8331
+ max-width: 120px;
7822
8332
  align-items: center;
7823
- gap: 3px;
8333
+ gap: 6px;
7824
8334
  vertical-align: middle;
7825
8335
  }
7826
8336
 
8337
+ .gyramais-rail-mini.with-summary {
8338
+ max-width: 100%;
8339
+ }
8340
+
8341
+ .gyramais-rail-mini-track {
8342
+ display: inline-flex;
8343
+ min-width: 0px;
8344
+ align-items: center;
8345
+ overflow: hidden;
8346
+ }
8347
+
7827
8348
  .gyramais-rail-mini-mark {
7828
- height: 8px;
7829
- width: 8px;
8349
+ height: 6px;
8350
+ width: 6px;
7830
8351
  flex-shrink: 0;
7831
8352
  border-radius: 9999px;
7832
8353
  border-width: 1px;
7833
8354
  border-color: transparent;
7834
- background-color: var(--color-gray-200);
8355
+ background-color: var(--color-gray-300);
7835
8356
  }
7836
8357
  .gyramais-rail-mini-mark.is-approved {
7837
8358
  background-color: var(--color-success);
@@ -7851,28 +8372,27 @@ h6 {
7851
8372
  }
7852
8373
  .gyramais-rail-mini-mark.is-waiting {
7853
8374
  background-color: var(--color-warning);
7854
- opacity: 0.55;
7855
8375
  }
7856
- /* Etapa que NAO rodou fica oca: e o vocabulario da tela ("não executou"). */
8376
+ /* Etapa que NAO rodou fica oca: e o vocabulario da tela ("não rodou"). */
7857
8377
  .gyramais-rail-mini-mark.is-skipped,
7858
8378
  .gyramais-rail-mini-mark.is-pending {
7859
- border-color: var(--color-border-secondary);
8379
+ border-color: var(--color-border-strong);
7860
8380
  background-color: transparent;
7861
8381
  }
7862
8382
 
8383
+ /* O fio encolhe antes de a fileira estourar os 120px. */
7863
8384
  .gyramais-rail-mini-link {
7864
8385
  height: 1px;
7865
- width: 6px;
7866
- flex-shrink: 0;
7867
- background-color: var(--color-border-secondary);
8386
+ background-color: var(--color-border-primary);
8387
+ flex: 0 1 6px;
8388
+ min-width: 2px;
7868
8389
  }
7869
8390
 
7870
8391
  .gyramais-rail-mini-text {
7871
- margin-left: 6px;
7872
8392
  overflow: hidden;
7873
8393
  text-overflow: ellipsis;
7874
8394
  white-space: nowrap;
7875
- color: var(--fs-caption);
8395
+ font-size: var(--fs-footnote);
7876
8396
  color: var(--color-text-tertiary);
7877
8397
  }
7878
8398