anentrypoint-design 0.0.382 → 0.0.383

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 CHANGED
@@ -681,7 +681,7 @@
681
681
  left: 0;
682
682
  background: var(--accent);
683
683
  color: var(--accent-fg);
684
- padding: 8px 16px;
684
+ padding: var(--space-2) var(--space-3);
685
685
  text-decoration: none;
686
686
  /* Must outrank every layer of chrome once focused, or the first Tab press
687
687
  lands on a control hidden behind the sticky header (was z-index:100,
@@ -696,6 +696,35 @@
696
696
  outline: var(--focus-w) solid var(--focus-color);
697
697
  outline-offset: var(--focus-offset);
698
698
  }
699
+ /* Visually-hidden but still in the accessibility tree. Emitted by Row() (the
700
+ rail status word), FilterBar()/FileGrid() (aria-live result counts) and
701
+ form-primitives' required marker — all of which shipped BEFORE this rule
702
+ existed anywhere the app shell loads. The only other definitions live in
703
+ app-surfaces.css (pre-scoped to `.ds-247420`, so it never reaches a kit that
704
+ does not mount that root) and editor-primitives.css (a separate opt-in
705
+ <link>), which left every app-shell consumer rendering screen-reader-only
706
+ text VISIBLY the moment it passed `rail`/`resultCount`.
707
+ Deliberately NOT `display:none` / `visibility:hidden` / `width:0`: those
708
+ remove the node from the accessibility tree too, which defeats the entire
709
+ purpose — the text exists only for AT. The clip + 1px box is what keeps it
710
+ announced while occupying no visible area.
711
+ `margin: -1px` is OFF-SCALE ON PURPOSE — it is not rhythm, it is one half of
712
+ the canonical visually-hidden idiom: the negative margin cancels the 1px box
713
+ so the clipped element contributes zero layout. Snapping it to a --space-*
714
+ rung would reintroduce a measurable gap. `clip` is deprecated but retained
715
+ alongside `clip-path` for older AT/browser pairs that ignore the latter. */
716
+ .ds-247420 .sr-only {
717
+ position: absolute;
718
+ width: 1px;
719
+ height: 1px;
720
+ padding: 0;
721
+ margin: -1px;
722
+ overflow: hidden;
723
+ clip: rect(0, 0, 0, 0);
724
+ clip-path: inset(50%);
725
+ white-space: nowrap;
726
+ border: 0;
727
+ }
699
728
  .ds-247420 body {
700
729
  background: var(--bg);
701
730
  color: var(--fg);
@@ -784,6 +813,30 @@
784
813
  .ds-247420 .ds-prose h1 { font-size: clamp(34px, 5.4cqi, 64px); margin-bottom: var(--space-3); }
785
814
  .ds-247420 .ds-prose h2 { margin: var(--space-6) 0 var(--space-3); }
786
815
  .ds-247420 .ds-prose h3 { margin: var(--space-5) 0 var(--space-2); font-size: var(--fs-lg); font-weight: 600; }
816
+ /* Closing line of an article ("end. reply by opening a pr."), set off from the
817
+ body it terminates. Quieter and smaller than the prose around it: it takes
818
+ the mono face and the --fg-3 tone the house uses for ancillary voices
819
+ (.t-micro, .dim), so the endnote reads as chrome around the article rather
820
+ than a final paragraph of it. The --space-5 lead does the "set off" — it
821
+ breaks the paragraph rhythm so the eye registers the piece has ended before
822
+ reading the words; margin-bottom:0 overrides .ds-prose p's --space-4 so the
823
+ article does not end on dead space.
824
+ Lives here, beside the rest of the .ds-prose family, NOT in gm-prose.css:
825
+ the blog kit that uses this class links only colors_and_type.css +
826
+ app-shell.css, so a rule in that separately-<link>-ed export would be exactly
827
+ as undefined as the class was before. Sized at --fs-xs, not the --fs-micro
828
+ label rung: this is a readable sentence with a link in it, not a micro-label.
829
+ The link inherits .ds-prose a's --accent-ink treatment (a readable TEXT tone;
830
+ the bare --accent fill is ~1.07:1 on paper) — deliberately not re-stated. */
831
+ .ds-247420 .ds-prose .ds-prose-endnote,
832
+ .ds-247420 .ds-prose-endnote {
833
+ margin-top: var(--space-5);
834
+ margin-bottom: 0;
835
+ font-family: var(--ff-mono);
836
+ font-size: var(--fs-xs);
837
+ line-height: var(--lh-base);
838
+ color: var(--fg-3);
839
+ }
787
840
 
788
841
  .ds-247420 .dim { color: var(--fg-3); }
789
842
 
@@ -1028,7 +1081,11 @@
1028
1081
  border-radius: var(--r-pill);
1029
1082
  }
1030
1083
  /* The lime active pill is the sidebar's one accent moment; its own count
1031
- chip rides the ink-on-accent pair instead of a second competing hue. */
1084
+ chip rides the ink-on-accent pair instead of a second competing hue.
1085
+ The bare --accent here is deliberate and is NOT the usual accent-as-text
1086
+ defect: the chip's own background is --accent-fg (ink), so this is the
1087
+ INVERTED pair -- lime on ink, which is the high-contrast direction. Only
1088
+ accent-coloured text on a normal background needs --accent-ink. */
1032
1089
  .ds-247420 .app-side a.active .count {
1033
1090
  background: color-mix(in oklab, var(--accent-fg) 82%, transparent);
1034
1091
  color: var(--accent);
@@ -2002,16 +2059,28 @@
2002
2059
  .ds-247420 .panel-body { padding: var(--space-2); overflow-x: auto; -webkit-overflow-scrolling: touch; }
2003
2060
  .ds-247420 .panel-body > table { min-width: 100%; }
2004
2061
 
2005
- .ds-247420 .row {
2006
- grid-template-columns: minmax(0, 1fr) auto !important;
2062
+ /* Scoped to the `.app` shell so this wins on SPECIFICITY (0,2,0) rather than
2063
+ on an !important flag. Three rules would otherwise beat a bare `.row`
2064
+ (0,1,0) here: `.row.row-nocode` (0,2,0, panel-row.css) out-specifies it,
2065
+ and the `@media(481-1024)` + `@media(max-width:768px)` `.row` rules later
2066
+ in THIS file win on source order (a media query adds no specificity).
2067
+ `.app` is safe to require: `.app-body`/`.row` only ever render inside it
2068
+ (single call site, shell.js AppShell). */
2069
+ .ds-247420 .app .row {
2070
+ grid-template-columns: minmax(0, 1fr) auto;
2007
2071
  gap: var(--space-2); padding: var(--space-2-75) var(--space-3);
2008
- row-gap: var(--space-1) !important;
2072
+ row-gap: var(--space-1);
2009
2073
  }
2010
2074
  .ds-247420 .row .sub { grid-column: 1 / -1; order: 3; }
2011
2075
  .ds-247420 .row .title { font-size: var(--fs-sm); }
2012
2076
  /* Changelog carries 3 children: give date+ver line one, message wraps below
2013
- (the generic 2-col .row override staggers it into an implicit row). */
2014
- .ds-247420 .ds-changelog-row { grid-template-columns: minmax(70px, 10ch) minmax(0, 1fr) !important; }
2077
+ (the generic 2-col .row override staggers it into an implicit row).
2078
+ Needs (0,3,0) to clear BOTH the `.app .row` rule directly above and
2079
+ `.ds-changelog-row`'s own !important base in hero-content.css — an
2080
+ !important base can only be beaten by another !important, so this one
2081
+ stays until that upstream flag is removed (hero-content.css is outside
2082
+ this change's scope). */
2083
+ .ds-247420 .app .row.ds-changelog-row { grid-template-columns: minmax(70px, 10ch) minmax(0, 1fr) !important; }
2015
2084
  .ds-247420 .ds-changelog-row .title { grid-column: 1 / -1; }
2016
2085
 
2017
2086
  /* Buttons */
@@ -2098,12 +2167,20 @@
2098
2167
  Container Query Responsive (720px and below)
2099
2168
  ---------------------------------------------------------------------- */
2100
2169
  @container (max-width: 760px) {
2101
- .ds-247420 .app-body { grid-template-columns: 1fr !important; }
2170
+ /* `.app`-scoped for specificity, not an !important flag: the bare `.app-body`
2171
+ (0,1,0) was out-specified by `.app-body.no-side` (0,2,0) in topbar.css, so
2172
+ a sidebar-less shell kept its base template. `.app .app-body` is (0,2,0)
2173
+ and lands later in source, beating both topbar.css rules on merit. */
2174
+ .ds-247420 .app .app-body { grid-template-columns: 1fr; }
2102
2175
  .ds-247420 .app-side-shell { border-right: 0; border-bottom: 1px solid var(--rule); }
2103
2176
  .ds-247420 .app-topbar nav { font-size: var(--fs-xs); gap: var(--space-2-75); }
2104
- .ds-247420 .row { grid-template-columns: minmax(0, 1fr) auto !important; row-gap: var(--space-1) !important; }
2177
+ /* Same (0,2,0) lift as the 480px block above — clears `.row.row-nocode` and
2178
+ the later `@media` `.row` rules in this file without a flag. */
2179
+ .ds-247420 .app .row { grid-template-columns: minmax(0, 1fr) auto; row-gap: var(--space-1); }
2105
2180
  .ds-247420 .row .sub { grid-column: 1 / -1; order: 3; }
2106
- .ds-247420 .ds-changelog-row { grid-template-columns: minmax(70px, 10ch) minmax(0, 1fr) !important; }
2181
+ /* (0,3,0) + !important: still required to beat `.ds-changelog-row`'s
2182
+ !important base in hero-content.css (see the 480px block). */
2183
+ .ds-247420 .app .row.ds-changelog-row { grid-template-columns: minmax(70px, 10ch) minmax(0, 1fr) !important; }
2107
2184
  .ds-247420 .ds-changelog-row .title { grid-column: 1 / -1; }
2108
2185
  }
2109
2186
 
@@ -3754,9 +3831,14 @@
3754
3831
  animation: spinner-rotate 0.8s linear infinite;
3755
3832
  }
3756
3833
 
3757
- /* Error state */
3834
+ /* Error state.
3835
+ No !important: the only rule in the kit that also resets a matching element's
3836
+ border-color is the bare-control base below (`textarea:where(:not(.input))`
3837
+ et al, which use the `border: 0` shorthand). Those selectors are (0,0,1) —
3838
+ the :where() guard adds nothing — so every selector in this list out-specifies
3839
+ them on merit, and specificity beats the later source position. */
3758
3840
  .ds-247420 .error, .ds-247420[data-state="error"], .ds-247420 .row.error, .ds-247420 input.error, .ds-247420 textarea.error {
3759
- border-color: var(--warn) !important;
3841
+ border-color: var(--warn);
3760
3842
  background-color: color-mix(in oklab, var(--warn) 6%, var(--bg));
3761
3843
  }
3762
3844
  .ds-247420 .error::placeholder { color: color-mix(in oklab, var(--warn) 60%, var(--fg-3)); }
@@ -4268,7 +4350,17 @@
4268
4350
  .ds-247420 .skip-to-main:focus { top: 10px; }
4269
4351
 
4270
4352
  /* Reduced motion preferences — scoped to the DS surface so it doesn't reach
4271
- into and neutralize the host document's own motion. */
4353
+ into and neutralize the host document's own motion.
4354
+ The !important flags here are LOAD-BEARING and must not be "cleaned up":
4355
+ `.ds-247420 *` / `.app *` is only (0,1,0) — the universal selector adds
4356
+ nothing — yet it has to defeat every animation/transition declaration in the
4357
+ kit, many of which are strictly more specific. Concrete rules it would
4358
+ otherwise lose to: `.ds-dropzone.dragover` (0,2,0, files.css),
4359
+ `.ds-upload-bar.indeterminate .ds-upload-fill` (0,3,0, files.css),
4360
+ `.list-item.drag-after::after` (0,2,1, this file). Raising this selector to
4361
+ out-specify an open-ended set of future component rules is not possible, so
4362
+ the flag is the only correct mechanism — this is a WCAG 2.3.3 guarantee,
4363
+ not a stylistic preference. */
4272
4364
  @media (prefers-reduced-motion: reduce) {
4273
4365
  .ds-247420 *, .ds-247420 .app * {
4274
4366
  animation-duration: 0.01ms !important;
@@ -4276,7 +4368,9 @@
4276
4368
  transition-duration: 0.01ms !important;
4277
4369
  }
4278
4370
  /* Kill the residual paint frame of looping skeleton/shimmer placeholders and
4279
- give reduced-motion users a steady placeholder fill instead. */
4371
+ give reduced-motion users a steady placeholder fill instead.
4372
+ Also load-bearing: `.skeleton` is (0,1,0) and must override
4373
+ `.ds-session-row-skeleton .ds-skel` (0,2,0), which sets its own shimmer. */
4280
4374
  .ds-247420 .skeleton, .ds-247420 .ds-skeleton, .ds-247420 .ds-session-row-skeleton .ds-skel {
4281
4375
  animation: none !important;
4282
4376
  background: var(--bg-2) !important;
@@ -4545,8 +4639,16 @@
4545
4639
  even on a wide desktop. Drawer/scrim/toggle are absolute (anchored to .app), so
4546
4640
  they overlay the window, not the page. */
4547
4641
  @container (max-width: 900px) {
4548
- .ds-247420 .app-body,
4549
- .ds-247420 .app-body.no-side { grid-template-columns: 1fr !important; }
4642
+ /* `.app`-scoped for specificity instead of an !important flag. The bare
4643
+ `.app-body` half of this list is (0,1,0) and was out-specified by
4644
+ `.app-body.no-side` (0,2,0) in topbar.css; scoping lifts both halves to
4645
+ (0,2,0)/(0,3,0), which also lands later in source than topbar.css, so the
4646
+ drawer collapse wins on merit. `.app` is guaranteed: `.app-body` is
4647
+ emitted only as a direct child of `.app` (single call site, shell.js
4648
+ AppShell), and this @container query already requires `.app` as its
4649
+ container ancestor. */
4650
+ .ds-247420 .app .app-body,
4651
+ .ds-247420 .app .app-body.no-side { grid-template-columns: 1fr; }
4550
4652
  .ds-247420 .app-side-shell {
4551
4653
  position: absolute;
4552
4654
  /* Full-height overlay drawer: the merged .app-chrome wraps and its real
@@ -4571,9 +4673,13 @@
4571
4673
  .ds-247420 .app-side-shell.open,
4572
4674
  .ds-247420 .app-side.open,
4573
4675
  .ds-247420 .app-body.side-open .app-side-shell { transform: translateX(0); }
4676
+ /* No flags needed: the ONLY other rule that touches these properties is the
4677
+ `.app-side` base in topbar.css, which already sets `flex-direction: column`
4678
+ and never sets `flex-wrap` (nowrap is the initial value anyway). This rule
4679
+ is equal-specificity and later in source, so it wins unaided. */
4574
4680
  .ds-247420 .app-side {
4575
- flex-direction: column !important;
4576
- flex-wrap: nowrap !important;
4681
+ flex-direction: column;
4682
+ flex-wrap: nowrap;
4577
4683
  gap: var(--space-2);
4578
4684
  padding: var(--space-3);
4579
4685
  font-size: var(--fs-sm);
@@ -6064,6 +6170,25 @@
6064
6170
  .ds-247420 .cursor-blink { animation: ds-cursor-blink 1s step-end infinite; }
6065
6171
  @keyframes ds-cursor-blink { 50% { opacity: 0; } }
6066
6172
  }
6173
+
6174
+ /* == appended: panel width modifier == */
6175
+ /* .panel.panel-inline-wide — a width-capped inline note panel. Companion to
6176
+ the .panel-inline / .panel-wide modifiers in panel-row.css: those two change
6177
+ the panel's SURFACE (tonal fill / chrome-stripped), this one changes only
6178
+ its MEASURE, so it composes with either. Introduced when ui_kits/docs's
6179
+ `[!] note` panel traded `style="max-width:640px"` for a class (the inline-
6180
+ style sweep) but never got a rule written, leaving that panel to run the
6181
+ full column width. 640px is the note measure, deliberately narrower than
6182
+ --measure-narrow (760px): the aside is meant to read as a set-aside block
6183
+ against the surrounding prose, not to match its column. It is a literal
6184
+ rather than a new token because it has exactly one consumer — promote it to
6185
+ --measure-note the moment a second surface wants the same cap.
6186
+ `margin-right: auto` (not `margin: 0 auto`) keeps the panel left-aligned to
6187
+ the prose it interrupts and preserves .panel's own --space-4 stack margin. */
6188
+ .ds-247420 .panel.panel-inline-wide {
6189
+ max-width: 640px;
6190
+ margin-right: auto;
6191
+ }
6067
6192
  /* ============================================================
6068
6193
  Git status panel + diff view — changed-file list, unified diff.
6069
6194
  ============================================================ */
@@ -9688,7 +9813,12 @@
9688
9813
  .ds-247420 .ds-ep-tab-close:hover { background: var(--panel-2); color: var(--panel-text-1); }
9689
9814
  .ds-247420 .ds-ep-tab-close:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; opacity: 1; }
9690
9815
  .ds-247420 .ds-ep-tab.active {
9691
- color: var(--accent);
9816
+ /* --accent-ink for the TEXT, bare --accent for the RULE. The lime fill
9817
+ measures 1.07:1 against paper, so as a text colour it is invisible in
9818
+ light theme; --accent-ink is 8.85:1. Both resolve to the same value in
9819
+ dark, which is exactly why this class of bug hides until someone opens
9820
+ the light theme. Borders are fills and keep the lead accent. */
9821
+ color: var(--accent-ink);
9692
9822
  border-bottom-color: var(--accent);
9693
9823
  }
9694
9824
  /* When the JS slider is active, the active tab's own static border is
@@ -9735,8 +9865,12 @@
9735
9865
  color: var(--panel-text);
9736
9866
  }
9737
9867
  .ds-247420 .ds-ep-tree-item.selected > .ds-ep-tree-row {
9868
+ /* The 22% accent wash is a FILL and stays on the lead accent; the label on
9869
+ top of it is text and takes --accent-ink (bare --accent is 1.07:1 on
9870
+ paper -- invisible in light theme, identical to --accent-ink in dark,
9871
+ which is why it reads fine until someone switches themes). */
9738
9872
  background: color-mix(in oklab, var(--accent) 22%, transparent);
9739
- color: var(--accent);
9873
+ color: var(--accent-ink);
9740
9874
  }
9741
9875
  .ds-247420 .ds-ep-tree-twist {
9742
9876
  width: 12px; flex-shrink: 0; text-align: center;
@@ -12001,6 +12135,32 @@
12001
12135
  margin-bottom: var(--space-1);
12002
12136
  }
12003
12137
 
12138
+ /* .ds-prose-endnote — the closing line of an article ("end. reply by opening a
12139
+ pr."), set off from the body it terminates. Quieter and smaller than prose:
12140
+ it takes the mono face and the --panel-text-2 tone that this sheet's other
12141
+ ancillary voices use (.toc a, .gm-callout .who, .card .desc), so the endnote
12142
+ reads as chrome around the article rather than a final paragraph of it. The
12143
+ generous --space-5 lead is what does the "set off" — it breaks the paragraph
12144
+ rhythm so the eye registers the piece has ended before reading the words.
12145
+ Sized at --fs-xs rather than the --fs-nano label rung: this is a readable
12146
+ sentence with a link in it, not an uppercase micro-label.
12147
+ Replaces the inline style ui_kits/blog carried before the inline-style
12148
+ sweep, which named this class without ever defining it. */
12149
+ .ds-247420 .ds-prose .ds-prose-endnote,
12150
+ .ds-247420 .ds-prose-endnote {
12151
+ margin-top: var(--space-5);
12152
+ margin-bottom: 0;
12153
+ font-family: var(--ff-mono);
12154
+ font-size: var(--fs-xs);
12155
+ line-height: 1.6;
12156
+ color: var(--panel-text-2);
12157
+ }
12158
+ /* The endnote's link keeps the prose accent but stays in the quiet register —
12159
+ --panel-accent is the panel-ramp counterpart of --accent-ink (a readable
12160
+ TEXT tone), never the bare --accent fill, which is ~1.07:1 on paper. */
12161
+ .ds-247420 .ds-prose-endnote a { color: var(--panel-accent); text-decoration: none; }
12162
+ .ds-247420 .ds-prose-endnote a:hover { text-decoration: underline; }
12163
+
12004
12164
  /* marketing.css */
12005
12165
  /* marketing.css — landing / docs site surface family (the agentgui flatspace
12006
12166
  * site renderer composes these instead of carrying inline style= props). Every