mbeditor 0.2.2

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 (108) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +116 -0
  3. data/README.md +180 -0
  4. data/app/assets/javascripts/mbeditor/application.js +21 -0
  5. data/app/assets/javascripts/mbeditor/components/CodeReviewPanel.js +202 -0
  6. data/app/assets/javascripts/mbeditor/components/CollapsibleSection.js +71 -0
  7. data/app/assets/javascripts/mbeditor/components/CombinedDiffViewer.js +139 -0
  8. data/app/assets/javascripts/mbeditor/components/CommitGraph.js +65 -0
  9. data/app/assets/javascripts/mbeditor/components/DiffViewer.js +166 -0
  10. data/app/assets/javascripts/mbeditor/components/EditorPanel.js +1139 -0
  11. data/app/assets/javascripts/mbeditor/components/FileHistoryPanel.js +117 -0
  12. data/app/assets/javascripts/mbeditor/components/FileTree.js +339 -0
  13. data/app/assets/javascripts/mbeditor/components/GitPanel.js +501 -0
  14. data/app/assets/javascripts/mbeditor/components/MbeditorApp.js +3108 -0
  15. data/app/assets/javascripts/mbeditor/components/QuickOpenDialog.js +272 -0
  16. data/app/assets/javascripts/mbeditor/components/ShortcutHelp.js +186 -0
  17. data/app/assets/javascripts/mbeditor/components/TabBar.js +238 -0
  18. data/app/assets/javascripts/mbeditor/components/TestResultsPanel.js +150 -0
  19. data/app/assets/javascripts/mbeditor/editor_plugins.js +758 -0
  20. data/app/assets/javascripts/mbeditor/editor_store.js +69 -0
  21. data/app/assets/javascripts/mbeditor/file_icon.js +30 -0
  22. data/app/assets/javascripts/mbeditor/file_service.js +96 -0
  23. data/app/assets/javascripts/mbeditor/git_service.js +104 -0
  24. data/app/assets/javascripts/mbeditor/search_service.js +63 -0
  25. data/app/assets/javascripts/mbeditor/tab_manager.js +485 -0
  26. data/app/assets/stylesheets/mbeditor/application.css +848 -0
  27. data/app/assets/stylesheets/mbeditor/editor.css +2061 -0
  28. data/app/controllers/mbeditor/application_controller.rb +70 -0
  29. data/app/controllers/mbeditor/editors_controller.rb +996 -0
  30. data/app/controllers/mbeditor/git_controller.rb +234 -0
  31. data/app/services/mbeditor/git_blame_service.rb +98 -0
  32. data/app/services/mbeditor/git_commit_graph_service.rb +60 -0
  33. data/app/services/mbeditor/git_diff_service.rb +74 -0
  34. data/app/services/mbeditor/git_file_history_service.rb +42 -0
  35. data/app/services/mbeditor/git_service.rb +95 -0
  36. data/app/services/mbeditor/redmine_service.rb +86 -0
  37. data/app/services/mbeditor/ruby_definition_service.rb +168 -0
  38. data/app/services/mbeditor/test_runner_service.rb +286 -0
  39. data/app/views/layouts/mbeditor/application.html.erb +120 -0
  40. data/app/views/mbeditor/editors/index.html.erb +1 -0
  41. data/config/initializers/assets.rb +9 -0
  42. data/config/routes.rb +44 -0
  43. data/lib/mbeditor/configuration.rb +22 -0
  44. data/lib/mbeditor/engine.rb +37 -0
  45. data/lib/mbeditor/rack/silence_ping_request.rb +56 -0
  46. data/lib/mbeditor/version.rb +3 -0
  47. data/lib/mbeditor.rb +19 -0
  48. data/mbeditor.gemspec +31 -0
  49. data/public/mbeditor-icon.svg +4 -0
  50. data/public/min-maps/vs/base/worker/workerMain.js.map +1 -0
  51. data/public/monaco-editor/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  52. data/public/monaco-editor/vs/base/worker/workerMain.js +31 -0
  53. data/public/monaco-editor/vs/basic-languages/cameligo/cameligo.js +10 -0
  54. data/public/monaco-editor/vs/basic-languages/css/css.js +12 -0
  55. data/public/monaco-editor/vs/basic-languages/dart/dart.js +10 -0
  56. data/public/monaco-editor/vs/basic-languages/flow9/flow9.js +10 -0
  57. data/public/monaco-editor/vs/basic-languages/go/go.js +10 -0
  58. data/public/monaco-editor/vs/basic-languages/handlebars/handlebars.js +440 -0
  59. data/public/monaco-editor/vs/basic-languages/javascript/javascript.js +10 -0
  60. data/public/monaco-editor/vs/basic-languages/markdown/markdown.js +10 -0
  61. data/public/monaco-editor/vs/basic-languages/msdax/msdax.js +10 -0
  62. data/public/monaco-editor/vs/basic-languages/postiats/postiats.js +10 -0
  63. data/public/monaco-editor/vs/basic-languages/pug/pug.js +412 -0
  64. data/public/monaco-editor/vs/basic-languages/restructuredtext/restructuredtext.js +10 -0
  65. data/public/monaco-editor/vs/basic-languages/ruby/ruby.js +10 -0
  66. data/public/monaco-editor/vs/basic-languages/sb/sb.js +10 -0
  67. data/public/monaco-editor/vs/basic-languages/shell/shell.js +41 -0
  68. data/public/monaco-editor/vs/basic-languages/typescript/typescript.js +10 -0
  69. data/public/monaco-editor/vs/basic-languages/typespec/typespec.js +10 -0
  70. data/public/monaco-editor/vs/basic-languages/yaml/yaml.js +10 -0
  71. data/public/monaco-editor/vs/editor/editor.api.js +6 -0
  72. data/public/monaco-editor/vs/editor/editor.main.css +8 -0
  73. data/public/monaco-editor/vs/editor/editor.main.js +797 -0
  74. data/public/monaco-editor/vs/language/typescript/tsMode.js +20 -0
  75. data/public/monaco-editor/vs/language/typescript/tsWorker.js +51328 -0
  76. data/public/monaco-editor/vs/loader.js +10 -0
  77. data/public/monaco-editor/vs/nls.messages.de.js +20 -0
  78. data/public/monaco-editor/vs/nls.messages.es.js +20 -0
  79. data/public/monaco-editor/vs/nls.messages.fr.js +18 -0
  80. data/public/monaco-editor/vs/nls.messages.it.js +18 -0
  81. data/public/monaco-editor/vs/nls.messages.ja.js +20 -0
  82. data/public/monaco-editor/vs/nls.messages.ko.js +18 -0
  83. data/public/monaco-editor/vs/nls.messages.ru.js +20 -0
  84. data/public/monaco-editor/vs/nls.messages.zh-cn.js +20 -0
  85. data/public/monaco-editor/vs/nls.messages.zh-tw.js +18 -0
  86. data/public/monaco_worker.js +5 -0
  87. data/public/sw.js +8 -0
  88. data/public/ts_worker.js +5 -0
  89. data/vendor/assets/javascripts/axios.min.js +5 -0
  90. data/vendor/assets/javascripts/emmet.js +5452 -0
  91. data/vendor/assets/javascripts/lodash.min.js +136 -0
  92. data/vendor/assets/javascripts/marked.min.js +6 -0
  93. data/vendor/assets/javascripts/minisearch.min.js +2044 -0
  94. data/vendor/assets/javascripts/monaco-themes-bundle.js +10 -0
  95. data/vendor/assets/javascripts/monaco-vim.js +9867 -0
  96. data/vendor/assets/javascripts/prettier-plugin-babel.js +16 -0
  97. data/vendor/assets/javascripts/prettier-plugin-estree.js +35 -0
  98. data/vendor/assets/javascripts/prettier-plugin-html.js +19 -0
  99. data/vendor/assets/javascripts/prettier-plugin-markdown.js +59 -0
  100. data/vendor/assets/javascripts/prettier-plugin-postcss.js +52 -0
  101. data/vendor/assets/javascripts/prettier-standalone.js +37 -0
  102. data/vendor/assets/javascripts/react-dom.min.js +267 -0
  103. data/vendor/assets/javascripts/react.min.js +31 -0
  104. data/vendor/assets/stylesheets/fontawesome.min.css.erb +9 -0
  105. data/vendor/assets/webfonts/fa-brands-400.woff2 +0 -0
  106. data/vendor/assets/webfonts/fa-regular-400.woff2 +0 -0
  107. data/vendor/assets/webfonts/fa-solid-900.woff2 +0 -0
  108. metadata +188 -0
@@ -0,0 +1,2061 @@
1
+ /* ── Mini Browser Editor Global Styles ──────────────────── */
2
+ *, *::before, *::after { box-sizing: border-box; }
3
+
4
+ html, body, #mbeditor-root {
5
+ margin: 0; padding: 0;
6
+ width: 100%; height: 100%;
7
+ overflow: hidden;
8
+ background: #1e1e1e;
9
+ color: #cdd6f4;
10
+ font-family: 'Segoe UI', system-ui, sans-serif;
11
+ font-size: 13px;
12
+ }
13
+
14
+ /* ── IDE Shell Layout ────────────────────────────────────── */
15
+ .ide-shell {
16
+ display: flex;
17
+ flex-direction: column;
18
+ height: 100vh;
19
+ width: 100vw;
20
+ background: #1e1e1e;
21
+ }
22
+
23
+ .ide-titlebar {
24
+ display: flex;
25
+ align-items: center;
26
+ background: #252526;
27
+ border-bottom: 1px solid #3c3c3c;
28
+ height: 32px;
29
+ padding: 0 12px;
30
+ flex-shrink: 0;
31
+ user-select: none;
32
+ }
33
+
34
+ .ide-titlebar-icon {
35
+ color: #4ec9b0;
36
+ margin-right: 8px;
37
+ font-size: 14px;
38
+ }
39
+
40
+ .ide-titlebar-title {
41
+ font-size: 13px;
42
+ color: #cccccc;
43
+ font-weight: 500;
44
+ }
45
+
46
+ .ide-body {
47
+ display: flex;
48
+ flex: 1;
49
+ overflow: hidden;
50
+ }
51
+
52
+ /* ── Sidebar ─────────────────────────────────────────────── */
53
+ .ide-sidebar {
54
+ width: 280px;
55
+ min-width: 280px;
56
+ max-width: 560px;
57
+ background: #252526;
58
+ border-right: 1px solid #3c3c3c;
59
+ display: flex;
60
+ flex-direction: column;
61
+ overflow: hidden;
62
+ flex-shrink: 0;
63
+ transition: width 0.15s ease;
64
+ }
65
+
66
+ .ide-sidebar.ide-sidebar-collapsed {
67
+ min-width: 0;
68
+ max-width: none;
69
+ }
70
+
71
+ /* ── Collapsed sidebar icon strip ──────────────────────────── */
72
+ .sidebar-icon-strip {
73
+ display: flex;
74
+ flex-direction: column;
75
+ align-items: center;
76
+ height: 100%;
77
+ padding: 4px 0;
78
+ }
79
+
80
+ .sidebar-strip-top {
81
+ display: flex;
82
+ flex-direction: column;
83
+ align-items: center;
84
+ gap: 2px;
85
+ flex: 1;
86
+ }
87
+
88
+ .sidebar-strip-bottom {
89
+ display: flex;
90
+ flex-direction: column;
91
+ align-items: center;
92
+ gap: 2px;
93
+ padding-bottom: 4px;
94
+ }
95
+
96
+ .sidebar-strip-btn {
97
+ width: 36px;
98
+ height: 36px;
99
+ background: transparent;
100
+ border: none;
101
+ border-radius: 6px;
102
+ color: #858585;
103
+ display: flex;
104
+ align-items: center;
105
+ justify-content: center;
106
+ cursor: pointer;
107
+ font-size: 15px;
108
+ transition: background 0.12s ease, color 0.12s ease;
109
+ }
110
+
111
+ .sidebar-strip-btn:hover {
112
+ background: #2a2d2e;
113
+ color: #cccccc;
114
+ }
115
+
116
+ .sidebar-strip-btn.active {
117
+ color: #4ec9b0;
118
+ border-left: 2px solid #4ec9b0;
119
+ border-radius: 0 6px 6px 0;
120
+ }
121
+
122
+ .panel-divider {
123
+ flex-shrink: 0;
124
+ cursor: col-resize;
125
+ transition: background 0.12s ease;
126
+ }
127
+
128
+ .sidebar-divider {
129
+ width: 6px;
130
+ background: #2a2a2a;
131
+ border-right: 1px solid #3c3c3c;
132
+ }
133
+
134
+ .ide-sidebar-collapsed + .sidebar-divider {
135
+ cursor: default;
136
+ }
137
+
138
+ .ide-sidebar-collapsed + .sidebar-divider:hover {
139
+ background: #2a2a2a;
140
+ }
141
+
142
+ .pane-divider {
143
+ width: 4px;
144
+ background: #333;
145
+ z-index: 10;
146
+ }
147
+
148
+ .panel-divider:hover,
149
+ .panel-divider.active {
150
+ background: #007acc;
151
+ }
152
+
153
+ .ide-sidebar-header {
154
+ padding: 6px 12px;
155
+ font-size: 11px;
156
+ font-weight: 600;
157
+ text-transform: uppercase;
158
+ color: #bbbbbb;
159
+ letter-spacing: 0.08em;
160
+ border-bottom: 1px solid #3c3c3c;
161
+ flex-shrink: 0;
162
+ display: flex;
163
+ align-items: center;
164
+ gap: 6px;
165
+ }
166
+
167
+ .ide-sidebar-tabs {
168
+ display: flex;
169
+ border-bottom: 1px solid #3c3c3c;
170
+ flex-shrink: 0;
171
+ }
172
+
173
+ .ide-sidebar-tab {
174
+ flex: 1;
175
+ padding: 5px 0;
176
+ font-size: 11px;
177
+ text-align: center;
178
+ cursor: pointer;
179
+ color: #888;
180
+ border: none;
181
+ background: transparent;
182
+ transition: color 0.15s, background 0.15s;
183
+ }
184
+
185
+ .ide-sidebar-tab.ide-sidebar-tab-icon {
186
+ flex: 0 0 auto;
187
+ padding: 5px 10px;
188
+ font-size: 14px;
189
+ }
190
+
191
+ .ide-sidebar-tab:hover { color: #ccc; background: #2d2d2d; }
192
+ .ide-sidebar-tab.active { color: #4ec9b0; border-bottom: 2px solid #4ec9b0; }
193
+
194
+ .ide-sidebar-content {
195
+ flex: 1;
196
+ overflow: hidden;
197
+ display: flex;
198
+ flex-direction: column;
199
+ }
200
+
201
+ .ide-sidebar-fixed {
202
+ flex-shrink: 0;
203
+ }
204
+
205
+ .ide-sidebar-scrollable {
206
+ flex: 1;
207
+ overflow-y: auto;
208
+ overflow-x: hidden;
209
+ }
210
+
211
+ .ide-sidebar-scrollable::-webkit-scrollbar { width: 6px; }
212
+ .ide-sidebar-scrollable::-webkit-scrollbar-track { background: transparent; }
213
+ .ide-sidebar-scrollable::-webkit-scrollbar-thumb { background: #424242; border-radius: 3px; }
214
+
215
+ /* ── File Tree ────────────────────────────────────────────── */
216
+ .file-tree-root { padding: 4px 0; }
217
+ .file-tree { padding: 0; }
218
+
219
+ .tree-item {
220
+ display: flex;
221
+ align-items: center;
222
+ position: relative;
223
+ padding: 2px 8px;
224
+ cursor: pointer;
225
+ border-radius: 3px;
226
+ margin: 1px 4px;
227
+ transition: background 0.1s;
228
+ white-space: nowrap;
229
+ overflow: hidden;
230
+ text-overflow: ellipsis;
231
+ }
232
+
233
+ .tree-item:hover { background: #2a2d2e; }
234
+ .tree-item.active { background: #094771; }
235
+ .tree-item.selected { box-shadow: inset 0 0 0 1px rgba(120, 180, 224, 0.5); }
236
+ .tree-item.active.selected { box-shadow: inset 0 0 0 1px rgba(140, 210, 255, 0.8); }
237
+ .tree-item.modified { color: #e2c08d; }
238
+
239
+ /* Inline create row (VS Code-style new file/folder input) */
240
+ .tree-item-inline-create {
241
+ background: transparent;
242
+ cursor: default;
243
+ }
244
+ .tree-item-inline-create:hover {
245
+ background: transparent;
246
+ }
247
+ .tree-inline-input {
248
+ flex: 1;
249
+ min-width: 0;
250
+ background: #3c3c3c;
251
+ border: 1px solid #007acc;
252
+ border-radius: 3px;
253
+ color: #d4d4d4;
254
+ font-size: 12px;
255
+ font-family: inherit;
256
+ padding: 1px 4px;
257
+ outline: none;
258
+ height: 18px;
259
+ line-height: 18px;
260
+ }
261
+
262
+ .tree-item-icon {
263
+ width: 16px;
264
+ margin-right: 5px;
265
+ font-size: 12px;
266
+ flex-shrink: 0;
267
+ text-align: center;
268
+ }
269
+
270
+ .tree-folder-icon { color: #dcb67a; }
271
+ .tree-file-icon { color: #78b4e0; }
272
+ .tree-item-name { flex: 1; overflow: hidden; text-overflow: ellipsis; font-size: 12px; }
273
+
274
+ /* ── Custom File Icons ───────────────────────────────────── */
275
+ .ruby-icon { color: #f26262 !important; }
276
+ .react-icon { color: #61dafb !important; }
277
+ .js-icon { color: #f7df1e !important; }
278
+ .erb-icon, .html-icon { color: #e34c26 !important; }
279
+ .css-icon { color: #264de4 !important; }
280
+ .image-icon { color: #7cc6ff !important; }
281
+ .json-icon { color: #cbcb41 !important; }
282
+ .md-icon { color: #87b9ff !important; }
283
+ .yml-icon { color: #cb171e !important; }
284
+
285
+ /* ── Main Editor Area ────────────────────────────────────── */
286
+ .ide-main {
287
+ flex: 1;
288
+ display: flex;
289
+ flex-direction: column;
290
+ overflow: hidden;
291
+ min-width: 0;
292
+ background: #1e1e1e;
293
+ }
294
+
295
+ .ide-pane {
296
+ border: 1px solid transparent;
297
+ transition: border-color 0.12s ease, box-shadow 0.12s ease;
298
+ }
299
+
300
+ .ide-pane.drop-target {
301
+ border-color: #4ec9b0;
302
+ box-shadow: inset 0 0 0 1px rgba(78, 201, 176, 0.35);
303
+ }
304
+
305
+ /* ── Tab Bar ─────────────────────────────────────────────── */
306
+ .tab-bar {
307
+ display: flex;
308
+ align-items: center;
309
+ background: #252526;
310
+ border-bottom: 1px solid #3c3c3c;
311
+ height: 35px;
312
+ overflow-x: auto;
313
+ overflow-y: hidden;
314
+ flex-shrink: 0;
315
+ }
316
+
317
+ .tab-bar::-webkit-scrollbar { height: 3px; }
318
+ .tab-bar::-webkit-scrollbar-thumb { background: #555; }
319
+
320
+ .tab-item {
321
+ display: flex;
322
+ align-items: center;
323
+ padding: 0 12px;
324
+ height: 35px;
325
+ min-width: 100px;
326
+ max-width: 200px;
327
+ cursor: pointer;
328
+ border-right: 1px solid #3c3c3c;
329
+ background: #2d2d2d;
330
+ color: #888;
331
+ font-size: 12px;
332
+ transition: background 0.1s, color 0.1s;
333
+ white-space: nowrap;
334
+ overflow: hidden;
335
+ user-select: none;
336
+ position: relative;
337
+ flex-shrink: 0;
338
+ }
339
+
340
+ .tab-item.drop-before { box-shadow: inset 2px 0 0 #4ec9b0; }
341
+ .tab-item.drop-after { box-shadow: inset -2px 0 0 #4ec9b0; }
342
+
343
+ .tab-item.dragging {
344
+ opacity: 0.55;
345
+ }
346
+
347
+ .tab-item:hover { background: #333; color: #ccc; }
348
+ .tab-item.active { background: #1e1e1e; color: #fff; border-top: 1px solid #4ec9b0; }
349
+ .tab-item.tab-soft .tab-item-name { font-style: italic; }
350
+
351
+ .tab-has-error {
352
+ border-bottom: 2px solid #d32f2f !important;
353
+ }
354
+ .tab-item.active.tab-has-error {
355
+ border-top: 2px solid #d32f2f !important;
356
+ border-bottom: none !important;
357
+ }
358
+
359
+ .tab-has-warning {
360
+ border-bottom: 2px solid #f9a825 !important;
361
+ }
362
+
363
+ .tab-item.active.tab-has-warning {
364
+ border-top: 2px solid #f9a825 !important;
365
+ border-bottom: none !important;
366
+ }
367
+
368
+ .tab-item-icon {
369
+ width: 14px;
370
+ margin-right: 8px;
371
+ font-size: 12px;
372
+ text-align: center;
373
+ flex-shrink: 0;
374
+ }
375
+
376
+ .tab-item-name {
377
+ overflow: hidden;
378
+ text-overflow: ellipsis;
379
+ flex: 1;
380
+ }
381
+
382
+ .tab-dirty-dot {
383
+ color: #e5c07b;
384
+ margin-left: 4px;
385
+ font-size: 10px;
386
+ line-height: 1;
387
+ }
388
+
389
+ .tab-close {
390
+ margin-left: 6px;
391
+ width: 16px;
392
+ height: 16px;
393
+ display: flex;
394
+ align-items: center;
395
+ justify-content: center;
396
+ border-radius: 3px;
397
+ font-size: 11px;
398
+ color: #666;
399
+ flex-shrink: 0;
400
+ transition: background 0.1s, color 0.1s;
401
+ }
402
+
403
+ .tab-close:hover { background: #555; color: #fff; }
404
+
405
+ .tab-welcome {
406
+ flex: 1;
407
+ display: flex;
408
+ align-items: center;
409
+ justify-content: flex-start;
410
+ flex-direction: column;
411
+ color: #555;
412
+ gap: 12px;
413
+ overflow-y: auto;
414
+ padding: 40px 48px;
415
+ }
416
+
417
+ .tab-welcome i { font-size: 48px; color: #333; opacity: 0.18; }
418
+ .tab-welcome h2 { font-size: 18px; font-weight: 400; color: #444; margin: 0; }
419
+ .tab-welcome p { font-size: 13px; color: #444; margin: 0; }
420
+ .tab-welcome kbd {
421
+ background: #2a2d2e;
422
+ border: 1px solid #444;
423
+ border-radius: 4px;
424
+ padding: 2px 6px;
425
+ font-size: 11px;
426
+ font-family: monospace;
427
+ }
428
+
429
+ .welcome-intro { font-size: 13px; color: #666; margin: 0; }
430
+
431
+ .welcome-shortcuts {
432
+ display: flex;
433
+ flex-wrap: wrap;
434
+ gap: 28px;
435
+ margin-top: 8px;
436
+ max-width: 580px;
437
+ width: 100%;
438
+ }
439
+
440
+ .welcome-section { min-width: 220px; }
441
+
442
+ .welcome-section h3 {
443
+ font-size: 11px;
444
+ font-weight: 700;
445
+ text-transform: uppercase;
446
+ letter-spacing: 0.07em;
447
+ color: #bbb;
448
+ margin: 0 0 8px 0;
449
+ border-bottom: 1px solid #3a3a3a;
450
+ padding-bottom: 4px;
451
+ }
452
+
453
+ .shortcut-table { border-collapse: collapse; width: 100%; }
454
+ .shortcut-table td { padding: 3px 8px 3px 0; font-size: 12px; color: #888; vertical-align: middle; }
455
+ .shortcut-table td:first-child { padding-right: 14px; white-space: nowrap; }
456
+
457
+ .welcome-tips {
458
+ list-style: none;
459
+ margin: 0;
460
+ padding: 0;
461
+ display: flex;
462
+ flex-direction: column;
463
+ gap: 7px;
464
+ }
465
+ .welcome-tips li { font-size: 12px; color: #777; }
466
+ .welcome-tips li i { color: #555; width: 14px; text-align: center; }
467
+
468
+ /* ── Search results meta ─────────────────────────────────── */
469
+ .search-results-meta {
470
+ padding: 4px 8px 6px;
471
+ font-size: 11px;
472
+ color: #888;
473
+ border-bottom: 1px solid #2a2a2a;
474
+ margin-bottom: 4px;
475
+ }
476
+ .search-results-capped { color: #f0a040; }
477
+ .search-results-empty { padding: 12px 8px; font-size: 12px; color: #666; }
478
+
479
+ /* ── Shortcut Help Drawer ────────────────────────────────── */
480
+ .shelp-backdrop {
481
+ position: fixed;
482
+ inset: 0;
483
+ background: rgba(0, 0, 0, 0.55);
484
+ z-index: 9000;
485
+ display: flex;
486
+ align-items: center;
487
+ justify-content: center;
488
+ }
489
+
490
+ .shelp-panel {
491
+ background: #252526;
492
+ border: 1px solid #3c3c3c;
493
+ border-radius: 6px;
494
+ width: 660px;
495
+ max-width: calc(100vw - 48px);
496
+ max-height: calc(100vh - 80px);
497
+ display: flex;
498
+ flex-direction: column;
499
+ box-shadow: 0 12px 40px rgba(0, 0, 0, 0.6);
500
+ overflow: hidden;
501
+ }
502
+
503
+ .shelp-header {
504
+ display: flex;
505
+ align-items: center;
506
+ justify-content: space-between;
507
+ padding: 12px 16px;
508
+ border-bottom: 1px solid #3c3c3c;
509
+ flex-shrink: 0;
510
+ }
511
+
512
+ .shelp-title {
513
+ font-size: 13px;
514
+ font-weight: 600;
515
+ color: #cccccc;
516
+ }
517
+
518
+ .shelp-close {
519
+ background: none;
520
+ border: none;
521
+ color: #888;
522
+ cursor: pointer;
523
+ padding: 2px 6px;
524
+ font-size: 14px;
525
+ border-radius: 3px;
526
+ line-height: 1;
527
+ }
528
+ .shelp-close:hover { background: #3c3c3c; color: #ccc; }
529
+
530
+ .shelp-body {
531
+ overflow-y: auto;
532
+ padding: 16px;
533
+ }
534
+
535
+ .shelp-columns {
536
+ display: flex;
537
+ gap: 24px;
538
+ flex-wrap: wrap;
539
+ }
540
+
541
+ .shelp-col {
542
+ flex: 1;
543
+ min-width: 240px;
544
+ display: flex;
545
+ flex-direction: column;
546
+ gap: 20px;
547
+ }
548
+
549
+ .shelp-section { display: flex; flex-direction: column; gap: 8px; }
550
+
551
+ .shelp-section-title {
552
+ font-size: 11px;
553
+ font-weight: 600;
554
+ text-transform: uppercase;
555
+ letter-spacing: 0.07em;
556
+ color: #666;
557
+ margin: 0;
558
+ border-bottom: 1px solid #2a2a2a;
559
+ padding-bottom: 4px;
560
+ }
561
+
562
+ .shelp-table { border-collapse: collapse; width: 100%; }
563
+ .shelp-table td { padding: 3px 8px 3px 0; vertical-align: middle; }
564
+ .shelp-key { white-space: nowrap; }
565
+ .shelp-key kbd {
566
+ background: #2a2d2e;
567
+ border: 1px solid #444;
568
+ border-radius: 4px;
569
+ padding: 2px 7px;
570
+ font-size: 11px;
571
+ font-family: monospace;
572
+ color: #c8c8c8;
573
+ }
574
+ .shelp-desc { font-size: 12px; color: #999; }
575
+
576
+ .shelp-tips {
577
+ list-style: none;
578
+ margin: 0;
579
+ padding: 0;
580
+ display: flex;
581
+ flex-direction: column;
582
+ gap: 6px;
583
+ }
584
+ .shelp-tips li { font-size: 12px; color: #888; line-height: 1.4; }
585
+ .shelp-tips li::before { content: '•'; color: #555; margin-right: 6px; }
586
+
587
+ /* ── Monaco Container ────────────────────────────────────── */
588
+ .monaco-container {
589
+ flex: 1;
590
+ overflow: hidden;
591
+ }
592
+
593
+ .file-not-found-overlay {
594
+ display: flex;
595
+ flex-direction: column;
596
+ align-items: center;
597
+ justify-content: center;
598
+ background: #1e1e1e;
599
+ color: #888;
600
+ user-select: none;
601
+ gap: 8px;
602
+ }
603
+
604
+ .file-not-found-icon {
605
+ font-size: 36px;
606
+ color: #555;
607
+ margin-bottom: 4px;
608
+ }
609
+
610
+ .file-not-found-title {
611
+ font-size: 14px;
612
+ color: #aaa;
613
+ margin: 0;
614
+ }
615
+
616
+ .file-not-found-path {
617
+ font-size: 11px;
618
+ color: #666;
619
+ font-family: 'JetBrains Mono', 'Fira Code', Consolas, monospace;
620
+ margin: 0;
621
+ }
622
+
623
+ .monaco-editor .monaco-hover,
624
+ .monaco-editor .suggest-widget {
625
+ z-index: 2000 !important;
626
+ }
627
+
628
+ .markdown-preview {
629
+ width: 100%;
630
+ height: 100%;
631
+ overflow-y: auto;
632
+ background: #1e1e1e;
633
+ color: #ccc;
634
+ font-family: 'Segoe UI', system-ui, sans-serif;
635
+ padding: 20px;
636
+ }
637
+
638
+ .markdown-preview h1,
639
+ .markdown-preview h2,
640
+ .markdown-preview h3,
641
+ .markdown-preview h4 {
642
+ color: #ffffff;
643
+ }
644
+
645
+ .markdown-preview a {
646
+ color: #4ec9b0;
647
+ }
648
+
649
+ .markdown-preview code {
650
+ background: #2d2d2d;
651
+ padding: 1px 4px;
652
+ border-radius: 4px;
653
+ font-family: 'JetBrains Mono', Consolas, monospace;
654
+ }
655
+
656
+ .markdown-preview pre code {
657
+ display: block;
658
+ padding: 12px;
659
+ overflow-x: auto;
660
+ }
661
+
662
+ /* ── Status Bar ──────────────────────────────────────────── */
663
+ .ide-statusbar {
664
+ display: flex;
665
+ align-items: center;
666
+ background: #007acc;
667
+ height: 22px;
668
+ padding: 0 8px;
669
+ gap: 4px;
670
+ flex-shrink: 0;
671
+ font-size: 11px;
672
+ }
673
+
674
+ .statusbar-branch {
675
+ display: flex;
676
+ align-items: center;
677
+ gap: 6px;
678
+ font-size: 13px;
679
+ font-weight: 600;
680
+ }
681
+
682
+ .statusbar-aheadbehind {
683
+ font-size: 11px;
684
+ font-weight: 600;
685
+ color: #89d185;
686
+ opacity: 0.9;
687
+ }
688
+ .statusbar-aheadbehind.statusbar-behind { color: #f48771; }
689
+
690
+ .statusbar-file-commit {
691
+ display: flex;
692
+ align-items: center;
693
+ gap: 4px;
694
+ font-size: 11px;
695
+ color: #8a9ab0;
696
+ white-space: nowrap;
697
+ overflow: hidden;
698
+ text-overflow: ellipsis;
699
+ max-width: 260px;
700
+ cursor: default;
701
+ }
702
+
703
+ .statusbar-offline {
704
+ display: flex;
705
+ align-items: center;
706
+ gap: 6px;
707
+ font-size: 12px;
708
+ font-weight: 600;
709
+ color: #f48771;
710
+ padding: 0 10px;
711
+ animation: statusbar-pulse 2s ease-in-out infinite;
712
+ }
713
+
714
+ @keyframes statusbar-pulse {
715
+ 0%, 100% { opacity: 1; }
716
+ 50% { opacity: 0.5; }
717
+ }
718
+
719
+ .statusbar-btn {
720
+ display: flex;
721
+ align-items: center;
722
+ gap: 4px;
723
+ padding: 0 8px;
724
+ height: 22px;
725
+ flex-shrink: 0;
726
+ background: transparent;
727
+ border: none;
728
+ color: rgba(255,255,255,0.9);
729
+ cursor: pointer;
730
+ font-size: 11px;
731
+ border-radius: 2px;
732
+ transition: background 0.1s;
733
+ white-space: nowrap;
734
+ }
735
+
736
+ .statusbar-btn:hover { background: rgba(255,255,255,0.15); }
737
+ .statusbar-btn:disabled { opacity: 0.5; cursor: not-allowed; }
738
+
739
+ .titlebar-git-btn {
740
+ min-width: 62px;
741
+ justify-content: center;
742
+ position: relative;
743
+ z-index: 1;
744
+ }
745
+
746
+ .statusbar-sep { width: 1px; height: 14px; background: rgba(255,255,255,0.2); margin: 0 2px; }
747
+
748
+ .statusbar-msg {
749
+ margin-left: auto;
750
+ color: rgba(255,255,255,0.8);
751
+ font-size: 11px;
752
+ overflow: hidden;
753
+ text-overflow: ellipsis;
754
+ white-space: nowrap;
755
+ max-width: 400px;
756
+ }
757
+
758
+ .statusbar-msg.error { color: #f48771; }
759
+ .statusbar-msg.success { color: #89d185; }
760
+
761
+ .statusbar-version {
762
+ color: rgba(255,255,255,0.45);
763
+ font-size: 10px;
764
+ white-space: nowrap;
765
+ padding-left: 8px;
766
+ }
767
+
768
+ /* ── Search Panel ─────────────────────────────────────────── */
769
+ .search-panel {
770
+ padding: 8px;
771
+ display: flex;
772
+ flex-direction: column;
773
+ gap: 6px;
774
+ flex: 1;
775
+ min-height: 0;
776
+ }
777
+
778
+ .search-input-wrap {
779
+ display: flex;
780
+ gap: 6px;
781
+ }
782
+
783
+ .search-input-shell {
784
+ position: relative;
785
+ flex: 1;
786
+ min-width: 0;
787
+ }
788
+
789
+ .search-input {
790
+ width: 100%;
791
+ background: #3c3c3c;
792
+ border: 1px solid #555;
793
+ border-radius: 4px;
794
+ color: #ccc;
795
+ padding: 4px 28px 4px 8px;
796
+ font-size: 12px;
797
+ outline: none;
798
+ }
799
+
800
+ .search-input:focus { border-color: #4ec9b0; }
801
+
802
+ .search-clear-btn {
803
+ position: absolute;
804
+ right: 4px;
805
+ top: 50%;
806
+ transform: translateY(-50%);
807
+ width: 20px;
808
+ height: 20px;
809
+ border: none;
810
+ border-radius: 3px;
811
+ background: transparent;
812
+ color: #aaa;
813
+ cursor: pointer;
814
+ display: flex;
815
+ align-items: center;
816
+ justify-content: center;
817
+ }
818
+
819
+ .search-clear-btn:hover {
820
+ background: #2a2d2e;
821
+ color: #ddd;
822
+ }
823
+
824
+ .search-btn {
825
+ background: #094771;
826
+ border: none;
827
+ border-radius: 4px;
828
+ color: #ccc;
829
+ padding: 4px 10px;
830
+ font-size: 12px;
831
+ cursor: pointer;
832
+ transition: background 0.1s;
833
+ }
834
+
835
+ .search-btn:hover { background: #0e639c; }
836
+
837
+ .search-btn:disabled {
838
+ cursor: progress;
839
+ opacity: 0.85;
840
+ }
841
+
842
+ .search-results {
843
+ flex: 1;
844
+ overflow-y: auto;
845
+ }
846
+
847
+ .search-result-item {
848
+ padding: 4px 6px;
849
+ cursor: pointer;
850
+ border-radius: 3px;
851
+ transition: background 0.1s;
852
+ border-bottom: 1px solid #2d2d2d;
853
+ display: flex;
854
+ align-items: flex-start;
855
+ gap: 8px;
856
+ }
857
+
858
+ .search-result-item:hover { background: #2a2d2e; }
859
+
860
+ .search-result-icon {
861
+ flex-shrink: 0;
862
+ width: 16px;
863
+ margin-top: 2px;
864
+ text-align: center;
865
+ color: #78b4e0;
866
+ }
867
+
868
+ .search-result-body {
869
+ min-width: 0;
870
+ flex: 1;
871
+ }
872
+
873
+ .search-result-file {
874
+ font-size: 11px;
875
+ color: #4ec9b0;
876
+ font-weight: 500;
877
+ }
878
+
879
+ .search-result-line-num {
880
+ font-size: 10px;
881
+ color: #666;
882
+ margin-left: 4px;
883
+ }
884
+
885
+ .search-result-text {
886
+ font-size: 11px;
887
+ color: #aaa;
888
+ font-family: monospace;
889
+ white-space: pre;
890
+ overflow: hidden;
891
+ text-overflow: ellipsis;
892
+ }
893
+
894
+ /* ── Git Status Panel ─────────────────────────────────────── */
895
+ .git-panel { padding: 8px; }
896
+
897
+ .git-file-item {
898
+ display: flex;
899
+ align-items: center;
900
+ gap: 2px;
901
+ padding: 1px 6px 1px 2px;
902
+ border-radius: 3px;
903
+ transition: background 0.1s;
904
+ font-size: 12px;
905
+ min-width: 0;
906
+ overflow: hidden;
907
+ }
908
+
909
+ .git-file-item:hover { background: #2a2d2e; }
910
+
911
+ .git-hint {
912
+ padding: 6px 12px;
913
+ font-size: 11px;
914
+ color: #7f8b97;
915
+ }
916
+
917
+ .git-M { color: #e2c08d; }
918
+ .git-A { color: #89d185; }
919
+ .git-D { color: #f48771; }
920
+ .git-R { color: #78b4e0; }
921
+ .git-Q { color: #888; }
922
+
923
+ /* ── Right-side Git Panel ───────────────────────────────── */
924
+ .ide-git-right-panel {
925
+ background: #202124;
926
+ border-left: 1px solid #3c3c3c;
927
+ display: flex;
928
+ flex-direction: column;
929
+ overflow: hidden;
930
+ flex-shrink: 0;
931
+ min-width: 260px;
932
+ max-width: 600px;
933
+ }
934
+
935
+ .gitpanel-divider {
936
+ width: 5px;
937
+ background: #2a2a2a;
938
+ border-left: 1px solid #3c3c3c;
939
+ }
940
+
941
+ .ide-git-panel {
942
+ width: 100%;
943
+ height: 100%;
944
+ background: #202124;
945
+ display: flex;
946
+ flex-direction: column;
947
+ overflow: hidden;
948
+ flex: 1;
949
+ }
950
+
951
+ .ide-git-panel-header-info {
952
+ flex: 1;
953
+ min-width: 0;
954
+ }
955
+
956
+ .ide-git-panel-header {
957
+ display: flex;
958
+ justify-content: space-between;
959
+ align-items: flex-start;
960
+ padding: 10px 10px 8px;
961
+ border-bottom: 1px solid #333;
962
+ }
963
+
964
+ .ide-git-panel-title {
965
+ font-size: 12px;
966
+ font-weight: 700;
967
+ text-transform: uppercase;
968
+ letter-spacing: 0.08em;
969
+ color: #8ec7ff;
970
+ }
971
+
972
+ .ide-git-panel-branch {
973
+ margin-top: 4px;
974
+ color: #d6e9ff;
975
+ font-size: 13px;
976
+ font-weight: 600;
977
+ }
978
+
979
+ .ide-git-panel-actions {
980
+ display: flex;
981
+ gap: 4px;
982
+ }
983
+
984
+ .git-header-btn {
985
+ background: none;
986
+ border: none;
987
+ color: #9fabb7;
988
+ cursor: pointer;
989
+ padding: 3px 5px;
990
+ border-radius: 3px;
991
+ font-size: 12px;
992
+ line-height: 1;
993
+ transition: background 0.12s, color 0.12s;
994
+ }
995
+ .git-header-btn:hover { background: rgba(255,255,255,0.08); color: #cdd9e5; }
996
+
997
+ .git-metadata {
998
+ display: grid;
999
+ grid-template-columns: 1fr;
1000
+ gap: 4px;
1001
+ padding: 8px 12px;
1002
+ border-bottom: 1px solid #2d2f31;
1003
+ color: #b4bcc4;
1004
+ font-size: 12px;
1005
+ }
1006
+
1007
+ .git-section {
1008
+ border-bottom: 1px solid #2d2f31;
1009
+ min-height: 0;
1010
+ flex-shrink: 0; /* don't let sections steal space from the graph section */
1011
+ }
1012
+
1013
+ .git-commit-section {
1014
+ flex: 1;
1015
+ overflow: hidden;
1016
+ }
1017
+
1018
+ .git-section-title {
1019
+ padding: 8px 12px;
1020
+ font-size: 11px;
1021
+ font-weight: 700;
1022
+ text-transform: uppercase;
1023
+ letter-spacing: 0.06em;
1024
+ color: #9fabb7;
1025
+ background: #25282b;
1026
+ }
1027
+
1028
+ .git-list {
1029
+ max-height: 200px;
1030
+ overflow-y: auto;
1031
+ }
1032
+
1033
+ .git-history-section .git-history-graph-wrap {
1034
+ overflow-y: auto;
1035
+ max-height: 400px;
1036
+ }
1037
+
1038
+ /* In the right panel, the history section grows to fill remaining space */
1039
+ .ide-git-right-panel .ide-git-panel {
1040
+ /* Ensure flex column so sections stack and the history one can stretch */
1041
+ display: flex;
1042
+ flex-direction: column;
1043
+ overflow: hidden;
1044
+ flex: 1;
1045
+ }
1046
+
1047
+ .ide-git-right-panel .git-history-section {
1048
+ overflow: hidden;
1049
+ display: flex;
1050
+ flex-direction: column;
1051
+ flex-shrink: 0;
1052
+ min-height: 0;
1053
+ }
1054
+
1055
+ /* Only stretch when the graph section is open */
1056
+ .ide-git-right-panel .git-history-section.expanded {
1057
+ flex: 1;
1058
+ min-height: 80px;
1059
+ }
1060
+
1061
+ .ide-git-right-panel .git-history-graph-wrap {
1062
+ flex: 1;
1063
+ min-height: 0;
1064
+ overflow-y: auto;
1065
+ overflow-x: hidden;
1066
+ }
1067
+
1068
+ .git-file-info {
1069
+ display: flex;
1070
+ flex-direction: column;
1071
+ justify-content: center;
1072
+ flex: 1;
1073
+ min-width: 0;
1074
+ overflow: hidden;
1075
+ padding: 3px 4px;
1076
+ cursor: pointer;
1077
+ }
1078
+
1079
+ .git-file-name {
1080
+ font-size: 12px;
1081
+ color: #c8d4df;
1082
+ overflow: hidden;
1083
+ text-overflow: ellipsis;
1084
+ white-space: nowrap;
1085
+ }
1086
+
1087
+ .git-file-dir {
1088
+ font-size: 10px;
1089
+ color: #6e7a85;
1090
+ opacity: 0.6;
1091
+ overflow: hidden;
1092
+ text-overflow: ellipsis;
1093
+ white-space: nowrap;
1094
+ margin-top: 1px;
1095
+ }
1096
+
1097
+ .git-file-type-icon {
1098
+ font-size: 11px;
1099
+ flex-shrink: 0;
1100
+ width: 16px;
1101
+ text-align: center;
1102
+ opacity: 0.85;
1103
+ }
1104
+
1105
+ .git-diff-counts {
1106
+ display: flex;
1107
+ align-items: center;
1108
+ font-size: 10px;
1109
+ font-family: var(--font-mono, monospace);
1110
+ flex-shrink: 0;
1111
+ white-space: nowrap;
1112
+ margin-right: 4px;
1113
+ gap: 1px;
1114
+ }
1115
+ .git-stat-add { color: #89d185; }
1116
+ .git-stat-del { color: #f48771; }
1117
+
1118
+ .git-status-badge {
1119
+ font-size: 10px;
1120
+ font-weight: 700;
1121
+ min-width: 16px;
1122
+ text-align: right;
1123
+ flex-shrink: 0;
1124
+ letter-spacing: 0;
1125
+ padding-right: 2px;
1126
+ }
1127
+
1128
+ .git-section-count {
1129
+ font-size: 10px;
1130
+ background: rgba(255,255,255,0.1);
1131
+ border-radius: 8px;
1132
+ padding: 1px 6px;
1133
+ color: #9db0bb;
1134
+ font-weight: 600;
1135
+ }
1136
+
1137
+ .git-ahead-chip {
1138
+ display: inline-block;
1139
+ margin-left: 6px;
1140
+ font-size: 11px;
1141
+ color: #89d185;
1142
+ font-weight: 600;
1143
+ }
1144
+
1145
+ .git-behind-chip {
1146
+ display: inline-block;
1147
+ margin-left: 4px;
1148
+ font-size: 11px;
1149
+ color: #f48771;
1150
+ font-weight: 600;
1151
+ }
1152
+
1153
+ .git-commit-item {
1154
+ padding: 8px 10px;
1155
+ border-bottom: 1px solid #2a2e31;
1156
+ }
1157
+
1158
+ .git-commit-title {
1159
+ color: #d7dfe7;
1160
+ font-size: 12px;
1161
+ line-height: 1.35;
1162
+ }
1163
+
1164
+ .git-commit-meta {
1165
+ margin-top: 4px;
1166
+ font-size: 11px;
1167
+ color: #7f8b97;
1168
+ }
1169
+
1170
+ .git-empty,
1171
+ .git-error {
1172
+ padding: 8px 12px;
1173
+ font-size: 12px;
1174
+ }
1175
+
1176
+ .git-empty {
1177
+ color: #7d8791;
1178
+ }
1179
+
1180
+ .git-error {
1181
+ color: #f48771;
1182
+ }
1183
+
1184
+ /* ── Collapsible Section ──────────────────────────────────────── */
1185
+ .collapsible-section {
1186
+ border-bottom: 1px solid #3c3c3c;
1187
+ margin-bottom: 0;
1188
+ }
1189
+
1190
+ .collapsible-header {
1191
+ display: flex;
1192
+ align-items: center;
1193
+ gap: 6px;
1194
+ padding: 6px 12px;
1195
+ font-size: 11px;
1196
+ font-weight: 600;
1197
+ text-transform: uppercase;
1198
+ color: #bbbbbb;
1199
+ letter-spacing: 0.08em;
1200
+ cursor: pointer;
1201
+ user-select: none;
1202
+ transition: background 0.1s ease;
1203
+ }
1204
+
1205
+ .ide-sidebar-scrollable .collapsible-header {
1206
+ position: sticky;
1207
+ top: 0;
1208
+ z-index: 1;
1209
+ background: #252526;
1210
+ }
1211
+
1212
+ .collapsible-header:hover {
1213
+ background: #2a2d2e;
1214
+ }
1215
+
1216
+
1217
+ .collapsible-toggle {
1218
+ font-size: 8px;
1219
+ width: 16px;
1220
+ display: inline-flex;
1221
+ align-items: center;
1222
+ justify-content: center;
1223
+ flex-shrink: 0;
1224
+ transition: transform 0.15s ease;
1225
+ }
1226
+
1227
+ .collapsible-icon {
1228
+ font-size: 12px;
1229
+ margin-right: 2px;
1230
+ flex-shrink: 0;
1231
+ }
1232
+
1233
+ .collapsible-title {
1234
+ flex: 1;
1235
+ min-width: 0;
1236
+ overflow: hidden;
1237
+ text-overflow: ellipsis;
1238
+ white-space: nowrap;
1239
+ }
1240
+
1241
+ .collapsible-actions {
1242
+ display: inline-flex;
1243
+ align-items: center;
1244
+ gap: 4px;
1245
+ flex-shrink: 0;
1246
+ margin-left: auto;
1247
+ }
1248
+
1249
+ .project-actions {
1250
+ display: inline-flex;
1251
+ align-items: center;
1252
+ gap: 4px;
1253
+ }
1254
+
1255
+ .open-editors-group-header {
1256
+ font-size: 10px;
1257
+ padding-left: 8px;
1258
+ margin-bottom: 4px;
1259
+ }
1260
+
1261
+ .open-editors-group-title {
1262
+ flex: 1;
1263
+ opacity: 0.7;
1264
+ }
1265
+
1266
+ .open-editors-group-actions {
1267
+ opacity: 0;
1268
+ pointer-events: none;
1269
+ transition: opacity 0.12s ease;
1270
+ }
1271
+
1272
+ .open-editors-group:hover .open-editors-group-actions,
1273
+ .open-editors-group:focus-within .open-editors-group-actions {
1274
+ opacity: 1;
1275
+ pointer-events: auto;
1276
+ }
1277
+
1278
+ .ide-icon-btn {
1279
+ min-width: 24px;
1280
+ height: 24px;
1281
+ background: transparent;
1282
+ border: none;
1283
+ border-radius: 4px;
1284
+ color: #858585;
1285
+ display: inline-flex;
1286
+ align-items: center;
1287
+ justify-content: center;
1288
+ cursor: pointer;
1289
+ font-size: 13px;
1290
+ transition: background 0.12s ease, color 0.12s ease;
1291
+ flex-shrink: 0;
1292
+ }
1293
+
1294
+ .ide-icon-btn:hover {
1295
+ background: #2a2d2e;
1296
+ color: #cccccc;
1297
+ }
1298
+
1299
+ .ide-icon-btn.active {
1300
+ color: #4ec9b0;
1301
+ }
1302
+
1303
+ .ide-editor-toolbar {
1304
+ display: flex;
1305
+ justify-content: flex-end;
1306
+ align-items: center;
1307
+ padding: 4px 8px;
1308
+ background: #252526;
1309
+ border-bottom: 1px solid #3c3c3c;
1310
+ gap: 4px;
1311
+ overflow: hidden;
1312
+ min-width: 0;
1313
+ }
1314
+
1315
+ .ide-editor-toolbar .ide-icon-btn {
1316
+ flex-shrink: 1;
1317
+ min-width: 24px;
1318
+ overflow: hidden;
1319
+ white-space: nowrap;
1320
+ padding: 2px 6px;
1321
+ font-size: 12px;
1322
+ opacity: 0.85;
1323
+ }
1324
+
1325
+ .ide-editor-toolbar .ide-icon-btn:hover {
1326
+ opacity: 1;
1327
+ }
1328
+
1329
+ .ide-editor-toolbar .ide-icon-btn.active {
1330
+ opacity: 1;
1331
+ }
1332
+
1333
+ .ide-toolbar-label {
1334
+ overflow: hidden;
1335
+ text-overflow: ellipsis;
1336
+ white-space: nowrap;
1337
+ flex-shrink: 1;
1338
+ min-width: 0;
1339
+ }
1340
+
1341
+ .project-action-btn {
1342
+ width: 20px;
1343
+ height: 20px;
1344
+ border: 1px solid transparent;
1345
+ background: transparent;
1346
+ color: #97a3ae;
1347
+ border-radius: 4px;
1348
+ display: inline-flex;
1349
+ align-items: center;
1350
+ justify-content: center;
1351
+ cursor: pointer;
1352
+ transition: background 0.12s ease, color 0.12s ease, border-color 0.12s ease;
1353
+ }
1354
+
1355
+ .project-action-btn:hover:not(:disabled) {
1356
+ background: #303234;
1357
+ border-color: #4a4c4f;
1358
+ color: #d7dce1;
1359
+ }
1360
+
1361
+ .project-action-btn:disabled {
1362
+ opacity: 0.45;
1363
+ cursor: not-allowed;
1364
+ }
1365
+
1366
+ .project-action-btn.danger:hover:not(:disabled) {
1367
+ color: #f48771;
1368
+ border-color: rgba(244, 135, 113, 0.45);
1369
+ }
1370
+
1371
+ /* Context menu */
1372
+ .context-menu {
1373
+ position: fixed;
1374
+ z-index: 9999;
1375
+ min-width: 180px;
1376
+ background: #252526;
1377
+ border: 1px solid #454545;
1378
+ border-radius: 4px;
1379
+ box-shadow: 0 4px 16px rgba(0,0,0,0.5);
1380
+ padding: 4px 0;
1381
+ font-size: 12px;
1382
+ color: #cccccc;
1383
+ user-select: none;
1384
+ }
1385
+
1386
+ .context-menu-item {
1387
+ display: flex;
1388
+ align-items: center;
1389
+ gap: 8px;
1390
+ padding: 6px 14px;
1391
+ cursor: pointer;
1392
+ white-space: nowrap;
1393
+ }
1394
+
1395
+ .context-menu-item:hover {
1396
+ background: #094771;
1397
+ color: #ffffff;
1398
+ }
1399
+
1400
+ .context-menu-item-danger:hover {
1401
+ background: rgba(244, 135, 113, 0.15);
1402
+ color: #f48771;
1403
+ }
1404
+
1405
+ .context-menu-icon {
1406
+ width: 14px;
1407
+ text-align: center;
1408
+ flex-shrink: 0;
1409
+ font-size: 11px;
1410
+ opacity: 0.8;
1411
+ }
1412
+
1413
+ .context-menu-divider {
1414
+ height: 1px;
1415
+ background: #3c3c3c;
1416
+ margin: 4px 0;
1417
+ }
1418
+
1419
+ .collapsible-content {
1420
+ animation: collapsible-open 0.15s ease;
1421
+ }
1422
+
1423
+ @keyframes collapsible-open {
1424
+ from {
1425
+ opacity: 0;
1426
+ max-height: 0;
1427
+ }
1428
+ to {
1429
+ opacity: 1;
1430
+ max-height: 1000px;
1431
+ }
1432
+ }
1433
+
1434
+ /* ── Quick Open Dialog ─────────────────────────────────────── */
1435
+ .quick-open-overlay {
1436
+ position: fixed;
1437
+ inset: 0;
1438
+ background: rgba(0,0,0,0.6);
1439
+ display: flex;
1440
+ align-items: flex-start;
1441
+ justify-content: center;
1442
+ padding-top: 15vh;
1443
+ z-index: 9999;
1444
+ }
1445
+
1446
+ .quick-open-box {
1447
+ background: #252526;
1448
+ border: 1px solid #454545;
1449
+ border-radius: 8px;
1450
+ width: 500px;
1451
+ max-height: 400px;
1452
+ display: flex;
1453
+ flex-direction: column;
1454
+ box-shadow: 0 16px 48px rgba(0,0,0,0.7);
1455
+ overflow: hidden;
1456
+ }
1457
+
1458
+ .quick-open-input-wrap {
1459
+ position: relative;
1460
+ }
1461
+
1462
+ .quick-open-input {
1463
+ background: transparent;
1464
+ border: none;
1465
+ border-bottom: 1px solid #3c3c3c;
1466
+ color: #ccc;
1467
+ padding: 12px 34px 12px 16px;
1468
+ font-size: 14px;
1469
+ outline: none;
1470
+ width: 100%;
1471
+ }
1472
+
1473
+ .quick-open-clear-btn {
1474
+ position: absolute;
1475
+ right: 6px;
1476
+ top: 50%;
1477
+ transform: translateY(-50%);
1478
+ width: 22px;
1479
+ height: 22px;
1480
+ border: none;
1481
+ border-radius: 4px;
1482
+ background: transparent;
1483
+ color: #999;
1484
+ cursor: pointer;
1485
+ display: flex;
1486
+ align-items: center;
1487
+ justify-content: center;
1488
+ }
1489
+
1490
+ .quick-open-clear-btn:hover {
1491
+ background: #2a2d2e;
1492
+ color: #ddd;
1493
+ }
1494
+
1495
+ .quick-open-results {
1496
+ overflow-y: auto;
1497
+ flex: 1;
1498
+ }
1499
+
1500
+ .quick-open-result {
1501
+ padding: 6px 16px;
1502
+ cursor: pointer;
1503
+ display: flex;
1504
+ align-items: center;
1505
+ gap: 8px;
1506
+ font-size: 12px;
1507
+ transition: background 0.1s;
1508
+ }
1509
+
1510
+ .quick-open-result-icon {
1511
+ flex-shrink: 0;
1512
+ width: 16px;
1513
+ text-align: center;
1514
+ color: #78b4e0;
1515
+ }
1516
+
1517
+ .quick-open-result-body {
1518
+ min-width: 0;
1519
+ flex: 1;
1520
+ }
1521
+
1522
+ .quick-open-result:hover,
1523
+ .quick-open-result.selected { background: #094771; }
1524
+
1525
+ .quick-open-result-name { color: #ccc; }
1526
+ .quick-open-result-path { color: #666; font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
1527
+
1528
+ .quick-open-section { margin-bottom: 4px; }
1529
+ .quick-open-section-header { padding: 6px 14px 4px; font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em; color: #555; font-weight: 600; }
1530
+
1531
+ .quick-open-star-btn {
1532
+ flex-shrink: 0;
1533
+ background: none;
1534
+ border: none;
1535
+ cursor: pointer;
1536
+ padding: 2px 6px;
1537
+ color: #555;
1538
+ font-size: 12px;
1539
+ line-height: 1;
1540
+ opacity: 0;
1541
+ transition: opacity 0.1s, color 0.1s;
1542
+ }
1543
+ .quick-open-result:hover .quick-open-star-btn { opacity: 1; }
1544
+ .quick-open-star-btn.starred { opacity: 1; color: #f0c040; }
1545
+ .quick-open-star-btn:hover { color: #f0c040; }
1546
+
1547
+ .quick-open-empty-hint {
1548
+ padding: 20px 16px;
1549
+ color: #555;
1550
+ font-size: 12px;
1551
+ text-align: center;
1552
+ line-height: 1.6;
1553
+ }
1554
+
1555
+ .typescript-icon { color: #3178c6 !important; }
1556
+ .shell-icon { color: #89d185 !important; }
1557
+ .pdf-icon { color: #f48771 !important; }
1558
+
1559
+ /* ── Scrollbars ────────────────────────────────────────────── */
1560
+ ::-webkit-scrollbar { width: 8px; height: 8px; }
1561
+ ::-webkit-scrollbar-track { background: #1e1e1e; }
1562
+ ::-webkit-scrollbar-thumb { background: #424242; border-radius: 4px; }
1563
+ ::-webkit-scrollbar-thumb:hover { background: #555; }
1564
+
1565
+ /* ── Notification toast ─────────────────────────────────────── */
1566
+ .ide-toast {
1567
+ position: fixed;
1568
+ bottom: 32px;
1569
+ right: 16px;
1570
+ background: #333;
1571
+ border: 1px solid #555;
1572
+ border-radius: 6px;
1573
+ padding: 8px 14px;
1574
+ font-size: 12px;
1575
+ color: #ccc;
1576
+ z-index: 10000;
1577
+ box-shadow: 0 4px 16px rgba(0,0,0,0.5);
1578
+ animation: toast-in 0.15s ease;
1579
+ }
1580
+
1581
+ @keyframes toast-in {
1582
+ from { opacity: 0; transform: translateY(8px); }
1583
+ to { opacity: 1; transform: translateY(0); }
1584
+ }
1585
+
1586
+ /* ── Settings panel ─────────────────────────────────────────── */
1587
+ .ide-settings-panel { display: flex; flex-direction: column; height: 100%; overflow-y: auto; }
1588
+ .ide-settings-body { padding: 8px 12px; display: flex; flex-direction: column; gap: 14px; }
1589
+ .ide-settings-row { display: flex; flex-direction: column; gap: 4px; }
1590
+ .ide-settings-row-check { flex-direction: row; align-items: center; justify-content: space-between; }
1591
+ .ide-settings-label { font-size: 11px; color: #aaa; text-transform: uppercase; letter-spacing: 0.5px; }
1592
+ .ide-settings-select,
1593
+ .ide-settings-input { background: #2d2d2d; color: #ccc; border: 1px solid #444; border-radius: 3px; padding: 4px 6px; font-size: 12px; width: 100%; box-sizing: border-box; }
1594
+ .ide-settings-input-wide { font-family: monospace; }
1595
+ .ide-settings-checkbox { width: auto; cursor: pointer; }
1596
+ .ide-settings-reset-btn { margin-top: 8px; background: #333; color: #aaa; border: 1px solid #555; border-radius: 3px; padding: 5px 10px; font-size: 11px; cursor: pointer; align-self: flex-start; }
1597
+ .ide-settings-reset-btn:hover { background: #444; color: #ddd; }
1598
+ .ide-settings-section-header { font-size: 10px; font-weight: 700; color: #888; text-transform: uppercase; letter-spacing: 1px; padding: 6px 0 2px; border-bottom: 1px solid #3a3a3a; margin-top: 4px; }
1599
+ .ide-settings-row-link { flex-direction: row; align-items: center; justify-content: space-between; }
1600
+ .ide-settings-config-link { background: none; border: none; color: #7db9f5; font-size: 11px; cursor: pointer; padding: 0; display: flex; align-items: center; gap: 3px; text-decoration: underline; text-underline-offset: 2px; }
1601
+ .ide-settings-config-link:hover { color: #a8cfff; }
1602
+
1603
+ /* Settings tab (pane view) */
1604
+ .ide-settings-tab-content {
1605
+ display: flex;
1606
+ flex-direction: column;
1607
+ height: 100%;
1608
+ overflow-y: auto;
1609
+ background: var(--bg-panel, #1e1e1e);
1610
+ color: var(--text-main, #ccc);
1611
+ }
1612
+
1613
+ /* ── CSS theme tokens (defaults = vs-dark) ───────────────── */
1614
+ :root {
1615
+ --bg-base: #1e1e1e;
1616
+ --bg-panel: #252526;
1617
+ --bg-hover: #2a2d2e;
1618
+ --bg-active: #094771;
1619
+ --bg-input: #2d2d2d;
1620
+ --border: #3c3c3c;
1621
+ --border-input: #444;
1622
+ --text-main: #cccccc;
1623
+ --text-dim: #bbbbbb;
1624
+ --text-muted:#888888;
1625
+ --accent: #007acc;
1626
+ --accent-fg: #4ec9b0;
1627
+ }
1628
+
1629
+ /* ── Light theme (vs) ────────────────────────────────────── */
1630
+ [data-theme="vs"] {
1631
+ --bg-base: #ffffff;
1632
+ --bg-panel: #f3f3f3;
1633
+ --bg-hover: #e8e8e8;
1634
+ --bg-active: #d4e6f5;
1635
+ --bg-input: #ffffff;
1636
+ --border: #cecece;
1637
+ --border-input: #c0c0c0;
1638
+ --text-main: #333333;
1639
+ --text-dim: #616161;
1640
+ --text-muted:#999999;
1641
+ --accent: #007acc;
1642
+ --accent-fg: #0070c1;
1643
+ }
1644
+ [data-theme="vs"] html,
1645
+ [data-theme="vs"] body,
1646
+ [data-theme="vs"] #mbeditor-root { background: #ffffff; color: #333333; }
1647
+ [data-theme="vs"] .ide-shell { background: #ffffff; }
1648
+ [data-theme="vs"] .ide-titlebar { background: #f3f3f3; border-color: #cecece; color: #333; }
1649
+ [data-theme="vs"] .ide-titlebar-title { color: #333; }
1650
+ [data-theme="vs"] .ide-sidebar { background: #f3f3f3; border-color: #cecece; }
1651
+ [data-theme="vs"] .ide-sidebar-scrollable .collapsible-header { background: #f3f3f3; }
1652
+ [data-theme="vs"] .sidebar-strip-btn { color: #616161; }
1653
+ [data-theme="vs"] .sidebar-strip-btn:hover { background: #e8e8e8; color: #333; }
1654
+ [data-theme="vs"] .sidebar-strip-btn.active { color: #0070c1; border-left-color: #0070c1; }
1655
+ [data-theme="vs"] .sidebar-divider { background: #e0e0e0; border-color: #cecece; }
1656
+ [data-theme="vs"] .sidebar-divider:hover,
1657
+ [data-theme="vs"] .sidebar-divider.active { background: #c0c0c0; }
1658
+ [data-theme="vs"] .ide-sidebar-header { color: #616161; border-color: #cecece; }
1659
+ [data-theme="vs"] .ide-sidebar-tabs { border-color: #cecece; }
1660
+ [data-theme="vs"] .ide-sidebar-tab { color: #616161; background: transparent; }
1661
+ [data-theme="vs"] .ide-sidebar-tab:hover { color: #333; background: #e8e8e8; }
1662
+ [data-theme="vs"] .ide-sidebar-tab.active { color: #0070c1; border-bottom-color: #0070c1; }
1663
+ [data-theme="vs"] .ide-sidebar-scrollable::-webkit-scrollbar-thumb { background: #c0c0c0; }
1664
+ [data-theme="vs"] .tree-item { color: #333333; }
1665
+ [data-theme="vs"] .tree-item:hover { background: #e8e8e8; }
1666
+ [data-theme="vs"] .tree-item.active { background: #d4e6f5; }
1667
+ [data-theme="vs"] .tree-item.modified { color: #8c7000; }
1668
+ [data-theme="vs"] .ide-sidebar-content .ide-inline-input { background: #fff; border-color: #007acc; color: #333; }
1669
+ [data-theme="vs"] .ide-main { background: #ffffff; }
1670
+ [data-theme="vs"] .tab-bar { background: #ececec; border-color: #cecece; }
1671
+ [data-theme="vs"] .tab-item { background: transparent; color: #666; border-color: transparent; }
1672
+ [data-theme="vs"] .tab-item:hover { background: #e0e0e0; color: #333; }
1673
+ [data-theme="vs"] .tab-item.active { background: #ffffff; color: #333; border-bottom-color: #007acc; }
1674
+ [data-theme="vs"] .tab-item-name { color: inherit; }
1675
+ [data-theme="vs"] .tab-close { color: #999; }
1676
+ [data-theme="vs"] .tab-close:hover { color: #333; background: #d0d0d0; }
1677
+ [data-theme="vs"] .ide-pane.focused-pane { border-color: transparent; }
1678
+ [data-theme="vs"] .ide-statusbar { background: #007acc; }
1679
+ [data-theme="vs"] .ide-empty-pane { background: #ffffff; color: #999; }
1680
+ [data-theme="vs"] .panel-divider { background: #e0e0e0; }
1681
+ [data-theme="vs"] .panel-divider:hover,
1682
+ [data-theme="vs"] .panel-divider.active { background: #007acc; }
1683
+ [data-theme="vs"] .search-input { background: #fff; border-color: #c0c0c0; color: #333; }
1684
+ [data-theme="vs"] .search-input:focus { border-color: #007acc; }
1685
+ [data-theme="vs"] .search-result-item:hover,
1686
+ [data-theme="vs"] .search-result-item.selected { background: #e8e8e8; }
1687
+ [data-theme="vs"] .search-result-file { color: #0070c1; }
1688
+ [data-theme="vs"] .search-result-text { color: #333; }
1689
+ [data-theme="vs"] .search-result-match { color: #792800; }
1690
+ [data-theme="vs"] .ide-settings-tab-content { background: #ffffff; color: #333; }
1691
+ [data-theme="vs"] .ide-settings-label { color: #616161; }
1692
+ [data-theme="vs"] .ide-settings-select,
1693
+ [data-theme="vs"] .ide-settings-input { background: #fff; color: #333; border-color: #c0c0c0; }
1694
+ [data-theme="vs"] .ide-settings-reset-btn { background: #ececec; color: #333; border-color: #c0c0c0; }
1695
+ [data-theme="vs"] .ide-settings-reset-btn:hover { background: #ddd; color: #111; }
1696
+ [data-theme="vs"] .ide-settings-section-header { color: #555; border-bottom-color: #d0d0d0; }
1697
+ [data-theme="vs"] .ide-settings-config-link { color: #0060b8; }
1698
+ [data-theme="vs"] .ide-settings-config-link:hover { color: #004080; }
1699
+ [data-theme="vs"] .ide-toast { background: #f3f3f3; border-color: #c0c0c0; color: #333; }
1700
+
1701
+ /* ── vs: missing component overrides ─────────────────────── */
1702
+ [data-theme="vs"] ::-webkit-scrollbar-track { background: #f5f5f5; }
1703
+ [data-theme="vs"] ::-webkit-scrollbar-thumb { background: #c0c0c0; }
1704
+ [data-theme="vs"] ::-webkit-scrollbar-thumb:hover { background: #a0a0a0; }
1705
+ [data-theme="vs"] .tab-bar::-webkit-scrollbar-thumb { background: #c0c0c0; }
1706
+ [data-theme="vs"] .collapsible-header { color: #555; }
1707
+ [data-theme="vs"] .collapsible-header:hover { background: #e8e8e8; color: #333; }
1708
+ [data-theme="vs"] .ide-icon-btn { color: #555; }
1709
+ [data-theme="vs"] .ide-icon-btn:hover { background: #e8e8e8; color: #333; }
1710
+ [data-theme="vs"] .ide-icon-btn.active { color: #0070c1; }
1711
+ [data-theme="vs"] .ide-editor-toolbar { background: #ececec; border-bottom-color: #cecece; }
1712
+ [data-theme="vs"] .context-menu { background: #f3f3f3; border-color: #c0c0c0; color: #333; box-shadow: 0 4px 16px rgba(0,0,0,0.15); }
1713
+ [data-theme="vs"] .context-menu-item:hover { background: #d4e6f5; color: #000; }
1714
+ [data-theme="vs"] .context-menu-item-danger:hover { background: rgba(244,135,113,0.15); color: #c0392b; }
1715
+ [data-theme="vs"] .context-menu-divider { background: #d0d0d0; }
1716
+ [data-theme="vs"] .quick-open-box { background: #f3f3f3; border-color: #c0c0c0; box-shadow: 0 16px 48px rgba(0,0,0,0.2); }
1717
+ [data-theme="vs"] .quick-open-input { color: #333; border-bottom-color: #cecece; }
1718
+ [data-theme="vs"] .quick-open-clear-btn { color: #666; }
1719
+ [data-theme="vs"] .quick-open-clear-btn:hover { background: #e0e0e0; color: #333; }
1720
+ [data-theme="vs"] .quick-open-result:hover,
1721
+ [data-theme="vs"] .quick-open-result.selected { background: #d4e6f5; }
1722
+ [data-theme="vs"] .quick-open-result-name { color: #333; }
1723
+ [data-theme="vs"] .quick-open-result-path { color: #666; }
1724
+ [data-theme="vs"] .quick-open-section-header { color: #666; }
1725
+ [data-theme="vs"] .quick-open-empty-hint { color: #666; }
1726
+ [data-theme="vs"] .quick-open-star-btn { color: #bbb; }
1727
+ [data-theme="vs"] .shelp-panel { background: #f3f3f3; border-color: #c0c0c0; box-shadow: 0 12px 40px rgba(0,0,0,0.15); }
1728
+ [data-theme="vs"] .shelp-header { border-bottom-color: #cecece; }
1729
+ [data-theme="vs"] .shelp-title { color: #333; }
1730
+ [data-theme="vs"] .shelp-close { color: #555; }
1731
+ [data-theme="vs"] .shelp-close:hover { background: #e0e0e0; color: #333; }
1732
+ [data-theme="vs"] .shelp-key kbd { background: #e8e8e8; border-color: #c0c0c0; color: #333; }
1733
+ [data-theme="vs"] .shelp-section-title { color: #555; border-bottom-color: #d0d0d0; }
1734
+ [data-theme="vs"] .shelp-desc { color: #555; }
1735
+ [data-theme="vs"] .shelp-tips li { color: #555; }
1736
+ [data-theme="vs"] .shelp-tips li::before { color: #aaa; }
1737
+ [data-theme="vs"] .tab-welcome { background: #fff; color: #888; }
1738
+ [data-theme="vs"] .tab-welcome i { color: #ccc; }
1739
+ [data-theme="vs"] .tab-welcome h2 { color: #555; }
1740
+ [data-theme="vs"] .tab-welcome p { color: #666; }
1741
+ [data-theme="vs"] .tab-welcome kbd { background: #ececec; border-color: #c0c0c0; color: #333; }
1742
+ [data-theme="vs"] .welcome-intro { color: #888; }
1743
+ [data-theme="vs"] .welcome-section h3 { color: #555; border-bottom-color: #d0d0d0; }
1744
+ [data-theme="vs"] .shortcut-table td { color: #555; }
1745
+ [data-theme="vs"] .welcome-tips li { color: #666; }
1746
+ [data-theme="vs"] .welcome-tips li i { color: #aaa; }
1747
+ [data-theme="vs"] .file-not-found-overlay { background: #fff; color: #888; }
1748
+ [data-theme="vs"] .file-not-found-icon { color: #ccc; }
1749
+ [data-theme="vs"] .file-not-found-title { color: #555; }
1750
+ [data-theme="vs"] .file-not-found-path { color: #888; }
1751
+ [data-theme="vs"] .search-results-meta { color: #666; border-bottom-color: #d0d0d0; }
1752
+ [data-theme="vs"] .search-results-empty { color: #888; }
1753
+ [data-theme="vs"] .ide-git-panel-header { border-color: #cecece; color: #555; }
1754
+ [data-theme="vs"] .git-commit-row:hover { background: #e8e8e8; }
1755
+ [data-theme="vs"] .git-commit-subrow:hover { background: #e8e8e8; }
1756
+ [data-theme="vs"] .git-commit-title { color: #333; }
1757
+ [data-theme="vs"] .git-commit-meta { color: #666; }
1758
+ [data-theme="vs"] .git-commit-loading { color: #888; }
1759
+ [data-theme="vs"] .git-action-btn { color: #555; }
1760
+ [data-theme="vs"] .git-action-btn:hover { color: #000; background: rgba(0,0,0,0.08); }
1761
+ [data-theme="vs"] .commit-dot-small { background: #fff; }
1762
+ [data-theme="vs"] .ide-settings-section-header { color: #555; border-bottom-color: #d0d0d0; }
1763
+ [data-theme="vs"] .project-action-btn { color: #555; }
1764
+ [data-theme="vs"] .project-action-btn:hover:not(:disabled) { background: #e0e0e0; border-color: #c0c0c0; color: #333; }
1765
+ [data-theme="vs"] .git-section-count { background: rgba(0,0,0,0.08); color: #555; }
1766
+
1767
+ /* ── High Contrast Dark (hc-black) ───────────────────────── */
1768
+ [data-theme="hc-black"] {
1769
+ --bg-base: #000000;
1770
+ --bg-panel: #0c0c0c;
1771
+ --bg-hover: #1a1a1a;
1772
+ --bg-active: #004c8c;
1773
+ --border: #6fc3df;
1774
+ --text-main: #ffffff;
1775
+ --text-dim: #ffffff;
1776
+ --text-muted:#aaaaaa;
1777
+ --accent: #1aebff;
1778
+ }
1779
+ [data-theme="hc-black"] html,
1780
+ [data-theme="hc-black"] body,
1781
+ [data-theme="hc-black"] #mbeditor-root { background: #000; color: #fff; }
1782
+ [data-theme="hc-black"] .ide-shell { background: #000; }
1783
+ [data-theme="hc-black"] .ide-titlebar { background: #000; border-color: #6fc3df; color: #fff; }
1784
+ [data-theme="hc-black"] .ide-titlebar-title { color: #fff; }
1785
+ [data-theme="hc-black"] .ide-sidebar { background: #000; border-color: #6fc3df; }
1786
+ [data-theme="hc-black"] .ide-sidebar-scrollable .collapsible-header { background: #000; }
1787
+ [data-theme="hc-black"] .sidebar-divider { background: #3c3c3c; border-color: #6fc3df; }
1788
+ [data-theme="hc-black"] .ide-sidebar-header { color: #fff; border-color: #6fc3df; }
1789
+ [data-theme="hc-black"] .ide-sidebar-tabs { border-color: #6fc3df; }
1790
+ [data-theme="hc-black"] .ide-sidebar-tab { color: #ccc; }
1791
+ [data-theme="hc-black"] .ide-sidebar-tab:hover { color: #fff; background: #1a1a1a; }
1792
+ [data-theme="hc-black"] .ide-sidebar-tab.active { color: #1aebff; border-bottom-color: #1aebff; }
1793
+ [data-theme="hc-black"] .tree-item { color: #fff; }
1794
+ [data-theme="hc-black"] .tree-item:hover { background: #1a1a1a; outline: 1px solid #6fc3df; }
1795
+ [data-theme="hc-black"] .tree-item.active { background: #004c8c; outline: 1px solid #1aebff; }
1796
+ [data-theme="hc-black"] .ide-main { background: #000; }
1797
+ [data-theme="hc-black"] .tab-bar { background: #000; border-color: #6fc3df; }
1798
+ [data-theme="hc-black"] .tab-item { color: #ccc; }
1799
+ [data-theme="hc-black"] .tab-item:hover { background: #1a1a1a; outline: 1px solid #6fc3df; }
1800
+ [data-theme="hc-black"] .tab-item.active { background: #000; color: #1aebff; border-bottom-color: #1aebff; outline: 1px solid #1aebff; }
1801
+ [data-theme="hc-black"] .ide-statusbar { background: #000; border-top: 1px solid #6fc3df; }
1802
+ [data-theme="hc-black"] .ide-empty-pane { background: #000; color: #aaa; }
1803
+ [data-theme="hc-black"] .ide-settings-tab-content { background: #000; color: #fff; }
1804
+ [data-theme="hc-black"] .ide-settings-label { color: #aaa; }
1805
+ [data-theme="hc-black"] .ide-settings-select,
1806
+ [data-theme="hc-black"] .ide-settings-input { background: #000; color: #fff; border-color: #6fc3df; }
1807
+ [data-theme="hc-black"] .ide-settings-reset-btn { background: #000; color: #fff; border-color: #6fc3df; }
1808
+ [data-theme="hc-black"] .ide-toast { background: #000; border-color: #6fc3df; color: #fff; }
1809
+
1810
+ /* ── hc-black: missing component overrides ───────────────── */
1811
+ [data-theme="hc-black"] ::-webkit-scrollbar-track { background: #000; }
1812
+ [data-theme="hc-black"] ::-webkit-scrollbar-thumb { background: #555; border: 1px solid #6fc3df; }
1813
+ [data-theme="hc-black"] ::-webkit-scrollbar-thumb:hover { background: #888; }
1814
+ [data-theme="hc-black"] .tab-bar::-webkit-scrollbar-thumb { background: #555; }
1815
+ [data-theme="hc-black"] .collapsible-header { color: #ccc; }
1816
+ [data-theme="hc-black"] .collapsible-header:hover { background: #1a1a1a; color: #fff; outline: 1px solid #6fc3df; }
1817
+ [data-theme="hc-black"] .ide-icon-btn { color: #ccc; }
1818
+ [data-theme="hc-black"] .ide-icon-btn:hover { background: #1a1a1a; color: #fff; outline: 1px solid #6fc3df; }
1819
+ [data-theme="hc-black"] .ide-icon-btn.active { color: #1aebff; }
1820
+ [data-theme="hc-black"] .ide-editor-toolbar { background: #000; border-bottom-color: #6fc3df; }
1821
+ [data-theme="hc-black"] .context-menu { background: #000; border-color: #6fc3df; color: #fff; box-shadow: 0 4px 16px rgba(0,0,0,0.8); }
1822
+ [data-theme="hc-black"] .context-menu-item:hover { background: #004c8c; color: #fff; outline: 1px solid #1aebff; }
1823
+ [data-theme="hc-black"] .context-menu-item-danger:hover { outline-color: #f48771; }
1824
+ [data-theme="hc-black"] .context-menu-divider { background: #6fc3df; }
1825
+ [data-theme="hc-black"] .quick-open-box { background: #000; border-color: #6fc3df; box-shadow: 0 16px 48px rgba(0,0,0,0.9); }
1826
+ [data-theme="hc-black"] .quick-open-input { color: #fff; border-bottom-color: #6fc3df; }
1827
+ [data-theme="hc-black"] .quick-open-clear-btn { color: #ccc; }
1828
+ [data-theme="hc-black"] .quick-open-clear-btn:hover { background: #1a1a1a; color: #fff; }
1829
+ [data-theme="hc-black"] .quick-open-result:hover,
1830
+ [data-theme="hc-black"] .quick-open-result.selected { background: #004c8c; outline: 1px solid #1aebff; }
1831
+ [data-theme="hc-black"] .quick-open-result-name { color: #fff; }
1832
+ [data-theme="hc-black"] .quick-open-result-path { color: #aaa; }
1833
+ [data-theme="hc-black"] .quick-open-section-header { color: #aaa; }
1834
+ [data-theme="hc-black"] .quick-open-empty-hint { color: #aaa; }
1835
+ [data-theme="hc-black"] .shelp-panel { background: #000; border-color: #6fc3df; box-shadow: 0 12px 40px rgba(0,0,0,0.9); }
1836
+ [data-theme="hc-black"] .shelp-header { border-bottom-color: #6fc3df; }
1837
+ [data-theme="hc-black"] .shelp-title { color: #fff; }
1838
+ [data-theme="hc-black"] .shelp-close { color: #ccc; }
1839
+ [data-theme="hc-black"] .shelp-close:hover { background: #1a1a1a; color: #fff; }
1840
+ [data-theme="hc-black"] .shelp-key kbd { background: #111; border-color: #6fc3df; color: #fff; }
1841
+ [data-theme="hc-black"] .shelp-section-title { color: #aaa; border-bottom-color: #6fc3df; }
1842
+ [data-theme="hc-black"] .shelp-desc { color: #ccc; }
1843
+ [data-theme="hc-black"] .shelp-tips li { color: #ccc; }
1844
+ [data-theme="hc-black"] .tab-welcome { background: #000; }
1845
+ [data-theme="hc-black"] .tab-welcome i { color: #333; }
1846
+ [data-theme="hc-black"] .tab-welcome h2,
1847
+ [data-theme="hc-black"] .tab-welcome p { color: #aaa; }
1848
+ [data-theme="hc-black"] .tab-welcome kbd { background: #111; border-color: #6fc3df; color: #fff; }
1849
+ [data-theme="hc-black"] .welcome-section h3 { color: #aaa; border-bottom-color: #6fc3df; }
1850
+ [data-theme="hc-black"] .shortcut-table td { color: #ccc; }
1851
+ [data-theme="hc-black"] .file-not-found-overlay { background: #000; color: #aaa; }
1852
+ [data-theme="hc-black"] .file-not-found-icon { color: #333; }
1853
+ [data-theme="hc-black"] .file-not-found-title { color: #ccc; }
1854
+ [data-theme="hc-black"] .search-results-meta { color: #aaa; border-bottom-color: #6fc3df; }
1855
+ [data-theme="hc-black"] .search-results-empty { color: #aaa; }
1856
+ [data-theme="hc-black"] .git-commit-row:hover { background: #1a1a1a; outline: 1px solid #6fc3df; }
1857
+ [data-theme="hc-black"] .git-commit-subrow:hover { background: #1a1a1a; outline: 1px solid #6fc3df; }
1858
+ [data-theme="hc-black"] .git-commit-title { color: #fff; }
1859
+ [data-theme="hc-black"] .git-commit-meta { color: #aaa; }
1860
+ [data-theme="hc-black"] .git-action-btn { color: #ccc; }
1861
+ [data-theme="hc-black"] .git-action-btn:hover { color: #fff; background: rgba(255,255,255,0.1); }
1862
+ [data-theme="hc-black"] .commit-dot-small { background: #000; }
1863
+ [data-theme="hc-black"] .project-action-btn { color: #ccc; }
1864
+ [data-theme="hc-black"] .project-action-btn:hover:not(:disabled) { background: #1a1a1a; border-color: #6fc3df; color: #fff; }
1865
+ [data-theme="hc-black"] .git-section-count { background: rgba(255,255,255,0.1); color: #ccc; }
1866
+ [data-theme="hc-black"] .sidebar-strip-btn { color: #ccc; }
1867
+ [data-theme="hc-black"] .sidebar-strip-btn:hover { background: #1a1a1a; color: #fff; outline: 1px solid #6fc3df; }
1868
+ [data-theme="hc-black"] .sidebar-strip-btn.active { color: #1aebff; border-left-color: #1aebff; }
1869
+
1870
+ /* ── High Contrast Light (hc-light) ─────────────────────── */
1871
+ [data-theme="hc-light"] {
1872
+ --bg-base: #ffffff;
1873
+ --bg-panel: #f8f8f8;
1874
+ --bg-hover: #ebebeb;
1875
+ --bg-active: #0f4a85;
1876
+ --border: #000000;
1877
+ --text-main: #000000;
1878
+ --text-dim: #000000;
1879
+ --text-muted:#444444;
1880
+ --accent: #0000c5;
1881
+ }
1882
+ [data-theme="hc-light"] html,
1883
+ [data-theme="hc-light"] body,
1884
+ [data-theme="hc-light"] #mbeditor-root { background: #fff; color: #000; }
1885
+ [data-theme="hc-light"] .ide-shell { background: #fff; }
1886
+ [data-theme="hc-light"] .ide-titlebar { background: #f8f8f8; border-color: #000; color: #000; }
1887
+ [data-theme="hc-light"] .ide-titlebar-title { color: #000; }
1888
+ [data-theme="hc-light"] .ide-sidebar { background: #f8f8f8; border-color: #000; }
1889
+ [data-theme="hc-light"] .ide-sidebar-scrollable .collapsible-header { background: #f8f8f8; }
1890
+ [data-theme="hc-light"] .sidebar-divider { background: #e0e0e0; border-color: #000; }
1891
+ [data-theme="hc-light"] .ide-sidebar-header { color: #000; border-color: #000; font-weight: 700; }
1892
+ [data-theme="hc-light"] .ide-sidebar-tabs { border-color: #000; }
1893
+ [data-theme="hc-light"] .ide-sidebar-tab { color: #000; }
1894
+ [data-theme="hc-light"] .ide-sidebar-tab:hover { background: #ebebeb; outline: 1px solid #000; }
1895
+ [data-theme="hc-light"] .ide-sidebar-tab.active { color: #0000c5; border-bottom: 2px solid #0000c5; }
1896
+ [data-theme="hc-light"] .tree-item { color: #000; }
1897
+ [data-theme="hc-light"] .tree-item:hover { background: #ebebeb; outline: 1px solid #000; }
1898
+ [data-theme="hc-light"] .tree-item.active { background: #d0e4f7; outline: 1px solid #0000c5; color: #000; }
1899
+ [data-theme="hc-light"] .ide-main { background: #fff; }
1900
+ [data-theme="hc-light"] .tab-bar { background: #f8f8f8; border-color: #000; }
1901
+ [data-theme="hc-light"] .tab-item { color: #000; }
1902
+ [data-theme="hc-light"] .tab-item:hover { background: #ebebeb; outline: 1px solid #000; }
1903
+ [data-theme="hc-light"] .tab-item.active { background: #fff; color: #0000c5; border-bottom: 2px solid #0000c5; outline: 1px solid #0000c5; }
1904
+ [data-theme="hc-light"] .ide-statusbar { background: #0000c5; }
1905
+ [data-theme="hc-light"] .ide-empty-pane { background: #fff; color: #444; }
1906
+ [data-theme="hc-light"] .ide-settings-tab-content { background: #fff; color: #000; }
1907
+ [data-theme="hc-light"] .ide-settings-label { color: #444; }
1908
+ [data-theme="hc-light"] .ide-settings-select,
1909
+ [data-theme="hc-light"] .ide-settings-input { background: #fff; color: #000; border-color: #000; }
1910
+ [data-theme="hc-light"] .ide-settings-reset-btn { background: #f8f8f8; color: #000; border-color: #000; }
1911
+ [data-theme="hc-light"] .ide-toast { background: #f8f8f8; border-color: #000; color: #000; }
1912
+
1913
+ /* ── hc-light: missing component overrides ───────────────── */
1914
+ [data-theme="hc-light"] ::-webkit-scrollbar-track { background: #fff; }
1915
+ [data-theme="hc-light"] ::-webkit-scrollbar-thumb { background: #aaa; border: 1px solid #000; }
1916
+ [data-theme="hc-light"] ::-webkit-scrollbar-thumb:hover { background: #777; }
1917
+ [data-theme="hc-light"] .tab-bar::-webkit-scrollbar-thumb { background: #aaa; }
1918
+ [data-theme="hc-light"] .collapsible-header { color: #000; font-weight: 700; }
1919
+ [data-theme="hc-light"] .collapsible-header:hover { background: #ebebeb; color: #000; outline: 1px solid #000; }
1920
+ [data-theme="hc-light"] .ide-icon-btn { color: #000; }
1921
+ [data-theme="hc-light"] .ide-icon-btn:hover { background: #ebebeb; color: #000; outline: 1px solid #000; }
1922
+ [data-theme="hc-light"] .ide-icon-btn.active { color: #0000c5; }
1923
+ [data-theme="hc-light"] .ide-editor-toolbar { background: #f8f8f8; border-bottom-color: #000; }
1924
+ [data-theme="hc-light"] .context-menu { background: #fff; border-color: #000; color: #000; box-shadow: 0 4px 16px rgba(0,0,0,0.2); }
1925
+ [data-theme="hc-light"] .context-menu-item:hover { background: #d0e4f7; color: #000; outline: 1px solid #0000c5; }
1926
+ [data-theme="hc-light"] .context-menu-item-danger:hover { background: rgba(244,135,113,0.15); color: #c0392b; outline-color: #c0392b; }
1927
+ [data-theme="hc-light"] .context-menu-divider { background: #000; }
1928
+ [data-theme="hc-light"] .quick-open-box { background: #fff; border-color: #000; box-shadow: 0 16px 48px rgba(0,0,0,0.2); }
1929
+ [data-theme="hc-light"] .quick-open-input { color: #000; border-bottom-color: #000; }
1930
+ [data-theme="hc-light"] .quick-open-clear-btn { color: #444; }
1931
+ [data-theme="hc-light"] .quick-open-clear-btn:hover { background: #ebebeb; color: #000; }
1932
+ [data-theme="hc-light"] .quick-open-result:hover,
1933
+ [data-theme="hc-light"] .quick-open-result.selected { background: #d0e4f7; outline: 1px solid #0000c5; }
1934
+ [data-theme="hc-light"] .quick-open-result-name { color: #000; }
1935
+ [data-theme="hc-light"] .quick-open-result-path { color: #444; }
1936
+ [data-theme="hc-light"] .quick-open-section-header { color: #444; }
1937
+ [data-theme="hc-light"] .quick-open-empty-hint { color: #444; }
1938
+ [data-theme="hc-light"] .shelp-panel { background: #fff; border-color: #000; box-shadow: 0 12px 40px rgba(0,0,0,0.2); }
1939
+ [data-theme="hc-light"] .shelp-header { border-bottom-color: #000; }
1940
+ [data-theme="hc-light"] .shelp-title { color: #000; font-weight: 700; }
1941
+ [data-theme="hc-light"] .shelp-close { color: #444; }
1942
+ [data-theme="hc-light"] .shelp-close:hover { background: #ebebeb; color: #000; outline: 1px solid #000; }
1943
+ [data-theme="hc-light"] .shelp-key kbd { background: #f0f0f0; border-color: #000; color: #000; }
1944
+ [data-theme="hc-light"] .shelp-section-title { color: #000; font-weight: 700; border-bottom-color: #000; }
1945
+ [data-theme="hc-light"] .shelp-desc { color: #333; }
1946
+ [data-theme="hc-light"] .shelp-tips li { color: #333; }
1947
+ [data-theme="hc-light"] .shelp-tips li::before { color: #000; }
1948
+ [data-theme="hc-light"] .tab-welcome { background: #fff; color: #555; }
1949
+ [data-theme="hc-light"] .tab-welcome i { color: #aaa; }
1950
+ [data-theme="hc-light"] .tab-welcome h2 { color: #000; }
1951
+ [data-theme="hc-light"] .tab-welcome p { color: #333; }
1952
+ [data-theme="hc-light"] .tab-welcome kbd { background: #f0f0f0; border-color: #000; color: #000; }
1953
+ [data-theme="hc-light"] .welcome-intro { color: #444; }
1954
+ [data-theme="hc-light"] .welcome-section h3 { color: #000; font-weight: 700; border-bottom-color: #000; }
1955
+ [data-theme="hc-light"] .shortcut-table td { color: #333; }
1956
+ [data-theme="hc-light"] .welcome-tips li { color: #333; }
1957
+ [data-theme="hc-light"] .file-not-found-overlay { background: #fff; color: #555; }
1958
+ [data-theme="hc-light"] .file-not-found-icon { color: #aaa; }
1959
+ [data-theme="hc-light"] .file-not-found-title { color: #000; }
1960
+ [data-theme="hc-light"] .file-not-found-path { color: #444; }
1961
+ [data-theme="hc-light"] .search-results-meta { color: #444; border-bottom-color: #000; }
1962
+ [data-theme="hc-light"] .search-results-empty { color: #555; }
1963
+ [data-theme="hc-light"] .git-commit-row:hover { background: #ebebeb; outline: 1px solid #000; }
1964
+ [data-theme="hc-light"] .git-commit-subrow:hover { background: #ebebeb; outline: 1px solid #000; }
1965
+ [data-theme="hc-light"] .git-commit-title { color: #000; }
1966
+ [data-theme="hc-light"] .git-commit-meta { color: #444; }
1967
+ [data-theme="hc-light"] .git-action-btn { color: #444; }
1968
+ [data-theme="hc-light"] .git-action-btn:hover { color: #000; background: rgba(0,0,0,0.08); outline: 1px solid #000; }
1969
+ [data-theme="hc-light"] .commit-dot-small { background: #fff; border-color: #0000c5; }
1970
+ [data-theme="hc-light"] .project-action-btn { color: #333; }
1971
+ [data-theme="hc-light"] .project-action-btn:hover:not(:disabled) { background: #ebebeb; border-color: #000; color: #000; }
1972
+ [data-theme="hc-light"] .git-section-count { background: rgba(0,0,0,0.08); color: #000; }
1973
+ [data-theme="hc-light"] .sidebar-strip-btn { color: #333; }
1974
+ [data-theme="hc-light"] .sidebar-strip-btn:hover { background: #ebebeb; color: #000; outline: 1px solid #000; }
1975
+ [data-theme="hc-light"] .sidebar-strip-btn.active { color: #0000c5; border-left-color: #0000c5; }
1976
+
1977
+ /* ── Markdown preview — light theme ────────────────────── */
1978
+ [data-theme="vs"] .markdown-preview { background: #ffffff; color: #333; }
1979
+ [data-theme="vs"] .markdown-preview h1,
1980
+ [data-theme="vs"] .markdown-preview h2,
1981
+ [data-theme="vs"] .markdown-preview h3,
1982
+ [data-theme="vs"] .markdown-preview h4 { color: #000; }
1983
+ [data-theme="vs"] .markdown-preview a { color: #0070c1; }
1984
+ [data-theme="vs"] .markdown-preview code { background: #efefef; color: #333; }
1985
+ [data-theme="vs"] .markdown-preview pre code { background: #f5f5f5; }
1986
+ [data-theme="vs"] .markdown-preview blockquote { border-left: 3px solid #c0c0c0; color: #555; }
1987
+ [data-theme="vs"] .markdown-preview table td,
1988
+ [data-theme="vs"] .markdown-preview table th { border-color: #c0c0c0; }
1989
+ [data-theme="vs"] .markdown-preview hr { border-color: #c0c0c0; }
1990
+
1991
+ /* ── Markdown preview — HC Dark ─────────────────────────── */
1992
+ [data-theme="hc-black"] .markdown-preview { background: #000; color: #fff; }
1993
+ [data-theme="hc-black"] .markdown-preview h1,
1994
+ [data-theme="hc-black"] .markdown-preview h2,
1995
+ [data-theme="hc-black"] .markdown-preview h3,
1996
+ [data-theme="hc-black"] .markdown-preview h4 { color: #fff; }
1997
+ [data-theme="hc-black"] .markdown-preview a { color: #1aebff; }
1998
+ [data-theme="hc-black"] .markdown-preview code { background: #1a1a1a; color: #fff; }
1999
+ [data-theme="hc-black"] .markdown-preview blockquote { border-left: 3px solid #6fc3df; }
2000
+
2001
+ /* ── Markdown preview — HC Light ────────────────────────── */
2002
+ [data-theme="hc-light"] .markdown-preview { background: #fff; color: #000; }
2003
+ [data-theme="hc-light"] .markdown-preview h1,
2004
+ [data-theme="hc-light"] .markdown-preview h2,
2005
+ [data-theme="hc-light"] .markdown-preview h3,
2006
+ [data-theme="hc-light"] .markdown-preview h4 { color: #000; font-weight: 700; }
2007
+ [data-theme="hc-light"] .markdown-preview a { color: #0000c5; }
2008
+ [data-theme="hc-light"] .markdown-preview code { background: #f0f0f0; color: #000; border: 1px solid #000; }
2009
+ [data-theme="hc-light"] .markdown-preview blockquote { border-left: 3px solid #000; }
2010
+
2011
+ /* ── Git panel — light theme ─────────────────────────────── */
2012
+ [data-theme="vs"] .ide-git-right-panel { background: #f3f3f3; border-color: #cecece; }
2013
+ [data-theme="vs"] .gitpanel-divider { background: #e0e0e0; border-color: #cecece; }
2014
+ [data-theme="vs"] .ide-git-panel { background: #f3f3f3; }
2015
+ [data-theme="vs"] .ide-git-panel-header { border-color: #cecece; }
2016
+ [data-theme="vs"] .ide-git-panel-title { color: #0070c1; }
2017
+ [data-theme="vs"] .ide-git-panel-branch { color: #333; }
2018
+ [data-theme="vs"] .git-header-btn { color: #555; }
2019
+ [data-theme="vs"] .git-header-btn:hover { background: rgba(0,0,0,0.06); color: #000; }
2020
+ [data-theme="vs"] .git-metadata { color: #444; border-color: #cecece; }
2021
+ [data-theme="vs"] .git-section { border-color: #ddd; }
2022
+ [data-theme="vs"] .git-section-title { background: #ececec; color: #555; }
2023
+ [data-theme="vs"] .git-file-item:hover { background: #e3e3e3; }
2024
+ [data-theme="vs"] .git-file-name { color: #333; }
2025
+ [data-theme="vs"] .git-file-dir { color: #888; }
2026
+ [data-theme="vs"] .git-hint { color: #666; }
2027
+ [data-theme="vs"] .git-list::-webkit-scrollbar-thumb { background: #c0c0c0; }
2028
+
2029
+ /* ── Git panel — HC Dark ─────────────────────────────────── */
2030
+ [data-theme="hc-black"] .ide-git-right-panel { background: #000; border-color: #6fc3df; }
2031
+ [data-theme="hc-black"] .gitpanel-divider { background: #000; border-color: #6fc3df; }
2032
+ [data-theme="hc-black"] .ide-git-panel { background: #000; }
2033
+ [data-theme="hc-black"] .ide-git-panel-header { border-color: #6fc3df; }
2034
+ [data-theme="hc-black"] .ide-git-panel-title { color: #1aebff; }
2035
+ [data-theme="hc-black"] .ide-git-panel-branch { color: #fff; }
2036
+ [data-theme="hc-black"] .git-header-btn { color: #ccc; }
2037
+ [data-theme="hc-black"] .git-header-btn:hover { background: rgba(255,255,255,0.1); color: #fff; }
2038
+ [data-theme="hc-black"] .git-metadata { color: #ccc; border-color: #6fc3df; }
2039
+ [data-theme="hc-black"] .git-section { border-color: #6fc3df; }
2040
+ [data-theme="hc-black"] .git-section-title { background: #0c0c0c; color: #ccc; }
2041
+ [data-theme="hc-black"] .git-file-item:hover { background: #1a1a1a; outline: 1px solid #6fc3df; }
2042
+ [data-theme="hc-black"] .git-file-name { color: #fff; }
2043
+ [data-theme="hc-black"] .git-file-dir { color: #aaa; }
2044
+ [data-theme="hc-black"] .git-hint { color: #aaa; }
2045
+
2046
+ /* ── Git panel — HC Light ────────────────────────────────── */
2047
+ [data-theme="hc-light"] .ide-git-right-panel { background: #f8f8f8; border-color: #000; }
2048
+ [data-theme="hc-light"] .gitpanel-divider { background: #e0e0e0; border-color: #000; }
2049
+ [data-theme="hc-light"] .ide-git-panel { background: #f8f8f8; }
2050
+ [data-theme="hc-light"] .ide-git-panel-header { border-color: #000; }
2051
+ [data-theme="hc-light"] .ide-git-panel-title { color: #0000c5; font-weight: 700; }
2052
+ [data-theme="hc-light"] .ide-git-panel-branch { color: #000; font-weight: 700; }
2053
+ [data-theme="hc-light"] .git-header-btn { color: #000; }
2054
+ [data-theme="hc-light"] .git-header-btn:hover { background: rgba(0,0,0,0.08); outline: 1px solid #000; }
2055
+ [data-theme="hc-light"] .git-metadata { color: #000; border-color: #000; }
2056
+ [data-theme="hc-light"] .git-section { border-color: #000; }
2057
+ [data-theme="hc-light"] .git-section-title { background: #ebebeb; color: #000; font-weight: 700; }
2058
+ [data-theme="hc-light"] .git-file-item:hover { background: #ebebeb; outline: 1px solid #000; }
2059
+ [data-theme="hc-light"] .git-file-name { color: #000; }
2060
+ [data-theme="hc-light"] .git-file-dir { color: #444; }
2061
+ [data-theme="hc-light"] .git-hint { color: #444; }