@kolkrabbi/kol-theme 0.183.0 → 0.184.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.
@@ -1024,6 +1024,15 @@ a:hover .icon-hover,
1024
1024
  * is the accent's alone, on hover and on its on-state; spending it on every
1025
1025
  * hover left the on-state with nothing of its own to say. */
1026
1026
  .kol-inline-control:hover { color: var(--kol-oq-96); }
1027
+ /* THE TAP TARGET ON TOUCH (HubHomeContract's mobile pass, apps/hub at 390 — 2026-10-23): the `app` card's
1028
+ * cog and trash measured 16 × 16 on a coarse pointer, under the ladder's touch rung (32, kol-base-tokens).
1029
+ * The glyph stays 16 — the card reserves the actions column from the control's box, so growing the box
1030
+ * narrows every plate — and the finger gets 32: a pseudo-element 8px past each edge, drawn by nothing,
1031
+ * hit by the browser. A pinned control grows its box on touch; a bare glyph grows its reach. */
1032
+ @media (pointer: coarse) {
1033
+ .kol-inline-control { position: relative; }
1034
+ .kol-inline-control::after { content: ''; position: absolute; inset: -8px; }
1035
+ }
1027
1036
 
1028
1037
  .kol-inline-control--accent:hover,
1029
1038
  .kol-inline-control--on,
@@ -1283,6 +1292,20 @@ a.kol-icon-frame {
1283
1292
  * Same cure as IconFrame above: own your classes, inherit no states.
1284
1293
  * ═══════════════════════════════════════════════════════════════ */
1285
1294
 
1295
+ /* THE INK STEP (user 2026-10-23, on the settings rail's footer and close: *"give them both oq-80, then full on
1296
+ * hover, just to give it slight elevated state"*). A bare control with no wash steps its INK instead: oq-80 at rest,
1297
+ * oq-96 on hover. `.kol-ink-step` on the control itself (CloseButton `hover={false}`), or on a row of them
1298
+ * (SettingsFooter) — it reaches the frame, the theme toggle and an icon-only button inside. */
1299
+ :is(.kol-ink-step, .kol-ink-step > *) :is(.kol-icon-frame, .kol-theme-toggle, .kol-btn:not(.kol-dd-trigger)),
1300
+ :is(.kol-icon-frame, .kol-theme-toggle, .kol-btn:not(.kol-dd-trigger)).kol-ink-step {
1301
+ --kol-tone-fg: var(--kol-oq-80);
1302
+ transition: color var(--kol-transition-fast, 150ms) ease;
1303
+ }
1304
+ :is(.kol-ink-step, .kol-ink-step > *) :is(.kol-icon-frame, .kol-theme-toggle, .kol-btn:not(.kol-dd-trigger)):hover,
1305
+ :is(.kol-icon-frame, .kol-theme-toggle, .kol-btn:not(.kol-dd-trigger)).kol-ink-step:hover {
1306
+ --kol-tone-fg: var(--kol-oq-96);
1307
+ }
1308
+
1286
1309
  .kol-theme-toggle {
1287
1310
  display: inline-flex;
1288
1311
  align-items: center;
@@ -554,7 +554,8 @@
554
554
  width: 100%;
555
555
  border: 0;
556
556
  border-radius: 0;
557
- padding: var(--kol-spacing-12) var(--kol-spacing-4) var(--kol-spacing-4);
557
+ /* no bottom pad on the phone (user 2026-10-23): the body scrolls to the edge, a pad read as a clipped last row */
558
+ padding: var(--kol-spacing-12) var(--kol-spacing-4) 0;
558
559
  }
559
560
  }
560
561
 
@@ -50,6 +50,9 @@
50
50
  /* less the phone bar (`--kol-shell-bar-h`, set by AppShell `touch="bar"`): the content column
51
51
  * already pads for it, so a full-height page ends above the bar, not under it (2026-09-29) */
52
52
  min-height: calc(100vh - var(--kol-shell-bar-h, 0px));
53
+ /* the VISIBLE viewport (studio-hub review 2, § 7.4): on iOS Safari 100vh is taller than what shows under the
54
+ * browser chrome, so a fixed page's foot sat under it and the page scrolled. dvh where supported, vh above it */
55
+ min-height: calc(100dvh - var(--kol-shell-bar-h, 0px));
53
56
  padding: var(--kol-shell-page-pad);
54
57
  /* PageShellScrollbarGutter (kol-monitor 2026-08-28): in `fixed` mode this
55
58
  * element IS the scroll container and reserves the gutter; in `scroll` mode
@@ -66,7 +69,7 @@
66
69
  }
67
70
  /* `mode="fixed"` — the element is the scroll container; pair with a
68
71
  * `flex:1 overflow:auto` body (the settings idiom) */
69
- .kol-shell-page--fixed { min-height: 0; height: calc(100vh - var(--kol-shell-bar-h, 0px)); overflow: hidden; }
72
+ .kol-shell-page--fixed { min-height: 0; height: calc(100vh - var(--kol-shell-bar-h, 0px)); height: calc(100dvh - var(--kol-shell-bar-h, 0px)); overflow: hidden; }
70
73
  /* `width="capped"` — the SITE tier: the framework container ladder, centred.
71
74
  * `bleed` (the default, unclassed) fills the window — the app tier. The one
72
75
  * real difference between a shell page and a `.kol-page`, and it is a prop
@@ -238,21 +241,25 @@
238
241
  padding: 0;
239
242
  cursor: default;
240
243
  }
244
+ /* THE SHEET'S CHROME (user 2026-10-23: "match rounding better"): the pill's ground and hairline, a rounding near the
245
+ * folded circle's. One class on whatever holds `MoreRows` — the phone bar's sheet, Home's masthead popover. */
246
+ .kol-more-sheet {
247
+ display: flex;
248
+ flex-direction: column;
249
+ gap: 2px;
250
+ padding: 8px;
251
+ border-radius: 24px;
252
+ background: var(--kol-surface-secondary);
253
+ border: 1px solid var(--kol-oq-08);
254
+ }
241
255
  .kol-phone-nav-more {
242
256
  position: fixed;
243
257
  left: 12px;
244
258
  right: 12px;
245
259
  bottom: calc(56px + env(safe-area-inset-bottom, 0px) + 8px);
246
260
  z-index: var(--kol-z-sticky);
247
- display: flex;
248
- flex-direction: column;
249
- gap: 2px;
250
261
  max-height: 60dvh;
251
262
  overflow-y: auto;
252
- padding: 8px;
253
- border-radius: var(--kol-radius-sm);
254
- background: var(--kol-surface-primary);
255
- border: 1px solid var(--kol-oq-08);
256
263
  }
257
264
 
258
265
  /* ── THE TAP OPENER IS THE LINE (ShellRailCollapsedWithTapOpen, kol-mirror
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolkrabbi/kol-theme",
3
- "version": "0.183.0",
3
+ "version": "0.184.0",
4
4
  "description": "Tokens and base CSS",
5
5
  "license": "MIT",
6
6
  "type": "module",