clay-server 2.13.0-beta.2 → 2.13.0-beta.4

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.
@@ -0,0 +1,319 @@
1
+ /* ==========================================================================
2
+ Command Palette (Cmd+K)
3
+ ========================================================================== */
4
+
5
+ /* --- Top bar search bar trigger (Slack-style) --- */
6
+ .cmd-palette-searchbar {
7
+ position: absolute;
8
+ left: 50%;
9
+ transform: translateX(-50%);
10
+ display: flex;
11
+ align-items: center;
12
+ gap: 8px;
13
+ height: 24px;
14
+ padding: 0 10px;
15
+ background: rgba(var(--overlay-rgb), 0.04);
16
+ border: 1px solid var(--border-subtle);
17
+ border-radius: 6px;
18
+ cursor: pointer;
19
+ font-family: inherit;
20
+ font-size: 12px;
21
+ color: var(--text-dimmer);
22
+ transition: background 0.15s, border-color 0.15s;
23
+ width: min(520px, 40%);
24
+ }
25
+
26
+ .cmd-palette-searchbar:hover {
27
+ background: rgba(var(--overlay-rgb), 0.08);
28
+ border-color: var(--border);
29
+ color: var(--text-muted);
30
+ }
31
+
32
+ .cmd-palette-searchbar .lucide {
33
+ width: 13px;
34
+ height: 13px;
35
+ flex-shrink: 0;
36
+ }
37
+
38
+ .cmd-palette-searchbar-text {
39
+ flex: 1;
40
+ text-align: left;
41
+ white-space: nowrap;
42
+ overflow: hidden;
43
+ text-overflow: ellipsis;
44
+ }
45
+
46
+ .cmd-palette-searchbar-kbd {
47
+ font-size: 10px;
48
+ font-weight: 600;
49
+ color: var(--text-muted);
50
+ background: rgba(var(--overlay-rgb), 0.08);
51
+ border: 1px solid var(--border);
52
+ border-radius: 4px;
53
+ padding: 0 5px;
54
+ font-family: inherit;
55
+ line-height: 16px;
56
+ flex-shrink: 0;
57
+ }
58
+
59
+ @media (max-width: 768px) {
60
+ .cmd-palette-searchbar {
61
+ max-width: none;
62
+ }
63
+ .cmd-palette-searchbar-text {
64
+ display: none;
65
+ }
66
+ .cmd-palette-searchbar-kbd {
67
+ display: none;
68
+ }
69
+ }
70
+
71
+ .cmd-palette {
72
+ position: fixed;
73
+ inset: 0;
74
+ z-index: 400;
75
+ }
76
+
77
+ .cmd-palette.hidden { display: none; }
78
+
79
+ .cmd-palette-backdrop {
80
+ position: absolute;
81
+ inset: 0;
82
+ background: rgba(var(--shadow-rgb), 0.3);
83
+ }
84
+
85
+ .cmd-palette-dialog {
86
+ position: absolute;
87
+ left: 50%;
88
+ transform: translateX(-50%);
89
+ top: 0;
90
+ background: var(--bg-alt);
91
+ border: 1px solid var(--border);
92
+ border-top: none;
93
+ border-radius: 0 0 12px 12px;
94
+ width: min(560px, 44%);
95
+ box-shadow: 0 8px 32px rgba(var(--shadow-rgb), 0.4);
96
+ display: flex;
97
+ flex-direction: column;
98
+ max-height: 70vh;
99
+ animation: cmdPaletteExpand 0.15s ease-out;
100
+ }
101
+
102
+ @keyframes cmdPaletteExpand {
103
+ from { opacity: 0; max-height: 0; }
104
+ to { opacity: 1; max-height: 70vh; }
105
+ }
106
+
107
+ /* --- Search input row --- */
108
+ .cmd-palette-input-row {
109
+ display: flex;
110
+ align-items: center;
111
+ gap: 8px;
112
+ padding: 10px 14px;
113
+ border-bottom: 1px solid var(--border-subtle);
114
+ }
115
+
116
+ .cmd-palette-input-row .lucide {
117
+ width: 16px;
118
+ height: 16px;
119
+ color: var(--text-muted);
120
+ flex-shrink: 0;
121
+ }
122
+
123
+ .cmd-palette-input {
124
+ flex: 1;
125
+ border: none;
126
+ background: transparent;
127
+ color: var(--text);
128
+ font-size: 14px;
129
+ font-family: inherit;
130
+ outline: none;
131
+ min-width: 0;
132
+ }
133
+
134
+ .cmd-palette-input::placeholder {
135
+ color: var(--text-muted);
136
+ }
137
+
138
+ .cmd-palette-kbd {
139
+ font-size: 11px;
140
+ color: var(--text-dimmer);
141
+ cursor: pointer;
142
+ flex-shrink: 0;
143
+ display: flex;
144
+ align-items: center;
145
+ justify-content: center;
146
+ }
147
+
148
+ .cmd-palette-kbd .lucide {
149
+ width: 18px;
150
+ height: 18px;
151
+ }
152
+
153
+ /* --- Results area --- */
154
+ .cmd-palette-results {
155
+ overflow-y: auto;
156
+ padding: 6px 0;
157
+ flex: 1;
158
+ min-height: 0;
159
+ }
160
+
161
+ .cmd-palette-group-label {
162
+ font-size: 11px;
163
+ font-weight: 600;
164
+ color: var(--text-muted);
165
+ text-transform: uppercase;
166
+ letter-spacing: 0.4px;
167
+ padding: 8px 16px 4px;
168
+ }
169
+
170
+ .cmd-palette-item {
171
+ display: flex;
172
+ align-items: center;
173
+ gap: 10px;
174
+ padding: 8px 16px;
175
+ cursor: pointer;
176
+ transition: background 0.1s;
177
+ }
178
+
179
+ .cmd-palette-item:hover,
180
+ .cmd-palette-item.active {
181
+ background: rgba(var(--overlay-rgb), 0.06);
182
+ }
183
+
184
+ .cmd-palette-item-icon {
185
+ width: 28px;
186
+ height: 28px;
187
+ display: flex;
188
+ align-items: center;
189
+ justify-content: center;
190
+ font-size: 16px;
191
+ flex-shrink: 0;
192
+ border-radius: 6px;
193
+ background: rgba(var(--overlay-rgb), 0.04);
194
+ }
195
+
196
+ .cmd-palette-item-body {
197
+ flex: 1;
198
+ min-width: 0;
199
+ display: flex;
200
+ flex-direction: column;
201
+ gap: 2px;
202
+ }
203
+
204
+ .cmd-palette-item-title {
205
+ font-size: 13px;
206
+ color: var(--text);
207
+ white-space: nowrap;
208
+ overflow: hidden;
209
+ text-overflow: ellipsis;
210
+ }
211
+
212
+ .cmd-palette-item-meta {
213
+ display: flex;
214
+ align-items: center;
215
+ gap: 6px;
216
+ font-size: 11px;
217
+ color: var(--text-muted);
218
+ }
219
+
220
+ .cmd-palette-item-project {
221
+ white-space: nowrap;
222
+ overflow: hidden;
223
+ text-overflow: ellipsis;
224
+ color: var(--text-muted);
225
+ }
226
+
227
+ .cmd-palette-item-snippet {
228
+ white-space: nowrap;
229
+ overflow: hidden;
230
+ text-overflow: ellipsis;
231
+ font-style: italic;
232
+ color: var(--text-muted);
233
+ max-width: 300px;
234
+ }
235
+
236
+ .cmd-palette-item-arrow {
237
+ color: var(--text-dimmer);
238
+ flex-shrink: 0;
239
+ }
240
+
241
+ .cmd-palette-item-arrow .lucide {
242
+ width: 14px;
243
+ height: 14px;
244
+ }
245
+
246
+ /* --- Empty / loading --- */
247
+ .cmd-palette-empty {
248
+ padding: 24px 16px;
249
+ text-align: center;
250
+ font-size: 13px;
251
+ color: var(--text-muted);
252
+ }
253
+
254
+ .cmd-palette-loading {
255
+ padding: 24px 16px;
256
+ text-align: center;
257
+ font-size: 13px;
258
+ color: var(--text-muted);
259
+ }
260
+
261
+ /* --- Footer --- */
262
+ .cmd-palette-footer {
263
+ display: flex;
264
+ align-items: center;
265
+ justify-content: space-between;
266
+ padding: 6px 14px;
267
+ border-top: 1px solid var(--border-subtle);
268
+ font-size: 11px;
269
+ color: var(--text-muted);
270
+ }
271
+
272
+ .cmd-palette-brand {
273
+ display: flex;
274
+ align-items: center;
275
+ gap: 4px;
276
+ font-family: "Nunito", sans-serif;
277
+ font-size: 11px;
278
+ font-weight: 700;
279
+ color: var(--text-muted);
280
+ text-decoration: none;
281
+ transition: color 0.15s;
282
+ }
283
+
284
+ .cmd-palette-brand img {
285
+ border-radius: 3px;
286
+ }
287
+
288
+ .cmd-palette-brand:hover {
289
+ color: var(--text-secondary);
290
+ }
291
+
292
+ .cmd-palette-footer-shortcuts {
293
+ display: flex;
294
+ align-items: center;
295
+ gap: 10px;
296
+ }
297
+
298
+ .cmd-palette-footer kbd {
299
+ font-size: 10px;
300
+ color: var(--text-secondary);
301
+ background: rgba(var(--overlay-rgb), 0.08);
302
+ border: 1px solid var(--border);
303
+ border-radius: 3px;
304
+ padding: 0 4px;
305
+ font-family: inherit;
306
+ }
307
+
308
+ /* --- Mobile --- */
309
+ @media (max-width: 768px) {
310
+ .cmd-palette-dialog {
311
+ width: 100%;
312
+ max-height: 80vh;
313
+ border-radius: 0 0 10px 10px;
314
+ }
315
+
316
+ .cmd-palette-item-snippet {
317
+ display: none;
318
+ }
319
+ }
@@ -215,6 +215,22 @@
215
215
  transition: none;
216
216
  }
217
217
 
218
+ /* Pending permission shake */
219
+ .icon-strip-item.has-pending-perm,
220
+ .icon-strip-wt-item.has-pending-perm {
221
+ animation: permShake 2s ease-in-out infinite;
222
+ }
223
+ @keyframes permShake {
224
+ 0%, 8% { transform: translateX(0); }
225
+ 1% { transform: translateX(-2px); }
226
+ 2% { transform: translateX(2px); }
227
+ 3% { transform: translateX(-2px); }
228
+ 4% { transform: translateX(2px); }
229
+ 5% { transform: translateX(-1px); }
230
+ 6% { transform: translateX(1px); }
231
+ 7% { transform: translateX(0); }
232
+ }
233
+
218
234
  /* --- Add project button --- */
219
235
  .icon-strip-add {
220
236
  position: relative;
@@ -771,12 +787,12 @@
771
787
  /* DM mode: keep same position (user-island gone but layout stays) */
772
788
 
773
789
  /* --- My avatar at bottom of icon strip (always present, behind user-island) --- */
774
- /* Positioned to align exactly with user-island avatar (left:8px + padding:6px + 18px center = 32px from left edge of layout-body) */
775
- /* icon-strip is 72px wide, so 32px from left = left offset within icon-strip */
790
+ /* Positioned to align with icon-strip center (72px / 2 = 36px) */
791
+ /* Matches user-island avatar center: left:8px + padding:10px + 18px = 36px */
776
792
  .icon-strip-me {
777
793
  position: absolute;
778
794
  bottom: 19px; /* vertically center with user-island (bottom:8px + height:58px/2 - 16px) */
779
- left: 32px;
795
+ left: 36px;
780
796
  transform: translateX(-50%);
781
797
  display: flex;
782
798
  align-items: center;
@@ -598,7 +598,8 @@
598
598
  #hamburger-btn,
599
599
  #sidebar-toggle-btn,
600
600
  #sidebar-expand-btn,
601
- #layout.sidebar-collapsed #sidebar-expand-btn {
601
+ #layout.sidebar-collapsed #sidebar-expand-btn,
602
+ .sidebar-collapse-btn {
602
603
  display: none;
603
604
  }
604
605
 
@@ -425,6 +425,32 @@
425
425
  margin-bottom: 4px;
426
426
  }
427
427
  .ralph-field-label .ralph-field-req { color: var(--accent); }
428
+ .ralph-field-label .ralph-field-opt { color: var(--text-secondary); font-weight: 400; }
429
+ .ralph-mode-tabs {
430
+ display: flex;
431
+ gap: 0;
432
+ margin-bottom: 12px;
433
+ border-bottom: 1px solid var(--border, #333);
434
+ }
435
+ .ralph-mode-tab {
436
+ flex: 1;
437
+ padding: 8px 0;
438
+ font-size: 13px;
439
+ font-weight: 500;
440
+ color: var(--text-secondary);
441
+ background: none;
442
+ border: none;
443
+ border-bottom: 2px solid transparent;
444
+ cursor: pointer;
445
+ transition: color 0.15s, border-color 0.15s;
446
+ }
447
+ .ralph-mode-tab:hover { color: var(--text); }
448
+ .ralph-mode-tab.active {
449
+ color: var(--accent, #6c5ce7);
450
+ border-bottom-color: var(--accent, #6c5ce7);
451
+ }
452
+ .ralph-mode-panel { display: none; }
453
+ .ralph-mode-panel.active { display: block; }
428
454
  .ralph-field-hint {
429
455
  margin: 3px 0 14px;
430
456
  font-size: 11px;
@@ -138,6 +138,79 @@
138
138
  line-height: 1.4;
139
139
  }
140
140
 
141
+ /* Step 0: Intro landing */
142
+ .mate-intro {
143
+ display: flex;
144
+ flex-direction: column;
145
+ align-items: center;
146
+ text-align: center;
147
+ padding: 8px 12px 16px;
148
+ gap: 12px;
149
+ }
150
+ .mate-intro-icon {
151
+ font-size: 48px;
152
+ line-height: 1;
153
+ }
154
+ .mate-intro-title {
155
+ font-size: 22px;
156
+ font-weight: 700;
157
+ color: var(--text, #fff);
158
+ margin: 0;
159
+ }
160
+ .mate-intro-tagline {
161
+ font-size: 15px;
162
+ color: var(--accent, #6c5ce7);
163
+ font-weight: 600;
164
+ margin: 0;
165
+ line-height: 1.4;
166
+ }
167
+ .mate-intro-body {
168
+ font-size: 14px;
169
+ color: var(--text-secondary, #aaa);
170
+ line-height: 1.6;
171
+ margin: 0;
172
+ max-width: 400px;
173
+ }
174
+ .mate-intro-privacy {
175
+ font-size: 13px;
176
+ color: var(--text-muted, #9ea8c7);
177
+ line-height: 1.5;
178
+ margin: 0;
179
+ max-width: 400px;
180
+ padding: 10px 16px;
181
+ background: rgba(108, 92, 231, 0.08);
182
+ border-radius: 8px;
183
+ }
184
+ .mate-intro-steps {
185
+ display: flex;
186
+ flex-direction: column;
187
+ gap: 8px;
188
+ width: 100%;
189
+ max-width: 340px;
190
+ margin-top: 4px;
191
+ }
192
+ .mate-intro-step {
193
+ display: flex;
194
+ align-items: center;
195
+ gap: 10px;
196
+ font-size: 13px;
197
+ color: var(--text-secondary, #aaa);
198
+ text-align: left;
199
+ }
200
+ .mate-intro-step-num {
201
+ width: 22px;
202
+ height: 22px;
203
+ border-radius: 50%;
204
+ background: var(--accent, #6c5ce7);
205
+ color: #fff;
206
+ font-size: 12px;
207
+ font-weight: 700;
208
+ display: flex;
209
+ align-items: center;
210
+ justify-content: center;
211
+ flex-shrink: 0;
212
+ }
213
+
141
214
  /* Step 1: Relationship cards */
142
215
  .mate-card-grid {
143
216
  display: grid;
@@ -335,6 +335,9 @@ button.top-bar-pill.pill-accent:hover { background: color-mix(in srgb, var(--acc
335
335
  .skill-install-item .skill-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
336
336
  .skill-install-item .skill-name { font-weight: 500; font-size: 14px; color: var(--text); }
337
337
  .skill-install-item .skill-scope { font-size: 12px; color: var(--text-muted); }
338
+ .skill-badge { font-size: 11px; padding: 1px 7px; border-radius: 6px; font-weight: 500; white-space: nowrap; }
339
+ .skill-badge-new { background: rgba(46,204,113,0.15); color: var(--success, #2ecc71); }
340
+ .skill-badge-update { background: rgba(243,156,18,0.15); color: var(--warning, #f39c12); }
338
341
  .skill-install-item .skill-status { margin-left: auto; flex-shrink: 0; }
339
342
  .skill-status-ok { color: var(--success, #2ecc71); font-size: 16px; font-weight: 600; }
340
343
  #skill-install-status { font-size: 13px; margin-bottom: 14px; display: flex; align-items: center; gap: 8px; color: var(--text-secondary); }
@@ -361,16 +361,40 @@
361
361
  transition: border-color 0.12s;
362
362
  }
363
363
  .scheduler-add-form textarea:focus { border-color: var(--accent); }
364
- .sched-create-iter-label {
364
+ .sched-create-run-mode {
365
365
  display: flex;
366
366
  align-items: center;
367
- gap: 4px;
367
+ gap: 6px;
368
+ flex-wrap: wrap;
368
369
  }
369
- .sched-create-iter-icon {
370
- width: 14px;
371
- height: 14px;
370
+ .sched-run-mode-btn {
371
+ display: inline-flex;
372
+ align-items: center;
373
+ gap: 4px;
374
+ padding: 4px 10px;
375
+ font-size: 11px;
376
+ font-weight: 500;
377
+ border-radius: 6px;
378
+ border: 1px solid var(--border);
379
+ background: transparent;
372
380
  color: var(--text-secondary);
381
+ cursor: pointer;
382
+ transition: all 0.15s;
383
+ white-space: nowrap;
384
+ }
385
+ .sched-run-mode-btn .lucide { width: 12px; height: 12px; }
386
+ .sched-run-mode-btn:hover { border-color: var(--accent); color: var(--text); }
387
+ .sched-run-mode-btn.active {
388
+ background: color-mix(in srgb, var(--accent) 15%, transparent);
389
+ border-color: var(--accent);
390
+ color: var(--accent);
391
+ }
392
+ .sched-create-iter-label {
393
+ display: flex;
394
+ align-items: center;
395
+ gap: 4px;
373
396
  }
397
+ .sched-create-iter-label.hidden { display: none; }
374
398
  .sched-create-iter-input {
375
399
  width: 44px;
376
400
  padding: 4px 6px;
@@ -19,8 +19,8 @@
19
19
  }
20
20
 
21
21
  #layout.sidebar-collapsed #sidebar-column {
22
- width: 0;
23
- min-width: 0;
22
+ width: 0 !important;
23
+ min-width: 0 !important;
24
24
  overflow: hidden;
25
25
  }
26
26
 
@@ -218,9 +218,30 @@
218
218
  height: 12px;
219
219
  }
220
220
 
221
- /* sidebar-toggle-btn hidden — collapse handled by icon strip / title bar */
222
- #sidebar-toggle-btn {
223
- display: none;
221
+ /* Sidebar collapse button in title bar */
222
+ .sidebar-collapse-btn {
223
+ display: flex;
224
+ align-items: center;
225
+ justify-content: center;
226
+ flex-shrink: 0;
227
+ width: 28px;
228
+ height: 28px;
229
+ background: none;
230
+ border: none;
231
+ border-radius: 6px;
232
+ cursor: pointer;
233
+ color: var(--text-muted);
234
+ transition: background 0.15s, color 0.15s;
235
+ }
236
+
237
+ .sidebar-collapse-btn:hover {
238
+ background: rgba(var(--overlay-rgb), 0.08);
239
+ color: var(--text);
240
+ }
241
+
242
+ .sidebar-collapse-btn .lucide {
243
+ width: 16px;
244
+ height: 16px;
224
245
  }
225
246
 
226
247
  /* --- Sidebar section headers --- */
@@ -893,7 +914,7 @@
893
914
  align-items: center;
894
915
  flex: 1;
895
916
  min-width: 0;
896
- padding: 6px;
917
+ padding: 6px 6px 6px 10px;
897
918
  border-radius: 8px;
898
919
  cursor: pointer;
899
920
  transition: background 0.15s;
@@ -1037,6 +1058,7 @@
1037
1058
  }
1038
1059
 
1039
1060
 
1061
+
1040
1062
  .footer-version {
1041
1063
  font-size: 11px;
1042
1064
  color: var(--text-dimmer);
@@ -80,20 +80,20 @@
80
80
  }
81
81
 
82
82
  /* --- Note color themes (light) --- */
83
- .sticky-note[data-color="yellow"] { background: #FFF9C4; border: 1px solid #EFD74E; }
84
- .sticky-note[data-color="blue"] { background: #BBDEFB; border: 1px solid #64B5F6; }
85
- .sticky-note[data-color="green"] { background: #C8E6C9; border: 1px solid #66BB6A; }
86
- .sticky-note[data-color="pink"] { background: #F8BBD0; border: 1px solid #F06292; }
87
- .sticky-note[data-color="orange"] { background: #FFE0B2; border: 1px solid #FFA726; }
88
- .sticky-note[data-color="purple"] { background: #E1BEE7; border: 1px solid #AB47BC; }
83
+ .sticky-note[data-color="yellow"] { background: color-mix(in srgb, #FFF9C4 calc(var(--note-opacity, 1) * 100%), transparent); border: 1px solid color-mix(in srgb, #EFD74E calc(var(--note-opacity, 1) * 100%), transparent); }
84
+ .sticky-note[data-color="blue"] { background: color-mix(in srgb, #BBDEFB calc(var(--note-opacity, 1) * 100%), transparent); border: 1px solid color-mix(in srgb, #64B5F6 calc(var(--note-opacity, 1) * 100%), transparent); }
85
+ .sticky-note[data-color="green"] { background: color-mix(in srgb, #C8E6C9 calc(var(--note-opacity, 1) * 100%), transparent); border: 1px solid color-mix(in srgb, #66BB6A calc(var(--note-opacity, 1) * 100%), transparent); }
86
+ .sticky-note[data-color="pink"] { background: color-mix(in srgb, #F8BBD0 calc(var(--note-opacity, 1) * 100%), transparent); border: 1px solid color-mix(in srgb, #F06292 calc(var(--note-opacity, 1) * 100%), transparent); }
87
+ .sticky-note[data-color="orange"] { background: color-mix(in srgb, #FFE0B2 calc(var(--note-opacity, 1) * 100%), transparent); border: 1px solid color-mix(in srgb, #FFA726 calc(var(--note-opacity, 1) * 100%), transparent); }
88
+ .sticky-note[data-color="purple"] { background: color-mix(in srgb, #E1BEE7 calc(var(--note-opacity, 1) * 100%), transparent); border: 1px solid color-mix(in srgb, #AB47BC calc(var(--note-opacity, 1) * 100%), transparent); }
89
89
 
90
90
  /* --- Note color themes (dark) --- */
91
- .dark-theme .sticky-note[data-color="yellow"] { background: #3D3A1E; border-color: #8B7E2A; }
92
- .dark-theme .sticky-note[data-color="blue"] { background: #1A2A3D; border-color: #3A7BD5; }
93
- .dark-theme .sticky-note[data-color="green"] { background: #1A2D1A; border-color: #4A8F4A; }
94
- .dark-theme .sticky-note[data-color="pink"] { background: #3D1A2A; border-color: #C44A72; }
95
- .dark-theme .sticky-note[data-color="orange"] { background: #3D2A1A; border-color: #C47A3A; }
96
- .dark-theme .sticky-note[data-color="purple"] { background: #2A1A3D; border-color: #8A4AAA; }
91
+ .dark-theme .sticky-note[data-color="yellow"] { background: color-mix(in srgb, #3D3A1E calc(var(--note-opacity, 1) * 100%), transparent); border-color: color-mix(in srgb, #8B7E2A calc(var(--note-opacity, 1) * 100%), transparent); }
92
+ .dark-theme .sticky-note[data-color="blue"] { background: color-mix(in srgb, #1A2A3D calc(var(--note-opacity, 1) * 100%), transparent); border-color: color-mix(in srgb, #3A7BD5 calc(var(--note-opacity, 1) * 100%), transparent); }
93
+ .dark-theme .sticky-note[data-color="green"] { background: color-mix(in srgb, #1A2D1A calc(var(--note-opacity, 1) * 100%), transparent); border-color: color-mix(in srgb, #4A8F4A calc(var(--note-opacity, 1) * 100%), transparent); }
94
+ .dark-theme .sticky-note[data-color="pink"] { background: color-mix(in srgb, #3D1A2A calc(var(--note-opacity, 1) * 100%), transparent); border-color: color-mix(in srgb, #C44A72 calc(var(--note-opacity, 1) * 100%), transparent); }
95
+ .dark-theme .sticky-note[data-color="orange"] { background: color-mix(in srgb, #3D2A1A calc(var(--note-opacity, 1) * 100%), transparent); border-color: color-mix(in srgb, #C47A3A calc(var(--note-opacity, 1) * 100%), transparent); }
96
+ .dark-theme .sticky-note[data-color="purple"] { background: color-mix(in srgb, #2A1A3D calc(var(--note-opacity, 1) * 100%), transparent); border-color: color-mix(in srgb, #8A4AAA calc(var(--note-opacity, 1) * 100%), transparent); }
97
97
 
98
98
  /* --- Header (drag bar) --- */
99
99
  .sticky-note-header {
@@ -104,6 +104,10 @@
104
104
  user-select: none;
105
105
  flex-shrink: 0;
106
106
  }
107
+ /* Apply note opacity to body content, not the whole element */
108
+ .sticky-note .sticky-note-body { opacity: var(--note-opacity, 1); }
109
+ /* On hover, header stays fully visible */
110
+ .sticky-note:hover .sticky-note-header { opacity: 1; }
107
111
 
108
112
  .sticky-note-spacer {
109
113
  flex: 1;
@@ -138,6 +142,51 @@
138
142
  .sticky-note:hover .sticky-note-header button { opacity: 0.5; }
139
143
  .sticky-note .sticky-note-header button:hover { opacity: 0.9; background: rgba(0,0,0,0.06); }
140
144
 
145
+ /* Opacity slider */
146
+ .sticky-note-opacity {
147
+ display: flex;
148
+ align-items: center;
149
+ opacity: 0;
150
+ transition: opacity 0.15s;
151
+ pointer-events: none;
152
+ }
153
+ .sticky-note:hover .sticky-note-opacity {
154
+ opacity: 0.6;
155
+ pointer-events: auto;
156
+ }
157
+ .sticky-note-opacity-slider {
158
+ -webkit-appearance: none;
159
+ appearance: none;
160
+ width: 32px;
161
+ height: 2px;
162
+ background: rgba(0,0,0,0.15);
163
+ border-radius: 1px;
164
+ cursor: pointer;
165
+ margin: 0;
166
+ outline: none;
167
+ }
168
+ .sticky-note-opacity-slider::-webkit-slider-thumb {
169
+ -webkit-appearance: none;
170
+ width: 8px;
171
+ height: 8px;
172
+ border-radius: 50%;
173
+ background: rgba(0,0,0,0.35);
174
+ border: none;
175
+ cursor: pointer;
176
+ }
177
+ .sticky-note-opacity-slider::-moz-range-thumb {
178
+ width: 8px;
179
+ height: 8px;
180
+ border-radius: 50%;
181
+ background: rgba(0,0,0,0.35);
182
+ border: none;
183
+ cursor: pointer;
184
+ }
185
+ .dark-theme .sticky-note-opacity-slider { background: rgba(255,255,255,0.15); }
186
+ .dark-theme .sticky-note-opacity-slider::-webkit-slider-thumb { background: rgba(255,255,255,0.4); }
187
+ .dark-theme .sticky-note-opacity-slider::-moz-range-thumb { background: rgba(255,255,255,0.4); }
188
+ .dark-theme .sticky-note-opacity-slider { accent-color: rgba(255,255,255,0.4); }
189
+
141
190
  .sticky-note-header button .lucide { width: 13px; height: 13px; }
142
191
 
143
192
  /* Text colors per note color (light) */