@kolkrabbi/kol-theme 0.100.0 → 0.101.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.
@@ -38,6 +38,17 @@
38
38
  --kol-surface-tertiary: #ffffff;
39
39
  --kol-surface-on-tertiary: #0e0e11;
40
40
 
41
+ /* THE SUNKEN WELL — a step DOWN from the page, in BOTH themes (measured on
42
+ * kol-fxr's /settings, 2026-08-30). The `sunken` tone had no token of its own
43
+ * and borrowed `--kol-oq-inverse-96`, which is a step down in light (242 on a
44
+ * 250 page) and a step UP in dark (24 on an 18 page). Swapping it to
45
+ * `surface-tertiary` only mirrors the fault: 14 on 18 in dark, but 255 on 250
46
+ * in light. The two are exact opposites, so no existing token is sunken on
47
+ * both sides — which is why "everything should be sunken" kept coming back
48
+ * looking wrong on one theme however it was patched.
49
+ * Light: #f2f2f2 (242) · Dark: #0e0e11 (14). Below the page, both times. */
50
+ --kol-surface-sunken: #f2f2f2;
51
+
41
52
  --kol-surface-inverse: #0e0e11;
42
53
  --kol-surface-on-inverse: #fcfbf8;
43
54
 
@@ -66,6 +77,9 @@
66
77
  --kol-surface-tertiary: #0e0e11;
67
78
  --kol-surface-on-tertiary: #ffffff;
68
79
 
80
+ /* the sunken well, dark side — below the #121215 page (see the light block) */
81
+ --kol-surface-sunken: #0e0e11;
82
+
69
83
  --kol-surface-inverse: #fcfbf8;
70
84
  --kol-surface-on-inverse: #0e0e11;
71
85
 
@@ -111,6 +125,11 @@
111
125
  --kol-surface-tertiary: #0e0e11;
112
126
  --kol-surface-on-tertiary: #ffffff;
113
127
 
128
+ /* the sunken well, system-dark — this block is the one a user who never
129
+ * touched the toggle gets, and it is the one the first pass of this fix
130
+ * forgot: the `:root` light value would have leaked into system dark. */
131
+ --kol-surface-sunken: #0e0e11;
132
+
114
133
  --kol-surface-inverse: #fcfbf8;
115
134
  --kol-surface-on-inverse: #0e0e11;
116
135
 
@@ -1324,13 +1324,30 @@
1324
1324
  * ink `fg-96`. `.kol-tone-inverse` stays selected for any class
1325
1325
  * hand-stamped on the old name.
1326
1326
  * ───────────────────────────────────────────────────────────────────── */
1327
- .kol-view-toggle.kol-tone-sunken, .kol-view-toggle.kol-tone-inverse { background-color: var(--kol-oq-inverse-96); }
1327
+ /* THE SUNKEN TONE IS `surface-tertiary`, NOT `oq-inverse-96` (measured on
1328
+ * kol-fxr's /settings, 2026-08-30). The whole set read `--kol-oq-inverse-96`,
1329
+ * which is `color-mix(#0e0e11 96%, #fcfbf8)` — four percent of near-WHITE mixed
1330
+ * in. On the dark theme that lands at luminance **23.7 against an 18.2 page**:
1331
+ * a tone named "sunken" was rendering RAISED, and every control wearing it
1332
+ * (dropdown trigger, view toggle, icon frames, theme toggle) sat as its own
1333
+ * pale box on the page. That is the "multiple backgrounds" the user has
1334
+ * reported repeatedly and I have not fixed.
1335
+ *
1336
+ * The diagnosis was already written into this file, twenty lines down, in the
1337
+ * comment above `.kol-dd-panel` — it works out the 23.5-vs-18 arithmetic and
1338
+ * names `surface-tertiary` as the answer. It was never applied to the rules
1339
+ * beneath it. Written down is not fixed.
1340
+ *
1341
+ * `surface-tertiary` is `#0e0e11` in dark (14.2, genuinely below the page) and
1342
+ * `#ffffff` in light, so it is theme-correct on both sides where a mix toward
1343
+ * a fixed near-white could only ever be right on one. */
1344
+ .kol-view-toggle.kol-tone-sunken, .kol-view-toggle.kol-tone-inverse { background-color: var(--kol-surface-sunken); }
1328
1345
  .kol-view-toggle.kol-tone-sunken > button[aria-pressed="true"], .kol-view-toggle.kol-tone-inverse > button[aria-pressed="true"] { background-color: var(--kol-fg-08); }
1329
1346
  .kol-view-toggle.kol-tone-sunken > button:not([aria-pressed="true"]):hover, .kol-view-toggle.kol-tone-inverse > button:not([aria-pressed="true"]):hover { background-color: color-mix(in srgb, var(--kol-color-ab-white) 8%, transparent); }
1330
- .kol-control.kol-tone-sunken, .kol-control.kol-tone-inverse { background-color: var(--kol-oq-inverse-96); }
1331
- .kol-expand.kol-tone-sunken, .kol-expand.kol-tone-inverse { background-color: var(--kol-oq-inverse-96); }
1347
+ .kol-control.kol-tone-sunken, .kol-control.kol-tone-inverse { background-color: var(--kol-surface-sunken); }
1348
+ .kol-expand.kol-tone-sunken, .kol-expand.kol-tone-inverse { background-color: var(--kol-surface-sunken); }
1332
1349
  /* the tone's fill, one selector — nothing left to cancel (2026-08-28) */
1333
- .kol-dd-trigger.kol-tone-sunken, .kol-dd-trigger.kol-tone-inverse { background-color: var(--kol-oq-inverse-96); }
1350
+ .kol-dd-trigger.kol-tone-sunken, .kol-dd-trigger.kol-tone-inverse { background-color: var(--kol-surface-sunken); }
1334
1351
  /* THE PANEL IS OPAQUE (user 2026-08-28: "transparent doesn't work for
1335
1352
  * dropdown") — it floats over page content, and every `fg-*` stop is an alpha
1336
1353
  * wash that the content reads through. `oq-inverse-*`, the opaque tier, bakes
@@ -1338,7 +1355,7 @@
1338
1355
  * lands ~23.5 against the #121215 page's 18: lighter than the page, the wrong
1339
1356
  * side of it. `surface-tertiary` is the flat twin of what the trigger renders:
1340
1357
  * #0e0e11 (14.0) in dark against the trigger's 14.2, #ffffff in light. */
1341
- .kol-dd-panel.kol-tone-sunken, .kol-dd-panel.kol-tone-inverse { background-color: var(--kol-oq-inverse-96); }
1358
+ .kol-dd-panel.kol-tone-sunken, .kol-dd-panel.kol-tone-inverse { background-color: var(--kol-surface-sunken); }
1342
1359
  /* the rest of the set — Button (icon-only especially), IconFrame, ThemeToggle:
1343
1360
  * the well, transparent edge, fg-96 ink; hover the white wash, pressed the
1344
1361
  * fg-08 chip — both LAYERED over the well (a gradient image over the fill),
@@ -1346,20 +1363,20 @@
1346
1363
  .kol-btn.kol-tone-sunken,
1347
1364
  .kol-icon-frame.kol-tone-sunken,
1348
1365
  .kol-theme-toggle.kol-tone-sunken {
1349
- background-color: var(--kol-oq-inverse-96);
1366
+ background-color: var(--kol-surface-sunken);
1350
1367
  border-color: transparent;
1351
1368
  color: var(--kol-fg-96);
1352
1369
  }
1353
1370
  @media (hover: hover) {
1354
1371
  .kol-btn.kol-tone-sunken:not(.kol-btn-animate):not(:disabled):hover {
1355
- background-color: var(--kol-oq-inverse-96);
1372
+ background-color: var(--kol-surface-sunken);
1356
1373
  background-image: linear-gradient(color-mix(in srgb, var(--kol-color-ab-white) 8%, transparent), color-mix(in srgb, var(--kol-color-ab-white) 8%, transparent));
1357
1374
  color: var(--kol-fg-96);
1358
1375
  }
1359
1376
  }
1360
1377
  .kol-btn.kol-tone-sunken.kol-btn-pressed,
1361
1378
  .kol-btn.kol-tone-sunken:not(:disabled):active {
1362
- background-color: var(--kol-oq-inverse-96);
1379
+ background-color: var(--kol-surface-sunken);
1363
1380
  background-image: linear-gradient(var(--kol-fg-08), var(--kol-fg-08));
1364
1381
  color: var(--kol-fg-96);
1365
1382
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-theme",
3
- "version": "0.100.0",
3
+ "version": "0.101.0",
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",