@kolkrabbi/kol-theme 0.118.0 → 0.120.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.
@@ -173,12 +173,16 @@
173
173
  * 2026-08-01 — it brings its own box, border, colour set and states, so this
174
174
  * class stopped painting one. It used to hand-draw a bordered square around a
175
175
  * literal `×` CHARACTER, which is why the button had no hover, no focus ring
176
- * and no glyph. The inset is --kol-spacing-3, the rung that already carried
177
- * this value. */
176
+ * and no glyph.
177
+ * `right: 0` (FullscreenOverlayCloseIdiom, kol-chess 2026-09-01): the sheet
178
+ * hugs the consumer's panel, so a --kol-spacing-3 inset floated the X 12px
179
+ * inside the content column's right edge — lined up with nothing the fields
180
+ * below it establish. On the edge, the button's box sits on the same vertical
181
+ * as the controls under it. */
178
182
  .kol-overlay-close {
179
183
  position: absolute;
180
184
  top: var(--kol-spacing-3);
181
- right: var(--kol-spacing-3);
185
+ right: 0;
182
186
  z-index: 10;
183
187
  }
184
188
 
@@ -354,8 +354,15 @@
354
354
  text-transform: uppercase;
355
355
  }
356
356
 
357
+ /* sans-narrow BY NAME, not --kol-font-family-heading
358
+ * (ChessHeadingFontVarUndefined, kol-chess 2026-09-01): `heading` is a
359
+ * framework-tier brand seam (kol-brand-color.css) the theme never ships, so
360
+ * an app-shell consumer resolved it to nothing and every hero metric, title
361
+ * and chart heading fell to the inherited body font. sans-narrow is what the
362
+ * brand seam bound it to — same face where it worked, fixed where it did not.
363
+ * This applies to all 10 heading rules in this pack. */
357
364
  .board-playback__title {
358
- font-family: var(--kol-font-family-heading);
365
+ font-family: var(--kol-font-family-sans-narrow);
359
366
  font-size: 1.2rem;
360
367
  letter-spacing: 0.06em;
361
368
  margin: 6px 0 4px;
@@ -422,7 +429,7 @@
422
429
  }
423
430
 
424
431
  .board-playback__value {
425
- font-family: var(--kol-font-family-heading);
432
+ font-family: var(--kol-font-family-sans-narrow);
426
433
  font-size: 1.1rem;
427
434
  letter-spacing: 0.04em;
428
435
  }
@@ -530,7 +537,7 @@
530
537
  }
531
538
 
532
539
  .board-playback__avatar-name {
533
- font-family: var(--kol-font-family-heading);
540
+ font-family: var(--kol-font-family-sans-narrow);
534
541
  font-size: 0.9rem;
535
542
  letter-spacing: 0.06em;
536
543
  }
@@ -590,7 +597,7 @@
590
597
  }
591
598
 
592
599
  .analysis-table__result {
593
- font-family: var(--kol-font-family-heading);
600
+ font-family: var(--kol-font-family-sans-narrow);
594
601
  font-size: 0.85rem;
595
602
  letter-spacing: 0.08em;
596
603
  text-transform: uppercase;
@@ -750,7 +757,7 @@
750
757
  }
751
758
 
752
759
  .chess-hero-metric__value {
753
- font-family: var(--kol-font-family-heading);
760
+ font-family: var(--kol-font-family-sans-narrow);
754
761
  font-size: 2rem;
755
762
  font-weight: 600;
756
763
  letter-spacing: -0.02em;
@@ -810,7 +817,7 @@
810
817
  }
811
818
 
812
819
  .chess-hero__title {
813
- font-family: var(--kol-font-family-heading);
820
+ font-family: var(--kol-font-family-sans-narrow);
814
821
  font-size: 1rem;
815
822
  letter-spacing: 0.08em;
816
823
  text-transform: uppercase;
@@ -825,7 +832,7 @@
825
832
  }
826
833
 
827
834
  .chess-hero__value {
828
- font-family: var(--kol-font-family-heading);
835
+ font-family: var(--kol-font-family-sans-narrow);
829
836
  font-size: 2.25rem;
830
837
  font-weight: 600;
831
838
  letter-spacing: -0.02em;
@@ -939,7 +946,7 @@
939
946
  }
940
947
 
941
948
  .chess-hero__side-value {
942
- font-family: var(--kol-font-family-heading);
949
+ font-family: var(--kol-font-family-sans-narrow);
943
950
  font-size: 1.75rem;
944
951
  font-weight: 600;
945
952
  letter-spacing: -0.02em;
@@ -1065,7 +1072,7 @@
1065
1072
  }
1066
1073
 
1067
1074
  .chess-donut-chart__title {
1068
- font-family: var(--kol-font-family-heading);
1075
+ font-family: var(--kol-font-family-sans-narrow);
1069
1076
  font-size: 0.85rem;
1070
1077
  letter-spacing: 0.08em;
1071
1078
  text-transform: capitalize;
@@ -1199,7 +1206,7 @@
1199
1206
  }
1200
1207
 
1201
1208
  .chess-stacked-bar-chart__title {
1202
- font-family: var(--kol-font-family-heading);
1209
+ font-family: var(--kol-font-family-sans-narrow);
1203
1210
  font-size: 1.5rem;
1204
1211
  font-weight: 600;
1205
1212
  letter-spacing: -0.02em;
@@ -158,6 +158,25 @@
158
158
  }
159
159
  }
160
160
 
161
+ /* Card subtitles — the WRAPPING secondary line (DashDetailWrapsWithoutLeading,
162
+ * kol-chess 2026-09-01). `.dash-detail` is line-height 1 — single-line chrome
163
+ * by the type protocol's fault line — and CardHeader was handing it full
164
+ * sentences that wrapped to three leading-less lines at 390. Same ramp and
165
+ * step, real leading; footers and labels keep `.dash-detail`. */
166
+ .dash-subtitle {
167
+ font-family: var(--kol-font-family-mono);
168
+ font-weight: 400;
169
+ font-size: 10px;
170
+ line-height: 1.5;
171
+ color: var(--kol-surface-on-primary);
172
+ }
173
+
174
+ @container (min-width: 768px) {
175
+ .dash-subtitle {
176
+ font-size: 12px;
177
+ }
178
+ }
179
+
161
180
  /* Chart axes, compact items, legends — 8px → 11px, regular weight */
162
181
  .dash-caption {
163
182
  font-family: var(--kol-font-family-mono);
@@ -97,8 +97,11 @@
97
97
  * be a second source of truth for it. And no `!important`: the rail reads its
98
98
  * own `--kol-shell-drawer-width` in drawer mode instead of the live rail token,
99
99
  * so nothing here is fighting an inline style. */
100
+ /* FROM THE RIGHT (ShellDrawerOnRight, kol-chess 2026-09-01, user ruling: the
101
+ * close must not land mid-screen). NavRail pins itself right-0 in drawer mode;
102
+ * off-canvas is +100%. */
100
103
  [data-rail-drawer] .kol-shell-rail {
101
- transform: translateX(-100%);
104
+ transform: translateX(100%);
102
105
  transition: transform 220ms cubic-bezier(0.4, 0, 0.2, 1);
103
106
  }
104
107
  [data-rail-drawer="open"] .kol-shell-rail {
@@ -109,34 +112,17 @@
109
112
  }
110
113
 
111
114
  /* Above the rail, so it stays tappable with the drawer open. */
115
+ /* TOP-RIGHT, both states (ShellDrawerOnRight): with the drawer on the right
116
+ * the trigger and the open X share one corner at the screen edge — where the
117
+ * thumb is — so the 2026-08-31 travel rule is gone; it was the cure for the
118
+ * left side and nothing needs to move any more. */
112
119
  .kol-shell-drawer-trigger {
113
120
  position: fixed;
114
121
  top: 12px;
115
- left: 12px;
122
+ right: 12px;
116
123
  z-index: calc(var(--kol-z-sticky) + 2);
117
124
  width: 32px;
118
125
  height: 32px;
119
- transition: transform 220ms cubic-bezier(0.4, 0, 0.2, 1);
120
- }
121
-
122
- /* THE TRIGGER RIDES THE DRAWER'S TRAILING EDGE WHEN OPEN (device report from
123
- * kol-chess, 2026-08-31 — user: "menu is on the wrong side it overlaps close
124
- * button when open"). Fixed at 12/12 it sat INSIDE the drawer it opens: the
125
- * drawer spans 0–240 from the same edge, so the close × was drawn on top of the
126
- * rail's own logomark row, both in the same 32px. It stayed clickable — z-order
127
- * was right, and the scrim and Escape both closed — so it read as "the close
128
- * button is gone" rather than as a trap. Unreadable, not unusable.
129
- *
130
- * One transform, no new markup: the control stays where the thumb last touched
131
- * it and does not need NavRail to grow a close row of its own. Not moved to the
132
- * right permanently — a trigger that changes corner between states is worse than
133
- * one that travels. */
134
- [data-rail-drawer="open"] .kol-shell-drawer-trigger {
135
- transform: translateX(var(--kol-shell-drawer-width, 240px));
136
- }
137
-
138
- @media (prefers-reduced-motion: reduce) {
139
- .kol-shell-drawer-trigger { transition: none; }
140
126
  }
141
127
 
142
128
  .kol-shell-drawer-scrim {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-theme",
3
- "version": "0.118.0",
3
+ "version": "0.120.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",