vanilla-jui 1.3.9 → 1.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/index.umd.js +1 -1
  3. package/dist/style.css +1 -1
  4. package/package.json +3 -2
  5. package/src/components/accordion.js +373 -0
  6. package/src/components/components.js +0 -0
  7. package/src/components/drop.js +437 -0
  8. package/src/components/flow.js +1133 -0
  9. package/src/components/form.js +585 -0
  10. package/src/components/icons.js +83 -0
  11. package/src/components/menu.js +422 -0
  12. package/src/components/modal.js +1174 -0
  13. package/src/components/offcanvas.js +332 -0
  14. package/src/components/pagination.js +536 -0
  15. package/src/components/parabola.js +295 -0
  16. package/src/components/sticky.js +271 -0
  17. package/src/components/swiper.js +1123 -0
  18. package/src/components/tabs.js +746 -0
  19. package/src/components/theme.js +353 -0
  20. package/src/components/toast.js +329 -0
  21. package/src/components/toc.js +226 -0
  22. package/src/components/tooltip.js +86 -0
  23. package/src/components/validator.js +586 -0
  24. package/src/core/Component.js +248 -0
  25. package/src/css/accordion.css +72 -0
  26. package/src/css/animation.css +177 -0
  27. package/src/css/avatar.css +62 -0
  28. package/src/css/badge.css +66 -0
  29. package/src/css/breadcrumb.css +106 -0
  30. package/src/css/button.css +296 -0
  31. package/src/css/card.css +151 -0
  32. package/src/css/color.css +1163 -0
  33. package/src/css/color_p3.css +1172 -0
  34. package/src/css/components.css +26 -0
  35. package/src/css/content.css +716 -0
  36. package/src/css/divider.css +9 -0
  37. package/src/css/drop.css +28 -0
  38. package/src/css/flow.css +86 -0
  39. package/src/css/font.css +23 -0
  40. package/src/css/form.css +919 -0
  41. package/src/css/gradient.css +224 -0
  42. package/src/css/icon.css +63 -0
  43. package/src/css/index.css +12 -0
  44. package/src/css/layout.css +782 -0
  45. package/src/css/loading.css +38 -0
  46. package/src/css/menu.css +564 -0
  47. package/src/css/modal.css +94 -0
  48. package/src/css/offcanvas.css +104 -0
  49. package/src/css/pagination.css +25 -0
  50. package/src/css/popup.css +69 -0
  51. package/src/css/skeleton.css +76 -0
  52. package/src/css/status.css +56 -0
  53. package/src/css/swiper.css +160 -0
  54. package/src/css/table.css +52 -0
  55. package/src/css/tabs.css +95 -0
  56. package/src/css/tag.css +97 -0
  57. package/src/css/theme-palette.css +59 -0
  58. package/src/css/tip.css +84 -0
  59. package/src/css/toast.css +154 -0
  60. package/src/css/toc.css +38 -0
  61. package/src/css/tokens.css +1295 -0
  62. package/src/css/toolbar.css +115 -0
  63. package/src/css/tooltip.css +19 -0
  64. package/src/icons/index.js +30 -0
  65. package/src/index.js +45 -0
  66. package/src/locales/index.js +45 -0
  67. package/src/locales/index.min.js +1 -0
  68. package/src/utilities/browser.js +111 -0
  69. package/src/utilities/cache.js +159 -0
  70. package/src/utilities/core.js +502 -0
  71. package/src/utilities/debug.js +103 -0
  72. package/src/utilities/dom.js +313 -0
  73. package/src/utilities/events.js +69 -0
  74. package/src/utilities/http.js +30 -0
  75. package/src/utilities/legacy-dom.js +179 -0
  76. package/src/utilities/storage.js +46 -0
@@ -0,0 +1,26 @@
1
+ @import url('./divider.css');
2
+ @import url('./button.css');
3
+ @import url('./avatar.css');
4
+ @import url('./badge.css');
5
+ @import url('./tag.css');
6
+ @import url('./tip.css');
7
+ @import url('./loading.css');
8
+ @import url('./skeleton.css');
9
+ @import url('./popup.css');
10
+ @import url('./modal.css');
11
+ @import url('./flow.css');
12
+ @import url('./toast.css');
13
+ @import url('./tabs.css');
14
+ @import url('./offcanvas.css');
15
+ @import url('./accordion.css');
16
+ @import url('./theme-palette.css');
17
+ @import url('./drop.css');
18
+ @import url('./tooltip.css');
19
+ @import url('./swiper.css');
20
+ @import url('./breadcrumb.css');
21
+ @import url('./table.css');
22
+ @import url('./pagination.css');
23
+ @import url('./card.css');
24
+ @import url('./toolbar.css');
25
+ @import url('./menu.css');
26
+ @import url('./toc.css');
@@ -0,0 +1,716 @@
1
+ @layer content {
2
+ /* ============================================
3
+ Content - 文章阅读/编辑器预览样式
4
+ ============================================ */
5
+
6
+ .j-content {
7
+ /* 阅读模式变量 */
8
+ --content-line-height: 1.75;
9
+ --content-letter-spacing: 0.01em;
10
+ --content-word-spacing: 0.02em;
11
+ --content-paragraph-spacing: 1.25em;
12
+ --content-heading-spacing: 1.5em;
13
+ --content-block-spacing: 1.5em;
14
+ --content-list-spacing: 0.5em;
15
+
16
+ line-height: var(--content-line-height);
17
+ letter-spacing: var(--content-letter-spacing);
18
+ word-spacing: var(--content-word-spacing);
19
+ word-break: break-word;
20
+ text-rendering: optimizeLegibility;
21
+ -webkit-font-smoothing: antialiased;
22
+ -moz-osx-font-smoothing: grayscale;
23
+ outline: 0;
24
+ position: relative;
25
+ }
26
+
27
+ /* --- Size Modes --- */
28
+ .j-content,
29
+ .j-content.is-md {
30
+ font-size: var(--font-size-lg);
31
+ }
32
+
33
+ .j-content.is-sm {
34
+ --content-line-height: 1.65;
35
+ --content-paragraph-spacing: 1em;
36
+ --content-heading-spacing: 1.25em;
37
+ --content-block-spacing: 1.25em;
38
+ font-size: var(--font-size-md);
39
+ }
40
+
41
+ .j-content.is-lg {
42
+ --content-line-height: 1.8;
43
+ --content-paragraph-spacing: 1.5em;
44
+ --content-heading-spacing: 1.75em;
45
+ --content-block-spacing: 1.75em;
46
+ font-size: var(--font-size-xl);
47
+ }
48
+
49
+ .j-content.is-xl {
50
+ --content-line-height: 1.85;
51
+ --content-paragraph-spacing: 1.75em;
52
+ --content-heading-spacing: 2em;
53
+ --content-block-spacing: 2em;
54
+ font-size: var(--font-size-2xl);
55
+ }
56
+
57
+ /* ============================================
58
+ Typography - 段落与标题
59
+ ============================================ */
60
+
61
+ /* Reset */
62
+ .j-content *,
63
+ .j-content *::before,
64
+ .j-content *::after {
65
+ box-sizing: border-box;
66
+ }
67
+
68
+ /* 段落 */
69
+ .j-content p {
70
+ margin: 0 0 var(--content-paragraph-spacing);
71
+ }
72
+
73
+ /* 标题层级 */
74
+ .j-content h1,
75
+ .j-content h2,
76
+ .j-content h3,
77
+ .j-content h4,
78
+ .j-content h5,
79
+ .j-content h6 {
80
+ margin: var(--content-heading-spacing) 0 calc(var(--content-heading-spacing) * 0.75);
81
+ font-weight: 600;
82
+ line-height: 1.3;
83
+ color: var(--tone-heading);
84
+ letter-spacing: -0.02em;
85
+ }
86
+
87
+ .j-content h1 {
88
+ font-size: 2em;
89
+ font-weight: 700;
90
+ letter-spacing: -0.03em;
91
+ margin-top: 0;
92
+ }
93
+
94
+ .j-content h2 {
95
+ font-size: 1.625em;
96
+ font-weight: 650;
97
+ padding-bottom: 0.5em;
98
+ border-bottom: 1px solid var(--ui-border-subtle);
99
+ }
100
+
101
+ .j-content h3 {
102
+ font-size: 1.375em;
103
+ }
104
+
105
+ .j-content h4 {
106
+ font-size: 1.125em;
107
+ }
108
+
109
+ .j-content h5,
110
+ .j-content h6 {
111
+ font-size: 1em;
112
+ }
113
+
114
+ /* 标题后的段落减少间距 */
115
+ .j-content h1+p,
116
+ .j-content h2+p,
117
+ .j-content h3+p,
118
+ .j-content h4+p,
119
+ .j-content h5+p,
120
+ .j-content h6+p {
121
+ margin-top: calc(var(--content-paragraph-spacing) * -0.5);
122
+ }
123
+
124
+ /* ============================================
125
+ Inline Elements - 内联元素
126
+ ============================================ */
127
+
128
+ .j-content strong,
129
+ .j-content b {
130
+ font-weight: 650;
131
+ color: var(--tone-heading);
132
+ }
133
+
134
+ .j-content em,
135
+ .j-content i {
136
+ font-style: italic;
137
+ }
138
+
139
+ .j-content u {
140
+ text-decoration: underline;
141
+ text-decoration-thickness: 4px;
142
+ text-decoration-color: var(--tone-ring);
143
+ text-underline-offset: 0.2em;
144
+ }
145
+
146
+ .j-content s,
147
+ .j-content del {
148
+ text-decoration: line-through;
149
+ color: var(--tone-caption);
150
+ }
151
+
152
+ .j-content mark {
153
+ background-color: var(--tone-highlight);
154
+ color: var(--tone-highlight-fg);
155
+ padding: 0.1em 0.3em;
156
+ border-radius: 0.2em;
157
+ }
158
+
159
+ .j-content small {
160
+ font-size: 0.875em;
161
+ color: var(--tone-caption);
162
+ }
163
+
164
+ .j-content sub {
165
+ vertical-align: sub;
166
+ font-size: 0.75em;
167
+ }
168
+
169
+ .j-content sup {
170
+ vertical-align: super;
171
+ font-size: 0.75em;
172
+ }
173
+
174
+ .j-content abbr[title] {
175
+ text-decoration: underline dotted;
176
+ text-decoration-color: var(--tone-muted);
177
+ text-underline-offset: 0.2em;
178
+ cursor: help;
179
+ }
180
+
181
+ .j-content time {
182
+ white-space: nowrap;
183
+ color: var(--tone-caption);
184
+ }
185
+
186
+ .j-content ruby {
187
+ font-size: 0.95em;
188
+ }
189
+
190
+ .j-content rt {
191
+ font-size: 0.7em;
192
+ color: var(--tone-caption);
193
+ }
194
+
195
+ /* ============================================
196
+ Links - 链接
197
+ ============================================ */
198
+
199
+ .j-content a {
200
+ color: var(--tone-link);
201
+ text-decoration: none;
202
+ text-decoration-color: transparent;
203
+ text-underline-offset: 0.15em;
204
+ transition: color 0.15s, text-decoration-color 0.15s;
205
+ }
206
+
207
+ .j-content a:hover {
208
+ color: var(--tone-link-hover);
209
+ text-decoration: underline;
210
+ text-decoration-color: var(--tone-link-hover);
211
+ }
212
+
213
+ .j-content a:visited {
214
+ color: var(--tone-link-visited);
215
+ }
216
+
217
+ .j-content a:active {
218
+ color: var(--tone-link-active);
219
+ }
220
+
221
+ /* ============================================
222
+ Lists - 列表
223
+ ============================================ */
224
+
225
+ .j-content ul,
226
+ .j-content ol {
227
+ margin: 0 0 var(--content-paragraph-spacing);
228
+ padding-left: 1.75em;
229
+ /* font-size: 0.875em; */
230
+ }
231
+
232
+ .j-content ul li,
233
+ .j-content ol li {
234
+ margin-bottom: var(--content-list-spacing);
235
+ padding-left: 0.25em;
236
+ }
237
+
238
+ .j-content ul li:last-child,
239
+ .j-content ol li:last-child {
240
+ margin-bottom: 0;
241
+ }
242
+
243
+ .j-content ul {
244
+ list-style-type: disc;
245
+ }
246
+
247
+ .j-content ol {
248
+ list-style-type: decimal;
249
+ }
250
+
251
+ .j-content ul ul {
252
+ list-style-type: circle;
253
+ margin-top: var(--content-list-spacing);
254
+ margin-bottom: 0;
255
+ }
256
+
257
+ .j-content ol ol {
258
+ list-style-type: lower-alpha;
259
+ margin-top: var(--content-list-spacing);
260
+ margin-bottom: 0;
261
+ }
262
+
263
+ .j-content ul ul ul {
264
+ list-style-type: square;
265
+ }
266
+
267
+ .j-content ul p,
268
+ .j-content ol p {
269
+ margin: 0;
270
+ }
271
+
272
+ /* Definition List */
273
+ .j-content dl {
274
+ margin: 0 0 var(--content-block-spacing);
275
+ }
276
+
277
+ .j-content dt {
278
+ font-weight: 600;
279
+ margin-top: 0.75em;
280
+ margin-bottom: 0.125em;
281
+ color: var(--tone-heading);
282
+ }
283
+
284
+ .j-content dt:first-child {
285
+ margin-top: 0;
286
+ }
287
+
288
+ .j-content dd {
289
+ margin: 0 0 0.75em;
290
+ padding-left: 1em;
291
+ color: var(--tone-body);
292
+ }
293
+
294
+ .j-content dd+dt {
295
+ margin-top: 1em;
296
+ }
297
+
298
+ /* checkbox - 任务列表 */
299
+ .j-content .j-checkbox {
300
+ margin-block: var(--content-paragraph-spacing);
301
+ }
302
+
303
+ /* ============================================
304
+ Blockquote - 引用
305
+ ============================================ */
306
+
307
+ .j-content blockquote {
308
+ margin: var(--content-block-spacing) 0;
309
+ margin-left: 0;
310
+ margin-right: 0;
311
+ padding: 1em 1.5em;
312
+ border-left: 3px solid var(--tone-border);
313
+ border-radius: 0 var(--radius-md) var(--radius-md) 0;
314
+ background-color: var(--tone-wash);
315
+ color: var(--tone-subtitle);
316
+ font-style: italic;
317
+ }
318
+
319
+ .j-content blockquote p {
320
+ margin: 0;
321
+ }
322
+
323
+ .j-content blockquote p+p {
324
+ margin-top: 0.75em;
325
+ }
326
+
327
+ .j-content cite {
328
+ display: block;
329
+ margin-top: 0.75em;
330
+ font-style: normal;
331
+ font-size: 0.875em;
332
+ color: var(--tone-caption);
333
+ }
334
+
335
+ .j-content cite::before {
336
+ content: '— ';
337
+ }
338
+
339
+ /* ============================================
340
+ Code - 代码
341
+ ============================================ */
342
+
343
+ .j-content code:not([class*="language-"]) {
344
+ font-family: 'SF Mono', SFMono-Regular, Consolas, 'Liberation Mono', Menlo, monospace;
345
+ font-size: 0.875em;
346
+ border: 1px solid var(--ui-border-subtle);
347
+ border-radius: var(--radius-sm);
348
+ word-break: break-word;
349
+ padding: 0.15em 0.4em;
350
+ background-color: var(--tone-code-bg);
351
+ color: var(--tone-code-fg);
352
+ }
353
+
354
+ .j-content kbd {
355
+ font-family: inherit;
356
+ font-size: 0.875em;
357
+ background-color: var(--ui-surface-subtle);
358
+ border: 1px solid var(--ui-border);
359
+ border-bottom-width: 2px;
360
+ border-radius: var(--radius-sm);
361
+ padding: 0.1em 0.4em;
362
+ color: var(--tone-body);
363
+ }
364
+
365
+ .j-content pre {
366
+ margin: var(--content-block-spacing) 0;
367
+ background-color: var(--tone-code-bg);
368
+ font-size: 0.875em;
369
+ line-height: 1.6;
370
+ tab-size: 2;
371
+ }
372
+
373
+ .j-content pre code {
374
+ background: none;
375
+ color: inherit;
376
+ font-size: inherit;
377
+ white-space: pre;
378
+ }
379
+
380
+ .j-content pre.j-code-editor {
381
+ position: relative;
382
+ margin-block: 1rem;
383
+ overflow: auto;
384
+ border-radius: var(--radius-md);
385
+ border: 1px solid var(--ui-border);
386
+ }
387
+
388
+ html.j-radius-round .j-content pre.j-code-editor {
389
+ border-radius: 1.25rem;
390
+ }
391
+
392
+ .j-content pre.j-code-editor.hljs {
393
+ color: var(--ui-fg);
394
+ background-color: var(--ui-bg-subtle);
395
+ white-space: break-spaces;
396
+ }
397
+
398
+ .j-content pre.j-code-editor select.language-selector {
399
+ --input-background-color: var(--ui-bg-subtle);
400
+ --input-box-shadow: none;
401
+ position: absolute;
402
+ top: 8px;
403
+ right: 8px;
404
+ z-index: 1;
405
+ }
406
+
407
+ .j-content pre code[class*="language-"] {
408
+ display: block;
409
+ overflow-x: auto;
410
+ padding: 1.25em 1.5em;
411
+ }
412
+
413
+ .hljs-doctag,
414
+ .hljs-keyword,
415
+ .hljs-meta .hljs-keyword,
416
+ .hljs-template-tag,
417
+ .hljs-template-variable,
418
+ .hljs-type,
419
+ .hljs-variable.language_ {
420
+ /* prettylights-syntax-keyword */
421
+ color: var(--ui-tomato)
422
+ }
423
+
424
+ .hljs-title,
425
+ .hljs-title.class_,
426
+ .hljs-title.class_.inherited__,
427
+ .hljs-title.function_ {
428
+ /* prettylights-syntax-entity */
429
+ color: var(--ui-violet)
430
+ }
431
+
432
+ .hljs-attr,
433
+ .hljs-attribute,
434
+ .hljs-literal,
435
+ .hljs-meta,
436
+ .hljs-number,
437
+ .hljs-operator,
438
+ .hljs-variable,
439
+ .hljs-selector-attr,
440
+ .hljs-selector-class,
441
+ .hljs-selector-id {
442
+ /* prettylights-syntax-constant */
443
+ color: var(--ui-teal)
444
+ }
445
+
446
+ .hljs-regexp,
447
+ .hljs-string,
448
+ .hljs-meta .hljs-string {
449
+ /* prettylights-syntax-string */
450
+ color: var(--ui-pink)
451
+ }
452
+
453
+ .hljs-built_in,
454
+ .hljs-symbol {
455
+ /* prettylights-syntax-variable */
456
+ color: var(--ui-orange)
457
+ }
458
+
459
+ .hljs-comment,
460
+ .hljs-code,
461
+ .hljs-formula {
462
+ /* prettylights-syntax-comment */
463
+ color: var(--ui-olive)
464
+ }
465
+
466
+ .hljs-name,
467
+ .hljs-quote,
468
+ .hljs-selector-tag,
469
+ .hljs-selector-pseudo {
470
+ /* prettylights-syntax-entity-tag */
471
+ color: var(--ui-indigo);
472
+ }
473
+
474
+ .hljs-subst {
475
+ /* prettylights-syntax-storage-modifier-import */
476
+ color: var(--ui-fg)
477
+ }
478
+
479
+ .hljs-section {
480
+ /* prettylights-syntax-markup-heading */
481
+ color: var(--ui-teal);
482
+ font-weight: bold
483
+ }
484
+
485
+ .hljs-bullet {
486
+ /* prettylights-syntax-markup-list */
487
+ color: var(--ui-gold)
488
+ }
489
+
490
+ .hljs-emphasis {
491
+ /* prettylights-syntax-markup-italic */
492
+ color: var(--ui-fg);
493
+ font-style: italic
494
+ }
495
+
496
+ .hljs-strong {
497
+ /* prettylights-syntax-markup-bold */
498
+ color: var(--ui-fg);
499
+ font-weight: bold
500
+ }
501
+
502
+ .hljs-addition {
503
+ /* prettylights-syntax-markup-inserted */
504
+ color: var(--ui-indigo);
505
+ background-color: #f0fff4
506
+ }
507
+
508
+ .hljs-deletion {
509
+ /* prettylights-syntax-markup-deleted */
510
+ color: var(--ui-ruby);
511
+ background-color: #ffeef0;
512
+ }
513
+
514
+ .hljs-char.escape_,
515
+ .hljs-link,
516
+ .hljs-params,
517
+ .hljs-property,
518
+ .hljs-punctuation,
519
+ .hljs-tag {
520
+ /* purposely ignored */
521
+ }
522
+
523
+ /* ============================================
524
+ Media - 媒体
525
+ ============================================ */
526
+
527
+ .j-content img {
528
+ max-width: 100%;
529
+ height: auto;
530
+ border-radius: var(--radius-lg);
531
+ }
532
+
533
+ .j-content figure {
534
+ margin: var(--content-block-spacing) 0;
535
+ }
536
+
537
+ .j-content figure img,
538
+ .j-content figure video,
539
+ .j-content figure iframe {
540
+ display: block;
541
+ margin: 0 auto;
542
+ }
543
+
544
+ .j-content figcaption {
545
+ margin-top: 0.75em;
546
+ font-size: 0.875em;
547
+ color: var(--tone-caption);
548
+ text-align: center;
549
+ line-height: 1.5;
550
+ }
551
+
552
+ .j-content iframe,
553
+ .j-content video,
554
+ .j-content audio {
555
+ max-width: 100%;
556
+ }
557
+
558
+ .j-content video,
559
+ .j-content audio {
560
+ display: block;
561
+ border-radius: var(--radius-lg);
562
+ }
563
+
564
+ .j-content video {
565
+ background-color: var(--ui-fg);
566
+ }
567
+
568
+ .j-content figure:has(audio) {
569
+ display: flex;
570
+ flex-direction: column;
571
+ justify-content: center;
572
+ align-items: center;
573
+ }
574
+
575
+ /* ============================================
576
+ Table - 表格
577
+ ============================================ */
578
+
579
+ .j-content table {
580
+ min-width: 280px;
581
+ max-width: 100%;
582
+ margin: var(--content-block-spacing) 0;
583
+ border-collapse: collapse;
584
+ font-size: 0.9375em;
585
+ display: block;
586
+ overflow-x: auto;
587
+ -webkit-overflow-scrolling: touch;
588
+ }
589
+
590
+ .j-content th,
591
+ .j-content td {
592
+ padding: 0.75em 1em;
593
+ border-bottom: 1px solid var(--ui-border-subtle);
594
+ text-align: left;
595
+ }
596
+
597
+ .j-content th {
598
+ background-color: var(--ui-bg-subtle);
599
+ font-weight: 600;
600
+ color: var(--tone-heading);
601
+ white-space: nowrap;
602
+ }
603
+
604
+ .j-content thead th {
605
+ border-bottom: 2px solid var(--ui-border);
606
+ }
607
+
608
+ .j-content tbody tr:hover {
609
+ background-color: var(--ui-surface-hover);
610
+ }
611
+
612
+ .j-content tbody tr:last-child td {
613
+ border-bottom: none;
614
+ }
615
+
616
+ /* ============================================
617
+ Horizontal Rule - 分割线
618
+ ============================================ */
619
+
620
+ .j-content hr {
621
+ margin: var(--content-block-spacing) 0;
622
+ border: 0;
623
+ height: 1px;
624
+ background-color: var(--ui-border);
625
+ }
626
+
627
+ /* ============================================
628
+ Details / Summary - 折叠
629
+ ============================================ */
630
+
631
+ .j-content details {
632
+ margin: var(--content-block-spacing) 0;
633
+ padding: 1em 1.25em;
634
+ background-color: var(--ui-bg-subtle);
635
+ border-radius: var(--radius-lg);
636
+ border: 1px solid var(--ui-border-subtle);
637
+ }
638
+
639
+ .j-content summary {
640
+ cursor: pointer;
641
+ font-weight: 600;
642
+ color: var(--tone-heading);
643
+ outline: none;
644
+ list-style: none;
645
+ display: flex;
646
+ align-items: center;
647
+ gap: 0.5em;
648
+ }
649
+
650
+ .j-content summary::before {
651
+ content: '▸';
652
+ display: inline-block;
653
+ transition: transform 0.2s ease;
654
+ }
655
+
656
+ .j-content details[open]>summary::before {
657
+ transform: rotate(90deg);
658
+ }
659
+
660
+ .j-content details[open]>summary {
661
+ margin-bottom: 0.75em;
662
+ }
663
+
664
+ .j-content details[open]>summary+* {
665
+ margin-top: 0;
666
+ }
667
+
668
+ /* ============================================
669
+ Progress / Meter
670
+ ============================================ */
671
+
672
+ .j-content progress {
673
+ max-width: 100%;
674
+ height: 0.5em;
675
+ margin: 0.5em 0;
676
+ border-radius: var(--radius-full);
677
+ overflow: hidden;
678
+ }
679
+
680
+ .j-content meter {
681
+ max-width: 100%;
682
+ height: 1em;
683
+ margin: 0.25em 0;
684
+ }
685
+
686
+ /* ============================================
687
+ Address
688
+ ============================================ */
689
+
690
+ .j-content address {
691
+ font-style: normal;
692
+ margin: 0 0 var(--content-block-spacing);
693
+ padding: 1em 1.25em;
694
+ background-color: var(--ui-bg-subtle);
695
+ border-radius: var(--radius-lg);
696
+ color: var(--tone-caption);
697
+ font-size: 0.9375em;
698
+ }
699
+
700
+ /* ============================================
701
+ Block Item - 通用块级元素
702
+ ============================================ */
703
+
704
+ .j-content .block-item {
705
+ margin: var(--content-block-spacing) 0;
706
+ }
707
+
708
+ /* First/Last child margin reset */
709
+ .j-content>*:first-child {
710
+ margin-top: 0;
711
+ }
712
+
713
+ .j-content>*:last-child {
714
+ margin-bottom: 0;
715
+ }
716
+ }