gh-here 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1757 @@
1
+ :root {
2
+ /* GitHub Dark */
3
+ --bg-primary: #0d1117;
4
+ --bg-secondary: #161b22;
5
+ --bg-tertiary: #21262d;
6
+ --border-primary: #30363d;
7
+ --border-secondary: #21262d;
8
+ --text-primary: #e6edf3;
9
+ --text-secondary: #8b949e;
10
+ --text-accent: #f0f6fc;
11
+ --link-color: #58a6ff;
12
+ --hover-bg: #161b22;
13
+ }
14
+
15
+ [data-theme="light"] {
16
+ /* GitHub Light */
17
+ --bg-primary: #ffffff;
18
+ --bg-secondary: #f6f8fa;
19
+ --bg-tertiary: #f1f3f4;
20
+ --border-primary: #d1d9e0;
21
+ --border-secondary: #d8dee4;
22
+ --text-primary: #1f2328;
23
+ --text-secondary: #656d76;
24
+ --text-accent: #1f2328;
25
+ --link-color: #0969da;
26
+ --hover-bg: #f6f8fa;
27
+ }
28
+
29
+ * {
30
+ margin: 0;
31
+ padding: 0;
32
+ box-sizing: border-box;
33
+ }
34
+
35
+ body {
36
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Noto Sans', Helvetica, Arial, sans-serif;
37
+ background-color: var(--bg-primary);
38
+ color: var(--text-primary);
39
+ line-height: 1.5;
40
+ transition: background-color 0.2s ease, color 0.2s ease;
41
+ }
42
+
43
+ header {
44
+ background-color: var(--bg-secondary);
45
+ border-bottom: 1px solid var(--border-primary);
46
+ padding: 16px 24px;
47
+ }
48
+
49
+ .header-content {
50
+ display: flex;
51
+ justify-content: space-between;
52
+ align-items: flex-start;
53
+ max-width: 1200px;
54
+ margin: 0 auto;
55
+ }
56
+
57
+ .header-left h1 {
58
+ font-size: 20px;
59
+ font-weight: 600;
60
+ margin: 0;
61
+ color: var(--text-accent);
62
+ }
63
+
64
+ .header-path {
65
+ display: flex;
66
+ align-items: center;
67
+ gap: 8px;
68
+ }
69
+
70
+ .header-right {
71
+ display: flex;
72
+ align-items: center;
73
+ gap: 12px;
74
+ }
75
+
76
+ .theme-toggle,
77
+ .gitignore-toggle,
78
+ .edit-btn {
79
+ background: none;
80
+ border: 1px solid var(--border-primary);
81
+ border-radius: 6px;
82
+ padding: 8px;
83
+ cursor: pointer;
84
+ color: var(--text-secondary);
85
+ transition: all 0.2s ease;
86
+ display: flex;
87
+ align-items: center;
88
+ justify-content: center;
89
+ min-width: 40px;
90
+ min-height: 40px;
91
+ margin-left: 8px;
92
+ }
93
+
94
+ .theme-toggle:hover,
95
+ .gitignore-toggle:hover,
96
+ .edit-btn:hover {
97
+ background-color: var(--hover-bg);
98
+ border-color: var(--text-secondary);
99
+ }
100
+
101
+ .gitignore-toggle.showing-ignored {
102
+ color: var(--link-color);
103
+ border-color: var(--link-color);
104
+ }
105
+
106
+ .gitignore-toggle.showing-ignored:hover {
107
+ background-color: rgba(88, 166, 255, 0.1);
108
+ }
109
+
110
+ .edit-btn {
111
+ margin-right: 8px;
112
+ }
113
+
114
+ .theme-icon {
115
+ font-size: 16px;
116
+ }
117
+
118
+ .view-toggle {
119
+ display: flex;
120
+ border: 1px solid var(--border-primary);
121
+ border-radius: 6px;
122
+ overflow: hidden;
123
+ }
124
+
125
+ .view-btn {
126
+ padding: 8px 12px;
127
+ background: none;
128
+ border: none;
129
+ color: var(--text-secondary);
130
+ text-decoration: none;
131
+ font-size: 12px;
132
+ font-weight: 500;
133
+ transition: all 0.2s ease;
134
+ white-space: nowrap;
135
+ }
136
+
137
+ .view-btn:hover {
138
+ background-color: var(--hover-bg);
139
+ color: var(--text-primary);
140
+ }
141
+
142
+ .view-btn.active {
143
+ background-color: var(--link-color);
144
+ color: white;
145
+ }
146
+
147
+ .view-btn + .view-btn {
148
+ border-left: 1px solid var(--border-primary);
149
+ }
150
+
151
+ .breadcrumb-item {
152
+ display: flex;
153
+ align-items: center;
154
+ }
155
+
156
+ .breadcrumb-item a {
157
+ color: var(--link-color);
158
+ text-decoration: none;
159
+ font-weight: 500;
160
+ padding: 4px 8px;
161
+ border-radius: 4px;
162
+ transition: all 0.15s ease;
163
+ }
164
+
165
+ .breadcrumb-item a:hover {
166
+ text-decoration: none;
167
+ color: var(--text-accent);
168
+ background-color: var(--hover-bg);
169
+ }
170
+
171
+ .breadcrumb-separator {
172
+ color: var(--text-secondary);
173
+ margin: 0 4px;
174
+ opacity: 0.7;
175
+ }
176
+
177
+ main {
178
+ padding: 24px;
179
+ max-width: 1200px;
180
+ margin: 0 auto;
181
+ }
182
+
183
+ .directory-actions {
184
+ display: flex;
185
+ gap: 8px;
186
+ margin-bottom: 16px;
187
+ }
188
+
189
+ .btn-icon {
190
+ width: 14px;
191
+ height: 14px;
192
+ fill: currentColor;
193
+ margin-right: 6px;
194
+ vertical-align: text-bottom;
195
+ }
196
+
197
+ .file-table {
198
+ width: 100%;
199
+ border-collapse: collapse;
200
+ background-color: var(--bg-primary);
201
+ border: 1px solid var(--border-primary);
202
+ border-radius: 6px;
203
+ overflow: hidden;
204
+ }
205
+
206
+ .file-table thead {
207
+ background-color: var(--bg-secondary);
208
+ }
209
+
210
+ .file-table th {
211
+ padding: 8px 16px;
212
+ text-align: left;
213
+ font-weight: 600;
214
+ font-size: 12px;
215
+ color: var(--text-accent);
216
+ border-bottom: 1px solid var(--border-primary);
217
+ text-transform: uppercase;
218
+ letter-spacing: 0.5px;
219
+ }
220
+
221
+ .file-table tbody tr {
222
+ border-bottom: 1px solid var(--border-secondary);
223
+ }
224
+
225
+ .file-table tbody tr:hover {
226
+ background-color: var(--hover-bg);
227
+ }
228
+
229
+ .file-table td {
230
+ padding: 8px 16px;
231
+ font-size: 14px;
232
+ vertical-align: middle;
233
+ }
234
+
235
+ .file-table .icon {
236
+ width: 24px;
237
+ text-align: center;
238
+ font-size: 16px;
239
+ }
240
+
241
+ .octicon-file,
242
+ .octicon-directory,
243
+ .octicon-breadcrumb,
244
+ .octicon-separator,
245
+ .octicon-home,
246
+ .theme-icon,
247
+ .view-icon,
248
+ .edit-icon {
249
+ width: 16px;
250
+ height: 16px;
251
+ fill: currentColor;
252
+ vertical-align: text-bottom;
253
+ }
254
+
255
+ .octicon-home {
256
+ margin-right: 8px;
257
+ }
258
+
259
+ .octicon-separator {
260
+ width: 12px;
261
+ height: 12px;
262
+ margin: 0 4px;
263
+ opacity: 0.7;
264
+ }
265
+
266
+ .text-yellow { color: #f9c513; }
267
+ .text-blue { color: #0969da; }
268
+ .text-green { color: #1a7f37; }
269
+ .text-red { color: #cf222e; }
270
+ .text-orange { color: #fb8500; }
271
+ .text-purple { color: #8250df; }
272
+ .text-gray { color: var(--text-secondary); }
273
+
274
+ [data-theme="light"] .text-yellow { color: #dbab09; }
275
+ [data-theme="light"] .text-blue { color: #0550ae; }
276
+ [data-theme="light"] .text-green { color: #116329; }
277
+ [data-theme="light"] .text-red { color: #82071e; }
278
+ [data-theme="light"] .text-orange { color: #bc4c00; }
279
+ [data-theme="light"] .text-purple { color: #6f42c1; }
280
+
281
+ /* Search functionality */
282
+ .search-container {
283
+ position: relative;
284
+ display: flex;
285
+ align-items: center;
286
+ background: var(--bg-primary);
287
+ border: 1px solid var(--border-primary);
288
+ border-radius: 6px;
289
+ padding: 6px 8px;
290
+ transition: all 0.2s ease;
291
+ }
292
+
293
+ .search-container:focus-within {
294
+ border-color: var(--link-color);
295
+ box-shadow: 0 0 0 2px rgba(88, 166, 255, 0.1);
296
+ }
297
+
298
+ .search-icon {
299
+ width: 16px;
300
+ height: 16px;
301
+ fill: var(--text-secondary);
302
+ margin-right: 6px;
303
+ }
304
+
305
+ .search-input {
306
+ background: none;
307
+ border: none;
308
+ outline: none;
309
+ color: var(--text-primary);
310
+ font-size: 14px;
311
+ width: 200px;
312
+ transition: all 0.2s ease;
313
+ }
314
+
315
+ .search-input::placeholder {
316
+ color: var(--text-secondary);
317
+ }
318
+
319
+ /* Language stats */
320
+ .language-stats {
321
+ display: flex;
322
+ gap: 16px;
323
+ margin-bottom: 16px;
324
+ padding: 12px 0;
325
+ border-bottom: 1px solid var(--border-primary);
326
+ flex-wrap: wrap;
327
+ }
328
+
329
+ .lang-stat {
330
+ display: flex;
331
+ align-items: center;
332
+ gap: 6px;
333
+ font-size: 12px;
334
+ color: var(--text-secondary);
335
+ }
336
+
337
+ .lang-dot {
338
+ width: 12px;
339
+ height: 12px;
340
+ border-radius: 50%;
341
+ display: inline-block;
342
+ }
343
+
344
+ .lang-name {
345
+ font-weight: 500;
346
+ color: var(--text-primary);
347
+ }
348
+
349
+ .lang-percent {
350
+ color: var(--text-secondary);
351
+ }
352
+
353
+ /* File table improvements */
354
+ .file-table-container {
355
+ margin-bottom: 24px;
356
+ }
357
+
358
+ .file-row {
359
+ transition: all 0.15s ease;
360
+ cursor: pointer;
361
+ }
362
+
363
+ .file-row:hover {
364
+ background-color: var(--hover-bg);
365
+ transform: translateX(2px);
366
+ }
367
+
368
+ .file-row.focused {
369
+ background-color: var(--link-color);
370
+ color: white;
371
+ }
372
+
373
+ .file-row.focused a {
374
+ color: white;
375
+ }
376
+
377
+ .file-row.focused .text-yellow,
378
+ .file-row.focused .text-blue,
379
+ .file-row.focused .text-green,
380
+ .file-row.focused .text-red,
381
+ .file-row.focused .text-orange,
382
+ .file-row.focused .text-purple,
383
+ .file-row.focused .text-gray {
384
+ color: rgba(255, 255, 255, 0.9);
385
+ }
386
+
387
+ .file-row.hidden {
388
+ display: none;
389
+ }
390
+
391
+ /* README preview - GitHub style */
392
+ .readme-section {
393
+ margin-top: 32px;
394
+ border: 1px solid var(--border-primary);
395
+ border-radius: 8px;
396
+ overflow: hidden;
397
+ background: var(--bg-primary);
398
+ }
399
+
400
+ .readme-header {
401
+ background: var(--bg-secondary);
402
+ border-bottom: 1px solid var(--border-primary);
403
+ padding: 12px 16px;
404
+ }
405
+
406
+ .readme-header h2 {
407
+ font-size: 14px;
408
+ font-weight: 600;
409
+ color: var(--text-accent);
410
+ display: flex;
411
+ align-items: center;
412
+ margin: 0;
413
+ }
414
+
415
+ .readme-icon {
416
+ width: 16px;
417
+ height: 16px;
418
+ fill: currentColor;
419
+ margin-right: 8px;
420
+ }
421
+
422
+ .readme-content {
423
+ padding: 48px;
424
+ max-height: none;
425
+ overflow-y: visible;
426
+ }
427
+
428
+ .readme-content .markdown {
429
+ padding: 0;
430
+ }
431
+
432
+ /* Enhanced animations */
433
+
434
+
435
+ /* Loading states */
436
+ .search-input:focus {
437
+ width: 250px;
438
+ }
439
+
440
+ /* Quick actions */
441
+ .name {
442
+ position: relative;
443
+ display: flex;
444
+ align-items: center;
445
+ gap: 4px;
446
+ flex-wrap: nowrap;
447
+ }
448
+
449
+ .quick-actions {
450
+ opacity: 0;
451
+ display: flex;
452
+ gap: 4px;
453
+ position: absolute;
454
+ right: 8px;
455
+ top: 50%;
456
+ transform: translateY(-50%);
457
+ transition: opacity 0.2s ease;
458
+ z-index: 10;
459
+ }
460
+
461
+ .file-row:hover .quick-actions {
462
+ opacity: 1;
463
+ }
464
+
465
+ .quick-btn {
466
+ background: var(--bg-secondary);
467
+ border: 1px solid var(--border-primary);
468
+ border-radius: 4px;
469
+ padding: 4px 6px;
470
+ cursor: pointer;
471
+ color: var(--text-secondary);
472
+ transition: all 0.15s ease;
473
+ display: flex;
474
+ align-items: center;
475
+ justify-content: center;
476
+ text-decoration: none;
477
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
478
+ }
479
+
480
+ .quick-btn:hover {
481
+ background: var(--hover-bg);
482
+ color: var(--text-primary);
483
+ border-color: var(--text-secondary);
484
+ transform: translateY(-1px);
485
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
486
+ }
487
+
488
+ .quick-icon {
489
+ width: 12px;
490
+ height: 12px;
491
+ fill: currentColor;
492
+ }
493
+
494
+ /* Improve name column to accommodate quick actions */
495
+ .file-table .name {
496
+ padding-right: 80px;
497
+ min-width: 200px;
498
+ }
499
+
500
+ .file-table .name a {
501
+ display: block;
502
+ overflow: hidden;
503
+ text-overflow: ellipsis;
504
+ white-space: nowrap;
505
+ padding-right: 8px;
506
+ }
507
+
508
+ .file-table .name a {
509
+ color: var(--link-color);
510
+ text-decoration: none;
511
+ font-weight: 500;
512
+ }
513
+
514
+ .file-table .name a:hover {
515
+ text-decoration: underline;
516
+ }
517
+
518
+ .file-table .size,
519
+ .file-table .modified {
520
+ color: var(--text-secondary);
521
+ font-size: 12px;
522
+ white-space: nowrap;
523
+ }
524
+
525
+ .file-content {
526
+ background-color: var(--bg-primary);
527
+ border: 1px solid var(--border-primary);
528
+ border-radius: 6px;
529
+ overflow: hidden;
530
+ }
531
+
532
+ .file-content pre {
533
+ margin: 0;
534
+ padding: 20px;
535
+ overflow-x: auto;
536
+ font-size: 13px;
537
+ line-height: 1.5;
538
+ background-color: var(--bg-primary);
539
+ }
540
+
541
+ .file-content code {
542
+ font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
543
+ }
544
+
545
+ /* Line numbers for code viewing */
546
+ .with-line-numbers {
547
+ counter-reset: line;
548
+ display: block;
549
+ }
550
+
551
+ .line-container {
552
+ display: block;
553
+ position: relative;
554
+ transition: background-color 0.15s ease;
555
+ padding: 2px 0;
556
+ line-height: 1.5;
557
+ }
558
+
559
+ .line-container::after {
560
+ content: '\A';
561
+ white-space: pre;
562
+ }
563
+
564
+ .line-container:hover {
565
+ background-color: var(--hover-bg);
566
+ }
567
+
568
+ .line-container.selected {
569
+ background-color: #fff5b4;
570
+ }
571
+
572
+ [data-theme="dark"] .line-container.selected {
573
+ background-color: #1c4532;
574
+ }
575
+
576
+ /* Editor */
577
+ .editor-container {
578
+ border: 1px solid var(--border-primary);
579
+ border-radius: 6px;
580
+ margin: 0;
581
+ background: var(--bg-primary);
582
+ box-shadow: 0 1px 3px rgba(27, 31, 36, 0.12);
583
+ }
584
+
585
+ .editor-header {
586
+ padding: 12px 16px;
587
+ border-bottom: 1px solid var(--border-primary);
588
+ background: var(--bg-secondary);
589
+ border-radius: 6px 6px 0 0;
590
+ display: flex;
591
+ justify-content: space-between;
592
+ align-items: center;
593
+ }
594
+
595
+ .editor-title {
596
+ font-size: 14px;
597
+ font-weight: 600;
598
+ color: var(--text-primary);
599
+ }
600
+
601
+ .editor-actions {
602
+ display: flex;
603
+ gap: 6px;
604
+ }
605
+
606
+ .btn {
607
+ padding: 6px 12px;
608
+ border-radius: 6px;
609
+ font-size: 12px;
610
+ font-weight: 500;
611
+ cursor: pointer;
612
+ border: 1px solid var(--border-primary);
613
+ transition: all 0.15s ease;
614
+ white-space: nowrap;
615
+ }
616
+
617
+ .btn-primary {
618
+ background: #2da44e;
619
+ color: white;
620
+ border-color: #1b6b32;
621
+ box-shadow: 0 1px 0 rgba(27, 31, 36, 0.04);
622
+ }
623
+
624
+ .btn-primary:hover {
625
+ background: #2c974b;
626
+ border-color: #1a5d2e;
627
+ }
628
+
629
+ .btn-secondary {
630
+ background: var(--bg-primary);
631
+ color: var(--text-primary);
632
+ border-color: var(--border-primary);
633
+ box-shadow: 0 1px 0 rgba(27, 31, 36, 0.04);
634
+ }
635
+
636
+ .btn-secondary:hover {
637
+ background: var(--hover-bg);
638
+ border-color: var(--text-secondary);
639
+ }
640
+
641
+ .editor-with-line-numbers {
642
+ position: relative;
643
+ display: flex;
644
+ border: 1px solid var(--border-primary);
645
+ border-width: 0 1px 1px 1px;
646
+ border-radius: 0 0 5px 5px;
647
+ background: var(--bg-primary);
648
+ height: 600px;
649
+ overflow: hidden;
650
+ }
651
+
652
+ .editor-line-numbers {
653
+ padding: 16px 8px 16px 16px;
654
+ background: var(--bg-primary);
655
+ border-right: 1px solid var(--border-secondary);
656
+ color: var(--text-secondary);
657
+ font-family: 'SFMono-Regular', 'Monaco', 'Inconsolata', 'Fira Mono', monospace;
658
+ font-size: 12px;
659
+ line-height: 1.5;
660
+ text-align: right;
661
+ user-select: none;
662
+ white-space: pre;
663
+ min-width: 50px;
664
+ height: 600px;
665
+ overflow-y: auto;
666
+ }
667
+
668
+ .file-editor {
669
+ flex: 1;
670
+ height: 600px;
671
+ padding: 16px;
672
+ font-family: 'SFMono-Regular', 'Monaco', 'Inconsolata', 'Fira Mono', monospace;
673
+ font-size: 12px;
674
+ line-height: 1.5;
675
+ background: transparent;
676
+ color: var(--text-primary);
677
+ border: none;
678
+ outline: none;
679
+ resize: vertical;
680
+ tab-size: 2;
681
+ white-space: pre;
682
+ overflow-y: auto;
683
+ }
684
+
685
+ .editor-with-line-numbers:focus-within {
686
+ border-color: #0969da;
687
+ box-shadow: 0 0 0 0.2em rgba(9, 105, 218, 0.3);
688
+ }
689
+
690
+ [data-theme="dark"] .editor-with-line-numbers:focus-within {
691
+ border-color: #58a6ff;
692
+ box-shadow: 0 0 0 0.2em rgba(88, 166, 255, 0.3);
693
+ }
694
+
695
+ /* New file interface */
696
+ .new-file-container {
697
+ border: 1px solid var(--border-primary);
698
+ border-radius: 6px;
699
+ background: var(--bg-primary);
700
+ box-shadow: 0 1px 3px rgba(27, 31, 36, 0.12);
701
+ }
702
+
703
+ .new-file-header {
704
+ padding: 16px;
705
+ border-bottom: 1px solid var(--border-primary);
706
+ background: var(--bg-secondary);
707
+ border-radius: 6px 6px 0 0;
708
+ display: flex;
709
+ justify-content: space-between;
710
+ align-items: center;
711
+ gap: 16px;
712
+ }
713
+
714
+ .filename-section {
715
+ display: flex;
716
+ align-items: center;
717
+ gap: 12px;
718
+ flex: 1;
719
+ }
720
+
721
+ .filename-label {
722
+ font-size: 14px;
723
+ font-weight: 600;
724
+ color: var(--text-primary);
725
+ white-space: nowrap;
726
+ }
727
+
728
+ .new-filename-input {
729
+ flex: 1;
730
+ padding: 8px 12px;
731
+ font-size: 14px;
732
+ border: 1px solid var(--border-primary);
733
+ border-radius: 6px;
734
+ background: var(--bg-primary);
735
+ color: var(--text-primary);
736
+ outline: none;
737
+ transition: border-color 0.15s ease;
738
+ }
739
+
740
+ .new-filename-input:focus {
741
+ border-color: #0969da;
742
+ box-shadow: 0 0 0 0.2em rgba(9, 105, 218, 0.3);
743
+ }
744
+
745
+ [data-theme="dark"] .new-filename-input:focus {
746
+ border-color: #58a6ff;
747
+ box-shadow: 0 0 0 0.2em rgba(88, 166, 255, 0.3);
748
+ }
749
+
750
+ .new-file-actions {
751
+ display: flex;
752
+ gap: 8px;
753
+ }
754
+
755
+ .new-file-editor {
756
+ /* No additional styling needed - uses existing .file-editor */
757
+ }
758
+
759
+ .line-number {
760
+ display: inline-block;
761
+ width: 40px;
762
+ text-align: right;
763
+ margin-right: 16px;
764
+ padding-right: 8px;
765
+ color: var(--text-secondary);
766
+ border-right: 1px solid var(--border-secondary);
767
+ font-size: 12px;
768
+ line-height: 1.45;
769
+ user-select: none;
770
+ -webkit-user-select: none;
771
+ text-decoration: none;
772
+ cursor: pointer;
773
+ }
774
+
775
+ .line-number:hover {
776
+ color: var(--link-color);
777
+ text-decoration: none;
778
+ }
779
+
780
+ .line-content {
781
+ white-space: pre;
782
+ }
783
+
784
+ /* GitHub syntax highlighting - Dark theme */
785
+ .hljs-comment,
786
+ .hljs-quote {
787
+ font-style: normal !important;
788
+ color: #8b949e;
789
+ }
790
+
791
+ .hljs-keyword,
792
+ .hljs-selector-tag,
793
+ .hljs-literal,
794
+ .hljs-doctag {
795
+ color: #ff7b72;
796
+ }
797
+
798
+ .hljs-number {
799
+ color: #79c0ff;
800
+ }
801
+
802
+ .hljs-string,
803
+ .hljs-regexp {
804
+ color: #a5d6ff;
805
+ }
806
+
807
+ .hljs-title,
808
+ .hljs-section {
809
+ color: #d2a8ff;
810
+ }
811
+
812
+ .hljs-name,
813
+ .hljs-attribute {
814
+ color: #ffa657;
815
+ }
816
+
817
+ .hljs-variable,
818
+ .hljs-template-variable {
819
+ color: #ffa657;
820
+ }
821
+
822
+ .hljs-type,
823
+ .hljs-class .hljs-title {
824
+ color: #ffa657;
825
+ }
826
+
827
+ .hljs-symbol,
828
+ .hljs-bullet,
829
+ .hljs-built_in,
830
+ .hljs-builtin-name {
831
+ color: #ff7b72;
832
+ }
833
+
834
+ .hljs-function {
835
+ color: #d2a8ff;
836
+ }
837
+
838
+ .hljs-tag {
839
+ color: #7ee787;
840
+ }
841
+
842
+ .hljs-meta {
843
+ color: #79c0ff;
844
+ }
845
+
846
+ .hljs-deletion {
847
+ color: #ffa198;
848
+ background-color: #490202;
849
+ }
850
+
851
+ .hljs-addition {
852
+ color: #aff5b4;
853
+ background-color: #033a16;
854
+ }
855
+
856
+ .hljs-emphasis {
857
+ font-style: italic;
858
+ }
859
+
860
+ .hljs-strong {
861
+ font-weight: bold;
862
+ }
863
+
864
+ /* GitHub syntax highlighting - Light theme */
865
+ [data-theme="light"] .hljs-comment,
866
+ [data-theme="light"] .hljs-quote {
867
+ color: #656d76;
868
+ }
869
+
870
+ [data-theme="light"] .hljs-keyword,
871
+ [data-theme="light"] .hljs-selector-tag,
872
+ [data-theme="light"] .hljs-literal,
873
+ [data-theme="light"] .hljs-doctag {
874
+ color: #cf222e;
875
+ }
876
+
877
+ [data-theme="light"] .hljs-number {
878
+ color: #0550ae;
879
+ }
880
+
881
+ [data-theme="light"] .hljs-string,
882
+ [data-theme="light"] .hljs-regexp {
883
+ color: #0a3069;
884
+ }
885
+
886
+ [data-theme="light"] .hljs-title,
887
+ [data-theme="light"] .hljs-section {
888
+ color: #8250df;
889
+ }
890
+
891
+ [data-theme="light"] .hljs-name,
892
+ [data-theme="light"] .hljs-attribute {
893
+ color: #953800;
894
+ }
895
+
896
+ [data-theme="light"] .hljs-variable,
897
+ [data-theme="light"] .hljs-template-variable {
898
+ color: #953800;
899
+ }
900
+
901
+ [data-theme="light"] .hljs-type,
902
+ [data-theme="light"] .hljs-class .hljs-title {
903
+ color: #953800;
904
+ }
905
+
906
+ [data-theme="light"] .hljs-symbol,
907
+ [data-theme="light"] .hljs-bullet,
908
+ [data-theme="light"] .hljs-built_in,
909
+ [data-theme="light"] .hljs-builtin-name {
910
+ color: #cf222e;
911
+ }
912
+
913
+ [data-theme="light"] .hljs-function {
914
+ color: #8250df;
915
+ }
916
+
917
+ [data-theme="light"] .hljs-tag {
918
+ color: #116329;
919
+ }
920
+
921
+ [data-theme="light"] .hljs-meta {
922
+ color: #0550ae;
923
+ }
924
+
925
+ [data-theme="light"] .hljs-deletion {
926
+ color: #82071e;
927
+ background-color: #ffebe9;
928
+ }
929
+
930
+ [data-theme="light"] .hljs-addition {
931
+ color: #116329;
932
+ background-color: #dafbe1;
933
+ }
934
+
935
+ /* Beautiful markdown rendering for all contexts */
936
+ .markdown {
937
+ padding: 32px;
938
+ max-width: 100%;
939
+ font-size: 16px;
940
+ line-height: 1.6;
941
+ }
942
+
943
+ /* Headings with proper hierarchy */
944
+ .markdown h1 {
945
+ font-size: 2rem;
946
+ font-weight: 600;
947
+ margin: 0 0 24px 0;
948
+ padding-bottom: 12px;
949
+ border-bottom: 1px solid var(--border-primary);
950
+ color: var(--text-accent);
951
+ line-height: 1.25;
952
+ }
953
+
954
+ .markdown h2 {
955
+ font-size: 1.5rem;
956
+ font-weight: 600;
957
+ margin: 32px 0 16px 0;
958
+ color: var(--text-accent);
959
+ border-bottom: 1px solid var(--border-secondary);
960
+ padding-bottom: 8px;
961
+ line-height: 1.25;
962
+ }
963
+
964
+ .markdown h3 {
965
+ font-size: 1.25rem;
966
+ font-weight: 600;
967
+ margin: 24px 0 16px 0;
968
+ color: var(--text-accent);
969
+ border: none;
970
+ line-height: 1.25;
971
+ }
972
+
973
+ .markdown h4 {
974
+ font-size: 1rem;
975
+ font-weight: 600;
976
+ margin: 24px 0 16px 0;
977
+ color: var(--text-accent);
978
+ border: none;
979
+ line-height: 1.25;
980
+ }
981
+
982
+ .markdown h5,
983
+ .markdown h6 {
984
+ font-size: 0.875rem;
985
+ font-weight: 600;
986
+ margin: 20px 0 12px 0;
987
+ color: var(--text-accent);
988
+ border: none;
989
+ line-height: 1.25;
990
+ }
991
+
992
+ /* Paragraphs and text */
993
+ .markdown p {
994
+ margin-bottom: 16px;
995
+ color: var(--text-primary);
996
+ line-height: 1.6;
997
+ font-size: 16px;
998
+ }
999
+
1000
+ /* Lists with custom styling */
1001
+ .markdown ul,
1002
+ .markdown ol {
1003
+ margin-bottom: 16px;
1004
+ padding-left: 0;
1005
+ list-style: none;
1006
+ }
1007
+
1008
+ .markdown li {
1009
+ margin-bottom: 8px;
1010
+ color: var(--text-primary);
1011
+ line-height: 1.6;
1012
+ font-size: 16px;
1013
+ position: relative;
1014
+ padding-left: 24px;
1015
+ }
1016
+
1017
+ .markdown ul li:before {
1018
+ content: "•";
1019
+ color: var(--text-secondary);
1020
+ font-size: 18px;
1021
+ position: absolute;
1022
+ left: 0;
1023
+ top: 0;
1024
+ }
1025
+
1026
+ .markdown ol {
1027
+ counter-reset: item;
1028
+ }
1029
+
1030
+ .markdown ol li {
1031
+ counter-increment: item;
1032
+ padding-left: 32px;
1033
+ }
1034
+
1035
+ .markdown ol li:before {
1036
+ content: counter(item) ".";
1037
+ color: var(--text-secondary);
1038
+ font-weight: 600;
1039
+ position: absolute;
1040
+ left: 0;
1041
+ top: 0;
1042
+ }
1043
+
1044
+ .markdown li strong {
1045
+ color: var(--text-accent);
1046
+ font-weight: 600;
1047
+ }
1048
+
1049
+ /* Code styling */
1050
+ .markdown code {
1051
+ background-color: var(--bg-secondary);
1052
+ padding: 3px 6px;
1053
+ border-radius: 6px;
1054
+ font-size: 85%;
1055
+ font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
1056
+ color: var(--text-accent);
1057
+ border: 1px solid var(--border-primary);
1058
+ }
1059
+
1060
+ .markdown pre {
1061
+ background-color: var(--bg-secondary);
1062
+ padding: 16px;
1063
+ border-radius: 8px;
1064
+ overflow-x: auto;
1065
+ margin: 16px 0;
1066
+ border: 1px solid var(--border-primary);
1067
+ }
1068
+
1069
+ .markdown pre code {
1070
+ background: none;
1071
+ padding: 0;
1072
+ border: none;
1073
+ font-size: 14px;
1074
+ color: var(--text-primary);
1075
+ }
1076
+
1077
+ /* Other elements */
1078
+ .markdown blockquote {
1079
+ border-left: 4px solid var(--border-primary);
1080
+ padding-left: 16px;
1081
+ margin: 16px 0;
1082
+ color: var(--text-secondary);
1083
+ font-style: italic;
1084
+ }
1085
+
1086
+ .markdown a {
1087
+ color: var(--link-color);
1088
+ text-decoration: none;
1089
+ }
1090
+
1091
+ .markdown a:hover {
1092
+ text-decoration: underline;
1093
+ }
1094
+
1095
+ .markdown table {
1096
+ border-collapse: collapse;
1097
+ margin-bottom: 16px;
1098
+ width: 100%;
1099
+ }
1100
+
1101
+ .markdown table th,
1102
+ .markdown table td {
1103
+ border: 1px solid var(--border-primary);
1104
+ padding: 8px 12px;
1105
+ text-align: left;
1106
+ }
1107
+
1108
+ .markdown table th {
1109
+ background-color: var(--bg-secondary);
1110
+ font-weight: 600;
1111
+ color: var(--text-accent);
1112
+ }
1113
+
1114
+ .markdown hr {
1115
+ border: none;
1116
+ border-top: 1px solid var(--border-primary);
1117
+ margin: 24px 0;
1118
+ }
1119
+
1120
+
1121
+ @media (max-width: 768px) {
1122
+ main {
1123
+ padding: 16px;
1124
+ }
1125
+
1126
+ .file-table .size,
1127
+ .file-table .modified {
1128
+ display: none;
1129
+ }
1130
+
1131
+ header {
1132
+ padding: 12px 16px;
1133
+ }
1134
+
1135
+ .header-content {
1136
+ flex-direction: column;
1137
+ gap: 12px;
1138
+ }
1139
+
1140
+ .header-right {
1141
+ align-self: flex-end;
1142
+ }
1143
+
1144
+ .keyboard-help-content {
1145
+ margin: 20px;
1146
+ max-width: calc(100% - 40px);
1147
+ }
1148
+
1149
+ .keyboard-shortcuts-grid {
1150
+ grid-template-columns: 1fr;
1151
+ gap: 24px;
1152
+ }
1153
+
1154
+ .keyboard-help-body {
1155
+ padding: 20px;
1156
+ }
1157
+ }
1158
+
1159
+ /* Notification System */
1160
+ .notification {
1161
+ position: fixed;
1162
+ top: 20px;
1163
+ right: 20px;
1164
+ padding: 12px 16px;
1165
+ border-radius: 6px;
1166
+ color: white;
1167
+ font-size: 14px;
1168
+ font-weight: 500;
1169
+ z-index: 10000;
1170
+ max-width: 400px;
1171
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
1172
+ backdrop-filter: blur(10px);
1173
+ border: 1px solid rgba(255, 255, 255, 0.1);
1174
+ transition: opacity 0.3s ease;
1175
+ }
1176
+
1177
+ .notification-success {
1178
+ background: rgba(46, 160, 67, 0.9);
1179
+ border-color: rgba(46, 160, 67, 0.5);
1180
+ }
1181
+
1182
+ .notification-error {
1183
+ background: rgba(248, 81, 73, 0.9);
1184
+ border-color: rgba(248, 81, 73, 0.5);
1185
+ }
1186
+
1187
+ .notification-info {
1188
+ background: rgba(88, 166, 255, 0.9);
1189
+ border-color: rgba(88, 166, 255, 0.5);
1190
+ }
1191
+
1192
+
1193
+
1194
+ /* Keyboard Help Overlay */
1195
+ .keyboard-help-overlay {
1196
+ position: fixed;
1197
+ top: 0;
1198
+ left: 0;
1199
+ width: 100%;
1200
+ height: 100%;
1201
+ background: rgba(0, 0, 0, 0.8);
1202
+ backdrop-filter: blur(4px);
1203
+ z-index: 99999;
1204
+ display: flex;
1205
+ align-items: center;
1206
+ justify-content: center;
1207
+ animation: fadeIn 0.2s ease-out;
1208
+ }
1209
+
1210
+ .keyboard-help-content {
1211
+ background: var(--bg-primary);
1212
+ border: 1px solid var(--border-primary);
1213
+ border-radius: 8px;
1214
+ box-shadow: 0 16px 48px rgba(0, 0, 0, 0.5);
1215
+ max-width: 800px;
1216
+ max-height: 80vh;
1217
+ overflow-y: auto;
1218
+ margin: 20px;
1219
+ animation: slideUp 0.3s ease-out;
1220
+ }
1221
+
1222
+ .keyboard-help-header {
1223
+ display: flex;
1224
+ justify-content: space-between;
1225
+ align-items: center;
1226
+ padding: 24px 30px 16px;
1227
+ border-bottom: 1px solid var(--border-primary);
1228
+ background: var(--bg-secondary);
1229
+ border-radius: 8px 8px 0 0;
1230
+ }
1231
+
1232
+ .keyboard-help-header h2 {
1233
+ color: var(--text-primary);
1234
+ font-size: 24px;
1235
+ font-weight: 600;
1236
+ margin: 0;
1237
+ }
1238
+
1239
+ .keyboard-help-close {
1240
+ background: none;
1241
+ border: none;
1242
+ color: var(--text-secondary);
1243
+ font-size: 24px;
1244
+ cursor: pointer;
1245
+ padding: 4px;
1246
+ border-radius: 4px;
1247
+ transition: color 0.2s ease;
1248
+ }
1249
+
1250
+ .keyboard-help-close:hover {
1251
+ color: var(--text-primary);
1252
+ background: var(--hover-bg);
1253
+ }
1254
+
1255
+ .keyboard-help-body {
1256
+ padding: 0;
1257
+ }
1258
+
1259
+ .shortcuts-container {
1260
+ display: grid;
1261
+ grid-template-columns: 1fr 1fr;
1262
+ gap: 0;
1263
+ }
1264
+
1265
+ .shortcut-section {
1266
+ border-right: 1px solid var(--border-primary);
1267
+ padding: 40px 50px;
1268
+ }
1269
+
1270
+ .shortcut-section:last-child {
1271
+ border-right: none;
1272
+ }
1273
+
1274
+
1275
+ .shortcut-section h3 {
1276
+ color: var(--text-primary);
1277
+ font-size: 16px;
1278
+ font-weight: 600;
1279
+ margin: 0 0 24px 0;
1280
+ }
1281
+
1282
+ .shortcut-list {
1283
+ display: flex;
1284
+ flex-direction: column;
1285
+ gap: 20px;
1286
+ }
1287
+
1288
+ .shortcut-item {
1289
+ display: flex;
1290
+ justify-content: space-between;
1291
+ align-items: center;
1292
+ padding: 0;
1293
+ border-radius: 0;
1294
+ transition: none;
1295
+ }
1296
+
1297
+
1298
+ .shortcut-keys {
1299
+ display: flex;
1300
+ gap: 6px;
1301
+ align-items: center;
1302
+ }
1303
+
1304
+ .shortcut-keys kbd {
1305
+ background: var(--bg-tertiary);
1306
+ border: 1px solid var(--border-secondary);
1307
+ border-radius: 4px;
1308
+ padding: 4px 8px;
1309
+ font-size: 11px;
1310
+ font-family: 'SFMono-Regular', 'Monaco', 'Inconsolata', 'Fira Mono', monospace;
1311
+ color: var(--text-primary);
1312
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
1313
+ white-space: nowrap;
1314
+ min-width: 20px;
1315
+ text-align: center;
1316
+ }
1317
+
1318
+ .shortcut-desc {
1319
+ color: var(--text-primary);
1320
+ flex: 1;
1321
+ text-align: left;
1322
+ font-size: 14px;
1323
+ }
1324
+
1325
+ @keyframes fadeIn {
1326
+ from {
1327
+ opacity: 0;
1328
+ }
1329
+ to {
1330
+ opacity: 1;
1331
+ }
1332
+ }
1333
+
1334
+ @keyframes slideUp {
1335
+ from {
1336
+ opacity: 0;
1337
+ transform: translateY(30px);
1338
+ }
1339
+ to {
1340
+ opacity: 1;
1341
+ transform: translateY(0);
1342
+ }
1343
+ }
1344
+ }
1345
+ /* Git Integration */
1346
+ .git-branch {
1347
+ display: inline-flex;
1348
+ align-items: center;
1349
+ margin-left: 12px;
1350
+ color: var(--text-secondary);
1351
+ font-size: 14px;
1352
+ font-weight: 500;
1353
+ gap: 6px;
1354
+ }
1355
+
1356
+ .octicon-branch {
1357
+ width: 16px;
1358
+ height: 16px;
1359
+ }
1360
+
1361
+ .git-status {
1362
+ display: inline;
1363
+ margin-left: 8px;
1364
+ padding: 0;
1365
+ border-radius: 4px;
1366
+ opacity: 0.8;
1367
+ vertical-align: middle;
1368
+ line-height: inherit;
1369
+ }
1370
+
1371
+ .git-status-icon {
1372
+ width: 10px;
1373
+ height: 10px;
1374
+ fill: currentColor;
1375
+ display: inline;
1376
+ vertical-align: middle;
1377
+ }
1378
+
1379
+ .git-status-M {
1380
+ color: #fb8500;
1381
+ }
1382
+
1383
+ .git-status-A {
1384
+ color: #28a745;
1385
+ }
1386
+
1387
+ .git-status-D {
1388
+ color: #dc3545;
1389
+ }
1390
+
1391
+ .git-status-R {
1392
+ color: #17a2b8;
1393
+ }
1394
+
1395
+ .git-status-?? {
1396
+ color: var(--text-secondary);
1397
+ }
1398
+
1399
+ .git-status-MM,
1400
+ .git-status-AM,
1401
+ .git-status-AD {
1402
+ color: #ffc107;
1403
+ }
1404
+
1405
+ [data-theme="light"] .git-status-M {
1406
+ color: #bc4c00;
1407
+ }
1408
+
1409
+ [data-theme="light"] .git-status-A {
1410
+ color: #116329;
1411
+ }
1412
+
1413
+ [data-theme="light"] .git-status-D {
1414
+ color: #82071e;
1415
+ }
1416
+
1417
+ [data-theme="light"] .git-status-R {
1418
+ color: #0550ae;
1419
+ }
1420
+
1421
+ [data-theme="light"] .git-status-MM,
1422
+ [data-theme="light"] .git-status-AM,
1423
+ [data-theme="light"] .git-status-AD {
1424
+ color: #bf8700;
1425
+ }
1426
+
1427
+ /* Git Diff Viewer */
1428
+ .diff-viewer-overlay {
1429
+ position: fixed;
1430
+ top: 0;
1431
+ left: 0;
1432
+ width: 100%;
1433
+ height: 100%;
1434
+ background: rgba(0, 0, 0, 0.8);
1435
+ backdrop-filter: blur(4px);
1436
+ z-index: 99999;
1437
+ display: flex;
1438
+ align-items: center;
1439
+ justify-content: center;
1440
+ animation: fadeIn 0.2s ease-out;
1441
+ }
1442
+
1443
+ .diff-viewer-modal {
1444
+ background: var(--bg-primary);
1445
+ border: 1px solid var(--border-primary);
1446
+ border-radius: 8px;
1447
+ box-shadow: 0 16px 48px rgba(0, 0, 0, 0.5);
1448
+ width: 90vw;
1449
+ max-width: 1200px;
1450
+ height: 80vh;
1451
+ display: flex;
1452
+ flex-direction: column;
1453
+ animation: slideUp 0.3s ease-out;
1454
+ }
1455
+
1456
+ .diff-viewer-header {
1457
+ display: flex;
1458
+ justify-content: space-between;
1459
+ align-items: center;
1460
+ padding: 16px 20px;
1461
+ border-bottom: 1px solid var(--border-primary);
1462
+ background: var(--bg-secondary);
1463
+ border-radius: 8px 8px 0 0;
1464
+ }
1465
+
1466
+ .diff-viewer-title {
1467
+ color: var(--text-primary);
1468
+ font-size: 16px;
1469
+ font-weight: 600;
1470
+ margin: 0;
1471
+ display: flex;
1472
+ align-items: center;
1473
+ gap: 8px;
1474
+ }
1475
+
1476
+ .diff-close-btn {
1477
+ background: none;
1478
+ border: none;
1479
+ color: var(--text-secondary);
1480
+ font-size: 24px;
1481
+ cursor: pointer;
1482
+ padding: 4px;
1483
+ border-radius: 4px;
1484
+ transition: color 0.2s ease;
1485
+ }
1486
+
1487
+ .diff-close-btn:hover {
1488
+ color: var(--text-primary);
1489
+ background: var(--hover-bg);
1490
+ }
1491
+
1492
+ .diff-viewer-content {
1493
+ flex: 1;
1494
+ overflow: auto;
1495
+ padding: 0;
1496
+ }
1497
+
1498
+ .diff-container {
1499
+ display: flex;
1500
+ height: 100%;
1501
+ }
1502
+
1503
+ .diff-side {
1504
+ flex: 1;
1505
+ border-right: 1px solid var(--border-primary);
1506
+ display: flex;
1507
+ flex-direction: column;
1508
+ }
1509
+
1510
+ .diff-side:last-child {
1511
+ border-right: none;
1512
+ }
1513
+
1514
+ .diff-side-header {
1515
+ background: var(--bg-secondary);
1516
+ padding: 8px 16px;
1517
+ border-bottom: 1px solid var(--border-primary);
1518
+ font-size: 12px;
1519
+ font-weight: 600;
1520
+ color: var(--text-secondary);
1521
+ }
1522
+
1523
+ .diff-side-content {
1524
+ flex: 1;
1525
+ overflow: auto;
1526
+ font-family: 'SFMono-Regular', monospace;
1527
+ font-size: 12px;
1528
+ line-height: 1.4;
1529
+ }
1530
+
1531
+ .diff-line {
1532
+ display: flex;
1533
+ white-space: pre;
1534
+ min-height: 1.4em;
1535
+ }
1536
+
1537
+ .diff-line-number {
1538
+ background: var(--bg-secondary);
1539
+ color: var(--text-secondary);
1540
+ text-align: right;
1541
+ padding: 0 8px;
1542
+ border-right: 1px solid var(--border-primary);
1543
+ min-width: 50px;
1544
+ user-select: none;
1545
+ flex-shrink: 0;
1546
+ }
1547
+
1548
+ .diff-line-content {
1549
+ padding: 0 8px;
1550
+ flex: 1;
1551
+ overflow-x: auto;
1552
+ }
1553
+
1554
+ .diff-line-added {
1555
+ background: #0f5132;
1556
+ color: #75b798;
1557
+ }
1558
+
1559
+ .diff-line-added .diff-line-number {
1560
+ background: #0a4027;
1561
+ }
1562
+
1563
+ .diff-line-removed {
1564
+ background: #67060c;
1565
+ color: #f8d7da;
1566
+ }
1567
+
1568
+ .diff-line-removed .diff-line-number {
1569
+ background: #4a0409;
1570
+ }
1571
+
1572
+ .diff-line-context {
1573
+ background: var(--bg-primary);
1574
+ color: var(--text-primary);
1575
+ }
1576
+
1577
+ [data-theme="light"] .diff-line-added {
1578
+ background: #d1e7dd;
1579
+ color: #055160;
1580
+ }
1581
+
1582
+ [data-theme="light"] .diff-line-added .diff-line-number {
1583
+ background: #badbcc;
1584
+ }
1585
+
1586
+ [data-theme="light"] .diff-line-removed {
1587
+ background: #f8d7da;
1588
+ color: #721c24;
1589
+ }
1590
+
1591
+ [data-theme="light"] .diff-line-removed .diff-line-number {
1592
+ background: #f1aeb5;
1593
+ }
1594
+
1595
+ .diff-stats {
1596
+ display: flex;
1597
+ gap: 16px;
1598
+ align-items: center;
1599
+ font-size: 12px;
1600
+ }
1601
+
1602
+ .diff-stat {
1603
+ display: flex;
1604
+ align-items: center;
1605
+ gap: 4px;
1606
+ }
1607
+
1608
+ .diff-stat-added {
1609
+ color: #28a745;
1610
+ }
1611
+
1612
+ .diff-stat-removed {
1613
+ color: #dc3545;
1614
+ }
1615
+
1616
+ /* Beautiful raw diff styles */
1617
+ .diff-container {
1618
+ max-width: 100%;
1619
+ margin: 0;
1620
+ padding: 0;
1621
+ background: var(--bg-primary);
1622
+ border-radius: 8px;
1623
+ border: 1px solid var(--border-primary);
1624
+ overflow: hidden;
1625
+ }
1626
+
1627
+ .diff-content {
1628
+ padding: 0;
1629
+ }
1630
+
1631
+ .raw-diff-container {
1632
+ font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
1633
+ font-size: 14px;
1634
+ line-height: 1.5;
1635
+ overflow-x: auto;
1636
+ }
1637
+
1638
+ .diff-line {
1639
+ display: flex;
1640
+ align-items: stretch;
1641
+ min-height: 24px;
1642
+ border-bottom: 1px solid rgba(0, 0, 0, 0.03);
1643
+ transition: background-color 0.1s ease;
1644
+ }
1645
+
1646
+ .diff-line:hover {
1647
+ background-color: rgba(255, 255, 255, 0.02) !important;
1648
+ }
1649
+
1650
+ .diff-line-number {
1651
+ padding: 4px 12px;
1652
+ background: var(--bg-secondary);
1653
+ color: var(--text-secondary);
1654
+ text-align: right;
1655
+ min-width: 60px;
1656
+ user-select: none;
1657
+ border-right: 1px solid var(--border-primary);
1658
+ flex-shrink: 0;
1659
+ font-size: 12px;
1660
+ display: flex;
1661
+ align-items: center;
1662
+ justify-content: flex-end;
1663
+ }
1664
+
1665
+ .diff-line-content {
1666
+ padding: 4px 16px;
1667
+ flex: 1;
1668
+ white-space: pre;
1669
+ overflow-x: auto;
1670
+ display: flex;
1671
+ align-items: center;
1672
+ }
1673
+
1674
+ /* Different line types */
1675
+ .diff-line-added {
1676
+ background: rgba(46, 160, 67, 0.12);
1677
+ border-left: 3px solid #2ea043;
1678
+ }
1679
+
1680
+ .diff-line-added .diff-line-number {
1681
+ background: rgba(46, 160, 67, 0.2);
1682
+ color: #2ea043;
1683
+ font-weight: 600;
1684
+ }
1685
+
1686
+ .diff-line-removed {
1687
+ background: rgba(248, 81, 73, 0.12);
1688
+ border-left: 3px solid #f85149;
1689
+ }
1690
+
1691
+ .diff-line-removed .diff-line-number {
1692
+ background: rgba(248, 81, 73, 0.2);
1693
+ color: #f85149;
1694
+ font-weight: 600;
1695
+ }
1696
+
1697
+ .diff-line-context {
1698
+ background: var(--bg-primary);
1699
+ color: var(--text-primary);
1700
+ }
1701
+
1702
+ .diff-line-hunk {
1703
+ background: rgba(88, 166, 255, 0.08);
1704
+ border-left: 3px solid #58a6ff;
1705
+ font-weight: 600;
1706
+ }
1707
+
1708
+ .diff-line-hunk .diff-line-number {
1709
+ background: rgba(88, 166, 255, 0.2);
1710
+ color: #58a6ff;
1711
+ }
1712
+
1713
+ .diff-line-hunk .diff-line-content {
1714
+ color: #58a6ff;
1715
+ }
1716
+
1717
+ .diff-line-header {
1718
+ background: var(--bg-secondary);
1719
+ color: var(--text-secondary);
1720
+ font-weight: 500;
1721
+ border-left: 3px solid var(--text-secondary);
1722
+ opacity: 0.8;
1723
+ }
1724
+
1725
+ .diff-line-header .diff-line-number {
1726
+ background: var(--bg-tertiary);
1727
+ }
1728
+
1729
+ /* Light theme adjustments */
1730
+ [data-theme="light"] .diff-line-added {
1731
+ background: rgba(46, 160, 67, 0.1);
1732
+ }
1733
+
1734
+ [data-theme="light"] .diff-line-removed {
1735
+ background: rgba(248, 81, 73, 0.1);
1736
+ }
1737
+
1738
+ [data-theme="light"] .diff-line-hunk {
1739
+ background: rgba(9, 105, 218, 0.1);
1740
+ border-left-color: #0969da;
1741
+ }
1742
+
1743
+ [data-theme="light"] .diff-line-hunk .diff-line-number {
1744
+ background: rgba(9, 105, 218, 0.15);
1745
+ color: #0969da;
1746
+ }
1747
+
1748
+ [data-theme="light"] .diff-line-hunk .diff-line-content {
1749
+ color: #0969da;
1750
+ }
1751
+
1752
+ .no-changes {
1753
+ padding: 40px;
1754
+ text-align: center;
1755
+ color: var(--text-secondary);
1756
+ font-style: italic;
1757
+ }