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,516 @@
1
+ /* OpenAI Paper · technical / research-style spine. Minimal sans, generous
2
+ whitespace, abstract-led, teal accent. Best for N-option comparisons
3
+ and technical depth. */
4
+ :root {
5
+ --bg: #FFFFFF;
6
+ --paper: #FAFAFA;
7
+ --soft: #F4F4F5;
8
+ --ink: #0D0D0D;
9
+ --ink-soft: #404040;
10
+ --ink-faint: #6E6E80;
11
+ --ink-muted: #A0A0AB;
12
+ --rule: #E5E5E5;
13
+ --rule-soft: #EFEFEF;
14
+ --teal: #10A37F;
15
+ --teal-deep: #0E8C6D;
16
+ --teal-pale: #E6F6F0;
17
+ --orange: #C25D1F;
18
+ --red: #B92C2C;
19
+ --sans: "Söhne", "Inter", "Helvetica Neue", -apple-system, BlinkMacSystemFont, system-ui,
20
+ "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Source Han Sans CN",
21
+ "Noto Sans CJK SC", sans-serif;
22
+ --mono: "Söhne Mono", "JetBrains Mono", "SF Mono", "Menlo",
23
+ "PingFang SC", "Source Han Sans CN", monospace;
24
+ }
25
+
26
+ * { box-sizing: border-box; margin: 0; padding: 0; }
27
+ html, body {
28
+ background: var(--bg);
29
+ color: var(--ink);
30
+ font-family: var(--sans);
31
+ font-size: 16px;
32
+ line-height: 1.6;
33
+ -webkit-font-smoothing: antialiased;
34
+ text-rendering: optimizeLegibility;
35
+ min-height: 100vh;
36
+ }
37
+ ::-webkit-scrollbar { width: 6px; }
38
+ ::-webkit-scrollbar-track { background: var(--bg); }
39
+ ::-webkit-scrollbar-thumb { background: var(--rule); }
40
+
41
+ .doc { max-width: 800px; margin: 0 auto; padding: 0 0 96px; }
42
+
43
+ .top-rule {
44
+ background: var(--bg);
45
+ border-bottom: 1px solid var(--rule);
46
+ padding: 16px 32px;
47
+ display: flex;
48
+ justify-content: space-between;
49
+ align-items: center;
50
+ font-family: var(--sans);
51
+ font-size: 13px;
52
+ color: var(--ink-faint);
53
+ letter-spacing: 0;
54
+ text-transform: none;
55
+ }
56
+ .top-rule .crumb { color: var(--ink); font-weight: 500; }
57
+ .top-rule .crumb .accent { color: var(--teal); }
58
+ .top-rule .back {
59
+ color: var(--ink-soft);
60
+ text-decoration: none;
61
+ border: none;
62
+ border-bottom: 1px solid var(--rule);
63
+ padding: 4px 0;
64
+ letter-spacing: 0;
65
+ text-transform: none;
66
+ font-size: 13px;
67
+ }
68
+ .top-rule .back:hover { color: var(--teal); border-color: var(--teal); }
69
+
70
+ .cover {
71
+ padding: 80px 32px 48px;
72
+ background: var(--bg);
73
+ border-bottom: 1px solid var(--rule);
74
+ }
75
+ .cover-tag {
76
+ display: flex; align-items: center; gap: 14px;
77
+ font-family: var(--mono);
78
+ font-size: 11.5px;
79
+ letter-spacing: 0.04em;
80
+ text-transform: none;
81
+ color: var(--teal);
82
+ font-weight: 500;
83
+ margin-bottom: 28px;
84
+ }
85
+ .cover-tag .pipe { width: 1px; height: 11px; background: var(--rule); }
86
+ .cover-tag .secondary { color: var(--ink-faint); font-weight: 400; }
87
+ .cover-title {
88
+ font-family: var(--sans);
89
+ font-size: 36px;
90
+ font-weight: 600;
91
+ line-height: 1.18;
92
+ letter-spacing: -0.018em;
93
+ color: var(--ink);
94
+ margin-bottom: 16px;
95
+ max-width: 720px;
96
+ }
97
+ .cover-deck {
98
+ font-size: 17px;
99
+ font-weight: 400;
100
+ line-height: 1.55;
101
+ color: var(--ink-soft);
102
+ max-width: 700px;
103
+ margin-bottom: 36px;
104
+ }
105
+ .cover-deck strong { color: var(--ink); font-weight: 500; }
106
+ .cover-byline {
107
+ display: grid;
108
+ grid-template-columns: repeat(4, 1fr);
109
+ gap: 24px;
110
+ padding-top: 22px;
111
+ border-top: 1px solid var(--rule);
112
+ }
113
+ @media (max-width: 720px) { .cover-byline { grid-template-columns: repeat(2, 1fr); } }
114
+ .byline-block .label {
115
+ font-family: var(--mono);
116
+ font-size: 10.5px;
117
+ letter-spacing: 0.04em;
118
+ text-transform: none;
119
+ color: var(--ink-faint);
120
+ font-weight: 500;
121
+ margin-bottom: 6px;
122
+ }
123
+ .byline-block .value { font-size: 14px; color: var(--ink); font-weight: 500; }
124
+ .byline-block .signed-avatars { display: flex; margin-top: 4px; }
125
+ .byline-block .signed-avatars img {
126
+ width: 24px; height: 24px;
127
+ border: 1px solid var(--rule);
128
+ background: var(--soft);
129
+ margin-left: -6px;
130
+ border-radius: 50%;
131
+ }
132
+ .byline-block .signed-avatars img:first-child { margin-left: 0; }
133
+ .cover-versions {
134
+ margin-top: 18px;
135
+ padding-top: 18px;
136
+ border-top: 1px solid var(--rule);
137
+ display: flex; gap: 8px; flex-wrap: wrap; align-items: center;
138
+ }
139
+ .cover-versions-label { font-family: var(--mono); font-size: 11px; color: var(--ink-faint); text-transform: none; letter-spacing: 0; }
140
+ .cover-version {
141
+ border: 1px solid var(--rule);
142
+ padding: 4px 10px;
143
+ text-decoration: none;
144
+ color: var(--ink-soft);
145
+ font-family: var(--mono);
146
+ font-size: 11.5px;
147
+ letter-spacing: 0;
148
+ text-transform: none;
149
+ border-radius: 3px;
150
+ }
151
+ .cover-version:hover { border-color: var(--teal); color: var(--teal); }
152
+ .cover-version.active { border-color: var(--teal); color: var(--teal); background: var(--teal-pale); pointer-events: none; }
153
+
154
+ .body { padding: 0 32px; color: var(--ink); }
155
+ .body h1, .body h2, .body h3, .body h4 { font-family: var(--sans); color: var(--ink); font-weight: 600; line-height: 1.25; letter-spacing: -0.014em; }
156
+ .body h1 { display: none; }
157
+ .body .chapter-num {
158
+ display: block;
159
+ font-family: var(--mono);
160
+ font-size: 12px;
161
+ color: var(--teal);
162
+ font-weight: 500;
163
+ letter-spacing: 0;
164
+ text-transform: none;
165
+ margin: 56px 0 8px;
166
+ }
167
+ .body h2 { font-size: 25px; line-height: 1.22; margin: 0 0 16px; max-width: 720px; }
168
+ .body h3 { font-size: 18px; margin: 28px 0 10px; font-weight: 600; }
169
+ .body h4 { font-size: 13.5px; margin: 18px 0 6px; text-transform: none; letter-spacing: 0; color: var(--ink-soft); font-weight: 600; }
170
+ .body p { margin: 12px 0; line-height: 1.7; color: var(--ink-soft); font-size: 16px; }
171
+ .body ul, .body ol { margin: 12px 0 16px 22px; }
172
+ .body li { margin: 6px 0; line-height: 1.65; color: var(--ink-soft); }
173
+ .body strong { color: var(--ink); font-weight: 600; }
174
+ .body em { color: var(--ink); font-style: italic; }
175
+ .body code {
176
+ background: var(--soft);
177
+ border: 1px solid var(--rule);
178
+ padding: 1px 6px;
179
+ font-family: var(--mono);
180
+ font-size: 13px;
181
+ color: var(--ink);
182
+ border-radius: 4px;
183
+ }
184
+ .body code.badge-confidence-high { color: var(--teal); border-color: rgba(16, 163, 127, 0.3); background: var(--teal-pale); }
185
+ .body code.badge-confidence-medium { color: var(--orange); border-color: rgba(194, 93, 31, 0.3); background: rgba(194, 93, 31, 0.06); }
186
+ .body code.badge-confidence-low { color: var(--red); border-color: rgba(185, 44, 44, 0.3); background: rgba(185, 44, 44, 0.06); }
187
+ .body code.badge-priority-p0 { background: var(--ink); color: #fff; border-color: var(--ink); font-weight: 600; }
188
+ .body code.badge-priority-p1 { background: var(--soft); color: var(--ink); font-weight: 600; }
189
+ .body code.badge-priority-p2 { background: var(--soft); color: var(--ink-faint); }
190
+ .body blockquote {
191
+ padding: 14px 18px;
192
+ margin: 22px 0;
193
+ border-top: 1.5px solid var(--ink);
194
+ background: var(--paper);
195
+ border-radius: 4px;
196
+ color: var(--ink-soft);
197
+ font-style: normal;
198
+ font-size: 15px;
199
+ line-height: 1.65;
200
+ }
201
+ .body blockquote::before { display: none; }
202
+ .body blockquote em { color: var(--ink); }
203
+
204
+ /* Bottom Line / Abstract · paper-style abstract callout. */
205
+ .body section.section-bottom-line {
206
+ background: var(--paper);
207
+ border: 1px solid var(--rule);
208
+ margin: 0 0 56px;
209
+ padding: 28px 32px;
210
+ border-radius: 6px;
211
+ }
212
+ .body h2.section-bottom-line {
213
+ font-family: var(--mono);
214
+ font-size: 12px;
215
+ color: var(--teal);
216
+ text-transform: uppercase;
217
+ letter-spacing: 0.04em;
218
+ margin: 0 0 14px;
219
+ font-weight: 500;
220
+ }
221
+ .body section.section-bottom-line p { font-size: 17px; line-height: 1.55; color: var(--ink); max-width: 720px; }
222
+ .body section.section-bottom-line p:not(:first-child) { font-size: 14.5px; color: var(--ink-soft); margin-top: 12px; }
223
+
224
+ /* Thesis */
225
+ .body section.section-thesis { margin: 0 0 48px; padding: 24px 0; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
226
+ .body h2.section-thesis { font-family: var(--mono); font-size: 12px; color: var(--teal); text-transform: uppercase; letter-spacing: 0.04em; margin: 0 0 16px; font-weight: 500; }
227
+ .body section.section-thesis p:first-child { font-size: 24px; color: var(--ink); font-weight: 500; line-height: 1.32; }
228
+
229
+ /* Headline Findings · simple side-by-side cards. */
230
+ .body section.section-headline-findings .pillars-grid {
231
+ display: grid;
232
+ grid-template-columns: repeat(3, 1fr);
233
+ gap: 24px;
234
+ margin: 24px 0;
235
+ }
236
+ @media (max-width: 760px) { .body section.section-headline-findings .pillars-grid { grid-template-columns: 1fr; } }
237
+ .body section.section-headline-findings .pillar {
238
+ background: var(--paper);
239
+ border: 1px solid var(--rule);
240
+ padding: 18px;
241
+ border-radius: 6px;
242
+ }
243
+ .body section.section-headline-findings .pillar .pillar-num {
244
+ font-family: var(--mono);
245
+ font-size: 12px;
246
+ color: var(--teal);
247
+ font-weight: 500;
248
+ letter-spacing: 0;
249
+ text-transform: none;
250
+ margin-bottom: 8px;
251
+ }
252
+ .body section.section-headline-findings .pillar h3 { font-size: 16px; line-height: 1.32; margin: 0 0 10px; color: var(--ink); }
253
+ .body section.section-headline-findings .pillar p { font-size: 14px; color: var(--ink-soft); line-height: 1.6; }
254
+
255
+ /* Big Ideas · numbered list, mono numerals. */
256
+ .body section.section-big-ideas ol { counter-reset: bigidea; list-style: none; padding: 0; margin: 24px 0 0; }
257
+ .body section.section-big-ideas ol > li {
258
+ counter-increment: bigidea;
259
+ position: relative;
260
+ padding: 18px 0 18px 60px;
261
+ border-top: 1px solid var(--rule);
262
+ }
263
+ .body section.section-big-ideas ol > li:last-child { border-bottom: 1px solid var(--rule); }
264
+ .body section.section-big-ideas ol > li::before {
265
+ content: "[" counter(bigidea) "]";
266
+ position: absolute; top: 18px; left: 0;
267
+ font-family: var(--mono);
268
+ font-size: 14px;
269
+ color: var(--teal);
270
+ font-weight: 500;
271
+ }
272
+
273
+ /* Why Now · paper callout. */
274
+ .body section.section-why-now {
275
+ background: var(--paper);
276
+ border: 1px solid var(--rule);
277
+ padding: 18px 22px;
278
+ margin: 22px 0 28px;
279
+ border-radius: 6px;
280
+ }
281
+
282
+ /* Recommendations · numbered with subtle teal numerals. */
283
+ .body section.section-recommendations ol,
284
+ .body section.section-the-bet ol,
285
+ .body section.section-considerations ol {
286
+ counter-reset: rec; list-style: none; padding: 0; margin: 24px 0 0;
287
+ }
288
+ .body section.section-recommendations ol > li,
289
+ .body section.section-the-bet ol > li,
290
+ .body section.section-considerations ol > li {
291
+ counter-increment: rec;
292
+ position: relative;
293
+ padding: 20px 0 20px 56px;
294
+ border-top: 1px solid var(--rule);
295
+ }
296
+ .body section.section-recommendations ol > li:last-child,
297
+ .body section.section-the-bet ol > li:last-child,
298
+ .body section.section-considerations ol > li:last-child { border-bottom: 1px solid var(--rule); }
299
+ .body section.section-recommendations ol > li::before,
300
+ .body section.section-the-bet ol > li::before,
301
+ .body section.section-considerations ol > li::before {
302
+ content: counter(rec);
303
+ position: absolute; top: 22px; left: 0;
304
+ width: 32px; height: 32px;
305
+ background: var(--soft);
306
+ color: var(--ink);
307
+ font-family: var(--mono);
308
+ font-weight: 500;
309
+ font-size: 13px;
310
+ display: flex; align-items: center; justify-content: center;
311
+ border-radius: 50%;
312
+ border: 1px solid var(--rule);
313
+ }
314
+ .body section.section-recommendations ol > li:has(code.badge-priority-p0)::before { background: var(--ink); color: #fff; border-color: var(--ink); }
315
+ .body section.section-recommendations ol > li p:first-child strong,
316
+ .body section.section-the-bet ol > li p:first-child strong,
317
+ .body section.section-considerations ol > li p:first-child strong { font-size: 16px; color: var(--ink); }
318
+ .body section.section-recommendations ol > li em,
319
+ .body section.section-the-bet ol > li em,
320
+ .body section.section-considerations ol > li em {
321
+ color: var(--ink-faint);
322
+ font-style: italic;
323
+ font-family: var(--sans);
324
+ font-size: 13px;
325
+ text-transform: none;
326
+ letter-spacing: 0;
327
+ }
328
+
329
+ .body section.section-planning-assumption {
330
+ background: var(--paper);
331
+ border: 1px solid var(--rule);
332
+ padding: 22px 26px;
333
+ margin: 22px 0 32px;
334
+ border-radius: 6px;
335
+ }
336
+ .body section.section-planning-assumption blockquote {
337
+ background: transparent; border-left: none; padding: 0; margin: 0; color: var(--ink); font-style: normal; font-size: 15px;
338
+ }
339
+ .body section.section-planning-assumption blockquote::before { display: none; }
340
+ .body section.section-planning-assumption blockquote strong:first-child {
341
+ display: block;
342
+ color: var(--teal);
343
+ text-transform: uppercase;
344
+ letter-spacing: 0.04em;
345
+ font-size: 12px;
346
+ margin-bottom: 12px;
347
+ font-family: var(--mono);
348
+ font-weight: 500;
349
+ }
350
+
351
+ .body section.section-new-questions ol { counter-reset: nq; list-style: none; padding: 0; margin: 22px 0 0; }
352
+ .body section.section-new-questions ol > li {
353
+ counter-increment: nq;
354
+ position: relative;
355
+ padding: 14px 0 14px 56px;
356
+ border-top: 1px dashed var(--rule);
357
+ font-size: 15px;
358
+ }
359
+ .body section.section-new-questions ol > li:last-child { border-bottom: 1px dashed var(--rule); }
360
+ .body section.section-new-questions ol > li::before {
361
+ content: "Q" counter(nq);
362
+ position: absolute; top: 14px; left: 0;
363
+ color: var(--teal);
364
+ font-family: var(--mono);
365
+ font-weight: 500;
366
+ font-size: 13px;
367
+ }
368
+
369
+ .body table.md-table {
370
+ width: 100%;
371
+ border-collapse: collapse;
372
+ margin: 22px 0 24px;
373
+ font-size: 14px;
374
+ border-top: 1px solid var(--ink);
375
+ }
376
+ .body table.md-table th, .body table.md-table td {
377
+ padding: 11px 14px;
378
+ border-bottom: 1px solid var(--rule);
379
+ text-align: left;
380
+ vertical-align: top;
381
+ }
382
+ .body table.md-table th {
383
+ font-family: var(--mono);
384
+ font-weight: 500;
385
+ font-size: 11.5px;
386
+ letter-spacing: 0;
387
+ text-transform: none;
388
+ color: var(--ink-faint);
389
+ }
390
+ .body table.md-table td:first-child { font-weight: 500; color: var(--ink); }
391
+
392
+ .body h2.section-methodology {
393
+ margin-top: 80px;
394
+ padding-top: 22px;
395
+ font-size: 13px;
396
+ color: var(--ink-faint);
397
+ text-transform: none;
398
+ letter-spacing: 0;
399
+ font-weight: 500;
400
+ font-family: var(--mono);
401
+ border-top: 1px solid var(--rule);
402
+ }
403
+ .body section.section-methodology { color: var(--ink-faint); font-size: 13.5px; line-height: 1.65; }
404
+ .body section.section-methodology strong { color: var(--ink-soft); font-family: var(--mono); }
405
+
406
+ .body pre.codeblock { background: var(--paper); border: 1px solid var(--rule); padding: 14px 16px; font-family: var(--mono); font-size: 13px; color: var(--ink-soft); border-radius: 4px; }
407
+ .body pre.mermaid { background: var(--paper); border-top: 1.5px solid var(--ink); border-bottom: 1px solid var(--rule); border-radius: 4px; padding: 28px 24px 24px; margin: 22px 0 28px; min-height: 380px; text-align: center; font-family: var(--mono); font-size: 12px; color: var(--ink-faint); }
408
+ .body pre.mermaid svg text { font-family: var(--sans) !important; }
409
+
410
+ .foot-rule {
411
+ margin: 80px 32px 0;
412
+ padding: 22px 0;
413
+ border-top: 1px solid var(--rule);
414
+ text-align: center;
415
+ font-family: var(--mono);
416
+ font-size: 12px;
417
+ color: var(--ink-faint);
418
+ text-transform: none;
419
+ letter-spacing: 0;
420
+ }
421
+
422
+ .placeholder {
423
+ text-align: center;
424
+ padding: 120px 32px;
425
+ color: var(--ink-faint);
426
+ font-family: var(--mono);
427
+ font-size: 13px;
428
+ text-transform: none;
429
+ letter-spacing: 0;
430
+ }
431
+ .placeholder.error { color: var(--red); }
432
+
433
+
434
+ /* ─── Recommendations / Considerations · editorial cards (paper-style) ─── */
435
+ .body section.section-recommendations li.rec-item,
436
+ .body section.section-considerations li.rec-item {
437
+ padding: 0; margin: 48px 0 0; list-style: none; border: none;
438
+ }
439
+ .body section.section-recommendations li.rec-item:first-child,
440
+ .body section.section-considerations li.rec-item:first-child { margin-top: 28px; }
441
+ .body section.section-recommendations li.rec-item::before,
442
+ .body section.section-considerations li.rec-item::before { display: none; }
443
+ .rec-rule { display: flex; align-items: center; gap: 12px; margin-bottom: 22px; }
444
+ .rec-num {
445
+ font-family: var(--mono); font-size: 12px; font-weight: 500;
446
+ color: var(--ink-faint); letter-spacing: 0; flex: 0 0 auto;
447
+ }
448
+ .rec-rule code { flex: 0 0 auto; }
449
+ .rec-rule-line { flex: 1 1 auto; height: 1px; background: var(--rule); display: block; }
450
+ .rec-priority-p0 .rec-rule-line { background: var(--ink); height: 1.5px; }
451
+ .rec-action {
452
+ font-family: var(--sans); font-size: 22px; line-height: 1.3;
453
+ color: var(--ink); font-weight: 600; letter-spacing: -0.014em;
454
+ margin: 0 0 18px; max-width: 68ch;
455
+ }
456
+ .rec-rationale { font-size: 15.5px; line-height: 1.72; color: var(--ink-soft); margin: 0 0 22px; max-width: 68ch; }
457
+ .rec-meta {
458
+ display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px;
459
+ margin: 0 0 14px; font-size: 13.5px; line-height: 1.6; color: var(--ink);
460
+ }
461
+ .rec-meta-pair { display: inline-flex; align-items: baseline; gap: 8px; min-width: 0; }
462
+ .rec-meta-label {
463
+ font-family: var(--mono); font-size: 11.5px; color: var(--ink-faint);
464
+ letter-spacing: 0; text-transform: none; font-weight: 500;
465
+ }
466
+ .rec-meta-value { color: var(--ink); font-weight: 500; }
467
+ .rec-meta-sep { color: var(--ink-muted); }
468
+ .rec-risk {
469
+ display: flex; align-items: flex-start; gap: 8px;
470
+ font-size: 14px; line-height: 1.65; color: var(--ink-soft);
471
+ margin: 0; font-style: italic;
472
+ }
473
+ .rec-risk-icon { flex: 0 0 auto; color: var(--red); font-style: normal; }
474
+ .rec-risk-text { flex: 1 1 auto; }
475
+ .rec-risk-prefix {
476
+ font-family: var(--mono); font-style: normal; font-size: 11.5px;
477
+ color: var(--red); letter-spacing: 0; text-transform: none;
478
+ font-weight: 500; margin-right: 2px;
479
+ }
480
+
481
+ /* ─── New Questions · op-ed cards ─── */
482
+ .body section.section-new-questions li.nq-item {
483
+ padding: 0; margin: 48px 0 0; list-style: none; border: none;
484
+ }
485
+ .body section.section-new-questions li.nq-item:first-child { margin-top: 28px; }
486
+ .body section.section-new-questions li.nq-item::before { display: none; }
487
+ .nq-rule { display: flex; align-items: center; gap: 12px; margin-bottom: 22px; }
488
+ .nq-num {
489
+ font-family: var(--mono); font-size: 12px; font-weight: 500;
490
+ color: var(--teal); letter-spacing: 0; flex: 0 0 auto;
491
+ }
492
+ .nq-rule-line { flex: 1 1 auto; height: 1px; background: var(--rule); display: block; }
493
+ .nq-attribution {
494
+ flex: 0 0 auto; display: inline-flex; align-items: baseline; gap: 6px;
495
+ font-family: var(--mono); font-size: 12px; letter-spacing: 0;
496
+ text-transform: none; color: var(--ink-faint); font-weight: 500;
497
+ }
498
+ .nq-attribution-prefix { color: var(--ink-faint); }
499
+ .nq-attribution-who { color: var(--teal); font-weight: 500; }
500
+ .nq-question {
501
+ font-family: var(--sans); font-size: 24px; line-height: 1.3;
502
+ color: var(--ink); font-weight: 600; letter-spacing: -0.014em;
503
+ margin: 0 0 20px; padding: 0; border: none; background: transparent;
504
+ max-width: 58ch; position: relative;
505
+ }
506
+ .nq-question::before {
507
+ content: "\201C"; color: var(--teal); font-size: 36px;
508
+ font-style: normal; font-weight: 500; margin-right: 4px;
509
+ vertical-align: -12px; line-height: 1; font-family: Georgia, serif;
510
+ }
511
+ .nq-question::after {
512
+ content: "\201D"; color: var(--ink-muted); font-size: 28px;
513
+ font-style: normal; margin-left: 4px; vertical-align: -8px;
514
+ line-height: 1; font-family: Georgia, serif;
515
+ }
516
+ .nq-why { font-size: 15.5px; line-height: 1.72; color: var(--ink-soft); margin: 0; max-width: 58ch; }