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,1055 @@
1
+ /* a16z Thesis · investment-judgement spine, redesigned as a serious
2
+ institutional research note. ONE paper surface throughout (no dark
3
+ cover, no panel washes). Section emphasis is purely typographic —
4
+ top rules + mono kickers — and gold is restricted to thin lines and
5
+ small marks. Built to read like a confidential advisory memo. */
6
+ :root {
7
+ /* Single paper surface · warm off-white, not cream. Cream feels
8
+ editorial-warm; off-white feels institutional. */
9
+ --bg: #F7F3E8;
10
+ --paper: #F7F3E8;
11
+ --paper-soft: #F7F3E8;
12
+ --paper-deep: #F7F3E8;
13
+ --surface: #F7F3E8;
14
+
15
+ /* Ink (text on paper) */
16
+ --ink: #14110C;
17
+ --ink-soft: #38332B;
18
+ --ink-mid: #57503F;
19
+ --ink-faint: #847B65;
20
+ --ink-muted: #B0A78D;
21
+
22
+ /* Rules — restrained */
23
+ --rule: #DCD3BD;
24
+ --rule-soft: #E5DECC;
25
+ --rule-strong: #BCB39A;
26
+ --rule-ink: #14110C;
27
+
28
+ /* Single accent · gold (matches the 私董会 brand). Used ONLY for
29
+ thin rules and small marks — never as a background fill. */
30
+ --gold: #8B6A2E;
31
+ --gold-deep: #5E4818;
32
+ --gold-soft: #A8843A;
33
+ --gold-pale: #C4A865;
34
+
35
+ /* Risk-only — text + rule, no fill */
36
+ --oxblood: #7A2E1A;
37
+ --oxblood-deep: #4F1D10;
38
+
39
+ /* Confidence — text only, no fill */
40
+ --conf-high: #3F5C2F;
41
+ --conf-mid: #6E541A;
42
+ --conf-low: #7A2E1A;
43
+
44
+ /* Type · CJK fallbacks anchored on Songti SC for headless reach */
45
+ --serif: "Charter", "Source Serif Pro", "Iowan Old Style", Georgia,
46
+ "Songti SC", "STSong", "Source Han Serif CN", "Noto Serif CJK SC", serif;
47
+ --sans: "Inter", "Helvetica Neue", "Arial", -apple-system, BlinkMacSystemFont,
48
+ "Songti SC", "STSong", "Hiragino Sans GB", "PingFang SC",
49
+ "Source Han Sans CN", "Noto Sans CJK SC", sans-serif;
50
+ --mono: "SF Mono", "JetBrains Mono", "Menlo",
51
+ "Songti SC", "STSong", monospace;
52
+ }
53
+
54
+ * { box-sizing: border-box; margin: 0; padding: 0; }
55
+ html, body {
56
+ background: var(--paper);
57
+ color: var(--ink);
58
+ font-family: var(--sans);
59
+ font-size: 14.5px;
60
+ line-height: 1.65;
61
+ -webkit-font-smoothing: antialiased;
62
+ text-rendering: optimizeLegibility;
63
+ font-feature-settings: "kern" 1, "liga" 1, "calt" 1;
64
+ min-height: 100vh;
65
+ }
66
+ ::-webkit-scrollbar { width: 6px; height: 6px; }
67
+ ::-webkit-scrollbar-track { background: var(--paper); }
68
+ ::-webkit-scrollbar-thumb { background: var(--rule-strong); }
69
+
70
+ .doc { max-width: 880px; margin: 0 auto; padding: 0 0 80px; }
71
+
72
+ /* ─── Top rule · screen chrome — single hairline ───────────── */
73
+ .top-rule {
74
+ background: var(--paper);
75
+ color: var(--ink-faint);
76
+ padding: 14px 32px;
77
+ display: flex; justify-content: space-between; align-items: center;
78
+ gap: 14px;
79
+ font-family: var(--mono);
80
+ font-size: 10.5px;
81
+ letter-spacing: 0.18em;
82
+ text-transform: uppercase;
83
+ border-bottom: 1px solid var(--rule);
84
+ }
85
+ .top-rule .crumb { color: var(--ink); font-weight: 500; letter-spacing: 0.2em; }
86
+ .top-rule .crumb .accent { color: var(--gold); margin: 0 4px; }
87
+ .top-rule .back, .top-rule .download {
88
+ color: var(--ink-faint);
89
+ text-decoration: none;
90
+ letter-spacing: 0.16em;
91
+ font-size: 10px;
92
+ border: none;
93
+ background: none;
94
+ cursor: pointer;
95
+ padding: 0;
96
+ font-family: var(--mono);
97
+ }
98
+ .top-rule .back:hover, .top-rule .download:hover { color: var(--gold); }
99
+ .top-rule .download::before { content: "↓ "; color: var(--gold); }
100
+
101
+ /* ─── Cover · same paper, typographic only ─────────────────── */
102
+ .cover {
103
+ background: var(--paper);
104
+ color: var(--ink);
105
+ padding: 72px 56px 64px;
106
+ position: relative;
107
+ border-bottom: 1px solid var(--rule);
108
+ }
109
+ /* Single thin gold rule across the top — the only ornament. */
110
+ .cover::before {
111
+ content: "";
112
+ position: absolute;
113
+ top: 0; left: 56px; right: 56px;
114
+ height: 1px;
115
+ background: var(--gold);
116
+ }
117
+
118
+ .cover-tag {
119
+ display: flex;
120
+ align-items: center;
121
+ gap: 14px;
122
+ font-family: var(--mono);
123
+ font-size: 10px;
124
+ letter-spacing: 0.26em;
125
+ text-transform: uppercase;
126
+ color: var(--gold);
127
+ font-weight: 500;
128
+ margin-bottom: 64px;
129
+ }
130
+ .cover-tag .pipe { width: 1px; height: 11px; background: var(--rule-strong); }
131
+ .cover-tag .secondary { color: var(--ink-faint); font-weight: 400; letter-spacing: 0.22em; }
132
+
133
+ .cover-title {
134
+ font-family: var(--serif);
135
+ font-size: clamp(30px, 3.6vw, 38px);
136
+ font-weight: 500;
137
+ line-height: 1.22;
138
+ letter-spacing: -0.012em;
139
+ color: var(--ink);
140
+ margin-bottom: 22px;
141
+ max-width: 720px;
142
+ }
143
+ .cover-title:lang(zh), .cover-title:lang(ja), .cover-title:lang(ko) {
144
+ letter-spacing: 0;
145
+ font-weight: 500;
146
+ font-size: clamp(26px, 3.2vw, 34px);
147
+ line-height: 1.28;
148
+ }
149
+
150
+ .cover-deck {
151
+ font-family: var(--sans);
152
+ font-size: 14px;
153
+ font-weight: 400;
154
+ line-height: 1.65;
155
+ color: var(--ink-soft);
156
+ max-width: 600px;
157
+ margin-bottom: 56px;
158
+ }
159
+ .cover-deck strong { color: var(--ink); font-weight: 500; }
160
+
161
+ .cover-byline {
162
+ display: grid;
163
+ grid-template-columns: repeat(4, 1fr);
164
+ gap: 26px;
165
+ padding-top: 26px;
166
+ border-top: 1px solid var(--rule);
167
+ }
168
+ @media (max-width: 720px) { .cover-byline { grid-template-columns: repeat(2, 1fr); gap: 22px; } }
169
+ .byline-block .label {
170
+ font-family: var(--mono);
171
+ font-size: 9.5px;
172
+ letter-spacing: 0.24em;
173
+ text-transform: uppercase;
174
+ color: var(--gold);
175
+ font-weight: 500;
176
+ margin-bottom: 8px;
177
+ }
178
+ .byline-block .value {
179
+ font-family: var(--sans);
180
+ font-size: 12.5px;
181
+ color: var(--ink);
182
+ font-weight: 400;
183
+ line-height: 1.5;
184
+ }
185
+ .byline-block .signed-avatars { display: flex; margin-top: 6px; }
186
+ .byline-block .signed-avatars img {
187
+ width: 22px; height: 22px;
188
+ border: 1px solid var(--rule-strong);
189
+ background: var(--paper);
190
+ margin-left: -5px;
191
+ border-radius: 50%;
192
+ }
193
+ .byline-block .signed-avatars img:first-child { margin-left: 0; }
194
+
195
+ .cover-versions {
196
+ margin-top: 22px;
197
+ padding-top: 22px;
198
+ border-top: 1px solid var(--rule);
199
+ display: flex; gap: 8px; flex-wrap: wrap; align-items: center;
200
+ }
201
+ .cover-versions-label {
202
+ font-family: var(--mono);
203
+ font-size: 9.5px;
204
+ letter-spacing: 0.24em;
205
+ text-transform: uppercase;
206
+ color: var(--ink-faint);
207
+ font-weight: 500;
208
+ }
209
+ .cover-version {
210
+ display: inline-flex; align-items: center; gap: 7px;
211
+ padding: 4px 10px;
212
+ border: 1px solid var(--rule-strong);
213
+ color: var(--ink-faint);
214
+ text-decoration: none;
215
+ font-family: var(--mono);
216
+ font-size: 10px;
217
+ letter-spacing: 0.1em;
218
+ text-transform: uppercase;
219
+ }
220
+ .cover-version:hover { border-color: var(--gold); color: var(--gold); }
221
+ .cover-version.active { border-color: var(--gold); color: var(--gold); pointer-events: none; }
222
+ .cover-version .num { font-weight: 600; }
223
+ .cover-version .sep { opacity: 0.4; }
224
+ .cover-version .hint { text-transform: none; letter-spacing: 0.04em; max-width: 160px; overflow: hidden; text-overflow: ellipsis; }
225
+
226
+ /* ─── Body base ──────────────────────────────────────────────── */
227
+ .body { padding: 56px 56px 0; color: var(--ink); }
228
+ .body h1, .body h2, .body h3, .body h4 {
229
+ font-family: var(--serif);
230
+ color: var(--ink);
231
+ font-weight: 600;
232
+ line-height: 1.22;
233
+ letter-spacing: -0.014em;
234
+ }
235
+ .body h1 { display: none; }
236
+
237
+ .body .chapter-num {
238
+ display: block;
239
+ font-family: var(--mono);
240
+ font-size: 10px;
241
+ color: var(--gold);
242
+ font-weight: 500;
243
+ letter-spacing: 0.26em;
244
+ text-transform: uppercase;
245
+ margin: 56px 0 12px;
246
+ }
247
+ .body h2 {
248
+ font-size: 24px;
249
+ line-height: 1.24;
250
+ margin: 0 0 18px;
251
+ max-width: 720px;
252
+ letter-spacing: -0.018em;
253
+ font-weight: 600;
254
+ }
255
+ .body h3 {
256
+ font-size: 16px;
257
+ margin: 26px 0 10px;
258
+ letter-spacing: -0.005em;
259
+ font-weight: 600;
260
+ }
261
+ .body h4 {
262
+ font-family: var(--mono);
263
+ font-size: 11px;
264
+ margin: 18px 0 8px;
265
+ text-transform: uppercase;
266
+ letter-spacing: 0.18em;
267
+ color: var(--ink-faint);
268
+ font-weight: 500;
269
+ }
270
+ .body p {
271
+ margin: 12px 0;
272
+ line-height: 1.7;
273
+ color: var(--ink-soft);
274
+ font-size: 14.5px;
275
+ }
276
+ .body ul, .body ol { margin: 12px 0 16px 22px; }
277
+ .body li { margin: 6px 0; line-height: 1.65; color: var(--ink-soft); font-size: 14px; }
278
+ .body strong { color: var(--ink); font-weight: 600; }
279
+ .body em { color: var(--gold-deep); font-style: italic; }
280
+
281
+ /* Inline code · refined paper chip with hairline border, no fill */
282
+ .body code {
283
+ background: transparent;
284
+ border: 1px solid var(--rule-strong);
285
+ padding: 1px 7px;
286
+ font-family: var(--mono);
287
+ font-size: 11.5px;
288
+ color: var(--ink);
289
+ letter-spacing: 0.04em;
290
+ border-radius: 2px;
291
+ font-weight: 500;
292
+ }
293
+ .body code.badge-confidence-high { color: var(--conf-high); border-color: rgba(63, 92, 47, 0.4); }
294
+ .body code.badge-confidence-medium { color: var(--conf-mid); border-color: rgba(110, 84, 26, 0.4); }
295
+ .body code.badge-confidence-low { color: var(--conf-low); border-color: rgba(122, 46, 26, 0.4); }
296
+ .body code.badge-priority-p0 {
297
+ background: var(--ink); color: var(--paper); border-color: var(--ink);
298
+ font-weight: 600; letter-spacing: 0.14em;
299
+ }
300
+ .body code.badge-priority-p1 {
301
+ background: transparent; color: var(--ink); border-color: var(--ink);
302
+ font-weight: 600; letter-spacing: 0.12em;
303
+ }
304
+ .body code.badge-priority-p2 {
305
+ background: transparent; color: var(--ink-faint); border-color: var(--rule-strong);
306
+ letter-spacing: 0.1em;
307
+ }
308
+
309
+ .body blockquote {
310
+ padding: 14px 0;
311
+ margin: 22px 0;
312
+ border-top: 1px solid var(--gold);
313
+ border-bottom: 1px solid var(--rule);
314
+ background: transparent;
315
+ color: var(--ink);
316
+ font-size: 15px;
317
+ line-height: 1.65;
318
+ font-style: italic;
319
+ }
320
+ .body blockquote::before { display: none; }
321
+ .body blockquote em { color: var(--gold-deep); font-style: italic; }
322
+ .body blockquote strong { color: var(--ink); font-style: normal; font-weight: 600; }
323
+
324
+ /* ─── Bottom Line · top-rule emphasis only, no panel fill ───── */
325
+ .body section.section-bottom-line {
326
+ background: transparent;
327
+ margin: 0 0 44px;
328
+ padding: 0 0 36px;
329
+ border-top: 1.5px solid var(--ink);
330
+ padding-top: 28px;
331
+ border-bottom: 1px solid var(--rule);
332
+ }
333
+ .body h2.section-bottom-line {
334
+ font-family: var(--mono);
335
+ font-size: 10px;
336
+ color: var(--gold);
337
+ text-transform: uppercase;
338
+ letter-spacing: 0.26em;
339
+ margin: 0 0 14px;
340
+ font-weight: 500;
341
+ }
342
+ .body section.section-bottom-line p:first-child {
343
+ font-family: var(--serif);
344
+ font-size: 21px;
345
+ line-height: 1.42;
346
+ color: var(--ink);
347
+ font-weight: 500;
348
+ letter-spacing: -0.012em;
349
+ max-width: 720px;
350
+ }
351
+ .body section.section-bottom-line p:not(:first-child) {
352
+ font-size: 14px; line-height: 1.65; color: var(--ink-soft);
353
+ margin-top: 14px; font-weight: 400;
354
+ }
355
+ .body section.section-bottom-line + .chapter-num { display: none; }
356
+
357
+ /* ─── Thesis · same restraint ───────────────────────────────── */
358
+ .body h2.section-thesis {
359
+ font-family: var(--mono);
360
+ font-size: 10px;
361
+ color: var(--gold);
362
+ text-transform: uppercase;
363
+ letter-spacing: 0.26em;
364
+ margin: 0 0 18px;
365
+ font-weight: 500;
366
+ }
367
+ .body section.section-thesis {
368
+ margin: 0 0 44px;
369
+ padding: 28px 0 36px;
370
+ background: transparent;
371
+ border-top: 1.5px solid var(--ink);
372
+ border-bottom: 1px solid var(--rule);
373
+ }
374
+ .body section.section-thesis p:first-child {
375
+ font-family: var(--serif);
376
+ font-size: 22px;
377
+ line-height: 1.36;
378
+ letter-spacing: -0.014em;
379
+ color: var(--ink);
380
+ font-weight: 500;
381
+ font-style: italic;
382
+ margin-bottom: 16px;
383
+ max-width: 720px;
384
+ }
385
+ .body section.section-thesis p:first-child em {
386
+ color: var(--gold-deep);
387
+ font-style: italic;
388
+ }
389
+ .body section.section-thesis p:not(:first-child) {
390
+ font-size: 14.5px; color: var(--ink-soft); font-style: normal;
391
+ }
392
+
393
+ /* ─── Working hypothesis ────────────────────────────────────── */
394
+ .body section.section-working-hypothesis p:first-child {
395
+ font-size: 16px;
396
+ line-height: 1.65;
397
+ color: var(--ink);
398
+ font-weight: 400;
399
+ }
400
+
401
+ /* ─── Frame Shift ───────────────────────────────────────────── */
402
+ .body section.section-frame-shift p:first-child {
403
+ font-size: 15px;
404
+ color: var(--ink);
405
+ line-height: 1.7;
406
+ }
407
+
408
+ /* ─── Strategic Outlook · Gartner-density opener (between anchor and findings) ──
409
+ Two-paragraph block · context paragraph + implication paragraph.
410
+ Slightly heavier prose than other sections so it reads as the
411
+ research-note's strategic frame. */
412
+ .body h2.section-strategic-outlook {
413
+ font-family: var(--mono);
414
+ font-size: 10.5px;
415
+ color: var(--gold);
416
+ text-transform: uppercase;
417
+ letter-spacing: 0.26em;
418
+ margin: 0 0 18px;
419
+ font-weight: 500;
420
+ }
421
+ .body section.section-strategic-outlook {
422
+ margin: 0 0 44px;
423
+ padding: 28px 0 36px;
424
+ border-top: 1.5px solid var(--ink);
425
+ border-bottom: 1px solid var(--rule);
426
+ }
427
+ .body section.section-strategic-outlook p:first-child {
428
+ font-family: var(--serif);
429
+ font-size: 17px;
430
+ line-height: 1.55;
431
+ color: var(--ink);
432
+ font-weight: 500;
433
+ letter-spacing: -0.008em;
434
+ max-width: 720px;
435
+ margin-top: 0;
436
+ }
437
+ .body section.section-strategic-outlook p:not(:first-child) {
438
+ font-size: 15px;
439
+ color: var(--ink-soft);
440
+ line-height: 1.7;
441
+ max-width: 720px;
442
+ }
443
+
444
+ /* ─── Critical Assumptions · the load-bearing assumptions log ───
445
+ Numbered list · each assumption gets bold lead-in + meta line +
446
+ falsifier line. Renders as a research-note "what must be true"
447
+ section. */
448
+ .body section.section-critical-assumptions ol {
449
+ list-style: none;
450
+ margin: 24px 0 0;
451
+ padding: 0;
452
+ counter-reset: critassume;
453
+ }
454
+ .body section.section-critical-assumptions ol > li {
455
+ counter-increment: critassume;
456
+ position: relative;
457
+ padding: 22px 0 22px 56px;
458
+ border-top: 1px solid var(--rule);
459
+ }
460
+ .body section.section-critical-assumptions ol > li:last-child {
461
+ border-bottom: 1px solid var(--rule);
462
+ }
463
+ .body section.section-critical-assumptions ol > li::before {
464
+ content: "A" counter(critassume, decimal-leading-zero);
465
+ position: absolute;
466
+ top: 24px; left: 0;
467
+ font-family: var(--mono);
468
+ font-weight: 500;
469
+ font-size: 10.5px;
470
+ color: var(--gold);
471
+ line-height: 1;
472
+ letter-spacing: 0.16em;
473
+ }
474
+ .body section.section-critical-assumptions ol > li p:first-child {
475
+ margin-top: 0;
476
+ }
477
+ .body section.section-critical-assumptions ol > li p:first-child strong {
478
+ font-family: var(--serif);
479
+ font-size: 16px;
480
+ color: var(--ink);
481
+ font-weight: 600;
482
+ line-height: 1.35;
483
+ letter-spacing: -0.005em;
484
+ }
485
+ .body section.section-critical-assumptions ol > li p {
486
+ font-size: 13.5px;
487
+ line-height: 1.6;
488
+ color: var(--ink-soft);
489
+ }
490
+ .body section.section-critical-assumptions ol > li em {
491
+ color: var(--gold-deep);
492
+ font-style: normal;
493
+ font-family: var(--mono);
494
+ font-size: 10px;
495
+ font-weight: 600;
496
+ letter-spacing: 0.18em;
497
+ text-transform: uppercase;
498
+ }
499
+
500
+ /* ─── Scenario Tree · 2-4 named futures with probabilities ───
501
+ One H3 subsection per branch · "{Label} · {N}%" header reads at a
502
+ glance. Effects render as tight bulleted list; decision implication
503
+ closes each branch. */
504
+ .body section.section-scenario-tree h3 {
505
+ font-family: var(--serif);
506
+ font-size: 18px;
507
+ font-weight: 600;
508
+ color: var(--ink);
509
+ letter-spacing: -0.012em;
510
+ margin: 32px 0 12px;
511
+ padding-top: 16px;
512
+ border-top: 1px solid var(--gold);
513
+ }
514
+ .body section.section-scenario-tree h3:first-of-type {
515
+ border-top: 1.5px solid var(--ink);
516
+ padding-top: 18px;
517
+ }
518
+ .body section.section-scenario-tree p {
519
+ font-size: 14px;
520
+ line-height: 1.65;
521
+ color: var(--ink-soft);
522
+ margin: 8px 0;
523
+ }
524
+ .body section.section-scenario-tree em {
525
+ color: var(--gold-deep);
526
+ font-style: normal;
527
+ font-family: var(--mono);
528
+ font-size: 10px;
529
+ font-weight: 600;
530
+ letter-spacing: 0.18em;
531
+ text-transform: uppercase;
532
+ }
533
+ .body section.section-scenario-tree ul {
534
+ margin: 8px 0 12px 0;
535
+ padding-left: 22px;
536
+ list-style: none;
537
+ }
538
+ .body section.section-scenario-tree ul > li {
539
+ position: relative;
540
+ padding-left: 14px;
541
+ font-size: 13.5px;
542
+ line-height: 1.6;
543
+ color: var(--ink-soft);
544
+ margin: 4px 0;
545
+ }
546
+ .body section.section-scenario-tree ul > li::before {
547
+ content: "·";
548
+ position: absolute;
549
+ left: 0;
550
+ color: var(--gold);
551
+ font-weight: 700;
552
+ }
553
+
554
+ /* ─── Leading Indicators · monitoring watch-list table ───
555
+ Override the default md-table treatment with a tighter,
556
+ institutional-feel grid. Mono headers, hairline rules. */
557
+ .body section.section-leading-indicators table.md-table {
558
+ font-size: 13px;
559
+ border-top: 1.5px solid var(--ink);
560
+ }
561
+ .body section.section-leading-indicators table.md-table th {
562
+ background: transparent;
563
+ color: var(--gold);
564
+ font-family: var(--mono);
565
+ font-weight: 600;
566
+ font-size: 9.5px;
567
+ letter-spacing: 0.22em;
568
+ text-transform: uppercase;
569
+ padding: 10px 12px;
570
+ }
571
+ .body section.section-leading-indicators table.md-table td {
572
+ padding: 12px;
573
+ font-size: 13px;
574
+ color: var(--ink-soft);
575
+ vertical-align: top;
576
+ line-height: 1.5;
577
+ border-bottom: 1px solid var(--rule);
578
+ }
579
+ .body section.section-leading-indicators table.md-table td:first-child {
580
+ font-weight: 600;
581
+ color: var(--ink);
582
+ font-family: var(--mono);
583
+ font-size: 11.5px;
584
+ letter-spacing: 0.04em;
585
+ width: 26%;
586
+ }
587
+ .body section.section-leading-indicators table.md-table td:last-child {
588
+ color: var(--gold-deep);
589
+ font-style: italic;
590
+ }
591
+
592
+ /* ─── Headline Findings · 3-pillar grid ─────────────────────── */
593
+ .body section.section-headline-findings .pillars-grid {
594
+ display: grid;
595
+ grid-template-columns: repeat(3, 1fr);
596
+ gap: 28px;
597
+ margin: 28px 0 20px;
598
+ }
599
+ @media (max-width: 760px) {
600
+ .body section.section-headline-findings .pillars-grid { grid-template-columns: 1fr; }
601
+ }
602
+ .body section.section-headline-findings .pillar {
603
+ border-top: 1px solid var(--gold);
604
+ padding-top: 16px;
605
+ }
606
+ .body section.section-headline-findings .pillar .pillar-num {
607
+ font-family: var(--mono);
608
+ font-size: 10px;
609
+ color: var(--gold);
610
+ font-weight: 500;
611
+ letter-spacing: 0.24em;
612
+ text-transform: uppercase;
613
+ margin-bottom: 10px;
614
+ }
615
+ .body section.section-headline-findings .pillar h3 {
616
+ font-size: 16px; line-height: 1.3; margin: 0 0 10px; font-weight: 600;
617
+ }
618
+ .body section.section-headline-findings .pillar p {
619
+ font-size: 13.5px; color: var(--ink-soft); line-height: 1.6; margin: 8px 0;
620
+ }
621
+
622
+ /* ─── Big Ideas · disciplined typographic list ───────────────── */
623
+ .body section.section-big-ideas ol {
624
+ counter-reset: bigidea;
625
+ list-style: none;
626
+ margin: 24px 0 0;
627
+ padding: 0;
628
+ }
629
+ .body section.section-big-ideas ol > li {
630
+ counter-increment: bigidea;
631
+ position: relative;
632
+ padding: 22px 0 22px 56px;
633
+ border-top: 1px solid var(--rule);
634
+ }
635
+ .body section.section-big-ideas ol > li:last-child {
636
+ border-bottom: 1px solid var(--rule);
637
+ }
638
+ .body section.section-big-ideas ol > li::before {
639
+ content: counter(bigidea, decimal-leading-zero);
640
+ position: absolute;
641
+ top: 24px; left: 0;
642
+ font-family: var(--mono);
643
+ font-weight: 500;
644
+ font-size: 11px;
645
+ color: var(--gold);
646
+ line-height: 1;
647
+ letter-spacing: 0.18em;
648
+ }
649
+ .body section.section-big-ideas ol > li p:first-child {
650
+ margin-top: 0;
651
+ }
652
+ .body section.section-big-ideas ol > li p:first-child strong {
653
+ font-family: var(--serif);
654
+ font-size: 16px;
655
+ color: var(--ink);
656
+ font-weight: 600;
657
+ line-height: 1.32;
658
+ letter-spacing: -0.008em;
659
+ }
660
+ .body section.section-big-ideas ol > li p { font-size: 14px; line-height: 1.65; }
661
+
662
+ /* ─── Why Now · top rule only, no fill ─────────────────────── */
663
+ .body section.section-why-now {
664
+ background: transparent;
665
+ margin: 28px 0;
666
+ padding: 24px 0;
667
+ border-top: 1px solid var(--gold);
668
+ border-bottom: 1px solid var(--rule);
669
+ }
670
+ .body section.section-why-now p { font-size: 14.5px; line-height: 1.65; color: var(--ink); }
671
+ .body section.section-why-now p:first-child { font-weight: 500; color: var(--ink); }
672
+
673
+ /* ─── The Bet · disciplined numbered list ───────────────────── */
674
+ .body h2.section-the-bet { color: var(--ink); }
675
+ .body section.section-the-bet > p:first-child {
676
+ font-family: var(--serif);
677
+ font-size: 17px;
678
+ font-style: italic;
679
+ color: var(--ink);
680
+ margin-bottom: 22px;
681
+ max-width: 700px;
682
+ line-height: 1.5;
683
+ font-weight: 500;
684
+ }
685
+ .body section.section-the-bet ol {
686
+ counter-reset: bet;
687
+ list-style: none;
688
+ padding: 0;
689
+ margin: 22px 0 0;
690
+ }
691
+ .body section.section-the-bet ol > li {
692
+ counter-increment: bet;
693
+ position: relative;
694
+ padding: 20px 0 20px 56px;
695
+ border-top: 1px solid var(--rule);
696
+ background: transparent;
697
+ margin: 0;
698
+ }
699
+ .body section.section-the-bet ol > li:last-child { border-bottom: 1px solid var(--rule); }
700
+ .body section.section-the-bet ol > li::before {
701
+ content: counter(bet, decimal-leading-zero);
702
+ position: absolute;
703
+ top: 22px; left: 0;
704
+ font-family: var(--mono);
705
+ font-weight: 500;
706
+ font-size: 11px;
707
+ color: var(--gold);
708
+ line-height: 1;
709
+ letter-spacing: 0.18em;
710
+ }
711
+ .body section.section-the-bet ol > li p:first-child {
712
+ margin-top: 0;
713
+ }
714
+ .body section.section-the-bet ol > li p:first-child strong {
715
+ font-family: var(--serif);
716
+ font-size: 16px;
717
+ color: var(--ink);
718
+ font-weight: 600;
719
+ }
720
+ .body section.section-the-bet > blockquote {
721
+ margin-top: 28px;
722
+ border-top: 1px solid var(--oxblood);
723
+ border-bottom: 1px solid var(--rule);
724
+ background: transparent;
725
+ font-style: normal;
726
+ padding: 14px 0;
727
+ font-size: 14px;
728
+ color: var(--oxblood-deep);
729
+ }
730
+ .body section.section-the-bet > blockquote strong { color: var(--oxblood-deep); }
731
+
732
+ /* ─── Two Paths · top rule only ────────────────────────────── */
733
+ .body section.section-two-paths {
734
+ margin: 28px 0;
735
+ padding: 28px 0;
736
+ background: transparent;
737
+ border-top: 1px solid var(--rule);
738
+ border-bottom: 1px solid var(--rule);
739
+ }
740
+ .body section.section-two-paths > p:first-child {
741
+ font-size: 14.5px; color: var(--ink-soft); margin-bottom: 16px;
742
+ }
743
+
744
+ /* ─── Recommendations / Considerations · editorial cards ───── */
745
+ .body section.section-recommendations ol,
746
+ .body section.section-considerations ol {
747
+ counter-reset: rec;
748
+ list-style: none;
749
+ padding: 0;
750
+ margin: 24px 0 0;
751
+ }
752
+
753
+ .body section.section-recommendations li.rec-item,
754
+ .body section.section-considerations li.rec-item {
755
+ padding: 0; margin: 36px 0 0; list-style: none; border: none;
756
+ }
757
+ .body section.section-recommendations li.rec-item:first-child,
758
+ .body section.section-considerations li.rec-item:first-child { margin-top: 22px; }
759
+ .body section.section-recommendations li.rec-item::before,
760
+ .body section.section-considerations li.rec-item::before { display: none; }
761
+
762
+ .rec-rule { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
763
+ .rec-num {
764
+ font-family: var(--mono);
765
+ font-size: 10.5px;
766
+ font-weight: 500;
767
+ color: var(--ink-faint);
768
+ letter-spacing: 0.2em;
769
+ flex: 0 0 auto;
770
+ }
771
+ .rec-rule code {
772
+ flex: 0 0 auto;
773
+ letter-spacing: 0.12em;
774
+ font-size: 10px;
775
+ padding: 2px 8px;
776
+ }
777
+ .rec-rule-line { flex: 1 1 auto; height: 1px; background: var(--rule); display: block; }
778
+ .rec-priority-p0 .rec-rule-line { background: var(--gold); height: 1.5px; }
779
+ .rec-priority-p0 .rec-num { color: var(--gold); }
780
+ .rec-action {
781
+ font-family: var(--serif);
782
+ font-size: 18px;
783
+ line-height: 1.32;
784
+ color: var(--ink);
785
+ font-weight: 600;
786
+ letter-spacing: -0.012em;
787
+ margin: 0 0 14px;
788
+ max-width: 64ch;
789
+ }
790
+ .rec-rationale {
791
+ font-size: 14px;
792
+ line-height: 1.7;
793
+ color: var(--ink-soft);
794
+ margin: 0 0 18px;
795
+ max-width: 64ch;
796
+ }
797
+ .rec-meta {
798
+ display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px;
799
+ margin: 0 0 14px;
800
+ font-size: 12.5px;
801
+ line-height: 1.6;
802
+ color: var(--ink);
803
+ }
804
+ .rec-meta-pair { display: inline-flex; align-items: baseline; gap: 7px; min-width: 0; }
805
+ .rec-meta-label {
806
+ font-family: var(--mono);
807
+ font-size: 9.5px;
808
+ color: var(--gold);
809
+ letter-spacing: 0.22em;
810
+ text-transform: uppercase;
811
+ font-weight: 500;
812
+ }
813
+ .rec-meta-value { color: var(--ink); font-weight: 500; }
814
+ .rec-meta-sep { color: var(--ink-muted); }
815
+ .rec-risk {
816
+ display: flex; align-items: flex-start; gap: 8px;
817
+ font-size: 12.5px;
818
+ line-height: 1.6;
819
+ color: var(--oxblood-deep);
820
+ margin: 0;
821
+ font-style: italic;
822
+ padding: 12px 0 4px;
823
+ background: transparent;
824
+ border-top: 1px solid var(--oxblood);
825
+ }
826
+ .rec-risk-text { flex: 1 1 auto; }
827
+ .rec-risk-prefix {
828
+ font-family: var(--mono);
829
+ font-style: normal;
830
+ font-size: 9.5px;
831
+ color: var(--oxblood);
832
+ letter-spacing: 0.24em;
833
+ text-transform: uppercase;
834
+ font-weight: 500;
835
+ margin-right: 4px;
836
+ }
837
+ .rec-risk-sep { color: var(--oxblood); margin-right: 4px; }
838
+
839
+ /* ─── New Questions · op-ed cards ──────────────────────────── */
840
+ .body section.section-new-questions ol { padding: 0; margin: 24px 0 0; list-style: none; }
841
+ .body section.section-new-questions li.nq-item {
842
+ padding: 0; margin: 36px 0 0; list-style: none; border: none;
843
+ }
844
+ .body section.section-new-questions li.nq-item:first-child { margin-top: 22px; }
845
+ .body section.section-new-questions li.nq-item::before { display: none; }
846
+ .nq-rule { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
847
+ .nq-num {
848
+ font-family: var(--mono);
849
+ font-size: 10.5px;
850
+ font-weight: 500;
851
+ color: var(--gold);
852
+ letter-spacing: 0.22em;
853
+ flex: 0 0 auto;
854
+ }
855
+ .nq-rule-line { flex: 1 1 auto; height: 1px; background: var(--rule); display: block; }
856
+ .nq-attribution {
857
+ flex: 0 0 auto;
858
+ display: inline-flex; align-items: baseline; gap: 6px;
859
+ font-family: var(--mono);
860
+ font-size: 9.5px;
861
+ letter-spacing: 0.2em;
862
+ text-transform: uppercase;
863
+ color: var(--ink-faint);
864
+ font-weight: 500;
865
+ }
866
+ .nq-attribution-prefix { color: var(--ink-faint); }
867
+ .nq-attribution-who { color: var(--ink); font-weight: 600; letter-spacing: 0.1em; }
868
+ .nq-question {
869
+ font-family: var(--serif);
870
+ font-size: 21px;
871
+ line-height: 1.32;
872
+ color: var(--ink);
873
+ font-style: italic;
874
+ font-weight: 500;
875
+ letter-spacing: -0.012em;
876
+ margin: 0 0 18px;
877
+ padding: 0;
878
+ border: none;
879
+ background: transparent;
880
+ max-width: 56ch;
881
+ }
882
+ .nq-question::before {
883
+ content: "\201C";
884
+ color: var(--gold);
885
+ font-size: 28px;
886
+ font-style: normal;
887
+ font-weight: 500;
888
+ margin-right: 4px;
889
+ vertical-align: -8px;
890
+ line-height: 1;
891
+ font-family: var(--serif);
892
+ }
893
+ .nq-question::after {
894
+ content: "\201D";
895
+ color: var(--ink-muted);
896
+ font-size: 22px;
897
+ font-style: normal;
898
+ margin-left: 3px;
899
+ vertical-align: -6px;
900
+ line-height: 1;
901
+ font-family: var(--serif);
902
+ }
903
+ .nq-why {
904
+ font-size: 14px;
905
+ line-height: 1.7;
906
+ color: var(--ink-soft);
907
+ margin: 0;
908
+ max-width: 56ch;
909
+ }
910
+
911
+ /* ─── Open / Pre-mortem questions ──────────────────────────── */
912
+ .body section.section-open-questions ul {
913
+ padding-left: 22px;
914
+ margin: 18px 0;
915
+ }
916
+ .body section.section-open-questions ul > li {
917
+ font-size: 14px;
918
+ margin: 8px 0;
919
+ color: var(--ink-soft);
920
+ }
921
+ .body section.section-pre-mortem ul,
922
+ .body section.section-pre-mortem ol {
923
+ padding-left: 22px;
924
+ margin: 18px 0;
925
+ }
926
+ .body section.section-pre-mortem li {
927
+ font-size: 14px;
928
+ margin: 8px 0;
929
+ color: var(--ink-soft);
930
+ }
931
+
932
+ /* ─── Planning Assumption · top rule only ─────────────────── */
933
+ .body section.section-planning-assumption {
934
+ background: transparent;
935
+ border: none;
936
+ border-top: 1px solid var(--gold);
937
+ border-bottom: 1px solid var(--rule);
938
+ padding: 18px 0;
939
+ margin: 22px 0 28px;
940
+ }
941
+ .body section.section-planning-assumption blockquote {
942
+ border: none; padding: 0; margin: 0; background: none;
943
+ font-style: normal; font-size: 14.5px;
944
+ }
945
+ .body section.section-planning-assumption blockquote::before { display: none; }
946
+ .body section.section-planning-assumption blockquote strong:first-child {
947
+ display: block;
948
+ color: var(--gold);
949
+ text-transform: uppercase;
950
+ letter-spacing: 0.24em;
951
+ font-size: 10px;
952
+ margin-bottom: 10px;
953
+ font-family: var(--mono);
954
+ font-weight: 500;
955
+ }
956
+
957
+ /* ─── Tables · clean rule-only ─────────────────────────────── */
958
+ .body table.md-table {
959
+ width: 100%;
960
+ border-collapse: collapse;
961
+ margin: 22px 0 28px;
962
+ font-size: 13.5px;
963
+ border-top: 1.5px solid var(--ink);
964
+ }
965
+ .body table.md-table th, .body table.md-table td {
966
+ padding: 12px 14px;
967
+ border-bottom: 1px solid var(--rule);
968
+ text-align: left;
969
+ vertical-align: top;
970
+ line-height: 1.55;
971
+ }
972
+ .body table.md-table th {
973
+ background: transparent;
974
+ color: var(--ink-faint);
975
+ font-family: var(--mono);
976
+ font-weight: 500;
977
+ font-size: 10px;
978
+ letter-spacing: 0.18em;
979
+ text-transform: uppercase;
980
+ }
981
+ .body table.md-table td:first-child { font-weight: 600; color: var(--ink); }
982
+
983
+ /* ─── Methodology footer ──────────────────────────────────── */
984
+ .body h2.section-methodology {
985
+ margin-top: 80px;
986
+ padding-top: 22px;
987
+ font-size: 10px;
988
+ color: var(--ink-faint);
989
+ text-transform: uppercase;
990
+ letter-spacing: 0.26em;
991
+ font-weight: 500;
992
+ font-family: var(--mono);
993
+ border-top: 1px solid var(--rule);
994
+ }
995
+ .body section.section-methodology {
996
+ color: var(--ink-faint);
997
+ font-size: 12.5px;
998
+ line-height: 1.65;
999
+ }
1000
+ .body section.section-methodology strong {
1001
+ color: var(--ink-soft);
1002
+ font-family: var(--mono);
1003
+ font-weight: 500;
1004
+ font-size: 10.5px;
1005
+ letter-spacing: 0.12em;
1006
+ text-transform: uppercase;
1007
+ }
1008
+
1009
+ .body pre.codeblock {
1010
+ background: transparent;
1011
+ border-top: 1px solid var(--rule);
1012
+ border-bottom: 1px solid var(--rule);
1013
+ padding: 14px 0;
1014
+ font-family: var(--mono);
1015
+ font-size: 12.5px;
1016
+ color: var(--ink-soft);
1017
+ margin: 18px 0;
1018
+ overflow-x: auto;
1019
+ }
1020
+ .body pre.mermaid {
1021
+ background: transparent;
1022
+ border-top: 1px solid var(--gold);
1023
+ border-bottom: 1px solid var(--rule);
1024
+ padding: 22px 0 18px;
1025
+ margin: 20px 0 26px;
1026
+ min-height: 360px;
1027
+ text-align: center;
1028
+ font-family: var(--mono);
1029
+ font-size: 11px;
1030
+ color: var(--ink-faint);
1031
+ }
1032
+
1033
+ .foot-rule {
1034
+ margin: 64px 56px 0;
1035
+ padding: 22px 0;
1036
+ border-top: 1px solid var(--gold);
1037
+ text-align: left;
1038
+ font-family: var(--mono);
1039
+ font-size: 10px;
1040
+ color: var(--ink-faint);
1041
+ text-transform: uppercase;
1042
+ letter-spacing: 0.24em;
1043
+ font-weight: 500;
1044
+ }
1045
+
1046
+ .placeholder {
1047
+ text-align: center;
1048
+ padding: 100px 32px;
1049
+ color: var(--ink-faint);
1050
+ font-family: var(--mono);
1051
+ text-transform: uppercase;
1052
+ letter-spacing: 0.2em;
1053
+ font-size: 11px;
1054
+ }
1055
+ .placeholder.error { color: var(--oxblood); }