@in-the-loop-labs/pair-review 3.1.4 → 3.2.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.
package/public/css/pr.css CHANGED
@@ -5983,7 +5983,6 @@ body::before {
5983
5983
  .header-center {
5984
5984
  flex: 1;
5985
5985
  min-width: 0;
5986
- overflow: hidden;
5987
5986
  text-align: center;
5988
5987
  }
5989
5988
 
@@ -7452,6 +7451,31 @@ body.resizing * {
7452
7451
  background: rgba(88, 166, 255, 0.15);
7453
7452
  }
7454
7453
 
7454
+ /* ── Notification Sounds Popover ───────────────────────────────────────── */
7455
+ .notification-popover {
7456
+ background: var(--color-bg-primary, #ffffff);
7457
+ border: 1px solid var(--color-border-primary, #d0d7de);
7458
+ border-radius: 8px;
7459
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 8px 24px rgba(0, 0, 0, 0.12);
7460
+ min-width: 180px;
7461
+ }
7462
+
7463
+ .notification-popover label:hover {
7464
+ background: var(--color-bg-tertiary);
7465
+ }
7466
+
7467
+ /* Dark theme */
7468
+ [data-theme="dark"] .notification-popover {
7469
+ background: var(--color-bg-secondary);
7470
+ border-color: var(--color-border-secondary);
7471
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3), 0 8px 24px rgba(0, 0, 0, 0.4);
7472
+ }
7473
+
7474
+ [data-theme="dark"] .notification-popover label:hover {
7475
+ background: var(--color-bg-tertiary);
7476
+ }
7477
+
7478
+
7455
7479
  /* --------------------------------------------------------------------------
7456
7480
  Comment Minimize Mode
7457
7481
  -------------------------------------------------------------------------- */
@@ -12061,6 +12085,25 @@ body.resizing * {
12061
12085
  padding: 0;
12062
12086
  }
12063
12087
 
12088
+ .chat-panel__message--assistant .chat-panel__bubble table {
12089
+ border-collapse: collapse;
12090
+ font-size: 12px;
12091
+ margin: 8px 0;
12092
+ overflow-x: auto;
12093
+ display: block;
12094
+ }
12095
+
12096
+ .chat-panel__message--assistant .chat-panel__bubble th,
12097
+ .chat-panel__message--assistant .chat-panel__bubble td {
12098
+ border: 1px solid var(--color-border-primary);
12099
+ padding: 4px 8px;
12100
+ }
12101
+
12102
+ .chat-panel__message--assistant .chat-panel__bubble th {
12103
+ background: var(--color-bg-tertiary);
12104
+ font-weight: 600;
12105
+ }
12106
+
12064
12107
  .chat-panel__message--assistant .chat-panel__bubble ul,
12065
12108
  .chat-panel__message--assistant .chat-panel__bubble ol {
12066
12109
  margin: 4px 0;
@@ -13029,3 +13072,872 @@ body.resizing * {
13029
13072
  background: rgba(56, 139, 253, 0.1);
13030
13073
  color: var(--color-text-secondary, #8b949e);
13031
13074
  }
13075
+
13076
+ /* ============================================
13077
+ Stack Review — Analyze Split Button
13078
+ ============================================ */
13079
+
13080
+ .analyze-split-container {
13081
+ display: inline-flex;
13082
+ align-items: stretch;
13083
+ position: relative;
13084
+ transition: transform 0.3s ease, box-shadow 0.3s ease;
13085
+ border-radius: var(--radius-sm, 6px);
13086
+ }
13087
+
13088
+ .analyze-split-container:hover {
13089
+ transform: translateY(-1px);
13090
+ box-shadow: 0 0 16px rgba(245, 158, 11, 0.4), 0 0 32px rgba(245, 158, 11, 0.2);
13091
+ }
13092
+
13093
+ .analyze-split-container #analyze-btn {
13094
+ border-top-right-radius: 0;
13095
+ border-bottom-right-radius: 0;
13096
+ border-right: none;
13097
+ }
13098
+
13099
+ /* Remove per-button transform/shadow on hover — container handles it */
13100
+ .analyze-split-container #analyze-btn:hover {
13101
+ transform: none;
13102
+ box-shadow: none;
13103
+ }
13104
+
13105
+ .analyze-dropdown-toggle {
13106
+ display: flex;
13107
+ align-items: center;
13108
+ justify-content: center;
13109
+ padding: 0 8px;
13110
+ background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
13111
+ border: 1px solid #fcd34d;
13112
+ border-left: 1px solid rgba(180, 83, 9, 0.2);
13113
+ border-top-right-radius: var(--radius-sm, 6px);
13114
+ border-bottom-right-radius: var(--radius-sm, 6px);
13115
+ color: #b45309;
13116
+ cursor: pointer;
13117
+ transition: all 0.3s ease;
13118
+ font-size: 0;
13119
+ position: relative;
13120
+ overflow: hidden;
13121
+ font-weight: 600;
13122
+ }
13123
+
13124
+ .analyze-dropdown-toggle::before {
13125
+ content: '';
13126
+ position: absolute;
13127
+ top: 0;
13128
+ left: -100%;
13129
+ width: 100%;
13130
+ height: 100%;
13131
+ background: linear-gradient(
13132
+ 90deg,
13133
+ transparent 0%,
13134
+ rgba(255, 255, 255, 0.4) 50%,
13135
+ transparent 100%
13136
+ );
13137
+ transition: left 0.5s ease;
13138
+ }
13139
+
13140
+ .analyze-split-container:hover .analyze-dropdown-toggle {
13141
+ background: linear-gradient(135deg, #fde68a 0%, #fcd34d 100%);
13142
+ border-color: var(--color-accent-ai-dark);
13143
+ }
13144
+
13145
+ .analyze-split-container:hover .analyze-dropdown-toggle::before {
13146
+ left: 100%;
13147
+ }
13148
+
13149
+ .analyze-dropdown-toggle svg {
13150
+ width: 12px;
13151
+ height: 12px;
13152
+ fill: currentColor;
13153
+ transition: transform 0.15s ease;
13154
+ }
13155
+
13156
+ .analyze-split-container.open .analyze-dropdown-toggle svg {
13157
+ transform: rotate(180deg);
13158
+ }
13159
+
13160
+ .analyze-dropdown-menu {
13161
+ display: none;
13162
+ position: absolute;
13163
+ top: 100%;
13164
+ right: 0;
13165
+ margin-top: 4px;
13166
+ min-width: 200px;
13167
+ background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%);
13168
+ border: 1px solid #fcd34d;
13169
+ border-radius: var(--radius-sm, 6px);
13170
+ box-shadow: 0 4px 16px rgba(245, 158, 11, 0.2), 0 8px 24px rgba(0, 0, 0, 0.08);
13171
+ z-index: 100;
13172
+ padding: 0;
13173
+ overflow: hidden;
13174
+ }
13175
+
13176
+ .analyze-split-container.open .analyze-dropdown-menu {
13177
+ display: block;
13178
+ }
13179
+
13180
+ .analyze-dropdown-item {
13181
+ display: block;
13182
+ width: 100%;
13183
+ padding: 8px 12px;
13184
+ background: none;
13185
+ border: none;
13186
+ color: #92400e;
13187
+ font-size: 13px;
13188
+ font-weight: 500;
13189
+ text-align: left;
13190
+ cursor: pointer;
13191
+ white-space: nowrap;
13192
+ transition: background 0.15s ease, color 0.15s ease;
13193
+ }
13194
+
13195
+ .analyze-dropdown-item:hover {
13196
+ background: rgba(251, 191, 36, 0.25);
13197
+ color: #b45309;
13198
+ }
13199
+
13200
+ /* Dark theme — container hover */
13201
+ [data-theme="dark"] .analyze-split-container:hover {
13202
+ box-shadow: 0 0 20px rgba(251, 191, 36, 0.3), 0 0 40px rgba(245, 158, 11, 0.15);
13203
+ }
13204
+
13205
+ [data-theme="dark"] .analyze-dropdown-toggle {
13206
+ background: linear-gradient(135deg, rgba(251, 191, 36, 0.15) 0%, rgba(245, 158, 11, 0.25) 100%);
13207
+ border-color: rgba(251, 191, 36, 0.4);
13208
+ border-left-color: rgba(251, 191, 36, 0.2);
13209
+ color: var(--color-accent-ai, #fbbf24);
13210
+ }
13211
+
13212
+ [data-theme="dark"] .analyze-split-container:hover .analyze-dropdown-toggle {
13213
+ background: linear-gradient(135deg, rgba(251, 191, 36, 0.25) 0%, rgba(245, 158, 11, 0.35) 100%);
13214
+ border-color: var(--color-accent-ai-dark);
13215
+ }
13216
+
13217
+ [data-theme="dark"] .analyze-dropdown-menu {
13218
+ background: linear-gradient(135deg, rgba(251, 191, 36, 0.08) 0%, rgba(245, 158, 11, 0.12) 100%);
13219
+ background-color: var(--color-bg-elevated, #1e2329);
13220
+ border-color: rgba(251, 191, 36, 0.4);
13221
+ box-shadow: 0 4px 16px rgba(251, 191, 36, 0.1), 0 8px 24px rgba(0, 0, 0, 0.4);
13222
+ }
13223
+
13224
+ [data-theme="dark"] .analyze-dropdown-item {
13225
+ color: var(--color-accent-ai, #fbbf24);
13226
+ }
13227
+
13228
+ [data-theme="dark"] .analyze-dropdown-item:hover {
13229
+ background: rgba(251, 191, 36, 0.15);
13230
+ color: #fcd34d;
13231
+ }
13232
+
13233
+ /* Analyzing state — toggle matches the main button */
13234
+ .analyze-split-container .analyze-dropdown-toggle.btn-analyzing {
13235
+ background: linear-gradient(135deg, var(--color-accent-ai-dark, #d97706) 0%, #d97706 100%);
13236
+ border-color: #b45309;
13237
+ color: #ffffff;
13238
+ box-shadow: 0 0 20px rgba(245, 158, 11, 0.5), 0 0 40px rgba(217, 119, 6, 0.3);
13239
+ }
13240
+
13241
+ [data-theme="dark"] .analyze-split-container .analyze-dropdown-toggle.btn-analyzing {
13242
+ background: linear-gradient(135deg, var(--color-accent-ai, #fbbf24) 0%, var(--color-accent-ai-dark, #d97706) 100%);
13243
+ border-color: var(--color-accent-ai-dark, #d97706);
13244
+ color: #1c1917;
13245
+ box-shadow: 0 0 24px rgba(251, 191, 36, 0.6), 0 0 48px rgba(245, 158, 11, 0.3);
13246
+ }
13247
+
13248
+ /* ============================================
13249
+ Stack Review — PR Title Navigation Dropdown
13250
+ ============================================ */
13251
+
13252
+ .stack-nav-dropdown {
13253
+ position: relative;
13254
+ display: inline-flex;
13255
+ align-items: center;
13256
+ max-width: 100%;
13257
+ }
13258
+
13259
+ .stack-nav-trigger {
13260
+ display: inline-flex;
13261
+ align-items: center;
13262
+ gap: 4px;
13263
+ background: none;
13264
+ border: none;
13265
+ padding: 0;
13266
+ cursor: pointer;
13267
+ max-width: 100%;
13268
+ color: inherit;
13269
+ font: inherit;
13270
+ }
13271
+
13272
+ .stack-nav-trigger:hover .stack-nav-chevron {
13273
+ opacity: 1;
13274
+ }
13275
+
13276
+ .stack-nav-trigger h1 {
13277
+ margin: 0;
13278
+ }
13279
+
13280
+ .stack-nav-chevron {
13281
+ flex-shrink: 0;
13282
+ width: 14px;
13283
+ height: 14px;
13284
+ opacity: 0.5;
13285
+ transition: opacity 0.15s ease, transform 0.15s ease;
13286
+ fill: currentColor;
13287
+ color: var(--color-text-tertiary, #656d76);
13288
+ }
13289
+
13290
+ .stack-nav-dropdown.open .stack-nav-chevron {
13291
+ transform: rotate(180deg);
13292
+ opacity: 1;
13293
+ }
13294
+
13295
+ .stack-nav-menu {
13296
+ display: none;
13297
+ position: absolute;
13298
+ top: 100%;
13299
+ left: 50%;
13300
+ transform: translateX(-50%);
13301
+ margin-top: 8px;
13302
+ width: max(420px, min(600px, 50vw));
13303
+ background: var(--color-bg-elevated, #fff);
13304
+ border: 1px solid var(--color-border-primary, #d1d9e0);
13305
+ border-radius: var(--radius-sm, 6px);
13306
+ box-shadow: 0 4px 16px var(--color-shadow, rgba(0, 0, 0, 0.12));
13307
+ z-index: 100;
13308
+ padding: 6px 0;
13309
+ max-height: min(calc(100vh - 120px), 80vh);
13310
+ overflow-y: auto;
13311
+ }
13312
+
13313
+ .stack-nav-dropdown.open .stack-nav-menu {
13314
+ display: block;
13315
+ }
13316
+
13317
+ .stack-nav-item {
13318
+ display: flex;
13319
+ align-items: flex-start;
13320
+ padding: 10px 16px 10px 36px;
13321
+ cursor: pointer;
13322
+ text-decoration: none;
13323
+ color: var(--color-text-primary, #1f2328);
13324
+ transition: background 0.1s ease;
13325
+ font-size: 14px;
13326
+ position: relative;
13327
+ }
13328
+
13329
+ .stack-nav-item:hover {
13330
+ background: var(--color-accent-lighter, rgba(88, 166, 255, 0.08));
13331
+ }
13332
+
13333
+ .stack-nav-item.current {
13334
+ background: var(--color-accent-lighter, rgba(88, 166, 255, 0.08));
13335
+ }
13336
+
13337
+ /* Star indicator for current PR — absolutely positioned, outside flex flow */
13338
+ .stack-nav-item.current::before {
13339
+ content: '\2605';
13340
+ position: absolute;
13341
+ left: 12px;
13342
+ top: 50%;
13343
+ transform: translateY(-50%);
13344
+ color: var(--color-accent-ai, #f59e0b);
13345
+ font-size: 14px;
13346
+ line-height: 1;
13347
+ }
13348
+
13349
+ /* Text column: two rows */
13350
+ .stack-nav-text {
13351
+ flex: 1;
13352
+ min-width: 0;
13353
+ display: flex;
13354
+ flex-direction: column;
13355
+ gap: 2px;
13356
+ }
13357
+
13358
+ /* Primary row: PR number + title inline */
13359
+ .stack-nav-primary {
13360
+ display: flex;
13361
+ align-items: baseline;
13362
+ gap: 6px;
13363
+ min-width: 0;
13364
+ }
13365
+
13366
+ .stack-nav-number {
13367
+ color: var(--color-accent-ai, #f59e0b);
13368
+ font-weight: 600;
13369
+ font-size: 13px;
13370
+ font-variant-numeric: tabular-nums;
13371
+ }
13372
+
13373
+ .stack-nav-title {
13374
+ overflow: hidden;
13375
+ text-overflow: ellipsis;
13376
+ white-space: nowrap;
13377
+ font-weight: 600;
13378
+ font-size: 14px;
13379
+ color: var(--color-text-primary, #1f2328);
13380
+ }
13381
+
13382
+ /* Secondary row: branch name */
13383
+ .stack-nav-branch {
13384
+ display: flex;
13385
+ align-items: center;
13386
+ gap: 4px;
13387
+ font-size: 12px;
13388
+ color: var(--color-text-tertiary, #656d76);
13389
+ overflow: hidden;
13390
+ }
13391
+
13392
+ .stack-nav-branch span {
13393
+ overflow: hidden;
13394
+ text-overflow: ellipsis;
13395
+ white-space: nowrap;
13396
+ }
13397
+
13398
+ .stack-nav-branch-icon {
13399
+ flex-shrink: 0;
13400
+ width: 12px;
13401
+ height: 12px;
13402
+ fill: currentColor;
13403
+ opacity: 0.7;
13404
+ }
13405
+
13406
+ [data-theme="dark"] .stack-nav-menu {
13407
+ background: var(--color-bg-elevated, #1e2329);
13408
+ border-color: var(--color-border-primary, #30363d);
13409
+ box-shadow: 0 4px 16px var(--color-shadow-large, rgba(0, 0, 0, 0.5));
13410
+ }
13411
+
13412
+ [data-theme="dark"] .stack-nav-item {
13413
+ color: var(--color-text-primary, #c9d1d9);
13414
+ }
13415
+
13416
+ [data-theme="dark"] .stack-nav-item:hover {
13417
+ background: var(--color-accent-lighter, rgba(88, 166, 255, 0.08));
13418
+ }
13419
+
13420
+ [data-theme="dark"] .stack-nav-item.current {
13421
+ background: var(--color-accent-lighter, rgba(88, 166, 255, 0.08));
13422
+ }
13423
+
13424
+ [data-theme="dark"] .stack-nav-title {
13425
+ color: var(--color-text-primary, #c9d1d9);
13426
+ }
13427
+
13428
+ [data-theme="dark"] .stack-nav-chevron {
13429
+ color: var(--color-text-tertiary, #6e7681);
13430
+ }
13431
+
13432
+ [data-theme="dark"] .stack-nav-branch {
13433
+ color: var(--color-text-tertiary, #6e7681);
13434
+ }
13435
+
13436
+ /* ============================================
13437
+ Stack Review — Stack Analysis Dialog
13438
+ ============================================ */
13439
+
13440
+ .stack-dialog-overlay {
13441
+ position: fixed;
13442
+ inset: 0;
13443
+ background: var(--color-bg-overlay, rgba(0, 0, 0, 0.5));
13444
+ display: flex;
13445
+ align-items: center;
13446
+ justify-content: center;
13447
+ z-index: 1000;
13448
+ }
13449
+
13450
+ .stack-dialog-backdrop {
13451
+ position: absolute;
13452
+ inset: 0;
13453
+ }
13454
+
13455
+ .stack-dialog {
13456
+ position: relative;
13457
+ z-index: 1;
13458
+ background: var(--color-bg-elevated, #fff);
13459
+ border: 1px solid var(--color-border-primary, #d1d9e0);
13460
+ border-radius: 12px;
13461
+ box-shadow: 0 8px 32px var(--color-shadow-large, rgba(0, 0, 0, 0.2));
13462
+ width: 680px;
13463
+ max-width: 90vw;
13464
+ max-height: 80vh;
13465
+ display: flex;
13466
+ flex-direction: column;
13467
+ overflow: hidden;
13468
+ }
13469
+
13470
+ .stack-dialog-header {
13471
+ display: flex;
13472
+ align-items: center;
13473
+ justify-content: space-between;
13474
+ padding: 16px 20px;
13475
+ border-bottom: 1px solid var(--color-border-primary, #d1d9e0);
13476
+ font-size: 15px;
13477
+ font-weight: 600;
13478
+ color: var(--color-text-primary, #1f2328);
13479
+ }
13480
+
13481
+ .stack-dialog-header button {
13482
+ background: none;
13483
+ border: none;
13484
+ color: var(--color-text-tertiary, #656d76);
13485
+ cursor: pointer;
13486
+ padding: 4px;
13487
+ border-radius: 4px;
13488
+ transition: color 0.15s ease;
13489
+ }
13490
+
13491
+ .stack-dialog-header button:hover {
13492
+ color: var(--color-text-primary, #1f2328);
13493
+ }
13494
+
13495
+ .stack-dialog-body {
13496
+ flex: 1;
13497
+ overflow-y: auto;
13498
+ padding: 16px 20px;
13499
+ }
13500
+
13501
+ .stack-dialog-footer {
13502
+ display: flex;
13503
+ align-items: center;
13504
+ justify-content: flex-end;
13505
+ gap: 8px;
13506
+ padding: 12px 20px;
13507
+ border-top: 1px solid var(--color-border-primary, #d1d9e0);
13508
+ }
13509
+
13510
+ .stack-dialog-pr-item {
13511
+ display: flex;
13512
+ align-items: flex-start;
13513
+ gap: 10px;
13514
+ padding: 10px 4px;
13515
+ border-bottom: 1px solid var(--color-border-subtle, rgba(0, 0, 0, 0.06));
13516
+ font-size: 13px;
13517
+ color: var(--color-text-primary, #1f2328);
13518
+ }
13519
+
13520
+ .stack-dialog-pr-item:last-child {
13521
+ border-bottom: none;
13522
+ }
13523
+
13524
+ .stack-dialog-pr-checkbox {
13525
+ flex-shrink: 0;
13526
+ width: 16px;
13527
+ height: 16px;
13528
+ accent-color: var(--color-accent-primary, #0969da);
13529
+ cursor: pointer;
13530
+ }
13531
+
13532
+ .stack-dialog-pr-current {
13533
+ font-weight: 600;
13534
+ }
13535
+
13536
+ .stack-dialog-current-badge {
13537
+ flex-shrink: 0;
13538
+ width: 16px;
13539
+ text-align: center;
13540
+ color: var(--color-accent-ai, #f59e0b);
13541
+ font-size: 14px;
13542
+ }
13543
+
13544
+ .stack-dialog-pr-info {
13545
+ flex: 1;
13546
+ min-width: 0;
13547
+ display: flex;
13548
+ flex-direction: column;
13549
+ gap: 2px;
13550
+ }
13551
+
13552
+ .stack-dialog-pr-title-row {
13553
+ display: flex;
13554
+ align-items: center;
13555
+ gap: 8px;
13556
+ min-width: 0;
13557
+ }
13558
+
13559
+ .stack-dialog-loading {
13560
+ display: flex;
13561
+ align-items: center;
13562
+ justify-content: center;
13563
+ padding: 32px 16px;
13564
+ color: var(--color-text-secondary, #656d76);
13565
+ font-size: 13px;
13566
+ gap: 8px;
13567
+ }
13568
+
13569
+ .stack-dialog-loading .loading-spinner {
13570
+ width: 18px;
13571
+ height: 18px;
13572
+ margin-bottom: 0;
13573
+ }
13574
+
13575
+ .stack-dialog-pr-list {
13576
+ max-height: 50vh;
13577
+ overflow-y: auto;
13578
+ }
13579
+
13580
+ .stack-dialog-pr-number {
13581
+ flex-shrink: 0;
13582
+ font-family: var(--font-mono, ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace);
13583
+ color: var(--color-text-secondary, #656d76);
13584
+ }
13585
+
13586
+ .stack-dialog-pr-title {
13587
+ flex: 1;
13588
+ min-width: 0;
13589
+ overflow: hidden;
13590
+ text-overflow: ellipsis;
13591
+ white-space: nowrap;
13592
+ }
13593
+
13594
+ .stack-dialog-pr-branch {
13595
+ display: flex;
13596
+ align-items: center;
13597
+ gap: 4px;
13598
+ color: var(--color-text-secondary, #656d76);
13599
+ font-size: 12px;
13600
+ }
13601
+
13602
+ .stack-dialog-branch-name {
13603
+ overflow: hidden;
13604
+ text-overflow: ellipsis;
13605
+ white-space: nowrap;
13606
+ min-width: 0;
13607
+ }
13608
+
13609
+ .stack-dialog-branch-icon {
13610
+ flex-shrink: 0;
13611
+ opacity: 0.7;
13612
+ }
13613
+
13614
+ .stack-dialog-analyzed-badge {
13615
+ flex-shrink: 0;
13616
+ color: var(--color-accent-primary, #0969da);
13617
+ font-size: 11px;
13618
+ }
13619
+
13620
+ .stack-dialog-note {
13621
+ color: var(--color-text-secondary, #656d76);
13622
+ font-size: 12px;
13623
+ padding: 8px 16px;
13624
+ border-top: 1px solid var(--color-border-subtle, rgba(0, 0, 0, 0.06));
13625
+ display: flex;
13626
+ flex-direction: column;
13627
+ gap: 4px;
13628
+ }
13629
+
13630
+ .stack-dialog-note-info {
13631
+ display: flex;
13632
+ align-items: flex-start;
13633
+ gap: 4px;
13634
+ color: var(--color-text-tertiary, #8c959f);
13635
+ }
13636
+
13637
+ .stack-dialog-info-icon {
13638
+ flex-shrink: 0;
13639
+ margin-top: 2px;
13640
+ opacity: 0.7;
13641
+ }
13642
+
13643
+ .stack-dialog-error {
13644
+ padding: 16px;
13645
+ color: var(--color-danger, #cf222e);
13646
+ }
13647
+
13648
+ .stack-dialog-controls {
13649
+ display: flex;
13650
+ gap: 8px;
13651
+ margin-bottom: 12px;
13652
+ }
13653
+
13654
+ .stack-dialog-controls button {
13655
+ background: none;
13656
+ border: none;
13657
+ color: var(--color-accent-primary, #0969da);
13658
+ cursor: pointer;
13659
+ font-size: 12px;
13660
+ padding: 2px 4px;
13661
+ }
13662
+
13663
+ .stack-dialog-controls button:hover {
13664
+ text-decoration: underline;
13665
+ }
13666
+
13667
+ [data-theme="dark"] .stack-dialog {
13668
+ background: var(--color-bg-elevated, #1e2329);
13669
+ border-color: var(--color-border-primary, #30363d);
13670
+ box-shadow: 0 8px 32px var(--color-shadow-large, rgba(0, 0, 0, 0.5));
13671
+ }
13672
+
13673
+ [data-theme="dark"] .stack-dialog-header {
13674
+ border-color: var(--color-border-primary, #30363d);
13675
+ color: var(--color-text-primary, #c9d1d9);
13676
+ }
13677
+
13678
+ [data-theme="dark"] .stack-dialog-header button:hover {
13679
+ color: var(--color-text-primary, #c9d1d9);
13680
+ }
13681
+
13682
+ [data-theme="dark"] .stack-dialog-body {
13683
+ color: var(--color-text-primary, #c9d1d9);
13684
+ }
13685
+
13686
+ [data-theme="dark"] .stack-dialog-footer {
13687
+ border-color: var(--color-border-primary, #30363d);
13688
+ }
13689
+
13690
+ [data-theme="dark"] .stack-dialog-pr-item {
13691
+ border-color: var(--color-border-subtle, rgba(255, 255, 255, 0.06));
13692
+ color: var(--color-text-primary, #c9d1d9);
13693
+ }
13694
+
13695
+ [data-theme="dark"] .stack-dialog-loading {
13696
+ color: var(--color-text-secondary, #8b949e);
13697
+ }
13698
+
13699
+ [data-theme="dark"] .stack-dialog-controls button {
13700
+ color: var(--color-accent-primary, #58a6ff);
13701
+ }
13702
+
13703
+ [data-theme="dark"] .stack-dialog-pr-number {
13704
+ color: var(--color-text-secondary, #8b949e);
13705
+ }
13706
+
13707
+ [data-theme="dark"] .stack-dialog-pr-branch {
13708
+ color: var(--color-text-secondary, #8b949e);
13709
+ }
13710
+
13711
+ [data-theme="dark"] .stack-dialog-analyzed-badge {
13712
+ color: var(--color-accent-primary, #58a6ff);
13713
+ }
13714
+
13715
+ [data-theme="dark"] .stack-dialog-note {
13716
+ color: var(--color-text-secondary, #8b949e);
13717
+ border-color: var(--color-border-subtle, rgba(255, 255, 255, 0.06));
13718
+ }
13719
+
13720
+ [data-theme="dark"] .stack-dialog-note-info {
13721
+ color: var(--color-text-tertiary, #6e7681);
13722
+ }
13723
+
13724
+ [data-theme="dark"] .stack-dialog-error {
13725
+ color: var(--color-danger, #f85149);
13726
+ }
13727
+
13728
+ /* ============================================
13729
+ Stack Review — Stack Progress Modal
13730
+ ============================================ */
13731
+
13732
+ .stack-progress-overlay {
13733
+ position: fixed;
13734
+ inset: 0;
13735
+ background: var(--color-bg-overlay, rgba(0, 0, 0, 0.5));
13736
+ display: flex;
13737
+ align-items: center;
13738
+ justify-content: center;
13739
+ z-index: 1000;
13740
+ }
13741
+
13742
+ .stack-progress-backdrop {
13743
+ position: absolute;
13744
+ inset: 0;
13745
+ }
13746
+
13747
+ .stack-progress-modal {
13748
+ background: var(--color-bg-elevated, #fff);
13749
+ border: 1px solid var(--color-border-primary, #d1d9e0);
13750
+ border-radius: 12px;
13751
+ box-shadow: 0 8px 32px var(--color-shadow-large, rgba(0, 0, 0, 0.2));
13752
+ width: 520px;
13753
+ max-width: 90vw;
13754
+ max-height: 80vh;
13755
+ display: flex;
13756
+ flex-direction: column;
13757
+ overflow: hidden;
13758
+ }
13759
+
13760
+ .stack-progress-header {
13761
+ display: flex;
13762
+ align-items: center;
13763
+ justify-content: space-between;
13764
+ padding: 16px 20px;
13765
+ border-bottom: 1px solid var(--color-border-primary, #d1d9e0);
13766
+ font-size: 15px;
13767
+ font-weight: 600;
13768
+ color: var(--color-text-primary, #1f2328);
13769
+ }
13770
+
13771
+ .stack-progress-header button {
13772
+ background: none;
13773
+ border: none;
13774
+ color: var(--color-text-tertiary, #656d76);
13775
+ cursor: pointer;
13776
+ padding: 4px;
13777
+ border-radius: 4px;
13778
+ transition: color 0.15s ease;
13779
+ }
13780
+
13781
+ .stack-progress-header button:hover {
13782
+ color: var(--color-text-primary, #1f2328);
13783
+ }
13784
+
13785
+ .stack-progress-body {
13786
+ flex: 1;
13787
+ overflow-y: auto;
13788
+ padding: 16px 20px;
13789
+ }
13790
+
13791
+ .stack-progress-footer {
13792
+ display: flex;
13793
+ align-items: center;
13794
+ justify-content: flex-end;
13795
+ gap: 8px;
13796
+ padding: 12px 20px;
13797
+ border-top: 1px solid var(--color-border-primary, #d1d9e0);
13798
+ }
13799
+
13800
+ .stack-progress-pr-list {
13801
+ max-height: 320px;
13802
+ overflow-y: auto;
13803
+ }
13804
+
13805
+ .stack-progress-pr-row {
13806
+ display: flex;
13807
+ align-items: center;
13808
+ gap: 12px;
13809
+ padding: 10px 4px;
13810
+ border-bottom: 1px solid var(--color-border-subtle, rgba(0, 0, 0, 0.06));
13811
+ font-size: 13px;
13812
+ }
13813
+
13814
+ .stack-progress-pr-row:last-child {
13815
+ border-bottom: none;
13816
+ }
13817
+
13818
+ .stack-progress-status-icon {
13819
+ flex-shrink: 0;
13820
+ width: 20px;
13821
+ height: 20px;
13822
+ display: flex;
13823
+ align-items: center;
13824
+ justify-content: center;
13825
+ font-size: 14px;
13826
+ }
13827
+
13828
+ .stack-progress-pr-label {
13829
+ flex: 1;
13830
+ min-width: 0;
13831
+ overflow: hidden;
13832
+ text-overflow: ellipsis;
13833
+ white-space: nowrap;
13834
+ color: var(--color-text-primary, #1f2328);
13835
+ }
13836
+
13837
+ .stack-progress-pr-link {
13838
+ cursor: pointer;
13839
+ color: var(--color-accent-primary, #0969da);
13840
+ }
13841
+
13842
+ .stack-progress-pr-link:hover {
13843
+ text-decoration: underline;
13844
+ }
13845
+
13846
+ .stack-progress-pr-detail {
13847
+ flex-shrink: 0;
13848
+ color: var(--color-text-secondary, #656d76);
13849
+ }
13850
+
13851
+ .stack-progress-pr-detail a {
13852
+ color: var(--color-accent-primary, #0969da);
13853
+ text-decoration: none;
13854
+ }
13855
+
13856
+ .stack-progress-pr-detail a:hover {
13857
+ text-decoration: underline;
13858
+ }
13859
+
13860
+ .status-completed .stack-progress-status-icon {
13861
+ color: var(--color-accent-emphasis, #1a7f37);
13862
+ }
13863
+
13864
+ .status-running .stack-progress-status-icon {
13865
+ color: var(--color-accent-ai, #f59e0b);
13866
+ animation: pulse-dot 1.2s ease-in-out infinite;
13867
+ }
13868
+
13869
+ .status-setting_up .stack-progress-status-icon {
13870
+ color: var(--color-text-secondary, #656d76);
13871
+ animation: pulse-dot 1.2s ease-in-out infinite;
13872
+ }
13873
+
13874
+ .status-pending .stack-progress-status-icon {
13875
+ color: var(--color-text-muted, #d1d9e0);
13876
+ }
13877
+
13878
+ .status-failed .stack-progress-status-icon {
13879
+ color: var(--color-danger, #cf222e);
13880
+ }
13881
+
13882
+ [data-theme="dark"] .stack-progress-modal {
13883
+ background: var(--color-bg-elevated, #1e2329);
13884
+ border-color: var(--color-border-primary, #30363d);
13885
+ box-shadow: 0 8px 32px var(--color-shadow-large, rgba(0, 0, 0, 0.5));
13886
+ }
13887
+
13888
+ [data-theme="dark"] .stack-progress-header {
13889
+ border-color: var(--color-border-primary, #30363d);
13890
+ color: var(--color-text-primary, #c9d1d9);
13891
+ }
13892
+
13893
+ [data-theme="dark"] .stack-progress-header button:hover {
13894
+ color: var(--color-text-primary, #c9d1d9);
13895
+ }
13896
+
13897
+ [data-theme="dark"] .stack-progress-body {
13898
+ color: var(--color-text-primary, #c9d1d9);
13899
+ }
13900
+
13901
+ [data-theme="dark"] .stack-progress-footer {
13902
+ border-color: var(--color-border-primary, #30363d);
13903
+ }
13904
+
13905
+ [data-theme="dark"] .stack-progress-pr-row {
13906
+ border-color: var(--color-border-subtle, rgba(255, 255, 255, 0.06));
13907
+ }
13908
+
13909
+ [data-theme="dark"] .stack-progress-pr-label {
13910
+ color: var(--color-text-primary, #c9d1d9);
13911
+ }
13912
+
13913
+ [data-theme="dark"] .stack-progress-pr-link {
13914
+ color: var(--color-accent-primary, #58a6ff);
13915
+ }
13916
+
13917
+ [data-theme="dark"] .stack-progress-pr-detail {
13918
+ color: var(--color-text-secondary, #8b949e);
13919
+ }
13920
+
13921
+ [data-theme="dark"] .stack-progress-pr-detail a {
13922
+ color: var(--color-accent-primary, #58a6ff);
13923
+ }
13924
+
13925
+ [data-theme="dark"] .status-completed .stack-progress-status-icon {
13926
+ color: var(--color-accent-emphasis-hover, #2ea043);
13927
+ }
13928
+
13929
+ [data-theme="dark"] .status-running .stack-progress-status-icon {
13930
+ color: var(--color-accent-ai-dark, #f59e0b);
13931
+ }
13932
+
13933
+ [data-theme="dark"] .status-setting_up .stack-progress-status-icon {
13934
+ color: var(--color-text-secondary, #8b949e);
13935
+ }
13936
+
13937
+ [data-theme="dark"] .status-pending .stack-progress-status-icon {
13938
+ color: var(--color-text-muted, #484f58);
13939
+ }
13940
+
13941
+ [data-theme="dark"] .status-failed .stack-progress-status-icon {
13942
+ color: var(--color-danger, #f85149);
13943
+ }