@kolkrabbi/kol-theme 0.136.0 → 0.137.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.
@@ -670,8 +670,26 @@
670
670
  .kol-filters-row {
671
671
  container-type: inline-size;
672
672
  }
673
+ /* THE TRACK COUNT, COMPUTED ONCE AND READ TWICE (CatalogFilterFirstGroupTrackCount,
674
+ * kol-client-olina 2026-09-03). The first group was `(100cqw − 120px) / 6` — one
675
+ * column of a six-track grid — while the catalog grid asks how many tracks FIT
676
+ * (ceiling 6, floor `--kol-catalog-min`): on a capped page at 1280 the grid
677
+ * renders five at 165 and the group measured 133, its right edge mid-card.
678
+ * The 2026-08-27 "sits over the first card" law was only true at six.
679
+ *
680
+ * Both now read one number: the count the grid actually renders —
681
+ * `min(cols, floor((W + gap) / (min + gap)))`, which is exactly what
682
+ * `repeat(auto-fill, minmax(max(min, (W − 5·gap) / 6), 1fr))` resolved to, so
683
+ * six-track pages are pixel-identical and narrower ones finally agree.
684
+ * `100cqw` is each element's own container — the filter row and the catalog
685
+ * grid's wrapper are both `inline-size` containers of the page's width.
686
+ * `round(down, …)` is CSS Values 4 (Firefox 118 · Chrome 125 · Safari 15.4). */
687
+ .kol-filters-first,
688
+ .kol-catalog-grid {
689
+ --_kol-catalog-n: max(1, min(var(--kol-catalog-cols, 6), round(down, (100cqw + 24px) / (var(--kol-catalog-min, 160px) + 24px), 1)));
690
+ }
673
691
  .kol-filters-first {
674
692
  flex: none;
675
- width: calc((100cqw - 120px) / 6);
693
+ width: calc((100cqw - (var(--_kol-catalog-n) - 1) * 24px) / var(--_kol-catalog-n));
676
694
  }
677
695
 
@@ -77,6 +77,21 @@
77
77
  /* PageBleed — cancels the gutter for a full-width embed (monitor's rack) */
78
78
  .kol-shell-page-bleed { margin-inline: calc(var(--kol-shell-page-pad) * -1); }
79
79
 
80
+ /* ── CatalogPage ────────────────────────────────────────────────────────── */
81
+
82
+ /* THE CATALOG GRID — a ceiling with a floor: up to `--kol-catalog-cols` (6)
83
+ * tracks, none narrower than `--kol-catalog-min` (160; `CatalogPage minColumn`
84
+ * sets it), gap 24. The count `--_kol-catalog-n` is computed in
85
+ * kol-components-organisms.css and shared with `.kol-filters-first`, so the
86
+ * filter row's first group is one track of THIS grid at every width — the
87
+ * grid used to be an inline `auto-fill` that resolved to the same tracks but
88
+ * told nobody how many (CatalogFilterFirstGroupTrackCount, 2026-09-03). */
89
+ .kol-catalog-grid {
90
+ display: grid;
91
+ gap: 24px;
92
+ grid-template-columns: repeat(var(--_kol-catalog-n), minmax(0, 1fr));
93
+ }
94
+
80
95
  /* ── NavRail ────────────────────────────────────────────────────────────── */
81
96
 
82
97
  /* The flat rail's own stacking. Geometry (the fixed box, the padding, the gap)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-theme",
3
- "version": "0.136.0",
3
+ "version": "0.137.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",