@gyramais/gyra-design 0.2.48 → 0.2.49

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 (87) 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/DropdownMenu/index.js +1 -1
  9. package/dist/components/DropdownMenu/index.js.map +1 -1
  10. package/dist/components/Empty/Empty.d.ts +1 -18
  11. package/dist/components/Empty/index.js +40 -2
  12. package/dist/components/Empty/index.js.map +1 -1
  13. package/dist/components/Filter/index.js.map +1 -1
  14. package/dist/components/FloatingCard/index.js +7 -7
  15. package/dist/components/FloatingCard/index.js.map +1 -1
  16. package/dist/components/List/index.js +40 -2
  17. package/dist/components/List/index.js.map +1 -1
  18. package/dist/components/Modal/index.js.map +1 -1
  19. package/dist/components/MultiSelectPicker/index.js +1 -1
  20. package/dist/components/MultiSelectPicker/index.js.map +1 -1
  21. package/dist/components/OperatorPicker/index.js +1 -1
  22. package/dist/components/OperatorPicker/index.js.map +1 -1
  23. package/dist/components/PickerPopover/index.js +1 -1
  24. package/dist/components/PickerPopover/index.js.map +1 -1
  25. package/dist/components/Popover/Popover.d.ts +3 -1
  26. package/dist/components/Popover/index.js +1 -1
  27. package/dist/components/Popover/index.js.map +1 -1
  28. package/dist/components/Rail/Rail.d.ts +59 -0
  29. package/dist/components/Rail/RailGate.d.ts +22 -0
  30. package/dist/components/Rail/RailMini.d.ts +25 -0
  31. package/dist/components/Rail/RailStep.d.ts +45 -0
  32. package/dist/components/Rail/index.d.ts +6 -0
  33. package/dist/components/Rail/index.js +45 -0
  34. package/dist/components/Rail/index.js.map +1 -0
  35. package/dist/components/Rail/labels.d.ts +25 -0
  36. package/dist/components/Rail/types.d.ts +75 -0
  37. package/dist/components/RuleSearchPicker/index.js +1 -1
  38. package/dist/components/RuleSearchPicker/index.js.map +1 -1
  39. package/dist/components/SegmentedPicker/SegmentedPicker.d.ts +7 -1
  40. package/dist/components/SegmentedPicker/index.js +2 -2
  41. package/dist/components/SegmentedPicker/index.js.map +1 -1
  42. package/dist/components/Switch/Switch.d.ts +7 -1
  43. package/dist/components/Switch/index.js +1 -1
  44. package/dist/components/Switch/index.js.map +1 -1
  45. package/dist/components/Table/Table.d.ts +1 -14
  46. package/dist/components/Table/index.js +40 -2
  47. package/dist/components/Table/index.js.map +1 -1
  48. package/dist/emails/balance-sheet-finalized/components/Button/Button.d.ts +7 -0
  49. package/dist/emails/balance-sheet-finalized/components/Card/Card.d.ts +1 -7
  50. package/dist/emails/balance-sheet-finalized/components/Empty/Empty.d.ts +1 -18
  51. package/dist/emails/balance-sheet-finalized/components/Popover/Popover.d.ts +3 -1
  52. package/dist/emails/balance-sheet-finalized/components/Rail/Rail.d.ts +59 -0
  53. package/dist/emails/balance-sheet-finalized/components/Rail/RailGate.d.ts +22 -0
  54. package/dist/emails/balance-sheet-finalized/components/Rail/RailMini.d.ts +25 -0
  55. package/dist/emails/balance-sheet-finalized/components/Rail/RailStep.d.ts +45 -0
  56. package/dist/emails/balance-sheet-finalized/components/Rail/index.d.ts +6 -0
  57. package/dist/emails/balance-sheet-finalized/components/Rail/labels.d.ts +25 -0
  58. package/dist/emails/balance-sheet-finalized/components/Rail/types.d.ts +75 -0
  59. package/dist/emails/balance-sheet-finalized/components/SegmentedPicker/SegmentedPicker.d.ts +7 -1
  60. package/dist/emails/balance-sheet-finalized/components/Switch/Switch.d.ts +7 -1
  61. package/dist/emails/balance-sheet-finalized/components/Table/Table.d.ts +1 -14
  62. package/dist/emails/balance-sheet-finalized/index.d.ts +1 -1
  63. package/dist/emails/email/components/Button/Button.d.ts +7 -0
  64. package/dist/emails/email/components/Card/Card.d.ts +1 -7
  65. package/dist/emails/email/components/Empty/Empty.d.ts +1 -18
  66. package/dist/emails/email/components/Popover/Popover.d.ts +3 -1
  67. package/dist/emails/email/components/Rail/Rail.d.ts +59 -0
  68. package/dist/emails/email/components/Rail/RailGate.d.ts +22 -0
  69. package/dist/emails/email/components/Rail/RailMini.d.ts +25 -0
  70. package/dist/emails/email/components/Rail/RailStep.d.ts +45 -0
  71. package/dist/emails/email/components/Rail/index.d.ts +6 -0
  72. package/dist/emails/email/components/Rail/labels.d.ts +25 -0
  73. package/dist/emails/email/components/Rail/types.d.ts +75 -0
  74. package/dist/emails/email/components/SegmentedPicker/SegmentedPicker.d.ts +7 -1
  75. package/dist/emails/email/components/Switch/Switch.d.ts +7 -1
  76. package/dist/emails/email/components/Table/Table.d.ts +1 -14
  77. package/dist/emails/email/index.d.ts +1 -1
  78. package/dist/index.css +859 -372
  79. package/package.json +1 -1
  80. package/dist/components/Skeleton/Skeleton.d.ts +0 -50
  81. package/dist/components/Skeleton/index.d.ts +0 -1
  82. package/dist/components/Skeleton/index.js +0 -7
  83. package/dist/components/Skeleton/index.js.map +0 -1
  84. package/dist/emails/balance-sheet-finalized/components/Skeleton/Skeleton.d.ts +0 -50
  85. package/dist/emails/balance-sheet-finalized/components/Skeleton/index.d.ts +0 -1
  86. package/dist/emails/email/components/Skeleton/Skeleton.d.ts +0 -50
  87. 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
  }
@@ -761,6 +755,9 @@ video {
761
755
  .flex-col {
762
756
  flex-direction: column;
763
757
  }
758
+ .flex-wrap {
759
+ flex-wrap: wrap;
760
+ }
764
761
  .items-center {
765
762
  align-items: center;
766
763
  }
@@ -779,12 +776,6 @@ video {
779
776
  .gap-3 {
780
777
  gap: 0.75rem;
781
778
  }
782
- .gap-4 {
783
- gap: 1rem;
784
- }
785
- .gap-6 {
786
- gap: 1.5rem;
787
- }
788
779
  .gap-x-1 {
789
780
  -moz-column-gap: 0.25rem;
790
781
  column-gap: 0.25rem;
@@ -819,9 +810,6 @@ video {
819
810
  .rounded-\[6px\] {
820
811
  border-radius: 6px;
821
812
  }
822
- .rounded-\[var\(--radius-lg\)\] {
823
- border-radius: var(--radius-lg);
824
- }
825
813
  .rounded-full {
826
814
  border-radius: 9999px;
827
815
  }
@@ -834,9 +822,6 @@ video {
834
822
  .border {
835
823
  border-width: 1px;
836
824
  }
837
- .border-\[var\(--color-border-secondary\)\] {
838
- border-color: var(--color-border-secondary);
839
- }
840
825
  .bg-\[var\(--background-color\)\] {
841
826
  background-color: var(--background-color);
842
827
  }
@@ -861,10 +846,6 @@ video {
861
846
  --tw-bg-opacity: 1;
862
847
  background-color: rgb(254 202 202 / var(--tw-bg-opacity, 1));
863
848
  }
864
- .bg-white {
865
- --tw-bg-opacity: 1;
866
- background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
867
- }
868
849
  .fill-current {
869
850
  fill: currentColor;
870
851
  }
@@ -954,9 +935,6 @@ video {
954
935
  .text-\[var\(--color-text-secondary\)\] {
955
936
  color: var(--color-text-secondary);
956
937
  }
957
- .text-\[var\(--color-text-tertiary\)\] {
958
- color: var(--color-text-tertiary);
959
- }
960
938
  .text-\[var\(--primary-button-color\)\] {
961
939
  color: var(--primary-button-color);
962
940
  }
@@ -4410,40 +4388,25 @@ h6 {
4410
4388
  padding-top: 1rem;
4411
4389
  }
4412
4390
  .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;
4391
+ min-height: 4rem;
4420
4392
  }
4421
4393
 
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 {
4394
+ .gyramais-card .gyramais-card-loading {
4395
+ position: absolute;
4396
+ top: 0px;
4397
+ left: 0px;
4398
+ z-index: 10;
4434
4399
  display: flex;
4400
+ height: 100%;
4435
4401
  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;
4402
+ --tw-scale-x: 102%;
4403
+ 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));
4404
+ align-items: center;
4405
+ justify-content: center;
4406
+ background-color: #ffffff80;
4407
+ padding-top: 1rem;
4408
+ --tw-backdrop-blur: blur(4px);
4409
+ 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
4410
  }
4448
4411
 
4449
4412
  .gyramais-chart .recharts-legend-item {
@@ -5767,39 +5730,30 @@ h6 {
5767
5730
  }
5768
5731
 
5769
5732
  .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
5733
+ padding-top: 1rem;
5734
+ padding-bottom: 1rem
5779
5735
  }
5780
-
5781
5736
  .gyramais-empty .gyramais-empty-icon {
5782
- display: flex;
5783
- justify-content: center
5737
+ display: flex;
5738
+ justify-content: center
5784
5739
  }
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
5740
  .gyramais-empty .gyramais-empty-icon svg {
5790
- font-size: 40px;
5791
- color: var(--color-text-quaternary)
5741
+ font-size: 40px;
5742
+ --tw-text-opacity: 1;
5743
+ color: rgb(184 184 184 / var(--tw-text-opacity, 1))
5792
5744
  }
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
5745
  .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)
5746
+ display: flex;
5747
+ justify-content: center;
5748
+ padding-top: 0.5rem;
5749
+ padding-bottom: 0.5rem;
5750
+ font-size: 0.875rem;
5751
+ line-height: 1.25rem;
5752
+ font-weight: 400;
5753
+ line-height: 22px;
5754
+ --tw-text-opacity: 1;
5755
+ color: rgb(0 0 0 / var(--tw-text-opacity, 1))
5801
5756
  }
5802
-
5803
5757
  .gyramais-filter .gyramais-filter-button-container {
5804
5758
  position: relative;
5805
5759
  width: -moz-fit-content;
@@ -7059,7 +7013,25 @@ h6 {
7059
7013
  }
7060
7014
  }
7061
7015
 
7016
+ /* CAMADA DO POPOVER.
7017
+ *
7018
+ * O conteudo do popover e portalado para o `body` pelo Radix, mas portal nao
7019
+ * decide pintura: z-index decide. O `PopoverContent` do shadcn nasce com o
7020
+ * `z-50` do template, e as camadas flutuantes desta casa vivem MUITO acima
7021
+ * disso: Drawer (react-modern-drawer) em 101, Modal em 200, menu do Select
7022
+ * em 210, Tooltip em 300.
7023
+ *
7024
+ * Resultado, ate GYR-1623: qualquer popover aberto de dentro de uma gaveta
7025
+ * (o conector da esteira, por exemplo) era pintado ATRAS do painel e parava
7026
+ * de receber clique — `elementFromPoint` no meio do menu devolvia o que
7027
+ * estava na gaveta.
7028
+ *
7029
+ * 210 e o mesmo degrau do menu do Select (`Select.tsx`, `menuPortal`): os
7030
+ * dois sao a mesma coisa (lista flutuante disparada por um controle) e
7031
+ * precisam ficar acima de gaveta e de modal, e abaixo do tooltip.
7032
+ */
7062
7033
  .gyramais-popover-content {
7034
+ z-index: 210 !important;
7063
7035
  width: -moz-fit-content;
7064
7036
  width: fit-content;
7065
7037
  border-radius: 8px;
@@ -7070,6 +7042,7 @@ h6 {
7070
7042
  --tw-shadow-colored: 0 5px 5px 0 var(--tw-shadow-color), 0 8px 10px 0 var(--tw-shadow-color) !important;
7071
7043
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow) !important
7072
7044
  }
7045
+
7073
7046
  .gyramais-processing-chip {
7074
7047
  position: relative;
7075
7048
  display: inline-flex;
@@ -7295,174 +7268,782 @@ h6 {
7295
7268
  --tw-text-opacity: 1;
7296
7269
  color: rgb(98 105 118 / var(--tw-text-opacity, 1))
7297
7270
  }
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)
7307
- }
7308
- .gyramais-rich-input-controller.gyramais-rich-input-disabled * {
7309
- cursor: not-allowed
7310
- }
7271
+ /* Rail — a esteira Gyra+ (lista vertical de etapas + conector condicional).
7272
+ Todas as cores saem dos tokens do design system: nada de hex solto aqui.
7311
7273
 
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)
7320
- }
7274
+ Armadilha do repositorio: o index.css global tem `* { outline: none
7275
+ !important }` e `*:focus { box-shadow: none !important }`. Anel de foco
7276
+ desenhado no proprio elemento morre em silencio. Por isso o foco visivel
7277
+ aqui e um ::after (o seletor universal nao casa com pseudo-elemento). */
7321
7278
 
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)
7279
+ .gyramais-rail-wrapper {
7280
+ display: flex;
7281
+ width: 100%;
7282
+ flex-direction: column;
7331
7283
  }
7332
7284
 
7333
- .gyramais-rich-input-toolbar {
7334
- margin-bottom: 0px;
7335
- min-height: 54px;
7336
- border-top-left-radius: 20px;
7337
- border-top-right-radius: 20px;
7338
- border-bottom-color: var(--border-color);
7339
- padding: 0.75rem;
7340
- padding-bottom: 0.5rem
7341
- }
7342
- .gyramais-rich-input-toolbar div {
7343
- margin-bottom: 0px;
7344
- min-height: 22px;
7345
- padding-left: 1rem;
7346
- padding-right: 1rem
7347
- }
7348
- .gyramais-rich-input-toolbar div:first-child {
7349
- padding-left: 0px
7350
- }
7351
- .gyramais-rich-input-toolbar div:last-child {
7352
- padding-right: 0px
7353
- }
7354
- .gyramais-rich-input-toolbar div + div {
7355
- border-left-width: 1px;
7356
- border-color: var(--border-color)
7357
- }
7358
- .gyramais-rich-input-toolbar .rdw-link-modal {
7359
- top: -260px;
7360
- left: -160px;
7361
- height: -moz-fit-content;
7362
- height: fit-content;
7363
- width: -moz-fit-content;
7364
- width: fit-content;
7365
- border-radius: 20px;
7366
- padding: 1rem !important
7367
- }
7368
- .gyramais-rich-input-toolbar .rdw-option-wrapper {
7369
- min-width: 22px;
7370
- max-width: 22px;
7371
- border-radius: 4px;
7372
- border-style: none;
7373
- padding: 0px;
7374
- --tw-shadow: 0 0 #0000;
7375
- --tw-shadow-colored: 0 0 #0000;
7376
- box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
7377
- transition-duration: 300ms;
7378
- animation-duration: 300ms
7379
- }
7380
- .gyramais-rich-input-toolbar .rdw-option-wrapper:hover {
7381
- --tw-bg-opacity: 1;
7382
- background-color: rgb(237 240 238 / var(--tw-bg-opacity, 1))
7383
- }
7384
- .gyramais-rich-input-toolbar .rdw-option-wrapper.rdw-option-active {
7385
- background-color: var(--dark-button-color)
7285
+ .gyramais-rail {
7286
+ margin: 0px;
7287
+ display: flex;
7288
+ width: 100%;
7289
+ list-style-type: none;
7290
+ flex-direction: column;
7291
+ padding: 0px;
7386
7292
  }
7387
7293
 
7388
- .gyramais-rich-input-editor {
7389
- padding-left: 1.5rem;
7390
- padding-right: 1.5rem;
7391
- padding-top: 1rem;
7392
- padding-bottom: 1rem
7393
- }
7394
- .gyramais-rich-input-editor .public-DraftEditorPlaceholder-inner {
7395
- --tw-translate-y: -2px;
7396
- 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))
7397
- }
7398
- .gyramais-rich-input-editor .public-DraftEditor-content {
7399
- max-height: 300px;
7400
- overflow-y: auto;
7401
- line-height: 20px
7402
- }
7403
- .gyramais-rich-input-editor .public-DraftStyleDefault-ltr {
7404
- margin: 0px;
7405
- margin-bottom: 0.25rem;
7406
- margin-bottom: 0px
7294
+ .gyramais-rail-item {
7295
+ position: relative;
7296
+ display: flex;
7297
+ flex-direction: column;
7298
+ padding-left: 30px;
7407
7299
  }
7408
- .gyramais-rich-input-editor .public-DraftStyleDefault-ul {
7409
- margin-top: 0.5rem;
7410
- margin-bottom: 0.5rem
7300
+
7301
+ /* O trilho: uma linha continua atras de todas as etapas. */
7302
+ .gyramais-rail-item::before {
7303
+ content: "";
7304
+ position: absolute;
7305
+ left: 11px;
7306
+ top: 0px;
7307
+ bottom: 0px;
7308
+ width: 2px;
7309
+ background-color: var(--color-border-secondary);
7411
7310
  }
7412
- .gyramais-rich-input-editor .public-DraftStyleDefault-ol {
7413
- margin-top: 0.5rem;
7414
- margin-bottom: 0.5rem
7311
+ .gyramais-rail-item:first-child::before {
7312
+ top: 26px;
7415
7313
  }
7416
- .gyramais-rich-input-editor .rdw-link-decorator-icon {
7417
- --tw-translate-y: -0.75rem;
7418
- 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))
7314
+ .gyramais-rail-item:last-child::before {
7315
+ bottom: auto;
7316
+ height: 26px;
7419
7317
  }
7420
- .gyramais-row {
7421
7318
 
7422
- display: grid;
7319
+ /* ---- Conector ---------------------------------------------------------- */
7423
7320
 
7424
- width: 100%
7321
+ .gyramais-rail-connector {
7322
+ display: flex;
7323
+ min-height: 12px;
7324
+ align-items: center;
7325
+ gap: 8px;
7326
+ padding-top: 6px;
7327
+ padding-bottom: 6px;
7425
7328
  }
7426
-
7427
- .gyramais-row.gyramais-row-mobile-gap-0 {
7428
-
7429
- gap: 0px
7329
+ .gyramais-rail-item:first-child .gyramais-rail-connector:empty {
7330
+ display: none;
7430
7331
  }
7431
- .gyramais-row.gyramais-row-mobile-gap-4 {
7432
7332
 
7433
- gap: 4px
7333
+ .gyramais-rail-gate-editor {
7334
+ display: inline-flex;
7434
7335
  }
7435
- .gyramais-row.gyramais-row-mobile-gap-8 {
7436
7336
 
7437
- gap: 8px
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;
7343
+ font-weight: 500;
7438
7344
  }
7439
- .gyramais-row.gyramais-row-mobile-gap-12 {
7440
7345
 
7441
- gap: 12px
7346
+ .gyramais-rail-gate-static {
7347
+ display: inline-flex;
7348
+ align-items: center;
7349
+ gap: 6px;
7350
+ border-radius: 9999px;
7351
+ border-width: 1px;
7352
+ 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;
7359
+ font-weight: 500;
7360
+ color: var(--color-text-secondary);
7442
7361
  }
7443
- .gyramais-row.gyramais-row-mobile-gap-16 {
7444
-
7445
- gap: 16px
7362
+ .gyramais-rail-gate-static.is-passed {
7363
+ border-color: var(--color-success);
7364
+ background-color: var(--color-success-light);
7365
+ color: var(--status-success-text);
7446
7366
  }
7447
- .gyramais-row.gyramais-row-mobile-gap-20 {
7448
-
7449
- gap: 20px
7367
+ .gyramais-rail-gate-static.is-blocked {
7368
+ border-color: var(--color-border-primary);
7369
+ background-color: var(--color-surface-secondary);
7370
+ color: var(--color-text-tertiary);
7450
7371
  }
7451
- .gyramais-row.gyramais-row-mobile-gap-24 {
7452
7372
 
7453
- gap: 24px
7373
+ .gyramais-rail-gate-icon {
7374
+ display: inline-flex;
7375
+ align-items: center;
7376
+ color: var(--color-text-tertiary);
7454
7377
  }
7455
- .gyramais-row.gyramais-row-mobile-gap-28 {
7456
-
7457
- gap: 28px
7378
+ .gyramais-rail-gate-static.is-passed .gyramais-rail-gate-icon {
7379
+ color: var(--status-success-text);
7458
7380
  }
7459
- .gyramais-row.gyramais-row-mobile-gap-32 {
7460
7381
 
7461
- gap: 32px
7382
+ /* Acento por condicao, valendo tanto na pilula editavel quanto na estatica. */
7383
+ .gyramais-rail-gate.is-approved .gyramais-segmented-picker-icon,
7384
+ .gyramais-rail-gate.is-approved.gyramais-rail-gate-static .gyramais-rail-gate-icon {
7385
+ color: var(--color-success);
7462
7386
  }
7463
- .gyramais-row.gyramais-row-mobile-gap-36 {
7464
-
7465
- gap: 36px
7387
+ .gyramais-rail-gate.is-alert .gyramais-segmented-picker-icon,
7388
+ .gyramais-rail-gate.is-alert.gyramais-rail-gate-static .gyramais-rail-gate-icon {
7389
+ color: var(--color-warning);
7390
+ }
7391
+ .gyramais-rail-gate.is-reproved .gyramais-segmented-picker-icon,
7392
+ .gyramais-rail-gate.is-reproved.gyramais-rail-gate-static .gyramais-rail-gate-icon {
7393
+ color: var(--color-danger);
7394
+ }
7395
+
7396
+ /* ---- Inserir / adicionar etapa ----------------------------------------- */
7397
+
7398
+ .gyramais-rail-insert,
7399
+ .gyramais-rail-add {
7400
+ position: relative;
7401
+ display: inline-flex;
7402
+ cursor: pointer;
7403
+ align-items: center;
7404
+ justify-content: center;
7405
+ gap: 6px;
7406
+ border-width: 1px;
7407
+ border-style: dashed;
7408
+ border-color: var(--color-border-primary);
7409
+ background-color: var(--color-surface-primary);
7410
+ color: var(--color-text-tertiary);
7411
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
7412
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7413
+ transition-duration: 200ms;
7414
+ animation-duration: 200ms;
7415
+ }
7416
+
7417
+ .gyramais-rail-insert {
7418
+ height: 22px;
7419
+ width: 22px;
7420
+ flex-shrink: 0;
7421
+ border-radius: 9999px;
7422
+ }
7423
+
7424
+ .gyramais-rail-add {
7425
+ margin-left: 30px;
7426
+ margin-top: 10px;
7427
+ 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;
7434
+ font-weight: 500;
7435
+ color: var(--color-text-secondary);
7436
+ }
7437
+
7438
+ .gyramais-rail-insert:hover,
7439
+ .gyramais-rail-add:hover {
7440
+ border-color: var(--gyra-blue);
7441
+ background-color: var(--gyra-blue-subtle);
7442
+ color: var(--gyra-blue);
7443
+ }
7444
+
7445
+ .gyramais-rail-insert:focus-visible::after,
7446
+ .gyramais-rail-add:focus-visible::after,
7447
+ .gyramais-rail-step:focus-visible::after,
7448
+ .gyramais-rail-leaf:focus-visible::after,
7449
+ .gyramais-rail-step-open:focus-visible::after,
7450
+ .gyramais-rail-step-action:focus-visible::after {
7451
+ content: "";
7452
+ pointer-events: none;
7453
+ position: absolute;
7454
+ inset: -3px;
7455
+ border-radius: var(--radius-md);
7456
+ border-width: 2px;
7457
+ border-color: var(--gyra-blue);
7458
+ }
7459
+ .gyramais-rail-insert:focus-visible::after,
7460
+ .gyramais-rail-step-action:focus-visible::after {
7461
+ border-radius: 9999px;
7462
+ }
7463
+
7464
+ /* ---- Etapa ------------------------------------------------------------- */
7465
+
7466
+ .gyramais-rail-step {
7467
+ position: relative;
7468
+ padding-bottom: 6px;
7469
+ }
7470
+
7471
+ .gyramais-rail-node {
7472
+ position: absolute;
7473
+ left: -26px;
7474
+ top: 20px;
7475
+ height: 16px;
7476
+ width: 16px;
7477
+ border-radius: 9999px;
7478
+ border-width: 2px;
7479
+ border-color: var(--color-border-strong);
7480
+ background-color: var(--color-surface-primary);
7481
+ }
7482
+ .gyramais-rail-node.is-running {
7483
+ border-color: var(--gyra-blue);
7484
+ background-color: var(--gyra-blue-light);
7485
+ }
7486
+ .gyramais-rail-node.is-done {
7487
+ border-color: var(--color-success);
7488
+ background-color: var(--color-success-light);
7489
+ }
7490
+ .gyramais-rail-node.is-waiting {
7491
+ border-color: var(--color-warning);
7492
+ background-color: var(--color-warning-light);
7493
+ }
7494
+ .gyramais-rail-node.is-error {
7495
+ border-color: var(--color-danger);
7496
+ background-color: var(--color-danger-light);
7497
+ }
7498
+ .gyramais-rail-node.is-skipped {
7499
+ border-color: var(--color-border-primary);
7500
+ background-color: var(--color-surface-secondary);
7501
+ }
7502
+
7503
+ .gyramais-rail-step .gyramais-rail-step-card {
7504
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
7505
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7506
+ transition-duration: 200ms;
7507
+ animation-duration: 200ms;
7508
+ }
7509
+ .gyramais-rail-step.is-active .gyramais-rail-step-card,
7510
+ .gyramais-rail-step.is-selected .gyramais-rail-step-card {
7511
+ border-color: var(--gyra-blue);
7512
+ background-color: var(--gyra-blue-subtle);
7513
+ }
7514
+
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 {
7518
+ border-style: dashed;
7519
+ opacity: 0.55;
7520
+ }
7521
+ .gyramais-rail-step.is-disabled .gyramais-rail-step-card {
7522
+ opacity: 0.6;
7523
+ }
7524
+
7525
+ .gyramais-rail-step-glyph {
7526
+ display: inline-flex;
7527
+ height: 32px;
7528
+ width: 32px;
7529
+ align-items: center;
7530
+ justify-content: center;
7531
+ border-radius: var(--radius-md);
7532
+ background-color: var(--gyra-blue-light);
7533
+ font-size: 15px;
7534
+ line-height: 1;
7535
+ color: var(--gyra-blue);
7536
+ }
7537
+ .gyramais-rail-step.is-checkpoint .gyramais-rail-step-glyph {
7538
+ background-color: var(--color-warning-light);
7539
+ color: var(--color-warning);
7540
+ }
7541
+ .gyramais-rail-step.is-relationships .gyramais-rail-step-glyph {
7542
+ background-color: var(--gyra-teal-light);
7543
+ color: var(--gyra-teal);
7544
+ }
7545
+
7546
+ .gyramais-rail-step-title {
7547
+ display: inline-flex;
7548
+ align-items: center;
7549
+ gap: 6px;
7550
+ font-family: var(--font-display);
7551
+ }
7552
+
7553
+ .gyramais-rail-step-name {
7554
+ color: var(--color-text-primary);
7555
+ }
7556
+
7557
+ .gyramais-rail-step-open {
7558
+ position: relative;
7559
+ display: inline-flex;
7560
+ cursor: pointer;
7561
+ align-items: center;
7562
+ gap: 5px;
7563
+ border-width: 0px;
7564
+ background-color: transparent;
7565
+ padding: 0px;
7566
+ color: var(--color-text-primary);
7567
+ text-decoration-line: none;
7568
+ font-family: inherit;
7569
+ font-size: inherit;
7570
+ font-weight: inherit;
7571
+ }
7572
+ .gyramais-rail-step-open:hover {
7573
+ color: var(--gyra-blue);
7574
+ text-decoration-line: underline;
7575
+ }
7576
+
7577
+ .gyramais-rail-step-open-icon {
7578
+ color: var(--color-text-tertiary);
7579
+ }
7580
+
7581
+ .gyramais-rail-step-subtitle {
7582
+ display: inline-flex;
7583
+ flex-wrap: wrap;
7584
+ align-items: center;
7585
+ gap: 6px;
7586
+ color: var(--color-text-secondary);
7587
+ }
7588
+
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);
7595
+ }
7596
+
7597
+ .gyramais-rail-step-dot {
7598
+ color: var(--color-text-quaternary);
7599
+ }
7600
+
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 {
7605
+ min-width: 0px;
7606
+ }
7607
+
7608
+ .gyramais-rail-step-header-right {
7609
+ display: flex;
7610
+ flex-wrap: wrap;
7611
+ align-items: center;
7612
+ justify-content: flex-end;
7613
+ gap: 8px;
7614
+ }
7615
+
7616
+ .gyramais-rail-step-toolbar {
7617
+ display: flex;
7618
+ align-items: center;
7619
+ gap: 2px;
7620
+ }
7621
+
7622
+ .gyramais-rail-step-action {
7623
+ position: relative;
7624
+ display: inline-flex;
7625
+ height: 26px;
7626
+ width: 26px;
7627
+ cursor: pointer;
7628
+ align-items: center;
7629
+ justify-content: center;
7630
+ border-radius: 9999px;
7631
+ border-width: 0px;
7632
+ background-color: transparent;
7633
+ color: var(--color-text-tertiary);
7634
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
7635
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7636
+ transition-duration: 200ms;
7637
+ animation-duration: 200ms;
7638
+ }
7639
+ .gyramais-rail-step-action:hover:not(:disabled) {
7640
+ background-color: var(--color-surface-active);
7641
+ color: var(--color-text-primary);
7642
+ }
7643
+ .gyramais-rail-step-action-danger:hover:not(:disabled) {
7644
+ color: var(--color-danger);
7645
+ }
7646
+ .gyramais-rail-step-action:disabled {
7647
+ cursor: not-allowed;
7648
+ opacity: 0.35;
7649
+ }
7650
+
7651
+ .gyramais-rail-step-content {
7652
+ display: flex;
7653
+ flex-direction: column;
7654
+ gap: 10px;
7655
+ color: var(--fs-callout);
7656
+ color: var(--color-text-secondary);
7657
+ }
7658
+
7659
+ /* O motivo de a etapa nao ter disparado. Fora do cartao translucido de
7660
+ proposito: e a informacao que precisa ser lida. */
7661
+ .gyramais-rail-step-reason {
7662
+ margin-top: 6px;
7663
+ margin-bottom: 0px;
7664
+ display: flex;
7665
+ 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);
7672
+ color: var(--color-text-secondary);
7673
+ }
7674
+ .gyramais-rail-step.is-error .gyramais-rail-step-reason {
7675
+ border-color: var(--color-danger);
7676
+ color: var(--status-danger-text);
7677
+ }
7678
+
7679
+ /* ---- Folhas (relatorios derivados dos vinculos) ------------------------ */
7680
+
7681
+ .gyramais-rail-leaves {
7682
+ margin-top: 10px;
7683
+ display: flex;
7684
+ flex-direction: column;
7685
+ gap: 6px;
7686
+ }
7687
+
7688
+ .gyramais-rail-leaves-label {
7689
+ font-weight: 600;
7690
+ text-transform: uppercase;
7691
+ letter-spacing: var(--tracking-wide);
7692
+ color: var(--fs-caption);
7693
+ color: var(--color-text-tertiary);
7694
+ }
7695
+
7696
+ .gyramais-rail-leaves-list {
7697
+ margin: 0px;
7698
+ display: flex;
7699
+ list-style-type: none;
7700
+ flex-direction: column;
7701
+ gap: 4px;
7702
+ padding: 0px;
7703
+ }
7704
+
7705
+ .gyramais-rail-leaf-item {
7706
+ display: flex;
7707
+ }
7708
+
7709
+ .gyramais-rail-leaf {
7710
+ position: relative;
7711
+ display: flex;
7712
+ width: 100%;
7713
+ flex: 1 1 0%;
7714
+ cursor: pointer;
7715
+ align-items: center;
7716
+ 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;
7726
+ text-align: left;
7727
+ text-decoration-line: none;
7728
+ transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
7729
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7730
+ transition-duration: 200ms;
7731
+ animation-duration: 200ms;
7732
+ }
7733
+ .gyramais-rail-leaf:hover:not(:disabled) {
7734
+ border-color: var(--gyra-blue);
7735
+ background-color: var(--gyra-blue-subtle);
7736
+ }
7737
+ .gyramais-rail-leaf:disabled {
7738
+ cursor: default;
7739
+ opacity: 0.7;
7740
+ }
7741
+
7742
+ .gyramais-rail-leaf-text {
7743
+ display: flex;
7744
+ flex-wrap: wrap;
7745
+ align-items: baseline;
7746
+ gap: 8px;
7747
+ }
7748
+
7749
+ .gyramais-rail-leaf-title {
7750
+ font-weight: 500;
7751
+ color: var(--fs-callout);
7752
+ color: var(--color-text-primary);
7753
+ }
7754
+
7755
+ .gyramais-rail-leaf-document {
7756
+ color: var(--fs-footnote);
7757
+ color: var(--color-text-secondary);
7758
+ font-family: var(--font-mono);
7759
+ }
7760
+
7761
+ .gyramais-rail-leaf-subtitle {
7762
+ color: var(--fs-footnote);
7763
+ color: var(--color-text-tertiary);
7764
+ }
7765
+
7766
+ .gyramais-rail-leaf-status {
7767
+ flex-shrink: 0;
7768
+ }
7769
+
7770
+ /* ---- Vazio ------------------------------------------------------------- */
7771
+
7772
+ .gyramais-rail-empty {
7773
+ display: flex;
7774
+ flex-direction: column;
7775
+ align-items: flex-start;
7776
+ gap: 10px;
7777
+ border-radius: var(--radius-lg);
7778
+ border-width: 1px;
7779
+ border-style: dashed;
7780
+ border-color: var(--color-border-primary);
7781
+ background-color: var(--color-surface-secondary);
7782
+ padding: 20px;
7783
+ }
7784
+
7785
+ .gyramais-rail-empty-text {
7786
+ margin: 0px;
7787
+ color: var(--fs-callout);
7788
+ color: var(--color-text-secondary);
7789
+ }
7790
+ .gyramais-rail-empty .gyramais-rail-add {
7791
+ margin-left: 0px;
7792
+ margin-top: 0px;
7793
+ }
7794
+
7795
+ /* ---- Somente leitor de tela -------------------------------------------- */
7796
+
7797
+ .gyramais-rail-sr {
7798
+ position: absolute;
7799
+ margin: -1px;
7800
+ height: 1px;
7801
+ width: 1px;
7802
+ overflow: hidden;
7803
+ white-space: nowrap;
7804
+ border-width: 0px;
7805
+ padding: 0px;
7806
+ clip: rect(0, 0, 0, 0);
7807
+ }
7808
+
7809
+ @media (max-width: 768px) {
7810
+ .gyramais-rail-step-header-right {
7811
+ justify-content: flex-start;
7812
+ }
7813
+ }
7814
+
7815
+ /* ---- 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. */
7818
+
7819
+ .gyramais-rail-mini {
7820
+ display: inline-flex;
7821
+ max-width: 100%;
7822
+ align-items: center;
7823
+ gap: 3px;
7824
+ vertical-align: middle;
7825
+ }
7826
+
7827
+ .gyramais-rail-mini-mark {
7828
+ height: 8px;
7829
+ width: 8px;
7830
+ flex-shrink: 0;
7831
+ border-radius: 9999px;
7832
+ border-width: 1px;
7833
+ border-color: transparent;
7834
+ background-color: var(--color-gray-200);
7835
+ }
7836
+ .gyramais-rail-mini-mark.is-approved {
7837
+ background-color: var(--color-success);
7838
+ }
7839
+ .gyramais-rail-mini-mark.is-alert {
7840
+ background-color: var(--color-warning);
7841
+ }
7842
+ .gyramais-rail-mini-mark.is-reproved {
7843
+ background-color: var(--color-danger);
7844
+ }
7845
+ .gyramais-rail-mini-mark.is-error {
7846
+ background-color: var(--color-danger);
7847
+ opacity: 0.6;
7848
+ }
7849
+ .gyramais-rail-mini-mark.is-running {
7850
+ background-color: var(--gyra-blue);
7851
+ }
7852
+ .gyramais-rail-mini-mark.is-waiting {
7853
+ background-color: var(--color-warning);
7854
+ opacity: 0.55;
7855
+ }
7856
+ /* Etapa que NAO rodou fica oca: e o vocabulario da tela ("não executou"). */
7857
+ .gyramais-rail-mini-mark.is-skipped,
7858
+ .gyramais-rail-mini-mark.is-pending {
7859
+ border-color: var(--color-border-secondary);
7860
+ background-color: transparent;
7861
+ }
7862
+
7863
+ .gyramais-rail-mini-link {
7864
+ height: 1px;
7865
+ width: 6px;
7866
+ flex-shrink: 0;
7867
+ background-color: var(--color-border-secondary);
7868
+ }
7869
+
7870
+ .gyramais-rail-mini-text {
7871
+ margin-left: 6px;
7872
+ overflow: hidden;
7873
+ text-overflow: ellipsis;
7874
+ white-space: nowrap;
7875
+ color: var(--fs-caption);
7876
+ color: var(--color-text-tertiary);
7877
+ }
7878
+
7879
+ .gyramais-rich-input-controller {
7880
+ position: relative;
7881
+ transition-duration: 300ms;
7882
+ animation-duration: 300ms
7883
+ }
7884
+ .gyramais-rich-input-controller.gyramais-rich-input-disabled {
7885
+ opacity: 0.5;
7886
+ --tw-grayscale: grayscale(100%);
7887
+ 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)
7888
+ }
7889
+ .gyramais-rich-input-controller.gyramais-rich-input-disabled * {
7890
+ cursor: not-allowed
7891
+ }
7892
+
7893
+ .gyramais-rich-input-wrapper {
7894
+ border-radius: 20px;
7895
+ border-color: var(--border-color);
7896
+ --tw-bg-opacity: 1;
7897
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
7898
+ --tw-shadow: 0px 14px 64px -4px #18274b1f, 0px 8px 22px -6px #18274b1f;
7899
+ --tw-shadow-colored: 0px 14px 64px -4px var(--tw-shadow-color), 0px 8px 22px -6px var(--tw-shadow-color);
7900
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
7901
+ }
7902
+
7903
+ .gyramais-rich-input-placeholder {
7904
+ position: absolute;
7905
+ top: -10px;
7906
+ left: 22px;
7907
+ animation: fade-in .3s 1;
7908
+ font-size: 0.875rem;
7909
+ line-height: 1.25rem;
7910
+ font-weight: 500;
7911
+ color: var(--primary-button-color)
7912
+ }
7913
+
7914
+ .gyramais-rich-input-toolbar {
7915
+ margin-bottom: 0px;
7916
+ min-height: 54px;
7917
+ border-top-left-radius: 20px;
7918
+ border-top-right-radius: 20px;
7919
+ border-bottom-color: var(--border-color);
7920
+ padding: 0.75rem;
7921
+ padding-bottom: 0.5rem
7922
+ }
7923
+ .gyramais-rich-input-toolbar div {
7924
+ margin-bottom: 0px;
7925
+ min-height: 22px;
7926
+ padding-left: 1rem;
7927
+ padding-right: 1rem
7928
+ }
7929
+ .gyramais-rich-input-toolbar div:first-child {
7930
+ padding-left: 0px
7931
+ }
7932
+ .gyramais-rich-input-toolbar div:last-child {
7933
+ padding-right: 0px
7934
+ }
7935
+ .gyramais-rich-input-toolbar div + div {
7936
+ border-left-width: 1px;
7937
+ border-color: var(--border-color)
7938
+ }
7939
+ .gyramais-rich-input-toolbar .rdw-link-modal {
7940
+ top: -260px;
7941
+ left: -160px;
7942
+ height: -moz-fit-content;
7943
+ height: fit-content;
7944
+ width: -moz-fit-content;
7945
+ width: fit-content;
7946
+ border-radius: 20px;
7947
+ padding: 1rem !important
7948
+ }
7949
+ .gyramais-rich-input-toolbar .rdw-option-wrapper {
7950
+ min-width: 22px;
7951
+ max-width: 22px;
7952
+ border-radius: 4px;
7953
+ border-style: none;
7954
+ padding: 0px;
7955
+ --tw-shadow: 0 0 #0000;
7956
+ --tw-shadow-colored: 0 0 #0000;
7957
+ box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
7958
+ transition-duration: 300ms;
7959
+ animation-duration: 300ms
7960
+ }
7961
+ .gyramais-rich-input-toolbar .rdw-option-wrapper:hover {
7962
+ --tw-bg-opacity: 1;
7963
+ background-color: rgb(237 240 238 / var(--tw-bg-opacity, 1))
7964
+ }
7965
+ .gyramais-rich-input-toolbar .rdw-option-wrapper.rdw-option-active {
7966
+ background-color: var(--dark-button-color)
7967
+ }
7968
+
7969
+ .gyramais-rich-input-editor {
7970
+ padding-left: 1.5rem;
7971
+ padding-right: 1.5rem;
7972
+ padding-top: 1rem;
7973
+ padding-bottom: 1rem
7974
+ }
7975
+ .gyramais-rich-input-editor .public-DraftEditorPlaceholder-inner {
7976
+ --tw-translate-y: -2px;
7977
+ 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))
7978
+ }
7979
+ .gyramais-rich-input-editor .public-DraftEditor-content {
7980
+ max-height: 300px;
7981
+ overflow-y: auto;
7982
+ line-height: 20px
7983
+ }
7984
+ .gyramais-rich-input-editor .public-DraftStyleDefault-ltr {
7985
+ margin: 0px;
7986
+ margin-bottom: 0.25rem;
7987
+ margin-bottom: 0px
7988
+ }
7989
+ .gyramais-rich-input-editor .public-DraftStyleDefault-ul {
7990
+ margin-top: 0.5rem;
7991
+ margin-bottom: 0.5rem
7992
+ }
7993
+ .gyramais-rich-input-editor .public-DraftStyleDefault-ol {
7994
+ margin-top: 0.5rem;
7995
+ margin-bottom: 0.5rem
7996
+ }
7997
+ .gyramais-rich-input-editor .rdw-link-decorator-icon {
7998
+ --tw-translate-y: -0.75rem;
7999
+ 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))
8000
+ }
8001
+ .gyramais-row {
8002
+
8003
+ display: grid;
8004
+
8005
+ width: 100%
8006
+ }
8007
+
8008
+ .gyramais-row.gyramais-row-mobile-gap-0 {
8009
+
8010
+ gap: 0px
8011
+ }
8012
+ .gyramais-row.gyramais-row-mobile-gap-4 {
8013
+
8014
+ gap: 4px
8015
+ }
8016
+ .gyramais-row.gyramais-row-mobile-gap-8 {
8017
+
8018
+ gap: 8px
8019
+ }
8020
+ .gyramais-row.gyramais-row-mobile-gap-12 {
8021
+
8022
+ gap: 12px
8023
+ }
8024
+ .gyramais-row.gyramais-row-mobile-gap-16 {
8025
+
8026
+ gap: 16px
8027
+ }
8028
+ .gyramais-row.gyramais-row-mobile-gap-20 {
8029
+
8030
+ gap: 20px
8031
+ }
8032
+ .gyramais-row.gyramais-row-mobile-gap-24 {
8033
+
8034
+ gap: 24px
8035
+ }
8036
+ .gyramais-row.gyramais-row-mobile-gap-28 {
8037
+
8038
+ gap: 28px
8039
+ }
8040
+ .gyramais-row.gyramais-row-mobile-gap-32 {
8041
+
8042
+ gap: 32px
8043
+ }
8044
+ .gyramais-row.gyramais-row-mobile-gap-36 {
8045
+
8046
+ gap: 36px
7466
8047
  }
7467
8048
  .gyramais-row.gyramais-row-mobile-gap-40 {
7468
8049
 
@@ -7878,9 +8459,17 @@ h6 {
7878
8459
  font-family: inherit;
7879
8460
  }
7880
8461
 
7881
- /* Segmented picker — iOS-style verdict pill that opens a clean menu */
8462
+ /* Segmented picker — iOS-style verdict pill that opens a clean menu
8463
+ *
8464
+ * FOCO VISIVEL: o `src/index.css` desta biblioteca tem `* { outline: none
8465
+ * !important }` e `*:focus { box-shadow: none !important }`. Anel desenhado
8466
+ * no proprio elemento (outline ou box-shadow) morre calado — e foi o que
8467
+ * aconteceu aqui ate GYR-1623: navegando no menu por teclado nao havia
8468
+ * indicador NENHUM. O anel precisa ser um `::after`, porque o seletor
8469
+ * universal nao casa com pseudo-elemento. Mesma receita do `Rail`. */
7882
8470
 
7883
8471
  .gyramais-segmented-picker {
8472
+ position: relative;
7884
8473
  display: inline-flex;
7885
8474
  cursor: pointer;
7886
8475
  align-items: center;
@@ -7901,40 +8490,46 @@ h6 {
7901
8490
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7902
8491
  transition-duration: 200ms;
7903
8492
  animation-duration: 200ms;
7904
- font-family: inherit
8493
+ font-family: inherit;
7905
8494
  }
7906
8495
  .gyramais-segmented-picker:hover {
7907
- background-color: var(--color-surface-secondary)
8496
+ background-color: var(--color-surface-secondary);
7908
8497
  }
7909
8498
  .gyramais-segmented-picker:focus-visible {
7910
8499
  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)
8500
+ }
8501
+ .gyramais-segmented-picker:focus-visible::after {
8502
+ content: "";
8503
+ pointer-events: none;
8504
+ position: absolute;
8505
+ inset: -3px;
8506
+ border-radius: 9999px;
8507
+ border-width: 2px;
8508
+ border-color: var(--gyra-blue);
7914
8509
  }
7915
8510
  .gyramais-segmented-picker:disabled {
7916
8511
  cursor: not-allowed;
7917
- opacity: 0.55
8512
+ opacity: 0.55;
7918
8513
  }
7919
8514
 
7920
8515
  .gyramais-segmented-picker-icon {
7921
8516
  display: inline-flex;
7922
8517
  align-items: center;
7923
- justify-content: center
8518
+ justify-content: center;
7924
8519
  }
7925
8520
  .gyramais-segmented-picker.is-aprova .gyramais-segmented-picker-icon {
7926
- color: var(--success-color)
8521
+ color: var(--success-color);
7927
8522
  }
7928
8523
  .gyramais-segmented-picker.is-alerta .gyramais-segmented-picker-icon {
7929
- color: var(--warning-color)
8524
+ color: var(--warning-color);
7930
8525
  }
7931
8526
  .gyramais-segmented-picker.is-reprova .gyramais-segmented-picker-icon {
7932
- color: var(--danger-color)
8527
+ color: var(--danger-color);
7933
8528
  }
7934
8529
 
7935
8530
  .gyramais-segmented-picker-chev {
7936
8531
  margin-left: 2px;
7937
- color: var(--color-text-tertiary)
8532
+ color: var(--color-text-tertiary);
7938
8533
  }
7939
8534
 
7940
8535
  /* Secondary variant — smaller, less prominent (used for "caso de erro") */
@@ -7947,33 +8542,34 @@ h6 {
7947
8542
  padding-right: 10px;
7948
8543
  font-size: 12px;
7949
8544
  font-weight: 500;
7950
- color: var(--color-text-secondary)
8545
+ color: var(--color-text-secondary);
7951
8546
  }
7952
8547
  .gyramais-segmented-picker-secondary:hover {
7953
8548
  border-color: var(--color-border-subtle);
7954
- background-color: var(--color-surface-active)
8549
+ background-color: var(--color-surface-active);
7955
8550
  }
7956
8551
  .gyramais-segmented-picker-secondary .gyramais-segmented-picker-icon svg {
7957
- font-size: 16px
8552
+ font-size: 16px;
7958
8553
  }
7959
8554
  .gyramais-segmented-picker-secondary .gyramais-segmented-picker-chev {
7960
- font-size: 16px
8555
+ font-size: 16px;
7961
8556
  }
7962
8557
 
7963
8558
  /* ---- Popover menu ---- */
7964
8559
  .gyramais-popover-content.gyramais-segmented-picker-dropdown {
7965
8560
  min-width: 320px;
7966
8561
  border-radius: var(--radius-lg);
7967
- padding: 6px
8562
+ padding: 6px;
7968
8563
  }
7969
8564
 
7970
8565
  .gyramais-segmented-picker-menu {
7971
8566
  display: flex;
7972
8567
  flex-direction: column;
7973
- gap: 2px
8568
+ gap: 2px;
7974
8569
  }
7975
8570
 
7976
8571
  .gyramais-segmented-picker-menu-item {
8572
+ position: relative;
7977
8573
  display: flex;
7978
8574
  width: 100%;
7979
8575
  cursor: pointer;
@@ -7993,13 +8589,25 @@ h6 {
7993
8589
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
7994
8590
  transition-duration: 200ms;
7995
8591
  animation-duration: 200ms;
7996
- font-family: inherit
8592
+ font-family: inherit;
7997
8593
  }
7998
8594
  .gyramais-segmented-picker-menu-item:hover {
7999
- background-color: var(--color-surface-secondary)
8595
+ background-color: var(--color-surface-secondary);
8000
8596
  }
8001
8597
  .gyramais-segmented-picker-menu-item.is-on {
8002
- background-color: var(--color-surface-secondary)
8598
+ background-color: var(--color-surface-secondary);
8599
+ }
8600
+ .gyramais-segmented-picker-menu-item:focus-visible {
8601
+ background-color: var(--color-surface-secondary);
8602
+ }
8603
+ .gyramais-segmented-picker-menu-item:focus-visible::after {
8604
+ content: "";
8605
+ pointer-events: none;
8606
+ position: absolute;
8607
+ inset: 1px;
8608
+ border-radius: var(--radius-md);
8609
+ border-width: 2px;
8610
+ border-color: var(--gyra-blue);
8003
8611
  }
8004
8612
 
8005
8613
  .gyramais-segmented-picker-menu-icon {
@@ -8011,19 +8619,19 @@ h6 {
8011
8619
  justify-content: center;
8012
8620
  border-radius: 9999px;
8013
8621
  background-color: var(--color-gray-50);
8014
- color: var(--color-text-tertiary)
8622
+ color: var(--color-text-tertiary);
8015
8623
  }
8016
8624
  .gyramais-segmented-picker-menu-icon.is-aprova {
8017
8625
  background-color: var(--success-light-color);
8018
- color: var(--status-success-text)
8626
+ color: var(--status-success-text);
8019
8627
  }
8020
8628
  .gyramais-segmented-picker-menu-icon.is-alerta {
8021
8629
  background-color: var(--warning-light-color);
8022
- color: var(--status-warning-text)
8630
+ color: var(--status-warning-text);
8023
8631
  }
8024
8632
  .gyramais-segmented-picker-menu-icon.is-reprova {
8025
8633
  background-color: var(--danger-light-color);
8026
- color: var(--status-danger-text)
8634
+ color: var(--status-danger-text);
8027
8635
  }
8028
8636
 
8029
8637
  .gyramais-segmented-picker-menu-body {
@@ -8031,22 +8639,22 @@ h6 {
8031
8639
  min-width: 0px;
8032
8640
  flex: 1 1 0%;
8033
8641
  flex-direction: column;
8034
- gap: 2px
8642
+ gap: 2px;
8035
8643
  }
8036
8644
  .gyramais-segmented-picker-menu-title {
8037
8645
  font-size: 13.5px;
8038
8646
  font-weight: 600;
8039
- color: var(--color-text-primary)
8647
+ color: var(--color-text-primary);
8040
8648
  }
8041
8649
  .gyramais-segmented-picker-menu-desc {
8042
8650
  font-size: 11.5px;
8043
8651
  line-height: 1.35;
8044
- color: var(--color-text-tertiary)
8652
+ color: var(--color-text-tertiary);
8045
8653
  }
8046
8654
  .gyramais-segmented-picker-menu-check {
8047
8655
  margin-top: 6px;
8048
8656
  flex-shrink: 0;
8049
- color: var(--gyra-blue)
8657
+ color: var(--gyra-blue);
8050
8658
  }
8051
8659
 
8052
8660
  /* SegmentedToggle — 3-segmentos sempre visíveis, com variants por cor. */
@@ -8931,68 +9539,6 @@ h6 {
8931
9539
  left: 0.5rem !important
8932
9540
  }
8933
9541
 
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
9542
  /* PickerPopover — shell base de popovers tipo command-palette / tag-picker. */
8997
9543
 
8998
9544
  /* Container override do Popover base — chrome flat com elevação de dropdown */
@@ -10429,65 +10975,6 @@ h6 {
10429
10975
  }
10430
10976
  }
10431
10977
 
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
10978
  .gyramais-tabs {
10492
10979
 
10493
10980
  width: 100%