@yurikilian/lex4 0.3.2 → 1.0.1

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.
package/dist/style.css CHANGED
@@ -1,859 +1,953 @@
1
- *, ::before, ::after {
2
- --tw-border-spacing-x: 0;
3
- --tw-border-spacing-y: 0;
4
- --tw-translate-x: 0;
5
- --tw-translate-y: 0;
6
- --tw-rotate: 0;
7
- --tw-skew-x: 0;
8
- --tw-skew-y: 0;
9
- --tw-scale-x: 1;
10
- --tw-scale-y: 1;
11
- --tw-pan-x: ;
12
- --tw-pan-y: ;
13
- --tw-pinch-zoom: ;
14
- --tw-scroll-snap-strictness: proximity;
15
- --tw-gradient-from-position: ;
16
- --tw-gradient-via-position: ;
17
- --tw-gradient-to-position: ;
18
- --tw-ordinal: ;
19
- --tw-slashed-zero: ;
20
- --tw-numeric-figure: ;
21
- --tw-numeric-spacing: ;
22
- --tw-numeric-fraction: ;
23
- --tw-ring-inset: ;
24
- --tw-ring-offset-width: 0px;
25
- --tw-ring-offset-color: #fff;
26
- --tw-ring-color: rgb(59 130 246 / 0.5);
27
- --tw-ring-offset-shadow: 0 0 #0000;
28
- --tw-ring-shadow: 0 0 #0000;
29
- --tw-shadow: 0 0 #0000;
30
- --tw-shadow-colored: 0 0 #0000;
31
- --tw-blur: ;
32
- --tw-brightness: ;
33
- --tw-contrast: ;
34
- --tw-grayscale: ;
35
- --tw-hue-rotate: ;
36
- --tw-invert: ;
37
- --tw-saturate: ;
38
- --tw-sepia: ;
39
- --tw-drop-shadow: ;
40
- --tw-backdrop-blur: ;
41
- --tw-backdrop-brightness: ;
42
- --tw-backdrop-contrast: ;
43
- --tw-backdrop-grayscale: ;
44
- --tw-backdrop-hue-rotate: ;
45
- --tw-backdrop-invert: ;
46
- --tw-backdrop-opacity: ;
47
- --tw-backdrop-saturate: ;
48
- --tw-backdrop-sepia: ;
49
- --tw-contain-size: ;
50
- --tw-contain-layout: ;
51
- --tw-contain-paint: ;
52
- --tw-contain-style: ;
53
- }
54
- ::backdrop {
55
- --tw-border-spacing-x: 0;
56
- --tw-border-spacing-y: 0;
57
- --tw-translate-x: 0;
58
- --tw-translate-y: 0;
59
- --tw-rotate: 0;
60
- --tw-skew-x: 0;
61
- --tw-skew-y: 0;
62
- --tw-scale-x: 1;
63
- --tw-scale-y: 1;
64
- --tw-pan-x: ;
65
- --tw-pan-y: ;
66
- --tw-pinch-zoom: ;
67
- --tw-scroll-snap-strictness: proximity;
68
- --tw-gradient-from-position: ;
69
- --tw-gradient-via-position: ;
70
- --tw-gradient-to-position: ;
71
- --tw-ordinal: ;
72
- --tw-slashed-zero: ;
73
- --tw-numeric-figure: ;
74
- --tw-numeric-spacing: ;
75
- --tw-numeric-fraction: ;
76
- --tw-ring-inset: ;
77
- --tw-ring-offset-width: 0px;
78
- --tw-ring-offset-color: #fff;
79
- --tw-ring-color: rgb(59 130 246 / 0.5);
80
- --tw-ring-offset-shadow: 0 0 #0000;
81
- --tw-ring-shadow: 0 0 #0000;
82
- --tw-shadow: 0 0 #0000;
83
- --tw-shadow-colored: 0 0 #0000;
84
- --tw-blur: ;
85
- --tw-brightness: ;
86
- --tw-contrast: ;
87
- --tw-grayscale: ;
88
- --tw-hue-rotate: ;
89
- --tw-invert: ;
90
- --tw-saturate: ;
91
- --tw-sepia: ;
92
- --tw-drop-shadow: ;
93
- --tw-backdrop-blur: ;
94
- --tw-backdrop-brightness: ;
95
- --tw-backdrop-contrast: ;
96
- --tw-backdrop-grayscale: ;
97
- --tw-backdrop-hue-rotate: ;
98
- --tw-backdrop-invert: ;
99
- --tw-backdrop-opacity: ;
100
- --tw-backdrop-saturate: ;
101
- --tw-backdrop-sepia: ;
102
- --tw-contain-size: ;
103
- --tw-contain-layout: ;
104
- --tw-contain-paint: ;
105
- --tw-contain-style: ;
106
- }
107
- .\!container {
108
- width: 100% !important;
109
- }
110
- .container {
111
- width: 100%;
112
- }
113
- @media (min-width: 640px) {
114
- .\!container {
115
- max-width: 640px !important;
116
- }
117
- .container {
118
- max-width: 640px;
119
- }
120
- }
121
- @media (min-width: 768px) {
122
- .\!container {
123
- max-width: 768px !important;
124
- }
125
- .container {
126
- max-width: 768px;
127
- }
128
- }
129
- @media (min-width: 1024px) {
130
- .\!container {
131
- max-width: 1024px !important;
132
- }
133
- .container {
134
- max-width: 1024px;
135
- }
136
- }
137
- @media (min-width: 1280px) {
138
- .\!container {
139
- max-width: 1280px !important;
140
- }
141
- .container {
142
- max-width: 1280px;
143
- }
144
- }
145
- @media (min-width: 1536px) {
146
- .\!container {
147
- max-width: 1536px !important;
148
- }
149
- .container {
150
- max-width: 1536px;
151
- }
152
- }
153
- .pointer-events-none {
154
- pointer-events: none;
155
- }
156
- .visible {
157
- visibility: visible;
1
+ /* ───────────────────────────────────────────────────────────
2
+ Lex4 Editor — Pure CSS (no Tailwind in production output)
3
+ ─────────────────────────────────────────────────────────── */
4
+
5
+ /* ── Scoped reset ────────────────────────────────────────── */
6
+ .lex4-editor *,
7
+ .lex4-editor *::before,
8
+ .lex4-editor *::after {
9
+ box-sizing: border-box;
158
10
  }
159
- .static {
160
- position: static;
11
+
12
+ .lex4-editor button {
13
+ cursor: pointer;
14
+ border: none;
15
+ background: none;
16
+ padding: 0;
17
+ font: inherit;
18
+ color: inherit;
161
19
  }
162
- .fixed {
163
- position: fixed;
20
+
21
+ .lex4-editor select {
22
+ font: inherit;
164
23
  }
165
- .absolute {
166
- position: absolute;
24
+
25
+ .lex4-editor ol,
26
+ .lex4-editor ul {
27
+ list-style: none;
28
+ margin: 0;
29
+ padding: 0;
167
30
  }
168
- .relative {
169
- position: relative;
31
+
32
+ /* ── Design tokens ───────────────────────────────────────── */
33
+ .lex4-editor {
34
+ /* Brand / accent */
35
+ --lex4-color-primary: #3b82f6;
36
+ --lex4-color-primary-light: #eff6ff;
37
+ --lex4-color-primary-text: #1d4ed8;
38
+ --lex4-color-primary-border: #93c5fd;
39
+ --lex4-color-primary-focus: #60a5fa;
40
+
41
+ /* Surfaces */
42
+ --lex4-color-bg: #ffffff;
43
+ --lex4-color-bg-muted: #f9fafb;
44
+ --lex4-color-bg-canvas: #e5e7eb;
45
+
46
+ /* Borders */
47
+ --lex4-color-border: #e5e7eb;
48
+ --lex4-color-border-light: #f3f4f6;
49
+
50
+ /* Text */
51
+ --lex4-color-text: #111827;
52
+ --lex4-color-text-secondary: #6b7280;
53
+ --lex4-color-text-muted: #9ca3af;
54
+ --lex4-color-text-disabled: #d1d5db;
55
+
56
+ /* Hover / interaction */
57
+ --lex4-color-hover: #f3f4f6;
58
+ --lex4-color-hover-text: #111827;
59
+
60
+ /* Selection (global Ctrl+A) */
61
+ --lex4-color-selection-bg: rgb(191 219 254);
62
+ --lex4-color-selection-text: rgb(30 64 175);
63
+
64
+ /* Header / footer regions */
65
+ --lex4-color-hf-bg: rgb(239 246 255 / 0.6);
66
+ --lex4-color-hf-border: #bfdbfe;
67
+ --lex4-color-hf-border-inner: #dbeafe;
68
+
69
+ /* Dimensions */
70
+ --lex4-sidebar-width: 336px;
71
+ --lex4-toolbar-height: auto;
72
+
73
+ /* UI font */
74
+ --lex4-ui-font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
75
+
76
+ /* Document font */
77
+ --lex4-font-family: 'Calibri', 'Carlito', sans-serif;
78
+
79
+ /* Toolbar icon button */
80
+ --lex4-toolbar-btn-size: 1.75rem;
81
+ --lex4-toolbar-btn-radius: 0.25rem;
82
+
83
+ /* Dropdown menu */
84
+ --lex4-menu-width: 14rem;
85
+ --lex4-menu-radius: 0.5rem;
86
+ --lex4-menu-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1);
87
+
88
+ /* Page */
89
+ --lex4-page-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1),
90
+ 0 8px 10px -6px rgb(0 0 0 / 0.1);
91
+
92
+ font-family: var(--lex4-ui-font-family);
93
+ -webkit-font-smoothing: antialiased;
170
94
  }
171
- .sticky {
172
- position: sticky;
95
+
96
+ /* ── Root layout ─────────────────────────────────────────── */
97
+ .lex4-editor {
98
+ display: flex;
99
+ flex-direction: column;
100
+ height: 100%;
173
101
  }
174
- .-left-\[9999px\] {
102
+
103
+ .lex4-selection-buffer {
104
+ pointer-events: none;
105
+ position: fixed;
175
106
  left: -9999px;
107
+ top: 0;
108
+ height: 0;
109
+ width: 0;
110
+ opacity: 0;
176
111
  }
177
- .left-0 {
178
- left: 0px;
179
- }
180
- .left-2\.5 {
181
- left: 0.625rem;
182
- }
183
- .right-2 {
184
- right: 0.5rem;
185
- }
186
- .top-0 {
187
- top: 0px;
188
- }
189
- .top-1\/2 {
190
- top: 50%;
191
- }
192
- .top-2 {
193
- top: 0.5rem;
112
+
113
+ /* ── Canvas ──────────────────────────────────────────────── */
114
+ .lex4-canvas {
115
+ display: flex;
116
+ flex: 1;
117
+ min-height: 0;
118
+ overflow: hidden;
119
+ background-color: var(--lex4-color-bg-canvas);
194
120
  }
195
- .top-full {
196
- top: 100%;
121
+
122
+ .lex4-canvas-scroll {
123
+ min-width: 0;
124
+ flex: 1;
125
+ overflow: auto;
197
126
  }
198
- .z-10 {
127
+
128
+ /* ── Toolbar ─────────────────────────────────────────────── */
129
+ .lex4-toolbar {
130
+ position: sticky;
131
+ top: 0;
199
132
  z-index: 10;
133
+ border-bottom: 1px solid var(--lex4-color-border);
134
+ background-color: var(--lex4-color-bg);
200
135
  }
201
- .z-50 {
202
- z-index: 50;
203
- }
204
- .mx-0\.5 {
205
- margin-left: 0.125rem;
206
- margin-right: 0.125rem;
207
- }
208
- .my-1 {
209
- margin-top: 0.25rem;
210
- margin-bottom: 0.25rem;
211
- }
212
- .mb-1 {
213
- margin-bottom: 0.25rem;
214
- }
215
- .mb-2 {
216
- margin-bottom: 0.5rem;
136
+
137
+ .lex4-toolbar-row {
138
+ display: flex;
139
+ align-items: center;
140
+ -moz-column-gap: 0.25rem;
141
+ column-gap: 0.25rem;
142
+ row-gap: 0.375rem;
143
+ padding: 0.375rem 0.5rem;
144
+ flex-wrap: wrap;
217
145
  }
218
- .mb-3 {
219
- margin-bottom: 0.75rem;
146
+
147
+ .lex4-toolbar-group {
148
+ display: flex;
149
+ align-items: center;
150
+ gap: 0.125rem;
220
151
  }
221
- .ml-6 {
222
- margin-left: 1.5rem;
152
+
153
+ .lex4-toolbar-group-gap {
154
+ display: flex;
155
+ align-items: center;
156
+ gap: 0.25rem;
223
157
  }
224
- .ml-auto {
158
+
159
+ .lex4-toolbar-end {
225
160
  margin-left: auto;
226
- }
227
- .mt-0\.5 {
228
- margin-top: 0.125rem;
229
- }
230
- .mt-1 {
231
- margin-top: 0.25rem;
232
- }
233
- .block {
234
- display: block;
235
- }
236
- .inline-block {
237
- display: inline-block;
238
- }
239
- .inline {
240
- display: inline;
241
- }
242
- .flex {
243
161
  display: flex;
162
+ align-items: center;
163
+ gap: 0.375rem;
244
164
  }
245
- .inline-flex {
246
- display: inline-flex;
247
- }
248
- .grid {
249
- display: grid;
250
- }
251
- .list-item {
252
- display: list-item;
253
- }
254
- .hidden {
255
- display: none;
256
- }
257
- .h-0 {
258
- height: 0px;
165
+
166
+ .lex4-toolbar-btn {
167
+ display: flex;
168
+ align-items: center;
169
+ justify-content: center;
170
+ height: var(--lex4-toolbar-btn-size);
171
+ width: var(--lex4-toolbar-btn-size);
172
+ border-radius: var(--lex4-toolbar-btn-radius);
173
+ color: var(--lex4-color-text-secondary);
174
+ transition: color 150ms, background-color 150ms;
259
175
  }
260
- .h-3 {
261
- height: 0.75rem;
176
+ .lex4-toolbar-btn svg {
177
+ flex-shrink: 0;
262
178
  }
263
- .h-4 {
264
- height: 1rem;
179
+ .lex4-toolbar-btn:hover:not(:disabled):not(.active) {
180
+ background-color: var(--lex4-color-hover);
181
+ color: var(--lex4-color-hover-text);
265
182
  }
266
- .h-5 {
267
- height: 1.25rem;
183
+ .lex4-toolbar-btn.active {
184
+ background-color: var(--lex4-color-primary-light);
185
+ color: var(--lex4-color-primary-text);
268
186
  }
269
- .h-6 {
270
- height: 1.5rem;
187
+ .lex4-toolbar-btn:disabled {
188
+ color: var(--lex4-color-text-disabled);
189
+ cursor: not-allowed;
271
190
  }
272
- .h-7 {
191
+
192
+ .lex4-toolbar-select {
273
193
  height: 1.75rem;
194
+ border-radius: 0.25rem;
195
+ border: 1px solid var(--lex4-color-border);
196
+ padding: 0 0.5rem;
197
+ font-size: 0.75rem;
198
+ line-height: 1rem;
199
+ font-weight: 500;
200
+ background-color: var(--lex4-color-bg);
201
+ color: var(--lex4-color-text);
274
202
  }
275
- .h-full {
276
- height: 100%;
277
- }
278
- .h-px {
279
- height: 1px;
280
- }
281
- .max-h-48 {
282
- max-height: 12rem;
283
- }
284
- .min-h-0 {
285
- min-height: 0px;
286
- }
287
- .min-h-\[24px\] {
288
- min-height: 24px;
289
- }
290
- .min-h-full {
291
- min-height: 100%;
292
- }
293
- .w-0 {
294
- width: 0px;
203
+ .lex4-toolbar-select:focus {
204
+ outline: none;
205
+ border-color: var(--lex4-color-primary-focus);
206
+ box-shadow: 0 0 0 1px var(--lex4-color-primary-focus);
295
207
  }
296
- .w-16 {
208
+
209
+ .lex4-toolbar-select-narrow {
297
210
  width: 4rem;
211
+ padding: 0 0.25rem;
298
212
  }
299
- .w-3 {
300
- width: 0.75rem;
301
- }
302
- .w-56 {
303
- width: 14rem;
304
- }
305
- .w-6 {
306
- width: 1.5rem;
307
- }
308
- .w-64 {
309
- width: 16rem;
310
- }
311
- .w-7 {
312
- width: 1.75rem;
313
- }
314
- .w-\[320px\] {
315
- width: 320px;
316
- }
317
- .w-full {
318
- width: 100%;
319
- }
320
- .w-px {
213
+
214
+ .lex4-toolbar-separator {
215
+ margin: 0 0.125rem;
216
+ height: 1.25rem;
321
217
  width: 1px;
218
+ background-color: var(--lex4-color-border);
322
219
  }
323
- .min-w-0 {
324
- min-width: 0px;
325
- }
326
- .flex-1 {
327
- flex: 1 1 0%;
328
- }
329
- .flex-shrink-0 {
330
- flex-shrink: 0;
331
- }
332
- .shrink-0 {
333
- flex-shrink: 0;
334
- }
335
- .-translate-y-1\/2 {
336
- --tw-translate-y: -50%;
337
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
338
- }
339
- .translate-x-0\.5 {
340
- --tw-translate-x: 0.125rem;
341
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
342
- }
343
- .translate-x-3\.5 {
344
- --tw-translate-x: 0.875rem;
345
- transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
346
- }
347
- .cursor-default {
348
- cursor: default;
220
+
221
+ .lex4-toolbar-icon {
222
+ color: var(--lex4-color-text-secondary);
349
223
  }
350
- .cursor-not-allowed {
351
- cursor: not-allowed;
224
+
225
+ /* ── Header / footer row ─────────────────────────────────── */
226
+ .lex4-hf-row {
227
+ display: flex;
228
+ align-items: center;
229
+ gap: 0.25rem;
230
+ padding: 0.375rem 0.5rem;
231
+ border-top: 1px solid var(--lex4-color-border-light);
232
+ flex-wrap: wrap;
352
233
  }
353
- .cursor-pointer {
234
+
235
+ /* ── Header / footer toggle ──────────────────────────────── */
236
+ .lex4-hf-toggle {
237
+ display: flex;
238
+ align-items: center;
239
+ gap: 0.375rem;
240
+ min-height: 1.75rem;
354
241
  cursor: pointer;
355
- }
356
- .select-none {
357
242
  -webkit-user-select: none;
358
243
  -moz-user-select: none;
359
244
  user-select: none;
360
245
  }
361
- .list-decimal {
362
- list-style-type: decimal;
363
- }
364
- .list-disc {
365
- list-style-type: disc;
366
- }
367
- .list-none {
368
- list-style-type: none;
369
- }
370
- .grid-cols-2 {
371
- grid-template-columns: repeat(2, minmax(0, 1fr));
372
- }
373
- .flex-col {
374
- flex-direction: column;
246
+
247
+ .lex4-hf-toggle-icon {
248
+ color: var(--lex4-color-text-secondary);
375
249
  }
376
- .items-start {
377
- align-items: flex-start;
250
+
251
+ .lex4-hf-toggle-label {
252
+ font-size: 0.75rem;
253
+ line-height: 1rem;
254
+ font-weight: 500;
255
+ color: var(--lex4-color-text-secondary);
378
256
  }
379
- .items-center {
257
+
258
+ .lex4-hf-switch {
259
+ position: relative;
260
+ display: inline-flex;
261
+ height: 1rem;
262
+ width: 1.75rem;
380
263
  align-items: center;
264
+ border-radius: 9999px;
265
+ transition: background-color 200ms;
381
266
  }
382
- .justify-center {
383
- justify-content: center;
384
- }
385
- .justify-between {
386
- justify-content: space-between;
267
+
268
+ .lex4-hf-switch-knob {
269
+ display: inline-block;
270
+ height: 0.75rem;
271
+ width: 0.75rem;
272
+ border-radius: 9999px;
273
+ background-color: white;
274
+ box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
275
+ transition: transform 200ms;
276
+ transform: translateX(0.125rem);
387
277
  }
388
- .gap-0\.5 {
389
- gap: 0.125rem;
278
+
279
+ .lex4-hf-switch[aria-checked="true"] .lex4-hf-switch-knob {
280
+ transform: translateX(0.875rem);
390
281
  }
391
- .gap-1 {
282
+
283
+ /* ── Settings menu (HF actions) ──────────────────────────── */
284
+ .lex4-settings-trigger {
285
+ display: flex;
286
+ height: 1.75rem;
287
+ align-items: center;
392
288
  gap: 0.25rem;
393
- }
394
- .gap-1\.5 {
395
- gap: 0.375rem;
396
- }
397
- .gap-2 {
398
- gap: 0.5rem;
399
- }
400
- .gap-8 {
401
- gap: 2rem;
402
- }
403
- .divide-y > :not([hidden]) ~ :not([hidden]) {
404
- --tw-divide-y-reverse: 0;
405
- border-top-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
406
- border-bottom-width: calc(1px * var(--tw-divide-y-reverse));
407
- }
408
- .divide-gray-100 > :not([hidden]) ~ :not([hidden]) {
409
- --tw-divide-opacity: 1;
410
- border-color: rgb(243 244 246 / var(--tw-divide-opacity, 1));
411
- }
412
- .overflow-auto {
413
- overflow: auto;
414
- }
415
- .overflow-hidden {
416
- overflow: hidden;
417
- }
418
- .overflow-y-auto {
419
- overflow-y: auto;
420
- }
421
- .whitespace-nowrap {
422
- white-space: nowrap;
423
- }
424
- .rounded {
425
289
  border-radius: 0.25rem;
290
+ padding: 0 0.375rem;
291
+ font-size: 0.75rem;
292
+ line-height: 1rem;
293
+ color: var(--lex4-color-text-secondary);
294
+ transition: color 150ms, background-color 150ms;
426
295
  }
427
- .rounded-full {
428
- border-radius: 9999px;
429
- }
430
- .rounded-lg {
431
- border-radius: 0.5rem;
432
- }
433
- .rounded-md {
434
- border-radius: 0.375rem;
435
- }
436
- .border {
437
- border-width: 1px;
438
- }
439
- .border-b {
440
- border-bottom-width: 1px;
441
- }
442
- .border-b-2 {
443
- border-bottom-width: 2px;
444
- }
445
- .border-l {
446
- border-left-width: 1px;
447
- }
448
- .border-l-4 {
449
- border-left-width: 4px;
450
- }
451
- .border-t {
452
- border-top-width: 1px;
453
- }
454
- .border-t-2 {
455
- border-top-width: 2px;
296
+ .lex4-settings-trigger:hover:not([aria-expanded="true"]) {
297
+ background-color: var(--lex4-color-hover);
298
+ color: var(--lex4-color-hover-text);
456
299
  }
457
- .border-dashed {
458
- border-style: dashed;
300
+ .lex4-settings-trigger[aria-expanded="true"] {
301
+ background-color: var(--lex4-color-primary-light);
302
+ color: var(--lex4-color-primary-text);
459
303
  }
460
- .border-blue-100 {
461
- --tw-border-opacity: 1;
462
- border-color: rgb(219 234 254 / var(--tw-border-opacity, 1));
304
+
305
+ .lex4-settings-menu {
306
+ position: absolute;
307
+ left: 0;
308
+ top: 100%;
309
+ margin-top: 0.25rem;
310
+ z-index: 50;
311
+ padding: 0.375rem 0;
312
+ width: 15rem;
313
+ background-color: var(--lex4-color-bg);
314
+ border: 1px solid var(--lex4-color-border);
315
+ border-radius: var(--lex4-menu-radius);
316
+ box-shadow: var(--lex4-menu-shadow);
463
317
  }
464
- .border-blue-300 {
465
- --tw-border-opacity: 1;
466
- border-color: rgb(147 197 253 / var(--tw-border-opacity, 1));
318
+
319
+ .lex4-settings-label {
320
+ padding: 0.5rem 0.75rem 0.25rem;
321
+ font-size: 10px;
322
+ font-weight: 600;
323
+ text-transform: uppercase;
324
+ letter-spacing: 0.05em;
325
+ color: var(--lex4-color-text-muted);
467
326
  }
468
- .border-gray-100 {
469
- --tw-border-opacity: 1;
470
- border-color: rgb(243 244 246 / var(--tw-border-opacity, 1));
327
+
328
+ .lex4-settings-item {
329
+ display: flex;
330
+ width: 100%;
331
+ align-items: center;
332
+ gap: 0.5rem;
333
+ padding: 0.375rem 0.75rem;
334
+ font-size: 0.75rem;
335
+ line-height: 1rem;
336
+ color: var(--lex4-color-text);
337
+ transition: background-color 150ms;
471
338
  }
472
- .border-gray-200 {
473
- --tw-border-opacity: 1;
474
- border-color: rgb(229 231 235 / var(--tw-border-opacity, 1));
339
+ .lex4-settings-item:hover:not(:disabled) {
340
+ background-color: var(--lex4-color-hover);
475
341
  }
476
- .border-gray-300 {
477
- --tw-border-opacity: 1;
478
- border-color: rgb(209 213 219 / var(--tw-border-opacity, 1));
342
+ .lex4-settings-item:disabled {
343
+ color: var(--lex4-color-text-disabled);
344
+ cursor: not-allowed;
479
345
  }
480
- .border-b-blue-200 {
481
- --tw-border-opacity: 1;
482
- border-bottom-color: rgb(191 219 254 / var(--tw-border-opacity, 1));
346
+ .lex4-settings-item svg {
347
+ flex-shrink: 0;
348
+ color: var(--lex4-color-text-muted);
483
349
  }
484
- .border-t-blue-200 {
485
- --tw-border-opacity: 1;
486
- border-top-color: rgb(191 219 254 / var(--tw-border-opacity, 1));
350
+ .lex4-settings-item:hover:not(:disabled) svg {
351
+ color: var(--lex4-color-text-secondary);
487
352
  }
488
- .bg-blue-50 {
489
- --tw-bg-opacity: 1;
490
- background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));
353
+
354
+ .lex4-settings-divider {
355
+ margin: 0.25rem 0;
356
+ height: 1px;
357
+ background-color: var(--lex4-color-border-light);
491
358
  }
492
- .bg-blue-50\/60 {
493
- background-color: rgb(239 246 255 / 0.6);
359
+
360
+ .lex4-settings-counter-grid {
361
+ display: grid;
362
+ grid-template-columns: 1fr 1fr;
363
+ gap: 0.375rem;
364
+ padding: 0 0.75rem 0.625rem;
494
365
  }
495
- .bg-blue-500 {
496
- --tw-bg-opacity: 1;
497
- background-color: rgb(59 130 246 / var(--tw-bg-opacity, 1));
366
+
367
+ .lex4-settings-counter-btn {
368
+ border-radius: 0.25rem;
369
+ padding: 0.375rem 0.625rem;
370
+ font-size: 0.75rem;
371
+ line-height: 1rem;
372
+ text-align: left;
373
+ color: var(--lex4-color-text-secondary);
374
+ transition: background-color 150ms, color 150ms;
498
375
  }
499
- .bg-gray-100 {
500
- --tw-bg-opacity: 1;
501
- background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
376
+ .lex4-settings-counter-btn:hover:not([aria-checked="true"]) {
377
+ background-color: var(--lex4-color-hover);
502
378
  }
503
- .bg-gray-200 {
504
- --tw-bg-opacity: 1;
505
- background-color: rgb(229 231 235 / var(--tw-bg-opacity, 1));
379
+ .lex4-settings-counter-btn[aria-checked="true"] {
380
+ background-color: var(--lex4-color-primary-light);
381
+ color: var(--lex4-color-primary-text);
382
+ font-weight: 500;
506
383
  }
507
- .bg-gray-300 {
508
- --tw-bg-opacity: 1;
509
- background-color: rgb(209 213 219 / var(--tw-bg-opacity, 1));
384
+
385
+ /* ── Sidebar ─────────────────────────────────────────────── */
386
+ .lex4-sidebar {
387
+ display: flex;
388
+ height: 100%;
389
+ flex-shrink: 0;
390
+ flex-direction: column;
391
+ width: var(--lex4-sidebar-width);
392
+ border-left: 1px solid var(--lex4-color-border);
393
+ background-color: var(--lex4-color-bg);
510
394
  }
511
- .bg-gray-50 {
512
- --tw-bg-opacity: 1;
513
- background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
395
+
396
+ .lex4-sidebar-header {
397
+ display: flex;
398
+ align-items: flex-start;
399
+ justify-content: space-between;
400
+ padding: 0.75rem 0.875rem;
401
+ border-bottom: 1px solid var(--lex4-color-border);
514
402
  }
515
- .bg-white {
516
- --tw-bg-opacity: 1;
517
- background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
403
+
404
+ .lex4-sidebar-title {
405
+ font-size: 0.75rem;
406
+ line-height: 1rem;
407
+ font-weight: 600;
408
+ color: var(--lex4-color-text);
518
409
  }
519
- .p-0 {
520
- padding: 0px;
410
+
411
+ .lex4-sidebar-subtitle {
412
+ margin-top: 0.125rem;
413
+ font-size: 0.75rem;
414
+ line-height: 1rem;
415
+ color: var(--lex4-color-text-secondary);
521
416
  }
522
- .p-1 {
523
- padding: 0.25rem;
417
+
418
+ .lex4-sidebar-actions {
419
+ display: flex;
420
+ align-items: center;
421
+ gap: 0.25rem;
524
422
  }
525
- .p-2 {
526
- padding: 0.5rem;
423
+
424
+ .lex4-sidebar-action-btn {
425
+ display: flex;
426
+ height: 1.5rem;
427
+ width: 1.5rem;
428
+ align-items: center;
429
+ justify-content: center;
430
+ border-radius: 0.25rem;
431
+ color: var(--lex4-color-text-muted);
432
+ transition: color 150ms, background-color 150ms;
527
433
  }
528
- .p-3 {
529
- padding: 0.75rem;
434
+ .lex4-sidebar-action-btn:hover {
435
+ background-color: var(--lex4-color-hover);
436
+ color: var(--lex4-color-hover-text);
530
437
  }
531
- .px-1 {
532
- padding-left: 0.25rem;
533
- padding-right: 0.25rem;
438
+
439
+ .lex4-sidebar-body {
440
+ min-height: 0;
441
+ flex: 1;
442
+ overflow: auto;
534
443
  }
535
- .px-1\.5 {
536
- padding-left: 0.375rem;
537
- padding-right: 0.375rem;
444
+
445
+ /* ── History sidebar ─────────────────────────────────────── */
446
+ .lex4-history-empty {
447
+ padding: 1rem 0.75rem;
448
+ font-size: 0.75rem;
449
+ line-height: 1rem;
450
+ color: var(--lex4-color-text-secondary);
538
451
  }
539
- .px-2 {
540
- padding-left: 0.5rem;
541
- padding-right: 0.5rem;
452
+
453
+ .lex4-history-list > li + li {
454
+ border-top: 1px solid var(--lex4-color-border-light);
542
455
  }
543
- .px-2\.5 {
544
- padding-left: 0.625rem;
545
- padding-right: 0.625rem;
456
+
457
+ .lex4-history-entry {
458
+ width: 100%;
459
+ padding: 0.5rem 0.75rem;
460
+ text-align: left;
461
+ background-color: var(--lex4-color-bg);
462
+ transition: background-color 150ms;
546
463
  }
547
- .px-3 {
548
- padding-left: 0.75rem;
549
- padding-right: 0.75rem;
464
+ .lex4-history-entry:hover:not(.active) {
465
+ background-color: var(--lex4-color-hover);
550
466
  }
551
- .py-0\.5 {
552
- padding-top: 0.125rem;
553
- padding-bottom: 0.125rem;
467
+ .lex4-history-entry.active {
468
+ background-color: var(--lex4-color-primary-light);
554
469
  }
555
- .py-1 {
556
- padding-top: 0.25rem;
557
- padding-bottom: 0.25rem;
470
+
471
+ .lex4-history-entry-row {
472
+ display: flex;
473
+ align-items: flex-start;
474
+ justify-content: space-between;
475
+ gap: 0.5rem;
558
476
  }
559
- .py-1\.5 {
560
- padding-top: 0.375rem;
561
- padding-bottom: 0.375rem;
477
+
478
+ .lex4-history-entry-content {
479
+ min-width: 0;
562
480
  }
563
- .py-2 {
564
- padding-top: 0.5rem;
565
- padding-bottom: 0.5rem;
481
+
482
+ .lex4-history-entry-label {
483
+ font-size: 0.75rem;
484
+ line-height: 1rem;
485
+ color: var(--lex4-color-text);
566
486
  }
567
- .py-2\.5 {
568
- padding-top: 0.625rem;
569
- padding-bottom: 0.625rem;
487
+ .lex4-history-entry-label.current {
488
+ font-weight: 600;
489
+ color: var(--lex4-color-primary-text);
570
490
  }
571
- .py-4 {
572
- padding-top: 1rem;
573
- padding-bottom: 1rem;
491
+
492
+ .lex4-history-entry-source {
493
+ margin-top: 0.125rem;
494
+ font-size: 0.75rem;
495
+ line-height: 1rem;
496
+ color: var(--lex4-color-text-muted);
574
497
  }
575
- .py-8 {
576
- padding-top: 2rem;
577
- padding-bottom: 2rem;
498
+
499
+ .lex4-history-entry-time {
500
+ flex-shrink: 0;
501
+ font-size: 0.75rem;
502
+ line-height: 1rem;
503
+ color: var(--lex4-color-text-muted);
578
504
  }
579
- .pb-1 {
580
- padding-bottom: 0.25rem;
505
+
506
+ /* ── Variable panel ──────────────────────────────────────── */
507
+ .lex4-variable-search-container {
508
+ padding: 0.75rem;
581
509
  }
582
- .pb-2 {
583
- padding-bottom: 0.5rem;
510
+
511
+ .lex4-variable-search-wrapper {
512
+ position: relative;
584
513
  }
585
- .pb-3 {
586
- padding-bottom: 0.75rem;
514
+
515
+ .lex4-variable-search-icon {
516
+ position: absolute;
517
+ left: 0.625rem;
518
+ top: 50%;
519
+ transform: translateY(-50%);
520
+ color: var(--lex4-color-text-muted);
587
521
  }
588
- .pl-4 {
589
- padding-left: 1rem;
522
+
523
+ .lex4-variable-search-input {
524
+ width: 100%;
525
+ border-radius: 0.5rem;
526
+ border: 1px solid var(--lex4-color-border);
527
+ background-color: var(--lex4-color-bg-muted);
528
+ padding: 0.375rem 0.75rem 0.375rem 2rem;
529
+ font-size: 0.75rem;
530
+ line-height: 1rem;
531
+ color: var(--lex4-color-text);
590
532
  }
591
- .pl-8 {
592
- padding-left: 2rem;
533
+ .lex4-variable-search-input:focus {
534
+ outline: none;
535
+ border-color: var(--lex4-color-primary-focus);
536
+ box-shadow: 0 0 0 1px var(--lex4-color-primary-focus);
593
537
  }
594
- .pr-24 {
595
- padding-right: 6rem;
538
+
539
+ .lex4-variable-list {
540
+ padding: 0 0.75rem 1rem;
596
541
  }
597
- .pr-3 {
598
- padding-right: 0.75rem;
542
+
543
+ .lex4-variable-list-empty {
544
+ padding: 1rem 0;
545
+ text-align: center;
546
+ font-size: 0.75rem;
547
+ line-height: 1rem;
548
+ color: var(--lex4-color-text-muted);
599
549
  }
600
- .pt-2 {
601
- padding-top: 0.5rem;
550
+
551
+ .lex4-variable-group {
552
+ margin-bottom: 0.625rem;
553
+ display: flex;
554
+ flex-direction: column;
555
+ gap: 0.25rem;
602
556
  }
603
- .text-left {
557
+
558
+ .lex4-variable-list-item {
559
+ display: grid;
560
+ grid-template-columns: minmax(0, 1fr) auto;
561
+ align-items: center;
562
+ gap: 0.75rem;
563
+ border-radius: 0.5rem;
564
+ padding: 0.5rem 0.625rem;
604
565
  text-align: left;
566
+ font-size: 0.75rem;
567
+ line-height: 1rem;
568
+ transition: background-color 150ms;
605
569
  }
606
- .text-center {
607
- text-align: center;
570
+ .lex4-variable-list-item:hover {
571
+ background-color: var(--lex4-color-primary-light);
608
572
  }
609
- .text-justify {
610
- text-align: justify;
573
+
574
+ .lex4-variable-badge {
575
+ display: inline-flex;
576
+ align-items: center;
577
+ justify-self: start;
578
+ max-width: 100%;
579
+ overflow: hidden;
580
+ border-radius: 9999px;
581
+ border: 1px solid var(--lex4-color-primary-border);
582
+ padding: 0.1875rem 0.5625rem;
583
+ font-size: 11px;
584
+ font-weight: 500;
585
+ color: var(--lex4-color-primary-text);
586
+ white-space: nowrap;
587
+ text-overflow: ellipsis;
611
588
  }
612
- .text-2xl {
613
- font-size: 1.5rem;
614
- line-height: 2rem;
589
+
590
+ .lex4-variable-group-label {
591
+ white-space: nowrap;
592
+ text-align: right;
593
+ font-size: 10px;
594
+ font-weight: 600;
595
+ text-transform: uppercase;
596
+ letter-spacing: 0.05em;
597
+ color: var(--lex4-color-text-muted);
615
598
  }
616
- .text-3xl {
617
- font-size: 1.875rem;
618
- line-height: 2.25rem;
599
+
600
+ /* ── Variable picker (toolbar dropdown) ──────────────────── */
601
+ .lex4-variable-picker {
602
+ position: relative;
603
+ display: inline-block;
619
604
  }
620
- .text-\[10px\] {
621
- font-size: 10px;
605
+
606
+ .lex4-variable-picker-btn {
607
+ height: 1.75rem;
608
+ border-radius: 0.25rem;
609
+ border: 1px solid var(--lex4-color-border);
610
+ padding: 0 0.5rem;
611
+ font-size: 0.75rem;
612
+ line-height: 1rem;
613
+ font-weight: 500;
614
+ background-color: var(--lex4-color-bg);
615
+ color: var(--lex4-color-text);
622
616
  }
623
- .text-\[11px\] {
624
- font-size: 11px;
617
+ .lex4-variable-picker-btn:focus {
618
+ outline: none;
619
+ border-color: var(--lex4-color-primary-focus);
620
+ box-shadow: 0 0 0 1px var(--lex4-color-primary-focus);
625
621
  }
626
- .text-base {
627
- font-size: 1rem;
628
- line-height: 1.5rem;
622
+ .lex4-variable-picker-btn:disabled {
623
+ opacity: 0.5;
624
+ cursor: not-allowed;
629
625
  }
630
- .text-lg {
631
- font-size: 1.125rem;
632
- line-height: 1.75rem;
626
+
627
+ .lex4-variable-picker-dropdown {
628
+ position: absolute;
629
+ left: 0;
630
+ top: 100%;
631
+ z-index: 50;
632
+ margin-top: 0.25rem;
633
+ width: min(20rem, calc(100vw - 2rem));
634
+ border-radius: 0.5rem;
635
+ border: 1px solid var(--lex4-color-border);
636
+ background-color: var(--lex4-color-bg);
637
+ box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1),
638
+ 0 4px 6px -4px rgb(0 0 0 / 0.1);
633
639
  }
634
- .text-xl {
635
- font-size: 1.25rem;
636
- line-height: 1.75rem;
640
+
641
+ .lex4-variable-picker-search {
642
+ padding: 0.625rem;
643
+ border-bottom: 1px solid var(--lex4-color-border-light);
637
644
  }
638
- .text-xs {
645
+
646
+ .lex4-variable-picker-search input {
647
+ width: 100%;
648
+ border-radius: 0.375rem;
649
+ border: 1px solid var(--lex4-color-border);
650
+ background-color: var(--lex4-color-bg-muted);
651
+ padding: 0.375rem 0.625rem;
639
652
  font-size: 0.75rem;
640
653
  line-height: 1rem;
654
+ color: var(--lex4-color-text);
641
655
  }
642
- .font-bold {
643
- font-weight: 700;
656
+ .lex4-variable-picker-search input:focus {
657
+ outline: none;
658
+ border-color: var(--lex4-color-primary-focus);
659
+ box-shadow: 0 0 0 1px var(--lex4-color-primary-focus);
644
660
  }
645
- .font-medium {
646
- font-weight: 500;
661
+
662
+ .lex4-variable-picker-list {
663
+ max-height: 12rem;
664
+ overflow-y: auto;
665
+ padding: 0.375rem;
647
666
  }
648
- .font-semibold {
649
- font-weight: 600;
667
+
668
+ .lex4-variable-picker-empty {
669
+ padding: 0.25rem 0.5rem;
670
+ font-size: 0.75rem;
671
+ line-height: 1rem;
672
+ color: var(--lex4-color-text-muted);
650
673
  }
651
- .uppercase {
674
+
675
+ .lex4-variable-picker-group-label {
676
+ padding: 0.375rem 0.625rem 0.25rem;
677
+ font-size: 10px;
678
+ font-weight: 600;
652
679
  text-transform: uppercase;
653
- }
654
- .italic {
655
- font-style: italic;
656
- }
657
- .tracking-wider {
658
680
  letter-spacing: 0.05em;
681
+ color: var(--lex4-color-text-muted);
659
682
  }
660
- .text-blue-600 {
661
- --tw-text-opacity: 1;
662
- color: rgb(37 99 235 / var(--tw-text-opacity, 1));
663
- }
664
- .text-blue-700 {
665
- --tw-text-opacity: 1;
666
- color: rgb(29 78 216 / var(--tw-text-opacity, 1));
667
- }
668
- .text-gray-300 {
669
- --tw-text-opacity: 1;
670
- color: rgb(209 213 219 / var(--tw-text-opacity, 1));
671
- }
672
- .text-gray-400 {
673
- --tw-text-opacity: 1;
674
- color: rgb(156 163 175 / var(--tw-text-opacity, 1));
675
- }
676
- .text-gray-500 {
677
- --tw-text-opacity: 1;
678
- color: rgb(107 114 128 / var(--tw-text-opacity, 1));
683
+
684
+ .lex4-variable-picker-option {
685
+ display: grid;
686
+ width: 100%;
687
+ grid-template-columns: minmax(0, 1fr) minmax(6.5rem, auto);
688
+ align-items: start;
689
+ gap: 0.75rem;
690
+ border-radius: 0.25rem;
691
+ padding: 0.4375rem 0.625rem;
692
+ text-align: left;
693
+ font-size: 0.75rem;
694
+ line-height: 1rem;
695
+ transition: background-color 150ms;
679
696
  }
680
- .text-gray-600 {
681
- --tw-text-opacity: 1;
682
- color: rgb(75 85 99 / var(--tw-text-opacity, 1));
697
+ .lex4-variable-picker-option:hover {
698
+ background-color: var(--lex4-color-primary-light);
683
699
  }
684
- .text-gray-700 {
685
- --tw-text-opacity: 1;
686
- color: rgb(55 65 81 / var(--tw-text-opacity, 1));
700
+
701
+ .lex4-variable-picker-key {
702
+ min-width: 0;
703
+ overflow: hidden;
704
+ font-weight: 500;
705
+ color: var(--lex4-color-primary-text);
706
+ white-space: nowrap;
707
+ text-overflow: ellipsis;
687
708
  }
688
- .text-gray-900 {
689
- --tw-text-opacity: 1;
690
- color: rgb(17 24 39 / var(--tw-text-opacity, 1));
709
+
710
+ .lex4-variable-picker-label {
711
+ text-align: right;
712
+ color: var(--lex4-color-text-secondary);
691
713
  }
692
- .underline {
693
- text-decoration-line: underline;
714
+
715
+ /* ── Variable chip (inline node) ─────────────────────────── */
716
+ .lex4-variable-chip {
717
+ display: inline-flex;
718
+ align-items: center;
719
+ border-radius: 9999px;
720
+ border: 1px solid var(--lex4-color-primary-border);
721
+ background-color: var(--lex4-color-bg);
722
+ padding: 0.125rem 0.5rem;
723
+ font-size: 11px;
724
+ font-weight: 500;
725
+ color: var(--lex4-color-primary-text);
726
+ -webkit-user-select: none;
727
+ -moz-user-select: none;
728
+ user-select: none;
729
+ cursor: default;
730
+ white-space: nowrap;
731
+ margin: 0 0.125rem;
694
732
  }
695
- .line-through {
696
- text-decoration-line: line-through;
733
+
734
+ /* ── Document view ───────────────────────────────────────── */
735
+ .lex4-document-view {
736
+ display: flex;
737
+ flex-direction: column;
738
+ align-items: center;
739
+ gap: 2rem;
740
+ padding: 2rem 0;
741
+ min-height: 100%;
697
742
  }
698
- .placeholder-gray-400::-moz-placeholder {
699
- --tw-placeholder-opacity: 1;
700
- color: rgb(156 163 175 / var(--tw-placeholder-opacity, 1));
743
+
744
+ /* ── Page ────────────────────────────────────────────────── */
745
+ .lex4-page {
746
+ display: flex;
747
+ flex-direction: column;
748
+ background-color: var(--lex4-color-bg);
749
+ box-shadow: var(--lex4-page-shadow);
701
750
  }
702
- .placeholder-gray-400::placeholder {
703
- --tw-placeholder-opacity: 1;
704
- color: rgb(156 163 175 / var(--tw-placeholder-opacity, 1));
751
+
752
+ .lex4-page,
753
+ .lex4-page [contenteditable],
754
+ .lex4-page .lex4-page-placeholder,
755
+ .lex4-page .lex4-page-hf-placeholder {
756
+ font-family: var(--lex4-font-family);
705
757
  }
706
- .opacity-0 {
707
- opacity: 0;
758
+
759
+ /* ── Page body ───────────────────────────────────────────── */
760
+ .lex4-page-body {
761
+ flex: 1;
762
+ min-height: 0;
763
+ position: relative;
764
+ overflow: hidden;
708
765
  }
709
- .shadow-lg {
710
- --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
711
- --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
712
- box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
766
+
767
+ .lex4-page-body-editable {
768
+ outline: none;
769
+ height: 100%;
770
+ padding: 0;
771
+ overflow: visible;
713
772
  }
714
- .shadow-sm {
715
- --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
716
- --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
717
- box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
773
+
774
+ .lex4-root {
775
+ outline: none;
718
776
  }
719
- .shadow-xl {
720
- --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
721
- --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);
722
- box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
777
+
778
+ .lex4-paragraph {
779
+ margin: 0;
780
+ text-align: justify;
723
781
  }
724
- .outline-none {
725
- outline: 2px solid transparent;
726
- outline-offset: 2px;
782
+
783
+ .lex4-heading {
784
+ margin: 0 0 0.5rem;
785
+ font-weight: 600;
786
+ line-height: 1.25;
787
+ color: var(--lex4-color-text);
727
788
  }
728
- .blur {
729
- --tw-blur: blur(8px);
730
- filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
789
+
790
+ .lex4-heading-h1 {
791
+ font-size: 1.875rem;
792
+ font-weight: 700;
731
793
  }
732
- .\!filter {
733
- filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow) !important;
794
+
795
+ .lex4-heading-h2 {
796
+ font-size: 1.5rem;
797
+ font-weight: 700;
734
798
  }
735
- .filter {
736
- filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
799
+
800
+ .lex4-heading-h3 {
801
+ font-size: 1.25rem;
737
802
  }
738
- .transition-colors {
739
- transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
740
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
741
- transition-duration: 150ms;
803
+
804
+ .lex4-heading-h4 {
805
+ font-size: 1.125rem;
742
806
  }
743
- .transition-transform {
744
- transition-property: transform;
745
- transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
746
- transition-duration: 150ms;
807
+
808
+ .lex4-heading-h5 {
809
+ font-size: 1rem;
810
+ font-weight: 500;
747
811
  }
748
- .duration-200 {
749
- transition-duration: 200ms;
812
+
813
+ .lex4-text-bold {
814
+ font-weight: 700;
750
815
  }
751
816
 
752
- .lex4-editor {
753
- font-family: 'Calibri', 'Carlito', sans-serif;
817
+ .lex4-text-italic {
818
+ font-style: italic;
754
819
  }
755
820
 
756
- .lex4-page,
757
- .lex4-page [contenteditable],
758
- .lex4-page .pointer-events-none {
759
- font-family: inherit;
821
+ .lex4-text-underline {
822
+ text-decoration: underline;
760
823
  }
761
824
 
762
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] {
763
- background-color: rgb(191 219 254) !important;
764
- caret-color: transparent;
765
- color: rgb(30 64 175) !important;
825
+ .lex4-text-strikethrough {
826
+ text-decoration: line-through;
766
827
  }
767
828
 
768
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] p,
769
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] li,
770
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] h1,
771
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] h2,
772
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] h3,
773
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] h4,
774
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] h5,
775
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] h6,
776
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] blockquote,
777
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] pre,
778
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] code,
779
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] span,
780
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] strong,
781
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] em,
782
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] u,
783
- .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] s {
784
- color: inherit !important;
829
+ .lex4-text-underline.lex4-text-strikethrough {
830
+ text-decoration: underline line-through;
785
831
  }
786
832
 
787
- .hover\:bg-blue-50:hover {
788
- --tw-bg-opacity: 1;
789
- background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));
833
+ .lex4-list {
834
+ margin: 0;
835
+ padding-left: 1.5rem;
790
836
  }
791
837
 
792
- .hover\:bg-gray-100:hover {
793
- --tw-bg-opacity: 1;
794
- background-color: rgb(243 244 246 / var(--tw-bg-opacity, 1));
838
+ .lex4-list-ordered {
839
+ list-style: decimal;
795
840
  }
796
841
 
797
- .hover\:bg-gray-50:hover {
798
- --tw-bg-opacity: 1;
799
- background-color: rgb(249 250 251 / var(--tw-bg-opacity, 1));
842
+ .lex4-list-unordered {
843
+ list-style: disc;
800
844
  }
801
845
 
802
- .hover\:text-gray-600:hover {
803
- --tw-text-opacity: 1;
804
- color: rgb(75 85 99 / var(--tw-text-opacity, 1));
846
+ .lex4-listitem {
847
+ margin: 0.25rem 0;
805
848
  }
806
849
 
807
- .hover\:text-gray-900:hover {
808
- --tw-text-opacity: 1;
809
- color: rgb(17 24 39 / var(--tw-text-opacity, 1));
850
+ .lex4-listitem-nested {
851
+ list-style: none;
810
852
  }
811
853
 
812
- .focus\:border-blue-400:focus {
813
- --tw-border-opacity: 1;
814
- border-color: rgb(96 165 250 / var(--tw-border-opacity, 1));
854
+ .lex4-quote {
855
+ margin: 0;
856
+ border-left: 4px solid var(--lex4-color-border);
857
+ padding-left: 1rem;
858
+ color: var(--lex4-color-text-secondary);
859
+ font-style: italic;
815
860
  }
816
861
 
817
- .focus\:bg-white:focus {
818
- --tw-bg-opacity: 1;
819
- background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
862
+ .lex4-page-placeholder {
863
+ position: absolute;
864
+ top: 0;
865
+ left: 0;
866
+ color: var(--lex4-color-text-muted);
867
+ pointer-events: none;
868
+ -webkit-user-select: none;
869
+ -moz-user-select: none;
870
+ user-select: none;
820
871
  }
821
872
 
822
- .focus\:outline-none:focus {
823
- outline: 2px solid transparent;
824
- outline-offset: 2px;
873
+ /* ── Page header / footer ────────────────────────────────── */
874
+ .lex4-page-header {
875
+ position: relative;
876
+ flex-shrink: 0;
877
+ background-color: var(--lex4-color-hf-bg);
878
+ border-top: 2px solid var(--lex4-color-hf-border);
879
+ border-bottom: 1px dashed var(--lex4-color-hf-border-inner);
880
+ overflow: clip;
825
881
  }
826
882
 
827
- .focus\:ring-1:focus {
828
- --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
829
- --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);
830
- box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
883
+ .lex4-page-footer {
884
+ position: relative;
885
+ flex-shrink: 0;
886
+ background-color: var(--lex4-color-hf-bg);
887
+ border-bottom: 2px solid var(--lex4-color-hf-border);
888
+ border-top: 1px dashed var(--lex4-color-hf-border-inner);
889
+ overflow: clip;
831
890
  }
832
891
 
833
- .focus\:ring-blue-400:focus {
834
- --tw-ring-opacity: 1;
835
- --tw-ring-color: rgb(96 165 250 / var(--tw-ring-opacity, 1));
892
+ .lex4-page-hf-editable {
893
+ outline: none;
894
+ padding: 0.5rem;
895
+ color: var(--lex4-color-text-secondary);
896
+ min-height: 24px;
836
897
  }
837
898
 
838
- .disabled\:cursor-not-allowed:disabled {
839
- cursor: not-allowed;
899
+ .lex4-page-hf-narrow {
900
+ padding-right: 6rem;
840
901
  }
841
902
 
842
- .disabled\:text-gray-300:disabled {
843
- --tw-text-opacity: 1;
844
- color: rgb(209 213 219 / var(--tw-text-opacity, 1));
903
+ .lex4-page-hf-placeholder {
904
+ position: absolute;
905
+ top: 0;
906
+ left: 0;
907
+ padding: 0.5rem;
908
+ color: var(--lex4-color-text-muted);
909
+ pointer-events: none;
910
+ -webkit-user-select: none;
911
+ -moz-user-select: none;
912
+ user-select: none;
845
913
  }
846
914
 
847
- .disabled\:opacity-50:disabled {
848
- opacity: 0.5;
915
+ .lex4-page-counter {
916
+ position: absolute;
917
+ right: 0.5rem;
918
+ top: 0.5rem;
919
+ font-family: var(--lex4-ui-font-family);
920
+ font-size: 11px;
921
+ line-height: 1rem;
922
+ color: var(--lex4-color-text-secondary);
923
+ pointer-events: none;
924
+ -webkit-user-select: none;
925
+ -moz-user-select: none;
926
+ user-select: none;
849
927
  }
850
928
 
851
- .group:hover .group-hover\:border-blue-400 {
852
- --tw-border-opacity: 1;
853
- border-color: rgb(96 165 250 / var(--tw-border-opacity, 1));
929
+ /* ── Global selection ────────────────────────────────────── */
930
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] {
931
+ background-color: var(--lex4-color-selection-bg) !important;
932
+ caret-color: transparent;
933
+ color: var(--lex4-color-selection-text) !important;
854
934
  }
855
935
 
856
- .group:hover .group-hover\:bg-blue-50 {
857
- --tw-bg-opacity: 1;
858
- background-color: rgb(239 246 255 / var(--tw-bg-opacity, 1));
936
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] p,
937
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] li,
938
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] h1,
939
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] h2,
940
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] h3,
941
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] h4,
942
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] h5,
943
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] h6,
944
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] blockquote,
945
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] pre,
946
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] code,
947
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] span,
948
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] strong,
949
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] em,
950
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] u,
951
+ .lex4-editor[data-global-selection-active="true"] [data-testid^="page-body-"] [contenteditable="true"] s {
952
+ color: inherit !important;
859
953
  }