collavre 0.8.1 → 0.8.2
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.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/collavre/actiontext.css +3 -3
- data/app/assets/stylesheets/collavre/comments_popup.css +44 -31
- data/app/assets/stylesheets/collavre/creatives.css +25 -16
- data/app/assets/stylesheets/collavre/dark_mode.css +56 -3
- data/app/assets/stylesheets/collavre/design_tokens.css +10 -2
- data/app/assets/stylesheets/collavre/mention_menu.css +2 -2
- data/app/assets/stylesheets/collavre/popup.css +82 -18
- data/app/controllers/collavre/creative_shares_controller.rb +27 -0
- data/app/javascript/components/creative_tree_row.js +11 -4
- data/app/javascript/controllers/comments/contexts_controller.js +7 -4
- data/app/javascript/controllers/comments/popup_controller.js +6 -0
- data/app/javascript/controllers/comments/topics_controller.js +9 -6
- data/app/javascript/controllers/creatives/expansion_controller.js +4 -4
- data/app/javascript/controllers/creatives/tree_controller.js +3 -1
- data/app/javascript/controllers/share_modal_controller.js +57 -0
- data/app/services/collavre/ai_agent/approval_handler.rb +7 -3
- data/app/services/collavre/ai_agent_service.rb +16 -3
- data/app/services/collavre/ai_client.rb +22 -6
- data/app/services/collavre/tools/creative_retrieval_service.rb +2 -2
- data/app/services/collavre/tools/creative_update_service.rb +1 -1
- data/app/views/collavre/comments/_comments_popup.html.erb +1 -1
- data/app/views/collavre/creatives/_mobile_actions_menu.html.erb +1 -1
- data/app/views/collavre/creatives/_share_modal.html.erb +71 -28
- data/app/views/collavre/creatives/index.html.erb +2 -2
- data/app/views/collavre/shared/_custom_theme_style.html.erb +21 -0
- data/app/views/layouts/collavre/slide.html.erb +1 -17
- data/config/locales/ai_agent.en.yml +10 -0
- data/config/locales/ai_agent.ko.yml +10 -0
- data/config/locales/creatives.en.yml +3 -1
- data/config/locales/creatives.ko.yml +3 -1
- data/lib/collavre/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f586b6b08d3de11a9c9212f4ff7e11113143bdf0dbbd5963668e9613041b3f02
|
|
4
|
+
data.tar.gz: 5ad7d024a1c53506c0ef1ee08731041de3a66842de48f26912b5eb56051c7029
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 187df2c9024426107e264eb14d7af711cc10255f87eec3380287465c2f0b19198b4a67f50b8d8e3920105166d268af57e1a9a525cb9c49ea84e11a2031ac9503
|
|
7
|
+
data.tar.gz: eb58fba86ff137079da0f834c3f1b82e2fbdede8c5e2d930ebff1602b6c38e45744d6a31bb01d568142b4bee42b5bd0bc68a5bf6e77f6187993f901bee3449ad
|
|
@@ -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:
|
|
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:
|
|
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:
|
|
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,12 @@
|
|
|
9
9
|
max-height: 80vh;
|
|
10
10
|
min-width: 200px;
|
|
11
11
|
min-height: 200px;
|
|
12
|
+
background: var(--surface-bg);
|
|
13
|
+
border: 1px solid var(--border-color);
|
|
14
|
+
border-radius: var(--radius-3);
|
|
15
|
+
box-shadow: var(--shadow-3);
|
|
16
|
+
padding: 1em;
|
|
17
|
+
flex-direction: column;
|
|
12
18
|
transition: top 0.25s ease, left 0.25s ease, width 0.25s ease, height 0.25s ease,
|
|
13
19
|
right 0.25s ease, bottom 0.25s ease, border-radius 0.25s ease,
|
|
14
20
|
box-shadow 0.25s ease, padding 0.25s ease;
|
|
@@ -45,6 +51,7 @@ body.chat-fullscreen {
|
|
|
45
51
|
align-items: center;
|
|
46
52
|
justify-content: space-between;
|
|
47
53
|
gap: 0.75em;
|
|
54
|
+
padding-bottom: var(--space-1);
|
|
48
55
|
}
|
|
49
56
|
|
|
50
57
|
.comments-popup-header h3 {
|
|
@@ -119,8 +126,7 @@ body.chat-fullscreen {
|
|
|
119
126
|
flex-wrap: nowrap;
|
|
120
127
|
align-items: center;
|
|
121
128
|
gap: 0.5em;
|
|
122
|
-
padding:
|
|
123
|
-
margin-bottom: 0.5em;
|
|
129
|
+
padding: var(--space-1) 0;
|
|
124
130
|
overflow-x: auto;
|
|
125
131
|
overflow-y: hidden;
|
|
126
132
|
scrollbar-width: none; /* Firefox */
|
|
@@ -365,7 +371,7 @@ body.chat-fullscreen {
|
|
|
365
371
|
padding: 0.3em 0.8em;
|
|
366
372
|
font-size: 0.85em;
|
|
367
373
|
cursor: pointer;
|
|
368
|
-
border-radius:
|
|
374
|
+
border-radius: var(--radius-2);
|
|
369
375
|
white-space: nowrap;
|
|
370
376
|
}
|
|
371
377
|
|
|
@@ -570,7 +576,7 @@ body.chat-fullscreen {
|
|
|
570
576
|
.comment-action-json {
|
|
571
577
|
background: var(--color-section-bg);
|
|
572
578
|
border: 1px solid var(--color-border);
|
|
573
|
-
border-radius:
|
|
579
|
+
border-radius: var(--radius-2);
|
|
574
580
|
margin-top: 0.4em;
|
|
575
581
|
padding: 0.5em;
|
|
576
582
|
white-space: pre-wrap;
|
|
@@ -588,7 +594,7 @@ body.chat-fullscreen {
|
|
|
588
594
|
.comment-action-edit-textarea {
|
|
589
595
|
width: 100%;
|
|
590
596
|
border: 1px solid var(--color-border);
|
|
591
|
-
border-radius:
|
|
597
|
+
border-radius: var(--radius-2);
|
|
592
598
|
padding: 0.5em;
|
|
593
599
|
font-family: var(--font-family-monospace, 'SFMono-Regular', 'Consolas', 'Liberation Mono', monospace);
|
|
594
600
|
font-size: 0.9em;
|
|
@@ -657,8 +663,8 @@ body.chat-fullscreen {
|
|
|
657
663
|
}
|
|
658
664
|
|
|
659
665
|
.comment-status-label.pending-label {
|
|
660
|
-
background-color: color-mix(in srgb,
|
|
661
|
-
color:
|
|
666
|
+
background-color: color-mix(in srgb, var(--color-warning) 20%, transparent);
|
|
667
|
+
color: var(--color-warning);
|
|
662
668
|
}
|
|
663
669
|
|
|
664
670
|
.comment-action-container {
|
|
@@ -731,7 +737,7 @@ body.chat-fullscreen {
|
|
|
731
737
|
background: var(--color-section-bg);
|
|
732
738
|
color: var(--color-text);
|
|
733
739
|
border: 1px solid var(--color-border);
|
|
734
|
-
border-radius:
|
|
740
|
+
border-radius: var(--radius-2);
|
|
735
741
|
padding: 0.2em 0.6em;
|
|
736
742
|
font-size: 0.75em;
|
|
737
743
|
opacity: 0;
|
|
@@ -753,7 +759,7 @@ body.chat-fullscreen {
|
|
|
753
759
|
gap: 0.35em;
|
|
754
760
|
background: var(--color-section-bg);
|
|
755
761
|
border: 1px solid var(--color-border);
|
|
756
|
-
border-radius:
|
|
762
|
+
border-radius: var(--radius-2);
|
|
757
763
|
padding: 0.2em 0.4em;
|
|
758
764
|
margin-right: 0.25em;
|
|
759
765
|
margin-top: 0.2em;
|
|
@@ -784,7 +790,7 @@ body.chat-fullscreen {
|
|
|
784
790
|
.comment-attachment-image {
|
|
785
791
|
max-width: 100%;
|
|
786
792
|
height: auto;
|
|
787
|
-
border-radius:
|
|
793
|
+
border-radius: var(--radius-2);
|
|
788
794
|
border: 1px solid var(--color-border);
|
|
789
795
|
}
|
|
790
796
|
|
|
@@ -839,7 +845,7 @@ body.chat-fullscreen {
|
|
|
839
845
|
}
|
|
840
846
|
|
|
841
847
|
#comment-participants {
|
|
842
|
-
|
|
848
|
+
padding: var(--space-1) 0;
|
|
843
849
|
min-height: 20px;
|
|
844
850
|
display: flex;
|
|
845
851
|
align-items: center;
|
|
@@ -909,7 +915,7 @@ body.chat-fullscreen {
|
|
|
909
915
|
flex-wrap: nowrap;
|
|
910
916
|
align-items: center;
|
|
911
917
|
gap: 0.4em;
|
|
912
|
-
padding:
|
|
918
|
+
padding: var(--space-1) 0;
|
|
913
919
|
overflow-x: auto;
|
|
914
920
|
overflow-y: visible;
|
|
915
921
|
scrollbar-width: none;
|
|
@@ -943,8 +949,14 @@ body.chat-fullscreen {
|
|
|
943
949
|
box-sizing: border-box;
|
|
944
950
|
}
|
|
945
951
|
|
|
952
|
+
.context-chip svg,
|
|
953
|
+
.context-toggle-btn svg {
|
|
954
|
+
vertical-align: middle;
|
|
955
|
+
flex-shrink: 0;
|
|
956
|
+
}
|
|
957
|
+
|
|
946
958
|
.context-chip:hover {
|
|
947
|
-
background: var(--
|
|
959
|
+
background: var(--surface-hover);
|
|
948
960
|
}
|
|
949
961
|
|
|
950
962
|
.context-chip.context-disabled {
|
|
@@ -1047,7 +1059,7 @@ body.chat-fullscreen {
|
|
|
1047
1059
|
|
|
1048
1060
|
.context-toggle-btn.context-toggle-active {
|
|
1049
1061
|
background: var(--color-secondary-active);
|
|
1050
|
-
color:
|
|
1062
|
+
color: var(--color-badge-text);
|
|
1051
1063
|
border-color: var(--color-secondary-active);
|
|
1052
1064
|
}
|
|
1053
1065
|
|
|
@@ -1056,8 +1068,7 @@ body.chat-fullscreen {
|
|
|
1056
1068
|
flex-wrap: nowrap;
|
|
1057
1069
|
align-items: center;
|
|
1058
1070
|
gap: 0.5em;
|
|
1059
|
-
padding:
|
|
1060
|
-
margin-bottom: 0.5em;
|
|
1071
|
+
padding: var(--space-1) 0;
|
|
1061
1072
|
overflow-x: auto;
|
|
1062
1073
|
overflow-y: hidden;
|
|
1063
1074
|
scrollbar-width: none; /* Firefox */
|
|
@@ -1088,12 +1099,12 @@ body.chat-fullscreen {
|
|
|
1088
1099
|
}
|
|
1089
1100
|
|
|
1090
1101
|
.topic-tag:hover {
|
|
1091
|
-
background: var(--
|
|
1102
|
+
background: var(--surface-hover);
|
|
1092
1103
|
}
|
|
1093
1104
|
|
|
1094
1105
|
.topic-tag.active {
|
|
1095
1106
|
background: var(--color-secondary-active);
|
|
1096
|
-
color:
|
|
1107
|
+
color: var(--color-badge-text);
|
|
1097
1108
|
border-color: var(--color-secondary-active);
|
|
1098
1109
|
}
|
|
1099
1110
|
|
|
@@ -1108,7 +1119,7 @@ body.chat-fullscreen {
|
|
|
1108
1119
|
top: -8px;
|
|
1109
1120
|
right: -10px;
|
|
1110
1121
|
background-color: var(--color-danger);
|
|
1111
|
-
color:
|
|
1122
|
+
color: var(--color-badge-text);
|
|
1112
1123
|
font-size: 0.6em;
|
|
1113
1124
|
padding: 0.1em 0.4em;
|
|
1114
1125
|
border-radius: 8px;
|
|
@@ -1118,7 +1129,7 @@ body.chat-fullscreen {
|
|
|
1118
1129
|
/* Drag and drop styles for moving comments to topics */
|
|
1119
1130
|
.topic-tag.drag-over {
|
|
1120
1131
|
background-color: var(--color-active);
|
|
1121
|
-
color:
|
|
1132
|
+
color: var(--color-badge-text);
|
|
1122
1133
|
border-color: var(--color-active);
|
|
1123
1134
|
transform: scale(1.05);
|
|
1124
1135
|
transition: all 0.15s ease;
|
|
@@ -1169,8 +1180,8 @@ body.chat-fullscreen {
|
|
|
1169
1180
|
left: -1000px;
|
|
1170
1181
|
padding: var(--space-2) var(--space-3);
|
|
1171
1182
|
background-color: var(--color-active);
|
|
1172
|
-
color:
|
|
1173
|
-
border-radius:
|
|
1183
|
+
color: var(--color-badge-text);
|
|
1184
|
+
border-radius: var(--radius-2);
|
|
1174
1185
|
font-size: 0.9em;
|
|
1175
1186
|
font-weight: 500;
|
|
1176
1187
|
white-space: nowrap;
|
|
@@ -1279,6 +1290,7 @@ body.chat-fullscreen {
|
|
|
1279
1290
|
.topic-archived-toggle {
|
|
1280
1291
|
display: inline-flex;
|
|
1281
1292
|
align-items: center;
|
|
1293
|
+
gap: 0.3em;
|
|
1282
1294
|
padding: 0.15em var(--space-2);
|
|
1283
1295
|
border-radius: var(--radius-3);
|
|
1284
1296
|
font-size: var(--text-0);
|
|
@@ -1298,10 +1310,11 @@ body.chat-fullscreen {
|
|
|
1298
1310
|
background: none;
|
|
1299
1311
|
border: none;
|
|
1300
1312
|
cursor: pointer;
|
|
1301
|
-
font-size: var(--text-00);
|
|
1302
1313
|
padding: 0 var(--space-1);
|
|
1303
1314
|
opacity: 0.6;
|
|
1304
|
-
|
|
1315
|
+
display: inline-flex;
|
|
1316
|
+
align-items: center;
|
|
1317
|
+
color: var(--text-secondary);
|
|
1305
1318
|
}
|
|
1306
1319
|
.archive-topic-btn:hover,
|
|
1307
1320
|
.unarchive-topic-btn:hover {
|
|
@@ -1349,7 +1362,7 @@ body.chat-fullscreen {
|
|
|
1349
1362
|
}
|
|
1350
1363
|
|
|
1351
1364
|
.selection-action-bar-btn:hover {
|
|
1352
|
-
background: var(--surface-hover
|
|
1365
|
+
background: var(--surface-hover);
|
|
1353
1366
|
}
|
|
1354
1367
|
|
|
1355
1368
|
.selection-action-delete:hover {
|
|
@@ -1441,7 +1454,7 @@ body.chat-fullscreen {
|
|
|
1441
1454
|
/* Blinking cursor inline at the end of streaming content */
|
|
1442
1455
|
.streaming-cursor {
|
|
1443
1456
|
animation: streaming-blink 1s infinite;
|
|
1444
|
-
color: var(--
|
|
1457
|
+
color: var(--text-primary);
|
|
1445
1458
|
margin-left: 1px;
|
|
1446
1459
|
font-weight: normal;
|
|
1447
1460
|
}
|
|
@@ -1452,11 +1465,11 @@ body.chat-fullscreen {
|
|
|
1452
1465
|
}
|
|
1453
1466
|
|
|
1454
1467
|
.review-hint {
|
|
1455
|
-
background: var(--surface-
|
|
1456
|
-
color: var(--text-
|
|
1457
|
-
padding: var(--space-2
|
|
1458
|
-
border-radius: var(--radius-2
|
|
1459
|
-
font-size: var(--text-0
|
|
1468
|
+
background: var(--surface-btn);
|
|
1469
|
+
color: var(--text-on-btn);
|
|
1470
|
+
padding: var(--space-2) var(--space-3);
|
|
1471
|
+
border-radius: var(--radius-2);
|
|
1472
|
+
font-size: var(--text-0);
|
|
1460
1473
|
white-space: nowrap;
|
|
1461
1474
|
z-index: var(--layer-important, 999);
|
|
1462
1475
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
|
@@ -439,7 +444,7 @@ creative-tree-row:not([expanded]) .creative-toggle-btn {
|
|
|
439
444
|
.creative-row.level-1:hover,
|
|
440
445
|
.creative-row.level-2:hover,
|
|
441
446
|
.creative-row.level-3:hover {
|
|
442
|
-
background-color: var(--
|
|
447
|
+
background-color: var(--surface-hover);
|
|
443
448
|
}
|
|
444
449
|
|
|
445
450
|
.creative-progress {
|
|
@@ -474,7 +479,7 @@ creative-tree-row:not([expanded]) .creative-toggle-btn {
|
|
|
474
479
|
|
|
475
480
|
.creative-origin-link:hover,
|
|
476
481
|
.creative-origin-link:focus {
|
|
477
|
-
background-color: var(--
|
|
482
|
+
background-color: var(--surface-hover);
|
|
478
483
|
}
|
|
479
484
|
|
|
480
485
|
.creative-origin-link-icon {
|
|
@@ -682,20 +687,24 @@ creative-tree-row:not([expanded]) .creative-toggle-btn {
|
|
|
682
687
|
/* Archive toggle button */
|
|
683
688
|
.archive-toggle-btn {
|
|
684
689
|
background: none;
|
|
685
|
-
border:
|
|
690
|
+
border: 1px solid var(--color-border);
|
|
691
|
+
border-radius: var(--radius-2);
|
|
686
692
|
cursor: pointer;
|
|
687
|
-
font-size: var(--text-2);
|
|
688
693
|
padding: var(--space-1) var(--space-2);
|
|
689
|
-
|
|
690
|
-
|
|
694
|
+
color: var(--text-secondary);
|
|
695
|
+
display: inline-flex;
|
|
696
|
+
align-items: center;
|
|
697
|
+
justify-content: center;
|
|
698
|
+
transition: background 0.15s, color 0.15s;
|
|
691
699
|
}
|
|
692
700
|
.archive-toggle-btn:hover {
|
|
693
|
-
|
|
701
|
+
background: var(--surface-input);
|
|
702
|
+
color: var(--text-primary);
|
|
694
703
|
}
|
|
695
704
|
.archive-toggle-btn.active {
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
border-
|
|
705
|
+
background: var(--color-active);
|
|
706
|
+
color: var(--color-badge-text);
|
|
707
|
+
border-color: var(--color-active);
|
|
699
708
|
}
|
|
700
709
|
|
|
701
710
|
/* Archived creative row */
|
|
@@ -79,6 +79,40 @@ body.dark-mode {
|
|
|
79
79
|
/* ============================================================================
|
|
80
80
|
* BASE ELEMENT STYLES
|
|
81
81
|
* ============================================================================ */
|
|
82
|
+
html {
|
|
83
|
+
scroll-behavior: smooth;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
@media (prefers-reduced-motion: reduce) {
|
|
87
|
+
html { scroll-behavior: auto; }
|
|
88
|
+
|
|
89
|
+
/* Collapse decorative transitions to instant; state changes still
|
|
90
|
+
apply but without visible motion (hover bg, theme switch, etc.). */
|
|
91
|
+
*, *::before, *::after {
|
|
92
|
+
transition-duration: 0.01ms !important;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/* Disable decorative/non-essential animations entirely so that
|
|
96
|
+
elements styled with animation end up in their *final* keyframe
|
|
97
|
+
state (via forwards fill) rather than flickering.
|
|
98
|
+
Infinite animations (spinners, streaming dots) stop on their
|
|
99
|
+
current frame and become static — which is the correct reduced-
|
|
100
|
+
motion behaviour. */
|
|
101
|
+
*, *::before, *::after {
|
|
102
|
+
animation-duration: 0.01ms !important;
|
|
103
|
+
animation-iteration-count: 1 !important;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* Keep timed-visibility elements (toasts, hints) fully visible
|
|
107
|
+
instead of letting the collapsed fade-out hide them instantly. */
|
|
108
|
+
.share-modal-message,
|
|
109
|
+
.review-hint,
|
|
110
|
+
.comment-copy-notice.visible {
|
|
111
|
+
animation: none !important;
|
|
112
|
+
opacity: 1 !important;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
82
116
|
body {
|
|
83
117
|
background: var(--surface-bg);
|
|
84
118
|
color: var(--text-primary);
|
|
@@ -96,6 +130,7 @@ nav {
|
|
|
96
130
|
|
|
97
131
|
a {
|
|
98
132
|
color: var(--color-link);
|
|
133
|
+
transition: color 0.15s;
|
|
99
134
|
}
|
|
100
135
|
|
|
101
136
|
main,
|
|
@@ -107,9 +142,27 @@ button,
|
|
|
107
142
|
input[type="button"],
|
|
108
143
|
input[type="submit"] {
|
|
109
144
|
border: none;
|
|
110
|
-
border-radius:
|
|
145
|
+
border-radius: var(--radius-2);
|
|
111
146
|
padding: 2px 4px;
|
|
112
|
-
transition: background 0.
|
|
147
|
+
transition: background 0.15s, color 0.15s, transform 0.1s;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/* --- Global active press feedback --- */
|
|
151
|
+
button:active:not(:disabled),
|
|
152
|
+
input[type="button"]:active:not(:disabled),
|
|
153
|
+
input[type="submit"]:active:not(:disabled),
|
|
154
|
+
.btn:active:not(:disabled) {
|
|
155
|
+
transform: scale(0.97);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/* --- Global focus-visible ring --- */
|
|
159
|
+
button:focus-visible,
|
|
160
|
+
input[type="button"]:focus-visible,
|
|
161
|
+
input[type="submit"]:focus-visible,
|
|
162
|
+
a:focus-visible,
|
|
163
|
+
.btn:focus-visible {
|
|
164
|
+
outline: 2px solid var(--color-active);
|
|
165
|
+
outline-offset: 2px;
|
|
113
166
|
}
|
|
114
167
|
|
|
115
168
|
/* ============================================================================
|
|
@@ -127,7 +180,7 @@ input[type="submit"] {
|
|
|
127
180
|
font-weight: 500;
|
|
128
181
|
line-height: 1.4;
|
|
129
182
|
border: 1px solid var(--border-color);
|
|
130
|
-
border-radius: var(--radius-2
|
|
183
|
+
border-radius: var(--radius-2);
|
|
131
184
|
background: var(--surface-btn);
|
|
132
185
|
color: var(--text-on-btn);
|
|
133
186
|
cursor: pointer;
|
|
@@ -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: #
|
|
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: #
|
|
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:
|
|
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(--
|
|
41
|
+
background: var(--surface-hover);
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
.common-popup-item {
|