@screenbook/ui 1.6.0 → 1.7.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.
@@ -0,0 +1,1351 @@
1
+ /* Mock Editor - Tabbed Panels Design (v2 Accessible) */
2
+
3
+ /* Import distinctive fonts */
4
+ @import url("https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&family=DM+Sans:wght@400;500;600;700&display=swap");
5
+
6
+ /* CSS Variables for Mock Editor */
7
+ .mock-editor {
8
+ --me-font-mono: "JetBrains Mono", ui-monospace, monospace;
9
+ --me-font-sans: "DM Sans", system-ui, sans-serif;
10
+
11
+ /* Blueprint colors - improved contrast */
12
+ --me-bg-deep: #0a0e14;
13
+ --me-bg-panel: #0f1318;
14
+ --me-bg-surface: #151a22;
15
+ --me-bg-elevated: #1a2029;
16
+ --me-bg-hover: #1f2530;
17
+
18
+ --me-border: #252d3a;
19
+ --me-border-subtle: #1c2330;
20
+ --me-border-accent: #2dd4bf;
21
+
22
+ /* Improved contrast colors for accessibility */
23
+ --me-text: #e8ecf1;
24
+ --me-text-secondary: #a1afc2;
25
+ --me-text-muted: #7c8a9d;
26
+
27
+ --me-accent: #2dd4bf;
28
+ --me-accent-light: #5eead4;
29
+ --me-accent-glow: rgba(45, 212, 191, 0.15);
30
+ --me-accent-subtle: rgba(45, 212, 191, 0.08);
31
+
32
+ /* Element type colors */
33
+ --me-color-button: #2dd4bf;
34
+ --me-color-input: #818cf8;
35
+ --me-color-link: #a78bfa;
36
+ --me-color-text: #94a3b8;
37
+ --me-color-image: #fbbf24;
38
+ --me-color-list: #f472b6;
39
+ --me-color-table: #22d3ee;
40
+
41
+ /* Grid pattern */
42
+ --me-grid-color: rgba(45, 212, 191, 0.03);
43
+ --me-grid-line: rgba(45, 212, 191, 0.06);
44
+
45
+ /* Shadows */
46
+ --me-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
47
+ --me-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.25);
48
+ --me-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.3);
49
+ --me-shadow-glow: 0 0 20px var(--me-accent-glow);
50
+
51
+ /* Focus ring for accessibility */
52
+ --me-focus-ring: 0 0 0 2px var(--me-bg-deep), 0 0 0 4px var(--me-accent);
53
+ }
54
+
55
+ /* Reduced motion support */
56
+ @media (prefers-reduced-motion: reduce) {
57
+ .mock-editor,
58
+ .mock-editor *,
59
+ .mock-editor *::before,
60
+ .mock-editor *::after {
61
+ animation: none;
62
+ transition: none;
63
+ }
64
+ }
65
+
66
+ /* Screen reader only utility */
67
+ .mock-editor__sr-only {
68
+ position: absolute;
69
+ width: 1px;
70
+ height: 1px;
71
+ padding: 0;
72
+ margin: -1px;
73
+ overflow: hidden;
74
+ clip: rect(0, 0, 0, 0);
75
+ white-space: nowrap;
76
+ border: 0;
77
+ }
78
+
79
+ /* Skip link for keyboard navigation */
80
+ .mock-editor__skip-link {
81
+ position: absolute;
82
+ left: -9999px;
83
+ top: 8px;
84
+ z-index: 1000;
85
+ padding: 12px 24px;
86
+ background: var(--me-accent);
87
+ color: var(--me-bg-deep);
88
+ font-weight: 600;
89
+ font-size: 14px;
90
+ border-radius: 8px;
91
+ text-decoration: none;
92
+ transition: left 0.2s ease;
93
+ }
94
+
95
+ .mock-editor__skip-link:focus {
96
+ left: 16px;
97
+ }
98
+
99
+ /* Main Container - 3-column layout */
100
+ .mock-editor {
101
+ display: grid;
102
+ grid-template-columns: 240px 1fr 420px;
103
+ height: 100%;
104
+ min-height: 100vh;
105
+ background: var(--me-bg-deep);
106
+ font-family: var(--me-font-sans);
107
+ position: relative;
108
+ }
109
+
110
+ /* Two-layer grid background */
111
+ .mock-editor::before,
112
+ .mock-editor::after {
113
+ content: "";
114
+ position: fixed;
115
+ inset: 0;
116
+ pointer-events: none;
117
+ }
118
+
119
+ .mock-editor::before {
120
+ background-image:
121
+ linear-gradient(var(--me-grid-line) 1px, transparent 1px),
122
+ linear-gradient(90deg, var(--me-grid-line) 1px, transparent 1px);
123
+ background-size: 24px 24px;
124
+ opacity: 0.5;
125
+ }
126
+
127
+ .mock-editor::after {
128
+ background-image:
129
+ linear-gradient(rgba(45, 212, 191, 0.02) 1px, transparent 1px),
130
+ linear-gradient(90deg, rgba(45, 212, 191, 0.02) 1px, transparent 1px);
131
+ background-size: 96px 96px;
132
+ opacity: 0.3;
133
+ }
134
+
135
+ /* ========================================
136
+ LEFT SIDEBAR - Section Navigation
137
+ ======================================== */
138
+ .mock-editor__sidebar {
139
+ background: var(--me-bg-panel);
140
+ border-right: 1px solid var(--me-border);
141
+ display: flex;
142
+ flex-direction: column;
143
+ position: relative;
144
+ z-index: 2;
145
+ }
146
+
147
+ .mock-editor__sidebar-header {
148
+ padding: 20px;
149
+ border-bottom: 1px solid var(--me-border);
150
+ }
151
+
152
+ .mock-editor__title {
153
+ font-family: var(--me-font-mono);
154
+ font-size: 14px;
155
+ font-weight: 600;
156
+ color: var(--me-text);
157
+ letter-spacing: -0.02em;
158
+ display: block;
159
+ }
160
+
161
+ .mock-editor__screen-info {
162
+ margin-top: 12px;
163
+ display: flex;
164
+ flex-direction: column;
165
+ gap: 4px;
166
+ }
167
+
168
+ .mock-editor__screen-label {
169
+ font-family: var(--me-font-mono);
170
+ font-size: 9px;
171
+ font-weight: 600;
172
+ color: var(--me-text-muted);
173
+ text-transform: uppercase;
174
+ letter-spacing: 0.1em;
175
+ }
176
+
177
+ .mock-editor__screen-badge {
178
+ font-family: var(--me-font-mono);
179
+ font-size: 12px;
180
+ font-weight: 500;
181
+ color: var(--me-accent);
182
+ }
183
+
184
+ .mock-editor__sidebar-content {
185
+ flex: 1;
186
+ padding: 16px;
187
+ overflow-y: auto;
188
+ }
189
+
190
+ .mock-editor__sections-label {
191
+ font-family: var(--me-font-mono);
192
+ font-size: 10px;
193
+ font-weight: 600;
194
+ color: var(--me-text-muted);
195
+ text-transform: uppercase;
196
+ letter-spacing: 0.1em;
197
+ margin-bottom: 12px;
198
+ }
199
+
200
+ /* Tab List */
201
+ .mock-editor__tab-list {
202
+ display: flex;
203
+ flex-direction: column;
204
+ gap: 4px;
205
+ }
206
+
207
+ /* Section Tab */
208
+ .mock-editor__section-tab {
209
+ display: flex;
210
+ align-items: center;
211
+ gap: 12px;
212
+ padding: 12px 14px;
213
+ background: var(--me-bg-surface);
214
+ border: 1px solid var(--me-border-subtle);
215
+ border-radius: 10px;
216
+ cursor: pointer;
217
+ transition: all 0.2s ease;
218
+ text-align: left;
219
+ position: relative;
220
+ overflow: hidden;
221
+ }
222
+
223
+ .mock-editor__section-tab:hover {
224
+ background: var(--me-bg-elevated);
225
+ border-color: var(--me-border);
226
+ }
227
+
228
+ .mock-editor__section-tab:focus-visible {
229
+ outline: none;
230
+ box-shadow: var(--me-focus-ring);
231
+ }
232
+
233
+ .mock-editor__section-tab--active {
234
+ background: var(--me-accent-subtle);
235
+ border-color: var(--me-accent);
236
+ }
237
+
238
+ .mock-editor__section-tab--active:hover {
239
+ background: var(--me-accent-subtle);
240
+ }
241
+
242
+ /* Tab Icon */
243
+ .mock-editor__tab-icon {
244
+ width: 32px;
245
+ height: 32px;
246
+ background: var(--me-bg-elevated);
247
+ border-radius: 8px;
248
+ display: flex;
249
+ align-items: center;
250
+ justify-content: center;
251
+ font-family: var(--me-font-mono);
252
+ font-size: 12px;
253
+ font-weight: 600;
254
+ color: var(--me-text-muted);
255
+ flex-shrink: 0;
256
+ transition: all 0.2s ease;
257
+ }
258
+
259
+ .mock-editor__section-tab--active .mock-editor__tab-icon {
260
+ background: var(--me-accent);
261
+ color: var(--me-bg-deep);
262
+ }
263
+
264
+ /* Tab Content */
265
+ .mock-editor__tab-content {
266
+ flex: 1;
267
+ min-width: 0;
268
+ display: flex;
269
+ flex-direction: column;
270
+ gap: 2px;
271
+ }
272
+
273
+ .mock-editor__tab-title {
274
+ font-size: 13px;
275
+ font-weight: 500;
276
+ color: var(--me-text);
277
+ white-space: nowrap;
278
+ overflow: hidden;
279
+ text-overflow: ellipsis;
280
+ }
281
+
282
+ .mock-editor__tab-count {
283
+ font-family: var(--me-font-mono);
284
+ font-size: 10px;
285
+ color: var(--me-text-muted);
286
+ }
287
+
288
+ .mock-editor__section-tab--active .mock-editor__tab-count {
289
+ color: var(--me-accent);
290
+ }
291
+
292
+ /* Tab Indicator (glow effect) */
293
+ .mock-editor__tab-indicator {
294
+ position: absolute;
295
+ left: 0;
296
+ top: 50%;
297
+ transform: translateY(-50%);
298
+ width: 3px;
299
+ height: 60%;
300
+ background: var(--me-accent);
301
+ border-radius: 0 2px 2px 0;
302
+ box-shadow: 0 0 12px var(--me-accent);
303
+ }
304
+
305
+ /* Add Section Button */
306
+ .mock-editor__add-section-btn {
307
+ width: 100%;
308
+ font-family: var(--me-font-mono);
309
+ font-size: 12px;
310
+ font-weight: 500;
311
+ color: var(--me-text-muted);
312
+ background: transparent;
313
+ border: 1px dashed var(--me-border);
314
+ border-radius: 10px;
315
+ padding: 14px;
316
+ margin-top: 12px;
317
+ cursor: pointer;
318
+ transition: all 0.2s ease;
319
+ }
320
+
321
+ .mock-editor__add-section-btn:hover {
322
+ color: var(--me-accent);
323
+ border-color: var(--me-accent);
324
+ background: var(--me-accent-subtle);
325
+ }
326
+
327
+ .mock-editor__add-section-btn:focus-visible {
328
+ outline: none;
329
+ box-shadow: var(--me-focus-ring);
330
+ }
331
+
332
+ /* ========================================
333
+ CENTER PANEL - Editor
334
+ ======================================== */
335
+ .mock-editor__main {
336
+ display: flex;
337
+ flex-direction: column;
338
+ position: relative;
339
+ z-index: 1;
340
+ background: linear-gradient(
341
+ 180deg,
342
+ var(--me-bg-panel) 0%,
343
+ var(--me-bg-deep) 100%
344
+ );
345
+ }
346
+
347
+ /* Editor Header */
348
+ .mock-editor__header {
349
+ display: flex;
350
+ align-items: center;
351
+ justify-content: space-between;
352
+ gap: 16px;
353
+ padding: 16px 24px;
354
+ background: var(--me-bg-surface);
355
+ border-bottom: 1px solid var(--me-border);
356
+ }
357
+
358
+ .mock-editor__header-left {
359
+ display: flex;
360
+ align-items: center;
361
+ gap: 16px;
362
+ }
363
+
364
+ .mock-editor__header-right {
365
+ display: flex;
366
+ align-items: center;
367
+ gap: 8px;
368
+ }
369
+
370
+ /* Field Label */
371
+ .mock-editor__field-label {
372
+ display: flex;
373
+ flex-direction: column;
374
+ gap: 4px;
375
+ }
376
+
377
+ .mock-editor__field-label-text {
378
+ font-family: var(--me-font-mono);
379
+ font-size: 9px;
380
+ font-weight: 600;
381
+ color: var(--me-text-muted);
382
+ text-transform: uppercase;
383
+ letter-spacing: 0.05em;
384
+ }
385
+
386
+ /* Section Title Input */
387
+ .mock-editor__section-input {
388
+ font-family: var(--me-font-sans);
389
+ font-size: 14px;
390
+ font-weight: 500;
391
+ color: var(--me-text);
392
+ background: var(--me-bg-elevated);
393
+ border: 1px solid var(--me-border);
394
+ border-radius: 8px;
395
+ padding: 10px 14px;
396
+ min-width: 200px;
397
+ transition: all 0.15s ease;
398
+ }
399
+
400
+ .mock-editor__section-input:hover {
401
+ border-color: var(--me-border-accent);
402
+ }
403
+
404
+ .mock-editor__section-input:focus {
405
+ outline: none;
406
+ border-color: var(--me-accent);
407
+ box-shadow: 0 0 0 3px var(--me-accent-glow);
408
+ }
409
+
410
+ .mock-editor__section-input::placeholder {
411
+ color: var(--me-text-muted);
412
+ }
413
+
414
+ /* Layout Toggle Group */
415
+ .mock-editor__layout-group {
416
+ display: flex;
417
+ gap: 4px;
418
+ background: var(--me-bg-elevated);
419
+ padding: 4px;
420
+ border-radius: 8px;
421
+ border: none;
422
+ margin: 0;
423
+ }
424
+
425
+ .mock-editor__layout-option {
426
+ cursor: pointer;
427
+ }
428
+
429
+ .mock-editor__layout-label {
430
+ display: block;
431
+ font-family: var(--me-font-mono);
432
+ font-size: 11px;
433
+ font-weight: 500;
434
+ color: var(--me-text-muted);
435
+ padding: 8px 12px;
436
+ border-radius: 6px;
437
+ transition: all 0.15s ease;
438
+ }
439
+
440
+ .mock-editor__layout-option:hover .mock-editor__layout-label {
441
+ color: var(--me-text);
442
+ background: var(--me-bg-hover);
443
+ }
444
+
445
+ .mock-editor__layout-option--active .mock-editor__layout-label {
446
+ color: var(--me-accent);
447
+ background: var(--me-bg-surface);
448
+ }
449
+
450
+ .mock-editor__layout-option input:focus-visible + .mock-editor__layout-label {
451
+ box-shadow: var(--me-focus-ring);
452
+ }
453
+
454
+ /* Template Select */
455
+ .mock-editor__template-select {
456
+ font-family: var(--me-font-sans);
457
+ font-size: 13px;
458
+ font-weight: 500;
459
+ color: var(--me-text-secondary);
460
+ background: var(--me-bg-elevated);
461
+ border: 1px solid var(--me-border);
462
+ border-radius: 6px;
463
+ padding: 8px 32px 8px 12px;
464
+ cursor: pointer;
465
+ transition: all 0.15s ease;
466
+ appearance: none;
467
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
468
+ background-repeat: no-repeat;
469
+ background-position: right 10px center;
470
+ }
471
+
472
+ .mock-editor__template-select:hover {
473
+ border-color: var(--me-border-accent);
474
+ color: var(--me-text);
475
+ }
476
+
477
+ .mock-editor__template-select:focus {
478
+ outline: none;
479
+ border-color: var(--me-accent);
480
+ box-shadow: 0 0 0 3px var(--me-accent-glow);
481
+ }
482
+
483
+ /* Status Messages */
484
+ .mock-editor__status {
485
+ font-size: 12px;
486
+ font-weight: 500;
487
+ }
488
+
489
+ .mock-editor__status--success {
490
+ color: #4ade80;
491
+ }
492
+
493
+ .mock-editor__status--error {
494
+ color: #f87171;
495
+ }
496
+
497
+ /* Buttons */
498
+ .mock-editor__btn {
499
+ font-family: var(--me-font-sans);
500
+ font-size: 13px;
501
+ font-weight: 500;
502
+ padding: 8px 16px;
503
+ border-radius: 6px;
504
+ cursor: pointer;
505
+ transition: all 0.15s ease;
506
+ display: inline-flex;
507
+ align-items: center;
508
+ gap: 6px;
509
+ }
510
+
511
+ .mock-editor__btn:focus-visible {
512
+ outline: none;
513
+ box-shadow: var(--me-focus-ring);
514
+ }
515
+
516
+ .mock-editor__btn--secondary {
517
+ color: var(--me-text-secondary);
518
+ background: var(--me-bg-elevated);
519
+ border: 1px solid var(--me-border);
520
+ }
521
+
522
+ .mock-editor__btn--secondary:hover {
523
+ color: var(--me-text);
524
+ background: var(--me-bg-hover);
525
+ border-color: var(--me-border-accent);
526
+ }
527
+
528
+ .mock-editor__btn--primary {
529
+ color: var(--me-bg-deep);
530
+ background: linear-gradient(135deg, var(--me-accent) 0%, #14b8a6 100%);
531
+ border: none;
532
+ font-weight: 600;
533
+ }
534
+
535
+ .mock-editor__btn--primary:hover {
536
+ transform: translateY(-1px);
537
+ box-shadow: var(--me-shadow-glow);
538
+ }
539
+
540
+ .mock-editor__btn--primary:disabled {
541
+ opacity: 0.5;
542
+ cursor: not-allowed;
543
+ transform: none;
544
+ box-shadow: none;
545
+ }
546
+
547
+ /* Editor Content */
548
+ .mock-editor__editor-content {
549
+ flex: 1;
550
+ padding: 24px;
551
+ overflow-y: auto;
552
+ }
553
+
554
+ .mock-editor__editor-content:focus {
555
+ outline: none;
556
+ }
557
+
558
+ .mock-editor__editor-content:focus-visible {
559
+ box-shadow: inset 0 0 0 2px var(--me-accent-glow);
560
+ }
561
+
562
+ /* Elements Container */
563
+ .mock-editor__elements {
564
+ display: flex;
565
+ flex-direction: column;
566
+ gap: 12px;
567
+ margin-bottom: 20px;
568
+ }
569
+
570
+ /* Empty State */
571
+ .mock-editor__empty-elements {
572
+ font-family: var(--me-font-mono);
573
+ font-size: 12px;
574
+ color: var(--me-text-muted);
575
+ font-style: italic;
576
+ padding: 32px 24px;
577
+ text-align: center;
578
+ border: 1px dashed var(--me-border);
579
+ border-radius: 12px;
580
+ background: var(--me-bg-surface);
581
+ }
582
+
583
+ /* Element Card */
584
+ .mock-editor__element {
585
+ background: var(--me-bg-surface);
586
+ border: 1px solid var(--me-border);
587
+ border-radius: 12px;
588
+ overflow: hidden;
589
+ transition: all 0.2s ease;
590
+ }
591
+
592
+ .mock-editor__element:hover {
593
+ border-color: var(--me-border-accent);
594
+ box-shadow: var(--me-shadow-md);
595
+ }
596
+
597
+ .mock-editor__element:focus-within {
598
+ border-color: var(--me-accent);
599
+ }
600
+
601
+ /* Element color variations */
602
+ .mock-editor__element--button {
603
+ border-left: 3px solid var(--me-color-button);
604
+ }
605
+ .mock-editor__element--input {
606
+ border-left: 3px solid var(--me-color-input);
607
+ }
608
+ .mock-editor__element--link {
609
+ border-left: 3px solid var(--me-color-link);
610
+ }
611
+ .mock-editor__element--text {
612
+ border-left: 3px solid var(--me-color-text);
613
+ }
614
+ .mock-editor__element--image {
615
+ border-left: 3px solid var(--me-color-image);
616
+ }
617
+ .mock-editor__element--list {
618
+ border-left: 3px solid var(--me-color-list);
619
+ }
620
+ .mock-editor__element--table {
621
+ border-left: 3px solid var(--me-color-table);
622
+ }
623
+
624
+ .mock-editor__element-header {
625
+ display: flex;
626
+ align-items: center;
627
+ justify-content: space-between;
628
+ padding: 12px 16px;
629
+ background: var(--me-bg-elevated);
630
+ border-bottom: 1px solid var(--me-border-subtle);
631
+ }
632
+
633
+ .mock-editor__element-type {
634
+ font-family: var(--me-font-mono);
635
+ font-size: 10px;
636
+ font-weight: 600;
637
+ text-transform: uppercase;
638
+ letter-spacing: 0.05em;
639
+ padding: 4px 10px;
640
+ border-radius: 4px;
641
+ background: rgba(255, 255, 255, 0.05);
642
+ }
643
+
644
+ .mock-editor__element-type--button {
645
+ color: var(--me-color-button);
646
+ background: rgba(45, 212, 191, 0.1);
647
+ }
648
+ .mock-editor__element-type--input {
649
+ color: var(--me-color-input);
650
+ background: rgba(129, 140, 248, 0.1);
651
+ }
652
+ .mock-editor__element-type--link {
653
+ color: var(--me-color-link);
654
+ background: rgba(167, 139, 250, 0.1);
655
+ }
656
+ .mock-editor__element-type--text {
657
+ color: var(--me-color-text);
658
+ background: rgba(148, 163, 184, 0.1);
659
+ }
660
+ .mock-editor__element-type--image {
661
+ color: var(--me-color-image);
662
+ background: rgba(251, 191, 36, 0.1);
663
+ }
664
+ .mock-editor__element-type--list {
665
+ color: var(--me-color-list);
666
+ background: rgba(244, 114, 182, 0.1);
667
+ }
668
+ .mock-editor__element-type--table {
669
+ color: var(--me-color-table);
670
+ background: rgba(34, 211, 238, 0.1);
671
+ }
672
+
673
+ .mock-editor__element-actions {
674
+ display: flex;
675
+ align-items: center;
676
+ gap: 4px;
677
+ }
678
+
679
+ .mock-editor__remove-btn {
680
+ width: 28px;
681
+ height: 28px;
682
+ display: flex;
683
+ align-items: center;
684
+ justify-content: center;
685
+ background: transparent;
686
+ border: 1px solid transparent;
687
+ border-radius: 6px;
688
+ color: var(--me-text-muted);
689
+ cursor: pointer;
690
+ transition: all 0.15s ease;
691
+ font-size: 16px;
692
+ }
693
+
694
+ .mock-editor__remove-btn:hover {
695
+ color: #f87171;
696
+ background: rgba(248, 113, 113, 0.1);
697
+ border-color: rgba(248, 113, 113, 0.3);
698
+ }
699
+
700
+ .mock-editor__remove-btn:focus-visible {
701
+ outline: none;
702
+ box-shadow: var(--me-focus-ring);
703
+ }
704
+
705
+ .mock-editor__element-fields {
706
+ padding: 16px;
707
+ display: grid;
708
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
709
+ gap: 12px;
710
+ }
711
+
712
+ .mock-editor__field-input,
713
+ .mock-editor__field-select {
714
+ width: 100%;
715
+ font-family: var(--me-font-sans);
716
+ font-size: 13px;
717
+ color: var(--me-text);
718
+ background: var(--me-bg-elevated);
719
+ border: 1px solid var(--me-border);
720
+ border-radius: 6px;
721
+ padding: 10px 12px;
722
+ transition: all 0.15s ease;
723
+ }
724
+
725
+ .mock-editor__field-input:hover,
726
+ .mock-editor__field-select:hover {
727
+ border-color: var(--me-border-accent);
728
+ }
729
+
730
+ .mock-editor__field-input:focus,
731
+ .mock-editor__field-select:focus {
732
+ outline: none;
733
+ border-color: var(--me-accent);
734
+ box-shadow: 0 0 0 3px var(--me-accent-glow);
735
+ }
736
+
737
+ .mock-editor__field-input::placeholder {
738
+ color: var(--me-text-muted);
739
+ }
740
+
741
+ .mock-editor__field-input--small {
742
+ width: 80px;
743
+ }
744
+
745
+ .mock-editor__field-row {
746
+ display: flex;
747
+ gap: 8px;
748
+ }
749
+
750
+ /* Element Add Buttons */
751
+ .mock-editor__element-buttons {
752
+ display: flex;
753
+ flex-wrap: wrap;
754
+ gap: 8px;
755
+ padding: 16px 0;
756
+ border: none;
757
+ margin: 0;
758
+ }
759
+
760
+ .mock-editor__add-element-btn {
761
+ font-family: var(--me-font-mono);
762
+ font-size: 11px;
763
+ font-weight: 500;
764
+ color: var(--me-text-secondary);
765
+ background: var(--me-bg-surface);
766
+ border: 1px solid var(--me-border);
767
+ border-radius: 6px;
768
+ padding: 10px 14px;
769
+ cursor: pointer;
770
+ transition: all 0.15s ease;
771
+ }
772
+
773
+ .mock-editor__add-element-btn:hover {
774
+ color: var(--me-text);
775
+ background: var(--me-bg-elevated);
776
+ border-color: var(--me-border-accent);
777
+ transform: translateY(-1px);
778
+ }
779
+
780
+ .mock-editor__add-element-btn:focus-visible {
781
+ outline: none;
782
+ box-shadow: var(--me-focus-ring);
783
+ }
784
+
785
+ .mock-editor__add-element-btn--button:hover {
786
+ border-color: var(--me-color-button);
787
+ }
788
+ .mock-editor__add-element-btn--input:hover {
789
+ border-color: var(--me-color-input);
790
+ }
791
+ .mock-editor__add-element-btn--link:hover {
792
+ border-color: var(--me-color-link);
793
+ }
794
+ .mock-editor__add-element-btn--text:hover {
795
+ border-color: var(--me-color-text);
796
+ }
797
+ .mock-editor__add-element-btn--image:hover {
798
+ border-color: var(--me-color-image);
799
+ }
800
+ .mock-editor__add-element-btn--list:hover {
801
+ border-color: var(--me-color-list);
802
+ }
803
+ .mock-editor__add-element-btn--table:hover {
804
+ border-color: var(--me-color-table);
805
+ }
806
+
807
+ /* Children Sections */
808
+ .mock-editor__children {
809
+ margin-top: 24px;
810
+ padding-top: 24px;
811
+ border-top: 1px solid var(--me-border);
812
+ }
813
+
814
+ .mock-editor__children-title {
815
+ font-family: var(--me-font-mono);
816
+ font-size: 11px;
817
+ font-weight: 600;
818
+ color: var(--me-text-muted);
819
+ text-transform: uppercase;
820
+ letter-spacing: 0.05em;
821
+ margin-bottom: 12px;
822
+ }
823
+
824
+ /* Add Child Section Button */
825
+ .mock-editor__add-child-btn {
826
+ width: 100%;
827
+ font-family: var(--me-font-mono);
828
+ font-size: 12px;
829
+ font-weight: 500;
830
+ color: var(--me-text-muted);
831
+ background: transparent;
832
+ border: 1px dashed var(--me-border);
833
+ border-radius: 8px;
834
+ padding: 12px;
835
+ margin-top: 16px;
836
+ cursor: pointer;
837
+ transition: all 0.2s ease;
838
+ }
839
+
840
+ .mock-editor__add-child-btn:hover {
841
+ color: var(--me-accent);
842
+ border-color: var(--me-accent);
843
+ background: var(--me-accent-subtle);
844
+ }
845
+
846
+ .mock-editor__add-child-btn:focus-visible {
847
+ outline: none;
848
+ box-shadow: var(--me-focus-ring);
849
+ }
850
+
851
+ /* Section Card (for child sections) */
852
+ .mock-editor__section {
853
+ margin-bottom: 12px;
854
+ border-radius: 10px;
855
+ background: var(--me-bg-surface);
856
+ border: 1px solid var(--me-border);
857
+ overflow: hidden;
858
+ transition: all 0.2s ease;
859
+ }
860
+
861
+ .mock-editor__section:hover {
862
+ border-color: var(--me-border-accent);
863
+ }
864
+
865
+ .mock-editor__section--child {
866
+ margin-left: 16px;
867
+ border-left: 2px solid var(--me-accent);
868
+ border-top-left-radius: 0;
869
+ border-bottom-left-radius: 0;
870
+ }
871
+
872
+ .mock-editor__section-header {
873
+ display: flex;
874
+ align-items: center;
875
+ gap: 10px;
876
+ padding: 12px 14px;
877
+ background: var(--me-bg-elevated);
878
+ border-bottom: 1px solid var(--me-border-subtle);
879
+ }
880
+
881
+ .mock-editor__layout-select {
882
+ font-family: var(--me-font-mono);
883
+ font-size: 11px;
884
+ font-weight: 500;
885
+ color: var(--me-text-secondary);
886
+ background: var(--me-bg-surface);
887
+ border: 1px solid var(--me-border-subtle);
888
+ border-radius: 4px;
889
+ padding: 8px 28px 8px 10px;
890
+ cursor: pointer;
891
+ transition: all 0.15s ease;
892
+ appearance: none;
893
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
894
+ background-repeat: no-repeat;
895
+ background-position: right 8px center;
896
+ }
897
+
898
+ .mock-editor__layout-select:hover,
899
+ .mock-editor__layout-select:focus {
900
+ border-color: var(--me-accent);
901
+ color: var(--me-text);
902
+ }
903
+
904
+ .mock-editor__depth-badge {
905
+ font-family: var(--me-font-mono);
906
+ font-size: 9px;
907
+ font-weight: 600;
908
+ color: var(--me-accent);
909
+ background: var(--me-accent-subtle);
910
+ padding: 3px 6px;
911
+ border-radius: 3px;
912
+ text-transform: uppercase;
913
+ letter-spacing: 0.05em;
914
+ }
915
+
916
+ .mock-editor__section-body {
917
+ padding: 14px;
918
+ }
919
+
920
+ .mock-editor__section-footer {
921
+ padding: 10px 14px;
922
+ border-top: 1px solid var(--me-border-subtle);
923
+ }
924
+
925
+ /* ========================================
926
+ RIGHT PANEL - Preview
927
+ ======================================== */
928
+ .mock-editor__preview-panel {
929
+ background: var(--me-bg-panel);
930
+ border-left: 1px solid var(--me-border);
931
+ display: flex;
932
+ flex-direction: column;
933
+ position: relative;
934
+ z-index: 2;
935
+ }
936
+
937
+ .mock-editor__preview-header {
938
+ display: flex;
939
+ align-items: center;
940
+ justify-content: space-between;
941
+ padding: 16px 20px;
942
+ border-bottom: 1px solid var(--me-border);
943
+ }
944
+
945
+ .mock-editor__preview-label {
946
+ font-family: var(--me-font-mono);
947
+ font-size: 10px;
948
+ font-weight: 600;
949
+ color: var(--me-text-muted);
950
+ text-transform: uppercase;
951
+ letter-spacing: 0.1em;
952
+ display: flex;
953
+ align-items: center;
954
+ gap: 8px;
955
+ }
956
+
957
+ .mock-editor__preview-label::before {
958
+ content: "";
959
+ width: 8px;
960
+ height: 8px;
961
+ background: var(--me-accent);
962
+ border-radius: 50%;
963
+ animation: pulse 2s ease-in-out infinite;
964
+ }
965
+
966
+ @keyframes pulse {
967
+ 0%,
968
+ 100% {
969
+ opacity: 0.4;
970
+ transform: scale(0.9);
971
+ }
972
+ 50% {
973
+ opacity: 1;
974
+ transform: scale(1.1);
975
+ }
976
+ }
977
+
978
+ .mock-editor__preview-scale {
979
+ font-family: var(--me-font-mono);
980
+ font-size: 11px;
981
+ color: var(--me-text-muted);
982
+ }
983
+
984
+ .mock-editor__preview-wrapper {
985
+ flex: 1;
986
+ padding: 20px;
987
+ overflow-y: auto;
988
+ }
989
+
990
+ /* Preview Container */
991
+ .mock-editor__preview {
992
+ background: var(--me-bg-surface);
993
+ border: 2px solid var(--me-border);
994
+ border-radius: 16px;
995
+ overflow: hidden;
996
+ box-shadow: var(--me-shadow-lg);
997
+ position: relative;
998
+ }
999
+
1000
+ /* Corner accents */
1001
+ .mock-editor__preview::before,
1002
+ .mock-editor__preview::after {
1003
+ content: "";
1004
+ position: absolute;
1005
+ width: 24px;
1006
+ height: 24px;
1007
+ border: 2px solid rgba(45, 212, 191, 0.3);
1008
+ pointer-events: none;
1009
+ }
1010
+
1011
+ .mock-editor__preview::before {
1012
+ top: 8px;
1013
+ left: 8px;
1014
+ border-right: none;
1015
+ border-bottom: none;
1016
+ border-radius: 4px 0 0 0;
1017
+ }
1018
+
1019
+ .mock-editor__preview::after {
1020
+ bottom: 8px;
1021
+ right: 8px;
1022
+ border-left: none;
1023
+ border-top: none;
1024
+ border-radius: 0 0 4px 0;
1025
+ }
1026
+
1027
+ .mock-editor__preview-header-bar {
1028
+ background: linear-gradient(135deg, var(--me-accent) 0%, #14b8a6 100%);
1029
+ padding: 12px 18px;
1030
+ color: var(--me-bg-deep);
1031
+ font-size: 14px;
1032
+ font-weight: 600;
1033
+ }
1034
+
1035
+ .mock-editor__preview-body {
1036
+ padding: 18px;
1037
+ display: flex;
1038
+ flex-direction: column;
1039
+ gap: 16px;
1040
+ }
1041
+
1042
+ .mock-editor__preview-empty {
1043
+ color: var(--me-text-muted);
1044
+ font-size: 13px;
1045
+ text-align: center;
1046
+ padding: 48px 24px;
1047
+ font-style: italic;
1048
+ }
1049
+
1050
+ /* Preview Section */
1051
+ .mock-editor__preview-section {
1052
+ background: var(--me-bg-elevated);
1053
+ border-radius: 12px;
1054
+ overflow: hidden;
1055
+ }
1056
+
1057
+ .mock-editor__preview-section--child {
1058
+ margin-left: 12px;
1059
+ border-left: 2px solid rgba(45, 212, 191, 0.3);
1060
+ border-top-left-radius: 0;
1061
+ border-bottom-left-radius: 0;
1062
+ }
1063
+
1064
+ .mock-editor__preview-section-title {
1065
+ background: var(--me-accent-subtle);
1066
+ padding: 10px 16px;
1067
+ border-bottom: 1px solid rgba(45, 212, 191, 0.15);
1068
+ font-family: var(--me-font-mono);
1069
+ font-size: 11px;
1070
+ font-weight: 600;
1071
+ color: var(--me-accent);
1072
+ text-transform: uppercase;
1073
+ letter-spacing: 0.05em;
1074
+ }
1075
+
1076
+ .mock-editor__preview-section-title--child {
1077
+ font-size: 10px;
1078
+ background: rgba(45, 212, 191, 0.05);
1079
+ }
1080
+
1081
+ .mock-editor__preview-section-body {
1082
+ padding: 16px;
1083
+ display: flex;
1084
+ flex-direction: column;
1085
+ gap: 12px;
1086
+ }
1087
+
1088
+ .mock-editor__preview-section-body--horizontal {
1089
+ flex-direction: row;
1090
+ flex-wrap: wrap;
1091
+ }
1092
+
1093
+ .mock-editor__preview-section-body--grid {
1094
+ display: grid;
1095
+ grid-template-columns: repeat(2, 1fr);
1096
+ gap: 12px;
1097
+ }
1098
+
1099
+ /* Preview Elements */
1100
+ .mock-editor__preview-element {
1101
+ flex: 1;
1102
+ min-width: 0;
1103
+ }
1104
+
1105
+ .mock-editor__preview-element--horizontal {
1106
+ min-width: 100px;
1107
+ }
1108
+
1109
+ /* Preview Button */
1110
+ .mock-editor__preview-button {
1111
+ padding: 12px 16px;
1112
+ border-radius: 8px;
1113
+ font-size: 12px;
1114
+ font-weight: 600;
1115
+ text-align: center;
1116
+ }
1117
+
1118
+ .mock-editor__preview-button--primary {
1119
+ background: linear-gradient(135deg, var(--me-accent) 0%, #14b8a6 100%);
1120
+ color: var(--me-bg-deep);
1121
+ }
1122
+
1123
+ .mock-editor__preview-button--secondary {
1124
+ background: var(--me-bg-surface);
1125
+ color: var(--me-text-secondary);
1126
+ border: 1px solid var(--me-border);
1127
+ }
1128
+
1129
+ .mock-editor__preview-button--danger {
1130
+ background: linear-gradient(135deg, #f87171 0%, #ef4444 100%);
1131
+ color: white;
1132
+ }
1133
+
1134
+ /* Preview Input */
1135
+ .mock-editor__preview-input {
1136
+ display: flex;
1137
+ flex-direction: column;
1138
+ gap: 6px;
1139
+ }
1140
+
1141
+ .mock-editor__preview-input-label {
1142
+ font-size: 11px;
1143
+ color: var(--me-text-muted);
1144
+ text-transform: uppercase;
1145
+ font-weight: 500;
1146
+ letter-spacing: 0.03em;
1147
+ }
1148
+
1149
+ .mock-editor__preview-input-field {
1150
+ background: var(--me-bg-deep);
1151
+ border: 1px solid var(--me-border);
1152
+ border-radius: 6px;
1153
+ padding: 12px 14px;
1154
+ font-size: 12px;
1155
+ color: var(--me-text-muted);
1156
+ }
1157
+
1158
+ /* Preview Text */
1159
+ .mock-editor__preview-text--heading {
1160
+ font-size: 18px;
1161
+ font-weight: 700;
1162
+ color: var(--me-text);
1163
+ }
1164
+
1165
+ .mock-editor__preview-text--subheading {
1166
+ font-size: 14px;
1167
+ font-weight: 600;
1168
+ color: var(--me-text-secondary);
1169
+ }
1170
+
1171
+ .mock-editor__preview-text--body {
1172
+ font-size: 13px;
1173
+ color: var(--me-text-secondary);
1174
+ }
1175
+
1176
+ .mock-editor__preview-text--caption {
1177
+ font-size: 11px;
1178
+ color: var(--me-text-muted);
1179
+ }
1180
+
1181
+ /* Preview Link */
1182
+ .mock-editor__preview-link {
1183
+ font-size: 12px;
1184
+ color: var(--me-accent);
1185
+ text-decoration: underline;
1186
+ text-underline-offset: 2px;
1187
+ }
1188
+
1189
+ /* Preview Image */
1190
+ .mock-editor__preview-image {
1191
+ background: var(--me-bg-surface);
1192
+ border: 2px dashed var(--me-border);
1193
+ border-radius: 8px;
1194
+ display: flex;
1195
+ align-items: center;
1196
+ justify-content: center;
1197
+ font-size: 11px;
1198
+ color: var(--me-text-muted);
1199
+ max-height: 120px;
1200
+ }
1201
+
1202
+ /* Preview List */
1203
+ .mock-editor__preview-list {
1204
+ background: var(--me-bg-deep);
1205
+ border-radius: 8px;
1206
+ overflow: hidden;
1207
+ }
1208
+
1209
+ .mock-editor__preview-list-header {
1210
+ padding: 10px 14px;
1211
+ background: var(--me-bg-surface);
1212
+ font-size: 11px;
1213
+ color: var(--me-text-muted);
1214
+ border-bottom: 1px solid var(--me-border);
1215
+ }
1216
+
1217
+ .mock-editor__preview-list-item {
1218
+ padding: 10px 14px;
1219
+ border-bottom: 1px solid var(--me-border-subtle);
1220
+ }
1221
+
1222
+ .mock-editor__preview-list-item:last-child {
1223
+ border-bottom: none;
1224
+ }
1225
+
1226
+ .mock-editor__preview-list-placeholder {
1227
+ height: 4px;
1228
+ background: var(--me-border);
1229
+ border-radius: 2px;
1230
+ width: 70%;
1231
+ }
1232
+
1233
+ /* Preview Table */
1234
+ .mock-editor__preview-table {
1235
+ background: var(--me-bg-deep);
1236
+ border-radius: 8px;
1237
+ overflow: hidden;
1238
+ }
1239
+
1240
+ .mock-editor__preview-table-header {
1241
+ padding: 10px 14px;
1242
+ background: var(--me-bg-surface);
1243
+ font-size: 11px;
1244
+ color: var(--me-text-muted);
1245
+ border-bottom: 1px solid var(--me-border);
1246
+ }
1247
+
1248
+ .mock-editor__preview-table table {
1249
+ width: 100%;
1250
+ border-collapse: collapse;
1251
+ font-size: 11px;
1252
+ }
1253
+
1254
+ .mock-editor__preview-table th {
1255
+ padding: 8px 10px;
1256
+ text-align: left;
1257
+ color: var(--me-text-muted);
1258
+ font-weight: 600;
1259
+ border-bottom: 1px solid var(--me-border);
1260
+ }
1261
+
1262
+ .mock-editor__preview-table td {
1263
+ padding: 8px 10px;
1264
+ border-bottom: 1px solid var(--me-border-subtle);
1265
+ }
1266
+
1267
+ .mock-editor__preview-table tr:last-child td {
1268
+ border-bottom: none;
1269
+ }
1270
+
1271
+ .mock-editor__preview-table-placeholder {
1272
+ height: 4px;
1273
+ background: var(--me-border);
1274
+ border-radius: 2px;
1275
+ width: 60%;
1276
+ }
1277
+
1278
+ /* Animations */
1279
+ .mock-editor__element,
1280
+ .mock-editor__section,
1281
+ .mock-editor__preview-section {
1282
+ animation: fadeSlideIn 0.2s ease;
1283
+ }
1284
+
1285
+ @keyframes fadeSlideIn {
1286
+ from {
1287
+ opacity: 0;
1288
+ transform: translateY(-8px);
1289
+ }
1290
+ to {
1291
+ opacity: 1;
1292
+ transform: translateY(0);
1293
+ }
1294
+ }
1295
+
1296
+ /* Tab glow animation */
1297
+ .mock-editor__section-tab--active::before {
1298
+ content: "";
1299
+ position: absolute;
1300
+ inset: 0;
1301
+ background: radial-gradient(
1302
+ circle at left center,
1303
+ var(--me-accent-glow) 0%,
1304
+ transparent 70%
1305
+ );
1306
+ pointer-events: none;
1307
+ }
1308
+
1309
+ /* Scrollbar styling */
1310
+ .mock-editor ::-webkit-scrollbar {
1311
+ width: 8px;
1312
+ height: 8px;
1313
+ }
1314
+
1315
+ .mock-editor ::-webkit-scrollbar-track {
1316
+ background: transparent;
1317
+ }
1318
+
1319
+ .mock-editor ::-webkit-scrollbar-thumb {
1320
+ background: var(--me-border);
1321
+ border-radius: 4px;
1322
+ }
1323
+
1324
+ .mock-editor ::-webkit-scrollbar-thumb:hover {
1325
+ background: var(--me-border-accent);
1326
+ }
1327
+
1328
+ /* Responsive adjustments */
1329
+ @media (max-width: 1200px) {
1330
+ .mock-editor {
1331
+ grid-template-columns: 200px 1fr 360px;
1332
+ }
1333
+ }
1334
+
1335
+ @media (max-width: 900px) {
1336
+ .mock-editor {
1337
+ grid-template-columns: 1fr;
1338
+ grid-template-rows: auto 1fr auto;
1339
+ }
1340
+
1341
+ .mock-editor__sidebar {
1342
+ border-right: none;
1343
+ border-bottom: 1px solid var(--me-border);
1344
+ }
1345
+
1346
+ .mock-editor__preview-panel {
1347
+ border-left: none;
1348
+ border-top: 1px solid var(--me-border);
1349
+ max-height: 50vh;
1350
+ }
1351
+ }