clay-server 2.7.1 → 2.7.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.
@@ -1,944 +0,0 @@
1
- /* ============================
2
- Scheduler — Split-panel layout
3
- ============================ */
4
-
5
- /* --- Full panel --- */
6
- #scheduler-panel {
7
- position: absolute;
8
- inset: 0;
9
- z-index: 40;
10
- background: var(--bg);
11
- display: flex;
12
- flex-direction: column;
13
- overflow: hidden;
14
- }
15
- #scheduler-panel.hidden { display: none; }
16
-
17
- /* --- Top header bar --- */
18
- .scheduler-top-bar {
19
- display: flex;
20
- align-items: center;
21
- padding: 10px 16px;
22
- flex-shrink: 0;
23
- }
24
- .scheduler-top-title {
25
- font-weight: 700;
26
- font-size: 15px;
27
- color: var(--text);
28
- flex: 1;
29
- }
30
-
31
- /* --- Body row (sidebar + content) --- */
32
- .scheduler-body-row {
33
- flex: 1;
34
- display: flex;
35
- flex-direction: row;
36
- gap: 10px;
37
- padding: 0 10px 10px;
38
- min-height: 0;
39
- overflow: hidden;
40
- }
41
-
42
- /* ============================
43
- Sidebar island (left, 260px)
44
- ============================ */
45
- .scheduler-sidebar {
46
- width: 260px;
47
- flex-shrink: 0;
48
- display: flex;
49
- flex-direction: column;
50
- background: var(--sidebar-bg);
51
- border-radius: 12px;
52
- overflow: hidden;
53
- }
54
- .scheduler-sidebar-header {
55
- display: flex;
56
- align-items: center;
57
- gap: 8px;
58
- padding: 14px 16px;
59
- border-bottom: 1px solid rgba(var(--overlay-rgb), 0.06);
60
- flex-shrink: 0;
61
- }
62
- .scheduler-sidebar-title {
63
- font-weight: 700;
64
- font-size: 15px;
65
- color: var(--text);
66
- flex: 1;
67
- }
68
- .scheduler-sidebar-count {
69
- background: var(--accent);
70
- color: #fff;
71
- font-size: 10px;
72
- font-weight: 700;
73
- padding: 1px 7px;
74
- border-radius: 10px;
75
- min-width: 18px;
76
- text-align: center;
77
- }
78
- .scheduler-sidebar-list {
79
- flex: 1;
80
- overflow-y: auto;
81
- padding: 6px 8px;
82
- }
83
- .scheduler-task-item {
84
- padding: 8px 10px;
85
- border-radius: 8px;
86
- cursor: pointer;
87
- transition: background 0.12s;
88
- margin-bottom: 2px;
89
- border-left: 3px solid transparent;
90
- }
91
- .scheduler-task-item:hover { background: rgba(var(--overlay-rgb), 0.04); }
92
- .scheduler-task-item.selected { background: color-mix(in srgb, var(--accent) 10%, transparent); border-left-color: var(--accent); }
93
- .scheduler-task-name-row {
94
- display: flex;
95
- align-items: center;
96
- gap: 4px;
97
- margin-bottom: 3px;
98
- min-width: 0;
99
- }
100
- .scheduler-task-name {
101
- font-weight: 600;
102
- font-size: 13px;
103
- color: var(--text);
104
- white-space: nowrap;
105
- overflow: hidden;
106
- text-overflow: ellipsis;
107
- min-width: 0;
108
- flex: 1;
109
- }
110
- .scheduler-task-edit-btn {
111
- flex-shrink: 0;
112
- background: none;
113
- border: none;
114
- cursor: pointer;
115
- font-size: 11px;
116
- padding: 0 2px;
117
- opacity: 0;
118
- transition: opacity 0.15s;
119
- color: var(--text-secondary);
120
- }
121
- .scheduler-task-item:hover .scheduler-task-edit-btn { opacity: 0.6; }
122
- .scheduler-task-edit-btn:hover { opacity: 1 !important; }
123
- .scheduler-task-edit-btn.hidden { display: none; }
124
- .scheduler-task-name-input {
125
- font-weight: 600;
126
- font-size: 13px;
127
- color: var(--text);
128
- background: var(--bg);
129
- border: 1px solid var(--accent);
130
- border-radius: 4px;
131
- padding: 1px 4px;
132
- width: 100%;
133
- outline: none;
134
- flex: 1;
135
- min-width: 0;
136
- }
137
- .scheduler-task-row {
138
- display: flex;
139
- align-items: center;
140
- gap: 6px;
141
- }
142
- .scheduler-task-badge {
143
- font-size: 10px;
144
- font-weight: 600;
145
- padding: 1px 6px;
146
- border-radius: 4px;
147
- }
148
- .scheduler-task-badge.scheduled { background: color-mix(in srgb, var(--accent) 15%, transparent); color: var(--accent); }
149
- .scheduler-task-badge.paused { background: rgba(var(--overlay-rgb), 0.06); color: var(--text-muted); }
150
- .scheduler-task-badge.oneoff { background: rgba(var(--overlay-rgb), 0.06); color: var(--text-secondary); }
151
- .scheduler-task-badge.crafting { background: color-mix(in srgb, var(--accent) 15%, transparent); color: var(--accent); animation: sched-pulse 1.5s ease-in-out infinite; }
152
- .scheduler-task-dot {
153
- width: 7px;
154
- height: 7px;
155
- border-radius: 50%;
156
- }
157
- .scheduler-task-dot.pass { background: var(--success, #27ae60); }
158
- .scheduler-task-dot.fail { background: var(--error, #e74c3c); }
159
-
160
- /* --- Inline add task row (top of sidebar) --- */
161
- .scheduler-add-row {
162
- padding: 8px 10px;
163
- border-bottom: 1px solid rgba(var(--overlay-rgb), 0.06);
164
- flex-shrink: 0;
165
- }
166
- .scheduler-add-trigger {
167
- display: flex;
168
- align-items: center;
169
- gap: 6px;
170
- padding: 7px 8px;
171
- border-radius: 8px;
172
- color: var(--text-muted);
173
- font-size: 13px;
174
- cursor: pointer;
175
- transition: background 0.12s, color 0.12s;
176
- }
177
- .scheduler-add-trigger .lucide { width: 16px; height: 16px; }
178
- .scheduler-add-trigger:hover { background: rgba(var(--overlay-rgb), 0.05); color: var(--text); }
179
- .scheduler-add-trigger.hidden { display: none; }
180
- .scheduler-add-form { display: flex; flex-direction: column; gap: 6px; }
181
- .scheduler-add-form.hidden { display: none; }
182
- .scheduler-add-form textarea {
183
- width: 100%;
184
- padding: 8px 10px;
185
- border: 1px solid var(--border);
186
- border-radius: 8px;
187
- background: var(--bg);
188
- color: var(--text);
189
- font-family: inherit;
190
- font-size: 13px;
191
- resize: none;
192
- outline: none;
193
- transition: border-color 0.12s;
194
- }
195
- .scheduler-add-form textarea:focus { border-color: var(--accent); }
196
- .scheduler-add-actions {
197
- display: flex;
198
- gap: 6px;
199
- justify-content: flex-end;
200
- }
201
- .scheduler-add-submit {
202
- padding: 4px 14px;
203
- border-radius: 6px;
204
- border: none;
205
- background: var(--accent);
206
- color: #fff;
207
- font-size: 12px;
208
- font-weight: 600;
209
- font-family: inherit;
210
- cursor: pointer;
211
- transition: opacity 0.12s;
212
- }
213
- .scheduler-add-submit:hover { opacity: 0.85; }
214
- .scheduler-add-cancel {
215
- padding: 4px 10px;
216
- border-radius: 6px;
217
- border: 1px solid var(--border);
218
- background: none;
219
- color: var(--text-secondary);
220
- font-size: 12px;
221
- font-weight: 600;
222
- font-family: inherit;
223
- cursor: pointer;
224
- }
225
- .scheduler-add-cancel:hover { background: rgba(var(--overlay-rgb), 0.04); }
226
-
227
- /* ============================
228
- Content area (right, flex: 1)
229
- ============================ */
230
- .scheduler-content {
231
- flex: 1;
232
- display: flex;
233
- flex-direction: column;
234
- min-width: 0;
235
- position: relative;
236
- overflow: hidden;
237
- background: var(--bg);
238
- border-radius: 12px;
239
- border: 1px solid var(--border-subtle, var(--border));
240
- }
241
- .scheduler-content-calendar,
242
- .scheduler-content-detail,
243
- .scheduler-content-crafting {
244
- flex: 1;
245
- display: flex;
246
- flex-direction: column;
247
- min-height: 0;
248
- }
249
- .scheduler-content-calendar.hidden,
250
- .scheduler-content-detail.hidden,
251
- .scheduler-content-crafting.hidden { display: none; }
252
-
253
- /* ============================
254
- Calendar sub-header (inside content-calendar)
255
- ============================ */
256
- .scheduler-header {
257
- display: flex;
258
- align-items: center;
259
- gap: 8px;
260
- padding: 12px 24px;
261
- border-bottom: 1px solid rgba(var(--overlay-rgb), 0.06);
262
- flex-shrink: 0;
263
- }
264
-
265
- .scheduler-nav {
266
- display: flex;
267
- align-items: center;
268
- gap: 4px;
269
- }
270
-
271
- .scheduler-nav-btn {
272
- background: none;
273
- border: none;
274
- color: var(--text-secondary);
275
- cursor: pointer;
276
- padding: 4px 8px;
277
- border-radius: 6px;
278
- font-size: 16px;
279
- line-height: 1;
280
- display: flex;
281
- align-items: center;
282
- }
283
-
284
- .scheduler-nav-btn:hover {
285
- background: var(--hover);
286
- color: var(--text);
287
- }
288
-
289
- .scheduler-month-label {
290
- font-weight: 700;
291
- font-size: 15px;
292
- color: var(--text);
293
- min-width: 140px;
294
- text-align: center;
295
- user-select: none;
296
- }
297
-
298
- .scheduler-today-btn {
299
- background: none;
300
- border: 1px solid var(--border);
301
- color: var(--text-secondary);
302
- cursor: pointer;
303
- padding: 3px 10px;
304
- border-radius: 6px;
305
- font-size: 12px;
306
- font-weight: 600;
307
- }
308
-
309
- .scheduler-today-btn:hover {
310
- background: var(--hover);
311
- color: var(--text);
312
- }
313
-
314
- .scheduler-view-toggle {
315
- display: flex;
316
- margin-left: auto;
317
- border: 1px solid var(--border);
318
- border-radius: 6px;
319
- overflow: hidden;
320
- }
321
-
322
- .scheduler-view-btn {
323
- background: none;
324
- border: none;
325
- color: var(--text-secondary);
326
- cursor: pointer;
327
- padding: 4px 12px;
328
- font-size: 12px;
329
- font-weight: 600;
330
- }
331
-
332
- .scheduler-view-btn.active {
333
- background: var(--accent);
334
- color: #fff;
335
- }
336
-
337
- .scheduler-view-btn:not(.active):hover {
338
- background: var(--hover);
339
- }
340
-
341
- /* --- Close button (content area headers) --- */
342
- .scheduler-close-btn {
343
- display: flex;
344
- align-items: center;
345
- justify-content: center;
346
- width: 30px;
347
- height: 30px;
348
- border: none;
349
- border-radius: 6px;
350
- background: none;
351
- color: var(--text-muted);
352
- cursor: pointer;
353
- margin-left: auto;
354
- transition: background 0.12s, color 0.12s;
355
- flex-shrink: 0;
356
- }
357
- .scheduler-close-btn .lucide { width: 16px; height: 16px; }
358
- .scheduler-close-btn:hover { background: rgba(var(--overlay-rgb), 0.08); color: var(--text); }
359
-
360
- /* ============================
361
- Calendar grid (month view)
362
- ============================ */
363
- .scheduler-body {
364
- flex: 1;
365
- min-height: 0;
366
- overflow-y: auto;
367
- padding: 0;
368
- display: flex;
369
- flex-direction: column;
370
- }
371
-
372
- .scheduler-weekdays {
373
- display: grid;
374
- grid-template-columns: 42px repeat(7, 1fr);
375
- border-bottom: 1px solid var(--border-subtle, var(--border));
376
- position: sticky;
377
- top: 0;
378
- z-index: 2;
379
- flex-shrink: 0;
380
- }
381
-
382
- .scheduler-week-num-hdr {
383
- /* empty top-left corner */
384
- }
385
-
386
- .scheduler-weekday {
387
- text-align: center;
388
- padding: 6px 0;
389
- font-size: 11px;
390
- font-weight: 700;
391
- color: var(--text-muted);
392
- text-transform: uppercase;
393
- letter-spacing: 0.05em;
394
- }
395
- .scheduler-weekday.weekend { color: var(--text-muted); opacity: 0.6; }
396
-
397
- .scheduler-grid {
398
- display: grid;
399
- grid-template-columns: 42px repeat(7, 1fr);
400
- flex: 1;
401
- }
402
-
403
- .scheduler-week-num {
404
- display: flex;
405
- align-items: flex-start;
406
- justify-content: center;
407
- padding-top: 6px;
408
- font-size: 10px;
409
- font-weight: 600;
410
- color: var(--text-muted);
411
- opacity: 0.5;
412
- border-bottom: 1px solid var(--border-subtle, var(--border));
413
- }
414
-
415
- .scheduler-cell {
416
- border-right: 1px solid var(--border-subtle, var(--border));
417
- border-bottom: 1px solid var(--border-subtle, var(--border));
418
- padding: 4px;
419
- cursor: default;
420
- position: relative;
421
- }
422
-
423
- /* Last column in each row (Sat = 8th column) — no right border */
424
- .scheduler-cell:nth-child(8n) {
425
- border-right: none;
426
- }
427
-
428
- .scheduler-cell.weekend {
429
- background: rgba(var(--overlay-rgb), 0.025);
430
- }
431
-
432
- .scheduler-cell.other-month {
433
- opacity: 0.35;
434
- }
435
-
436
- .scheduler-cell.today {
437
- background: color-mix(in srgb, var(--accent) 8%, transparent);
438
- }
439
-
440
- .scheduler-day-num {
441
- font-size: 12px;
442
- font-weight: 600;
443
- color: var(--text-secondary);
444
- margin-bottom: 2px;
445
- padding: 0 2px;
446
- }
447
-
448
- .scheduler-cell.today .scheduler-day-num {
449
- color: var(--accent);
450
- font-weight: 800;
451
- }
452
-
453
- /* ============================
454
- Events on cells
455
- ============================ */
456
- .scheduler-event {
457
- display: flex;
458
- align-items: center;
459
- gap: 4px;
460
- padding: 2px 6px;
461
- margin-bottom: 2px;
462
- border-radius: 4px;
463
- font-size: 11px;
464
- font-weight: 600;
465
- cursor: pointer;
466
- white-space: nowrap;
467
- overflow: hidden;
468
- text-overflow: ellipsis;
469
- line-height: 1.4;
470
- transition: filter 0.12s;
471
- }
472
-
473
- .scheduler-event:hover {
474
- filter: brightness(1.15);
475
- }
476
-
477
- .scheduler-event.enabled {
478
- background: var(--accent);
479
- color: #fff;
480
- }
481
-
482
- .scheduler-event.disabled {
483
- background: var(--bg-alt);
484
- color: var(--text-muted);
485
- border: 1px solid var(--border);
486
- }
487
-
488
- .scheduler-event.running {
489
- background: var(--accent);
490
- color: #fff;
491
- animation: sched-pulse 1.5s ease-in-out infinite;
492
- }
493
-
494
- @keyframes sched-pulse {
495
- 0%, 100% { opacity: 1; }
496
- 50% { opacity: 0.7; }
497
- }
498
-
499
- .scheduler-event-time {
500
- font-weight: 400;
501
- opacity: 0.85;
502
- font-size: 10px;
503
- }
504
-
505
- /* ============================
506
- Week view
507
- ============================ */
508
- .scheduler-week-view {
509
- display: grid;
510
- grid-template-columns: 48px repeat(7, 1fr);
511
- overflow-y: auto;
512
- flex: 1;
513
- min-height: 0;
514
- }
515
-
516
- .scheduler-week-header {
517
- display: grid;
518
- grid-template-columns: 48px repeat(7, 1fr);
519
- border-bottom: 1px solid var(--border);
520
- background: var(--bg-alt);
521
- position: sticky;
522
- top: 0;
523
- z-index: 2;
524
- }
525
-
526
- .scheduler-week-header-cell {
527
- text-align: center;
528
- padding: 8px 0;
529
- font-size: 12px;
530
- }
531
-
532
- .scheduler-week-header-cell .wday {
533
- font-weight: 700;
534
- color: var(--text-muted);
535
- text-transform: uppercase;
536
- font-size: 10px;
537
- }
538
-
539
- .scheduler-week-header-cell .wdate {
540
- font-weight: 700;
541
- font-size: 20px;
542
- color: var(--text-secondary);
543
- }
544
-
545
- .scheduler-week-header-cell.today .wdate {
546
- color: #fff;
547
- background: var(--accent);
548
- border-radius: 50%;
549
- width: 32px;
550
- height: 32px;
551
- display: inline-flex;
552
- align-items: center;
553
- justify-content: center;
554
- }
555
-
556
- .scheduler-week-time-col {
557
- border-right: 1px solid var(--border);
558
- }
559
-
560
- .scheduler-week-time-label {
561
- height: 48px;
562
- display: flex;
563
- align-items: flex-start;
564
- justify-content: flex-end;
565
- padding: 0 6px;
566
- font-size: 10px;
567
- color: var(--text-muted);
568
- font-weight: 600;
569
- transform: translateY(-6px);
570
- }
571
-
572
- .scheduler-week-day-col {
573
- border-right: 1px solid var(--border-subtle, var(--border));
574
- position: relative;
575
- }
576
-
577
- .scheduler-week-day-col:last-child {
578
- border-right: none;
579
- }
580
-
581
- .scheduler-week-slot {
582
- height: 48px;
583
- border-bottom: 1px solid var(--border-subtle, var(--border));
584
- }
585
-
586
- .scheduler-week-event {
587
- position: absolute;
588
- left: 2px;
589
- right: 2px;
590
- padding: 3px 6px;
591
- border-radius: 4px;
592
- font-size: 11px;
593
- font-weight: 600;
594
- cursor: pointer;
595
- overflow: hidden;
596
- text-overflow: ellipsis;
597
- white-space: nowrap;
598
- z-index: 1;
599
- }
600
-
601
- .scheduler-week-event.enabled {
602
- background: var(--accent);
603
- color: #fff;
604
- }
605
-
606
- .scheduler-week-event.disabled {
607
- background: var(--bg-alt);
608
- color: var(--text-muted);
609
- border: 1px solid var(--border);
610
- }
611
-
612
- /* ============================
613
- Detail view (inside content-detail)
614
- ============================ */
615
- .scheduler-detail-header {
616
- display: flex;
617
- align-items: center;
618
- gap: 12px;
619
- padding: 16px 24px;
620
- border-bottom: 1px solid rgba(var(--overlay-rgb), 0.06);
621
- flex-shrink: 0;
622
- }
623
- .scheduler-detail-name {
624
- font-weight: 700;
625
- font-size: 16px;
626
- color: var(--text);
627
- flex: 1;
628
- }
629
- .scheduler-detail-actions {
630
- display: flex;
631
- gap: 6px;
632
- }
633
- .scheduler-detail-btn {
634
- background: var(--bg-alt);
635
- border: 1px solid var(--border);
636
- color: var(--text-secondary);
637
- cursor: pointer;
638
- padding: 5px 12px;
639
- border-radius: 6px;
640
- font-size: 12px;
641
- font-weight: 600;
642
- font-family: inherit;
643
- transition: background 0.12s, color 0.12s;
644
- }
645
- .scheduler-detail-btn:hover { background: var(--hover, rgba(var(--overlay-rgb), 0.06)); color: var(--text); }
646
- .scheduler-detail-btn.danger:hover { background: color-mix(in srgb, var(--error) 12%, transparent); color: var(--error); border-color: var(--error); }
647
- .scheduler-detail-btn.primary { background: var(--accent); color: #fff; border-color: var(--accent); }
648
- .scheduler-detail-btn.primary:hover { opacity: 0.9; }
649
- .scheduler-detail-btn .lucide { width: 13px; height: 13px; }
650
- .scheduler-detail-icon-btn {
651
- display: flex;
652
- align-items: center;
653
- justify-content: center;
654
- width: 30px;
655
- height: 30px;
656
- border: 1px solid var(--border);
657
- border-radius: 6px;
658
- background: none;
659
- color: var(--text-muted);
660
- cursor: pointer;
661
- transition: background 0.12s, color 0.12s, border-color 0.12s;
662
- }
663
- .scheduler-detail-icon-btn .lucide { width: 14px; height: 14px; }
664
- .scheduler-detail-icon-btn:hover { background: color-mix(in srgb, var(--error) 12%, transparent); color: var(--error); border-color: var(--error); }
665
-
666
- /* --- Session bar (between header and tabs) --- */
667
- .scheduler-detail-session-bar {
668
- display: flex;
669
- padding: 8px 24px;
670
- border-bottom: 1px solid rgba(var(--overlay-rgb), 0.06);
671
- flex-shrink: 0;
672
- }
673
- .scheduler-session-btn {
674
- display: flex;
675
- align-items: center;
676
- gap: 6px;
677
- padding: 6px 14px;
678
- border-radius: 8px;
679
- border: 1px solid color-mix(in srgb, var(--accent) 30%, transparent);
680
- background: color-mix(in srgb, var(--accent) 8%, transparent);
681
- color: var(--accent);
682
- font-size: 12px;
683
- font-weight: 600;
684
- font-family: inherit;
685
- cursor: pointer;
686
- transition: background 0.12s, border-color 0.12s;
687
- }
688
- .scheduler-session-btn .lucide { width: 14px; height: 14px; }
689
- .scheduler-session-btn:hover {
690
- background: color-mix(in srgb, var(--accent) 15%, transparent);
691
- border-color: color-mix(in srgb, var(--accent) 50%, transparent);
692
- }
693
-
694
- .scheduler-detail-tabs {
695
- display: flex;
696
- border-bottom: 1px solid rgba(var(--overlay-rgb), 0.06);
697
- padding: 0 24px;
698
- flex-shrink: 0;
699
- }
700
- .scheduler-detail-tab {
701
- padding: 10px 16px;
702
- background: none;
703
- border: none;
704
- border-bottom: 2px solid transparent;
705
- color: var(--text-secondary);
706
- cursor: pointer;
707
- font-size: 13px;
708
- font-weight: 600;
709
- font-family: inherit;
710
- transition: color 0.12s, border-color 0.12s;
711
- }
712
- .scheduler-detail-tab:hover { color: var(--text); }
713
- .scheduler-detail-tab.active { color: var(--text); border-bottom-color: var(--accent); }
714
-
715
- .scheduler-detail-body {
716
- flex: 1;
717
- overflow-y: auto;
718
- padding: 20px 24px;
719
- }
720
- .scheduler-detail-loading {
721
- padding: 32px;
722
- text-align: center;
723
- color: var(--text-muted);
724
- font-size: 13px;
725
- }
726
- .scheduler-detail-body .md-content {
727
- font-size: 13px;
728
- line-height: 1.6;
729
- color: var(--text);
730
- }
731
- .scheduler-detail-meta {
732
- display: grid;
733
- grid-template-columns: auto 1fr;
734
- gap: 8px 16px;
735
- font-size: 13px;
736
- padding: 16px 0;
737
- }
738
- .scheduler-detail-meta-label {
739
- color: var(--text-muted);
740
- font-weight: 600;
741
- font-size: 11px;
742
- text-transform: uppercase;
743
- letter-spacing: 0.3px;
744
- }
745
- .scheduler-detail-meta-value { color: var(--text); }
746
-
747
- /* ============================
748
- Crafting container (reparented chat)
749
- ============================ */
750
- .scheduler-content-crafting {
751
- position: relative;
752
- }
753
- .scheduler-crafting-header {
754
- display: flex;
755
- align-items: center;
756
- gap: 8px;
757
- padding: 10px 16px;
758
- border-bottom: 1px solid rgba(var(--overlay-rgb), 0.06);
759
- flex-shrink: 0;
760
- }
761
- .scheduler-crafting-label {
762
- display: flex;
763
- align-items: center;
764
- gap: 6px;
765
- font-weight: 600;
766
- font-size: 13px;
767
- color: var(--text);
768
- flex: 1;
769
- }
770
- .scheduler-crafting-label .lucide { width: 15px; height: 15px; color: var(--accent); }
771
- .scheduler-crafting-back {
772
- display: flex;
773
- align-items: center;
774
- gap: 4px;
775
- background: none;
776
- border: none;
777
- color: var(--text-muted);
778
- cursor: pointer;
779
- padding: 4px 8px;
780
- border-radius: 6px;
781
- font-size: 12px;
782
- font-weight: 600;
783
- font-family: inherit;
784
- transition: background 0.12s, color 0.12s;
785
- }
786
- .scheduler-crafting-back .lucide { width: 14px; height: 14px; }
787
- .scheduler-crafting-back:hover { background: rgba(var(--overlay-rgb), 0.08); color: var(--text); }
788
- .scheduler-content-crafting #messages {
789
- flex: 1;
790
- min-height: 0;
791
- }
792
- .scheduler-content-crafting #input-area {
793
- flex-shrink: 0;
794
- }
795
-
796
- /* ============================
797
- Popover
798
- ============================ */
799
- .schedule-popover {
800
- position: fixed;
801
- z-index: 400;
802
- background: var(--bg);
803
- border: 1px solid var(--border);
804
- border-radius: 10px;
805
- box-shadow: 0 4px 16px rgba(0,0,0,0.25);
806
- padding: 12px 14px;
807
- min-width: 220px;
808
- max-width: 300px;
809
- }
810
-
811
- .schedule-popover-name {
812
- font-weight: 700;
813
- font-size: 14px;
814
- color: var(--text);
815
- margin-bottom: 6px;
816
- }
817
-
818
- .schedule-popover-meta {
819
- font-size: 12px;
820
- color: var(--text-secondary);
821
- margin-bottom: 4px;
822
- }
823
-
824
- .schedule-popover-meta strong {
825
- color: var(--text);
826
- }
827
-
828
- .schedule-popover-result {
829
- font-size: 11px;
830
- padding: 3px 8px;
831
- border-radius: 4px;
832
- display: inline-block;
833
- margin-bottom: 8px;
834
- font-weight: 600;
835
- }
836
-
837
- .schedule-popover-result.pass {
838
- background: color-mix(in srgb, var(--success) 15%, transparent);
839
- color: var(--success);
840
- }
841
-
842
- .schedule-popover-result.fail {
843
- background: color-mix(in srgb, var(--error) 15%, transparent);
844
- color: var(--error);
845
- }
846
-
847
- .schedule-popover-actions {
848
- display: flex;
849
- gap: 6px;
850
- margin-top: 8px;
851
- padding-top: 8px;
852
- border-top: 1px solid var(--border);
853
- }
854
-
855
- .schedule-popover-btn {
856
- background: var(--bg-alt);
857
- border: 1px solid var(--border);
858
- color: var(--text-secondary);
859
- cursor: pointer;
860
- padding: 4px 10px;
861
- border-radius: 6px;
862
- font-size: 11px;
863
- font-weight: 600;
864
- }
865
-
866
- .schedule-popover-btn:hover {
867
- background: var(--hover);
868
- color: var(--text);
869
- }
870
-
871
- .schedule-popover-btn.danger:hover {
872
- background: color-mix(in srgb, var(--error) 15%, transparent);
873
- color: var(--error);
874
- border-color: var(--error);
875
- }
876
-
877
- /* ============================
878
- Empty state
879
- ============================ */
880
- .scheduler-empty {
881
- display: flex;
882
- flex-direction: column;
883
- align-items: center;
884
- justify-content: center;
885
- padding: 48px 24px;
886
- color: var(--text-muted);
887
- text-align: center;
888
- }
889
-
890
- .scheduler-empty-icon {
891
- font-size: 40px;
892
- margin-bottom: 12px;
893
- opacity: 0.5;
894
- }
895
-
896
- .scheduler-empty-text {
897
- font-size: 14px;
898
- font-weight: 600;
899
- margin-bottom: 4px;
900
- }
901
-
902
- .scheduler-empty-hint {
903
- font-size: 12px;
904
- opacity: 0.7;
905
- }
906
-
907
- /* ============================
908
- Responsive
909
- ============================ */
910
- @media (max-width: 768px) {
911
- .scheduler-sidebar { width: 200px; }
912
- }
913
-
914
- @media (max-width: 600px) {
915
- .scheduler-body-row { flex-direction: column; padding: 0 6px 6px; gap: 6px; }
916
- .scheduler-sidebar {
917
- width: 100%;
918
- max-height: 35vh;
919
- }
920
-
921
- .scheduler-header {
922
- flex-wrap: wrap;
923
- gap: 6px;
924
- }
925
-
926
- .scheduler-month-label {
927
- min-width: 100px;
928
- font-size: 14px;
929
- }
930
-
931
- .scheduler-cell {
932
- min-height: 60px;
933
- padding: 2px;
934
- }
935
-
936
- .scheduler-day-num {
937
- font-size: 10px;
938
- }
939
-
940
- .scheduler-event {
941
- font-size: 10px;
942
- padding: 1px 4px;
943
- }
944
- }