@gyramais/gyra-design 0.2.48 → 0.2.50

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 (99) hide show
  1. package/dist/components/Button/Button.d.ts +7 -0
  2. package/dist/components/Button/index.js.map +1 -1
  3. package/dist/components/Card/Card.d.ts +1 -7
  4. package/dist/components/Card/index.js +6 -6
  5. package/dist/components/Card/index.js.map +1 -1
  6. package/dist/components/ContextMenu/index.js +1 -1
  7. package/dist/components/ContextMenu/index.js.map +1 -1
  8. package/dist/components/Drawer/Drawer.d.ts +25 -1
  9. package/dist/components/Drawer/index.js +7 -7
  10. package/dist/components/Drawer/index.js.map +1 -1
  11. package/dist/components/DropdownMenu/index.js +1 -1
  12. package/dist/components/DropdownMenu/index.js.map +1 -1
  13. package/dist/components/Empty/Empty.d.ts +1 -18
  14. package/dist/components/Empty/index.js +40 -2
  15. package/dist/components/Empty/index.js.map +1 -1
  16. package/dist/components/Filter/index.js.map +1 -1
  17. package/dist/components/FloatingCard/index.js +7 -7
  18. package/dist/components/FloatingCard/index.js.map +1 -1
  19. package/dist/components/List/index.js +40 -2
  20. package/dist/components/List/index.js.map +1 -1
  21. package/dist/components/Modal/Modal.d.ts +11 -1
  22. package/dist/components/Modal/index.js +9 -9
  23. package/dist/components/Modal/index.js.map +1 -1
  24. package/dist/components/MultiSelectPicker/index.js +1 -1
  25. package/dist/components/MultiSelectPicker/index.js.map +1 -1
  26. package/dist/components/OperatorPicker/index.js +1 -1
  27. package/dist/components/OperatorPicker/index.js.map +1 -1
  28. package/dist/components/PickerPopover/index.js +1 -1
  29. package/dist/components/PickerPopover/index.js.map +1 -1
  30. package/dist/components/Popover/Popover.d.ts +18 -1
  31. package/dist/components/Popover/index.js +1 -1
  32. package/dist/components/Popover/index.js.map +1 -1
  33. package/dist/components/Rail/Rail.d.ts +68 -0
  34. package/dist/components/Rail/RailGate.d.ts +22 -0
  35. package/dist/components/Rail/RailInlineSelect.d.ts +44 -0
  36. package/dist/components/Rail/RailMini.d.ts +29 -0
  37. package/dist/components/Rail/RailStep.d.ts +40 -0
  38. package/dist/components/Rail/index.d.ts +7 -0
  39. package/dist/components/Rail/index.js +45 -0
  40. package/dist/components/Rail/index.js.map +1 -0
  41. package/dist/components/Rail/labels.d.ts +54 -0
  42. package/dist/components/Rail/types.d.ts +110 -0
  43. package/dist/components/RuleSearchPicker/index.js +1 -1
  44. package/dist/components/RuleSearchPicker/index.js.map +1 -1
  45. package/dist/components/SegmentedPicker/SegmentedPicker.d.ts +7 -1
  46. package/dist/components/SegmentedPicker/index.js +2 -2
  47. package/dist/components/SegmentedPicker/index.js.map +1 -1
  48. package/dist/components/Switch/Switch.d.ts +7 -1
  49. package/dist/components/Switch/index.js +1 -1
  50. package/dist/components/Switch/index.js.map +1 -1
  51. package/dist/components/Table/Table.d.ts +1 -14
  52. package/dist/components/Table/index.js +40 -2
  53. package/dist/components/Table/index.js.map +1 -1
  54. package/dist/emails/balance-sheet-finalized/components/Button/Button.d.ts +7 -0
  55. package/dist/emails/balance-sheet-finalized/components/Card/Card.d.ts +1 -7
  56. package/dist/emails/balance-sheet-finalized/components/Drawer/Drawer.d.ts +25 -1
  57. package/dist/emails/balance-sheet-finalized/components/Empty/Empty.d.ts +1 -18
  58. package/dist/emails/balance-sheet-finalized/components/Modal/Modal.d.ts +11 -1
  59. package/dist/emails/balance-sheet-finalized/components/Popover/Popover.d.ts +18 -1
  60. package/dist/emails/balance-sheet-finalized/components/Rail/Rail.d.ts +68 -0
  61. package/dist/emails/balance-sheet-finalized/components/Rail/RailGate.d.ts +22 -0
  62. package/dist/emails/balance-sheet-finalized/components/Rail/RailInlineSelect.d.ts +44 -0
  63. package/dist/emails/balance-sheet-finalized/components/Rail/RailMini.d.ts +29 -0
  64. package/dist/emails/balance-sheet-finalized/components/Rail/RailStep.d.ts +40 -0
  65. package/dist/emails/balance-sheet-finalized/components/Rail/index.d.ts +7 -0
  66. package/dist/emails/balance-sheet-finalized/components/Rail/labels.d.ts +54 -0
  67. package/dist/emails/balance-sheet-finalized/components/Rail/types.d.ts +110 -0
  68. package/dist/emails/balance-sheet-finalized/components/SegmentedPicker/SegmentedPicker.d.ts +7 -1
  69. package/dist/emails/balance-sheet-finalized/components/Switch/Switch.d.ts +7 -1
  70. package/dist/emails/balance-sheet-finalized/components/Table/Table.d.ts +1 -14
  71. package/dist/emails/balance-sheet-finalized/index.d.ts +1 -1
  72. package/dist/emails/email/components/Button/Button.d.ts +7 -0
  73. package/dist/emails/email/components/Card/Card.d.ts +1 -7
  74. package/dist/emails/email/components/Drawer/Drawer.d.ts +25 -1
  75. package/dist/emails/email/components/Empty/Empty.d.ts +1 -18
  76. package/dist/emails/email/components/Modal/Modal.d.ts +11 -1
  77. package/dist/emails/email/components/Popover/Popover.d.ts +18 -1
  78. package/dist/emails/email/components/Rail/Rail.d.ts +68 -0
  79. package/dist/emails/email/components/Rail/RailGate.d.ts +22 -0
  80. package/dist/emails/email/components/Rail/RailInlineSelect.d.ts +44 -0
  81. package/dist/emails/email/components/Rail/RailMini.d.ts +29 -0
  82. package/dist/emails/email/components/Rail/RailStep.d.ts +40 -0
  83. package/dist/emails/email/components/Rail/index.d.ts +7 -0
  84. package/dist/emails/email/components/Rail/labels.d.ts +54 -0
  85. package/dist/emails/email/components/Rail/types.d.ts +110 -0
  86. package/dist/emails/email/components/SegmentedPicker/SegmentedPicker.d.ts +7 -1
  87. package/dist/emails/email/components/Switch/Switch.d.ts +7 -1
  88. package/dist/emails/email/components/Table/Table.d.ts +1 -14
  89. package/dist/emails/email/index.d.ts +1 -1
  90. package/dist/index.css +1187 -313
  91. package/package.json +1 -1
  92. package/dist/components/Skeleton/Skeleton.d.ts +0 -50
  93. package/dist/components/Skeleton/index.d.ts +0 -1
  94. package/dist/components/Skeleton/index.js +0 -7
  95. package/dist/components/Skeleton/index.js.map +0 -1
  96. package/dist/emails/balance-sheet-finalized/components/Skeleton/Skeleton.d.ts +0 -50
  97. package/dist/emails/balance-sheet-finalized/components/Skeleton/index.d.ts +0 -1
  98. package/dist/emails/email/components/Skeleton/Skeleton.d.ts +0 -50
  99. package/dist/emails/email/components/Skeleton/index.d.ts +0 -1
package/dist/index.css CHANGED
@@ -696,12 +696,6 @@ video {
696
696
  .w-\[360px\] {
697
697
  width: 360px;
698
698
  }
699
- .w-\[420px\] {
700
- width: 420px;
701
- }
702
- .w-\[560px\] {
703
- width: 560px;
704
- }
705
699
  .w-\[800px\] {
706
700
  width: 800px;
707
701
  }
@@ -738,6 +732,9 @@ video {
738
732
  .max-w-\[500px\] {
739
733
  max-width: 500px;
740
734
  }
735
+ .max-w-full {
736
+ max-width: 100%;
737
+ }
741
738
  .shrink-0 {
742
739
  flex-shrink: 0;
743
740
  }
@@ -782,9 +779,6 @@ video {
782
779
  .gap-4 {
783
780
  gap: 1rem;
784
781
  }
785
- .gap-6 {
786
- gap: 1.5rem;
787
- }
788
782
  .gap-x-1 {
789
783
  -moz-column-gap: 0.25rem;
790
784
  column-gap: 0.25rem;
@@ -819,9 +813,6 @@ video {
819
813
  .rounded-\[6px\] {
820
814
  border-radius: 6px;
821
815
  }
822
- .rounded-\[var\(--radius-lg\)\] {
823
- border-radius: var(--radius-lg);
824
- }
825
816
  .rounded-full {
826
817
  border-radius: 9999px;
827
818
  }
@@ -834,9 +825,6 @@ video {
834
825
  .border {
835
826
  border-width: 1px;
836
827
  }
837
- .border-\[var\(--color-border-secondary\)\] {
838
- border-color: var(--color-border-secondary);
839
- }
840
828
  .bg-\[var\(--background-color\)\] {
841
829
  background-color: var(--background-color);
842
830
  }
@@ -861,10 +849,6 @@ video {
861
849
  --tw-bg-opacity: 1;
862
850
  background-color: rgb(254 202 202 / var(--tw-bg-opacity, 1));
863
851
  }
864
- .bg-white {
865
- --tw-bg-opacity: 1;
866
- background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
867
- }
868
852
  .fill-current {
869
853
  fill: currentColor;
870
854
  }
@@ -908,6 +892,9 @@ video {
908
892
  font-size: 1rem !important;
909
893
  line-height: 1.5rem !important;
910
894
  }
895
+ .text-\[13px\] {
896
+ font-size: 13px;
897
+ }
911
898
  .text-\[16px\] {
912
899
  font-size: 16px;
913
900
  }
@@ -938,9 +925,16 @@ video {
938
925
  .uppercase {
939
926
  text-transform: uppercase;
940
927
  }
928
+ .capitalize {
929
+ text-transform: capitalize;
930
+ }
941
931
  .italic {
942
932
  font-style: italic;
943
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
+ }
944
938
  .leading-none {
945
939
  line-height: 1;
946
940
  }
@@ -954,9 +948,6 @@ video {
954
948
  .text-\[var\(--color-text-secondary\)\] {
955
949
  color: var(--color-text-secondary);
956
950
  }
957
- .text-\[var\(--color-text-tertiary\)\] {
958
- color: var(--color-text-tertiary);
959
- }
960
951
  .text-\[var\(--primary-button-color\)\] {
961
952
  color: var(--primary-button-color);
962
953
  }
@@ -4410,40 +4401,25 @@ h6 {
4410
4401
  padding-top: 1rem;
4411
4402
  }
4412
4403
  .gyramais-card.gyramais-card-loading .gyramais-card-content {
4413
- min-height: 6rem;
4414
- /* A regra de esconder abaixo usa `> *`, que casa so ELEMENTO. Um children
4415
- que seja string/numero solto (ou vindo de fragmento) escaparia e
4416
- apareceria ao lado do skeleton. Zerar a tipografia aqui colapsa esse texto;
4417
- o placeholder restaura a sua logo em seguida. */
4418
- font-size: 0;
4419
- line-height: 0;
4404
+ min-height: 4rem;
4420
4405
  }
4421
4406
 
4422
- /* `gyramais-card-loading` (modificador da RAIZ) e `gyramais-card-placeholder`
4423
- (o bloco desenhado) sao nomes distintos de proposito. Quando os dois eram a
4424
- mesma classe, o seletor de descendente abaixo casava tambem a raiz de um
4425
- <Card loading> ANINHADO dentro de outro Card, e aplicava o layout do
4426
- placeholder no card inteiro.
4427
-
4428
- Estado de carregando: o skeleton entra NO FLUXO, nao sobreposto. Assim ele
4429
- e' quem dita a altura do card, e um `loadingContent` alto (grafico, tabela)
4430
- nao fica cortado pela altura do conteudo vazio que ele esta substituindo.
4431
- O conteudo real continua montado, so escondido pela regra abaixo, para nao
4432
- perder estado no meio do carregamento. */
4433
- .gyramais-card .gyramais-card-placeholder {
4407
+ .gyramais-card .gyramais-card-loading {
4408
+ position: absolute;
4409
+ top: 0px;
4410
+ left: 0px;
4411
+ z-index: 10;
4434
4412
  display: flex;
4413
+ height: 100%;
4435
4414
  width: 100%;
4436
- flex-direction: column;
4437
- align-items: stretch;
4438
- background-color: var(--color-surface-primary);
4439
- font-size: var(--fs-body);
4440
- line-height: var(--lh-normal);
4441
- }
4442
-
4443
- .gyramais-card.gyramais-card-loading
4444
- .gyramais-card-content
4445
- > *:not(.gyramais-card-placeholder) {
4446
- display: none;
4415
+ --tw-scale-x: 102%;
4416
+ 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));
4417
+ align-items: center;
4418
+ justify-content: center;
4419
+ background-color: #ffffff80;
4420
+ padding-top: 1rem;
4421
+ --tw-backdrop-blur: blur(4px);
4422
+ backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
4447
4423
  }
4448
4424
 
4449
4425
  .gyramais-chart .recharts-legend-item {
@@ -5624,78 +5600,110 @@ h6 {
5624
5600
 
5625
5601
  /* v2 Drawer chrome — flat-first: hairline borders, no soft halo. */
5626
5602
  .gyramais-drawer {
5627
- min-width: 100%;
5628
- max-width: 100%;
5629
- --tw-shadow: 0 0 #0000;
5630
- --tw-shadow-colored: 0 0 #0000;
5631
- box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
5603
+ min-width: 100%;
5604
+ max-width: 100%;
5605
+ --tw-shadow: 0 0 #0000;
5606
+ --tw-shadow-colored: 0 0 #0000;
5607
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
5632
5608
  }
5633
5609
  @media (min-width: 768px) {
5634
- .gyramais-drawer {
5635
- min-width: 0px;
5636
- max-width: 100%
5637
- }
5610
+ .gyramais-drawer {
5611
+ min-width: 0px;
5612
+ max-width: 100%;
5613
+ }
5638
5614
  }
5639
5615
 
5640
5616
  .gyramais-drawer .gyramais-drawer-container {
5641
- display: flex;
5642
- height: 100%;
5643
- flex-direction: column;
5644
- justify-content: space-between
5617
+ display: flex;
5618
+ height: 100%;
5619
+ flex-direction: column;
5620
+ justify-content: space-between;
5645
5621
  }
5646
5622
 
5647
5623
  .gyramais-drawer .gyramais-drawer-header {
5648
- display: flex;
5649
- align-items: center;
5650
- justify-content: space-between;
5651
- border-bottom-width: 1px;
5652
- border-color: var(--color-border-secondary);
5653
- padding-left: 24px;
5654
- padding-right: 24px;
5655
- padding-top: 20px;
5656
- padding-bottom: 20px
5624
+ display: flex;
5625
+ align-items: center;
5626
+ justify-content: space-between;
5627
+ border-bottom-width: 1px;
5628
+ border-color: var(--color-border-secondary);
5629
+ padding-left: 24px;
5630
+ padding-right: 24px;
5631
+ padding-top: 20px;
5632
+ padding-bottom: 20px;
5657
5633
  }
5658
5634
 
5659
5635
  .gyramais-drawer .gyramais-drawer-title {
5660
- margin: 0px;
5661
- font-size: 18px;
5662
- font-weight: 600;
5663
- color: var(--color-text-primary)
5636
+ margin: 0px;
5637
+ font-size: 18px;
5638
+ font-weight: 600;
5639
+ color: var(--color-text-primary);
5664
5640
  }
5665
5641
  .gyramais-drawer .gyramais-drawer-subtitle {
5666
- margin-top: 0.25rem;
5667
- font-size: 0.875rem;
5668
- line-height: 1.25rem;
5669
- color: var(--color-text-secondary)
5642
+ margin-top: 0.25rem;
5643
+ font-size: 0.875rem;
5644
+ line-height: 1.25rem;
5645
+ color: var(--color-text-secondary);
5670
5646
  }
5671
5647
 
5672
5648
  .gyramais-drawer .gyramais-drawer-content {
5673
- height: 100%;
5674
- overflow-y: auto;
5675
- padding-left: 24px;
5676
- padding-right: 24px;
5677
- padding-top: 20px;
5678
- padding-bottom: 20px
5649
+ height: 100%;
5650
+ overflow-y: auto;
5651
+ padding-left: 24px;
5652
+ padding-right: 24px;
5653
+ padding-top: 20px;
5654
+ padding-bottom: 20px;
5679
5655
  }
5680
5656
 
5681
5657
  .gyramais-drawer .gyramais-drawer-footer {
5682
- border-top-width: 1px;
5683
- border-color: var(--color-border-secondary);
5684
- padding-left: 24px;
5685
- padding-right: 24px;
5686
- padding-top: 20px;
5687
- padding-bottom: 20px
5658
+ border-top-width: 1px;
5659
+ border-color: var(--color-border-secondary);
5660
+ padding-left: 24px;
5661
+ padding-right: 24px;
5662
+ padding-top: 20px;
5663
+ padding-bottom: 20px;
5664
+ }
5665
+
5666
+ /* Botao de fechar de verdade: <button aria-label="Fechar">, focavel pelo
5667
+ teclado, com anel de foco via ::after (o index.css global mata o outline
5668
+ de todo elemento; o pseudo-elemento nao entra nessa regra). A caixa e de
5669
+ 24px, o tamanho que o icone solto ja ocupava, para o cabecalho nao mudar
5670
+ de altura em nenhum consumidor. */
5671
+ .gyramais-drawer .gyramais-drawer-close {
5672
+ position: relative;
5673
+ margin: 0px;
5674
+ display: flex;
5675
+ height: 24px;
5676
+ width: 24px;
5677
+ flex-shrink: 0;
5678
+ cursor: pointer;
5679
+ align-items: center;
5680
+ justify-content: center;
5681
+ border-radius: var(--radius-sm);
5682
+ border-width: 0px;
5683
+ background-color: transparent;
5684
+ padding: 0px;
5685
+ color: var(--color-text-secondary);
5686
+ transition-duration: 150ms;
5687
+ animation-duration: 150ms;
5688
+ }
5689
+ .gyramais-drawer .gyramais-drawer-close:hover {
5690
+ color: var(--color-text-primary);
5691
+ }
5692
+ .gyramais-drawer .gyramais-drawer-close:focus-visible::after {
5693
+ content: "";
5694
+ pointer-events: none;
5695
+ position: absolute;
5696
+ inset: -4px;
5697
+ border-radius: var(--radius-md);
5698
+ border-width: 2px;
5699
+ border-color: var(--gyra-blue);
5688
5700
  }
5689
5701
 
5690
5702
  .gyramais-drawer .gyramais-drawer-close-icon {
5691
- cursor: pointer;
5692
- font-size: 24px;
5693
- color: var(--color-text-secondary);
5694
- transition-duration: 150ms;
5695
- animation-duration: 150ms
5696
- }
5697
- .gyramais-drawer .gyramais-drawer-close-icon:hover {
5698
- color: var(--color-text-primary)
5703
+ cursor: pointer;
5704
+ font-size: 24px;
5705
+ transition-duration: 150ms;
5706
+ animation-duration: 150ms;
5699
5707
  }
5700
5708
 
5701
5709
  /* v2 DropdownMenu chrome — hairline border + subtle elevation, flat items. */
@@ -5767,39 +5775,30 @@ h6 {
5767
5775
  }
5768
5776
 
5769
5777
  .gyramais-empty {
5770
- display: flex;
5771
- flex-direction: column;
5772
- align-items: center;
5773
- justify-content: center;
5774
- gap: 0.75rem;
5775
- padding-left: 1rem;
5776
- padding-right: 1rem;
5777
- padding-top: 1.5rem;
5778
- padding-bottom: 1.5rem
5778
+ padding-top: 1rem;
5779
+ padding-bottom: 1rem
5779
5780
  }
5780
-
5781
5781
  .gyramais-empty .gyramais-empty-icon {
5782
- display: flex;
5783
- justify-content: center
5782
+ display: flex;
5783
+ justify-content: center
5784
5784
  }
5785
-
5786
- /* O tamanho vai no SVG, nao no wrapper: icone do MUI declara o proprio
5787
- `font-size`, entao `text-[40px]` no pai nao chega nele e ele encolhe para o
5788
- padrao do MUI. */
5789
5785
  .gyramais-empty .gyramais-empty-icon svg {
5790
- font-size: 40px;
5791
- color: var(--color-text-quaternary)
5786
+ font-size: 40px;
5787
+ --tw-text-opacity: 1;
5788
+ color: rgb(184 184 184 / var(--tw-text-opacity, 1))
5792
5789
  }
5793
-
5794
- /* Texto secundario, nao preto: lista vazia informa, nao anuncia. Em preto ela
5795
- pesava igual ao dado de verdade da tabela ao lado. */
5796
5790
  .gyramais-empty .gyramais-empty-text {
5797
- text-align: center;
5798
- font-size: var(--fs-subheadline);
5799
- line-height: var(--lh-normal);
5800
- color: var(--color-text-tertiary)
5791
+ display: flex;
5792
+ justify-content: center;
5793
+ padding-top: 0.5rem;
5794
+ padding-bottom: 0.5rem;
5795
+ font-size: 0.875rem;
5796
+ line-height: 1.25rem;
5797
+ font-weight: 400;
5798
+ line-height: 22px;
5799
+ --tw-text-opacity: 1;
5800
+ color: rgb(0 0 0 / var(--tw-text-opacity, 1))
5801
5801
  }
5802
-
5803
5802
  .gyramais-filter .gyramais-filter-button-container {
5804
5803
  position: relative;
5805
5804
  width: -moz-fit-content;
@@ -7031,11 +7030,38 @@ h6 {
7031
7030
  20px;
7032
7031
  }
7033
7032
 
7034
- .gyramais-modal .gyramais-modal-close-icon {
7033
+ /* Botao de fechar de verdade: <button aria-label="Fechar">, focavel pelo
7034
+ teclado, com anel de foco via ::after (o index.css global mata o outline
7035
+ de todo elemento; o pseudo-elemento nao entra nessa regra). A caixa e de
7036
+ 24px, o tamanho que o icone solto ja ocupava, para o cabecalho nao mudar
7037
+ de altura em nenhum consumidor. */
7038
+ .gyramais-modal .gyramais-modal-close {
7039
+ position:
7040
+ relative;
7041
+ margin:
7042
+ 0px;
7043
+ display:
7044
+ flex;
7045
+ height:
7046
+ 24px;
7047
+ width:
7048
+ 24px;
7049
+ flex-shrink:
7050
+ 0;
7035
7051
  cursor:
7036
7052
  pointer;
7037
- font-size:
7038
- 24px;
7053
+ align-items:
7054
+ center;
7055
+ justify-content:
7056
+ center;
7057
+ border-radius:
7058
+ var(--radius-sm);
7059
+ border-width:
7060
+ 0px;
7061
+ background-color:
7062
+ transparent;
7063
+ padding:
7064
+ 0px;
7039
7065
  color:
7040
7066
  var(--color-text-secondary);
7041
7067
  transition-duration:
@@ -7043,10 +7069,42 @@ h6 {
7043
7069
  animation-duration:
7044
7070
  150ms;
7045
7071
  }
7046
- .gyramais-modal .gyramais-modal-close-icon:hover {
7072
+ .gyramais-modal .gyramais-modal-close:hover:not(:disabled) {
7047
7073
  color:
7048
7074
  var(--color-text-primary);
7049
7075
  }
7076
+ .gyramais-modal .gyramais-modal-close:disabled {
7077
+ cursor:
7078
+ not-allowed;
7079
+ opacity:
7080
+ 0.6;
7081
+ }
7082
+ .gyramais-modal .gyramais-modal-close:focus-visible::after {
7083
+ content: "";
7084
+ pointer-events:
7085
+ none;
7086
+ position:
7087
+ absolute;
7088
+ inset:
7089
+ -4px;
7090
+ border-radius:
7091
+ var(--radius-md);
7092
+ border-width:
7093
+ 2px;
7094
+ border-color:
7095
+ var(--gyra-blue);
7096
+ }
7097
+
7098
+ .gyramais-modal .gyramais-modal-close-icon {
7099
+ cursor:
7100
+ pointer;
7101
+ font-size:
7102
+ 24px;
7103
+ transition-duration:
7104
+ 150ms;
7105
+ animation-duration:
7106
+ 150ms;
7107
+ }
7050
7108
 
7051
7109
  @keyframes modal-entry {
7052
7110
  0% {
@@ -7059,7 +7117,25 @@ h6 {
7059
7117
  }
7060
7118
  }
7061
7119
 
7120
+ /* CAMADA DO POPOVER.
7121
+ *
7122
+ * O conteudo do popover e portalado para o `body` pelo Radix, mas portal nao
7123
+ * decide pintura: z-index decide. O `PopoverContent` do shadcn nasce com o
7124
+ * `z-50` do template, e as camadas flutuantes desta casa vivem MUITO acima
7125
+ * disso: Drawer (react-modern-drawer) em 101, Modal em 200, menu do Select
7126
+ * em 210, Tooltip em 300.
7127
+ *
7128
+ * Resultado, ate GYR-1623: qualquer popover aberto de dentro de uma gaveta
7129
+ * (o conector da esteira, por exemplo) era pintado ATRAS do painel e parava
7130
+ * de receber clique — `elementFromPoint` no meio do menu devolvia o que
7131
+ * estava na gaveta.
7132
+ *
7133
+ * 210 e o mesmo degrau do menu do Select (`Select.tsx`, `menuPortal`): os
7134
+ * dois sao a mesma coisa (lista flutuante disparada por um controle) e
7135
+ * precisam ficar acima de gaveta e de modal, e abaixo do tooltip.
7136
+ */
7062
7137
  .gyramais-popover-content {
7138
+ z-index: 210 !important;
7063
7139
  width: -moz-fit-content;
7064
7140
  width: fit-content;
7065
7141
  border-radius: 8px;
@@ -7070,6 +7146,7 @@ h6 {
7070
7146
  --tw-shadow-colored: 0 5px 5px 0 var(--tw-shadow-color), 0 8px 10px 0 var(--tw-shadow-color) !important;
7071
7147
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important
7072
7148
  }
7149
+
7073
7150
  .gyramais-processing-chip {
7074
7151
  position: relative;
7075
7152
  display: inline-flex;
@@ -7295,44 +7372,935 @@ h6 {
7295
7372
  --tw-text-opacity: 1;
7296
7373
  color: rgb(98 105 118 / var(--tw-text-opacity, 1))
7297
7374
  }
7298
- .gyramais-rich-input-controller {
7299
- position: relative;
7300
- transition-duration: 300ms;
7301
- animation-duration: 300ms
7302
- }
7303
- .gyramais-rich-input-controller.gyramais-rich-input-disabled {
7304
- opacity: 0.5;
7305
- --tw-grayscale: grayscale(100%);
7306
- filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)
7375
+ /* Rail, a esteira Gyra+ (lista vertical de etapas + conector condicional).
7376
+ Todas as cores saem dos tokens do design system: nada de hex solto aqui.
7377
+
7378
+ Escala: tipografia 15 (nome) / 13 (linha 2) / 12 (estado, conector, motivo);
7379
+ espacamento em multiplos de 4: padding do cartao 12, gap entre linhas 2,
7380
+ gap entre cartoes 8 (via o conector de 32px: 24 de pilula + 4 + 4).
7381
+
7382
+ Armadilha do repositorio: o index.css global tem `* { outline: none
7383
+ !important }` e `*:focus { box-shadow: none !important }`. Anel de foco
7384
+ desenhado no proprio elemento morre em silencio. Por isso o foco visivel
7385
+ aqui e um ::after (o seletor universal nao casa com pseudo-elemento). */
7386
+
7387
+ .gyramais-rail-wrapper {
7388
+ display: flex;
7389
+ width: 100%;
7390
+ flex-direction: column;
7307
7391
  }
7308
- .gyramais-rich-input-controller.gyramais-rich-input-disabled * {
7309
- cursor: not-allowed
7392
+
7393
+ .gyramais-rail {
7394
+ margin: 0px;
7395
+ display: flex;
7396
+ width: 100%;
7397
+ list-style-type: none;
7398
+ flex-direction: column;
7399
+ padding: 0px;
7310
7400
  }
7311
7401
 
7312
- .gyramais-rich-input-wrapper {
7313
- border-radius: 20px;
7314
- border-color: var(--border-color);
7315
- --tw-bg-opacity: 1;
7316
- background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
7317
- --tw-shadow: 0px 14px 64px -4px #18274b1f, 0px 8px 22px -6px #18274b1f;
7318
- --tw-shadow-colored: 0px 14px 64px -4px var(--tw-shadow-color), 0px 8px 22px -6px var(--tw-shadow-color);
7319
- box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
7402
+ /* Coluna do trilho: 8px de marcador + 12px de folga ate o cartao. */
7403
+ .gyramais-rail-item {
7404
+ position: relative;
7405
+ display: flex;
7406
+ flex-direction: column;
7407
+ padding-left: 20px;
7320
7408
  }
7321
7409
 
7322
- .gyramais-rich-input-placeholder {
7323
- position: absolute;
7324
- top: -10px;
7325
- left: 22px;
7326
- animation: fade-in .3s 1;
7327
- font-size: 0.875rem;
7328
- line-height: 1.25rem;
7329
- font-weight: 500;
7330
- color: var(--primary-button-color)
7410
+ /* ---- Trilho: linha de 1px na cor de borda ------------------------------
7411
+ Cada peca (conector, etapa) desenha o seu proprio segmento, assim a linha
7412
+ comeca no marcador da primeira etapa e termina no marcador da ultima. */
7413
+
7414
+ .gyramais-rail-connector::before,
7415
+ .gyramais-rail-step::before {
7416
+ content: "";
7417
+ position: absolute;
7418
+ left: -16.5px;
7419
+ top: 0;
7420
+ bottom: 0;
7421
+ width: 1px;
7422
+ background: var(--color-border-secondary);
7423
+ }
7424
+ .gyramais-rail-item:first-child .gyramais-rail-step::before {
7425
+ top: 23px;
7426
+ }
7427
+ .gyramais-rail-item:last-child .gyramais-rail-step::before {
7428
+ bottom: auto;
7429
+ height: 23px;
7430
+ }
7431
+ .gyramais-rail-item:first-child:last-child .gyramais-rail-step::before {
7432
+ display: none;
7331
7433
  }
7332
7434
 
7333
- .gyramais-rich-input-toolbar {
7334
- margin-bottom: 0px;
7335
- min-height: 54px;
7435
+ /* ---- Conector (pilula de 24px alinhada ao trilho) ----------------------- */
7436
+
7437
+ .gyramais-rail-connector {
7438
+ position: relative;
7439
+ display: flex;
7440
+ min-height: 32px;
7441
+ align-items: center;
7442
+ gap: 6px;
7443
+ padding-top: 4px;
7444
+ padding-bottom: 4px;
7445
+ }
7446
+
7447
+ .gyramais-rail-gate-editor {
7448
+ display: inline-flex;
7449
+ }
7450
+
7451
+ /* A pilula editavel e o SegmentedPicker "secondary" com a densidade da
7452
+ esteira: 24px de altura, 12px de texto, 12px de icone. */
7453
+ .gyramais-rail-gate.gyramais-segmented-picker.gyramais-segmented-picker-secondary {
7454
+ height: 24px;
7455
+ gap: 4px;
7456
+ border-radius: 9999px;
7457
+ border-width: 1px;
7458
+ border-color: var(--color-border-secondary);
7459
+ background-color: var(--color-surface-primary);
7460
+ padding-top: 0px;
7461
+ padding-bottom: 0px;
7462
+ padding-left: 6px;
7463
+ padding-right: 6px;
7464
+ font-size: var(--fs-footnote);
7465
+ font-weight: 500;
7466
+ line-height: 1;
7467
+ color: var(--color-text-secondary);
7468
+ }
7469
+ .gyramais-rail-gate.gyramais-segmented-picker.gyramais-segmented-picker-secondary:hover {
7470
+ border-color: var(--color-border-primary);
7471
+ background-color: var(--color-surface-secondary);
7472
+ color: var(--color-text-primary);
7473
+ }
7474
+ .gyramais-rail-gate.gyramais-segmented-picker-secondary .gyramais-segmented-picker-icon svg {
7475
+ font-size: 12px;
7476
+ }
7477
+ .gyramais-rail-gate.gyramais-segmented-picker-secondary .gyramais-segmented-picker-chev {
7478
+ margin-left: 0px;
7479
+ font-size: 14px;
7480
+ }
7481
+
7482
+ .gyramais-rail-gate-static {
7483
+ display: inline-flex;
7484
+ height: 24px;
7485
+ align-items: center;
7486
+ gap: 4px;
7487
+ border-radius: 9999px;
7488
+ border-width: 1px;
7489
+ border-color: var(--color-border-secondary);
7490
+ background-color: var(--color-surface-primary);
7491
+ padding-left: 8px;
7492
+ padding-right: 8px;
7493
+ font-size: var(--fs-footnote);
7494
+ font-weight: 500;
7495
+ line-height: 1;
7496
+ color: var(--color-text-secondary);
7497
+ }
7498
+ .gyramais-rail-gate-static.is-passed {
7499
+ border-color: var(--color-success-light);
7500
+ background-color: var(--color-success-light);
7501
+ color: var(--status-success-text);
7502
+ }
7503
+ .gyramais-rail-gate-static.is-blocked {
7504
+ border-style: dashed;
7505
+ color: var(--color-text-tertiary);
7506
+ }
7507
+
7508
+ .gyramais-rail-gate-icon {
7509
+ display: inline-flex;
7510
+ align-items: center;
7511
+ color: var(--color-text-tertiary);
7512
+ }
7513
+ .gyramais-rail-gate-static.is-passed .gyramais-rail-gate-icon {
7514
+ color: var(--status-success-text);
7515
+ }
7516
+
7517
+ /* Acento por condicao, valendo tanto na pilula editavel quanto na estatica. */
7518
+ .gyramais-rail-gate.is-approved .gyramais-segmented-picker-icon,
7519
+ .gyramais-rail-gate.is-approved.gyramais-rail-gate-static:not(.is-blocked) .gyramais-rail-gate-icon {
7520
+ color: var(--color-success);
7521
+ }
7522
+ .gyramais-rail-gate.is-alert .gyramais-segmented-picker-icon,
7523
+ .gyramais-rail-gate.is-alert.gyramais-rail-gate-static:not(.is-blocked) .gyramais-rail-gate-icon {
7524
+ color: var(--color-warning);
7525
+ }
7526
+ .gyramais-rail-gate.is-reproved .gyramais-segmented-picker-icon,
7527
+ .gyramais-rail-gate.is-reproved.gyramais-rail-gate-static:not(.is-blocked) .gyramais-rail-gate-icon {
7528
+ color: var(--color-danger);
7529
+ }
7530
+ .gyramais-rail-gate-static.is-passed .gyramais-rail-gate-icon {
7531
+ color: var(--status-success-text);
7532
+ }
7533
+
7534
+ /* ---- Inserir / adicionar etapa ----------------------------------------- */
7535
+
7536
+ /* O "+" entre etapas so aparece quando o conector esta em hover ou com foco:
7537
+ e uma acao secundaria e nao precisa competir com a pilula. */
7538
+ .gyramais-rail-insert {
7539
+ position: relative;
7540
+ display: inline-flex;
7541
+ height: 20px;
7542
+ width: 20px;
7543
+ cursor: pointer;
7544
+ align-items: center;
7545
+ justify-content: center;
7546
+ border-radius: 9999px;
7547
+ border-width: 1px;
7548
+ border-style: dashed;
7549
+ border-color: var(--color-border-primary);
7550
+ background-color: var(--color-surface-primary);
7551
+ color: var(--color-text-tertiary);
7552
+ opacity: 0;
7553
+ transition-property: opacity;
7554
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7555
+ transition-duration: 150ms;
7556
+ animation-duration: 150ms;
7557
+ }
7558
+ .gyramais-rail-connector:hover .gyramais-rail-insert,
7559
+ .gyramais-rail-connector:focus-within .gyramais-rail-insert,
7560
+ .gyramais-rail-insert:focus-visible {
7561
+ opacity: 1;
7562
+ }
7563
+ @media (hover: none) {
7564
+ .gyramais-rail-insert {
7565
+ opacity: 1;
7566
+ }
7567
+ }
7568
+
7569
+ .gyramais-rail-add {
7570
+ position: relative;
7571
+ margin-left: 20px;
7572
+ margin-top: 4px;
7573
+ display: inline-flex;
7574
+ height: 28px;
7575
+ cursor: pointer;
7576
+ align-items: center;
7577
+ gap: 6px;
7578
+ align-self: flex-start;
7579
+ border-radius: var(--radius-sm);
7580
+ border-width: 0px;
7581
+ background-color: transparent;
7582
+ padding-left: 8px;
7583
+ padding-right: 8px;
7584
+ font-size: var(--fs-subheadline);
7585
+ font-weight: 500;
7586
+ color: var(--color-text-secondary);
7587
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
7588
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7589
+ transition-duration: 150ms;
7590
+ animation-duration: 150ms;
7591
+ }
7592
+
7593
+ .gyramais-rail-insert:hover,
7594
+ .gyramais-rail-add:hover {
7595
+ border-color: var(--gyra-blue);
7596
+ background-color: var(--gyra-blue-subtle);
7597
+ color: var(--gyra-blue);
7598
+ }
7599
+
7600
+ .gyramais-rail-insert:focus-visible::after,
7601
+ .gyramais-rail-add:focus-visible::after,
7602
+ .gyramais-rail-step:focus-visible::after,
7603
+ .gyramais-rail-leaf:focus-visible::after,
7604
+ .gyramais-rail-leaves-toggle:focus-visible::after,
7605
+ .gyramais-rail-step-open:focus-visible::after,
7606
+ .gyramais-rail-step-action:focus-visible::after,
7607
+ .gyramais-rail-inline-select:focus-visible::after {
7608
+ content: "";
7609
+ pointer-events: none;
7610
+ position: absolute;
7611
+ inset: -3px;
7612
+ border-radius: var(--radius-md);
7613
+ border-width: 2px;
7614
+ border-color: var(--gyra-blue);
7615
+ }
7616
+ .gyramais-rail-insert:focus-visible::after,
7617
+ .gyramais-rail-step-action:focus-visible::after {
7618
+ border-radius: 9999px;
7619
+ }
7620
+ .gyramais-rail-inline-select:focus-visible::after,
7621
+ .gyramais-rail-leaves-toggle:focus-visible::after,
7622
+ .gyramais-rail-step-open:focus-visible::after {
7623
+ inset: -2px;
7624
+ border-radius: var(--radius-sm);
7625
+ }
7626
+
7627
+ /* ---- Etapa ------------------------------------------------------------- */
7628
+
7629
+ .gyramais-rail-step {
7630
+ position: relative;
7631
+ }
7632
+
7633
+ /* Marcador de 8px sobre o trilho, centrado na linha 1 do cartao
7634
+ (1px de borda + 12px de padding + (20px de linha - 8px) / 2 = 19px). */
7635
+ .gyramais-rail-node {
7636
+ position: absolute;
7637
+ left: -20px;
7638
+ top: 19px;
7639
+ z-index: 1;
7640
+ height: 8px;
7641
+ width: 8px;
7642
+ border-radius: 9999px;
7643
+ border-width: 1px;
7644
+ border-color: var(--color-border-strong);
7645
+ background-color: var(--color-surface-primary);
7646
+ }
7647
+ .gyramais-rail-edit .gyramais-rail-node {
7648
+ border-color: var(--color-gray-300);
7649
+ background-color: var(--color-gray-300);
7650
+ }
7651
+ .gyramais-rail-node.is-info {
7652
+ border-color: var(--gyra-blue);
7653
+ background-color: var(--gyra-blue);
7654
+ }
7655
+ .gyramais-rail-node.is-success {
7656
+ border-color: var(--color-success);
7657
+ background-color: var(--color-success);
7658
+ }
7659
+ .gyramais-rail-node.is-warning {
7660
+ border-color: var(--color-warning);
7661
+ background-color: var(--color-warning);
7662
+ }
7663
+ .gyramais-rail-node.is-danger {
7664
+ border-color: var(--color-danger);
7665
+ background-color: var(--color-danger);
7666
+ }
7667
+ .gyramais-rail-node.is-neutral {
7668
+ border-color: var(--color-border-strong);
7669
+ background-color: var(--color-surface-primary);
7670
+ }
7671
+ .gyramais-rail-node.is-skipped {
7672
+ border-color: var(--color-border-primary);
7673
+ background-color: var(--color-surface-primary);
7674
+ }
7675
+
7676
+ /* O Card do design system como contentor (borda, raio, fundo), com a
7677
+ densidade da esteira. O header do Card nao e usado: a anatomia de duas
7678
+ linhas e o conteudo. */
7679
+ .gyramais-rail-step-card.gyramais-card {
7680
+ border-radius: var(--radius-md);
7681
+ padding: 12px;
7682
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
7683
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7684
+ transition-duration: 150ms;
7685
+ animation-duration: 150ms;
7686
+ }
7687
+ .gyramais-rail-step-card.gyramais-card .gyramais-card-content {
7688
+ position: static;
7689
+ }
7690
+ .gyramais-rail-step:hover .gyramais-rail-step-card.gyramais-card {
7691
+ border-color: var(--color-border-primary);
7692
+ }
7693
+ .gyramais-rail-step.is-active .gyramais-rail-step-card.gyramais-card,
7694
+ .gyramais-rail-step.is-selected .gyramais-rail-step-card.gyramais-card {
7695
+ border-color: var(--gyra-blue);
7696
+ }
7697
+ .gyramais-rail-step.is-selected .gyramais-rail-step-card.gyramais-card {
7698
+ background-color: var(--gyra-blue-subtle);
7699
+ }
7700
+
7701
+ /* Etapa que nao disparou: cartao translucido. O motivo NAO entra aqui,
7702
+ fica fora do cartao, em contraste cheio. */
7703
+ .gyramais-rail-step.is-skipped .gyramais-rail-step-card.gyramais-card {
7704
+ border-style: dashed;
7705
+ opacity: 0.5;
7706
+ }
7707
+ .gyramais-rail-step.is-disabled .gyramais-rail-step-card.gyramais-card {
7708
+ opacity: 0.6;
7709
+ }
7710
+
7711
+ .gyramais-rail-step-row {
7712
+ display: flex;
7713
+ align-items: flex-start;
7714
+ gap: 10px;
7715
+ }
7716
+
7717
+ /* Glifo do tipo: chip neutro de 24px. O tipo vive aqui e no tooltip, nunca
7718
+ como texto no cartao. */
7719
+ .gyramais-rail-step-glyph {
7720
+ display: inline-flex;
7721
+ height: 24px;
7722
+ width: 24px;
7723
+ flex-shrink: 0;
7724
+ align-items: center;
7725
+ justify-content: center;
7726
+ border-radius: var(--radius-sm);
7727
+ background-color: var(--color-gray-50);
7728
+ color: var(--color-text-secondary);
7729
+ margin-top: -2px;
7730
+ }
7731
+ .gyramais-rail-step.is-active .gyramais-rail-step-glyph {
7732
+ background-color: var(--gyra-blue-light);
7733
+ color: var(--gyra-blue);
7734
+ }
7735
+
7736
+ .gyramais-rail-step-main {
7737
+ display: flex;
7738
+ min-width: 0px;
7739
+ flex: 1 1 0%;
7740
+ flex-direction: column;
7741
+ gap: 2px;
7742
+ }
7743
+
7744
+ .gyramais-rail-step-line1 {
7745
+ display: flex;
7746
+ min-height: 20px;
7747
+ min-width: 0px;
7748
+ align-items: center;
7749
+ gap: 8px;
7750
+ }
7751
+
7752
+ .gyramais-rail-step-name {
7753
+ display: block;
7754
+ overflow: hidden;
7755
+ text-overflow: ellipsis;
7756
+ white-space: nowrap;
7757
+ font-size: var(--fs-body);
7758
+ font-weight: 600;
7759
+ line-height: 20px;
7760
+ letter-spacing: var(--tracking-normal);
7761
+ color: var(--color-text-primary);
7762
+ }
7763
+
7764
+ .gyramais-rail-step-open {
7765
+ position: relative;
7766
+ display: inline-flex;
7767
+ min-width: 0px;
7768
+ cursor: pointer;
7769
+ align-items: center;
7770
+ gap: 4px;
7771
+ border-width: 0px;
7772
+ background-color: transparent;
7773
+ padding: 0px;
7774
+ text-decoration-line: none;
7775
+ font-family: inherit;
7776
+ }
7777
+ .gyramais-rail-step-open:hover .gyramais-rail-step-name {
7778
+ color: var(--gyra-blue);
7779
+ }
7780
+ .gyramais-rail-step-open-icon {
7781
+ flex-shrink: 0;
7782
+ color: var(--color-text-quaternary);
7783
+ }
7784
+
7785
+ .gyramais-rail-step-meta {
7786
+ display: inline-flex;
7787
+ flex-shrink: 0;
7788
+ align-items: center;
7789
+ gap: 4px;
7790
+ }
7791
+ /* Tag do design system, na densidade de um chip de 20px. */
7792
+ .gyramais-rail-step-meta .gyramais-tag {
7793
+ height: 20px;
7794
+ border-radius: var(--radius-xs);
7795
+ border-color: var(--color-border-subtle);
7796
+ background-color: var(--color-gray-50);
7797
+ padding-left: 6px;
7798
+ padding-right: 6px;
7799
+ padding-top: 0px;
7800
+ padding-bottom: 0px;
7801
+ }
7802
+ .gyramais-rail-step-meta .gyramais-tag .gyramais-tag-content {
7803
+ font-size: var(--fs-footnote);
7804
+ line-height: 18px;
7805
+ color: var(--color-text-secondary);
7806
+ }
7807
+ .gyramais-rail-step-meta .gyramais-tag .gyramais-tag-icon {
7808
+ margin-right: 4px;
7809
+ --tw-scale-x: 1;
7810
+ --tw-scale-y: 1;
7811
+ 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));
7812
+ }
7813
+
7814
+ .gyramais-rail-step-line2 {
7815
+ display: flex;
7816
+ min-height: 18px;
7817
+ min-width: 0px;
7818
+ align-items: center;
7819
+ }
7820
+
7821
+ .gyramais-rail-step-text {
7822
+ font-size: var(--fs-subheadline);
7823
+ line-height: 18px;
7824
+ color: var(--color-text-secondary);
7825
+ }
7826
+
7827
+ /* Seletor inline: texto + chevron no corpo do texto, sem borda. O padding
7828
+ horizontal e compensado por uma margem negativa para o texto alinhar
7829
+ com o nome da etapa. */
7830
+ /* Largura: o gatilho ocupa o que o texto pede e so encolhe (com
7831
+ reticencias) quando a linha de fato nao o comporta. `min-w-0` deixa o
7832
+ flex encolher; NAO usar `max-w-full`: com a margem negativa de 6px, um
7833
+ invólucro shrink-to-fit (o `span` do toolbox em volta do gatilho) mede a
7834
+ caixa de margem, e 100% dela e 6px menos que o proprio conteudo, o que
7835
+ truncava toda politica por 6px com meio cartao vazio (E2 do guard). */
7836
+ .gyramais-rail-inline-select {
7837
+ position: relative;
7838
+ margin-left: -6px;
7839
+ display: inline-flex;
7840
+ height: 20px;
7841
+ min-width: 0px;
7842
+ cursor: pointer;
7843
+ align-items: center;
7844
+ gap: 2px;
7845
+ border-radius: var(--radius-sm);
7846
+ border-width: 0px;
7847
+ background-color: transparent;
7848
+ padding-left: 6px;
7849
+ padding-right: 4px;
7850
+ font-size: var(--fs-subheadline);
7851
+ font-weight: 500;
7852
+ line-height: 18px;
7853
+ color: var(--color-text-primary);
7854
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
7855
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7856
+ transition-duration: 150ms;
7857
+ animation-duration: 150ms;
7858
+ font-family: inherit;
7859
+ }
7860
+ .gyramais-rail-inline-select:hover:not(:disabled) {
7861
+ background-color: var(--color-surface-active);
7862
+ }
7863
+ .gyramais-rail-inline-select:disabled {
7864
+ cursor: not-allowed;
7865
+ opacity: 0.6;
7866
+ }
7867
+ .gyramais-rail-inline-select.is-placeholder {
7868
+ font-weight: 400;
7869
+ color: var(--color-text-tertiary);
7870
+ }
7871
+ .gyramais-rail-inline-select.is-warning {
7872
+ color: var(--status-warning-text);
7873
+ }
7874
+ .gyramais-rail-inline-select-text {
7875
+ overflow: hidden;
7876
+ text-overflow: ellipsis;
7877
+ white-space: nowrap;
7878
+ }
7879
+ .gyramais-rail-inline-select-chevron {
7880
+ flex-shrink: 0;
7881
+ color: var(--color-text-tertiary);
7882
+ }
7883
+
7884
+ .gyramais-rail-step-side {
7885
+ display: flex;
7886
+ min-height: 20px;
7887
+ flex-shrink: 0;
7888
+ align-items: center;
7889
+ gap: 8px;
7890
+ }
7891
+
7892
+ /* Estado: ponto de 6px + texto de 12px. A cor mora no ponto. */
7893
+ .gyramais-rail-status {
7894
+ display: inline-flex;
7895
+ align-items: center;
7896
+ gap: 6px;
7897
+ white-space: nowrap;
7898
+ font-size: var(--fs-footnote);
7899
+ line-height: 16px;
7900
+ color: var(--color-text-secondary);
7901
+ }
7902
+ .gyramais-rail-status-dot {
7903
+ height: 6px;
7904
+ width: 6px;
7905
+ flex-shrink: 0;
7906
+ border-radius: 9999px;
7907
+ background-color: var(--color-gray-300);
7908
+ }
7909
+ .gyramais-rail-status.is-info .gyramais-rail-status-dot {
7910
+ background-color: var(--gyra-blue);
7911
+ }
7912
+ .gyramais-rail-status.is-success .gyramais-rail-status-dot {
7913
+ background-color: var(--color-success);
7914
+ }
7915
+ .gyramais-rail-status.is-warning .gyramais-rail-status-dot {
7916
+ background-color: var(--color-warning);
7917
+ }
7918
+ .gyramais-rail-status.is-danger .gyramais-rail-status-dot {
7919
+ background-color: var(--color-danger);
7920
+ }
7921
+ .gyramais-rail-status.is-warning .gyramais-rail-status-label {
7922
+ color: var(--status-warning-text);
7923
+ }
7924
+ .gyramais-rail-status.is-danger .gyramais-rail-status-label {
7925
+ color: var(--status-danger-text);
7926
+ }
7927
+
7928
+ /* O botao do consumer ("Decidir"), na densidade da linha. */
7929
+ .gyramais-rail-step-actions .gyramais-button.gyramais-button-small {
7930
+ height: 24px;
7931
+ padding-left: 10px;
7932
+ padding-right: 10px;
7933
+ padding-top: 0px;
7934
+ padding-bottom: 0px;
7935
+ font-size: var(--fs-footnote);
7936
+ }
7937
+
7938
+ /* Ordenar/remover: so no hover e no foco. */
7939
+ .gyramais-rail-step-toolbar {
7940
+ display: flex;
7941
+ align-items: center;
7942
+ gap: 2px;
7943
+ opacity: 0;
7944
+ transition-property: opacity;
7945
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7946
+ transition-duration: 150ms;
7947
+ animation-duration: 150ms;
7948
+ }
7949
+ .gyramais-rail-step:hover .gyramais-rail-step-toolbar,
7950
+ .gyramais-rail-step:focus-within .gyramais-rail-step-toolbar,
7951
+ .gyramais-rail-step.is-selected .gyramais-rail-step-toolbar {
7952
+ opacity: 1;
7953
+ }
7954
+ @media (hover: none) {
7955
+ .gyramais-rail-step-toolbar {
7956
+ opacity: 1;
7957
+ }
7958
+ }
7959
+
7960
+ .gyramais-rail-step-action {
7961
+ position: relative;
7962
+ display: inline-flex;
7963
+ height: 24px;
7964
+ width: 24px;
7965
+ cursor: pointer;
7966
+ align-items: center;
7967
+ justify-content: center;
7968
+ border-radius: var(--radius-sm);
7969
+ border-width: 0px;
7970
+ background-color: transparent;
7971
+ color: var(--color-text-tertiary);
7972
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
7973
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7974
+ transition-duration: 150ms;
7975
+ animation-duration: 150ms;
7976
+ }
7977
+ .gyramais-rail-step-action:hover:not(:disabled) {
7978
+ background-color: var(--color-surface-active);
7979
+ color: var(--color-text-primary);
7980
+ }
7981
+ .gyramais-rail-step-action-danger:hover:not(:disabled) {
7982
+ color: var(--color-danger);
7983
+ }
7984
+ .gyramais-rail-step-action:disabled {
7985
+ cursor: not-allowed;
7986
+ opacity: 0.3;
7987
+ }
7988
+
7989
+ .gyramais-rail-step-content {
7990
+ margin-top: 8px;
7991
+ display: flex;
7992
+ flex-direction: column;
7993
+ gap: 8px;
7994
+ font-size: var(--fs-subheadline);
7995
+ color: var(--color-text-secondary);
7996
+ }
7997
+
7998
+ /* O motivo de a etapa nao ter disparado. Fora do cartao translucido de
7999
+ proposito: e a informacao que precisa ser lida. */
8000
+ .gyramais-rail-step-reason {
8001
+ margin-top: 4px;
8002
+ margin-bottom: 0px;
8003
+ display: flex;
8004
+ align-items: flex-start;
8005
+ gap: 8px;
8006
+ padding-left: 12px;
8007
+ font-size: var(--fs-footnote);
8008
+ line-height: 16px;
8009
+ color: var(--color-text-secondary);
8010
+ }
8011
+ .gyramais-rail-step-reason-mark {
8012
+ margin-top: 5px;
8013
+ height: 6px;
8014
+ width: 6px;
8015
+ flex-shrink: 0;
8016
+ border-radius: 9999px;
8017
+ background-color: var(--color-gray-300);
8018
+ }
8019
+ .gyramais-rail-step.is-error .gyramais-rail-step-reason {
8020
+ color: var(--status-danger-text);
8021
+ }
8022
+ .gyramais-rail-step.is-error .gyramais-rail-step-reason-mark {
8023
+ background-color: var(--color-danger);
8024
+ }
8025
+
8026
+ /* ---- Folhas (relatorios derivados dos vinculos) ------------------------ */
8027
+
8028
+ .gyramais-rail-leaves {
8029
+ margin-top: 8px;
8030
+ display: flex;
8031
+ flex-direction: column;
8032
+ }
8033
+
8034
+ .gyramais-rail-leaves-toggle {
8035
+ position: relative;
8036
+ margin-left: -4px;
8037
+ display: inline-flex;
8038
+ height: 20px;
8039
+ cursor: pointer;
8040
+ align-items: center;
8041
+ gap: 2px;
8042
+ align-self: flex-start;
8043
+ border-radius: var(--radius-sm);
8044
+ border-width: 0px;
8045
+ background-color: transparent;
8046
+ padding-left: 4px;
8047
+ padding-right: 4px;
8048
+ font-size: var(--fs-footnote);
8049
+ font-weight: 500;
8050
+ color: var(--color-text-secondary);
8051
+ font-family: inherit;
8052
+ }
8053
+ .gyramais-rail-leaves-toggle:hover {
8054
+ background-color: var(--color-surface-active);
8055
+ color: var(--color-text-primary);
8056
+ }
8057
+ .gyramais-rail-leaves-chevron {
8058
+ --tw-rotate: -90deg;
8059
+ 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));
8060
+ color: var(--color-text-tertiary);
8061
+ transition-property: transform;
8062
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
8063
+ transition-duration: 150ms;
8064
+ animation-duration: 150ms;
8065
+ }
8066
+ .gyramais-rail-leaves-chevron.is-open {
8067
+ --tw-rotate: 0deg;
8068
+ 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));
8069
+ }
8070
+
8071
+ .gyramais-rail-leaves-list {
8072
+ margin: 0px;
8073
+ margin-top: 4px;
8074
+ display: flex;
8075
+ list-style-type: none;
8076
+ flex-direction: column;
8077
+ gap: 2px;
8078
+ padding: 0px;
8079
+ }
8080
+
8081
+ .gyramais-rail-leaf-item {
8082
+ display: flex;
8083
+ }
8084
+
8085
+ .gyramais-rail-leaf {
8086
+ position: relative;
8087
+ margin-left: -8px;
8088
+ margin-right: -8px;
8089
+ display: flex;
8090
+ width: 100%;
8091
+ min-width: 0px;
8092
+ flex: 1 1 0%;
8093
+ cursor: pointer;
8094
+ align-items: center;
8095
+ justify-content: space-between;
8096
+ gap: 8px;
8097
+ border-radius: var(--radius-sm);
8098
+ border-width: 0px;
8099
+ background-color: transparent;
8100
+ padding-left: 8px;
8101
+ padding-right: 8px;
8102
+ padding-top: 6px;
8103
+ padding-bottom: 6px;
8104
+ text-align: left;
8105
+ text-decoration-line: none;
8106
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
8107
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
8108
+ transition-duration: 150ms;
8109
+ animation-duration: 150ms;
8110
+ font-family: inherit;
8111
+ }
8112
+ .gyramais-rail-leaf:hover:not(:disabled) {
8113
+ background-color: var(--color-surface-active);
8114
+ }
8115
+ .gyramais-rail-leaf:disabled {
8116
+ cursor: default;
8117
+ opacity: 0.7;
8118
+ }
8119
+
8120
+ .gyramais-rail-leaf-text {
8121
+ display: flex;
8122
+ min-width: 0px;
8123
+ flex-wrap: wrap;
8124
+ align-items: baseline;
8125
+ -moz-column-gap: 8px;
8126
+ column-gap: 8px;
8127
+ row-gap: 0px;
8128
+ }
8129
+
8130
+ .gyramais-rail-leaf-title {
8131
+ font-size: var(--fs-subheadline);
8132
+ font-weight: 500;
8133
+ line-height: 18px;
8134
+ color: var(--color-text-primary);
8135
+ }
8136
+
8137
+ .gyramais-rail-leaf-document {
8138
+ font-size: var(--fs-footnote);
8139
+ color: var(--color-text-secondary);
8140
+ font-variant-numeric: tabular-nums;
8141
+ }
8142
+
8143
+ .gyramais-rail-leaf-subtitle {
8144
+ font-size: var(--fs-footnote);
8145
+ color: var(--color-text-tertiary);
8146
+ }
8147
+
8148
+ .gyramais-rail-leaf-status {
8149
+ flex-shrink: 0;
8150
+ }
8151
+
8152
+ /* ---- Vazio ------------------------------------------------------------- */
8153
+
8154
+ .gyramais-rail-empty {
8155
+ display: flex;
8156
+ flex-direction: column;
8157
+ align-items: flex-start;
8158
+ gap: 8px;
8159
+ border-radius: var(--radius-md);
8160
+ border-width: 1px;
8161
+ border-style: dashed;
8162
+ border-color: var(--color-border-primary);
8163
+ background-color: var(--color-surface-secondary);
8164
+ padding: 16px;
8165
+ }
8166
+
8167
+ .gyramais-rail-empty-text {
8168
+ margin: 0px;
8169
+ font-size: var(--fs-subheadline);
8170
+ line-height: 18px;
8171
+ color: var(--color-text-secondary);
8172
+ }
8173
+ .gyramais-rail-empty .gyramais-rail-add {
8174
+ margin-top: 0px;
8175
+ margin-left: -8px;
8176
+ }
8177
+
8178
+ /* ---- Somente leitor de tela -------------------------------------------- */
8179
+
8180
+ .gyramais-rail-sr {
8181
+ position: absolute;
8182
+ margin: -1px;
8183
+ height: 1px;
8184
+ width: 1px;
8185
+ overflow: hidden;
8186
+ white-space: nowrap;
8187
+ border-width: 0px;
8188
+ padding: 0px;
8189
+ clip: rect(0, 0, 0, 0);
8190
+ }
8191
+
8192
+ /* ---- Miniatura (RailMini) ---------------------------------------------
8193
+ A esteira do tamanho de uma celula de lista: uma bolinha de 6px por etapa,
8194
+ ligadas por um fio de 1px, no maximo ~120px. As cores sao as do modo run. */
8195
+
8196
+ .gyramais-rail-mini {
8197
+ display: inline-flex;
8198
+ max-width: 120px;
8199
+ align-items: center;
8200
+ gap: 6px;
8201
+ vertical-align: middle;
8202
+ }
8203
+
8204
+ .gyramais-rail-mini.with-summary {
8205
+ max-width: 100%;
8206
+ }
8207
+
8208
+ .gyramais-rail-mini-track {
8209
+ display: inline-flex;
8210
+ min-width: 0px;
8211
+ align-items: center;
8212
+ overflow: hidden;
8213
+ }
8214
+
8215
+ .gyramais-rail-mini-mark {
8216
+ height: 6px;
8217
+ width: 6px;
8218
+ flex-shrink: 0;
8219
+ border-radius: 9999px;
8220
+ border-width: 1px;
8221
+ border-color: transparent;
8222
+ background-color: var(--color-gray-300);
8223
+ }
8224
+ .gyramais-rail-mini-mark.is-approved {
8225
+ background-color: var(--color-success);
8226
+ }
8227
+ .gyramais-rail-mini-mark.is-alert {
8228
+ background-color: var(--color-warning);
8229
+ }
8230
+ .gyramais-rail-mini-mark.is-reproved {
8231
+ background-color: var(--color-danger);
8232
+ }
8233
+ .gyramais-rail-mini-mark.is-error {
8234
+ background-color: var(--color-danger);
8235
+ opacity: 0.6;
8236
+ }
8237
+ .gyramais-rail-mini-mark.is-running {
8238
+ background-color: var(--gyra-blue);
8239
+ }
8240
+ .gyramais-rail-mini-mark.is-waiting {
8241
+ background-color: var(--color-warning);
8242
+ }
8243
+ /* Etapa que NAO rodou fica oca: e o vocabulario da tela ("não rodou"). */
8244
+ .gyramais-rail-mini-mark.is-skipped,
8245
+ .gyramais-rail-mini-mark.is-pending {
8246
+ border-color: var(--color-border-strong);
8247
+ background-color: transparent;
8248
+ }
8249
+
8250
+ /* O fio encolhe antes de a fileira estourar os 120px. */
8251
+ .gyramais-rail-mini-link {
8252
+ height: 1px;
8253
+ background-color: var(--color-border-primary);
8254
+ flex: 0 1 6px;
8255
+ min-width: 2px;
8256
+ }
8257
+
8258
+ .gyramais-rail-mini-text {
8259
+ overflow: hidden;
8260
+ text-overflow: ellipsis;
8261
+ white-space: nowrap;
8262
+ font-size: var(--fs-footnote);
8263
+ color: var(--color-text-tertiary);
8264
+ }
8265
+
8266
+ .gyramais-rich-input-controller {
8267
+ position: relative;
8268
+ transition-duration: 300ms;
8269
+ animation-duration: 300ms
8270
+ }
8271
+ .gyramais-rich-input-controller.gyramais-rich-input-disabled {
8272
+ opacity: 0.5;
8273
+ --tw-grayscale: grayscale(100%);
8274
+ filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)
8275
+ }
8276
+ .gyramais-rich-input-controller.gyramais-rich-input-disabled * {
8277
+ cursor: not-allowed
8278
+ }
8279
+
8280
+ .gyramais-rich-input-wrapper {
8281
+ border-radius: 20px;
8282
+ border-color: var(--border-color);
8283
+ --tw-bg-opacity: 1;
8284
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
8285
+ --tw-shadow: 0px 14px 64px -4px #18274b1f, 0px 8px 22px -6px #18274b1f;
8286
+ --tw-shadow-colored: 0px 14px 64px -4px var(--tw-shadow-color), 0px 8px 22px -6px var(--tw-shadow-color);
8287
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
8288
+ }
8289
+
8290
+ .gyramais-rich-input-placeholder {
8291
+ position: absolute;
8292
+ top: -10px;
8293
+ left: 22px;
8294
+ animation: fade-in .3s 1;
8295
+ font-size: 0.875rem;
8296
+ line-height: 1.25rem;
8297
+ font-weight: 500;
8298
+ color: var(--primary-button-color)
8299
+ }
8300
+
8301
+ .gyramais-rich-input-toolbar {
8302
+ margin-bottom: 0px;
8303
+ min-height: 54px;
7336
8304
  border-top-left-radius: 20px;
7337
8305
  border-top-right-radius: 20px;
7338
8306
  border-bottom-color: var(--border-color);
@@ -7878,9 +8846,17 @@ h6 {
7878
8846
  font-family: inherit;
7879
8847
  }
7880
8848
 
7881
- /* Segmented picker — iOS-style verdict pill that opens a clean menu */
8849
+ /* Segmented picker — iOS-style verdict pill that opens a clean menu
8850
+ *
8851
+ * FOCO VISIVEL: o `src/index.css` desta biblioteca tem `* { outline: none
8852
+ * !important }` e `*:focus { box-shadow: none !important }`. Anel desenhado
8853
+ * no proprio elemento (outline ou box-shadow) morre calado — e foi o que
8854
+ * aconteceu aqui ate GYR-1623: navegando no menu por teclado nao havia
8855
+ * indicador NENHUM. O anel precisa ser um `::after`, porque o seletor
8856
+ * universal nao casa com pseudo-elemento. Mesma receita do `Rail`. */
7882
8857
 
7883
8858
  .gyramais-segmented-picker {
8859
+ position: relative;
7884
8860
  display: inline-flex;
7885
8861
  cursor: pointer;
7886
8862
  align-items: center;
@@ -7901,40 +8877,46 @@ h6 {
7901
8877
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7902
8878
  transition-duration: 200ms;
7903
8879
  animation-duration: 200ms;
7904
- font-family: inherit
8880
+ font-family: inherit;
7905
8881
  }
7906
8882
  .gyramais-segmented-picker:hover {
7907
- background-color: var(--color-surface-secondary)
8883
+ background-color: var(--color-surface-secondary);
7908
8884
  }
7909
8885
  .gyramais-segmented-picker:focus-visible {
7910
8886
  border-color: var(--gyra-blue);
7911
- outline: 2px solid transparent;
7912
- outline-offset: 2px;
7913
- box-shadow: 0 0 0 3px rgba(18, 86, 255, 0.10)
8887
+ }
8888
+ .gyramais-segmented-picker:focus-visible::after {
8889
+ content: "";
8890
+ pointer-events: none;
8891
+ position: absolute;
8892
+ inset: -3px;
8893
+ border-radius: 9999px;
8894
+ border-width: 2px;
8895
+ border-color: var(--gyra-blue);
7914
8896
  }
7915
8897
  .gyramais-segmented-picker:disabled {
7916
8898
  cursor: not-allowed;
7917
- opacity: 0.55
8899
+ opacity: 0.55;
7918
8900
  }
7919
8901
 
7920
8902
  .gyramais-segmented-picker-icon {
7921
8903
  display: inline-flex;
7922
8904
  align-items: center;
7923
- justify-content: center
8905
+ justify-content: center;
7924
8906
  }
7925
8907
  .gyramais-segmented-picker.is-aprova .gyramais-segmented-picker-icon {
7926
- color: var(--success-color)
8908
+ color: var(--success-color);
7927
8909
  }
7928
8910
  .gyramais-segmented-picker.is-alerta .gyramais-segmented-picker-icon {
7929
- color: var(--warning-color)
8911
+ color: var(--warning-color);
7930
8912
  }
7931
8913
  .gyramais-segmented-picker.is-reprova .gyramais-segmented-picker-icon {
7932
- color: var(--danger-color)
8914
+ color: var(--danger-color);
7933
8915
  }
7934
8916
 
7935
8917
  .gyramais-segmented-picker-chev {
7936
8918
  margin-left: 2px;
7937
- color: var(--color-text-tertiary)
8919
+ color: var(--color-text-tertiary);
7938
8920
  }
7939
8921
 
7940
8922
  /* Secondary variant — smaller, less prominent (used for "caso de erro") */
@@ -7947,33 +8929,34 @@ h6 {
7947
8929
  padding-right: 10px;
7948
8930
  font-size: 12px;
7949
8931
  font-weight: 500;
7950
- color: var(--color-text-secondary)
8932
+ color: var(--color-text-secondary);
7951
8933
  }
7952
8934
  .gyramais-segmented-picker-secondary:hover {
7953
8935
  border-color: var(--color-border-subtle);
7954
- background-color: var(--color-surface-active)
8936
+ background-color: var(--color-surface-active);
7955
8937
  }
7956
8938
  .gyramais-segmented-picker-secondary .gyramais-segmented-picker-icon svg {
7957
- font-size: 16px
8939
+ font-size: 16px;
7958
8940
  }
7959
8941
  .gyramais-segmented-picker-secondary .gyramais-segmented-picker-chev {
7960
- font-size: 16px
8942
+ font-size: 16px;
7961
8943
  }
7962
8944
 
7963
8945
  /* ---- Popover menu ---- */
7964
8946
  .gyramais-popover-content.gyramais-segmented-picker-dropdown {
7965
8947
  min-width: 320px;
7966
8948
  border-radius: var(--radius-lg);
7967
- padding: 6px
8949
+ padding: 6px;
7968
8950
  }
7969
8951
 
7970
8952
  .gyramais-segmented-picker-menu {
7971
8953
  display: flex;
7972
8954
  flex-direction: column;
7973
- gap: 2px
8955
+ gap: 2px;
7974
8956
  }
7975
8957
 
7976
8958
  .gyramais-segmented-picker-menu-item {
8959
+ position: relative;
7977
8960
  display: flex;
7978
8961
  width: 100%;
7979
8962
  cursor: pointer;
@@ -7993,13 +8976,25 @@ h6 {
7993
8976
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7994
8977
  transition-duration: 200ms;
7995
8978
  animation-duration: 200ms;
7996
- font-family: inherit
8979
+ font-family: inherit;
7997
8980
  }
7998
8981
  .gyramais-segmented-picker-menu-item:hover {
7999
- background-color: var(--color-surface-secondary)
8982
+ background-color: var(--color-surface-secondary);
8000
8983
  }
8001
8984
  .gyramais-segmented-picker-menu-item.is-on {
8002
- background-color: var(--color-surface-secondary)
8985
+ background-color: var(--color-surface-secondary);
8986
+ }
8987
+ .gyramais-segmented-picker-menu-item:focus-visible {
8988
+ background-color: var(--color-surface-secondary);
8989
+ }
8990
+ .gyramais-segmented-picker-menu-item:focus-visible::after {
8991
+ content: "";
8992
+ pointer-events: none;
8993
+ position: absolute;
8994
+ inset: 1px;
8995
+ border-radius: var(--radius-md);
8996
+ border-width: 2px;
8997
+ border-color: var(--gyra-blue);
8003
8998
  }
8004
8999
 
8005
9000
  .gyramais-segmented-picker-menu-icon {
@@ -8011,19 +9006,19 @@ h6 {
8011
9006
  justify-content: center;
8012
9007
  border-radius: 9999px;
8013
9008
  background-color: var(--color-gray-50);
8014
- color: var(--color-text-tertiary)
9009
+ color: var(--color-text-tertiary);
8015
9010
  }
8016
9011
  .gyramais-segmented-picker-menu-icon.is-aprova {
8017
9012
  background-color: var(--success-light-color);
8018
- color: var(--status-success-text)
9013
+ color: var(--status-success-text);
8019
9014
  }
8020
9015
  .gyramais-segmented-picker-menu-icon.is-alerta {
8021
9016
  background-color: var(--warning-light-color);
8022
- color: var(--status-warning-text)
9017
+ color: var(--status-warning-text);
8023
9018
  }
8024
9019
  .gyramais-segmented-picker-menu-icon.is-reprova {
8025
9020
  background-color: var(--danger-light-color);
8026
- color: var(--status-danger-text)
9021
+ color: var(--status-danger-text);
8027
9022
  }
8028
9023
 
8029
9024
  .gyramais-segmented-picker-menu-body {
@@ -8031,22 +9026,22 @@ h6 {
8031
9026
  min-width: 0px;
8032
9027
  flex: 1 1 0%;
8033
9028
  flex-direction: column;
8034
- gap: 2px
9029
+ gap: 2px;
8035
9030
  }
8036
9031
  .gyramais-segmented-picker-menu-title {
8037
9032
  font-size: 13.5px;
8038
9033
  font-weight: 600;
8039
- color: var(--color-text-primary)
9034
+ color: var(--color-text-primary);
8040
9035
  }
8041
9036
  .gyramais-segmented-picker-menu-desc {
8042
9037
  font-size: 11.5px;
8043
9038
  line-height: 1.35;
8044
- color: var(--color-text-tertiary)
9039
+ color: var(--color-text-tertiary);
8045
9040
  }
8046
9041
  .gyramais-segmented-picker-menu-check {
8047
9042
  margin-top: 6px;
8048
9043
  flex-shrink: 0;
8049
- color: var(--gyra-blue)
9044
+ color: var(--gyra-blue);
8050
9045
  }
8051
9046
 
8052
9047
  /* SegmentedToggle — 3-segmentos sempre visíveis, com variants por cor. */
@@ -8931,68 +9926,6 @@ h6 {
8931
9926
  left: 0.5rem !important
8932
9927
  }
8933
9928
 
8934
- .gyramais-skeleton {
8935
- position: relative;
8936
- display: block;
8937
- overflow: hidden;
8938
- background-color: var(--color-gray-100);
8939
- border-radius: var(--radius-sm);
8940
- }
8941
-
8942
- /* O brilho que varre o bloco. Pseudo-elemento para nao exigir um filho no DOM. */
8943
- .gyramais-skeleton::after {
8944
- position: absolute;
8945
- inset: 0px;
8946
- content: "";
8947
- transform: translateX(-100%);
8948
- background-image: linear-gradient(
8949
- 90deg,
8950
- rgba(255, 255, 255, 0) 0%,
8951
- rgba(255, 255, 255, 0.7) 50%,
8952
- rgba(255, 255, 255, 0) 100%
8953
- );
8954
- animation: gyramais-skeleton-shimmer 1.6s ease-in-out infinite;
8955
- }
8956
-
8957
- /* Parado de proposito: item na fila, nao em processamento. */
8958
- .gyramais-skeleton.gyramais-skeleton-static::after {
8959
- animation: none;
8960
- }
8961
-
8962
- .gyramais-skeleton.gyramais-skeleton-circle {
8963
- flex-shrink: 0;
8964
- border-radius: var(--radius-full);
8965
- }
8966
-
8967
- .gyramais-skeleton.gyramais-skeleton-block {
8968
- border-radius: var(--radius-md);
8969
- }
8970
-
8971
- .gyramais-skeleton-lines {
8972
- display: flex;
8973
- width: 100%;
8974
- flex-direction: column;
8975
- gap: 0.75rem;
8976
- }
8977
-
8978
- .gyramais-skeleton-lines .gyramais-skeleton-line {
8979
- height: 0.75rem;
8980
- }
8981
-
8982
- @keyframes gyramais-skeleton-shimmer {
8983
- 100% {
8984
- transform: translateX(100%);
8985
- }
8986
- }
8987
-
8988
- /* Sem animacao para quem pediu menos movimento: o bloco continua marcando o
8989
- espaco, so nao pulsa. */
8990
- @media (prefers-reduced-motion: reduce) {
8991
- .gyramais-skeleton::after {
8992
- animation: none;
8993
- }
8994
- }
8995
-
8996
9929
  /* PickerPopover — shell base de popovers tipo command-palette / tag-picker. */
8997
9930
 
8998
9931
  /* Container override do Popover base — chrome flat com elevação de dropdown */
@@ -10429,65 +11362,6 @@ h6 {
10429
11362
  }
10430
11363
  }
10431
11364
 
10432
- /* GYR-1646: refetch (troca de filtro, busca, acao de linha) NAO apaga as
10433
- linhas. Elas ficam esmaecidas enquanto a barra fina no topo indica que algo
10434
- esta vindo. Trocar dado visivel por placeholder e' regressao de UX: o
10435
- usuario perde o que estava lendo por causa de uma acao dele mesmo. */
10436
- .gyramais-table-container .gyramais-table-refetching {
10437
- opacity: 0.45;
10438
- transition: opacity 150ms ease-out;
10439
- pointer-events: none;
10440
- }
10441
-
10442
- .gyramais-table-container .gyramais-table-refetching-bar {
10443
- position: relative;
10444
- height: 2px;
10445
- overflow: hidden;
10446
- background-color: var(--color-gray-100);
10447
- }
10448
-
10449
- .gyramais-table-container .gyramais-table-refetching-bar::after {
10450
- content: "";
10451
- position: absolute;
10452
- top: 0;
10453
- bottom: 0;
10454
- width: 35%;
10455
- background-color: var(--gyra-blue);
10456
- animation: gyramais-table-refetching-slide 1.1s ease-in-out infinite;
10457
- }
10458
-
10459
- @keyframes gyramais-table-refetching-slide {
10460
- 0% {
10461
- left: -35%;
10462
- }
10463
- 100% {
10464
- left: 100%;
10465
- }
10466
- }
10467
-
10468
- /* Sem movimento para quem pediu menos: a barra continua marcando o estado. */
10469
- @media (prefers-reduced-motion: reduce) {
10470
- .gyramais-table-container .gyramais-table-refetching-bar::after {
10471
- animation: none;
10472
- width: 100%;
10473
- opacity: 0.4;
10474
- }
10475
- }
10476
-
10477
- /* Estado anunciado uma vez para leitor de tela, invisivel na tela. As celulas
10478
- de skeleton sao decorativas (`aria-hidden`), entao nao repetem o anuncio. */
10479
- .gyramais-table-container .gyramais-table-status {
10480
- position: absolute;
10481
- width: 1px;
10482
- height: 1px;
10483
- padding: 0;
10484
- margin: -1px;
10485
- overflow: hidden;
10486
- clip: rect(0, 0, 0, 0);
10487
- white-space: nowrap;
10488
- border-width: 0;
10489
- }
10490
-
10491
11365
  .gyramais-tabs {
10492
11366
 
10493
11367
  width: 100%