collavre 0.8.1 → 0.8.3

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.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/collavre/actiontext.css +3 -3
  3. data/app/assets/stylesheets/collavre/comments_popup.css +46 -31
  4. data/app/assets/stylesheets/collavre/creatives.css +32 -16
  5. data/app/assets/stylesheets/collavre/dark_mode.css +76 -3
  6. data/app/assets/stylesheets/collavre/design_tokens.css +10 -2
  7. data/app/assets/stylesheets/collavre/mention_menu.css +2 -2
  8. data/app/assets/stylesheets/collavre/popup.css +82 -18
  9. data/app/controllers/collavre/creative_shares_controller.rb +27 -0
  10. data/app/javascript/components/creative_tree_row.js +11 -4
  11. data/app/javascript/controllers/comments/contexts_controller.js +7 -4
  12. data/app/javascript/controllers/comments/popup_controller.js +25 -0
  13. data/app/javascript/controllers/comments/topics_controller.js +9 -6
  14. data/app/javascript/controllers/creatives/expansion_controller.js +12 -4
  15. data/app/javascript/controllers/creatives/tree_controller.js +3 -1
  16. data/app/javascript/controllers/share_modal_controller.js +57 -0
  17. data/app/services/collavre/ai_agent/approval_handler.rb +7 -3
  18. data/app/services/collavre/ai_agent_service.rb +16 -3
  19. data/app/services/collavre/ai_client.rb +22 -6
  20. data/app/services/collavre/tools/creative_retrieval_service.rb +2 -2
  21. data/app/services/collavre/tools/creative_update_service.rb +1 -1
  22. data/app/views/collavre/comments/_comments_popup.html.erb +1 -1
  23. data/app/views/collavre/creatives/_mobile_actions_menu.html.erb +1 -1
  24. data/app/views/collavre/creatives/_share_modal.html.erb +71 -28
  25. data/app/views/collavre/creatives/index.html.erb +2 -2
  26. data/app/views/collavre/shared/_custom_theme_style.html.erb +21 -0
  27. data/app/views/layouts/collavre/slide.html.erb +1 -17
  28. data/config/locales/ai_agent.en.yml +10 -0
  29. data/config/locales/ai_agent.ko.yml +10 -0
  30. data/config/locales/creatives.en.yml +3 -1
  31. data/config/locales/creatives.ko.yml +3 -1
  32. data/lib/collavre/version.rb +1 -1
  33. metadata +2 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0aedb88d33b98dd9c3e2d94a658e1671c88cf30b4523a82173f9bff2f797ce29
4
- data.tar.gz: 0336125a76db7678bd3fc9f4ddd9d9342c9914142017eabbf0a42c15b7485022
3
+ metadata.gz: 82e806ce0c2a6e03029c43d817fb83a6c8114e04bf13be10b05b16fefbeb253c
4
+ data.tar.gz: bfa7142c80cd7868c4ad9375a7b9f96ceed0b9b35ad031a6962f92a9d655f029
5
5
  SHA512:
6
- metadata.gz: d044363cf61f8a6f6beaac085592e8330fa000f251809b56bb7a4f89fa5b0147a606df80a62f3b473dca35b17de893d0226df6cf8c7ec9f8d4c8b9d0ae2dc7a6
7
- data.tar.gz: 7aaf420fef891252b43ec4a968fcba35b84e3fc4c4cf07507568a9a4976fa33f3176683b409c3dc4f3c1392ac52ba3016a00d51537882f7649bbc38513d000b4
6
+ metadata.gz: e443416101117e0e3440f60d889f4c317fc19d59e5d3e92fdc511f1caf0fee52470e3e37b036709fbc63eea01d266c622e25ded80dc584d77c7fd0e2feed257b
7
+ data.tar.gz: 33e264807609298b92f8786f755bce2ef7846e653d6d5b4c7ff0eb1c267cf0273a56753d8e3758cf99e8300d14f1f6cfbde99b21e9f99e39645e44d3a0ec58e6
@@ -61,7 +61,7 @@
61
61
  padding: 0.4rem 0.5rem;
62
62
  background: var(--surface-bg);
63
63
  border: 1px solid var(--border-color);
64
- border-radius: 6px;
64
+ border-radius: var(--radius-2);
65
65
  box-shadow: var(--shadow-3);
66
66
  }
67
67
 
@@ -208,7 +208,7 @@
208
208
  display: block;
209
209
  background: var(--color-code-bg);
210
210
  border: 1px solid var(--border-color);
211
- border-radius: 6px;
211
+ border-radius: var(--radius-2);
212
212
  color: var(--color-code-text);
213
213
  font-family: ui-monospace, SFMono-Regular, SFMono, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
214
214
  font-size: 0.9em;
@@ -404,7 +404,7 @@
404
404
  .lexical-attachment__caption-input {
405
405
  width: 100%;
406
406
  border: 1px solid var(--border-color);
407
- border-radius: 6px;
407
+ border-radius: var(--radius-2);
408
408
  padding: var(--space-2) 0.6rem;
409
409
  font-size: 0.9rem;
410
410
  background: var(--surface-section);
@@ -9,6 +9,14 @@
9
9
  max-height: 80vh;
10
10
  min-width: 200px;
11
11
  min-height: 200px;
12
+ background: var(--surface-bg);
13
+ border: var(--border-1) solid var(--color-active);
14
+ border-radius: var(--radius-3);
15
+ box-shadow: var(--shadow-3),
16
+ 0 0 6px color-mix(in srgb, var(--color-active) 25%, transparent),
17
+ 0 0 14px color-mix(in srgb, var(--color-active) 12%, transparent);
18
+ padding: 1em;
19
+ flex-direction: column;
12
20
  transition: top 0.25s ease, left 0.25s ease, width 0.25s ease, height 0.25s ease,
13
21
  right 0.25s ease, bottom 0.25s ease, border-radius 0.25s ease,
14
22
  box-shadow 0.25s ease, padding 0.25s ease;
@@ -45,6 +53,7 @@ body.chat-fullscreen {
45
53
  align-items: center;
46
54
  justify-content: space-between;
47
55
  gap: 0.75em;
56
+ padding-bottom: var(--space-1);
48
57
  }
49
58
 
50
59
  .comments-popup-header h3 {
@@ -119,8 +128,7 @@ body.chat-fullscreen {
119
128
  flex-wrap: nowrap;
120
129
  align-items: center;
121
130
  gap: 0.5em;
122
- padding: 0.5em 0;
123
- margin-bottom: 0.5em;
131
+ padding: var(--space-1) 0;
124
132
  overflow-x: auto;
125
133
  overflow-y: hidden;
126
134
  scrollbar-width: none; /* Firefox */
@@ -365,7 +373,7 @@ body.chat-fullscreen {
365
373
  padding: 0.3em 0.8em;
366
374
  font-size: 0.85em;
367
375
  cursor: pointer;
368
- border-radius: 4px;
376
+ border-radius: var(--radius-2);
369
377
  white-space: nowrap;
370
378
  }
371
379
 
@@ -570,7 +578,7 @@ body.chat-fullscreen {
570
578
  .comment-action-json {
571
579
  background: var(--color-section-bg);
572
580
  border: 1px solid var(--color-border);
573
- border-radius: 4px;
581
+ border-radius: var(--radius-2);
574
582
  margin-top: 0.4em;
575
583
  padding: 0.5em;
576
584
  white-space: pre-wrap;
@@ -588,7 +596,7 @@ body.chat-fullscreen {
588
596
  .comment-action-edit-textarea {
589
597
  width: 100%;
590
598
  border: 1px solid var(--color-border);
591
- border-radius: 4px;
599
+ border-radius: var(--radius-2);
592
600
  padding: 0.5em;
593
601
  font-family: var(--font-family-monospace, 'SFMono-Regular', 'Consolas', 'Liberation Mono', monospace);
594
602
  font-size: 0.9em;
@@ -657,8 +665,8 @@ body.chat-fullscreen {
657
665
  }
658
666
 
659
667
  .comment-status-label.pending-label {
660
- background-color: color-mix(in srgb, orange 20%, transparent);
661
- color: orange;
668
+ background-color: color-mix(in srgb, var(--color-warning) 20%, transparent);
669
+ color: var(--color-warning);
662
670
  }
663
671
 
664
672
  .comment-action-container {
@@ -731,7 +739,7 @@ body.chat-fullscreen {
731
739
  background: var(--color-section-bg);
732
740
  color: var(--color-text);
733
741
  border: 1px solid var(--color-border);
734
- border-radius: 4px;
742
+ border-radius: var(--radius-2);
735
743
  padding: 0.2em 0.6em;
736
744
  font-size: 0.75em;
737
745
  opacity: 0;
@@ -753,7 +761,7 @@ body.chat-fullscreen {
753
761
  gap: 0.35em;
754
762
  background: var(--color-section-bg);
755
763
  border: 1px solid var(--color-border);
756
- border-radius: 4px;
764
+ border-radius: var(--radius-2);
757
765
  padding: 0.2em 0.4em;
758
766
  margin-right: 0.25em;
759
767
  margin-top: 0.2em;
@@ -784,7 +792,7 @@ body.chat-fullscreen {
784
792
  .comment-attachment-image {
785
793
  max-width: 100%;
786
794
  height: auto;
787
- border-radius: 4px;
795
+ border-radius: var(--radius-2);
788
796
  border: 1px solid var(--color-border);
789
797
  }
790
798
 
@@ -839,7 +847,7 @@ body.chat-fullscreen {
839
847
  }
840
848
 
841
849
  #comment-participants {
842
- margin-bottom: 0.3em;
850
+ padding: var(--space-1) 0;
843
851
  min-height: 20px;
844
852
  display: flex;
845
853
  align-items: center;
@@ -909,7 +917,7 @@ body.chat-fullscreen {
909
917
  flex-wrap: nowrap;
910
918
  align-items: center;
911
919
  gap: 0.4em;
912
- padding: 0.25em 0;
920
+ padding: var(--space-1) 0;
913
921
  overflow-x: auto;
914
922
  overflow-y: visible;
915
923
  scrollbar-width: none;
@@ -943,8 +951,14 @@ body.chat-fullscreen {
943
951
  box-sizing: border-box;
944
952
  }
945
953
 
954
+ .context-chip svg,
955
+ .context-toggle-btn svg {
956
+ vertical-align: middle;
957
+ flex-shrink: 0;
958
+ }
959
+
946
960
  .context-chip:hover {
947
- background: var(--color-border);
961
+ background: var(--surface-hover);
948
962
  }
949
963
 
950
964
  .context-chip.context-disabled {
@@ -1047,7 +1061,7 @@ body.chat-fullscreen {
1047
1061
 
1048
1062
  .context-toggle-btn.context-toggle-active {
1049
1063
  background: var(--color-secondary-active);
1050
- color: white;
1064
+ color: var(--color-badge-text);
1051
1065
  border-color: var(--color-secondary-active);
1052
1066
  }
1053
1067
 
@@ -1056,8 +1070,7 @@ body.chat-fullscreen {
1056
1070
  flex-wrap: nowrap;
1057
1071
  align-items: center;
1058
1072
  gap: 0.5em;
1059
- padding: 0.5em 0;
1060
- margin-bottom: 0.5em;
1073
+ padding: var(--space-1) 0;
1061
1074
  overflow-x: auto;
1062
1075
  overflow-y: hidden;
1063
1076
  scrollbar-width: none; /* Firefox */
@@ -1088,12 +1101,12 @@ body.chat-fullscreen {
1088
1101
  }
1089
1102
 
1090
1103
  .topic-tag:hover {
1091
- background: var(--color-border);
1104
+ background: var(--surface-hover);
1092
1105
  }
1093
1106
 
1094
1107
  .topic-tag.active {
1095
1108
  background: var(--color-secondary-active);
1096
- color: white;
1109
+ color: var(--color-badge-text);
1097
1110
  border-color: var(--color-secondary-active);
1098
1111
  }
1099
1112
 
@@ -1108,7 +1121,7 @@ body.chat-fullscreen {
1108
1121
  top: -8px;
1109
1122
  right: -10px;
1110
1123
  background-color: var(--color-danger);
1111
- color: white;
1124
+ color: var(--color-badge-text);
1112
1125
  font-size: 0.6em;
1113
1126
  padding: 0.1em 0.4em;
1114
1127
  border-radius: 8px;
@@ -1118,7 +1131,7 @@ body.chat-fullscreen {
1118
1131
  /* Drag and drop styles for moving comments to topics */
1119
1132
  .topic-tag.drag-over {
1120
1133
  background-color: var(--color-active);
1121
- color: white;
1134
+ color: var(--color-badge-text);
1122
1135
  border-color: var(--color-active);
1123
1136
  transform: scale(1.05);
1124
1137
  transition: all 0.15s ease;
@@ -1169,8 +1182,8 @@ body.chat-fullscreen {
1169
1182
  left: -1000px;
1170
1183
  padding: var(--space-2) var(--space-3);
1171
1184
  background-color: var(--color-active);
1172
- color: white;
1173
- border-radius: 4px;
1185
+ color: var(--color-badge-text);
1186
+ border-radius: var(--radius-2);
1174
1187
  font-size: 0.9em;
1175
1188
  font-weight: 500;
1176
1189
  white-space: nowrap;
@@ -1279,6 +1292,7 @@ body.chat-fullscreen {
1279
1292
  .topic-archived-toggle {
1280
1293
  display: inline-flex;
1281
1294
  align-items: center;
1295
+ gap: 0.3em;
1282
1296
  padding: 0.15em var(--space-2);
1283
1297
  border-radius: var(--radius-3);
1284
1298
  font-size: var(--text-0);
@@ -1298,10 +1312,11 @@ body.chat-fullscreen {
1298
1312
  background: none;
1299
1313
  border: none;
1300
1314
  cursor: pointer;
1301
- font-size: var(--text-00);
1302
1315
  padding: 0 var(--space-1);
1303
1316
  opacity: 0.6;
1304
- vertical-align: middle;
1317
+ display: inline-flex;
1318
+ align-items: center;
1319
+ color: var(--text-secondary);
1305
1320
  }
1306
1321
  .archive-topic-btn:hover,
1307
1322
  .unarchive-topic-btn:hover {
@@ -1349,7 +1364,7 @@ body.chat-fullscreen {
1349
1364
  }
1350
1365
 
1351
1366
  .selection-action-bar-btn:hover {
1352
- background: var(--surface-hover, rgba(0, 0, 0, 0.05));
1367
+ background: var(--surface-hover);
1353
1368
  }
1354
1369
 
1355
1370
  .selection-action-delete:hover {
@@ -1441,7 +1456,7 @@ body.chat-fullscreen {
1441
1456
  /* Blinking cursor inline at the end of streaming content */
1442
1457
  .streaming-cursor {
1443
1458
  animation: streaming-blink 1s infinite;
1444
- color: var(--color-text, #333);
1459
+ color: var(--text-primary);
1445
1460
  margin-left: 1px;
1446
1461
  font-weight: normal;
1447
1462
  }
@@ -1452,11 +1467,11 @@ body.chat-fullscreen {
1452
1467
  }
1453
1468
 
1454
1469
  .review-hint {
1455
- background: var(--surface-3, #333);
1456
- color: var(--text-1, #fff);
1457
- padding: var(--space-2, 4px) var(--space-3, 8px);
1458
- border-radius: var(--radius-2, 4px);
1459
- font-size: var(--text-0, 0.75rem);
1470
+ background: var(--surface-btn);
1471
+ color: var(--text-on-btn);
1472
+ padding: var(--space-2) var(--space-3);
1473
+ border-radius: var(--radius-2);
1474
+ font-size: var(--text-0);
1460
1475
  white-space: nowrap;
1461
1476
  z-index: var(--layer-important, 999);
1462
1477
  animation: review-hint-fade 3s ease-out forwards;
@@ -64,7 +64,8 @@ html.creative-alignment-ready .page-title {
64
64
  background: var(--surface-section);
65
65
  border: 1px solid var(--border-color);
66
66
  padding: 0.5em;
67
- box-shadow: 0 2px 8px var(--border-color);
67
+ box-shadow: var(--shadow-3);
68
+ border-radius: var(--radius-2);
68
69
  min-width: 220px;
69
70
  }
70
71
 
@@ -104,11 +105,11 @@ creative-tree-row.show-edit .creative-row {
104
105
  position: fixed;
105
106
  display: none;
106
107
  pointer-events: none;
107
- background: rgba(33, 150, 243, 0.9);
108
+ background: color-mix(in srgb, var(--color-active) 90%, transparent);
108
109
  color: var(--text-on-badge);
109
110
  font-size: var(--text-0);
110
111
  padding: 2px 8px;
111
- border-radius: 4px;
112
+ border-radius: var(--radius-2);
112
113
  transform: translate(-50%, -170%);
113
114
  z-index: 9999;
114
115
  font-weight: var(--weight-6);
@@ -165,7 +166,8 @@ creative-tree-row.show-edit .creative-row {
165
166
  .creative-row:hover .creative-content {
166
167
  text-decoration: underline;
167
168
  text-decoration-color: var(--color-link);
168
- text-decoration-thickness: 4px;
169
+ text-decoration-thickness: 2px;
170
+ text-underline-offset: 2px;
169
171
  cursor: pointer;
170
172
  }
171
173
 
@@ -307,20 +309,23 @@ creative-tree-row.show-edit .creative-row {
307
309
  #voice-comments-btn.voice-input-active {
308
310
  background-color: var(--color-brand);
309
311
  color: var(--surface-bg);
310
- border-radius: 6px;
312
+ border-radius: var(--radius-2);
311
313
  padding: 4px 8px;
312
314
  }
313
315
 
314
316
  .creative-toggle-btn {
315
317
  width: 16px;
316
318
  height: 16px;
317
- font-size: 14px;
318
319
  margin-right: 4px;
319
320
  margin-top: 4px;
320
321
  /* Align with text */
321
322
  visibility: hidden;
322
323
  /* Hidden by default on desktop */
323
324
  /* Total width is 20px (16 + 4) */
325
+ color: var(--text-secondary);
326
+ display: flex;
327
+ align-items: center;
328
+ justify-content: center;
324
329
  }
325
330
 
326
331
 
@@ -435,11 +440,18 @@ creative-tree-row:not([expanded]) .creative-toggle-btn {
435
440
  background-color: var(--border-drag-over);
436
441
  }
437
442
 
443
+ creative-tree-row.chat-active .creative-row {
444
+ border: var(--border-1) solid var(--color-active);
445
+ border-radius: var(--radius-2);
446
+ box-shadow: 0 0 6px color-mix(in srgb, var(--color-active) 25%, transparent),
447
+ 0 0 14px color-mix(in srgb, var(--color-active) 12%, transparent);
448
+ }
449
+
438
450
  .creative-row:hover,
439
451
  .creative-row.level-1:hover,
440
452
  .creative-row.level-2:hover,
441
453
  .creative-row.level-3:hover {
442
- background-color: var(--border-color);
454
+ background-color: var(--surface-hover);
443
455
  }
444
456
 
445
457
  .creative-progress {
@@ -474,7 +486,7 @@ creative-tree-row:not([expanded]) .creative-toggle-btn {
474
486
 
475
487
  .creative-origin-link:hover,
476
488
  .creative-origin-link:focus {
477
- background-color: var(--border-color);
489
+ background-color: var(--surface-hover);
478
490
  }
479
491
 
480
492
  .creative-origin-link-icon {
@@ -682,20 +694,24 @@ creative-tree-row:not([expanded]) .creative-toggle-btn {
682
694
  /* Archive toggle button */
683
695
  .archive-toggle-btn {
684
696
  background: none;
685
- border: none;
697
+ border: 1px solid var(--color-border);
698
+ border-radius: var(--radius-2);
686
699
  cursor: pointer;
687
- font-size: var(--text-2);
688
700
  padding: var(--space-1) var(--space-2);
689
- opacity: 0.5;
690
- transition: opacity 0.2s var(--ease-2);
701
+ color: var(--text-secondary);
702
+ display: inline-flex;
703
+ align-items: center;
704
+ justify-content: center;
705
+ transition: background 0.15s, color 0.15s;
691
706
  }
692
707
  .archive-toggle-btn:hover {
693
- opacity: 0.8;
708
+ background: var(--surface-input);
709
+ color: var(--text-primary);
694
710
  }
695
711
  .archive-toggle-btn.active {
696
- opacity: 1.0;
697
- background: var(--surface-input);
698
- border-radius: var(--radius-2);
712
+ background: var(--color-active);
713
+ color: var(--color-badge-text);
714
+ border-color: var(--color-active);
699
715
  }
700
716
 
701
717
  /* Archived creative row */
@@ -79,6 +79,35 @@ body.dark-mode {
79
79
  /* ============================================================================
80
80
  * BASE ELEMENT STYLES
81
81
  * ============================================================================ */
82
+ @media (prefers-reduced-motion: reduce) {
83
+
84
+ /* Collapse decorative transitions to instant; state changes still
85
+ apply but without visible motion (hover bg, theme switch, etc.). */
86
+ *, *::before, *::after {
87
+ transition-duration: 0.01ms !important;
88
+ }
89
+
90
+ /* Disable decorative/non-essential animations entirely so that
91
+ elements styled with animation end up in their *final* keyframe
92
+ state (via forwards fill) rather than flickering.
93
+ Infinite animations (spinners, streaming dots) stop on their
94
+ current frame and become static — which is the correct reduced-
95
+ motion behaviour. */
96
+ *, *::before, *::after {
97
+ animation-duration: 0.01ms !important;
98
+ animation-iteration-count: 1 !important;
99
+ }
100
+
101
+ /* Keep timed-visibility elements (toasts, hints) fully visible
102
+ instead of letting the collapsed fade-out hide them instantly. */
103
+ .share-modal-message,
104
+ .review-hint,
105
+ .comment-copy-notice.visible {
106
+ animation: none !important;
107
+ opacity: 1 !important;
108
+ }
109
+ }
110
+
82
111
  body {
83
112
  background: var(--surface-bg);
84
113
  color: var(--text-primary);
@@ -96,6 +125,7 @@ nav {
96
125
 
97
126
  a {
98
127
  color: var(--color-link);
128
+ transition: color 0.15s;
99
129
  }
100
130
 
101
131
  main,
@@ -107,9 +137,27 @@ button,
107
137
  input[type="button"],
108
138
  input[type="submit"] {
109
139
  border: none;
110
- border-radius: 1px;
140
+ border-radius: var(--radius-2);
111
141
  padding: 2px 4px;
112
- transition: background 0.3s, color 0.3s;
142
+ transition: background 0.15s, color 0.15s, transform 0.1s;
143
+ }
144
+
145
+ /* --- Global active press feedback --- */
146
+ button:active:not(:disabled),
147
+ input[type="button"]:active:not(:disabled),
148
+ input[type="submit"]:active:not(:disabled),
149
+ .btn:active:not(:disabled) {
150
+ transform: scale(0.97);
151
+ }
152
+
153
+ /* --- Global focus-visible ring --- */
154
+ button:focus-visible,
155
+ input[type="button"]:focus-visible,
156
+ input[type="submit"]:focus-visible,
157
+ a:focus-visible,
158
+ .btn:focus-visible {
159
+ outline: 2px solid var(--color-active);
160
+ outline-offset: 2px;
113
161
  }
114
162
 
115
163
  /* ============================================================================
@@ -127,7 +175,7 @@ input[type="submit"] {
127
175
  font-weight: 500;
128
176
  line-height: 1.4;
129
177
  border: 1px solid var(--border-color);
130
- border-radius: var(--radius-2, 4px);
178
+ border-radius: var(--radius-2);
131
179
  background: var(--surface-btn);
132
180
  color: var(--text-on-btn);
133
181
  cursor: pointer;
@@ -249,3 +297,28 @@ input[type="datetime-local"]::-webkit-datetime-edit-minute-field {
249
297
  .inline-block {
250
298
  display: inline-block;
251
299
  }
300
+
301
+ /* --- Dark mode: stronger glow for visibility on dark backgrounds --- */
302
+ body.dark-mode #comments-popup {
303
+ box-shadow: var(--shadow-3),
304
+ 0 0 8px color-mix(in srgb, var(--color-active) 45%, transparent),
305
+ 0 0 20px color-mix(in srgb, var(--color-active) 25%, transparent);
306
+ }
307
+
308
+ body.dark-mode creative-tree-row.chat-active .creative-row {
309
+ box-shadow: 0 0 8px color-mix(in srgb, var(--color-active) 45%, transparent),
310
+ 0 0 20px color-mix(in srgb, var(--color-active) 25%, transparent);
311
+ }
312
+
313
+ @media (prefers-color-scheme: dark) {
314
+ body:not(.light-mode):not(.dark-mode) #comments-popup {
315
+ box-shadow: var(--shadow-3),
316
+ 0 0 8px color-mix(in srgb, var(--color-active) 45%, transparent),
317
+ 0 0 20px color-mix(in srgb, var(--color-active) 25%, transparent);
318
+ }
319
+
320
+ body:not(.light-mode):not(.dark-mode) creative-tree-row.chat-active .creative-row {
321
+ box-shadow: 0 0 8px color-mix(in srgb, var(--color-active) 45%, transparent),
322
+ 0 0 20px color-mix(in srgb, var(--color-active) 25%, transparent);
323
+ }
324
+ }
@@ -194,6 +194,9 @@
194
194
  --color-code-bg: #f6f8fa; /* code block background */
195
195
  --color-code-text: #1f2328; /* code block text */
196
196
 
197
+ /* -- Surfaces (hover) -- */
198
+ --surface-hover: rgba(0, 0, 0, 0.06); /* hover background overlay */
199
+
197
200
  /* -- Borders & Dividers -- */
198
201
  --border-color: #e0e0e0; /* default borders */
199
202
  --border-drag-over: #e0e0e0; /* drag target highlight */
@@ -245,7 +248,7 @@ body.dark-mode {
245
248
  --text-input: #eaeaea;
246
249
 
247
250
  /* -- Interactive -- */
248
- --color-link: #185ABC;
251
+ --color-link: #6EA8FE;
249
252
  --color-brand: oklch(50% 0.4 145);
250
253
  --color-active: #6a9eff;
251
254
  --color-badge-bg: red;
@@ -255,6 +258,9 @@ body.dark-mode {
255
258
  --color-code-bg: #2d2d2d;
256
259
  --color-code-text: #e0e0e0;
257
260
 
261
+ /* -- Surfaces (hover) -- */
262
+ --surface-hover: rgba(255, 255, 255, 0.08);
263
+
258
264
  /* -- Borders & Dividers -- */
259
265
  --border-color: #333333;
260
266
  --border-drag-over: #383a40;
@@ -292,7 +298,7 @@ body.dark-mode {
292
298
  --text-on-badge: white;
293
299
  --text-input: #eaeaea;
294
300
 
295
- --color-link: #185ABC;
301
+ --color-link: #6EA8FE;
296
302
  --color-brand: oklch(50% 0.4 145);
297
303
  --color-active: #6a9eff;
298
304
  --color-badge-bg: red;
@@ -302,6 +308,8 @@ body.dark-mode {
302
308
  --color-code-bg: #2d2d2d;
303
309
  --color-code-text: #e0e0e0;
304
310
 
311
+ --surface-hover: rgba(255, 255, 255, 0.08);
312
+
305
313
  --border-color: #333333;
306
314
  --border-drag-over: #383a40;
307
315
  --border-drag-edge: #777777;
@@ -5,7 +5,7 @@
5
5
  background: var(--surface-section);
6
6
  border: 1px solid var(--border-color);
7
7
  box-shadow: var(--shadow-2);
8
- border-radius: 6px;
8
+ border-radius: var(--radius-2);
9
9
  padding: 0.35em;
10
10
  max-width: min(420px, 90vw);
11
11
  }
@@ -38,7 +38,7 @@
38
38
  .mention-item.active,
39
39
  .common-popup-item:hover,
40
40
  .common-popup-item.active {
41
- background: var(--border-drag-over);
41
+ background: var(--surface-hover);
42
42
  }
43
43
 
44
44
  .common-popup-item {