@deepcitation/deepcitation-js 1.0.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,768 @@
1
+ /**
2
+ * DeepCitation React Component Styles
3
+ * CSS-only implementation for citation display and popover
4
+ */
5
+
6
+ /* Base citation container */
7
+ .dc-citation {
8
+ position: relative;
9
+ display: inline-flex;
10
+ align-items: baseline;
11
+ cursor: pointer;
12
+ padding: 0.0625rem 0.125rem;
13
+ margin: -0.0625rem -0.125rem;
14
+ border-radius: 0.125rem;
15
+ transition: background-color 0.15s ease-out, box-shadow 0.15s ease-out;
16
+ }
17
+
18
+ /* After first click (pinned), show zoom-in cursor to indicate next click expands image */
19
+ .dc-citation[data-tooltip-expanded="true"][data-has-image="true"] {
20
+ cursor: zoom-in;
21
+ }
22
+
23
+ .dc-citation:hover {
24
+ background-color: var(--dc-hover-bg, rgba(59, 130, 246, 0.08));
25
+ }
26
+
27
+ .dc-citation:active {
28
+ background-color: var(--dc-active-bg, rgba(59, 130, 246, 0.12));
29
+ }
30
+
31
+ /* Citation bracket wrapper */
32
+ .dc-citation-bracket {
33
+ display: inline-flex;
34
+ align-items: baseline;
35
+ justify-content: center;
36
+ gap: 0.125rem;
37
+ white-space: nowrap;
38
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
39
+ font-size: 0.75rem;
40
+ line-height: 1.25;
41
+ color: var(--dc-text-secondary, #64748b);
42
+ transition: color 0.15s ease-out, transform 0.1s ease-out;
43
+ }
44
+
45
+ .dc-citation:hover .dc-citation-bracket {
46
+ color: var(--dc-text-primary, #334155);
47
+ }
48
+
49
+ .dc-citation:active .dc-citation-bracket {
50
+ transform: scale(0.98);
51
+ }
52
+
53
+ /* Citation number/text */
54
+ .dc-citation-text {
55
+ max-width: 20rem;
56
+ overflow: hidden;
57
+ text-overflow: ellipsis;
58
+ }
59
+
60
+ /* Status-specific styles */
61
+ .dc-citation--verified .dc-citation-text {
62
+ color: var(--dc-color-verified, #2563eb);
63
+ }
64
+
65
+ .dc-citation--verified:hover {
66
+ background-color: var(--dc-verified-hover-bg, rgba(37, 99, 235, 0.08));
67
+ }
68
+
69
+ .dc-citation--verified:hover .dc-citation-text {
70
+ text-decoration: underline;
71
+ color: var(--dc-color-verified-hover, #1d4ed8);
72
+ }
73
+
74
+ .dc-citation--miss {
75
+ opacity: 0.7;
76
+ }
77
+
78
+ .dc-citation--miss .dc-citation-text {
79
+ text-decoration: line-through;
80
+ color: var(--dc-text-tertiary, #94a3b8);
81
+ }
82
+
83
+ .dc-citation--miss:hover {
84
+ background-color: var(--dc-miss-hover-bg, rgba(148, 163, 184, 0.1));
85
+ opacity: 1;
86
+ }
87
+
88
+ /* NOTE: Partial matches use the same text styling as verified (blue)
89
+ because they WERE found in the document - they just don't match exactly.
90
+ The indicator shows the match quality (orange for partial). */
91
+
92
+ .dc-citation--pending .dc-citation-text {
93
+ animation: dc-pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;
94
+ }
95
+
96
+ .dc-citation--pending:hover {
97
+ background-color: var(--dc-pending-hover-bg, rgba(100, 116, 139, 0.08));
98
+ }
99
+
100
+ @keyframes dc-pulse {
101
+ 0%, 100% {
102
+ opacity: 1;
103
+ }
104
+ 50% {
105
+ opacity: 0.5;
106
+ }
107
+ }
108
+
109
+ /* Status indicators */
110
+ .dc-indicator {
111
+ display: inline-flex;
112
+ position: relative;
113
+ margin-left: 0.125rem;
114
+ }
115
+
116
+ .dc-indicator--verified {
117
+ color: var(--dc-color-success, #16a34a);
118
+ top: 0.25rem;
119
+ }
120
+
121
+ .dc-indicator--partial {
122
+ color: var(--dc-color-error, #dc2626);
123
+ top: 0.25rem;
124
+ }
125
+
126
+ /* Popover container - CSS only */
127
+ .dc-popover-wrapper {
128
+ position: relative;
129
+ display: inline-flex;
130
+ }
131
+
132
+ .dc-popover {
133
+ position: absolute;
134
+ bottom: 100%;
135
+ left: 50%;
136
+ transform: translateX(-50%) translateY(-0.5rem);
137
+ z-index: 50;
138
+
139
+ display: none;
140
+ flex-direction: column;
141
+ gap: 0.5rem;
142
+
143
+ padding: 0.5rem;
144
+
145
+ background: var(--dc-popover-bg, #ffffff);
146
+ border: 1px solid var(--dc-border-color, #e2e8f0);
147
+ border-radius: 0.375rem;
148
+ box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
149
+
150
+ pointer-events: none;
151
+ opacity: 0;
152
+ transition: opacity 0.15s ease-out;
153
+ }
154
+
155
+ /* Arrow for popover */
156
+ .dc-popover::after {
157
+ content: "";
158
+ position: absolute;
159
+ top: 100%;
160
+ left: 50%;
161
+ transform: translateX(-50%);
162
+ border: 0.375rem solid transparent;
163
+ border-top-color: var(--dc-popover-bg, #ffffff);
164
+ }
165
+
166
+ .dc-popover::before {
167
+ content: "";
168
+ position: absolute;
169
+ top: 100%;
170
+ left: 50%;
171
+ transform: translateX(-50%);
172
+ border: 0.4375rem solid transparent;
173
+ border-top-color: var(--dc-border-color, #e2e8f0);
174
+ }
175
+
176
+ /* Invisible bridge to prevent tooltip from disappearing when moving mouse to it */
177
+ .dc-popover-wrapper::before {
178
+ content: "";
179
+ position: absolute;
180
+ bottom: 100%;
181
+ left: -1rem;
182
+ right: -1rem;
183
+ height: 1.5rem; /* Bridge height to connect to popover */
184
+ background: transparent;
185
+ pointer-events: none;
186
+ }
187
+
188
+ .dc-popover-wrapper:hover::before,
189
+ .dc-popover-wrapper[data-expanded="true"]::before {
190
+ pointer-events: auto;
191
+ }
192
+
193
+ /* Show popover on hover or when expanded via click */
194
+ .dc-popover-wrapper:hover .dc-popover,
195
+ .dc-popover-wrapper:focus-within .dc-popover,
196
+ .dc-popover-wrapper[data-expanded="true"] .dc-popover {
197
+ display: flex;
198
+ opacity: 1;
199
+ pointer-events: auto;
200
+ }
201
+
202
+ /* Popover positioned below */
203
+ .dc-popover--bottom {
204
+ bottom: auto;
205
+ top: 100%;
206
+ transform: translateX(-50%) translateY(0.5rem);
207
+ }
208
+
209
+ .dc-popover--bottom::after {
210
+ top: auto;
211
+ bottom: 100%;
212
+ border-top-color: transparent;
213
+ border-bottom-color: var(--dc-popover-bg, #ffffff);
214
+ }
215
+
216
+ .dc-popover--bottom::before {
217
+ top: auto;
218
+ bottom: 100%;
219
+ border-top-color: transparent;
220
+ border-bottom-color: var(--dc-border-color, #e2e8f0);
221
+ }
222
+
223
+ /* Image-only popover (no padding, natural size) */
224
+ .dc-popover:has(.dc-popover-image-button:only-child) {
225
+ padding: 0;
226
+ min-width: auto;
227
+ max-width: none;
228
+ }
229
+
230
+ .dc-popover:has(.dc-popover-image-button:only-child) .dc-popover-image {
231
+ border-radius: 0.375rem;
232
+ }
233
+
234
+
235
+ /* Verification image in popover - preserve aspect ratio */
236
+ .dc-popover-image {
237
+ display: block;
238
+ width: auto;
239
+ height: auto;
240
+ max-width: 700px;
241
+ max-height: 500px;
242
+ object-fit: contain;
243
+ border-radius: 0.375rem;
244
+ background: var(--dc-image-bg, #f8fafc);
245
+ user-select: none;
246
+ -webkit-user-drag: none;
247
+ cursor: zoom-in;
248
+ }
249
+
250
+ .dc-popover-image-button {
251
+ cursor: zoom-in;
252
+ }
253
+
254
+
255
+ @keyframes dc-fade-in {
256
+ from {
257
+ opacity: 0;
258
+ }
259
+ to {
260
+ opacity: 1;
261
+ }
262
+ }
263
+
264
+ /* ========================================
265
+ Full-size Image Overlay
266
+ ======================================== */
267
+
268
+ .dc-overlay {
269
+ position: fixed;
270
+ top: 0;
271
+ left: 0;
272
+ right: 0;
273
+ bottom: 0;
274
+ z-index: 9999;
275
+ display: flex;
276
+ align-items: center;
277
+ justify-content: center;
278
+ background: rgba(0, 0, 0, 0.8);
279
+ backdrop-filter: blur(4px);
280
+ animation: dc-fade-in 0.15s ease-out;
281
+ }
282
+
283
+ .dc-overlay-content {
284
+ position: relative;
285
+ max-width: 95vw;
286
+ max-height: 95vh;
287
+ display: flex;
288
+ align-items: center;
289
+ justify-content: center;
290
+ cursor: zoom-out;
291
+ }
292
+
293
+ .dc-overlay-image {
294
+ max-width: 100%;
295
+ max-height: 95vh;
296
+ object-fit: contain;
297
+ border-radius: 0.5rem;
298
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
299
+ user-select: none;
300
+ -webkit-user-drag: none;
301
+ }
302
+
303
+ /* Status tooltip for miss/partial explanations */
304
+ .dc-status-tooltip {
305
+ position: absolute;
306
+ bottom: 100%;
307
+ left: 50%;
308
+ transform: translateX(-50%) translateY(-0.5rem);
309
+ z-index: 50;
310
+
311
+ display: none;
312
+ flex-direction: column;
313
+ gap: 0.375rem;
314
+
315
+ padding: 0.625rem 0.75rem;
316
+ min-width: 18rem;
317
+ max-width: 28rem;
318
+
319
+ background: var(--dc-popover-bg, #ffffff);
320
+ border: 1px solid var(--dc-border-color, #e2e8f0);
321
+ border-radius: 0.375rem;
322
+ box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
323
+
324
+ pointer-events: none;
325
+ opacity: 0;
326
+ transition: opacity 0.15s ease-out;
327
+
328
+ font-family: system-ui, -apple-system, sans-serif;
329
+ font-size: 0.75rem;
330
+ line-height: 1.4;
331
+ text-align: left;
332
+ }
333
+
334
+ /* Arrow for status tooltip */
335
+ .dc-status-tooltip::after {
336
+ content: "";
337
+ position: absolute;
338
+ top: 100%;
339
+ left: 50%;
340
+ transform: translateX(-50%);
341
+ border: 0.375rem solid transparent;
342
+ border-top-color: var(--dc-popover-bg, #ffffff);
343
+ }
344
+
345
+ .dc-status-tooltip::before {
346
+ content: "";
347
+ position: absolute;
348
+ top: 100%;
349
+ left: 50%;
350
+ transform: translateX(-50%);
351
+ border: 0.4375rem solid transparent;
352
+ border-top-color: var(--dc-border-color, #e2e8f0);
353
+ }
354
+
355
+ /* Show status tooltip on hover or when expanded via click */
356
+ .dc-popover-wrapper:hover .dc-status-tooltip,
357
+ .dc-popover-wrapper:focus-within .dc-status-tooltip,
358
+ .dc-popover-wrapper[data-expanded="true"] .dc-status-tooltip {
359
+ display: flex;
360
+ opacity: 1;
361
+ pointer-events: auto;
362
+ }
363
+
364
+ /* Status tooltip header */
365
+ .dc-status-header {
366
+ display: flex;
367
+ align-items: center;
368
+ gap: 0.375rem;
369
+ font-weight: 600;
370
+ color: var(--dc-text-primary, #334155);
371
+ }
372
+
373
+ .dc-status-header--miss {
374
+ color: var(--dc-color-warning, #d97706);
375
+ }
376
+
377
+ .dc-status-header--partial {
378
+ color: var(--dc-color-error, #dc2626);
379
+ }
380
+
381
+ /* Status icon */
382
+ .dc-status-icon {
383
+ display: inline-flex;
384
+ flex-shrink: 0;
385
+ width: 0.875rem;
386
+ height: 0.875rem;
387
+ }
388
+
389
+ /* Status description */
390
+ .dc-status-description {
391
+ color: var(--dc-text-secondary, #64748b);
392
+ font-size: 0.6875rem;
393
+ }
394
+
395
+ /* Expected/Searched text block */
396
+ .dc-status-searched {
397
+ display: flex;
398
+ flex-direction: column;
399
+ gap: 0.25rem;
400
+ margin-top: 0.25rem;
401
+ padding-top: 0.375rem;
402
+ border-top: 1px solid var(--dc-border-color, #e2e8f0);
403
+ }
404
+
405
+ .dc-status-label {
406
+ font-size: 0.625rem;
407
+ font-weight: 600;
408
+ text-transform: uppercase;
409
+ letter-spacing: 0.025em;
410
+ color: var(--dc-text-tertiary, #94a3b8);
411
+ }
412
+
413
+ .dc-status-text {
414
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
415
+ font-size: 0.6875rem;
416
+ padding: 0.375rem 0.5rem;
417
+ background: var(--dc-code-bg, #f1f5f9);
418
+ border-radius: 0.25rem;
419
+ color: var(--dc-text-primary, #334155);
420
+ word-break: break-word;
421
+ max-height: 4rem;
422
+ overflow: hidden;
423
+ text-overflow: ellipsis;
424
+ }
425
+
426
+ /* Dark mode support */
427
+ @media (prefers-color-scheme: dark) {
428
+ .dc-status-tooltip {
429
+ --dc-popover-bg: #1e293b;
430
+ --dc-border-color: #334155;
431
+ --dc-text-primary: #e2e8f0;
432
+ --dc-text-secondary: #94a3b8;
433
+ --dc-text-tertiary: #64748b;
434
+ --dc-code-bg: #0f172a;
435
+ --dc-color-warning: #fbbf24;
436
+ --dc-color-error: #f87171;
437
+ }
438
+ }
439
+
440
+ /* ========================================
441
+ Search Phrases Section (simplified)
442
+ ======================================== */
443
+
444
+ .dc-search-phrases {
445
+ display: flex;
446
+ flex-direction: column;
447
+ gap: 0.375rem;
448
+ margin-top: 0.375rem;
449
+ }
450
+
451
+ .dc-search-phrases-header {
452
+ display: flex;
453
+ align-items: center;
454
+ gap: 0.5rem;
455
+ }
456
+
457
+ .dc-search-phrases-toggle {
458
+ background: none;
459
+ border: none;
460
+ color: var(--dc-text-tertiary, #94a3b8);
461
+ font-size: 0.625rem;
462
+ cursor: pointer;
463
+ text-decoration: underline;
464
+ text-underline-offset: 2px;
465
+ padding: 0;
466
+ }
467
+
468
+ .dc-search-phrases-toggle:hover {
469
+ color: var(--dc-text-secondary, #64748b);
470
+ }
471
+
472
+ .dc-search-phrases-list {
473
+ display: flex;
474
+ flex-direction: column;
475
+ gap: 0.25rem;
476
+ max-height: 10rem;
477
+ overflow-y: auto;
478
+ }
479
+
480
+ .dc-search-phrase-item {
481
+ padding: 0.375rem 0.5rem;
482
+ border-left: 3px solid var(--dc-color-error, #dc2626);
483
+ background: var(--dc-code-bg, #f1f5f9);
484
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
485
+ font-size: 0.6875rem;
486
+ line-height: 1.4;
487
+ color: var(--dc-text-primary, #334155);
488
+ word-break: break-word;
489
+ }
490
+
491
+ .dc-search-phrase-more {
492
+ font-size: 0.625rem;
493
+ color: var(--dc-text-tertiary, #94a3b8);
494
+ padding-left: 0.5rem;
495
+ }
496
+
497
+ /* Dark mode support for search phrases */
498
+ @media (prefers-color-scheme: dark) {
499
+ .dc-search-phrase-item {
500
+ --dc-code-bg: #0f172a;
501
+ --dc-text-primary: #e2e8f0;
502
+ --dc-color-error: #f87171;
503
+ }
504
+ }
505
+
506
+ /* ========================================
507
+ Diff Display Styles
508
+ ======================================== */
509
+
510
+ .dc-diff-display {
511
+ display: flex;
512
+ flex-direction: column;
513
+ gap: 0.5rem;
514
+ }
515
+
516
+ .dc-diff-label {
517
+ font-size: 0.75rem;
518
+ font-weight: 500;
519
+ margin-bottom: 0.5rem;
520
+ color: var(--dc-text-secondary, #64748b);
521
+ }
522
+
523
+ .dc-diff-content {
524
+ font-size: 0.75rem;
525
+ line-height: 1.5;
526
+ }
527
+
528
+ .dc-diff-blocks {
529
+ display: flex;
530
+ flex-direction: column;
531
+ gap: 0.125rem;
532
+ }
533
+
534
+ .dc-diff-block {
535
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
536
+ white-space: pre-wrap;
537
+ word-break: break-word;
538
+ }
539
+
540
+ .dc-diff-block--added {
541
+ background-color: var(--dc-diff-added-bg, rgba(16, 185, 129, 0.08));
542
+ padding: 0 0.25rem;
543
+ border-radius: 0.125rem;
544
+ }
545
+
546
+ .dc-diff-block-added {
547
+ background-color: var(--dc-diff-added-bg, rgba(16, 185, 129, 0.05));
548
+ padding: 0.125rem 0.25rem;
549
+ border-radius: 0.125rem;
550
+ }
551
+
552
+ .dc-diff-part {
553
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
554
+ }
555
+
556
+ .dc-diff-part--removed {
557
+ text-decoration: line-through;
558
+ text-decoration-thickness: 2px;
559
+ text-decoration-color: var(--dc-diff-removed-color, rgba(239, 68, 68, 0.5));
560
+ opacity: 0.6;
561
+ color: var(--dc-diff-removed-text, #ef4444);
562
+ margin: 0 0.125rem;
563
+ }
564
+
565
+ .dc-diff-part--removed:hover {
566
+ opacity: 1;
567
+ text-decoration: none;
568
+ }
569
+
570
+ .dc-diff-part--added {
571
+ text-decoration: underline;
572
+ text-decoration-thickness: 2px;
573
+ background-color: var(--dc-diff-added-highlight, rgba(16, 185, 129, 0.1));
574
+ color: var(--dc-text-primary, #334155);
575
+ margin: 0 0.125rem;
576
+ padding: 0 0.125rem;
577
+ border-radius: 0.0625rem;
578
+ }
579
+
580
+ .dc-diff-part--unchanged {
581
+ opacity: 0.9;
582
+ color: var(--dc-text-primary, #334155);
583
+ }
584
+
585
+ /* ========================================
586
+ Verification Tabs Styles
587
+ ======================================== */
588
+
589
+ .dc-verification-tabs {
590
+ display: flex;
591
+ flex-direction: column;
592
+ width: 100%;
593
+ }
594
+
595
+ .dc-verification-tabs--exact {
596
+ display: flex;
597
+ flex-direction: column;
598
+ width: 100%;
599
+ }
600
+
601
+ .dc-verification-label {
602
+ font-size: 0.75rem;
603
+ font-weight: 500;
604
+ margin-bottom: 0.5rem;
605
+ padding: 0 1rem;
606
+ color: var(--dc-text-secondary, #64748b);
607
+ }
608
+
609
+ .dc-tabs-container {
610
+ padding: 0.5rem 1rem 0.75rem;
611
+ }
612
+
613
+ .dc-tabs-nav {
614
+ display: flex;
615
+ padding: 0.25rem;
616
+ background-color: var(--dc-tabs-bg, #f1f5f9);
617
+ border: 1px solid var(--dc-border-color, #e2e8f0);
618
+ user-select: none;
619
+ }
620
+
621
+ .dc-tab-button {
622
+ flex: 1;
623
+ padding: 0.375rem 0.5rem;
624
+ font-size: 0.625rem;
625
+ font-weight: 700;
626
+ text-transform: uppercase;
627
+ letter-spacing: 0.05em;
628
+ border-radius: 0.125rem;
629
+ transition: all 0.1s ease-out;
630
+ background: transparent;
631
+ border: none;
632
+ cursor: pointer;
633
+ color: var(--dc-tab-inactive, #94a3b8);
634
+ }
635
+
636
+ .dc-tab-button:hover {
637
+ color: var(--dc-tab-hover, #64748b);
638
+ background-color: var(--dc-tab-hover-bg, rgba(148, 163, 184, 0.1));
639
+ }
640
+
641
+ .dc-tab-button--active {
642
+ background-color: var(--dc-tab-active-bg, #ffffff);
643
+ color: var(--dc-text-primary, #334155);
644
+ transform: scale(1.02);
645
+ }
646
+
647
+ .dc-tabs-content {
648
+ padding: 0 1rem 1rem;
649
+ min-height: 2.5rem;
650
+ font-size: 0.75rem;
651
+ line-height: 1.5;
652
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
653
+ }
654
+
655
+ .dc-tab-content {
656
+ animation: dc-fade-in 0.1s ease-out;
657
+ }
658
+
659
+ .dc-tab-content--found {
660
+ /* Specific styles for found tab */
661
+ }
662
+
663
+ .dc-tab-content--expected {
664
+ color: var(--dc-text-secondary, #64748b);
665
+ }
666
+
667
+ .dc-tab-content--diff {
668
+ /* Specific styles for diff tab */
669
+ }
670
+
671
+ .dc-tab-text-wrapper {
672
+ position: relative;
673
+ padding: 0.5rem;
674
+ }
675
+
676
+ .dc-tab-text {
677
+ /* Base text styling */
678
+ }
679
+
680
+ .dc-copy-button-wrapper {
681
+ position: absolute;
682
+ top: 0;
683
+ right: 1rem;
684
+ z-index: 10;
685
+ }
686
+
687
+ .dc-tab-empty {
688
+ color: var(--dc-text-tertiary, #94a3b8);
689
+ font-style: italic;
690
+ }
691
+
692
+ .dc-exact-match-badge {
693
+ display: flex;
694
+ align-items: center;
695
+ justify-content: center;
696
+ gap: 0.5rem;
697
+ padding: 0.5rem 0.75rem;
698
+ font-size: 0.875rem;
699
+ font-weight: 600;
700
+ }
701
+
702
+ .dc-exact-match-content {
703
+ padding: 0 1rem 1rem;
704
+ min-height: 2.5rem;
705
+ font-size: 0.75rem;
706
+ line-height: 1.5;
707
+ font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
708
+ }
709
+
710
+ .dc-exact-match-indicator {
711
+ display: flex;
712
+ align-items: center;
713
+ gap: 0.5rem;
714
+ padding: 0.5rem;
715
+ font-weight: 600;
716
+ }
717
+
718
+ .dc-check-icon {
719
+ display: inline-flex;
720
+ flex-shrink: 0;
721
+ width: 0.6rem;
722
+ height: 0.6rem;
723
+ }
724
+
725
+ .dc-diff-result {
726
+ word-break: break-word;
727
+ white-space: pre-wrap;
728
+ position: relative;
729
+ }
730
+
731
+ .dc-diff-block--added {
732
+ background-color: var(--dc-diff-added-block-bg, rgba(236, 253, 245, 1));
733
+ margin: 0 -0.25rem;
734
+ padding: 0 0.25rem;
735
+ border-radius: 0.125rem;
736
+ }
737
+
738
+ .dc-diff-block--removed {
739
+ background-color: var(--dc-diff-removed-block-bg, rgba(254, 242, 242, 1));
740
+ margin: 0 -0.25rem;
741
+ padding: 0 0.25rem;
742
+ border-radius: 0.125rem;
743
+ opacity: 0.6;
744
+ }
745
+
746
+ /* Dark mode for diff and tabs */
747
+ @media (prefers-color-scheme: dark) {
748
+ .dc-tabs-nav {
749
+ --dc-tabs-bg: #1e293b;
750
+ --dc-border-color: #334155;
751
+ }
752
+
753
+ .dc-tab-button--active {
754
+ --dc-tab-active-bg: #475569;
755
+ }
756
+
757
+ .dc-diff-block--added {
758
+ --dc-diff-added-block-bg: rgba(16, 185, 129, 0.15);
759
+ }
760
+
761
+ .dc-diff-block--removed {
762
+ --dc-diff-removed-block-bg: rgba(239, 68, 68, 0.1);
763
+ }
764
+
765
+ .dc-diff-part--added {
766
+ --dc-diff-added-highlight: rgba(16, 185, 129, 0.25);
767
+ }
768
+ }