@setzkasten-cms/ui 0.4.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.
@@ -0,0 +1,2017 @@
1
+ /* ---------------------------------------------------------------------------
2
+ Setzkasten Admin Styles
3
+ --------------------------------------------------------------------------- */
4
+
5
+ *, *::before, *::after {
6
+ box-sizing: border-box;
7
+ }
8
+
9
+ :root {
10
+ --sk-ink: #1a1a2e;
11
+ --sk-paper: #faf9f7;
12
+ --sk-warm: #f5f0eb;
13
+ --sk-accent: #c45d3e;
14
+ --sk-accent-dark: #a04830;
15
+ --sk-slate: #64748b;
16
+ --sk-border: #e2ddd7;
17
+ --sk-surface: #ffffff;
18
+ --sk-sidebar-bg: #2d2b3d;
19
+ --sk-sidebar-text: #c8c5d6;
20
+ --sk-sidebar-bright: #f0eff4;
21
+ }
22
+
23
+ /* ---------------------------------------------------------------------------
24
+ Loading
25
+ --------------------------------------------------------------------------- */
26
+
27
+ .sk-admin-loading {
28
+ display: flex;
29
+ align-items: center;
30
+ justify-content: center;
31
+ min-height: 100vh;
32
+ flex-direction: column;
33
+ gap: 16px;
34
+ }
35
+
36
+ .sk-admin-loading__spinner {
37
+ width: 32px;
38
+ height: 32px;
39
+ border: 3px solid var(--sk-border);
40
+ border-top-color: var(--sk-accent);
41
+ border-radius: 50%;
42
+ animation: sk-spin 0.8s linear infinite;
43
+ }
44
+
45
+ .sk-admin-loading__text {
46
+ font-size: 14px;
47
+ color: var(--sk-slate);
48
+ }
49
+
50
+ @keyframes sk-spin {
51
+ to { transform: rotate(360deg); }
52
+ }
53
+
54
+ /* ---------------------------------------------------------------------------
55
+ Login
56
+ --------------------------------------------------------------------------- */
57
+
58
+ .sk-login {
59
+ display: flex;
60
+ align-items: center;
61
+ justify-content: center;
62
+ min-height: 100vh;
63
+ background: var(--sk-paper);
64
+ }
65
+
66
+ .sk-login__card {
67
+ width: 100%;
68
+ max-width: 400px;
69
+ padding: 40px;
70
+ background: var(--sk-surface);
71
+ border: 1px solid var(--sk-border);
72
+ border-radius: 16px;
73
+ box-shadow: 0 4px 24px rgba(0, 0, 0, 0.06);
74
+ text-align: center;
75
+ }
76
+
77
+ .sk-login__logo {
78
+ width: 48px;
79
+ height: 48px;
80
+ background: var(--sk-accent);
81
+ color: white;
82
+ border-radius: 12px;
83
+ display: inline-flex;
84
+ align-items: center;
85
+ justify-content: center;
86
+ font-weight: 800;
87
+ font-size: 20px;
88
+ margin-bottom: 20px;
89
+ }
90
+
91
+ .sk-login__title {
92
+ font-size: 22px;
93
+ font-weight: 700;
94
+ margin-bottom: 8px;
95
+ }
96
+
97
+ .sk-login__subtitle {
98
+ font-size: 14px;
99
+ color: var(--sk-slate);
100
+ margin-bottom: 32px;
101
+ }
102
+
103
+ .sk-login__btn {
104
+ display: inline-flex;
105
+ align-items: center;
106
+ justify-content: center;
107
+ gap: 10px;
108
+ padding: 12px 32px;
109
+ border: 1px solid var(--sk-border);
110
+ border-radius: 10px;
111
+ background: var(--sk-ink);
112
+ font-family: inherit;
113
+ font-size: 14px;
114
+ font-weight: 600;
115
+ color: #fff;
116
+ cursor: pointer;
117
+ transition: all 0.15s;
118
+ text-decoration: none;
119
+ margin-bottom: 12px;
120
+ }
121
+
122
+ .sk-login__btn:hover {
123
+ background: var(--sk-accent);
124
+ border-color: var(--sk-accent);
125
+ }
126
+
127
+ .sk-login__btn svg {
128
+ color: #fff;
129
+ }
130
+
131
+ .sk-login__btn svg {
132
+ width: 20px;
133
+ height: 20px;
134
+ flex-shrink: 0;
135
+ }
136
+
137
+ /* ---------------------------------------------------------------------------
138
+ Admin Layout
139
+ --------------------------------------------------------------------------- */
140
+
141
+ /* ---------------------------------------------------------------------------
142
+ Dashboard
143
+ --------------------------------------------------------------------------- */
144
+
145
+ .sk-dashboard {
146
+ min-height: 100vh;
147
+ background: var(--sk-warm);
148
+ display: flex;
149
+ flex-direction: column;
150
+ }
151
+
152
+ .sk-dashboard__topbar {
153
+ display: flex;
154
+ align-items: center;
155
+ justify-content: space-between;
156
+ padding: 16px 32px;
157
+ background: var(--sk-surface);
158
+ border-bottom: 1px solid var(--sk-border);
159
+ }
160
+
161
+ .sk-dashboard__brand {
162
+ display: flex;
163
+ align-items: center;
164
+ gap: 10px;
165
+ }
166
+
167
+ .sk-dashboard__logo {
168
+ width: 32px;
169
+ height: 32px;
170
+ background: var(--sk-accent);
171
+ color: white;
172
+ border-radius: 8px;
173
+ display: flex;
174
+ align-items: center;
175
+ justify-content: center;
176
+ font-weight: 700;
177
+ font-size: 16px;
178
+ flex-shrink: 0;
179
+ }
180
+
181
+ .sk-dashboard__brand-name {
182
+ font-size: 16px;
183
+ font-weight: 600;
184
+ color: var(--sk-ink);
185
+ }
186
+
187
+ .sk-dashboard__user {
188
+ display: flex;
189
+ align-items: center;
190
+ gap: 12px;
191
+ }
192
+
193
+ .sk-dashboard__avatar {
194
+ width: 28px;
195
+ height: 28px;
196
+ border-radius: 50%;
197
+ flex-shrink: 0;
198
+ }
199
+
200
+ .sk-dashboard__avatar--placeholder {
201
+ background: var(--sk-accent);
202
+ color: white;
203
+ display: inline-flex;
204
+ align-items: center;
205
+ justify-content: center;
206
+ font-weight: 600;
207
+ font-size: 12px;
208
+ }
209
+
210
+ .sk-dashboard__user-name {
211
+ font-size: 13px;
212
+ color: var(--sk-ink);
213
+ }
214
+
215
+ .sk-dashboard__logout {
216
+ font-size: 12px;
217
+ color: var(--sk-slate);
218
+ text-decoration: none;
219
+ padding: 4px 10px;
220
+ border: 1px solid var(--sk-border);
221
+ border-radius: 6px;
222
+ transition: all 0.15s;
223
+ }
224
+
225
+ .sk-dashboard__logout:hover {
226
+ background: var(--sk-surface);
227
+ color: var(--sk-ink);
228
+ }
229
+
230
+ .sk-dashboard__content {
231
+ flex: 1;
232
+ display: flex;
233
+ flex-direction: column;
234
+ align-items: center;
235
+ justify-content: center;
236
+ padding: 48px 24px;
237
+ gap: 24px;
238
+ max-width: 700px;
239
+ margin: 0 auto;
240
+ width: 100%;
241
+ }
242
+
243
+ .sk-dashboard__card {
244
+ background: var(--sk-surface);
245
+ border: 1px solid var(--sk-border);
246
+ border-radius: 12px;
247
+ padding: 28px 32px;
248
+ width: 100%;
249
+ text-align: center;
250
+ }
251
+
252
+ .sk-dashboard__card--primary {
253
+ padding: 36px 32px;
254
+ }
255
+
256
+ .sk-dashboard__card--disabled {
257
+ opacity: 0.5;
258
+ pointer-events: none;
259
+ position: relative;
260
+ }
261
+
262
+ .sk-dashboard__card-icon {
263
+ color: var(--sk-accent);
264
+ margin-bottom: 12px;
265
+ display: flex;
266
+ justify-content: center;
267
+ }
268
+
269
+ .sk-dashboard__card-title {
270
+ font-size: 18px;
271
+ font-weight: 700;
272
+ color: var(--sk-ink);
273
+ margin: 0 0 20px;
274
+ }
275
+
276
+ .sk-dashboard__card-subtitle {
277
+ font-size: 14px;
278
+ font-weight: 600;
279
+ color: var(--sk-ink);
280
+ margin: 0 0 4px;
281
+ }
282
+
283
+ .sk-dashboard__card-controls {
284
+ display: flex;
285
+ align-items: center;
286
+ justify-content: center;
287
+ gap: 12px;
288
+ flex-wrap: wrap;
289
+ }
290
+
291
+ .sk-dashboard__select {
292
+ padding: 8px 14px;
293
+ font-size: 14px;
294
+ font-family: inherit;
295
+ border: 1px solid var(--sk-border);
296
+ border-radius: 8px;
297
+ background: var(--sk-surface);
298
+ color: var(--sk-ink);
299
+ cursor: pointer;
300
+ min-width: 160px;
301
+ }
302
+
303
+ .sk-dashboard__select:disabled {
304
+ opacity: 0.6;
305
+ cursor: default;
306
+ }
307
+
308
+ .sk-dashboard__btn {
309
+ padding: 8px 24px;
310
+ font-size: 14px;
311
+ font-weight: 600;
312
+ font-family: inherit;
313
+ background: var(--sk-accent);
314
+ color: white;
315
+ border: none;
316
+ border-radius: 8px;
317
+ cursor: pointer;
318
+ transition: background 0.15s;
319
+ }
320
+
321
+ .sk-dashboard__btn:hover {
322
+ background: var(--sk-accent-dark);
323
+ }
324
+
325
+ .sk-dashboard__cards-row {
326
+ display: grid;
327
+ grid-template-columns: 1fr 1fr;
328
+ gap: 16px;
329
+ width: 100%;
330
+ }
331
+
332
+ @media (max-width: 600px) {
333
+ .sk-dashboard__cards-row {
334
+ grid-template-columns: 1fr;
335
+ }
336
+ }
337
+
338
+ .sk-dashboard__badge {
339
+ display: inline-block;
340
+ margin-top: 8px;
341
+ padding: 2px 10px;
342
+ font-size: 11px;
343
+ font-weight: 600;
344
+ color: var(--sk-slate);
345
+ background: var(--sk-warm);
346
+ border-radius: 10px;
347
+ }
348
+
349
+ /* ---------------------------------------------------------------------------
350
+ Collection View
351
+ --------------------------------------------------------------------------- */
352
+
353
+ .sk-collection-view {
354
+ display: grid;
355
+ grid-template-columns: 280px 1fr;
356
+ gap: 24px;
357
+ min-height: 60vh;
358
+ }
359
+
360
+ .sk-collection-view__list {
361
+ border-right: 1px solid var(--sk-border);
362
+ padding-right: 24px;
363
+ }
364
+
365
+ .sk-collection-view__editor-header {
366
+ margin-bottom: 16px;
367
+ }
368
+
369
+ .sk-collection-view__editor-header h3 {
370
+ font-size: 18px;
371
+ font-weight: 600;
372
+ }
373
+
374
+ .sk-empty {
375
+ display: flex;
376
+ align-items: center;
377
+ justify-content: center;
378
+ min-height: 200px;
379
+ color: var(--sk-slate);
380
+ font-size: 14px;
381
+ }
382
+
383
+ /* ---------------------------------------------------------------------------
384
+ Rich Text Editor
385
+ --------------------------------------------------------------------------- */
386
+
387
+ .sk-rte {
388
+ border: 1px solid var(--sk-border);
389
+ border-radius: 8px;
390
+ overflow: hidden;
391
+ }
392
+
393
+ .sk-rte__toolbar {
394
+ display: flex;
395
+ align-items: center;
396
+ gap: 2px;
397
+ padding: 6px 8px;
398
+ background: var(--sk-warm);
399
+ border-bottom: 1px solid var(--sk-border);
400
+ flex-wrap: wrap;
401
+ }
402
+
403
+ .sk-rte__btn {
404
+ padding: 4px 8px;
405
+ font-size: 13px;
406
+ font-weight: 600;
407
+ font-family: inherit;
408
+ background: none;
409
+ border: none;
410
+ border-radius: 4px;
411
+ cursor: pointer;
412
+ color: var(--sk-slate);
413
+ transition: all 0.1s;
414
+ }
415
+
416
+ .sk-rte__btn:hover {
417
+ background: var(--sk-surface);
418
+ color: var(--sk-ink);
419
+ }
420
+
421
+ .sk-rte__btn--active {
422
+ background: var(--sk-surface);
423
+ color: var(--sk-accent);
424
+ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.08);
425
+ }
426
+
427
+ .sk-rte__sep {
428
+ width: 1px;
429
+ height: 20px;
430
+ background: var(--sk-border);
431
+ margin: 0 4px;
432
+ }
433
+
434
+ .sk-rte__content {
435
+ padding: 12px 16px;
436
+ min-height: 150px;
437
+ }
438
+
439
+ .sk-rte__content .tiptap {
440
+ outline: none;
441
+ min-height: 120px;
442
+ font-size: 14px;
443
+ line-height: 1.6;
444
+ }
445
+
446
+ .sk-rte__content .tiptap p.is-editor-empty:first-child::before {
447
+ content: attr(data-placeholder);
448
+ float: left;
449
+ color: var(--sk-slate);
450
+ pointer-events: none;
451
+ height: 0;
452
+ }
453
+
454
+ .sk-rte__content .tiptap h1 { font-size: 24px; font-weight: 700; margin: 16px 0 8px; }
455
+ .sk-rte__content .tiptap h2 { font-size: 20px; font-weight: 700; margin: 14px 0 6px; }
456
+ .sk-rte__content .tiptap h3 { font-size: 16px; font-weight: 700; margin: 12px 0 4px; }
457
+ .sk-rte__content .tiptap ul,
458
+ .sk-rte__content .tiptap ol { padding-left: 24px; margin: 8px 0; }
459
+ .sk-rte__content .tiptap blockquote {
460
+ border-left: 3px solid var(--sk-accent);
461
+ padding-left: 16px;
462
+ color: var(--sk-slate);
463
+ margin: 8px 0;
464
+ }
465
+ .sk-rte__content .tiptap hr {
466
+ border: none;
467
+ border-top: 1px solid var(--sk-border);
468
+ margin: 16px 0;
469
+ }
470
+ .sk-rte__content .tiptap a {
471
+ color: var(--sk-accent);
472
+ text-decoration: underline;
473
+ cursor: pointer;
474
+ }
475
+
476
+ /* Inline formatting variant (text fields with formatting: true) */
477
+ .sk-rte--inline .sk-rte__content--inline {
478
+ padding: 8px 12px;
479
+ min-height: auto;
480
+ }
481
+ .sk-rte--inline .sk-rte__content--inline .tiptap {
482
+ min-height: 24px;
483
+ }
484
+
485
+ /* ---------------------------------------------------------------------------
486
+ Fields (shared)
487
+ --------------------------------------------------------------------------- */
488
+
489
+ .sk-field {
490
+ margin-bottom: 20px;
491
+ }
492
+
493
+ .sk-field__header {
494
+ display: flex;
495
+ align-items: center;
496
+ justify-content: space-between;
497
+ margin-bottom: 6px;
498
+ }
499
+ .sk-field__header .sk-field__label {
500
+ margin-bottom: 0;
501
+ }
502
+
503
+ .sk-field__label {
504
+ display: block;
505
+ font-size: 13px;
506
+ font-weight: 600;
507
+ margin-bottom: 6px;
508
+ }
509
+
510
+ .sk-field__format-toggle {
511
+ display: flex;
512
+ align-items: center;
513
+ justify-content: center;
514
+ width: 24px;
515
+ height: 24px;
516
+ border: 1px solid var(--sk-border);
517
+ border-radius: 4px;
518
+ background: none;
519
+ color: var(--sk-slate);
520
+ cursor: pointer;
521
+ transition: all 0.15s;
522
+ flex-shrink: 0;
523
+ }
524
+ .sk-field__format-toggle:hover {
525
+ background: var(--sk-warm);
526
+ color: var(--sk-ink);
527
+ }
528
+ .sk-field__format-toggle--active {
529
+ background: var(--sk-accent);
530
+ border-color: var(--sk-accent);
531
+ color: white;
532
+ }
533
+ .sk-field__format-toggle--active:hover {
534
+ background: var(--sk-accent-dark, #a84e33);
535
+ color: white;
536
+ }
537
+
538
+ .sk-field__required {
539
+ color: var(--sk-accent);
540
+ margin-left: 2px;
541
+ }
542
+
543
+ .sk-field__description {
544
+ font-size: 12px;
545
+ color: var(--sk-slate);
546
+ margin-bottom: 6px;
547
+ }
548
+
549
+ .sk-field__input {
550
+ width: 100%;
551
+ padding: 8px 12px;
552
+ border: 1px solid var(--sk-border);
553
+ border-radius: 6px;
554
+ font-size: 14px;
555
+ font-family: inherit;
556
+ background: var(--sk-surface);
557
+ transition: border-color 0.15s;
558
+ }
559
+
560
+ .sk-field__input:focus {
561
+ outline: none;
562
+ border-color: var(--sk-accent);
563
+ }
564
+
565
+ .sk-field__textarea {
566
+ resize: vertical;
567
+ }
568
+
569
+ .sk-field__counter {
570
+ display: block;
571
+ font-size: 11px;
572
+ color: var(--sk-slate);
573
+ text-align: right;
574
+ margin-top: 4px;
575
+ }
576
+
577
+ .sk-field__errors {
578
+ margin-top: 4px;
579
+ }
580
+
581
+ .sk-field__error {
582
+ font-size: 12px;
583
+ color: #ef4444;
584
+ }
585
+
586
+ /* ---------------------------------------------------------------------------
587
+ Entry List
588
+ --------------------------------------------------------------------------- */
589
+
590
+ .sk-entry-list__header {
591
+ display: flex;
592
+ align-items: center;
593
+ justify-content: space-between;
594
+ margin-bottom: 12px;
595
+ }
596
+
597
+ .sk-entry-list__header h3 {
598
+ font-size: 14px;
599
+ font-weight: 600;
600
+ }
601
+
602
+ .sk-entry-list__create {
603
+ padding: 4px 10px;
604
+ font-size: 12px;
605
+ font-weight: 600;
606
+ background: var(--sk-accent);
607
+ color: white;
608
+ border: none;
609
+ border-radius: 6px;
610
+ cursor: pointer;
611
+ font-family: inherit;
612
+ }
613
+
614
+ .sk-entry-list__create:hover {
615
+ background: var(--sk-accent-dark);
616
+ }
617
+
618
+ .sk-entry-list__item {
619
+ display: flex;
620
+ align-items: center;
621
+ justify-content: space-between;
622
+ width: 100%;
623
+ padding: 8px 12px;
624
+ font-size: 13px;
625
+ background: none;
626
+ border: 1px solid transparent;
627
+ border-radius: 6px;
628
+ cursor: pointer;
629
+ text-align: left;
630
+ font-family: inherit;
631
+ transition: all 0.1s;
632
+ margin-bottom: 2px;
633
+ }
634
+
635
+ .sk-entry-list__item:hover {
636
+ background: var(--sk-warm);
637
+ }
638
+
639
+ .sk-entry-list__item--active {
640
+ background: var(--sk-warm);
641
+ border-color: var(--sk-accent);
642
+ }
643
+
644
+ /* ---------------------------------------------------------------------------
645
+ Entry Form Actions
646
+ --------------------------------------------------------------------------- */
647
+
648
+ .sk-form__actions {
649
+ display: flex;
650
+ gap: 8px;
651
+ margin-top: 24px;
652
+ padding-top: 16px;
653
+ border-top: 1px solid var(--sk-border);
654
+ }
655
+
656
+ .sk-button {
657
+ padding: 8px 16px;
658
+ font-size: 13px;
659
+ font-weight: 600;
660
+ border-radius: 8px;
661
+ cursor: pointer;
662
+ font-family: inherit;
663
+ transition: all 0.15s;
664
+ border: 1px solid var(--sk-border);
665
+ background: var(--sk-surface);
666
+ color: var(--sk-ink);
667
+ }
668
+
669
+ .sk-button:hover {
670
+ background: var(--sk-warm);
671
+ }
672
+
673
+ .sk-button--primary {
674
+ background: var(--sk-accent);
675
+ color: white;
676
+ border-color: var(--sk-accent);
677
+ }
678
+
679
+ .sk-button--primary:hover {
680
+ background: var(--sk-accent-dark);
681
+ }
682
+
683
+ .sk-button--primary:disabled {
684
+ opacity: 0.5;
685
+ cursor: not-allowed;
686
+ }
687
+
688
+ .sk-button--sm {
689
+ padding: 4px 8px;
690
+ font-size: 12px;
691
+ border-radius: 6px;
692
+ }
693
+
694
+ .sk-button--danger {
695
+ color: #ef4444;
696
+ border-color: #fecaca;
697
+ }
698
+
699
+ .sk-button--danger:hover {
700
+ background: #fef2f2;
701
+ border-color: #ef4444;
702
+ }
703
+
704
+ /* ---------------------------------------------------------------------------
705
+ Entry Form
706
+ --------------------------------------------------------------------------- */
707
+
708
+ .sk-entry-form {
709
+ max-width: 720px;
710
+ }
711
+
712
+ .sk-entry-form__fields {
713
+ display: flex;
714
+ flex-direction: column;
715
+ }
716
+
717
+ .sk-entry-form__actions {
718
+ display: flex;
719
+ gap: 8px;
720
+ margin-top: 24px;
721
+ padding-top: 16px;
722
+ border-top: 1px solid var(--sk-border);
723
+ }
724
+
725
+ /* ---------------------------------------------------------------------------
726
+ Boolean / Toggle
727
+ --------------------------------------------------------------------------- */
728
+
729
+ .sk-field--boolean {
730
+ margin-bottom: 16px;
731
+ }
732
+
733
+ .sk-field__toggle {
734
+ display: flex;
735
+ align-items: center;
736
+ gap: 10px;
737
+ cursor: pointer;
738
+ user-select: none;
739
+ }
740
+
741
+ .sk-field__toggle input[type="checkbox"] {
742
+ width: 18px;
743
+ height: 18px;
744
+ accent-color: var(--sk-accent);
745
+ cursor: pointer;
746
+ flex-shrink: 0;
747
+ }
748
+
749
+ .sk-field__toggle-label {
750
+ font-size: 13px;
751
+ font-weight: 600;
752
+ }
753
+
754
+ /* ---------------------------------------------------------------------------
755
+ Select
756
+ --------------------------------------------------------------------------- */
757
+
758
+ .sk-field__select {
759
+ appearance: auto;
760
+ cursor: pointer;
761
+ }
762
+
763
+ /* ---------------------------------------------------------------------------
764
+ Array Field
765
+ --------------------------------------------------------------------------- */
766
+
767
+ .sk-field--array {
768
+ border: 1px solid var(--sk-border);
769
+ border-radius: 10px;
770
+ padding: 16px;
771
+ background: var(--sk-paper);
772
+ }
773
+
774
+ .sk-array__header {
775
+ display: flex;
776
+ align-items: center;
777
+ justify-content: space-between;
778
+ margin-bottom: 12px;
779
+ }
780
+
781
+ .sk-array__count {
782
+ font-weight: 400;
783
+ color: var(--sk-slate);
784
+ font-size: 12px;
785
+ margin-left: 6px;
786
+ }
787
+
788
+ .sk-array__items {
789
+ display: flex;
790
+ flex-direction: column;
791
+ gap: 8px;
792
+ }
793
+
794
+ .sk-array__item {
795
+ background: var(--sk-surface);
796
+ border: 1px solid var(--sk-border);
797
+ border-radius: 8px;
798
+ padding: 12px;
799
+ }
800
+
801
+ .sk-array__item-header {
802
+ display: flex;
803
+ align-items: center;
804
+ justify-content: space-between;
805
+ margin-bottom: 8px;
806
+ padding-bottom: 8px;
807
+ border-bottom: 1px solid var(--sk-border);
808
+ }
809
+
810
+ .sk-array__item-label {
811
+ font-size: 12px;
812
+ font-weight: 600;
813
+ color: var(--sk-slate);
814
+ }
815
+
816
+ .sk-array__item-actions {
817
+ display: flex;
818
+ gap: 4px;
819
+ }
820
+
821
+ .sk-array__add {
822
+ margin-top: 8px;
823
+ width: 100%;
824
+ text-align: center;
825
+ border-style: dashed;
826
+ color: var(--sk-slate);
827
+ }
828
+
829
+ .sk-array__add:hover {
830
+ color: var(--sk-accent);
831
+ border-color: var(--sk-accent);
832
+ }
833
+
834
+ /* ---------------------------------------------------------------------------
835
+ Object Field
836
+ --------------------------------------------------------------------------- */
837
+
838
+ .sk-field--object {
839
+ border: 1px solid var(--sk-border);
840
+ border-radius: 10px;
841
+ padding: 16px;
842
+ background: var(--sk-paper);
843
+ }
844
+
845
+ .sk-field__object-header {
846
+ display: flex;
847
+ align-items: center;
848
+ justify-content: space-between;
849
+ margin-bottom: 12px;
850
+ }
851
+
852
+ .sk-field__object-toggle {
853
+ background: none;
854
+ border: none;
855
+ cursor: pointer;
856
+ font-size: 14px;
857
+ color: var(--sk-slate);
858
+ padding: 2px 6px;
859
+ border-radius: 4px;
860
+ }
861
+
862
+ .sk-field__object-toggle:hover {
863
+ background: var(--sk-warm);
864
+ }
865
+
866
+ .sk-field__object-fields {
867
+ padding-left: 0;
868
+ }
869
+
870
+ /* ---------------------------------------------------------------------------
871
+ Override Field
872
+ --------------------------------------------------------------------------- */
873
+
874
+ .sk-field--override {
875
+ border: 1px solid var(--sk-border);
876
+ border-radius: 10px;
877
+ padding: 16px;
878
+ background: var(--sk-paper);
879
+ }
880
+
881
+ .sk-field__override-header {
882
+ margin-bottom: 4px;
883
+ }
884
+
885
+ .sk-field--override[data-active] {
886
+ border-color: var(--sk-accent);
887
+ }
888
+
889
+ .sk-field__override-fields {
890
+ margin-top: 12px;
891
+ padding-top: 12px;
892
+ border-top: 1px solid var(--sk-border);
893
+ }
894
+
895
+ /* ---------------------------------------------------------------------------
896
+ Image Field
897
+ --------------------------------------------------------------------------- */
898
+
899
+ .sk-field__image-zone {
900
+ margin-bottom: 8px;
901
+ }
902
+
903
+ .sk-field__image-upload {
904
+ display: flex;
905
+ align-items: center;
906
+ justify-content: center;
907
+ width: 100%;
908
+ min-height: 100px;
909
+ padding: 24px;
910
+ border: 2px dashed var(--sk-border);
911
+ border-radius: 10px;
912
+ background: var(--sk-paper);
913
+ color: var(--sk-slate);
914
+ font-size: 13px;
915
+ font-family: inherit;
916
+ cursor: pointer;
917
+ transition: all 0.15s;
918
+ }
919
+
920
+ .sk-field__image-upload:hover {
921
+ border-color: var(--sk-accent);
922
+ color: var(--sk-accent);
923
+ background: var(--sk-warm);
924
+ }
925
+
926
+ .sk-field__image-preview {
927
+ display: flex;
928
+ align-items: center;
929
+ justify-content: space-between;
930
+ padding: 10px 12px;
931
+ background: var(--sk-warm);
932
+ border: 1px solid var(--sk-border);
933
+ border-radius: 8px;
934
+ }
935
+
936
+ .sk-field__image-thumb {
937
+ max-width: 80px;
938
+ max-height: 80px;
939
+ border-radius: 6px;
940
+ border: 1px solid var(--sk-border);
941
+ object-fit: cover;
942
+ margin-right: 12px;
943
+ flex-shrink: 0;
944
+ }
945
+
946
+ .sk-field__image-path {
947
+ font-size: 13px;
948
+ color: var(--sk-ink);
949
+ font-family: 'JetBrains Mono', monospace;
950
+ word-break: break-all;
951
+ }
952
+
953
+ .sk-field__image-actions {
954
+ display: flex;
955
+ gap: 4px;
956
+ flex-shrink: 0;
957
+ margin-left: 12px;
958
+ }
959
+
960
+ .sk-field__image-empty {
961
+ display: flex;
962
+ flex-direction: column;
963
+ gap: 8px;
964
+ }
965
+
966
+ .sk-field__image-browse {
967
+ align-self: flex-start;
968
+ }
969
+
970
+ /* Image Browser */
971
+ .sk-field__image-browser {
972
+ margin-top: 8px;
973
+ border: 1px solid var(--sk-border);
974
+ border-radius: 10px;
975
+ background: var(--sk-paper);
976
+ overflow: hidden;
977
+ }
978
+
979
+ .sk-field__image-browser-header {
980
+ display: flex;
981
+ align-items: center;
982
+ justify-content: space-between;
983
+ padding: 10px 12px;
984
+ border-bottom: 1px solid var(--sk-border);
985
+ background: var(--sk-warm);
986
+ }
987
+
988
+ .sk-field__image-browser-title {
989
+ font-size: 13px;
990
+ font-weight: 600;
991
+ color: var(--sk-ink);
992
+ }
993
+
994
+ .sk-field__image-browser-controls {
995
+ display: flex;
996
+ gap: 4px;
997
+ }
998
+
999
+ .sk-field__image-browser-loading,
1000
+ .sk-field__image-browser-empty {
1001
+ padding: 20px;
1002
+ text-align: center;
1003
+ font-size: 13px;
1004
+ color: var(--sk-slate);
1005
+ }
1006
+
1007
+ .sk-field__image-browser-grid {
1008
+ display: grid;
1009
+ grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
1010
+ gap: 8px;
1011
+ padding: 12px;
1012
+ }
1013
+
1014
+ .sk-field__image-browser-item {
1015
+ display: flex;
1016
+ flex-direction: column;
1017
+ align-items: center;
1018
+ gap: 4px;
1019
+ padding: 8px;
1020
+ border: 2px solid transparent;
1021
+ border-radius: 8px;
1022
+ background: none;
1023
+ cursor: pointer;
1024
+ transition: border-color 0.15s, background 0.15s;
1025
+ }
1026
+
1027
+ .sk-field__image-browser-item:hover {
1028
+ border-color: var(--sk-accent);
1029
+ background: rgba(196, 93, 62, 0.05);
1030
+ }
1031
+
1032
+ .sk-field__image-browser-thumb {
1033
+ width: 80px;
1034
+ height: 80px;
1035
+ object-fit: cover;
1036
+ border-radius: 6px;
1037
+ border: 1px solid var(--sk-border);
1038
+ }
1039
+
1040
+ .sk-field__image-browser-name {
1041
+ font-size: 11px;
1042
+ color: var(--sk-slate);
1043
+ text-align: center;
1044
+ word-break: break-all;
1045
+ max-width: 100%;
1046
+ overflow: hidden;
1047
+ text-overflow: ellipsis;
1048
+ white-space: nowrap;
1049
+ }
1050
+
1051
+ /* ---------------------------------------------------------------------------
1052
+ Toast Notifications
1053
+ --------------------------------------------------------------------------- */
1054
+
1055
+ .sk-toast-container {
1056
+ position: fixed;
1057
+ bottom: 24px;
1058
+ right: 24px;
1059
+ z-index: 9999;
1060
+ display: flex;
1061
+ flex-direction: column;
1062
+ gap: 8px;
1063
+ pointer-events: none;
1064
+ }
1065
+
1066
+ .sk-toast {
1067
+ pointer-events: auto;
1068
+ padding: 12px 20px;
1069
+ border-radius: 10px;
1070
+ font-size: 13px;
1071
+ font-weight: 500;
1072
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
1073
+ animation: sk-toast-in 0.25s ease-out;
1074
+ max-width: 360px;
1075
+ }
1076
+
1077
+ .sk-toast--success {
1078
+ background: #065f46;
1079
+ color: #d1fae5;
1080
+ }
1081
+
1082
+ .sk-toast--error {
1083
+ background: #991b1b;
1084
+ color: #fecaca;
1085
+ }
1086
+
1087
+ .sk-toast--info {
1088
+ background: var(--sk-sidebar-bg);
1089
+ color: var(--sk-sidebar-bright);
1090
+ }
1091
+
1092
+ @keyframes sk-toast-in {
1093
+ from { opacity: 0; transform: translateY(12px); }
1094
+ to { opacity: 1; transform: translateY(0); }
1095
+ }
1096
+
1097
+ /* ---------------------------------------------------------------------------
1098
+ Keyboard Shortcut Hint
1099
+ --------------------------------------------------------------------------- */
1100
+
1101
+ .sk-button kbd {
1102
+ display: inline-block;
1103
+ padding: 1px 5px;
1104
+ font-size: 11px;
1105
+ font-family: 'JetBrains Mono', monospace;
1106
+ background: rgba(255, 255, 255, 0.15);
1107
+ border-radius: 3px;
1108
+ margin-left: 8px;
1109
+ }
1110
+
1111
+ /* ---------------------------------------------------------------------------
1112
+ Page Builder (Immersive Preview)
1113
+ --------------------------------------------------------------------------- */
1114
+
1115
+ .sk-pb {
1116
+ position: fixed;
1117
+ inset: 0;
1118
+ z-index: 100;
1119
+ background: var(--sk-paper);
1120
+ }
1121
+
1122
+ .sk-pb__loading {
1123
+ display: flex;
1124
+ align-items: center;
1125
+ justify-content: center;
1126
+ height: 100vh;
1127
+ color: var(--sk-slate);
1128
+ font-size: 14px;
1129
+ }
1130
+
1131
+ /* Floating editor panel (same style as nav, but larger + resizable) */
1132
+ .sk-pb__editor-float {
1133
+ position: fixed;
1134
+ top: 16px;
1135
+ right: 16px;
1136
+ height: calc(100vh - 32px);
1137
+ max-width: 90vw;
1138
+ max-height: calc(100vh - 32px);
1139
+ z-index: 120;
1140
+ display: flex;
1141
+ flex-direction: column;
1142
+ border-radius: 12px;
1143
+ }
1144
+
1145
+ /* Compact mode: editor on the right, full height, fills the 1/3 space */
1146
+ .sk-pb--compact .sk-pb__editor-float {
1147
+ right: 16px;
1148
+ width: calc((100 - var(--sk-split, 66)) * 1vw - 32px);
1149
+ }
1150
+
1151
+ .sk-pb__editor-float .sk-pb__slide-over {
1152
+ position: static;
1153
+ width: 100%;
1154
+ height: 100%;
1155
+ max-width: none;
1156
+ border-radius: 12px;
1157
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
1158
+ animation: sk-editor-float-in 0.2s ease-out;
1159
+ overflow: hidden;
1160
+ }
1161
+
1162
+ .sk-pb__editor-float .sk-pb__slide-over-body {
1163
+ max-height: none;
1164
+ overflow-y: auto;
1165
+ flex: 1;
1166
+ min-height: 0;
1167
+ }
1168
+
1169
+ @keyframes sk-editor-float-in {
1170
+ from { opacity: 0; transform: scale(0.95); }
1171
+ to { opacity: 1; transform: scale(1); }
1172
+ }
1173
+
1174
+ /* Resize handle – bottom-left corner (panel always anchored top-right) */
1175
+ .sk-pb__resize-corner--bl {
1176
+ position: absolute;
1177
+ bottom: 0; left: 0;
1178
+ width: 18px;
1179
+ height: 18px;
1180
+ z-index: 5;
1181
+ cursor: nesw-resize;
1182
+ opacity: 0.35;
1183
+ transition: opacity 0.15s;
1184
+ background: repeating-linear-gradient(
1185
+ -45deg,
1186
+ transparent, transparent 3px,
1187
+ rgba(120,120,120,0.5) 3px, rgba(120,120,120,0.5) 4px
1188
+ );
1189
+ }
1190
+
1191
+ .sk-pb__resize-corner--bl:hover,
1192
+ .sk-pb__resize-corner--bl:active {
1193
+ opacity: 0.8;
1194
+ }
1195
+
1196
+ /* Compact mode: draggable split divider */
1197
+ .sk-pb__split-divider {
1198
+ position: fixed;
1199
+ top: 0;
1200
+ width: 6px;
1201
+ height: 100vh;
1202
+ cursor: col-resize;
1203
+ z-index: 125; /* above editor-float (120) */
1204
+ transition: background 0.15s;
1205
+ }
1206
+
1207
+ .sk-pb__split-divider::after {
1208
+ content: '';
1209
+ position: absolute;
1210
+ top: 50%;
1211
+ left: 50%;
1212
+ transform: translate(-50%, -50%);
1213
+ width: 2px;
1214
+ height: 40px;
1215
+ background: rgba(255, 255, 255, 0.2);
1216
+ border-radius: 1px;
1217
+ transition: background 0.15s, height 0.15s;
1218
+ }
1219
+
1220
+ .sk-pb__split-divider:hover::after,
1221
+ .sk-pb__split-divider:active::after {
1222
+ background: var(--sk-accent);
1223
+ height: 60px;
1224
+ }
1225
+
1226
+ /* Preview area */
1227
+ .sk-pb__preview {
1228
+ width: 100%;
1229
+ height: 100vh;
1230
+ overflow: hidden;
1231
+ }
1232
+
1233
+ .sk-pb__iframe-container {
1234
+ width: 100%;
1235
+ height: 100%;
1236
+ }
1237
+
1238
+ .sk-pb__iframe {
1239
+ width: 100%;
1240
+ height: 100%;
1241
+ border: none;
1242
+ background: white;
1243
+ }
1244
+
1245
+ /* During split/resize drag: prevent iframe from stealing mouse events */
1246
+ .sk-pb--splitting .sk-pb__iframe {
1247
+ pointer-events: none;
1248
+ }
1249
+
1250
+ /* Floating section navigation */
1251
+ .sk-pb__nav {
1252
+ position: fixed;
1253
+ top: 16px;
1254
+ left: 16px;
1255
+ width: 220px;
1256
+ background: var(--sk-sidebar-bg);
1257
+ border-radius: 12px;
1258
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
1259
+ z-index: 110;
1260
+ color: var(--sk-sidebar-text);
1261
+ overflow: hidden;
1262
+ transition: width 0.2s ease;
1263
+ }
1264
+
1265
+ .sk-pb__nav--collapsed {
1266
+ width: auto;
1267
+ }
1268
+
1269
+ /* Inline edit button inside collapsed nav header */
1270
+ .sk-pb__inline-edit-btn {
1271
+ display: flex;
1272
+ align-items: center;
1273
+ gap: 5px;
1274
+ background: var(--sk-accent, #c45d3e);
1275
+ color: #fff;
1276
+ border: none;
1277
+ border-radius: 6px;
1278
+ padding: 5px 10px;
1279
+ font: 500 12px/1.2 system-ui, sans-serif;
1280
+ cursor: pointer;
1281
+ white-space: nowrap;
1282
+ transition: background 0.15s;
1283
+ }
1284
+
1285
+ .sk-pb__inline-edit-btn:hover {
1286
+ background: var(--sk-accent-hover, #a84d33);
1287
+ }
1288
+
1289
+ .sk-pb__nav-header {
1290
+ display: flex;
1291
+ align-items: center;
1292
+ gap: 8px;
1293
+ padding: 12px 14px;
1294
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
1295
+ }
1296
+
1297
+ .sk-pb__nav--collapsed .sk-pb__nav-header {
1298
+ border-bottom: none;
1299
+ padding: 10px;
1300
+ gap: 4px;
1301
+ }
1302
+
1303
+ .sk-pb__nav-header-right {
1304
+ display: flex;
1305
+ align-items: center;
1306
+ gap: 2px;
1307
+ margin-left: auto;
1308
+ }
1309
+
1310
+ .sk-pb__collapse-btn {
1311
+ display: flex;
1312
+ align-items: center;
1313
+ justify-content: center;
1314
+ width: 26px;
1315
+ height: 26px;
1316
+ background: none;
1317
+ border: none;
1318
+ border-radius: 5px;
1319
+ cursor: pointer;
1320
+ color: var(--sk-sidebar-text);
1321
+ transition: all 0.1s;
1322
+ }
1323
+
1324
+ .sk-pb__collapse-btn:hover {
1325
+ background: rgba(255, 255, 255, 0.1);
1326
+ color: var(--sk-sidebar-bright);
1327
+ }
1328
+
1329
+ .sk-pb__nav-title {
1330
+ font-size: 13px;
1331
+ font-weight: 600;
1332
+ color: var(--sk-sidebar-bright);
1333
+ flex: 1;
1334
+ }
1335
+
1336
+ .sk-pb__page-switcher {
1337
+ display: flex;
1338
+ align-items: center;
1339
+ gap: 8px;
1340
+ padding: 6px 12px;
1341
+ border-bottom: 1px solid rgba(255, 255, 255, 0.08);
1342
+ }
1343
+
1344
+ .sk-pb__page-switcher-label {
1345
+ font-size: 11px;
1346
+ font-weight: 600;
1347
+ color: rgba(200, 197, 214, 0.6);
1348
+ text-transform: uppercase;
1349
+ letter-spacing: 0.05em;
1350
+ white-space: nowrap;
1351
+ }
1352
+
1353
+ .sk-pb__page-select {
1354
+ flex: 1;
1355
+ min-width: 0;
1356
+ padding: 5px 8px;
1357
+ font-size: 13px;
1358
+ font-family: inherit;
1359
+ background: rgba(255, 255, 255, 0.1);
1360
+ color: var(--sk-sidebar-bright);
1361
+ border: 1px solid rgba(255, 255, 255, 0.15);
1362
+ border-radius: 6px;
1363
+ cursor: pointer;
1364
+ }
1365
+
1366
+ .sk-pb__page-select:hover {
1367
+ background: rgba(255, 255, 255, 0.15);
1368
+ }
1369
+
1370
+ .sk-pb__page-select option {
1371
+ background: var(--sk-sidebar-bg);
1372
+ color: var(--sk-sidebar-bright);
1373
+ }
1374
+
1375
+ .sk-pb__nav-actions {
1376
+ display: flex;
1377
+ gap: 2px;
1378
+ }
1379
+
1380
+ .sk-pb__viewport-btn {
1381
+ display: flex;
1382
+ align-items: center;
1383
+ justify-content: center;
1384
+ width: 26px;
1385
+ height: 26px;
1386
+ background: none;
1387
+ border: none;
1388
+ border-radius: 5px;
1389
+ cursor: pointer;
1390
+ color: var(--sk-sidebar-text);
1391
+ transition: all 0.1s;
1392
+ }
1393
+
1394
+ .sk-pb__viewport-btn:hover {
1395
+ background: rgba(255, 255, 255, 0.1);
1396
+ color: var(--sk-sidebar-bright);
1397
+ }
1398
+
1399
+ .sk-pb__viewport-btn--active {
1400
+ background: rgba(255, 255, 255, 0.12);
1401
+ color: var(--sk-accent);
1402
+ }
1403
+
1404
+ .sk-pb__exit-btn {
1405
+ display: flex;
1406
+ align-items: center;
1407
+ justify-content: center;
1408
+ width: 26px;
1409
+ height: 26px;
1410
+ background: none;
1411
+ border: none;
1412
+ border-radius: 5px;
1413
+ cursor: pointer;
1414
+ color: var(--sk-sidebar-text);
1415
+ transition: all 0.1s;
1416
+ margin-left: 4px;
1417
+ }
1418
+
1419
+ .sk-pb__exit-btn:hover {
1420
+ background: rgba(239, 68, 68, 0.2);
1421
+ color: #fca5a5;
1422
+ }
1423
+
1424
+ /* Section list */
1425
+ .sk-pb__section-list {
1426
+ padding: 8px;
1427
+ max-height: calc(100vh - 120px);
1428
+ overflow-y: auto;
1429
+ }
1430
+
1431
+ .sk-pb__section-pill {
1432
+ display: flex;
1433
+ align-items: center;
1434
+ gap: 6px;
1435
+ width: 100%;
1436
+ padding: 6px 8px;
1437
+ background: none;
1438
+ border: none;
1439
+ border-radius: 6px;
1440
+ font-family: inherit;
1441
+ font-size: 13px;
1442
+ font-weight: 500;
1443
+ color: var(--sk-sidebar-text);
1444
+ transition: all 0.1s;
1445
+ margin-bottom: 2px;
1446
+ }
1447
+
1448
+ .sk-pb__section-pill:hover {
1449
+ background: rgba(255, 255, 255, 0.08);
1450
+ color: var(--sk-sidebar-bright);
1451
+ }
1452
+
1453
+ .sk-pb__section-pill--editing {
1454
+ background: rgba(196, 93, 62, 0.2);
1455
+ color: var(--sk-accent);
1456
+ }
1457
+
1458
+ .sk-pb__section-pill--visible {
1459
+ background: rgba(255, 255, 255, 0.06);
1460
+ border-left: 2px solid var(--sk-accent);
1461
+ padding-left: 6px;
1462
+ }
1463
+
1464
+ .sk-pb__section-pill--disabled {
1465
+ opacity: 0.4;
1466
+ }
1467
+
1468
+ .sk-pb__section-pill--dragging {
1469
+ opacity: 0.3;
1470
+ }
1471
+
1472
+ .sk-pb__section-pill--dragover {
1473
+ border-top: 2px solid var(--sk-accent);
1474
+ margin-top: -2px;
1475
+ }
1476
+
1477
+ .sk-pb__section-grip {
1478
+ display: flex;
1479
+ opacity: 0.3;
1480
+ cursor: grab;
1481
+ flex-shrink: 0;
1482
+ }
1483
+
1484
+ .sk-pb__section-pill:hover .sk-pb__section-grip {
1485
+ opacity: 0.6;
1486
+ }
1487
+
1488
+ .sk-pb__section-main {
1489
+ display: flex;
1490
+ align-items: center;
1491
+ gap: 8px;
1492
+ flex: 1;
1493
+ min-width: 0;
1494
+ background: none;
1495
+ border: none;
1496
+ padding: 2px 0;
1497
+ cursor: pointer;
1498
+ font-family: inherit;
1499
+ font-size: 13px;
1500
+ font-weight: 500;
1501
+ color: inherit;
1502
+ text-align: left;
1503
+ }
1504
+
1505
+ .sk-pb__section-icon {
1506
+ display: flex;
1507
+ align-items: center;
1508
+ flex-shrink: 0;
1509
+ opacity: 0.7;
1510
+ }
1511
+
1512
+ .sk-pb__section-pill--editing .sk-pb__section-icon {
1513
+ opacity: 1;
1514
+ }
1515
+
1516
+ .sk-pb__section-label {
1517
+ flex: 1;
1518
+ overflow: hidden;
1519
+ text-overflow: ellipsis;
1520
+ white-space: nowrap;
1521
+ }
1522
+
1523
+ .sk-pb__section-toggle {
1524
+ display: flex;
1525
+ align-items: center;
1526
+ justify-content: center;
1527
+ width: 24px;
1528
+ height: 24px;
1529
+ background: none;
1530
+ border: none;
1531
+ border-radius: 4px;
1532
+ cursor: pointer;
1533
+ color: var(--sk-sidebar-text);
1534
+ opacity: 0;
1535
+ transition: opacity 0.1s, background 0.1s;
1536
+ flex-shrink: 0;
1537
+ }
1538
+
1539
+ .sk-pb__section-pill:hover .sk-pb__section-toggle {
1540
+ opacity: 0.5;
1541
+ }
1542
+
1543
+ .sk-pb__section-toggle:hover {
1544
+ opacity: 1 !important;
1545
+ background: rgba(255, 255, 255, 0.1);
1546
+ }
1547
+
1548
+ .sk-pb__section-pill--disabled .sk-pb__section-toggle {
1549
+ opacity: 0.6;
1550
+ }
1551
+
1552
+ .sk-pb__nav-footer {
1553
+ padding: 8px;
1554
+ border-top: 1px solid rgba(255, 255, 255, 0.06);
1555
+ }
1556
+
1557
+ .sk-pb__save-btn {
1558
+ display: flex;
1559
+ align-items: center;
1560
+ justify-content: center;
1561
+ gap: 6px;
1562
+ width: 100%;
1563
+ padding: 8px 12px;
1564
+ background: var(--sk-accent);
1565
+ color: #fff;
1566
+ border: none;
1567
+ border-radius: 6px;
1568
+ font-family: inherit;
1569
+ font-size: 13px;
1570
+ font-weight: 600;
1571
+ cursor: pointer;
1572
+ transition: opacity 0.1s;
1573
+ }
1574
+
1575
+ .sk-pb__save-btn:hover {
1576
+ opacity: 0.9;
1577
+ }
1578
+
1579
+ .sk-pb__save-btn:disabled {
1580
+ opacity: 0.6;
1581
+ cursor: not-allowed;
1582
+ }
1583
+
1584
+ /* Slide-over editor panel */
1585
+ .sk-pb__slide-over {
1586
+ position: fixed;
1587
+ top: 0;
1588
+ right: 0;
1589
+ width: 420px;
1590
+ max-width: 90vw;
1591
+ height: 100vh;
1592
+ background: var(--sk-surface);
1593
+ box-shadow: -4px 0 24px rgba(0, 0, 0, 0.12);
1594
+ z-index: 120;
1595
+ display: flex;
1596
+ flex-direction: column;
1597
+ animation: sk-slide-in 0.2s ease-out;
1598
+ }
1599
+
1600
+ @keyframes sk-slide-in {
1601
+ from { transform: translateX(100%); }
1602
+ to { transform: translateX(0); }
1603
+ }
1604
+
1605
+ .sk-pb__slide-over-header {
1606
+ display: flex;
1607
+ align-items: center;
1608
+ justify-content: space-between;
1609
+ padding: 16px 20px;
1610
+ border-bottom: 1px solid var(--sk-border);
1611
+ flex-shrink: 0;
1612
+ }
1613
+
1614
+ .sk-pb__slide-over-title {
1615
+ display: flex;
1616
+ align-items: center;
1617
+ gap: 10px;
1618
+ min-width: 0;
1619
+ }
1620
+
1621
+ .sk-pb__slide-over-header h3 {
1622
+ font-size: 16px;
1623
+ font-weight: 700;
1624
+ color: var(--sk-ink);
1625
+ margin: 0;
1626
+ white-space: nowrap;
1627
+ }
1628
+
1629
+ .sk-pb__draft-indicator {
1630
+ display: flex;
1631
+ align-items: center;
1632
+ gap: 6px;
1633
+ font-size: 12px;
1634
+ font-weight: 500;
1635
+ color: #e0a030;
1636
+ white-space: nowrap;
1637
+ }
1638
+
1639
+ .sk-pb__draft-dot {
1640
+ width: 8px;
1641
+ height: 8px;
1642
+ border-radius: 50%;
1643
+ background: #e0a030;
1644
+ animation: sk-pulse-dot 2s ease-in-out infinite;
1645
+ }
1646
+
1647
+ @keyframes sk-pulse-dot {
1648
+ 0%, 100% { opacity: 1; }
1649
+ 50% { opacity: 0.4; }
1650
+ }
1651
+
1652
+ .sk-pb__discard-btn {
1653
+ display: flex;
1654
+ align-items: center;
1655
+ justify-content: center;
1656
+ width: 30px;
1657
+ height: 30px;
1658
+ background: none;
1659
+ border: 1px solid var(--sk-border);
1660
+ border-radius: 6px;
1661
+ cursor: pointer;
1662
+ color: var(--sk-slate);
1663
+ transition: all 0.15s;
1664
+ }
1665
+
1666
+ .sk-pb__discard-btn:hover {
1667
+ background: #3a2020;
1668
+ border-color: #c45050;
1669
+ color: #e06060;
1670
+ }
1671
+
1672
+ .sk-pb__undo-btn {
1673
+ display: flex;
1674
+ align-items: center;
1675
+ justify-content: center;
1676
+ width: 30px;
1677
+ height: 30px;
1678
+ background: none;
1679
+ border: 1px solid var(--sk-border);
1680
+ border-radius: 6px;
1681
+ cursor: pointer;
1682
+ color: var(--sk-slate);
1683
+ transition: all 0.15s;
1684
+ }
1685
+
1686
+ .sk-pb__undo-btn:hover:not(:disabled) {
1687
+ background: var(--sk-warm);
1688
+ color: var(--sk-ink);
1689
+ }
1690
+
1691
+ .sk-pb__undo-btn:disabled {
1692
+ opacity: 0.3;
1693
+ cursor: not-allowed;
1694
+ }
1695
+
1696
+ .sk-pb__slide-over-actions {
1697
+ display: flex;
1698
+ align-items: center;
1699
+ gap: 4px;
1700
+ }
1701
+
1702
+ .sk-pb__saving {
1703
+ font-size: 12px;
1704
+ color: var(--sk-slate);
1705
+ }
1706
+
1707
+ .sk-pb__header-save-btn {
1708
+ display: flex;
1709
+ align-items: center;
1710
+ justify-content: center;
1711
+ width: 32px;
1712
+ height: 32px;
1713
+ padding: 0;
1714
+ background: var(--sk-accent);
1715
+ color: #fff;
1716
+ border: none;
1717
+ border-radius: 6px;
1718
+ font-size: 13px;
1719
+ font-weight: 600;
1720
+ cursor: pointer;
1721
+ transition: background 0.15s;
1722
+ }
1723
+
1724
+ .sk-pb__header-save-btn:hover {
1725
+ background: var(--sk-accent-dark);
1726
+ }
1727
+
1728
+ .sk-pb__header-save-btn:disabled {
1729
+ opacity: 0.6;
1730
+ cursor: not-allowed;
1731
+ }
1732
+
1733
+ .sk-pb__close-btn {
1734
+ display: flex;
1735
+ align-items: center;
1736
+ justify-content: center;
1737
+ width: 32px;
1738
+ height: 32px;
1739
+ background: none;
1740
+ border: 1px solid var(--sk-border);
1741
+ border-radius: 6px;
1742
+ cursor: pointer;
1743
+ color: var(--sk-slate);
1744
+ transition: all 0.1s;
1745
+ }
1746
+
1747
+ .sk-pb__close-btn:hover {
1748
+ background: var(--sk-warm);
1749
+ color: var(--sk-ink);
1750
+ }
1751
+
1752
+ .sk-pb__slide-over-body {
1753
+ flex: 1;
1754
+ overflow-y: auto;
1755
+ padding: 20px;
1756
+ }
1757
+
1758
+ /* Conflict UI */
1759
+ .sk-pb__conflict {
1760
+ margin-bottom: 16px;
1761
+ border: 2px solid #e53e3e;
1762
+ border-radius: 8px;
1763
+ overflow: hidden;
1764
+ }
1765
+ .sk-pb__conflict-header {
1766
+ display: flex;
1767
+ align-items: center;
1768
+ gap: 8px;
1769
+ padding: 10px 14px;
1770
+ background: #fff5f5;
1771
+ color: #c53030;
1772
+ font-size: 13px;
1773
+ }
1774
+ .sk-pb__conflict-diff {
1775
+ padding: 0 14px;
1776
+ }
1777
+ .sk-pb__conflict-field {
1778
+ padding: 10px 0;
1779
+ border-top: 1px solid #fed7d7;
1780
+ }
1781
+ .sk-pb__conflict-label {
1782
+ font-size: 11px;
1783
+ font-weight: 600;
1784
+ text-transform: uppercase;
1785
+ letter-spacing: 0.5px;
1786
+ color: var(--sk-slate);
1787
+ margin-bottom: 6px;
1788
+ }
1789
+ .sk-pb__conflict-values {
1790
+ display: grid;
1791
+ grid-template-columns: 1fr 1fr;
1792
+ gap: 8px;
1793
+ }
1794
+ .sk-pb__conflict-local,
1795
+ .sk-pb__conflict-remote {
1796
+ font-size: 12px;
1797
+ line-height: 1.4;
1798
+ }
1799
+ .sk-pb__conflict-tag {
1800
+ display: inline-block;
1801
+ font-size: 10px;
1802
+ font-weight: 600;
1803
+ text-transform: uppercase;
1804
+ letter-spacing: 0.3px;
1805
+ padding: 1px 6px;
1806
+ border-radius: 3px;
1807
+ margin-bottom: 4px;
1808
+ }
1809
+ .sk-pb__conflict-local .sk-pb__conflict-tag {
1810
+ background: #ebf8ff;
1811
+ color: #2b6cb0;
1812
+ }
1813
+ .sk-pb__conflict-remote .sk-pb__conflict-tag {
1814
+ background: #fefcbf;
1815
+ color: #975a16;
1816
+ }
1817
+ .sk-pb__conflict-local pre,
1818
+ .sk-pb__conflict-remote pre {
1819
+ margin: 0;
1820
+ padding: 6px 8px;
1821
+ background: var(--sk-warm);
1822
+ border-radius: 4px;
1823
+ white-space: pre-wrap;
1824
+ word-break: break-word;
1825
+ font-size: 11px;
1826
+ max-height: 120px;
1827
+ overflow-y: auto;
1828
+ }
1829
+ .sk-pb__conflict-actions {
1830
+ display: flex;
1831
+ gap: 8px;
1832
+ padding: 12px 14px;
1833
+ border-top: 1px solid #fed7d7;
1834
+ }
1835
+
1836
+ .sk-pb__slide-over-info {
1837
+ color: var(--sk-slate);
1838
+ font-size: 14px;
1839
+ line-height: 1.5;
1840
+ padding: 16px;
1841
+ background: var(--sk-surface-2, #1e1e2e);
1842
+ border-radius: 8px;
1843
+ border: 1px dashed var(--sk-border, #333);
1844
+ }
1845
+
1846
+ .sk-pb__slide-over-loading {
1847
+ padding: 24px;
1848
+ color: var(--sk-slate);
1849
+ font-size: 14px;
1850
+ }
1851
+
1852
+ /* Editor expand button (shown when editor is collapsed) */
1853
+ .sk-pb__editor-expand-btn {
1854
+ position: fixed;
1855
+ top: 16px;
1856
+ right: 16px;
1857
+ width: 40px;
1858
+ height: 40px;
1859
+ display: flex;
1860
+ align-items: center;
1861
+ justify-content: center;
1862
+ background: var(--sk-sidebar-bg);
1863
+ border: none;
1864
+ border-radius: 10px;
1865
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
1866
+ cursor: pointer;
1867
+ color: var(--sk-sidebar-text);
1868
+ z-index: 120;
1869
+ transition: all 0.1s;
1870
+ }
1871
+
1872
+ .sk-pb__editor-expand-btn:hover {
1873
+ background: var(--sk-sidebar-hover);
1874
+ color: var(--sk-sidebar-bright);
1875
+ }
1876
+
1877
+ /* Draggable panels: cursor hint on headers */
1878
+ .sk-pb__nav-header,
1879
+ .sk-pb__slide-over-header {
1880
+ cursor: grab;
1881
+ }
1882
+
1883
+ .sk-pb__nav-header:active,
1884
+ .sk-pb__slide-over-header:active {
1885
+ cursor: grabbing;
1886
+ }
1887
+
1888
+ /* Reset positions button */
1889
+ .sk-pb__reset-pos-btn {
1890
+ position: fixed;
1891
+ bottom: 16px;
1892
+ left: 16px;
1893
+ width: 36px;
1894
+ height: 36px;
1895
+ display: flex;
1896
+ align-items: center;
1897
+ justify-content: center;
1898
+ background: var(--sk-sidebar-bg);
1899
+ border: none;
1900
+ border-radius: 8px;
1901
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
1902
+ cursor: pointer;
1903
+ color: var(--sk-sidebar-text);
1904
+ z-index: 130;
1905
+ transition: all 0.15s;
1906
+ }
1907
+
1908
+ .sk-pb__reset-pos-btn:hover {
1909
+ background: var(--sk-accent);
1910
+ color: #fff;
1911
+ }
1912
+
1913
+ /* ---------------------------------------------------------------------------
1914
+ Icon Picker
1915
+ --------------------------------------------------------------------------- */
1916
+
1917
+ .sk-field--icon {
1918
+ position: relative;
1919
+ }
1920
+
1921
+ .sk-icon-picker__trigger {
1922
+ display: inline-flex;
1923
+ align-items: center;
1924
+ gap: 8px;
1925
+ padding: 8px 14px;
1926
+ background: var(--sk-surface, #fff);
1927
+ border: 1px solid var(--sk-border);
1928
+ border-radius: 8px;
1929
+ font: inherit;
1930
+ font-size: 13px;
1931
+ cursor: pointer;
1932
+ color: var(--sk-ink);
1933
+ transition: border-color 0.15s;
1934
+ }
1935
+
1936
+ .sk-icon-picker__trigger:hover {
1937
+ border-color: var(--sk-accent);
1938
+ }
1939
+
1940
+ .sk-icon-picker__placeholder {
1941
+ color: var(--sk-slate);
1942
+ }
1943
+
1944
+ .sk-icon-picker__panel {
1945
+ position: absolute;
1946
+ top: 100%;
1947
+ left: 0;
1948
+ margin-top: 4px;
1949
+ width: 320px;
1950
+ max-height: 360px;
1951
+ background: var(--sk-surface, #fff);
1952
+ border: 1px solid var(--sk-border);
1953
+ border-radius: 10px;
1954
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
1955
+ z-index: 200;
1956
+ display: flex;
1957
+ flex-direction: column;
1958
+ overflow: hidden;
1959
+ }
1960
+
1961
+ .sk-icon-picker__search {
1962
+ width: 100%;
1963
+ padding: 10px 12px;
1964
+ border: none;
1965
+ border-bottom: 1px solid var(--sk-border);
1966
+ font: inherit;
1967
+ font-size: 13px;
1968
+ outline: none;
1969
+ background: transparent;
1970
+ color: var(--sk-ink);
1971
+ }
1972
+
1973
+ .sk-icon-picker__search::placeholder {
1974
+ color: var(--sk-slate);
1975
+ }
1976
+
1977
+ .sk-icon-picker__grid {
1978
+ display: grid;
1979
+ grid-template-columns: repeat(auto-fill, minmax(36px, 1fr));
1980
+ gap: 2px;
1981
+ padding: 8px;
1982
+ overflow-y: auto;
1983
+ max-height: 300px;
1984
+ }
1985
+
1986
+ .sk-icon-picker__item {
1987
+ display: flex;
1988
+ align-items: center;
1989
+ justify-content: center;
1990
+ width: 36px;
1991
+ height: 36px;
1992
+ background: none;
1993
+ border: 1px solid transparent;
1994
+ border-radius: 6px;
1995
+ cursor: pointer;
1996
+ color: var(--sk-ink);
1997
+ transition: all 0.1s;
1998
+ }
1999
+
2000
+ .sk-icon-picker__item:hover {
2001
+ background: var(--sk-warm, #f5f0eb);
2002
+ border-color: var(--sk-border);
2003
+ }
2004
+
2005
+ .sk-icon-picker__item--active {
2006
+ background: rgba(196, 93, 62, 0.1);
2007
+ border-color: var(--sk-accent);
2008
+ color: var(--sk-accent);
2009
+ }
2010
+
2011
+ .sk-icon-picker__empty {
2012
+ grid-column: 1 / -1;
2013
+ text-align: center;
2014
+ padding: 20px;
2015
+ color: var(--sk-slate);
2016
+ font-size: 13px;
2017
+ }