@v1hz/md2docx 1.5.0 → 1.6.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.
package/src/web/app.css CHANGED
@@ -1,16 +1,25 @@
1
1
  :root {
2
- --paper: #f7f8fa;
3
- --sheet: #ffffff;
4
- --ink: #15233b;
5
- --muted: #637087;
6
- --rule: #dce2eb;
7
- --blue: #2457d6;
8
- --blue-soft: #eaf0ff;
9
- --red: #b73535;
10
- --shadow: 0 24px 60px rgb(21 35 59 / 9%);
2
+ --canvas: #eef1f5;
3
+ --paper: #ffffff;
4
+ --ink: #172235;
5
+ --muted: #687386;
6
+ --line: #d8dee8;
7
+ --line-soft: #e9edf3;
8
+ --navy: #173f72;
9
+ --navy-deep: #102e55;
10
+ --blue-soft: #e7eef8;
11
+ --cyan: #68b7c7;
12
+ --red: #b33b43;
13
+ --shadow: 0 20px 50px rgb(25 42 67 / 10%);
14
+ --fs-body: 15px;
15
+ --fs-small: 13px;
16
+ --fs-label: 14px;
17
+ --fs-heading: 18px;
18
+ --fs-meta: 12px;
19
+ font-size: 16px;
11
20
  font-family: "Segoe UI Variable", "Microsoft YaHei UI", sans-serif;
12
21
  color: var(--ink);
13
- background: var(--paper);
22
+ background: var(--canvas);
14
23
  }
15
24
 
16
25
  * {
@@ -21,121 +30,654 @@ html {
21
30
  }
22
31
  body {
23
32
  margin: 0;
33
+ min-width: 320px;
24
34
  min-height: 100vh;
35
+ padding-bottom: 82px;
36
+ }
37
+ body[data-view="styles"] {
38
+ overflow: hidden;
39
+ padding-bottom: 0;
40
+ }
41
+ body[data-view="styles"] .config-index {
42
+ display: none;
43
+ }
44
+ main {
45
+ display: contents;
25
46
  }
26
47
  button,
27
48
  input,
28
- select {
49
+ select,
50
+ textarea {
29
51
  font: inherit;
30
52
  }
53
+ button {
54
+ cursor: pointer;
55
+ }
56
+ button:disabled {
57
+ cursor: not-allowed;
58
+ opacity: 0.46;
59
+ }
60
+ [hidden] {
61
+ display: none !important;
62
+ }
31
63
 
32
- .workspace {
64
+ .masthead {
65
+ position: sticky;
66
+ z-index: 20;
67
+ top: 0;
33
68
  display: grid;
34
- grid-template-columns: minmax(0, 820px);
35
- justify-content: center;
36
- gap: 28px;
37
- max-width: 1320px;
69
+ grid-template-columns: 1fr auto 1fr;
70
+ align-items: center;
71
+ min-height: 72px;
72
+ padding: 0 28px;
73
+ color: white;
74
+ background: var(--navy-deep);
75
+ border-bottom: 3px solid var(--cyan);
76
+ }
77
+ .brand {
78
+ display: inline-flex;
79
+ gap: 11px;
80
+ align-items: center;
81
+ width: max-content;
82
+ color: white;
83
+ text-decoration: none;
84
+ }
85
+ .brand-mark {
86
+ display: grid;
87
+ place-items: center;
88
+ width: 38px;
89
+ height: 38px;
90
+ color: var(--navy-deep);
91
+ background: #d9f0f2;
92
+ border-radius: 3px;
93
+ font-family: Consolas, monospace;
94
+ font-weight: 800;
95
+ }
96
+ .brand strong,
97
+ .brand small {
98
+ display: block;
99
+ }
100
+ .brand strong {
101
+ font-size: 20px;
102
+ letter-spacing: 0.02em;
103
+ }
104
+ .brand small {
105
+ margin-top: 2px;
106
+ color: #afc4df;
107
+ font-size: 13px;
108
+ letter-spacing: 0.16em;
109
+ }
110
+ .masthead-note {
111
+ justify-self: end;
112
+ margin: 0;
113
+ color: #afc4df;
114
+ font-family: "Microsoft YaHei UI", sans-serif;
115
+ font-size: 14px;
116
+ }
117
+ .mode-tabs {
118
+ display: flex;
119
+ align-self: stretch;
120
+ }
121
+ .mode-tab {
122
+ position: relative;
123
+ min-width: 112px;
124
+ padding: 0 20px;
125
+ color: #b7c8dc;
126
+ background: transparent;
127
+ border: 0;
128
+ font-weight: 650;
129
+ }
130
+ .mode-tab::after {
131
+ position: absolute;
132
+ right: 18px;
133
+ bottom: -3px;
134
+ left: 18px;
135
+ height: 3px;
136
+ background: transparent;
137
+ content: "";
138
+ }
139
+ .mode-tab:hover,
140
+ .mode-tab.active {
141
+ color: white;
142
+ background: rgb(255 255 255 / 5%);
143
+ }
144
+ .mode-tab.active::after {
145
+ background: #d9f0f2;
146
+ }
147
+
148
+ .view {
149
+ animation: view-in 0.22s ease-out;
150
+ }
151
+ @keyframes view-in {
152
+ from {
153
+ opacity: 0;
154
+ transform: translateY(5px);
155
+ }
156
+ }
157
+ .loading {
158
+ padding: 54px;
159
+ color: var(--muted);
160
+ }
161
+ .error-copy {
162
+ color: var(--red) !important;
163
+ }
164
+ .eyebrow {
165
+ margin: 0 0 8px;
166
+ color: var(--navy);
167
+ font-size: 13px;
168
+ font-weight: 800;
169
+ letter-spacing: 0.16em;
170
+ text-transform: uppercase;
171
+ }
172
+
173
+ /* 转换配置 */
174
+ .config-workspace {
175
+ position: relative;
176
+ max-width: 1140px;
38
177
  margin: 0 auto;
39
- padding: 36px;
40
- align-items: start;
178
+ padding: 36px 28px;
41
179
  }
42
180
  .config-index {
43
181
  position: fixed;
44
- top: 50%;
45
- left: max(36px, calc((100vw - 1292px) / 2));
46
- transform: translateY(-50%);
182
+ top: 108px;
183
+ left: max(28px, calc((100vw - 1140px) / 2));
184
+ width: 190px;
47
185
  display: grid;
48
- gap: 4px;
49
- width: 180px;
186
+ gap: 3px;
187
+ }
188
+ .config-sheet {
189
+ overflow: hidden;
190
+ width: 100%;
191
+ max-width: 820px;
192
+ margin: 0 auto;
193
+ background: var(--paper);
194
+ border: 1px solid var(--line);
195
+ box-shadow: var(--shadow);
50
196
  }
51
-
52
197
  .config-index a {
53
198
  padding: 9px 12px;
54
199
  color: var(--muted);
55
200
  border-left: 2px solid transparent;
56
201
  text-decoration: none;
57
- font-size: 14px;
58
- transition: 0.15s ease;
202
+ font-size: 15px;
59
203
  }
60
204
  .config-index a:hover,
61
205
  .config-index a:focus-visible {
62
- color: var(--blue);
206
+ color: var(--navy);
63
207
  background: var(--blue-soft);
64
- border-left-color: var(--blue);
65
- outline: none;
208
+ border-left-color: var(--navy);
209
+ outline: 0;
66
210
  }
67
- .config-sheet {
68
- min-height: 400px;
211
+ .config-group {
212
+ display: grid;
213
+ grid-template-columns: 205px 1fr;
214
+ border-bottom: 1px solid var(--line);
215
+ scroll-margin-top: 100px;
216
+ }
217
+ .config-group:last-child {
218
+ border-bottom: 0;
219
+ }
220
+ .config-group > header {
221
+ padding: 28px;
222
+ background: #f8fafc;
223
+ border-right: 1px solid var(--line);
224
+ }
225
+ .config-group > header p {
226
+ margin: 0 0 8px;
227
+ color: #8490a1;
228
+ font-size: 13px;
229
+ font-weight: 800;
230
+ letter-spacing: 0.15em;
231
+ }
232
+ .config-group h2 {
233
+ margin: 0;
234
+ font-size: 20px;
235
+ line-height: 1.4;
236
+ }
237
+ .config-fields {
238
+ padding: 12px 28px;
239
+ }
240
+ .config-field {
241
+ display: grid;
242
+ grid-template-columns: 1fr minmax(180px, 250px);
243
+ gap: 24px;
244
+ align-items: center;
245
+ min-height: 60px;
246
+ border-bottom: 1px solid var(--line-soft);
247
+ }
248
+ .config-field:last-child {
249
+ border-bottom: 0;
250
+ }
251
+ .config-field > label {
252
+ font-weight: 650;
253
+ line-height: 1.45;
254
+ }
255
+
256
+ /* 样式工作区 */
257
+ .style-workspace {
258
+ display: grid;
259
+ grid-template-columns: 210px minmax(470px, 650px) minmax(350px, 470px);
260
+ gap: 16px;
261
+ height: calc(100vh - 132px);
262
+ max-width: 1460px;
263
+ margin: 0 auto;
264
+ padding: 16px 24px;
265
+ align-items: stretch;
266
+ }
267
+ .style-rail,
268
+ .style-editor,
269
+ .proof-panel {
270
+ background: var(--paper);
271
+ border: 1px solid var(--line);
272
+ box-shadow: 0 8px 24px rgb(25 42 67 / 6%);
273
+ }
274
+ .style-rail {
275
+ display: flex;
276
+ min-height: 0;
69
277
  overflow: hidden;
70
- background: var(--sheet);
71
- border: 1px solid var(--rule);
72
- box-shadow: var(--shadow);
278
+ flex-direction: column;
73
279
  }
74
- .loading {
75
- padding: 60px;
280
+ .style-rail > header {
281
+ flex: 0 0 auto;
282
+ padding: 22px 20px 16px;
283
+ background: #f8fafc;
284
+ border-bottom: 1px solid var(--line);
285
+ }
286
+ .style-rail h1 {
287
+ margin: 0;
288
+ font-family: Georgia, "Songti SC", serif;
289
+ font-size: 25px;
290
+ font-weight: 600;
291
+ }
292
+ .style-rail > header > p:last-child {
293
+ margin: 10px 0 0;
76
294
  color: var(--muted);
295
+ font-size: 14px;
296
+ line-height: 1.55;
77
297
  }
78
- .group {
298
+ .style-search {
299
+ display: flex;
300
+ gap: 8px;
301
+ align-items: center;
302
+ min-height: 38px;
303
+ margin-top: 12px;
304
+ padding: 0 10px;
305
+ color: #8691a1;
306
+ background: white;
307
+ border: 1px solid #b8c1cd;
308
+ border-radius: 3px;
309
+ }
310
+ .style-search:focus-within {
311
+ border-color: var(--navy);
312
+ box-shadow: 0 0 0 3px rgb(23 63 114 / 15%);
313
+ }
314
+ .style-search span {
315
+ font-size: 18px;
316
+ line-height: 1;
317
+ }
318
+ .style-search input {
319
+ min-width: 0;
320
+ min-height: 38px;
321
+ padding: 0;
322
+ border: 0;
323
+ box-shadow: none;
324
+ font-size: 14px;
325
+ }
326
+ .style-search input:focus {
327
+ outline: 0;
328
+ }
329
+ #style-index {
330
+ flex: 1;
331
+ min-height: 0;
332
+ overflow: auto;
333
+ }
334
+ .style-nav-group {
335
+ padding: 14px 10px 9px;
336
+ border-bottom: 1px solid var(--line-soft);
337
+ }
338
+ .style-nav-group:last-child {
339
+ border-bottom: 0;
340
+ }
341
+ .style-nav-group h2 {
342
+ margin: 0 10px 7px;
343
+ color: #8691a1;
344
+ font-size: 13px;
345
+ letter-spacing: 0.12em;
346
+ }
347
+ .style-nav-group div {
79
348
  display: grid;
80
- grid-template-columns: 210px 1fr;
81
- border-bottom: 1px solid var(--rule);
82
- scroll-margin-top: 24px;
349
+ gap: 2px;
350
+ }
351
+ .style-nav-group button {
352
+ width: 100%;
353
+ padding: 8px 10px;
354
+ color: #4e5b6d;
355
+ text-align: left;
356
+ background: transparent;
357
+ border: 0;
358
+ border-radius: 3px;
359
+ font-size: 15px;
360
+ }
361
+ .style-nav-group button:hover {
362
+ background: #f1f4f8;
363
+ }
364
+ .style-nav-group button.active {
365
+ color: var(--navy-deep);
366
+ background: var(--blue-soft);
367
+ box-shadow: inset 3px 0 var(--navy);
368
+ font-weight: 700;
369
+ }
370
+ .advanced-nav {
371
+ border-bottom: 0;
372
+ }
373
+ .style-editor {
374
+ min-height: 700px;
375
+ overflow: auto;
376
+ }
377
+ .editor-heading {
378
+ display: flex;
379
+ justify-content: space-between;
380
+ gap: 24px;
381
+ align-items: start;
382
+ padding: 28px 30px;
383
+ color: white;
384
+ background: var(--navy);
385
+ border-bottom: 3px solid var(--cyan);
386
+ }
387
+ .editor-heading .eyebrow {
388
+ color: #b9dce2;
389
+ }
390
+ .editor-heading h1 {
391
+ margin: 0;
392
+ font-family: Georgia, "Songti SC", serif;
393
+ font-size: 28px;
394
+ font-weight: 600;
395
+ }
396
+ .editor-heading p:last-child {
397
+ max-width: 450px;
398
+ margin: 7px 0 0;
399
+ color: #c7d4e4;
400
+ font-size: 14px;
401
+ line-height: 1.6;
402
+ }
403
+ .inherit-chip {
404
+ flex: 0 0 auto;
405
+ padding: 6px 9px;
406
+ color: #d9f0f2;
407
+ border: 1px solid rgb(217 240 242 / 35%);
408
+ border-radius: 3px;
409
+ font-size: 13px;
83
410
  }
84
- .group:last-child {
411
+ .property-group {
412
+ margin: 0;
413
+ padding: 20px 30px 24px;
414
+ border: 0;
415
+ border-bottom: 1px solid var(--line);
416
+ }
417
+ .property-group:last-child {
85
418
  border-bottom: 0;
86
419
  }
87
- .group-title {
88
- padding: 30px;
89
- background: #fbfcfe;
90
- border-right: 1px solid var(--rule);
420
+ .property-group-heading {
421
+ display: flex;
422
+ justify-content: space-between;
423
+ align-items: baseline;
424
+ gap: 12px;
425
+ margin-bottom: 16px;
91
426
  }
92
- .group-title h2 {
427
+ .property-group-heading h2 {
93
428
  margin: 0;
94
- font-size: 17px;
95
- line-height: 1.45;
429
+ color: var(--ink);
430
+ font-size: 15px;
431
+ font-weight: 750;
432
+ letter-spacing: 0;
96
433
  }
97
- .fields {
98
- padding: 14px 30px;
434
+ .property-group-heading p {
435
+ margin: 0;
436
+ color: #929baa;
437
+ font-size: 13px;
99
438
  }
100
- .field {
439
+ .group-note {
440
+ margin: 9px 0 2px;
441
+ color: var(--muted);
442
+ font-size: 14px;
443
+ line-height: 1.6;
444
+ }
445
+ .property-row {
101
446
  display: grid;
102
- grid-template-columns: minmax(0, 1fr) minmax(180px, 260px);
103
- gap: 24px;
104
- padding: 18px 0;
447
+ grid-template-columns: minmax(130px, 1fr) minmax(180px, 260px) 32px;
448
+ gap: 12px;
105
449
  align-items: center;
106
- border-bottom: 1px solid #edf0f5;
450
+ min-height: 60px;
451
+ border-bottom: 1px solid var(--line-soft);
107
452
  }
108
- .field:last-child {
453
+ .property-row:last-child {
109
454
  border-bottom: 0;
110
455
  }
111
- .field > label {
456
+ .property-label label {
112
457
  display: block;
113
- font-weight: 650;
114
- line-height: 1.5;
458
+ font-size: 15px;
459
+ font-weight: 680;
460
+ }
461
+ .property-label small {
462
+ display: block;
463
+ margin-top: 3px;
464
+ color: #929baa;
465
+ font-size: 13px;
466
+ }
467
+ .property-control {
468
+ min-width: 0;
469
+ }
470
+ .property-control > input,
471
+ .property-control > select,
472
+ .unit-control,
473
+ .color-control {
474
+ width: 100%;
475
+ }
476
+ .unit-control,
477
+ .color-control {
478
+ display: flex;
479
+ }
480
+ .unit-control input {
481
+ min-width: 0;
482
+ border-radius: 3px 0 0 3px;
483
+ }
484
+ .unit-control span {
485
+ display: grid;
486
+ place-items: center;
487
+ min-width: 52px;
488
+ padding: 0 9px;
489
+ color: var(--muted);
490
+ background: #f3f5f8;
491
+ border: 1px solid #bcc5d1;
492
+ border-left: 0;
493
+ border-radius: 0 3px 3px 0;
494
+ font-size: 13px;
495
+ }
496
+ .color-control input[type="color"] {
497
+ flex: 0 0 44px;
498
+ min-height: 40px;
499
+ padding: 4px;
500
+ border-radius: 3px 0 0 3px;
501
+ }
502
+ .color-control input[type="text"] {
503
+ min-width: 0;
504
+ border-left: 0;
505
+ border-radius: 0 3px 3px 0;
506
+ font-family: Consolas, monospace;
507
+ }
508
+ .reset-property {
509
+ display: grid;
510
+ place-items: center;
511
+ width: 30px;
512
+ height: 30px;
513
+ padding: 0;
514
+ color: var(--muted);
515
+ background: white;
516
+ border: 1px solid var(--line);
517
+ border-radius: 3px;
518
+ }
519
+ .reset-property:hover:not(:disabled) {
520
+ color: var(--navy);
521
+ border-color: var(--navy);
522
+ }
523
+ .check-control {
524
+ display: flex;
525
+ align-items: center;
526
+ gap: 9px;
527
+ width: max-content;
528
+ font-size: 13px;
529
+ }
530
+ .check-control input {
531
+ width: 17px;
532
+ height: 17px;
533
+ accent-color: var(--navy);
115
534
  }
116
535
 
536
+ .proof-panel {
537
+ position: sticky;
538
+ top: 96px;
539
+ overflow: hidden;
540
+ background: #dfe4eb;
541
+ }
542
+ .proof-header {
543
+ display: flex;
544
+ justify-content: space-between;
545
+ align-items: center;
546
+ min-height: 45px;
547
+ padding: 0 16px;
548
+ color: #d9e2ed;
549
+ background: #2b394d;
550
+ font-size: 13px;
551
+ font-weight: 700;
552
+ }
553
+ .proof-header small {
554
+ color: #9faebe;
555
+ font-weight: 400;
556
+ }
557
+ .proof-dot {
558
+ display: inline-block;
559
+ width: 7px;
560
+ height: 7px;
561
+ margin-right: 7px;
562
+ background: #73c7bc;
563
+ border-radius: 50%;
564
+ box-shadow: 0 0 0 3px rgb(115 199 188 / 14%);
565
+ }
566
+ .proof-page {
567
+ aspect-ratio: 210 / 297;
568
+ max-height: calc(100vh - 186px);
569
+ margin: 22px auto;
570
+ overflow: auto;
571
+ width: calc(100% - 44px);
572
+ padding: 9% 10%;
573
+ color: #202020;
574
+ background: white;
575
+ box-shadow: 0 12px 28px rgb(30 43 60 / 18%);
576
+ font-family: "Times New Roman", SimSun, serif;
577
+ font-size: 9pt;
578
+ }
579
+ .proof-cover {
580
+ margin-bottom: 13%;
581
+ text-align: center;
582
+ }
583
+ .proof-cover h1 {
584
+ margin: 0 0 8px;
585
+ }
586
+ .proof-cover p {
587
+ margin: 0;
588
+ }
589
+ .proof-page h2,
590
+ .proof-page h3 {
591
+ margin: 0;
592
+ }
593
+ .proof-page p {
594
+ margin: 0;
595
+ }
596
+ .proof-page a {
597
+ text-decoration: underline;
598
+ cursor: default;
599
+ }
600
+ .proof-page blockquote {
601
+ margin-right: 0;
602
+ margin-left: 0;
603
+ padding-left: 12px;
604
+ border-left: 2px solid #9eabba;
605
+ }
606
+ .proof-caption {
607
+ text-align: center;
608
+ }
609
+ .proof-page table {
610
+ width: 100%;
611
+ border-collapse: collapse;
612
+ }
613
+ .proof-page th,
614
+ .proof-page td {
615
+ padding: 4px 7px;
616
+ border-top: 1px solid currentColor;
617
+ border-bottom: 1px solid currentColor;
618
+ }
619
+ .proof-page pre {
620
+ overflow: hidden;
621
+ padding: 10px;
622
+ background: #f3f4f4;
623
+ border: 1px solid #c8cdd3;
624
+ white-space: pre-wrap;
625
+ }
626
+
627
+ .raw-editor {
628
+ padding: 24px 30px;
629
+ }
630
+ .raw-editor textarea {
631
+ width: 100%;
632
+ min-height: 560px;
633
+ resize: vertical;
634
+ padding: 16px;
635
+ color: #d7e3ef;
636
+ background: #172235;
637
+ border: 1px solid #0b1729;
638
+ border-radius: 3px;
639
+ font-family: Consolas, monospace;
640
+ font-size: 14px;
641
+ line-height: 1.55;
642
+ tab-size: 2;
643
+ }
644
+ .raw-editor > div {
645
+ display: flex;
646
+ justify-content: end;
647
+ gap: 8px;
648
+ margin-top: 12px;
649
+ }
650
+ .raw-editor p {
651
+ min-height: 20px;
652
+ color: var(--muted);
653
+ font-size: 14px;
654
+ }
655
+
656
+ /* 通用控件与底部操作 */
117
657
  input[type="text"],
118
658
  input[type="number"],
119
- select {
120
- width: 100%;
121
- min-height: 42px;
122
- padding: 9px 11px;
659
+ select,
660
+ textarea {
661
+ min-height: 40px;
662
+ padding: 8px 10px;
123
663
  color: var(--ink);
124
664
  background: white;
125
- border: 1px solid #bfc8d6;
126
- border-radius: 4px;
127
- outline: none;
665
+ border: 1px solid #bcc5d1;
666
+ border-radius: 3px;
667
+ outline: 0;
128
668
  }
129
669
  input:focus,
130
670
  select:focus,
671
+ textarea:focus,
131
672
  button:focus-visible {
132
- border-color: var(--blue);
133
- box-shadow: 0 0 0 3px rgb(36 87 214 / 16%);
673
+ border-color: var(--navy);
674
+ box-shadow: 0 0 0 3px rgb(23 63 114 / 15%);
675
+ outline: 0;
134
676
  }
135
677
  .switch {
136
678
  position: relative;
137
- width: 52px;
138
- height: 30px;
679
+ width: 48px;
680
+ height: 27px;
139
681
  justify-self: end;
140
682
  }
141
683
  .switch input {
@@ -146,153 +688,234 @@ button:focus-visible {
146
688
  display: block;
147
689
  width: 100%;
148
690
  height: 100%;
149
- border-radius: 30px;
150
- background: #b8c0cc;
151
- transition: 0.18s ease;
691
+ background: #b5beca;
692
+ border-radius: 20px;
152
693
  cursor: pointer;
694
+ transition: 0.16s ease;
153
695
  }
154
696
  .switch-track::after {
155
- content: "";
156
697
  position: absolute;
157
698
  top: 4px;
158
699
  left: 4px;
159
- width: 22px;
160
- height: 22px;
161
- border-radius: 50%;
700
+ width: 19px;
701
+ height: 19px;
162
702
  background: white;
163
- box-shadow: 0 2px 5px rgb(0 0 0 / 20%);
164
- transition: 0.18s ease;
703
+ border-radius: 50%;
704
+ box-shadow: 0 1px 4px rgb(0 0 0 / 22%);
705
+ content: "";
706
+ transition: 0.16s ease;
165
707
  }
166
708
  .switch input:checked + .switch-track {
167
- background: var(--blue);
709
+ background: var(--navy);
168
710
  }
169
711
  .switch input:checked + .switch-track::after {
170
- transform: translateX(22px);
712
+ transform: translateX(21px);
171
713
  }
172
714
  .switch input:disabled + .switch-track {
173
715
  cursor: not-allowed;
174
- opacity: 0.55;
716
+ opacity: 0.5;
175
717
  }
176
-
177
718
  .action-bar {
178
719
  position: fixed;
179
- z-index: 5;
180
- top: 50%;
181
- right: max(36px, calc((100vw - 1292px) / 2));
182
- display: grid;
183
- gap: 16px;
184
- width: 180px;
185
- padding: 18px;
186
- background: var(--sheet);
187
- border: 1px solid var(--rule);
188
- border-radius: 6px;
189
- box-shadow: var(--shadow);
190
- transform: translateY(-50%);
720
+ z-index: 30;
721
+ right: 0;
722
+ bottom: 0;
723
+ left: 0;
724
+ display: flex;
725
+ justify-content: space-between;
726
+ align-items: center;
727
+ min-height: 68px;
728
+ padding: 10px max(28px, calc((100vw - 1404px) / 2));
729
+ background: rgb(255 255 255 / 96%);
730
+ border-top: 1px solid var(--line);
731
+ box-shadow: 0 -8px 24px rgb(30 45 68 / 7%);
732
+ backdrop-filter: blur(12px);
733
+ }
734
+ .status-copy {
735
+ display: flex;
736
+ gap: 10px;
737
+ align-items: center;
738
+ }
739
+ #status-indicator {
740
+ width: 7px;
741
+ height: 7px;
742
+ background: #718098;
743
+ border-radius: 50%;
744
+ }
745
+ #status-indicator.error {
746
+ background: var(--red);
191
747
  }
192
748
  .action-bar p {
193
749
  margin: 0;
194
750
  color: var(--muted);
195
- font-size: 13px;
196
- line-height: 1.5;
197
- }
198
- .action-bar p.error {
199
- color: var(--red);
751
+ font-size: 14px;
200
752
  }
201
753
  .actions {
202
- display: grid;
754
+ display: flex;
203
755
  gap: 8px;
204
756
  }
205
- button {
206
- min-height: 42px;
207
- padding: 0 18px;
757
+ .actions button,
758
+ .raw-editor button {
759
+ min-height: 40px;
760
+ padding: 0 17px;
208
761
  color: white;
209
- background: var(--blue);
210
- border: 1px solid var(--blue);
211
- border-radius: 4px;
762
+ background: var(--navy);
763
+ border: 1px solid var(--navy);
764
+ border-radius: 3px;
765
+ font-size: 14px;
212
766
  font-weight: 700;
213
- cursor: pointer;
214
767
  }
215
768
  button.secondary {
216
769
  color: var(--ink);
217
770
  background: white;
218
- border-color: #bfc8d6;
219
- }
220
- button:disabled {
221
- opacity: 0.45;
222
- cursor: not-allowed;
771
+ border-color: #b8c1cd;
223
772
  }
224
773
 
225
- @media (max-width: 1120px) {
226
- .workspace {
774
+ @media (max-width: 1180px) {
775
+ .style-workspace {
776
+ grid-template-columns: 205px minmax(440px, 1fr);
777
+ }
778
+ .proof-panel {
779
+ position: relative;
780
+ top: 0;
781
+ grid-column: 2;
782
+ }
783
+ .proof-page {
784
+ max-height: none;
785
+ }
786
+ .masthead-note {
787
+ display: none;
788
+ }
789
+ .masthead {
790
+ grid-template-columns: 1fr auto;
791
+ }
792
+ }
793
+ @media (max-width: 820px) {
794
+ body {
795
+ padding-bottom: 112px;
796
+ }
797
+ .masthead {
798
+ position: relative;
227
799
  grid-template-columns: 1fr;
800
+ gap: 12px;
801
+ padding: 14px 18px 0;
802
+ }
803
+ .brand {
804
+ justify-self: center;
805
+ }
806
+ .mode-tabs {
807
+ width: 100%;
808
+ min-height: 48px;
809
+ }
810
+ .mode-tab {
811
+ flex: 1;
812
+ }
813
+ .config-workspace,
814
+ .style-workspace {
815
+ grid-template-columns: 1fr;
816
+ padding: 18px;
228
817
  }
229
818
  .config-index {
230
- position: sticky;
231
- z-index: 4;
232
- top: 0;
233
- left: 0;
234
- transform: none;
819
+ position: static;
820
+ left: auto;
235
821
  display: flex;
236
- gap: 2px;
237
822
  overflow-x: auto;
238
- padding: 8px;
239
- background: rgb(247 248 250 / 96%);
240
- border: 1px solid var(--rule);
241
- backdrop-filter: blur(12px);
242
- width: auto;
823
+ padding-bottom: 8px;
243
824
  }
244
825
  .config-index a {
245
826
  flex: 0 0 auto;
246
827
  border-bottom: 2px solid transparent;
247
828
  border-left: 0;
248
829
  }
249
- .config-index a:hover,
250
- .config-index a:focus-visible {
251
- border-bottom-color: var(--blue);
830
+ .style-rail {
831
+ position: static;
832
+ max-height: none;
252
833
  }
253
- .group {
254
- grid-template-columns: 1fr;
834
+ .style-rail > header {
835
+ display: none;
255
836
  }
256
- .group-title {
257
- border-right: 0;
258
- border-bottom: 1px solid var(--rule);
837
+ #style-index {
838
+ display: flex;
839
+ overflow-x: auto;
259
840
  }
260
- .action-bar {
261
- position: static;
841
+ .style-nav-group {
842
+ flex: 0 0 auto;
843
+ border-right: 1px solid var(--line-soft);
844
+ border-bottom: 0;
845
+ }
846
+ .style-nav-group div {
847
+ display: flex;
848
+ }
849
+ .style-nav-group h2 {
850
+ margin-left: 3px;
851
+ }
852
+ .style-nav-group button {
262
853
  width: auto;
263
- max-width: 820px;
264
- margin: -8px auto 36px;
265
- transform: none;
854
+ white-space: nowrap;
855
+ }
856
+ .proof-panel {
857
+ grid-column: 1;
858
+ }
859
+ .action-bar {
860
+ align-items: stretch;
861
+ flex-direction: column;
862
+ gap: 8px;
863
+ padding: 10px 18px;
266
864
  }
267
865
  .actions {
268
- grid-template-columns: 1fr 1fr;
866
+ display: grid;
867
+ grid-template-columns: repeat(3, 1fr);
269
868
  }
270
869
  }
271
870
  @media (max-width: 560px) {
272
- .workspace {
273
- padding-right: 18px;
274
- padding-left: 18px;
275
- }
276
- .field {
871
+ .config-group {
277
872
  grid-template-columns: 1fr;
278
873
  }
874
+ .config-group > header {
875
+ padding: 20px;
876
+ border-right: 0;
877
+ border-bottom: 1px solid var(--line);
878
+ }
879
+ .config-field,
880
+ .property-row {
881
+ grid-template-columns: 1fr 32px;
882
+ gap: 8px;
883
+ padding: 12px 0;
884
+ }
885
+ .config-field > label,
886
+ .property-label {
887
+ grid-column: 1 / -1;
888
+ }
279
889
  .switch {
280
890
  justify-self: start;
281
891
  }
282
- .action-bar {
283
- margin-right: 18px;
284
- margin-left: 18px;
285
- padding: 16px;
892
+ .editor-heading {
893
+ padding: 22px;
894
+ }
895
+ .inherit-chip {
896
+ display: none;
897
+ }
898
+ .property-group,
899
+ .raw-editor {
900
+ padding-right: 20px;
901
+ padding-left: 20px;
902
+ }
903
+ .actions button {
904
+ padding: 0 8px;
286
905
  }
287
- button {
288
- padding: 0 12px;
906
+ .proof-page {
907
+ width: calc(100% - 24px);
908
+ margin: 12px auto;
289
909
  }
290
910
  }
291
911
  @media (prefers-reduced-motion: reduce) {
292
912
  html {
293
913
  scroll-behavior: auto;
294
914
  }
295
- * {
915
+ *,
916
+ *::before,
917
+ *::after {
918
+ animation: none !important;
296
919
  transition: none !important;
297
920
  }
298
921
  }