@limcpf/everything-is-a-markdown 0.1.1

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,1254 @@
1
+ /* Catppuccin Latte Theme */
2
+ :root {
3
+ --latte-base: #eff1f5;
4
+ --latte-mantle: #e6e9ef;
5
+ --latte-crust: #dce0e8;
6
+ --latte-text: #4c4f69;
7
+ --latte-subtext0: #6c6f85;
8
+ --latte-subtext1: #5c5f77;
9
+ --latte-overlay0: #9ca0b0;
10
+ --latte-surface0: #ccd0da;
11
+ --latte-surface1: #bcc0cc;
12
+ --latte-surface2: #acb0be;
13
+ --latte-rosewater: #dc8a78;
14
+ --latte-flamingo: #dd7878;
15
+ --latte-pink: #ea76cb;
16
+ --latte-mauve: #8839ef;
17
+ --latte-red: #d20f39;
18
+ --latte-maroon: #e64553;
19
+ --latte-peach: #fe640b;
20
+ --latte-yellow: #df8e1d;
21
+ --latte-green: #40a02b;
22
+ --latte-teal: #179299;
23
+ --latte-sky: #04a5e5;
24
+ --latte-sapphire: #209fb5;
25
+ --latte-blue: #1e66f5;
26
+ --latte-lavender: #7287fd;
27
+ --mocha-base: #1e1e2e;
28
+ --mocha-mantle: #181825;
29
+ --mocha-crust: #11111b;
30
+ --mocha-text: #cdd6f4;
31
+ --mocha-subtext0: #a6adc8;
32
+ --mocha-subtext1: #bac2de;
33
+ --mocha-overlay0: #6c7086;
34
+ --mocha-surface0: #313244;
35
+ --mocha-surface1: #45475a;
36
+ --mocha-surface2: #585b70;
37
+ --mocha-rosewater: #f5e0dc;
38
+ --mocha-flamingo: #f2cdcd;
39
+ --mocha-pink: #f5c2e7;
40
+ --mocha-mauve: #cba6f7;
41
+ --mocha-red: #f38ba8;
42
+ --mocha-maroon: #eba0ac;
43
+ --mocha-peach: #fab387;
44
+ --mocha-yellow: #f9e2af;
45
+ --mocha-green: #a6e3a1;
46
+ --mocha-teal: #94e2d5;
47
+ --mocha-sky: #89dceb;
48
+ --mocha-sapphire: #74c7ec;
49
+ --mocha-blue: #89b4fa;
50
+ --mocha-lavender: #b4befe;
51
+ --overlay-backdrop: rgba(76, 79, 105, 0.4);
52
+ --elevated-surface: rgba(255, 255, 255, 0.64);
53
+ --elevated-surface-strong: rgba(255, 255, 255, 0.68);
54
+ --elevated-surface-hover: rgba(255, 255, 255, 0.92);
55
+ --elevated-inset-shadow: rgba(255, 255, 255, 0.8);
56
+ --active-surface-bg: #ffffff;
57
+ --tooltip-bg: rgba(76, 79, 105, 0.96);
58
+ --tooltip-text: #ffffff;
59
+ --panel-shadow: 0 14px 32px rgba(76, 79, 105, 0.18);
60
+ --sidebar-mobile-shadow: 0 24px 48px rgba(76, 79, 105, 0.2);
61
+ --accent-hover: #7030d0;
62
+ --accent-strong: #6732ca;
63
+ --desktop-sidebar-default: 420px;
64
+ --desktop-sidebar-min: 320px;
65
+ --desktop-viewer-min: 680px;
66
+ --splitter-width: 10px;
67
+ }
68
+
69
+ :root[data-theme="dark"] {
70
+ --latte-base: var(--mocha-base);
71
+ --latte-mantle: var(--mocha-mantle);
72
+ --latte-crust: var(--mocha-crust);
73
+ --latte-text: var(--mocha-text);
74
+ --latte-subtext0: var(--mocha-subtext0);
75
+ --latte-subtext1: var(--mocha-subtext1);
76
+ --latte-overlay0: var(--mocha-overlay0);
77
+ --latte-surface0: var(--mocha-surface0);
78
+ --latte-surface1: var(--mocha-surface1);
79
+ --latte-surface2: var(--mocha-surface2);
80
+ --latte-rosewater: var(--mocha-rosewater);
81
+ --latte-flamingo: var(--mocha-flamingo);
82
+ --latte-pink: var(--mocha-pink);
83
+ --latte-mauve: var(--mocha-mauve);
84
+ --latte-red: var(--mocha-red);
85
+ --latte-maroon: var(--mocha-maroon);
86
+ --latte-peach: var(--mocha-peach);
87
+ --latte-yellow: var(--mocha-yellow);
88
+ --latte-green: var(--mocha-green);
89
+ --latte-teal: var(--mocha-teal);
90
+ --latte-sky: var(--mocha-sky);
91
+ --latte-sapphire: var(--mocha-sapphire);
92
+ --latte-blue: var(--mocha-blue);
93
+ --latte-lavender: var(--mocha-lavender);
94
+ --overlay-backdrop: rgba(17, 17, 27, 0.6);
95
+ --elevated-surface: rgba(49, 50, 68, 0.72);
96
+ --elevated-surface-strong: rgba(69, 71, 90, 0.74);
97
+ --elevated-surface-hover: rgba(88, 91, 112, 0.78);
98
+ --elevated-inset-shadow: rgba(205, 214, 244, 0.14);
99
+ --active-surface-bg: rgba(69, 71, 90, 0.52);
100
+ --tooltip-bg: rgba(17, 17, 27, 0.95);
101
+ --tooltip-text: var(--mocha-text);
102
+ --panel-shadow: 0 14px 32px rgba(0, 0, 0, 0.42);
103
+ --sidebar-mobile-shadow: 0 24px 48px rgba(0, 0, 0, 0.45);
104
+ --accent-hover: #a985f6;
105
+ --accent-strong: #dfcbff;
106
+ }
107
+
108
+ * {
109
+ box-sizing: border-box;
110
+ }
111
+
112
+ html,
113
+ body {
114
+ margin: 0;
115
+ padding: 0;
116
+ width: 100%;
117
+ height: 100%;
118
+ -webkit-text-size-adjust: 100%;
119
+ }
120
+
121
+ body {
122
+ background: var(--latte-base);
123
+ color: var(--latte-text);
124
+ font-family: "Inter", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", -apple-system, BlinkMacSystemFont, sans-serif;
125
+ -webkit-font-smoothing: antialiased;
126
+ overflow: hidden;
127
+ }
128
+
129
+ body.menu-open {
130
+ overflow: hidden;
131
+ }
132
+
133
+ ::-webkit-scrollbar {
134
+ width: 8px;
135
+ height: 8px;
136
+ }
137
+
138
+ ::-webkit-scrollbar-track {
139
+ background: var(--latte-mantle);
140
+ }
141
+
142
+ ::-webkit-scrollbar-thumb {
143
+ background: var(--latte-surface0);
144
+ border-radius: 4px;
145
+ }
146
+
147
+ ::-webkit-scrollbar-thumb:hover {
148
+ background: var(--latte-surface1);
149
+ }
150
+
151
+ a {
152
+ color: var(--latte-blue);
153
+ text-decoration: none;
154
+ }
155
+
156
+ a:hover {
157
+ text-decoration: underline;
158
+ }
159
+
160
+ .material-symbols-outlined {
161
+ font-size: 20px;
162
+ line-height: 1;
163
+ vertical-align: middle;
164
+ }
165
+
166
+ /* Layout */
167
+ .app-root {
168
+ --sidebar-width: var(--desktop-sidebar-default);
169
+ display: grid;
170
+ grid-template-columns:
171
+ minmax(var(--desktop-sidebar-min), var(--sidebar-width))
172
+ var(--splitter-width)
173
+ minmax(var(--desktop-viewer-min), 1fr);
174
+ height: 100vh;
175
+ width: 100vw;
176
+ }
177
+
178
+ .app-root.is-resizing,
179
+ .app-root.is-resizing * {
180
+ cursor: col-resize !important;
181
+ user-select: none;
182
+ }
183
+
184
+ .app-splitter {
185
+ position: relative;
186
+ width: var(--splitter-width);
187
+ background: transparent;
188
+ border: 0;
189
+ cursor: col-resize;
190
+ touch-action: none;
191
+ }
192
+
193
+ .app-splitter::before {
194
+ content: "";
195
+ position: absolute;
196
+ top: 0;
197
+ bottom: 0;
198
+ left: 50%;
199
+ width: 1px;
200
+ transform: translateX(-0.5px);
201
+ background: var(--latte-surface0);
202
+ }
203
+
204
+ .app-splitter::after {
205
+ content: "";
206
+ position: absolute;
207
+ top: 0;
208
+ bottom: 0;
209
+ left: 50%;
210
+ width: 4px;
211
+ transform: translateX(-2px);
212
+ background: transparent;
213
+ transition: background 0.15s ease;
214
+ }
215
+
216
+ .app-splitter:hover::after,
217
+ .app-splitter:focus-visible::after,
218
+ .app-root.is-resizing .app-splitter::after {
219
+ background: rgba(30, 102, 245, 0.22);
220
+ }
221
+
222
+ .app-splitter:focus-visible {
223
+ outline: none;
224
+ }
225
+
226
+ /* Sidebar */
227
+ .sidebar {
228
+ background: var(--latte-mantle);
229
+ border-right: 0;
230
+ display: flex;
231
+ flex-direction: column;
232
+ overflow: hidden;
233
+ }
234
+
235
+ .sidebar-overlay {
236
+ position: fixed;
237
+ inset: 0;
238
+ background: var(--overlay-backdrop);
239
+ backdrop-filter: blur(1.5px);
240
+ z-index: 80;
241
+ }
242
+
243
+ .sidebar-overlay[hidden] {
244
+ display: none;
245
+ }
246
+
247
+ .sidebar-header {
248
+ position: relative;
249
+ padding: 24px 20px;
250
+ border-bottom: 1px solid var(--latte-surface0);
251
+ }
252
+
253
+ .sidebar-close {
254
+ display: none;
255
+ position: absolute;
256
+ top: 18px;
257
+ right: 14px;
258
+ width: 36px;
259
+ height: 36px;
260
+ border: 1px solid var(--latte-surface0);
261
+ background: var(--latte-base);
262
+ color: var(--latte-subtext1);
263
+ border-radius: 8px;
264
+ cursor: pointer;
265
+ align-items: center;
266
+ justify-content: center;
267
+ }
268
+
269
+ .sidebar-close:hover {
270
+ color: var(--latte-text);
271
+ }
272
+
273
+ .sidebar-title {
274
+ margin: 0;
275
+ font-size: 1.1rem;
276
+ font-weight: 700;
277
+ letter-spacing: -0.02em;
278
+ display: flex;
279
+ align-items: center;
280
+ gap: 8px;
281
+ }
282
+
283
+ .icon-terminal {
284
+ color: var(--latte-mauve);
285
+ font-size: 20px;
286
+ }
287
+
288
+ .sidebar-branch {
289
+ display: grid;
290
+ grid-template-columns: auto 1fr;
291
+ align-items: center;
292
+ column-gap: 8px;
293
+ row-gap: 10px;
294
+ margin-top: 12px;
295
+ }
296
+
297
+ .branch-badge {
298
+ display: inline-flex;
299
+ align-items: center;
300
+ gap: 5px;
301
+ padding: 6px 12px;
302
+ font-size: 0.8rem;
303
+ font-weight: 650;
304
+ line-height: 1;
305
+ background: var(--elevated-surface);
306
+ border: 1px solid var(--latte-surface1);
307
+ border-radius: 999px;
308
+ color: var(--latte-subtext0);
309
+ box-shadow: 0 1px 0 var(--elevated-inset-shadow) inset;
310
+ }
311
+
312
+ .icon-branch {
313
+ font-size: 13px;
314
+ color: var(--latte-overlay0);
315
+ }
316
+
317
+ .branch-info {
318
+ grid-column: 1 / -1;
319
+ display: block;
320
+ font-size: 0.75rem;
321
+ color: var(--latte-overlay0);
322
+ }
323
+
324
+ .branch-pills {
325
+ display: flex;
326
+ flex-wrap: wrap;
327
+ align-items: center;
328
+ gap: 8px;
329
+ min-width: 0;
330
+ }
331
+
332
+ .branch-pill {
333
+ border: 1px solid var(--latte-surface1);
334
+ border-radius: 999px;
335
+ background: var(--elevated-surface-strong);
336
+ color: var(--latte-subtext1);
337
+ font-size: 0.8rem;
338
+ font-weight: 700;
339
+ line-height: 1.15;
340
+ letter-spacing: 0.01em;
341
+ padding: 7px 14px;
342
+ cursor: pointer;
343
+ white-space: nowrap;
344
+ box-shadow: 0 1px 0 var(--elevated-inset-shadow) inset;
345
+ transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease, color 0.15s ease, transform 0.12s ease;
346
+ }
347
+
348
+ .branch-pill:hover {
349
+ border-color: var(--latte-surface2);
350
+ background-color: var(--elevated-surface-hover);
351
+ color: var(--latte-text);
352
+ transform: translateY(-1px);
353
+ }
354
+
355
+ .branch-pill:focus-visible {
356
+ outline: 2px solid var(--latte-blue);
357
+ outline-offset: 1px;
358
+ }
359
+
360
+ .branch-pill.is-active {
361
+ border-color: rgba(136, 57, 239, 0.45);
362
+ background: rgba(136, 57, 239, 0.14);
363
+ color: var(--accent-strong);
364
+ box-shadow: 0 1px 0 var(--elevated-inset-shadow) inset, 0 2px 6px rgba(136, 57, 239, 0.22);
365
+ }
366
+
367
+ /* Tree */
368
+ .tree-root {
369
+ flex: 1;
370
+ overflow-y: auto;
371
+ padding: 16px 12px 24px;
372
+ }
373
+
374
+ .tree-folder {
375
+ margin-bottom: 2px;
376
+ --tree-depth: 0;
377
+ }
378
+
379
+ .tree-children {
380
+ --tree-indent-step: clamp(6px, calc(12px - (var(--tree-depth, 0) * 1px)), 12px);
381
+ margin-left: var(--tree-indent-step);
382
+ padding-left: calc(var(--tree-indent-step) + 1px);
383
+ border-left: 1px solid var(--latte-surface0);
384
+ }
385
+
386
+ .tree-row {
387
+ width: 100%;
388
+ border: 0;
389
+ background: transparent;
390
+ display: flex;
391
+ align-items: center;
392
+ gap: 8px;
393
+ justify-content: flex-start;
394
+ text-align: left;
395
+ min-height: 38px;
396
+ padding: 6px 12px;
397
+ text-decoration: none;
398
+ color: var(--latte-subtext1);
399
+ cursor: pointer;
400
+ font-size: 0.9rem;
401
+ border-radius: 6px;
402
+ transition: all 0.15s ease;
403
+ }
404
+
405
+ .tree-row:hover {
406
+ background: rgba(204, 208, 218, 0.5);
407
+ color: var(--latte-text);
408
+ }
409
+
410
+ .tree-row:focus-visible {
411
+ outline: 2px solid var(--latte-blue);
412
+ outline-offset: 1px;
413
+ }
414
+
415
+ .tree-folder-row {
416
+ font-weight: 500;
417
+ }
418
+
419
+ .tree-folder-row .material-symbols-outlined {
420
+ color: var(--latte-blue);
421
+ }
422
+
423
+ .tree-folder.virtual > .tree-folder-row .material-symbols-outlined {
424
+ color: var(--latte-teal);
425
+ }
426
+
427
+ .tree-file-row .material-symbols-outlined {
428
+ color: var(--latte-overlay0);
429
+ }
430
+
431
+ .tree-label {
432
+ flex: 1;
433
+ overflow: hidden;
434
+ text-overflow: ellipsis;
435
+ white-space: nowrap;
436
+ }
437
+
438
+ .tree-label-tooltip {
439
+ position: fixed;
440
+ z-index: 140;
441
+ pointer-events: none;
442
+ max-width: min(440px, calc(100vw - 24px));
443
+ padding: 6px 10px;
444
+ border-radius: 8px;
445
+ background: var(--tooltip-bg);
446
+ color: var(--tooltip-text);
447
+ font-size: 0.75rem;
448
+ line-height: 1.4;
449
+ box-shadow: 0 10px 24px rgba(76, 79, 105, 0.24);
450
+ }
451
+
452
+ .tree-label-tooltip[hidden] {
453
+ display: none;
454
+ }
455
+
456
+ /* Active file state */
457
+ .tree-file-row.is-active {
458
+ background: var(--active-surface-bg);
459
+ color: var(--latte-text);
460
+ font-weight: 500;
461
+ border: 1px solid var(--latte-surface0);
462
+ border-left: 4px solid var(--latte-mauve);
463
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
464
+ padding-left: 8px;
465
+ }
466
+
467
+ .tree-file-row.is-active .material-symbols-outlined {
468
+ color: var(--latte-mauve);
469
+ }
470
+
471
+ /* NEW badge */
472
+ .badge-new {
473
+ margin-left: auto;
474
+ font-size: 0.6rem;
475
+ font-weight: 700;
476
+ letter-spacing: 0.03em;
477
+ padding: 2px 6px;
478
+ border-radius: 999px;
479
+ color: white;
480
+ background: var(--latte-red);
481
+ }
482
+
483
+ /* Active badge */
484
+ .badge-active {
485
+ margin-left: auto;
486
+ font-size: 0.6rem;
487
+ font-weight: 700;
488
+ letter-spacing: 0.03em;
489
+ padding: 2px 6px;
490
+ border-radius: 999px;
491
+ color: var(--latte-mauve);
492
+ background: rgba(136, 57, 239, 0.1);
493
+ }
494
+
495
+ /* Sidebar footer */
496
+ .sidebar-footer {
497
+ position: relative;
498
+ padding: 12px 16px;
499
+ background: var(--latte-crust);
500
+ border-top: 1px solid var(--latte-surface0);
501
+ display: flex;
502
+ justify-content: space-between;
503
+ align-items: center;
504
+ font-size: 0.75rem;
505
+ color: var(--latte-subtext1);
506
+ }
507
+
508
+ .status-online {
509
+ display: flex;
510
+ align-items: center;
511
+ gap: 6px;
512
+ }
513
+
514
+ .status-dot {
515
+ width: 8px;
516
+ height: 8px;
517
+ border-radius: 50%;
518
+ background: var(--latte-green);
519
+ animation: pulse 2s infinite;
520
+ }
521
+
522
+ @keyframes pulse {
523
+ 0%, 100% { opacity: 1; }
524
+ 50% { opacity: 0.5; }
525
+ }
526
+
527
+ .status-encoding {
528
+ font-family: "JetBrains Mono", monospace;
529
+ color: var(--latte-overlay0);
530
+ }
531
+
532
+ .sidebar-footer-actions {
533
+ display: flex;
534
+ align-items: center;
535
+ gap: 8px;
536
+ }
537
+
538
+ .settings-toggle {
539
+ width: 32px;
540
+ height: 32px;
541
+ border-radius: 8px;
542
+ border: 1px solid var(--latte-surface0);
543
+ background: var(--latte-base);
544
+ color: var(--latte-subtext1);
545
+ cursor: pointer;
546
+ display: inline-flex;
547
+ align-items: center;
548
+ justify-content: center;
549
+ }
550
+
551
+ .settings-toggle:hover {
552
+ color: var(--latte-text);
553
+ }
554
+
555
+ .settings-toggle .material-symbols-outlined {
556
+ font-size: 18px;
557
+ }
558
+
559
+ .sidebar-settings {
560
+ position: absolute;
561
+ right: 12px;
562
+ bottom: 52px;
563
+ width: min(300px, calc(100vw - 24px));
564
+ background: var(--latte-base);
565
+ border: 1px solid var(--latte-surface0);
566
+ border-radius: 10px;
567
+ box-shadow: var(--panel-shadow);
568
+ padding: 12px;
569
+ z-index: 120;
570
+ }
571
+
572
+ .sidebar-settings-title {
573
+ margin: 0 0 10px;
574
+ font-size: 0.85rem;
575
+ font-weight: 700;
576
+ color: var(--latte-text);
577
+ }
578
+
579
+ .settings-group {
580
+ margin: 0;
581
+ padding: 0;
582
+ border: 0;
583
+ }
584
+
585
+ .settings-group legend {
586
+ font-size: 0.75rem;
587
+ color: var(--latte-subtext1);
588
+ margin-bottom: 8px;
589
+ }
590
+
591
+ .settings-option {
592
+ display: flex;
593
+ align-items: center;
594
+ gap: 8px;
595
+ font-size: 0.8rem;
596
+ color: var(--latte-subtext1);
597
+ padding: 6px 0;
598
+ }
599
+
600
+ .settings-segment {
601
+ display: grid;
602
+ grid-template-columns: repeat(3, minmax(0, 1fr));
603
+ gap: 6px;
604
+ }
605
+
606
+ .settings-segment-option {
607
+ position: relative;
608
+ min-width: 0;
609
+ }
610
+
611
+ .settings-segment-option input {
612
+ position: absolute;
613
+ opacity: 0;
614
+ pointer-events: none;
615
+ }
616
+
617
+ .settings-segment-option span {
618
+ display: flex;
619
+ justify-content: center;
620
+ align-items: center;
621
+ min-height: 34px;
622
+ border-radius: 8px;
623
+ border: 1px solid var(--latte-surface0);
624
+ background: var(--latte-mantle);
625
+ color: var(--latte-subtext1);
626
+ font-size: 0.78rem;
627
+ font-weight: 600;
628
+ cursor: pointer;
629
+ transition: border-color 0.15s ease, background-color 0.15s ease, color 0.15s ease;
630
+ }
631
+
632
+ .settings-segment-option input:checked + span {
633
+ border-color: var(--latte-mauve);
634
+ background: rgba(136, 57, 239, 0.14);
635
+ color: var(--latte-text);
636
+ }
637
+
638
+ .settings-segment-option input:focus-visible + span {
639
+ outline: 2px solid var(--latte-blue);
640
+ outline-offset: 1px;
641
+ }
642
+
643
+ .settings-close {
644
+ margin-top: 10px;
645
+ width: 100%;
646
+ min-height: 34px;
647
+ border-radius: 8px;
648
+ border: 1px solid var(--latte-surface0);
649
+ background: var(--latte-mantle);
650
+ color: var(--latte-text);
651
+ font-size: 0.8rem;
652
+ font-weight: 600;
653
+ cursor: pointer;
654
+ }
655
+
656
+ .settings-close:hover {
657
+ background: var(--latte-base);
658
+ }
659
+
660
+ /* Viewer */
661
+ .viewer {
662
+ overflow-y: auto;
663
+ background: var(--latte-base);
664
+ position: relative;
665
+ min-width: 0;
666
+ }
667
+
668
+ .mobile-menu-toggle {
669
+ display: none;
670
+ position: fixed;
671
+ right: 18px;
672
+ bottom: 18px;
673
+ z-index: 90;
674
+ align-items: center;
675
+ gap: 6px;
676
+ border: 0;
677
+ border-radius: 999px;
678
+ background: var(--latte-mauve);
679
+ color: #fff;
680
+ min-height: 48px;
681
+ padding: 0 16px;
682
+ font-size: 0.9rem;
683
+ font-weight: 600;
684
+ box-shadow: 0 10px 24px rgba(136, 57, 239, 0.25);
685
+ cursor: pointer;
686
+ }
687
+
688
+ .mobile-menu-toggle .material-symbols-outlined {
689
+ font-size: 20px;
690
+ }
691
+
692
+ body.mobile-toggle-left .mobile-menu-toggle {
693
+ left: 18px;
694
+ right: auto;
695
+ }
696
+
697
+ .viewer-container {
698
+ max-width: 800px;
699
+ margin: 0 auto;
700
+ padding: 48px 32px 80px;
701
+ }
702
+
703
+ /* Breadcrumb */
704
+ .viewer-breadcrumb {
705
+ display: flex;
706
+ align-items: center;
707
+ gap: 4px;
708
+ font-size: 0.85rem;
709
+ font-family: "JetBrains Mono", monospace;
710
+ color: var(--latte-overlay0);
711
+ margin-bottom: 24px;
712
+ flex-wrap: nowrap;
713
+ max-width: 100%;
714
+ overflow-x: auto;
715
+ overflow-y: hidden;
716
+ white-space: nowrap;
717
+ }
718
+
719
+ .breadcrumb-sep {
720
+ font-size: 14px;
721
+ color: var(--latte-surface2);
722
+ flex: 0 0 auto;
723
+ }
724
+
725
+ .breadcrumb-item {
726
+ flex: 0 0 auto;
727
+ }
728
+
729
+ .breadcrumb-ellipsis {
730
+ flex: 0 0 auto;
731
+ color: var(--latte-surface2);
732
+ }
733
+
734
+ .breadcrumb-current {
735
+ color: var(--latte-mauve);
736
+ font-weight: 500;
737
+ flex: 0 0 auto;
738
+ }
739
+
740
+ .breadcrumb-info {
741
+ flex: 0 0 auto;
742
+ margin-left: auto;
743
+ font-size: 16px;
744
+ color: var(--latte-overlay0);
745
+ cursor: help;
746
+ padding-left: 8px;
747
+ }
748
+
749
+ .breadcrumb-info:hover {
750
+ color: var(--latte-text);
751
+ }
752
+
753
+ /* Viewer header */
754
+ .viewer-header {
755
+ margin-bottom: 32px;
756
+ }
757
+
758
+ .viewer-title {
759
+ margin: 0 0 16px;
760
+ font-size: 2.5rem;
761
+ font-weight: 700;
762
+ line-height: 1.2;
763
+ letter-spacing: -0.03em;
764
+ color: var(--latte-text);
765
+ }
766
+
767
+ .viewer-meta {
768
+ display: flex;
769
+ align-items: center;
770
+ gap: 16px;
771
+ font-size: 0.85rem;
772
+ font-family: "JetBrains Mono", monospace;
773
+ color: var(--latte-subtext0);
774
+ }
775
+
776
+ .meta-item {
777
+ display: flex;
778
+ align-items: center;
779
+ gap: 4px;
780
+ }
781
+
782
+ .meta-item .material-symbols-outlined {
783
+ font-size: 16px;
784
+ color: var(--latte-overlay0);
785
+ }
786
+
787
+ .meta-tags {
788
+ color: var(--latte-lavender);
789
+ }
790
+
791
+ .meta-tags .material-symbols-outlined {
792
+ color: var(--latte-lavender);
793
+ }
794
+
795
+ /* Viewer content */
796
+ .viewer-content {
797
+ line-height: 1.82;
798
+ font-size: 1.02rem;
799
+ max-width: 72ch;
800
+ margin: 0 auto;
801
+ text-wrap: pretty;
802
+ color: var(--latte-subtext0);
803
+ }
804
+
805
+ .viewer-content h1,
806
+ .viewer-content h2,
807
+ .viewer-content h3,
808
+ .viewer-content h4 {
809
+ color: var(--latte-text);
810
+ font-weight: 600;
811
+ line-height: 1.35;
812
+ margin-top: 2rem;
813
+ margin-bottom: 1rem;
814
+ }
815
+
816
+ .viewer-content h1 { font-size: 2rem; }
817
+ .viewer-content h2 { font-size: 1.5rem; }
818
+ .viewer-content h3 { font-size: 1.25rem; }
819
+
820
+ .viewer-content p {
821
+ margin-bottom: 1.25rem;
822
+ }
823
+
824
+ .viewer-content p,
825
+ .viewer-content li,
826
+ .viewer-content blockquote {
827
+ word-break: keep-all;
828
+ overflow-wrap: break-word;
829
+ line-break: auto;
830
+ letter-spacing: -0.01em;
831
+ }
832
+
833
+ .viewer-content strong {
834
+ color: var(--latte-text);
835
+ }
836
+
837
+ .viewer-content a {
838
+ color: var(--latte-blue);
839
+ }
840
+
841
+ .viewer-content ul,
842
+ .viewer-content ol {
843
+ margin-bottom: 1.25rem;
844
+ padding-left: 1.5rem;
845
+ }
846
+
847
+ .viewer-content li {
848
+ margin-bottom: 0.5rem;
849
+ }
850
+
851
+ .viewer-content blockquote {
852
+ margin: 1.5rem 0;
853
+ padding: 12px 16px;
854
+ padding-left: 20px;
855
+ border-left: 4px solid var(--latte-mauve);
856
+ background: rgba(230, 233, 239, 0.5);
857
+ border-radius: 0 8px 8px 0;
858
+ font-style: normal;
859
+ color: var(--latte-subtext0);
860
+ }
861
+
862
+ /* Inline code */
863
+ .viewer-content :not(pre) > code {
864
+ background: var(--latte-mantle);
865
+ border: 1px solid var(--latte-surface0);
866
+ border-radius: 4px;
867
+ padding: 2px 6px;
868
+ font-family: "JetBrains Mono", monospace;
869
+ font-size: 0.88em;
870
+ color: var(--latte-mauve);
871
+ }
872
+
873
+ /* Code blocks */
874
+ .viewer-content .code-block {
875
+ margin: 1.5rem 0;
876
+ border-radius: 8px;
877
+ border: 1px solid #30363d;
878
+ background: #24292e;
879
+ overflow: hidden;
880
+ box-shadow: 0 6px 18px rgba(15, 23, 42, 0.18);
881
+ }
882
+
883
+ .code-header {
884
+ display: flex;
885
+ align-items: center;
886
+ gap: 12px;
887
+ padding: 10px 16px;
888
+ background: #2b313a;
889
+ border-bottom: 1px solid #30363d;
890
+ }
891
+
892
+ .code-dots {
893
+ display: flex;
894
+ gap: 6px;
895
+ }
896
+
897
+ .dot {
898
+ width: 12px;
899
+ height: 12px;
900
+ border-radius: 50%;
901
+ }
902
+
903
+ .dot-red { background: var(--latte-red); }
904
+ .dot-yellow { background: var(--latte-yellow); }
905
+ .dot-green { background: var(--latte-green); }
906
+
907
+ .code-filename {
908
+ flex: 1;
909
+ font-family: "JetBrains Mono", monospace;
910
+ font-size: 0.75rem;
911
+ color: #aeb7c2;
912
+ text-align: center;
913
+ }
914
+
915
+ .code-copy {
916
+ display: flex;
917
+ align-items: center;
918
+ justify-content: center;
919
+ background: none;
920
+ border: none;
921
+ padding: 4px;
922
+ cursor: pointer;
923
+ color: #aeb7c2;
924
+ border-radius: 4px;
925
+ transition: all 0.15s ease;
926
+ }
927
+
928
+ .code-copy:hover {
929
+ color: #f0f6fc;
930
+ background: rgba(240, 246, 252, 0.14);
931
+ }
932
+
933
+ .code-copy .material-symbols-outlined {
934
+ font-size: 16px;
935
+ }
936
+
937
+ .code-copy.copied {
938
+ color: var(--latte-green);
939
+ }
940
+
941
+ .viewer-content .code-block pre {
942
+ margin: 0;
943
+ border: none;
944
+ border-radius: 0;
945
+ box-shadow: none;
946
+ background: transparent !important;
947
+ color: inherit;
948
+ }
949
+
950
+ .viewer-content .code-block pre code {
951
+ display: block;
952
+ padding: 18px 20px;
953
+ overflow-x: auto;
954
+ font-family: "JetBrains Mono", monospace;
955
+ font-size: 0.95rem;
956
+ font-weight: 500;
957
+ line-height: 1.72;
958
+ letter-spacing: 0.005em;
959
+ background: transparent !important;
960
+ color: inherit;
961
+ }
962
+
963
+ .viewer-content .code-block pre.shiki {
964
+ margin: 0;
965
+ border: 0;
966
+ }
967
+
968
+ .viewer-content .code-block pre.shiki code {
969
+ white-space: normal;
970
+ tab-size: 2;
971
+ }
972
+
973
+ .viewer-content .code-block .line {
974
+ display: block;
975
+ line-height: inherit;
976
+ white-space: pre;
977
+ tab-size: 2;
978
+ }
979
+
980
+ .viewer-content pre {
981
+ position: relative;
982
+ margin: 1.5rem 0;
983
+ padding: 0;
984
+ border-radius: 8px;
985
+ border: 1px solid var(--latte-surface0);
986
+ background: var(--latte-mantle);
987
+ overflow: hidden;
988
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
989
+ }
990
+
991
+ .viewer-content pre code {
992
+ display: block;
993
+ padding: 16px;
994
+ overflow-x: auto;
995
+ font-family: "JetBrains Mono", monospace;
996
+ font-size: 0.875rem;
997
+ line-height: 1.6;
998
+ }
999
+
1000
+ /* Tables */
1001
+ .viewer-content table {
1002
+ width: 100%;
1003
+ border-collapse: collapse;
1004
+ margin: 1.5rem 0;
1005
+ font-size: 0.9rem;
1006
+ }
1007
+
1008
+ .viewer-content th {
1009
+ background: var(--latte-mantle);
1010
+ font-weight: 600;
1011
+ text-align: left;
1012
+ color: var(--latte-text);
1013
+ }
1014
+
1015
+ .viewer-content th,
1016
+ .viewer-content td {
1017
+ padding: 12px 16px;
1018
+ border: 1px solid var(--latte-surface0);
1019
+ }
1020
+
1021
+ .viewer-content tr:hover {
1022
+ background: rgba(230, 233, 239, 0.5);
1023
+ }
1024
+
1025
+ /* Images */
1026
+ .viewer-content img {
1027
+ max-width: 100%;
1028
+ height: auto;
1029
+ border-radius: 8px;
1030
+ border: 1px solid var(--latte-surface0);
1031
+ }
1032
+
1033
+ /* Horizontal rule */
1034
+ .viewer-content hr {
1035
+ border: none;
1036
+ border-top: 1px solid var(--latte-surface0);
1037
+ margin: 2rem 0;
1038
+ }
1039
+
1040
+ /* Post navigation */
1041
+ .viewer-nav {
1042
+ display: flex;
1043
+ gap: 16px;
1044
+ margin-top: 48px;
1045
+ padding-top: 32px;
1046
+ border-top: 1px solid var(--latte-surface0);
1047
+ }
1048
+
1049
+ .nav-link {
1050
+ flex: 1;
1051
+ padding: 16px;
1052
+ border: 1px solid var(--latte-surface0);
1053
+ border-radius: 8px;
1054
+ background: var(--active-surface-bg);
1055
+ text-decoration: none;
1056
+ transition: all 0.15s ease;
1057
+ }
1058
+
1059
+ .nav-link:hover {
1060
+ border-color: var(--latte-mauve);
1061
+ box-shadow: 0 2px 8px rgba(136, 57, 239, 0.1);
1062
+ text-decoration: none;
1063
+ }
1064
+
1065
+ .nav-link-label {
1066
+ display: flex;
1067
+ align-items: center;
1068
+ gap: 4px;
1069
+ font-size: 0.75rem;
1070
+ color: var(--latte-overlay0);
1071
+ margin-bottom: 4px;
1072
+ }
1073
+
1074
+ .nav-link:hover .nav-link-label {
1075
+ color: var(--latte-mauve);
1076
+ }
1077
+
1078
+ .nav-link-title {
1079
+ font-size: 0.9rem;
1080
+ font-weight: 500;
1081
+ color: var(--latte-text);
1082
+ }
1083
+
1084
+ .nav-link:hover .nav-link-title {
1085
+ color: var(--latte-mauve);
1086
+ }
1087
+
1088
+ .nav-link-next {
1089
+ text-align: right;
1090
+ }
1091
+
1092
+ .nav-link-next .nav-link-label {
1093
+ justify-content: flex-end;
1094
+ }
1095
+
1096
+ /* Placeholder */
1097
+ .placeholder {
1098
+ color: var(--latte-overlay0);
1099
+ font-style: italic;
1100
+ }
1101
+
1102
+ /* 404 Page */
1103
+ .not-found {
1104
+ min-height: 100vh;
1105
+ display: flex;
1106
+ flex-direction: column;
1107
+ align-items: center;
1108
+ justify-content: center;
1109
+ gap: 16px;
1110
+ background: var(--latte-base);
1111
+ color: var(--latte-text);
1112
+ }
1113
+
1114
+ .not-found-icon .material-symbols-outlined {
1115
+ font-size: 64px;
1116
+ color: var(--latte-overlay0);
1117
+ }
1118
+
1119
+ .not-found h1 {
1120
+ font-size: 4rem;
1121
+ font-weight: 700;
1122
+ margin: 0;
1123
+ color: var(--latte-text);
1124
+ }
1125
+
1126
+ .not-found p {
1127
+ color: var(--latte-subtext0);
1128
+ margin: 0;
1129
+ }
1130
+
1131
+ .not-found-link {
1132
+ display: inline-flex;
1133
+ align-items: center;
1134
+ gap: 6px;
1135
+ margin-top: 8px;
1136
+ padding: 10px 20px;
1137
+ background: var(--latte-mauve);
1138
+ color: white;
1139
+ border-radius: 6px;
1140
+ font-weight: 500;
1141
+ text-decoration: none;
1142
+ transition: all 0.15s ease;
1143
+ }
1144
+
1145
+ .not-found-link:hover {
1146
+ background: var(--accent-hover);
1147
+ text-decoration: none;
1148
+ }
1149
+
1150
+ .not-found-link .material-symbols-outlined {
1151
+ font-size: 18px;
1152
+ }
1153
+
1154
+ /* Responsive */
1155
+ @media (max-width: 1024px) {
1156
+ .app-root {
1157
+ grid-template-columns: 1fr;
1158
+ }
1159
+
1160
+ .app-splitter {
1161
+ display: none;
1162
+ }
1163
+
1164
+ .sidebar {
1165
+ position: fixed;
1166
+ top: 0;
1167
+ left: 0;
1168
+ bottom: 0;
1169
+ width: 70vw;
1170
+ min-width: 300px;
1171
+ max-width: 560px;
1172
+ border-right: 1px solid var(--latte-surface0);
1173
+ border-bottom: 0;
1174
+ box-shadow: var(--sidebar-mobile-shadow);
1175
+ transform: translateX(-102%);
1176
+ transition: transform 0.2s ease;
1177
+ z-index: 100;
1178
+ }
1179
+
1180
+ .app-root.sidebar-open .sidebar {
1181
+ transform: translateX(0);
1182
+ }
1183
+
1184
+ .mobile-menu-toggle {
1185
+ display: inline-flex;
1186
+ }
1187
+
1188
+ .sidebar-close {
1189
+ display: inline-flex;
1190
+ }
1191
+
1192
+ .viewer-container {
1193
+ max-width: 760px;
1194
+ padding: 28px 24px 104px;
1195
+ }
1196
+
1197
+ .viewer-title {
1198
+ font-size: 1.75rem;
1199
+ }
1200
+
1201
+ .viewer-meta {
1202
+ flex-wrap: wrap;
1203
+ row-gap: 8px;
1204
+ }
1205
+
1206
+ .viewer-content {
1207
+ font-size: 1.05rem;
1208
+ line-height: 1.9;
1209
+ }
1210
+
1211
+ .viewer-content p {
1212
+ margin-bottom: 1.35rem;
1213
+ }
1214
+
1215
+ .viewer-nav {
1216
+ flex-direction: column;
1217
+ }
1218
+ }
1219
+
1220
+ @media (max-width: 700px) {
1221
+ .sidebar {
1222
+ width: 100vw;
1223
+ min-width: 0;
1224
+ max-width: none;
1225
+ }
1226
+
1227
+ .viewer-container {
1228
+ padding: 20px 18px 104px;
1229
+ }
1230
+
1231
+ .viewer-content {
1232
+ font-size: 1.01rem;
1233
+ line-height: 1.88;
1234
+ max-width: 65ch;
1235
+ }
1236
+
1237
+ .viewer-content h1 {
1238
+ font-size: 1.72rem;
1239
+ }
1240
+
1241
+ .viewer-content h2 {
1242
+ font-size: 1.34rem;
1243
+ }
1244
+
1245
+ .viewer-content h3 {
1246
+ font-size: 1.16rem;
1247
+ }
1248
+
1249
+ .viewer-content table {
1250
+ display: block;
1251
+ overflow-x: auto;
1252
+ white-space: nowrap;
1253
+ }
1254
+ }