@ponchia/ui 0.9.0 → 0.11.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.
Files changed (98) hide show
  1. package/CHANGELOG.md +107 -4
  2. package/MIGRATIONS.json +127 -18
  3. package/README.md +17 -9
  4. package/behaviors/index.d.ts +0 -2
  5. package/behaviors/index.d.ts.map +1 -1
  6. package/behaviors/index.js +0 -2
  7. package/behaviors/popover.js +4 -4
  8. package/classes/classes.json +53 -9
  9. package/classes/index.d.ts +20 -3
  10. package/classes/index.js +33 -3
  11. package/classes/vscode.css-custom-data.json +10 -10
  12. package/css/annotations.css +2 -2
  13. package/css/app.css +55 -31
  14. package/css/base.css +10 -14
  15. package/css/command.css +4 -4
  16. package/css/content.css +23 -21
  17. package/css/disclosure.css +17 -17
  18. package/css/discussion.css +150 -0
  19. package/css/feedback.css +15 -15
  20. package/css/figure.css +6 -4
  21. package/css/forms.css +8 -7
  22. package/css/generated.css +19 -12
  23. package/css/legend.css +13 -5
  24. package/css/navigation.css +3 -3
  25. package/css/overlay.css +13 -29
  26. package/css/primitives.css +48 -28
  27. package/css/report.css +91 -53
  28. package/css/sources.css +1 -1
  29. package/css/state.css +95 -6
  30. package/css/table.css +3 -3
  31. package/css/tokens.css +10 -10
  32. package/css/workbench.css +21 -9
  33. package/dist/bronto.css +1 -1
  34. package/dist/css/analytical.css +1 -1
  35. package/dist/css/annotations.css +1 -1
  36. package/dist/css/app.css +1 -1
  37. package/dist/css/base.css +1 -1
  38. package/dist/css/command.css +1 -1
  39. package/dist/css/content.css +1 -1
  40. package/dist/css/disclosure.css +1 -1
  41. package/dist/css/discussion.css +1 -0
  42. package/dist/css/feedback.css +1 -1
  43. package/dist/css/figure.css +1 -1
  44. package/dist/css/forms.css +1 -1
  45. package/dist/css/generated.css +1 -1
  46. package/dist/css/legend.css +1 -1
  47. package/dist/css/navigation.css +1 -1
  48. package/dist/css/overlay.css +1 -1
  49. package/dist/css/primitives.css +1 -1
  50. package/dist/css/report-kit.css +1 -1
  51. package/dist/css/report.css +1 -1
  52. package/dist/css/sources.css +1 -1
  53. package/dist/css/state.css +1 -1
  54. package/dist/css/table.css +1 -1
  55. package/dist/css/tokens.css +1 -1
  56. package/dist/css/workbench.css +1 -1
  57. package/docs/adr/0004-prune-unused-adapters.md +5 -1
  58. package/docs/adr/0005-productive-tools-and-editorial-reports.md +58 -0
  59. package/docs/adr/0006-trusted-publishing.md +92 -0
  60. package/docs/architecture.md +16 -23
  61. package/docs/command.md +1 -2
  62. package/docs/compositions.md +131 -0
  63. package/docs/discussion.md +64 -0
  64. package/docs/figure.md +10 -1
  65. package/docs/frontier-primitives.md +1 -2
  66. package/docs/migrations/0.10-to-0.11.md +61 -0
  67. package/docs/migrations/0.9-to-0.10.md +47 -0
  68. package/docs/package-contract.md +16 -13
  69. package/docs/reference.md +47 -18
  70. package/docs/reporting.md +15 -9
  71. package/docs/stability.md +20 -55
  72. package/docs/state.md +47 -0
  73. package/docs/usage.md +18 -30
  74. package/llms.txt +7 -18
  75. package/package.json +18 -54
  76. package/tokens/figma.variables.json +20 -20
  77. package/tokens/index.js +10 -10
  78. package/tokens/index.json +20 -20
  79. package/tokens/resolved.json +10 -10
  80. package/tokens/tokens.dtcg.json +20 -20
  81. package/behaviors/modal.d.ts +0 -45
  82. package/behaviors/modal.d.ts.map +0 -1
  83. package/behaviors/modal.js +0 -373
  84. package/qwik/index.d.ts +0 -48
  85. package/qwik/index.d.ts.map +0 -1
  86. package/qwik/index.js +0 -227
  87. package/react/index.d.ts +0 -45
  88. package/react/index.d.ts.map +0 -1
  89. package/react/index.js +0 -165
  90. package/solid/index.d.ts +0 -75
  91. package/solid/index.d.ts.map +0 -1
  92. package/solid/index.js +0 -172
  93. package/svelte/index.d.ts +0 -114
  94. package/svelte/index.d.ts.map +0 -1
  95. package/svelte/index.js +0 -197
  96. package/vue/index.d.ts +0 -116
  97. package/vue/index.d.ts.map +0 -1
  98. package/vue/index.js +0 -266
package/classes/index.js CHANGED
@@ -55,6 +55,7 @@ export const cls = Object.freeze({
55
55
  badgeDot: 'ui-badge--dot',
56
56
  chip: 'ui-chip',
57
57
  chipAccent: 'ui-chip--accent',
58
+ chipDense: 'ui-chip--dense',
58
59
  link: 'ui-link',
59
60
  linkArrow: 'ui-link--arrow',
60
61
  linkCta: 'ui-link--cta',
@@ -399,6 +400,19 @@ export const cls = Object.freeze({
399
400
  legendTrack: 'ui-legend__track',
400
401
  legendTicks: 'ui-legend__ticks',
401
402
  legendTick: 'ui-legend__tick',
403
+ // discussions (opt-in discussion.css; host-owned state)
404
+ discussion: 'ui-discussion',
405
+ discussionHeader: 'ui-discussion__header',
406
+ discussionActions: 'ui-discussion__actions',
407
+ discussionQuote: 'ui-discussion__quote',
408
+ discussionMessages: 'ui-discussion__messages',
409
+ discussionList: 'ui-discussion__list',
410
+ discussionMessage: 'ui-discussion__message',
411
+ discussionMeta: 'ui-discussion__meta',
412
+ discussionHint: 'ui-discussion__hint',
413
+ discussionState: 'ui-discussion__state',
414
+ discussionItem: 'ui-discussion__item',
415
+ discussionComposer: 'ui-discussion__composer',
402
416
  annotation: 'ui-annotation',
403
417
  annotationSubject: 'ui-annotation__subject',
404
418
  annotationConnector: 'ui-annotation__connector',
@@ -617,6 +631,14 @@ export const cls = Object.freeze({
617
631
  severityRow: 'ui-severity-row',
618
632
  severityRowTitle: 'ui-severity-row__title',
619
633
  severityRowMeta: 'ui-severity-row__meta',
634
+ // The tone as a value, for a mark Bronto does not ship (an SVG shape, a
635
+ // gradient stop): it paints nothing and only resolves `--severity-tone`.
636
+ severityTone: 'ui-severity-tone',
637
+ // timestrip — WHEN, beside the ladder's HOW BAD (css/state.css)
638
+ timestrip: 'ui-timestrip',
639
+ timestripAxis: 'ui-timestrip__axis',
640
+ timestripNow: 'ui-timestrip__now',
641
+ timestripEvent: 'ui-timestrip__event',
620
642
  // generated content / AI-trust surfaces (css/generated.css)
621
643
  generated: 'ui-generated',
622
644
  generatedLabel: 'ui-generated__label',
@@ -985,7 +1007,7 @@ export const ui = {
985
1007
  compare: ({ cols } = {}) => j(cls.compare, cols === 2 && cls.compare2up),
986
1008
  reportFinding: ({ severity } = {}) => j(cls.reportFinding, reportFindingSeverity(severity)),
987
1009
  claim: ({ status } = {}) => j(cls.claim, claimStatus(status)),
988
- chip: ({ accent } = {}) => j(cls.chip, accent && cls.chipAccent),
1010
+ chip: ({ accent, dense } = {}) => j(cls.chip, accent && cls.chipAccent, dense && cls.chipDense),
989
1011
  link: ({ arrow, cta } = {}) => j(cls.link, arrow && cls.linkArrow, cta && cls.linkCta),
990
1012
  dot: ({ tone, live } = {}) => j(cls.dot, dotTone(tone), live && cls.dotLive),
991
1013
  dotgrid: ({ accent, dense } = {}) =>
@@ -1010,7 +1032,7 @@ export const ui = {
1010
1032
  dotspinner: ({ size } = {}) =>
1011
1033
  j(cls.dotspinner, size === 'sm' && cls.dotspinnerSm, size === 'lg' && cls.dotspinnerLg),
1012
1034
  dotbar: ({ indeterminate } = {}) => j(cls.dotbar, indeterminate && cls.dotbarIndeterminate),
1013
- modal: ({ drawer, open } = {}) => j(cls.modal, drawer && cls.modalDrawer, open && 'is-open'),
1035
+ modal: ({ drawer } = {}) => j(cls.modal, drawer && cls.modalDrawer),
1014
1036
  tab: ({ active } = {}) => j(cls.tab, active && 'is-active'),
1015
1037
  avatar: ({ size } = {}) =>
1016
1038
  j(cls.avatar, size === 'sm' && cls.avatarSm, size === 'lg' && cls.avatarLg),
@@ -1157,8 +1179,16 @@ export const SEVERITY_LEVELS = Object.freeze(['critical', 'error', 'warning', 'n
1157
1179
  /** `data-level` + the severity class, bundled so the attribute that carries the
1158
1180
  * meaning cannot be forgotten — the class alone paints the neutral tone and
1159
1181
  * silently loses the level. Unknown/absent levels resolve to `unknown`. */
1182
+ const SEVERITY_PARTS = {
1183
+ chip: 'severity',
1184
+ dot: 'severityDot',
1185
+ row: 'severityRow',
1186
+ // Paints nothing; resolves the tone for a mark Bronto does not ship.
1187
+ tone: 'severityTone',
1188
+ };
1189
+
1160
1190
  export const severity = (level, { part = 'chip' } = {}) => ({
1161
- class: part === 'dot' ? cls.severityDot : part === 'row' ? cls.severityRow : cls.severity,
1191
+ class: cls[SEVERITY_PARTS[part] ?? 'severity'],
1162
1192
  'data-level': SEVERITY_LEVELS.includes(level) ? level : 'unknown',
1163
1193
  });
1164
1194
 
@@ -239,11 +239,11 @@
239
239
  },
240
240
  {
241
241
  "name": "--radius-lg",
242
- "description": "Global scale token. Value: `3px`"
242
+ "description": "Global scale token. Value: `6px`"
243
243
  },
244
244
  {
245
245
  "name": "--radius-md",
246
- "description": "Global scale token. Value: `2px`"
246
+ "description": "Global scale token. Value: `4px`"
247
247
  },
248
248
  {
249
249
  "name": "--radius-pill",
@@ -251,11 +251,11 @@
251
251
  },
252
252
  {
253
253
  "name": "--radius-sm",
254
- "description": "Global scale token. Value: `1px`"
254
+ "description": "Global scale token. Value: `2px`"
255
255
  },
256
256
  {
257
257
  "name": "--radius-xl",
258
- "description": "Global scale token. Value: `4px`"
258
+ "description": "Global scale token. Value: `8px`"
259
259
  },
260
260
  {
261
261
  "name": "--safe-area-bottom",
@@ -371,11 +371,11 @@
371
371
  },
372
372
  {
373
373
  "name": "--text-2xs",
374
- "description": "Global scale token. Value: `0.72rem`"
374
+ "description": "Global scale token. Value: `0.75rem`"
375
375
  },
376
376
  {
377
377
  "name": "--text-base",
378
- "description": "Global scale token. Value: `0.95rem`"
378
+ "description": "Global scale token. Value: `1rem`"
379
379
  },
380
380
  {
381
381
  "name": "--text-dim",
@@ -383,11 +383,11 @@
383
383
  },
384
384
  {
385
385
  "name": "--text-lg",
386
- "description": "Global scale token. Value: `1.15rem`"
386
+ "description": "Global scale token. Value: `1.125rem`"
387
387
  },
388
388
  {
389
389
  "name": "--text-sm",
390
- "description": "Global scale token. Value: `0.86rem`"
390
+ "description": "Global scale token. Value: `0.875rem`"
391
391
  },
392
392
  {
393
393
  "name": "--text-soft",
@@ -395,11 +395,11 @@
395
395
  },
396
396
  {
397
397
  "name": "--text-xl",
398
- "description": "Global scale token. Value: `1.45rem`"
398
+ "description": "Global scale token. Value: `1.5rem`"
399
399
  },
400
400
  {
401
401
  "name": "--text-xs",
402
- "description": "Global scale token. Value: `0.76rem`"
402
+ "description": "Global scale token. Value: `0.8125rem`"
403
403
  },
404
404
  {
405
405
  "name": "--tracking-wide",
@@ -14,7 +14,7 @@
14
14
  --annotation-stroke-width: 1.5;
15
15
 
16
16
  color: var(--annotation-color);
17
- font-family: var(--mono);
17
+ font-family: var(--sans);
18
18
  font-size: var(--text-xs);
19
19
  overflow: visible;
20
20
  }
@@ -96,7 +96,7 @@
96
96
  stroke: var(--annotation-note-bg);
97
97
  stroke-linejoin: round;
98
98
  stroke-width: 3;
99
- text-transform: uppercase;
99
+ text-transform: none;
100
100
  }
101
101
 
102
102
  .ui-annotation__label {
package/css/app.css CHANGED
@@ -64,20 +64,22 @@
64
64
 
65
65
  .ui-app-nav__section {
66
66
  color: var(--text-dim);
67
- font-family: var(--mono);
67
+ font-family: var(--sans);
68
68
  font-size: var(--text-2xs);
69
- letter-spacing: var(--tracking-wide);
69
+ letter-spacing: 0;
70
70
  margin: var(--space-sm) 0 0.3rem;
71
71
  padding: 0 0.5rem;
72
- text-transform: uppercase;
72
+ text-transform: none;
73
73
  }
74
74
 
75
75
  .ui-app-nav a {
76
+ min-inline-size: 0;
77
+ overflow-wrap: anywhere;
76
78
  align-items: center;
77
79
  border-inline-start: 2px solid transparent;
78
80
  color: var(--text-soft);
79
81
  display: flex;
80
- font-family: var(--mono);
82
+ font-family: var(--sans);
81
83
  font-size: var(--text-sm);
82
84
  gap: 0.55rem;
83
85
  padding: 0.5rem 0.6rem;
@@ -148,7 +150,7 @@
148
150
  .ui-app-rail__foot {
149
151
  border-block-start: 1px solid var(--line);
150
152
  color: var(--text-dim);
151
- font-family: var(--mono);
153
+ font-family: var(--sans);
152
154
  font-size: var(--text-2xs);
153
155
  margin-block-start: auto;
154
156
  padding-block-start: var(--space-sm);
@@ -163,9 +165,15 @@
163
165
  display: flex;
164
166
  gap: var(--space-xs);
165
167
  margin-block-start: auto;
168
+ min-inline-size: 0;
169
+ overflow-wrap: anywhere;
166
170
  padding-block-start: var(--space-sm);
167
171
  }
168
172
 
173
+ .ui-app-rail__account > * {
174
+ min-inline-size: 0;
175
+ }
176
+
169
177
  .ui-app-rail__account + .ui-app-rail__foot {
170
178
  margin-block-start: 0;
171
179
  }
@@ -204,17 +212,17 @@
204
212
 
205
213
  .ui-app-topbar__title {
206
214
  color: var(--text);
207
- font-family: var(--display);
208
- font-size: 1.1rem;
209
- font-weight: var(--display-weight);
210
- letter-spacing: var(--tracking-wide);
215
+ font-family: var(--sans);
216
+ font-size: 1.25rem;
217
+ font-weight: 650;
218
+ letter-spacing: 0;
211
219
  margin: 0;
212
- text-transform: uppercase;
220
+ text-transform: none;
213
221
  }
214
222
 
215
223
  .ui-app-content {
216
224
  display: grid;
217
- gap: var(--space-lg);
225
+ gap: var(--space-xl);
218
226
  padding: var(--space-lg);
219
227
  }
220
228
 
@@ -222,14 +230,12 @@
222
230
 
223
231
  .ui-app-toolbar {
224
232
  align-items: center;
225
- background: var(--panel);
226
- border: 1px solid var(--line);
227
- border-radius: var(--radius-md);
233
+ border-block-end: 1px solid var(--line);
228
234
  display: flex;
229
235
  flex-wrap: wrap;
230
236
  gap: 0.7rem;
231
237
  justify-content: space-between;
232
- padding: 0.7rem 0.85rem;
238
+ padding-block-end: var(--space-md);
233
239
  }
234
240
 
235
241
  .ui-app-toolbar__group {
@@ -242,29 +248,43 @@
242
248
  /* --- Panel --- */
243
249
 
244
250
  .ui-app-panel {
245
- background: var(--panel);
246
- border: 1px solid var(--line);
247
- border-radius: var(--radius-md);
248
251
  display: grid;
249
- gap: 0.85rem;
250
- padding: var(--space-md);
252
+ gap: var(--space-md);
253
+ min-inline-size: 0;
251
254
  }
252
255
 
253
256
  .ui-app-panel__head {
254
257
  align-items: flex-start;
255
258
  display: flex;
259
+ flex-wrap: wrap;
256
260
  gap: 0.7rem;
257
261
  justify-content: space-between;
258
262
  }
259
263
 
260
264
  .ui-app-panel__title {
261
265
  color: var(--text);
262
- font-family: var(--display);
263
- font-size: 0.95rem;
264
- font-weight: var(--display-weight);
265
- letter-spacing: var(--tracking-wide);
266
+ font-family: var(--sans);
267
+ font-size: 1.125rem;
268
+ font-weight: 650;
269
+ letter-spacing: 0;
266
270
  margin: 0;
267
- text-transform: uppercase;
271
+ text-transform: none;
272
+ }
273
+
274
+ /* A service overview needs a compact scan, including on a phone. Keep the
275
+ generic stat tile available elsewhere; avoid framing every metric twice. */
276
+ .ui-app-panel > .ui-statgrid,
277
+ .ui-app-panel > .ui-app-metrics {
278
+ grid-template-columns: repeat(auto-fit, minmax(min(100%, 6rem), 1fr));
279
+ }
280
+
281
+ .ui-app-panel > .ui-statgrid > .ui-stat,
282
+ .ui-app-panel > .ui-app-metrics > .ui-app-metric {
283
+ background: none;
284
+ border: 0;
285
+ border-block-start: 1px solid var(--line);
286
+ border-radius: 0;
287
+ padding: var(--space-md) 0;
268
288
  }
269
289
 
270
290
  .ui-app-panel__head p {
@@ -285,7 +305,7 @@
285
305
  permanent admin-shell alias (grouped on the canonical rules there —
286
306
  identical output). Nothing app-specific left to define here. */
287
307
 
288
- /* --- Mobile rail: collapses to a horizontal scrolling strip --- */
308
+ /* --- Mobile rail: navigation wraps instead of hiding destinations offscreen. --- */
289
309
 
290
310
  @media (max-width: 880px) {
291
311
  .ui-app-shell {
@@ -300,10 +320,10 @@
300
320
  }
301
321
 
302
322
  .ui-app-rail {
303
- flex-direction: row;
323
+ flex-flow: row wrap;
304
324
  block-size: auto;
305
- overflow-x: auto;
306
- position: sticky;
325
+ overflow: visible;
326
+ position: static;
307
327
  inset-block-start: 0;
308
328
  z-index: calc(var(--z-raised) + 1);
309
329
  }
@@ -321,7 +341,9 @@
321
341
  }
322
342
 
323
343
  .ui-app-nav {
324
- grid-auto-flow: column;
344
+ display: flex;
345
+ flex: 1 0 100%;
346
+ flex-wrap: wrap;
325
347
  gap: 0.15rem;
326
348
  }
327
349
 
@@ -330,9 +352,11 @@
330
352
  }
331
353
 
332
354
  .ui-app-nav a {
355
+ flex: 1 1 auto;
356
+ justify-content: center;
333
357
  border-inline-start: 0;
334
358
  border-block-end: 2px solid transparent;
335
- white-space: nowrap;
359
+ white-space: normal;
336
360
  }
337
361
 
338
362
  .ui-app-nav a.is-active,
package/css/base.css CHANGED
@@ -1,5 +1,5 @@
1
1
  /* ==========================================================================
2
- base — reset + element defaults, Nothing-flat
2
+ base — reset + readable element defaults
3
3
  ========================================================================== */
4
4
 
5
5
  *,
@@ -13,9 +13,8 @@ html {
13
13
  color: var(--text);
14
14
  font-family: var(--sans);
15
15
 
16
- /* = 15px at the 16px default, but rem honours a user's browser font-size
17
- preference (which a px root would ignore). */
18
- font-size: 0.9375rem;
16
+ /* Preserve the browser's preferred reading size. Compact controls use tokens. */
17
+ font-size: 1rem;
19
18
  line-height: 1.55;
20
19
  scroll-behavior: smooth;
21
20
  text-rendering: optimizeLegibility;
@@ -74,27 +73,25 @@ li {
74
73
  line-height: 1.65;
75
74
  }
76
75
 
77
- /* Headings ride the dot-matrix display face. */
76
+ /* Everyday headings are readable text. .ui-display owns the brand face. */
78
77
  h1,
79
78
  h2,
80
79
  h3,
81
80
  h4 {
82
81
  color: var(--text);
83
- font-family: var(--display);
84
- font-weight: 700;
85
- letter-spacing: 0.01em;
86
- line-height: 1.06;
82
+ font-family: var(--sans);
83
+ font-weight: 650;
84
+ letter-spacing: -0.02em;
85
+ line-height: 1.2;
87
86
  margin: 0;
88
- text-transform: uppercase;
89
87
  }
90
88
 
91
89
  h1 {
92
- font-size: clamp(2.6rem, 6vw, 4.6rem);
93
- letter-spacing: 0.02em;
90
+ font-size: clamp(2rem, 4vw, 3rem);
94
91
  }
95
92
 
96
93
  h2 {
97
- font-size: clamp(1.7rem, 3.4vw, 2.4rem);
94
+ font-size: clamp(1.5rem, 3vw, 2rem);
98
95
  }
99
96
 
100
97
  h3 {
@@ -103,7 +100,6 @@ h3 {
103
100
 
104
101
  h4 {
105
102
  font-size: 1rem;
106
- letter-spacing: var(--tracking-wide);
107
103
  }
108
104
 
109
105
  strong,
package/css/command.css CHANGED
@@ -43,11 +43,11 @@
43
43
 
44
44
  .ui-command__group {
45
45
  color: var(--text-dim);
46
- font-family: var(--mono);
47
- font-size: var(--text-2xs);
48
- letter-spacing: var(--tracking-wide);
46
+ font-family: var(--sans);
47
+ font-size: var(--text-xs);
48
+ letter-spacing: 0;
49
49
  padding: 0.5rem 0.6rem 0.25rem;
50
- text-transform: uppercase;
50
+ text-transform: none;
51
51
  }
52
52
 
53
53
  .ui-command__item {
package/css/content.css CHANGED
@@ -9,6 +9,8 @@
9
9
  ========================================================================== */
10
10
 
11
11
  .ui-prose {
12
+ /* A prose block must shrink as a grid/flex item; its pre blocks scroll locally. */
13
+ min-inline-size: 0;
12
14
  color: var(--text-soft);
13
15
  font-size: var(--text-base);
14
16
  line-height: 1.7;
@@ -41,27 +43,27 @@
41
43
  max-inline-size: none;
42
44
  }
43
45
 
44
- /* --- Headings — brand display face; only the top two shout --- */
46
+ /* --- Headings — readable hierarchy inside narrative content --- */
45
47
 
46
48
  .ui-prose :is(h1, h2, h3, h4, h5, h6) {
47
49
  color: var(--text);
48
- font-family: var(--display);
50
+ font-family: var(--sans);
49
51
  line-height: 1.12;
50
52
  text-wrap: balance;
51
53
  }
52
54
 
53
55
  .ui-prose h1 {
54
56
  font-size: var(--text-xl);
55
- letter-spacing: var(--tracking-wide);
56
- text-transform: uppercase;
57
+ letter-spacing: 0;
58
+ text-transform: none;
57
59
  }
58
60
 
59
61
  .ui-prose h2 {
60
62
  font-size: var(--text-lg);
61
- letter-spacing: var(--tracking-wide);
63
+ letter-spacing: 0;
62
64
  padding-block-end: 0.3rem;
63
65
  border-block-end: 1px solid var(--line);
64
- text-transform: uppercase;
66
+ text-transform: none;
65
67
  }
66
68
 
67
69
  .ui-prose h3 {
@@ -70,8 +72,8 @@
70
72
 
71
73
  .ui-prose :is(h4, h5, h6) {
72
74
  font-size: var(--text-base);
73
- letter-spacing: var(--tracking-wide);
74
- text-transform: uppercase;
75
+ letter-spacing: 0;
76
+ text-transform: none;
75
77
  }
76
78
 
77
79
  .ui-prose :is(h5, h6) {
@@ -185,11 +187,11 @@
185
187
 
186
188
  .ui-prose dt {
187
189
  color: var(--text-dim);
188
- font-family: var(--mono);
190
+ font-family: var(--sans);
189
191
  font-size: var(--text-2xs);
190
192
  font-weight: 700;
191
- letter-spacing: var(--tracking-wide);
192
- text-transform: uppercase;
193
+ letter-spacing: 0;
194
+ text-transform: none;
193
195
  }
194
196
 
195
197
  .ui-prose dd {
@@ -241,10 +243,10 @@
241
243
 
242
244
  .ui-prose figcaption {
243
245
  color: var(--text-dim);
244
- font-family: var(--mono);
246
+ font-family: var(--sans);
245
247
  font-size: var(--text-2xs);
246
- letter-spacing: var(--tracking-wide);
247
- text-transform: uppercase;
248
+ letter-spacing: 0;
249
+ text-transform: none;
248
250
  }
249
251
 
250
252
  /* --- Table — raw Markdown tables look like ui-table ---
@@ -262,7 +264,7 @@
262
264
  border-collapse: collapse;
263
265
  border-radius: var(--radius-md);
264
266
  display: block;
265
- font-family: var(--mono);
267
+ font-family: var(--sans);
266
268
  font-size: var(--text-sm);
267
269
  inline-size: 100%;
268
270
  overflow-x: auto;
@@ -280,8 +282,8 @@
280
282
  color: var(--text-dim);
281
283
  font-size: var(--text-2xs);
282
284
  font-weight: 700;
283
- letter-spacing: var(--tracking-wide);
284
- text-transform: uppercase;
285
+ letter-spacing: 0;
286
+ text-transform: none;
285
287
  }
286
288
 
287
289
  .ui-prose td {
@@ -316,7 +318,7 @@
316
318
  .ui-quote {
317
319
  color: var(--text);
318
320
  display: grid;
319
- font-family: var(--display);
321
+ font-family: var(--sans);
320
322
  font-size: var(--text-xl);
321
323
  font-weight: var(--display-weight);
322
324
  gap: var(--space-sm);
@@ -335,9 +337,9 @@
335
337
 
336
338
  .ui-quote__cite {
337
339
  color: var(--text-dim);
338
- font-family: var(--mono);
340
+ font-family: var(--sans);
339
341
  font-size: var(--text-2xs);
340
342
  font-style: normal;
341
- letter-spacing: var(--tracking-wide);
342
- text-transform: uppercase;
343
+ letter-spacing: 0;
344
+ text-transform: none;
343
345
  }
@@ -32,13 +32,13 @@
32
32
  cursor: pointer;
33
33
  display: inline-flex;
34
34
  flex: 0 0 auto;
35
- font-family: var(--mono);
35
+ font-family: var(--sans);
36
36
  font-size: var(--text-xs);
37
37
  gap: 0.4rem;
38
- letter-spacing: var(--tracking-wide);
38
+ letter-spacing: 0;
39
39
  margin-block-end: -1px;
40
40
  padding: 0.6rem 0.85rem;
41
- text-transform: uppercase;
41
+ text-transform: none;
42
42
  transition:
43
43
  color var(--duration-fast) var(--ease-standard),
44
44
  border-color var(--duration-fast) var(--ease-standard);
@@ -104,13 +104,13 @@
104
104
  color: var(--text);
105
105
  cursor: pointer;
106
106
  display: flex;
107
- font-family: var(--mono);
107
+ font-family: var(--sans);
108
108
  font-size: var(--text-sm);
109
109
  gap: 0.6rem;
110
- letter-spacing: var(--tracking-wide);
110
+ letter-spacing: 0;
111
111
  list-style: none;
112
112
  padding: 0.85rem 0.2rem;
113
- text-transform: uppercase;
113
+ text-transform: none;
114
114
  }
115
115
 
116
116
  .ui-accordion__summary::-webkit-details-marker {
@@ -192,12 +192,12 @@
192
192
  color: var(--text-soft);
193
193
  cursor: pointer;
194
194
  flex: 1 0 auto;
195
- font-family: var(--mono);
195
+ font-family: var(--sans);
196
196
  font-size: var(--text-xs);
197
- letter-spacing: var(--tracking-wide);
197
+ letter-spacing: 0;
198
198
  padding: 0.42rem 0.8rem;
199
199
  text-align: center;
200
- text-transform: uppercase;
200
+ text-transform: none;
201
201
  transition:
202
202
  background-color var(--duration-fast) var(--ease-standard),
203
203
  color var(--duration-fast) var(--ease-standard);
@@ -233,14 +233,14 @@
233
233
  color: var(--text-dim);
234
234
  display: flex;
235
235
  flex-wrap: wrap;
236
- font-family: var(--mono);
236
+ font-family: var(--sans);
237
237
  font-size: var(--text-2xs);
238
238
  gap: 0.5rem;
239
- letter-spacing: var(--tracking-wide);
239
+ letter-spacing: 0;
240
240
  list-style: none;
241
241
  margin: 0;
242
242
  padding: 0;
243
- text-transform: uppercase;
243
+ text-transform: none;
244
244
  }
245
245
 
246
246
  .ui-breadcrumb__item {
@@ -302,7 +302,7 @@
302
302
  color: var(--text-soft);
303
303
  cursor: pointer;
304
304
  display: inline-flex;
305
- font-family: var(--mono);
305
+ font-family: var(--sans);
306
306
  font-size: var(--text-xs);
307
307
  justify-content: center;
308
308
  min-block-size: 2rem;
@@ -370,14 +370,14 @@
370
370
  color: var(--text);
371
371
  display: inline-flex;
372
372
  flex: 0 0 auto;
373
- font-family: var(--mono);
373
+ font-family: var(--sans);
374
374
  font-size: calc(var(--av-size) * 0.38);
375
375
  font-weight: 700;
376
376
  block-size: var(--av-size);
377
377
  justify-content: center;
378
378
  letter-spacing: 0.04em;
379
379
  overflow: hidden;
380
- text-transform: uppercase;
380
+ text-transform: none;
381
381
  inline-size: var(--av-size);
382
382
  }
383
383
 
@@ -528,11 +528,11 @@
528
528
  background: color-mix(in srgb, var(--panel-strong) 75%, transparent);
529
529
  border-radius: var(--radius-pill);
530
530
  color: var(--text);
531
- font-family: var(--mono);
531
+ font-family: var(--sans);
532
532
  font-size: var(--text-2xs);
533
533
  inset-block-end: var(--space-xs);
534
534
  inset-inline-start: var(--space-xs);
535
- letter-spacing: var(--tracking-wide);
535
+ letter-spacing: 0;
536
536
  padding: 0.2rem 0.5rem;
537
537
  position: absolute;
538
538
  }