@kolkrabbi/kol-theme 0.9.1 → 0.9.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.
package/kol-color.css CHANGED
@@ -73,42 +73,13 @@
73
73
 
74
74
  /* =============================================================================
75
75
  * DARK MODE
76
- * Explicit dark-mode surface overrides ([data-theme="dark"], .dark) now come
77
- * from @kol/theme/kol-base-tokens.css (shared with apps/web). The system-
78
- * preference auto-dark block below stays brand-local web has no equivalent.
76
+ * Explicit dark-mode surface overrides ([data-theme="dark"], .dark) come from
77
+ * kol-base-tokens.css. There is deliberately NO OS-preference auto-dark block:
78
+ * user ruling 2026-07-15 (ledger 2.4) light mode first until migration
79
+ * completion; theme is decided only by an explicit data-theme. Reinstating
80
+ * OS-follow is a user ruling, not a cleanup.
79
81
  * ============================================================================= */
80
82
 
81
- /* =============================================================================
82
- * SYSTEM PREFERENCE (Automatic Dark Mode)
83
- *
84
- * KEPT deliberately (ruling applied 2026-07-15, ledger-2.0 #2.4): KOL policy
85
- * is light-first + FOLLOW-SYSTEM — an undecided page respects the visitor's
86
- * OS preference; an explicit choice (app-set data-theme or a saved toggle)
87
- * always wins because [data-theme="light"] opts out of this block and
88
- * [data-theme="dark"] doesn't need it. A repo wanting hard light-always
89
- * stamps data-theme="light" at boot — that's the per-repo seam, not a theme
90
- * edit. ThemeToggle + useTheme implement the same policy JS-side.
91
- * ============================================================================= */
92
-
93
- @media (prefers-color-scheme: dark) {
94
- :root:not([data-theme="light"]) {
95
- --kol-link: #60A5FA;
96
- --kol-link-hover: #93C5FD;
97
-
98
- --kol-surface-primary: #121215;
99
- --kol-surface-on-primary: #FAFAFA;
100
-
101
- --kol-surface-secondary: #19191D;
102
- --kol-surface-on-secondary: #F8F8F8;
103
-
104
- --kol-surface-tertiary: #0E0E11;
105
- --kol-surface-on-tertiary: #FFFFFF;
106
-
107
- --kol-surface-inverse: #FCFBF8;
108
- --kol-surface-on-inverse: #0E0E11;
109
- }
110
- }
111
-
112
83
  /* =============================================================================
113
84
  * BASE ANCHOR RULE — unstyled links get the link color. Sits in the
114
85
  * components layer, so any utility class or later-loading chrome sheet
@@ -897,7 +897,9 @@
897
897
  font-weight: 300;
898
898
  line-height: 24px;
899
899
  letter-spacing: 0.02em;
900
- color: var(--kol-fg-80);
900
+ /* Text-role contract (kol-opacity roles): body copy sits at the body role;
901
+ * emphasis/strong/headings climb the ladder from there. */
902
+ color: var(--kol-fg-body);
901
903
  }
902
904
 
903
905
  .kol-prose > :first-child { margin-top: 0; }
@@ -970,7 +972,7 @@
970
972
  line-height: 16px;
971
973
  letter-spacing: 0.14em;
972
974
  text-transform: uppercase;
973
- color: var(--kol-fg-64);
975
+ color: var(--kol-fg-body);
974
976
  margin: 0;
975
977
  }
976
978
 
@@ -987,7 +989,7 @@
987
989
  .kol-prose h5,
988
990
  .kol-prose h6 {
989
991
  font-weight: 500;
990
- color: var(--kol-surface-on-primary);
992
+ color: var(--kol-fg-emphasis);
991
993
  }
992
994
 
993
995
  .kol-prose h1 { font-family: var(--kol-font-family-sans-narrow); font-size: var(--kol-text-heading-01); line-height: 52px; margin: 0 0 24px; }
@@ -1010,8 +1012,10 @@
1010
1012
 
1011
1013
  /* ─── Inline ─── */
1012
1014
 
1013
- .kol-prose em { font-style: italic; }
1014
- .kol-prose strong { font-weight: 700; }
1015
+ /* Inline emphasis climbs the role ladder out of the body color:
1016
+ * em stresses at the strong role, strong lands on full-ink emphasis. */
1017
+ .kol-prose em { font-style: italic; color: var(--kol-fg-strong); }
1018
+ .kol-prose strong { font-weight: 700; color: var(--kol-fg-emphasis); }
1015
1019
 
1016
1020
  /* ─── Code (inline + block) — JetBrains Mono via the mono token. Same family
1017
1021
  * as `.kol-mono-N` so a future swap cascades. Body weight 400. ─── */
@@ -1058,7 +1062,7 @@
1058
1062
  margin: 0 0 8px;
1059
1063
  font-size: 24px;
1060
1064
  line-height: 32px;
1061
- color: var(--kol-surface-on-primary);
1065
+ color: var(--kol-fg-emphasis);
1062
1066
  }
1063
1067
 
1064
1068
  .kol-prose blockquote cite {
@@ -1069,7 +1073,7 @@
1069
1073
  font-weight: 500;
1070
1074
  line-height: 16px;
1071
1075
  letter-spacing: 0.04em;
1072
- color: var(--kol-fg-48);
1076
+ color: var(--kol-fg-meta);
1073
1077
  }
1074
1078
 
1075
1079
  .kol-prose blockquote cite::before { content: '— '; opacity: 0.6; }
@@ -1106,7 +1110,7 @@
1106
1110
  .kol-segment-title {
1107
1111
  font-family: var(--kol-font-family-sans-compact);
1108
1112
  font-weight: 500;
1109
- color: var(--kol-surface-on-primary);
1113
+ color: var(--kol-fg-emphasis);
1110
1114
  }
1111
1115
 
1112
1116
  /* standalone caption block (the `caption` block type) */
@@ -1116,7 +1120,7 @@
1116
1120
  font-size: 12px;
1117
1121
  line-height: 16px;
1118
1122
  letter-spacing: 0.02em;
1119
- color: var(--kol-fg-48, color-mix(in srgb, var(--kol-surface-on-primary) 48%, transparent));
1123
+ color: var(--kol-fg-meta);
1120
1124
  }
1121
1125
 
1122
1126
  /* inline links (the `link` mark) */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-theme",
3
- "version": "0.9.1",
3
+ "version": "0.9.3",
4
4
  "description": "KOL (Kolkrabbi) design-system tokens + base CSS — brand-neutral. The canonical token/cascade layer every other KOL package and consumer builds on.",
5
5
  "license": "MIT",
6
6
  "type": "module",