@gencode/cli 0.8.16 → 0.10.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,1076 @@
1
+ :root {
2
+ {{THEME_VARS}}
3
+ --body-bg: {{BODY_BG}};
4
+ --container-bg: {{CONTAINER_BG}};
5
+ --info-bg: {{INFO_BG}};
6
+ }
7
+
8
+ * { margin: 0; padding: 0; box-sizing: border-box; }
9
+
10
+ :root {
11
+ --line-height: 18px; /* 12px font * 1.5 */
12
+ --sidebar-width: 400px;
13
+ --sidebar-min-width: 240px;
14
+ --sidebar-max-width: 840px;
15
+ --sidebar-resizer-width: 6px;
16
+ }
17
+
18
+ body {
19
+ font-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, 'DejaVu Sans Mono', monospace;
20
+ font-size: 12px;
21
+ line-height: var(--line-height);
22
+ color: var(--text);
23
+ background: var(--body-bg);
24
+ }
25
+
26
+ body.sidebar-resizing {
27
+ cursor: col-resize;
28
+ user-select: none;
29
+ }
30
+
31
+ #app {
32
+ display: flex;
33
+ min-height: 100vh;
34
+ }
35
+
36
+ /* Sidebar */
37
+ #sidebar {
38
+ width: var(--sidebar-width);
39
+ min-width: var(--sidebar-width);
40
+ max-width: var(--sidebar-width);
41
+ background: var(--container-bg);
42
+ flex-shrink: 0;
43
+ display: flex;
44
+ flex-direction: column;
45
+ position: sticky;
46
+ top: 0;
47
+ height: 100vh;
48
+ border-right: 1px solid var(--dim);
49
+ }
50
+
51
+ #sidebar-resizer {
52
+ width: var(--sidebar-resizer-width);
53
+ flex-shrink: 0;
54
+ position: sticky;
55
+ top: 0;
56
+ height: 100vh;
57
+ cursor: col-resize;
58
+ touch-action: none;
59
+ background: transparent;
60
+ border-right: 1px solid transparent;
61
+ }
62
+
63
+ #sidebar-resizer:hover,
64
+ body.sidebar-resizing #sidebar-resizer {
65
+ background: var(--selectedBg);
66
+ border-right-color: var(--dim);
67
+ }
68
+
69
+ .sidebar-header {
70
+ padding: 8px 12px;
71
+ flex-shrink: 0;
72
+ }
73
+
74
+ .sidebar-controls {
75
+ padding: 8px 8px 4px 8px;
76
+ }
77
+
78
+ .sidebar-search {
79
+ width: 100%;
80
+ box-sizing: border-box;
81
+ padding: 4px 8px;
82
+ font-size: 11px;
83
+ font-family: inherit;
84
+ background: var(--body-bg);
85
+ color: var(--text);
86
+ border: 1px solid var(--dim);
87
+ border-radius: 3px;
88
+ }
89
+
90
+ .sidebar-filters {
91
+ display: flex;
92
+ padding: 4px 8px 8px 8px;
93
+ gap: 4px;
94
+ align-items: center;
95
+ flex-wrap: wrap;
96
+ }
97
+
98
+ .sidebar-search:focus {
99
+ outline: none;
100
+ border-color: var(--accent);
101
+ }
102
+
103
+ .sidebar-search::placeholder {
104
+ color: var(--muted);
105
+ }
106
+
107
+ .filter-btn {
108
+ padding: 3px 8px;
109
+ font-size: 10px;
110
+ font-family: inherit;
111
+ background: transparent;
112
+ color: var(--muted);
113
+ border: 1px solid var(--dim);
114
+ border-radius: 3px;
115
+ cursor: pointer;
116
+ }
117
+
118
+ .filter-btn:hover {
119
+ color: var(--text);
120
+ border-color: var(--text);
121
+ }
122
+
123
+ .filter-btn.active {
124
+ background: var(--accent);
125
+ color: var(--body-bg);
126
+ border-color: var(--accent);
127
+ }
128
+
129
+ .sidebar-close {
130
+ display: none;
131
+ padding: 3px 8px;
132
+ font-size: 12px;
133
+ font-family: inherit;
134
+ background: transparent;
135
+ color: var(--muted);
136
+ border: 1px solid var(--dim);
137
+ border-radius: 3px;
138
+ cursor: pointer;
139
+ margin-left: auto;
140
+ }
141
+
142
+ .sidebar-close:hover {
143
+ color: var(--text);
144
+ border-color: var(--text);
145
+ }
146
+
147
+ .tree-container {
148
+ flex: 1;
149
+ overflow: auto;
150
+ padding: 4px 0;
151
+ }
152
+
153
+ .tree-node {
154
+ padding: 0 8px;
155
+ cursor: pointer;
156
+ display: flex;
157
+ align-items: baseline;
158
+ font-size: 11px;
159
+ line-height: 13px;
160
+ white-space: nowrap;
161
+ }
162
+
163
+ .tree-node:hover {
164
+ background: var(--selectedBg);
165
+ }
166
+
167
+ .tree-node.active {
168
+ background: var(--selectedBg);
169
+ }
170
+
171
+ .tree-node.active .tree-content {
172
+ font-weight: bold;
173
+ }
174
+
175
+ .tree-node.in-path {
176
+ background: color-mix(in srgb, var(--accent) 10%, transparent);
177
+ }
178
+
179
+ .tree-node:not(.in-path) {
180
+ opacity: 0.5;
181
+ }
182
+
183
+ .tree-node:not(.in-path):hover {
184
+ opacity: 1;
185
+ }
186
+
187
+ .tree-prefix {
188
+ color: var(--muted);
189
+ flex-shrink: 0;
190
+ font-family: monospace;
191
+ white-space: pre;
192
+ }
193
+
194
+ .tree-marker {
195
+ color: var(--accent);
196
+ flex-shrink: 0;
197
+ }
198
+
199
+ .tree-content {
200
+ color: var(--text);
201
+ }
202
+
203
+ .tree-role-user {
204
+ color: var(--accent);
205
+ }
206
+
207
+ .tree-role-skill {
208
+ color: var(--customMessageLabel);
209
+ }
210
+
211
+ .tree-role-assistant {
212
+ color: var(--success);
213
+ }
214
+
215
+ .tree-role-tool {
216
+ color: var(--muted);
217
+ }
218
+
219
+ .tree-muted {
220
+ color: var(--muted);
221
+ }
222
+
223
+ .tree-error {
224
+ color: var(--error);
225
+ }
226
+
227
+ .tree-compaction {
228
+ color: var(--borderAccent);
229
+ }
230
+
231
+ .tree-branch-summary {
232
+ color: var(--warning);
233
+ }
234
+
235
+ .tree-custom-message {
236
+ color: var(--customMessageLabel);
237
+ }
238
+
239
+ .tree-status {
240
+ padding: 4px 12px;
241
+ font-size: 10px;
242
+ color: var(--muted);
243
+ flex-shrink: 0;
244
+ }
245
+
246
+ /* Main content */
247
+ #content {
248
+ flex: 1;
249
+ min-width: 0;
250
+ overflow-y: auto;
251
+ padding: var(--line-height) calc(var(--line-height) * 2);
252
+ display: flex;
253
+ flex-direction: column;
254
+ align-items: center;
255
+ }
256
+
257
+ #content > * {
258
+ width: 100%;
259
+ max-width: 800px;
260
+ }
261
+
262
+ /* Help bar */
263
+ .help-bar {
264
+ font-size: 11px;
265
+ color: var(--warning);
266
+ margin-bottom: var(--line-height);
267
+ display: flex;
268
+ align-items: center;
269
+ justify-content: space-between;
270
+ flex-wrap: wrap;
271
+ gap: 12px;
272
+ }
273
+
274
+ .help-hint {
275
+ flex: 1 1 240px;
276
+ }
277
+
278
+ .help-actions {
279
+ display: flex;
280
+ align-items: center;
281
+ flex-wrap: wrap;
282
+ gap: 8px;
283
+ }
284
+
285
+ .header-toggle-btn,
286
+ .download-json-btn {
287
+ font-size: 10px;
288
+ padding: 2px 8px;
289
+ background: var(--container-bg);
290
+ border: 1px solid var(--border);
291
+ border-radius: 3px;
292
+ color: var(--text);
293
+ cursor: pointer;
294
+ font-family: inherit;
295
+ }
296
+
297
+ .header-toggle-btn:hover,
298
+ .download-json-btn:hover {
299
+ background: var(--hover);
300
+ border-color: var(--borderAccent);
301
+ }
302
+
303
+ /* Header */
304
+ .header {
305
+ background: var(--container-bg);
306
+ border-radius: 4px;
307
+ padding: var(--line-height);
308
+ margin-bottom: var(--line-height);
309
+ }
310
+
311
+ .header h1 {
312
+ font-size: 12px;
313
+ font-weight: bold;
314
+ color: var(--borderAccent);
315
+ margin-bottom: var(--line-height);
316
+ }
317
+
318
+ .header-info {
319
+ display: flex;
320
+ flex-direction: column;
321
+ gap: 0;
322
+ font-size: 11px;
323
+ }
324
+
325
+ .info-item {
326
+ color: var(--dim);
327
+ display: flex;
328
+ align-items: baseline;
329
+ }
330
+
331
+ .info-label {
332
+ font-weight: 600;
333
+ margin-right: 8px;
334
+ min-width: 100px;
335
+ }
336
+
337
+ .info-value {
338
+ color: var(--text);
339
+ flex: 1;
340
+ }
341
+
342
+ /* Messages */
343
+ #messages {
344
+ display: flex;
345
+ flex-direction: column;
346
+ gap: var(--line-height);
347
+ }
348
+
349
+ .message-timestamp {
350
+ font-size: 10px;
351
+ color: var(--dim);
352
+ opacity: 0.8;
353
+ }
354
+
355
+ .user-message {
356
+ background: var(--userMessageBg);
357
+ color: var(--userMessageText);
358
+ padding: var(--line-height);
359
+ border-radius: 4px;
360
+ position: relative;
361
+ }
362
+
363
+ .assistant-message {
364
+ padding: 0;
365
+ position: relative;
366
+ }
367
+
368
+ /* Copy link button - appears on hover */
369
+ .copy-link-btn {
370
+ position: absolute;
371
+ top: 8px;
372
+ right: 8px;
373
+ width: 28px;
374
+ height: 28px;
375
+ padding: 6px;
376
+ background: var(--container-bg);
377
+ border: 1px solid var(--dim);
378
+ border-radius: 4px;
379
+ color: var(--muted);
380
+ cursor: pointer;
381
+ opacity: 0;
382
+ transition: opacity 0.15s, background 0.15s, color 0.15s;
383
+ display: flex;
384
+ align-items: center;
385
+ justify-content: center;
386
+ z-index: 10;
387
+ }
388
+
389
+ .user-message:hover .copy-link-btn,
390
+ .assistant-message:hover .copy-link-btn,
391
+ .skill-user-entry:hover .copy-link-btn {
392
+ opacity: 1;
393
+ }
394
+
395
+ .copy-link-btn:hover {
396
+ background: var(--accent);
397
+ color: var(--body-bg);
398
+ border-color: var(--accent);
399
+ }
400
+
401
+ .copy-link-btn.copied {
402
+ background: var(--success, #22c55e);
403
+ color: white;
404
+ border-color: var(--success, #22c55e);
405
+ }
406
+
407
+ /* Highlight effect for deep-linked messages */
408
+ .user-message.highlight,
409
+ .assistant-message.highlight {
410
+ animation: highlight-pulse 2s ease-out;
411
+ }
412
+
413
+ @keyframes highlight-pulse {
414
+ 0% {
415
+ box-shadow: 0 0 0 3px var(--accent);
416
+ }
417
+ 100% {
418
+ box-shadow: 0 0 0 0 transparent;
419
+ }
420
+ }
421
+
422
+ .assistant-message > .message-timestamp {
423
+ padding-left: var(--line-height);
424
+ }
425
+
426
+ .assistant-text {
427
+ padding: var(--line-height);
428
+ padding-bottom: 0;
429
+ }
430
+
431
+ .message-timestamp + .assistant-text,
432
+ .message-timestamp + .thinking-block {
433
+ padding-top: 0;
434
+ }
435
+
436
+ .thinking-block + .assistant-text {
437
+ padding-top: 0;
438
+ }
439
+
440
+ .thinking-block .thinking-text {
441
+ display: none;
442
+ padding: var(--line-height);
443
+ color: var(--thinkingText);
444
+ font-style: italic;
445
+ white-space: pre-wrap;
446
+ }
447
+
448
+ .message-timestamp + .thinking-block .thinking-text,
449
+ .message-timestamp + .thinking-block .thinking-collapsed {
450
+ padding-top: 0;
451
+ }
452
+
453
+ .thinking-block .thinking-collapsed {
454
+ display: block;
455
+ padding: var(--line-height);
456
+ color: var(--thinkingText);
457
+ font-style: italic;
458
+ cursor: pointer;
459
+ }
460
+
461
+ .thinking-block.expanded .thinking-text {
462
+ display: block;
463
+ }
464
+
465
+ .thinking-block.expanded .thinking-collapsed {
466
+ display: none;
467
+ }
468
+
469
+ /* Tool execution */
470
+ .tool-execution {
471
+ padding: var(--line-height);
472
+ border-radius: 4px;
473
+ }
474
+
475
+ .tool-execution + .tool-execution {
476
+ margin-top: var(--line-height);
477
+ }
478
+
479
+ .assistant-text + .tool-execution {
480
+ margin-top: var(--line-height);
481
+ }
482
+
483
+ .tool-execution.pending { background: var(--toolPendingBg); }
484
+ .tool-execution.success { background: var(--toolSuccessBg); }
485
+ .tool-execution.error { background: var(--toolErrorBg); }
486
+
487
+ .tool-header, .tool-name {
488
+ font-weight: bold;
489
+ }
490
+
491
+ .tool-path {
492
+ color: var(--accent);
493
+ word-break: break-all;
494
+ }
495
+
496
+ .line-numbers {
497
+ color: var(--warning);
498
+ }
499
+
500
+ .line-count {
501
+ color: var(--dim);
502
+ }
503
+
504
+ .tool-command {
505
+ font-weight: bold;
506
+ white-space: pre-wrap;
507
+ word-wrap: break-word;
508
+ overflow-wrap: break-word;
509
+ word-break: break-word;
510
+ }
511
+
512
+ .tool-output {
513
+ margin-top: var(--line-height);
514
+ color: var(--toolOutput);
515
+ word-wrap: break-word;
516
+ overflow-wrap: break-word;
517
+ word-break: break-word;
518
+ font-family: inherit;
519
+ overflow-x: auto;
520
+ }
521
+
522
+ .tool-output > div,
523
+ .output-preview > div,
524
+ .output-full > div {
525
+ margin: 0;
526
+ padding: 0;
527
+ line-height: var(--line-height);
528
+ }
529
+
530
+ .tool-output > div:not(.output-preview):not(.output-full),
531
+ .output-preview > div:not(.expand-hint),
532
+ .output-full > div:not(.expand-hint) {
533
+ white-space: pre-wrap;
534
+ }
535
+
536
+ .tool-output pre {
537
+ margin: 0;
538
+ padding: 0;
539
+ font-family: inherit;
540
+ color: inherit;
541
+ white-space: pre-wrap;
542
+ word-wrap: break-word;
543
+ overflow-wrap: break-word;
544
+ }
545
+
546
+ .tool-output code {
547
+ padding: 0;
548
+ background: none;
549
+ color: var(--text);
550
+ }
551
+
552
+ .tool-output.expandable {
553
+ cursor: pointer;
554
+ }
555
+
556
+ .tool-output.expandable:hover {
557
+ opacity: 0.9;
558
+ }
559
+
560
+ .tool-output.expandable .output-full {
561
+ display: none;
562
+ }
563
+
564
+ .tool-output.expandable.expanded .output-preview {
565
+ display: none;
566
+ }
567
+
568
+ .tool-output.expandable.expanded .output-full {
569
+ display: block;
570
+ }
571
+
572
+ .ansi-line {
573
+ white-space: pre;
574
+ }
575
+
576
+ .tool-images {
577
+ }
578
+
579
+ .tool-image {
580
+ max-width: 100%;
581
+ max-height: 500px;
582
+ border-radius: 4px;
583
+ margin: var(--line-height) 0;
584
+ }
585
+
586
+ .expand-hint {
587
+ color: var(--toolOutput);
588
+ }
589
+
590
+ /* Diff */
591
+ .tool-diff {
592
+ font-size: 11px;
593
+ overflow-x: auto;
594
+ white-space: pre;
595
+ }
596
+
597
+ .diff-added { color: var(--toolDiffAdded); }
598
+ .diff-removed { color: var(--toolDiffRemoved); }
599
+ .diff-context { color: var(--toolDiffContext); }
600
+
601
+ /* Model change */
602
+ .model-change {
603
+ padding: 0 var(--line-height);
604
+ color: var(--dim);
605
+ font-size: 11px;
606
+ }
607
+
608
+ .model-name {
609
+ color: var(--borderAccent);
610
+ font-weight: bold;
611
+ }
612
+
613
+ /* Compaction / Branch Summary - matches customMessage colors from TUI */
614
+ .compaction {
615
+ background: var(--customMessageBg);
616
+ border-radius: 4px;
617
+ padding: var(--line-height);
618
+ cursor: pointer;
619
+ }
620
+
621
+ .compaction-label {
622
+ color: var(--customMessageLabel);
623
+ font-weight: bold;
624
+ }
625
+
626
+ .compaction-collapsed {
627
+ color: var(--customMessageText);
628
+ }
629
+
630
+ .compaction-content {
631
+ display: none;
632
+ color: var(--customMessageText);
633
+ white-space: pre-wrap;
634
+ margin-top: var(--line-height);
635
+ }
636
+
637
+ .compaction.expanded .compaction-collapsed {
638
+ display: none;
639
+ }
640
+
641
+ .compaction.expanded .compaction-content {
642
+ display: block;
643
+ }
644
+
645
+ /* System prompt */
646
+ .system-prompt {
647
+ background: var(--customMessageBg);
648
+ padding: var(--line-height);
649
+ border-radius: 4px;
650
+ margin-bottom: var(--line-height);
651
+ }
652
+
653
+ .system-prompt.expandable {
654
+ cursor: pointer;
655
+ }
656
+
657
+ .system-prompt-header {
658
+ font-weight: bold;
659
+ color: var(--customMessageLabel);
660
+ }
661
+
662
+ .system-prompt-preview {
663
+ color: var(--customMessageText);
664
+ white-space: pre-wrap;
665
+ word-wrap: break-word;
666
+ font-size: 11px;
667
+ margin-top: var(--line-height);
668
+ }
669
+
670
+ .system-prompt-expand-hint {
671
+ color: var(--muted);
672
+ font-style: italic;
673
+ margin-top: 4px;
674
+ }
675
+
676
+ .system-prompt-full {
677
+ display: none;
678
+ color: var(--customMessageText);
679
+ white-space: pre-wrap;
680
+ word-wrap: break-word;
681
+ font-size: 11px;
682
+ margin-top: var(--line-height);
683
+ }
684
+
685
+ .system-prompt.expanded .system-prompt-preview,
686
+ .system-prompt.expanded .system-prompt-expand-hint {
687
+ display: none;
688
+ }
689
+
690
+ .system-prompt.expanded .system-prompt-full {
691
+ display: block;
692
+ }
693
+
694
+ .system-prompt.provider-prompt {
695
+ border-left: 3px solid var(--warning);
696
+ }
697
+
698
+ .system-prompt-note {
699
+ font-size: 10px;
700
+ font-style: italic;
701
+ color: var(--muted);
702
+ margin-top: 4px;
703
+ }
704
+
705
+ /* Tools list */
706
+ .tools-list {
707
+ background: var(--customMessageBg);
708
+ padding: var(--line-height);
709
+ border-radius: 4px;
710
+ margin-bottom: var(--line-height);
711
+ }
712
+
713
+ .tools-header {
714
+ font-weight: bold;
715
+ color: var(--customMessageLabel);
716
+ margin-bottom: var(--line-height);
717
+ }
718
+
719
+ .tool-item {
720
+ font-size: 11px;
721
+ }
722
+
723
+ .tool-item-name {
724
+ font-weight: bold;
725
+ color: var(--text);
726
+ }
727
+
728
+ .tool-item-desc {
729
+ color: var(--dim);
730
+ }
731
+
732
+ .tool-params-hint {
733
+ color: var(--muted);
734
+ font-style: italic;
735
+ }
736
+
737
+ .tool-item:has(.tool-params-hint) {
738
+ cursor: pointer;
739
+ }
740
+
741
+ .tool-params-hint::after {
742
+ content: '[click to show parameters]';
743
+ }
744
+
745
+ .tool-item.params-expanded .tool-params-hint::after {
746
+ content: '[hide parameters]';
747
+ }
748
+
749
+ .tool-params-content {
750
+ display: none;
751
+ margin-top: 4px;
752
+ margin-left: 12px;
753
+ padding-left: 8px;
754
+ border-left: 1px solid var(--dim);
755
+ }
756
+
757
+ .tool-item.params-expanded .tool-params-content {
758
+ display: block;
759
+ }
760
+
761
+ .tool-param {
762
+ margin-bottom: 4px;
763
+ font-size: 11px;
764
+ }
765
+
766
+ .tool-param-name {
767
+ font-weight: bold;
768
+ color: var(--text);
769
+ }
770
+
771
+ .tool-param-type {
772
+ color: var(--dim);
773
+ font-style: italic;
774
+ }
775
+
776
+ .tool-param-required {
777
+ color: var(--warning, #e8a838);
778
+ font-size: 10px;
779
+ }
780
+
781
+ .tool-param-optional {
782
+ color: var(--dim);
783
+ font-size: 10px;
784
+ }
785
+
786
+ .tool-param-desc {
787
+ color: var(--dim);
788
+ margin-left: 8px;
789
+ }
790
+
791
+ /* Hook/custom messages */
792
+ .hook-message {
793
+ background: var(--customMessageBg);
794
+ color: var(--customMessageText);
795
+ padding: var(--line-height);
796
+ border-radius: 4px;
797
+ }
798
+
799
+ .hook-type {
800
+ color: var(--customMessageLabel);
801
+ font-weight: bold;
802
+ }
803
+
804
+ /* Skill invocation - matches compaction style (clickable, collapsed by default) */
805
+ .skill-invocation {
806
+ background: var(--customMessageBg);
807
+ border-radius: 4px;
808
+ padding: var(--line-height);
809
+ cursor: pointer;
810
+ }
811
+
812
+ .skill-invocation-label {
813
+ color: var(--customMessageLabel);
814
+ font-weight: bold;
815
+ }
816
+
817
+ .skill-invocation-collapsed {
818
+ color: var(--customMessageText);
819
+ }
820
+
821
+ .skill-invocation-content {
822
+ display: none;
823
+ color: var(--customMessageText);
824
+ margin-top: var(--line-height);
825
+ }
826
+
827
+ .skill-invocation.expanded .skill-invocation-collapsed {
828
+ display: none;
829
+ }
830
+
831
+ .skill-invocation.expanded .skill-invocation-content {
832
+ display: block;
833
+ }
834
+
835
+ .skill-invocation + .user-message {
836
+ margin-top: var(--line-height);
837
+ }
838
+
839
+ .skill-user-entry {
840
+ position: relative;
841
+ }
842
+
843
+ /* Branch summary */
844
+ .branch-summary {
845
+ background: var(--customMessageBg);
846
+ padding: var(--line-height);
847
+ border-radius: 4px;
848
+ }
849
+
850
+ .branch-summary-header {
851
+ font-weight: bold;
852
+ color: var(--borderAccent);
853
+ }
854
+
855
+ /* Error */
856
+ .error-text {
857
+ color: var(--error);
858
+ padding: 0 var(--line-height);
859
+ }
860
+ .tool-error {
861
+ color: var(--error);
862
+ }
863
+
864
+ /* Images */
865
+ .message-images {
866
+ margin-bottom: 12px;
867
+ }
868
+
869
+ .message-image {
870
+ max-width: 100%;
871
+ max-height: 400px;
872
+ border-radius: 4px;
873
+ margin: var(--line-height) 0;
874
+ }
875
+
876
+ /* Markdown content */
877
+ .markdown-content h1,
878
+ .markdown-content h2,
879
+ .markdown-content h3,
880
+ .markdown-content h4,
881
+ .markdown-content h5,
882
+ .markdown-content h6 {
883
+ color: var(--mdHeading);
884
+ margin: var(--line-height) 0 0 0;
885
+ font-weight: bold;
886
+ }
887
+
888
+ .markdown-content h1 { font-size: 1em; }
889
+ .markdown-content h2 { font-size: 1em; }
890
+ .markdown-content h3 { font-size: 1em; }
891
+ .markdown-content h4 { font-size: 1em; }
892
+ .markdown-content h5 { font-size: 1em; }
893
+ .markdown-content h6 { font-size: 1em; }
894
+ .markdown-content p { margin: 0; }
895
+ .markdown-content p + p { margin-top: var(--line-height); }
896
+
897
+ .markdown-content a {
898
+ color: var(--mdLink);
899
+ text-decoration: underline;
900
+ }
901
+
902
+ .markdown-content code {
903
+ background: rgba(128, 128, 128, 0.2);
904
+ color: var(--mdCode);
905
+ padding: 0 4px;
906
+ border-radius: 3px;
907
+ font-family: inherit;
908
+ }
909
+
910
+ .markdown-content pre {
911
+ background: transparent;
912
+ margin: var(--line-height) 0;
913
+ overflow-x: auto;
914
+ }
915
+
916
+ .markdown-content pre code {
917
+ display: block;
918
+ background: none;
919
+ color: var(--text);
920
+ }
921
+
922
+ .markdown-content blockquote {
923
+ border-left: 3px solid var(--mdQuoteBorder);
924
+ padding-left: var(--line-height);
925
+ margin: var(--line-height) 0;
926
+ color: var(--mdQuote);
927
+ font-style: italic;
928
+ }
929
+
930
+ .markdown-content ul,
931
+ .markdown-content ol {
932
+ margin: var(--line-height) 0;
933
+ padding-left: calc(var(--line-height) * 2);
934
+ }
935
+
936
+ .markdown-content li { margin: 0; }
937
+ .markdown-content li::marker { color: var(--mdListBullet); }
938
+
939
+ .markdown-content hr {
940
+ border: none;
941
+ border-top: 1px solid var(--mdHr);
942
+ margin: var(--line-height) 0;
943
+ }
944
+
945
+ .markdown-content table {
946
+ border-collapse: collapse;
947
+ margin: 0.5em 0;
948
+ width: 100%;
949
+ }
950
+
951
+ .markdown-content th,
952
+ .markdown-content td {
953
+ border: 1px solid var(--mdCodeBlockBorder);
954
+ padding: 6px 10px;
955
+ text-align: left;
956
+ }
957
+
958
+ .markdown-content th {
959
+ background: rgba(128, 128, 128, 0.1);
960
+ font-weight: bold;
961
+ }
962
+
963
+ .markdown-content img {
964
+ max-width: 100%;
965
+ border-radius: 4px;
966
+ }
967
+
968
+ /* Syntax highlighting */
969
+ .hljs { background: transparent; color: var(--text); }
970
+ .hljs-comment, .hljs-quote { color: var(--syntaxComment); }
971
+ .hljs-keyword, .hljs-selector-tag { color: var(--syntaxKeyword); }
972
+ .hljs-number, .hljs-literal { color: var(--syntaxNumber); }
973
+ .hljs-string, .hljs-doctag { color: var(--syntaxString); }
974
+ /* Function names: hljs v11 uses .hljs-title.function_ compound class */
975
+ .hljs-function, .hljs-title, .hljs-title.function_, .hljs-section, .hljs-name { color: var(--syntaxFunction); }
976
+ /* Types: hljs v11 uses .hljs-title.class_ for class names */
977
+ .hljs-type, .hljs-class, .hljs-title.class_, .hljs-built_in { color: var(--syntaxType); }
978
+ .hljs-attr, .hljs-variable, .hljs-variable.language_, .hljs-params, .hljs-property { color: var(--syntaxVariable); }
979
+ .hljs-meta, .hljs-meta .hljs-keyword, .hljs-meta .hljs-string { color: var(--syntaxKeyword); }
980
+ .hljs-operator { color: var(--syntaxOperator); }
981
+ .hljs-punctuation { color: var(--syntaxPunctuation); }
982
+ .hljs-subst { color: var(--text); }
983
+
984
+ /* Footer */
985
+ .footer {
986
+ margin-top: 48px;
987
+ padding: 20px;
988
+ text-align: center;
989
+ color: var(--dim);
990
+ font-size: 10px;
991
+ }
992
+
993
+ /* Mobile */
994
+ #hamburger {
995
+ display: none;
996
+ position: fixed;
997
+ top: 10px;
998
+ left: 10px;
999
+ z-index: 100;
1000
+ padding: 3px 8px;
1001
+ font-size: 12px;
1002
+ font-family: inherit;
1003
+ background: transparent;
1004
+ color: var(--muted);
1005
+ border: 1px solid var(--dim);
1006
+ border-radius: 3px;
1007
+ cursor: pointer;
1008
+ }
1009
+
1010
+ #hamburger:hover {
1011
+ color: var(--text);
1012
+ border-color: var(--text);
1013
+ }
1014
+
1015
+
1016
+
1017
+ #sidebar-overlay {
1018
+ display: none;
1019
+ position: fixed;
1020
+ top: 0;
1021
+ left: 0;
1022
+ right: 0;
1023
+ bottom: 0;
1024
+ background: rgba(0, 0, 0, 0.5);
1025
+ z-index: 98;
1026
+ }
1027
+
1028
+ @media (max-width: 900px) {
1029
+ #sidebar {
1030
+ position: fixed;
1031
+ left: 0;
1032
+ width: min(var(--sidebar-width), 100vw);
1033
+ min-width: min(var(--sidebar-width), 100vw);
1034
+ max-width: min(var(--sidebar-width), 100vw);
1035
+ top: 0;
1036
+ bottom: 0;
1037
+ height: 100vh;
1038
+ z-index: 99;
1039
+ transform: translateX(-100%);
1040
+ transition: transform 0.3s;
1041
+ }
1042
+
1043
+ #sidebar.open {
1044
+ transform: translateX(0);
1045
+ }
1046
+
1047
+ #sidebar-resizer {
1048
+ display: none;
1049
+ }
1050
+
1051
+ #sidebar-overlay.open {
1052
+ display: block;
1053
+ }
1054
+
1055
+ #hamburger {
1056
+ display: block;
1057
+ }
1058
+
1059
+ .sidebar-close {
1060
+ display: block;
1061
+ }
1062
+
1063
+ #content {
1064
+ padding: var(--line-height) 16px;
1065
+ }
1066
+
1067
+ #content > * {
1068
+ max-width: 100%;
1069
+ }
1070
+ }
1071
+
1072
+ @media print {
1073
+ #sidebar, #sidebar-resizer, #sidebar-toggle { display: none !important; }
1074
+ body { background: white; color: black; }
1075
+ #content { max-width: none; }
1076
+ }