privateboard 0.1.0 → 0.1.3

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.
@@ -25,10 +25,26 @@
25
25
  --lime-dim: #5C4422;
26
26
  --red: #B5706A;
27
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
28
+ spine's `clay-deep` use). Used only on `em` inside h2/h3/rec
29
29
  action / nq question / etc. — never as a decorative fill. */
30
30
  --em: #C9A46B;
31
31
  --em-deep: #B58950;
32
+
33
+ /* Cross-spine token aliases · the unified design system in
34
+ report.html references --ink/--ink-soft/etc. (which a16z /
35
+ anthropic / etc. spines use). Boardroom-dark's native names
36
+ are --text / --text-soft / --line — alias them so unified
37
+ selectors resolve correctly. */
38
+ --ink: var(--text);
39
+ --ink-soft: var(--text-soft);
40
+ --ink-mid: var(--text-soft);
41
+ --ink-faint: var(--text-faint);
42
+ --ink-muted: var(--text-faint);
43
+ --paper: var(--bg);
44
+ --paper-soft: var(--panel-2);
45
+ --rule: var(--line-bright);
46
+ --rule-soft: var(--line);
47
+ --warn: var(--red);
32
48
  /* Sans + serif both carry explicit CJK fallbacks so Chinese body
33
49
  text doesn't drop characters when "Human Sans"/"Inter"/Charter
34
50
  load but lack CJK glyphs. Songti SC / STSong sit at the deep end
@@ -49,9 +65,15 @@
49
65
  "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei",
50
66
  "Source Han Sans CN", "Songti SC",
51
67
  system-ui, sans-serif;
68
+ /* Serif spine still serif for Latin headlines, but Chinese glyphs
69
+ fall through to PingFang SC first (sans) — user preference is
70
+ that Chinese reads in PingFang globally. Songti / Source Han
71
+ Serif sit deep as last-resort fallbacks. */
52
72
  --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;
73
+ "Georgia",
74
+ "PingFang SC", "PingFang TC", "Hiragino Sans GB",
75
+ "Source Han Sans CN", "Noto Sans CJK SC",
76
+ "Songti SC", "STSong", serif;
55
77
  }
56
78
 
57
79
  * { box-sizing: border-box; margin: 0; padding: 0; }
@@ -82,7 +104,7 @@ html, body {
82
104
  the right. Reads like a journal masthead. */
83
105
  .top-rule {
84
106
  background: var(--bg);
85
- border-bottom: 0.5px solid var(--line-bright);
107
+ border-bottom: 1px solid var(--line-bright);
86
108
  padding: 18px 32px;
87
109
  display: flex;
88
110
  justify-content: space-between;
@@ -198,14 +220,14 @@ html, body {
198
220
  grid-template-columns: repeat(4, 1fr);
199
221
  gap: 28px;
200
222
  padding-top: 24px;
201
- border-top: 0.5px solid var(--line-bright);
223
+ border-top: 1px solid var(--line-bright);
202
224
  }
203
225
  @media (max-width: 720px) {
204
226
  .cover-byline { grid-template-columns: repeat(2, 1fr); gap: 20px; }
205
227
  }
206
228
  .byline-block .label {
207
229
  font-family: var(--mono);
208
- font-size: 9.5px;
230
+ font-size: 10px;
209
231
  letter-spacing: 0.28em;
210
232
  text-transform: uppercase;
211
233
  color: var(--text-faint);
@@ -213,7 +235,7 @@ html, body {
213
235
  margin-bottom: 8px;
214
236
  }
215
237
  .byline-block .value {
216
- font-size: 13.5px;
238
+ font-size: 14px;
217
239
  color: var(--text);
218
240
  font-weight: 500;
219
241
  line-height: 1.45;
@@ -223,7 +245,7 @@ html, body {
223
245
  width: 22px; height: 22px;
224
246
  image-rendering: pixelated;
225
247
  image-rendering: crisp-edges;
226
- border: 0.5px solid var(--line-strong);
248
+ border: 1px solid var(--line-strong);
227
249
  background: var(--bg);
228
250
  margin-left: -6px;
229
251
  }
@@ -232,7 +254,7 @@ html, body {
232
254
  .cover-versions {
233
255
  margin-top: 22px;
234
256
  padding-top: 22px;
235
- border-top: 0.5px solid var(--line-bright);
257
+ border-top: 1px solid var(--line-bright);
236
258
  display: flex;
237
259
  align-items: center;
238
260
  gap: 12px;
@@ -240,7 +262,7 @@ html, body {
240
262
  }
241
263
  .cover-versions-label {
242
264
  font-family: var(--mono);
243
- font-size: 9.5px;
265
+ font-size: 10px;
244
266
  letter-spacing: 0.28em;
245
267
  text-transform: uppercase;
246
268
  color: var(--text-faint);
@@ -251,7 +273,7 @@ html, body {
251
273
  align-items: center;
252
274
  gap: 8px;
253
275
  padding: 5px 10px;
254
- border: 0.5px solid var(--line-bright);
276
+ border: 1px solid var(--line-bright);
255
277
  color: var(--text-soft);
256
278
  text-decoration: none;
257
279
  font-family: var(--mono);
@@ -307,7 +329,7 @@ html, body {
307
329
  text-transform: uppercase;
308
330
  margin: 64px 0 14px;
309
331
  padding-bottom: 12px;
310
- border-bottom: 0.5px solid var(--line-bright);
332
+ border-bottom: 1px solid var(--line-bright);
311
333
  }
312
334
  .body h2 {
313
335
  font-size: 34px;
@@ -315,7 +337,6 @@ html, body {
315
337
  margin: 0 0 22px;
316
338
  padding: 0;
317
339
  border: none;
318
- max-width: 760px;
319
340
  letter-spacing: -0.018em;
320
341
  }
321
342
  .body h2::before { display: none; }
@@ -349,32 +370,29 @@ html, body {
349
370
  .body em { color: var(--em-deep); font-style: italic; }
350
371
  .body code {
351
372
  background: var(--panel-2);
352
- border: 0.5px solid var(--line-bright);
373
+ border: 1px solid var(--line-bright);
353
374
  padding: 1px 7px;
354
375
  font-family: "SF Mono", Menlo, Consolas, monospace;
355
- font-size: 11.5px;
376
+ font-size: 12px;
356
377
  color: var(--text);
357
378
  letter-spacing: 0.02em;
358
379
  }
359
380
  .body code.badge-confidence-high { color: var(--lime); border-color: var(--lime-dim); }
360
381
  .body code.badge-confidence-medium { color: #C99826; border-color: rgba(201, 152, 38, 0.35); }
361
382
  .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); }
383
+ /* Priority badges · typographic only (no fill, no border) · the
384
+ shared base in report.html locks down padding / background / border
385
+ with !important. Spine only encodes priority via colour + weight. */
386
+ .body code.badge-priority-p0 { color: var(--lime); }
387
+ .body code.badge-priority-p1 { color: var(--text); }
388
+ .body code.badge-priority-p2 { color: var(--text-faint); }
371
389
 
372
390
  .body blockquote {
373
391
  padding: 8px 0 8px 28px;
374
392
  margin: 22px 0;
375
393
  color: var(--text-soft);
376
394
  font-style: italic;
377
- font-size: 16.5px;
395
+ font-size: 17px;
378
396
  line-height: 1.6;
379
397
  position: relative;
380
398
  }
@@ -398,21 +416,21 @@ html, body {
398
416
  background: transparent;
399
417
  margin: 0 0 56px;
400
418
  padding: 36px 0 32px;
401
- border-top: 1.5px solid var(--text);
402
- border-bottom: 0.5px solid var(--line-bright);
419
+ border-top: 2px solid var(--text);
420
+ border-bottom: 1px solid var(--line-bright);
403
421
  position: relative;
404
422
  }
405
423
  .body section.section-bottom-line::before {
406
424
  content: "";
407
425
  position: absolute;
408
- top: -1.5px;
426
+ top: -2px;
409
427
  left: 0;
410
428
  width: 56px;
411
- height: 1.5px;
429
+ height: 2px;
412
430
  background: var(--lime);
413
431
  }
414
432
  .body h2.section-bottom-line {
415
- font-size: 10.5px;
433
+ font-size: 11px;
416
434
  color: var(--text-faint);
417
435
  text-transform: uppercase;
418
436
  letter-spacing: 0.28em;
@@ -450,7 +468,7 @@ html, body {
450
468
 
451
469
  /* Thesis · anchor substitute. Pull-statement treatment, no panel. */
452
470
  .body h2.section-thesis {
453
- font-size: 10.5px;
471
+ font-size: 11px;
454
472
  color: var(--text-faint);
455
473
  text-transform: uppercase;
456
474
  letter-spacing: 0.22em;
@@ -474,7 +492,7 @@ html, body {
474
492
  }
475
493
  .body section.section-thesis p:first-child em { color: var(--text); font-style: italic; font-family: var(--serif); }
476
494
  .body section.section-thesis p:not(:first-child) {
477
- font-size: 14.5px;
495
+ font-size: 15px;
478
496
  line-height: 1.65;
479
497
  color: var(--text-soft);
480
498
  }
@@ -490,7 +508,7 @@ html, body {
490
508
  }
491
509
  .body section.section-working-hypothesis p {
492
510
  font-family: var(--serif);
493
- font-size: 17.5px;
511
+ font-size: 18px;
494
512
  line-height: 1.72;
495
513
  color: var(--text);
496
514
  font-weight: 400;
@@ -568,10 +586,10 @@ html, body {
568
586
  counter-increment: bigidea;
569
587
  position: relative;
570
588
  padding: 18px 0 18px 72px;
571
- border-top: 0.5px solid var(--line-bright);
589
+ border-top: 1px solid var(--line-bright);
572
590
  line-height: 1.6;
573
591
  }
574
- .body section.section-big-ideas ol > li:last-child { border-bottom: 0.5px solid var(--line-bright); }
592
+ .body section.section-big-ideas ol > li:last-child { border-bottom: 1px solid var(--line-bright); }
575
593
  .body section.section-big-ideas ol > li::before {
576
594
  content: counter(bigidea);
577
595
  position: absolute;
@@ -584,7 +602,7 @@ html, body {
584
602
  font-size: 32px;
585
603
  line-height: 1;
586
604
  }
587
- .body section.section-big-ideas ol > li p { margin: 6px 0; font-size: 14.5px; }
605
+ .body section.section-big-ideas ol > li p { margin: 6px 0; font-size: 15px; }
588
606
  .body section.section-big-ideas ol > li p:first-child strong {
589
607
  font-family: var(--serif);
590
608
  font-size: 22px;
@@ -599,11 +617,11 @@ html, body {
599
617
  background: transparent;
600
618
  padding: 14px 0 14px 0;
601
619
  font-style: normal;
602
- font-size: 14.5px;
620
+ font-size: 15px;
603
621
  color: var(--text-soft);
604
622
  margin: 18px 0;
605
- border-top: 0.5px solid var(--line-bright);
606
- border-bottom: 0.5px solid var(--line-bright);
623
+ border-top: 1px solid var(--line-bright);
624
+ border-bottom: 1px solid var(--line-bright);
607
625
  }
608
626
  .body section.section-convergence blockquote::before { display: none; }
609
627
  .body section.section-convergence blockquote strong { color: var(--text); }
@@ -613,7 +631,7 @@ html, body {
613
631
 
614
632
  .body section.section-planning-assumption {
615
633
  background: var(--panel-2);
616
- border: 0.5px solid var(--line-bright);
634
+ border: 1px solid var(--line-bright);
617
635
  padding: 22px 28px;
618
636
  margin: 18px 0 28px;
619
637
  position: relative;
@@ -621,10 +639,10 @@ html, body {
621
639
  .body section.section-planning-assumption::before {
622
640
  content: "";
623
641
  position: absolute;
624
- top: -0.5px;
642
+ top: -1px;
625
643
  left: 0;
626
644
  width: 48px;
627
- height: 1.5px;
645
+ height: 2px;
628
646
  background: var(--accent);
629
647
  }
630
648
  .body section.section-planning-assumption blockquote {
@@ -734,7 +752,7 @@ html, body {
734
752
  align-items: baseline;
735
753
  gap: 6px 12px;
736
754
  margin: 0 0 14px;
737
- font-size: 12.5px;
755
+ font-size: 13px;
738
756
  line-height: 1.6;
739
757
  color: var(--text);
740
758
  }
@@ -746,7 +764,7 @@ html, body {
746
764
  }
747
765
  .rec-meta-label {
748
766
  font-family: var(--mono);
749
- font-size: 9.5px;
767
+ font-size: 10px;
750
768
  color: var(--text-faint);
751
769
  letter-spacing: 0.28em;
752
770
  text-transform: uppercase;
@@ -780,7 +798,7 @@ html, body {
780
798
  flex: 0 0 auto;
781
799
  font-family: var(--mono);
782
800
  font-style: normal;
783
- font-size: 9.5px;
801
+ font-size: 10px;
784
802
  color: var(--text-faint);
785
803
  letter-spacing: 0.28em;
786
804
  text-transform: uppercase;
@@ -805,9 +823,9 @@ html, body {
805
823
  padding: 22px 0 22px 64px;
806
824
  margin: 0;
807
825
  line-height: 1.6;
808
- border-top: 0.5px solid var(--line-bright);
826
+ border-top: 1px solid var(--line-bright);
809
827
  }
810
- .body section.section-the-bet ol > li:last-child { border-bottom: 0.5px solid var(--line-bright); }
828
+ .body section.section-the-bet ol > li:last-child { border-bottom: 1px solid var(--line-bright); }
811
829
  .body section.section-the-bet ol > li::before {
812
830
  content: counter(rec, decimal-leading-zero);
813
831
  position: absolute; top: 24px; left: 0;
@@ -817,20 +835,20 @@ html, body {
817
835
  font-size: 22px;
818
836
  line-height: 1;
819
837
  }
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); }
838
+ .body section.section-the-bet ol > li p { margin: 6px 0; font-size: 15px; }
839
+ .body section.section-the-bet ol > li p:first-child strong { font-size: 17px; color: var(--text); }
822
840
  .body section.section-the-bet > blockquote {
823
841
  margin-top: 24px;
824
842
  background: rgba(181, 112, 106, 0.06);
825
843
  padding: 14px 20px;
826
- border-top: 1.5px solid var(--red);
844
+ border-top: 2px solid var(--red);
827
845
  font-style: normal;
828
846
  }
829
847
 
830
848
  /* Why Now · single-callout treatment. */
831
849
  .body section.section-why-now {
832
850
  background: var(--panel-2);
833
- border: 0.5px solid var(--line-bright);
851
+ border: 1px solid var(--line-bright);
834
852
  padding: 24px 28px;
835
853
  margin: 22px 0 32px;
836
854
  position: relative;
@@ -838,13 +856,13 @@ html, body {
838
856
  .body section.section-why-now::before {
839
857
  content: "";
840
858
  position: absolute;
841
- top: -0.5px;
859
+ top: -1px;
842
860
  left: 0;
843
861
  width: 56px;
844
- height: 1.5px;
862
+ height: 2px;
845
863
  background: var(--accent);
846
864
  }
847
- .body section.section-why-now p { font-size: 14.5px; line-height: 1.65; }
865
+ .body section.section-why-now p { font-size: 15px; line-height: 1.65; }
848
866
  .body section.section-why-now p:first-child { color: var(--text); font-weight: 500; }
849
867
 
850
868
  /* Two Paths · 2-column comparison block. */
@@ -863,7 +881,7 @@ html, body {
863
881
  }
864
882
  .body section.section-two-paths .path .path-tag {
865
883
  font-family: var(--mono);
866
- font-size: 9.5px;
884
+ font-size: 10px;
867
885
  letter-spacing: 0.28em;
868
886
  text-transform: uppercase;
869
887
  color: var(--text-faint);
@@ -871,7 +889,7 @@ html, body {
871
889
  margin-bottom: 8px;
872
890
  }
873
891
  .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; }
892
+ .body section.section-two-paths .path p { font-size: 14px; color: var(--text-soft); margin: 6px 0; }
875
893
 
876
894
  .body section.section-pre-mortem table.md-table { margin: 18px 0; }
877
895
 
@@ -966,7 +984,7 @@ html, body {
966
984
  text-transform: uppercase;
967
985
  letter-spacing: 0.22em;
968
986
  font-weight: 700;
969
- border-top: 0.5px solid var(--line-bright);
987
+ border-top: 1px solid var(--line-bright);
970
988
  }
971
989
  .body section.section-methodology { color: var(--text-soft); font-size: 12px; line-height: 1.55; }
972
990
  .body section.section-methodology p { margin: 8px 0; }
@@ -974,20 +992,20 @@ html, body {
974
992
  .body section.section-methodology strong {
975
993
  color: var(--text);
976
994
  font-family: var(--mono);
977
- font-size: 11.5px;
995
+ font-size: 12px;
978
996
  }
979
997
 
980
998
  .body table.md-table {
981
999
  width: 100%;
982
1000
  border-collapse: collapse;
983
1001
  margin: 22px 0 24px;
984
- font-size: 13.5px;
985
- border-top: 1.5px solid var(--text);
1002
+ font-size: 14px;
1003
+ border-top: 2px solid var(--text);
986
1004
  }
987
1005
  .body table.md-table th,
988
1006
  .body table.md-table td {
989
1007
  padding: 12px 14px;
990
- border-bottom: 0.5px solid var(--line-bright);
1008
+ border-bottom: 1px solid var(--line-bright);
991
1009
  text-align: left;
992
1010
  vertical-align: top;
993
1011
  line-height: 1.55;
@@ -997,10 +1015,10 @@ html, body {
997
1015
  color: var(--text-faint);
998
1016
  font-family: var(--mono);
999
1017
  font-weight: 700;
1000
- font-size: 10px;
1018
+ font-size: 12px;
1001
1019
  letter-spacing: 0.16em;
1002
1020
  text-transform: uppercase;
1003
- border-bottom: 0.5px solid var(--line-strong);
1021
+ border-bottom: 1px solid var(--line-strong);
1004
1022
  padding: 10px 14px;
1005
1023
  }
1006
1024
  .body table.md-table td:first-child {
@@ -1012,7 +1030,7 @@ html, body {
1012
1030
 
1013
1031
  .body pre.codeblock {
1014
1032
  background: var(--panel-2);
1015
- border: 0.5px solid var(--line-bright);
1033
+ border: 1px solid var(--line-bright);
1016
1034
  padding: 12px 14px;
1017
1035
  margin: 14px 0;
1018
1036
  overflow-x: auto;
@@ -1027,8 +1045,8 @@ html, body {
1027
1045
  each chart already reads as the caption; this is its frame. */
1028
1046
  .body pre.mermaid {
1029
1047
  background: var(--panel-2);
1030
- border-top: 1.5px solid var(--text);
1031
- border-bottom: 0.5px solid var(--line-bright);
1048
+ border-top: 2px solid var(--text);
1049
+ border-bottom: 1px solid var(--line-bright);
1032
1050
  padding: 28px 24px 24px;
1033
1051
  margin: 22px 0 28px;
1034
1052
  text-align: center;
@@ -1061,7 +1079,7 @@ html, body {
1061
1079
  .foot-rule {
1062
1080
  margin: 56px 32px 0;
1063
1081
  padding: 18px 0;
1064
- border-top: 0.5px solid var(--line-bright);
1082
+ border-top: 1px solid var(--line-bright);
1065
1083
  text-align: center;
1066
1084
  font-family: var(--mono);
1067
1085
  font-size: 10px;
@@ -1080,3 +1098,59 @@ html, body {
1080
1098
  font-size: 11px;
1081
1099
  }
1082
1100
  .placeholder.error { color: var(--red); }
1101
+
1102
+ /* ─── Metric strip · per-spine treatment ─────────────────────────
1103
+ Inherits the spine-agnostic baseline in public/report.html's inline
1104
+ <style> (Swiss-editorial layout: big thin numerals top, mute mono
1105
+ label bottom, hairline grid, no card surfaces). This block only
1106
+ re-skins palette tokens — the layout is constant across spines. */
1107
+ .body .metric-strip-intro { color: var(--text-soft); }
1108
+ .body .metric-value { color: var(--text); }
1109
+ .body .metric-card[data-trend="up"] .metric-value { color: var(--em); }
1110
+ .body .metric-card[data-trend="down"] .metric-value { color: var(--red); }
1111
+ .body .metric-trend[data-trend="up"] { color: var(--em); }
1112
+ .body .metric-trend[data-trend="down"] { color: var(--red); }
1113
+ .body .metric-label { color: var(--accent); }
1114
+
1115
+ /* ─── Path comparison · per-spine treatment ──────────────────────
1116
+ Inherits spine-agnostic baseline. boardroom-dark uses lime / red
1117
+ on the cool charcoal panels — sharp without competing with the
1118
+ prose. */
1119
+ .body .path-comparison .path { background: var(--panel-2); border-color: var(--line-bright); }
1120
+ .body .path-comparison .path-weak { border-top-color: var(--red); }
1121
+ .body .path-comparison .path-strong { border-top-color: var(--em); }
1122
+ .body .path-comparison .path-weak .path-tag { color: var(--red); }
1123
+ .body .path-comparison .path-strong .path-tag { color: var(--em); }
1124
+ .body .path-comparison .path-name { color: var(--text); }
1125
+ .body .path-comparison .path li { color: var(--text-soft); border-color: var(--line); }
1126
+ .body .path-comparison .path-weak li::before { background: var(--red); }
1127
+ .body .path-comparison .path-strong li::before { background: var(--em); }
1128
+ .body .path-comparison-implication { color: var(--text-soft); }
1129
+
1130
+ /* ─── Views-compared · per-spine · boardroom-dark ──────────────
1131
+ Hairline frame · accent stripe on TOP (per project rule).
1132
+ Alignment uses `--em` (gold); divergence uses `--red`. */
1133
+ .body .vc-section-label { color: var(--em); border-color: var(--line-bright); }
1134
+ .body .views-compared-alignment .vc-card {
1135
+ border-color: var(--line-bright);
1136
+ border-top-color: var(--em);
1137
+ }
1138
+ .body .vc-card-headline { color: var(--text); }
1139
+ .body .vc-chip { color: var(--text-soft); border-color: var(--line-bright); }
1140
+ .body .vc-card-note { color: var(--text-soft); }
1141
+ .body .vc-fork { border-color: var(--line-bright); border-top-color: var(--red); }
1142
+ .body .vc-fork-hinge { color: var(--text); }
1143
+ .body .vc-side { border-color: var(--line); }
1144
+ .body .vc-side-label { color: var(--red); }
1145
+ .body .vc-side-stance { color: var(--text-soft); }
1146
+ .body .vc-fork-resolution { color: var(--text-soft); border-top-color: var(--line); }
1147
+ .body .vc-resolution-label { color: var(--text-faint); }
1148
+ .body .vc-row-name { color: var(--text); }
1149
+ .body .vc-row-stance { color: var(--em); }
1150
+ .body .vc-row-position { color: var(--text-soft); }
1151
+ .body .vc-row-quote { color: var(--text); }
1152
+ .body .views-compared-synthesis {
1153
+ border-color: var(--line-bright);
1154
+ border-top-color: var(--text-faint);
1155
+ }
1156
+ .body .vc-synthesis-body { color: var(--text); }