@kolkrabbi/kol-theme 0.107.0 → 0.108.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.
@@ -1324,7 +1324,22 @@
1324
1324
  * ink `fg-96`. `.kol-tone-inverse` stays selected for any class
1325
1325
  * hand-stamped on the old name.
1326
1326
  * ───────────────────────────────────────────────────────────────────── */
1327
- /* THE SUNKEN TONE IS `surface-tertiary`, NOT `oq-inverse-96` (measured on
1327
+ /* THE WELL TAKES THE PAGE'S WASH TOO (SunkenWellEatenByPageWash, kol-fxr
1328
+ * 2026-08-30). `--kol-surface-sunken` is derived from `surface-primary`, but
1329
+ * `AppShell`'s `pageWash` paints a film ON TOP of that page — and the control's
1330
+ * opaque fill does not receive it. At the ruled `fg-02` rung the light page
1331
+ * lands 250 × 0.98 + 18 × 0.02 = 245, which is EXACTLY the well: measured delta
1332
+ * [0,0,0], four controls rendering as bare text with no pill.
1333
+ *
1334
+ * Deepening the well would have worked by luck and broken on the next rung
1335
+ * change. Instead every sunken surface paints the same film the page does, so
1336
+ * the five levels hold by construction whatever `pageWash` is set to. The
1337
+ * property is unset outside an AppShell and falls back to `transparent`.
1338
+ *
1339
+ * State washes stack ON TOP of it — `linear-gradient(state), linear-gradient(wash)`
1340
+ * — because one background-color cannot carry two translucent layers.
1341
+ *
1342
+ * THE SUNKEN TONE IS `surface-tertiary`, NOT `oq-inverse-96` (measured on
1328
1343
  * kol-fxr's /settings, 2026-08-30). The whole set read `--kol-oq-inverse-96`,
1329
1344
  * which is `color-mix(#0e0e11 96%, #fcfbf8)` — four percent of near-WHITE mixed
1330
1345
  * in. On the dark theme that lands at luminance **23.7 against an 18.2 page**:
@@ -1341,13 +1356,13 @@
1341
1356
  * `surface-tertiary` is `#0e0e11` in dark (14.2, genuinely below the page) and
1342
1357
  * `#ffffff` in light, so it is theme-correct on both sides where a mix toward
1343
1358
  * 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); }
1359
+ .kol-view-toggle.kol-tone-sunken, .kol-view-toggle.kol-tone-inverse { background-color: var(--kol-surface-sunken); background-image: linear-gradient(var(--kol-shell-page-wash, transparent), var(--kol-shell-page-wash, transparent)); }
1345
1360
  .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); }
1346
1361
  .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: var(--kol-fg-04); }
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); }
1362
+ .kol-control.kol-tone-sunken, .kol-control.kol-tone-inverse { background-color: var(--kol-surface-sunken); background-image: linear-gradient(var(--kol-shell-page-wash, transparent), var(--kol-shell-page-wash, transparent)); }
1363
+ .kol-expand.kol-tone-sunken, .kol-expand.kol-tone-inverse { background-color: var(--kol-surface-sunken); background-image: linear-gradient(var(--kol-shell-page-wash, transparent), var(--kol-shell-page-wash, transparent)); }
1349
1364
  /* the tone's fill, one selector — nothing left to cancel (2026-08-28) */
1350
- .kol-dd-trigger.kol-tone-sunken, .kol-dd-trigger.kol-tone-inverse { background-color: var(--kol-surface-sunken); }
1365
+ .kol-dd-trigger.kol-tone-sunken, .kol-dd-trigger.kol-tone-inverse { background-color: var(--kol-surface-sunken); background-image: linear-gradient(var(--kol-shell-page-wash, transparent), var(--kol-shell-page-wash, transparent)); }
1351
1366
  /* THE PANEL IS OPAQUE (user 2026-08-28: "transparent doesn't work for
1352
1367
  * dropdown") — it floats over page content, and every `fg-*` stop is an alpha
1353
1368
  * wash that the content reads through. `oq-inverse-*`, the opaque tier, bakes
@@ -1355,7 +1370,7 @@
1355
1370
  * lands ~23.5 against the #121215 page's 18: lighter than the page, the wrong
1356
1371
  * side of it. `surface-tertiary` is the flat twin of what the trigger renders:
1357
1372
  * #0e0e11 (14.0) in dark against the trigger's 14.2, #ffffff in light. */
1358
- .kol-dd-panel.kol-tone-sunken, .kol-dd-panel.kol-tone-inverse { background-color: var(--kol-surface-sunken); }
1373
+ .kol-dd-panel.kol-tone-sunken, .kol-dd-panel.kol-tone-inverse { background-color: var(--kol-surface-sunken); background-image: linear-gradient(var(--kol-shell-page-wash, transparent), var(--kol-shell-page-wash, transparent)); }
1359
1374
  /* the rest of the set — Button (icon-only especially), IconFrame, ThemeToggle:
1360
1375
  * the well, transparent edge, fg-96 ink; hover the CONTRAST wash, pressed the
1361
1376
  * fg-08 chip — both LAYERED over the well (a gradient image over the fill),
@@ -1388,19 +1403,20 @@
1388
1403
  .kol-icon-frame.kol-tone-sunken,
1389
1404
  .kol-theme-toggle.kol-tone-sunken {
1390
1405
  background-color: var(--kol-surface-sunken);
1406
+ background-image: linear-gradient(var(--kol-shell-page-wash, transparent), var(--kol-shell-page-wash, transparent));
1391
1407
  border-color: transparent;
1392
1408
  color: var(--kol-fg-96);
1393
1409
  }
1394
1410
  @media (hover: hover) {
1395
1411
  .kol-btn.kol-tone-sunken:not(.kol-btn-animate):not(:disabled):not(.kol-dd-trigger):hover {
1396
1412
  background-color: var(--kol-surface-sunken);
1397
- background-image: linear-gradient(var(--kol-fg-04), var(--kol-fg-04));
1413
+ background-image: linear-gradient(var(--kol-fg-04), var(--kol-fg-04)), linear-gradient(var(--kol-shell-page-wash, transparent), var(--kol-shell-page-wash, transparent));
1398
1414
  color: var(--kol-fg-96);
1399
1415
  }
1400
1416
  }
1401
1417
  .kol-btn.kol-tone-sunken.kol-btn-pressed:not(.kol-dd-trigger),
1402
1418
  .kol-btn.kol-tone-sunken:not(:disabled):not(.kol-dd-trigger):active {
1403
1419
  background-color: var(--kol-surface-sunken);
1404
- background-image: linear-gradient(var(--kol-fg-08), var(--kol-fg-08));
1420
+ background-image: linear-gradient(var(--kol-fg-08), var(--kol-fg-08)), linear-gradient(var(--kol-shell-page-wash, transparent), var(--kol-shell-page-wash, transparent));
1405
1421
  color: var(--kol-fg-96);
1406
1422
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-theme",
3
- "version": "0.107.0",
3
+ "version": "0.108.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",