@sava-info-systems/api-maker-with-extensions 2.2.1 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/.dockerignore +5 -1
  2. package/Dockerfile +1 -35
  3. package/Dockerfile.base +22 -0
  4. package/Dockerfile.extended-base +44 -0
  5. package/dist/1025.5c34b11ab88519fd.js +1 -0
  6. package/dist/1097.3c5b2b4587cefa6e.js +1 -0
  7. package/dist/115.8d10b2b963e7d632.js +1 -0
  8. package/dist/148.f8f560a5f818328e.js +1 -0
  9. package/dist/1558.576af7585833e289.js +1 -0
  10. package/dist/1678.14f917ee37080d63.js +1 -0
  11. package/dist/1754.fc6d6e9f6c1e96d5.js +1 -0
  12. package/dist/1928.9c9375dd036b025a.js +1 -0
  13. package/dist/1957.b718aa368330b524.js +1 -0
  14. package/dist/2140.bb097d69bcb6a1e5.js +1 -0
  15. package/dist/2295.aa3514c8d1238cb2.js +1 -0
  16. package/dist/238.553f30dbe5124419.js +1 -0
  17. package/dist/2473.260a6b26a70eaa8d.js +1 -0
  18. package/dist/2579.b02fe6a8ba3a2e71.js +1 -0
  19. package/dist/2714.b41d14f7378785df.js +1 -0
  20. package/dist/2735.4046cae4c68ac75f.js +1 -0
  21. package/dist/292.bb85e0ea91dcc118.js +1 -0
  22. package/dist/3139.5dd9289cc24b4100.js +1 -0
  23. package/dist/3450.588aafa515b19133.js +1 -0
  24. package/dist/3664.ed1232e3c70195fc.js +1 -0
  25. package/dist/3752.d4e0a280a37c1426.js +1 -0
  26. package/dist/3rdpartylicenses.txt +1 -1
  27. package/dist/4110.b9ebfd9a7382c450.js +1 -0
  28. package/dist/4186.2fd0537d5bc6d882.js +1 -0
  29. package/dist/4211.b6b9f495b100e985.js +1 -0
  30. package/dist/4575.1fee055d10b57afc.js +1 -0
  31. package/dist/4842.ccf765ed3e9753a7.js +1 -0
  32. package/dist/485.7870367c9475fed8.js +1 -0
  33. package/dist/{4895.a54759704d1994b1.js → 4895.fa7b24d66157c531.js} +1 -1
  34. package/dist/5334.e0a2450fc295f659.js +1 -0
  35. package/dist/5421.2c2c0fbf926792db.js +1 -0
  36. package/dist/5434.0997994b319a866a.js +1 -0
  37. package/dist/5679.e362a3e10cb1b953.js +1 -0
  38. package/dist/5761.6c20b09245ac31ef.js +1 -0
  39. package/dist/5765.8d761aef1708e8a1.js +1 -0
  40. package/dist/6236.969b45cad747277c.js +1 -0
  41. package/dist/6393.1b7b097f17d75290.js +1 -0
  42. package/dist/6401.f18e3c98d6deaa22.js +1 -0
  43. package/dist/6650.05ea40acd68697c3.js +1 -0
  44. package/dist/7368.85d940d08fdca6e2.js +1 -0
  45. package/dist/7436.4a62f7ef13cffb21.js +1 -0
  46. package/dist/7470.d24359dc7a3ef75a.js +1 -0
  47. package/dist/7649.8e5ff8a951b474e0.js +1 -0
  48. package/dist/7975.d3d7064d527ac017.js +1 -0
  49. package/dist/7977.85b17bdb465e9a90.js +1 -0
  50. package/dist/7987.c1637bec96a9cc03.js +1 -0
  51. package/dist/8125.8390bc1b477ec6b9.js +1 -0
  52. package/dist/8266.0bf85311cf40ddff.js +1 -0
  53. package/dist/8296.fe54c3787977fad3.js +1 -0
  54. package/dist/885.7e1ec0f82adbdd6f.js +1 -0
  55. package/dist/891.fee03277c7f1c29d.js +1 -0
  56. package/dist/{913.4580b4ce4307a40f.js → 913.e49eb351997bc25c.js} +1 -1
  57. package/dist/9243.eaa2c312b42fc4b3.js +1 -0
  58. package/dist/9575.8404e98d640fd9f9.js +1 -0
  59. package/dist/9939.537c5e355804804b.js +1 -0
  60. package/dist/assets/images/icons/api-group-light.svg +11 -0
  61. package/dist/assets/images/icons/api-group.svg +5 -5
  62. package/dist/assets/images/icons/api-maker-deployment-light.svg +5 -0
  63. package/dist/assets/images/icons/api-maker-deployment.svg +3 -3
  64. package/dist/assets/images/icons/api-user-light.svg +12 -0
  65. package/dist/assets/images/icons/api-user.svg +2 -2
  66. package/dist/assets/images/icons/comparator-light.svg +61 -0
  67. package/dist/assets/images/icons/comparator.svg +2 -2
  68. package/dist/assets/images/icons/custom-light.svg +6 -0
  69. package/dist/assets/images/icons/custom.svg +5 -5
  70. package/dist/assets/images/icons/database-light.svg +29 -0
  71. package/dist/assets/images/icons/database.svg +6 -6
  72. package/dist/assets/images/icons/db-m-light.svg +10 -0
  73. package/dist/assets/images/icons/db-m.svg +4 -4
  74. package/dist/assets/images/icons/db-token-generator-light.svg +4 -0
  75. package/dist/assets/images/icons/db-token-generator.svg +4 -0
  76. package/dist/assets/images/icons/dev-light.svg +13 -0
  77. package/dist/assets/images/icons/dev.svg +4 -4
  78. package/dist/assets/images/icons/diagram-light.svg +28 -0
  79. package/dist/assets/images/icons/diagram.svg +9 -9
  80. package/dist/assets/images/icons/event-light.svg +16 -0
  81. package/dist/assets/images/icons/event.svg +4 -4
  82. package/dist/assets/images/icons/film-movies-icon.svg +3 -3
  83. package/dist/assets/images/icons/finder-light.svg +14 -0
  84. package/dist/assets/images/icons/finder.svg +3 -3
  85. package/dist/assets/images/icons/i18n-light.svg +11 -0
  86. package/dist/assets/images/icons/i18n.svg +6 -6
  87. package/dist/assets/images/icons/increment-light.svg +5 -0
  88. package/dist/assets/images/icons/increment.svg +2 -2
  89. package/dist/assets/images/icons/license-light.svg +6 -0
  90. package/dist/assets/images/icons/license.svg +4 -4
  91. package/dist/assets/images/icons/log-light.svg +17 -0
  92. package/dist/assets/images/icons/log-profile-light.svg +23 -0
  93. package/dist/assets/images/icons/log-profile.svg +7 -7
  94. package/dist/assets/images/icons/log.svg +6 -6
  95. package/dist/assets/images/icons/masters.svg +3 -3
  96. package/dist/assets/images/icons/native-process-logs-light.svg +13 -0
  97. package/dist/assets/images/icons/native-process-logs.svg +6 -6
  98. package/dist/assets/images/icons/nodes-light.svg +5 -0
  99. package/dist/assets/images/icons/nodes.svg +2 -2
  100. package/dist/assets/images/icons/notes-light.svg +16 -0
  101. package/dist/assets/images/icons/notes.svg +2 -2
  102. package/dist/assets/images/icons/process_initializers-light.svg +20 -0
  103. package/dist/assets/images/icons/process_initializers.svg +7 -7
  104. package/dist/assets/images/icons/rsa_encryption-light.svg +6 -0
  105. package/dist/assets/images/icons/rsa_encryption.svg +2 -2
  106. package/dist/assets/images/icons/sandbox-light.svg +11 -0
  107. package/dist/assets/images/icons/sandbox.svg +2 -2
  108. package/dist/assets/images/icons/scanning-period-light.svg +13 -0
  109. package/dist/assets/images/icons/scanning-period.svg +4 -4
  110. package/dist/assets/images/icons/schedulers-light.svg +8 -0
  111. package/dist/assets/images/icons/schedulers.svg +5 -5
  112. package/dist/assets/images/icons/secret-light.svg +15 -0
  113. package/dist/assets/images/icons/secret.svg +2 -2
  114. package/dist/assets/images/icons/swagger-logo-light.svg +9 -0
  115. package/dist/assets/images/icons/swagger-logo.svg +2 -2
  116. package/dist/assets/images/icons/systems-light.svg +8 -0
  117. package/dist/assets/images/icons/systems.svg +3 -3
  118. package/dist/assets/images/icons/testing-light.svg +12 -0
  119. package/dist/assets/images/icons/testing.svg +6 -6
  120. package/dist/assets/images/icons/third-party-light.svg +19 -0
  121. package/dist/assets/images/icons/third-party.svg +4 -4
  122. package/dist/assets/images/icons/typescript-light.svg +12 -0
  123. package/dist/assets/images/icons/typescript.svg +2 -2
  124. package/dist/assets/images/icons/ui-maker-light.svg +23 -0
  125. package/dist/assets/images/icons/ui-maker.svg +10 -10
  126. package/dist/assets/images/icons/utility-light.svg +19 -0
  127. package/dist/assets/images/icons/utility.svg +2 -2
  128. package/dist/assets/images/icons/vulnerability-light.svg +20 -0
  129. package/dist/assets/images/icons/vulnerability.svg +5 -5
  130. package/dist/assets/images/icons/web-light.svg +16 -0
  131. package/dist/assets/images/icons/web.svg +3 -3
  132. package/dist/assets/images/logo/api_maker_logo_dark.svg +29 -0
  133. package/dist/assets/images/logo/api_maker_logo_full_white.svg +29 -0
  134. package/dist/assets/images/logo/api_maker_logo_light.svg +22 -0
  135. package/dist/assets/images/logo/apple-touch-icon.png +0 -0
  136. package/dist/assets/images/logo/favicon-192x192.png +0 -0
  137. package/dist/assets/images/logo/favicon-32x32.png +0 -0
  138. package/dist/assets/images/logo/favicon-512x512.png +0 -0
  139. package/dist/assets/images/logo/logo_docs-light.svg +15 -0
  140. package/dist/assets/images/logo/logo_docs.svg +3 -3
  141. package/dist/assets/images/logo/logo_store-light.svg +17 -0
  142. package/dist/assets/images/logo/logo_store.svg +3 -3
  143. package/dist/assets/images/logo/store_logo-dark.svg +11 -0
  144. package/dist/assets/images/logo/store_logo-light.svg +11 -0
  145. package/dist/assets/images/logo/store_logo.svg +2 -2
  146. package/dist/assets/primeng-theme/primeng-theme-overrides.scss +1426 -31
  147. package/dist/assets/public/diagram-viewer/data.json +1886 -0
  148. package/dist/assets/public/diagram-viewer/index.html +1228 -0
  149. package/dist/assets/public/diagram-viewer/index.js +1 -0
  150. package/dist/assets/public/monaco-editor/index.html +105 -9
  151. package/dist/assets/public/monaco-editor/index.js +1 -1
  152. package/dist/assets/public/table-viewer/index.html +738 -0
  153. package/dist/assets/public/table-viewer/index.js +1 -0
  154. package/dist/assets/schema-types/InterfaceProps.ts +71 -13
  155. package/dist/assets/schema-types/store-types.ts +2 -0
  156. package/dist/assets/schema-types/types.ts +65 -17
  157. package/dist/assets/styles/bootstrap-overrides.scss +170 -7
  158. package/dist/assets/styles/colors-dark.scss +320 -33
  159. package/dist/assets/styles/colors-light.scss +453 -9
  160. package/dist/assets/styles/out/styles.css.map +1 -1
  161. package/dist/assets/styles/styles.scss +286 -15
  162. package/dist/assets/styles/variables.scss +2 -2
  163. package/dist/bootstrap-overrides.css +1 -0
  164. package/dist/colors-dark.css +1 -0
  165. package/dist/colors-light.css +1 -0
  166. package/dist/{common.912ad7a22e5de63a.js → common.86c514055f788290.js} +1 -1
  167. package/dist/index.html +111 -27
  168. package/dist/main.0ac98a72f1b9c1dd.js +1 -0
  169. package/dist/runtime.0e9fc303007ced09.js +1 -0
  170. package/dist/styles-global.css +1 -0
  171. package/dist/{styles.242217e145c3f7ab.css → styles.c1032bc4f4d7829b.css} +1 -1
  172. package/main.js +1 -1
  173. package/package-sandbox.json +1 -1
  174. package/package.json +9 -9
  175. package/pnpm-workspace.yaml +15 -0
  176. package/sandbox.js +1 -1
  177. package/src/assets/schema-types/store-types.ts +2 -0
  178. package/src/assets/schema-types/types.ts +65 -17
  179. package/src/schema-types/store-types.js +2 -0
  180. package/src/schema-types/types.js +1 -0
  181. package/src/tools/.github/copilot-instructions.md +17 -9
  182. package/src/tools/local-client.js +1 -1
  183. package/dist/1025.a0db9347453600d0.js +0 -1
  184. package/dist/1097.d0d6fd13031aa1f0.js +0 -1
  185. package/dist/148.1dc7d9e0cfe45510.js +0 -1
  186. package/dist/1558.0aae3e5c538d3815.js +0 -1
  187. package/dist/1678.ed1e4a269e0f42bc.js +0 -1
  188. package/dist/1754.691f142aa1eabe28.js +0 -1
  189. package/dist/1928.2b376f7cf66ed038.js +0 -1
  190. package/dist/1957.ab7fda21d9978597.js +0 -1
  191. package/dist/2140.1ce150285aebe3cc.js +0 -1
  192. package/dist/2295.4fa1d4b5ff482f3a.js +0 -1
  193. package/dist/238.891233aa670bdd2b.js +0 -1
  194. package/dist/2473.4b2bb1ad5b1cc99d.js +0 -1
  195. package/dist/2579.6558b67b2d98f116.js +0 -1
  196. package/dist/2714.0d6939336a02dd0a.js +0 -1
  197. package/dist/2735.86437a8639a0c1bb.js +0 -1
  198. package/dist/292.c7c794ff29abbe37.js +0 -1
  199. package/dist/3139.0921102d181c220d.js +0 -1
  200. package/dist/3450.9b5cfc83039b02b5.js +0 -1
  201. package/dist/3664.4a1dd7f16f8b57fb.js +0 -1
  202. package/dist/4110.d108e786ecbdfd1b.js +0 -1
  203. package/dist/4186.ac3e8af0efeeac14.js +0 -1
  204. package/dist/4211.1bfe72ce0b7b2f76.js +0 -1
  205. package/dist/443.7e3946651373e09a.js +0 -1
  206. package/dist/4575.6ad36e53bd72fb6f.js +0 -1
  207. package/dist/4842.e7649d81606ad80d.js +0 -1
  208. package/dist/485.b546656b466cb8a4.js +0 -1
  209. package/dist/5334.72c1c6d89fdf136e.js +0 -1
  210. package/dist/5421.2067001c10533303.js +0 -1
  211. package/dist/5679.4e22239895c7f520.js +0 -1
  212. package/dist/5761.331ca41ab64cca92.js +0 -1
  213. package/dist/5765.2b640be5d177d794.js +0 -1
  214. package/dist/6236.6c0fc469f0c96549.js +0 -1
  215. package/dist/6393.173ecdfc3b022973.js +0 -1
  216. package/dist/6401.374823002788afe7.js +0 -1
  217. package/dist/6650.1d18ee25901d68be.js +0 -1
  218. package/dist/7368.9ebf62d518f8ad7a.js +0 -1
  219. package/dist/7436.640bf5fe48814cbe.js +0 -1
  220. package/dist/7470.b1ce7eedb9cedb2d.js +0 -1
  221. package/dist/7649.ab4744cfe713eec0.js +0 -1
  222. package/dist/7975.578a00ebd1160a1e.js +0 -1
  223. package/dist/7977.afeded970bac8b66.js +0 -1
  224. package/dist/7987.5958ad5b81873058.js +0 -1
  225. package/dist/8125.b2f908096882ed45.js +0 -1
  226. package/dist/8266.aca59a0a04590ab1.js +0 -1
  227. package/dist/8296.a387c28f5702c5e8.js +0 -1
  228. package/dist/885.be44d92efca1aaf6.js +0 -1
  229. package/dist/891.5e08c81e5200413e.js +0 -1
  230. package/dist/9243.08630ad94e1fddba.js +0 -1
  231. package/dist/9575.30ac91b65602c0ca.js +0 -1
  232. package/dist/9939.4b0d758462bcc042.js +0 -1
  233. package/dist/assets/images/logo/API Maker Logo 2021 black.svg +0 -47
  234. package/dist/assets/images/logo/API Maker Logo 2021.svg +0 -49
  235. package/dist/assets/images/logo/logo.svg +0 -41
  236. package/dist/assets/styles/out/bootstrap-overrides.css +0 -2
  237. package/dist/assets/styles/out/colors-dark.css +0 -2
  238. package/dist/assets/styles/out/colors-light.css +0 -2
  239. package/dist/assets/styles/out/monaco-editor-overrides.css +0 -2
  240. package/dist/assets/styles/out/styles.css +0 -2
  241. package/dist/assets/styles/out/variables.css +0 -2
  242. package/dist/favicon.ico +0 -0
  243. package/dist/main.d3c81428418939dc.js +0 -1
  244. package/dist/runtime.2f0f434d4763c970.js +0 -1
@@ -4,7 +4,16 @@
4
4
  padding: .3rem .75rem;
5
5
  }
6
6
  .p-datatable .p-datatable-thead > tr > th {
7
- background-color: #2b2b2b;
7
+ // brand-tinted dark navy header, a touch lighter than rows
8
+ background-color: #1b2636;
9
+ border-bottom: 1px solid rgba(97, 175, 239, 0.15);
10
+ }
11
+ // Scrollable datatable sticky header/footer — brand navy (was grey #3b3b3b).
12
+ .p-datatable.p-datatable-scrollable > .p-datatable-wrapper > .p-datatable-table > .p-datatable-thead,
13
+ .p-datatable.p-datatable-scrollable > .p-datatable-wrapper > .p-datatable-table > .p-datatable-tfoot,
14
+ .p-datatable.p-datatable-scrollable > .p-datatable-wrapper > .p-scroller-viewport > .p-scroller > .p-datatable-table > .p-datatable-thead,
15
+ .p-datatable.p-datatable-scrollable > .p-datatable-wrapper > .p-scroller-viewport > .p-scroller > .p-datatable-table > .p-datatable-tfoot {
16
+ background-color: #1b2636 !important;
8
17
  }
9
18
  .p-treenode-label { width: 100%; }
10
19
  .p-tree, .p-tree .p-tree-container .p-treenode .p-treenode-content { padding: 0; }
@@ -13,18 +22,88 @@ p-progressSpinner {
13
22
  position: absolute;
14
23
  top: 0;
15
24
  left: 0;
16
- background: rgba(32, 32, 32, .75);
25
+ // Flat navy glass loading overlay (no gradient).
26
+ background-color: rgba(8, 12, 18, 0.72);
27
+ backdrop-filter: blur(2px);
28
+ -webkit-backdrop-filter: blur(2px);
17
29
  width: 100%;
18
30
  height: 100%;
19
31
  z-index: 2;
20
32
  }
33
+ // Branded spinner: replace primeng's rotating SVG with the API Maker rocket
34
+ // mark (pulsing, stays upright) inside a rotating brand blue->green ring.
35
+ p-progressSpinner .p-progress-spinner-svg { display: none !important; }
21
36
  p-progressSpinner .p-progress-spinner {
22
37
  position: absolute;
23
- top: calc(50% - 2rem);
24
- left: calc(50% - 2rem);
38
+ top: 50%;
39
+ left: 50%;
40
+ width: 56px !important;
41
+ height: 56px !important;
42
+ transform: translate(-50%, -50%);
43
+
44
+ // Rotating brand ring — a fixed 56px square so it stays a perfect circle
45
+ // regardless of the host element's aspect ratio. Centred about its own
46
+ // midpoint so rotation has no wobble.
47
+ // Complete brand ring via a conic-gradient (full 360° circle, no border gaps),
48
+ // masked in the centre to leave a 3px-thick ring. Rotates for the loading motion.
49
+ &::before {
50
+ content: "";
51
+ position: absolute;
52
+ top: 0;
53
+ left: 0;
54
+ width: 56px;
55
+ height: 56px;
56
+ box-sizing: border-box;
57
+ border-radius: 50%;
58
+ background: conic-gradient(
59
+ from 0deg,
60
+ rgba(97, 175, 239, 0.18) 0deg,
61
+ rgba(97, 175, 239, 0.18) 90deg,
62
+ #61AFEF 200deg,
63
+ #3DBE79 320deg,
64
+ rgba(97, 175, 239, 0.18) 360deg
65
+ );
66
+ // carve out the centre so the gradient reads as a 3px ring (full circle)
67
+ -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
68
+ mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 3px));
69
+ transform-origin: 50% 50%;
70
+ animation: am-spin 0.9s linear infinite;
71
+ }
72
+ // API Maker rocket mark, gently pulsing in the centre.
73
+ // Dark theme (default): use the dark-mode rocket SVG (lighter body/wings so it pops on dark).
74
+ &::after {
75
+ content: "";
76
+ position: absolute;
77
+ top: 50%;
78
+ left: 50%;
79
+ width: 30px;
80
+ height: 30px;
81
+ transform: translate(-50%, -50%);
82
+ background: url("/assets/images/logo/store_logo-dark.svg") center / contain no-repeat;
83
+ filter: drop-shadow(0 0 6px rgba(97, 175, 239, 0.4));
84
+ animation: am-pulse 1.2s ease-in-out infinite;
85
+ }
86
+ }
87
+ // Light theme: the original (darker) rocket reads well on the light spinner centre.
88
+ html.LIGHT p-progressSpinner .p-progress-spinner::after {
89
+ background: url("/assets/images/logo/store_logo-light.svg") center / contain no-repeat !important;
90
+ filter: drop-shadow(0 0 5px rgba(12, 83, 164, 0.30));
91
+ }
92
+ @keyframes am-spin {
93
+ from { transform: rotate(0deg); }
94
+ to { transform: rotate(360deg); }
95
+ }
96
+ @keyframes am-pulse {
97
+ /* keep the centring translate; only the scale changes */
98
+ 0%, 100% { transform: translate(-50%, -50%) scale(0.9); opacity: 0.75; }
99
+ 50% { transform: translate(-50%, -50%) scale(1.05); opacity: 1; }
25
100
  }
26
101
  .p-tabview .p-tabview-panels { padding: 0; }
27
- .p-tabview .p-tabview-nav { margin-bottom: 0; }
102
+ // New UI standard: brand-blue tinted tab strip underline (was flat grey #4f4f4f).
103
+ .p-tabview .p-tabview-nav {
104
+ margin-bottom: 0;
105
+ border-color: rgba(97, 175, 239, 0.18) !important;
106
+ }
28
107
  .p-tabview .p-tabview-nav li .p-tabview-nav-link { padding: .4rem .75rem; background: transparent; }
29
108
 
30
109
  .p-tabview .p-tabview-nav li .p-tabview-nav-link,
@@ -33,69 +112,663 @@ p-progressSpinner .p-progress-spinner {
33
112
  .p-tabview .p-tabview-nav li.p-highlight .p-tabview-nav-link {
34
113
  background: #4e4e4e;
35
114
  }
115
+ // Kill the theme's red/maroon focus ring on a pressed/focused tab header —
116
+ // replace with a subtle brand-blue ring (same pattern as the datatable rows
117
+ // and confirm-dialog buttons above).
118
+ .p-tabview .p-tabview-nav li .p-tabview-nav-link:focus,
119
+ .p-tabview .p-tabview-nav li .p-tabview-nav-link:focus-visible,
120
+ .p-tabview .p-tabview-nav li .p-tabview-nav-link.p-focus,
121
+ .p-tabview .p-tabview-nav li.p-highlight .p-tabview-nav-link:focus {
122
+ outline: none !important;
123
+ box-shadow: inset 0 0 0 0.12rem rgba(97, 175, 239, 0.5) !important;
124
+ }
36
125
  .p-dialog .p-dialog-footer,
37
- .p-dialog .p-dialog-header { padding: .5rem; }
126
+ // Match the bootstrap .modal-header height (padding .25rem .5rem + line-height 1.5rem).
127
+ .p-dialog .p-dialog-header { padding: .25rem .5rem !important; line-height: 1.5rem; }
38
128
  .p-dialog .p-dialog-content { padding: 0 1rem; }
39
- .p-confirm-dialog-reject { background-color: #1d1d1d; }
40
- .p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(2n) { background-color: rgba(255, 255, 255, 0.03); }
41
- .p-datatable .p-datatable-tbody > tr { background: #303030; }
129
+ // Dialog title — proper modal-title size (was oversized from the theme default).
130
+ .p-dialog .p-dialog-title { font-size: 1.05rem !important; font-weight: 700 !important; }
131
+ // Confirm buttons fixed 30px height (matches the standard modal buttons).
132
+ .p-confirm-dialog .p-dialog-footer .p-button {
133
+ height: 30px !important;
134
+ padding: 0 0.6rem !important;
135
+ font-size: 0.875rem !important;
136
+ line-height: 1 !important;
137
+ display: inline-flex !important;
138
+ align-items: center !important;
139
+ }
140
+ .p-confirm-dialog .p-dialog-footer .p-button .p-button-icon { font-size: 0.875rem !important; }
141
+
142
+ // New UI standard: brand-navy dialog (was flat grey #3b3b3b).
143
+ .p-dialog .p-dialog-content,
144
+ .p-dialog .p-dialog-footer {
145
+ background: #141c29 !important;
146
+ color: #d7dae0 !important;
147
+ }
148
+ // Footer top divider — brand-blue hairline (was the leftover grey #4f4f4f from theme.css).
149
+ .p-dialog .p-dialog-footer { border-top: 1px solid rgba(97, 175, 239, 0.18) !important; }
150
+ .p-dialog .p-dialog-header {
151
+ background-color: #1b2636 !important;
152
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.28) 0%, rgba(0, 137, 63, 0.18) 100%) !important;
153
+ border-bottom: 1px solid rgba(97, 175, 239, 0.18) !important;
154
+ color: #ffffff !important;
155
+ }
156
+ // Standard modal radius (matches Bootstrap .modal-content; cards in this app are square,
157
+ // so keep the dialog to the conventional subtle 0.3rem rather than an exaggerated round).
158
+ .p-dialog { border: 1px solid rgba(97, 175, 239, 0.20) !important; border-radius: 0.3rem !important; overflow: hidden; }
159
+ .p-dialog .p-dialog-header { border-top-left-radius: 0.3rem; border-top-right-radius: 0.3rem; }
160
+ .p-dialog .p-dialog-footer { border-bottom-left-radius: 0.3rem; border-bottom-right-radius: 0.3rem; }
161
+ // Confirm "No" (reject) = neutral dark navy; "Yes" (accept) = brand blue->green (was maroon).
162
+ .p-confirm-dialog-reject {
163
+ background-color: #1c2839 !important;
164
+ background-image: linear-gradient(180deg, #20293a 0%, #161f2d 100%) !important;
165
+ border: 1px solid rgba(97, 175, 239, 0.25) !important;
166
+ color: #d7dae0 !important;
167
+ }
168
+ // Kill the theme's red/maroon focus ring on the auto-focused reject/accept buttons — use brand (or none).
169
+ .p-confirm-dialog-reject:focus,
170
+ .p-confirm-dialog-reject.p-focus,
171
+ .p-confirm-dialog-reject:enabled:focus {
172
+ border: 1px solid rgba(97, 175, 239, 0.45) !important;
173
+ box-shadow: 0 0 0 0.15rem rgba(97, 175, 239, 0.25) !important;
174
+ outline: 0 none !important;
175
+ }
176
+ .p-confirm-dialog-accept {
177
+ background-color: #0C53A4 !important;
178
+ background-image: linear-gradient(135deg, #0C53A4 0%, #0a6a5f 55%, #00893F 100%) !important;
179
+ border: 1px solid rgba(97, 175, 239, 0.45) !important;
180
+ color: #ffffff !important;
181
+ }
182
+ .p-confirm-dialog-accept:enabled:hover,
183
+ .p-confirm-dialog-accept:enabled:focus,
184
+ .p-confirm-dialog-accept:enabled:active,
185
+ .p-confirm-dialog-accept:focus,
186
+ .p-confirm-dialog-accept.p-focus {
187
+ background-image: linear-gradient(135deg, #1565c9 0%, #0e8576 55%, #00a84d 100%) !important;
188
+ border: 1px solid rgba(97, 175, 239, 0.6) !important;
189
+ box-shadow: 0 0 0 0.2rem rgba(97, 175, 239, 0.30) !important;
190
+ outline: 0 none !important;
191
+ }
192
+ // ===== Confirm dialog — polished alert layout =====
193
+ // Content: comfortable padding, icon + message aligned on a single centred row.
194
+ .p-confirm-dialog .p-dialog-content {
195
+ display: flex;
196
+ align-items: center;
197
+ gap: 1rem;
198
+ padding: 1.35rem 1.5rem !important;
199
+ }
200
+ // Warning icon rendered as a soft amber "caution badge" (circular halo) rather than
201
+ // a bare glyph — gives the alert a clearer, more finished affordance.
202
+ .p-confirm-dialog .p-confirm-dialog-icon {
203
+ flex: 0 0 auto;
204
+ display: inline-flex;
205
+ align-items: center;
206
+ justify-content: center;
207
+ width: 2.75rem;
208
+ height: 2.75rem;
209
+ margin: 0 !important;
210
+ color: #ffc84a !important; // brand-amber caution
211
+ border-radius: 50%;
212
+ background: radial-gradient(circle at 50% 50%, rgba(240, 165, 0, 0.22) 0%, rgba(240, 165, 0, 0.08) 70%, transparent 100%);
213
+ border: 1px solid rgba(240, 165, 0, 0.35);
214
+ box-shadow: 0 0 12px rgba(240, 165, 0, 0.20), inset 0 0 6px rgba(240, 165, 0, 0.15);
215
+ }
216
+ // Center the glyph itself inside the badge. The pi-exclamation-triangle glyph carries
217
+ // internal top/bottom padding in its em box that makes it sit high; line-height:1 on the
218
+ // ::before (the actual icon char) + flex-centering pins it to the true optical center.
219
+ .p-confirm-dialog .p-confirm-dialog-icon::before {
220
+ display: block;
221
+ line-height: 1 !important;
222
+ font-size: 1.5rem !important;
223
+ margin-bottom: 5px;
224
+ }
225
+ // Message text — left aligned next to the badge, comfortable size/leading.
226
+ // (Overrides the global .dialog-text `margin:30px; text-align:center` used by callers so
227
+ // the icon+message read as one tidy row instead of a large centred block.)
228
+ .p-confirm-dialog .p-confirm-dialog-message {
229
+ margin: 0 !important;
230
+ line-height: 1.5;
231
+ font-size: 0.95rem;
232
+ color: #dfe4ec !important;
233
+ }
234
+ .p-confirm-dialog .p-confirm-dialog-message .dialog-text {
235
+ margin: 0 !important;
236
+ text-align: left !important;
237
+ }
238
+ // Optional inline leading icon inside the message (e.g. pi-trash for delete confirmations).
239
+ // Sits just before the text, tinted the danger red so it reinforces the destructive action.
240
+ .p-confirm-dialog .p-confirm-dialog-message .confirm-msg-icon {
241
+ margin-right: 0.5rem;
242
+ font-size: 0.95rem;
243
+ vertical-align: -1px;
244
+ color: #ff7b72 !important;
245
+ }
246
+ // The emphasised (danger) phrase within the message — keep it distinct but on-brand.
247
+ .p-confirm-dialog .p-confirm-dialog-message .text-danger {
248
+ color: #ff7b72 !important;
249
+ font-weight: 700;
250
+ }
251
+
252
+ // Footer — a touch more breathing room and a consistent gap between No / Yes.
253
+ .p-confirm-dialog .p-dialog-footer {
254
+ padding: 0.6rem 0.85rem !important;
255
+ display: flex;
256
+ justify-content: flex-end;
257
+ gap: 0.5rem;
258
+ }
259
+ .p-confirm-dialog .p-dialog-footer .p-button { margin: 0 !important; }
260
+ // New UI standard: brand-tinted dark navy for grids/tables (matches inputs, cards, tiles).
261
+ // Selection/hover use brand blue instead of the legacy maroon from theme.css.
262
+ .p-datatable { background: #10161f; }
263
+ // Caption/header area (holds toolbar dropdowns etc.) — brand navy instead of the legacy
264
+ // grey #3b3b3b from theme.css, so a control inside it doesn't read as a dark border band.
265
+ .p-datatable .p-datatable-header {
266
+ background: #131b27;
267
+ color: #c6ccd6;
268
+ border: 0 none;
269
+ border-bottom: 1px solid rgba(97, 175, 239, 0.15);
270
+ }
271
+ .p-datatable .p-datatable-tbody > tr { background: #131b27; color: #c6ccd6; transition: background-color .12s ease; }
272
+ .p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(2n) { background-color: #18222f; }
273
+ // Hover (incl. selectable rows) — brand blue->green gradient wash.
274
+ .p-datatable .p-datatable-tbody > tr:not(.p-highlight):hover,
275
+ .p-datatable .p-datatable-tbody > tr.p-selectable-row:not(.p-highlight):hover {
276
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.22) 0%, rgba(0, 137, 63, 0.14) 100%) !important;
277
+ background-color: #1d2a3d !important;
278
+ color: #ffffff !important;
279
+ }
280
+ // Kill the maroon focus outline on rows (replace with a brand-blue ring).
281
+ .p-datatable .p-datatable-tbody > tr:focus {
282
+ outline: 0.15rem solid rgba(97, 175, 239, 0.5) !important;
283
+ outline-offset: -0.15rem !important;
284
+ }
285
+ .p-treetable .p-treetable-tbody > tr:focus {
286
+ outline: 0.15rem solid rgba(97, 175, 239, 0.5) !important;
287
+ outline-offset: -0.15rem !important;
288
+ }
289
+ // Hoverable-rows variant also defaults to maroon in theme.css.
290
+ .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody > tr:not(.p-highlight):hover {
291
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.22) 0%, rgba(0, 137, 63, 0.14) 100%) !important;
292
+ background-color: #1d2a3d !important;
293
+ color: #ffffff !important;
294
+ }
295
+ // Selected row — brand blue->green gradient + left accent. Beats theme.css maroon, incl. striped-even.
296
+ .p-datatable .p-datatable-tbody > tr.p-highlight,
297
+ .p-datatable .p-datatable-tbody > tr.p-selectable-row.p-highlight,
298
+ .p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight,
299
+ .p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(odd).p-highlight {
300
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.45) 0%, rgba(0, 137, 63, 0.28) 100%) !important;
301
+ background-color: #16273d !important;
302
+ color: #ffffff !important;
303
+ box-shadow: none !important;
304
+ }
42
305
  .p-datatable .p-datatable-tbody > tr > td {
43
- border-top: 0.5px solid #4b4b4b;
306
+ border-top: 0.5px solid rgba(97, 175, 239, 0.12);
44
307
  border-bottom: 0;
45
308
  border-left: 0;
46
309
  border-right: 0;
47
310
  }
48
311
 
49
- // Tooltip settings
50
- .p-tooltip.p-tooltip-right .p-tooltip-arrow { border-right-color: #e3b70f;}
51
- .p-tooltip.p-tooltip-left .p-tooltip-arrow { border-left-color: #e3b70f;}
52
- .p-tooltip.p-tooltip-top .p-tooltip-arrow { border-top-color: #e3b70f;}
53
- .p-tooltip.p-tooltip-bottom .p-tooltip-arrow { border-bottom-color: #e3b70f;}
54
- .p-tooltip .p-tooltip-text { background: #e3b70f; color: #070707; padding: .25rem .75rem; }
312
+ // Tooltip settings — New UI standard: brand-tinted dark navy (was bright gold #e3b70f).
313
+ $tooltip-bg: #16273d;
314
+ .p-tooltip.p-tooltip-right .p-tooltip-arrow { border-right-color: $tooltip-bg;}
315
+ .p-tooltip.p-tooltip-left .p-tooltip-arrow { border-left-color: $tooltip-bg;}
316
+ .p-tooltip.p-tooltip-top .p-tooltip-arrow { border-top-color: $tooltip-bg;}
317
+ .p-tooltip.p-tooltip-bottom .p-tooltip-arrow { border-bottom-color: $tooltip-bg;}
318
+ .p-tooltip .p-tooltip-text {
319
+ background-color: $tooltip-bg;
320
+ background-image: linear-gradient(135deg, #1b3553 0%, #133024 100%);
321
+ color: #e6ebf2;
322
+ border: 1px solid rgba(97, 175, 239, 0.35);
323
+ box-shadow: 0 4px 14px rgba(0, 0, 0, 0.45);
324
+ padding: .25rem .75rem;
325
+ }
55
326
 
56
- // Switch
57
- .p-inputswitch .p-inputswitch-slider::before { height: .7rem; margin-top: -0.36rem; border-radius: 2px; }
58
- .p-inputswitch { height: 1rem; }
59
- .p-inputswitch .p-inputswitch-slider { background: #2b2b2b; }
60
- .p-inputswitch:not(.p-disabled):hover .p-inputswitch-slider { background: #000; }
327
+ // ===== Switch (p-inputSwitch) — brand pill: off = navy track + light round knob, on = brand
328
+ // blue->green track + white knob, focus = brand-blue ring. Was grey/maroon. =====
329
+ .p-inputswitch { width: 2.5rem; height: 1.25rem; }
330
+ .p-inputswitch .p-inputswitch-slider {
331
+ background: #1a2738 !important;
332
+ border: 1px solid rgba(97, 175, 239, 0.30);
333
+ border-radius: 1rem !important; // pill track
334
+ }
335
+ // Round knob, vertically centred, sized to the track (off state = light slate so it's visible on navy).
336
+ .p-inputswitch .p-inputswitch-slider::before {
337
+ width: 0.9rem; height: 0.9rem;
338
+ left: 0.18rem; top: 50%; margin-top: -0.45rem;
339
+ border-radius: 50% !important;
340
+ background: #c7d2e0 !important;
341
+ transition: transform 0.15s ease, background 0.15s ease;
342
+ }
343
+ .p-inputswitch:not(.p-disabled):hover .p-inputswitch-slider { background: #22324a !important; }
344
+ .p-inputswitch.p-inputswitch-checked .p-inputswitch-slider,
345
+ .p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider {
346
+ background-image: linear-gradient(135deg, #0C53A4 0%, #00893F 100%) !important;
347
+ background-color: #0C53A4 !important;
348
+ border-color: rgba(97, 175, 239, 0.5);
349
+ }
350
+ // On state — white knob slid to the right.
351
+ .p-inputswitch.p-inputswitch-checked .p-inputswitch-slider::before {
352
+ background: #ffffff !important;
353
+ transform: translateX(1.25rem);
354
+ }
355
+ .p-inputswitch.p-focus .p-inputswitch-slider {
356
+ box-shadow: 0 0 0 0.15rem rgba(97, 175, 239, 0.35) !important;
357
+ outline: 0 none !important;
358
+ }
61
359
 
62
360
  .mt-2px { margin-top: 2px; }
63
361
 
64
362
  // Dropdown size related changes
65
363
  .p-inputtext { font-size: 14px; padding: .25rem .5rem; }
364
+ // New UI standard: brand navy fill + brand-blue border on primeng text inputs (e.g. p-tree-filter).
365
+ // Beats theme.css greys (#4f4f4f) and maroon focus (#8a0000/#7a0000).
366
+ .p-inputtext:not(.p-dropdown-label) {
367
+ background-color: #16202e !important;
368
+ background-image: linear-gradient(160deg, #1c2a3d 0%, #141e2c 100%) !important;
369
+ border: 1px solid rgba(97, 175, 239, 0.28) !important;
370
+ color: #d7dae0 !important;
371
+ }
372
+ .p-inputtext:not(.p-dropdown-label):enabled:hover {
373
+ border-color: rgba(97, 175, 239, 0.45) !important;
374
+ }
375
+ .p-inputtext:not(.p-dropdown-label):enabled:focus {
376
+ border-color: rgba(97, 175, 239, 0.7) !important;
377
+ box-shadow: 0 0 0 0.15rem rgba(97, 175, 239, 0.30) !important;
378
+ outline: 0 none !important;
379
+ }
380
+ .p-inputtext::placeholder { color: #6f7c8c !important; }
66
381
  .p-component.p-overlay { z-index: 1100 !important; }
67
382
  .p-dropdown-panel .p-dropdown-header { padding: 0.3rem 0.3rem; }
68
383
  .p-dropdown-panel .p-dropdown-items .p-dropdown-item { padding: .25rem 1rem; }
69
384
  ol, ul, dl { margin-bottom: 0; }
70
- .p-dropdown .p-dropdown-trigger { background-color: #404040; }
71
- .p-dropdown { border: none; background: #404040; }
385
+ // New UI standard: brand-tinted navy gradient for dropdowns (color-only, matches .form-control).
386
+ .p-dropdown .p-dropdown-trigger { background-color: transparent !important; }
387
+ // Dropdown control fill — brand navy gradient. Covers plain, compound .p-input-filled (same element),
388
+ // descendant .p-input-filled, hover/focus — to beat theme.css #2e2e2e / #404040 / #4f4f4f.
389
+ .p-dropdown,
390
+ .p-dropdown.p-input-filled,
391
+ .p-dropdown.p-input-filled:not(.p-disabled):hover,
392
+ .p-input-filled .p-dropdown,
393
+ .p-input-filled .p-dropdown:not(.p-disabled):hover {
394
+ // Subtle brand-blue hairline border (matches .form-control) — a touch brighter than card edges.
395
+ border: 1px solid rgba(97, 175, 239, 0.28) !important;
396
+ background-color: #1a2738 !important;
397
+ background-image: linear-gradient(160deg, #1c2a3d 0%, #141e2c 100%) !important;
398
+ }
399
+ // Focus — brand-blue border, matching .form-control:focus.
400
+ .p-dropdown.p-input-filled:not(.p-disabled).p-focus,
401
+ .p-input-filled .p-dropdown:not(.p-disabled).p-focus,
402
+ .p-dropdown:not(.p-disabled).p-focus {
403
+ border: 1px solid rgba(97, 175, 239, 0.55) !important;
404
+ background-color: #1a2738 !important;
405
+ background-image: linear-gradient(160deg, #1c2a3d 0%, #141e2c 100%) !important;
406
+ box-shadow: 0 0 0 0.2rem rgba(97, 175, 239, 0.35) !important;
407
+ }
408
+ // The inner label/input never shows its own grey fill.
409
+ .p-dropdown .p-dropdown-label,
410
+ .p-dropdown.p-input-filled .p-dropdown-label,
411
+ .p-dropdown .p-inputtext { background: transparent !important; }
412
+ // Selected-value text must match the .form-control font-size + colour (was a faint theme.css grey
413
+ // at a different size, so dropdowns looked inconsistent next to plain inputs).
414
+ .p-dropdown .p-dropdown-label {
415
+ color: #d7dae0 !important;
416
+ font-size: 0.875rem !important;
417
+ line-height: 1.5 !important;
418
+ }
419
+ .p-dropdown .p-dropdown-label.p-placeholder { color: #6f7c8c !important; }
420
+ // Dropdown items in the panel — same size for consistency.
421
+ .p-dropdown-panel .p-dropdown-items .p-dropdown-item { font-size: 0.875rem !important; }
72
422
 
73
- .p-tabview .p-tabview-panels { background: #303030; }
423
+ html.DARK .p-tabview .p-tabview-panels { background: #141c29; }
424
+ html.LIGHT .p-tabview .p-tabview-panels { background: #ffffff; color: #2b3340; }
74
425
 
75
426
  .p-input-small-dropdown {
76
427
  .p-inputtext { padding: 0 0.5rem; }
77
428
  }
78
429
 
430
+ // ===== API dropdown (api-testing filter-section) — aligned columns =====
431
+ // Styled globally (panel is appendTo="body"). Method + category are fixed-width columns and
432
+ // the name has a min-width, so every column (method | [CATEGORY] | name | path) lines up.
433
+ .api-dd-panel {
434
+ border-radius: 0.5rem;
435
+ overflow: hidden;
436
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.45);
437
+ border: 1px solid rgba(97, 175, 239, 0.22);
438
+ }
439
+ /* filter box — give it room, round it and add a brand focus ring */
440
+ .api-dd-panel .p-dropdown-header { padding: 0.6rem 0.75rem 0.5rem; }
441
+ .api-dd-panel .p-dropdown-filter-container { width: 100%; }
442
+ .api-dd-panel .p-dropdown-filter-container .p-dropdown-filter {
443
+ border-radius: 0.4rem;
444
+ padding: 0.45rem 2.25rem 0.45rem 0.75rem;
445
+ }
446
+ .api-dd-panel .p-dropdown-filter-container .p-dropdown-filter-icon {
447
+ right: 0.85rem; color: var(--brand-secondary, #61AFEF);
448
+ }
449
+ .api-dd-panel .p-dropdown-items { padding: 0.25rem; }
450
+ .api-dd-panel .p-dropdown-items .p-dropdown-item {
451
+ padding: 0.4rem 0.65rem !important;
452
+ border-radius: 0.35rem;
453
+ margin-bottom: 1px;
454
+ }
455
+ .api-dd-panel .p-dropdown-items .p-dropdown-item > span {
456
+ display: flex; align-items: center; gap: 0.6rem; width: 100%;
457
+ }
458
+ /* method column (GET/POST/PUT/DELETE) — rendered as a small badge for scannability */
459
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .get,
460
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .post,
461
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .put,
462
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .delete {
463
+ flex: 0 0 56px; width: 56px; margin: 0 !important;
464
+ text-align: center;
465
+ font-size: 0.6875rem !important;
466
+ font-weight: 700 !important;
467
+ letter-spacing: 0.04em;
468
+ padding: 0.15rem 0;
469
+ border-radius: 0.25rem;
470
+ border: 1px solid currentColor;
471
+ text-transform: uppercase;
472
+ }
473
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .get { background: rgba(47, 179, 106, 0.14); }
474
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .post { background: rgba(224, 168, 0, 0.14); }
475
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .put { background: rgba(97, 175, 239, 0.14); }
476
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .delete { background: rgba(231, 76, 60, 0.14); }
477
+ /* keep the badge's semantic colour even on the highlighted/hover row
478
+ (the generic rule above forces white text on .p-highlight) */
479
+ .api-dd-panel .p-dropdown-items .p-dropdown-item.p-highlight .get,
480
+ .api-dd-panel .p-dropdown-items .p-dropdown-item:hover .get { color: var(--accent-success) !important; background: rgba(47, 179, 106, 0.22); }
481
+ .api-dd-panel .p-dropdown-items .p-dropdown-item.p-highlight .post,
482
+ .api-dd-panel .p-dropdown-items .p-dropdown-item:hover .post { color: var(--accent-warning) !important; background: rgba(224, 168, 0, 0.22); }
483
+ .api-dd-panel .p-dropdown-items .p-dropdown-item.p-highlight .put,
484
+ .api-dd-panel .p-dropdown-items .p-dropdown-item:hover .put { color: var(--brand-secondary) !important; background: rgba(97, 175, 239, 0.22); }
485
+ .api-dd-panel .p-dropdown-items .p-dropdown-item.p-highlight .delete,
486
+ .api-dd-panel .p-dropdown-items .p-dropdown-item:hover .delete { color: var(--accent-error) !important; background: rgba(231, 76, 60, 0.22); }
487
+ /* [CATEGORY] column — rendered as a small chip; SCHEMA vs GEN colour-coded */
488
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .api-cat {
489
+ flex: 0 0 76px; width: 76px !important; margin: 0;
490
+ display: inline-flex; align-items: center; justify-content: center;
491
+ font-size: 0.625rem; font-weight: 700; letter-spacing: 0.05em;
492
+ text-transform: uppercase;
493
+ padding: 0.12rem 0.3rem;
494
+ border-radius: 0.25rem;
495
+ border: 1px solid;
496
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
497
+ }
498
+ /* SCHEMA = brand-blue, GEN = teal/green — distinct at a glance */
499
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .api-cat[data-cat="SCHEMA"] {
500
+ color: #7fb6ec; border-color: rgba(127, 182, 236, 0.45); background: rgba(97, 175, 239, 0.12);
501
+ }
502
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .api-cat[data-cat="GEN"] {
503
+ color: #3fc99a; border-color: rgba(63, 201, 154, 0.45); background: rgba(47, 179, 106, 0.12);
504
+ }
505
+ /* any other category — neutral slate chip */
506
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .api-cat:not([data-cat="SCHEMA"]):not([data-cat="GEN"]) {
507
+ color: #9aa7b8; border-color: rgba(154, 167, 184, 0.35); background: rgba(154, 167, 184, 0.10);
508
+ }
509
+ /* name column — min-width so short names still push the path to a common column */
510
+ .api-dd-panel .p-dropdown-items .p-dropdown-item > span > span:not([class]):not([style]) {
511
+ flex: 0 0 auto; min-width: 240px; font-weight: 500;
512
+ }
513
+ /* path — muted, fills remaining space, truncates if very long */
514
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .text-muted {
515
+ flex: 1 1 auto; margin: 0 !important;
516
+ font-size: 0.8125rem; opacity: 0.8;
517
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
518
+ }
519
+
520
+ // ===== API dropdown — SELECTED item (the closed control's label) =====
521
+ // The selectedItem template renders inside .p-dropdown-label; without this it
522
+ // collapses to inline text ("SCHEMAGet all"). Give it the same badge/chip treatment.
523
+ .api-dd-control .p-dropdown-label {
524
+ display: flex !important; align-items: center; gap: 0.6rem;
525
+ overflow: hidden;
526
+ }
527
+ .api-dd-control .p-dropdown-label > span {
528
+ display: flex; align-items: center; gap: 0.6rem; width: 100%; overflow: hidden;
529
+ }
530
+ /* method badge — colour set with !important to beat the global .p-dropdown-label colour */
531
+ .api-dd-control .p-dropdown-label .get,
532
+ .api-dd-control .p-dropdown-label .post,
533
+ .api-dd-control .p-dropdown-label .put,
534
+ .api-dd-control .p-dropdown-label .delete {
535
+ flex: 0 0 auto; margin: 0 !important;
536
+ font-size: 0.6875rem !important; font-weight: 700 !important;
537
+ letter-spacing: 0.04em; text-transform: uppercase;
538
+ padding: 0.15rem 0.45rem; border-radius: 0.25rem; border: 1px solid currentColor;
539
+ }
540
+ .api-dd-control .p-dropdown-label .get { color: var(--accent-success) !important; background: rgba(47, 179, 106, 0.14); }
541
+ .api-dd-control .p-dropdown-label .post { color: var(--accent-warning) !important; background: rgba(224, 168, 0, 0.14); }
542
+ .api-dd-control .p-dropdown-label .put { color: var(--brand-secondary) !important; background: rgba(97, 175, 239, 0.14); }
543
+ .api-dd-control .p-dropdown-label .delete { color: var(--accent-error) !important; background: rgba(231, 76, 60, 0.14); }
544
+ /* category chip */
545
+ .api-dd-control .p-dropdown-label .api-cat {
546
+ flex: 0 0 auto; width: auto !important; margin: 0;
547
+ display: inline-flex; align-items: center; justify-content: center;
548
+ font-size: 0.625rem; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase;
549
+ padding: 0.12rem 0.4rem; border-radius: 0.25rem; border: 1px solid;
550
+ }
551
+ .api-dd-control .p-dropdown-label .api-cat[data-cat="SCHEMA"] {
552
+ color: #7fb6ec !important; border-color: rgba(127, 182, 236, 0.45); background: rgba(97, 175, 239, 0.12);
553
+ }
554
+ .api-dd-control .p-dropdown-label .api-cat[data-cat="GEN"] {
555
+ color: #3fc99a !important; border-color: rgba(63, 201, 154, 0.45); background: rgba(47, 179, 106, 0.12);
556
+ }
557
+ .api-dd-control .p-dropdown-label .api-cat:not([data-cat="SCHEMA"]):not([data-cat="GEN"]) {
558
+ color: #9aa7b8 !important; border-color: rgba(154, 167, 184, 0.35); background: rgba(154, 167, 184, 0.10);
559
+ }
560
+ /* name — don't let it crowd the path; path muted and ellipsised */
561
+ .api-dd-control .p-dropdown-label > span > span:not([class]):not([style]) {
562
+ flex: 0 0 auto; font-weight: 500; white-space: nowrap;
563
+ }
564
+ .api-dd-control .p-dropdown-label .text-muted {
565
+ flex: 1 1 auto; margin: 0 !important;
566
+ font-size: 0.8125rem; opacity: 0.8;
567
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
568
+ }
569
+
570
+ // ===== Timezone dropdown — zone name on the left, offset chip on the right =====
571
+ // Styled globally (the panel is appendTo="body", so component styles can't reach it).
572
+ .tz-row {
573
+ display: flex; align-items: center; justify-content: space-between;
574
+ gap: 0.75rem; width: 100%;
575
+ }
576
+ .tz-row__zone { font-size: 0.875rem; color: inherit; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
577
+ .tz-row__offset {
578
+ flex: 0 0 auto;
579
+ font-family: "JetBrains Mono", monospace; font-size: 0.72rem; font-weight: 600;
580
+ color: #6fdcaa;
581
+ padding: 1px 7px; border-radius: 10px;
582
+ background: rgba(0, 137, 63, 0.14); border: 1px solid rgba(0, 137, 63, 0.30);
583
+ }
584
+ // roomier items in the timezone panel
585
+ .tz-dropdown-panel .p-dropdown-items .p-dropdown-item { padding: 0.45rem 0.85rem !important; }
586
+ .tz-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight .tz-row__offset {
587
+ color: #ffffff; background: rgba(255, 255, 255, 0.18); border-color: rgba(255, 255, 255, 0.35);
588
+ }
589
+
590
+ html.LIGHT {
591
+ .tz-row__offset { color: #1d8a4e; background: rgba(0, 137, 63, 0.10); border-color: rgba(0, 137, 63, 0.28); }
592
+ .tz-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight .tz-row__offset {
593
+ color: #ffffff; background: rgba(255, 255, 255, 0.25); border-color: rgba(255, 255, 255, 0.45);
594
+ }
595
+ }
596
+
597
+ .p-multiselect-sm {
598
+ .p-multiselect-label { padding: 0.25rem 0.5rem; }
599
+ }
600
+
79
601
  p-dropdown.text-secondary {
80
602
  .p-dropdown-label {
81
603
  color: #7A8288;
82
604
  }
83
605
  }
84
606
 
607
+ // Paginator footer — brand-navy surface + brand-blue controls (was flat grey).
608
+ .p-paginator {
609
+ background: #141c29 !important;
610
+ border-top: 1px solid rgba(97, 175, 239, 0.18) !important;
611
+ color: #9aa6b5 !important;
612
+ }
85
613
  .p-paginator .p-paginator-pages .p-paginator-page { color: #cecece; }
86
614
 
87
- .p-paginator .p-paginator-first, .p-paginator .p-paginator-prev, .p-paginator .p-paginator-next, .p-paginator .p-paginator-last,
615
+ .p-paginator .p-paginator-first, .p-paginator .p-paginator-prev, .p-paginator .p-paginator-next, .p-paginator .p-paginator-last {
616
+ color: #9ec3e8 !important;
617
+ border-radius: 6px;
618
+ }
88
619
  .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover, .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover, .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover, .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover,
89
- .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover { color: #ffffff; }
620
+ .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover {
621
+ color: #ffffff !important;
622
+ background: rgba(12, 83, 164, 0.22) !important;
623
+ }
624
+ // Active page = brand-blue fill.
625
+ .p-paginator .p-paginator-pages .p-paginator-page.p-highlight {
626
+ background: #0C53A4 !important;
627
+ color: #ffffff !important;
628
+ border-color: #0C53A4 !important;
629
+ }
630
+ // Rows-per-page dropdown — brand navy + brand-blue border.
631
+ .p-paginator .p-dropdown {
632
+ background: #16202e !important;
633
+ border: 1px solid rgba(97, 175, 239, 0.30) !important;
634
+ }
635
+ .p-paginator .p-dropdown .p-dropdown-label { color: #d6e2f2 !important; }
636
+ .p-paginator .p-dropdown .p-dropdown-trigger { color: #9ec3e8 !important; }
637
+ .p-paginator .p-dropdown:not(.p-disabled):hover { border-color: rgba(97, 175, 239, 0.55) !important; }
90
638
 
91
639
  p-paginator {
92
640
  .p-paginator .p-dropdown .p-dropdown-label { padding-top: 8px; }
93
641
  }
94
642
 
95
643
  .p-button.p-button-text { color: #ffffff; }
644
+ // NOTE: the :hover here is superseded by the brand-blue-tint rule below
645
+ // (`.p-button.p-button-text:enabled:hover { ... !important }`), which is the
646
+ // effective style. Kept harmless; do not rely on this grey value.
96
647
  .p-button.p-button-text:enabled:hover { background: #606060; color: #ffffff; }
97
- .p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):hover { color: white; }
98
- .p-datepicker table td.p-datepicker-today>span { background: #525252; color: #ffffff; }
648
+
649
+ // Text / plain / rounded buttons (e.g. p-table row toggler chevron) transparent, no maroon fill.
650
+ // The theme's base .p-button bg is maroon (#790109); text/plain buttons must stay see-through.
651
+ .p-button.p-button-text,
652
+ .p-button.p-button-plain,
653
+ .p-button.p-button-rounded.p-button-text,
654
+ .p-row-toggler.p-button {
655
+ background: transparent !important;
656
+ background-color: transparent !important;
657
+ background-image: none !important;
658
+ border-color: transparent !important;
659
+ box-shadow: none !important;
660
+ color: #61AFEF !important;
661
+ }
662
+ .p-button.p-button-text:enabled:hover,
663
+ .p-button.p-button-plain:enabled:hover,
664
+ .p-row-toggler.p-button:enabled:hover {
665
+ background: rgba(97, 175, 239, 0.14) !important;
666
+ color: #ffffff !important;
667
+ border-color: transparent !important;
668
+ }
669
+ .p-button.p-button-plain { color: #9fb3cc !important; }
670
+ // ===== Calendar / date picker — brand navy panel + brand-blue accents (was grey/maroon) =====
671
+ .p-datepicker:not(.p-datepicker-inline),
672
+ .p-datepicker {
673
+ background: #141c29 !important;
674
+ color: #d7dae0 !important;
675
+ border: 1px solid rgba(97, 175, 239, 0.20) !important;
676
+ border-radius: 10px !important;
677
+ // Size the panel to its calendar grid, not the (full-width) input it is
678
+ // appended next to — PrimeNG otherwise stretches the panel to match the
679
+ // trigger width via an inline min-width.
680
+ width: auto !important;
681
+ min-width: 0 !important;
682
+ max-width: 19rem !important;
683
+ }
684
+ // ---- Compact sizing (theme-agnostic): the base theme.css cells (2.5rem, font 1rem,
685
+ // .5rem padding everywhere) make the panel oversized. Tighten it up. ----
686
+ .p-datepicker { padding: 0.25rem !important; }
687
+ .p-datepicker .p-datepicker-header { padding: 0.35rem 0.5rem !important; }
688
+ .p-datepicker .p-datepicker-header .p-datepicker-prev,
689
+ .p-datepicker .p-datepicker-header .p-datepicker-next { width: 1.75rem !important; height: 1.75rem !important; }
690
+ .p-datepicker table { font-size: 0.85rem !important; margin: 0.25rem 0 !important; }
691
+ .p-datepicker table th { padding: 0.2rem !important; }
692
+ .p-datepicker table th > span { width: 2rem !important; height: 1.6rem !important; }
693
+ .p-datepicker table td { padding: 0.1rem !important; }
694
+ .p-datepicker table td > span { width: 2rem !important; height: 2rem !important; }
695
+ .p-datepicker .p-datepicker-buttonbar { padding: 0.35rem 0.5rem !important; }
696
+ .p-datepicker .p-datepicker-buttonbar .p-button { padding: 0.25rem 0.5rem !important; font-size: 0.8rem !important; }
697
+ .p-datepicker .p-datepicker-header {
698
+ background: #1b2636 !important;
699
+ color: #ffffff !important;
700
+ border-bottom: 1px solid rgba(97, 175, 239, 0.18) !important;
701
+ }
702
+ .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month,
703
+ .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-year { color: #ffffff !important; }
704
+ .p-datepicker .p-datepicker-header .p-datepicker-prev,
705
+ .p-datepicker .p-datepicker-header .p-datepicker-next { color: #9fb3cc !important; }
706
+ .p-datepicker .p-datepicker-header .p-datepicker-prev:enabled:hover,
707
+ .p-datepicker .p-datepicker-header .p-datepicker-next:enabled:hover {
708
+ color: #ffffff !important; background: rgba(97, 175, 239, 0.12) !important;
709
+ }
710
+ .p-datepicker table th > span { color: #9fb3cc !important; }
711
+ .p-datepicker table td > span { color: #d7dae0 !important; border-radius: 7px !important; }
712
+ .p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):hover {
713
+ color: #ffffff !important; background: rgba(97, 175, 239, 0.15) !important;
714
+ }
715
+ .p-datepicker table td.p-datepicker-today > span {
716
+ background: rgba(97, 175, 239, 0.18) !important; color: #ffffff !important;
717
+ border: 1px solid rgba(97, 175, 239, 0.35) !important;
718
+ }
719
+ .p-datepicker table td > span.p-highlight {
720
+ background-image: linear-gradient(135deg, #0C53A4 0%, #00893F 100%) !important;
721
+ color: #ffffff !important;
722
+ }
723
+ .p-datepicker .p-datepicker-buttonbar { border-top: 1px solid rgba(97, 175, 239, 0.15) !important; }
724
+ .p-datepicker .p-datepicker-buttonbar .p-button.p-button-text { color: #61AFEF !important; }
725
+ // The calendar input's trigger icon button — brand blue->green (was maroon primary).
726
+ .p-calendar .p-datepicker-trigger.p-button {
727
+ background-color: #0C53A4 !important;
728
+ background-image: linear-gradient(135deg, #0C53A4 0%, #00893F 100%) !important;
729
+ border: 1px solid rgba(97, 175, 239, 0.45) !important;
730
+ color: #ffffff !important;
731
+ }
732
+ .p-calendar .p-datepicker-trigger.p-button:enabled:hover { filter: brightness(1.08); }
733
+
734
+ // Calendar input text must match the normal form inputs (0.875rem / .form-control),
735
+ // not the theme's larger 1rem .p-inputtext.
736
+ .p-calendar .p-inputtext { font-size: 0.875rem !important; }
737
+
738
+ // ---- Time picker (the HH:MM AM/PM spinner under the calendar) ----
739
+ // Base theme.css leaves it with oversized 0.5rem padding everywhere; tighten + brand it.
740
+ .p-datepicker .p-timepicker {
741
+ padding: 0.4rem 0.5rem !important;
742
+ border-top: 1px solid rgba(97, 175, 239, 0.15) !important;
743
+ gap: 0.25rem;
744
+ }
745
+ .p-datepicker .p-timepicker span { font-size: 0.9rem !important; color: #d7dae0 !important; }
746
+ .p-datepicker .p-timepicker > div { padding: 0 0.25rem !important; }
747
+ .p-datepicker .p-timepicker button {
748
+ width: 1.75rem !important; height: 1.75rem !important;
749
+ color: #9fb3cc !important; border-radius: 7px !important;
750
+ }
751
+ .p-datepicker .p-timepicker button:enabled:hover {
752
+ color: #ffffff !important; background: rgba(97, 175, 239, 0.15) !important;
753
+ }
754
+
755
+ // ===== Log-table summary chips — brand-tinted by category (was loud red/orange/blue/grey) =====
756
+ // Recolour the Bootstrap contextual classes ONLY when applied to a p-chip, keeping the
757
+ // per-category distinction but in a calm brand palette. Text/remove-icon kept readable.
758
+ .p-chip {
759
+ border-radius: 14px;
760
+ .p-chip-text { color: inherit; }
761
+ .p-chip-remove-icon { color: inherit; opacity: 0.7; }
762
+ .p-chip-remove-icon:hover { opacity: 1; }
763
+ }
764
+ .p-chip.bg-danger { background-color: #0C53A4 !important; color: #ffffff !important; } // instances -> brand blue
765
+ .p-chip.bg-warning { background-color: #0a7d6f !important; color: #ffffff !important; } // databases -> teal
766
+ .p-chip.bg-info { background-color: #1d8a4e !important; color: #ffffff !important; } // collections -> green
767
+ .p-chip.bg-light { background-color: #2a3a4f !important; color: #dbe4f0 !important; } // apis -> slate
768
+ .p-chip.bg-danger.text-dark,
769
+ .p-chip.bg-warning.text-dark,
770
+ .p-chip.bg-info.text-dark { color: #ffffff !important; }
771
+ .p-chip.bg-light.text-dark { color: #dbe4f0 !important; }
99
772
 
100
773
  p-tree {
101
774
  p-checkbox {
@@ -110,7 +783,15 @@ p-table {
110
783
  }
111
784
  }
112
785
 
113
- .p-splitter { background-color: #303030; }
786
+ // New UI standard: brand navy splitter + brand-tinted gutter/handle (was grey #3b3b3b / #4f4f4f).
787
+ .p-splitter {
788
+ background: #141c29 !important;
789
+ border: 1px solid rgba(97, 175, 239, 0.18) !important;
790
+ color: #c6ccd6 !important;
791
+ }
792
+ .p-splitter .p-splitter-gutter { background: rgba(97, 175, 239, 0.06) !important; }
793
+ .p-splitter .p-splitter-gutter .p-splitter-gutter-handle { background: rgba(97, 175, 239, 0.35) !important; }
794
+ .p-splitter .p-splitter-gutter-resizing { background: linear-gradient(135deg, #0C53A4, #00893F) !important; }
114
795
 
115
796
  .p-component.p-overlay {
116
797
  box-shadow: var(--mdc-dialog-container-elevation,0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12));
@@ -126,5 +807,719 @@ p-checkbox {
126
807
  }
127
808
 
128
809
  .p-button { padding: 0.25rem 0.5rem; }
129
- .p-tree { background: #303030; border: none; }
130
- .p-checkbox .p-checkbox-box { background: #212121; }
810
+ // brand-tinted dark navy tree background + subtle hover/selected states
811
+ .p-tree { background: #141c29; border: none; }
812
+ // Tree checkbox nodes (events-tree, custom-api-tree, web-socket-events-tree, etc.) render
813
+ // <td style="width:24px"><p-checkbox></td><td>{{label}}</td> with no gap — checkbox sits
814
+ // flush against the label. Add breathing room without touching per-component markup.
815
+ .p-tree .p-treenode-content td:has(> .p-checkbox) {
816
+ padding-right: 8px;
817
+ }
818
+ // Striped rows for p-tree (like the grids/tables) — at EVERY nesting level.
819
+ // PrimeNG renders each row as <p-treenode> ... > .p-treenode-content. nth-of-type on the
820
+ // <p-treenode> wrapper alternates within each sibling group (top-level AND nested children).
821
+ p-treenode:nth-of-type(even) > .p-treenode > .p-treenode-content:not(.p-highlight) {
822
+ background-color: #18222f !important;
823
+ }
824
+ p-treenode:nth-of-type(odd) > .p-treenode > .p-treenode-content:not(.p-highlight) {
825
+ background-color: transparent !important;
826
+ }
827
+ // Full-specificity selectors to beat theme.css ( .p-tree .p-tree-container .p-treenode .p-treenode-content... )
828
+ // Hover (selectable node) — was maroon #610000.
829
+ .p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover,
830
+ .p-tree .p-tree-container .p-treenode .p-treenode-content:not(.p-highlight):hover {
831
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.22) 0%, rgba(0, 137, 63, 0.14) 100%) !important;
832
+ background-color: #1d2a3d !important;
833
+ color: #ffffff !important;
834
+ }
835
+ // Selected node — was maroon #750008.
836
+ .p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight {
837
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.45) 0%, rgba(0, 137, 63, 0.28) 100%) !important;
838
+ background-color: #16273d !important;
839
+ color: #ffffff !important;
840
+ box-shadow: none !important;
841
+ }
842
+ .p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-tree-toggler,
843
+ .p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight .p-treenode-icon { color: #ffffff !important; }
844
+ // Focus ring — was maroon #8a0000.
845
+ .p-tree .p-tree-container .p-treenode .p-treenode-content:focus {
846
+ box-shadow: inset 0 0 0 0.15rem rgba(97, 175, 239, 0.5) !important;
847
+ }
848
+
849
+ // TreeTable (e.g. Custom APIs list): brand-tinted dark navy rows/header,
850
+ // brand-blue selection/hover instead of the legacy maroon.
851
+ .p-treetable .p-treetable-thead > tr > th {
852
+ background: #1b2636;
853
+ color: #c6ccd6;
854
+ border-color: rgba(97, 175, 239, 0.15);
855
+ }
856
+ .p-treetable .p-treetable-tbody > tr { background: #141c29; color: #c6ccd6; }
857
+ // kill maroon focus rings on tree togglers
858
+ .p-treetable .p-treetable-tbody > tr > td .p-treetable-toggler:focus,
859
+ .p-tree .p-tree-toggler:focus { box-shadow: 0 0 0 1px rgba(97, 175, 239, 0.5) !important; }
860
+ .p-treetable .p-treetable-tbody > tr.p-highlight,
861
+ .p-treetable .p-treetable-tbody > tr.p-selectable-row.p-highlight {
862
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.45) 0%, rgba(0, 137, 63, 0.28) 100%) !important;
863
+ background-color: #16273d !important;
864
+ color: #ffffff !important;
865
+ box-shadow: none !important;
866
+ }
867
+ .p-treetable .p-treetable-tbody > tr:not(.p-highlight):hover,
868
+ .p-treetable.p-treetable-hoverable-rows .p-treetable-tbody > tr:not(.p-highlight):hover,
869
+ .p-treetable .p-treetable-tbody > tr.p-selectable-row:not(.p-highlight):hover {
870
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.22) 0%, rgba(0, 137, 63, 0.14) 100%) !important;
871
+ background-color: #1d2a3d !important;
872
+ color: #ffffff !important;
873
+ }
874
+ // ---- New UI standard: brand-tint checkboxes, tabs, dropdown panels (was red/grey) ----
875
+
876
+ // Checkbox: unchecked = dark navy; checked = brand blue->green gradient (was maroon #790109).
877
+ .p-checkbox .p-checkbox-box {
878
+ background: #16202e !important;
879
+ border: 1px solid rgba(97, 175, 239, 0.30) !important;
880
+ }
881
+ .p-checkbox .p-checkbox-box.p-highlight,
882
+ .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover,
883
+ .p-input-filled .p-checkbox .p-checkbox-box.p-highlight {
884
+ border-color: rgba(97, 175, 239, 0.6) !important;
885
+ background-image: linear-gradient(135deg, #0C53A4 0%, #0a6a5f 55%, #00893F 100%) !important;
886
+ background-color: #0C53A4 !important;
887
+ color: #ffffff !important;
888
+ }
889
+ // Kill the theme's dark-red focus ring (#8a0000) — use a brand-blue ring +
890
+ // hover border instead (matches the datatable/tab focus treatment).
891
+ .p-checkbox .p-checkbox-box.p-focus {
892
+ outline: 0 none !important;
893
+ box-shadow: 0 0 0 0.15rem rgba(97, 175, 239, 0.35) !important;
894
+ border-color: rgba(97, 175, 239, 0.6) !important;
895
+ }
896
+ .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
897
+ border-color: rgba(97, 175, 239, 0.6) !important;
898
+ }
899
+
900
+ // Dropdown overlay panel + header + items (was grey #3b3b3b / maroon selection).
901
+ .p-dropdown-panel { background: #131c29 !important; border: 1px solid rgba(97, 175, 239, 0.20) !important; }
902
+ .p-dropdown-panel .p-dropdown-header { background: #1b2636 !important; border-bottom: 1px solid rgba(97, 175, 239, 0.15) !important; }
903
+ // Dropdown filter (search) input — brand navy, brand-blue border + focus (was grey + red focus).
904
+ .p-dropdown-panel .p-dropdown-header .p-dropdown-filter {
905
+ background-color: #16202e !important;
906
+ background-image: linear-gradient(160deg, #1c2a3d 0%, #141e2c 100%) !important;
907
+ border: 1px solid rgba(97, 175, 239, 0.30) !important;
908
+ color: #d7dae0 !important;
909
+ }
910
+ .p-dropdown-panel .p-dropdown-header .p-dropdown-filter:focus,
911
+ .p-dropdown-panel .p-dropdown-header .p-dropdown-filter:enabled:focus {
912
+ border-color: rgba(97, 175, 239, 0.7) !important;
913
+ box-shadow: 0 0 0 0.15rem rgba(97, 175, 239, 0.30) !important;
914
+ outline: 0 none !important;
915
+ }
916
+ .p-dropdown-panel .p-dropdown-header .p-dropdown-filter-icon { color: #61AFEF !important; }
917
+ .p-dropdown-panel .p-dropdown-items .p-dropdown-item-group { background: #1b2636 !important; }
918
+ .p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight {
919
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.45) 0%, rgba(0, 137, 63, 0.28) 100%) !important;
920
+ background-color: #16273d !important;
921
+ color: #ffffff !important;
922
+ }
923
+ .p-dropdown-panel .p-dropdown-items .p-dropdown-item:not(.p-highlight):not(.p-disabled):hover {
924
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.22) 0%, rgba(0, 137, 63, 0.14) 100%) !important;
925
+ background-color: #1d2a3d !important;
926
+ color: #ffffff !important;
927
+ }
928
+
929
+ // Tabview nav (Header / params tabs): dark navy, selected = brand-tinted with brand-blue accent.
930
+ .p-tabview .p-tabview-nav li .p-tabview-nav-link {
931
+ background: #131c29 !important;
932
+ border-color: #1f2c3e #1f2c3e rgba(97, 175, 239, 0.25) #1f2c3e !important;
933
+ color: #9aa6b5 !important;
934
+ }
935
+ .p-tabview .p-tabview-nav li:not(.p-highlight):not(.p-disabled):hover .p-tabview-nav-link {
936
+ background: #1d2a3d !important;
937
+ border-color: rgba(97, 175, 239, 0.25) !important;
938
+ color: #d7dae0 !important;
939
+ }
940
+ .p-tabview .p-tabview-nav li.p-highlight .p-tabview-nav-link {
941
+ background-image: linear-gradient(180deg, rgba(12, 83, 164, 0.30) 0%, rgba(0, 137, 63, 0.18) 100%) !important;
942
+ background-color: #16273d !important;
943
+ border-color: rgba(97, 175, 239, 0.35) rgba(97, 175, 239, 0.35) transparent rgba(97, 175, 239, 0.35) !important;
944
+ color: #ffffff !important;
945
+ //box-shadow: inset 0 2px 0 #61AFEF !important;
946
+ }
947
+ .p-tabview .p-tabview-nav-btn.p-link { background: #131c29 !important; color: #9aa6b5 !important; }
948
+
949
+ // ===== Radio button — unchecked dark navy; checked = brand blue dot (was maroon #790109). =====
950
+ .p-radiobutton .p-radiobutton-box {
951
+ background: #16202e !important;
952
+ border: 1px solid rgba(97, 175, 239, 0.30) !important;
953
+ }
954
+ .p-radiobutton .p-radiobutton-box.p-highlight,
955
+ .p-radiobutton:not(.p-radiobutton-disabled) .p-radiobutton-box.p-highlight:hover,
956
+ .p-input-filled .p-radiobutton .p-radiobutton-box.p-highlight {
957
+ border-color: rgba(97, 175, 239, 0.65) !important;
958
+ background-image: linear-gradient(135deg, #0C53A4 0%, #00893F 100%) !important;
959
+ background-color: #0C53A4 !important;
960
+ }
961
+ .p-radiobutton .p-radiobutton-box .p-radiobutton-icon { background-color: #ffffff !important; }
962
+ .p-radiobutton:not(.p-radiobutton-disabled) .p-radiobutton-box:not(.p-highlight):hover { border-color: rgba(97, 175, 239, 0.5) !important; }
963
+ .p-radiobutton .p-radiobutton-box:focus, .p-radiobutton .p-radiobutton-box.p-focus {
964
+ box-shadow: 0 0 0 0.15rem rgba(97, 175, 239, 0.30) !important; outline: 0 none !important;
965
+ }
966
+
967
+ // ===== MultiSelect — match the dropdown treatment (control, panel, items, checkboxes). =====
968
+ .p-multiselect {
969
+ background: #141c29 !important;
970
+ border: 1px solid rgba(97, 175, 239, 0.30) !important;
971
+ border-radius: 6px;
972
+ }
973
+ .p-multiselect:not(.p-disabled):hover { border-color: rgba(97, 175, 239, 0.5) !important; }
974
+ .p-multiselect:not(.p-disabled).p-focus { border-color: rgba(97, 175, 239, 0.85) !important; box-shadow: 0 0 0 0.15rem rgba(97, 175, 239, 0.25) !important; }
975
+ .p-multiselect .p-multiselect-label { color: #d7dae0 !important; }
976
+ .p-multiselect .p-multiselect-trigger { color: #9fb3cc !important; }
977
+ .p-multiselect-panel { background: #131c29 !important; border: 1px solid rgba(97, 175, 239, 0.20) !important; }
978
+ .p-multiselect-panel .p-multiselect-header { background: #1b2636 !important; border-bottom: 1px solid rgba(97, 175, 239, 0.15) !important; }
979
+ .p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-inputtext {
980
+ background: #141c29 !important; border: 1px solid rgba(97, 175, 239, 0.35) !important; color: #d7dae0 !important;
981
+ }
982
+ .p-multiselect-panel .p-multiselect-items .p-multiselect-item { color: #d7dae0 !important; }
983
+ .p-multiselect-panel .p-multiselect-items .p-multiselect-item:not(.p-highlight):not(.p-disabled):hover {
984
+ background: rgba(97, 175, 239, 0.12) !important; color: #ffffff !important;
985
+ }
986
+ .p-multiselect-panel .p-multiselect-items .p-multiselect-item.p-highlight {
987
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.45) 0%, rgba(0, 137, 63, 0.28) 100%) !important;
988
+ background-color: #16273d !important; color: #ffffff !important;
989
+ }
990
+ // chips inside the multiselect label
991
+ .p-multiselect .p-multiselect-token {
992
+ background: rgba(12, 83, 164, 0.30) !important; color: #e7edf5 !important; border: 1px solid rgba(97, 175, 239, 0.30);
993
+ }
994
+
995
+ // ===== AutoComplete — control + panel + selection (was grey/maroon). =====
996
+ .p-autocomplete .p-inputtext { background: #141c29 !important; border: 1px solid rgba(97, 175, 239, 0.30) !important; color: #d7dae0 !important; }
997
+ .p-autocomplete .p-inputtext:enabled:focus { border-color: rgba(97, 175, 239, 0.85) !important; box-shadow: 0 0 0 0.15rem rgba(97, 175, 239, 0.25) !important; }
998
+ .p-autocomplete-panel { background: #131c29 !important; border: 1px solid rgba(97, 175, 239, 0.20) !important; }
999
+ .p-autocomplete-panel .p-autocomplete-item { color: #d7dae0 !important; }
1000
+ .p-autocomplete-panel .p-autocomplete-item:not(.p-highlight):hover { background: rgba(97, 175, 239, 0.12) !important; color: #ffffff !important; }
1001
+ .p-autocomplete-panel .p-autocomplete-item.p-highlight {
1002
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.45) 0%, rgba(0, 137, 63, 0.28) 100%) !important;
1003
+ background-color: #16273d !important; color: #ffffff !important;
1004
+ }
1005
+
1006
+ // ===== ProgressBar — brand blue->green gradient fill (was flat default). =====
1007
+ .p-progressbar { background: #16202e !important; border: 1px solid rgba(97, 175, 239, 0.18) !important; border-radius: 6px; }
1008
+ .p-progressbar .p-progressbar-value {
1009
+ background-color: #0C53A4 !important;
1010
+ background-image: linear-gradient(90deg, #0C53A4 0%, #0a6a5f 55%, #00893F 100%) !important;
1011
+ }
1012
+ .p-progressbar .p-progressbar-label { color: #ffffff !important; font-weight: 600; }
1013
+
1014
+ // ===== FileUpload — brand buttons + brand-navy content (was grey + maroon primary). =====
1015
+ .p-fileupload .p-fileupload-buttonbar {
1016
+ background: #1b2636 !important; border: 1px solid rgba(97, 175, 239, 0.18) !important;
1017
+ border-bottom: 0 !important;
1018
+ }
1019
+ .p-fileupload .p-fileupload-content { background: #141c29 !important; border: 1px solid rgba(97, 175, 239, 0.18) !important; color: #d7dae0 !important; }
1020
+ .p-fileupload .p-fileupload-buttonbar .p-button {
1021
+ background-color: #0C53A4 !important;
1022
+ background-image: linear-gradient(135deg, #0C53A4 0%, #0a6a5f 55%, #00893F 100%) !important;
1023
+ border: 1px solid rgba(97, 175, 239, 0.45) !important; color: #ffffff !important;
1024
+ }
1025
+ .p-fileupload .p-fileupload-buttonbar .p-button:enabled:hover { filter: brightness(1.08); }
1026
+ .p-fileupload .p-fileupload-row > div { color: #d7dae0 !important; }
1027
+
1028
+ // ===== Column filter (inline) — its input follows the brand inputtext; menu/overlay = dropdown panel. =====
1029
+ .p-columnfilter .p-column-filter-menu-button,
1030
+ .p-columnfilter .p-column-filter-clear-button { color: #9fb3cc !important; }
1031
+ .p-columnfilter .p-column-filter-menu-button:hover { background: rgba(97, 175, 239, 0.12) !important; color: #ffffff !important; }
1032
+ .p-column-filter-overlay { background: #131c29 !important; border: 1px solid rgba(97, 175, 239, 0.20) !important; color: #d7dae0 !important; }
1033
+ .p-column-filter-overlay .p-column-filter-row-item:not(.p-highlight):hover { background: rgba(97, 175, 239, 0.12) !important; }
1034
+ .p-column-filter-overlay .p-column-filter-row-item.p-highlight {
1035
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.45) 0%, rgba(0, 137, 63, 0.28) 100%) !important; color: #ffffff !important;
1036
+ }
1037
+
1038
+ // ===== Sortable column — kill the theme's maroon hover/sorted/focus states,
1039
+ // use brand-blue tints instead. =====
1040
+ .p-datatable .p-sortable-column:not(.p-highlight):hover,
1041
+ .p-treetable .p-sortable-column:not(.p-highlight):hover {
1042
+ background: rgba(12, 83, 164, 0.22) !important;
1043
+ color: #ffffff !important;
1044
+ }
1045
+ .p-datatable .p-sortable-column.p-highlight,
1046
+ .p-treetable .p-sortable-column.p-highlight {
1047
+ background: rgba(12, 83, 164, 0.30) !important;
1048
+ color: #ffffff !important;
1049
+ }
1050
+ .p-datatable .p-sortable-column.p-highlight:hover,
1051
+ .p-treetable .p-sortable-column.p-highlight:hover {
1052
+ background: rgba(12, 83, 164, 0.38) !important;
1053
+ }
1054
+ .p-datatable .p-sortable-column:focus,
1055
+ .p-treetable .p-sortable-column:focus {
1056
+ box-shadow: inset 0 0 0 0.15rem rgba(97, 175, 239, 0.35) !important;
1057
+ outline: 0 none !important;
1058
+ }
1059
+
1060
+ // ===== Sort icon — neutral, brand-blue when active (was theme default). =====
1061
+ .p-sortable-column .p-sortable-column-icon { color: #7f93ad !important; }
1062
+ .p-sortable-column.p-highlight .p-sortable-column-icon,
1063
+ .p-sortable-column .p-sortable-column-icon.pi-sort-amount-up-alt,
1064
+ .p-sortable-column .p-sortable-column-icon.pi-sort-amount-down { color: #61AFEF !important; }
1065
+
1066
+ // =====================================================================
1067
+ // LIGHT THEME — PrimeNG component overrides (white surfaces + brand accents).
1068
+ // =====================================================================
1069
+ html.LIGHT {
1070
+ // Base text color for primeng components (theme.css defaults them to grey #b0b0b0 — too faint on white).
1071
+ .p-component, .p-inputtext, .p-dropdown, .p-dropdown-label, .p-dropdown-item,
1072
+ .p-treenode-content, .p-datatable, .p-treetable, .p-multiselect, .p-listbox,
1073
+ .p-checkbox-label, .p-tabview, .p-paginator, .p-tree { color: #2b3340; }
1074
+
1075
+ // Paginator footer — light surface + brand-blue controls (was flat grey).
1076
+ .p-paginator {
1077
+ background: #f3f7fc !important;
1078
+ border-top: 1px solid rgba(12, 83, 164, 0.18) !important;
1079
+ color: #4a5563 !important;
1080
+ }
1081
+ .p-paginator .p-paginator-first, .p-paginator .p-paginator-prev,
1082
+ .p-paginator .p-paginator-next, .p-paginator .p-paginator-last { color: #0C53A4 !important; }
1083
+ .p-paginator .p-paginator-first:not(.p-disabled):not(.p-highlight):hover,
1084
+ .p-paginator .p-paginator-prev:not(.p-disabled):not(.p-highlight):hover,
1085
+ .p-paginator .p-paginator-next:not(.p-disabled):not(.p-highlight):hover,
1086
+ .p-paginator .p-paginator-last:not(.p-disabled):not(.p-highlight):hover,
1087
+ .p-paginator .p-paginator-pages .p-paginator-page:not(.p-highlight):hover {
1088
+ color: #0C53A4 !important;
1089
+ background: rgba(12, 83, 164, 0.10) !important;
1090
+ }
1091
+ .p-paginator .p-paginator-pages .p-paginator-page.p-highlight {
1092
+ background: #0C53A4 !important;
1093
+ color: #ffffff !important;
1094
+ border-color: #0C53A4 !important;
1095
+ }
1096
+ .p-paginator .p-dropdown {
1097
+ background: #ffffff !important;
1098
+ border: 1px solid rgba(12, 83, 164, 0.25) !important;
1099
+ }
1100
+ .p-paginator .p-dropdown .p-dropdown-label { color: #2b3340 !important; }
1101
+ .p-paginator .p-dropdown .p-dropdown-trigger { color: #0C53A4 !important; }
1102
+ .p-paginator .p-dropdown:not(.p-disabled):hover { border-color: rgba(12, 83, 164, 0.5) !important; }
1103
+ .p-component .p-disabled, .p-disabled { color: #9aa3b0; }
1104
+
1105
+ // ===== Calendar / date picker — light brand panel (was grey/maroon) =====
1106
+ .p-datepicker:not(.p-datepicker-inline),
1107
+ .p-datepicker {
1108
+ background: #ffffff !important;
1109
+ color: #2b3340 !important;
1110
+ border: 1px solid rgba(12, 83, 164, 0.20) !important;
1111
+ }
1112
+ .p-datepicker .p-datepicker-header {
1113
+ background: #f3f7fc !important;
1114
+ color: #14233a !important;
1115
+ border-bottom: 1px solid rgba(12, 83, 164, 0.15) !important;
1116
+ }
1117
+ .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-month,
1118
+ .p-datepicker .p-datepicker-header .p-datepicker-title .p-datepicker-year { color: #14233a !important; }
1119
+ .p-datepicker .p-datepicker-header .p-datepicker-prev,
1120
+ .p-datepicker .p-datepicker-header .p-datepicker-next { color: #5a6a82 !important; }
1121
+ .p-datepicker .p-datepicker-header .p-datepicker-prev:enabled:hover,
1122
+ .p-datepicker .p-datepicker-header .p-datepicker-next:enabled:hover {
1123
+ color: #0C53A4 !important; background: rgba(12, 83, 164, 0.08) !important;
1124
+ }
1125
+ .p-datepicker table th > span { color: #5a6a82 !important; }
1126
+ .p-datepicker table td > span { color: #2b3340 !important; }
1127
+ .p-datepicker:not(.p-disabled) table td span:not(.p-highlight):not(.p-disabled):hover {
1128
+ color: #14233a !important; background: rgba(12, 83, 164, 0.08) !important;
1129
+ }
1130
+ .p-datepicker table td.p-datepicker-today > span {
1131
+ background: rgba(12, 83, 164, 0.10) !important; color: #0C53A4 !important;
1132
+ border: 1px solid rgba(12, 83, 164, 0.30) !important;
1133
+ }
1134
+ .p-datepicker table td > span.p-highlight {
1135
+ background-image: linear-gradient(135deg, #0C53A4 0%, #00893F 100%) !important;
1136
+ color: #ffffff !important;
1137
+ }
1138
+ .p-datepicker .p-datepicker-buttonbar { border-top: 1px solid rgba(12, 83, 164, 0.12) !important; }
1139
+ .p-datepicker .p-datepicker-buttonbar .p-button.p-button-text { color: #0C53A4 !important; }
1140
+ .p-calendar .p-datepicker-trigger.p-button {
1141
+ background-color: #0C53A4 !important;
1142
+ background-image: linear-gradient(135deg, #0C53A4 0%, #00893F 100%) !important;
1143
+ border: 1px solid rgba(12, 83, 164, 0.45) !important;
1144
+ color: #ffffff !important;
1145
+ }
1146
+ // Time picker (light) — tighter padding + brand accents on white.
1147
+ .p-datepicker .p-timepicker {
1148
+ border-top: 1px solid rgba(12, 83, 164, 0.12) !important;
1149
+ }
1150
+ .p-datepicker .p-timepicker span { color: #14233a !important; }
1151
+ .p-datepicker .p-timepicker button { color: #5a6a82 !important; }
1152
+ .p-datepicker .p-timepicker button:enabled:hover {
1153
+ color: #0C53A4 !important; background: rgba(12, 83, 164, 0.08) !important;
1154
+ }
1155
+
1156
+ // ===== Log-table summary chips — light brand-tinted by category =====
1157
+ .p-chip.bg-danger { background-color: #0C53A4 !important; color: #ffffff !important; } // instances
1158
+ .p-chip.bg-warning { background-color: #0a7d6f !important; color: #ffffff !important; } // databases
1159
+ .p-chip.bg-info { background-color: #1d8a4e !important; color: #ffffff !important; } // collections
1160
+ .p-chip.bg-light { background-color: #e7eef7 !important; color: #243446 !important; border: 1px solid rgba(12, 83, 164, 0.18); } // apis
1161
+ .p-chip.bg-danger.text-dark,
1162
+ .p-chip.bg-warning.text-dark,
1163
+ .p-chip.bg-info.text-dark { color: #ffffff !important; }
1164
+ .p-chip.bg-light.text-dark { color: #243446 !important; }
1165
+
1166
+ // Grids / tables
1167
+ .p-datatable { background: #ffffff; }
1168
+ // Caption/header area — light brand tint instead of the legacy dark grey from theme.css,
1169
+ // so a dropdown inside the caption no longer sits on a dark band (double-border look).
1170
+ .p-datatable .p-datatable-header {
1171
+ background: #f3f7fc;
1172
+ color: #1b2330;
1173
+ border: 0 none;
1174
+ border-bottom: 1px solid rgba(12, 83, 164, 0.15);
1175
+ }
1176
+ .p-datatable .p-datatable-thead > tr > th { background-color: #eef3fa !important; color: #1b2330; border-bottom: 1px solid rgba(12, 83, 164, 0.15); }
1177
+ .p-datatable .p-datatable-tbody > tr { background: #ffffff; color: #2b3340; }
1178
+ .p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even) { background-color: #f3f7fc; }
1179
+ .p-datatable .p-datatable-tbody > tr > td { border-top: 0.5px solid rgba(12, 83, 164, 0.10); }
1180
+ .p-datatable .p-datatable-tbody > tr.p-highlight,
1181
+ .p-datatable .p-datatable-tbody > tr.p-selectable-row.p-highlight,
1182
+ .p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(even).p-highlight,
1183
+ .p-datatable.p-datatable-striped .p-datatable-tbody > tr:nth-child(odd).p-highlight {
1184
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.28) 0%, rgba(0, 137, 63, 0.18) 100%) !important;
1185
+ background-color: #dbe8fa !important; color: #0b2e5c !important; box-shadow: none !important;
1186
+ }
1187
+ .p-datatable .p-datatable-tbody > tr:not(.p-highlight):hover,
1188
+ .p-datatable.p-datatable-hoverable-rows .p-datatable-tbody > tr:not(.p-highlight):hover {
1189
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.08) 0%, rgba(0, 137, 63, 0.05) 100%) !important;
1190
+ background-color: #eef4fb !important; color: #14233a !important;
1191
+ }
1192
+ .p-datatable .p-datatable-tbody > tr:focus { outline: 0.15rem solid rgba(12, 83, 164, 0.4) !important; outline-offset: -0.15rem !important; }
1193
+
1194
+ // TreeTable
1195
+ .p-treetable .p-treetable-thead > tr > th { background: #eef3fa !important; color: #1b2330; border-color: rgba(12,83,164,0.15); }
1196
+ .p-treetable .p-treetable-tbody > tr { background: #ffffff; color: #2b3340; }
1197
+ .p-treetable .p-treetable-tbody > tr.p-highlight {
1198
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.28) 0%, rgba(0, 137, 63, 0.18) 100%) !important;
1199
+ background-color: #dbe8fa !important; color: #0b2e5c !important; box-shadow: none !important;
1200
+ }
1201
+ .p-treetable .p-treetable-tbody > tr:not(.p-highlight):hover { background-color: #eef4fb !important; color: #14233a !important; }
1202
+
1203
+ // Tree
1204
+ .p-tree { background: #ffffff; color: #2b3340; }
1205
+ .p-tree .p-treenode-content { color: #2b3340 !important; }
1206
+ p-treenode:nth-of-type(even) > .p-treenode > .p-treenode-content:not(.p-highlight) { background-color: #f3f7fc !important; }
1207
+ p-treenode:nth-of-type(odd) > .p-treenode > .p-treenode-content:not(.p-highlight) { background-color: transparent !important; }
1208
+ .p-tree .p-tree-container .p-treenode .p-treenode-content.p-treenode-selectable:not(.p-highlight):hover,
1209
+ .p-tree .p-tree-container .p-treenode .p-treenode-content:not(.p-highlight):hover {
1210
+ background-color: #eef4fb !important; color: #14233a !important;
1211
+ }
1212
+ .p-tree .p-tree-container .p-treenode .p-treenode-content.p-highlight {
1213
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.28) 0%, rgba(0, 137, 63, 0.18) 100%) !important;
1214
+ background-color: #dbe8fa !important; color: #0b2e5c !important; box-shadow: none !important;
1215
+ }
1216
+
1217
+ // Dropdown control + panel
1218
+ .p-dropdown, .p-dropdown.p-input-filled, .p-input-filled .p-dropdown,
1219
+ .p-dropdown.p-input-filled:not(.p-disabled):hover,
1220
+ .p-input-filled .p-dropdown:not(.p-disabled):hover,
1221
+ .p-dropdown.p-input-filled:not(.p-disabled).p-focus,
1222
+ .p-input-filled .p-dropdown:not(.p-disabled).p-focus,
1223
+ .p-dropdown:not(.p-disabled).p-focus {
1224
+ background: #ffffff !important; background-image: none !important;
1225
+ border: 1px solid rgba(12, 83, 164, 0.25) !important;
1226
+ color: #2b3340 !important;
1227
+ }
1228
+ .p-dropdown .p-dropdown-label { color: #2b3340 !important; }
1229
+ // Lighter overlay shadow in light mode (the global Material-elevation
1230
+ // shadow was too heavy a halo on the white panels).
1231
+ .p-component.p-overlay {
1232
+ box-shadow: 0 6px 18px rgba(12, 30, 60, 0.12) !important;
1233
+ }
1234
+ .p-dropdown-panel { background: #ffffff !important; border: 1px solid rgba(12, 83, 164, 0.20) !important; }
1235
+ .p-dropdown-panel .p-dropdown-header { background: #eef3fa !important; }
1236
+ .p-dropdown-panel .p-dropdown-items .p-dropdown-item { color: #2b3340; }
1237
+ .p-dropdown-panel .p-dropdown-items .p-dropdown-item.p-highlight {
1238
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.16) 0%, rgba(0, 137, 63, 0.10) 100%) !important;
1239
+ background-color: #eaf1fb !important; color: #14233a !important;
1240
+ }
1241
+ .p-dropdown-panel .p-dropdown-items .p-dropdown-item:not(.p-highlight):not(.p-disabled):hover {
1242
+ background-color: #eef4fb !important; color: #14233a !important;
1243
+ }
1244
+ .p-dropdown-panel .p-dropdown-header .p-dropdown-filter {
1245
+ background: #ffffff !important; background-image: none !important;
1246
+ border: 1px solid rgba(12, 83, 164, 0.25) !important; color: #2b3340 !important;
1247
+ }
1248
+
1249
+ // p-inputtext
1250
+ .p-inputtext:not(.p-dropdown-label) {
1251
+ background: #ffffff !important; background-image: none !important;
1252
+ border: 1px solid rgba(12, 83, 164, 0.25) !important; color: #2b3340 !important;
1253
+ }
1254
+ .p-inputtext:not(.p-dropdown-label):enabled:focus {
1255
+ border-color: rgba(12, 83, 164, 0.6) !important; box-shadow: 0 0 0 0.15rem rgba(12, 83, 164, 0.18) !important;
1256
+ }
1257
+
1258
+ // Checkbox — white box + brand-blue border; brand gradient + white check when selected.
1259
+ .p-checkbox .p-checkbox-box {
1260
+ background: #ffffff !important;
1261
+ border: 1px solid rgba(12, 83, 164, 0.35) !important;
1262
+ color: #ffffff !important;
1263
+ }
1264
+ .p-checkbox .p-checkbox-box.p-highlight,
1265
+ .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box.p-highlight:hover,
1266
+ .p-input-filled .p-checkbox .p-checkbox-box.p-highlight {
1267
+ background-image: linear-gradient(135deg, #0C53A4 0%, #0a6a5f 55%, #00893F 100%) !important;
1268
+ background-color: #0C53A4 !important;
1269
+ border-color: rgba(12, 83, 164, 0.9) !important;
1270
+ }
1271
+ .p-checkbox .p-checkbox-box.p-highlight .p-checkbox-icon { color: #ffffff !important; }
1272
+ // Brand-blue focus ring (not the theme's dark-red) + hover border.
1273
+ .p-checkbox .p-checkbox-box.p-focus {
1274
+ outline: 0 none !important;
1275
+ box-shadow: 0 0 0 0.15rem rgba(12, 83, 164, 0.30) !important;
1276
+ border-color: rgba(12, 83, 164, 0.6) !important;
1277
+ }
1278
+ .p-checkbox:not(.p-checkbox-disabled) .p-checkbox-box:hover {
1279
+ border-color: rgba(12, 83, 164, 0.6) !important;
1280
+ }
1281
+
1282
+ // InputSwitch (light) — light track + brand-blue knob (off), brand gradient + white knob (on).
1283
+ .p-inputswitch .p-inputswitch-slider { background: #d4dce6 !important; border: 1px solid rgba(12, 83, 164, 0.25); }
1284
+ .p-inputswitch .p-inputswitch-slider::before { background: #ffffff !important; }
1285
+ .p-inputswitch:not(.p-disabled):hover .p-inputswitch-slider { background: #c6d1de !important; }
1286
+ .p-inputswitch.p-inputswitch-checked .p-inputswitch-slider,
1287
+ .p-inputswitch.p-inputswitch-checked:not(.p-disabled):hover .p-inputswitch-slider {
1288
+ background-image: linear-gradient(135deg, #0C53A4 0%, #00893F 100%) !important; background-color: #0C53A4 !important;
1289
+ }
1290
+ .p-inputswitch.p-inputswitch-checked .p-inputswitch-slider::before { background: #ffffff !important; }
1291
+
1292
+ // Tabview — consistent brand-blue borders (match dropdown/input @ 0.25 / 0.18).
1293
+ .p-tabview .p-tabview-nav { border-color: rgba(12, 83, 164, 0.18) !important; }
1294
+ .p-tabview .p-tabview-nav li .p-tabview-nav-link {
1295
+ background: #f3f7fc !important; color: #4a5563 !important;
1296
+ border: 1px solid rgba(12, 83, 164, 0.18) !important;
1297
+ border-bottom-color: rgba(12, 83, 164, 0.18) !important;
1298
+ }
1299
+ .p-tabview .p-tabview-nav li:not(.p-highlight):not(.p-disabled):hover .p-tabview-nav-link {
1300
+ background: #e6eef9 !important; border-color: rgba(12, 83, 164, 0.30) !important; color: #0C53A4 !important;
1301
+ }
1302
+ .p-tabview .p-tabview-nav li.p-highlight .p-tabview-nav-link {
1303
+ background-image: linear-gradient(180deg, rgba(12,83,164,0.14) 0%, rgba(0,137,63,0.08) 100%) !important;
1304
+ background-color: #eaf1fb !important; color: #0C53A4 !important;
1305
+ border: 1px solid rgba(12, 83, 164, 0.30) !important;
1306
+ border-bottom-color: transparent !important;
1307
+ //box-shadow: inset 0 2px 0 #0C53A4 !important;
1308
+ }
1309
+ // dropdown trigger seam: keep the trigger border-less so the control reads as one bordered box
1310
+ .p-dropdown .p-dropdown-trigger { border: 0 none !important; }
1311
+
1312
+ // Splitter
1313
+ .p-splitter { background: #ffffff !important; border: 1px solid rgba(12, 83, 164, 0.18) !important; }
1314
+
1315
+ // Tooltip
1316
+ .p-tooltip .p-tooltip-text { background-color: #1b2636 !important; background-image: linear-gradient(135deg, #1b3553 0%, #133024 100%) !important; color: #fff !important; }
1317
+
1318
+ // Toast (light glass) — white glass + per-severity accent gradient + colored icon/progress bar.
1319
+ .p-toast .p-toast-message {
1320
+ background: rgba(255, 255, 255, 0.92) !important;
1321
+ backdrop-filter: blur(10px);
1322
+ border: 1px solid rgba(12, 83, 164, 0.22) !important;
1323
+ border-left-width: 4px !important;
1324
+ border-radius: 10px;
1325
+ box-shadow: 0 8px 24px rgba(12, 30, 60, 0.14) !important;
1326
+ color: #2b3340 !important;
1327
+ }
1328
+ .p-toast .p-toast-summary { color: #14233a !important; }
1329
+ .p-toast .p-toast-detail { color: #3a4452 !important; }
1330
+ .p-toast .p-toast-icon-close { color: #4a5563 !important; }
1331
+ // per-severity: left accent border + icon + progress bar
1332
+ .p-toast .p-toast-message-info { border-left-color: #0C53A4 !important; background-image: linear-gradient(135deg, rgba(12,83,164,0.10) 0%, rgba(255,255,255,0) 60%) !important; }
1333
+ .p-toast .p-toast-message-info .p-toast-message-icon { color: #0C53A4 !important; }
1334
+ .p-toast .p-toast-message-success { border-left-color: #00893F !important; background-image: linear-gradient(135deg, rgba(0,137,63,0.10) 0%, rgba(255,255,255,0) 60%) !important; }
1335
+ .p-toast .p-toast-message-success .p-toast-message-icon { color: #00893F !important; }
1336
+ .p-toast .p-toast-message-warn { border-left-color: #d99a07 !important; background-image: linear-gradient(135deg, rgba(217,154,7,0.12) 0%, rgba(255,255,255,0) 60%) !important; }
1337
+ .p-toast .p-toast-message-warn .p-toast-message-icon { color: #d99a07 !important; }
1338
+ .p-toast .p-toast-message-error { border-left-color: #DC2626 !important; background-image: linear-gradient(135deg, rgba(220,38,38,0.10) 0%, rgba(255,255,255,0) 60%) !important; }
1339
+ .p-toast .p-toast-message-error .p-toast-message-icon { color: #DC2626 !important; }
1340
+
1341
+ // Confirm dialog
1342
+ .p-dialog .p-dialog-content, .p-dialog .p-dialog-footer { background: #ffffff !important; color: #2b3340 !important; }
1343
+ .p-dialog .p-dialog-footer { border-top: 1px solid rgba(12, 83, 164, 0.15) !important; }
1344
+ .p-dialog .p-dialog-header { background-color: #eef3fa !important; background-image: linear-gradient(90deg, rgba(12,83,164,0.12) 0%, rgba(0,137,63,0.08) 100%) !important; color: #14233a !important; border-bottom: 1px solid rgba(12,83,164,0.18) !important; }
1345
+ .p-confirm-dialog-reject {
1346
+ background: #e3eaf3 !important;
1347
+ background-image: linear-gradient(180deg, #eef2f7 0%, #dde5ef 100%) !important;
1348
+ color: #1b2330 !important;
1349
+ border: 1px solid rgba(12, 83, 164, 0.35) !important;
1350
+ }
1351
+ .p-confirm-dialog-reject:hover, .p-confirm-dialog-reject:focus {
1352
+ background-image: linear-gradient(180deg, #e3eaf3 0%, #d2ddec 100%) !important;
1353
+ border-color: rgba(12, 83, 164, 0.5) !important;
1354
+ color: #14233a !important;
1355
+ }
1356
+ // Kill the theme's red focus ring on the auto-focused reject button (light).
1357
+ .p-confirm-dialog-reject:focus, .p-confirm-dialog-reject.p-focus, .p-confirm-dialog-reject:enabled:focus {
1358
+ box-shadow: 0 0 0 0.15rem rgba(12, 83, 164, 0.20) !important;
1359
+ outline: 0 none !important;
1360
+ }
1361
+ // No-button label + icon must be dark/visible on the light neutral bg (high specificity to beat primeng/white-flip).
1362
+ .p-confirm-dialog .p-confirm-dialog-reject.p-button,
1363
+ .p-confirm-dialog .p-confirm-dialog-reject .p-button-label,
1364
+ .p-confirm-dialog .p-confirm-dialog-reject .p-button-icon,
1365
+ .p-confirm-dialog .p-confirm-dialog-reject span.p-button-icon,
1366
+ .p-confirm-dialog .p-confirm-dialog-reject i,
1367
+ button.p-confirm-dialog-reject .p-button-icon,
1368
+ button.p-confirm-dialog-reject i { color: #1b2330 !important; }
1369
+ .p-confirm-dialog-accept { background-color: #0C53A4 !important; background-image: linear-gradient(135deg, #0C53A4 0%, #0a6a5f 55%, #00893F 100%) !important; color: #fff !important; border: 1px solid rgba(12,83,164,0.45) !important; }
1370
+ // Warning icon — deeper amber for contrast on the white dialog.
1371
+ .p-confirm-dialog .p-confirm-dialog-icon { color: #d99a07 !important; filter: drop-shadow(0 0 5px rgba(217, 154, 7, 0.35)); }
1372
+
1373
+ // progress spinner overlay
1374
+ // Light loading overlay — flat translucent white (no gradient). The logo
1375
+ // rocket spinner (defined globally above) carries over.
1376
+ p-progressSpinner {
1377
+ background-color: rgba(255, 255, 255, 0.6) !important;
1378
+ backdrop-filter: blur(2px) !important;
1379
+ -webkit-backdrop-filter: blur(2px) !important;
1380
+ }
1381
+
1382
+ // ===== Radio button (light) — white box, brand-blue checked dot. =====
1383
+ .p-radiobutton .p-radiobutton-box { background: #ffffff !important; border: 1px solid rgba(12, 83, 164, 0.30) !important; }
1384
+ .p-radiobutton .p-radiobutton-box.p-highlight,
1385
+ .p-radiobutton:not(.p-radiobutton-disabled) .p-radiobutton-box.p-highlight:hover {
1386
+ border-color: rgba(12, 83, 164, 0.6) !important;
1387
+ background-image: linear-gradient(135deg, #0C53A4 0%, #00893F 100%) !important;
1388
+ background-color: #0C53A4 !important;
1389
+ }
1390
+ .p-radiobutton .p-radiobutton-box .p-radiobutton-icon { background-color: #ffffff !important; }
1391
+ .p-radiobutton:not(.p-radiobutton-disabled) .p-radiobutton-box:not(.p-highlight):hover { border-color: rgba(12, 83, 164, 0.5) !important; }
1392
+
1393
+ // ===== MultiSelect (light) — white control + panel, brand selection. =====
1394
+ .p-multiselect { background: #ffffff !important; border: 1px solid rgba(12, 83, 164, 0.30) !important; }
1395
+ .p-multiselect:not(.p-disabled):hover { border-color: rgba(12, 83, 164, 0.5) !important; }
1396
+ .p-multiselect:not(.p-disabled).p-focus { border-color: rgba(12, 83, 164, 0.7) !important; box-shadow: 0 0 0 0.15rem rgba(12, 83, 164, 0.18) !important; }
1397
+ .p-multiselect .p-multiselect-label { color: #2b3340 !important; }
1398
+ .p-multiselect .p-multiselect-trigger { color: #5a6a82 !important; }
1399
+ .p-multiselect-panel { background: #ffffff !important; border: 1px solid rgba(12, 83, 164, 0.20) !important; }
1400
+ .p-multiselect-panel .p-multiselect-header { background: #eef3fa !important; border-bottom: 1px solid rgba(12, 83, 164, 0.15) !important; }
1401
+ .p-multiselect-panel .p-multiselect-header .p-multiselect-filter-container .p-inputtext { background: #ffffff !important; border: 1px solid rgba(12, 83, 164, 0.30) !important; color: #2b3340 !important; }
1402
+ .p-multiselect-panel .p-multiselect-items .p-multiselect-item { color: #2b3340 !important; }
1403
+ .p-multiselect-panel .p-multiselect-items .p-multiselect-item:not(.p-highlight):not(.p-disabled):hover { background: rgba(12, 83, 164, 0.08) !important; color: #14233a !important; }
1404
+ .p-multiselect-panel .p-multiselect-items .p-multiselect-item.p-highlight {
1405
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.28) 0%, rgba(0, 137, 63, 0.18) 100%) !important;
1406
+ background-color: #dbe8fa !important; color: #0b2e5c !important;
1407
+ }
1408
+ .p-multiselect .p-multiselect-token { background: rgba(12, 83, 164, 0.12) !important; color: #14233a !important; border: 1px solid rgba(12, 83, 164, 0.25); }
1409
+
1410
+ // ===== AutoComplete (light). =====
1411
+ .p-autocomplete .p-inputtext { background: #ffffff !important; border: 1px solid rgba(12, 83, 164, 0.30) !important; color: #2b3340 !important; }
1412
+ .p-autocomplete .p-inputtext:enabled:focus { border-color: rgba(12, 83, 164, 0.7) !important; box-shadow: 0 0 0 0.15rem rgba(12, 83, 164, 0.18) !important; }
1413
+ .p-autocomplete-panel { background: #ffffff !important; border: 1px solid rgba(12, 83, 164, 0.20) !important; }
1414
+ .p-autocomplete-panel .p-autocomplete-item { color: #2b3340 !important; }
1415
+ .p-autocomplete-panel .p-autocomplete-item:not(.p-highlight):hover { background: rgba(12, 83, 164, 0.08) !important; color: #14233a !important; }
1416
+ .p-autocomplete-panel .p-autocomplete-item.p-highlight {
1417
+ background-image: linear-gradient(90deg, rgba(12, 83, 164, 0.28) 0%, rgba(0, 137, 63, 0.18) 100%) !important;
1418
+ background-color: #dbe8fa !important; color: #0b2e5c !important;
1419
+ }
1420
+
1421
+ // ===== ProgressBar (light) — light track, brand gradient fill. =====
1422
+ .p-progressbar { background: #e6eef8 !important; border: 1px solid rgba(12, 83, 164, 0.15) !important; }
1423
+ .p-progressbar .p-progressbar-value {
1424
+ background-color: #0C53A4 !important;
1425
+ background-image: linear-gradient(90deg, #0C53A4 0%, #0a6a5f 55%, #00893F 100%) !important;
1426
+ }
1427
+ .p-progressbar .p-progressbar-label { color: #ffffff !important; }
1428
+
1429
+ // ===== FileUpload (light). =====
1430
+ .p-fileupload .p-fileupload-buttonbar { border-bottom: 0 !important; }
1431
+ .p-fileupload .p-fileupload-content { background: #ffffff !important; border: 1px solid rgba(12, 83, 164, 0.15) !important; color: #2b3340 !important; }
1432
+ .p-fileupload .p-fileupload-buttonbar .p-button {
1433
+ background-color: #0C53A4 !important;
1434
+ background-image: linear-gradient(135deg, #0C53A4 0%, #0a6a5f 55%, #00893F 100%) !important;
1435
+ border: 1px solid rgba(12, 83, 164, 0.45) !important; color: #ffffff !important;
1436
+ }
1437
+ .p-fileupload .p-fileupload-row > div { color: #2b3340 !important; }
1438
+
1439
+ // ===== Column filter (light). =====
1440
+ .p-columnfilter .p-column-filter-menu-button, .p-columnfilter .p-column-filter-clear-button { color: #5a6a82 !important; }
1441
+ .p-columnfilter .p-column-filter-menu-button:hover { background: rgba(12, 83, 164, 0.08) !important; color: #0C53A4 !important; }
1442
+ .p-column-filter-overlay { background: #ffffff !important; border: 1px solid rgba(12, 83, 164, 0.20) !important; color: #2b3340 !important; }
1443
+
1444
+ // ===== Sortable column (light) — brand-blue tints, no maroon. =====
1445
+ .p-datatable .p-sortable-column:not(.p-highlight):hover,
1446
+ .p-treetable .p-sortable-column:not(.p-highlight):hover {
1447
+ background: rgba(12, 83, 164, 0.10) !important;
1448
+ color: #14233a !important;
1449
+ }
1450
+ .p-datatable .p-sortable-column.p-highlight,
1451
+ .p-treetable .p-sortable-column.p-highlight {
1452
+ background: rgba(12, 83, 164, 0.14) !important;
1453
+ color: #0C53A4 !important;
1454
+ }
1455
+ .p-datatable .p-sortable-column.p-highlight:hover,
1456
+ .p-treetable .p-sortable-column.p-highlight:hover {
1457
+ background: rgba(12, 83, 164, 0.20) !important;
1458
+ }
1459
+ .p-datatable .p-sortable-column:focus,
1460
+ .p-treetable .p-sortable-column:focus {
1461
+ box-shadow: inset 0 0 0 0.15rem rgba(12, 83, 164, 0.30) !important;
1462
+ outline: 0 none !important;
1463
+ }
1464
+
1465
+ // ===== Sort icon (light). =====
1466
+ .p-sortable-column .p-sortable-column-icon { color: #7488a3 !important; }
1467
+ .p-sortable-column.p-highlight .p-sortable-column-icon { color: #0C53A4 !important; }
1468
+
1469
+ // ===== Text/plain/rounded buttons (row toggler) — transparent, brand-blue (light). =====
1470
+ .p-button.p-button-text,
1471
+ .p-button.p-button-plain,
1472
+ .p-button.p-button-rounded.p-button-text,
1473
+ .p-row-toggler.p-button {
1474
+ background: transparent !important; background-image: none !important;
1475
+ border-color: transparent !important; box-shadow: none !important; color: #0C53A4 !important;
1476
+ }
1477
+ .p-button.p-button-text:enabled:hover,
1478
+ .p-button.p-button-plain:enabled:hover,
1479
+ .p-row-toggler.p-button:enabled:hover {
1480
+ background: rgba(12, 83, 164, 0.10) !important; color: #0C53A4 !important;
1481
+ }
1482
+ .p-button.p-button-plain { color: #5a6a82 !important; }
1483
+
1484
+ // ===== API dropdown popup (light) — softer frame + lighter badge tints =====
1485
+ .api-dd-panel {
1486
+ box-shadow: 0 10px 28px rgba(12, 30, 60, 0.14) !important;
1487
+ border: 1px solid rgba(12, 83, 164, 0.18) !important;
1488
+ }
1489
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .get { background: rgba(38, 180, 127, 0.12); }
1490
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .post { background: rgba(255, 180, 0, 0.14); }
1491
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .put { background: rgba(9, 123, 237, 0.12); }
1492
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .delete { background: rgba(237, 75, 72, 0.12); }
1493
+ .api-dd-panel .p-dropdown-items .p-dropdown-item.p-highlight .get,
1494
+ .api-dd-panel .p-dropdown-items .p-dropdown-item:hover .get { background: rgba(38, 180, 127, 0.18); }
1495
+ .api-dd-panel .p-dropdown-items .p-dropdown-item.p-highlight .post,
1496
+ .api-dd-panel .p-dropdown-items .p-dropdown-item:hover .post { background: rgba(255, 180, 0, 0.20); }
1497
+ .api-dd-panel .p-dropdown-items .p-dropdown-item.p-highlight .put,
1498
+ .api-dd-panel .p-dropdown-items .p-dropdown-item:hover .put { background: rgba(9, 123, 237, 0.18); }
1499
+ .api-dd-panel .p-dropdown-items .p-dropdown-item.p-highlight .delete,
1500
+ .api-dd-panel .p-dropdown-items .p-dropdown-item:hover .delete { background: rgba(237, 75, 72, 0.18); }
1501
+ // category chips — darker text on the white panel
1502
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .api-cat[data-cat="SCHEMA"] {
1503
+ color: #0C53A4; border-color: rgba(12, 83, 164, 0.35); background: rgba(12, 83, 164, 0.08);
1504
+ }
1505
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .api-cat[data-cat="GEN"] {
1506
+ color: #00893F; border-color: rgba(0, 137, 63, 0.35); background: rgba(0, 137, 63, 0.08);
1507
+ }
1508
+ .api-dd-panel .p-dropdown-items .p-dropdown-item .api-cat:not([data-cat="SCHEMA"]):not([data-cat="GEN"]) {
1509
+ color: #5a6a82; border-color: rgba(90, 106, 130, 0.30); background: rgba(90, 106, 130, 0.08);
1510
+ }
1511
+ // selected control (closed dropdown label) — chips + badges on the white control
1512
+ .api-dd-control .p-dropdown-label .get { color: #00893F !important; }
1513
+ .api-dd-control .p-dropdown-label .post { color: #c98a00 !important; }
1514
+ .api-dd-control .p-dropdown-label .put { color: #0C53A4 !important; }
1515
+ .api-dd-control .p-dropdown-label .delete { color: #d9534f !important; }
1516
+ .api-dd-control .p-dropdown-label .api-cat[data-cat="SCHEMA"] {
1517
+ color: #0C53A4 !important; border-color: rgba(12, 83, 164, 0.35); background: rgba(12, 83, 164, 0.08);
1518
+ }
1519
+ .api-dd-control .p-dropdown-label .api-cat[data-cat="GEN"] {
1520
+ color: #00893F !important; border-color: rgba(0, 137, 63, 0.35); background: rgba(0, 137, 63, 0.08);
1521
+ }
1522
+ .api-dd-control .p-dropdown-label .api-cat:not([data-cat="SCHEMA"]):not([data-cat="GEN"]) {
1523
+ color: #5a6a82 !important; border-color: rgba(90, 106, 130, 0.30); background: rgba(90, 106, 130, 0.08);
1524
+ }
1525
+ }