create-pmos 0.511.0 → 0.513.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 (114) hide show
  1. package/package.json +27 -31
  2. package/payload/KIT-VERSION +1 -1
  3. package/payload/planning/evals/eval-calibration.md +1 -1
  4. package/payload/planning/okrs/health-budgets.md +1 -1
  5. package/payload/state/discoveries.md +1 -1
  6. package/workspace/briefing-premium-adddoc-test.js +3 -3
  7. package/workspace/briefing-premium-board-test.js +2 -2
  8. package/workspace/briefing-premium-initiative-test.js +3 -3
  9. package/workspace/briefing-premium-insights-test.js +2 -2
  10. package/workspace/briefing-premium-sources-test.js +4 -5
  11. package/workspace/briefing-premium-test.js +2 -2
  12. package/workspace/changelog.json +26 -0
  13. package/workspace/fixtures/next-prompt-replay.json +40 -0
  14. package/workspace/guide/home.md +1 -1
  15. package/workspace/guide/index.md +1 -0
  16. package/workspace/guide/next-prompt.md +62 -0
  17. package/workspace/guide/settings.md +3 -1
  18. package/workspace/intel-report-ui-test.js +1 -1
  19. package/workspace/intelligence-gaps-ui-test.js +1 -1
  20. package/workspace/lib/next-prompt.js +199 -0
  21. package/workspace/lib/premium-console-type.js +15 -12
  22. package/workspace/lib/route-modules.js +1 -0
  23. package/workspace/lib/routes-next-prompt.js +248 -0
  24. package/workspace/metric-drafts-ui-test.js +2 -2
  25. package/workspace/package-lock.json +2 -2
  26. package/workspace/package.json +1 -1
  27. package/workspace/premium-menu-rows-test.js +1 -1
  28. package/workspace/premium-vw-doc-test.js +1 -1
  29. package/workspace/public/pm/bd-pin-card.css +4 -4
  30. package/workspace/public/pm/bd-publish.css +11 -11
  31. package/workspace/public/pm/bd-shared.css +17 -17
  32. package/workspace/public/pm/c3-capture.css +9 -9
  33. package/workspace/public/pm/c3-initiatives.css +23 -23
  34. package/workspace/public/pm/c3-listen.css +1 -1
  35. package/workspace/public/pm/components.css +572 -572
  36. package/workspace/public/pm/console3.css +374 -373
  37. package/workspace/public/pm/cozy-adler.css +4 -4
  38. package/workspace/public/pm/cozy-aud.css +1 -1
  39. package/workspace/public/pm/cozy-board.css +328 -328
  40. package/workspace/public/pm/cozy-ev.css +80 -78
  41. package/workspace/public/pm/cozy-home-rows.css +32 -32
  42. package/workspace/public/pm/cozy-home.css +285 -241
  43. package/workspace/public/pm/cozy-insights.css +200 -200
  44. package/workspace/public/pm/cozy-live-pill.css +5 -5
  45. package/workspace/public/pm/cozy-mtg-present.css +28 -28
  46. package/workspace/public/pm/cozy-onboard.css +15 -15
  47. package/workspace/public/pm/cozy-panel.css +39 -39
  48. package/workspace/public/pm/cozy-pick.css +5 -5
  49. package/workspace/public/pm/cozy-rec-now.css +23 -23
  50. package/workspace/public/pm/cozy-rec-present.css +11 -11
  51. package/workspace/public/pm/cozy-rec-tab.css +13 -13
  52. package/workspace/public/pm/cozy-settings.js +37 -2
  53. package/workspace/public/pm/cozy-steps.css +14 -14
  54. package/workspace/public/pm/cozy-today.css +95 -95
  55. package/workspace/public/pm/cozy-viewer.css +27 -27
  56. package/workspace/public/pm/cozy-vw-mtg.css +113 -113
  57. package/workspace/public/pm/cozy-vw-rp.css +79 -79
  58. package/workspace/public/pm/cozy-vw-shell.css +43 -43
  59. package/workspace/public/pm/cozy-vw.css +129 -129
  60. package/workspace/public/pm/cozy-xv.css +15 -15
  61. package/workspace/public/pm/cozy.css +53 -21
  62. package/workspace/public/pm/dash-view.css +27 -27
  63. package/workspace/public/pm/hi-pop.css +26 -26
  64. package/workspace/public/pm/home-chat.js +21 -4
  65. package/workspace/public/pm/home-impact.css +8 -8
  66. package/workspace/public/pm/home-ini.css +36 -36
  67. package/workspace/public/pm/home-line.css +7 -7
  68. package/workspace/public/pm/impact.css +9 -9
  69. package/workspace/public/pm/ini-view.css +243 -243
  70. package/workspace/public/pm/load-shapes.css +1 -1
  71. package/workspace/public/pm/loose-props.css +14 -14
  72. package/workspace/public/pm/metric-drafts.css +20 -20
  73. package/workspace/public/pm/ms-suggest.css +9 -9
  74. package/workspace/public/pm/next-prompt-ui.js +117 -0
  75. package/workspace/public/pm/ov-view.css +14 -14
  76. package/workspace/public/pm/premium-insights.js +3 -3
  77. package/workspace/public/pm/premium-report-frame.css +1 -1
  78. package/workspace/public/pm/premium-report-intel.css +17 -17
  79. package/workspace/public/pm/premium-report-print.css +1 -1
  80. package/workspace/public/pm/premium-vw-backlog.css +13 -13
  81. package/workspace/public/pm/premium-vw-cal.css +32 -32
  82. package/workspace/public/pm/premium-vw-copy.css +7 -7
  83. package/workspace/public/pm/premium-vw-doc.css +69 -69
  84. package/workspace/public/pm/premium-vw-item.css +12 -12
  85. package/workspace/public/pm/premium-vw-jira.css +39 -39
  86. package/workspace/public/pm/premium-vw-meet.css +28 -28
  87. package/workspace/public/pm/premium-vw-notepad.css +13 -13
  88. package/workspace/public/pm/premium-vw-notes.css +11 -11
  89. package/workspace/public/pm/premium-vw-rec.css +27 -27
  90. package/workspace/public/pm/premium-vw-report.css +21 -21
  91. package/workspace/public/pm/premium-vw-slides.css +28 -28
  92. package/workspace/public/pm/premium.css +618 -618
  93. package/workspace/public/pm/prog-order.css +6 -6
  94. package/workspace/public/pm/prog-page.css +17 -17
  95. package/workspace/public/pm/program-charter.css +33 -33
  96. package/workspace/public/pm/ready-lib.css +6 -6
  97. package/workspace/public/pm/sort-order.css +1 -1
  98. package/workspace/public/pm/split-merge.css +18 -18
  99. package/workspace/public/pm/task-card.css +24 -24
  100. package/workspace/public/pm/tk-tasks.css +42 -42
  101. package/workspace/public/pm/tk-view.css +6 -6
  102. package/workspace/public/pm/wf-page.css +31 -31
  103. package/workspace/public/premium-aud.html +1 -1
  104. package/workspace/public/premium-board.html +1 -1
  105. package/workspace/public/premium-intelligence.html +1 -1
  106. package/workspace/public/premium-rec.html +1 -1
  107. package/workspace/public/premium-viewer.html +1 -1
  108. package/workspace/public/premium-workflows.html +1 -1
  109. package/workspace/public/premium.html +1 -1
  110. package/workspace/public/vendor/plus-jakarta-sans-var.woff2 +0 -0
  111. package/workspace/server.js +1 -0
  112. package/workspace/test-lists/next-prompt.json +5 -0
  113. package/workspace/third-party/README.md +2 -1
  114. package/workspace/third-party/plus-jakarta-sans-OFL.LICENSE +93 -0
@@ -3,48 +3,48 @@
3
3
  * .pill and .mi are drawn here as rp- parts inside the .vz report panel. */
4
4
  .vz.vz-rp0 { container-type: inline-size; }
5
5
  /* a narrow card (the 500 px Viewer) keeps Slides | Document | Live page as icons, so the bar stays one row */
6
- @container (max-width: 600px) { .vz-rp0 .vz-sg button > span.vz-dko { display: none !important; } .rp-lvh > .rp-grow { flex-basis: 100%; } .rp-kp { flex-basis: 90px; } .rp-kp b { font-size: var(--fs-5); } }
7
- .rp-n { height: 18px; padding: 0 7px; font-size: var(--fs-1); }
6
+ @container (max-width: 600px) { .vz-rp0 .vz-sg button > span.vz-dko { display: none !important; } .rp-lvh > .rp-grow { flex-basis: 100%; } .rp-kp { flex-basis: 90px; } .rp-kp b { font-size: var(--fs-panel); line-height: var(--lh-panel); } }
7
+ .rp-n { height: 18px; padding: 0 7px; font-size: var(--fs-meta); line-height: var(--lh-meta); }
8
8
  .rp-mut { color: var(--cz-ink3); }
9
9
  .rp-grow { flex: 1; min-width: 0; }
10
- .vz .rp-lbl { font-size: var(--fs-2); font-weight: 800; color: var(--cz-ink3); margin-top: 4px; }
11
- .rp-h2 { margin: 0; font-size: var(--fs-5); font-weight: 800; }
12
- .rp-btn { display: inline-flex !important; align-items: center; gap: 6px; height: 30px; padding: 0 11px !important; border-radius: 999px; font-size: var(--fs-2) !important; font-weight: 700;
13
- border: 1px solid color-mix(in oklab, var(--cz-ink) 14%, transparent) !important; background: var(--cz-card) !important; color: var(--cz-ink) !important; white-space: nowrap; flex: none; }
10
+ .vz .rp-lbl { font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); margin-top: 4px; line-height: var(--lh-label); }
11
+ .rp-h2 { margin: 0; font-size: var(--fs-panel); font-weight: var(--fw-strong); line-height: var(--lh-panel); }
12
+ .rp-btn { display: inline-flex !important; align-items: center; gap: 6px; height: 30px; padding: 0 11px !important; border-radius: 999px; font-size: var(--fs-label) !important; font-weight: var(--fw-strong);
13
+ border: 1px solid color-mix(in oklab, var(--cz-ink) 14%, transparent) !important; background: var(--cz-card) !important; color: var(--cz-ink) !important; white-space: nowrap; flex: none; line-height: var(--lh-label); }
14
14
  .rp-btn.dark { background: var(--cz-ink) !important; color: var(--cz-card) !important; border-color: transparent !important; }
15
15
  .rp-btn.bad { background: var(--cz-red) !important; color: var(--cz-c-ffffff) !important; border-color: transparent !important; }
16
16
  .rp-btn.soft { background: var(--cz-well) !important; border-color: transparent !important; }
17
17
  .rp-btn svg { width: 16px; height: 16px; }
18
- .rp-linkbtn { color: var(--cz-blueink); font-weight: 700; font-size: var(--fs-2); text-decoration: none; }
18
+ .rp-linkbtn { color: var(--cz-blueink); font-weight: var(--fw-strong); font-size: var(--fs-label); text-decoration: none; line-height: var(--lh-label); }
19
19
  .rp-box { background: var(--cz-well); border-radius: 16px; padding: 12px 14px; }
20
- .rp-pill { display: inline-flex; align-items: center; height: 22px; padding: 0 9px; border-radius: 999px; font-size: var(--fs-1); font-weight: 700; background: var(--cz-card); color: var(--cz-ink2); }
20
+ .rp-pill { display: inline-flex; align-items: center; height: 22px; padding: 0 9px; border-radius: 999px; font-size: var(--fs-badge); font-weight: var(--fw-strong); background: var(--cz-card); color: var(--cz-ink2); line-height: var(--lh-badge); }
21
21
 
22
22
  /* ── the Brief tab (RpBrief) ── */
23
23
  .rp-brief { display: flex; flex-direction: column; gap: 10px; }
24
- .rp-kv { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 6px 12px; margin: 0; font-size: var(--fs-3); }
25
- .rp-kv dt { color: var(--cz-ink3); font-weight: 700; }
24
+ .rp-kv { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 6px 12px; margin: 0; font-size: var(--fs-body); line-height: var(--lh-body); }
25
+ .rp-kv dt { color: var(--cz-ink3); font-weight: var(--fw-strong); }
26
26
  .rp-kv dd { margin: 0; min-width: 0; }
27
27
  .rp-kv dd .vz-c { white-space: normal; height: auto; min-height: 32px; padding: 4px 10px !important; max-width: 100%; }
28
28
  .rp-chips { display: flex; gap: 6px; flex-wrap: wrap; }
29
- .rp-chip { height: 28px; padding: 0 11px; border-radius: 999px; border: 1px solid var(--cz-hair); display: inline-flex; align-items: center; font-size: var(--fs-2); font-weight: 600; color: var(--cz-ink2); }
30
- .rp-ns { display: inline-flex; padding: 1px 8px; border-radius: 999px; background: var(--cz-well); color: var(--cz-ink3); font-size: var(--fs-1); font-weight: 700; }
31
- .rp-card { display: flex; align-items: center; gap: 10px; background: var(--cz-card); border-radius: 16px; border: 1px solid var(--cz-hair); padding: 12px 14px; box-shadow: 0 1px 2px rgba(42, 46, 53, .04); font-size: var(--fs-3); }
29
+ .rp-chip { height: 28px; padding: 0 11px; border-radius: 999px; border: 1px solid var(--cz-hair); display: inline-flex; align-items: center; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink2); line-height: var(--lh-label); }
30
+ .rp-ns { display: inline-flex; padding: 1px 8px; border-radius: 999px; background: var(--cz-well); color: var(--cz-ink3); font-size: var(--fs-badge); font-weight: var(--fw-strong); line-height: var(--lh-badge); }
31
+ .rp-card { display: flex; align-items: center; gap: 10px; background: var(--cz-card); border-radius: 16px; border: 1px solid var(--cz-hair); padding: 12px 14px; box-shadow: 0 1px 2px rgba(42, 46, 53, .04); font-size: var(--fs-body); line-height: var(--lh-body); }
32
32
  .rp-card > p { flex: 1; min-width: 0; }
33
33
  .rp-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--cz-blue); flex: none; }
34
- .rp-ul { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 4px; font-size: var(--fs-2); }
34
+ .rp-ul { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 4px; font-size: var(--fs-meta); line-height: var(--lh-meta); }
35
35
  .rp-looks { display: flex; gap: 10px; flex-wrap: wrap; }
36
- .rp-look { display: flex; align-items: center; gap: 10px; flex: 1 1 260px; font-size: var(--fs-2); }
36
+ .rp-look { display: flex; align-items: center; gap: 10px; flex: 1 1 260px; font-size: var(--fs-meta); line-height: var(--lh-meta); }
37
37
  .rp-look > span:nth-child(2) { flex: 1; min-width: 0; }
38
38
  .rp-sw { width: 64px; height: 36px; border-radius: 6px; background: var(--cz-well2); flex: none; }
39
39
 
40
40
  /* ── the lock line, the ask card and the cycle menu (RpStates) ── */
41
41
  .rp-ask { margin-top: auto; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; background: var(--cz-card); border: 1px solid var(--cz-hair); border-radius: 16px; padding: 12px 14px;
42
- box-shadow: 0 10px 30px -16px rgba(42, 46, 53, .4); font-size: var(--fs-3); }
42
+ box-shadow: 0 10px 30px -16px rgba(42, 46, 53, .4); font-size: var(--fs-body); line-height: var(--lh-body); }
43
43
  .rp-ask > p { flex: 1 1 220px; }
44
- .rp-ask > p .rp-mut { font-size: var(--fs-2); }
44
+ .rp-ask > p .rp-mut { font-size: var(--fs-meta); line-height: var(--lh-meta); }
45
45
  .rp-ask > div { display: flex; gap: 6px; }
46
46
  .vz-pop-cyc { min-width: 280px; }
47
- .vz-pop-cyc .vz-lab { font-size: var(--fs-2); font-weight: 800; }
47
+ .vz-pop-cyc .vz-lab { font-size: var(--fs-label); font-weight: var(--fw-strong); line-height: var(--lh-label); }
48
48
  .rp-arch { color: var(--cz-ink3); }
49
49
  .vz-pop-dl { right: 0; top: 46px; width: 260px; }
50
50
  .vz-pop-dl a.vz-mi { text-decoration: none; color: inherit; }
@@ -53,38 +53,38 @@
53
53
  .rp-paperwell { display: flex; flex-direction: column; gap: 14px; }
54
54
  .rp-pg { background: var(--cz-c-ffffff); color: var(--cz-c-2a2e35); border-radius: 14px; box-shadow: 0 0 0 1px var(--cz-hair), 0 10px 24px -18px rgba(42, 46, 53, .4);
55
55
  padding: 22px 26px; display: flex; flex-direction: column; gap: 10px; position: relative; }
56
- .rp-pg h1 { font-size: var(--fs-5); font-weight: 800; margin: 0; line-height: 1.25; }
57
- .rp-pg h2 { font-size: var(--fs-3); font-weight: 800; margin: 6px 0 0; }
58
- .rp-pg p, .rp-pg li { font-size: var(--fs-3); line-height: 1.55; }
56
+ .rp-pg h1 { font-size: var(--fs-page); font-weight: var(--fw-strong); margin: 0; line-height: 1.25; }
57
+ .rp-pg h2 { font-size: var(--fs-section); font-weight: var(--fw-strong); margin: 6px 0 0; line-height: var(--lh-section); }
58
+ .rp-pg p, .rp-pg li { font-size: var(--fs-body); line-height: 1.55; }
59
59
  .rp-pg ul { margin: 0; padding-left: 20px; }
60
60
  .rp-pg .rp-mut { color: var(--cz-c-646a74); }
61
- .rp-eye { font-size: var(--fs-1) !important; font-weight: 800; color: var(--cz-c-2f5fb3); letter-spacing: .06em; }
61
+ .rp-eye { font-size: var(--fs-badge) !important; font-weight: var(--fw-strong); color: var(--cz-c-2f5fb3); letter-spacing: .06em; line-height: var(--lh-badge); }
62
62
  .rp-minute { background: var(--cz-c-f4f3f0); border-radius: 10px; padding: 10px 12px; display: flex; flex-direction: column; gap: 4px; }
63
- .rp-mh { font-weight: 800; font-size: var(--fs-3) !important; color: var(--cz-c-2a2e35); }
63
+ .rp-mh { font-weight: var(--fw-strong); font-size: var(--fs-row) !important; color: var(--cz-c-2a2e35); line-height: var(--lh-row); }
64
64
  .rp-tbl { overflow-x: auto; }
65
- .rp-tbl table { border-collapse: collapse; font-size: var(--fs-2); width: 100%; }
65
+ .rp-tbl table { border-collapse: collapse; font-size: var(--fs-meta); width: 100%; line-height: var(--lh-meta); }
66
66
  .rp-tbl td, .rp-tbl th { border-bottom: 1px solid rgba(42, 46, 53, .1); padding: 6px 4px; text-align: left; }
67
- .rp-tbl th { font-weight: 800; color: var(--cz-c-646a74); }
67
+ .rp-tbl th { font-weight: var(--fw-strong); color: var(--cz-c-646a74); }
68
68
  .rp-tbl .al-r { text-align: right; } .rp-tbl .al-c { text-align: center; }
69
- .rp-fn { font-size: var(--fs-1); color: var(--cz-c-646a74); border-top: 1px solid rgba(42, 46, 53, .1); padding-top: 8px; margin-top: auto; }
70
- .rp-fn p, .rp-fn li { font-size: var(--fs-1); line-height: 1.5; }
69
+ .rp-fn { font-size: var(--fs-meta); color: var(--cz-c-646a74); border-top: 1px solid rgba(42, 46, 53, .1); padding-top: 8px; margin-top: auto; line-height: var(--lh-meta); }
70
+ .rp-fn p, .rp-fn li { font-size: var(--fs-meta); line-height: 1.5; }
71
71
 
72
72
  /* ── the live page (RpLive) ── */
73
73
  .rp-live { background: var(--cz-card); border-radius: 18px; border: 1px solid var(--cz-hair); padding: 18px 20px; display: flex; flex-direction: column; gap: 14px; }
74
74
  .rp-lvh { position: relative; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
75
- .rp-lvh .cz-pick, .rp-lvh .rp-per { height: 30px; font-size: var(--fs-2); font-weight: 700; color: var(--cz-ink2); }
75
+ .rp-lvh .cz-pick, .rp-lvh .rp-per { height: 30px; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink2); line-height: var(--lh-label); }
76
76
  .rp-lvh .cz-pick svg { width: 14px; height: 14px; }
77
77
  .rp-per { display: inline-flex; align-items: center; padding: 0 12px; border-radius: 999px; background: var(--cz-well); }
78
78
  .rp-okdot { width: 7px; height: 7px; border-radius: 50%; background: var(--cz-dot-ok); display: inline-block; }
79
79
  .rp-prodpop { right: 0; top: 40px; min-width: 220px; }
80
80
  .rp-kps { display: flex; gap: 10px; flex-wrap: wrap; }
81
- .rp-kp { flex: 1 1 120px; border: 1px solid var(--cz-hair) !important; border-radius: 14px; padding: 10px 12px !important; display: flex !important; flex-direction: column; gap: 2px; font-size: var(--fs-2); }
81
+ .rp-kp { flex: 1 1 120px; border: 1px solid var(--cz-hair) !important; border-radius: 14px; padding: 10px 12px !important; display: flex !important; flex-direction: column; gap: 2px; font-size: var(--fs-meta); line-height: var(--lh-meta); }
82
82
  .rp-kp:disabled { opacity: 1 !important; cursor: default; }
83
- .rp-kp b { font-size: var(--fs-5); font-weight: 800; }
83
+ .rp-kp b { font-size: var(--fs-display); font-weight: var(--fw-strong); line-height: var(--lh-display); }
84
84
  .rp-kp b.rp-risk { color: var(--cz-risk); }
85
85
  .rp-kp.on { border-color: color-mix(in oklab, var(--cz-blue) 55%, transparent) !important; box-shadow: 0 0 0 3px color-mix(in oklab, var(--cz-blue) 12%, transparent); }
86
86
  .rp-sub { color: var(--cz-ink3); }
87
- .rp-sub.ok { color: var(--cz-ok); font-weight: 700; } .rp-sub.risk { color: var(--cz-risk); font-weight: 700; }
87
+ .rp-sub.ok { color: var(--cz-ok); font-weight: var(--fw-strong); } .rp-sub.risk { color: var(--cz-risk); font-weight: var(--fw-strong); }
88
88
  .rp-chh { display: flex; align-items: center; gap: 8px; }
89
89
  .rp-chart { position: relative; height: 170px; }
90
90
  .rp-chart svg { width: 100%; height: 170px; display: block; }
@@ -95,26 +95,26 @@
95
95
  .rp-pt::after { content: ""; position: absolute; inset: 3px; border-radius: 50%; background: transparent; }
96
96
  .rp-pt:hover::after, .rp-pt.on::after { background: var(--cz-blue); box-shadow: 0 0 0 2px var(--cz-card); }
97
97
  .rp-pop { position: absolute; top: 18px; width: 210px; z-index: 3; background: var(--cz-card); border-radius: 14px; box-shadow: 0 16px 40px -20px rgba(42, 46, 53, .45), 0 0 0 1px var(--cz-hair);
98
- padding: 10px 12px; display: flex; flex-direction: column; gap: 4px; font-size: var(--fs-2); }
99
- .rp-empty { padding: 18px 0; text-align: center; font-size: var(--fs-3); }
100
- .rp-ex { display: grid !important; grid-template-columns: 22px minmax(0, 1fr) 80px 92px 112px; gap: 0 10px; align-items: center; padding: 8px 6px !important; border-top: 1px solid var(--cz-hair) !important; font-size: var(--fs-3); width: 100%; }
101
- .rp-exh { font-size: var(--fs-2); font-weight: 800; color: var(--cz-ink3); border-top: 0 !important; }
98
+ padding: 10px 12px; display: flex; flex-direction: column; gap: 4px; font-size: var(--fs-meta); line-height: var(--lh-meta); }
99
+ .rp-empty { padding: 18px 0; text-align: center; font-size: var(--fs-body); line-height: var(--lh-body); }
100
+ .rp-ex { display: grid !important; grid-template-columns: 22px minmax(0, 1fr) 80px 92px 112px; gap: 0 10px; align-items: center; padding: 8px 6px !important; border-top: 1px solid var(--cz-hair) !important; font-size: var(--fs-body); width: 100%; line-height: var(--lh-body); }
101
+ .rp-exh { font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); border-top: 0 !important; line-height: var(--lh-label); }
102
102
  .rp-ex b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
103
- .rp-mv { color: var(--cz-ok); font-weight: 700; }
104
- .rp-exd { padding: 4px 6px 8px 38px; font-size: var(--fs-2); }
103
+ .rp-mv { color: var(--cz-ok); font-weight: var(--fw-strong); }
104
+ .rp-exd { padding: 4px 6px 8px 38px; font-size: var(--fs-meta); line-height: var(--lh-meta); }
105
105
 
106
106
  /* ── presenting (MtPresent's strip) ── */
107
107
  .vz-pres.rp-pres { background: var(--cz-ground, var(--cz-well)); color: var(--cz-ink); justify-content: stretch; align-items: stretch; padding: 18px 24px 20px; gap: 14px; }
108
- .rp-prh { display: flex; align-items: center; gap: 10px; font-size: var(--fs-3); }
108
+ .rp-prh { display: flex; align-items: center; gap: 10px; font-size: var(--fs-body); line-height: var(--lh-body); }
109
109
  .rp-rec { width: 10px; height: 10px; border-radius: 50%; background: var(--cz-blue); flex: none; }
110
110
  .rp-prs { flex: 1; min-height: 0; display: grid; place-items: center; }
111
111
  .rp-pres .vz-slide { width: min(100%, calc((100vh - 170px) * 16 / 9)); }
112
- .rp-blank { display: grid; place-items: center; background: var(--cz-c-17191c) !important; color: var(--cz-c-9aa1ab); font-size: var(--fs-3); }
112
+ .rp-blank { display: grid; place-items: center; background: var(--cz-c-17191c) !important; color: var(--cz-c-9aa1ab); font-size: var(--fs-body); line-height: var(--lh-body); }
113
113
  .rp-prn { color: var(--cz-ink) !important; flex-wrap: wrap; }
114
114
  .rp-pres .vz-snav .vz-ib { color: var(--cz-ink2); }
115
- .rp-tb { width: 36px; height: 30px; border-radius: 8px !important; background: var(--cz-card) !important; box-shadow: inset 0 0 0 1px var(--cz-hair); font-size: var(--fs-2); font-weight: 700; text-align: center !important; color: var(--cz-ink2); }
115
+ .rp-tb { width: 36px; height: 30px; border-radius: 8px !important; background: var(--cz-card) !important; box-shadow: inset 0 0 0 1px var(--cz-hair); font-size: var(--fs-label); font-weight: var(--fw-strong); text-align: center !important; color: var(--cz-ink2); line-height: var(--lh-label); }
116
116
  .rp-tb.on { box-shadow: inset 0 0 0 2px var(--cz-blue); color: var(--cz-ink); }
117
- .rp-hint { font-size: var(--fs-2); }
117
+ .rp-hint { font-size: var(--fs-meta); line-height: var(--lh-meta); }
118
118
 
119
119
  /* ── phone (XvAPhReport: the same shell, full screen) ── */
120
120
  @media (max-width: 760px) {
@@ -137,8 +137,8 @@
137
137
  .rp-thumb.on { border-color: color-mix(in oklab, var(--cz-blue) 50%, transparent) !important; }
138
138
  .rp-tf { position: relative; display: block; aspect-ratio: 16 / 9; overflow: hidden; background: var(--cz-well); }
139
139
  .rp-tf iframe { position: absolute; left: 0; top: 0; width: 400%; height: 400%; border: 0; transform: scale(.25); transform-origin: 0 0; pointer-events: none; background: var(--cz-c-ffffff); }
140
- .rp-std { position: absolute; inset: 0; display: grid; place-items: center; font-size: var(--fs-2); color: var(--cz-ink3); }
141
- .rp-tl { padding: 6px 10px; border-top: 1px solid var(--cz-hair); font-size: var(--fs-2); }
140
+ .rp-std { position: absolute; inset: 0; display: grid; place-items: center; font-size: var(--fs-meta); color: var(--cz-ink3); line-height: var(--lh-meta); }
141
+ .rp-tl { padding: 6px 10px; border-top: 1px solid var(--cz-hair); font-size: var(--fs-meta); line-height: var(--lh-meta); }
142
142
 
143
143
  /* ── Viewer shell A (XvAReport, XvAReportMore, XvAReportIssue, XvAPhReport): the summary card, the report, the strip; the popovers ⋯ opens ── */
144
144
  .vz.rp-a { position: relative; padding: 0; gap: 0; }
@@ -155,43 +155,43 @@
155
155
  .rp-th.rp-tt { background: var(--cz-c-2546b8); }
156
156
  .rp-th[aria-current="true"] { box-shadow: 0 0 0 2px var(--cz-blueink); }
157
157
  .rp-th > span { position: absolute; inset: 0; }
158
- .rp-a .rp-count { text-align: center; font-size: var(--fs-2); color: var(--cz-ink3); }
158
+ .rp-a .rp-count { text-align: center; font-size: var(--fs-meta); color: var(--cz-ink3); line-height: var(--lh-meta); }
159
159
  .vz-conf.rp-cfm { background: var(--cz-bluebg); border-radius: 20px; padding: 14px 16px; gap: 8px; margin: 0; }
160
- .rp-cfm > b { font-size: var(--fs-3); font-weight: 800; }
161
- .rp-cfm li { align-items: flex-start; font-size: var(--fs-3); }
160
+ .rp-cfm > b { font-size: var(--fs-row); font-weight: var(--fw-strong); line-height: var(--lh-row); }
161
+ .rp-cfm li { align-items: flex-start; font-size: var(--fs-body); line-height: var(--lh-body); }
162
162
  .rp-cfm li span:first-child { width: auto; height: auto; border-radius: 0; background: none !important; box-shadow: none !important; color: var(--cz-ok); margin-top: 1px; }
163
163
  .rp-cfm li[data-ok="false"] span:first-child { color: var(--cz-risk); }
164
- .rp-cfm .vz-note { font-size: var(--fs-2); }
165
- .rp-sec { height: 40px; padding: 0 14px !important; border-radius: 999px; background: var(--cz-card) !important; font-size: var(--fs-2); font-weight: 700; color: var(--cz-ink2); }
164
+ .rp-cfm .vz-note { font-size: var(--fs-meta); line-height: var(--lh-meta); }
165
+ .rp-sec { height: 40px; padding: 0 14px !important; border-radius: 999px; background: var(--cz-card) !important; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink2); line-height: var(--lh-label); }
166
166
  .rp-back { display: flex; align-items: center; gap: 4px; margin-left: -8px; }
167
- .rp-back b { font-size: var(--fs-3); font-weight: 800; }
167
+ .rp-back b { font-size: var(--fs-row); font-weight: var(--fw-strong); line-height: var(--lh-row); }
168
168
 
169
169
  /* ── the one report Viewer (canvas OvReport): the summary with its icon primary and meta chips, the bar, the deck, the folds.
170
170
  * A cycle (premium-report-read.js) and a new report from the chat (premium-report-tab.js) draw the same parts (rp-parts.js rpSumHtml, rpBarHtml). ── */
171
171
  .rp-sum .czs-line { min-height: 32px; }
172
172
  .rp-sum .rp-ln { min-width: 0; }
173
- .rp-sum .czs-r { font-weight: 500; font-size: var(--fs-2); }
173
+ .rp-sum .czs-r { font-weight: var(--fw-regular); font-size: var(--fs-meta); line-height: var(--lh-meta); }
174
174
  .rp-pri { flex: none; width: 32px; height: 32px; margin: -2px -4px -2px 4px; border: 0; border-radius: 999px; display: grid; place-items: center; cursor: pointer; background: var(--cz-blue); color: var(--cz-onsolid); }
175
175
  .rp-sum .czs-line:not(:has(.czs-r)) .rp-pri { margin-left: auto; }
176
176
  .rp-pri:hover { filter: brightness(1.08); }
177
177
  .rp-pri:disabled { opacity: .5; cursor: default; }
178
178
  .rp-pri:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: 2px; }
179
- .rp-sum .czs-p { margin: 0; font-size: var(--fs-3); line-height: 1.55; color: var(--cz-ink); }
179
+ .rp-sum .czs-p { margin: 0; font-size: var(--fs-body); line-height: 1.55; color: var(--cz-ink); }
180
180
  .rp-mcs { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 2px; }
181
- .rp-mc { display: inline-flex; align-items: center; gap: 6px; font: 600 var(--fs-2) var(--cz-sans); color: var(--cz-ink2); background: none; border: 0; padding: 4px 6px; margin: 0 -6px; border-radius: 8px; }
181
+ .rp-mc { display: inline-flex; align-items: center; gap: 6px; font: var(--fw-strong) var(--fs-label)/var(--lh-label) var(--cz-sans); color: var(--cz-ink2); background: none; border: 0; padding: 4px 6px; margin: 0 -6px; border-radius: 8px; }
182
182
  .rp-mc svg { color: var(--cz-ink3); }
183
183
  button.rp-mc { cursor: pointer; }
184
184
  button.rp-mc:hover, button.rp-mc[aria-expanded="true"] { background: var(--cz-well); color: var(--cz-ink); }
185
185
  .rp-bar { display: flex; align-items: center; gap: 4px; }
186
186
  .rp-seg { flex: 1; min-width: 0; display: flex; padding: 3px; border-radius: 999px; background: var(--cz-well); }
187
- .rp-seg button { flex: 1; min-width: 0; height: 30px; text-align: center; border: 0; border-radius: 999px; background: none; font: 600 var(--fs-2) var(--cz-sans); color: var(--cz-ink2); cursor: pointer; white-space: nowrap; padding: 0 8px; }
187
+ .rp-seg button { flex: 1; min-width: 0; height: 30px; text-align: center; border: 0; border-radius: 999px; background: none; font: var(--fw-strong) var(--fs-label)/var(--lh-label) var(--cz-sans); color: var(--cz-ink2); cursor: pointer; white-space: nowrap; padding: 0 8px; }
188
188
  .rp-seg button[aria-pressed="true"] { background: var(--cz-card); color: var(--cz-ink); box-shadow: 0 1px 2px rgb(0 0 0 / .08); }
189
189
  .rp-tls { display: flex; flex: none; }
190
190
  .rp-tl.rp-tl { width: 36px; height: 36px; border: 0; padding: 0; border-top: 0; border-radius: 10px; display: grid; place-items: center; background: none; color: var(--cz-ink2); cursor: pointer; }
191
191
  .rp-tl:hover, .rp-tl[aria-expanded="true"] { background: var(--cz-well); color: var(--cz-ink); }
192
192
  .rp-nav { display: flex; align-items: center; justify-content: center; gap: 4px; margin-top: -4px; }
193
193
  .rp-nav > .vz-ib { width: 28px; height: 28px; border-radius: 999px; }
194
- .rp-a .rp-nav .rp-count { font-size: var(--fs-2); color: var(--cz-ink2); min-width: 84px; }
194
+ .rp-a .rp-nav .rp-count { font-size: var(--fs-meta); color: var(--cz-ink2); min-width: 84px; line-height: var(--lh-meta); }
195
195
  .rp-a .rp-thumbs.rp-thumbs { overflow: visible; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 8px; margin-top: -4px; }
196
196
  .rp-a .rp-th.rp-th { border-radius: 8px; }
197
197
  .rp-a .czs-secs { margin: 0; }
@@ -200,10 +200,10 @@ button.rp-mc:hover, button.rp-mc[aria-expanded="true"] { background: var(--cz-we
200
200
  button.rp-cy { cursor: pointer; }
201
201
  button.rp-cy:hover { background: var(--cz-well); }
202
202
  .rp-cy > span { flex: 1; min-width: 0; display: flex; align-items: baseline; gap: 8px; }
203
- .rp-cy b { font-size: var(--fs-3); font-weight: 700; }
204
- .rp-cy small { font-size: var(--fs-2); color: var(--cz-ink3); }
203
+ .rp-cy b { font-size: var(--fs-row); font-weight: var(--fw-strong); line-height: var(--lh-row); }
204
+ .rp-cy small { font-size: var(--fs-meta); color: var(--cz-ink3); line-height: var(--lh-meta); }
205
205
  .rp-cy svg { color: var(--cz-ink3); }
206
- .rp-ol { margin: 0 0 4px; padding-left: 20px; font-size: var(--fs-3); line-height: 1.6; }
206
+ .rp-ol { margin: 0 0 4px; padding-left: 20px; font-size: var(--fs-body); line-height: 1.6; }
207
207
  @media (max-width: 760px) {
208
208
  .rp-a .rp-thumbs.rp-thumbs, .vz-dk .vz-dkt { display: none; }
209
209
  .rp-seg button { padding: 0 4px; }
@@ -212,17 +212,17 @@ button.rp-cy:hover { background: var(--cz-well); }
212
212
  }
213
213
  .vz-dk .czs-secs { margin: 0; }
214
214
  .vz-dkp { border-radius: 16px; background: var(--cz-card); box-shadow: inset 0 0 0 1px var(--cz-hair); padding: 20px 22px; display: flex; flex-direction: column; gap: 10px; }
215
- .vz-dkp h2 { margin: 0; font-size: var(--fs-5); font-weight: 800; }
215
+ .vz-dkp h2 { margin: 0; font-size: var(--fs-panel); font-weight: var(--fw-strong); line-height: var(--lh-panel); }
216
216
  /* the two cuts of a ready-made report (batch 17 item 1, PbG5): the switch, then which sections the sponsors read */
217
217
  .vz-cut { display: flex; flex-direction: column; gap: 8px; margin: 4px 0 10px; }
218
218
  .vz-cuts { flex: none; align-self: flex-start; }
219
219
  .vz-cuts button { flex: none; display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 12px; }
220
220
  .vz-cuts svg { fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
221
221
  .vz-cutl { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
222
- .vz-cutl li { display: flex; align-items: center; gap: 10px; padding: 7px 0; border-top: 1px solid var(--cz-hair); font-size: var(--fs-3); }
222
+ .vz-cutl li { display: flex; align-items: center; gap: 10px; padding: 7px 0; border-top: 1px solid var(--cz-hair); font-size: var(--fs-body); line-height: var(--lh-body); }
223
223
  .vz-cutl li:first-child { border-top: 0; }
224
224
  .vz-cutl li span:last-child { display: flex; flex-direction: column; gap: 1px; }
225
- .vz-cutl small { font-size: var(--fs-2); color: var(--cz-ink3); }
225
+ .vz-cutl small { font-size: var(--fs-meta); color: var(--cz-ink3); line-height: var(--lh-meta); }
226
226
  .vz-cb { flex: none; width: 18px; height: 18px; border-radius: 5px; border: 2px solid var(--cz-ink3); box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; }
227
227
  .vz-cutl li.on .vz-cb { background: var(--cz-blue); border-color: var(--cz-blue); color: var(--cz-onsolid); }
228
228
  .vz-cb svg { fill: none; stroke: currentColor; stroke-width: 3; }
@@ -235,48 +235,48 @@ button.rp-cy:hover { background: var(--cz-well); }
235
235
  /* ── the report building flow (batch 22 item 14, canvas RfH1–RfH7; public/pm/report-flow.js) ── */
236
236
  .rf-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
237
237
  .rf-qs { display: flex; flex-direction: column; gap: 14px; }
238
- .rf-st { display: flex; align-items: center; gap: 7px; margin: 0; font-size: var(--fs-2); font-weight: 700; color: var(--cz-blueink); }
238
+ .rf-st { display: flex; align-items: center; gap: 7px; margin: 0; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-blueink); line-height: var(--lh-label); }
239
239
  .rf-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--cz-blue); flex: none; }
240
240
  .rf-q { border: 0; margin: 0; padding: 12px 0 0; border-top: 1px solid var(--cz-hair); display: flex; flex-direction: column; gap: 8px; min-width: 0; }
241
- .rf-q legend { float: left; width: 100%; padding: 0 0 6px; font-weight: 800; color: var(--cz-ink); display: flex; align-items: center; gap: 8px; }
241
+ .rf-q legend { float: left; width: 100%; padding: 0 0 6px; font-weight: var(--fw-strong); color: var(--cz-ink); display: flex; align-items: center; gap: 8px; }
242
242
  .rf-opt { display: flex; align-items: flex-start; gap: 10px; width: 100%; text-align: left; padding: 10px 12px; margin: 0 0 6px; border-radius: 12px; border: 1px solid var(--cz-hair); background: var(--cz-card); color: var(--cz-ink); font: inherit; cursor: pointer; min-height: 44px; }
243
243
  .rf-opt[aria-checked="true"] { border-color: color-mix(in oklab, var(--cz-blue) 55%, transparent); background: var(--cz-bluebg); }
244
244
  .rf-opt .vz-ring { margin-top: 3px; }
245
245
  .rf-ot { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; }
246
- .rf-ot > span:last-child { flex-basis: 100%; color: var(--cz-ink2); font-size: var(--fs-2); }
247
- .rf-tag { display: inline-flex; align-items: center; padding: 1px 8px; border-radius: 99px; background: var(--cz-well); color: var(--cz-ink2); font-size: var(--fs-1); font-weight: 700; }
246
+ .rf-ot > span:last-child { flex-basis: 100%; color: var(--cz-ink2); font-size: var(--fs-meta); line-height: var(--lh-meta); }
247
+ .rf-tag { display: inline-flex; align-items: center; padding: 1px 8px; border-radius: 99px; background: var(--cz-well); color: var(--cz-ink2); font-size: var(--fs-badge); font-weight: var(--fw-strong); line-height: var(--lh-badge); }
248
248
  .rf-tag[data-k="ch"] { background: var(--cz-bluebg); color: var(--cz-blueink); }
249
249
  .rf-in input, .rf-sel select { width: 100%; box-sizing: border-box; min-height: 44px; padding: 8px 12px; border-radius: 12px; border: 1px solid var(--cz-hair); background: var(--cz-card); color: var(--cz-ink); font: inherit; }
250
250
  .rf-row { display: flex; flex-wrap: wrap; gap: 8px; }
251
251
  .rf-row .rf-sel { flex: 1 1 120px; }
252
- .rf-seg { min-height: 40px; padding: 0 16px; border-radius: 99px; border: 1px solid var(--cz-hair); background: var(--cz-card); color: var(--cz-ink); font: inherit; font-weight: 700; cursor: pointer; }
252
+ .rf-seg { min-height: 40px; padding: 0 16px; border-radius: 99px; border: 1px solid var(--cz-hair); background: var(--cz-card); color: var(--cz-ink); font: inherit; font-weight: var(--fw-strong); cursor: pointer; }
253
253
  .rf-seg[aria-checked="true"] { background: var(--cz-bluebg); border-color: transparent; color: var(--cz-blueink); }
254
- .rf-fix { margin: 0; display: flex; flex-direction: column; gap: 2px; } .rf-fix span { color: var(--cz-ink2); font-size: var(--fs-2); }
254
+ .rf-fix { margin: 0; display: flex; flex-direction: column; gap: 2px; } .rf-fix span { color: var(--cz-ink2); font-size: var(--fs-meta); line-height: var(--lh-meta); }
255
255
  .rf-src { margin: 0; padding-left: 18px; color: var(--cz-ink); }
256
- .rf-chg { margin: 0; font-size: var(--fs-2); color: var(--cz-ink2); }
256
+ .rf-chg { margin: 0; font-size: var(--fs-meta); color: var(--cz-ink2); line-height: var(--lh-meta); }
257
257
  .rf-foot { display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding-top: 12px; border-top: 1px solid var(--cz-hair); }
258
258
  .rf-foot .vz-note { margin-right: auto; }
259
259
  .rf-ib { width: 36px; height: 36px; min-width: 36px; border-radius: 50%; border: 1px solid var(--cz-hair); background: var(--cz-card); color: var(--cz-ink2); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; padding: 0; }
260
260
  .rf-ib.pri { background: var(--cz-blue); border-color: transparent; color: var(--cz-onsolid); }
261
261
  .rf-ib[disabled] { opacity: .45; cursor: default; }
262
- .rf-hist h3 { margin: 4px 0 6px; font-size: var(--fs-3); }
262
+ .rf-hist h3 { margin: 4px 0 6px; font-size: var(--fs-body); line-height: var(--lh-body); }
263
263
  .rf-hist ol { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
264
264
  .rf-hv { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-top: 1px solid var(--cz-hair); }
265
265
  .rf-hv > b { min-width: 28px; color: var(--cz-ink3); }
266
266
  .rf-hv[aria-current="true"] > b, .rf-hv[data-k="new"] > b { color: var(--cz-blueink); }
267
267
  .rf-hv > span { flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
268
- .rf-hv em { font-style: normal; color: var(--cz-ink3); font-size: var(--fs-2); }
268
+ .rf-hv em { font-style: normal; color: var(--cz-ink3); font-size: var(--fs-meta); line-height: var(--lh-meta); }
269
269
  .rf-wait { display: flex; align-items: center; gap: 12px; padding: 12px; border-radius: 16px; background: var(--cz-bluebg); }
270
270
  .rf-wait[data-k="bad"] { background: var(--cz-well); }
271
- .rf-wait p { flex: 1; margin: 0; display: flex; flex-direction: column; gap: 2px; } .rf-wait p span { color: var(--cz-ink2); font-size: var(--fs-2); }
271
+ .rf-wait p { flex: 1; margin: 0; display: flex; flex-direction: column; gap: 2px; } .rf-wait p span { color: var(--cz-ink2); font-size: var(--fs-meta); line-height: var(--lh-meta); }
272
272
  .rf-rv { display: flex; flex-direction: column; margin: 12px 0; }
273
273
  .rf-rvh { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 16px; background: var(--cz-bluebg); }
274
- .rf-rvh > b { flex: 1; font-size: var(--fs-2); }
274
+ .rf-rvh > b { flex: 1; font-size: var(--fs-meta); line-height: var(--lh-meta); }
275
275
  .rf-fx { display: flex; align-items: flex-start; gap: 10px; padding: 10px 0; border-top: 1px solid var(--cz-hair); }
276
276
  .rf-fx + .rf-fx { margin-top: 0; } .rf-rvh + .rf-fx { border-top: 0; }
277
277
  .rf-star { color: var(--cz-blueink); margin-top: 2px; }
278
- .rf-fxt { flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; } .rf-fxt span { color: var(--cz-ink2); font-size: var(--fs-2); }
279
- .rf-pass { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 4px 12px; margin: 0; padding: 10px 4px; border-top: 1px solid var(--cz-hair); font-size: var(--fs-2); }
278
+ .rf-fxt { flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; } .rf-fxt span { color: var(--cz-ink2); font-size: var(--fs-meta); line-height: var(--lh-meta); }
279
+ .rf-pass { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 4px 12px; margin: 0; padding: 10px 4px; border-top: 1px solid var(--cz-hair); font-size: var(--fs-meta); line-height: var(--lh-meta); }
280
280
  .rf-pass span { color: var(--cz-ink3); }
281
281
  .rf-opt[aria-checked="true"] .vz-ring { border: 5px solid var(--cz-blue); }
282
282
 
@@ -289,24 +289,24 @@ button.rp-cy:hover { background: var(--cz-well); }
289
289
 
290
290
  /* the agreed report Viewer (batch 23 item 3; canvas RfH1, RfH2): cycle chips, one status line, the tools, the report, the review, the primary */
291
291
  .rp-ccs { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
292
- .rp-cc { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 12px; border: 0; border-radius: 999px; background: var(--cz-well); font: 700 var(--fs-2) var(--cz-sans); color: var(--cz-ink2); }
292
+ .rp-cc { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 12px; border: 0; border-radius: 999px; background: var(--cz-well); font: var(--fw-strong) var(--fs-label)/var(--lh-label) var(--cz-sans); color: var(--cz-ink2); }
293
293
  button.rp-cc { cursor: pointer; }
294
294
  .rp-cc.on { background: var(--cz-bluebg); color: var(--cz-blueink); }
295
295
  .rp-cc i, .rp-stl i { width: 8px; height: 8px; border-radius: 50%; background: var(--cz-blue); flex: none; }
296
- .rp-stl { display: flex; align-items: center; gap: 8px; margin: 0; font-size: var(--fs-2); color: var(--cz-ink2); }
297
- .rp-stl[data-tone="you"] { color: var(--cz-blueink); font-weight: 700; }
296
+ .rp-stl { display: flex; align-items: center; gap: 8px; margin: 0; font-size: var(--fs-meta); color: var(--cz-ink2); line-height: var(--lh-meta); }
297
+ .rp-stl[data-tone="you"] { color: var(--cz-blueink); font-weight: var(--fw-strong); }
298
298
  .rp-rfh .rp-bar { justify-content: flex-end; }
299
299
  .rp-foot { display: flex; justify-content: flex-end; gap: 8px; margin-top: auto; padding-top: 4px; }
300
300
  .rp-foot .rp-pri { width: 40px; height: 40px; margin: 0; }
301
301
 
302
302
  /* a template's sections and look (canvas TplA, brief 3; public/pm/report-flow.js): chips in order, a small title slide and one line */
303
303
  .rf-cps { display: flex; flex-wrap: wrap; gap: 6px; }
304
- .rf-cp { display: inline-flex; align-items: center; padding: 3px 10px; border-radius: 99px; border: 1px solid var(--cz-hair); background: var(--cz-card); color: var(--cz-ink2); font-size: var(--fs-2); }
304
+ .rf-cp { display: inline-flex; align-items: center; padding: 3px 10px; border-radius: 99px; border: 1px solid var(--cz-hair); background: var(--cz-card); color: var(--cz-ink2); font-size: var(--fs-meta); line-height: var(--lh-meta); }
305
305
  .rf-cp[data-k="new"] { border-color: color-mix(in oklab, var(--cz-blue) 55%, transparent); background: var(--cz-bluebg); color: var(--cz-blueink); }
306
306
  .rf-cp[data-k="gone"] { border-style: dashed; color: var(--cz-ink3); }
307
307
  .rf-lk { display: flex; align-items: center; gap: 12px; }
308
- .rf-mini { width: 96px; height: 54px; flex: none; border-radius: 7px; display: flex; align-items: flex-end; padding: 6px 7px; box-sizing: border-box; background: linear-gradient(135deg, var(--cz-c-2546b8), var(--cz-c-1b3a9e)); color: var(--cz-c-ffffff); font-size: var(--fs-1); line-height: 1.2; overflow: hidden; }
308
+ .rf-mini { width: 96px; height: 54px; flex: none; border-radius: 7px; display: flex; align-items: flex-end; padding: 6px 7px; box-sizing: border-box; background: linear-gradient(135deg, var(--cz-c-2546b8), var(--cz-c-1b3a9e)); color: var(--cz-c-ffffff); font-size: var(--fs-meta); line-height: 1.2; overflow: hidden; }
309
309
  .rf-mini[data-k="own"] { background: var(--cz-well2); color: var(--cz-ink); border: 1px solid var(--cz-hair); }
310
- .rf-lk .rf-fix small { color: var(--cz-ink3); font-size: var(--fs-2); }
310
+ .rf-lk .rf-fix small { color: var(--cz-ink3); font-size: var(--fs-meta); line-height: var(--lh-meta); }
311
311
  .rf-tplx { padding: 10px 12px; border: 1px solid var(--cz-hair); border-radius: 14px; background: var(--cz-bluebg); }
312
312
  .rf-hv em.rf-rest { color: var(--cz-ink2); }
@@ -11,10 +11,10 @@
11
11
  .cz-vw-tile svg { width: 17px; height: 17px; }
12
12
  .cz-vw-t { display: block; }
13
13
  .cz-vw-kind { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; } /* say it once: the kind is for a screen reader */
14
- .cz-vw-title { font-size: var(--fs-4); font-weight: 800; }
15
- .cz-vw-sub { margin: 1px 0 0; font-size: var(--fs-2); color: var(--cz-ink3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* what the item is under its parent's name (MsBCharter "Charter") */
14
+ .cz-vw-title { font-size: var(--fs-row); font-weight: var(--fw-strong); line-height: var(--lh-row); }
15
+ .cz-vw-sub { margin: 1px 0 0; font-size: var(--fs-meta); color: var(--cz-ink3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: var(--lh-meta); } /* what the item is under its parent's name (MsBCharter "Charter") */
16
16
  /* the item's one dark primary in the header (the charter's Save, canvas MsBCharter): a word on a desk, a round check on a phone (MsBPhone) */
17
- .cz-vw-pri { height: 36px; padding: 0 14px; margin: 0 4px; border-radius: 999px; border: 0; background: var(--cz-ink); color: var(--cz-card); font: inherit; font-size: var(--fs-3); font-weight: 700; display: inline-flex; align-items: center; gap: 6px; flex: none; cursor: pointer; }
17
+ .cz-vw-pri { height: 36px; padding: 0 14px; margin: 0 4px; border-radius: 999px; border: 0; background: var(--cz-ink); color: var(--cz-card); font: inherit; font-size: var(--fs-row); font-weight: var(--fw-strong); display: inline-flex; align-items: center; gap: 6px; flex: none; cursor: pointer; line-height: var(--lh-row); }
18
18
  .cz-vw-pri.i { width: 40px; height: 40px; padding: 0; justify-content: center; }
19
19
  .cz-vw-pri:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: 2px; }
20
20
  .cz-vw-pri.blue { background: var(--cz-solid); color: var(--cz-onsolid); } /* a form's round ✓ (batch 18 item 2-C, canvas OvA8People) */
@@ -27,13 +27,13 @@
27
27
  .cz-vw-rn:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: 1px; }
28
28
  .cz-vw-hd.cz-vw-renon { flex-wrap: wrap; }
29
29
  .cz-vw-ren { flex: 1; min-width: 0; display: flex; align-items: center; gap: 4px; height: 40px; margin-right: 6px; border-radius: 12px; background: var(--cz-card); box-shadow: 0 0 0 1.5px var(--cz-blue), 0 0 0 5px color-mix(in srgb, var(--cz-blue) 14%, transparent); padding: 0 4px 0 10px; }
30
- .cz-vw-ren input { flex: 1; min-width: 0; font: inherit; font-size: var(--fs-4); font-weight: 800; color: var(--cz-ink); border: 0; background: transparent; outline: 0; padding: 0; }
30
+ .cz-vw-ren input { flex: 1; min-width: 0; font: inherit; font-size: var(--fs-row); font-weight: var(--fw-strong); color: var(--cz-ink); border: 0; background: transparent; outline: 0; padding: 0; line-height: var(--lh-row); }
31
31
  .cz-vw-sv { width: 32px; height: 32px; border-radius: 999px; border: 0; background: var(--cz-solid); color: var(--cz-onsolid); display: inline-flex; align-items: center; justify-content: center; flex: none; cursor: pointer; }
32
32
  .cz-vw-sv:disabled { opacity: .6; cursor: default; }
33
- .cz-vw-jt { flex-basis: 100%; display: flex; align-items: center; gap: 10px; margin: 8px 16px 0 46px; font-size: var(--fs-2); color: var(--cz-ink2); font-weight: 600; cursor: pointer; }
33
+ .cz-vw-jt { flex-basis: 100%; display: flex; align-items: center; gap: 10px; margin: 8px 16px 0 46px; font-size: var(--fs-label); color: var(--cz-ink2); font-weight: var(--fw-strong); cursor: pointer; line-height: var(--lh-label); }
34
34
  .cz-vw-jt input { width: 18px; height: 18px; margin: 0; accent-color: var(--cz-solid); flex: none; }
35
- .cz-vw-jt .k { color: var(--cz-ink3); font-weight: 700; }
36
- .cz-vw-rnerr { flex-basis: 100%; margin: 6px 16px 0 46px; font-size: var(--fs-2); color: var(--cz-red); }
35
+ .cz-vw-jt .k { color: var(--cz-ink3); font-weight: var(--fw-strong); }
36
+ .cz-vw-rnerr { flex-basis: 100%; margin: 6px 16px 0 46px; font-size: var(--fs-meta); color: var(--cz-red); line-height: var(--lh-meta); }
37
37
  .cz-vw-ib svg { width: 18px; height: 18px; }
38
38
  .cz-vw-ib[aria-pressed="true"] { background: var(--cz-bluebg); color: var(--cz-blueink); }
39
39
  .cz-vw-hd [data-cz-vw="back"] { margin-left: -6px; }
@@ -49,28 +49,28 @@ body.cz-vw-drag, body.cz-vw-drag * { cursor: col-resize !important; user-select:
49
49
 
50
50
  /* the ⋯ menu: change it, look back, stop or remove (red, last) */
51
51
  .cz-vw-menu { position: absolute; right: 56px; top: 54px; width: 250px; background: var(--cz-card); border-radius: 16px; box-shadow: var(--cz-sheet), 0 0 0 1px var(--cz-hair); padding: 6px; z-index: 6; display: flex; flex-direction: column; }
52
- .cz-vw-menu button { display: flex; align-items: center; gap: 10px; min-height: 40px; padding: 0 10px; border-radius: 10px; font: 600 var(--fs-3) var(--cz-sans); color: var(--cz-ink); background: none; border: 0; text-align: left; cursor: pointer; }
52
+ .cz-vw-menu button { display: flex; align-items: center; gap: 10px; min-height: 40px; padding: 0 10px; border-radius: 10px; font: var(--fw-strong) var(--fs-row)/var(--lh-row) var(--cz-sans); color: var(--cz-ink); background: none; border: 0; text-align: left; cursor: pointer; }
53
53
  .cz-vw-menu button:hover:not(:disabled), .cz-vw-menu button:focus-visible { background: var(--cz-well); outline: none; }
54
54
  .cz-vw-menu button:disabled { color: var(--cz-ink3); cursor: default; }
55
55
  .cz-vw-menu button svg { color: var(--cz-ink2); flex: none; }
56
56
  .cz-vw-menu hr { border: 0; border-top: 1px solid var(--cz-hair); margin: 4px 6px; }
57
- .cz-vw-menu .k { margin-left: auto; color: var(--cz-ink3); font-size: var(--fs-2); }
57
+ .cz-vw-menu .k { margin-left: auto; color: var(--cz-ink3); font-size: var(--fs-meta); line-height: var(--lh-meta); }
58
58
  .cz-vw-menu .bad { color: var(--cz-red); }
59
59
  /* the trail list (batch 14 item 7, canvas NvADesk, NvAPhoneTrail): hover ← → on a desk, hold it on a phone; newest first, then the page */
60
60
  .cz-vw-hd [data-cz-vw="fwd"] { margin-left: -6px; }
61
61
  .cz-vw-trail { position: absolute; width: 280px; max-height: 60vh; overflow: auto; background: var(--cz-card); border-radius: 16px; box-shadow: var(--cz-sheet), 0 0 0 1px var(--cz-hair); padding: 6px; z-index: 7; display: flex; flex-direction: column; gap: 2px; }
62
- .cz-vw-trail button { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 10px; border-radius: 12px; font: 600 var(--fs-3) var(--cz-sans); color: var(--cz-ink); background: none; border: 0; text-align: left; cursor: pointer; }
62
+ .cz-vw-trail button { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 10px; border-radius: 12px; font: var(--fw-strong) var(--fs-row)/var(--lh-row) var(--cz-sans); color: var(--cz-ink); background: none; border: 0; text-align: left; cursor: pointer; }
63
63
  .cz-vw-trail button > span:not(.t) { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
64
64
  .cz-vw-trail button:hover, .cz-vw-trail button:focus-visible { background: var(--cz-well); outline: none; }
65
65
  .cz-vw-trail .t { width: 28px; height: 28px; border-radius: 8px; background: var(--cz-bluebg); color: var(--cz-blueink); display: inline-grid; place-items: center; flex: none; }
66
- .cz-vw-trail .here { background: var(--cz-well); font-weight: 800; cursor: default; }
66
+ .cz-vw-trail .here { background: var(--cz-well); font-weight: var(--fw-strong); cursor: default; }
67
67
  .cz-vw-trail .ahead { color: var(--cz-ink2); }
68
68
  .cz-vw-trail .ahead .t, .cz-vw-trail .pg .t { background: var(--cz-well); color: var(--cz-ink2); }
69
69
  .cz-vw-trail .dot { width: 8px; height: 8px; border-radius: 99px; background: var(--cz-blue); flex: none; }
70
70
 
71
71
  /* the summary card: one state line, the words, one quiet meta line, one primary */
72
72
  .czs-sum { background: color-mix(in srgb, var(--cz-well) 60%, var(--cz-card)); border-radius: 20px; padding: 14px 16px 16px; display: flex; flex-direction: column; gap: 8px; }
73
- .czs-line { display: flex; align-items: center; gap: 8px; font-size: var(--fs-2); font-weight: 700; color: var(--cz-ink2); }
73
+ .czs-line { display: flex; align-items: center; gap: 8px; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink2); line-height: var(--lh-label); }
74
74
  .czs-line.you { color: var(--cz-blueink); }
75
75
  .czs-line.warn { color: var(--cz-risk); }
76
76
  .czs-line.live { color: var(--cz-red); }
@@ -78,13 +78,13 @@ body.cz-vw-drag, body.cz-vw-drag * { cursor: col-resize !important; user-select:
78
78
  .czs-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--cz-blue); flex: none; }
79
79
  .czs-line.warn .czs-dot { background: var(--cz-dot-risk); }
80
80
  .czs-line.live .czs-dot { background: var(--cz-dot-red); }
81
- .czs-r { margin-left: auto; font-weight: 600; color: var(--cz-ink3); white-space: nowrap; }
82
- .czs-p { margin: 0; font-size: var(--fs-3); line-height: 1.5; color: var(--cz-ink); }
83
- .czs-meta { margin: 0; font-size: var(--fs-2); color: var(--cz-ink3); }
81
+ .czs-r { margin-left: auto; font-weight: var(--fw-strong); color: var(--cz-ink3); white-space: nowrap; }
82
+ .czs-p { margin: 0; font-size: var(--fs-body); line-height: 1.5; color: var(--cz-ink); }
83
+ .czs-meta { margin: 0; font-size: var(--fs-meta); color: var(--cz-ink3); line-height: var(--lh-meta); }
84
84
  .czs-acts { display: flex; align-items: center; gap: 6px; margin-top: 4px; flex-wrap: wrap; }
85
- .czs-pri { height: 40px; padding: 0 16px; border-radius: 999px; background: var(--cz-solid); color: var(--cz-onsolid); font: 700 var(--fs-3) var(--cz-sans); display: inline-flex; align-items: center; gap: 8px; border: 0; cursor: pointer; text-decoration: none; }
85
+ .czs-pri { height: 40px; padding: 0 16px; border-radius: 999px; background: var(--cz-solid); color: var(--cz-onsolid); font: var(--fw-strong) var(--fs-row)/var(--lh-row) var(--cz-sans); display: inline-flex; align-items: center; gap: 8px; border: 0; cursor: pointer; text-decoration: none; }
86
86
  .czs-pri:disabled { opacity: .5; cursor: default; }
87
- .czs-sec2 { height: 40px; padding: 0 14px; border-radius: 999px; background: var(--cz-card); border: 0; font: 700 var(--fs-2) var(--cz-sans); color: var(--cz-ink2); cursor: pointer; }
87
+ .czs-sec2 { height: 40px; padding: 0 14px; border-radius: 999px; background: var(--cz-card); border: 0; font: var(--fw-strong) var(--fs-label)/var(--lh-label) var(--cz-sans); color: var(--cz-ink2); cursor: pointer; }
88
88
  .czs-sec2:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: 2px; }
89
89
  .czs-ib { width: 40px; height: 40px; border-radius: 999px; border: 0; background: var(--cz-card); color: var(--cz-ink2); display: inline-grid; place-items: center; cursor: pointer; }
90
90
  .czs-ib:hover:not(:disabled) { color: var(--cz-blueink); }
@@ -103,19 +103,19 @@ body.cz-vw-drag, body.cz-vw-drag * { cursor: col-resize !important; user-select:
103
103
  .czs-tail { position: absolute; right: 6px; top: 6px; display: inline-flex; }
104
104
  .czs-row:hover:not(:disabled) { background: color-mix(in srgb, var(--cz-well) 40%, var(--cz-card)); }
105
105
  .czs-row:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: -2px; border-radius: 12px; }
106
- .czs-row b { flex: 1; min-width: 0; font-size: var(--fs-3); font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
107
- .czs-n { font-size: var(--fs-2); color: var(--cz-ink3); font-weight: 600; white-space: nowrap; max-width: 55%; overflow: hidden; text-overflow: ellipsis; }
106
+ .czs-row b { flex: 1; min-width: 0; font-size: var(--fs-row); font-weight: var(--fw-strong); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: var(--lh-row); }
107
+ .czs-n { font-size: var(--fs-label); color: var(--cz-ink3); font-weight: var(--fw-strong); white-space: nowrap; max-width: 55%; overflow: hidden; text-overflow: ellipsis; line-height: var(--lh-label); }
108
108
  .czs-cv { color: var(--cz-ink3); display: inline-flex; flex: none; }
109
- .czs-body { padding: 0 14px 12px; display: flex; flex-direction: column; gap: 8px; font-size: var(--fs-3); line-height: 1.45; }
109
+ .czs-body { padding: 0 14px 12px; display: flex; flex-direction: column; gap: 8px; font-size: var(--fs-body); line-height: 1.45; }
110
110
  .czs-body[hidden] { display: none; }
111
111
  .czs-body > p { margin: 0; }
112
112
  /* one item in a row's body (XvOptADoc .it): a soft well, the words, a quiet line under them */
113
113
  .czs-it { display: flex; gap: 10px; align-items: flex-start; padding: 8px 10px; border-radius: 12px; background: color-mix(in srgb, var(--cz-well) 40%, var(--cz-card)); }
114
114
  .czs-it .w { flex: 1; min-width: 0; }
115
- .czs-it .w span { display: block; font-size: var(--fs-2); color: var(--cz-ink3); }
115
+ .czs-it .w span { display: block; font-size: var(--fs-meta); color: var(--cz-ink3); line-height: var(--lh-meta); }
116
116
  /* a row's leading tile (XvATask): a document glyph on the well, or the Jira J on blue */
117
117
  .ut-tki { width: 28px; height: 28px; border-radius: 9px; background: var(--cz-well); color: var(--cz-ink2); display: inline-grid; place-items: center; flex: none; }
118
- .ut-tki.j { background: var(--cz-solid); color: var(--cz-onsolid); font-size: var(--fs-1); font-weight: 800; }
118
+ .ut-tki.j { background: var(--cz-solid); color: var(--cz-onsolid); font-size: var(--fs-badge); font-weight: var(--fw-strong); line-height: var(--lh-badge); }
119
119
  .czs-it:has(.ut-tki) { align-items: center; }
120
120
  .ut-tki.dash { background: none; box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--cz-ink3) 45%, var(--cz-card)); }
121
121
  .czs-amb { width: 8px; height: 8px; border-radius: 50%; background: var(--cz-dot-risk); flex: none; align-self: center; margin-left: 8px; }
@@ -125,7 +125,7 @@ body.cz-vw-drag, body.cz-vw-drag * { cursor: col-resize !important; user-select:
125
125
  button.czs-it { width: 100%; border: 0; text-align: left; font: inherit; color: var(--cz-ink); cursor: pointer; }
126
126
  button.czs-it:hover { background: var(--cz-well); }
127
127
  button.czs-it:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: 1px; }
128
- .czs-it .w .flag { display: inline-block; margin-top: 4px; padding: 1px 8px; border-radius: 999px; background: var(--cz-riskbg); color: var(--cz-risk); font-size: var(--fs-2); font-weight: 700; }
128
+ .czs-it .w .flag { display: inline-block; margin-top: 4px; padding: 1px 8px; border-radius: 999px; background: var(--cz-riskbg); color: var(--cz-risk); font-size: var(--fs-label); font-weight: var(--fw-strong); line-height: var(--lh-label); }
129
129
 
130
130
  /* dragged wide (XvOptBRead): the summary and the contents in a 300px column, the text beside it at a readable line */
131
131
  .cz-vw-w2 .cz-vw-body { display: grid; grid-template-columns: 300px minmax(0, 1fr); grid-auto-rows: min-content; column-gap: 20px; align-content: start; }
@@ -149,12 +149,12 @@ body.cz-vw-rail [data-cz-vw-list] > :not(.cz-vw-railbar), body.cz-vw-rail #hmLis
149
149
  .cz-vw-hd [data-cz-vw="back"] { margin-left: 0; }
150
150
  .cz-vw-rn { min-height: 44px; }
151
151
  .cz-vw-ren { height: 44px; }
152
- .cz-vw-ren input { font-size: var(--fs-4); }
152
+ .cz-vw-ren input { font-size: var(--fs-field); }
153
153
  .cz-vw-sv { width: 36px; height: 36px; }
154
154
  .cz-vw-body { padding: 4px 16px 16px; }
155
155
  .cz-vw-menu { right: 8px; }
156
156
  .cz-vw-trail { position: fixed; left: 0 !important; right: 0; top: auto !important; bottom: 0; width: auto; max-height: 70vh; border-radius: 24px 24px 0 0; padding: 10px 12px 28px; }
157
- .cz-vw-trail button { min-height: 52px; font-size: var(--fs-4); }
157
+ .cz-vw-trail button { min-height: 52px; font-size: var(--fs-body); line-height: var(--lh-body); }
158
158
  .cz-vw-menu button, .czs-ib { min-height: 44px; }
159
159
  .czs-pri, .czs-sec2 { height: 44px; min-height: 44px; }
160
160
  .czs-ib { width: 44px; }
@@ -171,7 +171,7 @@ body.cz-vw-rail [data-cz-vw-list] > :not(.cz-vw-railbar), body.cz-vw-rail #hmLis
171
171
  /* the blue ✦ after an initiative's title: what Claude proposes (batch 12 items 2, 3 and 4, canvas PiA0/TpA1); hidden at zero */
172
172
  .cz-vw-title.has-chip { display: flex; align-items: center; gap: 6px; min-width: 0; }
173
173
  .cz-vw-title.has-chip > .cz-vw-tt, .cz-vw-title.has-chip > .cz-vw-rn { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
174
- .cz-vw-chip { display: inline-flex; align-items: center; gap: 3px; height: 24px; padding: 0 8px 0 6px; border-radius: 999px; border: 0; background: var(--cz-bluebg); color: var(--cz-blueink); font: inherit; font-size: var(--fs-2); font-weight: 800; flex: none; cursor: pointer; }
174
+ .cz-vw-chip { display: inline-flex; align-items: center; gap: 3px; height: 24px; padding: 0 8px 0 6px; border-radius: 999px; border: 0; background: var(--cz-bluebg); color: var(--cz-blueink); font: inherit; font-size: var(--fs-label); font-weight: var(--fw-strong); flex: none; cursor: pointer; line-height: var(--lh-label); }
175
175
  .cz-vw-chip:not(:has(b)) { padding: 0 6px; }
176
176
  .cz-vw-chip:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: 1px; }
177
177
  @media (max-width: 760px) { .cz-vw-chip { min-height: 32px; } }
@@ -180,22 +180,22 @@ body.cz-vw-rail [data-cz-vw-list] > :not(.cz-vw-railbar), body.cz-vw-rail #hmLis
180
180
  * one-choice chips, a quiet note and a ✦ line; the same on Home and the Board (cozy-home.css is not loaded on the Board) */
181
181
  .czf { display: flex; flex-direction: column; gap: 14px; margin: 0; }
182
182
  .czf-l[hidden] { display: none; }
183
- .czf-l { display: flex; flex-direction: column; gap: 6px; font-size: var(--fs-2); font-weight: 700; color: var(--cz-ink2); }
184
- .czf-l input, .czf-l select { font: inherit; font-size: var(--fs-3); font-weight: 500; color: var(--cz-ink); height: 44px; padding: 0 12px; border-radius: 12px; border: 1px solid var(--cz-hair); background: var(--cz-card); box-sizing: border-box; width: 100%; }
183
+ .czf-l { display: flex; flex-direction: column; gap: 6px; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink2); line-height: var(--lh-label); }
184
+ .czf-l input, .czf-l select { font: inherit; font-size: var(--fs-body); font-weight: var(--fw-regular); color: var(--cz-ink); height: 44px; padding: 0 12px; border-radius: 12px; border: 1px solid var(--cz-hair); background: var(--cz-card); box-sizing: border-box; width: 100%; line-height: var(--lh-body); }
185
185
  .czf-l input::placeholder { color: var(--cz-ink3); }
186
186
  .czf-l input:disabled { background: var(--cz-well); color: var(--cz-ink3); }
187
187
  .czf-l input:focus-visible, .czf-l select:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: 1px; }
188
188
  .czf-chips { display: flex; flex-wrap: wrap; gap: 8px; }
189
- .czf-chips .cz-chip { height: 36px; padding: 0 14px; font-weight: 600; }
190
- .czf-chips .cz-chip[aria-pressed="true"] { background: var(--cz-bluebg); border-color: transparent; color: var(--cz-blueink); font-weight: 700; }
189
+ .czf-chips .cz-chip { height: 36px; padding: 0 14px; font-weight: var(--fw-strong); }
190
+ .czf-chips .cz-chip[aria-pressed="true"] { background: var(--cz-bluebg); border-color: transparent; color: var(--cz-blueink); font-weight: var(--fw-strong); }
191
191
  .czf-chips .cz-chip svg { width: 13px; height: 13px; }
192
- .czf-note { margin: 0; font-size: var(--fs-2); line-height: 1.45; color: var(--cz-ink3); }
193
- .czf-spark { margin: 0; display: flex; gap: 8px; font-size: var(--fs-3); line-height: 1.5; color: var(--cz-ink2); }
192
+ .czf-note { margin: 0; font-size: var(--fs-meta); line-height: 1.45; color: var(--cz-ink3); }
193
+ .czf-spark { margin: 0; display: flex; gap: 8px; font-size: var(--fs-body); line-height: 1.5; color: var(--cz-ink2); }
194
194
  .czf-spark svg { flex: none; width: 14px; height: 14px; margin-top: 4px; color: var(--cz-blue); }
195
- .czf-err { margin: 0; font-size: var(--fs-2); color: var(--cz-red); }
195
+ .czf-err { margin: 0; font-size: var(--fs-meta); color: var(--cz-red); line-height: var(--lh-meta); }
196
196
  .czf-err:empty { display: none; }
197
- .czs-quiet { margin: 0; font-size: var(--fs-2); color: var(--cz-ink3); }
198
- @media (max-width: 760px), (pointer: coarse) { .czf-chips .cz-chip { height: 44px; } .czf-l input, .czf-l select { font-size: var(--fs-4); } }
197
+ .czs-quiet { margin: 0; font-size: var(--fs-meta); color: var(--cz-ink3); line-height: var(--lh-meta); }
198
+ @media (max-width: 760px), (pointer: coarse) { .czf-chips .cz-chip { height: 44px; } .czf-l input, .czf-l select { font-size: var(--fs-field); } }
199
199
 
200
200
  /* the Viewer's title wraps to two lines, then clamps (batch 18 item 2, the one pattern: OvA1Start). A title with Claude's ✦ chip keeps one. */
201
201
  .cz-vw-title:not(.has-chip) { white-space: normal; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; line-height: 1.25; overflow-wrap: anywhere; }
@@ -203,25 +203,25 @@ body.cz-vw-rail [data-cz-vw-list] > :not(.cz-vw-railbar), body.cz-vw-rail #hmLis
203
203
 
204
204
  /* an ask's summary (batch 18 item 2-A, OvA1Start, OvA3Waited): ✦ Claude's offer, the progress of what it started, the amber "If it waits" line */
205
205
  .nv { display: flex; flex-direction: column; gap: 12px; }
206
- .nv-offer, .nv-cost { margin: 0; display: flex; gap: 8px; align-items: flex-start; font-size: var(--fs-3); line-height: 1.5; color: var(--cz-ink); }
206
+ .nv-offer, .nv-cost { margin: 0; display: flex; gap: 8px; align-items: flex-start; font-size: var(--fs-body); line-height: 1.5; color: var(--cz-ink); }
207
207
  .nv-offer svg { flex: none; margin-top: 3px; color: var(--cz-blueink); }
208
- .nv-cost { font-size: var(--fs-2); font-weight: 700; color: var(--cz-risk); }
208
+ .nv-cost { font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-risk); line-height: var(--lh-label); }
209
209
  .nv-cost svg { flex: none; margin-top: 2px; }
210
210
  .nv-bar { height: 6px; border-radius: 99px; background: var(--cz-hair); overflow: hidden; }
211
211
  .nv-bar > span { display: block; height: 100%; border-radius: 99px; background: var(--cz-blue); }
212
212
  .czs-pri svg { flex: none; }
213
213
  /* the quiet owner line under the card: whose it is, the kind of work in words, the goal it moves */
214
- .nv-own { margin: 0; display: flex; align-items: center; gap: 8px; font-size: var(--fs-2); font-weight: 600; color: var(--cz-ink3); line-height: 1.4; }
215
- .nv-av { width: 22px; height: 22px; border-radius: 50%; background: var(--cz-bluebg); color: var(--cz-blueink); font-size: var(--fs-1); font-weight: 800; display: inline-grid; place-items: center; flex: none; }
214
+ .nv-own { margin: 0; display: flex; align-items: center; gap: 8px; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); line-height: 1.4; }
215
+ .nv-av { width: 22px; height: 22px; border-radius: 50%; background: var(--cz-bluebg); color: var(--cz-blueink); font-size: var(--fs-badge); font-weight: var(--fw-strong); display: inline-grid; place-items: center; flex: none; line-height: var(--lh-badge); }
216
216
  /* a decision: the choices, Claude's pick marked, the why it wrote, and Record with its words */
217
217
  .nv-dec { display: flex; flex-direction: column; gap: 8px; }
218
- .nv-pick { display: inline-block; margin-left: 6px; padding: 1px 8px; border-radius: 999px; background: var(--cz-card); color: var(--cz-blueink); font-size: var(--fs-1); font-weight: 800; }
219
- .nv .ut-field label em { font-style: normal; font-weight: 600; color: var(--cz-ink3); }
218
+ .nv-pick { display: inline-block; margin-left: 6px; padding: 1px 8px; border-radius: 999px; background: var(--cz-card); color: var(--cz-blueink); font-size: var(--fs-badge); font-weight: var(--fw-strong); line-height: var(--lh-badge); }
219
+ .nv .ut-field label em { font-style: normal; font-weight: var(--fw-strong); color: var(--cz-ink3); }
220
220
  .nv-facts { margin: 0; display: grid; gap: 6px; }
221
221
  .nv-facts div { display: grid; grid-template-columns: 110px 1fr; gap: 10px; }
222
- .nv-facts dt { color: var(--cz-ink3); font-size: var(--fs-2); }
222
+ .nv-facts dt { color: var(--cz-ink3); font-size: var(--fs-meta); line-height: var(--lh-meta); }
223
223
  .nv-facts dd { margin: 0; overflow-wrap: anywhere; }
224
- .nv-rev .czs-cv { align-self: center; font-size: var(--fs-4); }
224
+ .nv-rev .czs-cv { align-self: center; font-size: var(--fs-body); line-height: var(--lh-body); }
225
225
  /* a tile whose card is open has a ring; the tile of the group that holds what is open has a blue bar on its left (batch 18 item 14) */
226
226
  .cz-vw-railtile { position: relative; }
227
227
  .cz-vw-railtile.on { box-shadow: 0 0 0 2px var(--cz-blue); }