@in-the-loop-labs/pair-review 1.6.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -4
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/skills/review-requests/SKILL.md +4 -1
- package/plugin-code-critic/.claude-plugin/plugin.json +1 -1
- package/plugin-code-critic/skills/analyze/SKILL.md +4 -3
- package/public/css/pr.css +1930 -114
- package/public/js/CONVENTIONS.md +16 -0
- package/public/js/components/AIPanel.js +66 -0
- package/public/js/components/AnalysisConfigModal.js +2 -2
- package/public/js/components/ChatPanel.js +2952 -0
- package/public/js/components/CouncilProgressModal.js +12 -16
- package/public/js/components/KeyboardShortcuts.js +3 -0
- package/public/js/components/PanelGroup.js +723 -0
- package/public/js/components/PreviewModal.js +3 -8
- package/public/js/index.js +8 -0
- package/public/js/local.js +17 -615
- package/public/js/modules/analysis-history.js +19 -68
- package/public/js/modules/comment-manager.js +57 -19
- package/public/js/modules/diff-context.js +176 -0
- package/public/js/modules/diff-renderer.js +30 -0
- package/public/js/modules/file-comment-manager.js +126 -105
- package/public/js/modules/file-list-merger.js +64 -0
- package/public/js/modules/panel-resizer.js +25 -6
- package/public/js/modules/suggestion-manager.js +40 -125
- package/public/js/pr.js +964 -159
- package/public/js/repo-settings.js +36 -6
- package/public/js/utils/category-emoji.js +44 -0
- package/public/js/utils/time.js +32 -0
- package/public/local.html +107 -70
- package/public/pr.html +107 -70
- package/public/repo-settings.html +32 -0
- package/src/ai/analyzer.js +5 -1
- package/src/ai/copilot-provider.js +39 -9
- package/src/ai/cursor-agent-provider.js +36 -7
- package/src/ai/gemini-provider.js +17 -4
- package/src/ai/prompts/config.js +7 -1
- package/src/ai/provider-availability.js +1 -1
- package/src/ai/provider.js +25 -37
- package/src/chat/CONVENTIONS.md +18 -0
- package/src/chat/pi-bridge.js +491 -0
- package/src/chat/prompt-builder.js +262 -0
- package/src/chat/session-manager.js +619 -0
- package/src/config.js +14 -0
- package/src/database.js +322 -15
- package/src/main.js +4 -17
- package/src/routes/analyses.js +721 -0
- package/src/routes/chat.js +655 -0
- package/src/routes/config.js +29 -8
- package/src/routes/context-files.js +223 -0
- package/src/routes/local.js +225 -1133
- package/src/routes/mcp.js +39 -30
- package/src/routes/pr.js +410 -52
- package/src/routes/reviews.js +1035 -0
- package/src/routes/shared.js +4 -29
- package/src/server.js +34 -12
- package/src/sse/review-events.js +46 -0
- package/src/utils/auto-context.js +88 -0
- package/src/utils/category-emoji.js +33 -0
- package/src/utils/diff-file-list.js +57 -0
- package/src/routes/analysis.js +0 -1600
- package/src/routes/comments.js +0 -534
package/public/css/pr.css
CHANGED
|
@@ -629,6 +629,12 @@
|
|
|
629
629
|
--ai-border: rgba(217, 119, 6, 0.3);
|
|
630
630
|
--ai-text: #92400e;
|
|
631
631
|
|
|
632
|
+
/* Chat Identity - Blue accent for chat panel */
|
|
633
|
+
--chat-primary: #2563eb;
|
|
634
|
+
--chat-subtle: rgba(37, 99, 235, 0.08);
|
|
635
|
+
--chat-border: rgba(37, 99, 235, 0.2);
|
|
636
|
+
--chat-text: #1e40af;
|
|
637
|
+
|
|
632
638
|
/* Category colors for AI suggestions */
|
|
633
639
|
--category-bug: #dc2626;
|
|
634
640
|
--category-bug-bg: #fef2f2;
|
|
@@ -720,6 +726,12 @@
|
|
|
720
726
|
--ai-border: rgba(245, 158, 11, 0.3);
|
|
721
727
|
--ai-text: #fcd34d;
|
|
722
728
|
|
|
729
|
+
/* Chat Identity - Blue accent for dark theme */
|
|
730
|
+
--chat-primary: #60a5fa;
|
|
731
|
+
--chat-subtle: rgba(96, 165, 250, 0.1);
|
|
732
|
+
--chat-border: rgba(96, 165, 250, 0.2);
|
|
733
|
+
--chat-text: #93c5fd;
|
|
734
|
+
|
|
723
735
|
/* Category colors for dark theme */
|
|
724
736
|
--category-bug: #f87171;
|
|
725
737
|
--category-bug-bg: rgba(248, 113, 113, 0.1);
|
|
@@ -1346,8 +1358,9 @@
|
|
|
1346
1358
|
white-space: nowrap;
|
|
1347
1359
|
}
|
|
1348
1360
|
|
|
1349
|
-
/* File header comment button */
|
|
1350
|
-
.file-header-comment-btn
|
|
1361
|
+
/* File header comment button and file header chat button */
|
|
1362
|
+
.file-header-comment-btn,
|
|
1363
|
+
.file-header-chat-btn {
|
|
1351
1364
|
display: flex;
|
|
1352
1365
|
align-items: center;
|
|
1353
1366
|
justify-content: center;
|
|
@@ -1363,26 +1376,31 @@
|
|
|
1363
1376
|
flex-shrink: 0;
|
|
1364
1377
|
}
|
|
1365
1378
|
|
|
1366
|
-
.file-header-comment-btn:hover
|
|
1379
|
+
.file-header-comment-btn:hover,
|
|
1380
|
+
.file-header-chat-btn:hover {
|
|
1367
1381
|
background-color: var(--color-accent-bg, rgba(9, 105, 218, 0.1));
|
|
1368
1382
|
border-color: var(--color-accent-primary, #0969da);
|
|
1369
1383
|
color: var(--color-accent-primary, #0969da);
|
|
1370
1384
|
}
|
|
1371
1385
|
|
|
1372
|
-
.file-header-comment-btn:active
|
|
1386
|
+
.file-header-comment-btn:active,
|
|
1387
|
+
.file-header-chat-btn:active {
|
|
1373
1388
|
background-color: var(--color-accent-bg, rgba(9, 105, 218, 0.15));
|
|
1374
1389
|
}
|
|
1375
1390
|
|
|
1376
|
-
.file-header-comment-btn svg
|
|
1391
|
+
.file-header-comment-btn svg,
|
|
1392
|
+
.file-header-chat-btn svg {
|
|
1377
1393
|
width: 16px;
|
|
1378
1394
|
height: 16px;
|
|
1379
1395
|
}
|
|
1380
1396
|
|
|
1381
|
-
[data-theme="dark"] .file-header-comment-btn
|
|
1397
|
+
[data-theme="dark"] .file-header-comment-btn,
|
|
1398
|
+
[data-theme="dark"] .file-header-chat-btn {
|
|
1382
1399
|
color: #8b949e;
|
|
1383
1400
|
}
|
|
1384
1401
|
|
|
1385
|
-
[data-theme="dark"] .file-header-comment-btn:hover
|
|
1402
|
+
[data-theme="dark"] .file-header-comment-btn:hover,
|
|
1403
|
+
[data-theme="dark"] .file-header-chat-btn:hover {
|
|
1386
1404
|
background-color: rgba(56, 139, 253, 0.15);
|
|
1387
1405
|
border-color: #58a6ff;
|
|
1388
1406
|
color: #58a6ff;
|
|
@@ -1734,8 +1752,9 @@ tr.newly-expanded .d2h-code-line-ctn {
|
|
|
1734
1752
|
animation: slideUp 0.3s ease;
|
|
1735
1753
|
overflow: visible;
|
|
1736
1754
|
word-break: break-word;
|
|
1737
|
-
/* Viewport-based max-width: total viewport minus sidebar,
|
|
1738
|
-
|
|
1755
|
+
/* Viewport-based max-width: total viewport minus sidebar, right panel group, and padding.
|
|
1756
|
+
--right-panel-group-width is set by PanelGroup.js (sum for horizontal, max for vertical). */
|
|
1757
|
+
max-width: calc(100vw - var(--sidebar-width) - var(--right-panel-group-width, 0px) - 64px);
|
|
1739
1758
|
box-sizing: border-box;
|
|
1740
1759
|
}
|
|
1741
1760
|
|
|
@@ -2293,6 +2312,19 @@ tr.newly-expanded .d2h-code-line-ctn {
|
|
|
2293
2312
|
background: rgba(248, 81, 73, 0.15);
|
|
2294
2313
|
}
|
|
2295
2314
|
|
|
2315
|
+
/* Chat button: neutral style, blue on hover (matches Edit button) */
|
|
2316
|
+
.ai-action-chat {
|
|
2317
|
+
background: var(--color-bg-elevated, #1e2329);
|
|
2318
|
+
color: var(--color-text-secondary, #8b949e);
|
|
2319
|
+
border: 1px solid var(--color-border-default, rgba(255, 255, 255, 0.1));
|
|
2320
|
+
}
|
|
2321
|
+
|
|
2322
|
+
.ai-action-chat:hover {
|
|
2323
|
+
background: var(--color-accent-light, rgba(56, 139, 253, 0.15));
|
|
2324
|
+
color: var(--color-accent-primary, #58a6ff);
|
|
2325
|
+
border-color: var(--color-accent-primary, #58a6ff);
|
|
2326
|
+
}
|
|
2327
|
+
|
|
2296
2328
|
/* Icon styling inside action buttons */
|
|
2297
2329
|
.ai-action svg {
|
|
2298
2330
|
width: 12px;
|
|
@@ -2453,6 +2485,34 @@ tr.newly-expanded .d2h-code-line-ctn {
|
|
|
2453
2485
|
fill: var(--color-text-primary);
|
|
2454
2486
|
}
|
|
2455
2487
|
|
|
2488
|
+
/* Chat button in collapsed suggestion bar - icon only, transparent */
|
|
2489
|
+
.btn-collapsed-chat {
|
|
2490
|
+
color: var(--color-text-tertiary, #6e7681);
|
|
2491
|
+
background-color: transparent;
|
|
2492
|
+
border: none;
|
|
2493
|
+
padding: 2px;
|
|
2494
|
+
font-size: 12px;
|
|
2495
|
+
cursor: pointer;
|
|
2496
|
+
display: inline-flex;
|
|
2497
|
+
align-items: center;
|
|
2498
|
+
justify-content: center;
|
|
2499
|
+
border-radius: 4px;
|
|
2500
|
+
min-height: 24px;
|
|
2501
|
+
min-width: 24px;
|
|
2502
|
+
transition: color 150ms ease, background 150ms ease;
|
|
2503
|
+
}
|
|
2504
|
+
|
|
2505
|
+
.btn-collapsed-chat:hover {
|
|
2506
|
+
color: var(--color-accent-primary, #58a6ff);
|
|
2507
|
+
background-color: var(--color-accent-light, rgba(56, 139, 253, 0.15));
|
|
2508
|
+
}
|
|
2509
|
+
|
|
2510
|
+
.btn-collapsed-chat svg {
|
|
2511
|
+
width: 14px;
|
|
2512
|
+
height: 14px;
|
|
2513
|
+
fill: currentColor;
|
|
2514
|
+
}
|
|
2515
|
+
|
|
2456
2516
|
/* Dark theme adjustments for AI suggestions - matches prototype styling */
|
|
2457
2517
|
[data-theme="dark"] .ai-suggestion {
|
|
2458
2518
|
background: #181c23; /* Exact prototype --bg-tertiary value */
|
|
@@ -3628,6 +3688,50 @@ tr:hover .add-comment-btn {
|
|
|
3628
3688
|
opacity: 1;
|
|
3629
3689
|
}
|
|
3630
3690
|
|
|
3691
|
+
/* Gutter chat button — matches .add-comment-btn style */
|
|
3692
|
+
.chat-line-btn {
|
|
3693
|
+
position: absolute;
|
|
3694
|
+
right: 12px; /* Left of the + button at right: -12px */
|
|
3695
|
+
top: 50%;
|
|
3696
|
+
transform: translateY(-50%);
|
|
3697
|
+
width: 22px;
|
|
3698
|
+
height: 22px;
|
|
3699
|
+
background: linear-gradient(180deg, #0969da 0%, #0860ca 100%);
|
|
3700
|
+
color: #fff;
|
|
3701
|
+
border: none;
|
|
3702
|
+
border-radius: 6px;
|
|
3703
|
+
cursor: pointer;
|
|
3704
|
+
opacity: 0;
|
|
3705
|
+
transition: opacity 0.1s ease, transform 0.1s ease, box-shadow 0.1s ease;
|
|
3706
|
+
z-index: 20;
|
|
3707
|
+
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.08);
|
|
3708
|
+
display: flex;
|
|
3709
|
+
align-items: center;
|
|
3710
|
+
justify-content: center;
|
|
3711
|
+
pointer-events: auto;
|
|
3712
|
+
padding: 0;
|
|
3713
|
+
}
|
|
3714
|
+
|
|
3715
|
+
.chat-line-btn svg {
|
|
3716
|
+
width: 12px;
|
|
3717
|
+
height: 12px;
|
|
3718
|
+
}
|
|
3719
|
+
|
|
3720
|
+
.chat-line-btn:hover {
|
|
3721
|
+
background: linear-gradient(180deg, #0860ca 0%, #0757b8 100%);
|
|
3722
|
+
transform: translateY(-50%) scale(1.08);
|
|
3723
|
+
box-shadow: 0 2px 6px rgba(9, 105, 218, 0.35), 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
3724
|
+
}
|
|
3725
|
+
|
|
3726
|
+
.chat-line-btn:active {
|
|
3727
|
+
transform: translateY(-50%) scale(0.96);
|
|
3728
|
+
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
|
|
3729
|
+
}
|
|
3730
|
+
|
|
3731
|
+
tr:hover .chat-line-btn {
|
|
3732
|
+
opacity: 1;
|
|
3733
|
+
}
|
|
3734
|
+
|
|
3631
3735
|
/* Line range selection */
|
|
3632
3736
|
.line-range-selected,
|
|
3633
3737
|
tr.line-range-selected,
|
|
@@ -3889,8 +3993,9 @@ tr.line-range-start .d2h-code-line-ctn {
|
|
|
3889
3993
|
position: relative;
|
|
3890
3994
|
overflow: hidden;
|
|
3891
3995
|
word-break: break-word;
|
|
3892
|
-
/* Viewport-based max-width: total viewport minus sidebar,
|
|
3893
|
-
|
|
3996
|
+
/* Viewport-based max-width: total viewport minus sidebar, right panel group, and padding.
|
|
3997
|
+
--right-panel-group-width is set by PanelGroup.js (sum for horizontal, max for vertical). */
|
|
3998
|
+
max-width: calc(100vw - var(--sidebar-width) - var(--right-panel-group-width, 0px) - 64px);
|
|
3894
3999
|
box-sizing: border-box;
|
|
3895
4000
|
}
|
|
3896
4001
|
|
|
@@ -4045,21 +4150,12 @@ tr.line-range-start .d2h-code-line-ctn {
|
|
|
4045
4150
|
}
|
|
4046
4151
|
|
|
4047
4152
|
|
|
4048
|
-
.user-comment-timestamp {
|
|
4049
|
-
color: #656d76;
|
|
4050
|
-
font-size: 11px;
|
|
4051
|
-
font-weight: 500;
|
|
4052
|
-
background: rgba(139, 92, 246, 0.05);
|
|
4053
|
-
padding: 2px 6px;
|
|
4054
|
-
border-radius: 10px;
|
|
4055
|
-
margin-left: auto;
|
|
4056
|
-
margin-right: 6px;
|
|
4057
|
-
}
|
|
4058
4153
|
|
|
4059
4154
|
.user-comment-actions {
|
|
4060
4155
|
display: flex;
|
|
4061
4156
|
align-items: center;
|
|
4062
4157
|
gap: 4px;
|
|
4158
|
+
margin-left: auto;
|
|
4063
4159
|
}
|
|
4064
4160
|
|
|
4065
4161
|
/* Hide edit/delete buttons when in editing mode */
|
|
@@ -4067,6 +4163,7 @@ tr.line-range-start .d2h-code-line-ctn {
|
|
|
4067
4163
|
display: none;
|
|
4068
4164
|
}
|
|
4069
4165
|
|
|
4166
|
+
.btn-chat-comment,
|
|
4070
4167
|
.btn-edit-comment,
|
|
4071
4168
|
.btn-delete-comment {
|
|
4072
4169
|
background: transparent;
|
|
@@ -4080,16 +4177,29 @@ tr.line-range-start .d2h-code-line-ctn {
|
|
|
4080
4177
|
align-items: center;
|
|
4081
4178
|
}
|
|
4082
4179
|
|
|
4180
|
+
[data-theme="dark"] .btn-chat-comment,
|
|
4083
4181
|
[data-theme="dark"] .btn-edit-comment,
|
|
4084
4182
|
[data-theme="dark"] .btn-delete-comment {
|
|
4085
4183
|
color: #c9d1d9;
|
|
4086
4184
|
}
|
|
4087
4185
|
|
|
4186
|
+
.btn-chat-comment svg,
|
|
4088
4187
|
.btn-edit-comment svg,
|
|
4089
4188
|
.btn-delete-comment svg {
|
|
4090
4189
|
fill: currentColor;
|
|
4091
4190
|
}
|
|
4092
4191
|
|
|
4192
|
+
.btn-chat-comment svg {
|
|
4193
|
+
width: 14px;
|
|
4194
|
+
height: 14px;
|
|
4195
|
+
}
|
|
4196
|
+
|
|
4197
|
+
.btn-chat-comment:hover {
|
|
4198
|
+
background: var(--color-accent-light, rgba(139, 92, 246, 0.1));
|
|
4199
|
+
border-color: var(--color-accent-primary, #8b5cf6);
|
|
4200
|
+
color: var(--color-accent-primary, #8b5cf6);
|
|
4201
|
+
}
|
|
4202
|
+
|
|
4093
4203
|
.btn-edit-comment:hover {
|
|
4094
4204
|
background: rgba(139, 92, 246, 0.1);
|
|
4095
4205
|
border-color: #8b5cf6;
|
|
@@ -4116,6 +4226,12 @@ tr.line-range-start .d2h-code-line-ctn {
|
|
|
4116
4226
|
display: none;
|
|
4117
4227
|
}
|
|
4118
4228
|
|
|
4229
|
+
/* File-comment-card editing puts the textarea inside .user-comment-body,
|
|
4230
|
+
so we must keep the body visible (the content is already replaced). */
|
|
4231
|
+
.file-comment-card.editing-mode .user-comment-body {
|
|
4232
|
+
display: block;
|
|
4233
|
+
}
|
|
4234
|
+
|
|
4119
4235
|
.user-comment-edit-form,
|
|
4120
4236
|
.comment-edit-textarea {
|
|
4121
4237
|
width: 100%;
|
|
@@ -4202,6 +4318,12 @@ tr.line-range-start .d2h-code-line-ctn {
|
|
|
4202
4318
|
box-shadow: 0 0 0 3px rgba(167, 139, 250, 0.2);
|
|
4203
4319
|
}
|
|
4204
4320
|
|
|
4321
|
+
[data-theme="dark"] .btn-chat-comment:hover {
|
|
4322
|
+
background: rgba(167, 139, 250, 0.15);
|
|
4323
|
+
border-color: #a78bfa;
|
|
4324
|
+
color: #a78bfa;
|
|
4325
|
+
}
|
|
4326
|
+
|
|
4205
4327
|
[data-theme="dark"] .btn-edit-comment:hover {
|
|
4206
4328
|
background: rgba(167, 139, 250, 0.15);
|
|
4207
4329
|
border-color: #a78bfa;
|
|
@@ -4220,6 +4342,7 @@ tr.line-range-start .d2h-code-line-ctn {
|
|
|
4220
4342
|
margin-top: 8px;
|
|
4221
4343
|
}
|
|
4222
4344
|
|
|
4345
|
+
|
|
4223
4346
|
/* Review Submission Panel */
|
|
4224
4347
|
.review-panel {
|
|
4225
4348
|
position: fixed;
|
|
@@ -4393,11 +4516,6 @@ tr.line-range-start .d2h-code-line-ctn {
|
|
|
4393
4516
|
border-bottom-color: rgba(167, 139, 250, 0.1);
|
|
4394
4517
|
}
|
|
4395
4518
|
|
|
4396
|
-
[data-theme="dark"] .user-comment-timestamp {
|
|
4397
|
-
background: rgba(167, 139, 250, 0.1);
|
|
4398
|
-
color: #8b949e;
|
|
4399
|
-
}
|
|
4400
|
-
|
|
4401
4519
|
[data-theme="dark"] .user-comment-body {
|
|
4402
4520
|
color: #e6edf3;
|
|
4403
4521
|
}
|
|
@@ -5478,6 +5596,41 @@ tr.line-range-start .d2h-code-line-ctn {
|
|
|
5478
5596
|
color: var(--color-text-muted);
|
|
5479
5597
|
}
|
|
5480
5598
|
|
|
5599
|
+
.analysis-history-chat-btn {
|
|
5600
|
+
width: 22px;
|
|
5601
|
+
height: 22px;
|
|
5602
|
+
padding: 0;
|
|
5603
|
+
margin-left: auto;
|
|
5604
|
+
border: 1px solid transparent;
|
|
5605
|
+
box-sizing: border-box;
|
|
5606
|
+
border-radius: 4px;
|
|
5607
|
+
background: transparent;
|
|
5608
|
+
color: var(--color-fg-muted);
|
|
5609
|
+
cursor: pointer;
|
|
5610
|
+
display: inline-flex;
|
|
5611
|
+
align-items: center;
|
|
5612
|
+
justify-content: center;
|
|
5613
|
+
opacity: 0;
|
|
5614
|
+
transition: opacity 0.15s ease, background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
|
|
5615
|
+
flex-shrink: 0;
|
|
5616
|
+
}
|
|
5617
|
+
|
|
5618
|
+
/* Show on hover of parent item or when item is previewing */
|
|
5619
|
+
.analysis-history-item:hover .analysis-history-chat-btn,
|
|
5620
|
+
.analysis-history-item.previewing .analysis-history-chat-btn {
|
|
5621
|
+
opacity: 1;
|
|
5622
|
+
}
|
|
5623
|
+
|
|
5624
|
+
.analysis-history-chat-btn:hover {
|
|
5625
|
+
color: var(--color-accent-hover, #1f6feb);
|
|
5626
|
+
border-color: var(--color-accent-hover, #1f6feb);
|
|
5627
|
+
}
|
|
5628
|
+
|
|
5629
|
+
.analysis-history-chat-btn svg {
|
|
5630
|
+
width: 14px;
|
|
5631
|
+
height: 14px;
|
|
5632
|
+
}
|
|
5633
|
+
|
|
5481
5634
|
/* ============================================
|
|
5482
5635
|
Generated Files Styles
|
|
5483
5636
|
============================================ */
|
|
@@ -5549,6 +5702,7 @@ tr.line-range-start .d2h-code-line-ctn {
|
|
|
5549
5702
|
--header-height: 64px;
|
|
5550
5703
|
--sidebar-width: 260px;
|
|
5551
5704
|
--ai-panel-width: 320px;
|
|
5705
|
+
--chat-panel-width: 0px;
|
|
5552
5706
|
|
|
5553
5707
|
/* Transitions */
|
|
5554
5708
|
--transition-fast: 0.1s ease;
|
|
@@ -5996,6 +6150,7 @@ body:not([data-theme="dark"]) .theme-icon-light {
|
|
|
5996
6150
|
gap: 10px;
|
|
5997
6151
|
flex: 1;
|
|
5998
6152
|
min-width: 0;
|
|
6153
|
+
overflow: hidden;
|
|
5999
6154
|
}
|
|
6000
6155
|
|
|
6001
6156
|
.toolbar-separator {
|
|
@@ -6282,6 +6437,9 @@ body:not([data-theme="dark"]) .theme-icon-light {
|
|
|
6282
6437
|
position: relative;
|
|
6283
6438
|
overflow: hidden;
|
|
6284
6439
|
transition: all 0.3s ease;
|
|
6440
|
+
display: inline-flex;
|
|
6441
|
+
align-items: center;
|
|
6442
|
+
gap: 6px;
|
|
6285
6443
|
}
|
|
6286
6444
|
|
|
6287
6445
|
#analyze-btn::before {
|
|
@@ -6368,6 +6526,54 @@ body:not([data-theme="dark"]) .theme-icon-light {
|
|
|
6368
6526
|
color: #1c1917;
|
|
6369
6527
|
}
|
|
6370
6528
|
|
|
6529
|
+
/* Review panel toggle button - orange/amber AI identity */
|
|
6530
|
+
#ai-panel-toggle svg {
|
|
6531
|
+
color: var(--ai-primary, #d97706);
|
|
6532
|
+
}
|
|
6533
|
+
|
|
6534
|
+
#ai-panel-toggle:hover {
|
|
6535
|
+
background: var(--ai-subtle, rgba(217, 119, 6, 0.08));
|
|
6536
|
+
border-color: var(--ai-border, rgba(217, 119, 6, 0.3));
|
|
6537
|
+
color: var(--ai-primary, #d97706);
|
|
6538
|
+
}
|
|
6539
|
+
|
|
6540
|
+
[data-theme="dark"] #ai-panel-toggle svg {
|
|
6541
|
+
color: var(--ai-primary, #f59e0b);
|
|
6542
|
+
}
|
|
6543
|
+
|
|
6544
|
+
[data-theme="dark"] #ai-panel-toggle:hover {
|
|
6545
|
+
background: var(--ai-subtle, rgba(245, 158, 11, 0.1));
|
|
6546
|
+
border-color: var(--ai-border, rgba(245, 158, 11, 0.3));
|
|
6547
|
+
color: var(--ai-primary, #f59e0b);
|
|
6548
|
+
}
|
|
6549
|
+
|
|
6550
|
+
/* Chat toggle button - icon-only, blue chat identity */
|
|
6551
|
+
#chat-toggle-btn .chat-icon {
|
|
6552
|
+
color: #3b82f6;
|
|
6553
|
+
}
|
|
6554
|
+
|
|
6555
|
+
#chat-toggle-btn.active {
|
|
6556
|
+
background: rgba(59, 130, 246, 0.1);
|
|
6557
|
+
border-color: #3b82f6;
|
|
6558
|
+
}
|
|
6559
|
+
|
|
6560
|
+
#chat-toggle-btn.active .chat-icon {
|
|
6561
|
+
color: #2563eb;
|
|
6562
|
+
}
|
|
6563
|
+
|
|
6564
|
+
[data-theme="dark"] #chat-toggle-btn .chat-icon {
|
|
6565
|
+
color: #60a5fa;
|
|
6566
|
+
}
|
|
6567
|
+
|
|
6568
|
+
[data-theme="dark"] #chat-toggle-btn.active {
|
|
6569
|
+
background: rgba(59, 130, 246, 0.15);
|
|
6570
|
+
border-color: #3b82f6;
|
|
6571
|
+
}
|
|
6572
|
+
|
|
6573
|
+
[data-theme="dark"] #chat-toggle-btn.active .chat-icon {
|
|
6574
|
+
color: #60a5fa;
|
|
6575
|
+
}
|
|
6576
|
+
|
|
6371
6577
|
.main-layout .diff-container {
|
|
6372
6578
|
flex: 1;
|
|
6373
6579
|
min-width: 0; /* Prevent flex item from expanding beyond container */
|
|
@@ -6388,6 +6594,7 @@ body:not([data-theme="dark"]) .theme-icon-light {
|
|
|
6388
6594
|
overflow: visible;
|
|
6389
6595
|
flex-shrink: 0;
|
|
6390
6596
|
transition: width var(--transition-default), opacity var(--transition-default);
|
|
6597
|
+
position: relative; /* Needed for absolute resize-handle positioning (see "Resize Handles" section below) */
|
|
6391
6598
|
}
|
|
6392
6599
|
|
|
6393
6600
|
.ai-panel.collapsed {
|
|
@@ -6396,6 +6603,13 @@ body:not([data-theme="dark"]) .theme-icon-light {
|
|
|
6396
6603
|
overflow: hidden;
|
|
6397
6604
|
}
|
|
6398
6605
|
|
|
6606
|
+
.right-panel-group[class*="layout-v-"] .ai-panel.collapsed {
|
|
6607
|
+
flex: 0 0 0;
|
|
6608
|
+
height: 0;
|
|
6609
|
+
min-height: 0;
|
|
6610
|
+
overflow: hidden;
|
|
6611
|
+
}
|
|
6612
|
+
|
|
6399
6613
|
/* --------------------------------------------------------------------------
|
|
6400
6614
|
Resize Handles for Panels
|
|
6401
6615
|
-------------------------------------------------------------------------- */
|
|
@@ -6412,7 +6626,7 @@ body:not([data-theme="dark"]) .theme-icon-light {
|
|
|
6412
6626
|
|
|
6413
6627
|
.resize-handle:hover,
|
|
6414
6628
|
.resize-handle.dragging {
|
|
6415
|
-
background: var(--border-
|
|
6629
|
+
background: var(--color-border-primary);
|
|
6416
6630
|
}
|
|
6417
6631
|
|
|
6418
6632
|
.resize-handle-right {
|
|
@@ -6428,8 +6642,23 @@ body:not([data-theme="dark"]) .theme-icon-light {
|
|
|
6428
6642
|
position: relative;
|
|
6429
6643
|
}
|
|
6430
6644
|
|
|
6431
|
-
|
|
6645
|
+
/* Ensure AI panel content children stack below the resize handle.
|
|
6646
|
+
overflow-y:auto on children like .findings-summary creates implicit stacking
|
|
6647
|
+
contexts that can paint over the absolutely-positioned resize-handle (z-index:10).
|
|
6648
|
+
Explicitly place content children at z-index:1 so the handle stays on top. */
|
|
6649
|
+
.ai-panel > *:not(.resize-handle) {
|
|
6432
6650
|
position: relative;
|
|
6651
|
+
z-index: 1;
|
|
6652
|
+
}
|
|
6653
|
+
|
|
6654
|
+
/* Dropdown must overlay sibling panel sections */
|
|
6655
|
+
.ai-panel > .analysis-context {
|
|
6656
|
+
z-index: 2;
|
|
6657
|
+
}
|
|
6658
|
+
|
|
6659
|
+
/* When dropdown is open, lift above resize-handle (z-index:10) */
|
|
6660
|
+
.ai-panel > .analysis-context.open {
|
|
6661
|
+
z-index: 11;
|
|
6433
6662
|
}
|
|
6434
6663
|
|
|
6435
6664
|
/* Prevent text selection during drag */
|
|
@@ -6452,116 +6681,389 @@ body.resizing * {
|
|
|
6452
6681
|
display: flex;
|
|
6453
6682
|
}
|
|
6454
6683
|
|
|
6455
|
-
/*
|
|
6456
|
-
|
|
6457
|
-
|
|
6458
|
-
display: flex;
|
|
6459
|
-
}
|
|
6684
|
+
/* Hide Chat panel toggle button when panel is visible */
|
|
6685
|
+
#chat-toggle-btn {
|
|
6686
|
+
display: none;
|
|
6460
6687
|
}
|
|
6461
6688
|
|
|
6462
|
-
|
|
6463
|
-
|
|
6464
|
-
background: var(--color-bg-tertiary);
|
|
6465
|
-
border-color: var(--color-border-secondary);
|
|
6466
|
-
color: var(--color-text-secondary);
|
|
6689
|
+
.main-layout:has(.chat-panel--closed) #chat-toggle-btn {
|
|
6690
|
+
display: flex;
|
|
6467
6691
|
}
|
|
6468
6692
|
|
|
6469
|
-
|
|
6470
|
-
|
|
6471
|
-
|
|
6693
|
+
/* Ensure toggle buttons show when panels are collapsed via responsive rules */
|
|
6694
|
+
@media (max-width: 900px) {
|
|
6695
|
+
#ai-panel-toggle,
|
|
6696
|
+
#chat-toggle-btn {
|
|
6697
|
+
display: flex;
|
|
6698
|
+
}
|
|
6472
6699
|
}
|
|
6473
6700
|
|
|
6474
|
-
|
|
6701
|
+
/* --------------------------------------------------------------------------
|
|
6702
|
+
Right Panel Group (Review + Chat)
|
|
6703
|
+
-------------------------------------------------------------------------- */
|
|
6704
|
+
.right-panel-group {
|
|
6475
6705
|
display: flex;
|
|
6476
|
-
|
|
6477
|
-
justify-content: space-between;
|
|
6478
|
-
padding: 16px;
|
|
6479
|
-
border-bottom: 1px solid var(--ai-border);
|
|
6480
|
-
background: linear-gradient(to bottom, var(--ai-subtle), transparent);
|
|
6706
|
+
flex-direction: row;
|
|
6481
6707
|
flex-shrink: 0;
|
|
6708
|
+
height: 100%;
|
|
6709
|
+
overflow: visible;
|
|
6710
|
+
position: relative;
|
|
6482
6711
|
}
|
|
6483
6712
|
|
|
6484
|
-
.
|
|
6485
|
-
|
|
6486
|
-
|
|
6487
|
-
|
|
6488
|
-
font-size: 0.875rem;
|
|
6489
|
-
font-weight: 600;
|
|
6490
|
-
color: var(--ai-primary);
|
|
6713
|
+
/* Make the container wrapper transparent to flex layout so .chat-panel
|
|
6714
|
+
becomes a direct flex child — required for order and flex rules to work. */
|
|
6715
|
+
#chat-panel-container {
|
|
6716
|
+
display: contents;
|
|
6491
6717
|
}
|
|
6492
6718
|
|
|
6493
|
-
|
|
6494
|
-
|
|
6495
|
-
|
|
6496
|
-
|
|
6497
|
-
align-items: center;
|
|
6498
|
-
justify-content: center;
|
|
6499
|
-
background: var(--color-bg-tertiary);
|
|
6500
|
-
border-radius: var(--radius-sm);
|
|
6501
|
-
color: var(--ai-primary);
|
|
6719
|
+
/* When both panels are hidden */
|
|
6720
|
+
.right-panel-group.group-collapsed {
|
|
6721
|
+
width: 0;
|
|
6722
|
+
overflow: hidden;
|
|
6502
6723
|
}
|
|
6503
6724
|
|
|
6504
|
-
|
|
6505
|
-
|
|
6506
|
-
|
|
6725
|
+
/* Horizontal layouts */
|
|
6726
|
+
.right-panel-group.layout-h-review-chat { flex-direction: row; }
|
|
6727
|
+
.right-panel-group.layout-h-review-chat .ai-panel { order: 1; }
|
|
6728
|
+
.right-panel-group.layout-h-review-chat .chat-panel { order: 2; }
|
|
6729
|
+
|
|
6730
|
+
.right-panel-group.layout-h-chat-review { flex-direction: row; }
|
|
6731
|
+
.right-panel-group.layout-h-chat-review .ai-panel { order: 2; }
|
|
6732
|
+
.right-panel-group.layout-h-chat-review .chat-panel { order: 1; }
|
|
6733
|
+
|
|
6734
|
+
/* Vertical layouts — group takes the wider of the two panel widths,
|
|
6735
|
+
so collapsing one panel doesn't hide the other. */
|
|
6736
|
+
.right-panel-group.layout-v-review-chat,
|
|
6737
|
+
.right-panel-group.layout-v-chat-review {
|
|
6738
|
+
flex-direction: column;
|
|
6739
|
+
width: max(var(--ai-panel-width), var(--chat-panel-width));
|
|
6507
6740
|
}
|
|
6508
6741
|
|
|
6509
|
-
.
|
|
6510
|
-
|
|
6511
|
-
|
|
6512
|
-
|
|
6513
|
-
|
|
6514
|
-
|
|
6515
|
-
|
|
6516
|
-
|
|
6517
|
-
|
|
6518
|
-
|
|
6519
|
-
|
|
6520
|
-
|
|
6742
|
+
.right-panel-group.layout-v-review-chat .ai-panel { order: 0; }
|
|
6743
|
+
.right-panel-group.layout-v-review-chat .panel-group-divider { order: 1; }
|
|
6744
|
+
.right-panel-group.layout-v-review-chat .chat-panel { order: 2; }
|
|
6745
|
+
.right-panel-group.layout-v-chat-review .ai-panel { order: 2; }
|
|
6746
|
+
.right-panel-group.layout-v-chat-review .panel-group-divider { order: 1; }
|
|
6747
|
+
.right-panel-group.layout-v-chat-review .chat-panel { order: 0; }
|
|
6748
|
+
|
|
6749
|
+
/* In vertical mode, children fill width and split height */
|
|
6750
|
+
.right-panel-group[class*="layout-v-"] .ai-panel,
|
|
6751
|
+
.right-panel-group[class*="layout-v-"] .chat-panel {
|
|
6752
|
+
width: 100% !important;
|
|
6753
|
+
flex: 1 1 0;
|
|
6754
|
+
min-height: 0;
|
|
6521
6755
|
}
|
|
6522
6756
|
|
|
6523
|
-
|
|
6524
|
-
|
|
6525
|
-
|
|
6757
|
+
/* In vertical mode, chat panel has top border instead of left */
|
|
6758
|
+
.right-panel-group[class*="layout-v-"] .chat-panel {
|
|
6759
|
+
border-left: none;
|
|
6760
|
+
border-top: 1px solid var(--color-border-primary);
|
|
6526
6761
|
}
|
|
6527
6762
|
|
|
6528
|
-
/*
|
|
6529
|
-
|
|
6530
|
-
|
|
6763
|
+
/* Hide per-panel horizontal resize handles in vertical mode (group handle replaces them) */
|
|
6764
|
+
.right-panel-group[class*="layout-v-"] .chat-panel__resize-handle {
|
|
6765
|
+
display: none;
|
|
6766
|
+
}
|
|
6531
6767
|
|
|
6532
|
-
.
|
|
6533
|
-
|
|
6534
|
-
border-bottom: 1px solid var(--color-border-muted);
|
|
6535
|
-
position: relative;
|
|
6536
|
-
background: var(--color-bg-primary);
|
|
6537
|
-
border-top: 2px solid var(--color-accent-ai);
|
|
6538
|
-
flex-shrink: 0;
|
|
6539
|
-
overflow: visible; /* Allow dropdown to extend beyond bounds */
|
|
6768
|
+
.right-panel-group[class*="layout-v-"] .ai-panel > .resize-handle {
|
|
6769
|
+
display: none;
|
|
6540
6770
|
}
|
|
6541
6771
|
|
|
6542
|
-
|
|
6543
|
-
|
|
6544
|
-
|
|
6545
|
-
gap: 8px;
|
|
6546
|
-
color: var(--color-text-muted);
|
|
6547
|
-
font-size: 12px;
|
|
6772
|
+
/* When only one panel is visible in vertical mode, restore its own resize handle */
|
|
6773
|
+
.right-panel-group[class*="layout-v-"].chat-only .chat-panel__resize-handle {
|
|
6774
|
+
display: block;
|
|
6548
6775
|
}
|
|
6549
6776
|
|
|
6550
|
-
.
|
|
6551
|
-
|
|
6552
|
-
opacity: 0.6;
|
|
6777
|
+
.right-panel-group[class*="layout-v-"].review-only .ai-panel > .resize-handle {
|
|
6778
|
+
display: block;
|
|
6553
6779
|
}
|
|
6554
6780
|
|
|
6555
|
-
|
|
6556
|
-
|
|
6557
|
-
|
|
6558
|
-
gap: 4px;
|
|
6781
|
+
/* Full-height group resize handle (shown only in vertical layouts) */
|
|
6782
|
+
.panel-group-resize-handle {
|
|
6783
|
+
display: none;
|
|
6559
6784
|
}
|
|
6560
6785
|
|
|
6561
|
-
.
|
|
6562
|
-
display:
|
|
6563
|
-
|
|
6564
|
-
|
|
6786
|
+
.right-panel-group[class*="layout-v-"] .panel-group-resize-handle {
|
|
6787
|
+
display: block;
|
|
6788
|
+
position: absolute;
|
|
6789
|
+
top: 0;
|
|
6790
|
+
bottom: 0;
|
|
6791
|
+
}
|
|
6792
|
+
|
|
6793
|
+
/* Hide group resize handle when only one panel is visible — per-panel handle takes over */
|
|
6794
|
+
.right-panel-group[class*="layout-v-"].chat-only .panel-group-resize-handle,
|
|
6795
|
+
.right-panel-group[class*="layout-v-"].review-only .panel-group-resize-handle {
|
|
6796
|
+
display: none;
|
|
6797
|
+
}
|
|
6798
|
+
|
|
6799
|
+
/* Vertical resize divider between panels (hidden by default in horizontal layouts) */
|
|
6800
|
+
.panel-group-divider {
|
|
6801
|
+
display: none;
|
|
6802
|
+
height: 6px;
|
|
6803
|
+
cursor: row-resize;
|
|
6804
|
+
z-index: 10;
|
|
6805
|
+
background: transparent;
|
|
6806
|
+
transition: background-color var(--transition-fast);
|
|
6807
|
+
flex-shrink: 0;
|
|
6808
|
+
}
|
|
6809
|
+
|
|
6810
|
+
.panel-group-divider:hover,
|
|
6811
|
+
.panel-group-divider.dragging {
|
|
6812
|
+
background: var(--color-border-primary);
|
|
6813
|
+
}
|
|
6814
|
+
|
|
6815
|
+
/* Show vertical divider only in vertical layouts */
|
|
6816
|
+
.right-panel-group[class*="layout-v-"] .panel-group-divider {
|
|
6817
|
+
display: block;
|
|
6818
|
+
}
|
|
6819
|
+
|
|
6820
|
+
/* Layout Popover */
|
|
6821
|
+
.layout-popover {
|
|
6822
|
+
position: fixed;
|
|
6823
|
+
z-index: 1100;
|
|
6824
|
+
background: var(--color-bg-primary);
|
|
6825
|
+
border: 1px solid var(--color-border-default);
|
|
6826
|
+
border-radius: 8px;
|
|
6827
|
+
box-shadow: 0 4px 12px rgba(0,0,0,0.08), 0 8px 24px rgba(0,0,0,0.12);
|
|
6828
|
+
padding: 8px;
|
|
6829
|
+
opacity: 0;
|
|
6830
|
+
transform: translateY(-4px);
|
|
6831
|
+
transition: opacity 0.15s ease, transform 0.15s ease;
|
|
6832
|
+
pointer-events: none;
|
|
6833
|
+
}
|
|
6834
|
+
|
|
6835
|
+
.layout-popover--visible {
|
|
6836
|
+
opacity: 1;
|
|
6837
|
+
transform: translateY(0);
|
|
6838
|
+
pointer-events: auto;
|
|
6839
|
+
}
|
|
6840
|
+
|
|
6841
|
+
.layout-popover__grid {
|
|
6842
|
+
display: grid;
|
|
6843
|
+
grid-template-columns: 1fr;
|
|
6844
|
+
gap: 6px;
|
|
6845
|
+
}
|
|
6846
|
+
|
|
6847
|
+
.layout-popover__thumb {
|
|
6848
|
+
position: relative;
|
|
6849
|
+
width: 80px;
|
|
6850
|
+
height: 52px;
|
|
6851
|
+
padding: 0;
|
|
6852
|
+
background: var(--color-bg-subtle);
|
|
6853
|
+
border: 2px solid var(--color-border-default);
|
|
6854
|
+
border-radius: 6px;
|
|
6855
|
+
cursor: pointer;
|
|
6856
|
+
transition: border-color 0.15s ease, box-shadow 0.15s ease;
|
|
6857
|
+
}
|
|
6858
|
+
|
|
6859
|
+
.layout-popover__thumb:hover {
|
|
6860
|
+
border-color: var(--color-text-secondary);
|
|
6861
|
+
}
|
|
6862
|
+
|
|
6863
|
+
.layout-popover__thumb--active {
|
|
6864
|
+
border-color: #3b82f6;
|
|
6865
|
+
box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.3);
|
|
6866
|
+
}
|
|
6867
|
+
|
|
6868
|
+
.layout-popover__badge {
|
|
6869
|
+
position: absolute;
|
|
6870
|
+
top: 2px;
|
|
6871
|
+
right: 2px;
|
|
6872
|
+
width: 14px;
|
|
6873
|
+
height: 14px;
|
|
6874
|
+
display: flex;
|
|
6875
|
+
align-items: center;
|
|
6876
|
+
justify-content: center;
|
|
6877
|
+
font-size: 9px;
|
|
6878
|
+
font-weight: 600;
|
|
6879
|
+
color: var(--color-text-tertiary);
|
|
6880
|
+
background: var(--color-bg-primary);
|
|
6881
|
+
border-radius: 3px;
|
|
6882
|
+
line-height: 1;
|
|
6883
|
+
z-index: 1;
|
|
6884
|
+
}
|
|
6885
|
+
|
|
6886
|
+
.layout-popover__preview {
|
|
6887
|
+
display: flex;
|
|
6888
|
+
width: 100%;
|
|
6889
|
+
height: 100%;
|
|
6890
|
+
border-radius: 4px;
|
|
6891
|
+
overflow: hidden;
|
|
6892
|
+
gap: 1px;
|
|
6893
|
+
}
|
|
6894
|
+
|
|
6895
|
+
.layout-popover__preview--h {
|
|
6896
|
+
flex-direction: row;
|
|
6897
|
+
}
|
|
6898
|
+
|
|
6899
|
+
.layout-popover__preview--v {
|
|
6900
|
+
flex-direction: column;
|
|
6901
|
+
}
|
|
6902
|
+
|
|
6903
|
+
.layout-popover__pane {
|
|
6904
|
+
flex: 1;
|
|
6905
|
+
display: flex;
|
|
6906
|
+
align-items: center;
|
|
6907
|
+
justify-content: center;
|
|
6908
|
+
}
|
|
6909
|
+
|
|
6910
|
+
.layout-popover__pane--review {
|
|
6911
|
+
background: rgba(245, 158, 11, 0.1);
|
|
6912
|
+
border-left: 2px solid #f59e0b;
|
|
6913
|
+
}
|
|
6914
|
+
|
|
6915
|
+
.layout-popover__preview--v .layout-popover__pane--review {
|
|
6916
|
+
border-left: none;
|
|
6917
|
+
border-top: 2px solid #f59e0b;
|
|
6918
|
+
}
|
|
6919
|
+
|
|
6920
|
+
.layout-popover__pane--chat {
|
|
6921
|
+
background: rgba(59, 130, 246, 0.1);
|
|
6922
|
+
border-left: 2px solid #3b82f6;
|
|
6923
|
+
}
|
|
6924
|
+
|
|
6925
|
+
.layout-popover__preview--v .layout-popover__pane--chat {
|
|
6926
|
+
border-left: none;
|
|
6927
|
+
border-top: 2px solid #3b82f6;
|
|
6928
|
+
}
|
|
6929
|
+
|
|
6930
|
+
.layout-popover__pane--review svg {
|
|
6931
|
+
color: #f59e0b;
|
|
6932
|
+
}
|
|
6933
|
+
|
|
6934
|
+
.layout-popover__pane--chat svg {
|
|
6935
|
+
color: #3b82f6;
|
|
6936
|
+
}
|
|
6937
|
+
|
|
6938
|
+
/* Dark theme adjustments */
|
|
6939
|
+
[data-theme="dark"] .layout-popover {
|
|
6940
|
+
background: #0d1117;
|
|
6941
|
+
border-color: #30363d;
|
|
6942
|
+
box-shadow: 0 4px 12px rgba(0,0,0,0.3), 0 8px 24px rgba(0,0,0,0.4);
|
|
6943
|
+
}
|
|
6944
|
+
|
|
6945
|
+
[data-theme="dark"] .layout-popover__thumb {
|
|
6946
|
+
background: #161b22;
|
|
6947
|
+
border-color: #30363d;
|
|
6948
|
+
}
|
|
6949
|
+
|
|
6950
|
+
[data-theme="dark"] .layout-popover__thumb:hover {
|
|
6951
|
+
border-color: #8b949e;
|
|
6952
|
+
}
|
|
6953
|
+
|
|
6954
|
+
[data-theme="dark"] .layout-popover__thumb--active {
|
|
6955
|
+
border-color: #58a6ff;
|
|
6956
|
+
box-shadow: 0 0 0 2px rgba(88, 166, 255, 0.4);
|
|
6957
|
+
}
|
|
6958
|
+
|
|
6959
|
+
[data-theme="dark"] .layout-popover__badge {
|
|
6960
|
+
background: #0d1117;
|
|
6961
|
+
color: #8b949e;
|
|
6962
|
+
}
|
|
6963
|
+
|
|
6964
|
+
/* Dark theme toolbar button overrides */
|
|
6965
|
+
[data-theme="dark"] .toolbar-actions .btn-icon {
|
|
6966
|
+
background: var(--color-bg-tertiary);
|
|
6967
|
+
border-color: var(--color-border-secondary);
|
|
6968
|
+
color: var(--color-text-secondary);
|
|
6969
|
+
}
|
|
6970
|
+
|
|
6971
|
+
[data-theme="dark"] .toolbar-actions .btn-icon:hover {
|
|
6972
|
+
background: var(--color-bg-elevated);
|
|
6973
|
+
color: var(--color-text-primary);
|
|
6974
|
+
}
|
|
6975
|
+
|
|
6976
|
+
.ai-panel-header {
|
|
6977
|
+
display: flex;
|
|
6978
|
+
align-items: center;
|
|
6979
|
+
justify-content: space-between;
|
|
6980
|
+
padding: 16px;
|
|
6981
|
+
border-bottom: 1px solid var(--ai-border);
|
|
6982
|
+
background: linear-gradient(to bottom, var(--ai-subtle), transparent);
|
|
6983
|
+
flex-shrink: 0;
|
|
6984
|
+
}
|
|
6985
|
+
|
|
6986
|
+
.ai-panel-title {
|
|
6987
|
+
display: flex;
|
|
6988
|
+
align-items: center;
|
|
6989
|
+
gap: 8px;
|
|
6990
|
+
font-size: 0.875rem;
|
|
6991
|
+
font-weight: 600;
|
|
6992
|
+
color: var(--ai-primary);
|
|
6993
|
+
}
|
|
6994
|
+
|
|
6995
|
+
.ai-avatar-small {
|
|
6996
|
+
width: 24px;
|
|
6997
|
+
height: 24px;
|
|
6998
|
+
display: flex;
|
|
6999
|
+
align-items: center;
|
|
7000
|
+
justify-content: center;
|
|
7001
|
+
background: var(--color-bg-tertiary);
|
|
7002
|
+
border-radius: var(--radius-sm);
|
|
7003
|
+
color: var(--ai-primary);
|
|
7004
|
+
}
|
|
7005
|
+
|
|
7006
|
+
.ai-avatar-small svg {
|
|
7007
|
+
width: 14px;
|
|
7008
|
+
height: 14px;
|
|
7009
|
+
}
|
|
7010
|
+
|
|
7011
|
+
.ai-panel-close {
|
|
7012
|
+
width: 28px;
|
|
7013
|
+
height: 28px;
|
|
7014
|
+
display: flex;
|
|
7015
|
+
align-items: center;
|
|
7016
|
+
justify-content: center;
|
|
7017
|
+
background: transparent;
|
|
7018
|
+
border: none;
|
|
7019
|
+
color: var(--color-text-tertiary);
|
|
7020
|
+
border-radius: var(--radius-sm);
|
|
7021
|
+
cursor: pointer;
|
|
7022
|
+
transition: all var(--transition-fast);
|
|
7023
|
+
}
|
|
7024
|
+
|
|
7025
|
+
.ai-panel-close:hover {
|
|
7026
|
+
background: var(--color-bg-tertiary);
|
|
7027
|
+
color: var(--color-text-primary);
|
|
7028
|
+
}
|
|
7029
|
+
|
|
7030
|
+
/* ============================================
|
|
7031
|
+
Analysis Context Section (in Review Panel)
|
|
7032
|
+
============================================ */
|
|
7033
|
+
|
|
7034
|
+
.analysis-context {
|
|
7035
|
+
padding: 10px 12px;
|
|
7036
|
+
border-bottom: 1px solid var(--color-border-muted);
|
|
7037
|
+
position: relative;
|
|
7038
|
+
background: var(--color-bg-primary);
|
|
7039
|
+
border-top: 2px solid var(--color-accent-ai);
|
|
7040
|
+
flex-shrink: 0;
|
|
7041
|
+
overflow: visible; /* Allow dropdown to extend beyond bounds */
|
|
7042
|
+
}
|
|
7043
|
+
|
|
7044
|
+
.analysis-context-empty {
|
|
7045
|
+
display: flex;
|
|
7046
|
+
align-items: center;
|
|
7047
|
+
gap: 8px;
|
|
7048
|
+
color: var(--color-text-muted);
|
|
7049
|
+
font-size: 12px;
|
|
7050
|
+
}
|
|
7051
|
+
|
|
7052
|
+
.analysis-context-empty-icon {
|
|
7053
|
+
color: var(--color-text-muted);
|
|
7054
|
+
opacity: 0.6;
|
|
7055
|
+
}
|
|
7056
|
+
|
|
7057
|
+
.analysis-context-selector {
|
|
7058
|
+
display: flex;
|
|
7059
|
+
align-items: center;
|
|
7060
|
+
gap: 4px;
|
|
7061
|
+
}
|
|
7062
|
+
|
|
7063
|
+
.analysis-context-btn {
|
|
7064
|
+
display: flex;
|
|
7065
|
+
align-items: center;
|
|
7066
|
+
gap: 6px;
|
|
6565
7067
|
padding: 5px 10px;
|
|
6566
7068
|
background: var(--color-bg-primary);
|
|
6567
7069
|
border: 1px solid var(--color-border-default);
|
|
@@ -7573,6 +8075,7 @@ body.resizing * {
|
|
|
7573
8075
|
display: flex;
|
|
7574
8076
|
align-items: stretch;
|
|
7575
8077
|
position: relative;
|
|
8078
|
+
min-height: 56px; /* Accommodate stacked chat + action buttons */
|
|
7576
8079
|
}
|
|
7577
8080
|
|
|
7578
8081
|
.finding-item-wrapper .finding-item {
|
|
@@ -7598,6 +8101,32 @@ body.resizing * {
|
|
|
7598
8101
|
opacity: 1;
|
|
7599
8102
|
}
|
|
7600
8103
|
|
|
8104
|
+
/* Chat action button - upper-right corner of finding items */
|
|
8105
|
+
.finding-chat-action {
|
|
8106
|
+
position: absolute;
|
|
8107
|
+
top: 4px;
|
|
8108
|
+
right: 4px;
|
|
8109
|
+
display: flex;
|
|
8110
|
+
opacity: 0;
|
|
8111
|
+
transition: opacity 150ms ease;
|
|
8112
|
+
z-index: 1;
|
|
8113
|
+
}
|
|
8114
|
+
|
|
8115
|
+
.finding-item-wrapper:hover .finding-chat-action,
|
|
8116
|
+
.finding-item-wrapper:focus-within .finding-chat-action {
|
|
8117
|
+
opacity: 1;
|
|
8118
|
+
}
|
|
8119
|
+
|
|
8120
|
+
/* Chat quick-action button - blue accent on hover */
|
|
8121
|
+
.quick-action-chat {
|
|
8122
|
+
color: var(--color-text-tertiary, #6e7681);
|
|
8123
|
+
}
|
|
8124
|
+
|
|
8125
|
+
.quick-action-chat:hover {
|
|
8126
|
+
background: var(--color-accent-light, rgba(56, 139, 253, 0.15));
|
|
8127
|
+
color: var(--color-accent-primary, #58a6ff);
|
|
8128
|
+
}
|
|
8129
|
+
|
|
7601
8130
|
.quick-action-btn {
|
|
7602
8131
|
width: 24px;
|
|
7603
8132
|
height: 24px;
|
|
@@ -8039,7 +8568,9 @@ body.resizing * {
|
|
|
8039
8568
|
}
|
|
8040
8569
|
|
|
8041
8570
|
@media (max-width: 900px) {
|
|
8042
|
-
.
|
|
8571
|
+
.right-panel-group,
|
|
8572
|
+
.ai-panel,
|
|
8573
|
+
.chat-panel {
|
|
8043
8574
|
display: none;
|
|
8044
8575
|
}
|
|
8045
8576
|
|
|
@@ -9155,8 +9686,8 @@ body.resizing * {
|
|
|
9155
9686
|
}
|
|
9156
9687
|
|
|
9157
9688
|
.btn-icon:hover {
|
|
9158
|
-
color: var(--
|
|
9159
|
-
border-color: var(--
|
|
9689
|
+
color: var(--color-text-primary);
|
|
9690
|
+
border-color: var(--color-border-secondary);
|
|
9160
9691
|
}
|
|
9161
9692
|
|
|
9162
9693
|
.btn-ghost {
|
|
@@ -9518,8 +10049,8 @@ body.resizing * {
|
|
|
9518
10049
|
|
|
9519
10050
|
[data-theme="dark"] .btn-icon:hover {
|
|
9520
10051
|
background: var(--color-bg-elevated, #1e2329);
|
|
9521
|
-
color: var(--color-
|
|
9522
|
-
border-color: var(--color-
|
|
10052
|
+
color: var(--color-text-primary, #e6edf3);
|
|
10053
|
+
border-color: var(--color-border-secondary, #484f58);
|
|
9523
10054
|
}
|
|
9524
10055
|
|
|
9525
10056
|
[data-theme="dark"] .add-voice-btn {
|
|
@@ -10204,3 +10735,1288 @@ body.resizing * {
|
|
|
10204
10735
|
[data-theme="dark"] .emoji-picker-popup::-webkit-scrollbar-thumb:hover {
|
|
10205
10736
|
background-color: var(--color-text-tertiary, #6e7681);
|
|
10206
10737
|
}
|
|
10738
|
+
|
|
10739
|
+
/* ==========================================================================
|
|
10740
|
+
Chat Panel
|
|
10741
|
+
========================================================================== */
|
|
10742
|
+
|
|
10743
|
+
.chat-panel {
|
|
10744
|
+
width: var(--chat-panel-width, 400px);
|
|
10745
|
+
height: 100%;
|
|
10746
|
+
background: var(--color-bg-primary);
|
|
10747
|
+
border-left: 1px solid var(--color-border-primary);
|
|
10748
|
+
display: none;
|
|
10749
|
+
flex-direction: column;
|
|
10750
|
+
flex-shrink: 0;
|
|
10751
|
+
overflow: hidden;
|
|
10752
|
+
position: relative;
|
|
10753
|
+
}
|
|
10754
|
+
|
|
10755
|
+
/* Chat Panel Resize Handle */
|
|
10756
|
+
.chat-panel__resize-handle {
|
|
10757
|
+
position: absolute;
|
|
10758
|
+
top: 0;
|
|
10759
|
+
left: -3px;
|
|
10760
|
+
width: 6px;
|
|
10761
|
+
height: 100%;
|
|
10762
|
+
cursor: col-resize;
|
|
10763
|
+
z-index: 10;
|
|
10764
|
+
transition: background-color var(--transition-fast);
|
|
10765
|
+
}
|
|
10766
|
+
|
|
10767
|
+
.chat-panel__resize-handle:hover,
|
|
10768
|
+
.chat-panel__resize-handle.dragging {
|
|
10769
|
+
background: var(--color-border-primary);
|
|
10770
|
+
}
|
|
10771
|
+
|
|
10772
|
+
/* Disable width transition during active resize drag */
|
|
10773
|
+
.chat-panel--resizing {
|
|
10774
|
+
transition: none;
|
|
10775
|
+
}
|
|
10776
|
+
|
|
10777
|
+
.chat-panel--open {
|
|
10778
|
+
display: flex;
|
|
10779
|
+
}
|
|
10780
|
+
|
|
10781
|
+
.chat-panel--closed {
|
|
10782
|
+
display: none;
|
|
10783
|
+
}
|
|
10784
|
+
|
|
10785
|
+
/* Chat Panel Header */
|
|
10786
|
+
.chat-panel__header {
|
|
10787
|
+
display: flex;
|
|
10788
|
+
align-items: center;
|
|
10789
|
+
justify-content: space-between;
|
|
10790
|
+
padding: 12px 16px;
|
|
10791
|
+
border-bottom: 1px solid var(--chat-border);
|
|
10792
|
+
background: linear-gradient(to bottom, var(--chat-subtle), transparent);
|
|
10793
|
+
flex-shrink: 0;
|
|
10794
|
+
}
|
|
10795
|
+
/* Session picker wrapper */
|
|
10796
|
+
.chat-panel__session-picker {
|
|
10797
|
+
position: relative;
|
|
10798
|
+
flex: 1;
|
|
10799
|
+
min-width: 0;
|
|
10800
|
+
}
|
|
10801
|
+
|
|
10802
|
+
.chat-panel__session-picker-btn {
|
|
10803
|
+
display: flex;
|
|
10804
|
+
align-items: center;
|
|
10805
|
+
gap: 8px;
|
|
10806
|
+
font-size: 13px;
|
|
10807
|
+
font-weight: 600;
|
|
10808
|
+
color: var(--chat-text);
|
|
10809
|
+
background: transparent;
|
|
10810
|
+
border: none;
|
|
10811
|
+
border-radius: 6px;
|
|
10812
|
+
padding: 4px 8px;
|
|
10813
|
+
cursor: pointer;
|
|
10814
|
+
transition: background 0.15s ease;
|
|
10815
|
+
max-width: 100%;
|
|
10816
|
+
}
|
|
10817
|
+
|
|
10818
|
+
.chat-panel__session-picker-btn:hover {
|
|
10819
|
+
background: var(--color-bg-tertiary, rgba(128, 128, 128, 0.1));
|
|
10820
|
+
}
|
|
10821
|
+
|
|
10822
|
+
.chat-panel__session-picker-btn svg:first-child {
|
|
10823
|
+
color: var(--chat-primary);
|
|
10824
|
+
flex-shrink: 0;
|
|
10825
|
+
}
|
|
10826
|
+
|
|
10827
|
+
.chat-panel__title-text {
|
|
10828
|
+
overflow: hidden;
|
|
10829
|
+
text-overflow: ellipsis;
|
|
10830
|
+
white-space: nowrap;
|
|
10831
|
+
}
|
|
10832
|
+
|
|
10833
|
+
.chat-panel__chevron-sep {
|
|
10834
|
+
opacity: 0.4;
|
|
10835
|
+
font-size: 13px;
|
|
10836
|
+
}
|
|
10837
|
+
|
|
10838
|
+
.chat-panel__chevron {
|
|
10839
|
+
flex-shrink: 0;
|
|
10840
|
+
opacity: 0.5;
|
|
10841
|
+
}
|
|
10842
|
+
|
|
10843
|
+
/* Session dropdown flyout */
|
|
10844
|
+
.chat-panel__session-dropdown {
|
|
10845
|
+
position: absolute;
|
|
10846
|
+
top: calc(100% + 4px);
|
|
10847
|
+
left: 0;
|
|
10848
|
+
right: 0;
|
|
10849
|
+
background: var(--color-bg-primary, #fff);
|
|
10850
|
+
border: 1px solid var(--color-border-primary, #d0d7de);
|
|
10851
|
+
border-radius: 8px;
|
|
10852
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
|
|
10853
|
+
max-height: 300px;
|
|
10854
|
+
overflow-y: auto;
|
|
10855
|
+
z-index: 100;
|
|
10856
|
+
padding: 4px;
|
|
10857
|
+
}
|
|
10858
|
+
|
|
10859
|
+
.chat-panel__session-empty {
|
|
10860
|
+
padding: 16px;
|
|
10861
|
+
text-align: center;
|
|
10862
|
+
color: var(--color-text-tertiary);
|
|
10863
|
+
font-size: 12px;
|
|
10864
|
+
}
|
|
10865
|
+
|
|
10866
|
+
.chat-panel__session-item {
|
|
10867
|
+
display: flex;
|
|
10868
|
+
flex-direction: column;
|
|
10869
|
+
gap: 2px;
|
|
10870
|
+
width: 100%;
|
|
10871
|
+
padding: 8px 12px;
|
|
10872
|
+
border: none;
|
|
10873
|
+
background: transparent;
|
|
10874
|
+
text-align: left;
|
|
10875
|
+
border-radius: 6px;
|
|
10876
|
+
cursor: pointer;
|
|
10877
|
+
transition: background 0.15s ease;
|
|
10878
|
+
position: relative;
|
|
10879
|
+
}
|
|
10880
|
+
|
|
10881
|
+
.chat-panel__session-item:hover {
|
|
10882
|
+
background: var(--color-bg-tertiary, rgba(128, 128, 128, 0.08));
|
|
10883
|
+
}
|
|
10884
|
+
|
|
10885
|
+
.chat-panel__session-item--active {
|
|
10886
|
+
background: var(--color-bg-secondary, #f6f8fa);
|
|
10887
|
+
}
|
|
10888
|
+
|
|
10889
|
+
.chat-panel__session-item--active::before {
|
|
10890
|
+
content: '';
|
|
10891
|
+
position: absolute;
|
|
10892
|
+
left: 0;
|
|
10893
|
+
top: 4px;
|
|
10894
|
+
bottom: 4px;
|
|
10895
|
+
width: 3px;
|
|
10896
|
+
border-radius: 2px;
|
|
10897
|
+
background: var(--chat-primary, #0969da);
|
|
10898
|
+
}
|
|
10899
|
+
|
|
10900
|
+
.chat-panel__session-preview {
|
|
10901
|
+
font-size: 13px;
|
|
10902
|
+
font-weight: 500;
|
|
10903
|
+
color: var(--color-text-primary, #1f2328);
|
|
10904
|
+
overflow: hidden;
|
|
10905
|
+
text-overflow: ellipsis;
|
|
10906
|
+
white-space: nowrap;
|
|
10907
|
+
}
|
|
10908
|
+
|
|
10909
|
+
.chat-panel__session-meta {
|
|
10910
|
+
font-size: 11px;
|
|
10911
|
+
color: var(--color-text-tertiary, #656d76);
|
|
10912
|
+
}
|
|
10913
|
+
|
|
10914
|
+
/* Dark theme overrides */
|
|
10915
|
+
[data-theme="dark"] .chat-panel__session-dropdown {
|
|
10916
|
+
background: var(--color-bg-primary, #0d1117);
|
|
10917
|
+
border-color: var(--color-border-primary, #30363d);
|
|
10918
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
10919
|
+
}
|
|
10920
|
+
|
|
10921
|
+
[data-theme="dark"] .chat-panel__session-item--active {
|
|
10922
|
+
background: var(--color-bg-secondary, #161b22);
|
|
10923
|
+
}
|
|
10924
|
+
|
|
10925
|
+
[data-theme="dark"] .chat-panel__session-preview {
|
|
10926
|
+
color: var(--color-text-primary, #e6edf3);
|
|
10927
|
+
}
|
|
10928
|
+
|
|
10929
|
+
.chat-panel__actions {
|
|
10930
|
+
display: flex;
|
|
10931
|
+
align-items: center;
|
|
10932
|
+
gap: 4px;
|
|
10933
|
+
}
|
|
10934
|
+
|
|
10935
|
+
.chat-panel__new-btn,
|
|
10936
|
+
.chat-panel__close-btn {
|
|
10937
|
+
display: flex;
|
|
10938
|
+
align-items: center;
|
|
10939
|
+
justify-content: center;
|
|
10940
|
+
width: 28px;
|
|
10941
|
+
height: 28px;
|
|
10942
|
+
border: none;
|
|
10943
|
+
background: transparent;
|
|
10944
|
+
color: var(--color-text-tertiary);
|
|
10945
|
+
border-radius: 6px;
|
|
10946
|
+
cursor: pointer;
|
|
10947
|
+
transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
|
|
10948
|
+
}
|
|
10949
|
+
|
|
10950
|
+
.chat-panel__new-btn {
|
|
10951
|
+
border: 1px solid var(--color-border-primary);
|
|
10952
|
+
background: var(--color-bg-secondary);
|
|
10953
|
+
color: var(--color-text-secondary);
|
|
10954
|
+
}
|
|
10955
|
+
|
|
10956
|
+
.chat-panel__new-btn:hover {
|
|
10957
|
+
background: var(--color-bg-tertiary);
|
|
10958
|
+
border-color: var(--color-text-tertiary);
|
|
10959
|
+
color: var(--color-text-primary);
|
|
10960
|
+
}
|
|
10961
|
+
|
|
10962
|
+
.chat-panel__close-btn:hover {
|
|
10963
|
+
background: var(--color-bg-tertiary);
|
|
10964
|
+
color: var(--color-text-primary);
|
|
10965
|
+
}
|
|
10966
|
+
|
|
10967
|
+
/* Chat Messages Area */
|
|
10968
|
+
.chat-panel__messages-wrapper {
|
|
10969
|
+
flex: 1;
|
|
10970
|
+
position: relative;
|
|
10971
|
+
overflow: hidden;
|
|
10972
|
+
display: flex;
|
|
10973
|
+
flex-direction: column;
|
|
10974
|
+
min-height: 0;
|
|
10975
|
+
}
|
|
10976
|
+
|
|
10977
|
+
.chat-panel__messages {
|
|
10978
|
+
flex: 1;
|
|
10979
|
+
overflow-y: auto;
|
|
10980
|
+
padding: 16px;
|
|
10981
|
+
display: flex;
|
|
10982
|
+
flex-direction: column;
|
|
10983
|
+
gap: 12px;
|
|
10984
|
+
}
|
|
10985
|
+
|
|
10986
|
+
.chat-panel__messages::-webkit-scrollbar {
|
|
10987
|
+
width: 6px;
|
|
10988
|
+
}
|
|
10989
|
+
|
|
10990
|
+
.chat-panel__messages::-webkit-scrollbar-track {
|
|
10991
|
+
background: transparent;
|
|
10992
|
+
}
|
|
10993
|
+
|
|
10994
|
+
.chat-panel__messages::-webkit-scrollbar-thumb {
|
|
10995
|
+
background-color: var(--color-border-primary);
|
|
10996
|
+
border-radius: 3px;
|
|
10997
|
+
}
|
|
10998
|
+
|
|
10999
|
+
/* New Content Pill */
|
|
11000
|
+
.chat-panel__new-content-pill {
|
|
11001
|
+
position: absolute;
|
|
11002
|
+
bottom: 8px;
|
|
11003
|
+
left: 50%;
|
|
11004
|
+
transform: translateX(-50%);
|
|
11005
|
+
z-index: 10;
|
|
11006
|
+
padding: 4px 14px;
|
|
11007
|
+
font-size: 12px;
|
|
11008
|
+
font-weight: 500;
|
|
11009
|
+
line-height: 1.4;
|
|
11010
|
+
color: var(--color-text-primary);
|
|
11011
|
+
background: var(--color-bg-secondary);
|
|
11012
|
+
border: 1px solid var(--color-border-primary);
|
|
11013
|
+
border-radius: 20px;
|
|
11014
|
+
cursor: pointer;
|
|
11015
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
|
|
11016
|
+
opacity: 0;
|
|
11017
|
+
animation: chat-pill-fade-in 0.15s ease-out forwards;
|
|
11018
|
+
white-space: nowrap;
|
|
11019
|
+
}
|
|
11020
|
+
|
|
11021
|
+
.chat-panel__new-content-pill:hover {
|
|
11022
|
+
background: var(--color-bg-tertiary);
|
|
11023
|
+
border-color: var(--color-border-secondary);
|
|
11024
|
+
}
|
|
11025
|
+
|
|
11026
|
+
@keyframes chat-pill-fade-in {
|
|
11027
|
+
from { opacity: 0; transform: translateX(-50%) translateY(4px); }
|
|
11028
|
+
to { opacity: 1; transform: translateX(-50%) translateY(0); }
|
|
11029
|
+
}
|
|
11030
|
+
|
|
11031
|
+
[data-theme="dark"] .chat-panel__new-content-pill {
|
|
11032
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
|
|
11033
|
+
}
|
|
11034
|
+
|
|
11035
|
+
/* Empty State */
|
|
11036
|
+
.chat-panel__empty {
|
|
11037
|
+
display: flex;
|
|
11038
|
+
flex-direction: column;
|
|
11039
|
+
align-items: center;
|
|
11040
|
+
justify-content: center;
|
|
11041
|
+
text-align: center;
|
|
11042
|
+
padding: 40px 20px;
|
|
11043
|
+
color: var(--color-text-tertiary);
|
|
11044
|
+
gap: 12px;
|
|
11045
|
+
flex: 1;
|
|
11046
|
+
}
|
|
11047
|
+
|
|
11048
|
+
.chat-panel__empty svg {
|
|
11049
|
+
opacity: 0.4;
|
|
11050
|
+
}
|
|
11051
|
+
|
|
11052
|
+
.chat-panel__empty p {
|
|
11053
|
+
font-size: 13px;
|
|
11054
|
+
line-height: 1.5;
|
|
11055
|
+
max-width: 260px;
|
|
11056
|
+
}
|
|
11057
|
+
|
|
11058
|
+
/* Message Bubbles */
|
|
11059
|
+
.chat-panel__message {
|
|
11060
|
+
display: flex;
|
|
11061
|
+
flex-direction: column;
|
|
11062
|
+
max-width: 85%;
|
|
11063
|
+
}
|
|
11064
|
+
|
|
11065
|
+
.chat-panel__message--user {
|
|
11066
|
+
align-self: flex-end;
|
|
11067
|
+
}
|
|
11068
|
+
|
|
11069
|
+
.chat-panel__message--assistant {
|
|
11070
|
+
align-self: flex-start;
|
|
11071
|
+
}
|
|
11072
|
+
|
|
11073
|
+
.chat-panel__message--error {
|
|
11074
|
+
align-self: center;
|
|
11075
|
+
max-width: 100%;
|
|
11076
|
+
}
|
|
11077
|
+
|
|
11078
|
+
.chat-panel__bubble {
|
|
11079
|
+
padding: 8px 12px;
|
|
11080
|
+
border-radius: 12px;
|
|
11081
|
+
font-size: 13px;
|
|
11082
|
+
line-height: 1.5;
|
|
11083
|
+
word-wrap: break-word;
|
|
11084
|
+
overflow-wrap: break-word;
|
|
11085
|
+
}
|
|
11086
|
+
|
|
11087
|
+
/* User bubble */
|
|
11088
|
+
.chat-panel__message--user .chat-panel__bubble {
|
|
11089
|
+
background: var(--color-accent-primary);
|
|
11090
|
+
color: #ffffff;
|
|
11091
|
+
border-bottom-right-radius: 4px;
|
|
11092
|
+
white-space: pre-wrap;
|
|
11093
|
+
}
|
|
11094
|
+
|
|
11095
|
+
/* Assistant bubble */
|
|
11096
|
+
.chat-panel__message--assistant .chat-panel__bubble {
|
|
11097
|
+
position: relative;
|
|
11098
|
+
background: var(--color-bg-secondary);
|
|
11099
|
+
border: 1px solid var(--color-border-primary);
|
|
11100
|
+
color: var(--color-text-primary);
|
|
11101
|
+
border-bottom-left-radius: 4px;
|
|
11102
|
+
}
|
|
11103
|
+
|
|
11104
|
+
/* Copy button on assistant messages */
|
|
11105
|
+
.chat-panel__copy-btn {
|
|
11106
|
+
display: none;
|
|
11107
|
+
position: absolute;
|
|
11108
|
+
top: 4px;
|
|
11109
|
+
right: 4px;
|
|
11110
|
+
width: 24px;
|
|
11111
|
+
height: 24px;
|
|
11112
|
+
align-items: center;
|
|
11113
|
+
justify-content: center;
|
|
11114
|
+
padding: 0;
|
|
11115
|
+
border: none;
|
|
11116
|
+
border-radius: 4px;
|
|
11117
|
+
background: var(--color-bg-tertiary);
|
|
11118
|
+
color: var(--color-text-secondary);
|
|
11119
|
+
cursor: pointer;
|
|
11120
|
+
z-index: 1;
|
|
11121
|
+
}
|
|
11122
|
+
|
|
11123
|
+
.chat-panel__message--assistant:hover .chat-panel__copy-btn {
|
|
11124
|
+
display: flex;
|
|
11125
|
+
}
|
|
11126
|
+
|
|
11127
|
+
.chat-panel__copy-btn:hover {
|
|
11128
|
+
background: var(--color-border-primary);
|
|
11129
|
+
color: var(--color-text-primary);
|
|
11130
|
+
}
|
|
11131
|
+
|
|
11132
|
+
.chat-panel__copy-btn--success {
|
|
11133
|
+
display: flex;
|
|
11134
|
+
color: var(--color-success, #2da44e);
|
|
11135
|
+
}
|
|
11136
|
+
|
|
11137
|
+
/* Markdown content inside assistant bubbles */
|
|
11138
|
+
.chat-panel__message--assistant .chat-panel__bubble p {
|
|
11139
|
+
margin: 0 0 8px 0;
|
|
11140
|
+
}
|
|
11141
|
+
|
|
11142
|
+
.chat-panel__message--assistant .chat-panel__bubble p:last-of-type {
|
|
11143
|
+
margin-bottom: 0;
|
|
11144
|
+
}
|
|
11145
|
+
|
|
11146
|
+
.chat-panel__message--assistant .chat-panel__bubble code {
|
|
11147
|
+
font-family: 'JetBrains Mono', 'SFMono-Regular', 'Consolas', monospace;
|
|
11148
|
+
font-size: 12px;
|
|
11149
|
+
background: var(--color-bg-tertiary);
|
|
11150
|
+
padding: 1px 4px;
|
|
11151
|
+
border-radius: 3px;
|
|
11152
|
+
}
|
|
11153
|
+
|
|
11154
|
+
.chat-panel__message--assistant .chat-panel__bubble pre {
|
|
11155
|
+
margin: 8px 0;
|
|
11156
|
+
padding: 8px;
|
|
11157
|
+
background: var(--color-bg-tertiary);
|
|
11158
|
+
border-radius: 6px;
|
|
11159
|
+
overflow-x: auto;
|
|
11160
|
+
}
|
|
11161
|
+
|
|
11162
|
+
.chat-panel__message--assistant .chat-panel__bubble pre code {
|
|
11163
|
+
background: transparent;
|
|
11164
|
+
padding: 0;
|
|
11165
|
+
}
|
|
11166
|
+
|
|
11167
|
+
.chat-panel__message--assistant .chat-panel__bubble ul,
|
|
11168
|
+
.chat-panel__message--assistant .chat-panel__bubble ol {
|
|
11169
|
+
margin: 4px 0;
|
|
11170
|
+
padding-left: 20px;
|
|
11171
|
+
}
|
|
11172
|
+
|
|
11173
|
+
/* Chat file links (auto-linked file:line references in assistant messages) */
|
|
11174
|
+
.chat-file-link {
|
|
11175
|
+
display: inline;
|
|
11176
|
+
font-family: 'JetBrains Mono', 'SFMono-Regular', 'Consolas', monospace;
|
|
11177
|
+
font-size: 12px;
|
|
11178
|
+
color: var(--color-accent, #0969da);
|
|
11179
|
+
text-decoration: none;
|
|
11180
|
+
background: var(--color-bg-tertiary);
|
|
11181
|
+
padding: 1px 5px;
|
|
11182
|
+
border-radius: 3px;
|
|
11183
|
+
cursor: pointer;
|
|
11184
|
+
transition: background 0.15s, color 0.15s;
|
|
11185
|
+
word-break: break-all;
|
|
11186
|
+
-webkit-box-decoration-break: clone;
|
|
11187
|
+
box-decoration-break: clone;
|
|
11188
|
+
}
|
|
11189
|
+
|
|
11190
|
+
.chat-file-link:hover {
|
|
11191
|
+
background: var(--color-bg-accent-subtle, rgba(9, 105, 218, 0.1));
|
|
11192
|
+
text-decoration: underline;
|
|
11193
|
+
}
|
|
11194
|
+
|
|
11195
|
+
.chat-file-link__icon {
|
|
11196
|
+
display: inline;
|
|
11197
|
+
vertical-align: text-bottom;
|
|
11198
|
+
opacity: 0.6;
|
|
11199
|
+
}
|
|
11200
|
+
|
|
11201
|
+
/* Highlight flash when navigating to a line from a chat file link */
|
|
11202
|
+
.chat-file-link--highlight {
|
|
11203
|
+
animation: chat-file-link-flash 2s ease-out;
|
|
11204
|
+
}
|
|
11205
|
+
|
|
11206
|
+
@keyframes chat-file-link-flash {
|
|
11207
|
+
0% { background-color: rgba(227, 179, 65, 0.25); }
|
|
11208
|
+
100% { background-color: transparent; }
|
|
11209
|
+
}
|
|
11210
|
+
|
|
11211
|
+
.chat-file-link--loading {
|
|
11212
|
+
opacity: 0.6;
|
|
11213
|
+
pointer-events: none;
|
|
11214
|
+
}
|
|
11215
|
+
.chat-file-link--loading::after {
|
|
11216
|
+
content: '';
|
|
11217
|
+
display: inline-block;
|
|
11218
|
+
width: 10px;
|
|
11219
|
+
height: 10px;
|
|
11220
|
+
margin-left: 4px;
|
|
11221
|
+
border: 1.5px solid currentColor;
|
|
11222
|
+
border-top-color: transparent;
|
|
11223
|
+
border-radius: 50%;
|
|
11224
|
+
animation: chat-file-link-spin 0.6s linear infinite;
|
|
11225
|
+
}
|
|
11226
|
+
@keyframes chat-file-link-spin {
|
|
11227
|
+
to { transform: rotate(360deg); }
|
|
11228
|
+
}
|
|
11229
|
+
|
|
11230
|
+
/* Gutter arrow for "already here" micro-feedback */
|
|
11231
|
+
.chat-gutter-arrow {
|
|
11232
|
+
position: absolute;
|
|
11233
|
+
left: -2px;
|
|
11234
|
+
top: 50%;
|
|
11235
|
+
transform: translateY(-50%);
|
|
11236
|
+
color: #e3b341;
|
|
11237
|
+
font-size: 20px;
|
|
11238
|
+
font-weight: bold;
|
|
11239
|
+
pointer-events: none;
|
|
11240
|
+
transition: opacity 0.3s ease;
|
|
11241
|
+
z-index: 2;
|
|
11242
|
+
}
|
|
11243
|
+
|
|
11244
|
+
.chat-gutter-arrow--fade {
|
|
11245
|
+
opacity: 0;
|
|
11246
|
+
}
|
|
11247
|
+
|
|
11248
|
+
[data-theme="dark"] .chat-gutter-arrow {
|
|
11249
|
+
color: #e3b341;
|
|
11250
|
+
}
|
|
11251
|
+
|
|
11252
|
+
/* Error bubble */
|
|
11253
|
+
.chat-panel__error-bubble {
|
|
11254
|
+
display: flex;
|
|
11255
|
+
align-items: center;
|
|
11256
|
+
gap: 8px;
|
|
11257
|
+
padding: 8px 12px;
|
|
11258
|
+
background: rgba(208, 36, 47, 0.08);
|
|
11259
|
+
border: 1px solid rgba(208, 36, 47, 0.2);
|
|
11260
|
+
color: var(--color-danger);
|
|
11261
|
+
border-radius: 8px;
|
|
11262
|
+
font-size: 12px;
|
|
11263
|
+
}
|
|
11264
|
+
|
|
11265
|
+
/* Streaming / Typing Indicator */
|
|
11266
|
+
.chat-panel__typing-indicator {
|
|
11267
|
+
display: inline-flex;
|
|
11268
|
+
align-items: center;
|
|
11269
|
+
gap: 4px;
|
|
11270
|
+
padding: 4px 0;
|
|
11271
|
+
}
|
|
11272
|
+
|
|
11273
|
+
.chat-panel__typing-indicator span {
|
|
11274
|
+
width: 6px;
|
|
11275
|
+
height: 6px;
|
|
11276
|
+
background: var(--color-text-tertiary);
|
|
11277
|
+
border-radius: 50%;
|
|
11278
|
+
animation: chat-typing 1.2s ease-in-out infinite;
|
|
11279
|
+
}
|
|
11280
|
+
|
|
11281
|
+
.chat-panel__typing-indicator span:nth-child(2) {
|
|
11282
|
+
animation-delay: 0.2s;
|
|
11283
|
+
}
|
|
11284
|
+
|
|
11285
|
+
.chat-panel__typing-indicator span:nth-child(3) {
|
|
11286
|
+
animation-delay: 0.4s;
|
|
11287
|
+
}
|
|
11288
|
+
|
|
11289
|
+
@keyframes chat-typing {
|
|
11290
|
+
0%, 60%, 100% { opacity: 0.3; transform: scale(0.8); }
|
|
11291
|
+
30% { opacity: 1; transform: scale(1); }
|
|
11292
|
+
}
|
|
11293
|
+
|
|
11294
|
+
/* Blinking cursor during streaming */
|
|
11295
|
+
.chat-panel__cursor {
|
|
11296
|
+
display: inline-block;
|
|
11297
|
+
width: 2px;
|
|
11298
|
+
height: 14px;
|
|
11299
|
+
background: var(--color-text-primary);
|
|
11300
|
+
margin-left: 2px;
|
|
11301
|
+
vertical-align: text-bottom;
|
|
11302
|
+
animation: chat-cursor-blink 0.8s step-end infinite;
|
|
11303
|
+
}
|
|
11304
|
+
|
|
11305
|
+
@keyframes chat-cursor-blink {
|
|
11306
|
+
0%, 100% { opacity: 1; }
|
|
11307
|
+
50% { opacity: 0; }
|
|
11308
|
+
}
|
|
11309
|
+
|
|
11310
|
+
/* Thinking indicator (shown below content when agent is processing) */
|
|
11311
|
+
.chat-panel__thinking {
|
|
11312
|
+
padding: 4px 0 0;
|
|
11313
|
+
}
|
|
11314
|
+
|
|
11315
|
+
/* Empty response fallback */
|
|
11316
|
+
.chat-panel__empty-response {
|
|
11317
|
+
color: var(--color-text-tertiary);
|
|
11318
|
+
font-size: 12px;
|
|
11319
|
+
}
|
|
11320
|
+
|
|
11321
|
+
/* Tool use badge */
|
|
11322
|
+
.chat-panel__tool-badge {
|
|
11323
|
+
display: flex;
|
|
11324
|
+
align-items: center;
|
|
11325
|
+
gap: 4px;
|
|
11326
|
+
padding: 2px 8px;
|
|
11327
|
+
margin-bottom: 4px;
|
|
11328
|
+
background: var(--color-bg-tertiary);
|
|
11329
|
+
border: 1px solid var(--color-border-primary);
|
|
11330
|
+
border-radius: 10px;
|
|
11331
|
+
font-size: 11px;
|
|
11332
|
+
color: var(--color-text-tertiary);
|
|
11333
|
+
max-width: 100%;
|
|
11334
|
+
}
|
|
11335
|
+
|
|
11336
|
+
.chat-panel__tool-badge svg {
|
|
11337
|
+
color: var(--color-text-tertiary);
|
|
11338
|
+
}
|
|
11339
|
+
|
|
11340
|
+
.chat-panel__tool-args {
|
|
11341
|
+
font-family: var(--font-mono, ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace);
|
|
11342
|
+
color: var(--color-text-quaternary, var(--color-text-tertiary));
|
|
11343
|
+
overflow: hidden;
|
|
11344
|
+
text-overflow: ellipsis;
|
|
11345
|
+
white-space: nowrap;
|
|
11346
|
+
opacity: 0.8;
|
|
11347
|
+
border-left: 1px solid var(--color-border-primary);
|
|
11348
|
+
padding-left: 5px;
|
|
11349
|
+
min-width: 0;
|
|
11350
|
+
flex: 1;
|
|
11351
|
+
}
|
|
11352
|
+
|
|
11353
|
+
.chat-panel__tool-spinner {
|
|
11354
|
+
display: inline-block;
|
|
11355
|
+
width: 10px;
|
|
11356
|
+
height: 10px;
|
|
11357
|
+
border: 1.5px solid var(--color-border-primary);
|
|
11358
|
+
border-top-color: var(--color-accent-primary);
|
|
11359
|
+
border-radius: 50%;
|
|
11360
|
+
animation: spin 0.8s linear infinite;
|
|
11361
|
+
}
|
|
11362
|
+
|
|
11363
|
+
/* Chat Panel Context Card */
|
|
11364
|
+
.chat-panel__context-card {
|
|
11365
|
+
display: flex;
|
|
11366
|
+
align-items: center;
|
|
11367
|
+
gap: 6px;
|
|
11368
|
+
padding: 6px 12px;
|
|
11369
|
+
margin: 4px 12px;
|
|
11370
|
+
background: var(--color-bg-tertiary);
|
|
11371
|
+
border: 1px solid var(--color-border-primary);
|
|
11372
|
+
border-radius: 8px;
|
|
11373
|
+
font-size: 11px;
|
|
11374
|
+
color: var(--color-text-tertiary);
|
|
11375
|
+
overflow: hidden;
|
|
11376
|
+
}
|
|
11377
|
+
|
|
11378
|
+
.chat-panel__context-card svg {
|
|
11379
|
+
flex-shrink: 0;
|
|
11380
|
+
color: var(--color-accent-primary);
|
|
11381
|
+
}
|
|
11382
|
+
|
|
11383
|
+
.chat-panel__context-label {
|
|
11384
|
+
font-weight: 600;
|
|
11385
|
+
text-transform: uppercase;
|
|
11386
|
+
letter-spacing: 0.5px;
|
|
11387
|
+
flex-shrink: 0;
|
|
11388
|
+
}
|
|
11389
|
+
|
|
11390
|
+
.chat-panel__context-title {
|
|
11391
|
+
overflow: hidden;
|
|
11392
|
+
text-overflow: ellipsis;
|
|
11393
|
+
white-space: nowrap;
|
|
11394
|
+
color: var(--color-text-secondary);
|
|
11395
|
+
}
|
|
11396
|
+
|
|
11397
|
+
.chat-panel__context-file {
|
|
11398
|
+
flex-shrink: 0;
|
|
11399
|
+
font-family: var(--font-mono, 'SFMono-Regular', Consolas, monospace);
|
|
11400
|
+
color: var(--color-text-tertiary);
|
|
11401
|
+
font-size: 10px;
|
|
11402
|
+
}
|
|
11403
|
+
|
|
11404
|
+
.chat-panel__context-remove {
|
|
11405
|
+
display: none;
|
|
11406
|
+
align-items: center;
|
|
11407
|
+
justify-content: center;
|
|
11408
|
+
width: 16px;
|
|
11409
|
+
height: 16px;
|
|
11410
|
+
margin-left: auto;
|
|
11411
|
+
padding: 0;
|
|
11412
|
+
border: none;
|
|
11413
|
+
border-radius: 50%;
|
|
11414
|
+
background: var(--color-bg-secondary);
|
|
11415
|
+
color: var(--color-text-tertiary);
|
|
11416
|
+
font-size: 12px;
|
|
11417
|
+
line-height: 1;
|
|
11418
|
+
cursor: pointer;
|
|
11419
|
+
flex-shrink: 0;
|
|
11420
|
+
transition: background 0.15s ease, color 0.15s ease;
|
|
11421
|
+
}
|
|
11422
|
+
|
|
11423
|
+
.chat-panel__context-card:hover .chat-panel__context-remove {
|
|
11424
|
+
display: flex;
|
|
11425
|
+
}
|
|
11426
|
+
|
|
11427
|
+
.chat-panel__context-remove:hover {
|
|
11428
|
+
background: var(--color-danger, #d1242f);
|
|
11429
|
+
color: #ffffff;
|
|
11430
|
+
}
|
|
11431
|
+
|
|
11432
|
+
.chat-panel__toast {
|
|
11433
|
+
position: absolute;
|
|
11434
|
+
top: 44px;
|
|
11435
|
+
left: 8px;
|
|
11436
|
+
right: 8px;
|
|
11437
|
+
z-index: 10;
|
|
11438
|
+
padding: 6px 12px;
|
|
11439
|
+
border-radius: 6px;
|
|
11440
|
+
background: var(--color-attention-subtle, #fff8c5);
|
|
11441
|
+
color: var(--color-attention-fg, #6f5e00);
|
|
11442
|
+
border: 1px solid var(--color-attention-muted, #d4a72c);
|
|
11443
|
+
font-size: 12px;
|
|
11444
|
+
text-align: center;
|
|
11445
|
+
animation: toast-slide-in 0.2s ease-out;
|
|
11446
|
+
}
|
|
11447
|
+
|
|
11448
|
+
[data-theme="dark"] .chat-panel__toast {
|
|
11449
|
+
background: var(--color-attention-subtle, #3b2e00);
|
|
11450
|
+
color: var(--color-attention-fg, #e3b341);
|
|
11451
|
+
border-color: var(--color-attention-muted, #7d6600);
|
|
11452
|
+
}
|
|
11453
|
+
|
|
11454
|
+
.chat-panel__toast--dismissing {
|
|
11455
|
+
animation: toast-fade-out 0.3s ease-out forwards;
|
|
11456
|
+
}
|
|
11457
|
+
|
|
11458
|
+
@keyframes toast-slide-in {
|
|
11459
|
+
from { opacity: 0; transform: translateY(-8px); }
|
|
11460
|
+
to { opacity: 1; transform: translateY(0); }
|
|
11461
|
+
}
|
|
11462
|
+
|
|
11463
|
+
@keyframes toast-fade-out {
|
|
11464
|
+
from { opacity: 1; }
|
|
11465
|
+
to { opacity: 0; }
|
|
11466
|
+
}
|
|
11467
|
+
|
|
11468
|
+
.chat-panel__context-title code {
|
|
11469
|
+
padding: 1px 4px;
|
|
11470
|
+
background: var(--color-bg-secondary);
|
|
11471
|
+
border-radius: 3px;
|
|
11472
|
+
font-size: 10px;
|
|
11473
|
+
font-family: var(--font-mono, ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace);
|
|
11474
|
+
}
|
|
11475
|
+
|
|
11476
|
+
/* Context card tooltip */
|
|
11477
|
+
.chat-panel__ctx-tooltip {
|
|
11478
|
+
position: fixed;
|
|
11479
|
+
z-index: 9999;
|
|
11480
|
+
width: 300px;
|
|
11481
|
+
max-height: 300px;
|
|
11482
|
+
overflow-y: auto;
|
|
11483
|
+
background: var(--color-bg-primary, #0d1117);
|
|
11484
|
+
border: 1px solid var(--color-border-primary, rgba(255, 255, 255, 0.1));
|
|
11485
|
+
border-radius: 8px;
|
|
11486
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.2);
|
|
11487
|
+
pointer-events: none;
|
|
11488
|
+
}
|
|
11489
|
+
|
|
11490
|
+
.chat-panel__ctx-tooltip-header {
|
|
11491
|
+
display: flex;
|
|
11492
|
+
align-items: center;
|
|
11493
|
+
gap: 6px;
|
|
11494
|
+
padding: 8px 12px;
|
|
11495
|
+
border-bottom: 1px solid var(--color-border-secondary, rgba(255, 255, 255, 0.06));
|
|
11496
|
+
}
|
|
11497
|
+
|
|
11498
|
+
.chat-panel__ctx-tooltip-type {
|
|
11499
|
+
font-size: 0.6875rem;
|
|
11500
|
+
font-weight: 600;
|
|
11501
|
+
text-transform: uppercase;
|
|
11502
|
+
letter-spacing: 0.05em;
|
|
11503
|
+
color: var(--color-text-tertiary, #6e7681);
|
|
11504
|
+
}
|
|
11505
|
+
|
|
11506
|
+
.chat-panel__ctx-tooltip-title {
|
|
11507
|
+
font-size: 0.75rem;
|
|
11508
|
+
font-weight: 600;
|
|
11509
|
+
color: var(--color-text-primary, #e6edf3);
|
|
11510
|
+
overflow: hidden;
|
|
11511
|
+
text-overflow: ellipsis;
|
|
11512
|
+
white-space: nowrap;
|
|
11513
|
+
}
|
|
11514
|
+
|
|
11515
|
+
.chat-panel__ctx-tooltip-body {
|
|
11516
|
+
padding: 8px 12px;
|
|
11517
|
+
font-size: 0.8125rem;
|
|
11518
|
+
line-height: 1.6;
|
|
11519
|
+
color: var(--color-text-secondary, #8b949e);
|
|
11520
|
+
}
|
|
11521
|
+
|
|
11522
|
+
.chat-panel__ctx-tooltip-body p {
|
|
11523
|
+
margin: 0 0 6px;
|
|
11524
|
+
}
|
|
11525
|
+
|
|
11526
|
+
.chat-panel__ctx-tooltip-body p:last-child {
|
|
11527
|
+
margin-bottom: 0;
|
|
11528
|
+
}
|
|
11529
|
+
|
|
11530
|
+
.chat-panel__ctx-tooltip-body code {
|
|
11531
|
+
padding: 2px 6px;
|
|
11532
|
+
background: var(--color-bg-tertiary, rgba(255, 255, 255, 0.04));
|
|
11533
|
+
border-radius: 3px;
|
|
11534
|
+
font-size: 0.75rem;
|
|
11535
|
+
}
|
|
11536
|
+
|
|
11537
|
+
.chat-panel__ctx-tooltip-body pre {
|
|
11538
|
+
margin: 6px 0;
|
|
11539
|
+
padding: 6px 10px;
|
|
11540
|
+
background: var(--color-bg-tertiary, rgba(255, 255, 255, 0.04));
|
|
11541
|
+
border-radius: 6px;
|
|
11542
|
+
overflow-x: auto;
|
|
11543
|
+
}
|
|
11544
|
+
|
|
11545
|
+
.chat-panel__ctx-tooltip-body pre code {
|
|
11546
|
+
padding: 0;
|
|
11547
|
+
background: none;
|
|
11548
|
+
}
|
|
11549
|
+
|
|
11550
|
+
.chat-panel__ctx-tooltip-body ul,
|
|
11551
|
+
.chat-panel__ctx-tooltip-body ol {
|
|
11552
|
+
margin: 4px 0 6px;
|
|
11553
|
+
padding-left: 20px;
|
|
11554
|
+
}
|
|
11555
|
+
|
|
11556
|
+
.chat-panel__ctx-tooltip-body li {
|
|
11557
|
+
margin: 2px 0;
|
|
11558
|
+
}
|
|
11559
|
+
|
|
11560
|
+
/* Chat Action Bar */
|
|
11561
|
+
.chat-panel__action-bar {
|
|
11562
|
+
display: flex;
|
|
11563
|
+
gap: 8px;
|
|
11564
|
+
padding: 8px 16px;
|
|
11565
|
+
border-top: 1px solid var(--color-border-primary);
|
|
11566
|
+
background: var(--color-bg-secondary);
|
|
11567
|
+
flex-shrink: 0;
|
|
11568
|
+
}
|
|
11569
|
+
|
|
11570
|
+
.chat-panel__action-btn {
|
|
11571
|
+
display: inline-flex;
|
|
11572
|
+
align-items: center;
|
|
11573
|
+
gap: 6px;
|
|
11574
|
+
padding: 6px 12px;
|
|
11575
|
+
border: 1px solid var(--color-border-primary);
|
|
11576
|
+
border-radius: 6px;
|
|
11577
|
+
background: var(--color-bg-primary);
|
|
11578
|
+
color: var(--color-text-secondary);
|
|
11579
|
+
font-size: 12px;
|
|
11580
|
+
font-family: inherit;
|
|
11581
|
+
cursor: pointer;
|
|
11582
|
+
transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
|
|
11583
|
+
}
|
|
11584
|
+
|
|
11585
|
+
.chat-panel__action-btn:hover:not(:disabled) {
|
|
11586
|
+
background: var(--color-bg-tertiary);
|
|
11587
|
+
border-color: var(--color-text-tertiary);
|
|
11588
|
+
color: var(--color-text-primary);
|
|
11589
|
+
}
|
|
11590
|
+
|
|
11591
|
+
.chat-panel__action-btn:disabled {
|
|
11592
|
+
opacity: 0.4;
|
|
11593
|
+
cursor: not-allowed;
|
|
11594
|
+
}
|
|
11595
|
+
|
|
11596
|
+
.chat-panel__action-btn svg {
|
|
11597
|
+
flex-shrink: 0;
|
|
11598
|
+
}
|
|
11599
|
+
|
|
11600
|
+
.chat-panel__action-btn--adopt {
|
|
11601
|
+
background: var(--color-accent-primary, #2f81f7);
|
|
11602
|
+
border-color: var(--color-accent-primary, #2f81f7);
|
|
11603
|
+
color: #ffffff;
|
|
11604
|
+
}
|
|
11605
|
+
|
|
11606
|
+
.chat-panel__action-btn--adopt:hover:not(:disabled) {
|
|
11607
|
+
background: var(--color-accent-hover, #388bfd);
|
|
11608
|
+
border-color: var(--color-accent-hover, #388bfd);
|
|
11609
|
+
color: #ffffff;
|
|
11610
|
+
}
|
|
11611
|
+
|
|
11612
|
+
.chat-panel__action-btn--update {
|
|
11613
|
+
background: var(--color-accent-primary, #2f81f7);
|
|
11614
|
+
border-color: var(--color-accent-primary, #2f81f7);
|
|
11615
|
+
color: #ffffff;
|
|
11616
|
+
}
|
|
11617
|
+
|
|
11618
|
+
.chat-panel__action-btn--update:hover:not(:disabled) {
|
|
11619
|
+
background: var(--color-accent-hover, #388bfd);
|
|
11620
|
+
border-color: var(--color-accent-hover, #388bfd);
|
|
11621
|
+
color: #ffffff;
|
|
11622
|
+
}
|
|
11623
|
+
|
|
11624
|
+
.chat-panel__action-btn--create-comment {
|
|
11625
|
+
background: var(--color-accent-primary, #2f81f7);
|
|
11626
|
+
border-color: var(--color-accent-primary, #2f81f7);
|
|
11627
|
+
color: #ffffff;
|
|
11628
|
+
}
|
|
11629
|
+
|
|
11630
|
+
.chat-panel__action-btn--create-comment:hover:not(:disabled) {
|
|
11631
|
+
background: var(--color-accent-hover, #388bfd);
|
|
11632
|
+
border-color: var(--color-accent-hover, #388bfd);
|
|
11633
|
+
color: #ffffff;
|
|
11634
|
+
}
|
|
11635
|
+
|
|
11636
|
+
.chat-panel__action-btn--dismiss-suggestion,
|
|
11637
|
+
.chat-panel__action-btn--dismiss-comment {
|
|
11638
|
+
background: var(--color-danger, #d1242f);
|
|
11639
|
+
border-color: var(--color-danger, #d1242f);
|
|
11640
|
+
color: #ffffff;
|
|
11641
|
+
}
|
|
11642
|
+
|
|
11643
|
+
.chat-panel__action-btn--dismiss-suggestion:hover:not(:disabled),
|
|
11644
|
+
.chat-panel__action-btn--dismiss-comment:hover:not(:disabled) {
|
|
11645
|
+
background: var(--color-danger-hover, #b91c1c);
|
|
11646
|
+
border-color: var(--color-danger-hover, #b91c1c);
|
|
11647
|
+
color: #ffffff;
|
|
11648
|
+
}
|
|
11649
|
+
|
|
11650
|
+
.chat-panel__action-bar-dismiss {
|
|
11651
|
+
margin-left: auto;
|
|
11652
|
+
display: inline-flex;
|
|
11653
|
+
align-items: center;
|
|
11654
|
+
justify-content: center;
|
|
11655
|
+
background: none;
|
|
11656
|
+
border: none;
|
|
11657
|
+
color: var(--color-text-tertiary);
|
|
11658
|
+
cursor: pointer;
|
|
11659
|
+
padding: 4px;
|
|
11660
|
+
border-radius: 4px;
|
|
11661
|
+
line-height: 1;
|
|
11662
|
+
transition: background 0.15s ease, color 0.15s ease;
|
|
11663
|
+
}
|
|
11664
|
+
|
|
11665
|
+
.chat-panel__action-bar-dismiss:hover {
|
|
11666
|
+
background: var(--color-bg-tertiary);
|
|
11667
|
+
color: var(--color-text-primary);
|
|
11668
|
+
}
|
|
11669
|
+
|
|
11670
|
+
/* Chat Input Area */
|
|
11671
|
+
.chat-panel__input-area {
|
|
11672
|
+
display: flex;
|
|
11673
|
+
flex-direction: column;
|
|
11674
|
+
margin: 0 12px 12px;
|
|
11675
|
+
border: 1px solid var(--color-border-primary);
|
|
11676
|
+
border-radius: 8px;
|
|
11677
|
+
background: var(--color-bg-primary);
|
|
11678
|
+
flex-shrink: 0;
|
|
11679
|
+
transition: border-color 0.15s ease, box-shadow 0.15s ease;
|
|
11680
|
+
}
|
|
11681
|
+
|
|
11682
|
+
.chat-panel__input-area:focus-within {
|
|
11683
|
+
border-color: var(--color-accent-primary);
|
|
11684
|
+
box-shadow: 0 0 0 2px var(--color-accent-light);
|
|
11685
|
+
}
|
|
11686
|
+
|
|
11687
|
+
.chat-panel__input {
|
|
11688
|
+
min-height: 36px;
|
|
11689
|
+
max-height: 120px;
|
|
11690
|
+
padding: 8px 12px 4px;
|
|
11691
|
+
border: none;
|
|
11692
|
+
background: transparent;
|
|
11693
|
+
color: var(--color-text-primary);
|
|
11694
|
+
font-family: inherit;
|
|
11695
|
+
font-size: 13px;
|
|
11696
|
+
line-height: 1.4;
|
|
11697
|
+
resize: none;
|
|
11698
|
+
outline: none;
|
|
11699
|
+
overflow-y: hidden;
|
|
11700
|
+
box-sizing: border-box;
|
|
11701
|
+
}
|
|
11702
|
+
|
|
11703
|
+
.chat-panel__input::placeholder {
|
|
11704
|
+
color: var(--color-text-tertiary);
|
|
11705
|
+
}
|
|
11706
|
+
|
|
11707
|
+
.chat-panel__input-footer {
|
|
11708
|
+
display: flex;
|
|
11709
|
+
align-items: center;
|
|
11710
|
+
justify-content: space-between;
|
|
11711
|
+
padding: 4px 8px 6px 12px;
|
|
11712
|
+
}
|
|
11713
|
+
|
|
11714
|
+
.chat-panel__input-hint {
|
|
11715
|
+
font-size: 11px;
|
|
11716
|
+
color: var(--color-text-tertiary);
|
|
11717
|
+
user-select: none;
|
|
11718
|
+
}
|
|
11719
|
+
|
|
11720
|
+
.chat-panel__input-actions {
|
|
11721
|
+
display: flex;
|
|
11722
|
+
align-items: center;
|
|
11723
|
+
gap: 4px;
|
|
11724
|
+
}
|
|
11725
|
+
|
|
11726
|
+
.chat-panel__send-btn {
|
|
11727
|
+
display: flex;
|
|
11728
|
+
align-items: center;
|
|
11729
|
+
justify-content: center;
|
|
11730
|
+
width: 28px;
|
|
11731
|
+
height: 28px;
|
|
11732
|
+
border: none;
|
|
11733
|
+
background: var(--color-accent-primary);
|
|
11734
|
+
color: #ffffff;
|
|
11735
|
+
border-radius: 6px;
|
|
11736
|
+
cursor: pointer;
|
|
11737
|
+
flex-shrink: 0;
|
|
11738
|
+
transition: background 0.15s ease, opacity 0.15s ease;
|
|
11739
|
+
}
|
|
11740
|
+
|
|
11741
|
+
.chat-panel__send-btn:hover:not(:disabled) {
|
|
11742
|
+
background: var(--color-accent-hover);
|
|
11743
|
+
}
|
|
11744
|
+
|
|
11745
|
+
.chat-panel__send-btn:disabled {
|
|
11746
|
+
opacity: 0.4;
|
|
11747
|
+
cursor: not-allowed;
|
|
11748
|
+
}
|
|
11749
|
+
|
|
11750
|
+
.chat-panel__stop-btn {
|
|
11751
|
+
display: flex;
|
|
11752
|
+
align-items: center;
|
|
11753
|
+
justify-content: center;
|
|
11754
|
+
width: 28px;
|
|
11755
|
+
height: 28px;
|
|
11756
|
+
border: none;
|
|
11757
|
+
border-radius: 6px;
|
|
11758
|
+
background: var(--color-danger, #d1242f);
|
|
11759
|
+
color: white;
|
|
11760
|
+
cursor: pointer;
|
|
11761
|
+
flex-shrink: 0;
|
|
11762
|
+
transition: background 0.15s;
|
|
11763
|
+
}
|
|
11764
|
+
|
|
11765
|
+
.chat-panel__stop-btn:hover {
|
|
11766
|
+
opacity: 0.85;
|
|
11767
|
+
}
|
|
11768
|
+
|
|
11769
|
+
/* Dark theme adjustments */
|
|
11770
|
+
[data-theme="dark"] .chat-panel {
|
|
11771
|
+
box-shadow: -4px 0 16px rgba(0, 0, 0, 0.3);
|
|
11772
|
+
}
|
|
11773
|
+
|
|
11774
|
+
[data-theme="dark"] .chat-panel__message--user .chat-panel__bubble {
|
|
11775
|
+
background: var(--color-accent-primary);
|
|
11776
|
+
}
|
|
11777
|
+
|
|
11778
|
+
[data-theme="dark"] .chat-panel__error-bubble {
|
|
11779
|
+
background: rgba(248, 81, 73, 0.1);
|
|
11780
|
+
border-color: rgba(248, 81, 73, 0.2);
|
|
11781
|
+
}
|
|
11782
|
+
|
|
11783
|
+
/* Responsive: narrower on small screens */
|
|
11784
|
+
@media (max-width: 768px) {
|
|
11785
|
+
.chat-panel {
|
|
11786
|
+
width: 100% !important;
|
|
11787
|
+
}
|
|
11788
|
+
}
|
|
11789
|
+
|
|
11790
|
+
/* ==========================================================================
|
|
11791
|
+
Context Files
|
|
11792
|
+
Pinned non-diff file ranges shown below the diff for review context
|
|
11793
|
+
========================================================================== */
|
|
11794
|
+
|
|
11795
|
+
/* Context badge for sidebar and diff header */
|
|
11796
|
+
.context-badge {
|
|
11797
|
+
display: inline-flex;
|
|
11798
|
+
align-items: center;
|
|
11799
|
+
padding: 1px 6px;
|
|
11800
|
+
font-size: 10px;
|
|
11801
|
+
font-weight: 600;
|
|
11802
|
+
color: #bf6a02;
|
|
11803
|
+
border: 1px solid #bf6a02;
|
|
11804
|
+
border-radius: 3px;
|
|
11805
|
+
text-transform: uppercase;
|
|
11806
|
+
letter-spacing: 0.5px;
|
|
11807
|
+
white-space: nowrap;
|
|
11808
|
+
}
|
|
11809
|
+
|
|
11810
|
+
[data-theme="dark"] .context-badge {
|
|
11811
|
+
color: #e09b3d;
|
|
11812
|
+
border-color: #e09b3d;
|
|
11813
|
+
}
|
|
11814
|
+
|
|
11815
|
+
/* Smaller context badge in file navigator */
|
|
11816
|
+
.file-item .context-badge {
|
|
11817
|
+
font-size: 9px;
|
|
11818
|
+
padding: 0px 4px;
|
|
11819
|
+
opacity: 0.7;
|
|
11820
|
+
}
|
|
11821
|
+
|
|
11822
|
+
/* Smaller context badge in diff panel header */
|
|
11823
|
+
.context-file-header .context-badge {
|
|
11824
|
+
font-size: 9px;
|
|
11825
|
+
padding: 0px 4px;
|
|
11826
|
+
}
|
|
11827
|
+
|
|
11828
|
+
.d2h-file-wrapper.context-file {
|
|
11829
|
+
border-left: 3px solid var(--color-accent-primary, #0969da);
|
|
11830
|
+
margin-bottom: 24px;
|
|
11831
|
+
overflow-x: auto;
|
|
11832
|
+
max-width: 100%;
|
|
11833
|
+
background: var(--color-bg-subtle, #f6f8fa);
|
|
11834
|
+
}
|
|
11835
|
+
|
|
11836
|
+
.context-file-header {
|
|
11837
|
+
display: flex;
|
|
11838
|
+
align-items: center;
|
|
11839
|
+
gap: 8px;
|
|
11840
|
+
background: var(--color-bg-secondary);
|
|
11841
|
+
padding: 8px 12px;
|
|
11842
|
+
border-bottom: 1px solid var(--color-border-primary);
|
|
11843
|
+
font-weight: 600;
|
|
11844
|
+
font-size: 14px;
|
|
11845
|
+
}
|
|
11846
|
+
|
|
11847
|
+
/* Override flex: 1 so the file name doesn't push the badge away */
|
|
11848
|
+
.context-file-header .d2h-file-name {
|
|
11849
|
+
flex: none;
|
|
11850
|
+
}
|
|
11851
|
+
|
|
11852
|
+
/* Push viewed checkbox (and everything after it) to the right */
|
|
11853
|
+
.context-file-header .file-viewed-label {
|
|
11854
|
+
margin-left: auto;
|
|
11855
|
+
}
|
|
11856
|
+
|
|
11857
|
+
.context-file-badge {
|
|
11858
|
+
display: inline-flex;
|
|
11859
|
+
align-items: center;
|
|
11860
|
+
padding: 2px 8px;
|
|
11861
|
+
font-size: 11px;
|
|
11862
|
+
font-weight: 500;
|
|
11863
|
+
color: var(--color-accent-primary, #0969da);
|
|
11864
|
+
background: var(--color-accent-lighter, rgba(9, 105, 218, 0.08));
|
|
11865
|
+
border-radius: 12px;
|
|
11866
|
+
font-family: var(--font-mono, 'JetBrains Mono', monospace);
|
|
11867
|
+
white-space: nowrap;
|
|
11868
|
+
}
|
|
11869
|
+
|
|
11870
|
+
/* Label is now a tooltip on the CONTEXT badge (title attribute) */
|
|
11871
|
+
|
|
11872
|
+
.context-file-dismiss {
|
|
11873
|
+
display: flex;
|
|
11874
|
+
align-items: center;
|
|
11875
|
+
justify-content: center;
|
|
11876
|
+
width: 24px;
|
|
11877
|
+
height: 24px;
|
|
11878
|
+
padding: 0;
|
|
11879
|
+
background: transparent;
|
|
11880
|
+
border: 1px solid transparent;
|
|
11881
|
+
border-radius: 4px;
|
|
11882
|
+
cursor: pointer;
|
|
11883
|
+
color: var(--color-text-tertiary);
|
|
11884
|
+
transition: background-color 0.15s, color 0.15s;
|
|
11885
|
+
flex-shrink: 0;
|
|
11886
|
+
}
|
|
11887
|
+
|
|
11888
|
+
.context-file-dismiss:hover {
|
|
11889
|
+
background: var(--color-bg-tertiary);
|
|
11890
|
+
color: var(--color-danger, #cf222e);
|
|
11891
|
+
}
|
|
11892
|
+
|
|
11893
|
+
/* Context chunk header (range label + per-chunk dismiss) */
|
|
11894
|
+
.context-chunk-header td {
|
|
11895
|
+
padding: 4px 12px;
|
|
11896
|
+
font-size: 11px;
|
|
11897
|
+
color: var(--color-text-secondary);
|
|
11898
|
+
border-top: 1px dashed var(--color-border-secondary, #d0d7de);
|
|
11899
|
+
}
|
|
11900
|
+
|
|
11901
|
+
.context-range-label {
|
|
11902
|
+
font-family: var(--font-mono, 'JetBrains Mono', monospace);
|
|
11903
|
+
}
|
|
11904
|
+
|
|
11905
|
+
.context-chunk-dismiss {
|
|
11906
|
+
display: inline-flex;
|
|
11907
|
+
align-items: center;
|
|
11908
|
+
justify-content: center;
|
|
11909
|
+
width: 18px;
|
|
11910
|
+
height: 18px;
|
|
11911
|
+
border: none;
|
|
11912
|
+
background: transparent;
|
|
11913
|
+
color: var(--color-text-tertiary);
|
|
11914
|
+
cursor: pointer;
|
|
11915
|
+
font-size: 14px;
|
|
11916
|
+
margin-left: 8px;
|
|
11917
|
+
border-radius: 3px;
|
|
11918
|
+
vertical-align: middle;
|
|
11919
|
+
}
|
|
11920
|
+
|
|
11921
|
+
.context-chunk-dismiss:hover {
|
|
11922
|
+
background: var(--color-bg-tertiary);
|
|
11923
|
+
color: var(--color-danger, #cf222e);
|
|
11924
|
+
}
|
|
11925
|
+
|
|
11926
|
+
/* Separator between non-contiguous context chunks */
|
|
11927
|
+
.context-chunk-separator-row {
|
|
11928
|
+
height: 8px;
|
|
11929
|
+
}
|
|
11930
|
+
|
|
11931
|
+
.context-chunk-separator-cell {
|
|
11932
|
+
border-top: 1px dashed var(--color-border-secondary, #d0d7de);
|
|
11933
|
+
background: var(--color-bg-subtle, #f6f8fa);
|
|
11934
|
+
}
|
|
11935
|
+
|
|
11936
|
+
.file-item.context-file-item .file-name {
|
|
11937
|
+
font-size: 11px;
|
|
11938
|
+
color: var(--color-text-secondary);
|
|
11939
|
+
}
|
|
11940
|
+
|
|
11941
|
+
/* Highlight flash animation for scroll-to-line targeting */
|
|
11942
|
+
.highlight-flash {
|
|
11943
|
+
animation: highlightFlash 1.5s ease-out;
|
|
11944
|
+
}
|
|
11945
|
+
|
|
11946
|
+
@keyframes highlightFlash {
|
|
11947
|
+
0% {
|
|
11948
|
+
background-color: var(--color-selection, #fff8c5);
|
|
11949
|
+
}
|
|
11950
|
+
100% {
|
|
11951
|
+
background-color: transparent;
|
|
11952
|
+
}
|
|
11953
|
+
}
|
|
11954
|
+
|
|
11955
|
+
/* Dark theme overrides for context files */
|
|
11956
|
+
[data-theme="dark"] .d2h-file-wrapper.context-file {
|
|
11957
|
+
border-left-color: var(--color-accent-primary, #58a6ff);
|
|
11958
|
+
background: var(--color-bg-subtle, #161b22);
|
|
11959
|
+
}
|
|
11960
|
+
|
|
11961
|
+
[data-theme="dark"] .context-file-badge {
|
|
11962
|
+
color: var(--color-accent-primary, #58a6ff);
|
|
11963
|
+
background: var(--color-accent-lighter, rgba(88, 166, 255, 0.08));
|
|
11964
|
+
}
|
|
11965
|
+
|
|
11966
|
+
[data-theme="dark"] .context-file-dismiss:hover {
|
|
11967
|
+
color: var(--color-danger, #f85149);
|
|
11968
|
+
}
|
|
11969
|
+
|
|
11970
|
+
[data-theme="dark"] .context-chunk-dismiss:hover {
|
|
11971
|
+
color: var(--color-danger, #f85149);
|
|
11972
|
+
}
|
|
11973
|
+
|
|
11974
|
+
[data-theme="dark"] .context-chunk-separator-cell {
|
|
11975
|
+
background: var(--color-bg-subtle, #161b22);
|
|
11976
|
+
}
|
|
11977
|
+
|
|
11978
|
+
[data-theme="dark"] .chat-file-link {
|
|
11979
|
+
color: var(--color-accent-primary, #58a6ff);
|
|
11980
|
+
background: var(--color-bg-tertiary);
|
|
11981
|
+
}
|
|
11982
|
+
|
|
11983
|
+
[data-theme="dark"] .chat-file-link:hover {
|
|
11984
|
+
color: var(--color-accent-hover, #1f6feb);
|
|
11985
|
+
background: var(--color-bg-accent-subtle, rgba(88, 166, 255, 0.1));
|
|
11986
|
+
}
|
|
11987
|
+
|
|
11988
|
+
/* ─── Chat Feature Gating ──────────────────────────────────────────────────── */
|
|
11989
|
+
|
|
11990
|
+
/* Chat disabled: hide everything */
|
|
11991
|
+
[data-chat="disabled"] #chat-toggle-btn,
|
|
11992
|
+
[data-chat="disabled"] #panel-layout-toggle,
|
|
11993
|
+
[data-chat="disabled"] #chat-panel-container,
|
|
11994
|
+
[data-chat="disabled"] .file-header-chat-btn,
|
|
11995
|
+
[data-chat="disabled"] .ai-action-chat,
|
|
11996
|
+
[data-chat="disabled"] .btn-collapsed-chat,
|
|
11997
|
+
[data-chat="disabled"] .finding-chat-action,
|
|
11998
|
+
[data-chat="disabled"] .btn-chat-comment,
|
|
11999
|
+
[data-chat="disabled"] .analysis-history-chat-btn,
|
|
12000
|
+
[data-chat="disabled"] .chat-line-btn,
|
|
12001
|
+
[data-chat="disabled"] .btn-chat-from-comment {
|
|
12002
|
+
display: none !important;
|
|
12003
|
+
}
|
|
12004
|
+
|
|
12005
|
+
/* Chat enabled but Pi unavailable: hide all except toggle (which is disabled) */
|
|
12006
|
+
[data-chat="unavailable"] #panel-layout-toggle,
|
|
12007
|
+
[data-chat="unavailable"] #chat-panel-container,
|
|
12008
|
+
[data-chat="unavailable"] .file-header-chat-btn,
|
|
12009
|
+
[data-chat="unavailable"] .ai-action-chat,
|
|
12010
|
+
[data-chat="unavailable"] .btn-collapsed-chat,
|
|
12011
|
+
[data-chat="unavailable"] .finding-chat-action,
|
|
12012
|
+
[data-chat="unavailable"] .btn-chat-comment,
|
|
12013
|
+
[data-chat="unavailable"] .analysis-history-chat-btn,
|
|
12014
|
+
[data-chat="unavailable"] .chat-line-btn,
|
|
12015
|
+
[data-chat="unavailable"] .btn-chat-from-comment {
|
|
12016
|
+
display: none !important;
|
|
12017
|
+
}
|
|
12018
|
+
|
|
12019
|
+
[data-chat="unavailable"] #chat-toggle-btn {
|
|
12020
|
+
opacity: 0.4;
|
|
12021
|
+
cursor: not-allowed;
|
|
12022
|
+
}
|