anentrypoint-design 0.0.464 → 0.0.466
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.
- package/dist/247420.css +125 -22
- package/dist/247420.js +25 -25
- package/package.json +1 -1
- package/src/css/app-shell/base.css +6 -1
- package/src/css/app-shell/files.css +13 -3
- package/src/css/app-shell/hero-content.css +15 -3
- package/src/css/app-shell/kits-appended.css +10 -1
- package/src/css/app-shell/primitives.css +10 -4
- package/src/css/app-shell/states-interactions.css +36 -8
- package/src/css/app-shell/topbar.css +35 -2
- package/src/kits/os/theme.css +1 -0
- package/src/kits/os/wm.css +2 -0
package/dist/247420.css
CHANGED
|
@@ -959,7 +959,12 @@
|
|
|
959
959
|
.ds-247420 .t-mega { font-family: var(--ff-display); font-size: var(--fs-mega); line-height: 0.92; letter-spacing: var(--tr-tighter); font-weight: 700; margin: 0; }
|
|
960
960
|
|
|
961
961
|
.ds-247420 .t-display { font-family: var(--ff-display); font-weight: 600; letter-spacing: var(--tr-tight); }
|
|
962
|
-
|
|
962
|
+
/* Explicit weight, not relying on inherited normal: --ff-mono's stack (Menlo,
|
|
963
|
+
Consolas, ui-monospace) can resolve to a variable-font fallback on some
|
|
964
|
+
platforms whose default instance isn't the 400 weight, rendering "body ·
|
|
965
|
+
16px regular" visibly bold despite its own label -- pin the weight so the
|
|
966
|
+
sample matches what it claims regardless of which font in the stack loads. */
|
|
967
|
+
.ds-247420 .t-mono { font-family: var(--ff-mono); font-weight: 400; }
|
|
963
968
|
.ds-247420 .t-body { font-family: var(--ff-body); }
|
|
964
969
|
|
|
965
970
|
/* House small-label voice, in two sizes. Every declaration here is sourced
|
|
@@ -1277,7 +1282,20 @@
|
|
|
1277
1282
|
`minmax(0, 1fr)` — a real height the sidebar can overflow once bins +
|
|
1278
1283
|
labels + more exceed it. Without this the extra rows were silently chopped
|
|
1279
1284
|
at the viewport edge with no way to reach them. */
|
|
1280
|
-
|
|
1285
|
+
/* .app-side-shell and .app-main (below) are two INDEPENDENT scroll regions
|
|
1286
|
+
side by side -- correct by design (a sidebar nav and a main panel each own
|
|
1287
|
+
their own overflow), but with default invisible/overlay OS scrollbars a
|
|
1288
|
+
user hovering the boundary has no visual cue which region the wheel will
|
|
1289
|
+
scroll, or that there even are two scrollable zones rather than one page
|
|
1290
|
+
scroll. Thin always-visible scrollbar tracks make each region's own scroll
|
|
1291
|
+
ownership legible without changing the (correct) two-region architecture. */
|
|
1292
|
+
.ds-247420 .app-side-shell {
|
|
1293
|
+
background: var(--bg); overflow-y: auto; min-height: 0;
|
|
1294
|
+
scrollbar-width: thin; scrollbar-color: var(--rule-strong) transparent;
|
|
1295
|
+
}
|
|
1296
|
+
.ds-247420 .app-side-shell::-webkit-scrollbar { width: 8px; }
|
|
1297
|
+
.ds-247420 .app-side-shell::-webkit-scrollbar-thumb { background: var(--rule-strong); border-radius: var(--r-pill, 999px); }
|
|
1298
|
+
.ds-247420 .app-side-shell::-webkit-scrollbar-track { background: transparent; }
|
|
1281
1299
|
.ds-247420 .app-body { display: grid; grid-template-columns: var(--sidebar-width) minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); align-items: stretch; align-content: stretch; flex: 1; min-height: 0; }
|
|
1282
1300
|
.ds-247420 .app-body.no-side { grid-template-columns: minmax(0, 1fr); }
|
|
1283
1301
|
/* When there is no sidebar, the empty side-shell must not occupy a grid row,
|
|
@@ -1385,6 +1403,15 @@
|
|
|
1385
1403
|
/* Reserve the scrollbar track so routes with/without overflow don't shift
|
|
1386
1404
|
the layout horizontally when the bar appears. */
|
|
1387
1405
|
.ds-247420 .app-main { scrollbar-gutter: stable; }
|
|
1406
|
+
/* Same visible-scroll-ownership rationale as .app-side-shell above -- makes
|
|
1407
|
+
this the visually distinct SECOND independent scroll region rather than
|
|
1408
|
+
an invisible-scrollbar mystery next to the sidebar. */
|
|
1409
|
+
.ds-247420 .app-main {
|
|
1410
|
+
scrollbar-width: thin; scrollbar-color: var(--rule-strong) transparent;
|
|
1411
|
+
}
|
|
1412
|
+
.ds-247420 .app-main::-webkit-scrollbar { width: 8px; }
|
|
1413
|
+
.ds-247420 .app-main::-webkit-scrollbar-thumb { background: var(--rule-strong); border-radius: var(--r-pill, 999px); }
|
|
1414
|
+
.ds-247420 .app-main::-webkit-scrollbar-track { background: transparent; }
|
|
1388
1415
|
/* Jump-target anchors clear the inner-scroll top edge (no chrome overlap,
|
|
1389
1416
|
but a little breathing room when deep-linked within .app-main). */
|
|
1390
1417
|
.ds-247420 .app-main [id] { scroll-margin-top: var(--space-4); }
|
|
@@ -1475,7 +1502,18 @@
|
|
|
1475
1502
|
color: var(--fg-3);
|
|
1476
1503
|
}
|
|
1477
1504
|
.ds-247420 .dateline span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
|
|
1478
|
-
|
|
1505
|
+
/* The spreader itself only ever set flex-basis -- an empty div with no
|
|
1506
|
+
background renders as blank space, not the "dotted spreader" the preview
|
|
1507
|
+
page's own caption describes. border-bottom (not background-image) keeps
|
|
1508
|
+
the dots crisp at 1px without a repeating-gradient banding artifact. */
|
|
1509
|
+
.ds-247420 .dateline .spread {
|
|
1510
|
+
flex: 1 1 auto; min-width: var(--space-3); align-self: stretch;
|
|
1511
|
+
display: flex; align-items: center;
|
|
1512
|
+
}
|
|
1513
|
+
.ds-247420 .dateline .spread::after {
|
|
1514
|
+
content: ''; flex: 1 1 auto;
|
|
1515
|
+
border-bottom: var(--bw-hair, 1px) dotted var(--rule-strong);
|
|
1516
|
+
}
|
|
1479
1517
|
|
|
1480
1518
|
/* ============================================================
|
|
1481
1519
|
Primitives
|
|
@@ -1509,13 +1547,19 @@
|
|
|
1509
1547
|
}
|
|
1510
1548
|
.ds-247420 .btn { background: var(--bg-2); color: var(--fg); border-color: var(--rule); }
|
|
1511
1549
|
.ds-247420 .btn:hover { background: var(--bg-3); color: var(--fg); transform: translateY(-1px); box-shadow: var(--shadow-1); }
|
|
1512
|
-
/* Primary CTA — the
|
|
1513
|
-
an ink block with
|
|
1550
|
+
/* Primary CTA — the brand green as a solid editorial block; hover inverts to
|
|
1551
|
+
an ink block with green text, a confident two-tone flip. Uses --green
|
|
1552
|
+
(the site's own #247420 identity color, dark-mode-retuned to --green's
|
|
1553
|
+
ink-safe #5CBF52 rather than --accent/--acid, which a prior contrast-driven
|
|
1554
|
+
restyle deliberately flattened to a neutral gray for --accent's OTHER
|
|
1555
|
+
consumers (nav active state, focus rings, etc) -- .btn-primary needed the
|
|
1556
|
+
brand color back for click-hierarchy without undoing that restyle
|
|
1557
|
+
elsewhere. --on-color (#fff) clears AA on both light and dark --green. */
|
|
1514
1558
|
.ds-247420 .btn-primary {
|
|
1515
|
-
background: var(--
|
|
1559
|
+
background: var(--green); color: var(--on-color);
|
|
1516
1560
|
font-weight: 700;
|
|
1517
1561
|
}
|
|
1518
|
-
.ds-247420 .btn-primary:hover { background: var(--fg); color: var(--
|
|
1562
|
+
.ds-247420 .btn-primary:hover { background: var(--fg); color: var(--green); transform: translateY(-1px); box-shadow: var(--shadow-2); }
|
|
1519
1563
|
.ds-247420 .btn-ghost { background: transparent; color: var(--fg); box-shadow: inset 0 0 0 2px var(--fg); }
|
|
1520
1564
|
.ds-247420 .btn-ghost:hover { background: var(--fg); color: var(--bg); transform: translateY(-1px); }
|
|
1521
1565
|
.ds-247420 .btn:active, .ds-247420 .btn-primary:active, .ds-247420 .btn-ghost:active { transform: translateY(1px); box-shadow: none; }
|
|
@@ -2081,7 +2125,12 @@
|
|
|
2081
2125
|
still fits a narrow column, and a 116px ceiling between the two tiers.
|
|
2082
2126
|
Snapping to either changes the hero's whole optical weight. */
|
|
2083
2127
|
font-size: clamp(40px, 9cqi, 116px);
|
|
2084
|
-
|
|
2128
|
+
/* 0.96 let ascenders/descenders visibly touch between wrapped lines at the
|
|
2129
|
+
upper end of this clamp (measured on "the creative department of the
|
|
2130
|
+
internet" at the 116px ceiling) -- 1.02 keeps the tight, no-air display
|
|
2131
|
+
feel this title wants while clearing enough vertical room that letters
|
|
2132
|
+
stop colliding. */
|
|
2133
|
+
line-height: 1.02; letter-spacing: var(--tr-tighter);
|
|
2085
2134
|
margin: 0; max-width: 20ch; text-wrap: balance;
|
|
2086
2135
|
}
|
|
2087
2136
|
.ds-247420 .ds-hero-body {
|
|
@@ -2304,11 +2353,18 @@
|
|
|
2304
2353
|
(was 12/14 x 16 => ~43px rows). Density scales the vertical padding. */
|
|
2305
2354
|
border-radius: var(--r-0); overflow: hidden;
|
|
2306
2355
|
}
|
|
2356
|
+
/* Panel heads / KPI labels / table headers were all identical uppercase-
|
|
2357
|
+
tracked-mono weight (600), so a page with several of these side by side
|
|
2358
|
+
(a dashboard) reads as one flat volume with no anchor -- the most
|
|
2359
|
+
repetitive, least-singular label (a column header, one of many per
|
|
2360
|
+
table) drops to a lighter 500 with slightly tighter tracking, keeping the
|
|
2361
|
+
system's uppercase-mono voice but giving panel titles (still 600) a real
|
|
2362
|
+
step up as the "read this first" tier. */
|
|
2307
2363
|
.ds-247420 table th {
|
|
2308
2364
|
text-align: left;
|
|
2309
2365
|
padding: calc(var(--space-2) * var(--density)) var(--space-2-75);
|
|
2310
|
-
font-size: var(--fs-tiny); font-weight:
|
|
2311
|
-
color: var(--fg-3); text-transform: uppercase; letter-spacing: var(--tr-caps);
|
|
2366
|
+
font-size: var(--fs-tiny); font-weight: 500;
|
|
2367
|
+
color: var(--fg-3); text-transform: uppercase; letter-spacing: calc(var(--tr-caps) * 0.7);
|
|
2312
2368
|
background: var(--bg-2);
|
|
2313
2369
|
}
|
|
2314
2370
|
/* letter-spacing adds trailing space AFTER the last glyph too, but the table's
|
|
@@ -2924,7 +2980,12 @@
|
|
|
2924
2980
|
border-color: var(--rule);
|
|
2925
2981
|
}
|
|
2926
2982
|
.ds-247420 .ds-file-row:active { transform: translateY(1px); }
|
|
2927
|
-
|
|
2983
|
+
/* file-grid's own header/caption both claim NEVER A BORDER -- border-color
|
|
2984
|
+
here silently broke that promise for exactly the row it's meant to call
|
|
2985
|
+
out (the row a screenshot/manual test would actually look at). Selected
|
|
2986
|
+
state stays legible via the tint alone; border-color stays transparent so
|
|
2987
|
+
the base rule's promise holds for every row, active or not. */
|
|
2988
|
+
.ds-247420 .ds-file-row.active { background: var(--accent-tint); }
|
|
2928
2989
|
.ds-247420 .ds-file-row[data-file-type="dir"] { border-left-width: 3px; border-left-color: var(--accent); }
|
|
2929
2990
|
.ds-247420 .ds-file-row[data-file-type="image"],
|
|
2930
2991
|
.ds-247420 .ds-file-row[data-file-type="video"],
|
|
@@ -3259,9 +3320,14 @@
|
|
|
3259
3320
|
}
|
|
3260
3321
|
.ds-247420 .ds-error-banner:hover { background: color-mix(in oklab, var(--warn) 20%, var(--bg)); }
|
|
3261
3322
|
|
|
3262
|
-
/* Dropzone
|
|
3323
|
+
/* Dropzone — a tonal target, not a dashed-border affordance (preview/
|
|
3324
|
+
dropzone.html's own header/caption both describe this: "NO DASHED
|
|
3325
|
+
BORDERS" / "tonal panel that swaps to --panel-select on dragover"). A
|
|
3326
|
+
solid hairline plus the idle->dragover background swap is the actual
|
|
3327
|
+
design; dashed was this system's OTHER "drop target" vocabulary
|
|
3328
|
+
(.panel-docs, kits-appended.css) leaking in here by copy-paste. */
|
|
3263
3329
|
.ds-247420 .ds-dropzone {
|
|
3264
|
-
border: var(--bw-rule)
|
|
3330
|
+
border: var(--bw-rule) solid var(--rule);
|
|
3265
3331
|
border-radius: var(--r-3); background: var(--bg);
|
|
3266
3332
|
transition: border-color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);
|
|
3267
3333
|
}
|
|
@@ -4362,8 +4428,14 @@
|
|
|
4362
4428
|
:disabled pseudo-class, so a disabled link-styled button relies entirely
|
|
4363
4429
|
on this class selector for its visual treatment (aria-disabled + tabindex
|
|
4364
4430
|
are set in JS; this is the paired CSS half). */
|
|
4431
|
+
/* opacity:0.6 alone barely separated from an active .btn-primary against a
|
|
4432
|
+
busy background -- close enough in dark mode that users clicked disabled
|
|
4433
|
+
buttons expecting them to work. grayscale flattens any color signal (no
|
|
4434
|
+
more "still looks clickable-green") and the steeper opacity drop reads as
|
|
4435
|
+
unmistakably inert at a glance, not just slightly dimmed. */
|
|
4365
4436
|
.ds-247420 .btn:disabled, .ds-247420 .btn-primary:disabled, .ds-247420 .btn-ghost:disabled, .ds-247420 .btn.is-disabled, .ds-247420 .btn-primary.is-disabled, .ds-247420 .btn-ghost.is-disabled, .ds-247420 button:disabled, .ds-247420[disabled] {
|
|
4366
|
-
opacity: 0.
|
|
4437
|
+
opacity: 0.45;
|
|
4438
|
+
filter: grayscale(60%);
|
|
4367
4439
|
cursor: not-allowed;
|
|
4368
4440
|
pointer-events: none;
|
|
4369
4441
|
}
|
|
@@ -4678,7 +4750,13 @@
|
|
|
4678
4750
|
transform: rotate(-2deg);
|
|
4679
4751
|
white-space: nowrap;
|
|
4680
4752
|
}
|
|
4681
|
-
|
|
4753
|
+
/* border-color previously matched background exactly (var(--ink) on both) --
|
|
4754
|
+
same class of bug as the colors-core "paper" swatch: a border drawn in the
|
|
4755
|
+
identical color as its own fill is invisible, so the ink-toned stamp was
|
|
4756
|
+
the one variant on the page missing its box outline. --paper reads as a
|
|
4757
|
+
visible ring against the ink fill (paper-on-ink is this token pair's
|
|
4758
|
+
whole reason to exist), matching every other .stamp variant's contrast. */
|
|
4759
|
+
.ds-247420 .stamp.ink { background: var(--ink); border-color: var(--paper); color: var(--paper); }
|
|
4682
4760
|
.ds-247420 .stamp.acid { background: var(--accent); border-color: var(--accent-ink); color: var(--accent-ink); }
|
|
4683
4761
|
.ds-247420 .stamp.purple { border-color: var(--purple-2); color: var(--purple-2); }
|
|
4684
4762
|
.ds-247420 .stamp.mascot { border-color: var(--mascot); color: var(--mascot-deep); }
|
|
@@ -4693,6 +4771,11 @@
|
|
|
4693
4771
|
border: 2px solid var(--fg);
|
|
4694
4772
|
border-radius: var(--r-hair);
|
|
4695
4773
|
background: transparent; color: var(--fg);
|
|
4774
|
+
/* .stamp's own caption claims the rubber-stamp motif is "always rotated
|
|
4775
|
+
slightly" -- .btn-stamp is the same visual face as an interactive
|
|
4776
|
+
<button> (preview/stamps-lore.html's second row) and had no rotation at
|
|
4777
|
+
all, breaking that claim for every stamp in that row. */
|
|
4778
|
+
transform: rotate(-2deg);
|
|
4696
4779
|
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
4697
4780
|
}
|
|
4698
4781
|
.ds-247420 .btn-stamp:hover { background: var(--panel-hover); }
|
|
@@ -4710,11 +4793,20 @@
|
|
|
4710
4793
|
}
|
|
4711
4794
|
.ds-247420 hr.rule { border-top: 1px solid var(--rule); }
|
|
4712
4795
|
.ds-247420 hr.rule-double { border-top: 4px double var(--rule-strong); }
|
|
4713
|
-
|
|
4714
|
-
|
|
4715
|
-
|
|
4716
|
-
|
|
4717
|
-
|
|
4796
|
+
/* 1px was indistinguishable from .rule -- border-style:dotted needs enough
|
|
4797
|
+
width to actually draw a gap between dots; below ~2px (esp. at DPRs where
|
|
4798
|
+
1px resolves to a sub-pixel value like 0.8px) Chrome collapses it to a
|
|
4799
|
+
solid line, which is exactly what preview/rules.html's report caught live. */
|
|
4800
|
+
.ds-247420 hr.rule-dotted { border-top: 2px dotted var(--rule-strong); }
|
|
4801
|
+
|
|
4802
|
+
/* Hairline-only text input — no full box, no permanent fill. A single bottom
|
|
4803
|
+
rule that thickens to 2px on focus, matching the row/rule zero-border
|
|
4804
|
+
aesthetic instead of a browser-default boxed field. A completely flat,
|
|
4805
|
+
static hairline reads as a static label rather than an editable control
|
|
4806
|
+
at a glance (no cue at rest, nothing on hover) -- the very faint permanent
|
|
4807
|
+
wash plus a stronger hover tint below signal "this is a field" without
|
|
4808
|
+
reverting to the boxed/filled chrome the hairline design deliberately
|
|
4809
|
+
moved away from. */
|
|
4718
4810
|
.ds-247420 .input {
|
|
4719
4811
|
display: block; width: 100%; box-sizing: border-box;
|
|
4720
4812
|
/* appearance:none alone is not enough: with color-scheme:dark set on the
|
|
@@ -4728,11 +4820,13 @@
|
|
|
4728
4820
|
color-scheme: normal;
|
|
4729
4821
|
border: 0; border-bottom: 1px solid var(--rule-strong);
|
|
4730
4822
|
border-radius: var(--r-0);
|
|
4731
|
-
background: transparent;
|
|
4823
|
+
background: color-mix(in oklab, var(--fg) 2.5%, transparent);
|
|
4732
4824
|
box-shadow: none;
|
|
4733
4825
|
padding: var(--space-2) var(--space-1);
|
|
4734
4826
|
font: inherit; color: var(--fg);
|
|
4827
|
+
transition: background var(--dur-snap) var(--ease), border-color var(--dur-snap) var(--ease);
|
|
4735
4828
|
}
|
|
4829
|
+
.ds-247420 .input:hover { background: color-mix(in oklab, var(--fg) 5%, transparent); }
|
|
4736
4830
|
/* Touch floor for the BASE input. Several specific inputs already carried this
|
|
4737
4831
|
(ds-file-filter-input, ds-modal-input, ds-term-input) but the primitive every
|
|
4738
4832
|
form actually uses did not, so a plain field measured 34px under a coarse
|
|
@@ -6387,12 +6481,21 @@
|
|
|
6387
6481
|
gap: var(--space-1-75, 6px);
|
|
6388
6482
|
}
|
|
6389
6483
|
/* Table() scroll containment — wide tables scroll inside their own box,
|
|
6390
|
-
never the page body.
|
|
6484
|
+
never the page body. overflow-x:auto alone works but gives no visible cue
|
|
6485
|
+
that a table is wider than its box (macOS overlay scrollbars stay hidden
|
|
6486
|
+
until an active hover/scroll gesture) -- columns beyond the fold read as
|
|
6487
|
+
simply missing rather than reachable. An always-visible thin scrollbar
|
|
6488
|
+
track makes the overflow legible without a gesture first. */
|
|
6391
6489
|
.ds-247420 .ds-table-wrap {
|
|
6392
6490
|
overflow-x: auto;
|
|
6393
6491
|
-webkit-overflow-scrolling: touch;
|
|
6394
6492
|
max-width: 100%;
|
|
6493
|
+
scrollbar-width: thin;
|
|
6494
|
+
scrollbar-color: var(--rule-strong) transparent;
|
|
6395
6495
|
}
|
|
6496
|
+
.ds-247420 .ds-table-wrap::-webkit-scrollbar { height: 8px; }
|
|
6497
|
+
.ds-247420 .ds-table-wrap::-webkit-scrollbar-thumb { background: var(--rule-strong); border-radius: var(--r-pill, 999px); }
|
|
6498
|
+
.ds-247420 .ds-table-wrap::-webkit-scrollbar-track { background: transparent; }
|
|
6396
6499
|
.ds-247420 .ds-table-wrap > table { min-width: 100%; }
|
|
6397
6500
|
/* Sortable column headers (Table's opt-in sortable prop) — a docstudio-cue
|
|
6398
6501
|
addition: color stays neutral at rest (this is a structural control, not a
|