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
@@ -15,14 +15,14 @@
15
15
  /* the stage card and the Plan card (XipB .card2): a quiet outlined card, its head the name and where it stands */
16
16
  .xv-card { border: 1px solid var(--cz-hair); border-radius: 18px; padding: 12px 14px; display: flex; flex-direction: column; gap: 8px; }
17
17
  .xv-ch { display: flex; align-items: center; gap: 8px; color: var(--cz-ink); }
18
- .xv-ch b { font-size: var(--fs-3); font-weight: 800; }
19
- .xv-ch .r { margin-left: auto; font-size: var(--fs-2); color: var(--cz-ink3); font-weight: 700; white-space: nowrap; }
18
+ .xv-ch b { font-size: var(--fs-row); font-weight: var(--fw-strong); line-height: var(--lh-row); }
19
+ .xv-ch .r { margin-left: auto; font-size: var(--fs-label); color: var(--cz-ink3); font-weight: var(--fw-strong); white-space: nowrap; line-height: var(--lh-label); }
20
20
  .xv-sc .xv-lr { padding-left: 0; padding-right: 0; }
21
21
  .xv-sl { margin: 0; }
22
22
  .xv-sl .cz-nd.tl { width: 14px; height: 14px; margin: 4px; border-radius: 3px; transform: rotate(45deg); border-style: solid; }
23
23
  .xv-none .tx small { color: var(--cz-ink3); }
24
24
  .xv-none .cz-nd { border-style: dashed; }
25
- .xv-sl .tail .nm { color: var(--cz-ink3); font-weight: 600; }
25
+ .xv-sl .tail .nm { color: var(--cz-ink3); font-weight: var(--fw-strong); }
26
26
  .cz-sli.has-act { display: flex; align-items: flex-start; gap: 8px; }
27
27
  .cz-sli.has-act > .xv-none { flex: 1; }
28
28
  .xv-add { width: 32px; height: 32px; border-radius: 50%; background: var(--cz-blueink); color: var(--cz-card); display: inline-flex; align-items: center; justify-content: center; flex: none; margin-top: 6px; }
@@ -30,7 +30,7 @@
30
30
 
31
31
  /* the summary's meta: the owner's avatar and name, the workflow's icon and name */
32
32
  .xv-who { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
33
- .xv-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-flex; align-items: center; justify-content: center; flex: none; }
33
+ .xv-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-flex; align-items: center; justify-content: center; flex: none; line-height: var(--lh-badge); }
34
34
  .xv-who .wfi { color: var(--cz-ink3); }
35
35
 
36
36
  /* the plan line (XipB .pl): your plan grey, past the plan amber dashed, Jira's pace blue dashed, a tick for today */
@@ -42,12 +42,12 @@
42
42
  .xv-pl .tk { position: absolute; top: 12px; width: 2px; height: 22px; margin-left: -1px; border-radius: 1px; background: var(--cz-ink); }
43
43
  .xv-pl .tk.am { background: var(--cz-dot-risk); }
44
44
  .xv-pl .tk.e { background: var(--cz-blueink); }
45
- .xv-pl .lb { position: absolute; top: 38px; font-size: var(--fs-1); font-weight: 700; color: var(--cz-ink3); white-space: nowrap; }
45
+ .xv-pl .lb { position: absolute; top: 38px; font-size: var(--fs-badge); font-weight: var(--fw-strong); color: var(--cz-ink3); white-space: nowrap; line-height: var(--lh-badge); }
46
46
  .xv-pl .lb.tp { top: -2px; }
47
- .xv-pl .lb b { color: var(--cz-ink); font-weight: 800; }
47
+ .xv-pl .lb b { color: var(--cz-ink); font-weight: var(--fw-strong); }
48
48
  .xv-pl .lb.w, .xv-pl .lb.w b { color: var(--cz-risk); }
49
49
  .xv-pl .lb.e, .xv-pl .lb.e b { color: var(--cz-blueink); }
50
- .xv-lg { display: flex; gap: 14px; flex-wrap: wrap; font-size: var(--fs-1); color: var(--cz-ink3); font-weight: 600; }
50
+ .xv-lg { display: flex; gap: 14px; flex-wrap: wrap; font-size: var(--fs-badge); color: var(--cz-ink3); font-weight: var(--fw-strong); line-height: var(--lh-badge); }
51
51
  .xv-lg span { display: inline-flex; align-items: center; gap: 5px; }
52
52
  .xv-lg i { display: inline-block; width: 14px; height: 4px; border-radius: 2px; background: var(--cz-well2); }
53
53
  .xv-lg i.over { background: repeating-linear-gradient(90deg, var(--cz-dot-risk) 0 4px, transparent 4px 6px); }
@@ -56,29 +56,29 @@
56
56
  .xv-lg i.today.am { background: var(--cz-dot-risk); }
57
57
 
58
58
  /* one row in a section (XvABoard .lr): a mark, a title, one quiet line; a ticket row is a press */
59
- .xv-lr { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 4px 10px; border-radius: 12px; font: inherit; font-size: var(--fs-3); color: var(--cz-ink); background: none; border: 0; width: 100%; box-sizing: border-box; text-align: left; }
59
+ .xv-lr { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 4px 10px; border-radius: 12px; font: inherit; font-size: var(--fs-body); color: var(--cz-ink); background: none; border: 0; width: 100%; box-sizing: border-box; text-align: left; line-height: var(--lh-body); }
60
60
  .xv-lr + .xv-lr { border-top: 1px solid var(--cz-hair); border-radius: 0; }
61
61
  button.xv-lr { cursor: pointer; }
62
62
  @media (hover: hover) { button.xv-lr:hover { background: color-mix(in srgb, var(--cz-well) 50%, var(--cz-card)); border-radius: 12px; } }
63
63
  button.xv-lr:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: -2px; border-radius: 12px; }
64
64
  .xv-lr .w { flex: 1; min-width: 0; }
65
- .xv-lr .w b { display: block; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
66
- .xv-lr .w b em { font-style: normal; font-weight: 800; color: var(--cz-ink2); }
67
- .xv-lr .w span { display: block; font-size: var(--fs-2); color: var(--cz-ink3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
68
- .xv-lr .r { font-size: var(--fs-2); color: var(--cz-ink3); font-weight: 600; white-space: nowrap; }
65
+ .xv-lr .w b { display: block; font-weight: var(--fw-strong); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
66
+ .xv-lr .w b em { font-style: normal; font-weight: var(--fw-strong); color: var(--cz-ink2); }
67
+ .xv-lr .w span { display: block; font-size: var(--fs-meta); color: var(--cz-ink3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: var(--lh-meta); }
68
+ .xv-lr .r { font-size: var(--fs-label); color: var(--cz-ink3); font-weight: var(--fw-strong); white-space: nowrap; line-height: var(--lh-label); }
69
69
  .xv-mk { width: 8px; height: 8px; border-radius: 50%; flex: none; }
70
70
  .xv-mk.warn { background: var(--cz-dot-risk); }
71
71
  .xv-mk.you { background: var(--cz-blue); }
72
72
  .xv-mk.done { background: var(--cz-done); }
73
73
 
74
74
  /* quiet words, chips, a small secondary press */
75
- .xv-q { margin: 0; font-size: var(--fs-2); color: var(--cz-ink3); line-height: 1.45; }
75
+ .xv-q { margin: 0; font-size: var(--fs-meta); color: var(--cz-ink3); line-height: 1.45; }
76
76
  .xv-q b { color: var(--cz-ink2); }
77
77
  .xv-chips { display: flex; flex-wrap: wrap; gap: 6px; }
78
- .xv-chip { height: 30px; padding: 0 12px; border-radius: 999px; background: var(--cz-well); font: 700 var(--fs-2) var(--cz-sans); color: var(--cz-ink2); display: inline-flex; align-items: center; border: 0; }
78
+ .xv-chip { height: 30px; padding: 0 12px; border-radius: 999px; background: var(--cz-well); font: var(--fw-strong) var(--fs-label)/var(--lh-label) var(--cz-sans); color: var(--cz-ink2); display: inline-flex; align-items: center; border: 0; }
79
79
  button.xv-chip { cursor: pointer; }
80
80
  button.xv-chip:focus-visible, .xv-mini:focus-visible { outline: 2px solid var(--cz-blue); outline-offset: 2px; }
81
- .xv-mini { height: 30px; padding: 0 12px; border-radius: 999px; background: var(--cz-bluebg); color: var(--cz-blueink); font: 700 var(--fs-2) var(--cz-sans); border: 0; cursor: pointer; }
81
+ .xv-mini { height: 30px; padding: 0 12px; border-radius: 999px; background: var(--cz-bluebg); color: var(--cz-blueink); font: var(--fw-strong) var(--fs-label)/var(--lh-label) var(--cz-sans); border: 0; cursor: pointer; }
82
82
 
83
83
 
84
84
  @media (max-width: 760px) {
@@ -3,15 +3,47 @@
3
3
  * A page opts in with <body class="cz"> and this file after premium.css. Every class here starts with cz-, so nothing
4
4
  * collides with premium.css. Page CSS (cozy-home.css, cozy-board.css, cozy-insights.css) builds on these tokens only. */
5
5
 
6
+ @font-face { font-family: 'Plus Jakarta Sans'; font-style: normal; font-weight: 200 800; font-display: swap; src: url(/vendor/plus-jakarta-sans-var.woff2) format('woff2'); }
7
+ /* Nunito stays only for the report templates' standard look (lib/report-pyramid.js); a face the page does not use is never fetched. */
6
8
  @font-face { font-family: 'Nunito'; font-style: normal; font-weight: 400 800; font-display: swap; src: url(/vendor/nunito-var.woff2) format('woff2'); }
7
9
 
8
10
  /* iOS Safari inflates text it thinks is too small to read ("text autosizing"), unevenly: a wide title or sub-line grows and a narrow time
9
11
  column does not, so the calendar rows broke the scale on a phone (batch 16 item 4). The sizes are the scale's; the browser keeps them. */
10
12
  html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
13
+ /* One class per role (feedback batch 26 item 6): new markup takes a role class rather than writing its own size and weight. */
14
+ /* two weights only: the browser's own bold (700 on <b> and <strong>) reads as the strong weight; zero specificity, so any rule wins */
15
+ :where(b, strong) { font-weight: var(--fw-strong); }
16
+ .t-display { font-size: var(--fs-display); font-weight: var(--fw-display); line-height: var(--lh-display); }
17
+ .t-page { font-size: var(--fs-page); font-weight: var(--fw-page); line-height: var(--lh-page); }
18
+ .t-panel { font-size: var(--fs-panel); font-weight: var(--fw-panel); line-height: var(--lh-panel); }
19
+ .t-section { font-size: var(--fs-section); font-weight: var(--fw-section); line-height: var(--lh-section); }
20
+ .t-row { font-size: var(--fs-row); font-weight: var(--fw-row); line-height: var(--lh-row); }
21
+ .t-body { font-size: var(--fs-body); font-weight: var(--fw-body); line-height: var(--lh-body); }
22
+ .t-meta { font-size: var(--fs-meta); font-weight: var(--fw-meta); line-height: var(--lh-meta); }
23
+ .t-label { font-size: var(--fs-label); font-weight: var(--fw-label); line-height: var(--lh-label); }
24
+ .t-badge { font-size: var(--fs-badge); font-weight: var(--fw-badge); line-height: var(--lh-badge); }
11
25
  :root{
12
- /* The type scale (R27; feedback batch 15 item 2): every font size in the cozy sheets is one of these six. Hierarchy comes from weight and
13
- colour, never from a half pixel. 11 marks and badges · 12 meta · 14 body and rows · 16 group heads and phone rows · 20 page titles · 28 display. */
14
- --fs-1: 11px; --fs-2: 12px; --fs-3: 14px; --fs-4: 16px; --fs-5: 20px; --fs-6: 28px;
26
+ /* Typography roles (feedback batch 26 item 6, agreed 2026-11-03): ONE face (Plus Jakarta Sans), TWO weights (400 text, 600 emphasis),
27
+ FOUR sizes (13 / 15 / 18 / 26) and ONE density, the most comfortable. Every font size, weight and line height in workspace/public names a
28
+ role token from this block; size and weight come from the role, never from the page. This file is the only place that writes the values
29
+ (conformance-gate.js R28-14). The premium-*.css and console3.css :root copies repeat the same values for pages that load without this file.
30
+ display 26 / 600 / 1.2 big numbers: North Star, KPI values
31
+ page 26 / 600 / 1.2 page and report titles
32
+ panel 18 / 600 / 1.3 a side panel, popover or card header
33
+ section 15 / 600 / 1.35 group heads, panel sections
34
+ row 15 / 600 / 1.4 the name of a thing in any list, table or menu
35
+ body 15 / 400 / 1.6 sentences: chat, descriptions, notes
36
+ meta 13 / 400 / 1.5 the quiet line under a title, dates, counts, table cells
37
+ label 13 / 600 / 1.35 column heads, field labels, time stamps
38
+ badge 13 / 600 / 1.2 initials, count pills, status chips
39
+ Kept on purpose: the slide canvases and report templates (their own scaled sizes) and the counts inside milestone diamonds. */
40
+ --fw-regular: 400; --fw-strong: 600;
41
+ /* not a role: a phone zooms the page into a field typed in under 16 px, so on a touch screen every field is 16 px (the rule below) */
42
+ --fs-field: 16px;
43
+ --fs-display: 26px; --fs-page: 26px; --fs-panel: 18px; --fs-section: 15px; --fs-row: 15px; --fs-body: 15px; --fs-meta: 13px; --fs-label: 13px; --fs-badge: 13px;
44
+ --lh-display: 1.2; --lh-page: 1.2; --lh-panel: 1.3; --lh-section: 1.35; --lh-row: 1.4; --lh-body: 1.6; --lh-meta: 1.5; --lh-label: 1.35; --lh-badge: 1.2;
45
+ --fw-display: var(--fw-strong); --fw-page: var(--fw-strong); --fw-panel: var(--fw-strong); --fw-section: var(--fw-strong); --fw-row: var(--fw-strong);
46
+ --fw-body: var(--fw-regular); --fw-meta: var(--fw-regular); --fw-label: var(--fw-strong); --fw-badge: var(--fw-strong);
15
47
  /* The Agreed design's palette (premium-agreed-design): every colour the cozy sheets use, one token each, defined only here.
16
48
  The light and dark .cz blocks and the page sheets (cozy-board, -home, -initiative, -viewer, bd-span.js) name these. */
17
49
  --cz-c-17191c: #17191C;
@@ -186,7 +218,7 @@ html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
186
218
  --cz-float: 0 14px 34px -12px rgba(42,46,53,.35);
187
219
  --cz-vlift: 0 6px 18px -8px rgba(42,46,53,.2);
188
220
  --cz-sheet: 0 24px 60px -24px rgba(42,46,53,.3);
189
- --cz-sans: 'Nunito', ui-sans-serif, system-ui, sans-serif;
221
+ --cz-sans: 'Plus Jakarta Sans', ui-sans-serif, system-ui, sans-serif;
190
222
  --cz-mono: 'IBM Plex Mono', ui-monospace, Menlo, monospace;
191
223
  --cz-done: var(--cz-c-1e449b); --cz-bubble: var(--cz-c-e8f1fb); --cz-solid: var(--cz-c-2f5fb3); --cz-onsolid: var(--cz-c-ffffff);
192
224
  /* the mission (pm/mission.js) and Adler's wash on the initiative card: light, then the dark block's own */
@@ -213,7 +245,7 @@ html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
213
245
  --mi-path: var(--cz-c-5c6480); --mi-smoke: var(--cz-c-c9ccd6); --mi-off: var(--cz-c-7e88a8); --mi-td: var(--cz-c-e8e4dc); --mi-pz: var(--cz-c-c9ccd6);
214
246
  --iv-wash: linear-gradient(140deg, var(--cz-c-3b2e21) 0%, var(--cz-c-2b2723) 45%, var(--cz-c-232d20) 80%, var(--cz-c-1f2b1c) 100%); --iv-washhr: rgba(220,190,140,.14);
215
247
  }
216
- body.cz { margin: 0; font-family: var(--cz-sans); color: var(--cz-ink); background: var(--cz-ground); background-attachment: fixed; -webkit-font-smoothing: antialiased; font-size: var(--fs-3); }
248
+ body.cz { margin: 0; font-family: var(--cz-sans); color: var(--cz-ink); background: var(--cz-ground); background-attachment: fixed; -webkit-font-smoothing: antialiased; font-size: var(--fs-body); line-height: var(--lh-body); }
217
249
  .cz .sky { display: none; }
218
250
  /* The old five-place rail is gone: premium-shell.js takes its markup out of the page, and this rule hides it until then. */
219
251
  .cz nav.rail { display: none !important; }
@@ -225,9 +257,9 @@ body.cz { margin: 0; font-family: var(--cz-sans); color: var(--cz-ink); backgrou
225
257
  .cz-fab svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
226
258
  .cz-fabm { box-sizing: border-box; width: 220px; padding: 8px; display: flex; flex-direction: column; gap: 2px; border-radius: 24px; background: var(--cz-card); border: 1px solid var(--cz-hair); box-shadow: 0 24px 60px -24px rgba(27,42,24,.45); }
227
259
  .cz-fabm[hidden] { display: none; }
228
- .cz-fabm a, .cz-fabm button { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 12px; border-radius: 14px; font: inherit; font-size: var(--fs-3); color: var(--cz-ink2); text-decoration: none; background: none; border: 0; cursor: pointer; text-align: left; }
260
+ .cz-fabm a, .cz-fabm button { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 12px; border-radius: 14px; font: inherit; font-size: var(--fs-body); color: var(--cz-ink2); text-decoration: none; background: none; border: 0; cursor: pointer; text-align: left; line-height: var(--lh-body); }
229
261
  .cz-fabm a:hover, .cz-fabm button:hover { background: var(--cz-well); }
230
- .cz-fabm [aria-current="page"] { background: var(--cz-bluebg); color: var(--cz-ink); font-weight: 700; }
262
+ .cz-fabm [aria-current="page"] { background: var(--cz-bluebg); color: var(--cz-ink); font-weight: var(--fw-strong); }
231
263
  .cz-fabm .cz-set { border-top: 1px solid var(--cz-hair); margin-top: 4px; border-radius: 0 0 14px 14px; }
232
264
  .cz-fabm svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; flex: none; }
233
265
 
@@ -243,29 +275,29 @@ body.cz { margin: 0; font-family: var(--cz-sans); color: var(--cz-ink); backgrou
243
275
  .cz-fabw { left: auto; right: 18px; bottom: 24px; align-items: flex-end; }
244
276
  .cz-panel { margin: 0; border-radius: 0; min-height: 100vh; padding: 12px 12px 96px; box-shadow: none; }
245
277
  .cz-top { display: flex; align-items: center; gap: 6px; min-height: 48px; }
246
- .cz-top .cz-title { font-weight: 800; font-size: var(--fs-4); margin-left: 4px; margin-right: auto; }
278
+ .cz-top .cz-title { font-weight: var(--fw-strong); font-size: var(--fs-row); margin-left: 4px; margin-right: auto; line-height: var(--lh-row); }
247
279
  }
248
280
 
249
281
  /* ── Shared parts ── */
250
- .cz-pick { display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 10px 0 12px; border-radius: 999px; background: var(--cz-well); font: inherit; font-size: var(--fs-3); font-weight: 800; color: var(--cz-ink); border: 0; cursor: pointer; }
282
+ .cz-pick { display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 10px 0 12px; border-radius: 999px; background: var(--cz-well); font: inherit; font-size: var(--fs-row); font-weight: var(--fw-strong); color: var(--cz-ink); border: 0; cursor: pointer; line-height: var(--lh-row); }
251
283
  .cz-tabs { display: flex; gap: 2px; }
252
- .cz-tab { height: 34px; padding: 0 13px; border-radius: 999px; font: inherit; font-size: var(--fs-3); font-weight: 700; color: var(--cz-ink3); display: inline-flex; align-items: center; gap: 6px; background: none; border: 0; cursor: pointer; }
284
+ .cz-tab { height: 34px; padding: 0 13px; border-radius: 999px; font: inherit; font-size: var(--fs-row); font-weight: var(--fw-strong); color: var(--cz-ink3); display: inline-flex; align-items: center; gap: 6px; background: none; border: 0; cursor: pointer; line-height: var(--lh-row); }
253
285
  .cz-tab[aria-selected="true"] { background: var(--cz-well); color: var(--cz-ink); }
254
- .cz-tab .n { font-weight: 600; color: var(--cz-ink3); font-size: var(--fs-2); }
286
+ .cz-tab .n { font-weight: var(--fw-strong); color: var(--cz-ink3); font-size: var(--fs-label); line-height: var(--lh-label); }
255
287
  .cz-ib { width: 38px; height: 38px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; color: var(--cz-ink2); background: none; border: 0; cursor: pointer; flex: none; padding: 0; }
256
288
  .cz-ib:hover { background: var(--cz-well); }
257
289
  .cz-ib svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
258
290
  .cz-ib.solid { background: var(--cz-ink); color: var(--cz-card); }
259
291
  .cz-seg { display: inline-flex; padding: 3px; border-radius: 999px; background: var(--cz-well); gap: 2px; }
260
- .cz-seg button { height: 30px; min-width: 34px; padding: 0 11px; border-radius: 999px; font: inherit; font-size: var(--fs-2); font-weight: 700; color: var(--cz-ink3); background: none; border: 0; cursor: pointer; }
292
+ .cz-seg button { height: 30px; min-width: 34px; padding: 0 11px; border-radius: 999px; font: inherit; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); background: none; border: 0; cursor: pointer; line-height: var(--lh-label); }
261
293
  .cz-seg button[aria-pressed="true"] { background: var(--cz-card); color: var(--cz-ink); box-shadow: 0 1px 3px rgba(42,46,53,.12); }
262
294
  .cz-vr { width: 1px; height: 20px; background: var(--cz-hair); margin: 0 4px; flex: none; }
263
- .cz-chip { height: 30px; padding: 0 11px; border-radius: 999px; border: 1px solid var(--cz-hair); background: var(--cz-card); display: inline-flex; align-items: center; gap: 6px; font: inherit; font-size: var(--fs-2); font-weight: 700; color: var(--cz-ink2); white-space: nowrap; cursor: pointer; }
295
+ .cz-chip { height: 30px; padding: 0 11px; border-radius: 999px; border: 1px solid var(--cz-hair); background: var(--cz-card); display: inline-flex; align-items: center; gap: 6px; font: inherit; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink2); white-space: nowrap; cursor: pointer; line-height: var(--lh-label); }
264
296
  .cz-chip:hover { background: var(--cz-well); }
265
297
  .cz-chip.gh { border-color: transparent; background: transparent; padding: 0 8px; }
266
298
  .cz-chip.on { background: var(--cz-bluebg); border-color: transparent; color: var(--cz-blueink); }
267
- .cz-chip b { font-weight: 800; color: var(--cz-ink); }
268
- .cz-pill { display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-1); font-weight: 800; border-radius: 999px; padding: 2px 8px; white-space: nowrap; }
299
+ .cz-chip b { font-weight: var(--fw-strong); color: var(--cz-ink); }
300
+ .cz-pill { display: inline-flex; align-items: center; gap: 5px; font-size: var(--fs-badge); font-weight: var(--fw-strong); border-radius: 999px; padding: 2px 8px; white-space: nowrap; line-height: var(--lh-badge); }
269
301
  .cz-pill.late { background: var(--cz-latebg); color: var(--cz-late); } .cz-pill.ok { background: var(--cz-okbg); color: var(--cz-ok); }
270
302
  .cz-pill.q { background: var(--cz-well); color: var(--cz-ink3); } .cz-pill.you { background: var(--cz-bluebg); color: var(--cz-blueink); }
271
303
  .cz-pill.red { background: var(--cz-redbg); color: var(--cz-red); } .cz-pill.risk { background: var(--cz-riskbg); color: var(--cz-risk); }
@@ -308,9 +340,9 @@ body.cz { margin: 0; font-family: var(--cz-sans); color: var(--cz-ink); backgrou
308
340
  .cz-vw-tile { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; background: var(--cz-bluebg); color: var(--cz-blueink); flex: none; }
309
341
  .cz-vw-tile svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
310
342
  .cz-vw-t { flex: 1; min-width: 0; display: flex; align-items: baseline; gap: 6px; } /* the kind in small grey before the bold title, on one line (AgHome) */
311
- .cz-vw-kind { margin: 0; flex: none; max-width: 45%; font-size: var(--fs-2); color: var(--cz-ink3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
343
+ .cz-vw-kind { margin: 0; flex: none; max-width: 45%; font-size: var(--fs-meta); color: var(--cz-ink3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: var(--lh-meta); }
312
344
  .cz-vw-kind:empty { display: none; }
313
- .cz-vw-title { margin: 0; min-width: 0; font-size: var(--fs-4); font-weight: 700; color: var(--cz-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
345
+ .cz-vw-title { margin: 0; min-width: 0; font-size: var(--fs-row); font-weight: var(--fw-strong); color: var(--cz-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: var(--lh-row); }
314
346
  .cz-vw-ib { width: 40px; height: 40px; border-radius: 10px; display: grid; place-items: center; color: var(--cz-ink2); background: none; border: 0; padding: 0; cursor: pointer; flex: none; font: inherit; }
315
347
  .cz-vw-ib svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
316
348
  .cz-vw-ib[data-cz-vw="close"] svg { stroke-width: 2; }
@@ -332,8 +364,8 @@ body.cz { margin: 0; font-family: var(--cz-sans); color: var(--cz-ink); backgrou
332
364
  .cz-ph-ic { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; background: var(--cz-card); color: var(--cz-ink3); flex: none; }
333
365
  .cz-ph-ic svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
334
366
  .cz-ph-t { min-width: 0; }
335
- .cz-ph-l { margin: 0; font-size: var(--fs-3); font-weight: 700; color: var(--cz-ink2); }
336
- .cz-ph-n { margin: 2px 0 0; font-size: var(--fs-2); color: var(--cz-ink3); }
367
+ .cz-ph-l { margin: 0; font-size: var(--fs-row); font-weight: var(--fw-strong); color: var(--cz-ink2); line-height: var(--lh-row); }
368
+ .cz-ph-n { margin: 2px 0 0; font-size: var(--fs-meta); color: var(--cz-ink3); line-height: var(--lh-meta); }
337
369
 
338
370
  /* ── slide editor on the cozy pages (moved from premium-vw-slides.css, which stays on the console type scale) ── */
339
371
  /* ── the cozy pages (premium-agreed-design, area viewer): the console tokens this sheet names, mapped to the cozy tokens of cozy.css,
@@ -341,12 +373,12 @@ body.cz { margin: 0; font-family: var(--cz-sans); color: var(--cz-ink); backgrou
341
373
  .cz .sl,.cz .sl-pres,.cz .sl-pop,.cz.sl-audw{--hair:var(--cz-hair);--ink:var(--cz-ink);--ink-2:var(--cz-ink2);--ink-3:var(--cz-ink3);--ember:var(--cz-blue);--card:var(--cz-card);--card-solid:var(--cz-card);
342
374
  --well:var(--cz-well);--solid:var(--cz-blueink);--on-solid:var(--cz-card);--spot:var(--cz-bluebg);--bad:var(--cz-red);--sans:var(--cz-sans);--mono:var(--cz-mono);--card-shadow:var(--cz-lift)}
343
375
  /* the report slide kicker (ReportPanel.dc.html): 20px, 700 */
344
- .sl-cv[data-th="report"] .r-kicker .sl-tx{display:inline-block;width:auto;height:auto;padding:6px 16px;border-radius:8px;background:var(--sso);color:var(--sfg);font-size:var(--fs-5);font-weight:700;letter-spacing:.06em}
376
+ .sl-cv[data-th="report"] .r-kicker .sl-tx{display:inline-block;width:auto;height:auto;padding:6px 16px;border-radius:8px;background:var(--sso);color:var(--sfg);font-size:20px;font-weight:700;letter-spacing:.06em}
345
377
 
346
378
  /* testing fixes: a phone zooms the page into any field typed in under 16 px, and the page then sits off the screen's right edge with
347
379
  the keyboard open. On a touch screen every field is at least 16 px. */
348
380
  @media (hover: none) and (pointer: coarse) {
349
- input:not([type="checkbox"]):not([type="radio"]):not([type="range"]), textarea, select { font-size: var(--fs-4) !important; }
381
+ input:not([type="checkbox"]):not([type="radio"]):not([type="range"]), textarea, select { font-size: var(--fs-field) !important; line-height: var(--lh-body); }
350
382
  }
351
383
  /* testing fixes: nothing may widen the page on a phone (a menu past the right edge made the whole page zoom out) */
352
384
  /* on body only: an overflow set on html stops body.cz-home's overflow:hidden from reaching the viewport, and the whole page then scrolls */
@@ -4,18 +4,18 @@
4
4
  * The body is a size container: 720 px or wider lays the blocks in two columns, each block its own card (PbA7). */
5
5
 
6
6
  .db { container-type: inline-size; display: flex; flex-direction: column; gap: 14px; padding: 2px 0 18px; color: var(--cz-ink); font-family: var(--cz-sans); }
7
- .db-wait, .db-note { margin: 0; font-size: var(--fs-2); line-height: 1.5; color: var(--cz-ink3); }
7
+ .db-wait, .db-note { margin: 0; font-size: var(--fs-meta); line-height: 1.5; color: var(--cz-ink3); }
8
8
  .db-grid { display: flex; flex-direction: column; gap: 14px; }
9
9
  .db-b { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
10
- .db-h { margin: 0; font-size: var(--fs-4); font-weight: 800; }
10
+ .db-h { margin: 0; font-size: var(--fs-section); font-weight: var(--fw-strong); line-height: var(--lh-section); }
11
11
  .db-card { background: var(--cz-card); border: 1px solid var(--cz-hair); border-radius: 16px; padding: 12px 14px; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
12
12
  .db-list { gap: 0; padding-top: 4px; padding-bottom: 4px; }
13
13
 
14
14
  /* the ✦ line: what Claude handled, with the M face; a warning is the honest face on a warm edge */
15
15
  .db-hd { display: flex; align-items: flex-start; gap: 12px; border-radius: 16px; padding: 12px 14px; background: var(--cz-bluebg); border: 1px solid color-mix(in srgb, var(--cz-blueink) 18%, transparent); }
16
16
  .db-hd.warn { background: var(--cz-latebg); border-color: color-mix(in srgb, var(--cz-late) 55%, transparent); }
17
- .db-hd p { margin: 0; flex: 1; min-width: 0; font-size: var(--fs-4); line-height: 1.45; color: var(--cz-ink2); }
18
- .db-hd b { color: var(--cz-ink); font-weight: 800; }
17
+ .db-hd p { margin: 0; flex: 1; min-width: 0; font-size: var(--fs-body); line-height: 1.45; color: var(--cz-ink2); }
18
+ .db-hd b { color: var(--cz-ink); font-weight: var(--fw-strong); }
19
19
  .db-face { flex: none; width: 36px; height: 36px; display: inline-flex; }
20
20
  .db-face svg { width: 36px; height: 36px; }
21
21
 
@@ -24,24 +24,24 @@
24
24
  button.db-row, button.db-rep, .db-sum, .db-fold { cursor: pointer; }
25
25
  .db-list > .db-row + .db-row, .db-list > .db-row + .db-fold, .db-reps > * + * { border-top: 1px solid var(--cz-hair); }
26
26
  .db-rt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
27
- .db-rt b { font-size: var(--fs-4); font-weight: 800; line-height: 1.3; }
28
- .db-rt small, .db-r { font-size: var(--fs-2); line-height: 1.4; color: var(--cz-ink3); display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
27
+ .db-rt b { font-size: var(--fs-row); font-weight: var(--fw-strong); line-height: 1.3; }
28
+ .db-rt small, .db-r { font-size: var(--fs-meta); line-height: 1.4; color: var(--cz-ink3); display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
29
29
  .db-r { flex: none; text-align: right; }
30
- .db-fold .db-rt b { font-size: var(--fs-3); }
30
+ .db-fold .db-rt b { font-size: var(--fs-body); line-height: var(--lh-body); }
31
31
  .db-fold > svg, .db-rep > svg:last-child, .db-sum > svg:last-child { flex: none; color: var(--cz-ink3); }
32
32
  .db-fold[aria-expanded="true"] > svg { transform: rotate(180deg); }
33
33
  .db-dot { flex: none; width: 9px; height: 9px; border-radius: 50%; background: var(--cz-dot-q); }
34
34
  .db-dot.ok { background: var(--cz-dot-ok); } .db-dot.risk { background: var(--cz-dot-risk); } .db-dot.late { background: var(--cz-dot-late); }
35
35
  .db-dot.q { background: transparent; border: 2px solid var(--cz-ink3); box-sizing: border-box; }
36
36
  .db-dots { display: inline-flex; gap: 4px; flex: none; }
37
- .db-who { flex: none; width: 28px; height: 28px; 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; }
38
- .db-tag { flex: none; display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 18px; padding: 0 4px; border-radius: 5px; background: var(--cz-bluebg); color: var(--cz-blueink); font-size: var(--fs-1); font-weight: 800; }
39
- .db-none { margin: 0; display: flex; align-items: center; gap: 8px; font-size: var(--fs-3); color: var(--cz-ink3); }
40
- .db-meta, .db-more, .db-p { margin: 0; font-size: var(--fs-2); line-height: 1.5; color: var(--cz-ink3); }
41
- .db-p { font-size: var(--fs-3); color: var(--cz-ink2); }
37
+ .db-who { flex: none; width: 28px; height: 28px; 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; line-height: var(--lh-badge); }
38
+ .db-tag { flex: none; display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 18px; padding: 0 4px; border-radius: 5px; background: var(--cz-bluebg); color: var(--cz-blueink); font-size: var(--fs-badge); font-weight: var(--fw-strong); line-height: var(--lh-badge); }
39
+ .db-none { margin: 0; display: flex; align-items: center; gap: 8px; font-size: var(--fs-body); color: var(--cz-ink3); line-height: var(--lh-body); }
40
+ .db-meta, .db-more, .db-p { margin: 0; font-size: var(--fs-meta); line-height: 1.5; color: var(--cz-ink3); }
41
+ .db-p { font-size: var(--fs-body); color: var(--cz-ink2); line-height: var(--lh-body); }
42
42
  .db-top { display: flex; align-items: center; gap: 10px; }
43
- .db-top > small { margin-left: auto; font-size: var(--fs-2); color: var(--cz-ink3); text-align: right; }
44
- .db-big { font-size: var(--fs-5); font-weight: 800; }
43
+ .db-top > small { margin-left: auto; font-size: var(--fs-meta); color: var(--cz-ink3); text-align: right; line-height: var(--lh-meta); }
44
+ .db-big { font-size: var(--fs-display); font-weight: var(--fw-strong); line-height: var(--lh-display); }
45
45
 
46
46
  /* the stages of Ships: done green, now blue, next grey */
47
47
  .db-steps { display: flex; align-items: flex-start; }
@@ -51,14 +51,14 @@ button.db-row, button.db-rep, .db-sum, .db-fold { cursor: pointer; }
51
51
  .db-st.done::before, .db-st.now::before { background: var(--cz-dot-ok); }
52
52
  .db-st i { width: 12px; height: 12px; transform: rotate(45deg); border-radius: 3px; background: var(--cz-well2, var(--cz-hair)); position: relative; }
53
53
  .db-st.done i { background: var(--cz-dot-ok); } .db-st.now i { background: var(--cz-blue); }
54
- .db-st small { font-size: var(--fs-1); color: var(--cz-ink3); text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }
54
+ .db-st small { font-size: var(--fs-meta); color: var(--cz-ink3); text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; line-height: var(--lh-meta); }
55
55
 
56
56
  /* milestones: the track, then one row each */
57
57
  .db-trk { display: flex; align-items: center; justify-content: space-between; padding: 4px 6px; background: linear-gradient(var(--cz-hair), var(--cz-hair)) center / 100% 2px no-repeat; }
58
58
  .db-trk i { width: 12px; height: 12px; transform: rotate(45deg); border-radius: 3px; background: var(--cz-dot-q); }
59
59
  .db-trk i.ok, .db-trk i.done { background: var(--cz-dot-ok); } .db-trk i.risk { background: var(--cz-dot-risk); } .db-trk i.late { background: var(--cz-dot-late); }
60
- .db-ms { display: flex; align-items: center; gap: 10px; padding: 4px 0; font-size: var(--fs-3); }
61
- .db-ms .db-rt { font-weight: 600; }
60
+ .db-ms { display: flex; align-items: center; gap: 10px; padding: 4px 0; font-size: var(--fs-body); line-height: var(--lh-body); }
61
+ .db-ms .db-rt { font-weight: var(--fw-strong); }
62
62
  .db-gh { display: flex; align-items: center; gap: 4px; }
63
63
  .db-gh > .db-sum { flex: 1; }
64
64
  .db-hr { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: -10px 0; }
@@ -69,7 +69,7 @@ button.db-row, button.db-rep, .db-sum, .db-fold { cursor: pointer; }
69
69
 
70
70
  /* Ready for build: the checklist */
71
71
  .db-cks { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
72
- .db-ck { display: flex; align-items: center; gap: 10px; padding: 7px 0; font-size: var(--fs-3); }
72
+ .db-ck { display: flex; align-items: center; gap: 10px; padding: 7px 0; font-size: var(--fs-body); line-height: var(--lh-body); }
73
73
  .db-box { 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; }
74
74
  .db-ck.on .db-box { background: var(--cz-blue); border-color: var(--cz-blue); color: var(--cz-onsolid); }
75
75
 
@@ -77,7 +77,7 @@ button.db-row, button.db-rep, .db-sum, .db-fold { cursor: pointer; }
77
77
  .db-need { background: var(--cz-bluebg); border-color: color-mix(in srgb, var(--cz-blueink) 18%, transparent); }
78
78
  .db-nq { display: flex; gap: 10px; align-items: flex-start; }
79
79
  .db-nq > svg { flex: none; margin-top: 2px; color: var(--cz-blueink); }
80
- .db-pick { font-size: var(--fs-2); font-weight: 800; color: var(--cz-blueink); margin-top: 4px; }
80
+ .db-pick { font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-blueink); margin-top: 4px; line-height: var(--lh-label); }
81
81
  .db-acts { display: flex; justify-content: flex-end; align-items: center; gap: 4px; }
82
82
  .db-ib { all: unset; box-sizing: border-box; cursor: pointer; width: 40px; height: 40px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; color: var(--cz-ink2); flex: none; }
83
83
  .db-ib.solid { width: 44px; height: 44px; background: var(--cz-blue); color: var(--cz-onsolid); }
@@ -92,9 +92,9 @@ button.db-row, button.db-rep, .db-sum, .db-fold { cursor: pointer; }
92
92
  .db-held .db-dic { width: auto; height: auto; background: none; color: var(--cz-blueink); margin-top: 2px; }
93
93
  .db-late { display: flex; flex-direction: column; }
94
94
  .db-hu { gap: 10px; }
95
- .db-hut { font-size: var(--fs-5); font-weight: 800; line-height: 1.35; }
95
+ .db-hut { font-size: var(--fs-display); font-weight: var(--fw-strong); line-height: 1.35; }
96
96
  .db-chips { display: flex; flex-wrap: wrap; gap: 6px; }
97
- .db-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 12px; border-radius: 999px; background: var(--cz-well); font-size: var(--fs-2); font-weight: 700; color: var(--cz-ink2); }
97
+ .db-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 12px; border-radius: 999px; background: var(--cz-well); font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink2); line-height: var(--lh-label); }
98
98
  .db-trust .db-acts { margin-top: -6px; }
99
99
  .db-done { padding-top: 2px; padding-bottom: 2px; }
100
100
 
@@ -115,16 +115,16 @@ button.db-row, button.db-rep, .db-sum, .db-fold { cursor: pointer; }
115
115
  .db-krr { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-top: 1px solid var(--cz-hair); }
116
116
  .db-krr:first-child { border-top: 0; padding-top: 0; }
117
117
  .db-krr .db-rt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
118
- .db-krw { font-size: var(--fs-2); color: var(--cz-ink3); text-decoration-color: color-mix(in srgb, var(--cz-ink) 30%, transparent); }
119
- .db-krn { font-size: var(--fs-5); font-weight: 800; line-height: 1.3; }
118
+ .db-krw { font-size: var(--fs-meta); color: var(--cz-ink3); text-decoration-color: color-mix(in srgb, var(--cz-ink) 30%, transparent); line-height: var(--lh-meta); }
119
+ .db-krn { font-size: var(--fs-panel); font-weight: var(--fw-strong); line-height: 1.3; }
120
120
  .db-krt { color: var(--cz-blueink); }
121
121
  .db-kre { display: flex; gap: 8px; }
122
- .db-kri { flex: 1; min-width: 0; font: inherit; font-size: var(--fs-4); padding: 6px 10px; border: 1px solid var(--cz-hair); border-radius: 10px; background: var(--cz-card); color: var(--cz-ink); }
122
+ .db-kri { flex: 1; min-width: 0; font: inherit; font-size: var(--fs-body); padding: 6px 10px; border: 1px solid var(--cz-hair); border-radius: 10px; background: var(--cz-card); color: var(--cz-ink); line-height: var(--lh-body); }
123
123
  .db-kri.n { flex: none; width: 5.5em; }
124
- .db-krs { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; font-size: var(--fs-2); color: var(--cz-ink2, var(--cz-ink3)); }
124
+ .db-krs { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; font-size: var(--fs-meta); color: var(--cz-ink2, var(--cz-ink3)); line-height: var(--lh-meta); }
125
125
  .db-krs > svg { color: var(--cz-dot-ok); }
126
- .db-krp { border-radius: 999px; padding: 1px 8px; background: var(--cz-well); font-weight: 800; }
127
- .db-krq, .db-krf small { margin: 0; font-size: var(--fs-2); color: var(--cz-ink3); }
126
+ .db-krp { border-radius: 999px; padding: 1px 8px; background: var(--cz-well); font-weight: var(--fw-strong); }
127
+ .db-krq, .db-krf small { margin: 0; font-size: var(--fs-meta); color: var(--cz-ink3); line-height: var(--lh-meta); }
128
128
  .db-krq { border-top: 1px solid var(--cz-hair); padding-top: 10px; }
129
129
  .db-krf { display: flex; align-items: center; gap: 10px; border-top: 1px solid var(--cz-hair); padding-top: 10px; }
130
130
  .db-krf small { flex: 1; }
@@ -1,9 +1,9 @@
1
1
  /* hi-pop.css — the initiative's popovers, menus and the toast with Undo (pm/hi-pop.js), the same on Home and the Board (feedback batch 14
2
2
  * item 5). Moved out of home-ini.css, which Home loads after this sheet, so Home's phone rules still win. Every class starts with hi-. */
3
3
  /* buttons, as the canvas draws them */
4
- .hi-btn { height: 36px; padding: 0 14px; border-radius: 999px; display: inline-flex; align-items: center; gap: 6px; font: inherit; font-size: var(--fs-3); font-weight: 700; border: 1px solid var(--cz-hair); background: var(--cz-card); color: var(--cz-ink); white-space: nowrap; cursor: pointer; }
4
+ .hi-btn { height: 36px; padding: 0 14px; border-radius: 999px; display: inline-flex; align-items: center; gap: 6px; font: inherit; font-size: var(--fs-row); font-weight: var(--fw-strong); border: 1px solid var(--cz-hair); background: var(--cz-card); color: var(--cz-ink); white-space: nowrap; cursor: pointer; line-height: var(--lh-row); }
5
5
  .hi-btn svg { flex: none; }
6
- .hi-btn.sm { height: 30px; padding: 0 11px; font-size: var(--fs-2); }
6
+ .hi-btn.sm { height: 30px; padding: 0 11px; font-size: var(--fs-meta); line-height: var(--lh-meta); }
7
7
  .hi-btn.dark { background: var(--cz-ink); border-color: transparent; color: var(--cz-card); }
8
8
  .hi-btn.ghost { border-color: transparent; background: transparent; color: var(--cz-ink2); }
9
9
  .hi-btn.ghost:hover { background: var(--cz-well); }
@@ -13,7 +13,7 @@
13
13
  .hi-ib.solid { background: var(--cz-ink); color: var(--cz-card); }
14
14
  .hi-ib.sm { width: 28px; height: 28px; }
15
15
  /* ── the popovers: Move anyway, Back, the menus ── */
16
- .hi-pop { position: fixed; z-index: 90; left: var(--hi-x, 24px); top: var(--hi-y, 24px); width: 360px; max-width: calc(100vw - 24px); box-sizing: border-box; background: var(--cz-card); color: var(--cz-ink); border-radius: 20px; padding: 16px; display: flex; flex-direction: column; gap: 10px; font-family: var(--cz-sans); font-size: var(--fs-3); box-shadow: 0 24px 60px -24px rgba(42,46,53,.45), 0 0 0 1px var(--cz-hair); }
16
+ .hi-pop { position: fixed; z-index: 90; left: var(--hi-x, 24px); top: var(--hi-y, 24px); width: 360px; max-width: calc(100vw - 24px); box-sizing: border-box; background: var(--cz-card); color: var(--cz-ink); border-radius: 20px; padding: 16px; display: flex; flex-direction: column; gap: 10px; font-family: var(--cz-sans); font-size: var(--fs-body); box-shadow: 0 24px 60px -24px rgba(42,46,53,.45), 0 0 0 1px var(--cz-hair); line-height: var(--lh-body); }
17
17
  .hi-pop.menu { width: 290px; padding: 8px; gap: 2px; }
18
18
  .hi-pop.sheet { left: 0; right: 0; top: auto; bottom: 0; width: auto; max-width: none; border-radius: 28px 28px 0 0; padding: 10px 16px 28px; box-shadow: 0 -20px 50px -20px rgba(42,46,53,.35); }
19
19
  .hi-pop.sheet .hi-btn { height: 48px; justify-content: center; }
@@ -21,14 +21,14 @@
21
21
  .hi-grab { width: 40px; height: 5px; border-radius: 3px; background: var(--cz-c-d9dce1); align-self: center; margin-bottom: 4px; }
22
22
  .hi-scrim { position: fixed; inset: 0; z-index: 89; background: rgba(42,46,53,.18); }
23
23
  .hi-pop p { margin: 0; }
24
- .hi-h3 { font-size: var(--fs-4); font-weight: 800; }
25
- .hi-lbl { margin: 0; font-size: var(--fs-2); font-weight: 800; color: var(--cz-ink3); }
26
- .hi-small { margin: 0; font-size: var(--fs-2); color: var(--cz-ink3); }
27
- .hi-warn { background: var(--cz-riskbg); color: var(--cz-risk); border-radius: 14px; padding: 12px 14px; font-size: var(--fs-2); }
24
+ .hi-h3 { font-size: var(--fs-section); font-weight: var(--fw-strong); line-height: var(--lh-section); }
25
+ .hi-lbl { margin: 0; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); line-height: var(--lh-label); }
26
+ .hi-small { margin: 0; font-size: var(--fs-meta); color: var(--cz-ink3); line-height: var(--lh-meta); }
27
+ .hi-warn { background: var(--cz-riskbg); color: var(--cz-risk); border-radius: 14px; padding: 12px 14px; font-size: var(--fs-meta); line-height: var(--lh-meta); }
28
28
  .hi-field { display: flex; flex-direction: column; gap: 6px; }
29
- .hi-field > span { font-size: var(--fs-2); font-weight: 800; color: var(--cz-ink2); }
30
- .hi-field em { font-style: normal; font-weight: 600; color: var(--cz-ink3); }
31
- .hi-field input, .hi-field textarea { box-sizing: border-box; width: 100%; border: 0; border-radius: 14px; background: var(--cz-well); color: var(--cz-ink); font: inherit; font-size: var(--fs-3); padding: 10px 14px; outline: 0; }
29
+ .hi-field > span { font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink2); line-height: var(--lh-label); }
30
+ .hi-field em { font-style: normal; font-weight: var(--fw-strong); color: var(--cz-ink3); }
31
+ .hi-field input, .hi-field textarea { box-sizing: border-box; width: 100%; border: 0; border-radius: 14px; background: var(--cz-well); color: var(--cz-ink); font: inherit; font-size: var(--fs-body); padding: 10px 14px; outline: 0; line-height: var(--lh-body); }
32
32
  .hi-field input { height: 42px; }
33
33
  .hi-field textarea { min-height: 56px; resize: vertical; }
34
34
  .hi-acts { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
@@ -36,23 +36,23 @@
36
36
  .hi-chips .cz-chip[aria-pressed="true"] { background: var(--cz-bluebg); border-color: transparent; color: var(--cz-blueink); }
37
37
  .hi-cks { display: flex; flex-direction: column; gap: 4px; }
38
38
  .hi-pop:not(.sheet) .hi-cks { display: none; } /* the card shows the items; the phone's sheet repeats them (InPhone) */
39
- .hi-ck { display: flex; align-items: center; gap: 8px; font-size: var(--fs-2); color: var(--cz-ink2); padding: 2px 0; }
39
+ .hi-ck { display: flex; align-items: center; gap: 8px; font-size: var(--fs-meta); color: var(--cz-ink2); padding: 2px 0; line-height: var(--lh-meta); }
40
40
  .hi-ck i { width: 16px; height: 16px; border-radius: 5px; border: 2px solid var(--cz-c-c5c9d0); box-sizing: border-box; display: inline-grid; place-items: center; flex: none; color: var(--cz-card); }
41
41
  .hi-ck.on i { background: var(--cz-ink); border-color: var(--cz-ink); }
42
- .hi-mlbl { margin: 0; font-size: var(--fs-2); font-weight: 800; color: var(--cz-ink3); padding: 8px 12px 4px; }
42
+ .hi-mlbl { margin: 0; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink3); padding: 8px 12px 4px; line-height: var(--lh-label); }
43
43
  .hi-hr { height: 1px; background: var(--cz-hair); margin: 4px 0; }
44
- .hi-mi { display: flex; align-items: center; gap: 10px; min-height: 40px; padding: 0 12px; border-radius: 12px; font: inherit; font-size: var(--fs-3); font-weight: 600; color: var(--cz-ink); width: 100%; border: 0; background: none; cursor: pointer; text-align: left; }
44
+ .hi-mi { display: flex; align-items: center; gap: 10px; min-height: 40px; padding: 0 12px; border-radius: 12px; font: inherit; font-size: var(--fs-row); font-weight: var(--fw-strong); color: var(--cz-ink); width: 100%; border: 0; background: none; cursor: pointer; text-align: left; line-height: var(--lh-row); }
45
45
  .hi-mi:hover, .hi-mi.on { background: var(--cz-well); }
46
46
  .hi-mi span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
47
- .hi-mi em { font-style: normal; margin-left: auto; font-size: var(--fs-2); color: var(--cz-ink3); font-weight: 600; max-width: 45%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
47
+ .hi-mi em { font-style: normal; margin-left: auto; font-size: var(--fs-label); color: var(--cz-ink3); font-weight: var(--fw-strong); max-width: 45%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: var(--lh-label); }
48
48
  .hi-mi:disabled { opacity: .45; cursor: default; }
49
49
  .hi-vh { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
50
50
 
51
51
  /* the toast with Undo: info, so it does not move */
52
- .hi-toast { position: fixed; z-index: 95; left: 50%; bottom: 40px; transform: translateX(-50%); display: flex; align-items: center; gap: 12px; padding: 6px 6px 6px 16px; border-radius: 999px; background: var(--cz-ink); color: var(--cz-card); font-family: var(--cz-sans); font-size: var(--fs-3); box-shadow: 0 10px 30px -10px rgba(0,0,0,.4); max-width: calc(100vw - 32px); }
52
+ .hi-toast { position: fixed; z-index: 95; left: 50%; bottom: 40px; transform: translateX(-50%); display: flex; align-items: center; gap: 12px; padding: 6px 6px 6px 16px; border-radius: 999px; background: var(--cz-ink); color: var(--cz-card); font-family: var(--cz-sans); font-size: var(--fs-body); box-shadow: 0 10px 30px -10px rgba(0,0,0,.4); max-width: calc(100vw - 32px); line-height: var(--lh-body); }
53
53
  .hi-toast[hidden] { display: none; }
54
54
  .hi-toast span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
55
- .hi-toast button { height: 32px; padding: 0 12px; border-radius: 999px; border: 0; background: rgba(255,255,255,.14); color: inherit; font: inherit; font-weight: 700; cursor: pointer; flex: none; }
55
+ .hi-toast button { height: 32px; padding: 0 12px; border-radius: 999px; border: 0; background: rgba(255,255,255,.14); color: inherit; font: inherit; font-weight: var(--fw-strong); cursor: pointer; flex: none; }
56
56
  .hi-pop.wide:not(.sheet) { width: 560px; }
57
57
  .hi-pop.menu .hi-mi .wfi { margin-left: -2px; }
58
58
  .hi-wfpad { padding: 4px 12px 6px; }
@@ -61,29 +61,29 @@
61
61
  .hi-wfh { display: flex; align-items: center; gap: 8px; }
62
62
  .hi-wfh .hi-h3 { flex: 1; min-width: 0; }
63
63
  .hi-wfrows { display: flex; flex-direction: column; }
64
- .hi-wfrow { display: grid; grid-template-columns: minmax(0, 130px) 14px minmax(0, 130px) minmax(0, 1fr); align-items: center; gap: 10px; padding: 8px 0; border-top: 1px solid var(--cz-hair); font-size: var(--fs-3); }
64
+ .hi-wfrow { display: grid; grid-template-columns: minmax(0, 130px) 14px minmax(0, 130px) minmax(0, 1fr); align-items: center; gap: 10px; padding: 8px 0; border-top: 1px solid var(--cz-hair); font-size: var(--fs-body); line-height: var(--lh-body); }
65
65
  .hi-wfrow:first-child { border-top: 0; }
66
66
  .hi-wfrow span { min-width: 0; }
67
- .hi-wfrow em { display: block; font-style: normal; font-size: var(--fs-2); color: var(--cz-ink3); }
67
+ .hi-wfrow em { display: block; font-style: normal; font-size: var(--fs-meta); color: var(--cz-ink3); line-height: var(--lh-meta); }
68
68
  .hi-wfland { display: flex; align-items: center; gap: 8px; }
69
69
  .hi-wfland span { flex: 1; }
70
- .hi-wfland select { font: inherit; font-size: var(--fs-2); font-weight: 700; color: var(--cz-ink); background: var(--cz-well); border: 0; border-radius: 10px; padding: 6px 10px; max-width: 60%; }
70
+ .hi-wfland select { font: inherit; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink); background: var(--cz-well); border: 0; border-radius: 10px; padding: 6px 10px; max-width: 60%; line-height: var(--lh-label); }
71
71
  /* A's bridge (batch 20 item 3, canvas WmB): old stages grouped into each new stage, the scope, one picker per old stage, ✕ and ✓ as icons */
72
72
  .hi-wfrow.hi-wfgrp { grid-template-columns: minmax(0, 1fr) 14px minmax(0, 150px); }
73
73
  .hi-wfgrp i { font-style: normal; color: var(--cz-ink3); }
74
74
  .hi-wfgrp em { display: inline; margin-left: 4px; }
75
75
  .hi-wfseg { display: inline-flex; align-self: flex-start; background: var(--cz-well); border-radius: 14px; padding: 3px; }
76
- .hi-wfsegb { min-height: 32px; padding: 0 12px; border: 0; border-radius: 11px; background: none; color: var(--cz-ink2); font: inherit; font-size: var(--fs-2); font-weight: 800; cursor: pointer; }
76
+ .hi-wfsegb { min-height: 32px; padding: 0 12px; border: 0; border-radius: 11px; background: none; color: var(--cz-ink2); font: inherit; font-size: var(--fs-label); font-weight: var(--fw-strong); cursor: pointer; line-height: var(--lh-label); }
77
77
  .hi-wfsegb.on { background: var(--cz-card); color: var(--cz-ink); box-shadow: 0 1px 2px rgba(20,24,40,.15); }
78
78
  .hi-wfmore summary { cursor: pointer; color: var(--cz-ink2); }
79
79
  .hi-wfmaps { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 14px; padding-top: 8px; }
80
80
  .hi-wfmap { display: flex; align-items: center; gap: 8px; }
81
81
  .hi-wfmap span { flex: 1; min-width: 0; }
82
- .hi-wfmap select { font: inherit; font-size: var(--fs-2); font-weight: 700; color: var(--cz-ink); background: var(--cz-well); border: 0; border-radius: 10px; padding: 6px 8px; max-width: 60%; }
82
+ .hi-wfmap select { font: inherit; font-size: var(--fs-label); font-weight: var(--fw-strong); color: var(--cz-ink); background: var(--cz-well); border: 0; border-radius: 10px; padding: 6px 8px; max-width: 60%; line-height: var(--lh-label); }
83
83
  .hi-actsi { justify-content: flex-end; }
84
84
  .hi-actsi .hi-ib { width: 44px; height: 44px; background: var(--cz-well); }
85
85
  .hi-actsi .hi-ib.pri { background: var(--cz-solid); color: var(--cz-onsolid); }
86
- .hi-end { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 16px; background: var(--cz-well); font-size: var(--fs-3); }
86
+ .hi-end { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border-radius: 16px; background: var(--cz-well); font-size: var(--fs-body); line-height: var(--lh-body); }
87
87
  .hi-end p { margin: 0; flex: 1; min-width: 0; color: var(--cz-ink2); }
88
88
  .hi-endi { display: inline-flex; color: var(--cz-ink3); }
89
89
  @media (max-width: 760px) {
@@ -95,13 +95,13 @@
95
95
  .hi-pop .wfi { display: inline-flex; align-items: center; justify-content: center; flex: none; border-radius: 6px; background: var(--cz-well); color: var(--cz-ink2); }
96
96
  .hi-pop .wfi svg { width: 70%; height: 70%; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
97
97
  /* a small form in the Viewer (the Board's Add a stakeholder) */
98
- .hi-form { display: flex; flex-direction: column; gap: 12px; padding: 16px 20px 24px; font-size: var(--fs-3); color: var(--cz-ink); }
98
+ .hi-form { display: flex; flex-direction: column; gap: 12px; padding: 16px 20px 24px; font-size: var(--fs-body); color: var(--cz-ink); line-height: var(--lh-body); }
99
99
  /* the stage chip's picker (pm/ini-more.js stagePick; batch 16 item 5c, FmI2Stage): every stage, the current one marked, the switch, then the endings */
100
- .hi-sp.on { background: var(--cz-bluebg); font-weight: 800; }
101
- .hi-spn { flex: none; width: 22px; height: 22px; border-radius: 7px; background: var(--cz-well); font-style: normal; font-size: var(--fs-1); font-weight: 800; display: inline-flex; align-items: center; justify-content: center; color: var(--cz-ink2); }
100
+ .hi-sp.on { background: var(--cz-bluebg); font-weight: var(--fw-strong); }
101
+ .hi-spn { flex: none; width: 22px; height: 22px; border-radius: 7px; background: var(--cz-well); font-style: normal; font-size: var(--fs-badge); font-weight: var(--fw-strong); display: inline-flex; align-items: center; justify-content: center; color: var(--cz-ink2); line-height: var(--lh-badge); }
102
102
  .hi-spn.ms { transform: rotate(45deg) scale(.7); border-radius: 3px; background: var(--cz-ink3); }
103
103
  .hi-sp.on .hi-spn { background: var(--cz-blue); color: var(--cz-card); }
104
- .hi-spm span { color: var(--cz-ink3); font-size: var(--fs-2); }
104
+ .hi-spm span { color: var(--cz-ink3); font-size: var(--fs-meta); line-height: var(--lh-meta); }
105
105
  .hi-spw { cursor: default; }
106
106
  .hi-spw:hover { background: none; }
107
107
  .hi-spw span { flex: 1; }