@okjavis/nodebb-theme-javis 1.4.0 → 1.5.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/scss/_cards.scss CHANGED
@@ -7,15 +7,22 @@
7
7
  .topic-card {
8
8
  display: flex;
9
9
  background: $jv-surface;
10
- border-radius: $jv-radius-lg;
10
+ border-radius: $jv-radius-sm; // 8px - shadcn standard
11
11
  border: 1px solid $jv-border-subtle;
12
- margin-bottom: $jv-space-4;
13
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
12
+ margin-bottom: $jv-space-2; // 8dp grid
13
+ box-shadow: $jv-shadow-sm; // shadcn subtle shadow
14
+ transition: $jv-transition-shadow, border-color $jv-transition-fast; // Modern smooth transitions
14
15
  overflow: hidden;
15
16
 
16
17
  &:hover {
17
- border-color: $jv-border-strong;
18
- box-shadow: $jv-shadow-soft;
18
+ box-shadow: $jv-shadow-md; // shadcn hover shadow
19
+ border-color: $jv-border-strong; // Subtle border darkening
20
+ }
21
+
22
+ // Focus state for accessibility
23
+ &:focus-within {
24
+ outline: none;
25
+ box-shadow: $jv-shadow-md, $jv-focus-ring;
19
26
  }
20
27
 
21
28
  // Deleted/scheduled states
@@ -36,10 +43,10 @@
36
43
  flex-direction: column;
37
44
  align-items: center;
38
45
  justify-content: flex-start;
39
- padding: $jv-space-6 $jv-space-4;
46
+ padding: $jv-space-6 $jv-space-4; // 24dp vertical, 16dp horizontal - Material grid
40
47
  background: rgba(0, 0, 0, 0.02);
41
48
  min-width: 44px;
42
- gap: 2px;
49
+ gap: $jv-space-1; // 4dp - Material grid
43
50
  }
44
51
 
45
52
  .vote-btn {
@@ -93,10 +100,10 @@
93
100
  // ===========================================================
94
101
  .topic-content {
95
102
  flex: 1;
96
- padding: $jv-space-6;
103
+ padding: $jv-space-3; // 12dp - Material grid
97
104
  display: flex;
98
105
  flex-direction: column;
99
- gap: $jv-space-4;
106
+ gap: $jv-space-3; // 12dp - Material grid
100
107
  min-width: 0; // Allow text truncation
101
108
  }
102
109
 
@@ -105,27 +112,27 @@
105
112
  display: flex;
106
113
  align-items: center;
107
114
  flex-wrap: wrap;
108
- gap: $jv-space-2;
109
- font-size: $jv-font-size-xs;
110
- color: $jv-text-muted;
115
+ gap: $jv-space-3; // 12dp - Material grid
116
+ font-size: 14px; // Slightly larger for readability
117
+ color: $jv-text-soft; // More subtle
111
118
 
112
119
  .meta-separator {
113
120
  color: $jv-text-soft;
114
121
  }
115
122
 
116
123
  .author-link {
117
- color: $jv-text-muted;
124
+ color: $jv-text-soft; // More subtle - not competing with title
118
125
  text-decoration: none;
119
- font-weight: 500;
126
+ font-weight: 400; // Normal weight
120
127
 
121
128
  &:hover {
122
129
  color: $jv-primary;
123
- text-decoration: underline;
124
130
  }
125
131
  }
126
132
 
127
133
  .meta-time {
128
134
  color: $jv-text-soft;
135
+ font-size: 13px;
129
136
  }
130
137
 
131
138
  // Category badge override
@@ -140,10 +147,10 @@
140
147
  // Topic Title
141
148
  .topic-card .topic-title {
142
149
  margin: 0;
143
- font-size: $jv-font-size-lg;
144
- font-weight: 600;
145
- line-height: $jv-line-height-tight;
146
- letter-spacing: -0.01em;
150
+ font-size: 20px; // Larger for prominence - consistent with feed
151
+ font-weight: 700; // Bolder for better hierarchy
152
+ line-height: 1.4; // Better readability
153
+ letter-spacing: -0.02em; // Tighter for modern feel
147
154
 
148
155
  a {
149
156
  color: $jv-text-main;
@@ -159,7 +166,7 @@
159
166
  .topic-labels {
160
167
  display: flex;
161
168
  flex-wrap: wrap;
162
- gap: $jv-space-2;
169
+ gap: $jv-space-2; // 8dp - Material grid
163
170
 
164
171
  .topic-badge {
165
172
  display: inline-flex;
@@ -197,7 +204,7 @@
197
204
  .topic-tags {
198
205
  display: flex;
199
206
  flex-wrap: wrap;
200
- gap: $jv-space-2;
207
+ gap: $jv-space-2; // 8dp - Material grid
201
208
 
202
209
  .topic-tag {
203
210
  font-size: 11px;
@@ -222,7 +229,7 @@
222
229
  position: relative;
223
230
  width: fit-content;
224
231
  max-width: 100%;
225
- border-radius: $jv-radius-md;
232
+ border-radius: $jv-radius-sm; // 8px - Material Design standard
226
233
  overflow: hidden;
227
234
 
228
235
  img {
@@ -231,7 +238,7 @@
231
238
  max-width: 100%;
232
239
  width: auto;
233
240
  object-fit: cover;
234
- border-radius: $jv-radius-md;
241
+ border-radius: $jv-radius-sm; // 8px - Material Design standard
235
242
  }
236
243
 
237
244
  .thumb-count {
@@ -269,40 +276,51 @@
269
276
  .topic-actions {
270
277
  display: flex;
271
278
  align-items: center;
272
- gap: $jv-space-4;
273
- padding-top: $jv-space-2;
279
+ gap: $jv-space-3; // 12dp - Material grid
280
+ padding-top: $jv-space-3; // 12dp - Material grid
274
281
  margin-top: auto;
275
282
  }
276
283
 
277
284
  .action-btn {
278
285
  display: inline-flex;
279
286
  align-items: center;
280
- gap: 6px;
281
- padding: 6px 10px;
282
- font-size: $jv-font-size-xs;
283
- font-weight: 500;
287
+ gap: $jv-space-2; // 8dp grid
288
+ padding: $jv-space-2 $jv-space-3; // 8dp vertical, 12dp horizontal
289
+ font-size: 14px;
290
+ font-weight: 600;
284
291
  color: $jv-text-muted;
285
292
  background: transparent;
286
293
  border: none;
287
- border-radius: $jv-radius-xs;
294
+ border-radius: $jv-radius-sm; // 8px shadcn standard
288
295
  cursor: pointer;
289
296
  text-decoration: none;
290
- transition: background-color 0.15s ease, color 0.15s ease;
297
+ transition: background-color $jv-transition-fast, color $jv-transition-fast; // Modern transitions
291
298
 
292
299
  &:hover {
293
- background: rgba(0, 0, 0, 0.05);
300
+ background: $jv-hover-bg; // Consistent hover state
294
301
  color: $jv-text-main;
295
302
  }
296
303
 
304
+ // Focus state for accessibility
305
+ &:focus-visible {
306
+ outline: none;
307
+ box-shadow: $jv-focus-ring;
308
+ }
309
+
297
310
  i {
298
- font-size: 14px;
311
+ font-size: 18px; // Larger icons
312
+ }
313
+
314
+ // Make numbers bold
315
+ span {
316
+ font-weight: 700;
299
317
  }
300
318
  }
301
319
 
302
320
  .action-stat {
303
321
  display: inline-flex;
304
322
  align-items: center;
305
- gap: 4px;
323
+ gap: $jv-space-1; // 4dp - Material grid
306
324
  font-size: $jv-font-size-xs;
307
325
  color: $jv-text-soft;
308
326
  margin-left: auto;
@@ -334,7 +352,7 @@
334
352
 
335
353
  .topic-actions {
336
354
  flex-wrap: wrap;
337
- gap: $jv-space-2;
355
+ gap: $jv-space-2; // 8dp - Material grid
338
356
  }
339
357
 
340
358
  .action-btn span {
@@ -351,23 +369,32 @@
351
369
  // ===========================================================
352
370
  li[component="post"].posts-list-item {
353
371
  background: $jv-surface;
354
- border-radius: $jv-radius-lg;
372
+ border-radius: $jv-radius-sm; // 8px - shadcn standard
355
373
  border: 1px solid $jv-border-subtle;
356
- padding: $jv-space-8;
357
- margin-bottom: $jv-space-4;
358
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
374
+ padding: $jv-space-4 $jv-space-3; // 16dp vertical, 12dp horizontal
375
+ margin-bottom: $jv-space-2; // 8dp grid
376
+ box-shadow: $jv-shadow-sm; // shadcn subtle shadow
377
+ transition: $jv-transition-shadow, border-color $jv-transition-fast; // Modern transitions
359
378
 
360
379
  &:hover {
380
+ box-shadow: $jv-shadow-md; // shadcn hover shadow
361
381
  border-color: $jv-border-strong;
362
- box-shadow: $jv-shadow-soft;
382
+ }
383
+
384
+ // Focus state for accessibility
385
+ &:focus-within {
386
+ outline: none;
387
+ box-shadow: $jv-shadow-md, $jv-focus-ring;
363
388
  }
364
389
  }
365
390
 
366
391
  li[component="post"] {
367
392
  .topic-title {
368
- font-size: $jv-font-size-lg;
369
- font-weight: 600;
370
- margin-bottom: $jv-space-4;
393
+ font-size: 20px; // Larger for prominence
394
+ font-weight: 700; // Bolder for better hierarchy
395
+ line-height: 1.4; // Better readability
396
+ margin-bottom: $jv-space-3; // 12dp - Material grid
397
+ letter-spacing: -0.02em; // Tighter for modern feel
371
398
 
372
399
  a {
373
400
  color: $jv-text-main;
@@ -382,18 +409,27 @@ li[component="post"] {
382
409
  .post-body {
383
410
  display: flex;
384
411
  flex-direction: column;
385
- gap: $jv-space-4;
412
+ gap: $jv-space-2; // 8dp - Material grid
386
413
  }
387
414
 
388
415
  .post-info {
389
- font-size: $jv-font-size-xs;
390
- color: $jv-text-muted;
416
+ font-size: 14px; // Slightly larger for readability
417
+ color: $jv-text-soft; // More subtle
418
+
419
+ a {
420
+ color: $jv-text-soft; // More subtle
421
+ font-weight: 400; // Normal weight
422
+
423
+ &:hover {
424
+ color: $jv-primary;
425
+ }
426
+ }
391
427
  }
392
428
 
393
429
  .content {
394
- font-size: $jv-font-size-sm;
395
- line-height: $jv-line-height-base;
396
- color: $jv-text-main;
430
+ font-size: 15px; // Slightly larger for better readability
431
+ line-height: 1.6;
432
+ color: $jv-text-muted;
397
433
 
398
434
  p {
399
435
  margin-bottom: $jv-space-4;
@@ -402,6 +438,7 @@ li[component="post"] {
402
438
 
403
439
  .timeago {
404
440
  color: $jv-text-soft;
441
+ font-size: 13px;
405
442
  }
406
443
  }
407
444
 
@@ -416,15 +453,22 @@ li[component="post"] {
416
453
  // Category/Topic List Item (fallback for other templates)
417
454
  .category-item {
418
455
  background: $jv-surface;
419
- border-radius: $jv-radius-lg;
456
+ border-radius: $jv-radius-sm; // 8px - shadcn standard
420
457
  border: 1px solid $jv-border-subtle;
421
- padding: $jv-space-6;
422
- margin-bottom: $jv-space-4;
423
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
458
+ padding: $jv-space-3; // 12dp grid
459
+ margin-bottom: $jv-space-2; // 8dp grid
460
+ box-shadow: $jv-shadow-sm; // shadcn subtle shadow
461
+ transition: $jv-transition-shadow, border-color $jv-transition-fast; // Modern transitions
424
462
 
425
463
  &:hover {
464
+ box-shadow: $jv-shadow-md; // shadcn hover shadow
426
465
  border-color: $jv-border-strong;
427
- box-shadow: $jv-shadow-soft;
466
+ }
467
+
468
+ // Focus state for accessibility
469
+ &:focus-within {
470
+ outline: none;
471
+ box-shadow: $jv-shadow-md, $jv-focus-ring;
428
472
  }
429
473
 
430
474
  // Override default border-bottom
@@ -6,7 +6,7 @@
6
6
  .feed h2 {
7
7
  font-size: 16px;
8
8
  font-weight: 600;
9
- margin: 0 0 $jv-space-6 0;
9
+ margin: 0 0 $jv-space-6 0; // 24dp - Material grid
10
10
  padding: 0;
11
11
  color: $jv-text-main;
12
12
  letter-spacing: -0.2px;
@@ -26,16 +26,22 @@ ul.categories-list.list-unstyled {
26
26
  // ===========================================================
27
27
 
28
28
  li[component="categories/category"] {
29
- padding: 16px 0;
29
+ padding: $jv-space-4 0; // 16dp grid
30
30
  border-bottom: 1px solid #f1f1f1;
31
- transition: background 120ms ease;
31
+ transition: background $jv-transition-fast; // Modern transition
32
32
 
33
33
  &:last-child {
34
34
  border-bottom: none;
35
35
  }
36
36
 
37
37
  &:hover {
38
- background: rgba(0, 0, 0, 0.02);
38
+ background: $jv-hover-bg; // Consistent hover state
39
+ }
40
+
41
+ // Focus state for accessibility
42
+ &:focus-within {
43
+ outline: none;
44
+ background: $jv-hover-bg;
39
45
  }
40
46
 
41
47
  // Parent title
@@ -43,10 +49,10 @@ li[component="categories/category"] {
43
49
  font-size: $jv-font-size-base;
44
50
  font-weight: 600;
45
51
  color: $jv-text-main;
46
- margin-bottom: 4px;
52
+ margin-bottom: $jv-space-1; // 4dp - Material grid
47
53
  display: flex;
48
54
  align-items: center;
49
- gap: 6px;
55
+ gap: $jv-space-2; // 8dp - Material grid
50
56
 
51
57
  a {
52
58
  text-decoration: none;
@@ -68,7 +74,7 @@ li[component="categories/category"] {
68
74
  font-size: $jv-font-size-sm;
69
75
  color: $jv-text-muted;
70
76
  line-height: 1.45;
71
- margin-bottom: 10px;
77
+ margin-bottom: $jv-space-2; // 8dp - Material grid
72
78
  max-width: 92%;
73
79
  }
74
80
  }
@@ -80,15 +86,15 @@ li[component="categories/category"] {
80
86
  li[component="categories/category"] .category-children {
81
87
  display: flex;
82
88
  flex-direction: column;
83
- gap: 6px;
84
- margin-top: 4px;
89
+ gap: $jv-space-2; // 8dp - Material grid
90
+ margin-top: $jv-space-1; // 4dp - Material grid
85
91
  }
86
92
 
87
93
  .category-children-item {
88
94
  small > .d-flex {
89
95
  display: flex;
90
96
  align-items: center;
91
- gap: 6px;
97
+ gap: $jv-space-2; // 8dp - Material grid
92
98
  font-size: 14px;
93
99
  color: #333;
94
100
  }
@@ -105,7 +111,16 @@ li[component="categories/category"] .category-children {
105
111
  text-decoration: none;
106
112
  font-size: 14px;
107
113
  color: #333;
108
- transition: color 120ms ease, transform 80ms ease;
114
+ transition: color $jv-transition-fast; // Modern transition
115
+
116
+ // Focus state for accessibility
117
+ &:focus-visible {
118
+ outline: none;
119
+ color: $jv-primary;
120
+ text-decoration: underline;
121
+ text-decoration-thickness: 2px;
122
+ text-underline-offset: 2px;
123
+ }
109
124
  }
110
125
 
111
126
  // Hover state: blue dot + blue text
package/scss/_feed.scss CHANGED
@@ -70,20 +70,26 @@
70
70
  }
71
71
 
72
72
  // ===========================================================
73
- // POST CARD – Main Styling
73
+ // POST CARD – Main Styling (shadcn + Modern Polish)
74
74
  // ===========================================================
75
75
  .feed li[component="post"].posts-list-item {
76
76
  background: $jv-surface !important;
77
77
  border: 1px solid $jv-border-subtle !important;
78
- border-radius: $jv-radius-md !important; // 12px - more compact than 16px
79
- margin-bottom: $jv-space-4 !important; // 8px - compact like Reddit
80
- box-shadow: none !important;
78
+ border-radius: $jv-radius-sm !important; // 8px - shadcn standard
79
+ margin-bottom: $jv-space-2 !important; // 8dp grid
80
+ box-shadow: $jv-shadow-sm !important; // shadcn subtle shadow
81
81
  overflow: hidden;
82
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
82
+ transition: $jv-transition-shadow, border-color $jv-transition-fast; // Modern smooth transitions
83
83
 
84
84
  &:hover {
85
- border-color: $jv-border-strong !important;
86
- box-shadow: $jv-shadow-soft !important;
85
+ box-shadow: $jv-shadow-md !important; // shadcn hover shadow
86
+ border-color: $jv-border-strong !important; // Subtle border darkening
87
+ }
88
+
89
+ // Focus state for accessibility
90
+ &:focus-within {
91
+ outline: none;
92
+ box-shadow: $jv-shadow-md, $jv-focus-ring !important;
87
93
  }
88
94
 
89
95
  // Deleted state
@@ -106,10 +112,11 @@
106
112
 
107
113
  .overflow-hidden {
108
114
  border-radius: $jv-radius-md $jv-radius-md 0 0 !important; // Match card radius
109
- max-height: 350px !important;
115
+ max-height: 280px !important; // Reduced from 350px - more balanced ratio
110
116
 
111
117
  img {
112
118
  width: 100%;
119
+ height: 280px; // Fixed height for consistency
113
120
  object-fit: cover;
114
121
  }
115
122
  }
@@ -131,11 +138,11 @@
131
138
  // ===========================================================
132
139
  .feed li[component="post"].posts-list-item {
133
140
  > .d-flex.gap-2.p-3 {
134
- padding: $jv-space-6 !important; // 12px - compact but comfortable
135
- gap: $jv-space-4 !important;
141
+ padding: $jv-space-4 $jv-space-3 !important; // 16dp vertical, 12dp horizontal - Material grid
142
+ gap: $jv-space-3 !important; // 12dp spacing
136
143
 
137
144
  @media (max-width: 768px) {
138
- padding: $jv-space-4 !important; // 8px on mobile
145
+ padding: $jv-space-3 $jv-space-2 !important; // 12dp vertical, 8dp horizontal on mobile
139
146
  }
140
147
  }
141
148
 
@@ -143,8 +150,8 @@
143
150
  .d-none.d-lg-block {
144
151
  .avatar,
145
152
  img[class*="avatar"] {
146
- width: 40px !important; // Smaller, cleaner
147
- height: 40px !important;
153
+ width: 48px !important; // 48dp - Material standard avatar size
154
+ height: 48px !important;
148
155
  border-radius: 50% !important;
149
156
  object-fit: cover;
150
157
  border: 2px solid rgba(0, 0, 0, 0.05);
@@ -153,7 +160,7 @@
153
160
 
154
161
  // Post body
155
162
  .post-body {
156
- gap: $jv-space-2 !important; // Tighter gap - 4px
163
+ gap: $jv-space-2 !important; // 8dp - Material grid
157
164
  }
158
165
  }
159
166
 
@@ -162,12 +169,12 @@
162
169
  // ===========================================================
163
170
  .feed li[component="post"].posts-list-item {
164
171
  .topic-title {
165
- font-size: 18px !important; // Keeping subtle
166
- font-weight: 600 !important;
167
- line-height: 1.3 !important; // Tighter for clean look
172
+ font-size: 20px !important; // Larger for prominence (Reddit/LinkedIn style)
173
+ font-weight: 700 !important; // Bolder for better hierarchy
174
+ line-height: 1.4 !important; // Better readability
168
175
  color: $jv-text-main !important;
169
- margin-bottom: $jv-space-2; // 4px
170
- letter-spacing: -0.01em; // Slight tightening for modern feel
176
+ margin-bottom: $jv-space-3; // 6px - more breathing room
177
+ letter-spacing: -0.02em; // Tighter for modern feel
171
178
 
172
179
  &:hover {
173
180
  color: $jv-primary !important;
@@ -180,14 +187,15 @@
180
187
  // ===========================================================
181
188
  .feed li[component="post"].posts-list-item {
182
189
  .post-info {
183
- font-size: 13px !important;
190
+ font-size: 14px !important; // Slightly larger for readability
184
191
  color: $jv-text-soft; // Lighter for hierarchy
185
- gap: $jv-space-2 !important;
192
+ gap: $jv-space-3 !important; // More spacing between elements
186
193
 
187
194
  .post-author {
188
195
  a {
189
- color: $jv-text-muted; // Less prominent
190
- font-weight: 500; // Lighter weight
196
+ color: $jv-text-soft; // More subtle - not competing with title
197
+ font-weight: 400; // Normal weight
198
+ font-size: 14px;
191
199
 
192
200
  &:hover {
193
201
  color: $jv-primary;
@@ -205,6 +213,12 @@
205
213
 
206
214
  .timeago {
207
215
  color: $jv-text-soft !important;
216
+ font-size: 13px;
217
+
218
+ &::before {
219
+ content: "• ";
220
+ margin-right: 4px;
221
+ }
208
222
  }
209
223
  }
210
224
  }
@@ -214,13 +228,14 @@
214
228
  // ===========================================================
215
229
  .feed li[component="post"].posts-list-item {
216
230
  .content[component="post/content"] {
217
- font-size: 14px !important;
231
+ font-size: 15px !important; // Slightly larger for better readability
218
232
  line-height: 1.6 !important;
219
233
  color: $jv-text-muted;
234
+ margin-top: $jv-space-3; // Better spacing from meta
220
235
 
221
236
  // Truncation styles (from plugin)
222
237
  &.truncate-post-content {
223
- max-height: 150px;
238
+ max-height: 120px; // Reduced from 150px for cleaner cards
224
239
  overflow: hidden;
225
240
  position: relative;
226
241
 
@@ -230,7 +245,7 @@
230
245
  bottom: 0;
231
246
  left: 0;
232
247
  right: 0;
233
- height: 40px;
248
+ height: 50px; // Taller gradient
234
249
  background: linear-gradient(transparent, $jv-surface);
235
250
  pointer-events: none;
236
251
  }
@@ -300,40 +315,55 @@
300
315
  .feed li[component="post"].posts-list-item {
301
316
  .d-flex.justify-content-between:last-child {
302
317
  margin: 0 (-$jv-space-2);
303
- padding-top: $jv-space-2; // Small padding above - 4px
304
- border-top: 1px solid rgba(0, 0, 0, 0.04); // Subtle separator
318
+ padding-top: $jv-space-4; // More padding - 8px
319
+ border-top: 1px solid rgba(0, 0, 0, 0.06); // Slightly more visible separator
305
320
 
306
321
  .btn-link {
307
322
  display: inline-flex;
308
323
  align-items: center;
309
- gap: 6px;
310
- padding: 6px 10px !important; // Tighter padding
311
- font-size: 13px !important;
312
- font-weight: 500 !important; // Lighter weight
324
+ gap: $jv-space-2; // 8dp consistent spacing
325
+ padding: $jv-space-2 $jv-space-3 !important; // 8dp vertical, 12dp horizontal
326
+ font-size: 14px !important;
327
+ font-weight: 600 !important;
313
328
  color: $jv-text-muted !important;
314
329
  background: transparent;
315
330
  border: none;
316
- border-radius: $jv-radius-sm;
331
+ border-radius: $jv-radius-sm; // 8px shadcn standard
317
332
  text-decoration: none !important;
318
- transition: background-color 0.15s ease, color 0.15s ease;
333
+ transition: background-color $jv-transition-fast, color $jv-transition-fast; // Modern transitions, NO transform
319
334
 
320
335
  &:hover {
321
- background: rgba(0, 0, 0, 0.03); // Subtler hover
336
+ background: $jv-hover-bg; // Consistent hover state
322
337
  color: $jv-text-main !important;
323
338
  }
324
339
 
340
+ // Focus state for accessibility
341
+ &:focus-visible {
342
+ outline: none;
343
+ box-shadow: $jv-focus-ring;
344
+ }
345
+
325
346
  i {
326
- font-size: 16px;
347
+ font-size: 18px; // Larger icons
348
+ }
349
+
350
+ // Make numbers bold and prominent
351
+ span {
352
+ font-weight: 700;
327
353
  }
328
354
 
329
355
  // Comments button
330
356
  &[href*="post"]:first-child {
331
357
  i {
332
- color: $jv-text-soft;
358
+ color: $jv-text-muted;
333
359
  }
334
360
 
335
- &:hover i {
336
- color: $jv-primary;
361
+ &:hover {
362
+ background: rgba(0, 81, 255, 0.08);
363
+
364
+ i {
365
+ color: $jv-primary;
366
+ }
337
367
  }
338
368
  }
339
369
 
@@ -341,6 +371,7 @@
341
371
  &[data-action="bookmark"] {
342
372
  &[data-bookmarked="true"] {
343
373
  color: $jv-primary !important;
374
+ background: $jv-selected-bg !important; // Consistent selected state
344
375
 
345
376
  i {
346
377
  color: $jv-primary !important;
@@ -348,7 +379,11 @@
348
379
  }
349
380
 
350
381
  &:hover {
351
- background: rgba(0, 81, 255, 0.06);
382
+ background: $jv-selected-bg;
383
+
384
+ i {
385
+ color: $jv-primary;
386
+ }
352
387
  }
353
388
  }
354
389
 
@@ -356,6 +391,7 @@
356
391
  &[data-action="upvote"] {
357
392
  &[data-upvoted="true"] {
358
393
  color: #ef4444 !important;
394
+ background: rgba(239, 68, 68, 0.08) !important;
359
395
 
360
396
  i {
361
397
  color: #ef4444 !important;
@@ -363,7 +399,7 @@
363
399
  }
364
400
 
365
401
  &:hover {
366
- background: rgba(239, 68, 68, 0.06);
402
+ background: rgba(239, 68, 68, 0.08);
367
403
 
368
404
  i {
369
405
  color: #ef4444;
@@ -371,10 +407,13 @@
371
407
  }
372
408
  }
373
409
 
374
- // Reply button
410
+ // Reply button (Primary CTA)
375
411
  &[data-action="reply"] {
412
+ color: $jv-primary !important;
413
+ font-weight: 700 !important;
414
+
376
415
  &:hover {
377
- background: rgba(0, 81, 255, 0.06);
416
+ background: $jv-selected-bg;
378
417
 
379
418
  i {
380
419
  color: $jv-primary;