granite-mem 0.1.7 → 0.1.9

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.
@@ -1,923 +1 @@
1
- /* ═══════════════════════════════════════════════
2
- GRANITE — Editorial knowledge interface
3
- Typography: Instrument Sans + Instrument Serif
4
- ═══════════════════════════════════════════════ */
5
-
6
- *, *::before, *::after {
7
- margin: 0;
8
- padding: 0;
9
- box-sizing: border-box;
10
- }
11
-
12
- :root {
13
- /* ── Palette ── */
14
- --bg-0: #08080a;
15
- --bg-1: #0e0e11;
16
- --bg-2: #141418;
17
- --bg-3: #1a1a1f;
18
- --bg-hover: #1e1e24;
19
- --bg-active: #24242b;
20
- --border: #222228;
21
- --border-subtle: #1a1a1f;
22
-
23
- --text-0: #f0f0f3;
24
- --text-1: #b0b0b8;
25
- --text-2: #6e6e7a;
26
- --text-3: #44444f;
27
-
28
- --accent: #6366f1;
29
- --accent-soft: rgba(99, 102, 241, 0.12);
30
- --accent-text: #a5b4fc;
31
-
32
- --link: #818cf8;
33
- --link-hover: #a5b4fc;
34
- --link-broken: #f87171;
35
-
36
- --tag-bg: rgba(99, 102, 241, 0.08);
37
- --tag-border: rgba(99, 102, 241, 0.15);
38
- --tag-text: #a5b4fc;
39
-
40
- --success: #34d399;
41
-
42
- /* ── Type ── */
43
- --font-sans: 'Instrument Sans', -apple-system, sans-serif;
44
- --font-serif: 'Instrument Serif', Georgia, serif;
45
- --font-mono: 'JetBrains Mono', 'SF Mono', monospace;
46
-
47
- /* ── Easing ── */
48
- --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
49
- --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);
50
-
51
- /* ── Layout ── */
52
- --sidebar-rail: 48px;
53
- --sidebar-panel: 260px;
54
- --sidebar-total: 308px;
55
- --content-max: 680px;
56
- --radius: 8px;
57
- --radius-sm: 5px;
58
- }
59
-
60
- html, body {
61
- height: 100%;
62
- font-family: var(--font-sans);
63
- background: var(--bg-0);
64
- color: var(--text-1);
65
- font-size: 13px;
66
- line-height: 1.5;
67
- -webkit-font-smoothing: antialiased;
68
- -moz-osx-font-smoothing: grayscale;
69
- overflow: hidden;
70
- }
71
-
72
- /* ── Scrollbar ── */
73
- ::-webkit-scrollbar { width: 4px; }
74
- ::-webkit-scrollbar-track { background: transparent; }
75
- ::-webkit-scrollbar-thumb { background: var(--border); border-radius: 2px; }
76
- ::-webkit-scrollbar-thumb:hover { background: var(--text-3); }
77
-
78
- /* ── App layout ── */
79
- #app {
80
- display: flex;
81
- height: 100%;
82
- background: var(--bg-0);
83
- }
84
-
85
- /* ═══════════════════════════════════
86
- SIDEBAR
87
- ═══════════════════════════════════ */
88
-
89
- #sidebar {
90
- display: flex;
91
- height: 100%;
92
- flex-shrink: 0;
93
- border-right: 1px solid var(--border);
94
- transition: width 0.3s var(--ease-out);
95
- }
96
-
97
- #sidebar.expanded { width: var(--sidebar-total); }
98
- #sidebar.collapsed { width: var(--sidebar-rail); }
99
-
100
- /* ── Rail ── */
101
- #sidebar-rail {
102
- width: var(--sidebar-rail);
103
- min-width: var(--sidebar-rail);
104
- display: flex;
105
- flex-direction: column;
106
- align-items: center;
107
- padding: 12px 0;
108
- gap: 4px;
109
- background: var(--bg-1);
110
- border-right: 1px solid var(--border-subtle);
111
- z-index: 2;
112
- }
113
-
114
- #brand-mark {
115
- width: 32px;
116
- height: 32px;
117
- display: flex;
118
- align-items: center;
119
- justify-content: center;
120
- color: var(--accent);
121
- background: none;
122
- border: none;
123
- cursor: pointer;
124
- border-radius: var(--radius-sm);
125
- margin-bottom: 12px;
126
- transition: color 0.15s;
127
- }
128
- #brand-mark:hover { color: var(--text-0); }
129
-
130
- .rail-btn {
131
- width: 32px;
132
- height: 32px;
133
- display: flex;
134
- align-items: center;
135
- justify-content: center;
136
- color: var(--text-2);
137
- background: none;
138
- border: none;
139
- cursor: pointer;
140
- border-radius: var(--radius-sm);
141
- transition: all 0.15s;
142
- }
143
- .rail-btn:hover { color: var(--text-1); background: var(--bg-hover); }
144
- .rail-btn.active { color: var(--accent-text); background: var(--accent-soft); }
145
-
146
- /* ── Panel ── */
147
- #sidebar-panel {
148
- width: var(--sidebar-panel);
149
- display: flex;
150
- flex-direction: column;
151
- background: var(--bg-1);
152
- overflow: hidden;
153
- transition: width 0.3s var(--ease-out), opacity 0.2s;
154
- }
155
-
156
- #sidebar.collapsed #sidebar-panel {
157
- width: 0;
158
- opacity: 0;
159
- pointer-events: none;
160
- }
161
-
162
- /* ── Search ── */
163
- #sidebar-search { padding: 12px 12px 8px; }
164
-
165
- #search-wrapper {
166
- display: flex;
167
- align-items: center;
168
- gap: 8px;
169
- padding: 6px 10px;
170
- background: var(--bg-2);
171
- border: 1px solid var(--border);
172
- border-radius: var(--radius-sm);
173
- transition: border-color 0.15s;
174
- }
175
- #search-wrapper:focus-within {
176
- border-color: var(--accent);
177
- box-shadow: 0 0 0 2px var(--accent-soft);
178
- }
179
-
180
- #search-box {
181
- flex: 1;
182
- background: none;
183
- border: none;
184
- color: var(--text-0);
185
- font-family: var(--font-sans);
186
- font-size: 12.5px;
187
- outline: none;
188
- }
189
- #search-box::placeholder { color: var(--text-3); }
190
-
191
- #search-wrapper kbd {
192
- font-family: var(--font-sans);
193
- font-size: 10px;
194
- color: var(--text-3);
195
- background: var(--bg-0);
196
- border: 1px solid var(--border);
197
- border-radius: 3px;
198
- padding: 1px 4px;
199
- line-height: 1.4;
200
- }
201
-
202
- /* ── Type filters ── */
203
- #type-filters {
204
- display: flex;
205
- gap: 4px;
206
- padding: 4px 12px 8px;
207
- flex-wrap: wrap;
208
- }
209
-
210
- .type-chip {
211
- padding: 3px 10px;
212
- font-family: var(--font-sans);
213
- font-size: 11px;
214
- font-weight: 500;
215
- letter-spacing: 0.01em;
216
- border-radius: 20px;
217
- border: 1px solid transparent;
218
- background: transparent;
219
- color: var(--text-2);
220
- cursor: pointer;
221
- transition: all 0.15s;
222
- }
223
- .type-chip:hover { color: var(--text-1); background: var(--bg-hover); }
224
- .type-chip.active {
225
- color: var(--accent-text);
226
- background: var(--accent-soft);
227
- border-color: var(--tag-border);
228
- }
229
-
230
- /* ── Note list ── */
231
- #note-list {
232
- flex: 1;
233
- overflow-y: auto;
234
- padding: 0 8px 8px;
235
- }
236
-
237
- .note-item {
238
- padding: 8px 10px;
239
- border-radius: var(--radius-sm);
240
- cursor: pointer;
241
- transition: background 0.1s;
242
- margin-bottom: 1px;
243
- }
244
- .note-item:hover { background: var(--bg-hover); }
245
- .note-item.active { background: var(--bg-active); }
246
- .note-item.keyboard-focus {
247
- background: var(--bg-hover);
248
- outline: 1px solid var(--border);
249
- }
250
-
251
- .note-item-title {
252
- font-size: 13px;
253
- font-weight: 500;
254
- color: var(--text-0);
255
- line-height: 1.4;
256
- margin-bottom: 2px;
257
- white-space: nowrap;
258
- overflow: hidden;
259
- text-overflow: ellipsis;
260
- }
261
-
262
- .note-item-meta {
263
- font-size: 11px;
264
- color: var(--text-3);
265
- display: flex;
266
- align-items: center;
267
- gap: 6px;
268
- }
269
-
270
- .note-item-type {
271
- font-size: 10px;
272
- font-weight: 500;
273
- letter-spacing: 0.03em;
274
- text-transform: uppercase;
275
- color: var(--text-2);
276
- }
277
- .note-item-type.fleeting { color: #fbbf24; }
278
- .note-item-type.permanent { color: var(--accent-text); }
279
- .note-item-type.reference { color: var(--success); }
280
- .note-item-type.person { color: #f9a8d4; }
281
- .note-item-type.meeting { color: #93c5fd; }
282
- .note-item-type.project { color: #c4b5fd; }
283
- .note-item-type.decision { color: #fca5a5; }
284
-
285
- .note-item-dot {
286
- width: 2px;
287
- height: 2px;
288
- border-radius: 50%;
289
- background: var(--text-3);
290
- }
291
-
292
- .note-item-snippet {
293
- font-size: 11px;
294
- color: var(--text-3);
295
- margin-top: 3px;
296
- line-height: 1.4;
297
- display: -webkit-box;
298
- -webkit-line-clamp: 2;
299
- -webkit-box-orient: vertical;
300
- overflow: hidden;
301
- }
302
- .note-item-snippet mark {
303
- background: var(--accent-soft);
304
- color: var(--accent-text);
305
- border-radius: 2px;
306
- padding: 0 1px;
307
- }
308
-
309
- /* ═══════════════════════════════════
310
- CREATION PANEL
311
- ═══════════════════════════════════ */
312
-
313
- #create-panel {
314
- flex: 1;
315
- display: flex;
316
- flex-direction: column;
317
- overflow-y: auto;
318
- padding: 0 12px 12px;
319
- animation: fadeSlideIn 0.25s var(--ease-out);
320
- }
321
-
322
- #create-panel-header {
323
- display: flex;
324
- align-items: center;
325
- justify-content: space-between;
326
- padding: 8px 0 12px;
327
- }
328
-
329
- .create-panel-title {
330
- font-size: 12px;
331
- font-weight: 600;
332
- color: var(--text-1);
333
- letter-spacing: 0.02em;
334
- }
335
-
336
- .create-panel-close {
337
- width: 24px;
338
- height: 24px;
339
- display: flex;
340
- align-items: center;
341
- justify-content: center;
342
- color: var(--text-3);
343
- background: none;
344
- border: none;
345
- cursor: pointer;
346
- border-radius: var(--radius-sm);
347
- transition: all 0.15s;
348
- }
349
- .create-panel-close:hover { color: var(--text-1); background: var(--bg-hover); }
350
-
351
- .create-label {
352
- font-size: 10px;
353
- font-weight: 600;
354
- color: var(--text-3);
355
- text-transform: uppercase;
356
- letter-spacing: 0.06em;
357
- margin-bottom: 4px;
358
- margin-top: 10px;
359
- display: block;
360
- }
361
- .create-label:first-of-type { margin-top: 0; }
362
-
363
- .create-select,
364
- .create-input {
365
- width: 100%;
366
- padding: 6px 10px;
367
- background: var(--bg-2);
368
- border: 1px solid var(--border);
369
- border-radius: var(--radius-sm);
370
- color: var(--text-0);
371
- font-family: var(--font-sans);
372
- font-size: 12.5px;
373
- outline: none;
374
- transition: border-color 0.15s;
375
- }
376
- .create-select:focus,
377
- .create-input:focus {
378
- border-color: var(--accent);
379
- box-shadow: 0 0 0 2px var(--accent-soft);
380
- }
381
- .create-select {
382
- appearance: none;
383
- background-image: url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236e6e7a' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E");
384
- background-repeat: no-repeat;
385
- background-position: right 10px center;
386
- padding-right: 28px;
387
- cursor: pointer;
388
- }
389
- .create-select option { background: var(--bg-2); color: var(--text-0); }
390
-
391
- .create-textarea {
392
- width: 100%;
393
- min-height: 160px;
394
- padding: 10px;
395
- background: var(--bg-2);
396
- border: 1px solid var(--border);
397
- border-radius: var(--radius-sm);
398
- color: var(--text-0);
399
- font-family: var(--font-mono);
400
- font-size: 12px;
401
- line-height: 1.6;
402
- outline: none;
403
- resize: vertical;
404
- transition: border-color 0.15s;
405
- }
406
- .create-textarea:focus {
407
- border-color: var(--accent);
408
- box-shadow: 0 0 0 2px var(--accent-soft);
409
- }
410
- .create-textarea::placeholder { color: var(--text-3); }
411
-
412
- .create-submit {
413
- margin-top: 12px;
414
- width: 100%;
415
- padding: 8px;
416
- background: var(--accent);
417
- color: #fff;
418
- font-family: var(--font-sans);
419
- font-size: 12.5px;
420
- font-weight: 600;
421
- border: none;
422
- border-radius: var(--radius-sm);
423
- cursor: pointer;
424
- transition: opacity 0.15s, transform 0.1s;
425
- }
426
- .create-submit:hover { opacity: 0.9; }
427
- .create-submit:active { transform: scale(0.98); }
428
-
429
- /* ═══════════════════════════════════
430
- MAIN CONTENT
431
- ═══════════════════════════════════ */
432
-
433
- #main {
434
- flex: 1;
435
- display: flex;
436
- flex-direction: column;
437
- overflow: hidden;
438
- position: relative;
439
- background: var(--bg-0);
440
- }
441
-
442
- #content-wrapper {
443
- flex: 1;
444
- display: flex;
445
- flex-direction: column;
446
- overflow-y: auto;
447
- scroll-behavior: smooth;
448
- }
449
-
450
- /* ── Note header ── */
451
- #note-header {
452
- display: none;
453
- max-width: var(--content-max);
454
- width: 100%;
455
- margin: 0 auto;
456
- padding: 48px 32px 0;
457
- animation: fadeSlideIn 0.4s var(--ease-out);
458
- }
459
-
460
- #note-breadcrumb {
461
- font-size: 11px;
462
- color: var(--text-3);
463
- margin-bottom: 8px;
464
- text-transform: uppercase;
465
- letter-spacing: 0.06em;
466
- font-weight: 500;
467
- }
468
-
469
- #note-title {
470
- font-family: var(--font-serif);
471
- font-size: clamp(26px, 4vw, 34px);
472
- font-weight: 400;
473
- color: var(--text-0);
474
- line-height: 1.2;
475
- letter-spacing: -0.01em;
476
- margin-bottom: 12px;
477
- }
478
-
479
- #note-meta {
480
- display: flex;
481
- align-items: center;
482
- gap: 10px;
483
- font-size: 12px;
484
- color: var(--text-2);
485
- padding-bottom: 28px;
486
- border-bottom: 1px solid var(--border-subtle);
487
- }
488
-
489
- .meta-badge {
490
- font-size: 10px;
491
- font-weight: 600;
492
- letter-spacing: 0.05em;
493
- text-transform: uppercase;
494
- padding: 2px 8px;
495
- border-radius: 3px;
496
- background: var(--accent-soft);
497
- color: var(--accent-text);
498
- border: 1px solid var(--tag-border);
499
- }
500
-
501
- .meta-date { color: var(--text-3); }
502
-
503
- #note-tags { display: flex; gap: 4px; }
504
-
505
- .tag {
506
- font-size: 11px;
507
- color: var(--text-2);
508
- padding: 1px 7px;
509
- border-radius: 3px;
510
- background: var(--bg-3);
511
- border: 1px solid var(--border);
512
- }
513
-
514
- /* ═══════════════════════════════════
515
- NOTE BODY — Rendered Markdown
516
- ═══════════════════════════════════ */
517
-
518
- #note-body {
519
- display: none;
520
- max-width: var(--content-max);
521
- width: 100%;
522
- margin: 0 auto;
523
- padding: 28px 32px 40px;
524
- animation: fadeSlideIn 0.45s var(--ease-out) 0.05s both;
525
- }
526
-
527
- /* ── Headings ── */
528
- #note-body .md-h1 {
529
- font-family: var(--font-serif);
530
- font-size: 24px;
531
- font-weight: 400;
532
- color: var(--text-0);
533
- line-height: 1.3;
534
- margin: 32px 0 12px;
535
- letter-spacing: -0.01em;
536
- }
537
-
538
- #note-body .md-h2 {
539
- font-family: var(--font-serif);
540
- font-size: 20px;
541
- font-weight: 400;
542
- color: var(--text-0);
543
- line-height: 1.35;
544
- margin: 28px 0 10px;
545
- }
546
-
547
- #note-body .md-h3 {
548
- font-family: var(--font-sans);
549
- font-size: 13px;
550
- font-weight: 600;
551
- color: var(--accent-text);
552
- text-transform: uppercase;
553
- letter-spacing: 0.04em;
554
- margin: 24px 0 8px;
555
- }
556
-
557
- /* ── Body text ── */
558
- #note-body .md-body {
559
- font-family: var(--font-sans);
560
- font-size: 14px;
561
- color: var(--text-1);
562
- line-height: 1.75;
563
- margin: 0 0 4px;
564
- }
565
-
566
- /* ── Lists ── */
567
- #note-body .md-list {
568
- padding-left: 20px;
569
- margin: 4px 0;
570
- }
571
-
572
- #note-body .md-list li {
573
- font-family: var(--font-sans);
574
- font-size: 14px;
575
- color: var(--text-1);
576
- line-height: 1.75;
577
- margin: 2px 0;
578
- }
579
-
580
- #note-body .md-list li::marker {
581
- color: var(--text-3);
582
- }
583
-
584
- #note-body ul.md-list { list-style-type: disc; }
585
- #note-body ul.md-list li::marker { color: var(--text-3); font-size: 8px; }
586
-
587
- /* ── Blockquotes ── */
588
- #note-body .md-blockquote {
589
- font-family: var(--font-serif);
590
- font-style: italic;
591
- font-size: 14px;
592
- color: var(--text-2);
593
- line-height: 1.75;
594
- margin: 12px 0;
595
- padding: 2px 0 2px 16px;
596
- border-left: 2px solid var(--border);
597
- }
598
-
599
- /* ── Code blocks ── */
600
- #note-body .code-block {
601
- margin: 14px 0;
602
- background: var(--bg-2);
603
- border: 1px solid var(--border);
604
- border-radius: 6px;
605
- position: relative;
606
- overflow: hidden;
607
- }
608
-
609
- #note-body .code-block .code-lang {
610
- position: absolute;
611
- top: 0;
612
- right: 0;
613
- font-family: var(--font-sans);
614
- font-size: 10px;
615
- font-weight: 500;
616
- color: var(--text-3);
617
- padding: 4px 10px;
618
- letter-spacing: 0.02em;
619
- }
620
-
621
- #note-body .code-block pre {
622
- padding: 14px;
623
- overflow-x: auto;
624
- }
625
-
626
- #note-body .code-block code {
627
- font-family: var(--font-mono);
628
- font-size: 12.5px;
629
- line-height: 1.6;
630
- color: #c4ccda;
631
- }
632
-
633
- /* ── Inline code ── */
634
- #note-body .inline-code {
635
- font-family: var(--font-mono);
636
- font-size: 12px;
637
- color: #c4ccda;
638
- background: var(--bg-2);
639
- border: 1px solid var(--border);
640
- border-radius: 3px;
641
- padding: 1px 5px;
642
- }
643
-
644
- /* ── Horizontal rule ── */
645
- #note-body .md-hr {
646
- border: none;
647
- height: 1px;
648
- background: var(--border);
649
- margin: 28px 20%;
650
- }
651
-
652
- /* ── Strong / Emphasis ── */
653
- #note-body strong {
654
- font-weight: 600;
655
- color: var(--text-0);
656
- }
657
-
658
- #note-body em {
659
- font-family: var(--font-serif);
660
- font-style: italic;
661
- }
662
-
663
- /* ── External links ── */
664
- #note-body .external-link {
665
- color: var(--text-2);
666
- text-decoration: underline;
667
- text-decoration-color: var(--border);
668
- text-underline-offset: 2px;
669
- transition: color 0.15s, text-decoration-color 0.15s;
670
- }
671
- #note-body .external-link:hover {
672
- color: var(--text-1);
673
- text-decoration-color: var(--text-2);
674
- }
675
-
676
- /* ═══════════════════════════════════
677
- WIKILINKS
678
- ═══════════════════════════════════ */
679
-
680
- .wikilink {
681
- color: var(--link);
682
- text-decoration: none;
683
- border-bottom: 1px solid transparent;
684
- transition: color 0.15s, border-color 0.2s;
685
- cursor: pointer;
686
- }
687
- .wikilink:hover {
688
- color: var(--link-hover);
689
- border-bottom-color: var(--link-hover);
690
- }
691
-
692
- .wikilink-broken {
693
- color: var(--link-broken);
694
- border-bottom: 1px dashed rgba(248, 113, 113, 0.4);
695
- }
696
-
697
- /* ── Wikilink Preview Popup ── */
698
- .wikilink-preview {
699
- position: fixed;
700
- z-index: 100;
701
- width: 280px;
702
- background: var(--bg-2);
703
- border: 1px solid var(--border);
704
- border-radius: var(--radius);
705
- padding: 14px 16px;
706
- pointer-events: none;
707
- opacity: 0;
708
- transform: translateY(4px);
709
- transition: opacity 0.2s var(--ease-out), transform 0.2s var(--ease-out);
710
- box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
711
- }
712
-
713
- .wikilink-preview.visible {
714
- opacity: 1;
715
- transform: translateY(0);
716
- pointer-events: auto;
717
- }
718
-
719
- .wikilink-preview .preview-type {
720
- font-size: 10px;
721
- font-weight: 600;
722
- text-transform: uppercase;
723
- letter-spacing: 0.05em;
724
- color: var(--accent-text);
725
- margin-bottom: 4px;
726
- }
727
-
728
- .wikilink-preview .preview-title {
729
- font-family: var(--font-serif);
730
- font-size: 16px;
731
- color: var(--text-0);
732
- line-height: 1.3;
733
- margin-bottom: 8px;
734
- }
735
-
736
- .wikilink-preview .preview-snippet {
737
- font-size: 12px;
738
- color: var(--text-2);
739
- line-height: 1.5;
740
- display: -webkit-box;
741
- -webkit-line-clamp: 3;
742
- -webkit-box-orient: vertical;
743
- overflow: hidden;
744
- }
745
-
746
- .wikilink-preview .preview-tags {
747
- display: flex;
748
- gap: 4px;
749
- margin-top: 8px;
750
- }
751
-
752
- .wikilink-preview .preview-tags:empty { display: none; }
753
-
754
- .wikilink-preview .preview-tag {
755
- font-size: 10px;
756
- color: var(--text-3);
757
- padding: 1px 6px;
758
- border-radius: 3px;
759
- background: var(--bg-3);
760
- border: 1px solid var(--border);
761
- }
762
-
763
- /* ═══════════════════════════════════
764
- BACKLINKS
765
- ═══════════════════════════════════ */
766
-
767
- #backlinks-panel {
768
- display: none;
769
- max-width: var(--content-max);
770
- width: 100%;
771
- margin: 0 auto;
772
- padding: 0 32px 48px;
773
- animation: fadeSlideIn 0.5s var(--ease-out) 0.1s both;
774
- }
775
-
776
- #backlinks-header {
777
- display: flex;
778
- align-items: center;
779
- gap: 6px;
780
- font-size: 11px;
781
- font-weight: 600;
782
- color: var(--text-3);
783
- text-transform: uppercase;
784
- letter-spacing: 0.06em;
785
- padding: 20px 0 10px;
786
- border-top: 1px solid var(--border-subtle);
787
- }
788
-
789
- #backlinks-count { color: var(--text-2); }
790
-
791
- .backlink-item {
792
- padding: 8px 12px;
793
- margin: 2px 0;
794
- border-radius: var(--radius-sm);
795
- cursor: pointer;
796
- transition: background 0.1s;
797
- }
798
- .backlink-item:hover { background: var(--bg-hover); }
799
-
800
- .backlink-title {
801
- font-size: 13px;
802
- font-weight: 500;
803
- color: var(--link);
804
- display: flex;
805
- align-items: center;
806
- gap: 6px;
807
- }
808
-
809
- .backlink-arrow {
810
- font-size: 11px;
811
- color: var(--text-3);
812
- }
813
-
814
- .backlink-context {
815
- font-size: 11.5px;
816
- color: var(--text-3);
817
- margin-top: 2px;
818
- line-height: 1.5;
819
- }
820
-
821
- /* ═══════════════════════════════════
822
- GRAPH VIEW
823
- ═══════════════════════════════════ */
824
-
825
- #graph-view {
826
- flex: 1;
827
- position: relative;
828
- overflow: hidden;
829
- }
830
-
831
- #graph-canvas {
832
- display: block;
833
- width: 100%;
834
- height: 100%;
835
- cursor: grab;
836
- }
837
- #graph-canvas:active { cursor: grabbing; }
838
-
839
- #graph-tooltip {
840
- position: fixed;
841
- z-index: 50;
842
- font-family: var(--font-sans);
843
- font-size: 12px;
844
- font-weight: 500;
845
- color: var(--text-0);
846
- background: var(--bg-2);
847
- border: 1px solid var(--border);
848
- border-radius: var(--radius-sm);
849
- padding: 4px 10px;
850
- pointer-events: none;
851
- opacity: 0;
852
- transition: opacity 0.12s;
853
- white-space: nowrap;
854
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
855
- }
856
-
857
- /* ═══════════════════════════════════
858
- EMPTY STATE
859
- ═══════════════════════════════════ */
860
-
861
- #empty-state {
862
- flex: 1;
863
- display: flex;
864
- flex-direction: column;
865
- align-items: center;
866
- justify-content: center;
867
- gap: 8px;
868
- color: var(--text-3);
869
- font-size: 13px;
870
- animation: fadeIn 0.6s var(--ease-out);
871
- }
872
-
873
- #empty-icon {
874
- margin-bottom: 8px;
875
- opacity: 0.5;
876
- }
877
-
878
- .empty-hint {
879
- font-size: 12px;
880
- color: var(--text-3);
881
- opacity: 0.6;
882
- }
883
-
884
- .empty-hint kbd {
885
- font-family: var(--font-sans);
886
- font-size: 10px;
887
- background: var(--bg-2);
888
- border: 1px solid var(--border);
889
- border-radius: 3px;
890
- padding: 1px 5px;
891
- }
892
-
893
- /* ═══════════════════════════════════
894
- ANIMATIONS
895
- ═══════════════════════════════════ */
896
-
897
- @keyframes fadeIn {
898
- from { opacity: 0; }
899
- to { opacity: 1; }
900
- }
901
-
902
- @keyframes fadeSlideIn {
903
- from {
904
- opacity: 0;
905
- transform: translateY(8px);
906
- }
907
- to {
908
- opacity: 1;
909
- transform: translateY(0);
910
- }
911
- }
912
-
913
- /* ═══════════════════════════════════
914
- RESPONSIVE
915
- ═══════════════════════════════════ */
916
-
917
- @media (max-width: 768px) {
918
- #sidebar.expanded { width: var(--sidebar-rail); }
919
- #sidebar.expanded #sidebar-panel { width: 0; opacity: 0; pointer-events: none; }
920
- #note-header { padding: 32px 20px 0; }
921
- #note-body { padding: 20px 20px 32px; }
922
- #backlinks-panel { padding: 0 20px 32px; }
923
- }
1
+ :root{--bg: #ece6dd;--bg-grad-top: #f0ebe4;--bg-grad-bottom: #e6dfd5;--panel: rgba(250, 247, 242, .62);--panel-strong: rgba(251, 248, 244, .82);--panel-dark: rgba(21, 18, 16, .7);--panel-raised: rgba(255, 255, 255, .24);--panel-quiet: rgba(255, 255, 255, .12);--ink: #1d1712;--ink-soft: #5f554b;--ink-faint: #887a6d;--ink-on-dark: rgba(255, 246, 236, .92);--ink-on-dark-soft:rgba(255, 236, 220, .58);--line: rgba(69, 53, 40, .14);--line-strong: rgba(69, 53, 40, .22);--line-on-dark: rgba(255, 236, 220, .08);--accent: #ba6844;--accent-soft: rgba(186, 104, 68, .1);--accent-deep: #945136;--accent-gradient: linear-gradient(135deg, #c16b47, #945136);--forest: #2e6b5b;--forest-soft: rgba(46, 107, 91, .12);--gold: #987b43;--gold-soft: rgba(152, 123, 67, .12);--violet: #735bb0;--violet-soft: rgba(113, 88, 170, .12);--broken: #9a7161;--graph-bg-1: #140f0d;--graph-bg-2: #181210;--graph-bg-3: #0f0b09;--shadow-sm: 0 2px 6px rgba(40, 28, 18, .06);--shadow: 0 18px 48px rgba(40, 28, 18, .08);--shadow-lg: 0 28px 80px rgba(40, 28, 18, .12);--radius-sm: 6px;--radius: 8px;--radius-md: 10px;--radius-lg: 12px;--radius-pill: 999px;--ease: cubic-bezier(.22, 1, .36, 1);--dur-fast: .12s;--dur: .16s;--dur-slow: .22s;--font-display: "Fraunces", Georgia, "Times New Roman", serif;--font-sans: "Manrope", system-ui, -apple-system, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;background:#140f0d;font-family:var(--font-sans);color:#fff8ef}body{overflow:hidden}button{font:inherit;color:inherit}.dirA{position:relative;width:100%;height:100vh;overflow:hidden;background:radial-gradient(circle at 18% 14%,rgba(214,154,118,.08),transparent 32%),radial-gradient(circle at 82% 82%,rgba(103,181,161,.06),transparent 34%),radial-gradient(circle at 50% 50%,#23181400 50%,#00000059),linear-gradient(135deg,#140f0d,#181210 42%,#0f0b09);color:#fff6eceb;font-family:var(--font-sans);isolation:isolate}.dirA:before{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;background:linear-gradient(rgba(255,244,232,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(255,244,232,.02) 1px,transparent 1px);background-size:140px 140px;mask-image:radial-gradient(circle at 50% 50%,black 40%,transparent 95%)}.dirA:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;background-image:radial-gradient(1px 1px at 12% 22%,rgba(255,240,220,.5),transparent 100%),radial-gradient(1px 1px at 78% 18%,rgba(255,230,200,.35),transparent 100%),radial-gradient(1px 1px at 32% 78%,rgba(255,240,220,.4),transparent 100%),radial-gradient(1px 1px at 88% 64%,rgba(255,230,200,.35),transparent 100%),radial-gradient(1px 1px at 55% 42%,rgba(255,240,220,.3),transparent 100%),radial-gradient(1px 1px at 22% 58%,rgba(255,220,200,.3),transparent 100%),radial-gradient(1px 1px at 68% 88%,rgba(255,240,220,.4),transparent 100%)}.dirA-topbar{position:absolute;top:0;left:0;right:0;z-index:40;display:flex;align-items:center;gap:16px;padding:18px 24px;pointer-events:none}.dirA-topbar>*{pointer-events:auto}.dirA-brand{display:flex;align-items:center;gap:10px;padding:8px 14px 8px 10px;border-radius:10px;background:#1a1310b8;border:1px solid rgba(255,236,220,.09);backdrop-filter:blur(10px)}.dirA-brand-mark{width:28px;height:28px;display:grid;place-items:center;color:#f1c49e}.dirA-brand-name{font-family:var(--font-display);font-size:1.1rem;letter-spacing:-.03em;color:#fff8ef;line-height:1}.dirA-brand-sub{font-size:.54rem;text-transform:uppercase;letter-spacing:.16em;color:#ffecdc85;margin-top:3px}.dirA-search{flex:0 1 440px;display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:10px;background:#1a13109e;border:1px solid rgba(255,236,220,.09);backdrop-filter:blur(10px);color:#ffecdcb8;cursor:pointer;text-align:left;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease)}.dirA-search:hover{background:#1a1310d1;border-color:#ffecdc29}.dirA-search-text{flex:1;font-size:.86rem;color:#ffecdc80}.dirA-search .kbd,.dirA-footer .kbd{font-family:var(--font-mono);font-size:.58rem;padding:2px 7px;border-radius:999px;border:1px solid rgba(255,236,220,.12);background:#ffecdc0a;color:#ffecdcb3}.dirA-filters{display:flex;gap:4px;margin-left:auto;padding:5px;border-radius:10px;background:#1a13109e;border:1px solid rgba(255,236,220,.09);backdrop-filter:blur(10px);flex-wrap:wrap;max-width:48vw}.dirA-filter{appearance:none;border:none;background:transparent;padding:6px 11px;border-radius:8px;font-size:.62rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#ffecdc8a;cursor:pointer;transition:all .16s var(--ease);display:inline-flex;align-items:center;gap:6px}.dirA-filter:hover{color:#fff8ef}.dirA-filter.active{background:#ffecdc14;color:#fff8ef}.dirA-filter .dot{width:7px;height:7px;border-radius:999px;background:var(--tc, rgba(255,236,220,.5));box-shadow:0 0 8px var(--tc, transparent)}.dirA-title{position:absolute;left:28px;top:92px;z-index:15;pointer-events:none;max-width:420px}.dirA-title .eyebrow{font-size:.58rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:#ffecdc85}.dirA-title h1{margin:10px 0 0;font-family:var(--font-display);font-weight:500;font-size:3rem;letter-spacing:-.045em;line-height:.95;color:#fff8ef}.dirA-title h1 em{font-style:italic;font-weight:400;color:#d9a684}.dirA-title .sub{margin-top:14px;font-size:.85rem;line-height:1.55;color:#ffecdc99;max-width:34ch}.dirA-pulse{position:absolute;right:28px;top:94px;z-index:15;display:flex;gap:8px;pointer-events:none}.dirA-pulse-stat{min-width:78px;padding:9px 12px;border-radius:10px;background:#1a13108f;border:1px solid rgba(255,236,220,.08);backdrop-filter:blur(10px)}.dirA-pulse-stat .label{font-size:.5rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#ffecdc80}.dirA-pulse-stat .value{margin-top:4px;font-family:var(--font-display);font-weight:500;font-size:1.4rem;letter-spacing:-.03em;color:#fff8ef;line-height:1}.dirA-stage{position:absolute;inset:0;z-index:5;cursor:grab;overflow:hidden;user-select:none;-webkit-user-select:none;background:radial-gradient(ellipse 70% 55% at 30% 40%,rgba(186,104,68,.1),transparent 70%),radial-gradient(ellipse 55% 45% at 72% 64%,rgba(113,88,170,.08),transparent 70%),radial-gradient(ellipse 50% 40% at 50% 80%,rgba(46,107,91,.07),transparent 70%)}.dirA-stage.dragging{cursor:grabbing}.dirA-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none}.dirA-labels{position:absolute;inset:0;pointer-events:none;z-index:2;font-family:var(--font-sans)}.dirA-lbl{position:absolute;font-size:10.5px;letter-spacing:.01em;color:#fff0dc8c;text-align:center;text-shadow:0 1px 3px rgba(20,14,8,.85),0 0 6px rgba(20,14,8,.6);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .16s ease}.dirA-lbl.hop1{color:#fff4e2eb;font-weight:500;font-size:11px}.dirA-lbl.active{color:#fff8ef;font-weight:600;font-size:12.5px;text-shadow:0 0 10px rgba(255,200,140,.6),0 1px 3px rgba(20,14,8,.9)}.dirA-zoom{position:absolute;right:28px;bottom:22px;z-index:15;display:flex;align-items:center;gap:4px;padding:6px;border-radius:10px;background:#1a1310ad;border:1px solid rgba(255,236,220,.08);backdrop-filter:blur(10px)}.dirA-zoom button{appearance:none;width:30px;height:30px;border:none;background:transparent;color:#ffecdcb3;font-family:var(--font-mono);font-size:.85rem;font-weight:700;cursor:pointer;border-radius:7px;transition:all .16s var(--ease)}.dirA-zoom button:hover{background:#ffecdc14;color:#fff8ef}.dirA-zoom .zoom-val{color:#ffecdc99;font-family:var(--font-mono);font-size:.66rem;padding:0 8px}.dirA-footer{position:absolute;left:28px;bottom:22px;z-index:15;display:flex;align-items:center;gap:14px;padding:8px 14px;border-radius:10px;background:#1a1310ad;border:1px solid rgba(255,236,220,.08);backdrop-filter:blur(10px);font-size:.62rem;color:#ffecdc9e}.dirA-footer .kbd{margin-right:5px}.dirA-footer .sep{width:3px;height:3px;border-radius:999px;background:#ffecdc40}.dirA-empty-hint{position:absolute;right:28px;top:50%;transform:translateY(-50%);z-index:30;width:min(360px,40vw);padding:26px 28px;border-radius:14px;border:1px solid rgba(255,236,220,.1);background:#1a1310c7;backdrop-filter:blur(12px);color:#ffecdcc7;text-align:center}.dirA-empty-hint[hidden]{display:none}.dirA-empty-hint h3{margin:0;font-family:var(--font-display);font-weight:500;font-size:1.6rem;letter-spacing:-.03em;color:#fff8ef}.dirA-empty-hint p{margin:10px 0 0;font-size:.82rem;line-height:1.55}.dirA-reader{position:absolute;top:88px;right:24px;bottom:72px;width:var(--reader-w, min(900px, 62vw));z-index:30;border-radius:16px;border:1px solid rgba(69,53,40,.14);background:linear-gradient(180deg,#faf6f1fa,#f5efe9f5);box-shadow:0 40px 120px #00000080,0 18px 48px #281c123d;color:#1d1712;display:flex;flex-direction:column;overflow:hidden;animation:dirA-reader-in .42s var(--ease) both}.dirA-reader[hidden]{display:none}@keyframes dirA-reader-in{0%{opacity:0;transform:translate(24px) scale(.98)}to{opacity:1;transform:translate(0) scale(1)}}.dirA-reader.resizing{transition:none;user-select:none}.dirA-reader.resizing *{cursor:col-resize!important}.dirA-reader-resizer{position:absolute;top:0;left:-3px;bottom:0;width:8px;cursor:col-resize;z-index:5}.dirA-reader-resizer:before{content:"";position:absolute;left:3px;top:50%;transform:translateY(-50%);width:2px;height:48px;border-radius:999px;background:#45352829;transition:all .16s var(--ease)}.dirA-reader-resizer:hover:before,.dirA-reader.resizing .dirA-reader-resizer:before{background:var(--accent);height:72px}.dirA-reader-progress{position:absolute;top:0;left:0;height:2px;width:0;background:var(--accent-gradient);z-index:10;transition:width 80ms linear}.dirA-reader-chrome{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-bottom:1px solid rgba(69,53,40,.14);background:#ffffff57;backdrop-filter:blur(8px);position:relative;z-index:2}.dirA-reader-breadcrumb{display:flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:.64rem;color:var(--ink-faint);letter-spacing:.02em;overflow:hidden;min-width:0;flex:1}.dirA-reader-breadcrumb svg{flex:0 0 auto;color:var(--ink-faint)}.dirA-reader-breadcrumb .crumb{cursor:pointer;padding:3px 7px;border-radius:5px;color:var(--ink-faint);transition:all .16s var(--ease);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:180px}.dirA-reader-breadcrumb .crumb:hover{color:var(--accent);background:#ba684414}.dirA-reader-breadcrumb .crumb.current{color:var(--ink);font-weight:700}.dirA-reader-breadcrumb .sep{color:var(--ink-faint);opacity:.5}.dirA-reader-nav{display:flex;gap:4px;align-items:center}.dirA-nav-btn{appearance:none;width:30px;height:30px;border-radius:8px;border:1px solid rgba(69,53,40,.14);background:#ffffff80;color:var(--ink-soft);cursor:pointer;display:grid;place-items:center;transition:all .16s var(--ease)}.dirA-nav-btn:hover{background:#ba684414;color:var(--accent);border-color:#ba68444d}.dirA-nav-btn.close{margin-left:8px}.dirA-reader-body{flex:1;overflow-y:auto;padding:36px 56px 56px;position:relative;scroll-behavior:smooth}.dirA-reader-kicker{display:flex;align-items:center;gap:10px;color:var(--ink-faint);font-size:.66rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase}.dirA-reader-type{padding:4px 10px;border-radius:999px;font-size:.58rem;font-weight:800;letter-spacing:.14em}.dirA-reader-title{margin:14px 0 0;font-family:var(--font-display);font-weight:500;font-size:clamp(2.4rem,3.6vw,3.2rem);line-height:.98;letter-spacing:-.05em;color:var(--ink);text-wrap:balance}.dirA-reader-deck{margin:18px 0 0;max-width:52ch;font-family:var(--font-display);font-style:italic;font-weight:400;font-size:1.18rem;line-height:1.5;color:var(--ink-soft)}.dirA-reader-deck:empty{display:none}.dirA-reader-metaline{margin-top:22px;padding:12px 0;border-top:1px solid rgba(69,53,40,.14);border-bottom:1px solid rgba(69,53,40,.14);display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-family:var(--font-mono);font-size:.7rem;color:var(--ink-faint)}.dirA-reader-metaline .slug{color:var(--accent)}.dirA-reader-metaline .tag{padding:2px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.68rem;font-weight:600}.dirA-reader-article{margin-top:28px;position:relative}.dirA-reader-article>.md-body:first-child:first-letter,.dirA-reader-article>.md-h2:first-child+.md-body:first-letter{font-family:var(--font-display);font-weight:500;font-size:4.2rem;line-height:.85;float:left;margin:6px 10px 0 0;color:var(--accent);letter-spacing:-.04em}.md-h1{font-family:var(--font-display);font-weight:500;font-size:2rem;line-height:1.04;margin:40px 0 16px;letter-spacing:-.03em;color:var(--ink)}.md-h2{font-family:var(--font-display);font-weight:500;font-size:1.72rem;line-height:1.08;margin:40px 0 16px;letter-spacing:-.03em;color:var(--ink)}.md-h3{font-family:var(--font-display);font-weight:500;font-size:1.22rem;line-height:1.2;margin:30px 0 12px;letter-spacing:-.02em;color:var(--ink)}.md-body{font-size:1.02rem;line-height:1.82;color:var(--ink-soft);margin:0}.md-body+.md-body{margin-top:14px}.md-body strong,.md-list strong{color:var(--ink)}.md-list{margin:12px 0 12px 22px;padding:0}.md-list li{margin:6px 0;color:var(--ink-soft);line-height:1.75}.md-list li::marker{color:var(--accent)}.md-hr{border:none;border-top:1px solid rgba(69,53,40,.14);margin:28px 0}.md-blockquote{margin:30px -16px;padding:22px 28px;border-left:3px solid var(--accent);background:linear-gradient(90deg,#fff6ebcc,#fff6eb4d);border-radius:0 10px 10px 0;font-family:var(--font-display);font-style:italic;font-size:1.24rem;line-height:1.5;color:var(--ink);position:relative}.md-blockquote:before{content:"\201c";position:absolute;top:-10px;left:12px;font-family:var(--font-display);font-size:4rem;color:#ba684440;line-height:1}.inline-code{font-family:var(--font-mono);padding:2px 7px;border-radius:6px;background:var(--accent-soft);color:#975033;font-size:.88em}.code-block{position:relative;margin:22px 0;padding:20px 22px;background:#191310;color:#ffecdce0;border-radius:10px;overflow-x:auto;font-family:var(--font-mono);font-size:.86rem;line-height:1.55}.code-block .code-lang{display:block;font-size:.58rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#ffecdc73;margin-bottom:8px}.code-block pre{margin:0;white-space:pre}.code-block code{font:inherit}.md-table-wrap{overflow-x:auto;margin:22px 0;border-radius:10px;border:1px solid rgba(69,53,40,.14)}.md-table{width:100%;border-collapse:collapse;font-size:.92rem}.md-table th,.md-table td{padding:10px 14px;border-bottom:1px solid rgba(69,53,40,.14);text-align:left}.md-table th{font-weight:700;color:var(--ink);background:#ffffff80;font-size:.78rem;letter-spacing:.04em}.md-table td{color:var(--ink-soft)}.md-table tr:last-child td{border-bottom:none}.md-image{max-width:100%;border-radius:8px;margin:18px 0}.wikilink{text-decoration:none;font-weight:700;color:var(--accent);cursor:pointer;background-image:linear-gradient(transparent calc(100% - .08em),#ba684447 0);background-repeat:no-repeat;background-size:100% 100%;transition:background-size .16s var(--ease),color .16s var(--ease);padding:0 2px;border-radius:3px}.wikilink:hover{background-size:100% .22em;color:var(--accent-deep)}.wikilink-broken{color:var(--broken);border-bottom:1px dashed rgba(154,113,97,.4)}.external-link{color:var(--accent);text-decoration:underline;text-decoration-color:#ba684466;text-underline-offset:2px}.dirA-links-grid{margin-top:40px;padding-top:28px;border-top:1px solid rgba(69,53,40,.14);display:grid;gap:24px}.dirA-links-grid:empty{display:none}.dirA-links-section-label{color:var(--ink-faint);font-size:.64rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase;display:flex;align-items:center;gap:10px}.dirA-links-section-label .count{padding:1px 8px;border-radius:999px;background:#ba684424;color:var(--accent);font-size:.66rem;letter-spacing:.05em}.dirA-links-list{display:grid;gap:10px;margin-top:14px}.dirA-linkcard{padding:14px 16px;border:1px solid rgba(69,53,40,.14);border-radius:10px;background:#fff6;cursor:pointer;transition:all .16s var(--ease);display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;text-align:left}.dirA-linkcard:hover{background:#ffffffb3;border-color:#ba68444d;transform:translate(3px);box-shadow:0 4px 14px #281c1214}.dirA-linkcard-dot{width:10px;height:10px;border-radius:999px;flex:0 0 auto}.dirA-linkcard-title{color:var(--ink);font-weight:800;font-size:.94rem}.dirA-linkcard-deck{color:var(--ink-soft);font-size:.82rem;line-height:1.45;margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.dirA-linkcard-arrow{color:var(--accent);font-size:1.1rem;font-family:var(--font-display)}.wl-preview{position:fixed;z-index:200;width:340px;padding:16px 18px;border:1px solid rgba(69,53,40,.14);border-radius:12px;background:linear-gradient(180deg,#fbf7f2fa,#f6f1ecf5);box-shadow:0 24px 60px #00000073,0 10px 30px #281c1224;backdrop-filter:blur(10px);animation:wl-in .18s var(--ease) both;color:var(--ink);pointer-events:none}.wl-preview[hidden]{display:none}@keyframes wl-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.wl-preview-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.wl-preview-type{padding:3px 9px;border-radius:999px;font-size:.56rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase}.wl-preview-meta{font-family:var(--font-mono);font-size:.64rem;color:var(--ink-faint);letter-spacing:.04em}.wl-preview-title{margin-top:10px;font-family:var(--font-display);font-size:1.26rem;line-height:1.1;color:var(--ink);letter-spacing:-.02em;font-weight:500}.wl-preview-snippet{margin-top:10px;color:var(--ink-soft);font-size:.86rem;line-height:1.55}.wl-preview-footer{margin-top:12px;padding-top:10px;border-top:1px solid rgba(69,53,40,.1)}.wl-preview-slug{font-family:var(--font-mono);font-size:.64rem;color:var(--accent);letter-spacing:.02em}.overlay{position:fixed;inset:0;z-index:300;display:flex;align-items:flex-start;justify-content:center;padding-top:14vh;background:#0e0a0885;backdrop-filter:blur(6px);animation:overlay-in .16s var(--ease) both}.overlay.hidden{display:none}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}#command-bar{width:min(640px,90vw);border-radius:14px;border:1px solid rgba(255,236,220,.14);background:#1a1310eb;box-shadow:0 40px 120px #0000008c,0 12px 30px #00000059;overflow:hidden;animation:cmd-in .2s var(--ease) both}@keyframes cmd-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.command-input-wrap{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid rgba(255,236,220,.08);color:#ffecdcb8}.command-icon{flex:0 0 auto}#command-input{flex:1;background:transparent;border:none;outline:none;color:#fff8ef;font:inherit;font-size:.98rem}#command-input::placeholder{color:#ffecdc73}.command-kbd{font-family:var(--font-mono);font-size:.6rem;padding:2px 7px;border-radius:999px;border:1px solid rgba(255,236,220,.14);background:#ffecdc0a;color:#ffecdcb3}#command-results{max-height:50vh;overflow-y:auto}.command-result{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid rgba(255,236,220,.04);cursor:pointer;color:#ffecdcd1;transition:background .12s var(--ease)}.command-result:last-child{border-bottom:none}.command-result:hover,.command-result.active{background:#ffecdc0f}.command-result-dot{width:8px;height:8px;border-radius:999px;flex:0 0 auto}.command-result-body{flex:1;min-width:0}.command-result-title{font-weight:600;font-size:.92rem;color:#fff8ef;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.command-result-slug{font-family:var(--font-mono);font-size:.66rem;color:#ffecdc80;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.command-result-type{font-size:.58rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;padding:2px 8px;border-radius:999px;flex:0 0 auto}.command-empty{padding:20px 16px;text-align:center;color:#ffecdc80;font-size:.86rem}@media(max-width:1200px){.dirA-topbar{flex-wrap:wrap;row-gap:10px;padding:14px 18px}.dirA-search{flex:1 1 auto;min-width:240px}.dirA-filters{width:100%;margin-left:0;max-width:none;order:3;justify-content:flex-start;overflow-x:auto;flex-wrap:nowrap}.dirA-pulse{top:auto;bottom:80px;right:18px;flex-wrap:wrap}.dirA-title{left:18px;top:150px;max-width:300px}.dirA-title h1{font-size:2.2rem}.dirA-reader{top:160px;right:14px;bottom:64px}.dirA-empty-hint{top:auto;bottom:90px;right:18px;transform:none}}@media(max-width:820px){.dirA-topbar{padding:10px 14px;gap:10px}.dirA-brand-sub,.dirA-title{display:none}.dirA-pulse{right:14px;bottom:70px;gap:4px}.dirA-pulse-stat{min-width:58px;padding:6px 9px}.dirA-pulse-stat .value{font-size:1.1rem}.dirA-footer{font-size:.56rem;padding:6px 10px;gap:8px}.dirA-footer span:nth-child(n+5){display:none}.dirA-reader{inset:auto 10px 60px;width:auto!important;height:70vh}.dirA-reader-resizer{display:none}.dirA-reader-body{padding:24px 22px 40px}.dirA-empty-hint{inset:auto 14px 74px;transform:none;width:auto}}