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,7 +3,7 @@
3
3
  * ripple when a mark changes while the list is open; the recording clock is the only other thing that changes. */
4
4
  /* closed: one 44 px round button stacked above the menu button (TbT1Split): the number of live items, blue with a soft glow when Claude
5
5
  asks, a red corner dot while a meeting records (batch 18 item 15). The menu button is 56 px, so the pill sits on its centre line. */
6
- .cz-live { position: absolute; left: 6px; bottom: 68px; width: 44px; height: 44px; padding: 0; border-radius: 50%; border: 0; background: var(--cz-card); box-shadow: var(--cz-float), inset 0 0 0 1.5px var(--cz-hair); display: inline-flex; align-items: center; justify-content: center; font: 800 var(--fs-3) var(--cz-sans); color: var(--cz-ink); font-variant-numeric: tabular-nums; cursor: pointer; z-index: 1; transition: background .2s, color .2s, box-shadow .2s; }
6
+ .cz-live { position: absolute; left: 6px; bottom: 68px; width: 44px; height: 44px; padding: 0; border-radius: 50%; border: 0; background: var(--cz-card); box-shadow: var(--cz-float), inset 0 0 0 1.5px var(--cz-hair); display: inline-flex; align-items: center; justify-content: center; font: var(--fw-strong) var(--fs-row)/var(--lh-row) var(--cz-sans); color: var(--cz-ink); font-variant-numeric: tabular-nums; cursor: pointer; z-index: 1; transition: background .2s, color .2s, box-shadow .2s; }
7
7
  .cz-live[hidden] { display: none; }
8
8
  .cz-live.asks { background: var(--cz-blueink); color: var(--cz-onsolid); box-shadow: var(--cz-float), 0 0 0 4px color-mix(in srgb, var(--cz-blue) 22%, transparent); }
9
9
  .cz-live.open { box-shadow: var(--cz-float), 0 0 0 2px color-mix(in srgb, var(--cz-blue) 30%, var(--cz-card)); }
@@ -46,10 +46,10 @@
46
46
  .lv-stop:disabled { opacity: .5; cursor: default; }
47
47
  .lv-stop:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: 2px; }
48
48
  .lv-mk { width: 24px; flex: none; display: inline-flex; justify-content: center; align-items: center; }
49
- .lv-t { flex: 1; min-width: 0; font-size: var(--fs-3); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
50
- .lv-t small { display: block; font-size: var(--fs-2); font-weight: 600; color: var(--cz-ink3); margin-top: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
51
- .lv-tm { font-size: var(--fs-2); font-weight: 700; color: var(--cz-ink3); white-space: nowrap; font-variant-numeric: tabular-nums; flex: none; }
52
- .cz-live .lv-tm { font-size: var(--fs-3); }
49
+ .lv-t { 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); }
50
+ .lv-t small { display: block; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); margin-top: 1px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: var(--lh-label); }
51
+ .lv-tm { font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); white-space: nowrap; font-variant-numeric: tabular-nums; flex: none; line-height: var(--lh-label); }
52
+ .cz-live .lv-tm { font-size: var(--fs-body); line-height: var(--lh-body); }
53
53
  .lv-row .cz-ctx { margin: 0 8px 0 4px; } /* the context pie before the time (batch 13 item 8; drawn by ctx-wedge.js, styled in cozy.css) */
54
54
  .lv-tm.rec { color: var(--cz-red); }
55
55
  .lv-tm.stop { color: var(--cz-late); }
@@ -11,22 +11,22 @@
11
11
  .vzx svg { fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; flex: none; }
12
12
  .vzx p { margin: 0; }
13
13
  .vzx [hidden] { display: none !important; }
14
- .vzx .vzx-mut { color: var(--cz-ink3); font-size: var(--fs-2); }
14
+ .vzx .vzx-mut { color: var(--cz-ink3); font-size: var(--fs-meta); line-height: var(--lh-meta); }
15
15
  .vzx-sp { flex: 1; }
16
16
 
17
17
  /* ── the top bar: what is presented, the time, the share spot and Stop ── */
18
18
  .vzx-top { grid-column: 1 / -1; position: relative; display: flex; align-items: center; gap: 12px; min-height: 60px; padding: 10px 12px 10px 18px;
19
- border-radius: 18px; background: var(--cz-card); font-size: var(--fs-3); }
20
- .vzx-top > b { font-weight: 800; white-space: nowrap; }
19
+ border-radius: 18px; background: var(--cz-card); font-size: var(--fs-body); line-height: var(--lh-body); }
20
+ .vzx-top > b { font-weight: var(--fw-strong); white-space: nowrap; }
21
21
  .vzx-rec { width: 9px; height: 9px; border-radius: 50%; background: var(--cz-red); flex: none; animation: vzx-beat 2s ease-in-out infinite; }
22
22
  @keyframes vzx-beat { 50% { opacity: .45; } }
23
23
  @media (prefers-reduced-motion: reduce) { .vzx-rec { animation: none; } }
24
24
  .vzx-matb { display: inline-flex; align-items: center; gap: 8px; min-height: 36px; padding: 0 12px !important; border-radius: 12px; background: var(--cz-well) !important;
25
- font-size: var(--fs-3) !important; font-weight: 700; white-space: nowrap; }
26
- .vzx-matb .vzx-c { font-weight: 500; color: var(--cz-ink3); }
25
+ font-size: var(--fs-row) !important; font-weight: var(--fw-strong); white-space: nowrap; line-height: var(--lh-row); }
26
+ .vzx-matb .vzx-c { font-weight: var(--fw-regular); color: var(--cz-ink3); }
27
27
  .vzx-matb[aria-expanded="true"] { background: var(--cz-well2, var(--cz-well)) !important; }
28
- .vzx-share { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 0 10px !important; border-radius: 10px; font-size: var(--fs-2) !important;
29
- color: var(--cz-ink2) !important; white-space: nowrap; }
28
+ .vzx-share { display: inline-flex; align-items: center; gap: 6px; min-height: 32px; padding: 0 10px !important; border-radius: 10px; font-size: var(--fs-meta) !important;
29
+ color: var(--cz-ink2) !important; white-space: nowrap; line-height: var(--lh-meta); }
30
30
  .vzx-share:hover { background: var(--cz-well) !important; }
31
31
  .vzx-share[data-k="blocked"] { color: var(--cz-late) !important; background: var(--cz-latebg) !important; }
32
32
  .vzx-stop { width: 40px; height: 40px; border-radius: 50% !important; display: inline-grid !important; place-items: center; flex: none;
@@ -50,11 +50,11 @@
50
50
  .vzx-tb.on { outline: 2px solid var(--cz-blue); }
51
51
  .vzx-mini { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
52
52
  .vzx-stops { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
53
- .vzx-stops > button { min-height: 32px; padding: 0 12px !important; border-radius: 999px; background: var(--cz-well) !important; font-size: var(--fs-2) !important; font-weight: 700; color: var(--cz-ink2) !important; }
53
+ .vzx-stops > button { min-height: 32px; padding: 0 12px !important; border-radius: 999px; background: var(--cz-well) !important; font-size: var(--fs-label) !important; font-weight: var(--fw-strong); color: var(--cz-ink2) !important; line-height: var(--lh-label); }
54
54
  .vzx-stops > button.on { background: var(--cz-blue) !important; color: var(--cz-onsolid) !important; }
55
55
  .vzx-stops > button.done { color: var(--cz-ink3) !important; }
56
- .vzx-chip { min-height: 32px; padding: 0 12px !important; border-radius: 999px; font-size: var(--fs-2) !important; color: var(--cz-ink2) !important; }
57
- .vzx-chip.on { background: var(--cz-bluebg) !important; color: var(--cz-blueink, var(--cz-blue)) !important; font-weight: 700; }
56
+ .vzx-chip { min-height: 32px; padding: 0 12px !important; border-radius: 999px; font-size: var(--fs-meta) !important; color: var(--cz-ink2) !important; line-height: var(--lh-meta); }
57
+ .vzx-chip.on { background: var(--cz-bluebg) !important; color: var(--cz-blueink, var(--cz-blue)) !important; font-weight: var(--fw-strong); }
58
58
 
59
59
  /* a PMOS document or report: one section lit, the rest dimmed */
60
60
  .vzx-doc { flex: 1; min-height: 0; overflow: auto; padding: 32px 40px; border-radius: 16px; border: 1px solid var(--cz-hair); background: var(--cz-sheet, var(--cz-card)); outline: none; }
@@ -71,22 +71,22 @@
71
71
  .vzx-imv { position: relative; flex: 1; min-height: 0; overflow: hidden; border-radius: 16px; background: var(--cz-c-1b1d21); display: grid; place-items: center; cursor: grab; }
72
72
  .vzx-imv:active { cursor: grabbing; }
73
73
  .vzx-imv img { max-width: 100%; max-height: 100%; transform-origin: center; user-select: none; transform: translate(var(--bd-px, 0px), var(--bd-py, 0px)) scale(var(--bd-z, 1)); } /* the pan and zoom are set at run time */
74
- .vzx-zm { position: absolute; right: 14px; bottom: 14px; display: flex; align-items: center; gap: 4px; padding: 4px; border-radius: 999px; background: rgba(42, 46, 53, .92); color: var(--cz-c-ffffff); font-size: var(--fs-3); font-weight: 700; }
74
+ .vzx-zm { position: absolute; right: 14px; bottom: 14px; display: flex; align-items: center; gap: 4px; padding: 4px; border-radius: 999px; background: rgba(42, 46, 53, .92); color: var(--cz-c-ffffff); font-size: var(--fs-row); font-weight: var(--fw-strong); line-height: var(--lh-row); }
75
75
  .vzx-zm .vzx-ib { color: var(--cz-c-ffffff); }
76
76
  .vzx-zm span { min-width: 52px; text-align: center; font-variant-numeric: tabular-nums; }
77
77
 
78
78
  /* a card on the stage: a live page, a PowerPoint file, nothing to show */
79
- .vzx-stage > .vzx-card { flex: 1; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 14px; padding: 40px; border-radius: 16px; background: var(--cz-well); font-size: var(--fs-3); line-height: 1.5; }
79
+ .vzx-stage > .vzx-card { flex: 1; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 14px; padding: 40px; border-radius: 16px; background: var(--cz-well); font-size: var(--fs-body); line-height: 1.5; }
80
80
  .vzx-stage > .vzx-card p { max-width: 560px; }
81
- .vzx-url { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 12px; background: var(--cz-card); font-size: var(--fs-3); }
82
- .vzx-url i { font-style: normal; font-size: var(--fs-2); font-weight: 700; color: var(--cz-ok); }
81
+ .vzx-url { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 12px; background: var(--cz-card); font-size: var(--fs-body); line-height: var(--lh-body); }
82
+ .vzx-url i { font-style: normal; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ok); line-height: var(--lh-label); }
83
83
  .vzx-btn { display: inline-flex; align-items: center; gap: 6px; min-height: 36px; padding: 0 16px !important; border-radius: 999px; background: var(--cz-solid, var(--cz-ink)) !important;
84
- color: var(--cz-onsolid, var(--cz-card)) !important; font-size: var(--fs-3) !important; font-weight: 700; text-decoration: none; }
84
+ color: var(--cz-onsolid, var(--cz-card)) !important; font-size: var(--fs-row) !important; font-weight: var(--fw-strong); text-decoration: none; line-height: var(--lh-row); }
85
85
 
86
86
  /* ── the side: Next, Your notes, From the room ── */
87
87
  .vzx-side { grid-column: 2; min-height: 0; overflow: auto; display: flex; flex-direction: column; gap: 12px; padding: 16px; border-radius: 22px; background: var(--cz-card); }
88
- .vzx-c2 { padding: 14px; border-radius: 14px; background: var(--cz-well); font-size: var(--fs-3); line-height: 1.5; }
89
- .vzx-c2 h4 { margin: 0 0 6px; font-size: var(--fs-2); font-weight: 700; color: var(--cz-ink2); }
88
+ .vzx-c2 { padding: 14px; border-radius: 14px; background: var(--cz-well); font-size: var(--fs-body); line-height: 1.5; }
89
+ .vzx-c2 h4 { margin: 0 0 6px; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink2); line-height: var(--lh-label); }
90
90
  .vzx-c2 p + p { margin-top: 6px; }
91
91
  .vzx-room { background: var(--cz-latebg); }
92
92
  .vzx-r { display: flex; align-items: flex-start; gap: 8px; }
@@ -95,7 +95,7 @@
95
95
  .vzx-nx { display: grid; place-items: center; height: 190px; }
96
96
  .vzx-nx .vzx-box { cursor: default; border-radius: 10px; }
97
97
 
98
- .vzx-foot { grid-column: 1 / -1; text-align: center; font-size: var(--fs-2); color: var(--cz-ink3); }
98
+ .vzx-foot { grid-column: 1 / -1; text-align: center; font-size: var(--fs-meta); color: var(--cz-ink3); line-height: var(--lh-meta); }
99
99
 
100
100
  /* ── switch material (M): the meeting's material, 1–9, and a link to add ── */
101
101
  .vzx-swm { position: fixed; top: var(--bd-y, 76px); left: var(--bd-x, 260px); z-index: 2; width: 420px; max-width: calc(100vw - 32px); max-height: calc(100vh - 120px); overflow: auto;
@@ -104,14 +104,14 @@
104
104
  .vzx-swm > button:hover, .vzx-swm > button:focus-visible { background: var(--cz-well) !important; }
105
105
  .vzx-swm > button.on { background: var(--cz-bluebg) !important; }
106
106
  .vzx-fi { width: 32px; height: 32px; border-radius: 10px; display: grid; place-items: center; background: var(--cz-well); color: var(--cz-ink2); flex: none; }
107
- .vzx-w { flex: 1; min-width: 0; display: flex; flex-direction: column; font-size: var(--fs-3); font-weight: 700; }
108
- .vzx-w span { font-size: var(--fs-2); font-weight: 500; color: var(--cz-ink3); }
109
- .vzx-k { font-size: var(--fs-2); color: var(--cz-ink3); font-variant-numeric: tabular-nums; }
107
+ .vzx-w { flex: 1; min-width: 0; display: flex; flex-direction: column; font-size: var(--fs-row); font-weight: var(--fw-strong); line-height: var(--lh-row); }
108
+ .vzx-w span { font-size: var(--fs-meta); font-weight: var(--fw-regular); color: var(--cz-ink3); line-height: var(--lh-meta); }
109
+ .vzx-k { font-size: var(--fs-meta); color: var(--cz-ink3); font-variant-numeric: tabular-nums; line-height: var(--lh-meta); }
110
110
  .vzx-swm hr { border: 0; border-top: 1px solid var(--cz-hair); margin: 6px 8px; }
111
111
  .vzx-add { display: flex; align-items: center; gap: 10px; padding: 6px 12px; color: var(--cz-blue); }
112
- .vzx-add input { flex: 1; min-width: 0; min-height: 32px; border: 0; background: transparent; font: inherit; font-size: var(--fs-3); color: var(--cz-ink); outline: none; }
113
- .vzx-add input::placeholder { color: var(--cz-blue); font-weight: 700; }
114
- .vzx-err { padding: 0 12px 6px; font-size: var(--fs-2); color: var(--cz-risk); }
112
+ .vzx-add input { flex: 1; min-width: 0; min-height: 32px; border: 0; background: transparent; font: inherit; font-size: var(--fs-body); color: var(--cz-ink); outline: none; line-height: var(--lh-body); }
113
+ .vzx-add input::placeholder { color: var(--cz-blue); font-weight: var(--fw-strong); }
114
+ .vzx-err { padding: 0 12px 6px; font-size: var(--fs-meta); color: var(--cz-risk); line-height: var(--lh-meta); }
115
115
 
116
116
  /* ── the audience window: the stage only, a quiet line under it ── */
117
117
  .vzx-audw { margin: 0; background: var(--cz-c-17191c); color: var(--cz-c-ffffff); font-family: var(--cz-sans); overflow: hidden; }
@@ -124,7 +124,7 @@
124
124
  .vzx-aud .vzx-page h1 { font-size: 34px; }
125
125
  .vzx-aud .vzx-page h2, .vzx-aud .vzx-page h3 { font-size: 24px; }
126
126
  .vzx-ft { position: fixed; left: 0; right: 0; bottom: 0; height: 32px; display: flex; align-items: center; justify-content: space-between; padding: 0 16px;
127
- font-size: var(--fs-2); color: rgba(255, 255, 255, .55); }
127
+ font-size: var(--fs-meta); color: rgba(255, 255, 255, .55); line-height: var(--lh-meta); }
128
128
 
129
129
  /* ── the preview in the Viewer (XvAMaterialPreview): the material for the PM only ── */
130
130
  .vzx-pv { display: flex; flex-direction: column; gap: 12px; }
@@ -132,19 +132,19 @@
132
132
  .vzx-pv button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
133
133
  .vzx-pv button:disabled { opacity: .4; cursor: default; }
134
134
  .vzx-pvh { display: flex; align-items: center; gap: 10px; }
135
- .vzx-pvl { flex: 1; margin: 0; font-size: var(--fs-2); color: var(--cz-ink3); }
135
+ .vzx-pvl { flex: 1; margin: 0; font-size: var(--fs-meta); color: var(--cz-ink3); line-height: var(--lh-meta); }
136
136
  .vzx-pvp { width: 36px; height: 36px; border-radius: 50%; display: inline-grid !important; place-items: center; color: var(--cz-blueink) !important; background: var(--cz-bluebg) !important; }
137
137
  .vzx-pvs { width: 100%; aspect-ratio: 16 / 9; display: grid; place-items: center; border-radius: 16px; background: var(--cz-well); overflow: hidden; }
138
138
  .vzx-pvs .vzx-box { cursor: default; border-radius: 0; }
139
139
  .vzx-pv .vzx-ths { justify-content: flex-start; }
140
140
  .vzx-pv .vzx-tb { width: 68px; height: 38px; }
141
- .vzx-pvn { margin: 0; text-align: center; font-size: var(--fs-2); color: var(--cz-ink3); }
141
+ .vzx-pvn { margin: 0; text-align: center; font-size: var(--fs-meta); color: var(--cz-ink3); line-height: var(--lh-meta); }
142
142
  .vzx-pvd { max-height: 60vh; padding: 20px 24px; }
143
143
  .vzx-pvd .vzx-page { font-size: 14.5px; }
144
144
  .vzx-pvi { border-radius: 16px; background: var(--cz-c-1b1d21); display: grid; place-items: center; overflow: hidden; max-height: 70vh; }
145
145
  .vzx-pvi img { max-width: 100%; max-height: 70vh; display: block; }
146
146
  .vzx-pvf { width: 100%; height: 70vh; border: 1px solid var(--cz-hair); border-radius: 16px; background: var(--cz-c-ffffff); }
147
- .vzx-pv > .vzx-card { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; padding: 24px; border-radius: 16px; background: var(--cz-well); font-size: var(--fs-3); line-height: 1.5; }
147
+ .vzx-pv > .vzx-card { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; padding: 24px; border-radius: 16px; background: var(--cz-well); font-size: var(--fs-body); line-height: 1.5; }
148
148
  .vzx-pv > .vzx-card p { margin: 0; }
149
149
 
150
150
  @media (max-width: 900px) {
@@ -6,40 +6,40 @@ body.ob-on #hmChat[hidden] { display: none; }
6
6
  .ob-chat .hm-ab > p { margin: 0; line-height: 1.5; }
7
7
  .ob-hello { margin: 24px auto 8px; display: flex; flex-direction: column; align-items: center; gap: 6px; }
8
8
  .ob-hello p { margin: 0; }
9
- .ob-hello b { color: var(--cz-ink); font-size: var(--fs-5); }
9
+ .ob-hello b { color: var(--cz-ink); font-size: var(--fs-display); line-height: var(--lh-display); }
10
10
  .ob-card { display: flex; flex-direction: column; gap: 2px; padding: 6px; max-width: 720px; }
11
11
  .ob-opt { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border-radius: 12px; cursor: pointer; min-height: 44px; box-sizing: border-box; }
12
12
  .ob-opt.on { background: var(--cz-bluebg); }
13
13
  .ob-opt.off { cursor: default; color: var(--cz-ink3); }
14
14
  .ob-opt input { margin: 3px 0 0; accent-color: var(--cz-solid); flex: none; }
15
- .ob-opt span { display: flex; flex-direction: column; gap: 2px; min-width: 0; font-size: var(--fs-3); }
16
- .ob-opt em { font-style: normal; font-size: var(--fs-2); color: var(--cz-ink2); }
17
- .ob-opt code, .ob-chat code { font-size: var(--fs-2); word-break: break-all; }
15
+ .ob-opt span { display: flex; flex-direction: column; gap: 2px; min-width: 0; font-size: var(--fs-body); line-height: var(--lh-body); }
16
+ .ob-opt em { font-style: normal; font-size: var(--fs-meta); color: var(--cz-ink2); line-height: var(--lh-meta); }
17
+ .ob-opt code, .ob-chat code { font-size: var(--fs-meta); word-break: break-all; line-height: var(--lh-meta); }
18
18
  .ob-row { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; padding: 6px 4px 2px; }
19
19
  .ob-row a.hm-chip { text-decoration: none; }
20
- .ob-note { margin: 0; font-size: var(--fs-2); color: var(--cz-ink3); padding: 0 4px; }
21
- .ob-sub { margin: 0; font-size: var(--fs-2); color: var(--cz-ink2); }
20
+ .ob-note { margin: 0; font-size: var(--fs-meta); color: var(--cz-ink3); padding: 0 4px; line-height: var(--lh-meta); }
21
+ .ob-sub { margin: 0; font-size: var(--fs-meta); color: var(--cz-ink2); line-height: var(--lh-meta); }
22
22
  .ob-live { text-align: center; }
23
23
  .ob-good, .ob-bad { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; border-radius: 14px; padding: 10px 14px; max-width: 720px; box-sizing: border-box; }
24
24
  .ob-good { background: var(--cz-okbg); color: var(--cz-ok); }
25
- .ob-good span { color: var(--cz-ink2); font-size: var(--fs-2); }
25
+ .ob-good span { color: var(--cz-ink2); font-size: var(--fs-meta); line-height: var(--lh-meta); }
26
26
  .ob-bad { background: var(--cz-redbg); color: var(--cz-red); flex-direction: column; align-items: flex-start; gap: 4px; }
27
- .ob-bad span { color: var(--cz-ink2); font-size: var(--fs-2); }
27
+ .ob-bad span { color: var(--cz-ink2); font-size: var(--fs-meta); line-height: var(--lh-meta); }
28
28
  .ob-srcs { display: flex; gap: 6px; flex-wrap: wrap; }
29
- .ob-src { font-size: var(--fs-2); font-weight: 700; border-radius: 999px; padding: 3px 10px; background: var(--cz-bluebg); color: var(--cz-blueink); }
29
+ .ob-src { font-size: var(--fs-label); font-weight: var(--fw-strong); border-radius: 999px; padding: 3px 10px; background: var(--cz-bluebg); color: var(--cz-blueink); line-height: var(--lh-label); }
30
30
  .ob-src.empty { background: var(--cz-well); color: var(--cz-ink2); }
31
31
  .ob-src.failed { background: var(--cz-redbg); color: var(--cz-red); }
32
32
  .ob-ctx { padding: 12px 16px 8px; gap: 0; }
33
- .ob-ctx > p { margin: 0 0 6px; font-size: var(--fs-3); }
33
+ .ob-ctx > p { margin: 0 0 6px; font-size: var(--fs-body); line-height: var(--lh-body); }
34
34
  .ob-fld { display: grid; grid-template-columns: 130px minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 7px 0; border-top: 1px solid var(--cz-hair); }
35
- .ob-fld b { font-size: var(--fs-2); color: var(--cz-ink2); }
36
- .ob-fld input { font: inherit; font-size: var(--fs-3); color: var(--cz-ink); border: 0; border-radius: 10px; background: var(--cz-well); padding: 8px 10px; width: 100%; box-sizing: border-box; min-height: 36px; }
37
- .ob-tag { font-size: var(--fs-1); font-weight: 700; border-radius: 999px; padding: 2px 9px; white-space: nowrap; background: var(--cz-bluebg); color: var(--cz-blueink); }
35
+ .ob-fld b { font-size: var(--fs-meta); color: var(--cz-ink2); line-height: var(--lh-meta); }
36
+ .ob-fld input { font: inherit; font-size: var(--fs-body); color: var(--cz-ink); border: 0; border-radius: 10px; background: var(--cz-well); padding: 8px 10px; width: 100%; box-sizing: border-box; min-height: 36px; line-height: var(--lh-body); }
37
+ .ob-tag { font-size: var(--fs-badge); font-weight: var(--fw-strong); border-radius: 999px; padding: 2px 9px; white-space: nowrap; background: var(--cz-bluebg); color: var(--cz-blueink); line-height: var(--lh-badge); }
38
38
  .ob-tag a { color: inherit; }
39
39
  .ob-tag.you { background: var(--cz-well); color: var(--cz-ink2); }
40
40
  .ob-tag.miss { background: var(--cz-riskbg, var(--cz-well)); color: var(--cz-ink2); }
41
41
  .ob-done { list-style: none; margin: 0; padding: 10px 16px; display: flex; flex-direction: column; gap: 6px; max-width: 720px; }
42
- .ob-done li { display: flex; gap: 10px; align-items: center; font-size: var(--fs-3); }
42
+ .ob-done li { display: flex; gap: 10px; align-items: center; font-size: var(--fs-body); line-height: var(--lh-body); }
43
43
  .ob-done li svg { color: var(--cz-ok); flex: none; }
44
44
  .ob-path { display: flex; gap: 8px; align-items: flex-end; padding: 6px 4px; flex-wrap: wrap; }
45
45
  .ob-path .ut-field { flex: 1 1 260px; }
@@ -56,5 +56,5 @@ body.ob-on #hmChat[hidden] { display: none; }
56
56
  /* Home's Claude repair card (setup-checklist.js): only when the saved login failed */
57
57
  .cs-checklist { margin: 0 0 12px; display: flex; flex-direction: column; gap: 6px; }
58
58
  .cs-checklist[hidden] { display: none; }
59
- .cs-checklist p { margin: 0; font-size: var(--fs-2); color: var(--cz-ink2); }
59
+ .cs-checklist p { margin: 0; font-size: var(--fs-meta); color: var(--cz-ink2); line-height: var(--lh-meta); }
60
60
  .cs-checklist .ut-btn { align-self: flex-start; text-decoration: none; }
@@ -15,7 +15,7 @@ html[data-theme="dark"] body.bd-page, html[data-theme="dark"] body.cz-home { --p
15
15
  /* the shell's icon tile takes the program's purple; the parts sit in the Viewer's body, its rows' bodies lose their own frame */
16
16
  #czViewer:has(> .cz-vw-body.pp-vw) .cz-vw-tile { background: var(--pp-progbg); color: var(--pp-prog); }
17
17
  .pp-sec { display: flex; flex-direction: column; }
18
- .pp-sec .lbl { font-size: var(--fs-2); font-weight: 800; color: var(--cz-ink3); margin: 0 0 6px; }
18
+ .pp-sec .lbl { font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); margin: 0 0 6px; line-height: var(--lh-label); }
19
19
  .pp-vw .czs-body { padding: 0 6px 8px; }
20
20
  /* Home on a phone: the way to the program's own chat ends the panel (.hi-talk is home-ini.css) */
21
21
  .pp-vw > .hi-talk { display: block; width: calc(100% - 32px); margin: 12px 16px 24px; }
@@ -23,25 +23,25 @@ html[data-theme="dark"] body.bd-page, html[data-theme="dark"] body.cz-home { --p
23
23
 
24
24
  /* the period picker */
25
25
  .pp-menu { position: absolute; z-index: 3; top: 52px; right: 16px; min-width: 240px; max-height: 60vh; overflow: auto; background: var(--cz-card); border-radius: 18px; box-shadow: 0 24px 60px -24px rgba(42,46,53,.45), 0 0 0 1px var(--cz-hair); padding: 6px; display: flex; flex-direction: column; }
26
- .pp-menu button { all: unset; box-sizing: border-box; cursor: pointer; min-height: 36px; padding: 8px 12px; border-radius: 12px; font-size: var(--fs-3); color: var(--cz-ink); display: flex; justify-content: space-between; gap: 12px; }
27
- .pp-menu button span { color: var(--cz-ink3); font-weight: 600; }
28
- .pp-menu button[aria-checked="true"] { background: var(--cz-well); font-weight: 700; }
26
+ .pp-menu button { all: unset; box-sizing: border-box; cursor: pointer; min-height: 36px; padding: 8px 12px; border-radius: 12px; font-size: var(--fs-body); color: var(--cz-ink); display: flex; justify-content: space-between; gap: 12px; line-height: var(--lh-body); }
27
+ .pp-menu button span { color: var(--cz-ink3); font-weight: var(--fw-strong); }
28
+ .pp-menu button[aria-checked="true"] { background: var(--cz-well); font-weight: var(--fw-strong); }
29
29
  .pp-menu button:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: -2px; }
30
30
  @media (hover: hover) { .pp-menu button:hover { background: var(--cz-well); } }
31
31
  .pp-pmenu { top: 34px; left: 0; right: auto; min-width: 160px; }
32
32
 
33
33
  /* the goals: the KRs of one year half; earlier halves fold into one ghost chip */
34
- .pp-goal { position: relative; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: var(--fs-3); }
35
- .pp-per { all: unset; box-sizing: border-box; display: inline-flex; align-items: center; gap: 3px; height: 28px; padding: 0 6px 0 2px; font-size: var(--fs-2); font-weight: 800; color: var(--cz-ink2); }
34
+ .pp-goal { position: relative; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: var(--fs-body); line-height: var(--lh-body); }
35
+ .pp-per { all: unset; box-sizing: border-box; display: inline-flex; align-items: center; gap: 3px; height: 28px; padding: 0 6px 0 2px; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink2); line-height: var(--lh-label); }
36
36
  button.pp-per { cursor: pointer; }
37
37
  .pp-per svg { width: 12px; height: 12px; }
38
- .pp-kr { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 10px 0 8px; border-radius: 999px; background: var(--cz-well); font-size: var(--fs-2); color: var(--cz-ink2); white-space: nowrap; }
39
- .pp-kr b { font-weight: 800; color: var(--cz-ink); }
40
- button.pp-kr { all: unset; box-sizing: border-box; cursor: pointer; display: inline-flex; align-items: center; height: 28px; padding: 0 10px; border-radius: 999px; font-size: var(--fs-2); }
41
- .pp-kr.ghost { background: transparent; border: 1px dashed var(--cz-hair); border-color: rgba(42,46,53,.18); color: var(--cz-ink3); font-weight: 700; }
38
+ .pp-kr { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 10px 0 8px; border-radius: 999px; background: var(--cz-well); font-size: var(--fs-meta); color: var(--cz-ink2); white-space: nowrap; line-height: var(--lh-meta); }
39
+ .pp-kr b { font-weight: var(--fw-strong); color: var(--cz-ink); }
40
+ button.pp-kr { all: unset; box-sizing: border-box; cursor: pointer; display: inline-flex; align-items: center; height: 28px; padding: 0 10px; border-radius: 999px; font-size: var(--fs-meta); line-height: var(--lh-meta); }
41
+ .pp-kr.ghost { background: transparent; border: 1px dashed var(--cz-hair); border-color: rgba(42,46,53,.18); color: var(--cz-ink3); font-weight: var(--fw-strong); }
42
42
  .pp-gd { width: 7px; height: 7px; border-radius: 50%; background: var(--cz-dot-ok); flex: none; } /* PgProgram .gdot: met or on course */
43
43
  .pp-gd.off { background: var(--cz-dot-late); } /* behind */
44
- .pp-t2 { width: 18px; height: 18px; border-radius: 6px; font-size: var(--fs-1); font-weight: 800; display: inline-flex; align-items: center; justify-content: center; flex: none; }
44
+ .pp-t2 { width: 18px; height: 18px; border-radius: 6px; font-size: var(--fs-badge); font-weight: var(--fw-strong); display: inline-flex; align-items: center; justify-content: center; flex: none; line-height: var(--lh-badge); }
45
45
  .pp-t2.t0 { background: var(--pp-t0); color: var(--pp-t0i); }
46
46
  .pp-t2.t1 { background: var(--pp-t1); color: var(--pp-t1i); }
47
47
  .pp-t2.t2 { background: var(--cz-well2); color: var(--cz-ink2); }
@@ -51,9 +51,9 @@ button.pp-kr { all: unset; box-sizing: border-box; cursor: pointer; display: inl
51
51
  .pp-mt::before { content: ""; position: absolute; left: 28px; right: 28px; top: 10px; height: 2px; background: var(--bd-rail); }
52
52
  .pp-mt::after { content: ""; position: absolute; left: 28px; top: 10px; height: 2px; background: var(--pp-prog); width: calc(28px + (var(--pp-f) * (100% - 112px)) / var(--pp-n)); }
53
53
  .pp-mt[data-nofill]::after { display: none; }
54
- .pp-m { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; font-size: var(--fs-2); color: var(--cz-ink3); min-width: 0; padding: 0 4px; }
55
- .pp-m b { color: var(--cz-ink); font-weight: 800; font-size: var(--fs-2); }
56
- .pp-m.late .pp-md { color: var(--cz-risk); font-weight: 700; }
54
+ .pp-m { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; font-size: var(--fs-meta); color: var(--cz-ink3); min-width: 0; padding: 0 4px; line-height: var(--lh-meta); }
55
+ .pp-m b { color: var(--cz-ink); font-weight: var(--fw-strong); font-size: var(--fs-label); line-height: var(--lh-label); }
56
+ .pp-m.late .pp-md { color: var(--cz-risk); font-weight: var(--fw-strong); }
57
57
  .pp-md { display: inline-flex; align-items: center; gap: 6px; }
58
58
  .pp-dm { all: unset; box-sizing: border-box; width: 12px; height: 12px; transform: rotate(45deg); border-radius: 3px; background: var(--cz-card); border: 2px solid var(--pp-diam); display: inline-block; margin-top: 4px; flex: none; }
59
59
  .pp-dm.d { background: var(--pp-prog); border-color: var(--pp-prog); }
@@ -63,7 +63,7 @@ button.pp-dm:focus-visible { outline: 2px solid var(--cz-blue); outline-offset:
63
63
  .pp-rd { display: inline-flex; gap: 3px; }
64
64
  .pp-rd i { display: block; width: 5px; height: 5px; border-radius: 1px; transform: rotate(45deg); background: var(--bd-dot); }
65
65
  .pp-rd i.on { background: var(--pp-prog); }
66
- .pp-cap { all: unset; cursor: pointer; position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; gap: 4px; font-size: var(--fs-1); font-weight: 700; color: var(--cz-ink3); }
66
+ .pp-cap { all: unset; cursor: pointer; position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; gap: 4px; font-size: var(--fs-badge); font-weight: var(--fw-strong); color: var(--cz-ink3); line-height: var(--lh-badge); }
67
67
  .pp-cap .st3 { display: inline-flex; gap: 2px; margin-top: 5px; background: var(--cz-card); padding: 0 3px; }
68
68
  .pp-cap .st3 i { display: block; width: 7px; height: 7px; transform: rotate(45deg); border-radius: 2px; background: var(--pp-diam); }
69
69
  .pp-cap.dn .st3 i { background: var(--pp-prog); }
@@ -78,8 +78,8 @@ button.pp-dm:focus-visible { outline: 2px solid var(--cz-blue); outline-offset:
78
78
  .pp-nr:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: -2px; }
79
79
  .pp-nr .mk2 { width: 20px; display: inline-flex; justify-content: center; flex: none; }
80
80
  .pp-nr .t { flex: 1; min-width: 0; display: flex; flex-direction: column; }
81
- .pp-nr .t b { font-size: var(--fs-3); font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
82
- .pp-nr .t span { font-size: var(--fs-2); color: var(--cz-ink3); }
81
+ .pp-nr .t b { font-size: var(--fs-row); font-weight: var(--fw-strong); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: var(--lh-row); }
82
+ .pp-nr .t span { font-size: var(--fs-meta); color: var(--cz-ink3); line-height: var(--lh-meta); }
83
83
  .pp-nr .go { color: var(--cz-blueink); display: inline-flex; }
84
84
  .pp-nr .go svg { width: 14px; height: 14px; }
85
85
  .pp-ck { all: unset; box-sizing: border-box; width: 16px; height: 16px; border-radius: 5px; border: 1.5px solid var(--cz-c-8c929b); background: var(--cz-card); flex: none; display: inline-block; }
@@ -96,55 +96,55 @@ button.pp-ck:focus-visible { outline: 2px solid var(--cz-blue); outline-offset:
96
96
 
97
97
  /* the tree (PgProgram), the milestones (PgMilestones) */
98
98
  .pp-tree, .pp-ml { border: 1px solid var(--cz-hair); border-radius: 16px; overflow: hidden; display: flex; flex-direction: column; }
99
- .pp-nd { display: flex; align-items: center; gap: 8px; padding: 7px 12px; border-top: 1px solid var(--cz-hair); font-size: var(--fs-3); min-height: 38px; box-sizing: border-box; }
99
+ .pp-nd { display: flex; align-items: center; gap: 8px; padding: 7px 12px; border-top: 1px solid var(--cz-hair); font-size: var(--fs-body); min-height: 38px; box-sizing: border-box; line-height: var(--lh-body); }
100
100
  .pp-nd:first-child { border-top: 0; }
101
- .pp-nd.ini { background: var(--bd-row); font-weight: 800; }
101
+ .pp-nd.ini { background: var(--bd-row); font-weight: var(--fw-strong); }
102
102
  .pp-nd.ini.pg .x { color: var(--pp-prog); }
103
103
  .pp-nd .tw { all: unset; cursor: pointer; width: 16px; color: var(--cz-ink3); flex: none; display: inline-flex; }
104
104
  .pp-nd .tw svg { width: 14px; height: 14px; }
105
105
  .pp-nd .tw:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: 2px; border-radius: 4px; }
106
106
  .pp-nd .x { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
107
- .pp-nd .r { font-size: var(--fs-1); color: var(--cz-ink3); white-space: nowrap; font-weight: 600; }
107
+ .pp-nd .r { font-size: var(--fs-badge); color: var(--cz-ink3); white-space: nowrap; font-weight: var(--fw-strong); line-height: var(--lh-badge); }
108
108
  .pp-nd .r.late { color: var(--cz-risk); }
109
- .pp-nd .k { font-size: var(--fs-1); font-weight: 700; color: var(--cz-ink3); flex: none; }
109
+ .pp-nd .k { font-size: var(--fs-badge); font-weight: var(--fw-strong); color: var(--cz-ink3); flex: none; line-height: var(--lh-badge); }
110
110
  .pp-nd.l2 { padding-left: 36px; }
111
- .pp-nd.q .x { color: var(--cz-ink3); font-weight: 600; }
111
+ .pp-nd.q .x { color: var(--cz-ink3); font-weight: var(--fw-strong); }
112
112
  .pp-nd.dn .x { color: var(--cz-ink3); text-decoration: line-through; }
113
113
  /* an initiative's or an epic's task: a row that opens in Home; "N more tasks" opens the Tasks tab */
114
114
  a.pp-nd.pp-tk { color: inherit; text-decoration: none; }
115
115
  a.pp-nd.pp-tk:hover .x, .pp-nd.pp-more:hover { color: var(--cz-blueink); }
116
116
  a.pp-nd.pp-tk:focus-visible, .pp-nd.pp-more:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: -2px; border-radius: 6px; }
117
- .pp-nd.pp-more { all: unset; box-sizing: border-box; cursor: pointer; display: flex; align-items: center; width: 100%; min-height: 34px; padding: 6px 12px 6px 36px; border-top: 1px solid var(--cz-hair); font-size: var(--fs-2); font-weight: 700; color: var(--cz-ink3); }
118
- .pp-nd.prd2 { min-height: 32px; padding: 8px 12px 4px; font-size: var(--fs-2); font-weight: 800; color: var(--cz-ink3); background: var(--cz-card); }
119
- .pp-nd.prd2 .pp-t2 { width: 20px; height: 20px; border-radius: 7px; font-size: var(--fs-1); }
117
+ .pp-nd.pp-more { all: unset; box-sizing: border-box; cursor: pointer; display: flex; align-items: center; width: 100%; min-height: 34px; padding: 6px 12px 6px 36px; border-top: 1px solid var(--cz-hair); font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); line-height: var(--lh-label); }
118
+ .pp-nd.prd2 { min-height: 32px; padding: 8px 12px 4px; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); background: var(--cz-card); line-height: var(--lh-label); }
119
+ .pp-nd.prd2 .pp-t2 { width: 20px; height: 20px; border-radius: 7px; font-size: var(--fs-meta); line-height: var(--lh-meta); }
120
120
  .pp-open { all: unset; cursor: pointer; color: inherit; text-decoration: none; }
121
121
  .pp-open:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: 2px; border-radius: 4px; }
122
122
  @media (hover: hover) { .pp-open:hover { text-decoration: underline; text-underline-offset: 3px; } }
123
- .pp-stg { font-size: var(--fs-1); font-weight: 700; color: var(--cz-ink2); background: var(--cz-card); border: 1px solid var(--cz-hair); border-radius: 999px; padding: 1px 8px; white-space: nowrap; }
124
- .pp-av { width: 24px; height: 24px; border-radius: 50%; background: var(--cz-well); color: var(--cz-ink2); font-size: var(--fs-1); font-weight: 800; display: inline-flex; align-items: center; justify-content: center; flex: none; }
123
+ .pp-stg { font-size: var(--fs-badge); font-weight: var(--fw-strong); color: var(--cz-ink2); background: var(--cz-card); border: 1px solid var(--cz-hair); border-radius: 999px; padding: 1px 8px; white-space: nowrap; line-height: var(--lh-badge); }
124
+ .pp-av { width: 24px; height: 24px; border-radius: 50%; background: var(--cz-well); color: var(--cz-ink2); font-size: var(--fs-badge); font-weight: var(--fw-strong); display: inline-flex; align-items: center; justify-content: center; flex: none; line-height: var(--lh-badge); }
125
125
  .pp-av.y { background: var(--cz-blue); color: var(--cz-onsolid); }
126
126
  .pp-ibs { width: 28px; height: 28px; }
127
127
  .pp-ibs svg { width: 15px; height: 15px; }
128
- .pp-add input { flex: 1; min-width: 0; height: 28px; border: 0; background: transparent; font: var(--fs-3) var(--cz-sans); color: var(--cz-ink); outline: 0; }
128
+ .pp-add input { flex: 1; min-width: 0; height: 28px; border: 0; background: transparent; font: var(--fs-body)/var(--lh-body) var(--cz-sans); color: var(--cz-ink); outline: 0; }
129
129
  .pp-add .bd-ib.solid { width: 28px; height: 28px; }
130
- .pp-doc { all: unset; box-sizing: border-box; cursor: pointer; display: flex; align-items: center; gap: 8px; padding: 7px 12px; border-top: 1px solid var(--cz-hair); font-size: var(--fs-3); min-height: 38px; }
130
+ .pp-doc { all: unset; box-sizing: border-box; cursor: pointer; display: flex; align-items: center; gap: 8px; padding: 7px 12px; border-top: 1px solid var(--cz-hair); font-size: var(--fs-body); min-height: 38px; line-height: var(--lh-body); }
131
131
  .pp-doc svg { width: 15px; height: 15px; color: var(--cz-ink2); flex: none; }
132
132
  .pp-doc:first-child { border-top: 0; }
133
133
  .pp-doc:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: -2px; }
134
134
  @media (hover: hover) { .pp-doc:hover { background: var(--bd-row); } }
135
- .pp-mg { all: unset; box-sizing: border-box; cursor: pointer; display: flex; align-items: center; gap: 6px; padding: 9px 14px 5px; font-size: var(--fs-2); font-weight: 800; color: var(--cz-ink3); background: var(--bd-row); border-top: 1px solid var(--cz-hair); }
135
+ .pp-mg { all: unset; box-sizing: border-box; cursor: pointer; display: flex; align-items: center; gap: 6px; padding: 9px 14px 5px; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); background: var(--bd-row); border-top: 1px solid var(--cz-hair); line-height: var(--lh-label); }
136
136
  .pp-mg:first-child { border-top: 0; }
137
137
  .pp-mg svg { width: 12px; height: 12px; }
138
138
  .pp-mg:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: -2px; }
139
- .pp-mr { display: grid; grid-template-columns: 20px 1fr auto; align-items: center; gap: 4px 10px; padding: 8px 14px; border-top: 1px solid var(--cz-hair); font-size: var(--fs-3); }
139
+ .pp-mr { display: grid; grid-template-columns: 20px 1fr auto; align-items: center; gap: 4px 10px; padding: 8px 14px; border-top: 1px solid var(--cz-hair); font-size: var(--fs-body); line-height: var(--lh-body); }
140
140
  .pp-mr .pp-dm { margin: 0; width: 10px; height: 10px; }
141
- .pp-mr b { font-weight: 800; }
142
- .pp-mr .w { grid-column: 2 / 4; font-size: var(--fs-2); color: var(--cz-ink3); margin-top: -2px; }
143
- .pp-mr .d { font-size: var(--fs-2); font-weight: 700; color: var(--cz-ink2); display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; }
144
- .pp-mr.done b { color: var(--cz-ink3); font-weight: 700; }
141
+ .pp-mr b { font-weight: var(--fw-strong); }
142
+ .pp-mr .w { grid-column: 2 / 4; font-size: var(--fs-meta); color: var(--cz-ink3); margin-top: -2px; line-height: var(--lh-meta); }
143
+ .pp-mr .d { font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink2); display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; line-height: var(--lh-label); }
144
+ .pp-mr.done b { color: var(--cz-ink3); font-weight: var(--fw-strong); }
145
145
  .pp-mr.late .d { color: var(--cz-risk); }
146
- .pp-cdl { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 8px 16px; margin: 0; font-size: var(--fs-3); }
147
- .pp-cdl dt { color: var(--cz-ink3); font-weight: 700; }
146
+ .pp-cdl { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 8px 16px; margin: 0; font-size: var(--fs-body); line-height: var(--lh-body); }
147
+ .pp-cdl dt { color: var(--cz-ink3); font-weight: var(--fw-strong); }
148
148
  .pp-cdl dd { margin: 0; }
149
149
 
150
150
  /* a phone: the shell is full screen; the track keeps its clusters */
@@ -152,12 +152,12 @@ a.pp-nd.pp-tk:focus-visible, .pp-nd.pp-more:focus-visible { outline: 2px solid v
152
152
  .pp-mt { grid-template-columns: 44px repeat(var(--pp-n), minmax(0, 1fr)) 44px; }
153
153
  .pp-mt::before { left: 22px; right: 22px; }
154
154
  .pp-mt::after { left: 22px; width: calc(22px + (var(--pp-f) * (100% - 88px)) / var(--pp-n)); }
155
- .pp-m b { font-size: var(--fs-2); }
155
+ .pp-m b { font-size: var(--fs-meta); line-height: var(--lh-meta); }
156
156
  .pp-nr, .pp-nd, .pp-doc { min-height: 44px; }
157
157
  }
158
158
 
159
159
  /* no milestone yet: one dashed way into the charter, at Milestones (canvas MsEmpty) */
160
- .pp-first { all: unset; box-sizing: border-box; cursor: pointer; display: flex; align-items: center; gap: 10px; width: 100%; min-height: 44px; padding: 0 12px; border-radius: 14px; border: 1px dashed color-mix(in srgb, var(--pp-prog) 45%, transparent); color: var(--pp-prog); font-size: var(--fs-3); font-weight: 700; }
160
+ .pp-first { all: unset; box-sizing: border-box; cursor: pointer; display: flex; align-items: center; gap: 10px; width: 100%; min-height: 44px; padding: 0 12px; border-radius: 14px; border: 1px dashed color-mix(in srgb, var(--pp-prog) 45%, transparent); color: var(--pp-prog); font-size: var(--fs-row); font-weight: var(--fw-strong); line-height: var(--lh-row); }
161
161
  .pp-first .gd { width: 11px; height: 11px; transform: rotate(45deg); border-radius: 3px; border: 1.5px dashed currentColor; flex: none; }
162
162
  .pp-first:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: 2px; }
163
163
  @media (hover: hover) { .pp-first:hover { background: var(--pp-progbg); } }
@@ -4,9 +4,9 @@
4
4
  .ppk-chip { display: inline-flex; align-items: center; gap: 4px; height: 34px; padding: 0 8px 0 5px; border-radius: 999px; border: 0; background: var(--cz-card); color: var(--cz-ink2); box-shadow: 0 0 0 1px var(--cz-hair); font-family: var(--cz-sans); cursor: pointer; flex: none; }
5
5
  .ppk-chip.open { background: var(--cz-bluebg); color: var(--cz-blueink); box-shadow: 0 0 0 2px var(--cz-c-b6c6dc); }
6
6
  .ppk-chip > svg { flex: none; }
7
- .ppk-all { font-size: var(--fs-3); font-weight: 800; padding-left: 7px; }
7
+ .ppk-all { font-size: var(--fs-row); font-weight: var(--fw-strong); padding-left: 7px; line-height: var(--lh-row); }
8
8
  .ppk-stk { display: inline-flex; }
9
- .ppk-t { width: 24px; height: 24px; border-radius: 8px; font-size: var(--fs-1); font-weight: 800; font-style: normal; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 0 0 2px var(--cz-card); }
9
+ .ppk-t { width: 24px; height: 24px; border-radius: 8px; font-size: var(--fs-badge); font-weight: var(--fw-strong); font-style: normal; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 0 0 2px var(--cz-card); line-height: var(--lh-badge); }
10
10
  .ppk-t + .ppk-t { margin-left: -6px; }
11
11
  .ppk-t, .ppk-tl { background: var(--cz-bluebg); color: var(--cz-blueink); }
12
12
  .ppk-t.t1, .ppk-tl.t1 { background: color-mix(in srgb, var(--cz-c-7a5a2e) 13%, var(--cz-card)); color: var(--cz-c-7a5a2e); }
@@ -17,9 +17,9 @@
17
17
  .ppk-mi { display: flex; align-items: center; gap: 12px; min-height: 54px; width: 100%; padding: 6px 10px; border: 0; border-radius: 12px; background: none; color: var(--cz-ink); font: inherit; text-align: left; cursor: pointer; box-sizing: border-box; }
18
18
  .ppk-mi:hover, .ppk-mi:focus-visible { background: var(--cz-well); }
19
19
  .ppk-nm { flex: 1; min-width: 0; display: flex; flex-direction: column; }
20
- .ppk-nm b { font-size: var(--fs-4); font-weight: 800; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
21
- .ppk-nm em { font-style: normal; font-size: var(--fs-2); font-weight: 600; color: var(--cz-ink3); }
22
- .ppk-tl { width: 36px; height: 36px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; font-size: var(--fs-2); font-weight: 800; flex: none; }
20
+ .ppk-nm b { font-size: var(--fs-row); font-weight: var(--fw-strong); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: var(--lh-row); }
21
+ .ppk-nm em { font-style: normal; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); line-height: var(--lh-label); }
22
+ .ppk-tl { width: 36px; height: 36px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; font-size: var(--fs-label); font-weight: var(--fw-strong); flex: none; line-height: var(--lh-label); }
23
23
  .ppk-pl { width: 36px; height: 36px; border-radius: 12px; display: inline-flex; align-items: center; justify-content: center; color: var(--cz-ink2); background: var(--cz-well); flex: none; }
24
24
  .ppk-tk { width: 22px; height: 22px; border-radius: 7px; border: 2px solid var(--cz-c-a9aeb6); box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; flex: none; color: var(--cz-onsolid); }
25
25
  .ppk-tk.on { background: var(--cz-blueink); border-color: var(--cz-blueink); color: var(--cz-card); }
@@ -5,33 +5,33 @@
5
5
  .rn { flex: 1; height: 100%; display: flex; flex-direction: column; min-height: 0; color: var(--cz-ink); }
6
6
  .rn-side { background: var(--cz-card); border-radius: inherit; overflow: hidden; }
7
7
  .rn-nw { flex: 1; min-height: 0; overflow-y: auto; padding: 18px 16px 8px; display: flex; flex-direction: column; gap: 16px; }
8
- .rn-sec h5 { margin: 0 0 6px; font-size: var(--fs-2); font-weight: 800; color: var(--cz-ink3); display: flex; align-items: center; gap: 8px; }
9
- .rn-sec h5 .r { margin-left: auto; font-weight: 700; color: var(--cz-ink3); font-variant-numeric: tabular-nums; }
8
+ .rn-sec h5 { margin: 0 0 6px; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); display: flex; align-items: center; gap: 8px; line-height: var(--lh-label); }
9
+ .rn-sec h5 .r { margin-left: auto; font-weight: var(--fw-strong); color: var(--cz-ink3); font-variant-numeric: tabular-nums; }
10
10
 
11
11
  /* To cover */
12
12
  .rn-ag { display: flex; flex-direction: column; }
13
- .rn-ai { display: flex; align-items: center; gap: 10px; min-height: 38px; font-size: var(--fs-3); color: var(--cz-ink); padding: 0 4px; }
13
+ .rn-ai { display: flex; align-items: center; gap: 10px; min-height: 38px; font-size: var(--fs-body); color: var(--cz-ink); padding: 0 4px; line-height: var(--lh-body); }
14
14
  .rn-ai .tx { flex: 1; min-width: 0; }
15
15
  .rn-ai .m { width: 18px; height: 18px; flex: none; display: inline-flex; align-items: center; justify-content: center; }
16
16
  .rn-ai.dn { color: var(--cz-ink3); }
17
17
  .rn-ai.dn .m { color: var(--cz-ok); }
18
- .rn-ai.now { background: var(--cz-bluebg); border-radius: 12px; font-weight: 700; color: var(--cz-blueink); }
18
+ .rn-ai.now { background: var(--cz-bluebg); border-radius: 12px; font-weight: var(--fw-strong); color: var(--cz-blueink); }
19
19
  .rn-ai .m i { width: 9px; height: 9px; border-radius: 50%; background: var(--cz-blue); display: block; }
20
20
  .rn-ai .m b { width: 10px; height: 10px; border-radius: 50%; border: 1.5px solid var(--cz-ink3); opacity: .55; display: block; box-sizing: border-box; }
21
- .rn-ai .t4 { margin-left: auto; font-size: var(--fs-2); font-weight: 700; color: var(--cz-ink3); font-variant-numeric: tabular-nums; }
21
+ .rn-ai .t4 { margin-left: auto; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); font-variant-numeric: tabular-nums; line-height: var(--lh-label); }
22
22
 
23
23
  /* Raise now */
24
24
  .rn-rz { display: flex; flex-direction: column; gap: 8px; }
25
25
  .rn-rq { display: flex; align-items: flex-start; gap: 6px; padding: 10px 6px 10px 12px; border-radius: 14px; background: var(--cz-riskbg); }
26
- .rn-rq .w { flex: 1; min-width: 0; font-size: var(--fs-3); line-height: 1.4; color: var(--cz-ink); padding-top: 2px; }
27
- .rn-rq .w small { display: block; font-size: var(--fs-2); font-weight: 700; color: var(--cz-risk); margin-bottom: 2px; }
26
+ .rn-rq .w { flex: 1; min-width: 0; font-size: var(--fs-body); line-height: 1.4; color: var(--cz-ink); padding-top: 2px; }
27
+ .rn-rq .w small { display: block; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-risk); margin-bottom: 2px; line-height: var(--lh-label); }
28
28
  .rn-ib { width: 36px; height: 36px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; flex: none; padding: 0; border: 0; background: none; color: var(--cz-ink2); cursor: pointer; font: inherit; }
29
29
  .rn-ib:hover { background: var(--cz-well); }
30
30
  .rn-ib:disabled { opacity: .5; cursor: default; }
31
31
 
32
32
  /* Caught so far (batch 23 item 1): the counts on the header, the gist, the topic strip (done dark blue, now blue, the rest hairline) */
33
- .rn-cgt h5 .r { font-weight: 700; }
34
- .rn-gist { margin: 0 4px 10px; font-size: var(--fs-3); line-height: 1.5; color: var(--cz-ink2); }
33
+ .rn-cgt h5 .r { font-weight: var(--fw-strong); }
34
+ .rn-gist { margin: 0 4px 10px; font-size: var(--fs-body); line-height: 1.5; color: var(--cz-ink2); }
35
35
  .rn-str { display: block; width: 100%; height: 8px; }
36
36
  .rn-str rect { fill: var(--cz-hair); }
37
37
  .rn-str rect[data-k="done"] { fill: var(--cz-blueink); }
@@ -39,12 +39,12 @@
39
39
 
40
40
  /* a question and Claude's answer */
41
41
  .rn-chx { display: flex; flex-direction: column; gap: 8px; }
42
- .rn-chx .q { align-self: flex-end; max-width: 80%; background: var(--cz-solid); color: var(--cz-onsolid); border-radius: 16px 16px 4px 16px; padding: 8px 12px; font-size: var(--fs-3); }
43
- .rn-chx .ca { align-self: flex-start; max-width: 86%; background: var(--cz-card); border-radius: 16px 16px 16px 4px; padding: 10px 6px 10px 12px; font-size: var(--fs-3); line-height: 1.45; box-shadow: 0 0 0 1px var(--cz-hair); display: flex; gap: 8px; align-items: flex-start; }
42
+ .rn-chx .q { align-self: flex-end; max-width: 80%; background: var(--cz-solid); color: var(--cz-onsolid); border-radius: 16px 16px 4px 16px; padding: 8px 12px; font-size: var(--fs-body); line-height: var(--lh-body); }
43
+ .rn-chx .ca { align-self: flex-start; max-width: 86%; background: var(--cz-card); border-radius: 16px 16px 16px 4px; padding: 10px 6px 10px 12px; font-size: var(--fs-body); line-height: 1.45; box-shadow: 0 0 0 1px var(--cz-hair); display: flex; gap: 8px; align-items: flex-start; }
44
44
  .rn-chx .ca .w { flex: 1; min-width: 0; padding-top: 1px; }
45
45
  .rn-chx .ca.bad .w { color: var(--cz-late); }
46
46
  .rn-chx .ca .sp { color: var(--cz-blueink); background: var(--cz-bluebg); width: 24px; height: 24px; border-radius: 999px; flex: none; display: inline-flex; align-items: center; justify-content: center; }
47
- .rn-chx .ca .src { display: block; font-size: var(--fs-2); font-weight: 700; color: var(--cz-ink3); margin-top: 2px; }
47
+ .rn-chx .ca .src { display: block; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); margin-top: 2px; line-height: var(--lh-label); }
48
48
  .rn-chx .ca .rn-ib { width: 32px; height: 32px; }
49
49
  .rn-dots { display: inline-flex; gap: 4px; padding: 6px 0; }
50
50
  .rn-dots i { width: 6px; height: 6px; border-radius: 50%; background: var(--cz-ink3); opacity: .4; animation: rn-dot 1.2s infinite ease-in-out; }
@@ -53,10 +53,10 @@
53
53
  @media (prefers-reduced-motion: reduce) { .rn-dots i { animation: none; } }
54
54
 
55
55
  /* the note box */
56
- .rn-err { margin: 0 16px 6px; font-size: var(--fs-3); color: var(--cz-late); }
56
+ .rn-err { margin: 0 16px 6px; font-size: var(--fs-body); color: var(--cz-late); line-height: var(--lh-body); }
57
57
  .rn-err[hidden] { display: none; }
58
58
  .rn-mine { margin: 0 12px 12px; border-radius: 18px; background: var(--cz-well); padding: 8px 8px 8px 14px; display: flex; align-items: flex-end; gap: 8px; }
59
- .rn-mine textarea { flex: 1; min-width: 0; min-height: 36px; max-height: 120px; resize: none; border: 0; outline: 0; background: none; font: inherit; font-size: var(--fs-3); line-height: 1.45; color: var(--cz-ink); padding: 8px 0; }
59
+ .rn-mine textarea { flex: 1; min-width: 0; min-height: 36px; max-height: 120px; resize: none; border: 0; outline: 0; background: none; font: inherit; font-size: var(--fs-body); line-height: 1.45; color: var(--cz-ink); padding: 8px 0; }
60
60
  .rn-mine textarea::placeholder { color: var(--cz-ink3); }
61
61
  .rn-send { width: 36px; height: 36px; border-radius: 50%; background: var(--cz-solid); color: var(--cz-onsolid); display: inline-flex; align-items: center; justify-content: center; flex: none; border: 0; padding: 0; cursor: pointer; }
62
62
  .rn-send:disabled { opacity: .5; }
@@ -64,27 +64,27 @@
64
64
  /* In the room (microphone only): the topic now big, chips for done and Next, two prompts side by side */
65
65
  .rn-room { flex: 1; min-width: 0; background: none; }
66
66
  .rn-room .rn-nw { width: 100%; max-width: 1000px; margin: 0 auto; box-sizing: border-box; padding: 24px 32px 16px; gap: 24px; justify-content: center; }
67
- .rn-now small { display: block; font-size: var(--fs-2); font-weight: 800; color: var(--cz-blueink); margin-bottom: 6px; }
68
- .rn-now h1 { margin: 0; font-size: var(--fs-6); line-height: 1.2; font-weight: 800; letter-spacing: -.01em; }
69
- .rn-now p { margin: 8px 0 0; font-size: var(--fs-3); font-weight: 700; color: var(--cz-ink3); }
67
+ .rn-now small { display: block; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-blueink); margin-bottom: 6px; line-height: var(--lh-label); }
68
+ .rn-now h1 { margin: 0; font-size: var(--fs-page); line-height: 1.2; font-weight: var(--fw-strong); letter-spacing: -.01em; }
69
+ .rn-now p { margin: 8px 0 0; font-size: var(--fs-row); font-weight: var(--fw-strong); color: var(--cz-ink3); line-height: var(--lh-row); }
70
70
  .rn-stp { display: flex; gap: 8px; flex-wrap: wrap; }
71
- .rn-stp span { display: inline-flex; align-items: center; gap: 8px; height: 36px; padding: 0 14px; border-radius: 999px; background: var(--cz-card); font-size: var(--fs-3); font-weight: 700; color: var(--cz-ink2); box-shadow: 0 0 0 1px var(--cz-hair); }
71
+ .rn-stp span { display: inline-flex; align-items: center; gap: 8px; height: 36px; padding: 0 14px; border-radius: 999px; background: var(--cz-card); font-size: var(--fs-row); font-weight: var(--fw-strong); color: var(--cz-ink2); box-shadow: 0 0 0 1px var(--cz-hair); line-height: var(--lh-row); }
72
72
  .rn-stp .dn { color: var(--cz-ink3); }
73
73
  .rn-stp .dn svg { color: var(--cz-ok); }
74
74
  .rn-stp b { width: 9px; height: 9px; border-radius: 50%; border: 1.5px solid var(--cz-ink3); opacity: .55; display: block; box-sizing: border-box; }
75
75
  .rn-room .rn-rz { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
76
- .rn-room .rn-rq .w { font-size: var(--fs-3); }
76
+ .rn-room .rn-rq .w { font-size: var(--fs-body); line-height: var(--lh-body); }
77
77
  .rn-room .rn-mine { width: calc(100% - 64px); max-width: 936px; margin: 0 auto 16px; box-sizing: border-box; background: var(--cz-card); box-shadow: 0 0 0 1px var(--cz-hair); }
78
78
 
79
79
  /* the live transcript: a 420px rounded card beside Now, closed by default */
80
80
  .rn-trp { width: 420px; flex: none; background: var(--cz-card); border-radius: 20px; display: flex; flex-direction: column; min-height: 0; overflow: hidden; }
81
81
  .rn-trp[hidden] { display: none; }
82
- .rn-trp .th2 { display: flex; align-items: center; height: 60px; padding: 0 8px 0 20px; font-size: var(--fs-3); font-weight: 800; flex: none; }
82
+ .rn-trp .th2 { display: flex; align-items: center; height: 60px; padding: 0 8px 0 20px; font-size: var(--fs-row); font-weight: var(--fw-strong); flex: none; line-height: var(--lh-row); }
83
83
  .rn-trp .th2 span { flex: 1; }
84
84
  .rn-trp .tfeed { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 14px; padding: 0 20px 20px; }
85
85
  .rn-trp .tfeed > :first-child { margin-top: auto; }
86
- .rn-trp .l { display: flex; gap: 10px; font-size: var(--fs-3); line-height: 1.5; color: var(--cz-ink3); }
87
- .rn-trp .l .t { flex: none; width: 34px; font-size: var(--fs-2); font-weight: 700; color: var(--cz-ink3); padding-top: 2px; font-variant-numeric: tabular-nums; }
86
+ .rn-trp .l { display: flex; gap: 10px; font-size: var(--fs-body); line-height: 1.5; color: var(--cz-ink3); }
87
+ .rn-trp .l .t { flex: none; width: 34px; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); padding-top: 2px; font-variant-numeric: tabular-nums; line-height: var(--lh-label); }
88
88
  .rn-trp .l b { flex: none; width: 52px; color: var(--cz-ink2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
89
89
  .rn-trp .l.now { color: var(--cz-ink); }
90
90
  .rn-trp .l.now b { color: var(--cz-blueink); }
@@ -95,7 +95,7 @@
95
95
  /* Phone: the panel under the stage, full width; the transcript is a sheet over it */
96
96
  @media (max-width: 720px) {
97
97
  .rn-room .rn-nw { padding: 20px 16px 12px; gap: 18px; justify-content: flex-start; }
98
- .rn-now h1 { font-size: var(--fs-5); }
98
+ .rn-now h1 { font-size: var(--fs-panel); line-height: var(--lh-panel); }
99
99
  .rn-room .rn-rz { grid-template-columns: 1fr; }
100
100
  .rn-room .rn-mine { width: calc(100% - 32px); }
101
101
  .rn-trp { position: fixed; z-index: 70; left: 0; right: 0; bottom: 0; width: auto; height: 70vh; border-radius: 22px 22px 0 0; box-shadow: var(--cz-sheet); }