@itsthecsguy/linework 0.0.0-stage → 0.1.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 (223) hide show
  1. package/LICENSE +21 -0
  2. package/NOTICE +11 -0
  3. package/README.md +164 -2
  4. package/assets/drawio/LICENSE +201 -0
  5. package/assets/drawio/VERSION +1 -0
  6. package/assets/drawio/favicon.ico +0 -0
  7. package/assets/drawio/images/1x1.png +0 -0
  8. package/assets/drawio/images/2x2.png +0 -0
  9. package/assets/drawio/images/3x3.png +0 -0
  10. package/assets/drawio/images/ajax-loader.gif +0 -0
  11. package/assets/drawio/images/android-chrome-512x512.png +0 -0
  12. package/assets/drawio/images/apple-touch-icon.png +0 -0
  13. package/assets/drawio/images/aui-wait.gif +0 -0
  14. package/assets/drawio/images/broken.png +0 -0
  15. package/assets/drawio/images/browserconfig.xml +9 -0
  16. package/assets/drawio/images/close.png +0 -0
  17. package/assets/drawio/images/cloud-connector-atlas.png +0 -0
  18. package/assets/drawio/images/collapsed.gif +0 -0
  19. package/assets/drawio/images/delete.png +0 -0
  20. package/assets/drawio/images/document-google-drive-icon-80.png +0 -0
  21. package/assets/drawio/images/draw-search.png +0 -0
  22. package/assets/drawio/images/drawio.svg +19 -0
  23. package/assets/drawio/images/drawlogo-color.svg +50 -0
  24. package/assets/drawio/images/drawlogo-gray.svg +18 -0
  25. package/assets/drawio/images/drawlogo-text-bottom.svg +75 -0
  26. package/assets/drawio/images/drawlogo.svg +18 -0
  27. package/assets/drawio/images/drawlogo128.png +0 -0
  28. package/assets/drawio/images/drawlogo144.png +0 -0
  29. package/assets/drawio/images/drawlogo256.png +0 -0
  30. package/assets/drawio/images/drawlogo48-gray.png +0 -0
  31. package/assets/drawio/images/drawlogo48.png +0 -0
  32. package/assets/drawio/images/drawlogo80.png +0 -0
  33. package/assets/drawio/images/droptarget.png +0 -0
  34. package/assets/drawio/images/edit.gif +0 -0
  35. package/assets/drawio/images/edit16.png +0 -0
  36. package/assets/drawio/images/edit32.png +0 -0
  37. package/assets/drawio/images/edit80.png +0 -0
  38. package/assets/drawio/images/embed-icon.png +0 -0
  39. package/assets/drawio/images/expanded.gif +0 -0
  40. package/assets/drawio/images/facebook.png +0 -0
  41. package/assets/drawio/images/favicon-16x16.png +0 -0
  42. package/assets/drawio/images/favicon-32x32.png +0 -0
  43. package/assets/drawio/images/file.png +0 -0
  44. package/assets/drawio/images/folder.png +0 -0
  45. package/assets/drawio/images/gadget-screenshot.png +0 -0
  46. package/assets/drawio/images/gadget-thumb.png +0 -0
  47. package/assets/drawio/images/github-logo-white.svg +6 -0
  48. package/assets/drawio/images/github-logo.svg +17 -0
  49. package/assets/drawio/images/gitlab-logo-white.svg +1 -0
  50. package/assets/drawio/images/gitlab-logo.svg +1 -0
  51. package/assets/drawio/images/glyphicons_blogger.png +0 -0
  52. package/assets/drawio/images/glyphicons_facebook.png +0 -0
  53. package/assets/drawio/images/glyphicons_github.png +0 -0
  54. package/assets/drawio/images/glyphicons_google.png +0 -0
  55. package/assets/drawio/images/glyphicons_star.png +0 -0
  56. package/assets/drawio/images/glyphicons_twitter.png +0 -0
  57. package/assets/drawio/images/glyphicons_youtube.png +0 -0
  58. package/assets/drawio/images/google-drive-connector-atlas.png +0 -0
  59. package/assets/drawio/images/google-drive-connector-atlas.svg +121 -0
  60. package/assets/drawio/images/google-drive-logo-white.svg +9 -0
  61. package/assets/drawio/images/google-drive-logo.svg +17 -0
  62. package/assets/drawio/images/google-share.png +0 -0
  63. package/assets/drawio/images/icon-192-maskable.png +0 -0
  64. package/assets/drawio/images/icon-192.png +0 -0
  65. package/assets/drawio/images/icon-512-maskable.png +0 -0
  66. package/assets/drawio/images/icon-512.png +0 -0
  67. package/assets/drawio/images/icon-search.svg +21 -0
  68. package/assets/drawio/images/img-hi-res.png +0 -0
  69. package/assets/drawio/images/img-lo-res.png +0 -0
  70. package/assets/drawio/images/list.svg +16 -0
  71. package/assets/drawio/images/locked.png +0 -0
  72. package/assets/drawio/images/log.png +0 -0
  73. package/assets/drawio/images/logo-confluence.png +0 -0
  74. package/assets/drawio/images/logo-flat-small.png +0 -0
  75. package/assets/drawio/images/logo-flat.png +0 -0
  76. package/assets/drawio/images/logo-jira.png +0 -0
  77. package/assets/drawio/images/logo-small.gif +0 -0
  78. package/assets/drawio/images/logo-white.png +0 -0
  79. package/assets/drawio/images/logo.png +0 -0
  80. package/assets/drawio/images/manifest.json +25 -0
  81. package/assets/drawio/images/move.png +0 -0
  82. package/assets/drawio/images/notion-logo-white.svg +1 -0
  83. package/assets/drawio/images/notion-logo.svg +1 -0
  84. package/assets/drawio/images/onedrive-connector-atlas.png +0 -0
  85. package/assets/drawio/images/onedrive-connector-atlas.svg +248 -0
  86. package/assets/drawio/images/onedrive-logo-white.svg +29 -0
  87. package/assets/drawio/images/onedrive-logo.svg +29 -0
  88. package/assets/drawio/images/osa_database.png +0 -0
  89. package/assets/drawio/images/osa_drive-harddisk.png +0 -0
  90. package/assets/drawio/images/plant-uml-atlas.png +0 -0
  91. package/assets/drawio/images/samepage-icon-color.svg +37 -0
  92. package/assets/drawio/images/save.png +0 -0
  93. package/assets/drawio/images/sidebar-android.png +0 -0
  94. package/assets/drawio/images/sidebar-archimate.png +0 -0
  95. package/assets/drawio/images/sidebar-arrows.png +0 -0
  96. package/assets/drawio/images/sidebar-arrows2.png +0 -0
  97. package/assets/drawio/images/sidebar-basic.png +0 -0
  98. package/assets/drawio/images/sidebar-c4.png +0 -0
  99. package/assets/drawio/images/sidebar-cabinets.png +0 -0
  100. package/assets/drawio/images/sidebar-cumulus.png +0 -0
  101. package/assets/drawio/images/sidebar-dfd.png +0 -0
  102. package/assets/drawio/images/sidebar-dynamics365.png +0 -0
  103. package/assets/drawio/images/sidebar-eip.png +0 -0
  104. package/assets/drawio/images/sidebar-er.png +0 -0
  105. package/assets/drawio/images/sidebar-floorplans.png +0 -0
  106. package/assets/drawio/images/sidebar-flowchart.png +0 -0
  107. package/assets/drawio/images/sidebar-gcp3.png +0 -0
  108. package/assets/drawio/images/sidebar-general.png +0 -0
  109. package/assets/drawio/images/sidebar-kubernetes.png +0 -0
  110. package/assets/drawio/images/sidebar-leanmapping.png +0 -0
  111. package/assets/drawio/images/sidebar-mockups.png +0 -0
  112. package/assets/drawio/images/sidebar-network.png +0 -0
  113. package/assets/drawio/images/sidebar-network2.png +0 -0
  114. package/assets/drawio/images/sidebar-openstack.png +0 -0
  115. package/assets/drawio/images/sidebar-sitemap.png +0 -0
  116. package/assets/drawio/images/sidebar-threatmodeling.png +0 -0
  117. package/assets/drawio/images/sidebar-uml.png +0 -0
  118. package/assets/drawio/images/sketch-logo128.png +0 -0
  119. package/assets/drawio/images/spin.gif +0 -0
  120. package/assets/drawio/images/sprites.png +0 -0
  121. package/assets/drawio/images/stop-flat-icon-80.png +0 -0
  122. package/assets/drawio/images/submenu.gif +0 -0
  123. package/assets/drawio/images/touch-submenu.png +0 -0
  124. package/assets/drawio/images/transparent.gif +0 -0
  125. package/assets/drawio/images/trello-logo-white-orange.svg +6 -0
  126. package/assets/drawio/images/trello-logo-white.svg +6 -0
  127. package/assets/drawio/images/trello-logo.svg +1 -0
  128. package/assets/drawio/images/tweet.png +0 -0
  129. package/assets/drawio/images/update16.png +0 -0
  130. package/assets/drawio/images/update32.png +0 -0
  131. package/assets/drawio/images/update80.png +0 -0
  132. package/assets/drawio/images/youtube.png +0 -0
  133. package/assets/drawio/img/clipart/Battery_0_128x128.png +0 -0
  134. package/assets/drawio/img/clipart/Battery_100_128x128.png +0 -0
  135. package/assets/drawio/img/clipart/Battery_50_128x128.png +0 -0
  136. package/assets/drawio/img/clipart/Battery_75_128x128.png +0 -0
  137. package/assets/drawio/img/clipart/Battery_allstates_128x128.png +0 -0
  138. package/assets/drawio/img/clipart/Bluetooth_128x128.png +0 -0
  139. package/assets/drawio/img/clipart/Earth_globe_128x128.png +0 -0
  140. package/assets/drawio/img/clipart/Empty_Folder_128x128.png +0 -0
  141. package/assets/drawio/img/clipart/Full_Folder_128x128.png +0 -0
  142. package/assets/drawio/img/clipart/Gear_128x128.png +0 -0
  143. package/assets/drawio/img/clipart/Keys_128x128.png +0 -0
  144. package/assets/drawio/img/clipart/Lock_128x128.png +0 -0
  145. package/assets/drawio/img/clipart/Mouse_Pointer_128x128.png +0 -0
  146. package/assets/drawio/img/clipart/Plug_128x128.png +0 -0
  147. package/assets/drawio/img/clipart/Ships_Wheel_128x128.png +0 -0
  148. package/assets/drawio/img/clipart/Star_128x128.png +0 -0
  149. package/assets/drawio/img/clipart/Tire_128x128.png +0 -0
  150. package/assets/drawio/index.html +92 -0
  151. package/assets/drawio/js/PostConfig.js +7 -0
  152. package/assets/drawio/js/PreConfig.js +13 -0
  153. package/assets/drawio/js/app.min.js +18466 -0
  154. package/assets/drawio/js/bootstrap.js +428 -0
  155. package/assets/drawio/js/diagramly/LibavoidRouting.js +4459 -0
  156. package/assets/drawio/js/export-init.js +21 -0
  157. package/assets/drawio/js/extensions.min.js +10478 -0
  158. package/assets/drawio/js/libavoid-js/LICENSE +505 -0
  159. package/assets/drawio/js/libavoid-js/libavoid-routing.js +1633 -0
  160. package/assets/drawio/js/libavoid-js/libavoid.min.js +59 -0
  161. package/assets/drawio/js/main.js +22 -0
  162. package/assets/drawio/js/rough/rough.min.js +1 -0
  163. package/assets/drawio/js/shapes-14-6-5.min.js +3457 -0
  164. package/assets/drawio/js/stencils.min.js +447 -0
  165. package/assets/drawio/mxgraph/css/common.css +147 -0
  166. package/assets/drawio/resources/dia.txt +2901 -0
  167. package/assets/drawio/styles/dark-default.xml +109 -0
  168. package/assets/drawio/styles/default-old.xml +109 -0
  169. package/assets/drawio/styles/default.xml +203 -0
  170. package/assets/drawio/styles/fonts/ArchitectsDaughter-Regular.ttf +0 -0
  171. package/assets/drawio/styles/grapheditor.css +4501 -0
  172. package/assets/drawio/styles/high-contrast.css +128 -0
  173. package/assets/drawio/styles/thumb_horz.png +0 -0
  174. package/assets/drawio/styles/thumb_vertical.png +0 -0
  175. package/assets/fonts/ibm-plex-mono-LICENSE.txt +93 -0
  176. package/assets/fonts/ibm-plex-sans-LICENSE.txt +93 -0
  177. package/assets/fonts/kalam-400.woff2 +0 -0
  178. package/assets/fonts/kalam-700.woff2 +0 -0
  179. package/assets/fonts/kalam-LICENSE.txt +93 -0
  180. package/assets/fonts/plex-mono-400.woff2 +0 -0
  181. package/assets/fonts/plex-mono-600.woff2 +0 -0
  182. package/assets/fonts/plex-sans-400.woff2 +0 -0
  183. package/assets/fonts/plex-sans-600.woff2 +0 -0
  184. package/dist/api.js +181 -0
  185. package/dist/cli.js +262 -0
  186. package/dist/drawio/icons.js +121 -0
  187. package/dist/drawio/merge.js +309 -0
  188. package/dist/drawio/read.js +180 -0
  189. package/dist/drawio/show.js +501 -0
  190. package/dist/drawio/theme.js +425 -0
  191. package/dist/drawio/write.js +300 -0
  192. package/dist/edit/server.js +212 -0
  193. package/dist/git.js +46 -0
  194. package/dist/import/mermaid.js +569 -0
  195. package/dist/layout/layout.js +212 -0
  196. package/dist/layout/sequence.js +333 -0
  197. package/dist/layout/text.js +73 -0
  198. package/dist/lint/check.js +184 -0
  199. package/dist/lint/fixlabels.js +128 -0
  200. package/dist/mcp/server.js +239 -0
  201. package/dist/publish.js +121 -0
  202. package/dist/render/browser.js +210 -0
  203. package/dist/render/fonts.js +66 -0
  204. package/dist/report.js +36 -0
  205. package/dist/spec/model.js +53 -0
  206. package/dist/spec/parse.js +497 -0
  207. package/package.json +71 -4
  208. package/skills/linework/SKILL.md +214 -0
  209. package/skills/linework/examples/billing-er.drawio.svg +4 -0
  210. package/skills/linework/examples/billing-er.yaml +31 -0
  211. package/skills/linework/examples/checkout.drawio.svg +4 -0
  212. package/skills/linework/examples/checkout.yaml +28 -0
  213. package/skills/linework/examples/pay-sequence.drawio.svg +4 -0
  214. package/skills/linework/examples/pay-sequence.yaml +28 -0
  215. package/skills/linework/examples/payment-state.drawio.svg +4 -0
  216. package/skills/linework/examples/payment-state.yaml +22 -0
  217. package/skills/linework/examples/refund-flow.drawio.svg +4 -0
  218. package/skills/linework/examples/refund-flow.yaml +29 -0
  219. package/skills/linework/examples/serverless-aws.drawio.svg +4 -0
  220. package/skills/linework/examples/serverless-aws.yaml +23 -0
  221. package/skills/linework/references/google-docs.md +46 -0
  222. package/skills/linework/references/spec.md +312 -0
  223. package/skills/linework/references/style-guide.md +53 -0
@@ -0,0 +1,4501 @@
1
+ :root {
2
+ --ge-panel-color: #f1f3f4;
3
+ --toolbar-color: #f1f3f4;
4
+ --workspace-color: #ececec;
5
+ --dark-toolbar-color: #1e2022;
6
+ --inactive-color: #e4e4e4;
7
+ --active-color: #c4c4c4;
8
+ --primary-color: #c2e7ff;
9
+ --primary-hover-color: #abcfe7;
10
+ --accent-color: #e1e9f7;
11
+ --accent-hover-color: #d8e5f8;
12
+ --accent-text-color: #0b57d0;
13
+ --border-color: #dadada;
14
+ --highlight-color: #e2e2e2;
15
+ --scrollbar-hover-color: #959798;
16
+ --text-color: #3F3F3F;
17
+ --dark-color: #121212;
18
+ --ge-dark-panel-color: #1B1D1E;
19
+ --dark-border-color: #333333;
20
+ --dark-text-color: #C0C0C0;
21
+ --dark-accent-color: #003555;
22
+ --dark-accent-text-color: #52a5f6;
23
+ --dark-active-accent-color: #004A77;
24
+ --dark-inverse-active-color: #c4c4c4;
25
+ --dark-highlight-color: #000000;
26
+ --dark-header-color: #1B1D1E;
27
+ /* Dialogs, windows and comments */
28
+ --dialog-color: #f0f0f0;
29
+ --dark-dialog-color: #2a2a2a;
30
+ --strong-text-color: #1d1d1f;
31
+ --dark-strong-text-color: #e5e5e7;
32
+ --secondary-text-color: #6e6e73;
33
+ --dark-secondary-text-color: #a0a0a0;
34
+ --faint-text-color: #8e8e93;
35
+ --dark-faint-text-color: #7a7a7e;
36
+ /* Input fields, cards and chips */
37
+ --field-color: #ffffff;
38
+ --dark-field-color: #1c1c1e;
39
+ --field-border-color: #d2d2d7;
40
+ --dark-field-border-color: #48484a;
41
+ --strong-border-color: #b9b9be;
42
+ --dark-strong-border-color: #5a5a5e;
43
+ /* Buttons of dialogs and windows in dark mode */
44
+ --dark-button-border-color: rgba(255, 255, 255, 0.15);
45
+ --card-color: #ffffff;
46
+ --dark-card-color: #2c2c2e;
47
+ --soft-color: whitesmoke;
48
+ --dark-soft-color: #3a3a3c;
49
+ --soft-hover-color: #f0f0f2;
50
+ --dark-soft-hover-color: #3a3a3c;
51
+ /* Accents (selected and focused states) */
52
+ --focus-color: #0071e3;
53
+ --dark-focus-color: #0a84ff;
54
+ --mention-color: #0a4bb0;
55
+ --dark-mention-color: #7eb1ff;
56
+ --mention-background-color: #e8f0fe;
57
+ --dark-mention-background-color: #10325f;
58
+ --selected-color: #d4e4f7;
59
+ --selected-hover-color: #c4d8f0;
60
+ --active-item-color: lightgray;
61
+ --dark-active-item-color: darkgray;
62
+ /* Status */
63
+ --error-color: #b62623;
64
+ --dark-error-color: #ffffff;
65
+ --error-background-color: #eacccc;
66
+ --dark-error-background-color: #a20025;
67
+ /* Misc */
68
+ --scrollbar-color: #e2e2e2;
69
+ --dark-scrollbar-color: #2c2c2c;
70
+ --prop-stripe-color: #fcfcfc;
71
+ --prop-accent-color: #D9E1F2;
72
+ --prop-accent-text-color: #305496;
73
+ }
74
+
75
+ /* System colors (systemColors in Editor.configure): derives the grays from
76
+ the CSS system colors Canvas and CanvasText, which the browser resolves
77
+ for the color scheme where they are used. With the default Canvas and
78
+ CanvasText of Chrome, the mixes give the fixed colors above. Accent,
79
+ selection and status colors are unchanged. Not used with forced colors,
80
+ where high-contrast.css applies. */
81
+ @media (forced-colors: none) {
82
+ :root.geSystemColors {
83
+ --ge-panel-color: color-mix(in srgb, CanvasText 5%, Canvas);
84
+ --toolbar-color: color-mix(in srgb, CanvasText 5%, Canvas);
85
+ --workspace-color: color-mix(in srgb, CanvasText 7.5%, Canvas);
86
+ --inactive-color: color-mix(in srgb, CanvasText 10.5%, Canvas);
87
+ --active-color: color-mix(in srgb, CanvasText 23%, Canvas);
88
+ --border-color: color-mix(in srgb, CanvasText 14.5%, Canvas);
89
+ --highlight-color: color-mix(in srgb, CanvasText 11.5%, Canvas);
90
+ --scrollbar-hover-color: color-mix(in srgb, CanvasText 41%, Canvas);
91
+ --text-color: color-mix(in srgb, CanvasText 75%, Canvas);
92
+ --dialog-color: color-mix(in srgb, CanvasText 6%, Canvas);
93
+ --strong-text-color: color-mix(in srgb, CanvasText 88.5%, Canvas);
94
+ --secondary-text-color: color-mix(in srgb, CanvasText 56.5%, Canvas);
95
+ --faint-text-color: color-mix(in srgb, CanvasText 44%, Canvas);
96
+ --field-color: Canvas;
97
+ --field-border-color: color-mix(in srgb, CanvasText 17%, Canvas);
98
+ --strong-border-color: color-mix(in srgb, CanvasText 27%, Canvas);
99
+ --card-color: Canvas;
100
+ --soft-color: color-mix(in srgb, CanvasText 4%, Canvas);
101
+ --soft-hover-color: color-mix(in srgb, CanvasText 5.5%, Canvas);
102
+ --active-item-color: color-mix(in srgb, CanvasText 17%, Canvas);
103
+ --scrollbar-color: color-mix(in srgb, CanvasText 11.5%, Canvas);
104
+ --prop-stripe-color: color-mix(in srgb, CanvasText 1%, Canvas);
105
+ --dark-color: Canvas;
106
+ --dark-toolbar-color: color-mix(in srgb, CanvasText 6%, Canvas);
107
+ --ge-dark-panel-color: color-mix(in srgb, CanvasText 4.5%, Canvas);
108
+ --dark-header-color: color-mix(in srgb, CanvasText 4.5%, Canvas);
109
+ --dark-border-color: color-mix(in srgb, CanvasText 14%, Canvas);
110
+ --dark-text-color: color-mix(in srgb, CanvasText 73%, Canvas);
111
+ --dark-inverse-active-color: color-mix(in srgb, CanvasText 75%, Canvas);
112
+ --dark-dialog-color: color-mix(in srgb, CanvasText 10%, Canvas);
113
+ --dark-strong-text-color: color-mix(in srgb, CanvasText 89%, Canvas);
114
+ --dark-secondary-text-color: color-mix(in srgb, CanvasText 60%, Canvas);
115
+ --dark-faint-text-color: color-mix(in srgb, CanvasText 44%, Canvas);
116
+ --dark-field-color: color-mix(in srgb, CanvasText 4%, Canvas);
117
+ --dark-field-border-color: color-mix(in srgb, CanvasText 23%, Canvas);
118
+ --dark-strong-border-color: color-mix(in srgb, CanvasText 30%, Canvas);
119
+ --dark-button-border-color: color-mix(in srgb, CanvasText 15%, transparent);
120
+ --dark-card-color: color-mix(in srgb, CanvasText 11%, Canvas);
121
+ --dark-soft-color: color-mix(in srgb, CanvasText 17%, Canvas);
122
+ --dark-soft-hover-color: color-mix(in srgb, CanvasText 17%, Canvas);
123
+ --dark-active-item-color: color-mix(in srgb, CanvasText 64%, Canvas);
124
+ --dark-error-color: CanvasText;
125
+ --dark-scrollbar-color: color-mix(in srgb, CanvasText 11%, Canvas);
126
+ }
127
+ }
128
+
129
+ .geEditor * {
130
+ forced-color-adjust: none;
131
+ }
132
+
133
+ .geEditor {
134
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Segoe UI", system-ui, ui-sans-serif, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
135
+ color-scheme: light dark;
136
+ position: absolute;
137
+ overflow: hidden;
138
+ font-size: 14px;
139
+ width: 100%;
140
+ height: 100%;
141
+ margin: 0;
142
+ display: grid;
143
+ grid-template-rows: min-content min-content 1fr min-content;
144
+ grid-template-columns: min-content min-content 1fr min-content;
145
+ }
146
+
147
+ html.geFullscreen,
148
+ .geEditor,
149
+ .mxWindow,
150
+ .geDialogTitle,
151
+ .geShapePicker,
152
+ .geDialogFooter,
153
+ .geSidebarTooltip {
154
+ background-color: light-dark(var(--ge-panel-color), var(--ge-dark-panel-color));
155
+ }
156
+
157
+ .geEditor>svg,
158
+ div[id*="dgeMermaidOutput-"] {
159
+ position: absolute;
160
+ margin: -9999px 0 0 -9999px;
161
+ z-index: -1;
162
+ }
163
+
164
+ .geEditor>#geInfo {
165
+ grid-column: 1 / -1;
166
+ grid-row: 1 / -1;
167
+ }
168
+
169
+ .geSimpleMainMenu,
170
+ .geEditor>.geMenubarContainer {
171
+ grid-column: 1 / -1;
172
+ grid-row: 1;
173
+ width: 100%;
174
+ height: 60px;
175
+ margin-top: 4px;
176
+ }
177
+
178
+ .geCompactMode .geAppIcon,
179
+ .geCompactMode .geFilenameContainer,
180
+ .geSimple .geMenubarContainer:not(.geMinimal *),
181
+ .geCompactMode .geButtonContainer:not(.geAtlas *, .geEmbed *),
182
+ .geSimple>.geToolbarContainer:not(.geSimpleMainMenu, .geSketch *),
183
+ .geSketch>.geToolbarContainer:has(.geToolbar) {
184
+ display: none;
185
+ }
186
+
187
+ .geEditor.geAtlas>.geMenubarContainer,
188
+ .geEditor.geCompactMode>.geMenubarContainer {
189
+ margin-top: 0;
190
+ height: 30px;
191
+ }
192
+
193
+ .geEditor.geCompactMode>.geToolbarContainer:not(.geSketch *, .geAtlas *) {
194
+ padding-left: 8px;
195
+ }
196
+
197
+ .geEditor.geSimple>.geToolbarContainer:not(.geVerticalToolbar) {
198
+ padding: 0 10px;
199
+ height: 50px;
200
+ }
201
+
202
+ .geEditor.geSketch>.geToolbarContainer:not(.geVerticalToolbar) {
203
+ height: 44px;
204
+ }
205
+
206
+ .geSketchMainMenu {
207
+ left: 10px;
208
+ top: 10px;
209
+ }
210
+
211
+ .geEditor:not(.geSimple) .geSimpleMainMenu {
212
+ display: none;
213
+ }
214
+
215
+ .geEditor.geCompactMode>.geMenubarContainer>.geMenubar {
216
+ padding-left: 4px;
217
+ top: 0;
218
+ }
219
+
220
+ .geToolbarContainer:not(.geVerticalToolbar) {
221
+ height: 38px;
222
+ }
223
+
224
+ .geEditor>.geToolbarContainer:not(.geSketch *) {
225
+ grid-column: 1 / -1;
226
+ grid-row: 2;
227
+ padding: 0 8px 0 16px;
228
+ width: 100%;
229
+ }
230
+
231
+ .geEditor.geClassic>.geToolbarContainer {
232
+ border-top-style: solid;
233
+ border-top-width: 1px;
234
+ border-bottom-style: solid;
235
+ border-bottom-width: 1px;
236
+ }
237
+
238
+ .geEditor>.geSidebarContainer:not(.geFormatContainer) {
239
+ min-height: 0;
240
+ grid-column: 1;
241
+ grid-row: 3;
242
+ }
243
+
244
+ .geEditor>.geSidebarContainer.geFormatContainer {
245
+ min-height: 0;
246
+ grid-column: 4;
247
+ grid-row: 3;
248
+ }
249
+
250
+ .geEditor>.geHsplit {
251
+ grid-column: 2;
252
+ grid-row: 3;
253
+ z-index: 2;
254
+ }
255
+
256
+ .geEditor>.geDiagramContainer {
257
+ min-height: 0;
258
+ margin-left: -10px;
259
+ grid-column: 3;
260
+ grid-row: 3;
261
+ }
262
+
263
+ .geEmbedInline>div.geDiagramContainer {
264
+ margin-left: 0;
265
+ }
266
+
267
+ /* The color window of the inline toolbar stays */
268
+ .geInlineNoUi .geToolbarContainer,
269
+ .geInlineNoUi .mxWindow:not(.geColorWindow) {
270
+ display: none !important;
271
+ }
272
+
273
+ .geEditor>.geTabContainer {
274
+ grid-column: 1 / -1;
275
+ grid-row: 4;
276
+ width: 100%;
277
+ }
278
+
279
+ .geSmallAppIcon {
280
+ padding: 0 4px 0 8px;
281
+ }
282
+
283
+ .geAtlas .geSmallAppIcon {
284
+ padding-left: 8px;
285
+ }
286
+
287
+ .geAppIcon {
288
+ display: block;
289
+ position: absolute;
290
+ top: 10px;
291
+ left: 16px;
292
+ width: 32px;
293
+ height: 36px;
294
+ border-radius: 4px;
295
+ background-color: rgb(240, 135, 5);
296
+ background-position: center center;
297
+ background-repeat: no-repeat;
298
+ transition: 0.1s linear;
299
+ cursor: pointer;
300
+ background-size: 100%;
301
+ opacity: 0.9;
302
+ }
303
+
304
+ .geMenubar {
305
+ top: 28px;
306
+ width: 100%;
307
+ height: 30px;
308
+ display: flex;
309
+ position: absolute;
310
+ align-items: center;
311
+ box-sizing: border-box;
312
+ padding: 0px 2px 0px 58px;
313
+ }
314
+
315
+ .geFilenameContainer {
316
+ position: absolute;
317
+ right: 260px;
318
+ left: 60px;
319
+ top: 4px;
320
+ height: 26px;
321
+ display: block;
322
+ margin-left: 0px;
323
+ overflow: hidden;
324
+ text-overflow: ellipsis;
325
+ }
326
+
327
+ .geFilename {
328
+ padding: 3px 4px;
329
+ display: inline;
330
+ font-size: 18px;
331
+ cursor: pointer;
332
+ white-space: nowrap;
333
+ }
334
+
335
+ .geEditor,
336
+ .geEditor tr.mxPopupMenuItemHover,
337
+ .geEditor tr.mxPopupMenuItem {
338
+ color: light-dark(var(--text-color), var(--dark-text-color));
339
+ }
340
+
341
+ :where(.geEditor *):not(svg *, .mxCellEditor *, .mxRubberband) {
342
+ border-color: light-dark(var(--border-color), var(--dark-border-color));
343
+ }
344
+
345
+ :where(.geEditor button):not(svg *),
346
+ :where(.geEditor select):not(svg *),
347
+ :where(.geEditor input):not(svg *),
348
+ :where(.geEditor textarea):not(svg *) {
349
+ color: light-dark(var(--text-color), var(--dark-text-color));
350
+ background-color: transparent;
351
+ border: 1px solid;
352
+ border-radius: 4px;
353
+ padding: 2px;
354
+ }
355
+
356
+ .geEditor input:not(svg *, .geButton) {
357
+ background-color: light-dark(var(--field-color), var(--dark-toolbar-color));
358
+ }
359
+
360
+ .geHsplit {
361
+ background: linear-gradient(light-dark(var(--dark-accent-text-color), var(--accent-text-color)), light-dark(var(--dark-accent-text-color), var(--accent-text-color))) no-repeat left/2px 100%;
362
+ transition: opacity 0.1s linear 0.1s;
363
+ cursor: ew-resize;
364
+ width: 10px;
365
+ opacity: 0;
366
+ }
367
+
368
+ .geHsplit:hover {
369
+ opacity: 1;
370
+ }
371
+
372
+ .geDialog .geToolbarContainer,
373
+ .geSketch .geToolbarContainer:not(.mxWindow *) {
374
+ position: absolute;
375
+ }
376
+
377
+ .geSketch .geHsplit,
378
+ .geSketch .geTabContainer {
379
+ display: none;
380
+ }
381
+
382
+ .geSketch .geToolbarContainer:not(.geDialog *, .mxWindow *),
383
+ .geSketch .mxWindow,
384
+ .geEditor.geMinimal .mxPopupMenu,
385
+ .geMinimal .mxWindow,
386
+ .geMinimal .geTabItem {
387
+ background-color: light-dark(var(--toolbar-color), var(--dark-toolbar-color));
388
+ }
389
+
390
+ .geMinimal .geMenubarContainer,
391
+ .geToolbar {
392
+ display: flex;
393
+ align-items: center;
394
+ flex-grow: 1;
395
+ }
396
+
397
+ .geMinimal .geMenubarContainer {
398
+ border-bottom-style: solid;
399
+ border-bottom-width: 1px;
400
+ box-sizing: border-box;
401
+ padding: 8px;
402
+ height: 48px;
403
+ margin: 0;
404
+ }
405
+
406
+ .geToolbarContainer,
407
+ .geFormatTitleContainer {
408
+ margin: 0;
409
+ display: flex;
410
+ box-sizing: border-box;
411
+ align-items: center;
412
+ }
413
+
414
+ .geFormatTitleContainer {
415
+ justify-content: center;
416
+ }
417
+
418
+ .geButton,
419
+ .geHelpIcon:not(.geTitle *),
420
+ .mxPopupMenuItem>div:not(:has(img)),
421
+ .geTitle,
422
+ .geBtnStepper>div {
423
+ position: relative;
424
+ }
425
+
426
+ .geFreehandMode,
427
+ .geFreehandMode *,
428
+ .gePolygonMode,
429
+ .gePolygonMode * {
430
+ cursor: crosshair !important;
431
+ }
432
+
433
+ .geDarkMode .geButton,
434
+ .geDarkMode .geHelpIcon:not(.geTitle *),
435
+ .geDarkMode .mxPopupMenuItem>div:not(:has(img)),
436
+ .geDarkMode .geButtonContainer .geButton.geRoundButton img:not(.geAdaptiveAsset),
437
+ .geDarkMode .geAdaptiveAsset,
438
+ .geDarkMode .geTitle,
439
+ .geDarkMode .geBtnStepper>div,
440
+ .geDarkMode .geColorDropper,
441
+ .geDarkMode .geStyleMenuItem,
442
+ .geDarkMode .gePropHeader>.gePropHeaderCell:first-child,
443
+ .geDarkMode .geStyleBtn .geAdaptiveAsset.geArrow,
444
+ .geAtlas .geMenubar .geButtonContainer .geButton:empty,
445
+ .geAtlas .geMenubar .geButtonContainer .geButton:has(> span.geCommentsBadge:only-child),
446
+ .geAtlas .geMenubar .geButtonContainer .geButton .geAdaptiveAsset:not(.geDarkMode *),
447
+ .geAtlas .geMenubar .geButtonContainer .geButton img:last-child {
448
+ filter: invert(1);
449
+ outline: none;
450
+ }
451
+
452
+ /* Keyboard focus ring of the inverted controls above: the inverse of the focus
453
+ color shows the focus color, else the color of the control is used. The
454
+ outline shows in forced colors. */
455
+ .geDarkMode .geButton:focus-visible,
456
+ .geDarkMode .geHelpIcon:not(.geTitle *):focus-visible,
457
+ .geDarkMode .geAdaptiveAsset:focus-visible,
458
+ .geDarkMode .geTitle:focus-visible,
459
+ .geDarkMode .geTitle.geFocusRing,
460
+ .geDarkMode .geTitle .geLibraryButton:focus-visible,
461
+ .geDarkMode .gePropHeader>.gePropHeaderCell:focus-visible,
462
+ .geAtlas .geMenubar .geButtonContainer .geButton:empty:focus-visible,
463
+ .geAtlas .geMenubar .geButtonContainer .geButton:has(> span.geCommentsBadge:only-child):focus-visible {
464
+ outline: 2px solid currentColor;
465
+ outline: 2px solid rgb(from var(--dark-focus-color) calc(255 - r) calc(255 - g) calc(255 - b));
466
+ }
467
+
468
+ /* Cancels out the inversion for the badge in the atlas menubar */
469
+ .geAtlas .geMenubar .geButtonContainer span.geCommentsBadge {
470
+ filter: invert(1);
471
+ }
472
+
473
+ .geDarkMode .geStyleBtn .geAdaptiveAsset.geArrow {
474
+ color: black;
475
+ }
476
+
477
+ .geDarkMode .geButtonContainer .geButton.geRoundButton img:last-child {
478
+ filter: none;
479
+ }
480
+
481
+ .geMinimal .geButtonContainer .geButton {
482
+ margin: 0;
483
+ }
484
+
485
+ .gePrimaryBtn {
486
+ background-color: light-dark(var(--primary-color), var(--dark-accent-color));
487
+ box-shadow: none;
488
+ border: none;
489
+ }
490
+
491
+ .geFormatTitleContainer {
492
+ height: 34px;
493
+ margin-bottom: 12px;
494
+ }
495
+
496
+ .geFormatTitle {
497
+ background: light-dark(var(--inactive-color), var(--dark-highlight-color));
498
+ border-bottom-style: solid;
499
+ border-left-style: solid;
500
+ border-width: 1px;
501
+ display: inline-flex;
502
+ text-overflow: ellipsis;
503
+ justify-content: center;
504
+ align-items: center;
505
+ overflow: hidden;
506
+ font-size: 13px;
507
+ cursor: pointer;
508
+ height: 100%;
509
+ flex: 1;
510
+ }
511
+
512
+ .geFormatTitle.geActiveFormatTitle {
513
+ background: transparent;
514
+ border-bottom-style: none;
515
+ }
516
+
517
+ .geFormatTitle:first-child {
518
+ border-left-style: none;
519
+ }
520
+
521
+ .geTitle,
522
+ .geFormatTitle>div {
523
+ font-weight: 500;
524
+ }
525
+
526
+ .geFormatTitle>div {
527
+ display: inline;
528
+ text-align: center;
529
+ white-space: nowrap;
530
+ width: 100%;
531
+ overflow: hidden;
532
+ text-overflow: ellipsis;
533
+ padding: 6px;
534
+ }
535
+
536
+ .gePageTab>div.geButton {
537
+ width: 20px !important;
538
+ }
539
+
540
+ .gePageTab:hover,
541
+ .gePageGroupTab:hover {
542
+ background-color: light-dark(var(--highlight-color), var(--dark-border-color));
543
+ opacity: 1;
544
+ }
545
+
546
+ .geFormatContent {
547
+ margin-left: 12px;
548
+ margin-right: 8px;
549
+ }
550
+
551
+ div.geActivePage {
552
+ background-color: light-dark(var(--accent-color), var(--dark-accent-color));
553
+ color: light-dark(var(--accent-text-color), var(--dark-accent-text-color));
554
+ }
555
+
556
+ div.geActivePage:hover {
557
+ background-color: light-dark(var(--accent-hover-color), var(--dark-active-accent-color));
558
+ }
559
+
560
+ .geGraphStylePreview {
561
+ position: relative;
562
+ display: inline-flex;
563
+ align-items: center;
564
+ justify-content: center;
565
+ width: 88px;
566
+ height: 76px;
567
+ cursor: pointer;
568
+ margin: 2px 6px;
569
+ overflow: hidden;
570
+ border-radius: 8px;
571
+ opacity: 0.7;
572
+ }
573
+
574
+ .geSwitcher {
575
+ display: flex;
576
+ align-items: center;
577
+ justify-content: center;
578
+ white-space: nowrap;
579
+ position: relative;
580
+ }
581
+
582
+ /* The dots are 24px apart, the spacing of small targets in WCAG 2.5.8 */
583
+ .geSwitcher>.geSwitcherDot {
584
+ display: inline-block;
585
+ width: 6px;
586
+ height: 6px;
587
+ margin-left: 8px;
588
+ margin-right: 8px;
589
+ border-radius: 3px;
590
+ cursor: pointer;
591
+ border: 1px solid rgb(181, 182, 183);
592
+ }
593
+
594
+ .geGraphStylePreview>div {
595
+ position: relative;
596
+ pointer-events: none;
597
+ width: 60px;
598
+ height: 60px;
599
+ }
600
+
601
+ .mxPopupMenuIcon img,
602
+ .geStyleBtn .geAdaptiveAsset,
603
+ .geGraphStylePreview:active {
604
+ opacity: 0.75;
605
+ }
606
+
607
+ .geSidebarContainer:has(.geSidebarFooter)>div:first-child {
608
+ position: relative;
609
+ overflow: hidden auto;
610
+ left: 0px;
611
+ top: 0px;
612
+ right: 0px;
613
+ box-sizing: border-box;
614
+ max-height: calc(100% - 44px);
615
+ }
616
+
617
+ .geSidebarFooter {
618
+ position: absolute;
619
+ overflow: hidden;
620
+ display: inline-flex;
621
+ align-items: center;
622
+ justify-content: center;
623
+ max-height: 100%;
624
+ padding-top: 2px;
625
+ height: 44px;
626
+ width: 100%;
627
+ }
628
+
629
+ .geSidebarFooter .gePrimaryBtn {
630
+ padding: 8px 12px;
631
+ margin: 0px;
632
+ }
633
+
634
+ .geSidebarFooter .gePrimaryBtn span {
635
+ font-size: 18px;
636
+ margin-right: 5px;
637
+ }
638
+
639
+ html body.geEditor .gePrimaryBtn:hover:not([disabled]) {
640
+ background-color: light-dark(var(--primary-hover-color), var(--dark-active-accent-color));
641
+ box-shadow: none;
642
+ border: none;
643
+ }
644
+
645
+ .geStatus {
646
+ padding: 4px 8px;
647
+ overflow: hidden;
648
+ text-overflow: ellipsis;
649
+ }
650
+
651
+ .geButtonGroup {
652
+ display: inline-flex;
653
+ align-items: center;
654
+ height: 24px;
655
+ border-radius: 6px;
656
+ margin-right: 6px;
657
+ padding: 3px 8px;
658
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .11), inset 0 -1px 0 0 rgba(0, 0, 0, .08), 0 1px 2px 0 rgba(0, 0, 0, .04);
659
+ }
660
+
661
+ .geDarkMode .geButtonGroup {
662
+ border-style: solid;
663
+ border-width: 1px;
664
+ }
665
+
666
+ .geButtonGroup .geButton {
667
+ background-size: 22px;
668
+ margin: 0 4px;
669
+ }
670
+
671
+ .geTabItem.geTabZoom {
672
+ position: absolute;
673
+ display: flex;
674
+ align-items: center;
675
+ justify-content: center;
676
+ padding-right: 16px;
677
+ width: 50px;
678
+ right: 0px;
679
+ bottom: 0px;
680
+ box-sizing: content-box;
681
+ background-position: right 6px center;
682
+ background-repeat: no-repeat;
683
+ background-size: 13px;
684
+ z-index: 1;
685
+ cursor: pointer;
686
+ }
687
+
688
+ .geButton>span {
689
+ overflow: hidden;
690
+ text-overflow: ellipsis;
691
+ font-size: 13px;
692
+ }
693
+
694
+ html body.geSimple .mxWindow {
695
+ z-index: 3;
696
+ font-size: 12px;
697
+ }
698
+
699
+ html body.geSimple table.mxWindow {
700
+ font-size: 12px;
701
+ }
702
+
703
+ .geSimple .geStatus>div {
704
+ max-width: 100%;
705
+ box-sizing: border-box;
706
+ text-overflow: ellipsis;
707
+ }
708
+
709
+ .geSimple .geBtn button {
710
+ min-width: 72px !important;
711
+ }
712
+
713
+ .geSimple div.geToolbarContainer a.geButton:not(.geSketch *) {
714
+ margin: 0px;
715
+ padding: 0 2px 4px 2px;
716
+ }
717
+
718
+ html body.geSimple div.geToolbarContainer a.geColorBtn {
719
+ margin: 2px;
720
+ }
721
+
722
+ .geToolbarContainer.geDialogToolbar {
723
+ position: absolute;
724
+ bottom: 0px;
725
+ left: 0px;
726
+ right: 0px;
727
+ height: 32px;
728
+ overflow: hidden;
729
+ padding: 3px 4px 4px;
730
+ border-width: 1px 0px 0px;
731
+ border-style: solid;
732
+ white-space: nowrap;
733
+ }
734
+
735
+ .geSimpletable.mxWindow td.mxWindowPane button.geColorBtn {
736
+ padding: 0px;
737
+ box-sizing: border-box;
738
+ }
739
+
740
+ html body.geSimple .geMenuItem {
741
+ font-size: 14px;
742
+ text-decoration: none;
743
+ font-weight: normal;
744
+ padding: 6px 10px 6px 10px;
745
+ border: none;
746
+ border-radius: 5px;
747
+ color: light-dark(var(--text-color), var(--dark-text-color));
748
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .11), inset 0 -1px 0 0 rgba(0, 0, 0, .08), 0 1px 2px 0 rgba(0, 0, 0, .04);
749
+ }
750
+
751
+ html body div.mxPopupMenu {
752
+ border-radius: 5px;
753
+ border: 1px solid #c0c0c0;
754
+ padding: 5px 0 5px 0;
755
+ box-shadow: 0px 4px 17px -4px rgba(96, 96, 96, 1);
756
+ }
757
+
758
+ html table.mxPopupMenu td.mxPopupMenuItem {
759
+ font-size: 14px;
760
+ padding-top: 4px;
761
+ padding-bottom: 4px;
762
+ }
763
+
764
+ html tr.mxPopupMenuItem,
765
+ html td.mxPopupMenuItem {
766
+ transition-property: none !important;
767
+ }
768
+
769
+ /* Menu items with the keyboard focus have the hover style (see
770
+ mxPopupMenu.addItem), the outline shows in forced colors */
771
+ table.mxPopupMenu tr:focus {
772
+ outline: 1px solid transparent;
773
+ outline-offset: -1px;
774
+ }
775
+
776
+ html body td.mxWindowTitle {
777
+ padding-right: 14px;
778
+ }
779
+
780
+ html body.geEditor.geDarkMode *,
781
+ html body .mxWindow.geDarkMode {
782
+ box-shadow: none !important;
783
+ }
784
+
785
+ html body.geDarkMode .mxCellEditor {
786
+ color: #f0f0f0;
787
+ }
788
+
789
+ html body.geDarkMode.geEditor div.mxPopupMenu {
790
+ border: 1px solid var(--dark-border-color);
791
+ background-color: var(--ge-dark-panel-color);
792
+ }
793
+
794
+ html body.geDarkMode.geEditor div.mxPopupMenu.geToolbarMenu {
795
+ box-shadow: 0px 0px 3px 1px #d1d1d1;
796
+ }
797
+
798
+ .geTabContainer {
799
+ border-left-color: var(--dark-border-color);
800
+ border-right-color: var(--dark-border-color);
801
+ }
802
+
803
+ html body.geDarkMode.geEditor div.mxPopupMenu hr {
804
+ background-color: var(--dark-border-color);
805
+ }
806
+
807
+ .geDragPreview {
808
+ border: 1px dashed light-dark(black, #cccccc);
809
+ }
810
+
811
+ .geEditor .geTemplate {
812
+ box-sizing: border-box;
813
+ display: inline-flex;
814
+ align-items: center;
815
+ justify-content: center;
816
+ border-radius: 12px;
817
+ position: relative;
818
+ cursor: pointer;
819
+ margin: 5px;
820
+ height: 135px;
821
+ width: 135px;
822
+ font-size: 14pt;
823
+ border-width: 2px;
824
+ border-style: dashed;
825
+ border-color: transparent;
826
+ }
827
+
828
+ .geTemplate.geTemplateSelected {
829
+ border-color: light-dark(var(--dark-accent-text-color), var(--accent-text-color));
830
+ }
831
+
832
+ div.geTemplatePreview {
833
+ position: absolute;
834
+ display: inline-flex;
835
+ background-origin: content-box;
836
+ background-size: contain;
837
+ background-repeat: no-repeat;
838
+ background-position: center center;
839
+ opacity: 0.7;
840
+ padding: 8px;
841
+ width: 100%;
842
+ height: 100%;
843
+ box-sizing: border-box;
844
+ }
845
+
846
+ .geTemplate:has(span) .geTemplatePreview {
847
+ opacity: 0.2;
848
+ }
849
+
850
+ .geTemplateSelected .geTemplatePreview {
851
+ opacity: 1 !important;
852
+ }
853
+
854
+ .geTemplate span {
855
+ position: absolute;
856
+ display: inline-block;
857
+ padding: 2px 8px;
858
+ user-select: none;
859
+ border-radius: 8px;
860
+ background: rgba(255, 255, 255, 0.7);
861
+ max-width: 80%;
862
+ overflow: hidden;
863
+ text-overflow: ellipsis;
864
+ line-height: 1.3em;
865
+ text-align: center;
866
+ }
867
+
868
+ .geGenerateDiagramForm {
869
+ position: absolute;
870
+ width: 100%;
871
+ height: 100%;
872
+ }
873
+
874
+ .geGenerateDiagramDescription {
875
+ position: absolute;
876
+ font-family: sans-serif;
877
+ outline: none;
878
+ inset: 0px 0px 38px;
879
+ resize: none;
880
+ font-size: 12px;
881
+ border: none;
882
+ margin: 8px;
883
+ }
884
+
885
+ .geBtn.geGenerateDiagramButton {
886
+ position: absolute;
887
+ bottom: 0px;
888
+ right: 0px;
889
+ left: 0px;
890
+ margin: 8px;
891
+ }
892
+
893
+ .geTemplateSelected.geTemplateHasPreview span {
894
+ display: none;
895
+ }
896
+
897
+ .geEditor .geTemplate .geButton.geRoundButton {
898
+ position: absolute;
899
+ background: white;
900
+ margin: 0;
901
+ padding: 2px;
902
+ opacity: 1 !important;
903
+ width: 16px;
904
+ height: 16px;
905
+ right: 0px;
906
+ top: 0px;
907
+ }
908
+
909
+ .geTemplate .geGenerateDiagramForm .geButton.geRoundButton {
910
+ margin: -6px -6px 0 0;
911
+ padding: 2px !important;
912
+ }
913
+
914
+ .geDarkMode .geTemplate {
915
+ color: #000000;
916
+ }
917
+
918
+ html body.geDarkMode.geEditor button.geAdaptiveAsset:hover:not([disabled]) {
919
+ background-color: #fff;
920
+ }
921
+
922
+ html body.geDarkMode.geEditor button.geAdaptiveAsset:not([disabled]) {
923
+ border-color: #a2a2a2;
924
+ }
925
+
926
+ .geDarkMode .geInsertTablePicker,
927
+ .geDarkMode .geInsertTablePicker * {
928
+ border-color: var(--dark-border-color);
929
+ }
930
+
931
+ html body.geDarkMode .geSketch .geToolbarContainer {
932
+ border-style: solid;
933
+ }
934
+
935
+ body.geDarkMode .geInverseAdaptiveAsset,
936
+ .geDarkMode .geCommentUserImg {
937
+ filter: none !important
938
+ }
939
+
940
+ .geAdaptiveAsset {
941
+ background-position: center center;
942
+ background-repeat: no-repeat;
943
+ background-size: 100% 100%;
944
+ }
945
+
946
+ html body.geDarkMode .geFooterContainer,
947
+ html body.geDarkMode .geFooterContainer td {
948
+ border-color: var(--dark-border-color);
949
+ }
950
+
951
+ html body.geDarkMode .geFooterContainer a {
952
+ background-color: none;
953
+ }
954
+
955
+ html body.geDarkMode .geBigStandardButton {
956
+ border: 1px solid var(--dark-border-color);
957
+ }
958
+
959
+ html body.geDarkMode .geFooterContainer td:hover,
960
+ html body.geDarkMode #geFooterItem1:hover,
961
+ html body.geDarkMode .geBigStandardButton:hover {
962
+ background-color: var(--dark-highlight-color);
963
+ }
964
+
965
+ html body.geDarkMode.geEditor table.mxPopupMenu tr.mxPopupMenuItemHover {
966
+ background-color: var(--dark-highlight-color);
967
+ }
968
+
969
+ html body.geDarkMode.geEditor .geBaseButton:hover {
970
+ background-color: var(--dark-color);
971
+ }
972
+
973
+ html body.geDarkMode .geToolbarContainer .geSeparator {
974
+ background-color: var(--dark-border-color);
975
+ }
976
+
977
+ html body.geDarkMode table.mxPopupMenu hr {
978
+ border-color: var(--dark-border-color);
979
+ background-color: var(--dark-color);
980
+ }
981
+
982
+ html body.geDarkMode .geDialog,
983
+ html body.geDarkMode div.mxWindow,
984
+ html body div.mxWindow.geDarkMode {
985
+ background-color: var(--dark-dialog-color);
986
+ border-color: #838383;
987
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.3);
988
+ }
989
+
990
+ /* Buttons of dialogs and windows have a border that shows on their color, as
991
+ the border color of the editor is almost the color of dialogs and windows.
992
+ Selects with the geBtn class keep the border of fields and its focus color. */
993
+ html body.geDarkMode .geDialog .geBtn:not(.gePrimaryBtn, select),
994
+ html body.geDarkMode div.mxWindow .geBtn:not(.gePrimaryBtn, select),
995
+ html body div.mxWindow.geDarkMode .geBtn:not(.gePrimaryBtn, select) {
996
+ border-color: var(--dark-button-border-color);
997
+ }
998
+
999
+ .mxCellEditor {
1000
+ font-family: initial;
1001
+ }
1002
+
1003
+ .geDialog,
1004
+ html div.mxWindow,
1005
+ .geSketch .geToolbarContainer:not(.geDialog *, .mxWindow *) {
1006
+ border-radius: 12px;
1007
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.08);
1008
+ }
1009
+
1010
+ .geSketch .geToolbarContainer:not(.geDialog *, .mxWindow *) {
1011
+ border-style: solid;
1012
+ border-width: 1px;
1013
+ padding: 6px;
1014
+ }
1015
+
1016
+ div td.mxWindowTitle {
1017
+ border-bottom-style: solid;
1018
+ border-bottom-width: 1px;
1019
+ font-size: 13px;
1020
+ height: 22px;
1021
+ }
1022
+
1023
+ /* The title buttons are 24px targets (WCAG 2.5.8) with the icon in the middle,
1024
+ and the margin keeps the height they had with a padding of 4px */
1025
+ .mxWindowTitle>div>img:not(.geHelpIcon) {
1026
+ box-sizing: border-box;
1027
+ width: 24px;
1028
+ height: 24px;
1029
+ margin-top: -3px;
1030
+ margin-bottom: -3px;
1031
+ object-fit: none;
1032
+ }
1033
+
1034
+ /* Help icons in titles, eg. of the AI window, are 16px with the padding of a
1035
+ 24px target */
1036
+ .mxWindowTitle>div>img.geHelpIcon {
1037
+ padding: 4px;
1038
+ }
1039
+
1040
+ /* Dock preview overlay shown during window drag */
1041
+ .geDockPreview {
1042
+ position: fixed;
1043
+ z-index: 9999;
1044
+ background-color: rgba(41, 182, 242, 0.15);
1045
+ border: 2px solid rgba(41, 182, 242, 0.6);
1046
+ pointer-events: none;
1047
+ display: none;
1048
+ transition: opacity 0.15s ease-in-out;
1049
+ box-sizing: border-box;
1050
+ }
1051
+
1052
+ /* Docked window styles */
1053
+ html div.mxWindow.mxWindowDocked {
1054
+ z-index: 2 !important;
1055
+ }
1056
+
1057
+ .geBackground {
1058
+ background-color: light-dark(rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0.5));
1059
+ position: absolute;
1060
+ top: 0px;
1061
+ left: 0px;
1062
+ right: 0px;
1063
+ bottom: 0px;
1064
+ opacity: 1;
1065
+ backdrop-filter: blur(2px);
1066
+ }
1067
+
1068
+ .geDialog,
1069
+ .geBackground,
1070
+ .geEditor .picker-dialog,
1071
+ .geEditor .picker-dialog-bg {
1072
+ z-index: 10002;
1073
+ }
1074
+
1075
+ .geEditor input[type=text]::-ms-clear {
1076
+ display: none;
1077
+ }
1078
+
1079
+ .geButtonContainer {
1080
+ padding-right: 14px;
1081
+ display: inline-flex;
1082
+ align-items: center;
1083
+ margin-left: auto;
1084
+ flex-shrink: 0;
1085
+ }
1086
+
1087
+ .geMenubar .geButtonContainer {
1088
+ margin-top: -42px;
1089
+ }
1090
+
1091
+ .geToolbarContainer .geButtonContainer {
1092
+ padding-right: 0px;
1093
+ }
1094
+
1095
+ .geButtonContainer .gePrimaryBtn:not(.geEmbedBtn) {
1096
+ margin: 0 4px;
1097
+ width: auto;
1098
+ height: 32px;
1099
+ }
1100
+
1101
+ .geButtonContainer .gePrimaryBtn .geButton {
1102
+ background-position: left center;
1103
+ padding: 0 2px 0 24px;
1104
+ width: auto;
1105
+ }
1106
+
1107
+ .geEditor .geTabItem {
1108
+ border-width: 1px;
1109
+ border-top-style: solid;
1110
+ }
1111
+
1112
+ .geEditor div.mxTooltip {
1113
+ background-color: light-dark(var(--ge-panel-color), var(--ge-dark-panel-color));
1114
+ color: light-dark(var(--text-color), var(--dark-text-color));
1115
+ box-shadow: 1px 1px 2px 0px #ddd;
1116
+ font-size: 11px;
1117
+ padding: 6px;
1118
+ }
1119
+
1120
+ .geSimpleMainMenu {
1121
+ justify-content: start;
1122
+ border-bottom-style: solid;
1123
+ border-bottom-width: 1px;
1124
+ padding: 0 12px;
1125
+ height: 48px;
1126
+ gap: 8px;
1127
+ top: 0px;
1128
+ }
1129
+
1130
+ .geSimpleMainMenu .geButton:not(.geZoomInput) {
1131
+ background-size: 24px;
1132
+ }
1133
+
1134
+ .geSketch .geToolbarContainer .geButton:not(.geZoomInput, .gePageMenu, .geFooterToolbar *) {
1135
+ background-size: 22px;
1136
+ }
1137
+
1138
+ .geSketch .geFooterToolbar:not(.geEmbedInline *) {
1139
+ bottom: 12px;
1140
+ right: 12px;
1141
+ }
1142
+
1143
+ .geSketch .geFooterToolbar>* {
1144
+ margin: 0;
1145
+ }
1146
+
1147
+ .geSketchMainMenu {
1148
+ left: 10px;
1149
+ top: 10px;
1150
+ }
1151
+
1152
+ .geEmbed .geMenubarContainer:not(.geMinimal *) {
1153
+ padding: 0 28px 0 16px;
1154
+ }
1155
+
1156
+ .geEditor.geClassic .geMenubarContainer {
1157
+ padding-left: 4px;
1158
+ }
1159
+
1160
+ .geSidebarContainer a,
1161
+ .geMenubarContainer a,
1162
+ .geToolbar a {
1163
+ text-decoration: none;
1164
+ }
1165
+
1166
+ .geMenubarContainer,
1167
+ .geToolbarContainer,
1168
+ .geDiagramContainer,
1169
+ .geSidebarContainer {
1170
+ overflow: hidden;
1171
+ white-space: nowrap;
1172
+ position: relative;
1173
+ }
1174
+
1175
+ div.geFormatContainer {
1176
+ overflow-y: auto;
1177
+ font-size: 12px;
1178
+ width: 240px;
1179
+ }
1180
+
1181
+ .geDiagramContainer {
1182
+ background-color: light-dark(var(--workspace-color), var(--ge-dark-panel-color));
1183
+ font-size: 0px;
1184
+ outline: none;
1185
+ }
1186
+
1187
+ /* Diagram that got the focus with the keyboard (see EditorUi.init). A sticky
1188
+ overlay as the canvas covers outlines inside of the diagram and the panels
1189
+ cover outlines outside of it. The outline shows in forced colors. */
1190
+ .geDiagramContainer.geFocusVisible::before {
1191
+ content: '';
1192
+ display: block;
1193
+ position: sticky;
1194
+ z-index: 1;
1195
+ top: 0;
1196
+ left: 0;
1197
+ width: 100%;
1198
+ height: 100%;
1199
+ box-shadow: inset 0 0 0 2px light-dark(var(--focus-color), var(--dark-focus-color));
1200
+ outline: 2px solid transparent;
1201
+ outline-offset: -2px;
1202
+ pointer-events: none;
1203
+ }
1204
+
1205
+ .geDiagramContainer.geRulerContainer {
1206
+ margin: 14px 0 0 4px;
1207
+ }
1208
+
1209
+ .geSketch .geDiagramContainer.geRulerContainer,
1210
+ .geMinimal .geDiagramContainer.geRulerContainer {
1211
+ margin-left: 14px;
1212
+ }
1213
+
1214
+ .geRuler {
1215
+ background: light-dark(#ffffff, var(--dark-color));
1216
+ }
1217
+
1218
+ .geBackgroundPage {
1219
+ box-shadow: 0px 0px 3px 0px #a0a0a0;
1220
+ }
1221
+
1222
+ .geEditor .geHint {
1223
+ background-color: light-dark(var(--ge-panel-color), var(--ge-dark-panel-color));
1224
+ border-color: light-dark(var(--border-color), var(--dark-border-color));
1225
+ box-shadow: 1px 1px 2px 0px #ddd;
1226
+ border-style: solid;
1227
+ border-width: 1px;
1228
+ padding: 4px 16px 4px 16px;
1229
+ border-radius: 3px;
1230
+ opacity: 0.8;
1231
+ font-size: 9pt;
1232
+ }
1233
+
1234
+ .geHint img {
1235
+ opacity: 0.7;
1236
+ }
1237
+
1238
+ .geStatus>* {
1239
+ overflow: hidden;
1240
+ white-space: nowrap;
1241
+ vertical-align: middle;
1242
+ display: inline-block;
1243
+ font-size: 12px;
1244
+ }
1245
+
1246
+ .geStatus {
1247
+ display: inline-flex;
1248
+ align-items: center;
1249
+ white-space: nowrap;
1250
+ min-width: 0;
1251
+ height: 100%;
1252
+ }
1253
+
1254
+ .geStatus *[data-action] {
1255
+ cursor: pointer;
1256
+ }
1257
+
1258
+ .geStatus img {
1259
+ max-width: 16px;
1260
+ vertical-align: bottom;
1261
+ }
1262
+
1263
+ .geStatus div {
1264
+ border-radius: 4px;
1265
+ }
1266
+
1267
+ .geStatus div+div {
1268
+ margin-left: 8px;
1269
+ }
1270
+
1271
+ .geStatus .geStatusBox {
1272
+ font-size: 10px;
1273
+ padding: 2px 4px;
1274
+ border-style: solid;
1275
+ border-width: 1px;
1276
+ }
1277
+
1278
+ .geStatus .geStatusAlert {
1279
+ padding: 4px 10px;
1280
+ background-color: light-dark(var(--error-background-color), var(--dark-error-background-color));
1281
+ color: light-dark(var(--error-color), var(--dark-error-color)) !important;
1282
+ }
1283
+
1284
+ .geStatusDiv {
1285
+ text-overflow: ellipsis;
1286
+ display: inline-block;
1287
+ white-space: nowrap;
1288
+ overflow: hidden;
1289
+ flex-shrink: 0;
1290
+ }
1291
+
1292
+ .geEmbed.geMinimal .geMenubarContainer .geStatusDiv {
1293
+ flex-shrink: 1;
1294
+ min-width: 0;
1295
+ }
1296
+
1297
+ .geEmbed.geMinimal .geMenubarContainer .geButtonGroup {
1298
+ flex-shrink: 1;
1299
+ overflow: hidden;
1300
+ min-width: 0;
1301
+ }
1302
+
1303
+ .geEmbed.geAtlas>.geMenubarContainer>.geStatusDiv,
1304
+ .geClassic.geEmbed.geCompactMode>.geMenubarContainer>.geStatusDiv {
1305
+ position: fixed;
1306
+ right: 16px;
1307
+ top: 6px;
1308
+ }
1309
+
1310
+ .geClassic.geEmbed.geCompactMode>.geMenubarContainer>.geStatusDiv {
1311
+ top: 6px;
1312
+ }
1313
+
1314
+ .geEmbed.geAtlas>.geMenubarContainer>.geStatusDiv {
1315
+ top: 12px;
1316
+ }
1317
+
1318
+ html body div.geBtn.geSmallBanner {
1319
+ border-radius: 20px;
1320
+ font-size: inherit;
1321
+ padding: 6px 12px 6px 20px;
1322
+ display: flex;
1323
+ height: auto;
1324
+ bottom: 4px;
1325
+ }
1326
+
1327
+ .geSpinnerStatus {
1328
+ position: absolute;
1329
+ white-space: nowrap;
1330
+ border-radius: 6px;
1331
+ color: #ffffff;
1332
+ background: #4B4243;
1333
+ transform: translate(-50%, -50%);
1334
+ box-shadow: light-dark(#dddddd, transparent) 2px 2px 3px 0px;
1335
+ padding: 6px 10px;
1336
+ font-size: 9pt;
1337
+ z-index: 2000000000;
1338
+ max-width: 60%;
1339
+ overflow: hidden;
1340
+ text-overflow: ellipsis;
1341
+ cursor: default;
1342
+ }
1343
+
1344
+ .geSmallBanner .geLibraryButton {
1345
+ background-color: light-dark(var(--primary-hover-color), var(--dark-active-accent-color));
1346
+ filter: brightness(0.9);
1347
+ margin-left: 6px;
1348
+ opacity: 0.5;
1349
+ }
1350
+
1351
+ .geSmallBanner .geLibraryButton:hover {
1352
+ background-color: light-dark(var(--primary-hover-color), var(--dark-active-accent-color));
1353
+ opacity: 1;
1354
+ }
1355
+
1356
+ .geAlert {
1357
+ position: absolute;
1358
+ white-space: nowrap;
1359
+ padding: 14px;
1360
+ background-color: #f2dede;
1361
+ border: 1px solid #ebccd1;
1362
+ color: #a94442;
1363
+ border-radius: 3px;
1364
+ -webkit-box-shadow: 2px 2px 3px 0px #ddd;
1365
+ -moz-box-shadow: 2px 2px 3px 0px #ddd;
1366
+ box-shadow: 2px 2px 3px 0px #ddd;
1367
+ }
1368
+
1369
+ .geColorDropper {
1370
+ position: relative;
1371
+ cursor: pointer;
1372
+ width: auto;
1373
+ height: 14px;
1374
+ opacity: 0.7;
1375
+ right: -20px;
1376
+ top: -1px;
1377
+ }
1378
+
1379
+ .geBtn {
1380
+ display: inline-flex;
1381
+ align-items: center;
1382
+ justify-content: center;
1383
+ font-size: 14px;
1384
+ font-weight: 550;
1385
+ height: 30px;
1386
+ margin: 0 0 0 8px;
1387
+ min-width: 72px;
1388
+ outline: 0;
1389
+ padding: 0 8px;
1390
+ text-overflow: ellipsis;
1391
+ white-space: nowrap;
1392
+ overflow: hidden;
1393
+ }
1394
+
1395
+ .geBtn.geBanner {
1396
+ display: block;
1397
+ position: absolute;
1398
+ bottom: 10px;
1399
+ left: 50%;
1400
+ max-width: 90%;
1401
+ white-space: nowrap;
1402
+ cursor: pointer;
1403
+ font-size: 16px;
1404
+ padding: 18px 34px 30px 20px;
1405
+ font-weight: bold;
1406
+ transform: translate(-50%, 0%);
1407
+ transition: 1000ms;
1408
+ box-shadow: rgb(221, 221, 221) 1px 1px 2px 0px;
1409
+ }
1410
+
1411
+ .geBtn:hover:not([disabled]),
1412
+ .geBtn:focus {
1413
+ box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.1);
1414
+ }
1415
+
1416
+ /* Keyboard focus ring of buttons, eg. More Shapes and the buttons of dialogs:
1417
+ an outline in the focus color that also shows next to primary buttons and in
1418
+ dark mode, which removes all shadows, inside of the button so that areas
1419
+ that scroll do not clip it, eg. the content of dialogs */
1420
+ .geBtn:focus-visible,
1421
+ .geCollapsibleTitle:focus-visible,
1422
+ .geTab:focus-visible,
1423
+ .geFormatTitle:focus-visible,
1424
+ .geGraphStylePreview:focus-visible {
1425
+ outline: 2px solid light-dark(var(--focus-color), var(--dark-focus-color));
1426
+ outline-offset: -2px;
1427
+ }
1428
+
1429
+ /* The page tabs clip the ring of their menu button */
1430
+ .gePageTab .geButton:focus-visible,
1431
+ .gePageGroupTab .geButton:focus-visible {
1432
+ outline-offset: -2px;
1433
+ }
1434
+
1435
+ /* Keyboard focus of a label that stands for its container, which also contains
1436
+ other controls, eg. the name of a page tab or of a library (see
1437
+ Editor.addFocusRing) */
1438
+ .geFocusRing {
1439
+ outline: 2px solid light-dark(var(--focus-color), var(--dark-focus-color));
1440
+ outline-offset: -2px;
1441
+ }
1442
+
1443
+ .geFocusLabel:focus-visible {
1444
+ outline: none;
1445
+ }
1446
+
1447
+ .geShapePicker {
1448
+ position: absolute;
1449
+ width: 142px;
1450
+ border-radius: 10px;
1451
+ border-style: solid;
1452
+ border-width: 1px;
1453
+ padding: 6px 0 8px 0;
1454
+ text-align: center;
1455
+ box-shadow: 0px 0px 3px 1px #d1d1d1;
1456
+ white-space: normal;
1457
+ }
1458
+
1459
+ .geBtnStepper {
1460
+ display: inline-block;
1461
+ border-radius: 3px;
1462
+ border-style: solid;
1463
+ border-width: 1px;
1464
+ }
1465
+
1466
+ .geBtnStepper>div {
1467
+ background-position: center center;
1468
+ background-repeat: no-repeat;
1469
+ background-size: 18px;
1470
+ position: relative;
1471
+ padding: 1px 0 0 0;
1472
+ }
1473
+
1474
+ .geBtnStepper>div:active {
1475
+ background-color: #4d90fe;
1476
+ }
1477
+
1478
+ .geColorBtn {
1479
+ padding: 0px;
1480
+ }
1481
+
1482
+ .geStyleBtn {
1483
+ display: inline-flex;
1484
+ position: relative;
1485
+ box-sizing: border-box;
1486
+ border-radius: 4px;
1487
+ height: 22px;
1488
+ width: 64px;
1489
+ border-width: 1px;
1490
+ border-style: solid;
1491
+ margin: 2px;
1492
+ padding: 0;
1493
+ }
1494
+
1495
+ .geStyleBtn>span {
1496
+ position: absolute;
1497
+ display: block;
1498
+ text-align: center;
1499
+ top: 3px;
1500
+ left: 3px;
1501
+ right: 13px;
1502
+ overflow: hidden;
1503
+ text-overflow: ellipsis;
1504
+ }
1505
+
1506
+ .geStyleBtn .geAdaptiveAsset {
1507
+ background-size: 18px 18px;
1508
+ flex-grow: 1;
1509
+ }
1510
+
1511
+ .geStyleBtn .geAdaptiveAsset>div.gePatternPreview {
1512
+ height: 1px;
1513
+ border-color: black;
1514
+ border-width: 1px;
1515
+ margin-left: -6px;
1516
+ }
1517
+
1518
+ .geStyleMenuItem {
1519
+ display: flex;
1520
+ align-items: center;
1521
+ padding: 4px 8px;
1522
+ }
1523
+
1524
+ .geStyleBtn .geAdaptiveAsset>div {
1525
+ background-repeat: no-repeat;
1526
+ background-position: center;
1527
+ position: absolute;
1528
+ width: 100%;
1529
+ height: 100%;
1530
+ }
1531
+
1532
+ td.mxPopupMenuIcon .geStyleMenuItem {
1533
+ margin: auto;
1534
+ }
1535
+
1536
+ td.mxPopupMenuIcon .geStyleMenuItem>div {
1537
+ background-position: bottom left;
1538
+ background-repeat: repeat-x;
1539
+ border-color: black;
1540
+ border-width: 1px;
1541
+ margin: 8px 0;
1542
+ height: 1px;
1543
+ width: 100%;
1544
+ }
1545
+
1546
+ .geStyleBtn .geAdaptiveAsset.geArrow {
1547
+ width: 100%;
1548
+ height: 100%;
1549
+ display: flex;
1550
+ font-size: 12px;
1551
+ padding-right: 8px;
1552
+ position: relative;
1553
+ align-items: center;
1554
+ justify-content: center;
1555
+ background-position: right;
1556
+ box-sizing: border-box;
1557
+ }
1558
+
1559
+ .geStyleLabel {
1560
+ overflow: hidden;
1561
+ text-overflow: ellipsis;
1562
+ max-width: 180px;
1563
+ }
1564
+
1565
+ .geFullWidthElement {
1566
+ width: 212px;
1567
+ /* Keeps 3px for the focus ring where the scrollbar of .geFormatContainer
1568
+ narrows the panel, which would otherwise clip it at the right edge */
1569
+ max-width: calc(100% - 3px);
1570
+ }
1571
+
1572
+ .geBtn[disabled],
1573
+ .geButton[disabled] {
1574
+ opacity: 0.3;
1575
+ }
1576
+
1577
+ .geButton.gePageMenu {
1578
+ background-position: right center;
1579
+ padding: 0 18px 0 10px;
1580
+ background-size: 18px;
1581
+ }
1582
+
1583
+ .geButton.gePageMenu>span {
1584
+ padding: 0px;
1585
+ max-width: 160px;
1586
+ overflow: hidden;
1587
+ text-overflow: ellipsis;
1588
+ }
1589
+
1590
+ .geSimple .geButton.geZoomInput:not(.geSketch *, .geMinimal *) {
1591
+ border-style: solid;
1592
+ font-size: 12px;
1593
+ }
1594
+
1595
+ .geButton.geZoomInput {
1596
+ cursor: initial;
1597
+ font-size: 14px;
1598
+ border-style: none;
1599
+ border-color: #000000;
1600
+ padding: 0px 16px 0px 2px;
1601
+ background-position: right 2px center;
1602
+ text-align: center;
1603
+ height: 28px;
1604
+ width: 62px;
1605
+ }
1606
+
1607
+ .geClassic .geZoomInput {
1608
+ padding-top: 1px;
1609
+ }
1610
+
1611
+ .geSimple .geButton.geZoomInput {
1612
+ height: 20px;
1613
+ }
1614
+
1615
+ .geSketch .geZoomInput {
1616
+ border-style: none;
1617
+ }
1618
+
1619
+ .geAlertLink {
1620
+ color: #843534;
1621
+ font-weight: 700;
1622
+ text-decoration: none;
1623
+ }
1624
+
1625
+ .geMenubarContainer .geItem {
1626
+ border-radius: 6px;
1627
+ padding: 4px 8px;
1628
+ cursor: default;
1629
+ }
1630
+
1631
+ .geEditor .geItem:active:not(.mxDisabled, [disabled]):not(.geStatus),
1632
+ .geEditor .geBtn:active:not([disabled]),
1633
+ .geEditor .geStatus.geStatusAction:active,
1634
+ .geEditor .geTitle:active,
1635
+ .geEditor .geButton:active:not(.mxDisabled, .mxDisabled *, [disabled], .geBtn *),
1636
+ .geEditor .geHelpIcon:active,
1637
+ .geEditor button:active:not([disabled], .geBigButton, .geShareBtn),
1638
+ .geEditor .geFormatTitle:active,
1639
+ .geEditor .geBtnStepper>div:active,
1640
+ .geEditor .geTab:active:not(.mxDisabled, [disabled]),
1641
+ .geDarkMode .mxPopupMenuItem>div:not(:has(img)),
1642
+ .geTitle,
1643
+ .geBtnStepper>div,
1644
+ .geHelpIcon,
1645
+ .geStatus>div:not(.geStatusAlert) {
1646
+ opacity: 0.75;
1647
+ }
1648
+
1649
+ .geEditor .geButton:not(.mxDisabled, .mxDisabled *, [disabled]) {
1650
+ opacity: 0.65;
1651
+ }
1652
+
1653
+ /* Shows the keyboard focus ring of buttons at full strength like the hover */
1654
+ .geEditor .geButton:focus-visible:not(.mxDisabled, .mxDisabled *, [disabled]) {
1655
+ opacity: 1;
1656
+ }
1657
+
1658
+ .geItem:hover:not(.mxDisabled, [disabled]),
1659
+ .geBtn:hover:not([disabled]),
1660
+ .geBtnStepper>div:hover,
1661
+ .geHelpIcon:hover,
1662
+ .geColorDropper:hover,
1663
+ .geTitle>div>img:hover,
1664
+ .geFormatTitle.geActiveFormatTitle,
1665
+ .geHint img:hover,
1666
+ .geGraphStylePreview:hover,
1667
+ .geActiveItem:not(.geButton *, .geButton *),
1668
+ .gePageTab .geButton:hover:not([disabled]),
1669
+ .geButtonGroup .geButton:hover:not([disabled]),
1670
+ button:hover:not([disabled], .geBigButton, .geShareBtn),
1671
+ select:hover:not([disabled]),
1672
+ .geColorBtn:hover:not([disabled]),
1673
+ .geStyleBtn:hover:not([disabled]),
1674
+ table.mxPopupMenu tr.mxPopupMenuItemHover,
1675
+ .geTitle:hover,
1676
+ .geButton:hover:not(.mxDisabled, .mxDisabled *, [disabled], .gePageTab *, .geSimpleMainMenu *, .geBtn *, .geButtonGroup *, .geAdaptiveAsset, .gePrimaryBtn) {
1677
+ opacity: 1;
1678
+ }
1679
+
1680
+ .gePaletteDragging .geTitle:hover {
1681
+ opacity: inherit;
1682
+ background-color: inherit;
1683
+ }
1684
+
1685
+ .geTitle.gePaletteDragPlaceholder {
1686
+ visibility: hidden;
1687
+ }
1688
+
1689
+ /* The dragged tabs are empty slots where they are dropped, with the lines of
1690
+ the group that a page joins (see EditorUi.setTabDragGroup) */
1691
+ .gePageTab.gePageTabDragPlaceholder>*,
1692
+ .gePageGroupTab.gePageTabDragPlaceholder>* {
1693
+ visibility: hidden;
1694
+ }
1695
+
1696
+ .gePageTab.gePageTabDragPlaceholder,
1697
+ .gePageGroupTab.gePageTabDragPlaceholder {
1698
+ background-color: light-dark(var(--highlight-color), var(--dark-border-color));
1699
+ }
1700
+
1701
+ button:hover:not([disabled], .geBigButton, .geShareBtn),
1702
+ select:hover:not([disabled]),
1703
+ .geColorBtn:hover:not([disabled]),
1704
+ .geStyleBtn:hover:not([disabled]),
1705
+ table.mxPopupMenu tr.mxPopupMenuItemHover {
1706
+ background-color: light-dark(var(--highlight-color), var(--dark-border-color));
1707
+ }
1708
+
1709
+ .geTitle:hover,
1710
+ .geButton:hover:not(.mxDisabled, .mxDisabled *, [disabled], .gePageTab *, .geSimpleMainMenu *, .geBtn *, .geButtonGroup *, .geAdaptiveAsset, .gePrimaryBtn) {
1711
+ background-color: light-dark(var(--highlight-color), white);
1712
+ }
1713
+
1714
+ .geGraphStylePreview:hover,
1715
+ .geItem:hover:not([disabled]) {
1716
+ background-color: light-dark(var(--highlight-color), var(--dark-highlight-color));
1717
+ }
1718
+
1719
+ .geActiveItem:not(.geButton *, .geButton *) {
1720
+ background-color: light-dark(var(--active-item-color), var(--dark-active-item-color));
1721
+ }
1722
+
1723
+ .mxDisabled:hover {
1724
+ background-color: inherit !important;
1725
+ }
1726
+
1727
+ a.geStatus>div {
1728
+ display: inline-flex;
1729
+ align-items: center;
1730
+ }
1731
+
1732
+ .geSidebarContainer:not(.geFormatContainer, .mxWindowPane *) {
1733
+ border-right-style: solid;
1734
+ border-right-width: 1px;
1735
+ }
1736
+
1737
+ .geClassic .geSidebarContainer:not(.geFormatContainer)>div {
1738
+ padding: 0 4px;
1739
+ }
1740
+
1741
+ .geFormatContainer:not(.mxWindowPane *) {
1742
+ border-left-style: solid;
1743
+ border-left-width: 1px;
1744
+ }
1745
+
1746
+ .geSidebarContainer {
1747
+ box-sizing: border-box;
1748
+ }
1749
+
1750
+ .geSidebarContainer button {
1751
+ text-overflow: ellipsis;
1752
+ overflow: hidden;
1753
+ }
1754
+
1755
+ .geToolbarEnd {
1756
+ margin-left: 8px;
1757
+ flex-grow: 0;
1758
+ order: 1;
1759
+ }
1760
+
1761
+ .geToolbarContainer.geVerticalToolbar {
1762
+ flex-direction: column;
1763
+ max-height: 100%;
1764
+ left: 10px;
1765
+ top: 50%;
1766
+ transition: transform 0.1s ease-out;
1767
+ }
1768
+
1769
+ .geToolbarContainer.geVerticalToolbar:not(.geEmbedInline *) {
1770
+ transform: translate(0, -50%);
1771
+ }
1772
+
1773
+ .geVerticalToolbar.geCollapsedToolbar {
1774
+ top: auto;
1775
+ bottom: 12px;
1776
+ transform: none !important;
1777
+ }
1778
+
1779
+ .geToolbarContainer.geVerticalToolbar>* {
1780
+ display: flex;
1781
+ overflow: visible;
1782
+ margin: 2px 0;
1783
+ }
1784
+
1785
+ .geVerticalToolbar.geCollapsedToolbar>* {
1786
+ margin: 0;
1787
+ width: 24px !important;
1788
+ }
1789
+
1790
+ .geVerticalToolbar>.geButton {
1791
+ width: 34px;
1792
+ height: 34px;
1793
+ }
1794
+
1795
+ .geVerticalToolbar .geItem {
1796
+ position: relative;
1797
+ border-radius: 6px;
1798
+ }
1799
+
1800
+ .geShortcutKey {
1801
+ position: absolute;
1802
+ font-size: 8px;
1803
+ opacity: 0.4;
1804
+ bottom: -2px;
1805
+ right: 1px;
1806
+ }
1807
+
1808
+ .geToolbar {
1809
+ height: 100%;
1810
+ }
1811
+
1812
+ .geButton>div:not(.geShortcutKey) {
1813
+ display: flex;
1814
+ align-items: center;
1815
+ width: 100%;
1816
+ height: 100%;
1817
+ background-position: left 2px center;
1818
+ background-repeat: no-repeat;
1819
+ background-size: 18px;
1820
+ }
1821
+
1822
+ .geButton,
1823
+ .geTitle,
1824
+ .geItem {
1825
+ display: inline-flex;
1826
+ align-items: center;
1827
+ justify-content: center;
1828
+ background-position: center center;
1829
+ background-repeat: no-repeat;
1830
+ background-size: 18px;
1831
+ white-space: nowrap;
1832
+ z-index: 1;
1833
+ padding: 2px;
1834
+ }
1835
+
1836
+ .geItem {
1837
+ overflow: hidden;
1838
+ }
1839
+
1840
+ .geButton,
1841
+ .geTitle {
1842
+ color: black;
1843
+ border-radius: 6px;
1844
+ box-sizing: border-box;
1845
+ margin: 2px;
1846
+ }
1847
+
1848
+ .geSidebarText {
1849
+ margin: 4px 8px;
1850
+ text-align: center;
1851
+ font-size: 11px;
1852
+ padding: 6px 0px 0px;
1853
+ text-overflow: ellipsis;
1854
+ white-space: nowrap;
1855
+ overflow: hidden;
1856
+ cursor: default;
1857
+ }
1858
+
1859
+ .geButton:not([disabled], .geZoomInput),
1860
+ .geTitle:not([disabled]),
1861
+ .geItem:not([disabled]) {
1862
+ cursor: pointer;
1863
+ }
1864
+
1865
+ .geButton {
1866
+ height: 28px;
1867
+ flex-shrink: 0;
1868
+ flex-grow: 0;
1869
+ }
1870
+
1871
+ .mxPopupMenuItem:empty:has(+ .mxPopupMenuItem:empty),
1872
+ .mxPopupMenuItem:empty + .mxPopupMenuItem:empty {
1873
+ display: none;
1874
+ }
1875
+
1876
+ .mxPopupMenuIcon>img.geButton:empty {
1877
+ width: 22px;
1878
+ }
1879
+
1880
+ .geButton:empty:not(.geVerticalToolbar *, .geZoomInput, .geTemplate *, .geSidebarTooltip *),
1881
+ .geButton:has(> span.geCommentsBadge:only-child):not(.geVerticalToolbar *, .geZoomInput, .geTemplate *, .geSidebarTooltip *) {
1882
+ width: 28px;
1883
+ }
1884
+
1885
+ .geButton[disabled] {
1886
+ cursor: default;
1887
+ }
1888
+
1889
+ .geShapePicker>* {
1890
+ display: inline-block;
1891
+ width: 30px;
1892
+ height: 30px;
1893
+ padding: 1px;
1894
+ }
1895
+
1896
+ .geButton.geRoundButton:not(.geEmbed.geCompactMode .geButtonContainer .geButton) {
1897
+ background-size: 24px 24px;
1898
+ justify-content: center;
1899
+ box-sizing: content-box;
1900
+ border-radius: 50%;
1901
+ padding: 6px;
1902
+ }
1903
+
1904
+ .geSketch .geButton.geRoundButton {
1905
+ padding: 4px;
1906
+ }
1907
+
1908
+ .geRoundButton img {
1909
+ width: 26px;
1910
+ border-radius: 50%;
1911
+ }
1912
+
1913
+ /* Account icon: a div with a background-image (set in App.updateButtonContainer).
1914
+ The default silhouette also carries geAdaptiveAsset so it inverts in dark mode
1915
+ via the generic .geDarkMode .geAdaptiveAsset rule; a real account picture
1916
+ (geUserPhoto) is cover-fitted and never inverted. See #5364. The selector
1917
+ outweighs ".geButton > div" (which would stretch the div to width/height 100%). */
1918
+ .geButton.geRoundButton > .geUserAvatar {
1919
+ width: 26px;
1920
+ height: 26px;
1921
+ border-radius: 50%;
1922
+ background-position: center center;
1923
+ background-repeat: no-repeat;
1924
+ /* Scale the SVG silhouette to fill the box like the original <img> did
1925
+ (.geRoundButton img { width: 26px }); without this it falls back to the
1926
+ image's intrinsic 24px and renders too small. See #5364. */
1927
+ background-size: contain;
1928
+ }
1929
+
1930
+ .geButton.geRoundButton > .geUserPhoto {
1931
+ background-size: cover;
1932
+ }
1933
+
1934
+ /* In dark mode the parent .geButton already inverts its whole subtree
1935
+ (.geDarkMode .geButton), which lightens the default silhouette. So the avatar
1936
+ must NOT invert again via geAdaptiveAsset, or it double-inverts back to dark
1937
+ (the #5364 bug). A real photo, conversely, must counter the parent invert so it
1938
+ is never rendered as a negative. */
1939
+ .geDarkMode .geUserAvatar.geAdaptiveAsset {
1940
+ filter: none;
1941
+ }
1942
+
1943
+ .geDarkMode .geUserPhoto {
1944
+ filter: invert(1);
1945
+ }
1946
+
1947
+ .geSeparator {
1948
+ display: inline-block;
1949
+ background-color: #e5e5e5;
1950
+ margin-left: 6px;
1951
+ margin-right: 6px;
1952
+ height: 20px;
1953
+ width: 1px;
1954
+ }
1955
+
1956
+ .geHelpIcon {
1957
+ width: 16px;
1958
+ margin: 0 4px;
1959
+ vertical-align: text-bottom
1960
+ }
1961
+
1962
+ .geFormatSection {
1963
+ padding: 6px 0;
1964
+ position: relative;
1965
+ white-space: nowrap;
1966
+ border-top: 1px solid light-dark(var(--border-color), var(--dark-border-color));
1967
+ }
1968
+
1969
+ .geFormatSection:first-child {
1970
+ border-top: none;
1971
+ }
1972
+
1973
+ .geFormatSection:last-child {
1974
+ padding-bottom: 0;
1975
+ }
1976
+
1977
+ .geFormatSection select {
1978
+ position: absolute;
1979
+ text-align: center;
1980
+ text-overflow: ellipsis;
1981
+ height: 24px;
1982
+ border-radius: 4px;
1983
+ }
1984
+
1985
+ .geFormatSection table {
1986
+ border-collapse: collapse;
1987
+ border-spacing: 0;
1988
+ }
1989
+
1990
+ .geFormatSection table td {
1991
+ vertical-align: middle;
1992
+ max-width: 50%;
1993
+ width: 50%;
1994
+ padding: 0 0 0 2px;
1995
+ }
1996
+
1997
+ .geFormatSection table td select {
1998
+ position: relative;
1999
+ }
2000
+
2001
+ .geFormatSection *:empty:not(input),
2002
+ .geToolbarContainer *:not(input) {
2003
+ -webkit-user-select: none;
2004
+ user-select: none;
2005
+ }
2006
+
2007
+ .geFormatSection input:not([type="checkbox"], [type="radio"]),
2008
+ .geFormatSection button {
2009
+ box-sizing: border-box;
2010
+ height: 24px;
2011
+ border-radius: 4px;
2012
+ }
2013
+
2014
+ .geFormatSection input:not([type="checkbox"], [type="radio"]) {
2015
+ text-align: right;
2016
+ }
2017
+
2018
+ .geFormatSectionTitle {
2019
+ padding: 0px 0 6px 0;
2020
+ white-space: nowrap;
2021
+ overflow: hidden;
2022
+ width: 210px;
2023
+ font-weight: bold;
2024
+ }
2025
+
2026
+ /* Icon that a style rule of the page sets the value of a Format panel entry
2027
+ (BaseFormatPanel.addStyleRuleHint), which opens the rules when clicked */
2028
+ .geStyleRuleHint {
2029
+ display: inline-flex;
2030
+ align-items: center;
2031
+ margin-left: 4px;
2032
+ vertical-align: middle;
2033
+ flex-shrink: 0;
2034
+ color: light-dark(var(--secondary-text-color), var(--dark-secondary-text-color));
2035
+ }
2036
+
2037
+ .geStyleRuleHint[role="button"]:hover {
2038
+ color: light-dark(var(--focus-color), var(--dark-focus-color));
2039
+ }
2040
+
2041
+ /* The title has a gap between its children */
2042
+ .geCollapsibleTitle .geStyleRuleHint {
2043
+ margin-left: 0;
2044
+ }
2045
+
2046
+ .geCollapsibleTitle {
2047
+ cursor: pointer;
2048
+ -webkit-user-select: none;
2049
+ user-select: none;
2050
+ display: flex;
2051
+ align-items: center;
2052
+ gap: 6px;
2053
+ padding: 6px 0;
2054
+ font-weight: bold;
2055
+ font-size: 12px;
2056
+ }
2057
+
2058
+ .geCollapsibleTitle::before {
2059
+ content: '';
2060
+ display: inline-block;
2061
+ width: 0;
2062
+ height: 0;
2063
+ border-style: solid;
2064
+ border-width: 4px 0 4px 6px;
2065
+ border-color: transparent transparent transparent light-dark(var(--secondary-text-color), var(--dark-secondary-text-color));
2066
+ transition: transform 0.15s ease;
2067
+ flex-shrink: 0;
2068
+ }
2069
+
2070
+ .geCollapsibleTitle.geExpanded::before {
2071
+ transform: rotate(90deg);
2072
+ }
2073
+
2074
+ .geCollapsibleContent {
2075
+ position: relative;
2076
+ }
2077
+
2078
+ .geCollapsibleContent.geCollapsed {
2079
+ display: none;
2080
+ }
2081
+
2082
+ .geFormatEntry {
2083
+ display: flex;
2084
+ position: relative;
2085
+ align-items: center;
2086
+ white-space: nowrap;
2087
+ /* clip (not hidden) plus a small margin so the focus ring of a left-aligned
2088
+ checkbox is not cut off. The label self-truncates via .geStyleLabel, so
2089
+ this only needs to clip content overflowing to the right; the 2px bleed
2090
+ lands in the 12px .geFormatContent left margin with no layout shift. */
2091
+ overflow: clip;
2092
+ overflow-clip-margin: 4px;
2093
+ min-height: 28px;
2094
+ }
2095
+
2096
+ .geFormatEntry .geColorBtn {
2097
+ position: absolute;
2098
+ left: 166px;
2099
+ }
2100
+
2101
+ .geFormatEntry input {
2102
+ box-sizing: border-box;
2103
+ }
2104
+
2105
+ .geFormatEntry input[type="checkbox"] {
2106
+ margin: 0 8px 0 0;
2107
+ }
2108
+
2109
+ /* Shapes in windows and in the shapes panel of the minimal theme without
2110
+ windows (windows=0), with room for the library buttons */
2111
+ .mxWindowPane .geSidebarContainer,
2112
+ .geEditor>.geSidebarContainer .geSidebarContainer {
2113
+ position: absolute;
2114
+ width: 100% !important;
2115
+ top: 0;
2116
+ bottom: 28px;
2117
+ }
2118
+
2119
+ .mxWindowPane .geSidebarContainer.geFormatContainer {
2120
+ bottom: 0;
2121
+ }
2122
+
2123
+ .geEditor>div>.geMenubarContainer {
2124
+ border-bottom-style: solid;
2125
+ border-bottom-width: 1px;
2126
+ }
2127
+
2128
+ .geTabContainer {
2129
+ box-sizing: border-box;
2130
+ white-space: nowrap;
2131
+ overflow: hidden;
2132
+ padding: 0 20px 0 12px;
2133
+ display: flex;
2134
+ height: 32px;
2135
+ z-index: 1;
2136
+ }
2137
+
2138
+ .geMinimal .geTabContainer .geZoomInput {
2139
+ margin-left: auto;
2140
+ }
2141
+
2142
+ .geTabContainer .geZoomInput {
2143
+ margin: auto -16px auto 0;
2144
+ font-size: 12px;
2145
+ width: 56px;
2146
+ }
2147
+
2148
+ .geTabScroller {
2149
+ display: inline-block;
2150
+ position: relative;
2151
+ white-space: nowrap;
2152
+ overflow: hidden;
2153
+ overflow-x: auto;
2154
+ margin: 0 8px;
2155
+ -ms-overflow-style: none;
2156
+ scrollbar-width: none;
2157
+ left: 0px;
2158
+ }
2159
+
2160
+ .geTab .geButton {
2161
+ border-radius: 50%;
2162
+ margin-left: 0px;
2163
+ }
2164
+
2165
+ .gePageTab:not(.geActivePage) .geButton {
2166
+ display: none;
2167
+ }
2168
+
2169
+ .gePageTab:not(.geActivePage) {
2170
+ padding-right: 16px;
2171
+ }
2172
+
2173
+ .gePageTab {
2174
+ padding: 0px 0px 0px 16px;
2175
+ }
2176
+
2177
+ /* Page groups (see EditorUi.createTabForPageGroup): the tab of a group and
2178
+ the tabs of its pages are underlined and between lines, with a gap to the
2179
+ tabs outside of the group, and the groups without the current page are
2180
+ darker like the inactive tabs of the Format panel */
2181
+ .gePageTabGrouped,
2182
+ .gePageGroupTab {
2183
+ box-shadow: inset 0 -2px 0 light-dark(var(--strong-border-color), var(--dark-strong-border-color));
2184
+ }
2185
+
2186
+ .gePageTab.gePageTabCollapsed {
2187
+ display: none;
2188
+ }
2189
+
2190
+ .gePageGroupTab {
2191
+ vertical-align: top;
2192
+ margin-left: 4px;
2193
+ padding: 0px 2px 0px 4px;
2194
+ font-weight: 600;
2195
+ border-left: 1px solid light-dark(var(--strong-border-color), var(--dark-strong-border-color));
2196
+ }
2197
+
2198
+ .gePageGroupEnd {
2199
+ margin-right: 4px;
2200
+ border-right: 1px solid light-dark(var(--strong-border-color), var(--dark-strong-border-color));
2201
+ }
2202
+
2203
+ .gePageGroupInactive:not(:hover, .geActivePage) {
2204
+ background-color: light-dark(var(--inactive-color), var(--dark-highlight-color));
2205
+ }
2206
+
2207
+ .gePageGroupTab>div.geButton {
2208
+ width: 20px !important;
2209
+ }
2210
+
2211
+ /* Disclosure triangle of a group like in the collapsible sections of dialogs
2212
+ (.geCollapsibleTitle), which is not like the menu button of the tabs */
2213
+ .gePageGroupExpandedIcon,
2214
+ .gePageGroupCollapsedIcon {
2215
+ display: inline-flex;
2216
+ align-items: center;
2217
+ justify-content: center;
2218
+ }
2219
+
2220
+ .gePageGroupExpandedIcon::before,
2221
+ .gePageGroupCollapsedIcon::before {
2222
+ content: '';
2223
+ border-style: solid;
2224
+ border-width: 4px 0 4px 6px;
2225
+ border-color: transparent transparent transparent light-dark(var(--secondary-text-color), var(--dark-secondary-text-color));
2226
+ }
2227
+
2228
+ .gePageGroupExpandedIcon::before {
2229
+ transform: rotate(90deg);
2230
+ }
2231
+
2232
+ /* The group of the current page cannot be collapsed */
2233
+ .gePageGroupCurrent>.gePageGroupExpandedIcon {
2234
+ opacity: 0.4;
2235
+ }
2236
+
2237
+ .gePageGroupTab:not(:hover, :focus-within)>div.geButton:last-child {
2238
+ opacity: 0;
2239
+ }
2240
+
2241
+ .geControlTab {
2242
+ width: 30px;
2243
+ margin: 0 4px;
2244
+ }
2245
+
2246
+ .geTab {
2247
+ height: 100%;
2248
+ box-sizing: border-box;
2249
+ text-overflow: ellipsis;
2250
+ font-size: 13px;
2251
+ display: inline-flex;
2252
+ align-items: center;
2253
+ cursor: move;
2254
+ }
2255
+
2256
+ .geSidebar {
2257
+ transform-origin: top left;
2258
+ padding: 4px 6px 8px 14px;
2259
+ overflow: hidden;
2260
+ white-space: normal;
2261
+ }
2262
+
2263
+ .geEditor .geSearchSidebar {
2264
+ box-sizing: border-box;
2265
+ padding: 8px 4px 4px 4px;
2266
+ width: 100%;
2267
+ }
2268
+
2269
+ .geTitle {
2270
+ display: flex;
2271
+ font-size: 13px;
2272
+ background-repeat: no-repeat;
2273
+ background-position: 2px 50%;
2274
+ background-size: 20px;
2275
+ border-radius: 14px;
2276
+ padding: 8px 0px 8px 22px;
2277
+ margin: 2px 4px 4px 4px;
2278
+ cursor: default;
2279
+ white-space: nowrap;
2280
+ overflow: hidden;
2281
+ text-overflow: ellipsis;
2282
+ justify-content: start;
2283
+ align-items: center;
2284
+ height: 30px;
2285
+ }
2286
+
2287
+ .geTitle>span {
2288
+ flex-grow: 1;
2289
+ flex-shrink: 1;
2290
+ width: 0;
2291
+ overflow: hidden;
2292
+ text-overflow: ellipsis;
2293
+ }
2294
+
2295
+ .geSidebarContainer .geDropTarget {
2296
+ border: 2px dotted currentcolor;
2297
+ border-radius: 10px;
2298
+ text-align: center;
2299
+ font-size: 12px;
2300
+ color: light-dark(#5f5f63, #a0a0a0);
2301
+ padding: 6px;
2302
+ margin: 4px 6px 4px 0;
2303
+ }
2304
+
2305
+ .geTitle>div {
2306
+ display: flex;
2307
+ flex-grow: 0;
2308
+ padding-right: 4px;
2309
+ }
2310
+
2311
+ .geLibraryButton {
2312
+ position: relative;
2313
+ border-radius: 50%;
2314
+ padding: 5px;
2315
+ width: 14px;
2316
+ cursor: pointer;
2317
+ margin: 0px 1px;
2318
+ opacity: 0.75;
2319
+ }
2320
+
2321
+ .geLibraryButton:hover {
2322
+ background-color: var(--active-color);
2323
+ }
2324
+
2325
+ /* Keyboard focus ring of the buttons in the titles of libraries */
2326
+ .geLibraryButton:focus-visible {
2327
+ outline: 2px solid light-dark(var(--focus-color), var(--dark-focus-color));
2328
+ opacity: 1;
2329
+ }
2330
+
2331
+ .geTitle .geButton {
2332
+ border: 1px solid transparent;
2333
+ padding: 3px;
2334
+ border-radius: 2px;
2335
+ }
2336
+
2337
+ .geTitle .geButton:hover {
2338
+ border: 1px solid gray;
2339
+ }
2340
+
2341
+ .geSidebar .geItem,
2342
+ .geShapePicker .geItem {
2343
+ overflow: hidden;
2344
+ display: inline-block;
2345
+ padding: 2px;
2346
+ border-radius: 4px;
2347
+ transition: transform 100ms ease-out;
2348
+ opacity: 0.75;
2349
+ }
2350
+
2351
+ .geSidebar .geItem:active,
2352
+ .geShapePicker .geItem:active {
2353
+ transform: scale(0.8, 0.8);
2354
+ }
2355
+
2356
+ .geSidebarTooltip {
2357
+ position: absolute;
2358
+ overflow: hidden;
2359
+ border-width: 1px;
2360
+ border-style: solid;
2361
+ box-shadow: 0 2px 6px 2px rgba(60, 64, 67, .15);
2362
+ border-radius: 6px;
2363
+ }
2364
+
2365
+ .geSidebarTooltip .geButton {
2366
+ position: absolute;
2367
+ padding: 2px;
2368
+ margin: 0;
2369
+ right: 2px;
2370
+ top: 2px;
2371
+ width: 20px;
2372
+ height: 20px;
2373
+ }
2374
+
2375
+ .geDialog {
2376
+ position: absolute;
2377
+ background-color: light-dark(var(--dialog-color), var(--dark-dialog-color));
2378
+ line-height: 1em;
2379
+ overflow: hidden;
2380
+ padding: 24px;
2381
+ border: light-dark(none, 1px solid rgba(255, 255, 255, 0.1));
2382
+ left: 50%;
2383
+ top: 50%;
2384
+ max-height: 100%;
2385
+ max-width: 100%;
2386
+ transform: translate(-50%, -50%);
2387
+ box-sizing: border-box;
2388
+ }
2389
+
2390
+ /* Tall dialogs: cap the content area to the dialog's content box and let
2391
+ it scroll. The close button (.geButton) is a positioned-absolute sibling
2392
+ of the content so it stays at the top-right regardless of scroll. */
2393
+ .geDialog > :first-child {
2394
+ max-height: 100%;
2395
+ overflow-y: auto;
2396
+ box-sizing: border-box;
2397
+ }
2398
+
2399
+ .geDialog > .geButton {
2400
+ top: 8px !important;
2401
+ right: 8px !important;
2402
+ width: 20px;
2403
+ height: 20px;
2404
+ border-radius: 50%;
2405
+ background-size: 10px;
2406
+ background-position: center;
2407
+ background-repeat: no-repeat;
2408
+ opacity: 0.5;
2409
+ transition: opacity 0.1s ease, background-color 0.1s ease;
2410
+ }
2411
+
2412
+ .geDialog > .geButton:hover {
2413
+ opacity: 0.8;
2414
+ background-color: light-dark(rgba(0, 0, 0, 0.1), rgba(255, 255, 255, 0.1));
2415
+ }
2416
+
2417
+ .geDialog input[type="text"],
2418
+ .geDialog input[type="number"],
2419
+ .geDialog textarea,
2420
+ .geDialog select {
2421
+ border-radius: 6px;
2422
+ border: 1px solid light-dark(rgba(0, 0, 0, 0.15), rgba(255, 255, 255, 0.15));
2423
+ background-color: light-dark(var(--field-color), var(--dark-field-color));
2424
+ padding: 4px 8px;
2425
+ font-size: 13px;
2426
+ outline: none;
2427
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
2428
+ }
2429
+
2430
+ .geDialog input[type="text"]:focus,
2431
+ .geDialog input[type="number"]:focus,
2432
+ .geDialog textarea:focus,
2433
+ .geDialog select:focus {
2434
+ border-color: light-dark(var(--focus-color), var(--dark-focus-color));
2435
+ box-shadow: 0 0 0 3px light-dark(color-mix(in srgb, var(--focus-color) 25%, transparent), color-mix(in srgb, var(--dark-focus-color) 25%, transparent));
2436
+ }
2437
+
2438
+ /* Some dialog selects carry .geBtn for its sizing; keep the button font
2439
+ weight off so all selects in a dialog render alike */
2440
+ .geDialog select {
2441
+ font-weight: normal;
2442
+ }
2443
+
2444
+ /* Dialog titles: a plain <h3>, styled centrally - dialogs must not set
2445
+ inline title styles. flex-shrink matters for titles in flex columns */
2446
+ .geDialog h3 {
2447
+ width: 100%;
2448
+ text-align: center;
2449
+ margin: 0 0 16px;
2450
+ flex-shrink: 0;
2451
+ }
2452
+
2453
+ /* Dialog form sections and layout */
2454
+ .geDialogSection {
2455
+ background: light-dark(rgba(0, 0, 0, 0.035), rgba(255, 255, 255, 0.05));
2456
+ border: 1px solid light-dark(rgba(0, 0, 0, 0.06), rgba(255, 255, 255, 0.06));
2457
+ border-radius: 8px;
2458
+ padding: 10px 12px;
2459
+ margin-bottom: 10px;
2460
+ }
2461
+
2462
+ .geDialogSection > input[type="checkbox"],
2463
+ .geDialogSection > input[type="radio"] {
2464
+ margin-top: 6px !important;
2465
+ }
2466
+
2467
+ .geDialogSection > input[type="checkbox"]:first-child,
2468
+ .geDialogSection > input[type="radio"]:first-child {
2469
+ margin-top: 0 !important;
2470
+ }
2471
+
2472
+ .geDialogFormRow {
2473
+ display: flex;
2474
+ align-items: center;
2475
+ min-height: 28px;
2476
+ column-gap: 8px;
2477
+ }
2478
+
2479
+ .geDialogFormLabel {
2480
+ color: light-dark(var(--strong-text-color), var(--dark-strong-text-color));
2481
+ min-width: 100px;
2482
+ flex-shrink: 0;
2483
+ }
2484
+
2485
+ .geDialogFormRow input[type="text"],
2486
+ .geDialogFormRow input[type="number"],
2487
+ .geDialogFormRow select,
2488
+ .geDialogFormRow textarea {
2489
+ flex: 1;
2490
+ min-width: 0;
2491
+ /* The row's column-gap owns the spacing - class margins (e.g. .geBtn's
2492
+ margin-left) must not shift controls off the label column */
2493
+ margin-left: 0;
2494
+ }
2495
+
2496
+ /* Rows whose content spans multiple lines (stacked controls, wrapping
2497
+ hint text): top-align the label with the first content line instead
2498
+ of centering it against the whole block */
2499
+ .geDialogFormRowTop {
2500
+ align-items: flex-start;
2501
+ }
2502
+
2503
+ .geDialogFormRowTop > .geDialogFormLabel {
2504
+ padding-top: 4px;
2505
+ }
2506
+
2507
+ /* Marks a required field of a dialog that is still empty or invalid, like
2508
+ the style key of a step in the action dialog (.geAnimationFieldWarn) */
2509
+ .geDialog .geDialogFieldWarn {
2510
+ border-color: light-dark(#e6a700, #ffcc4d) !important;
2511
+ box-shadow: 0 0 0 1px light-dark(rgba(230, 167, 0, 0.25), rgba(255, 204, 77, 0.25));
2512
+ }
2513
+
2514
+ /* Explanatory hint text describing what an option does - never for the
2515
+ current value of an entry, which stays in the regular text style */
2516
+ .geDialogHint {
2517
+ font-size: 12px;
2518
+ }
2519
+
2520
+ /* Gray text in dialogs with at least 4.5:1 on their background (the secondary
2521
+ text color has 4.45:1 on the light dialog color and gray 3.5:1) */
2522
+ .geDialogHint, .geSecondaryText {
2523
+ color: light-dark(#5f5f63, var(--dark-secondary-text-color));
2524
+ }
2525
+
2526
+ /* Home screen (HomeDialog): the Google Drive diagrams draw.io can open */
2527
+ .geHome {
2528
+ display: flex;
2529
+ flex-direction: column;
2530
+ height: 100%;
2531
+ min-height: 0;
2532
+ line-height: normal;
2533
+ }
2534
+
2535
+ /* Only the nav and the grid scroll: as a scroll container (.geDialog >
2536
+ :first-child), Home would clip the focus rings at its edges */
2537
+ .geDialog > div.geHome {
2538
+ overflow: visible;
2539
+ }
2540
+
2541
+ .geHome .geHomeHeader {
2542
+ display: flex;
2543
+ align-items: center;
2544
+ gap: 12px;
2545
+ flex: 0 0 auto;
2546
+ padding-bottom: 16px;
2547
+ }
2548
+
2549
+ .geHome .geHomeTitle {
2550
+ display: flex;
2551
+ align-items: center;
2552
+ gap: 8px;
2553
+ font-size: 16px;
2554
+ font-weight: 600;
2555
+ white-space: nowrap;
2556
+ color: light-dark(var(--strong-text-color), var(--dark-strong-text-color));
2557
+ }
2558
+
2559
+ .geHome .geHomeTitle img {
2560
+ width: 24px;
2561
+ height: 24px;
2562
+ }
2563
+
2564
+ .geHome input.geHomeSearch {
2565
+ flex: 1 1 auto;
2566
+ min-width: 0;
2567
+ max-width: 420px;
2568
+ height: 32px;
2569
+ margin-left: auto;
2570
+ padding: 0 14px;
2571
+ box-sizing: border-box;
2572
+ border-radius: 16px;
2573
+ border: 1px solid light-dark(var(--field-border-color), var(--dark-field-border-color));
2574
+ background: light-dark(var(--field-color), var(--dark-field-color));
2575
+ color: inherit;
2576
+ }
2577
+
2578
+ /* Same ring as the cards in every browser (Firefox draws a thick outline) */
2579
+ .geHome input.geHomeSearch:focus {
2580
+ outline: 1px solid transparent;
2581
+ border-color: light-dark(var(--focus-color), var(--dark-focus-color));
2582
+ box-shadow: 0 0 0 3px light-dark(color-mix(in srgb, var(--focus-color) 35%, transparent), color-mix(in srgb, var(--dark-focus-color) 35%, transparent));
2583
+ }
2584
+
2585
+ .geHome .geHomeNewButton {
2586
+ flex: 0 0 auto;
2587
+ margin: 0;
2588
+ }
2589
+
2590
+ .geHome .geHomeBody {
2591
+ display: flex;
2592
+ flex: 1 1 auto;
2593
+ gap: 16px;
2594
+ min-height: 0;
2595
+ }
2596
+
2597
+ .geHome .geHomeNav {
2598
+ display: flex;
2599
+ flex-direction: column;
2600
+ flex: 0 0 200px;
2601
+ gap: 2px;
2602
+ min-height: 0;
2603
+ min-width: 0;
2604
+ /* Scrolls in short dialogs, with room for the focus rings */
2605
+ overflow-y: auto;
2606
+ padding: 3px;
2607
+ margin: -3px;
2608
+ }
2609
+
2610
+ .geHome .geHomeNavItem {
2611
+ flex: 0 0 auto;
2612
+ padding: 7px 12px;
2613
+ border: none;
2614
+ border-radius: 16px;
2615
+ background: transparent;
2616
+ color: inherit;
2617
+ font: inherit;
2618
+ text-align: left;
2619
+ overflow-wrap: anywhere;
2620
+ cursor: pointer;
2621
+ }
2622
+
2623
+ .geHome .geHomeNavItem:hover {
2624
+ background: light-dark(var(--soft-hover-color), var(--dark-soft-hover-color));
2625
+ }
2626
+
2627
+ .geHome .geHomeNavItem[aria-current="true"] {
2628
+ background: light-dark(var(--selected-color), color-mix(in srgb, var(--dark-focus-color) 20%, transparent));
2629
+ font-weight: 600;
2630
+ }
2631
+
2632
+ /* Same ring as buttons (see .geBtn:focus-visible), in the room for the rings
2633
+ of the nav and main parts */
2634
+ .geHome .geHomeNavItem:focus-visible,
2635
+ .geHome .geHomeCard:focus-visible {
2636
+ outline: 2px solid light-dark(var(--focus-color), var(--dark-focus-color));
2637
+ outline-offset: 1px;
2638
+ }
2639
+
2640
+ .geHome .geHomeNavSeparator {
2641
+ margin: 8px 12px;
2642
+ border-top: 1px solid light-dark(var(--border-color), var(--dark-border-color));
2643
+ }
2644
+
2645
+ .geHome .geHomeNavFooter {
2646
+ margin-top: auto;
2647
+ padding: 12px 12px 0 12px;
2648
+ overflow-wrap: anywhere;
2649
+ }
2650
+
2651
+ .geHome .geHomeMain {
2652
+ flex: 1 1 auto;
2653
+ min-width: 0;
2654
+ overflow-y: auto;
2655
+ padding: 3px;
2656
+ }
2657
+
2658
+ .geHome .geHomeHint {
2659
+ margin: 0 0 12px 0;
2660
+ }
2661
+
2662
+ .geHome .geHomeGrid {
2663
+ display: grid;
2664
+ grid-template-columns: repeat(auto-fill, minmax(168px, 1fr));
2665
+ gap: 16px;
2666
+ }
2667
+
2668
+ .geHome .geHomeCard {
2669
+ display: flex;
2670
+ flex-direction: column;
2671
+ min-width: 0;
2672
+ padding: 0;
2673
+ overflow: hidden;
2674
+ border: 1px solid light-dark(var(--field-border-color), var(--dark-field-border-color));
2675
+ border-radius: 12px;
2676
+ background: light-dark(var(--card-color), var(--dark-card-color));
2677
+ color: inherit;
2678
+ font: inherit;
2679
+ text-align: left;
2680
+ cursor: pointer;
2681
+ }
2682
+
2683
+ .geHome .geHomeCard:hover {
2684
+ border-color: light-dark(var(--strong-border-color), var(--dark-strong-border-color));
2685
+ }
2686
+
2687
+ .geHome .geHomeThumb {
2688
+ display: flex;
2689
+ align-items: center;
2690
+ justify-content: center;
2691
+ height: 112px;
2692
+ overflow: hidden;
2693
+ background: light-dark(var(--soft-color), var(--dark-soft-color));
2694
+ }
2695
+
2696
+ .geHome .geHomeThumb img {
2697
+ width: 100%;
2698
+ height: 100%;
2699
+ object-fit: contain;
2700
+ }
2701
+
2702
+ .geHome .geHomeThumb img.geHomePlaceholder {
2703
+ width: 40px;
2704
+ height: 40px;
2705
+ opacity: 0.35;
2706
+ }
2707
+
2708
+ .geHome .geHomeCardText {
2709
+ display: flex;
2710
+ flex-direction: column;
2711
+ gap: 3px;
2712
+ min-width: 0;
2713
+ padding: 8px 10px 10px 10px;
2714
+ }
2715
+
2716
+ .geHome .geHomeCardTitle,
2717
+ .geHome .geHomeCardMeta {
2718
+ white-space: nowrap;
2719
+ overflow: hidden;
2720
+ text-overflow: ellipsis;
2721
+ line-height: normal;
2722
+ }
2723
+
2724
+ .geHome .geHomeCardTitle {
2725
+ font-weight: 600;
2726
+ }
2727
+
2728
+ .geHome .geHomeCardMeta {
2729
+ font-size: 12px;
2730
+ color: light-dark(var(--secondary-text-color), var(--dark-secondary-text-color));
2731
+ }
2732
+
2733
+ .geHome .geHomeAddCard {
2734
+ align-items: center;
2735
+ justify-content: center;
2736
+ gap: 6px;
2737
+ min-height: 160px;
2738
+ padding: 12px;
2739
+ border-style: dashed;
2740
+ text-align: center;
2741
+ color: light-dark(var(--accent-text-color), var(--dark-accent-text-color));
2742
+ }
2743
+
2744
+ .geHome .geHomeAddIcon {
2745
+ font-size: 28px;
2746
+ line-height: 1;
2747
+ }
2748
+
2749
+ .geHome .geHomeSkeleton {
2750
+ pointer-events: none;
2751
+ }
2752
+
2753
+ .geHome .geHomeSkeleton .geHomeThumb,
2754
+ .geHome .geHomeSkeleton .geHomeCardTitle,
2755
+ .geHome .geHomeSkeleton .geHomeCardMeta {
2756
+ animation: geHomePulse 1.2s ease-in-out infinite;
2757
+ }
2758
+
2759
+ .geHome .geHomeSkeleton .geHomeCardTitle,
2760
+ .geHome .geHomeSkeleton .geHomeCardMeta {
2761
+ height: 12px;
2762
+ border-radius: 4px;
2763
+ background: light-dark(var(--soft-color), var(--dark-soft-color));
2764
+ }
2765
+
2766
+ .geHome .geHomeSkeleton .geHomeCardTitle {
2767
+ width: 70%;
2768
+ }
2769
+
2770
+ .geHome .geHomeSkeleton .geHomeCardMeta {
2771
+ width: 40%;
2772
+ }
2773
+
2774
+ @keyframes geHomePulse {
2775
+ 0%, 100% { opacity: 1; }
2776
+ 50% { opacity: 0.45; }
2777
+ }
2778
+
2779
+ @media (prefers-reduced-motion: reduce) {
2780
+ .geHome .geHomeSkeleton .geHomeThumb,
2781
+ .geHome .geHomeSkeleton .geHomeCardTitle,
2782
+ .geHome .geHomeSkeleton .geHomeCardMeta {
2783
+ animation: none;
2784
+ }
2785
+ }
2786
+
2787
+ .geHome .geHomeStatus {
2788
+ display: flex;
2789
+ flex-direction: column;
2790
+ align-items: center;
2791
+ gap: 12px;
2792
+ padding: 48px 16px;
2793
+ text-align: center;
2794
+ }
2795
+
2796
+ .geHome .geHomeStatusTitle {
2797
+ font-size: 16px;
2798
+ font-weight: 600;
2799
+ }
2800
+
2801
+ .geHome .geHomeMore {
2802
+ display: flex;
2803
+ flex-direction: column;
2804
+ align-items: center;
2805
+ gap: 8px;
2806
+ padding: 16px 0 4px 0;
2807
+ }
2808
+
2809
+ /* Narrow dialogs: the nav becomes a scrolling row above the grid */
2810
+ .geHome.geHomeNarrow .geHomeHeader {
2811
+ flex-wrap: wrap;
2812
+ }
2813
+
2814
+ .geHome.geHomeNarrow input.geHomeSearch {
2815
+ order: 3;
2816
+ flex-basis: 100%;
2817
+ max-width: none;
2818
+ margin-left: 0;
2819
+ }
2820
+
2821
+ .geHome.geHomeNarrow .geHomeBody {
2822
+ flex-direction: column;
2823
+ gap: 8px;
2824
+ }
2825
+
2826
+ .geHome.geHomeNarrow .geHomeNav {
2827
+ flex: 0 0 auto;
2828
+ flex-direction: row;
2829
+ overflow-x: auto;
2830
+ }
2831
+
2832
+ .geHome.geHomeNarrow .geHomeNavItem {
2833
+ white-space: nowrap;
2834
+ }
2835
+
2836
+ .geHome.geHomeNarrow .geHomeNewButton {
2837
+ margin-left: auto;
2838
+ }
2839
+
2840
+ .geHome.geHomeNarrow .geHomeNavSeparator,
2841
+ .geHome.geHomeNarrow .geHomeNavFooter {
2842
+ display: none;
2843
+ }
2844
+
2845
+ .geHome.geHomeNarrow .geHomeGrid {
2846
+ grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
2847
+ gap: 12px;
2848
+ }
2849
+
2850
+ /* Actions shown as links: the Home hint and the Allow access dialog */
2851
+ .geHomeAccess .geHomeLinks {
2852
+ display: flex;
2853
+ flex-wrap: wrap;
2854
+ gap: 16px;
2855
+ margin-top: 16px;
2856
+ }
2857
+
2858
+ .geHome .geHomeLink,
2859
+ .geHomeAccess .geHomeLink {
2860
+ padding: 0;
2861
+ border: none;
2862
+ background: none;
2863
+ color: light-dark(var(--accent-text-color), var(--dark-accent-text-color));
2864
+ font: inherit;
2865
+ text-decoration: underline;
2866
+ cursor: pointer;
2867
+ }
2868
+
2869
+ .geHome .geHomeLink:hover,
2870
+ .geHomeAccess .geHomeLink:hover {
2871
+ background: none;
2872
+ }
2873
+
2874
+ .geDialogCheckRow {
2875
+ display: flex;
2876
+ align-items: center;
2877
+ min-height: 28px;
2878
+ }
2879
+
2880
+ /* Uniform vertical spacing between rows in a section, regardless of row type */
2881
+ .geDialogSection > .geDialogFormRow,
2882
+ .geDialogSection > .geDialogCheckRow,
2883
+ .geDialogSection > .geDialogInlineFields {
2884
+ margin-top: 6px;
2885
+ }
2886
+
2887
+ .geDialogSection > .geDialogFormRow:first-child,
2888
+ .geDialogSection > .geDialogCheckRow:first-child,
2889
+ .geDialogSection > .geDialogInlineFields:first-child {
2890
+ margin-top: 0;
2891
+ }
2892
+
2893
+ .geDialogCheckRow input[type="checkbox"],
2894
+ .geDialogCheckRow input[type="radio"] {
2895
+ margin: 0 8px 0 0;
2896
+ flex-shrink: 0;
2897
+ }
2898
+
2899
+ .geDialogCheckRow label {
2900
+ color: light-dark(var(--strong-text-color), var(--dark-strong-text-color));
2901
+ cursor: pointer;
2902
+ }
2903
+
2904
+ .geDialogCheckRow select {
2905
+ margin-left: 8px;
2906
+ flex: 1;
2907
+ min-width: 0;
2908
+ }
2909
+
2910
+ .geDialogInlineFields {
2911
+ display: flex;
2912
+ gap: 12px;
2913
+ align-items: center;
2914
+ }
2915
+
2916
+ .geDialogInlineField {
2917
+ display: flex;
2918
+ align-items: center;
2919
+ gap: 6px;
2920
+ flex: 1;
2921
+ min-width: 0;
2922
+ }
2923
+
2924
+ .geDialog .geCollapsibleTitle {
2925
+ margin-top: 4px;
2926
+ }
2927
+
2928
+ /* The title of an Advanced section has the space between sections above and
2929
+ below it (see EditorUi.addAdvancedSection) */
2930
+ .geDialog .geCollapsibleContent {
2931
+ margin-top: 10px;
2932
+ }
2933
+
2934
+ .geDialogInlineField label {
2935
+ color: light-dark(var(--strong-text-color), var(--dark-strong-text-color));
2936
+ white-space: nowrap;
2937
+ }
2938
+
2939
+ .geDialogInlineField input[type="text"],
2940
+ .geDialogInlineField input[type="number"] {
2941
+ flex: 1;
2942
+ min-width: 0;
2943
+ }
2944
+
2945
+ .geDialog.geInlineDialog {
2946
+ padding: 0px;
2947
+ left: auto;
2948
+ transform: none;
2949
+ z-index: 4;
2950
+ }
2951
+
2952
+ .geTransDialog {
2953
+ position: absolute;
2954
+ overflow: hidden;
2955
+ }
2956
+
2957
+ .geDialogTitle {
2958
+ box-sizing: border-box;
2959
+ white-space: nowrap;
2960
+ border-bottom: 1px solid light-dark(rgba(0, 0, 0, 0.1), rgba(255, 255, 255, 0.1));
2961
+ font-size: 13px;
2962
+ font-weight: 600;
2963
+ text-align: center;
2964
+ color: light-dark(var(--strong-text-color), var(--dark-strong-text-color));
2965
+ }
2966
+
2967
+ .geDialogFooter {
2968
+ white-space: nowrap;
2969
+ text-align: right;
2970
+ box-sizing: border-box;
2971
+ border-top: 1px solid light-dark(rgba(0, 0, 0, 0.1), rgba(255, 255, 255, 0.1));
2972
+ }
2973
+
2974
+ .geMoreShapesSectionHeader {
2975
+ font-size: 11px;
2976
+ font-weight: 600;
2977
+ text-transform: uppercase;
2978
+ letter-spacing: 0.5px;
2979
+ color: light-dark(#5f5f63, var(--dark-secondary-text-color));
2980
+ background-color: light-dark(rgba(0, 0, 0, 0.04), rgba(255, 255, 255, 0.04));
2981
+ padding: 8px 12px 8px 16px;
2982
+ border-bottom: 1px solid light-dark(rgba(0, 0, 0, 0.06), rgba(255, 255, 255, 0.06));
2983
+ user-select: none;
2984
+ }
2985
+
2986
+ .geMoreShapesItem {
2987
+ display: flex;
2988
+ align-items: center;
2989
+ padding: 6px 0 6px 16px;
2990
+ cursor: pointer;
2991
+ font-size: 13px;
2992
+ line-height: normal;
2993
+ color: light-dark(var(--strong-text-color), var(--dark-strong-text-color));
2994
+ transition: background-color 0.1s ease;
2995
+ }
2996
+
2997
+ .geMoreShapesItem:hover {
2998
+ background-color: light-dark(rgba(0, 0, 0, 0.05), rgba(255, 255, 255, 0.07));
2999
+ }
3000
+
3001
+ .geMoreShapesItem.geMoreShapesItemSelected {
3002
+ background-color: light-dark(var(--selected-color), color-mix(in srgb, var(--dark-focus-color) 20%, transparent));
3003
+ }
3004
+
3005
+ .geMoreShapesItem.geMoreShapesItemSelected:hover {
3006
+ background-color: light-dark(var(--selected-hover-color), color-mix(in srgb, var(--dark-focus-color) 25%, transparent));
3007
+ }
3008
+
3009
+ .geMoreShapesItem input[type="checkbox"] {
3010
+ margin: 0 8px 0 0;
3011
+ flex-shrink: 0;
3012
+ }
3013
+
3014
+ .geMoreShapesItem span {
3015
+ flex: 1;
3016
+ min-width: 0;
3017
+ overflow: hidden;
3018
+ white-space: nowrap;
3019
+ text-overflow: ellipsis;
3020
+ }
3021
+
3022
+ .geMoreShapesPreview {
3023
+ border-left: 1px solid light-dark(rgba(0, 0, 0, 0.1), rgba(255, 255, 255, 0.1));
3024
+ }
3025
+
3026
+ .geMoreShapesPreview img {
3027
+ background-color: #ffffff;
3028
+ }
3029
+
3030
+ .geMoreShapesFooterChecks {
3031
+ display: inline-flex;
3032
+ align-items: center;
3033
+ gap: 16px;
3034
+ width: 204px;
3035
+ flex-shrink: 0;
3036
+ }
3037
+
3038
+ .geMoreShapesFooterCheck {
3039
+ display: inline-flex;
3040
+ align-items: center;
3041
+ gap: 6px;
3042
+ font-size: 13px;
3043
+ color: light-dark(var(--strong-text-color), var(--dark-strong-text-color));
3044
+ cursor: pointer;
3045
+ user-select: none;
3046
+ }
3047
+
3048
+ .geMoreShapesFooterCheck input[type="checkbox"] {
3049
+ margin: 0;
3050
+ flex-shrink: 0;
3051
+ }
3052
+
3053
+ .geEditor .geBaseButton {
3054
+ padding: 10px;
3055
+ border-radius: 6px;
3056
+ cursor: pointer;
3057
+ border-width: 1px;
3058
+ border-style: solid;
3059
+ }
3060
+
3061
+ .geEditor .geBaseButton:hover {
3062
+ background-color: #ececec;
3063
+ }
3064
+
3065
+ .geEditor button.geBigButton {
3066
+ color: #ffffff;
3067
+ border: none;
3068
+ padding: 4px 10px;
3069
+ font-size: 14px;
3070
+ white-space: nowrap;
3071
+ border-radius: 3px;
3072
+ background-color: #0052cc;
3073
+ cursor: pointer;
3074
+ transition: background-color 0.1s ease-out;
3075
+ overflow: hidden;
3076
+ text-overflow: ellipsis;
3077
+ }
3078
+
3079
+ .geEditor button.geBigButton:hover {
3080
+ background-color: #0065ff;
3081
+ }
3082
+
3083
+ .geEditor button.geBigButton:active {
3084
+ background-color: #0747a6;
3085
+ }
3086
+
3087
+ html body .geBigStandardButton {
3088
+ color: #344563;
3089
+ background-color: rgba(9, 30, 66, 0.08);
3090
+ }
3091
+
3092
+ html body .geBigStandardButton:hover {
3093
+ background-color: rgba(9, 30, 66, 0.13);
3094
+ }
3095
+
3096
+ html body .geBigStandardButton:active {
3097
+ background-color: #F8C382;
3098
+ color: #600000;
3099
+ }
3100
+
3101
+ @media print {
3102
+ div.geNoPrint {
3103
+ display: none !important;
3104
+ }
3105
+ }
3106
+
3107
+ html div.mxRubberband {
3108
+ border-color: light-dark(#0000DD, white);
3109
+ background-color: light-dark(#99ccff, var(--dark-border-color));
3110
+ }
3111
+
3112
+ .geDarkMode div.mxRubberband {
3113
+ border-style: dashed;
3114
+ }
3115
+
3116
+ .geEditor div.mxPopupMenu {
3117
+ box-shadow: 0px 0px 2px #C0C0C0;
3118
+ background-color: var(--ge-panel-color);
3119
+ background-image: none;
3120
+ border-radius: 4px;
3121
+ border-style: solid;
3122
+ border-width: 1px;
3123
+ border-color: lightgray;
3124
+ padding: 3px;
3125
+ }
3126
+
3127
+ .geEditor div.mxPopupMenu.geToolbarMenu {
3128
+ border-radius: 10px;
3129
+ box-shadow: 0px 0px 3px 1px #d1d1d1;
3130
+ padding: 10px 14px 12px 14px;
3131
+ background-color: light-dark(var(--ge-panel-color), var(--ge-dark-panel-color));
3132
+ }
3133
+
3134
+ .geToolbarMenu tr.mxPopupMenuItemHover {
3135
+ background-color: transparent !important;
3136
+ }
3137
+
3138
+ .geToolbarMenu input[type="checkbox"] {
3139
+ margin: 0 6px 0 0;
3140
+ }
3141
+
3142
+ .geToolbarMenu label {
3143
+ font-size: 13px;
3144
+ }
3145
+
3146
+ .geSearchSidebar input {
3147
+ font-size: 12px;
3148
+ box-sizing: border-box;
3149
+ border-radius: 18px;
3150
+ width: 100%;
3151
+ outline: none;
3152
+ padding: 6px 20px 6px 10px
3153
+ }
3154
+
3155
+ /* Status messages for screen readers that are not shown (see EditorUi.announce) */
3156
+ .geLiveRegion {
3157
+ position: absolute;
3158
+ width: 1px;
3159
+ height: 1px;
3160
+ overflow: hidden;
3161
+ clip-path: inset(50%);
3162
+ white-space: nowrap;
3163
+ }
3164
+
3165
+ /* Cells of the page as a tree (see TextOutlineWindow), with the colors of
3166
+ the layers and page tabs. The window collapses the groups itself. */
3167
+ .geTextOutline {
3168
+ position: absolute;
3169
+ inset: 0;
3170
+ overflow: auto;
3171
+ padding: 6px 0;
3172
+ box-sizing: border-box;
3173
+ font-size: 12px;
3174
+ line-height: 16px;
3175
+ user-select: none;
3176
+ color: light-dark(var(--strong-text-color), var(--dark-strong-text-color));
3177
+ }
3178
+
3179
+ .geTextOutline ul {
3180
+ list-style: none;
3181
+ margin: 0;
3182
+ padding: 0;
3183
+ }
3184
+
3185
+ .geTextOutline li {
3186
+ outline: none;
3187
+ }
3188
+
3189
+ .geTextOutlineItem {
3190
+ display: flex;
3191
+ align-items: center;
3192
+ height: 26px;
3193
+ margin: 0 6px;
3194
+ padding-right: 8px;
3195
+ border-radius: 6px;
3196
+ white-space: nowrap;
3197
+ cursor: default;
3198
+ }
3199
+
3200
+ .geTextOutlineItem:hover {
3201
+ background-color: light-dark(var(--highlight-color), var(--dark-border-color));
3202
+ }
3203
+
3204
+ .geTextOutline li[aria-selected="true"] > .geTextOutlineItem {
3205
+ background-color: light-dark(var(--accent-color), var(--dark-accent-color));
3206
+ color: light-dark(var(--accent-text-color), var(--dark-accent-text-color));
3207
+ }
3208
+
3209
+ .geTextOutline li[aria-selected="true"] > .geTextOutlineItem:hover {
3210
+ background-color: light-dark(var(--accent-hover-color), var(--dark-active-accent-color));
3211
+ }
3212
+
3213
+ .geTextOutline li:focus-visible > .geTextOutlineItem {
3214
+ outline: 2px solid light-dark(var(--focus-color), var(--dark-focus-color));
3215
+ outline-offset: -2px;
3216
+ }
3217
+
3218
+ .geTextOutlineToggle {
3219
+ flex: none;
3220
+ display: flex;
3221
+ align-items: center;
3222
+ justify-content: center;
3223
+ width: 18px;
3224
+ height: 18px;
3225
+ margin-right: 2px;
3226
+ border-radius: 4px;
3227
+ }
3228
+
3229
+ .geTextOutlineToggle img {
3230
+ width: 16px;
3231
+ height: 16px;
3232
+ opacity: 0.55;
3233
+ cursor: pointer;
3234
+ transition: transform 0.15s ease;
3235
+ }
3236
+
3237
+ .geTextOutlineToggle:hover img {
3238
+ opacity: 1;
3239
+ }
3240
+
3241
+ .geTextOutline li[aria-expanded="false"] > .geTextOutlineItem .geTextOutlineToggle img {
3242
+ transform: rotate(-90deg);
3243
+ }
3244
+
3245
+ .geTextOutlineName {
3246
+ flex: 0 1 auto;
3247
+ min-width: 24px;
3248
+ overflow: hidden;
3249
+ text-overflow: ellipsis;
3250
+ }
3251
+
3252
+ .geTextOutlineLayer > .geTextOutlineItem .geTextOutlineName {
3253
+ font-weight: 600;
3254
+ }
3255
+
3256
+ /* Shrinks before the name */
3257
+ .geTextOutlineKind {
3258
+ flex: 0 1000 auto;
3259
+ min-width: 0;
3260
+ margin-left: 8px;
3261
+ overflow: hidden;
3262
+ text-overflow: ellipsis;
3263
+ font-size: 11px;
3264
+ }
3265
+
3266
+ .geTextOutlineArrow {
3267
+ flex: none;
3268
+ margin-right: 5px;
3269
+ }
3270
+
3271
+ .geTextOutlineKind,
3272
+ .geTextOutlineArrow,
3273
+ .geTextOutlineEmpty {
3274
+ color: light-dark(var(--secondary-text-color), var(--dark-secondary-text-color));
3275
+ }
3276
+
3277
+ .geTextOutline li[aria-selected="true"] > .geTextOutlineItem .geTextOutlineKind,
3278
+ .geTextOutline li[aria-selected="true"] > .geTextOutlineItem .geTextOutlineArrow {
3279
+ color: inherit;
3280
+ opacity: 0.75;
3281
+ }
3282
+
3283
+ .geTextOutline > .geBtn {
3284
+ display: block;
3285
+ margin: 8px auto;
3286
+ }
3287
+
3288
+ .geTextOutlineEmpty {
3289
+ padding: 24px 12px;
3290
+ text-align: center;
3291
+ }
3292
+
3293
+ /* Same ring as the search of the Home dialog, the outline shows in forced colors */
3294
+ .geSearchSidebar input:focus {
3295
+ outline: 1px solid transparent;
3296
+ border-color: light-dark(var(--focus-color), var(--dark-focus-color));
3297
+ box-shadow: 0 0 0 3px light-dark(color-mix(in srgb, var(--focus-color) 35%, transparent), color-mix(in srgb, var(--dark-focus-color) 35%, transparent));
3298
+ }
3299
+
3300
+ .geSearchSidebar>div {
3301
+ margin-bottom: 4px;
3302
+ }
3303
+
3304
+ .geSearchSidebar>div>img.geAdaptiveAsset {
3305
+ position: relative;
3306
+ top: 4px;
3307
+ left: -24px;
3308
+ height: 16px;
3309
+ opacity: 0.75;
3310
+ cursor: pointer;
3311
+ }
3312
+
3313
+ html table.mxPopupMenu {
3314
+ border-collapse: collapse;
3315
+ margin: 0px;
3316
+ }
3317
+
3318
+ html td.mxPopupMenuItem {
3319
+ padding: 7px 30px 7px 30px;
3320
+ font-size: 10pt;
3321
+ }
3322
+
3323
+ html td.mxPopupMenuIcon {
3324
+ background-color: transparent;
3325
+ padding: 0px;
3326
+ }
3327
+
3328
+ table.mxPopupMenu tr {
3329
+ font-size: 4pt;
3330
+ }
3331
+
3332
+ table.mxPopupMenu hr {
3333
+ color: light-dark(var(--border-color), var(--dark-border-color));
3334
+ background-color: light-dark(var(--border-color), var(--dark-border-color));
3335
+ border: none;
3336
+ height: 1px;
3337
+ }
3338
+
3339
+ html td.mxWindowTitle {
3340
+ color: light-dark(var(--text-color), var(--dark-text-color));
3341
+ background-image: none;
3342
+ padding: 4px;
3343
+ }
3344
+
3345
+ table.geProperties {
3346
+ table-layout: fixed;
3347
+ }
3348
+
3349
+ table.geProperties tr td,
3350
+ table.geProperties tr th {
3351
+ height: 21px;
3352
+ }
3353
+
3354
+ .gePropValue {
3355
+ width: 100%;
3356
+ overflow: hidden;
3357
+ white-space: nowrap;
3358
+ text-overflow: ellipsis;
3359
+ }
3360
+
3361
+ .gePropHeader,
3362
+ .gePropRow {
3363
+ border: 1px solid light-dark(var(--border-color), var(--dark-border-color));
3364
+ }
3365
+
3366
+ .gePropHeader>.gePropHeaderCell {
3367
+ border-top: 0;
3368
+ border-bottom: 0;
3369
+ text-align: left;
3370
+ width: 50%;
3371
+ }
3372
+
3373
+ .gePropHeader>.gePropHeaderCell:first-child {
3374
+ border-left: none;
3375
+ }
3376
+
3377
+ .gePropHeader>.gePropHeaderCell:last-child {
3378
+ border-right: none;
3379
+ }
3380
+
3381
+ /* The dark mode filter only inverts the text and fold arrow of the header
3382
+ cells. Inverting the row would also invert its collapsed borders in Safari,
3383
+ whose invert also darkens #e5e5e5 to #0d0d0d instead of #1a1a1a. */
3384
+ .gePropHeader {
3385
+ background-color: light-dark(#e5e5e5, #1a1a1a);
3386
+ color: black;
3387
+ }
3388
+
3389
+ /* The second cell has no fold arrow, so its text needs no filter, which
3390
+ the contrast checks of assistive tools cannot see (white like the first) */
3391
+ .geDarkMode .gePropHeader>.gePropHeaderCell:nth-child(2) {
3392
+ color: #ffffff;
3393
+ }
3394
+
3395
+ /* Shortcuts in menus with enough contrast on the menu and its highlight */
3396
+ .geMenuShortcut {
3397
+ color: light-dark(#5f5f63, #a0a0a0);
3398
+ }
3399
+
3400
+ .gePropRowCell {
3401
+ vertical-align: middle;
3402
+ white-space: nowrap;
3403
+ text-overflow: ellipsis;
3404
+ overflow: hidden;
3405
+ max-width: 50%;
3406
+ }
3407
+
3408
+ .gePropHeaderCell:nth-child(2),
3409
+ .gePropRowCell:nth-child(2) {
3410
+ border-left: 1px solid light-dark(var(--border-color), var(--dark-border-color));
3411
+ }
3412
+
3413
+ .gePropRow>.gePropRowCell {
3414
+ background-color: light-dark(var(--field-color), var(--ge-dark-panel-color));
3415
+ }
3416
+
3417
+ .gePropRowAlt>.gePropRowCell {
3418
+ background-color: light-dark(var(--prop-stripe-color), var(--ge-dark-panel-color));
3419
+ }
3420
+
3421
+ .gePropRowDark>.gePropRowCell {
3422
+ background-color: light-dark(var(--field-color), var(--ge-dark-panel-color));
3423
+ color: light-dark(var(--prop-accent-text-color), var(--dark-text-color));
3424
+ font-weight: bold;
3425
+ }
3426
+
3427
+ .gePropRowDarkAlt>.gePropRowCell {
3428
+ background-color: light-dark(var(--prop-accent-color), var(--dark-highlight-color));
3429
+ color: light-dark(var(--prop-accent-text-color), var(--dark-text-color));
3430
+ font-weight: bold;
3431
+ }
3432
+
3433
+ .gePropEditor input:invalid {
3434
+ border: 1px solid red;
3435
+ }
3436
+
3437
+ /* Comments CSS */
3438
+ .geCommentsWin {
3439
+ user-select: none;
3440
+ height: 100%;
3441
+ margin-bottom: 10px;
3442
+ overflow: auto;
3443
+ font: 12px/1.4 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
3444
+ -webkit-font-smoothing: antialiased;
3445
+ color: light-dark(var(--strong-text-color), var(--dark-strong-text-color));
3446
+ }
3447
+
3448
+ .geCommentsToolbar {
3449
+ position: absolute;
3450
+ bottom: 0px;
3451
+ left: 0px;
3452
+ right: 0px;
3453
+ overflow: hidden;
3454
+ border-width: 1px 0px 0px 0px;
3455
+ border-style: solid;
3456
+ white-space: nowrap;
3457
+ }
3458
+
3459
+ .geCommentsList {
3460
+ position: absolute;
3461
+ overflow: auto;
3462
+ left: 0px;
3463
+ right: 0px;
3464
+ top: 0px;
3465
+ scroll-behavior: smooth;
3466
+ }
3467
+
3468
+ .geCommentContainer {
3469
+ position: relative;
3470
+ padding: 10px 12px 8px 12px;
3471
+ margin: 7px 8px;
3472
+ min-height: 50px;
3473
+ display: block;
3474
+ background-color: light-dark(var(--card-color), var(--dark-card-color));
3475
+ border: 1px solid light-dark(var(--field-border-color), var(--dark-field-border-color));
3476
+ border-radius: 10px;
3477
+ white-space: nowrap;
3478
+ box-shadow: 0 1px 3px light-dark(rgba(60, 64, 67, 0.08), rgba(0, 0, 0, 0.25));
3479
+ color: light-dark(var(--strong-text-color), var(--dark-strong-text-color));
3480
+ }
3481
+
3482
+ .geCommentHeader {
3483
+ display: flex;
3484
+ align-items: center;
3485
+ gap: 8px;
3486
+ width: 100%;
3487
+ height: 32px;
3488
+ }
3489
+
3490
+ .geCommentUserImg {
3491
+ width: 28px;
3492
+ height: 28px;
3493
+ border-radius: 50%;
3494
+ flex: 0 0 auto;
3495
+ background-color: light-dark(var(--soft-color), var(--dark-soft-color));
3496
+ }
3497
+
3498
+ .geCommentHeaderTxt {
3499
+ overflow: hidden;
3500
+ flex: 1 1 auto;
3501
+ min-width: 0;
3502
+ }
3503
+
3504
+ .geCommentUsername {
3505
+ overflow: hidden;
3506
+ white-space: nowrap;
3507
+ font-size: 12.5px;
3508
+ font-weight: 600;
3509
+ text-overflow: ellipsis;
3510
+ }
3511
+
3512
+ .geCommentDate {
3513
+ color: light-dark(var(--secondary-text-color), var(--dark-secondary-text-color));
3514
+ overflow: hidden;
3515
+ white-space: nowrap;
3516
+ font-size: 11px;
3517
+ text-overflow: ellipsis;
3518
+ }
3519
+
3520
+ .geCommentDate::first-letter {
3521
+ text-transform: uppercase;
3522
+ }
3523
+
3524
+ .geCommentTxt {
3525
+ font-size: 13px;
3526
+ padding-top: 6px;
3527
+ white-space: normal;
3528
+ min-height: 12px;
3529
+ overflow-wrap: break-word;
3530
+ user-select: text;
3531
+ cursor: text;
3532
+ }
3533
+
3534
+ .geCommentEditTxtArea {
3535
+ margin-top: 6px;
3536
+ font: inherit;
3537
+ font-size: 13px !important;
3538
+ min-height: 12px;
3539
+ max-width: 100%;
3540
+ min-width: 100%;
3541
+ width: 100%;
3542
+ box-sizing: border-box;
3543
+ padding: 6px 8px;
3544
+ border: 1px solid light-dark(var(--field-border-color), var(--dark-field-border-color));
3545
+ border-radius: 8px;
3546
+ background-color: light-dark(var(--field-color), var(--dark-field-color));
3547
+ color: inherit;
3548
+ outline: none;
3549
+ user-select: text;
3550
+ transition: border-color .15s, box-shadow .15s;
3551
+ }
3552
+
3553
+ .geCommentEditTxtArea:focus {
3554
+ border-color: light-dark(var(--focus-color), var(--dark-focus-color));
3555
+ box-shadow: 0 0 0 2px light-dark(color-mix(in srgb, var(--focus-color) 15%, transparent), color-mix(in srgb, var(--dark-focus-color) 25%, transparent));
3556
+ }
3557
+
3558
+ .geCommentEditBtns {
3559
+ width: 100%;
3560
+ box-sizing: border-box;
3561
+ padding-top: 6px;
3562
+ display: flex;
3563
+ justify-content: flex-end;
3564
+ gap: 6px;
3565
+ }
3566
+
3567
+ .geCommentEditBtn {
3568
+ padding: 4px 12px !important;
3569
+ margin-left: 0;
3570
+ border-radius: 6px;
3571
+ }
3572
+
3573
+ .geCommentActions {
3574
+ color: light-dark(var(--secondary-text-color), var(--dark-secondary-text-color));
3575
+ font-size: 11.5px;
3576
+ }
3577
+
3578
+ .geCommentActionsList {
3579
+ list-style-type: none;
3580
+ margin: 0px;
3581
+ padding: 6px 0 0 0;
3582
+ display: flex;
3583
+ flex-wrap: wrap;
3584
+ gap: 2px;
3585
+ }
3586
+
3587
+ .geCommentAction {
3588
+ display: inline-block;
3589
+ padding: 0;
3590
+ }
3591
+
3592
+ .geCommentAction:first-child {
3593
+ margin-left: -8px;
3594
+ }
3595
+
3596
+ .geCommentActionLnk {
3597
+ cursor: pointer;
3598
+ color: light-dark(var(--secondary-text-color), var(--dark-secondary-text-color));
3599
+ text-decoration: none;
3600
+ display: inline-block;
3601
+ padding: 3px 8px;
3602
+ border-radius: 6px;
3603
+ transition: background-color .15s, color .15s;
3604
+ }
3605
+
3606
+ .geCommentActionLnk:hover {
3607
+ text-decoration: none;
3608
+ background-color: light-dark(var(--soft-hover-color), var(--dark-soft-hover-color));
3609
+ color: light-dark(var(--focus-color), var(--dark-focus-color));
3610
+ }
3611
+
3612
+ .geCheckedBtn {
3613
+ background-color: #ccc;
3614
+ border-top: 1px solid black !important;
3615
+ border-left: 1px solid black !important;
3616
+ }
3617
+
3618
+ .geCommentBusyImg {
3619
+ position: absolute;
3620
+ top: 5px;
3621
+ right: 5px;
3622
+ }
3623
+
3624
+ div.geCommentEditTxtArea {
3625
+ white-space: pre-wrap;
3626
+ overflow-wrap: break-word;
3627
+ cursor: text;
3628
+ }
3629
+
3630
+ /* Chip that shows and jumps to the shape a comment is anchored to,
3631
+ matching the selector chips in the animation dialog */
3632
+ .geCommentAnchorRow {
3633
+ display: flex;
3634
+ align-items: center;
3635
+ gap: 6px;
3636
+ padding-top: 8px;
3637
+ min-width: 0;
3638
+ }
3639
+
3640
+ .geCommentAnchorChip {
3641
+ display: inline-flex;
3642
+ align-items: center;
3643
+ gap: 5px;
3644
+ min-height: 22px;
3645
+ padding: 1px 10px;
3646
+ border-radius: 999px;
3647
+ border: 1px solid light-dark(var(--field-border-color), var(--dark-field-border-color));
3648
+ background-color: light-dark(var(--soft-color), var(--dark-soft-color));
3649
+ color: light-dark(var(--strong-text-color), var(--dark-strong-text-color));
3650
+ font-size: 11.5px;
3651
+ font-weight: 500;
3652
+ max-width: 100%;
3653
+ min-width: 0;
3654
+ white-space: nowrap;
3655
+ box-sizing: border-box;
3656
+ text-decoration: none;
3657
+ cursor: default;
3658
+ transition: background-color .15s, border-color .15s, color .15s;
3659
+ }
3660
+
3661
+ .geCommentAnchorChip svg {
3662
+ flex: 0 0 auto;
3663
+ display: block;
3664
+ }
3665
+
3666
+ .geCommentAnchorChip > span {
3667
+ overflow: hidden;
3668
+ text-overflow: ellipsis;
3669
+ }
3670
+
3671
+ a.geCommentAnchorChip {
3672
+ cursor: pointer;
3673
+ }
3674
+
3675
+ a.geCommentAnchorChip:hover {
3676
+ background-color: light-dark(var(--soft-hover-color), var(--dark-field-border-color));
3677
+ border-color: light-dark(var(--strong-border-color), var(--dark-strong-border-color));
3678
+ color: light-dark(var(--focus-color), var(--dark-focus-color));
3679
+ text-decoration: none;
3680
+ }
3681
+
3682
+ .geCommentAnchorChipDeleted {
3683
+ border-style: dashed;
3684
+ background-color: transparent;
3685
+ color: light-dark(var(--faint-text-color), var(--dark-faint-text-color));
3686
+ font-style: italic;
3687
+ }
3688
+
3689
+ .geCommentAnchorAttach {
3690
+ border-style: dashed;
3691
+ background-color: transparent;
3692
+ color: light-dark(var(--secondary-text-color), var(--dark-secondary-text-color));
3693
+ }
3694
+
3695
+ a.geCommentAnchorAttach:hover {
3696
+ background-color: transparent;
3697
+ }
3698
+
3699
+ /* Disclosure caret on the attach chip (opens the anchor type menu) */
3700
+ .geCommentAnchorAttach::after {
3701
+ content: "";
3702
+ display: inline-block;
3703
+ width: 5px;
3704
+ height: 5px;
3705
+ margin-left: 2px;
3706
+ border: solid currentColor;
3707
+ border-width: 0 1.4px 1.4px 0;
3708
+ transform: translateY(-2px) rotate(45deg);
3709
+ opacity: .55;
3710
+ }
3711
+
3712
+ .geCommentMentionRow svg {
3713
+ vertical-align: middle;
3714
+ margin-right: 6px;
3715
+ }
3716
+
3717
+ /* Toolbar and editing area of the small markup editor (notes, tooltips) */
3718
+ .geMarkupToolbar {
3719
+ display: flex;
3720
+ align-items: center;
3721
+ gap: 2px;
3722
+ flex-shrink: 0;
3723
+ margin-bottom: 6px;
3724
+ }
3725
+
3726
+ a.geMarkupTbBtn {
3727
+ display: inline-flex;
3728
+ align-items: center;
3729
+ justify-content: center;
3730
+ min-width: 24px;
3731
+ height: 24px;
3732
+ padding: 0 6px;
3733
+ box-sizing: border-box;
3734
+ border-radius: 6px;
3735
+ font-size: 12.5px;
3736
+ line-height: 1;
3737
+ cursor: pointer;
3738
+ color: light-dark(var(--text-color), var(--dark-text-color));
3739
+ user-select: none;
3740
+ }
3741
+
3742
+ a.geMarkupTbBtn:hover {
3743
+ background-color: light-dark(var(--soft-hover-color), var(--dark-soft-hover-color));
3744
+ }
3745
+
3746
+ a.geMarkupTbBtn.geActiveItem {
3747
+ background-color: light-dark(var(--mention-background-color), var(--dark-mention-background-color));
3748
+ color: light-dark(var(--mention-color), var(--dark-mention-color));
3749
+ }
3750
+
3751
+ a.geMarkupSourceBtn {
3752
+ margin-left: auto;
3753
+ font-size: 11.5px;
3754
+ }
3755
+
3756
+ /* Overrides the floating note box styles for the WYSIWYG editing area */
3757
+ .geNoteBox.geMarkupWysiwyg {
3758
+ position: static;
3759
+ min-width: 0;
3760
+ max-width: none;
3761
+ max-height: none;
3762
+ box-shadow: none;
3763
+ z-index: auto;
3764
+ overflow: auto;
3765
+ background: light-dark(var(--field-color), var(--dark-field-color));
3766
+ color: inherit;
3767
+ border-color: light-dark(var(--field-border-color), var(--dark-field-border-color));
3768
+ cursor: text;
3769
+ }
3770
+
3771
+ .geNoteBox.geMarkupWysiwyg:focus {
3772
+ outline: none;
3773
+ border-color: light-dark(var(--mention-color), var(--dark-mention-color));
3774
+ }
3775
+
3776
+ /* Dims the diagram while picking a point or area for a comment anchor */
3777
+ .geCommentAnchorPicking > svg {
3778
+ opacity: 0.4;
3779
+ transition: opacity .15s ease;
3780
+ }
3781
+
3782
+ /* Shapes carry their own cursor styles so the crosshair is forced on
3783
+ everything while picking */
3784
+ .geCommentAnchorPicking,
3785
+ .geCommentAnchorPicking * {
3786
+ cursor: crosshair !important;
3787
+ }
3788
+
3789
+ /* Rubberband preview while framing an area for a comment anchor */
3790
+ .geCommentAnchorPickPreview {
3791
+ position: absolute;
3792
+ border: 1.5px dashed light-dark(var(--focus-color), var(--dark-focus-color));
3793
+ background-color: light-dark(color-mix(in srgb, var(--focus-color) 8%, transparent), color-mix(in srgb, var(--dark-focus-color) 12%, transparent));
3794
+ border-radius: 2px;
3795
+ pointer-events: none;
3796
+ z-index: 1;
3797
+ }
3798
+
3799
+ /* Canvas of a client that follows the view of a collaborator */
3800
+ .geDiagramContainer.geFollowingView {
3801
+ box-shadow: inset 0 0 0 2px light-dark(var(--focus-color), var(--dark-focus-color));
3802
+ }
3803
+
3804
+ /* Pulse marker shown after jumping to a point anchor */
3805
+ .geCommentAnchorMarker {
3806
+ position: absolute;
3807
+ width: 12px;
3808
+ height: 12px;
3809
+ margin: -6px 0 0 -6px;
3810
+ border-radius: 50%;
3811
+ background-color: light-dark(var(--focus-color), var(--dark-focus-color));
3812
+ pointer-events: none;
3813
+ z-index: 1;
3814
+ animation: geCommentAnchorPulse 0.9s ease-out 2;
3815
+ }
3816
+
3817
+ @keyframes geCommentAnchorPulse {
3818
+ 0% {
3819
+ box-shadow: 0 0 0 0 light-dark(color-mix(in srgb, var(--focus-color) 50%, transparent), color-mix(in srgb, var(--dark-focus-color) 60%, transparent));
3820
+ }
3821
+ 100% {
3822
+ box-shadow: 0 0 0 18px transparent;
3823
+ }
3824
+ }
3825
+
3826
+ .geCommentAnchorRemove {
3827
+ display: inline-flex;
3828
+ align-items: center;
3829
+ justify-content: center;
3830
+ width: 16px;
3831
+ height: 16px;
3832
+ margin: 0 -5px 0 1px;
3833
+ border-radius: 50%;
3834
+ font-size: 13px;
3835
+ font-style: normal;
3836
+ line-height: 1;
3837
+ cursor: pointer;
3838
+ color: light-dark(var(--faint-text-color), var(--dark-faint-text-color));
3839
+ transition: background-color .15s, color .15s;
3840
+ }
3841
+
3842
+ .geCommentAnchorRemove:hover {
3843
+ background-color: light-dark(var(--inactive-color), var(--dark-strong-border-color));
3844
+ color: light-dark(var(--strong-text-color), var(--dark-strong-text-color));
3845
+ }
3846
+
3847
+ .geCommentMention {
3848
+ color: light-dark(var(--mention-color), var(--dark-mention-color));
3849
+ background-color: light-dark(var(--mention-background-color), var(--dark-mention-background-color));
3850
+ border-radius: 4px;
3851
+ padding: 0px 3px;
3852
+ font-weight: 500;
3853
+ white-space: nowrap;
3854
+ }
3855
+
3856
+ .geCommentMentionMenu {
3857
+ position: absolute;
3858
+ z-index: 2;
3859
+ max-width: calc(100% - 24px);
3860
+ overflow: hidden;
3861
+ padding: 4px;
3862
+ box-sizing: border-box;
3863
+ background-color: light-dark(var(--field-color), var(--dark-field-color));
3864
+ border: 1px solid light-dark(var(--field-border-color), var(--dark-field-border-color));
3865
+ border-radius: 10px;
3866
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
3867
+ }
3868
+
3869
+ .geCommentMentionRow {
3870
+ padding: 4px 8px;
3871
+ cursor: pointer;
3872
+ white-space: nowrap;
3873
+ overflow: hidden;
3874
+ text-overflow: ellipsis;
3875
+ font-size: 12px;
3876
+ border-radius: 6px;
3877
+ }
3878
+
3879
+ .geCommentMentionRow:hover,
3880
+ .geCommentMentionRowSelected {
3881
+ background-color: light-dark(var(--soft-hover-color), var(--dark-soft-hover-color));
3882
+ }
3883
+
3884
+ .geCommentMentionImg {
3885
+ width: 18px;
3886
+ height: 18px;
3887
+ border-radius: 50%;
3888
+ vertical-align: middle;
3889
+ margin-right: 6px;
3890
+ background-color: light-dark(var(--soft-color), var(--dark-soft-color));
3891
+ }
3892
+
3893
+ /* Inline icon variant of the avatar, eg. for groups without a photo */
3894
+ span.geCommentMentionImg {
3895
+ display: inline-flex;
3896
+ align-items: center;
3897
+ justify-content: center;
3898
+ box-sizing: border-box;
3899
+ color: light-dark(var(--secondary-text-color), var(--dark-secondary-text-color));
3900
+ }
3901
+
3902
+ span.geCommentMentionImg svg {
3903
+ margin: 0;
3904
+ }
3905
+
3906
+ .geCommentMentionGroupTag {
3907
+ display: inline-block;
3908
+ margin-left: 6px;
3909
+ padding: 0px 6px;
3910
+ border-radius: 999px;
3911
+ border: 1px solid light-dark(var(--field-border-color), var(--dark-strong-border-color));
3912
+ color: light-dark(var(--secondary-text-color), var(--dark-secondary-text-color));
3913
+ font-size: 10px;
3914
+ line-height: 14px;
3915
+ vertical-align: middle;
3916
+ }
3917
+
3918
+ .geCommentMentionMail {
3919
+ color: light-dark(var(--secondary-text-color), var(--dark-secondary-text-color));
3920
+ padding-left: 6px;
3921
+ font-size: 11px;
3922
+ }
3923
+
3924
+ /* Element+class selector to win over the generic .geButton>span rule */
3925
+ span.geCommentsBadge {
3926
+ position: absolute;
3927
+ top: 0px;
3928
+ right: 0px;
3929
+ min-width: 10px;
3930
+ height: 14px;
3931
+ line-height: 14px;
3932
+ border-radius: 7px;
3933
+ padding: 0px 2px;
3934
+ background-color: #d74134;
3935
+ color: #ffffff;
3936
+ font-size: 9px;
3937
+ font-weight: bold;
3938
+ text-align: center;
3939
+ overflow: visible;
3940
+ pointer-events: none;
3941
+ }
3942
+
3943
+ /* Cancels out the inversion of the toolbar button in dark mode */
3944
+ .geDarkMode .geCommentsBadge {
3945
+ filter: invert(1);
3946
+ }
3947
+
3948
+ .geAspectDlgListItem {
3949
+ width: 120px;
3950
+ height: 120px;
3951
+ display: inline-block;
3952
+ border: 3px solid #F0F0F0;
3953
+ border-radius: 5px;
3954
+ padding: 5px;
3955
+ margin: 2px 2px 20px 2px;
3956
+ }
3957
+
3958
+ .geAspectDlgListItem:hover {
3959
+ border: 3px solid #c5c5c5;
3960
+ }
3961
+
3962
+ .geAspectDlgListItemSelected {
3963
+ border: 3px solid #3b73af;
3964
+ }
3965
+
3966
+ .geAspectDlgListItemSelected:hover {
3967
+ border: 3px solid #405a86;
3968
+ }
3969
+
3970
+ .geAspectDlgListItemText {
3971
+ text-overflow: ellipsis;
3972
+ max-width: 100%;
3973
+ min-height: 2em;
3974
+ overflow: hidden;
3975
+ text-align: center;
3976
+ margin-top: 10px;
3977
+ }
3978
+
3979
+ .geAspectDlgList {
3980
+ min-height: 184px;
3981
+ white-space: nowrap;
3982
+ overflow-x: auto;
3983
+ }
3984
+
3985
+ .geStripedTable {
3986
+ border-collapse: collapse;
3987
+ width: 100%;
3988
+ table-layout: fixed;
3989
+ }
3990
+
3991
+ .geStripedTable td,
3992
+ .geStripedTable th {
3993
+ border: 1px solid #ddd;
3994
+ text-align: left;
3995
+ padding: 2px;
3996
+ white-space: nowrap;
3997
+ overflow: hidden;
3998
+ text-overflow: ellipsis;
3999
+ }
4000
+
4001
+ .geStripedTable tr:nth-child(odd) {
4002
+ background-color: #f2f2f2;
4003
+ }
4004
+
4005
+ .geStripedTable tr:hover {
4006
+ background-color: #ddd;
4007
+ }
4008
+
4009
+ .geStripedTable th {
4010
+ padding-top: 4px;
4011
+ padding-bottom: 4px;
4012
+ background-color: #bbb;
4013
+ }
4014
+
4015
+ .geNotification-box {
4016
+ display: flex;
4017
+ text-align: center;
4018
+ position: relative;
4019
+ cursor: pointer;
4020
+ margin-right: 6px;
4021
+ width: 20px;
4022
+ order: -1;
4023
+ }
4024
+
4025
+ .geNotification-bell {
4026
+ animation: geBellAnim 1s 1s both;
4027
+ }
4028
+
4029
+ .geNotification-bell * {
4030
+ display: block;
4031
+ margin: 0 auto;
4032
+ background-color: light-dark(var(--secondary-text-color), var(--dark-secondary-text-color));
4033
+ }
4034
+
4035
+ .geBell-top {
4036
+ width: 2px;
4037
+ height: 2px;
4038
+ border-radius: 1px 1px 0 0;
4039
+ }
4040
+
4041
+ .geBell-middle {
4042
+ width: 12px;
4043
+ height: 12px;
4044
+ margin-top: -1px;
4045
+ border-radius: 7px 7px 0 0;
4046
+ }
4047
+
4048
+ .geBell-bottom {
4049
+ position: relative;
4050
+ z-index: 0;
4051
+ width: 16px;
4052
+ height: 1px;
4053
+ }
4054
+
4055
+ .geBell-bottom::before,
4056
+ .geBell-bottom::after {
4057
+ content: '';
4058
+ position: absolute;
4059
+ top: -4px;
4060
+ }
4061
+
4062
+ .geBell-bottom::before {
4063
+ left: 1px;
4064
+ border-bottom-width: 4px;
4065
+ border-right: 0 solid transparent;
4066
+ border-left: 4px solid transparent;
4067
+ }
4068
+
4069
+ .geBell-bottom::after {
4070
+ right: 1px;
4071
+ border-bottom-width: 4px;
4072
+ border-right: 4px solid transparent;
4073
+ border-left: 0 solid transparent;
4074
+ }
4075
+
4076
+ .geBell-rad {
4077
+ width: 3px;
4078
+ height: 2px;
4079
+ margin-top: 0.5px;
4080
+ border-radius: 0 0 2px 2px;
4081
+ animation: geRadAnim 1s 2s both;
4082
+ }
4083
+
4084
+ .geNotification-count {
4085
+ position: absolute;
4086
+ z-index: 1;
4087
+ top: -5px;
4088
+ right: -4px;
4089
+ width: 13px;
4090
+ height: 13px;
4091
+ line-height: 13px;
4092
+ font-size: 8px;
4093
+ border-radius: 50%;
4094
+ background-color: #ff4927;
4095
+ color: #FFF;
4096
+ animation: geZoomAnim 1s 1s both;
4097
+ }
4098
+
4099
+ @keyframes geBellAnim {
4100
+ 0% {
4101
+ transform: rotate(0);
4102
+ }
4103
+
4104
+ 10% {
4105
+ transform: rotate(30deg);
4106
+ }
4107
+
4108
+ 20% {
4109
+ transform: rotate(0);
4110
+ }
4111
+
4112
+ 80% {
4113
+ transform: rotate(0);
4114
+ }
4115
+
4116
+ 90% {
4117
+ transform: rotate(-30deg);
4118
+ }
4119
+
4120
+ 100% {
4121
+ transform: rotate(0);
4122
+ }
4123
+ }
4124
+
4125
+ @keyframes geRadAnim {
4126
+ 0% {
4127
+ transform: translateX(0);
4128
+ }
4129
+
4130
+ 10% {
4131
+ transform: translateX(5px);
4132
+ }
4133
+
4134
+ 20% {
4135
+ transform: translateX(0);
4136
+ }
4137
+
4138
+ 80% {
4139
+ transform: translateX(0);
4140
+ }
4141
+
4142
+ 90% {
4143
+ transform: translateX(-5px);
4144
+ }
4145
+
4146
+ 100% {
4147
+ transform: translateX(0);
4148
+ }
4149
+ }
4150
+
4151
+ @keyframes geZoomAnim {
4152
+ 0% {
4153
+ opacity: 0;
4154
+ transform: scale(0);
4155
+ }
4156
+
4157
+ 50% {
4158
+ opacity: 1;
4159
+ transform: scale(1);
4160
+ }
4161
+
4162
+ 100% {
4163
+ opacity: 1;
4164
+ }
4165
+ }
4166
+
4167
+ .geNotifPanel {
4168
+ height: 300px;
4169
+ width: 300px;
4170
+ background-color: #fff;
4171
+ border-radius: 3px;
4172
+ overflow: hidden;
4173
+ box-shadow: 10px 10px 15px 0 rgba(0, 0, 0, 0.3);
4174
+ transition: all .5s ease-in-out;
4175
+ position: absolute;
4176
+ right: 100px;
4177
+ top: 42px;
4178
+ z-index: 150;
4179
+ }
4180
+
4181
+ .geNotifPanel .header {
4182
+ background-color: light-dark(#cecece, #424242);
4183
+ color: light-dark(#707070, #ccc);
4184
+ font-size: 15px;
4185
+ }
4186
+
4187
+ .geNotifPanel .header .title {
4188
+ display: block;
4189
+ text-align: center;
4190
+ line-height: 30px;
4191
+ font-weight: 600;
4192
+ }
4193
+
4194
+ .geNotifPanel .header .closeBtn {
4195
+ position: absolute;
4196
+ line-height: 30px;
4197
+ cursor: pointer;
4198
+ right: 15px;
4199
+ top: 0;
4200
+ }
4201
+
4202
+ .geNotifPanel .notifications {
4203
+ position: relative;
4204
+ background-color: light-dark(transparent, #707070);
4205
+ height: 270px;
4206
+ overflow-x: hidden;
4207
+ overflow-y: auto;
4208
+ }
4209
+
4210
+ .geNotifPanel .notifications .line {
4211
+ position: absolute;
4212
+ top: 0;
4213
+ left: 27px;
4214
+ height: 100%;
4215
+ width: 3px;
4216
+ background-color: #EBEBEB;
4217
+ }
4218
+
4219
+ .geNotifPanel .notifications .notification {
4220
+ position: relative;
4221
+ z-index: 2;
4222
+ margin: 25px 20px 25px 43px;
4223
+ }
4224
+
4225
+ .geNotifPanel .notifications .notification:nth-child(n+1) {
4226
+ animation: geHere-am-i 0.5s ease-out 0.4s;
4227
+ animation-fill-mode: both;
4228
+ }
4229
+
4230
+ .geNotifPanel .notifications .notification:hover {
4231
+ color: #1B95E0;
4232
+ cursor: pointer;
4233
+ }
4234
+
4235
+ .geNotifPanel .notifications .notification .circle {
4236
+ box-sizing: border-box;
4237
+ position: absolute;
4238
+ height: 11px;
4239
+ width: 11px;
4240
+ background-color: #fff;
4241
+ border: 2px solid #1B95E0;
4242
+ box-shadow: 0 0 0 3px #fff;
4243
+ border-radius: 6px;
4244
+ top: 0;
4245
+ left: -20px;
4246
+ }
4247
+
4248
+ .geNotifPanel .notifications .notification .circle.active {
4249
+ background-color: #1B95E0;
4250
+ }
4251
+
4252
+ .geNotifPanel .notifications .notification .time {
4253
+ display: block;
4254
+ font-size: 11px;
4255
+ line-height: 11px;
4256
+ margin-bottom: 2px;
4257
+ }
4258
+
4259
+ .geNotifPanel .notifications .notification p {
4260
+ font-size: 15px;
4261
+ line-height: 20px;
4262
+ margin: 0;
4263
+ }
4264
+
4265
+ .geNotifPanel .notifications .notification p b {
4266
+ font-weight: 600;
4267
+ }
4268
+
4269
+ @-webkit-keyframes geHere-am-i {
4270
+ from {
4271
+ transform: translate3d(0, 50px, 0);
4272
+ opacity: 0;
4273
+ }
4274
+
4275
+ to {
4276
+ transform: translate3d(0, 0, 0);
4277
+ opacity: 1;
4278
+ }
4279
+ }
4280
+
4281
+ @keyframes geHere-am-i {
4282
+ from {
4283
+ transform: translate3d(0, 50px, 0);
4284
+ opacity: 0;
4285
+ }
4286
+
4287
+ to {
4288
+ transform: translate3d(0, 0, 0);
4289
+ opacity: 1;
4290
+ }
4291
+ }
4292
+
4293
+ .geTempTree {
4294
+ margin: 0;
4295
+ padding: 0;
4296
+ }
4297
+
4298
+ .geTempTree,
4299
+ .geTempTreeActive,
4300
+ .geTempTreeNested {
4301
+ list-style-type: none;
4302
+ transition: all 0.5s;
4303
+ }
4304
+
4305
+ .geTempTreeCaret {
4306
+ box-sizing: border-box;
4307
+ cursor: pointer;
4308
+ user-select: none;
4309
+ padding: 6px;
4310
+ width: 100%;
4311
+ transition: all 0.5s;
4312
+ }
4313
+
4314
+ .geTempTreeCaret::before {
4315
+ content: "\25B6";
4316
+ display: inline-block;
4317
+ font-size: 10px;
4318
+ margin-right: 6px;
4319
+ }
4320
+
4321
+ .geTempTreeCaret-down::before {
4322
+ transform: rotate(90deg);
4323
+ }
4324
+
4325
+ .geTempTreeNested {
4326
+ height: 0;
4327
+ opacity: 0;
4328
+ }
4329
+
4330
+ .geTempTreeActive {
4331
+ height: 100%;
4332
+ opacity: 1;
4333
+ }
4334
+
4335
+ .geTempTreeActive,
4336
+ .geTempTreeNested {
4337
+ padding-left: 15px;
4338
+ }
4339
+
4340
+ .geTempTreeActive>li,
4341
+ .geTempTreeNested>li {
4342
+ box-sizing: border-box;
4343
+ padding: 3px;
4344
+ width: 100%;
4345
+ cursor: pointer;
4346
+ user-select: none;
4347
+ transition: all 0.5s;
4348
+ }
4349
+
4350
+ /*Electron Window Controls*/
4351
+ #geWindow-controls {
4352
+ display: grid;
4353
+ grid-template-columns: repeat(3, 30px);
4354
+ position: absolute;
4355
+ top: 2px;
4356
+ right: 3px;
4357
+ height: 22px;
4358
+ -webkit-app-region: no-drag;
4359
+ }
4360
+
4361
+ #geWindow-controls .button {
4362
+ grid-row: 1 / span 1;
4363
+ display: flex;
4364
+ justify-content: center;
4365
+ align-items: center;
4366
+ width: 100%;
4367
+ height: 100%;
4368
+ user-select: none;
4369
+ }
4370
+
4371
+ #min-button {
4372
+ grid-column: 1;
4373
+ }
4374
+
4375
+ #max-button,
4376
+ #restore-button {
4377
+ grid-column: 2;
4378
+ }
4379
+
4380
+ #close-button {
4381
+ grid-column: 3;
4382
+ }
4383
+
4384
+ #geWindow-controls .button.dark:hover {
4385
+ background-color: rgba(255, 255, 255, 0.1);
4386
+ }
4387
+
4388
+ #geWindow-controls .button.dark:active {
4389
+ background-color: rgba(255, 255, 255, 0.2);
4390
+ }
4391
+
4392
+ #geWindow-controls .button.white:hover {
4393
+ background-color: rgba(0, 0, 0, 0.1);
4394
+ }
4395
+
4396
+ #geWindow-controls .button.white:active {
4397
+ background-color: rgba(0, 0, 0, 0.2);
4398
+ }
4399
+
4400
+ #close-button:hover {
4401
+ background-color: #E81123 !important;
4402
+ }
4403
+
4404
+ #close-button:active {
4405
+ background-color: #F1707A !important;
4406
+ }
4407
+
4408
+ #restore-button {
4409
+ display: none !important;
4410
+ }
4411
+
4412
+ .geMaximized #restore-button {
4413
+ display: flex !important;
4414
+ }
4415
+
4416
+ .geMaximized #max-button {
4417
+ display: none;
4418
+ }
4419
+
4420
+ .geAtlas .geMenubarContainer:not(.geDarkMode *),
4421
+ .geAtlas .gePrimaryBtn.geEmbedBtn:not(.geDarkMode *) {
4422
+ background-color: #1868db;
4423
+ color: #ffffff;
4424
+ }
4425
+
4426
+ .geAtlas .gePrimaryBtn.geEmbedBtn:not(.geDarkMode *) {
4427
+ border: black;
4428
+ }
4429
+
4430
+ .geAtlas .gePrimaryBtn.geEmbedBtn:hover:not(.geDarkMode *, [disabled]) {
4431
+ background-color: #1558bc !important;
4432
+ }
4433
+
4434
+ .geAtlas .geMenubarContainer .geItem:hover:not(.geDarkMode *) {
4435
+ background-color: rgba(9, 30, 66, 0.48) !important;
4436
+ }
4437
+
4438
+ .geAtlas .geMenubar .geButtonContainer {
4439
+ margin-top: 0px;
4440
+ }
4441
+
4442
+ .geAtlas .geStatus,
4443
+ .geAtlas .geStatus>div:not(.geStatusAlert) {
4444
+ opacity: 1;
4445
+ }
4446
+
4447
+ .geAtlas .geMenubar .geButtonContainer .geButton {
4448
+ margin: 0;
4449
+ opacity: 0.85;
4450
+ }
4451
+
4452
+ .geAtlas .geMenubar .geButtonContainer .geButton:hover {
4453
+ background-color: transparent;
4454
+ opacity: 1 !important;
4455
+ }
4456
+
4457
+ .geEditor.geAtlas>.geMenubarContainer {
4458
+ height: 40px;
4459
+ }
4460
+
4461
+ .geEditor.geAtlas>.geMenubarContainer .geMenubar {
4462
+ padding-left: 12px;
4463
+ height: 100%;
4464
+ top: 0;
4465
+ }
4466
+
4467
+ .geAtlas .geMenubarContainer .geItem {
4468
+ padding-left: 12px;
4469
+ padding-right: 12px;
4470
+ }
4471
+
4472
+ .geEditor *::-webkit-scrollbar {
4473
+ width: 10px;
4474
+ height: 10px;
4475
+ }
4476
+
4477
+ .geEditor *::-webkit-scrollbar-track {
4478
+ background-clip: padding-box;
4479
+ border: solid transparent;
4480
+ border-width: 1px;
4481
+ }
4482
+
4483
+ .geEditor *::-webkit-scrollbar-corner {
4484
+ background-color: transparent;
4485
+ }
4486
+
4487
+ .geEditor *::-webkit-scrollbar-thumb {
4488
+ background-color: light-dark(var(--scrollbar-color), var(--dark-scrollbar-color));
4489
+ background-clip: padding-box;
4490
+ border: solid transparent;
4491
+ border-radius: 4px;
4492
+ }
4493
+
4494
+ .geEditor *::-webkit-scrollbar-thumb:hover {
4495
+ background-color: light-dark(var(--scrollbar-hover-color), var(--dark-border-color));
4496
+ }
4497
+
4498
+ [draggable="true"] {
4499
+ transform: translate(0, 0);
4500
+ z-index: 0;
4501
+ }