privateboard 0.1.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 (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +120 -0
  3. package/dist/cli.js +10502 -0
  4. package/dist/cli.js.map +1 -0
  5. package/package.json +63 -0
  6. package/public/adjourn-overlay.css +253 -0
  7. package/public/agent-overlay.css +444 -0
  8. package/public/agent-overlay.js +604 -0
  9. package/public/agent-profile.css +3230 -0
  10. package/public/agent-profile.js +3329 -0
  11. package/public/app.js +6629 -0
  12. package/public/auto-hide-scroll.js +90 -0
  13. package/public/avatar-skill.js +793 -0
  14. package/public/avatars/chair.svg +98 -0
  15. package/public/avatars/first-principles.svg +122 -0
  16. package/public/avatars/long-horizon.svg +147 -0
  17. package/public/avatars/open_ai.png +0 -0
  18. package/public/avatars/phenomenologist.svg +130 -0
  19. package/public/avatars/socrates.svg +187 -0
  20. package/public/avatars/user-empathy.svg +117 -0
  21. package/public/avatars/value-investor.svg +117 -0
  22. package/public/favicon.svg +10 -0
  23. package/public/fonts/agent-Italic.woff2 +0 -0
  24. package/public/fonts/human-sans.woff2 +0 -0
  25. package/public/icons.css +103 -0
  26. package/public/models-cache.js +57 -0
  27. package/public/new-agent.css +1359 -0
  28. package/public/new-agent.js +675 -0
  29. package/public/onboarding.css +628 -0
  30. package/public/onboarding.js +782 -0
  31. package/public/prototype-dashboard.html +7596 -0
  32. package/public/report/spines/a16z-thesis.css +1055 -0
  33. package/public/report/spines/anthropic-essay.css +556 -0
  34. package/public/report/spines/boardroom-dark.css +1082 -0
  35. package/public/report/spines/gartner-note.css +538 -0
  36. package/public/report/spines/mckinsey-deck.css +523 -0
  37. package/public/report/spines/openai-paper.css +516 -0
  38. package/public/report.html +1417 -0
  39. package/public/room-settings.css +895 -0
  40. package/public/room-settings.js +1039 -0
  41. package/public/themes.css +338 -0
  42. package/public/user-settings.css +1236 -0
  43. package/public/user-settings.js +1291 -0
@@ -0,0 +1,1082 @@
1
+ /* Boardroom Dark · default spine. Research-dossier discipline in a
2
+ restrained dark palette. Lime is reserved for the load-bearing
3
+ anchors only (Bottom Line side bar, P0 badge, high-confidence
4
+ marks). All other emphasis is carried by typography + spacing. */
5
+ :root {
6
+ --bg: #0A0A0A;
7
+ --panel: #131312;
8
+ --panel-2: #1A1A18;
9
+ --panel-3: #21211E;
10
+ --line-bright: #3A3934;
11
+ --line-strong: #4D4B45;
12
+ --text: #C8C5BE;
13
+ --text-soft: #8E8B83;
14
+ --text-dim: #5C5A52;
15
+ --text-faint: #5C5A4D;
16
+ /* Quiet near-white that replaces lime in decorative roles
17
+ (chapter numbers, list numerals, rule lines, micro-labels). */
18
+ --accent: #B6B0A2;
19
+ --accent-faint: #6B6660;
20
+ /* Load-bearing accent · Bottom Line top rule, P0 priority badge,
21
+ confidence-high text mark. Token name kept as `--lime` so every
22
+ existing callsite stays valid; the value is now warm gold to
23
+ match the Regent brand and the report's italic-em accent. */
24
+ --lime: #C9A46B;
25
+ --lime-dim: #5C4422;
26
+ --red: #B5706A;
27
+ /* Warm gold for italic accents in headlines (mirrors the Anthropic
28
+ prototype's `clay-deep` use). Used only on `em` inside h2/h3/rec
29
+ action / nq question / etc. — never as a decorative fill. */
30
+ --em: #C9A46B;
31
+ --em-deep: #B58950;
32
+ /* Sans + serif both carry explicit CJK fallbacks so Chinese body
33
+ text doesn't drop characters when "Human Sans"/"Inter"/Charter
34
+ load but lack CJK glyphs. Songti SC / STSong sit at the deep end
35
+ of every cascade — they're guaranteed-present on Mac and serve
36
+ as a last-resort glyph source if the preferred CJK families
37
+ aren't available (some print / headless contexts). */
38
+ --mono: "Human Sans", "Inter", -apple-system, BlinkMacSystemFont,
39
+ "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",
40
+ "Source Han Sans CN", "Noto Sans CJK SC",
41
+ "Songti SC", "STSong",
42
+ "Segoe UI", system-ui, sans-serif;
43
+ --sans: "Human Sans", "Inter", -apple-system, BlinkMacSystemFont,
44
+ "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",
45
+ "Source Han Sans CN", "Noto Sans CJK SC",
46
+ "Songti SC", "STSong",
47
+ "Segoe UI", system-ui, sans-serif;
48
+ --font-human: "Inter", -apple-system, BlinkMacSystemFont,
49
+ "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",
50
+ "Source Han Sans CN", "Songti SC",
51
+ system-ui, sans-serif;
52
+ --serif: "Charter", "Source Serif Pro", "Iowan Old Style",
53
+ "Georgia", "Songti SC", "STSong", "Source Han Serif CN",
54
+ "Noto Serif CJK SC", "PingFang SC", serif;
55
+ }
56
+
57
+ * { box-sizing: border-box; margin: 0; padding: 0; }
58
+
59
+ html, body {
60
+ background: var(--bg);
61
+ color: var(--text);
62
+ font-family: var(--sans);
63
+ font-size: 16px;
64
+ line-height: 1.72;
65
+ -webkit-font-smoothing: antialiased;
66
+ text-rendering: optimizeLegibility;
67
+ min-height: 100vh;
68
+ }
69
+
70
+ ::-webkit-scrollbar { width: 6px; height: 6px; }
71
+ ::-webkit-scrollbar-track { background: var(--bg); }
72
+ ::-webkit-scrollbar-thumb { background: var(--line-bright); }
73
+
74
+ .doc {
75
+ max-width: 880px;
76
+ margin: 0 auto;
77
+ padding: 0 0 96px;
78
+ }
79
+
80
+ /* Top frame — research-note brand bar. Anthropic-style: serif name on
81
+ the left (with a small accent dot mark), mono meta + back link on
82
+ the right. Reads like a journal masthead. */
83
+ .top-rule {
84
+ background: var(--bg);
85
+ border-bottom: 0.5px solid var(--line-bright);
86
+ padding: 18px 32px;
87
+ display: flex;
88
+ justify-content: space-between;
89
+ align-items: center;
90
+ gap: 14px;
91
+ flex-wrap: wrap;
92
+ }
93
+ .top-rule .crumb {
94
+ display: inline-flex;
95
+ align-items: center;
96
+ gap: 12px;
97
+ font-family: var(--serif);
98
+ font-size: 16px;
99
+ font-weight: 500;
100
+ letter-spacing: -0.005em;
101
+ color: var(--text);
102
+ text-transform: none;
103
+ }
104
+ .top-rule .crumb::before {
105
+ content: "";
106
+ width: 9px;
107
+ height: 9px;
108
+ background: var(--em);
109
+ border-radius: 50%;
110
+ flex: 0 0 auto;
111
+ }
112
+ .top-rule .crumb .accent {
113
+ color: var(--text-faint);
114
+ font-style: italic;
115
+ font-weight: 400;
116
+ }
117
+ .top-rule .back {
118
+ font-family: var(--mono);
119
+ font-size: 11px;
120
+ letter-spacing: 0.04em;
121
+ text-transform: none;
122
+ color: var(--text-soft);
123
+ text-decoration: none;
124
+ border: none;
125
+ padding: 0;
126
+ }
127
+ .top-rule .back::before { content: "← "; color: var(--text-faint); }
128
+ .top-rule .back:hover { color: var(--text); }
129
+
130
+ .cover {
131
+ padding: 64px 32px 48px;
132
+ border-bottom: 1px solid var(--line-bright);
133
+ background: var(--bg);
134
+ position: relative;
135
+ }
136
+ /* Kicker — research-note dateline. Anthropic-style: mono uppercase
137
+ words separated by a 16×1px horizontal hairline (not a vertical
138
+ pipe). Reads quiet and editorial. */
139
+ .cover-tag {
140
+ display: inline-flex;
141
+ align-items: center;
142
+ gap: 14px;
143
+ font-family: var(--mono);
144
+ font-size: 11px;
145
+ letter-spacing: 0.22em;
146
+ text-transform: uppercase;
147
+ color: var(--em-deep);
148
+ font-weight: 500;
149
+ margin: 0 0 56px;
150
+ }
151
+ .cover-tag > span:first-child {
152
+ color: var(--em-deep);
153
+ font-weight: 600;
154
+ }
155
+ .cover-tag .pipe {
156
+ width: 16px;
157
+ height: 1px;
158
+ background: var(--em);
159
+ opacity: 0.7;
160
+ }
161
+ .cover-tag .secondary { color: var(--text-faint); font-weight: 500; letter-spacing: 0.18em; }
162
+
163
+ /* Title — serif weight 400, magazine scale. Italic accents (em) carry
164
+ the load-bearing word in warm gold. */
165
+ .cover-title {
166
+ font-family: var(--serif);
167
+ font-size: 50px;
168
+ font-weight: 400;
169
+ line-height: 1.08;
170
+ letter-spacing: -0.02em;
171
+ color: var(--text);
172
+ margin-bottom: 24px;
173
+ max-width: 800px;
174
+ }
175
+ .cover-title em {
176
+ font-style: italic;
177
+ color: var(--em);
178
+ }
179
+ .cover-title strong { font-weight: 500; color: var(--text); }
180
+
181
+ /* Deck — serif italic subtitle. The room's subject question lives here
182
+ and now reads like an editorial deck. */
183
+ .cover-deck {
184
+ font-family: var(--serif);
185
+ font-size: 21px;
186
+ font-weight: 400;
187
+ font-style: italic;
188
+ line-height: 1.5;
189
+ color: var(--text-soft);
190
+ max-width: 720px;
191
+ margin-bottom: 56px;
192
+ letter-spacing: -0.005em;
193
+ }
194
+ .cover-deck strong { color: var(--text); font-weight: 500; font-style: italic; }
195
+
196
+ .cover-byline {
197
+ display: grid;
198
+ grid-template-columns: repeat(4, 1fr);
199
+ gap: 28px;
200
+ padding-top: 24px;
201
+ border-top: 0.5px solid var(--line-bright);
202
+ }
203
+ @media (max-width: 720px) {
204
+ .cover-byline { grid-template-columns: repeat(2, 1fr); gap: 20px; }
205
+ }
206
+ .byline-block .label {
207
+ font-family: var(--mono);
208
+ font-size: 9.5px;
209
+ letter-spacing: 0.28em;
210
+ text-transform: uppercase;
211
+ color: var(--text-faint);
212
+ font-weight: 600;
213
+ margin-bottom: 8px;
214
+ }
215
+ .byline-block .value {
216
+ font-size: 13.5px;
217
+ color: var(--text);
218
+ font-weight: 500;
219
+ line-height: 1.45;
220
+ }
221
+ .byline-block .signed-avatars { display: flex; margin-top: 4px; }
222
+ .byline-block .signed-avatars img {
223
+ width: 22px; height: 22px;
224
+ image-rendering: pixelated;
225
+ image-rendering: crisp-edges;
226
+ border: 0.5px solid var(--line-strong);
227
+ background: var(--bg);
228
+ margin-left: -6px;
229
+ }
230
+ .byline-block .signed-avatars img:first-child { margin-left: 0; }
231
+
232
+ .cover-versions {
233
+ margin-top: 22px;
234
+ padding-top: 22px;
235
+ border-top: 0.5px solid var(--line-bright);
236
+ display: flex;
237
+ align-items: center;
238
+ gap: 12px;
239
+ flex-wrap: wrap;
240
+ }
241
+ .cover-versions-label {
242
+ font-family: var(--mono);
243
+ font-size: 9.5px;
244
+ letter-spacing: 0.28em;
245
+ text-transform: uppercase;
246
+ color: var(--text-faint);
247
+ font-weight: 600;
248
+ }
249
+ .cover-version {
250
+ display: inline-flex;
251
+ align-items: center;
252
+ gap: 8px;
253
+ padding: 5px 10px;
254
+ border: 0.5px solid var(--line-bright);
255
+ color: var(--text-soft);
256
+ text-decoration: none;
257
+ font-family: var(--mono);
258
+ font-size: 10px;
259
+ letter-spacing: 0.1em;
260
+ text-transform: uppercase;
261
+ white-space: nowrap;
262
+ transition: border-color 0.12s, color 0.12s, background 0.12s;
263
+ }
264
+ .cover-version:hover { border-color: var(--text-soft); color: var(--text); }
265
+ .cover-version.active {
266
+ border-color: var(--accent);
267
+ color: var(--accent);
268
+ background: transparent;
269
+ pointer-events: none;
270
+ }
271
+ .cover-version .num { font-weight: 700; }
272
+ .cover-version .sep { color: var(--text-faint); }
273
+ .cover-version .hint {
274
+ color: var(--text-faint);
275
+ font-weight: 500;
276
+ text-transform: none;
277
+ letter-spacing: 0.04em;
278
+ max-width: 180px;
279
+ overflow: hidden;
280
+ text-overflow: ellipsis;
281
+ }
282
+ .cover-version.active .hint { color: var(--text-soft); }
283
+
284
+ .body { padding: 0 32px; color: var(--text); }
285
+
286
+ /* Headlines · serif weight 400, italic accents in warm gold. Sans
287
+ stays for body and mono kickers. */
288
+ .body h1, .body h2, .body h3, .body h4 {
289
+ font-family: var(--serif);
290
+ color: var(--text);
291
+ font-weight: 400;
292
+ line-height: 1.2;
293
+ letter-spacing: -0.012em;
294
+ }
295
+ .body h2 em, .body h3 em, .body h4 em {
296
+ font-style: italic;
297
+ color: var(--em);
298
+ }
299
+ .body h1 { display: none; }
300
+ .body .chapter-num {
301
+ display: block;
302
+ font-family: var(--mono);
303
+ font-size: 10px;
304
+ color: var(--text-faint);
305
+ font-weight: 600;
306
+ letter-spacing: 0.28em;
307
+ text-transform: uppercase;
308
+ margin: 64px 0 14px;
309
+ padding-bottom: 12px;
310
+ border-bottom: 0.5px solid var(--line-bright);
311
+ }
312
+ .body h2 {
313
+ font-size: 34px;
314
+ line-height: 1.18;
315
+ margin: 0 0 22px;
316
+ padding: 0;
317
+ border: none;
318
+ max-width: 760px;
319
+ letter-spacing: -0.018em;
320
+ }
321
+ .body h2::before { display: none; }
322
+ .body h3 {
323
+ font-size: 22px;
324
+ color: var(--text);
325
+ text-transform: none;
326
+ letter-spacing: -0.012em;
327
+ line-height: 1.28;
328
+ margin: 32px 0 12px;
329
+ }
330
+ /* H4 stays mono — utilitarian sub-label inside dense sections. */
331
+ .body h4 {
332
+ font-family: var(--mono);
333
+ font-size: 11px;
334
+ margin: 22px 0 8px;
335
+ color: var(--text-faint);
336
+ text-transform: uppercase;
337
+ letter-spacing: 0.22em;
338
+ font-weight: 600;
339
+ }
340
+ .body p { margin: 14px 0; line-height: 1.78; color: var(--text-soft); font-size: 16px; }
341
+ .body p strong { color: var(--text); font-weight: 600; }
342
+ .body p em { color: var(--em-deep); font-style: italic; }
343
+ .body ul, .body ol { margin: 14px 0 18px 22px; }
344
+ .body li { margin: 8px 0; line-height: 1.72; color: var(--text-soft); font-size: 16px; }
345
+ .body li strong { color: var(--text); font-weight: 600; }
346
+ .body li em { color: var(--em-deep); font-style: italic; }
347
+ .body ol li::marker { color: var(--text-faint); font-weight: 500; font-family: var(--mono); font-size: 13px; }
348
+ .body strong { color: var(--text); font-weight: 600; }
349
+ .body em { color: var(--em-deep); font-style: italic; }
350
+ .body code {
351
+ background: var(--panel-2);
352
+ border: 0.5px solid var(--line-bright);
353
+ padding: 1px 7px;
354
+ font-family: "SF Mono", Menlo, Consolas, monospace;
355
+ font-size: 11.5px;
356
+ color: var(--text);
357
+ letter-spacing: 0.02em;
358
+ }
359
+ .body code.badge-confidence-high { color: var(--lime); border-color: var(--lime-dim); }
360
+ .body code.badge-confidence-medium { color: #C99826; border-color: rgba(201, 152, 38, 0.35); }
361
+ .body code.badge-confidence-low { color: #C85A5A; border-color: rgba(200, 90, 90, 0.35); }
362
+ .body code.badge-priority-p0 {
363
+ background: var(--lime);
364
+ color: var(--bg);
365
+ border-color: var(--lime);
366
+ font-weight: 700;
367
+ letter-spacing: 0.12em;
368
+ }
369
+ .body code.badge-priority-p1 { background: var(--panel-3); color: var(--text); font-weight: 700; }
370
+ .body code.badge-priority-p2 { color: var(--text-soft); }
371
+
372
+ .body blockquote {
373
+ padding: 8px 0 8px 28px;
374
+ margin: 22px 0;
375
+ color: var(--text-soft);
376
+ font-style: italic;
377
+ font-size: 16.5px;
378
+ line-height: 1.6;
379
+ position: relative;
380
+ }
381
+ .body blockquote::before {
382
+ content: "“";
383
+ position: absolute;
384
+ left: 0;
385
+ top: -4px;
386
+ font-size: 32px;
387
+ color: var(--text-faint);
388
+ font-style: normal;
389
+ line-height: 1;
390
+ }
391
+ .body blockquote p { margin: 4px 0; }
392
+ .body blockquote em { color: var(--text); font-style: italic; }
393
+ .body blockquote strong { color: var(--text); font-style: normal; }
394
+
395
+ /* Bottom Line · the report's anchor. Restraint over decoration —
396
+ thin top double-rule, serif italic judgement, no slab tint shouts. */
397
+ .body section.section-bottom-line {
398
+ background: transparent;
399
+ margin: 0 0 56px;
400
+ padding: 36px 0 32px;
401
+ border-top: 1.5px solid var(--text);
402
+ border-bottom: 0.5px solid var(--line-bright);
403
+ position: relative;
404
+ }
405
+ .body section.section-bottom-line::before {
406
+ content: "";
407
+ position: absolute;
408
+ top: -1.5px;
409
+ left: 0;
410
+ width: 56px;
411
+ height: 1.5px;
412
+ background: var(--lime);
413
+ }
414
+ .body h2.section-bottom-line {
415
+ font-size: 10.5px;
416
+ color: var(--text-faint);
417
+ text-transform: uppercase;
418
+ letter-spacing: 0.28em;
419
+ margin: 0 0 18px;
420
+ padding-top: 0;
421
+ line-height: 1;
422
+ font-weight: 600;
423
+ font-family: var(--mono);
424
+ }
425
+ .body section.section-bottom-line p {
426
+ font-family: var(--serif);
427
+ font-size: 22px;
428
+ line-height: 1.42;
429
+ margin: 12px 0;
430
+ color: var(--text);
431
+ max-width: 720px;
432
+ letter-spacing: -0.005em;
433
+ font-weight: 400;
434
+ }
435
+ .body section.section-bottom-line p:first-child em {
436
+ color: var(--text);
437
+ font-style: italic;
438
+ font-weight: 400;
439
+ font-family: var(--serif);
440
+ }
441
+ .body section.section-bottom-line p:not(:first-child) {
442
+ font-size: 14px;
443
+ line-height: 1.6;
444
+ color: var(--text-soft);
445
+ margin-top: 18px;
446
+ }
447
+ .body section.section-bottom-line p strong { color: var(--text); }
448
+ .body section.section-bottom-line + .chapter-num,
449
+ .body .chapter-num.before-bottom-line { display: none; }
450
+
451
+ /* Thesis · anchor substitute. Pull-statement treatment, no panel. */
452
+ .body h2.section-thesis {
453
+ font-size: 10.5px;
454
+ color: var(--text-faint);
455
+ text-transform: uppercase;
456
+ letter-spacing: 0.22em;
457
+ margin: 0 0 18px;
458
+ line-height: 1;
459
+ }
460
+ .body section.section-thesis {
461
+ margin: 0 0 56px;
462
+ padding: 8px 0 32px;
463
+ border-bottom: 1px solid var(--line-bright);
464
+ }
465
+ .body section.section-thesis p:first-child {
466
+ font-family: var(--serif);
467
+ font-size: 28px;
468
+ line-height: 1.28;
469
+ letter-spacing: -0.005em;
470
+ color: var(--text);
471
+ font-weight: 400;
472
+ font-style: italic;
473
+ margin: 0 0 18px;
474
+ }
475
+ .body section.section-thesis p:first-child em { color: var(--text); font-style: italic; font-family: var(--serif); }
476
+ .body section.section-thesis p:not(:first-child) {
477
+ font-size: 14.5px;
478
+ line-height: 1.65;
479
+ color: var(--text-soft);
480
+ }
481
+
482
+ /* Working hypothesis · essay-style anchor substitute. */
483
+ .body section.section-working-hypothesis {
484
+ margin-bottom: 40px;
485
+ }
486
+ .body section.section-working-hypothesis p {
487
+ font-size: 17px;
488
+ line-height: 1.7;
489
+ color: var(--text);
490
+ }
491
+ .body section.section-working-hypothesis p {
492
+ font-family: var(--serif);
493
+ font-size: 17.5px;
494
+ line-height: 1.72;
495
+ color: var(--text);
496
+ font-weight: 400;
497
+ }
498
+ .body section.section-working-hypothesis p:first-child::first-letter {
499
+ font-family: var(--serif);
500
+ font-size: 44px;
501
+ font-weight: 600;
502
+ float: left;
503
+ line-height: 1;
504
+ padding: 4px 10px 0 0;
505
+ color: var(--text);
506
+ }
507
+
508
+ .body section.section-frame-shift { margin-bottom: 32px; }
509
+ .body section.section-frame-shift p:first-child { font-size: 17px; line-height: 1.6; color: var(--text); }
510
+
511
+ /* Headline Findings · 3 pillars on wide screens. */
512
+ .body section.section-headline-findings .pillars-grid {
513
+ display: grid;
514
+ grid-template-columns: repeat(3, 1fr);
515
+ gap: 32px;
516
+ margin: 28px 0 16px;
517
+ }
518
+ @media (max-width: 760px) {
519
+ .body section.section-headline-findings .pillars-grid { grid-template-columns: 1fr; gap: 28px; }
520
+ }
521
+ .body section.section-headline-findings .pillar {
522
+ border-top: 3px solid var(--text);
523
+ padding-top: 18px;
524
+ }
525
+ .body section.section-headline-findings .pillar .pillar-num {
526
+ font-family: var(--mono);
527
+ font-size: 10px;
528
+ color: var(--text-faint);
529
+ font-weight: 600;
530
+ letter-spacing: 0.28em;
531
+ text-transform: uppercase;
532
+ margin-bottom: 10px;
533
+ }
534
+ .body section.section-headline-findings .pillar h3 {
535
+ font-family: var(--serif);
536
+ font-size: 21px;
537
+ font-weight: 400;
538
+ line-height: 1.28;
539
+ color: var(--text);
540
+ margin: 0 0 12px;
541
+ padding: 0;
542
+ border: none;
543
+ text-transform: none;
544
+ letter-spacing: -0.012em;
545
+ }
546
+ .body section.section-headline-findings .pillar h3 em { font-style: italic; color: var(--em); }
547
+ .body section.section-headline-findings .pillar p,
548
+ .body section.section-headline-findings .pillar li {
549
+ font-size: 14px;
550
+ line-height: 1.65;
551
+ color: var(--text-soft);
552
+ margin: 8px 0;
553
+ }
554
+ .body section.section-headline-findings .pillar p strong,
555
+ .body section.section-headline-findings .pillar li strong { color: var(--text); }
556
+ .body section.section-headline-findings .pillar code.badge-confidence-high { color: var(--lime); }
557
+ .body section.section-headline-findings .pillar code.badge-confidence-medium { color: #C99826; }
558
+ .body section.section-headline-findings .pillar code.badge-confidence-low { color: #C85A5A; }
559
+
560
+ /* Big Ideas · numbered list, lighter than headline-findings. */
561
+ .body section.section-big-ideas ol {
562
+ counter-reset: bigidea;
563
+ list-style: none;
564
+ margin: 22px 0 0;
565
+ padding: 0;
566
+ }
567
+ .body section.section-big-ideas ol > li {
568
+ counter-increment: bigidea;
569
+ position: relative;
570
+ padding: 18px 0 18px 72px;
571
+ border-top: 0.5px solid var(--line-bright);
572
+ line-height: 1.6;
573
+ }
574
+ .body section.section-big-ideas ol > li:last-child { border-bottom: 0.5px solid var(--line-bright); }
575
+ .body section.section-big-ideas ol > li::before {
576
+ content: counter(bigidea);
577
+ position: absolute;
578
+ top: 14px;
579
+ left: 0;
580
+ color: var(--em);
581
+ font-family: var(--serif);
582
+ font-style: italic;
583
+ font-weight: 400;
584
+ font-size: 32px;
585
+ line-height: 1;
586
+ }
587
+ .body section.section-big-ideas ol > li p { margin: 6px 0; font-size: 14.5px; }
588
+ .body section.section-big-ideas ol > li p:first-child strong {
589
+ font-family: var(--serif);
590
+ font-size: 22px;
591
+ font-weight: 500;
592
+ letter-spacing: -0.012em;
593
+ color: var(--text);
594
+ line-height: 1.3;
595
+ }
596
+ .body section.section-big-ideas ol > li p em { color: var(--em-deep); font-style: italic; }
597
+
598
+ .body section.section-convergence blockquote {
599
+ background: transparent;
600
+ padding: 14px 0 14px 0;
601
+ font-style: normal;
602
+ font-size: 14.5px;
603
+ color: var(--text-soft);
604
+ margin: 18px 0;
605
+ border-top: 0.5px solid var(--line-bright);
606
+ border-bottom: 0.5px solid var(--line-bright);
607
+ }
608
+ .body section.section-convergence blockquote::before { display: none; }
609
+ .body section.section-convergence blockquote strong { color: var(--text); }
610
+
611
+ .body section.section-divergence table.md-table { margin: 22px 0; }
612
+ .body section.section-divergence h4 { margin-top: 22px; }
613
+
614
+ .body section.section-planning-assumption {
615
+ background: var(--panel-2);
616
+ border: 0.5px solid var(--line-bright);
617
+ padding: 22px 28px;
618
+ margin: 18px 0 28px;
619
+ position: relative;
620
+ }
621
+ .body section.section-planning-assumption::before {
622
+ content: "";
623
+ position: absolute;
624
+ top: -0.5px;
625
+ left: 0;
626
+ width: 48px;
627
+ height: 1.5px;
628
+ background: var(--accent);
629
+ }
630
+ .body section.section-planning-assumption blockquote {
631
+ background: transparent;
632
+ padding: 0;
633
+ margin: 0;
634
+ color: var(--text);
635
+ font-style: normal;
636
+ font-size: 15px;
637
+ }
638
+ .body section.section-planning-assumption blockquote::before { display: none; }
639
+ .body section.section-planning-assumption blockquote strong:first-child {
640
+ display: block;
641
+ color: var(--text-faint);
642
+ text-transform: uppercase;
643
+ letter-spacing: 0.28em;
644
+ font-size: 10px;
645
+ margin-bottom: 12px;
646
+ font-weight: 600;
647
+ font-family: var(--mono);
648
+ }
649
+ .body section.section-planning-assumption blockquote em { color: var(--text-soft); }
650
+
651
+ /* Recommendations / Considerations · editorial-style cards. Each rec
652
+ reads top-down: rule (priority + 01 + thin line) → action headline →
653
+ rationale prose → inline meta row → italic risk one-liner. */
654
+ .body section.section-recommendations ol,
655
+ .body section.section-considerations ol {
656
+ list-style: none;
657
+ margin: 28px 0 0;
658
+ padding: 0;
659
+ }
660
+ .body section.section-recommendations li.rec-item,
661
+ .body section.section-considerations li.rec-item {
662
+ position: relative;
663
+ padding: 0;
664
+ margin: 44px 0 0;
665
+ list-style: none;
666
+ border: none;
667
+ background: transparent;
668
+ }
669
+ .body section.section-recommendations li.rec-item:first-child,
670
+ .body section.section-considerations li.rec-item:first-child {
671
+ margin-top: 24px;
672
+ }
673
+ .body section.section-recommendations li.rec-item::before,
674
+ .body section.section-considerations li.rec-item::before { display: none; }
675
+
676
+ /* The rule bar at the top of each rec — `01` + `P0` + thin line. */
677
+ .rec-rule {
678
+ display: flex;
679
+ align-items: center;
680
+ gap: 12px;
681
+ margin-bottom: 22px;
682
+ }
683
+ .rec-num {
684
+ font-family: var(--mono);
685
+ font-size: 11px;
686
+ font-weight: 600;
687
+ color: var(--text-faint);
688
+ letter-spacing: 0.28em;
689
+ flex: 0 0 auto;
690
+ }
691
+ .rec-rule code {
692
+ flex: 0 0 auto;
693
+ letter-spacing: 0.12em;
694
+ }
695
+ .rec-rule-line {
696
+ flex: 1 1 auto;
697
+ height: 1px;
698
+ background: var(--line-bright);
699
+ display: block;
700
+ }
701
+ .rec-priority-p0 .rec-rule-line { background: var(--text); height: 1px; }
702
+
703
+ /* Action · serif headline weight 500. The recommendation's takeaway
704
+ reads as a research-note finding, not a button label. */
705
+ .rec-action {
706
+ font-family: var(--serif);
707
+ font-size: 24px;
708
+ line-height: 1.28;
709
+ color: var(--text);
710
+ font-weight: 500;
711
+ letter-spacing: -0.014em;
712
+ margin: 0 0 18px;
713
+ max-width: 68ch;
714
+ }
715
+ .rec-action strong { color: var(--text); font-weight: 500; }
716
+ .rec-action em { color: var(--em); font-style: italic; }
717
+
718
+ /* Rationale · body prose, no label. */
719
+ .rec-rationale {
720
+ font-size: 15px;
721
+ line-height: 1.72;
722
+ color: var(--text-soft);
723
+ margin: 0 0 22px;
724
+ max-width: 70ch;
725
+ }
726
+ .rec-rationale strong { color: var(--text); }
727
+ .rec-rationale em { color: var(--text); font-style: italic; }
728
+
729
+ /* Meta · single inline row. Mono micro-labels next to values, separated
730
+ by middle dots. Wraps gracefully on narrow screens. */
731
+ .rec-meta {
732
+ display: flex;
733
+ flex-wrap: wrap;
734
+ align-items: baseline;
735
+ gap: 6px 12px;
736
+ margin: 0 0 14px;
737
+ font-size: 12.5px;
738
+ line-height: 1.6;
739
+ color: var(--text);
740
+ }
741
+ .rec-meta-pair {
742
+ display: inline-flex;
743
+ align-items: baseline;
744
+ gap: 8px;
745
+ min-width: 0;
746
+ }
747
+ .rec-meta-label {
748
+ font-family: var(--mono);
749
+ font-size: 9.5px;
750
+ color: var(--text-faint);
751
+ letter-spacing: 0.28em;
752
+ text-transform: uppercase;
753
+ font-weight: 600;
754
+ }
755
+ .rec-meta-value {
756
+ color: var(--text);
757
+ font-weight: 500;
758
+ }
759
+ .rec-meta-value em { color: var(--text); font-style: italic; }
760
+ .rec-meta-sep {
761
+ color: var(--text-faint);
762
+ user-select: none;
763
+ }
764
+
765
+ /* Risk · quiet typographic one-liner. Mono uppercase label, em-dash
766
+ separator, italic body. No icon, no red — restraint signals
767
+ seriousness more than alarm color does. */
768
+ .rec-risk {
769
+ display: flex;
770
+ flex-wrap: wrap;
771
+ align-items: baseline;
772
+ gap: 4px 10px;
773
+ font-size: 13px;
774
+ line-height: 1.6;
775
+ color: var(--text-soft);
776
+ margin: 0;
777
+ font-style: italic;
778
+ }
779
+ .rec-risk-prefix {
780
+ flex: 0 0 auto;
781
+ font-family: var(--mono);
782
+ font-style: normal;
783
+ font-size: 9.5px;
784
+ color: var(--text-faint);
785
+ letter-spacing: 0.28em;
786
+ text-transform: uppercase;
787
+ font-weight: 600;
788
+ }
789
+ .rec-risk-sep {
790
+ flex: 0 0 auto;
791
+ color: var(--text-faint);
792
+ font-style: normal;
793
+ }
794
+ .rec-risk-text { flex: 1 1 auto; min-width: 0; }
795
+ .rec-risk-text strong { color: var(--text); font-style: normal; font-weight: 600; }
796
+ .rec-risk-text em { color: var(--text); font-style: italic; }
797
+
798
+ /* The Bet · keeps the older in-prose numbered layout. */
799
+ .body section.section-the-bet ol {
800
+ counter-reset: rec; list-style: none; margin: 24px 0 0; padding: 0;
801
+ }
802
+ .body section.section-the-bet ol > li {
803
+ counter-increment: rec;
804
+ position: relative;
805
+ padding: 22px 0 22px 64px;
806
+ margin: 0;
807
+ line-height: 1.6;
808
+ border-top: 0.5px solid var(--line-bright);
809
+ }
810
+ .body section.section-the-bet ol > li:last-child { border-bottom: 0.5px solid var(--line-bright); }
811
+ .body section.section-the-bet ol > li::before {
812
+ content: counter(rec, decimal-leading-zero);
813
+ position: absolute; top: 24px; left: 0;
814
+ color: var(--accent);
815
+ font-family: var(--mono);
816
+ font-weight: 700;
817
+ font-size: 22px;
818
+ line-height: 1;
819
+ }
820
+ .body section.section-the-bet ol > li p { margin: 6px 0; font-size: 14.5px; }
821
+ .body section.section-the-bet ol > li p:first-child strong { font-size: 16.5px; color: var(--text); }
822
+ .body section.section-the-bet > blockquote {
823
+ margin-top: 24px;
824
+ background: rgba(181, 112, 106, 0.06);
825
+ padding: 14px 20px;
826
+ border-top: 1.5px solid var(--red);
827
+ font-style: normal;
828
+ }
829
+
830
+ /* Why Now · single-callout treatment. */
831
+ .body section.section-why-now {
832
+ background: var(--panel-2);
833
+ border: 0.5px solid var(--line-bright);
834
+ padding: 24px 28px;
835
+ margin: 22px 0 32px;
836
+ position: relative;
837
+ }
838
+ .body section.section-why-now::before {
839
+ content: "";
840
+ position: absolute;
841
+ top: -0.5px;
842
+ left: 0;
843
+ width: 56px;
844
+ height: 1.5px;
845
+ background: var(--accent);
846
+ }
847
+ .body section.section-why-now p { font-size: 14.5px; line-height: 1.65; }
848
+ .body section.section-why-now p:first-child { color: var(--text); font-weight: 500; }
849
+
850
+ /* Two Paths · 2-column comparison block. */
851
+ .body section.section-two-paths .two-paths-grid {
852
+ display: grid;
853
+ grid-template-columns: 1fr 1fr;
854
+ gap: 24px;
855
+ margin: 22px 0;
856
+ }
857
+ @media (max-width: 720px) {
858
+ .body section.section-two-paths .two-paths-grid { grid-template-columns: 1fr; }
859
+ }
860
+ .body section.section-two-paths .path {
861
+ border-top: 2px solid var(--text);
862
+ padding-top: 14px;
863
+ }
864
+ .body section.section-two-paths .path .path-tag {
865
+ font-family: var(--mono);
866
+ font-size: 9.5px;
867
+ letter-spacing: 0.28em;
868
+ text-transform: uppercase;
869
+ color: var(--text-faint);
870
+ font-weight: 600;
871
+ margin-bottom: 8px;
872
+ }
873
+ .body section.section-two-paths .path h3 { font-size: 16px; margin: 0 0 10px; }
874
+ .body section.section-two-paths .path p { font-size: 13.5px; color: var(--text-soft); margin: 6px 0; }
875
+
876
+ .body section.section-pre-mortem table.md-table { margin: 18px 0; }
877
+
878
+ /* New Questions · op-ed style. Top rule (Q1 mono · thin line · director
879
+ name right) → italic display question → why-it-matters body prose.
880
+ Generous whitespace; no boxes. */
881
+ .body section.section-new-questions ol {
882
+ list-style: none;
883
+ margin: 28px 0 0;
884
+ padding: 0;
885
+ }
886
+ .body section.section-new-questions li.nq-item {
887
+ position: relative;
888
+ padding: 0;
889
+ margin: 44px 0 0;
890
+ list-style: none;
891
+ border: none;
892
+ }
893
+ .body section.section-new-questions li.nq-item:first-child { margin-top: 24px; }
894
+ .body section.section-new-questions li.nq-item::before { display: none; }
895
+
896
+ .nq-rule {
897
+ display: flex;
898
+ align-items: center;
899
+ gap: 12px;
900
+ margin-bottom: 22px;
901
+ }
902
+ .nq-num {
903
+ font-family: var(--mono);
904
+ font-size: 11px;
905
+ font-weight: 600;
906
+ color: var(--text-faint);
907
+ letter-spacing: 0.28em;
908
+ flex: 0 0 auto;
909
+ }
910
+ .nq-rule-line {
911
+ flex: 1 1 auto;
912
+ height: 1px;
913
+ background: var(--line-bright);
914
+ display: block;
915
+ }
916
+ .nq-attribution {
917
+ flex: 0 0 auto;
918
+ display: inline-flex;
919
+ align-items: baseline;
920
+ gap: 6px;
921
+ font-family: var(--mono);
922
+ font-size: 10px;
923
+ letter-spacing: 0.28em;
924
+ text-transform: uppercase;
925
+ color: var(--text-faint);
926
+ font-weight: 600;
927
+ }
928
+ .nq-attribution-prefix { color: var(--text-faint); }
929
+ .nq-attribution-who { color: var(--text); font-weight: 600; letter-spacing: 0.18em; }
930
+
931
+ /* Question · serif upright weight 500. Reads like an editorial
932
+ research prompt — restrained but clearly the most important sentence
933
+ in the section. Italic accents in warm gold. */
934
+ .nq-question {
935
+ font-family: var(--serif);
936
+ font-size: 24px;
937
+ line-height: 1.32;
938
+ color: var(--text);
939
+ font-style: normal;
940
+ font-weight: 500;
941
+ letter-spacing: -0.014em;
942
+ margin: 0 0 20px;
943
+ padding: 0;
944
+ border: none;
945
+ background: transparent;
946
+ max-width: 60ch;
947
+ }
948
+ .nq-question strong { color: var(--text); font-weight: 500; }
949
+ .nq-question em { color: var(--em); font-style: italic; }
950
+
951
+ .nq-why {
952
+ font-size: 15px;
953
+ line-height: 1.72;
954
+ color: var(--text-soft);
955
+ margin: 0;
956
+ max-width: 64ch;
957
+ }
958
+ .nq-why strong { color: var(--text); }
959
+ .nq-why em { color: var(--text); font-style: italic; }
960
+
961
+ .body h2.section-methodology {
962
+ margin-top: 80px;
963
+ padding-top: 22px;
964
+ font-size: 11px;
965
+ color: var(--text-faint);
966
+ text-transform: uppercase;
967
+ letter-spacing: 0.22em;
968
+ font-weight: 700;
969
+ border-top: 0.5px solid var(--line-bright);
970
+ }
971
+ .body section.section-methodology { color: var(--text-soft); font-size: 12px; line-height: 1.55; }
972
+ .body section.section-methodology p { margin: 8px 0; }
973
+ .body section.section-methodology em { color: var(--text-faint); font-style: italic; }
974
+ .body section.section-methodology strong {
975
+ color: var(--text);
976
+ font-family: var(--mono);
977
+ font-size: 11.5px;
978
+ }
979
+
980
+ .body table.md-table {
981
+ width: 100%;
982
+ border-collapse: collapse;
983
+ margin: 22px 0 24px;
984
+ font-size: 13.5px;
985
+ border-top: 1.5px solid var(--text);
986
+ }
987
+ .body table.md-table th,
988
+ .body table.md-table td {
989
+ padding: 12px 14px;
990
+ border-bottom: 0.5px solid var(--line-bright);
991
+ text-align: left;
992
+ vertical-align: top;
993
+ line-height: 1.55;
994
+ }
995
+ .body table.md-table th {
996
+ background: transparent;
997
+ color: var(--text-faint);
998
+ font-family: var(--mono);
999
+ font-weight: 700;
1000
+ font-size: 10px;
1001
+ letter-spacing: 0.16em;
1002
+ text-transform: uppercase;
1003
+ border-bottom: 0.5px solid var(--line-strong);
1004
+ padding: 10px 14px;
1005
+ }
1006
+ .body table.md-table td:first-child {
1007
+ font-family: var(--font-human);
1008
+ font-weight: 600;
1009
+ color: var(--text);
1010
+ }
1011
+ .body table.md-table tr:hover td { background: rgba(255, 255, 255, 0.018); }
1012
+
1013
+ .body pre.codeblock {
1014
+ background: var(--panel-2);
1015
+ border: 0.5px solid var(--line-bright);
1016
+ padding: 12px 14px;
1017
+ margin: 14px 0;
1018
+ overflow-x: auto;
1019
+ font-family: "SF Mono", Menlo, Consolas, monospace;
1020
+ font-size: 12px;
1021
+ line-height: 1.5;
1022
+ color: var(--text-soft);
1023
+ }
1024
+ .body pre.codeblock code { background: transparent; border: none; padding: 0; font-size: 12px; }
1025
+
1026
+ /* Mermaid figure · framed like a research-note exhibit. The H3 above
1027
+ each chart already reads as the caption; this is its frame. */
1028
+ .body pre.mermaid {
1029
+ background: var(--panel-2);
1030
+ border-top: 1.5px solid var(--text);
1031
+ border-bottom: 0.5px solid var(--line-bright);
1032
+ padding: 28px 24px 24px;
1033
+ margin: 22px 0 28px;
1034
+ text-align: center;
1035
+ overflow-x: auto;
1036
+ font-family: "SF Mono", Menlo, Consolas, monospace;
1037
+ font-size: 11px;
1038
+ color: var(--text-faint);
1039
+ line-height: 1.4;
1040
+ min-height: 360px;
1041
+ }
1042
+ .body pre.mermaid svg {
1043
+ max-width: 100%;
1044
+ height: auto;
1045
+ display: block;
1046
+ margin: 0 auto;
1047
+ }
1048
+ .body pre.mermaid svg text {
1049
+ font-family: var(--font-human) !important;
1050
+ }
1051
+ /* Tighten mermaid's own title — the H3 above already names the chart,
1052
+ so we hide the duplicate inside the SVG. */
1053
+ .body pre.mermaid svg .quadrant-chart > .quadrant-title,
1054
+ .body pre.mermaid svg text.quadrant-title { display: none; }
1055
+ /* Section heading just before a mermaid chart reads as an exhibit caption. */
1056
+ .body section.section-options-analysis h3,
1057
+ .body h3 + pre.mermaid {
1058
+ /* leave the existing H3 styling — the framing comes from pre.mermaid above. */
1059
+ }
1060
+
1061
+ .foot-rule {
1062
+ margin: 56px 32px 0;
1063
+ padding: 18px 0;
1064
+ border-top: 0.5px solid var(--line-bright);
1065
+ text-align: center;
1066
+ font-family: var(--mono);
1067
+ font-size: 10px;
1068
+ color: var(--text-faint);
1069
+ text-transform: uppercase;
1070
+ letter-spacing: 0.22em;
1071
+ }
1072
+
1073
+ .placeholder {
1074
+ text-align: center;
1075
+ padding: 120px 32px;
1076
+ color: var(--text-soft);
1077
+ font-family: var(--mono);
1078
+ text-transform: uppercase;
1079
+ letter-spacing: 0.18em;
1080
+ font-size: 11px;
1081
+ }
1082
+ .placeholder.error { color: var(--red); }