clay-server 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +281 -0
  3. package/bin/cli.js +2385 -0
  4. package/lib/cli-sessions.js +270 -0
  5. package/lib/config.js +237 -0
  6. package/lib/daemon.js +489 -0
  7. package/lib/ipc.js +112 -0
  8. package/lib/notes.js +120 -0
  9. package/lib/pages.js +664 -0
  10. package/lib/project.js +1433 -0
  11. package/lib/public/app.js +2795 -0
  12. package/lib/public/apple-touch-icon-dark.png +0 -0
  13. package/lib/public/apple-touch-icon.png +0 -0
  14. package/lib/public/css/base.css +264 -0
  15. package/lib/public/css/diff.css +128 -0
  16. package/lib/public/css/filebrowser.css +1114 -0
  17. package/lib/public/css/highlight.css +144 -0
  18. package/lib/public/css/icon-strip.css +296 -0
  19. package/lib/public/css/input.css +573 -0
  20. package/lib/public/css/menus.css +856 -0
  21. package/lib/public/css/messages.css +1445 -0
  22. package/lib/public/css/mobile-nav.css +354 -0
  23. package/lib/public/css/overlays.css +697 -0
  24. package/lib/public/css/rewind.css +505 -0
  25. package/lib/public/css/server-settings.css +761 -0
  26. package/lib/public/css/sidebar.css +936 -0
  27. package/lib/public/css/sticky-notes.css +358 -0
  28. package/lib/public/css/title-bar.css +314 -0
  29. package/lib/public/favicon-dark.svg +1 -0
  30. package/lib/public/favicon.svg +1 -0
  31. package/lib/public/icon-192-dark.png +0 -0
  32. package/lib/public/icon-192.png +0 -0
  33. package/lib/public/icon-512-dark.png +0 -0
  34. package/lib/public/icon-512.png +0 -0
  35. package/lib/public/icon-mono.svg +1 -0
  36. package/lib/public/index.html +762 -0
  37. package/lib/public/manifest.json +27 -0
  38. package/lib/public/modules/diff.js +398 -0
  39. package/lib/public/modules/events.js +21 -0
  40. package/lib/public/modules/filebrowser.js +1411 -0
  41. package/lib/public/modules/fileicons.js +172 -0
  42. package/lib/public/modules/icons.js +54 -0
  43. package/lib/public/modules/input.js +584 -0
  44. package/lib/public/modules/markdown.js +356 -0
  45. package/lib/public/modules/notifications.js +649 -0
  46. package/lib/public/modules/qrcode.js +70 -0
  47. package/lib/public/modules/rewind.js +345 -0
  48. package/lib/public/modules/server-settings.js +510 -0
  49. package/lib/public/modules/sidebar.js +1083 -0
  50. package/lib/public/modules/state.js +3 -0
  51. package/lib/public/modules/sticky-notes.js +688 -0
  52. package/lib/public/modules/terminal.js +697 -0
  53. package/lib/public/modules/theme.js +738 -0
  54. package/lib/public/modules/tools.js +1608 -0
  55. package/lib/public/modules/utils.js +56 -0
  56. package/lib/public/style.css +15 -0
  57. package/lib/public/sw.js +75 -0
  58. package/lib/push.js +124 -0
  59. package/lib/sdk-bridge.js +989 -0
  60. package/lib/server.js +582 -0
  61. package/lib/sessions.js +424 -0
  62. package/lib/terminal-manager.js +187 -0
  63. package/lib/terminal.js +24 -0
  64. package/lib/themes/ayu-light.json +9 -0
  65. package/lib/themes/catppuccin-latte.json +9 -0
  66. package/lib/themes/catppuccin-mocha.json +9 -0
  67. package/lib/themes/clay-light.json +10 -0
  68. package/lib/themes/clay.json +10 -0
  69. package/lib/themes/dracula.json +9 -0
  70. package/lib/themes/everforest-light.json +9 -0
  71. package/lib/themes/everforest.json +9 -0
  72. package/lib/themes/github-light.json +9 -0
  73. package/lib/themes/gruvbox-dark.json +9 -0
  74. package/lib/themes/gruvbox-light.json +9 -0
  75. package/lib/themes/monokai.json +9 -0
  76. package/lib/themes/nord-light.json +9 -0
  77. package/lib/themes/nord.json +9 -0
  78. package/lib/themes/one-dark.json +9 -0
  79. package/lib/themes/one-light.json +9 -0
  80. package/lib/themes/rose-pine-dawn.json +9 -0
  81. package/lib/themes/rose-pine.json +9 -0
  82. package/lib/themes/solarized-dark.json +9 -0
  83. package/lib/themes/solarized-light.json +9 -0
  84. package/lib/themes/tokyo-night-light.json +9 -0
  85. package/lib/themes/tokyo-night.json +9 -0
  86. package/lib/updater.js +97 -0
  87. package/package.json +47 -0
@@ -0,0 +1,761 @@
1
+ /* ==========================================================================
2
+ Server Settings — Full-screen overlay (Discord-style)
3
+
4
+ Real structure (same as Discord):
5
+ - Full-screen overlay with TWO background colors split vertically.
6
+ - A single centered container (max-width ~1200px) holds nav + content.
7
+ - Nav sits on the dark side, content on the lighter side.
8
+ - The bg colors bleed out to the edges via pseudo-elements.
9
+ ========================================================================== */
10
+
11
+ /* --- Full-screen overlay --- */
12
+ #server-settings {
13
+ position: fixed;
14
+ inset: 0;
15
+ z-index: 600;
16
+ animation: settingsFadeIn 0.2s ease;
17
+ overflow: hidden;
18
+ }
19
+
20
+ #server-settings.hidden {
21
+ display: none;
22
+ }
23
+
24
+ @keyframes settingsFadeIn {
25
+ from { opacity: 0; }
26
+ to { opacity: 1; }
27
+ }
28
+
29
+ /* --- Layout wrapper — centered box with bg bleed --- */
30
+ .server-settings-layout {
31
+ width: 100%;
32
+ height: 100%;
33
+ display: flex;
34
+ justify-content: center;
35
+ /* Two-tone background: nav color covers everything,
36
+ content pseudo-element paints over the right side */
37
+ background: var(--sidebar-bg);
38
+ position: relative;
39
+ }
40
+
41
+ /* Right-half background bleed */
42
+ .server-settings-layout::after {
43
+ content: "";
44
+ position: absolute;
45
+ top: 0;
46
+ bottom: 0;
47
+ right: 0;
48
+ width: 50%;
49
+ background: var(--bg);
50
+ z-index: 0;
51
+ pointer-events: none;
52
+ }
53
+
54
+ /* --- Centered container: nav + content + close --- */
55
+ .server-settings-layout > * {
56
+ position: relative;
57
+ z-index: 1;
58
+ }
59
+
60
+ /* ========== NAV ========== */
61
+ .server-settings-nav {
62
+ width: 232px;
63
+ flex-shrink: 0;
64
+ background: var(--sidebar-bg);
65
+ overflow-y: auto;
66
+ overflow-x: hidden;
67
+ display: flex;
68
+ justify-content: flex-end;
69
+ }
70
+
71
+ .server-settings-nav-inner {
72
+ width: 200px;
73
+ flex-shrink: 0;
74
+ padding: 60px 6px 40px 0;
75
+ }
76
+
77
+ /* --- Nav header --- */
78
+ .server-settings-nav-header {
79
+ font-size: 12px;
80
+ font-weight: 700;
81
+ color: var(--text-muted);
82
+ text-transform: uppercase;
83
+ letter-spacing: 0.05em;
84
+ padding: 0 10px 10px;
85
+ border-bottom: 1px solid var(--border-subtle);
86
+ margin-bottom: 8px;
87
+ overflow: hidden;
88
+ text-overflow: ellipsis;
89
+ white-space: nowrap;
90
+ }
91
+
92
+ /* --- Nav items --- */
93
+ .server-settings-nav-items {
94
+ display: flex;
95
+ flex-direction: column;
96
+ }
97
+
98
+ .settings-nav-item {
99
+ display: flex;
100
+ align-items: center;
101
+ gap: 8px;
102
+ width: 100%;
103
+ padding: 7px 10px;
104
+ border: none;
105
+ background: none;
106
+ color: var(--text-muted);
107
+ font-family: inherit;
108
+ font-size: 14px;
109
+ font-weight: 500;
110
+ cursor: pointer;
111
+ border-radius: 6px;
112
+ transition: background 0.15s, color 0.15s;
113
+ text-align: left;
114
+ }
115
+
116
+ .settings-nav-item:hover {
117
+ background: rgba(var(--overlay-rgb), 0.04);
118
+ color: var(--text-secondary);
119
+ }
120
+
121
+ .settings-nav-item.active {
122
+ background: rgba(var(--overlay-rgb), 0.08);
123
+ color: var(--text);
124
+ }
125
+
126
+ .settings-nav-category {
127
+ font-size: 11px;
128
+ font-weight: 700;
129
+ color: var(--text-dimmer);
130
+ text-transform: uppercase;
131
+ letter-spacing: 0.06em;
132
+ padding: 8px 10px 4px;
133
+ }
134
+
135
+ .settings-nav-separator {
136
+ height: 1px;
137
+ background: var(--border-subtle);
138
+ margin: 6px 10px;
139
+ }
140
+
141
+ /* ========== CONTENT ========== */
142
+ .server-settings-content {
143
+ flex: 1 1 auto;
144
+ min-width: 0;
145
+ max-width: 740px;
146
+ background: var(--bg);
147
+ overflow-y: auto;
148
+ overflow-x: hidden;
149
+ }
150
+
151
+ .server-settings-content-inner {
152
+ padding: 60px 40px 60px 40px;
153
+ }
154
+
155
+ /* ========== CLOSE COLUMN ========== */
156
+ .server-settings-close-col {
157
+ position: fixed;
158
+ top: 60px;
159
+ right: 20px;
160
+ z-index: 5;
161
+ }
162
+
163
+ .server-settings-close-btn {
164
+ display: flex;
165
+ flex-direction: column;
166
+ align-items: center;
167
+ width: 40px;
168
+ height: 40px;
169
+ border-radius: 50%;
170
+ border: 2px solid var(--text-dimmer);
171
+ background: none;
172
+ color: var(--text-dimmer);
173
+ cursor: pointer;
174
+ padding: 0;
175
+ justify-content: center;
176
+ transition: border-color 0.15s, color 0.15s;
177
+ position: relative;
178
+ }
179
+
180
+ .server-settings-close-btn .lucide {
181
+ width: 18px;
182
+ height: 18px;
183
+ }
184
+
185
+ .server-settings-close-btn span {
186
+ font-size: 10px;
187
+ font-weight: 600;
188
+ letter-spacing: 0.5px;
189
+ position: absolute;
190
+ top: calc(100% + 6px);
191
+ font-family: inherit;
192
+ }
193
+
194
+ .server-settings-close-btn:hover {
195
+ border-color: var(--text-secondary);
196
+ color: var(--text-secondary);
197
+ }
198
+
199
+ /* ========== SECTIONS ========== */
200
+ .server-settings-section {
201
+ display: none;
202
+ }
203
+
204
+ .server-settings-section.active {
205
+ display: block;
206
+ }
207
+
208
+ .server-settings-section h2 {
209
+ font-size: 20px;
210
+ font-weight: 700;
211
+ color: var(--text);
212
+ margin-bottom: 20px;
213
+ }
214
+
215
+ .server-settings-section h3 {
216
+ font-size: 14px;
217
+ font-weight: 600;
218
+ color: var(--text-secondary);
219
+ text-transform: uppercase;
220
+ letter-spacing: 0.04em;
221
+ margin: 28px 0 12px;
222
+ }
223
+
224
+ /* ========== SETTINGS CARDS ========== */
225
+ .settings-card {
226
+ background: var(--bg-alt);
227
+ border: 1px solid var(--border);
228
+ border-radius: 12px;
229
+ padding: 4px 0;
230
+ margin-bottom: 16px;
231
+ }
232
+
233
+ .settings-field {
234
+ padding: 12px 16px;
235
+ }
236
+
237
+ .settings-field + .settings-field {
238
+ border-top: 1px solid var(--border-subtle);
239
+ }
240
+
241
+ .settings-label {
242
+ font-size: 13px;
243
+ font-weight: 600;
244
+ color: var(--text-secondary);
245
+ display: block;
246
+ margin-bottom: 4px;
247
+ }
248
+
249
+ .settings-value {
250
+ font-size: 14px;
251
+ color: var(--text);
252
+ word-break: break-all;
253
+ }
254
+
255
+ .settings-value.settings-mono {
256
+ font-family: "Roboto Mono", monospace;
257
+ font-size: 13px;
258
+ color: var(--text-muted);
259
+ }
260
+
261
+ .settings-field-row {
262
+ display: flex;
263
+ align-items: center;
264
+ justify-content: space-between;
265
+ padding: 10px 16px;
266
+ gap: 12px;
267
+ }
268
+
269
+ .settings-field-row + .settings-field-row {
270
+ border-top: 1px solid var(--border-subtle);
271
+ }
272
+
273
+ .settings-field-row .settings-label {
274
+ margin-bottom: 0;
275
+ }
276
+
277
+ .settings-field-row .settings-value {
278
+ flex-shrink: 0;
279
+ text-align: right;
280
+ }
281
+
282
+ /* --- Toggle row --- */
283
+ .settings-toggle-row {
284
+ display: flex;
285
+ align-items: center;
286
+ justify-content: space-between;
287
+ padding: 12px 16px;
288
+ gap: 16px;
289
+ cursor: pointer;
290
+ transition: background 0.15s;
291
+ }
292
+
293
+ .settings-toggle-row + .settings-toggle-row {
294
+ border-top: 1px solid var(--border-subtle);
295
+ }
296
+
297
+ .settings-toggle-row:hover {
298
+ background: rgba(var(--overlay-rgb), 0.02);
299
+ }
300
+
301
+ .settings-toggle-row input {
302
+ display: none;
303
+ }
304
+
305
+ .settings-toggle-row .toggle-track {
306
+ flex-shrink: 0;
307
+ }
308
+
309
+ .settings-toggle-row input:checked + .toggle-track {
310
+ background: var(--accent);
311
+ border-color: var(--accent);
312
+ }
313
+
314
+ .settings-toggle-row input:checked + .toggle-track .toggle-thumb {
315
+ transform: translateX(14px);
316
+ background: #fff;
317
+ }
318
+
319
+ .settings-hint {
320
+ font-size: 12px;
321
+ color: var(--text-dimmer);
322
+ line-height: 1.5;
323
+ margin-top: 2px;
324
+ }
325
+
326
+ .settings-badge {
327
+ font-size: 12px;
328
+ font-weight: 600;
329
+ padding: 3px 10px;
330
+ border-radius: 6px;
331
+ background: rgba(var(--overlay-rgb), 0.06);
332
+ }
333
+
334
+ .settings-badge.settings-badge-on {
335
+ background: var(--error-12);
336
+ color: var(--error);
337
+ }
338
+
339
+ /* --- Model list --- */
340
+ .settings-model-list {
341
+ display: flex;
342
+ flex-direction: column;
343
+ gap: 4px;
344
+ margin-top: 8px;
345
+ }
346
+
347
+ .settings-model-item {
348
+ display: flex;
349
+ align-items: center;
350
+ justify-content: space-between;
351
+ padding: 8px 12px;
352
+ border-radius: 8px;
353
+ background: rgba(var(--overlay-rgb), 0.03);
354
+ font-size: 13px;
355
+ color: var(--text-secondary);
356
+ border: 1px solid var(--border-subtle);
357
+ cursor: pointer;
358
+ transition: background 0.15s, border-color 0.15s;
359
+ }
360
+
361
+ .settings-model-item:hover {
362
+ background: rgba(var(--overlay-rgb), 0.06);
363
+ border-color: var(--border);
364
+ }
365
+
366
+ .settings-model-item.active {
367
+ border-color: var(--accent);
368
+ color: var(--text);
369
+ }
370
+
371
+ .settings-model-item.active::after {
372
+ content: "\2713";
373
+ color: var(--accent);
374
+ font-weight: 700;
375
+ }
376
+
377
+ /* --- Button group --- */
378
+ .settings-btn-group {
379
+ display: flex;
380
+ gap: 0;
381
+ border: 1px solid var(--border);
382
+ border-radius: 8px;
383
+ overflow: hidden;
384
+ margin-top: 8px;
385
+ width: fit-content;
386
+ }
387
+
388
+ .settings-btn-option {
389
+ padding: 6px 16px;
390
+ border: none;
391
+ background: none;
392
+ color: var(--text-muted);
393
+ font-family: inherit;
394
+ font-size: 13px;
395
+ font-weight: 500;
396
+ cursor: pointer;
397
+ transition: background 0.15s, color 0.15s;
398
+ }
399
+
400
+ .settings-btn-option + .settings-btn-option {
401
+ border-left: 1px solid var(--border);
402
+ }
403
+
404
+ .settings-btn-option:hover {
405
+ background: rgba(var(--overlay-rgb), 0.04);
406
+ color: var(--text-secondary);
407
+ }
408
+
409
+ .settings-btn-option.active {
410
+ background: var(--accent);
411
+ color: #fff;
412
+ }
413
+
414
+ /* --- PIN input --- */
415
+ .settings-pin-input-row {
416
+ display: flex;
417
+ align-items: center;
418
+ gap: 8px;
419
+ margin-top: 8px;
420
+ }
421
+
422
+ #settings-pin-input {
423
+ width: 120px;
424
+ padding: 6px 10px;
425
+ border: 1px solid var(--border);
426
+ border-radius: 6px;
427
+ background: var(--bg);
428
+ color: var(--text);
429
+ font-family: "Roboto Mono", monospace;
430
+ font-size: 16px;
431
+ letter-spacing: 0.15em;
432
+ text-align: center;
433
+ outline: none;
434
+ transition: border-color 0.15s;
435
+ }
436
+
437
+ #settings-pin-input:focus {
438
+ border-color: var(--accent);
439
+ }
440
+
441
+ #settings-pin-input::placeholder {
442
+ color: var(--text-dimmer);
443
+ letter-spacing: 0.15em;
444
+ }
445
+
446
+ .settings-pin-error {
447
+ color: var(--error) !important;
448
+ margin-top: 6px;
449
+ }
450
+
451
+ .settings-pin-btns {
452
+ display: flex;
453
+ gap: 6px;
454
+ flex-shrink: 0;
455
+ }
456
+
457
+ /* --- Small buttons --- */
458
+ .settings-btn-sm {
459
+ padding: 5px 14px;
460
+ border: 1px solid var(--border);
461
+ border-radius: 6px;
462
+ background: var(--bg);
463
+ color: var(--text-secondary);
464
+ font-family: inherit;
465
+ font-size: 13px;
466
+ font-weight: 500;
467
+ cursor: pointer;
468
+ transition: background 0.15s, border-color 0.15s, color 0.15s;
469
+ white-space: nowrap;
470
+ }
471
+
472
+ .settings-btn-sm:hover {
473
+ background: rgba(var(--overlay-rgb), 0.06);
474
+ border-color: var(--text-dimmer);
475
+ color: var(--text);
476
+ }
477
+
478
+ .settings-btn-update {
479
+ margin-top: 8px;
480
+ display: inline-flex;
481
+ align-items: center;
482
+ gap: 5px;
483
+ }
484
+
485
+ .settings-btn-update .lucide {
486
+ width: 14px;
487
+ height: 14px;
488
+ }
489
+
490
+ .settings-btn-update:disabled {
491
+ opacity: 0.6;
492
+ cursor: default;
493
+ }
494
+
495
+ .settings-btn-update-available {
496
+ border-color: var(--accent);
497
+ color: var(--accent);
498
+ background: var(--accent-bg);
499
+ }
500
+
501
+ .settings-btn-update-available:hover {
502
+ background: var(--accent);
503
+ color: #fff;
504
+ }
505
+
506
+ .settings-btn-ghost {
507
+ background: none;
508
+ border-color: transparent;
509
+ color: var(--text-muted);
510
+ }
511
+
512
+ .settings-btn-ghost:hover {
513
+ background: rgba(var(--overlay-rgb), 0.04);
514
+ color: var(--text-secondary);
515
+ }
516
+
517
+ .settings-btn-danger {
518
+ border-color: var(--error);
519
+ color: var(--error);
520
+ }
521
+
522
+ .settings-btn-danger:hover {
523
+ background: var(--error-12);
524
+ }
525
+
526
+ /* --- Badge variant: green for enabled --- */
527
+ .settings-badge.settings-badge-green {
528
+ background: rgba(46, 160, 67, 0.12);
529
+ color: #3fb950;
530
+ }
531
+
532
+ /* --- Nav danger item (Shutdown) --- */
533
+ .settings-nav-item.settings-nav-danger {
534
+ color: var(--error);
535
+ }
536
+
537
+ .settings-nav-item.settings-nav-danger:hover {
538
+ background: var(--error-12);
539
+ color: var(--error);
540
+ }
541
+
542
+ .settings-nav-item.settings-nav-danger.active {
543
+ background: var(--error-12);
544
+ color: var(--error);
545
+ }
546
+
547
+ /* --- Danger zone banner --- */
548
+ .settings-danger-zone {
549
+ display: flex;
550
+ align-items: flex-start;
551
+ gap: 14px;
552
+ padding: 16px 18px;
553
+ border-radius: 12px;
554
+ background: var(--error-12);
555
+ border: 1px solid color-mix(in srgb, var(--error) 25%, transparent);
556
+ margin-bottom: 20px;
557
+ }
558
+
559
+ .settings-danger-icon {
560
+ flex-shrink: 0;
561
+ color: var(--error);
562
+ margin-top: 2px;
563
+ }
564
+
565
+ .settings-danger-icon .lucide {
566
+ width: 22px;
567
+ height: 22px;
568
+ }
569
+
570
+ .settings-danger-body {
571
+ min-width: 0;
572
+ }
573
+
574
+ .settings-danger-title {
575
+ font-size: 15px !important;
576
+ font-weight: 600 !important;
577
+ color: var(--error) !important;
578
+ text-transform: none !important;
579
+ letter-spacing: 0 !important;
580
+ margin: 0 0 4px !important;
581
+ }
582
+
583
+ .settings-danger-desc {
584
+ font-size: 13px;
585
+ color: var(--text-muted);
586
+ line-height: 1.5;
587
+ margin: 0;
588
+ }
589
+
590
+ /* --- Danger card variant --- */
591
+ .settings-card.settings-card-danger {
592
+ border-color: color-mix(in srgb, var(--error) 25%, transparent);
593
+ }
594
+
595
+ /* --- Shutdown input row --- */
596
+ .settings-shutdown-input-row {
597
+ display: flex;
598
+ align-items: center;
599
+ gap: 10px;
600
+ margin-top: 10px;
601
+ }
602
+
603
+ #settings-shutdown-input {
604
+ flex: 1;
605
+ max-width: 260px;
606
+ padding: 8px 12px;
607
+ border: 1px solid var(--border);
608
+ border-radius: 6px;
609
+ background: var(--bg);
610
+ color: var(--text);
611
+ font-family: "Roboto Mono", monospace;
612
+ font-size: 14px;
613
+ outline: none;
614
+ transition: border-color 0.15s;
615
+ }
616
+
617
+ #settings-shutdown-input:focus {
618
+ border-color: var(--error);
619
+ }
620
+
621
+ #settings-shutdown-input::placeholder {
622
+ color: var(--text-dimmer);
623
+ font-family: inherit;
624
+ }
625
+
626
+ /* --- Shutdown button --- */
627
+ .settings-btn-shutdown {
628
+ padding: 8px 20px !important;
629
+ border-color: var(--error) !important;
630
+ background: transparent !important;
631
+ color: var(--error) !important;
632
+ font-weight: 600 !important;
633
+ transition: background 0.15s, color 0.15s, opacity 0.15s !important;
634
+ }
635
+
636
+ .settings-btn-shutdown:hover:not(:disabled) {
637
+ background: var(--error) !important;
638
+ color: #fff !important;
639
+ }
640
+
641
+ .settings-btn-shutdown:disabled {
642
+ opacity: 0.35;
643
+ cursor: not-allowed;
644
+ }
645
+
646
+ .settings-shutdown-error {
647
+ color: var(--error) !important;
648
+ margin-top: 8px;
649
+ }
650
+
651
+ /* --- Embedded theme picker in settings --- */
652
+ #settings-theme-picker-container {
653
+ margin-top: 8px;
654
+ }
655
+
656
+ #settings-theme-picker-container .theme-picker {
657
+ position: static !important;
658
+ opacity: 1 !important;
659
+ transform: none !important;
660
+ pointer-events: auto !important;
661
+ max-height: none !important;
662
+ box-shadow: none !important;
663
+ border: 1px solid var(--border-subtle) !important;
664
+ border-radius: 8px !important;
665
+ background: var(--bg) !important;
666
+ min-width: auto !important;
667
+ }
668
+
669
+ /* ========== RESPONSIVE ========== */
670
+ @media (max-width: 768px) {
671
+ .server-settings-layout {
672
+ flex-direction: column;
673
+ background: var(--sidebar-bg);
674
+ }
675
+
676
+ .server-settings-layout::after {
677
+ display: none;
678
+ }
679
+
680
+ .server-settings-nav {
681
+ width: 100%;
682
+ flex-shrink: 0;
683
+ justify-content: flex-start;
684
+ overflow-y: visible;
685
+ border-bottom: 1px solid var(--border-subtle);
686
+ }
687
+
688
+ .server-settings-nav-inner {
689
+ width: 100%;
690
+ padding: 0;
691
+ display: flex;
692
+ flex-direction: column;
693
+ gap: 0;
694
+ }
695
+
696
+ .server-settings-nav-header {
697
+ padding: 12px 16px 8px;
698
+ }
699
+
700
+ /* Scroll wrapper with fade hints */
701
+ .server-settings-nav-items {
702
+ flex-direction: row;
703
+ overflow-x: auto;
704
+ gap: 2px;
705
+ scrollbar-width: none;
706
+ padding: 0 16px 10px;
707
+ -webkit-mask-image: linear-gradient(to right, transparent 0, black 16px, black calc(100% - 24px), transparent 100%);
708
+ mask-image: linear-gradient(to right, transparent 0, black 16px, black calc(100% - 24px), transparent 100%);
709
+ }
710
+
711
+ .server-settings-nav-items::-webkit-scrollbar { display: none; }
712
+
713
+ .settings-nav-item {
714
+ flex-shrink: 0;
715
+ font-size: 13px;
716
+ padding: 6px 12px;
717
+ border-radius: 20px;
718
+ background: rgba(var(--overlay-rgb), 0.04);
719
+ }
720
+
721
+ .settings-nav-item.active {
722
+ background: rgba(var(--overlay-rgb), 0.12);
723
+ }
724
+
725
+ .settings-nav-item.settings-nav-danger {
726
+ background: var(--error-12);
727
+ }
728
+
729
+ .settings-nav-separator {
730
+ display: none;
731
+ }
732
+
733
+ .settings-nav-category {
734
+ display: none;
735
+ }
736
+
737
+ .server-settings-content {
738
+ flex: 1 1 auto;
739
+ max-width: none;
740
+ }
741
+
742
+ .server-settings-content-inner {
743
+ padding: 24px 16px;
744
+ }
745
+
746
+ .server-settings-close-col {
747
+ top: 12px;
748
+ right: 12px;
749
+ }
750
+
751
+ .server-settings-close-btn {
752
+ width: 36px;
753
+ height: 36px;
754
+ background: var(--bg-alt);
755
+ border-color: var(--border);
756
+ }
757
+
758
+ .server-settings-close-btn span {
759
+ display: none;
760
+ }
761
+ }