privateboard 0.1.2 → 0.1.4

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.
@@ -36,19 +36,30 @@
36
36
  --oxblood: #7A2E1A;
37
37
  --oxblood-deep: #4F1D10;
38
38
 
39
+ /* Cross-spine token aliases · used by the unified design system. */
40
+ --accent: var(--gold);
41
+ --warn: var(--oxblood);
42
+
39
43
  /* Confidence — text only, no fill */
40
44
  --conf-high: #3F5C2F;
41
45
  --conf-mid: #6E541A;
42
46
  --conf-low: #7A2E1A;
43
47
 
44
- /* Type · CJK fallbacks anchored on Songti SC for headless reach */
48
+ /* Type · CJK chain anchors on PingFang SC so Chinese glyphs render
49
+ as PingFang globally (user preference). Songti SC remains as a
50
+ last-resort fallback for headless contexts that can't reach
51
+ PingFang's font directory. */
45
52
  --serif: "Charter", "Source Serif Pro", "Iowan Old Style", Georgia,
46
- "Songti SC", "STSong", "Source Han Serif CN", "Noto Serif CJK SC", serif;
53
+ "PingFang SC", "PingFang TC", "Hiragino Sans GB",
54
+ "Source Han Sans CN", "Noto Sans CJK SC",
55
+ "Songti SC", "STSong", serif;
47
56
  --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;
57
+ "PingFang SC", "PingFang TC", "Hiragino Sans GB",
58
+ "Source Han Sans CN", "Noto Sans CJK SC",
59
+ "Songti SC", "STSong", sans-serif;
50
60
  --mono: "SF Mono", "JetBrains Mono", "Menlo",
51
- "Songti SC", "STSong", monospace;
61
+ "PingFang SC", "PingFang TC", "Hiragino Sans GB",
62
+ "Source Han Sans CN", "Songti SC", "STSong", monospace;
52
63
  }
53
64
 
54
65
  * { box-sizing: border-box; margin: 0; padding: 0; }
@@ -56,7 +67,7 @@ html, body {
56
67
  background: var(--paper);
57
68
  color: var(--ink);
58
69
  font-family: var(--sans);
59
- font-size: 14.5px;
70
+ font-size: 15px;
60
71
  line-height: 1.65;
61
72
  -webkit-font-smoothing: antialiased;
62
73
  text-rendering: optimizeLegibility;
@@ -77,7 +88,7 @@ html, body {
77
88
  display: flex; justify-content: space-between; align-items: center;
78
89
  gap: 14px;
79
90
  font-family: var(--mono);
80
- font-size: 10.5px;
91
+ font-size: 11px;
81
92
  letter-spacing: 0.18em;
82
93
  text-transform: uppercase;
83
94
  border-bottom: 1px solid var(--rule);
@@ -106,15 +117,6 @@ html, body {
106
117
  position: relative;
107
118
  border-bottom: 1px solid var(--rule);
108
119
  }
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
120
  .cover-tag {
119
121
  display: flex;
120
122
  align-items: center;
@@ -168,7 +170,7 @@ html, body {
168
170
  @media (max-width: 720px) { .cover-byline { grid-template-columns: repeat(2, 1fr); gap: 22px; } }
169
171
  .byline-block .label {
170
172
  font-family: var(--mono);
171
- font-size: 9.5px;
173
+ font-size: 10px;
172
174
  letter-spacing: 0.24em;
173
175
  text-transform: uppercase;
174
176
  color: var(--gold);
@@ -177,7 +179,7 @@ html, body {
177
179
  }
178
180
  .byline-block .value {
179
181
  font-family: var(--sans);
180
- font-size: 12.5px;
182
+ font-size: 13px;
181
183
  color: var(--ink);
182
184
  font-weight: 400;
183
185
  line-height: 1.5;
@@ -200,7 +202,7 @@ html, body {
200
202
  }
201
203
  .cover-versions-label {
202
204
  font-family: var(--mono);
203
- font-size: 9.5px;
205
+ font-size: 10px;
204
206
  letter-spacing: 0.24em;
205
207
  text-transform: uppercase;
206
208
  color: var(--ink-faint);
@@ -267,13 +269,15 @@ html, body {
267
269
  font-weight: 500;
268
270
  }
269
271
  .body p {
270
- margin: 12px 0;
272
+ margin: 14px 0;
271
273
  line-height: 1.7;
272
274
  color: var(--ink-soft);
273
- font-size: 14.5px;
275
+ /* 16px · comfortable reading register, body dominant over the
276
+ 14px table cells. Earlier 14.5 / 13.5 swings were too tight. */
277
+ font-size: 16px;
274
278
  }
275
- .body ul, .body ol { margin: 12px 0 16px 22px; }
276
- .body li { margin: 6px 0; line-height: 1.65; color: var(--ink-soft); font-size: 14px; }
279
+ .body ul, .body ol { margin: 14px 0 18px 22px; }
280
+ .body li { margin: 8px 0; line-height: 1.7; color: var(--ink-soft); font-size: 15px; }
277
281
  .body strong { color: var(--ink); font-weight: 600; }
278
282
  .body em { color: var(--gold-deep); font-style: italic; }
279
283
 
@@ -283,7 +287,7 @@ html, body {
283
287
  border: 1px solid var(--rule-strong);
284
288
  padding: 1px 7px;
285
289
  font-family: var(--mono);
286
- font-size: 11.5px;
290
+ font-size: 12px;
287
291
  color: var(--ink);
288
292
  letter-spacing: 0.04em;
289
293
  border-radius: 2px;
@@ -292,18 +296,12 @@ html, body {
292
296
  .body code.badge-confidence-high { color: var(--conf-high); border-color: rgba(63, 92, 47, 0.4); }
293
297
  .body code.badge-confidence-medium { color: var(--conf-mid); border-color: rgba(110, 84, 26, 0.4); }
294
298
  .body code.badge-confidence-low { color: var(--conf-low); border-color: rgba(122, 46, 26, 0.4); }
295
- .body code.badge-priority-p0 {
296
- background: var(--ink); color: var(--paper); border-color: var(--ink);
297
- font-weight: 600; letter-spacing: 0.14em;
298
- }
299
- .body code.badge-priority-p1 {
300
- background: transparent; color: var(--ink); border-color: var(--ink);
301
- font-weight: 600; letter-spacing: 0.12em;
302
- }
303
- .body code.badge-priority-p2 {
304
- background: transparent; color: var(--ink-faint); border-color: var(--rule-strong);
305
- letter-spacing: 0.1em;
306
- }
299
+ /* Priority badges · typographic only · a16z uses gold-deep for the
300
+ strong-priority accent (matches its accent throughout) and ink /
301
+ ink-faint for the rest. */
302
+ .body code.badge-priority-p0 { color: var(--gold-deep); }
303
+ .body code.badge-priority-p1 { color: var(--ink); }
304
+ .body code.badge-priority-p2 { color: var(--ink-faint); }
307
305
 
308
306
  .body blockquote {
309
307
  padding: 14px 0;
@@ -325,7 +323,7 @@ html, body {
325
323
  background: transparent;
326
324
  margin: 0 0 44px;
327
325
  padding: 0 0 36px;
328
- border-top: 1.5px solid var(--ink);
326
+ border-top: 2px solid var(--ink);
329
327
  padding-top: 28px;
330
328
  border-bottom: 1px solid var(--rule);
331
329
  }
@@ -367,7 +365,7 @@ html, body {
367
365
  margin: 0 0 44px;
368
366
  padding: 28px 0 36px;
369
367
  background: transparent;
370
- border-top: 1.5px solid var(--ink);
368
+ border-top: 2px solid var(--ink);
371
369
  border-bottom: 1px solid var(--rule);
372
370
  }
373
371
  .body section.section-thesis p:first-child {
@@ -386,7 +384,7 @@ html, body {
386
384
  font-style: italic;
387
385
  }
388
386
  .body section.section-thesis p:not(:first-child) {
389
- font-size: 14.5px; color: var(--ink-soft); font-style: normal;
387
+ font-size: 15px; color: var(--ink-soft); font-style: normal;
390
388
  }
391
389
 
392
390
  /* ─── Working hypothesis ────────────────────────────────────── */
@@ -410,7 +408,7 @@ html, body {
410
408
  research-note's strategic frame. */
411
409
  .body h2.section-strategic-outlook {
412
410
  font-family: var(--mono);
413
- font-size: 10.5px;
411
+ font-size: 11px;
414
412
  color: var(--gold);
415
413
  text-transform: uppercase;
416
414
  letter-spacing: 0.26em;
@@ -420,7 +418,7 @@ html, body {
420
418
  .body section.section-strategic-outlook {
421
419
  margin: 0 0 44px;
422
420
  padding: 28px 0 36px;
423
- border-top: 1.5px solid var(--ink);
421
+ border-top: 2px solid var(--ink);
424
422
  border-bottom: 1px solid var(--rule);
425
423
  }
426
424
  .body section.section-strategic-outlook p:first-child {
@@ -465,7 +463,7 @@ html, body {
465
463
  top: 24px; left: 0;
466
464
  font-family: var(--mono);
467
465
  font-weight: 500;
468
- font-size: 10.5px;
466
+ font-size: 11px;
469
467
  color: var(--gold);
470
468
  line-height: 1;
471
469
  letter-spacing: 0.16em;
@@ -482,7 +480,7 @@ html, body {
482
480
  letter-spacing: -0.005em;
483
481
  }
484
482
  .body section.section-critical-assumptions ol > li p {
485
- font-size: 13.5px;
483
+ font-size: 14px;
486
484
  line-height: 1.6;
487
485
  color: var(--ink-soft);
488
486
  }
@@ -511,7 +509,7 @@ html, body {
511
509
  border-top: 1px solid var(--gold);
512
510
  }
513
511
  .body section.section-scenario-tree h3:first-of-type {
514
- border-top: 1.5px solid var(--ink);
512
+ border-top: 2px solid var(--ink);
515
513
  padding-top: 18px;
516
514
  }
517
515
  .body section.section-scenario-tree p {
@@ -537,7 +535,7 @@ html, body {
537
535
  .body section.section-scenario-tree ul > li {
538
536
  position: relative;
539
537
  padding-left: 14px;
540
- font-size: 13.5px;
538
+ font-size: 14px;
541
539
  line-height: 1.6;
542
540
  color: var(--ink-soft);
543
541
  margin: 4px 0;
@@ -554,22 +552,22 @@ html, body {
554
552
  Override the default md-table treatment with a tighter,
555
553
  institutional-feel grid. Mono headers, hairline rules. */
556
554
  .body section.section-leading-indicators table.md-table {
557
- font-size: 13px;
558
- border-top: 1.5px solid var(--ink);
555
+ font-size: 14px;
556
+ border-top: 2px solid var(--ink);
559
557
  }
560
558
  .body section.section-leading-indicators table.md-table th {
561
559
  background: transparent;
562
560
  color: var(--gold);
563
561
  font-family: var(--mono);
564
562
  font-weight: 600;
565
- font-size: 9.5px;
563
+ font-size: 12px;
566
564
  letter-spacing: 0.22em;
567
565
  text-transform: uppercase;
568
566
  padding: 10px 12px;
569
567
  }
570
568
  .body section.section-leading-indicators table.md-table td {
571
569
  padding: 12px;
572
- font-size: 13px;
570
+ font-size: 14px;
573
571
  color: var(--ink-soft);
574
572
  vertical-align: top;
575
573
  line-height: 1.5;
@@ -579,7 +577,7 @@ html, body {
579
577
  font-weight: 600;
580
578
  color: var(--ink);
581
579
  font-family: var(--mono);
582
- font-size: 11.5px;
580
+ font-size: 14px;
583
581
  letter-spacing: 0.04em;
584
582
  width: 26%;
585
583
  }
@@ -615,7 +613,7 @@ html, body {
615
613
  font-size: 16px; line-height: 1.3; margin: 0 0 10px; font-weight: 600;
616
614
  }
617
615
  .body section.section-headline-findings .pillar p {
618
- font-size: 13.5px; color: var(--ink-soft); line-height: 1.6; margin: 8px 0;
616
+ font-size: 14px; color: var(--ink-soft); line-height: 1.6; margin: 8px 0;
619
617
  }
620
618
 
621
619
  /* ─── Big Ideas · disciplined typographic list ───────────────── */
@@ -666,7 +664,7 @@ html, body {
666
664
  border-top: 1px solid var(--gold);
667
665
  border-bottom: 1px solid var(--rule);
668
666
  }
669
- .body section.section-why-now p { font-size: 14.5px; line-height: 1.65; color: var(--ink); }
667
+ .body section.section-why-now p { font-size: 15px; line-height: 1.65; color: var(--ink); }
670
668
  .body section.section-why-now p:first-child { font-weight: 500; color: var(--ink); }
671
669
 
672
670
  /* ─── The Bet · disciplined numbered list ───────────────────── */
@@ -737,7 +735,7 @@ html, body {
737
735
  border-bottom: 1px solid var(--rule);
738
736
  }
739
737
  .body section.section-two-paths > p:first-child {
740
- font-size: 14.5px; color: var(--ink-soft); margin-bottom: 16px;
738
+ font-size: 15px; color: var(--ink-soft); margin-bottom: 16px;
741
739
  }
742
740
 
743
741
  /* ─── Recommendations / Considerations · editorial cards ───── */
@@ -751,17 +749,34 @@ html, body {
751
749
 
752
750
  .body section.section-recommendations li.rec-item,
753
751
  .body section.section-considerations li.rec-item {
754
- padding: 0; margin: 36px 0 0; list-style: none; border: none;
752
+ padding: 0;
753
+ /* Bigger inter-card gap (36 → 48) so each recommendation reads as
754
+ its own block; the user's complaint about the section was
755
+ "stacked / hard to see clearly" — most of that was the cards
756
+ packing too tight against each other after they each grew
757
+ critical-dependency + risk rows. */
758
+ margin: 48px 0 0;
759
+ list-style: none;
760
+ border: none;
755
761
  }
756
762
  .body section.section-recommendations li.rec-item:first-child,
757
763
  .body section.section-considerations li.rec-item:first-child { margin-top: 22px; }
758
764
  .body section.section-recommendations li.rec-item::before,
759
765
  .body section.section-considerations li.rec-item::before { display: none; }
760
766
 
761
- .rec-rule { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
767
+ /* Header row · "01 P0 ──────────" with a subtle hairline that
768
+ delimits the card without screaming. P0 still gets a gold tint to
769
+ carry priority, but no longer paints a 2px gold bar — the
770
+ priority badge itself is enough signal. */
771
+ .rec-rule {
772
+ display: flex;
773
+ align-items: center;
774
+ gap: 12px;
775
+ margin-bottom: 18px;
776
+ }
762
777
  .rec-num {
763
778
  font-family: var(--mono);
764
- font-size: 10.5px;
779
+ font-size: 11px;
765
780
  font-weight: 500;
766
781
  color: var(--ink-faint);
767
782
  letter-spacing: 0.2em;
@@ -773,37 +788,55 @@ html, body {
773
788
  font-size: 10px;
774
789
  padding: 2px 8px;
775
790
  }
776
- .rec-rule-line { flex: 1 1 auto; height: 1px; background: var(--rule); display: block; }
777
- .rec-priority-p0 .rec-rule-line { background: var(--gold); height: 1.5px; }
791
+ .rec-rule-line {
792
+ flex: 1 1 auto;
793
+ height: 1px;
794
+ background: var(--rule);
795
+ display: block;
796
+ opacity: 0.7;
797
+ }
778
798
  .rec-priority-p0 .rec-num { color: var(--gold); }
799
+
800
+ /* Action title · serif display, 19px so it reads as the card's
801
+ headline. Slight bump from 18 → 19 since body p is now 16px. */
779
802
  .rec-action {
780
803
  font-family: var(--serif);
781
- font-size: 18px;
782
- line-height: 1.32;
804
+ font-size: 19px;
805
+ line-height: 1.35;
783
806
  color: var(--ink);
784
807
  font-weight: 600;
785
808
  letter-spacing: -0.012em;
786
809
  margin: 0 0 14px;
787
810
  max-width: 64ch;
788
811
  }
812
+
813
+ /* Rationale · normal body register. Bumped 14 → 15.5 so it tracks
814
+ the new 16px body baseline (still slightly tighter to keep the
815
+ meta strip below readable as secondary). */
789
816
  .rec-rationale {
790
- font-size: 14px;
817
+ font-size: 16px;
791
818
  line-height: 1.7;
792
819
  color: var(--ink-soft);
793
- margin: 0 0 18px;
820
+ margin: 0 0 16px;
794
821
  max-width: 64ch;
795
822
  }
823
+
824
+ /* Meta strip · compressed inline label/value pairs. Same as before
825
+ but slightly larger gap so 3-4 pairs don't collide on one row. */
796
826
  .rec-meta {
797
- display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px;
798
- margin: 0 0 14px;
799
- font-size: 12.5px;
800
- line-height: 1.6;
827
+ display: flex;
828
+ flex-wrap: wrap;
829
+ align-items: baseline;
830
+ gap: 6px 14px;
831
+ margin: 0 0 12px;
832
+ font-size: 13px;
833
+ line-height: 1.65;
801
834
  color: var(--ink);
802
835
  }
803
836
  .rec-meta-pair { display: inline-flex; align-items: baseline; gap: 7px; min-width: 0; }
804
837
  .rec-meta-label {
805
838
  font-family: var(--mono);
806
- font-size: 9.5px;
839
+ font-size: 10px;
807
840
  color: var(--gold);
808
841
  letter-spacing: 0.22em;
809
842
  text-transform: uppercase;
@@ -811,29 +844,62 @@ html, body {
811
844
  }
812
845
  .rec-meta-value { color: var(--ink); font-weight: 500; }
813
846
  .rec-meta-sep { color: var(--ink-muted); }
847
+
848
+ /* Dependency · "DEPENDS ON — body". Same shape as risk row but in a
849
+ neutral ink-mid colour so it doesn't compete with the warning
850
+ register of the risk row. */
851
+ .rec-dependency {
852
+ display: flex;
853
+ align-items: flex-start;
854
+ gap: 8px;
855
+ font-size: 13px;
856
+ line-height: 1.65;
857
+ color: var(--ink-mid);
858
+ margin: 0 0 8px;
859
+ padding: 0;
860
+ background: transparent;
861
+ }
862
+ .rec-dependency-prefix {
863
+ font-family: var(--mono);
864
+ font-size: 10px;
865
+ color: var(--ink-faint);
866
+ letter-spacing: 0.22em;
867
+ text-transform: uppercase;
868
+ font-weight: 500;
869
+ flex: 0 0 auto;
870
+ }
871
+ .rec-dependency-sep { color: var(--ink-faint); margin: 0 2px; flex: 0 0 auto; }
872
+ .rec-dependency-text { flex: 1 1 auto; }
873
+
874
+ /* Risk · "RISK IF SKIPPED — body". Stripped the oxblood top-border
875
+ that gave every card a coloured rule (per the project rule about
876
+ not piling adjacent borders); the oxblood prefix + italic body do
877
+ the warning work themselves. Slightly larger body so it tracks
878
+ the rest of the card's new sizing. */
814
879
  .rec-risk {
815
- display: flex; align-items: flex-start; gap: 8px;
816
- font-size: 12.5px;
817
- line-height: 1.6;
880
+ display: flex;
881
+ align-items: flex-start;
882
+ gap: 8px;
883
+ font-size: 13px;
884
+ line-height: 1.65;
818
885
  color: var(--oxblood-deep);
819
886
  margin: 0;
820
- font-style: italic;
821
- padding: 12px 0 4px;
887
+ padding: 0;
822
888
  background: transparent;
823
- border-top: 1px solid var(--oxblood);
889
+ font-style: italic;
824
890
  }
825
891
  .rec-risk-text { flex: 1 1 auto; }
826
892
  .rec-risk-prefix {
827
893
  font-family: var(--mono);
828
894
  font-style: normal;
829
- font-size: 9.5px;
895
+ font-size: 10px;
830
896
  color: var(--oxblood);
831
897
  letter-spacing: 0.24em;
832
898
  text-transform: uppercase;
833
899
  font-weight: 500;
834
- margin-right: 4px;
900
+ flex: 0 0 auto;
835
901
  }
836
- .rec-risk-sep { color: var(--oxblood); margin-right: 4px; }
902
+ .rec-risk-sep { color: var(--oxblood); margin: 0 2px; flex: 0 0 auto; }
837
903
 
838
904
  /* ─── New Questions · op-ed cards ──────────────────────────── */
839
905
  .body section.section-new-questions ol { padding: 0; margin: 24px 0 0; list-style: none; }
@@ -845,7 +911,7 @@ html, body {
845
911
  .nq-rule { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
846
912
  .nq-num {
847
913
  font-family: var(--mono);
848
- font-size: 10.5px;
914
+ font-size: 11px;
849
915
  font-weight: 500;
850
916
  color: var(--gold);
851
917
  letter-spacing: 0.22em;
@@ -856,7 +922,7 @@ html, body {
856
922
  flex: 0 0 auto;
857
923
  display: inline-flex; align-items: baseline; gap: 6px;
858
924
  font-family: var(--mono);
859
- font-size: 9.5px;
925
+ font-size: 10px;
860
926
  letter-spacing: 0.2em;
861
927
  text-transform: uppercase;
862
928
  color: var(--ink-faint);
@@ -939,7 +1005,7 @@ html, body {
939
1005
  }
940
1006
  .body section.section-planning-assumption blockquote {
941
1007
  border: none; padding: 0; margin: 0; background: none;
942
- font-style: normal; font-size: 14.5px;
1008
+ font-style: normal; font-size: 15px;
943
1009
  }
944
1010
  .body section.section-planning-assumption blockquote::before { display: none; }
945
1011
  .body section.section-planning-assumption blockquote strong:first-child {
@@ -958,8 +1024,8 @@ html, body {
958
1024
  width: 100%;
959
1025
  border-collapse: collapse;
960
1026
  margin: 22px 0 28px;
961
- font-size: 13.5px;
962
- border-top: 1.5px solid var(--ink);
1027
+ font-size: 14px;
1028
+ border-top: 2px solid var(--ink);
963
1029
  }
964
1030
  .body table.md-table th, .body table.md-table td {
965
1031
  padding: 12px 14px;
@@ -973,11 +1039,11 @@ html, body {
973
1039
  color: var(--ink-faint);
974
1040
  font-family: var(--mono);
975
1041
  font-weight: 500;
976
- font-size: 10px;
1042
+ font-size: 12px;
977
1043
  letter-spacing: 0.18em;
978
1044
  text-transform: uppercase;
979
1045
  }
980
- .body table.md-table td:first-child { font-weight: 600; color: var(--ink); }
1046
+ .body table.md-table td:first-child { font-weight: 600; color: var(--ink); font-size: 14px; }
981
1047
 
982
1048
  /* ─── Methodology footer ──────────────────────────────────── */
983
1049
  .body h2.section-methodology {
@@ -993,14 +1059,14 @@ html, body {
993
1059
  }
994
1060
  .body section.section-methodology {
995
1061
  color: var(--ink-faint);
996
- font-size: 12.5px;
1062
+ font-size: 13px;
997
1063
  line-height: 1.65;
998
1064
  }
999
1065
  .body section.section-methodology strong {
1000
1066
  color: var(--ink-soft);
1001
1067
  font-family: var(--mono);
1002
1068
  font-weight: 500;
1003
- font-size: 10.5px;
1069
+ font-size: 11px;
1004
1070
  letter-spacing: 0.12em;
1005
1071
  text-transform: uppercase;
1006
1072
  }
@@ -1011,7 +1077,7 @@ html, body {
1011
1077
  border-bottom: 1px solid var(--rule);
1012
1078
  padding: 14px 0;
1013
1079
  font-family: var(--mono);
1014
- font-size: 12.5px;
1080
+ font-size: 13px;
1015
1081
  color: var(--ink-soft);
1016
1082
  margin: 18px 0;
1017
1083
  overflow-x: auto;
@@ -1058,16 +1124,13 @@ html, body {
1058
1124
  <style>; this block tweaks surface, accent + typography to match
1059
1125
  the spine's voice. No `border-left`, no parallel borders against
1060
1126
  adjacent .chapter-num / section h2. */
1127
+ /* Inherits the Swiss-editorial baseline. a16z signatures: gold-deep
1128
+ label colour (the spine's accent) + oxblood downside trend. The
1129
+ earlier card-surface tint + gold-soft frame was retired — under
1130
+ the baseline's hairline-grid layout it produced a doubled frame
1131
+ around each cell. */
1061
1132
  .body .metric-strip-intro {
1062
1133
  color: var(--ink-soft);
1063
- font-family: var(--mono);
1064
- font-size: 11px;
1065
- }
1066
- .body .metric-card {
1067
- background: var(--gold-pale, rgba(201, 164, 107, 0.06));
1068
- border: 0.5px solid var(--gold-soft, rgba(201, 164, 107, 0.18));
1069
- padding: 16px 18px;
1070
- min-height: 104px;
1071
1134
  }
1072
1135
  .body .metric-label {
1073
1136
  color: var(--gold-deep);
@@ -1075,9 +1138,6 @@ html, body {
1075
1138
  }
1076
1139
  .body .metric-value {
1077
1140
  color: var(--ink);
1078
- font-size: 30px;
1079
- font-weight: 800;
1080
- letter-spacing: -0.015em;
1081
1141
  }
1082
1142
  .body .metric-card[data-trend="up"] .metric-value { color: var(--gold-deep); }
1083
1143
  .body .metric-card[data-trend="down"] .metric-value { color: var(--oxblood-deep); }
@@ -1085,3 +1145,58 @@ html, body {
1085
1145
  .body .metric-trend[data-trend="down"] { color: var(--oxblood-deep); }
1086
1146
  .body .metric-qualifier { color: var(--ink-soft); }
1087
1147
  .body .metric-attribution { color: var(--ink-faint); letter-spacing: 0.08em; }
1148
+
1149
+ /* Colophon · 56px horizontal gutter to match this spine's wider
1150
+ body padding (most spines use 32px; a16z is the outlier). Without
1151
+ this the brand card sits flush with the .doc edge while the body
1152
+ content above sits 56px inset — visibly misaligned. */
1153
+ .colophon { margin: 32px 56px 8px; }
1154
+
1155
+ /* ─── Path comparison · per-spine treatment ──────────────────────
1156
+ a16z uses oxblood (weak) / gold-deep (strong) — investment-thesis
1157
+ "the contrarian read vs the obvious bet" framing. */
1158
+ .body .path-comparison .path {
1159
+ background: var(--gold-pale, rgba(201, 164, 107, 0.06));
1160
+ border: 1px solid var(--gold-soft, rgba(201, 164, 107, 0.18));
1161
+ border-top-width: 3px;
1162
+ }
1163
+ .body .path-comparison .path-weak { border-top-color: var(--oxblood-deep); }
1164
+ .body .path-comparison .path-strong { border-top-color: var(--gold-deep); }
1165
+ .body .path-comparison .path-weak .path-tag { color: var(--oxblood-deep); }
1166
+ .body .path-comparison .path-strong .path-tag { color: var(--gold-deep); }
1167
+ .body .path-comparison .path-name { color: var(--ink); font-weight: 600; }
1168
+ .body .path-comparison .path li { color: var(--ink-soft); }
1169
+ .body .path-comparison .path-weak li::before { background: var(--oxblood-deep); }
1170
+ .body .path-comparison .path-strong li::before { background: var(--gold-deep); }
1171
+ .body .path-comparison-implication { color: var(--ink-soft); }
1172
+
1173
+ /* ─── Views-compared · per-spine · a16z-thesis ─────────────────
1174
+ Hairline frame · accent stripe on TOP (per project rule).
1175
+ Alignment uses gold-deep, divergence uses oxblood-deep. */
1176
+ .body .vc-section-label { color: var(--gold-deep); border-color: var(--gold-soft, rgba(201, 164, 107, 0.2)); }
1177
+ .body .views-compared-alignment .vc-card {
1178
+ border-color: var(--gold-soft, rgba(201, 164, 107, 0.2));
1179
+ border-top-color: var(--gold-deep);
1180
+ }
1181
+ .body .vc-card-headline { color: var(--ink); font-weight: 600; }
1182
+ .body .vc-chip { color: var(--ink-soft); border-color: var(--gold-soft, rgba(201, 164, 107, 0.25)); }
1183
+ .body .vc-card-note { color: var(--ink-soft); }
1184
+ .body .vc-fork {
1185
+ border-color: var(--gold-soft, rgba(201, 164, 107, 0.2));
1186
+ border-top-color: var(--oxblood-deep, var(--gold-deep));
1187
+ }
1188
+ .body .vc-fork-hinge { color: var(--ink); }
1189
+ .body .vc-side { border-color: var(--gold-soft, rgba(201, 164, 107, 0.18)); }
1190
+ .body .vc-side-label { color: var(--oxblood-deep, var(--gold-deep)); }
1191
+ .body .vc-side-stance { color: var(--ink-soft); }
1192
+ .body .vc-fork-resolution { color: var(--ink-soft); border-top-color: var(--gold-soft, rgba(201, 164, 107, 0.18)); }
1193
+ .body .vc-resolution-label { color: var(--ink-faint); }
1194
+ .body .vc-row-name { color: var(--ink); font-weight: 600; }
1195
+ .body .vc-row-stance { color: var(--gold-deep); }
1196
+ .body .vc-row-position { color: var(--ink-soft); }
1197
+ .body .vc-row-quote { color: var(--ink); }
1198
+ .body .views-compared-synthesis {
1199
+ border-color: var(--gold-soft, rgba(201, 164, 107, 0.2));
1200
+ border-top-color: var(--ink-faint);
1201
+ }
1202
+ .body .vc-synthesis-body { color: var(--ink); }