pi-plus-sdk 0.0.0-stage → 0.1.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.
@@ -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-toggle-btn[aria-pressed="true"] {
304
+ color: var(--accent);
305
+ border-color: var(--accent);
306
+ font-weight: bold;
307
+ }
308
+
309
+ /* Header */
310
+ .header {
311
+ background: var(--container-bg);
312
+ border-radius: 4px;
313
+ padding: var(--line-height);
314
+ margin-bottom: var(--line-height);
315
+ }
316
+
317
+ .header h1 {
318
+ font-size: 12px;
319
+ font-weight: bold;
320
+ color: var(--borderAccent);
321
+ margin-bottom: var(--line-height);
322
+ }
323
+
324
+ .header-info {
325
+ display: flex;
326
+ flex-direction: column;
327
+ gap: 0;
328
+ font-size: 11px;
329
+ }
330
+
331
+ .info-item {
332
+ color: var(--dim);
333
+ display: flex;
334
+ align-items: baseline;
335
+ }
336
+
337
+ .info-label {
338
+ font-weight: 600;
339
+ margin-right: 8px;
340
+ min-width: 100px;
341
+ }
342
+
343
+ .info-value {
344
+ color: var(--text);
345
+ flex: 1;
346
+ }
347
+
348
+ /* Messages */
349
+ #messages {
350
+ display: flex;
351
+ flex-direction: column;
352
+ gap: var(--line-height);
353
+ }
354
+
355
+ .message-timestamp {
356
+ font-size: 10px;
357
+ color: var(--dim);
358
+ opacity: 0.8;
359
+ }
360
+
361
+ .user-message {
362
+ background: var(--userMessageBg);
363
+ color: var(--userMessageText);
364
+ padding: var(--line-height);
365
+ border-radius: 4px;
366
+ position: relative;
367
+ }
368
+
369
+ .assistant-message {
370
+ padding: 0;
371
+ position: relative;
372
+ }
373
+
374
+ /* Copy link button - appears on hover */
375
+ .copy-link-btn {
376
+ position: absolute;
377
+ top: 8px;
378
+ right: 8px;
379
+ width: 28px;
380
+ height: 28px;
381
+ padding: 6px;
382
+ background: var(--container-bg);
383
+ border: 1px solid var(--dim);
384
+ border-radius: 4px;
385
+ color: var(--muted);
386
+ cursor: pointer;
387
+ opacity: 0;
388
+ transition: opacity 0.15s, background 0.15s, color 0.15s;
389
+ display: flex;
390
+ align-items: center;
391
+ justify-content: center;
392
+ z-index: 10;
393
+ }
394
+
395
+ .user-message:hover .copy-link-btn,
396
+ .assistant-message:hover .copy-link-btn,
397
+ .skill-user-entry:hover .copy-link-btn {
398
+ opacity: 1;
399
+ }
400
+
401
+ .copy-link-btn:hover {
402
+ background: var(--accent);
403
+ color: var(--body-bg);
404
+ border-color: var(--accent);
405
+ }
406
+
407
+ .copy-link-btn.copied {
408
+ background: var(--success, #22c55e);
409
+ color: white;
410
+ border-color: var(--success, #22c55e);
411
+ }
412
+
413
+ /* Highlight effect for deep-linked messages */
414
+ .user-message.highlight,
415
+ .assistant-message.highlight {
416
+ animation: highlight-pulse 2s ease-out;
417
+ }
418
+
419
+ @keyframes highlight-pulse {
420
+ 0% {
421
+ box-shadow: 0 0 0 3px var(--accent);
422
+ }
423
+ 100% {
424
+ box-shadow: 0 0 0 0 transparent;
425
+ }
426
+ }
427
+
428
+ .assistant-message > .message-timestamp {
429
+ padding-left: var(--line-height);
430
+ }
431
+
432
+ .assistant-text {
433
+ padding: var(--line-height);
434
+ padding-bottom: 0;
435
+ }
436
+
437
+ .message-timestamp + .assistant-text,
438
+ .message-timestamp + .thinking-block {
439
+ padding-top: 0;
440
+ }
441
+
442
+ .thinking-block + .assistant-text {
443
+ padding-top: 0;
444
+ }
445
+
446
+ .thinking-text {
447
+ padding: var(--line-height);
448
+ color: var(--thinkingText);
449
+ font-style: italic;
450
+ white-space: pre-wrap;
451
+ }
452
+
453
+ .message-timestamp + .thinking-block .thinking-text,
454
+ .message-timestamp + .thinking-block .thinking-collapsed {
455
+ padding-top: 0;
456
+ }
457
+
458
+ .thinking-collapsed {
459
+ display: none;
460
+ padding: var(--line-height);
461
+ color: var(--thinkingText);
462
+ font-style: italic;
463
+ }
464
+
465
+ /* Tool execution */
466
+ .tool-execution {
467
+ padding: var(--line-height);
468
+ border-radius: 4px;
469
+ }
470
+
471
+ .tool-execution + .tool-execution {
472
+ margin-top: var(--line-height);
473
+ }
474
+
475
+ .assistant-text + .tool-execution {
476
+ margin-top: var(--line-height);
477
+ }
478
+
479
+ .tool-execution.pending { background: var(--toolPendingBg); }
480
+ .tool-execution.success { background: var(--toolSuccessBg); }
481
+ .tool-execution.error { background: var(--toolErrorBg); }
482
+
483
+ .tool-header, .tool-name {
484
+ font-weight: bold;
485
+ }
486
+
487
+ .tool-path {
488
+ color: var(--accent);
489
+ word-break: break-all;
490
+ }
491
+
492
+ .line-numbers {
493
+ color: var(--warning);
494
+ }
495
+
496
+ .line-count {
497
+ color: var(--dim);
498
+ }
499
+
500
+ .tool-command {
501
+ font-weight: bold;
502
+ white-space: pre-wrap;
503
+ word-wrap: break-word;
504
+ overflow-wrap: break-word;
505
+ word-break: break-word;
506
+ }
507
+
508
+ .tool-output {
509
+ margin-top: var(--line-height);
510
+ color: var(--toolOutput);
511
+ word-wrap: break-word;
512
+ overflow-wrap: break-word;
513
+ word-break: break-word;
514
+ font-family: inherit;
515
+ overflow-x: auto;
516
+ }
517
+
518
+ .tool-output > div,
519
+ .output-preview > div,
520
+ .output-full > div {
521
+ margin: 0;
522
+ padding: 0;
523
+ line-height: var(--line-height);
524
+ }
525
+
526
+ .tool-output > div:not(.output-preview):not(.output-full),
527
+ .output-preview > div:not(.expand-hint),
528
+ .output-full > div:not(.expand-hint) {
529
+ white-space: pre-wrap;
530
+ }
531
+
532
+ .tool-output pre {
533
+ margin: 0;
534
+ padding: 0;
535
+ font-family: inherit;
536
+ color: inherit;
537
+ white-space: pre-wrap;
538
+ word-wrap: break-word;
539
+ overflow-wrap: break-word;
540
+ }
541
+
542
+ .tool-output code {
543
+ padding: 0;
544
+ background: none;
545
+ color: var(--text);
546
+ }
547
+
548
+ .tool-output.expandable {
549
+ cursor: pointer;
550
+ }
551
+
552
+ .tool-output.expandable:hover {
553
+ opacity: 0.9;
554
+ }
555
+
556
+ .tool-output.expandable .output-full {
557
+ display: none;
558
+ }
559
+
560
+ .tool-output.expandable.expanded .output-preview {
561
+ display: none;
562
+ }
563
+
564
+ .tool-output.expandable.expanded .output-full {
565
+ display: block;
566
+ }
567
+
568
+ .ansi-line {
569
+ white-space: pre;
570
+ }
571
+
572
+ .tool-images {
573
+ }
574
+
575
+ .tool-image {
576
+ max-width: 100%;
577
+ max-height: 500px;
578
+ border-radius: 4px;
579
+ margin: var(--line-height) 0;
580
+ }
581
+
582
+ .expand-hint {
583
+ color: var(--toolOutput);
584
+ }
585
+
586
+ /* Diff */
587
+ .tool-diff {
588
+ font-size: 11px;
589
+ overflow-x: auto;
590
+ white-space: pre;
591
+ }
592
+
593
+ .diff-added { color: var(--toolDiffAdded); }
594
+ .diff-removed { color: var(--toolDiffRemoved); }
595
+ .diff-context { color: var(--toolDiffContext); }
596
+
597
+ /* Model change */
598
+ .model-change {
599
+ padding: 0 var(--line-height);
600
+ color: var(--dim);
601
+ font-size: 11px;
602
+ }
603
+
604
+ .model-name {
605
+ color: var(--borderAccent);
606
+ font-weight: bold;
607
+ }
608
+
609
+ /* Compaction / Branch Summary - matches customMessage colors from TUI */
610
+ .compaction {
611
+ background: var(--customMessageBg);
612
+ border-radius: 4px;
613
+ padding: var(--line-height);
614
+ cursor: pointer;
615
+ }
616
+
617
+ .compaction-label {
618
+ color: var(--customMessageLabel);
619
+ font-weight: bold;
620
+ }
621
+
622
+ .compaction-collapsed {
623
+ color: var(--customMessageText);
624
+ }
625
+
626
+ .compaction-content {
627
+ display: none;
628
+ color: var(--customMessageText);
629
+ white-space: pre-wrap;
630
+ margin-top: var(--line-height);
631
+ }
632
+
633
+ .compaction.expanded .compaction-collapsed {
634
+ display: none;
635
+ }
636
+
637
+ .compaction.expanded .compaction-content {
638
+ display: block;
639
+ }
640
+
641
+ /* System prompt */
642
+ .system-prompt {
643
+ background: var(--customMessageBg);
644
+ padding: var(--line-height);
645
+ border-radius: 4px;
646
+ margin-bottom: var(--line-height);
647
+ }
648
+
649
+ .system-prompt.expandable {
650
+ cursor: pointer;
651
+ }
652
+
653
+ .system-prompt-header {
654
+ font-weight: bold;
655
+ color: var(--customMessageLabel);
656
+ }
657
+
658
+ .system-prompt-preview {
659
+ color: var(--customMessageText);
660
+ white-space: pre-wrap;
661
+ word-wrap: break-word;
662
+ font-size: 11px;
663
+ margin-top: var(--line-height);
664
+ }
665
+
666
+ .system-prompt-expand-hint {
667
+ color: var(--muted);
668
+ font-style: italic;
669
+ margin-top: 4px;
670
+ }
671
+
672
+ .system-prompt-full {
673
+ display: none;
674
+ color: var(--customMessageText);
675
+ white-space: pre-wrap;
676
+ word-wrap: break-word;
677
+ font-size: 11px;
678
+ margin-top: var(--line-height);
679
+ }
680
+
681
+ .system-prompt.expanded .system-prompt-preview,
682
+ .system-prompt.expanded .system-prompt-expand-hint {
683
+ display: none;
684
+ }
685
+
686
+ .system-prompt.expanded .system-prompt-full {
687
+ display: block;
688
+ }
689
+
690
+ .system-prompt.provider-prompt {
691
+ border-left: 3px solid var(--warning);
692
+ }
693
+
694
+ .system-prompt-note {
695
+ font-size: 10px;
696
+ font-style: italic;
697
+ color: var(--muted);
698
+ margin-top: 4px;
699
+ }
700
+
701
+ /* Tools list */
702
+ .tools-list {
703
+ background: var(--customMessageBg);
704
+ padding: var(--line-height);
705
+ border-radius: 4px;
706
+ margin-bottom: var(--line-height);
707
+ }
708
+
709
+ .tools-header {
710
+ font-weight: bold;
711
+ color: var(--customMessageLabel);
712
+ margin-bottom: var(--line-height);
713
+ }
714
+
715
+ .tool-item {
716
+ font-size: 11px;
717
+ }
718
+
719
+ .tool-item-name {
720
+ font-weight: bold;
721
+ color: var(--text);
722
+ }
723
+
724
+ .tool-item-desc {
725
+ color: var(--dim);
726
+ }
727
+
728
+ .tool-params-hint {
729
+ color: var(--muted);
730
+ font-style: italic;
731
+ }
732
+
733
+ .tool-item:has(.tool-params-hint) {
734
+ cursor: pointer;
735
+ }
736
+
737
+ .tool-params-hint::after {
738
+ content: '[click to show parameters]';
739
+ }
740
+
741
+ .tool-item.params-expanded .tool-params-hint::after {
742
+ content: '[hide parameters]';
743
+ }
744
+
745
+ .tool-params-content {
746
+ display: none;
747
+ margin-top: 4px;
748
+ margin-left: 12px;
749
+ padding-left: 8px;
750
+ border-left: 1px solid var(--dim);
751
+ }
752
+
753
+ .tool-item.params-expanded .tool-params-content {
754
+ display: block;
755
+ }
756
+
757
+ .tool-param {
758
+ margin-bottom: 4px;
759
+ font-size: 11px;
760
+ }
761
+
762
+ .tool-param-name {
763
+ font-weight: bold;
764
+ color: var(--text);
765
+ }
766
+
767
+ .tool-param-type {
768
+ color: var(--dim);
769
+ font-style: italic;
770
+ }
771
+
772
+ .tool-param-required {
773
+ color: var(--warning, #e8a838);
774
+ font-size: 10px;
775
+ }
776
+
777
+ .tool-param-optional {
778
+ color: var(--dim);
779
+ font-size: 10px;
780
+ }
781
+
782
+ .tool-param-desc {
783
+ color: var(--dim);
784
+ margin-left: 8px;
785
+ }
786
+
787
+ /* Hook/custom messages */
788
+ .hook-message {
789
+ background: var(--customMessageBg);
790
+ color: var(--customMessageText);
791
+ padding: var(--line-height);
792
+ border-radius: 4px;
793
+ }
794
+
795
+ body:not(.show-hidden-messages) .hook-message-hidden {
796
+ display: none;
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
+ }