anentrypoint-design 0.0.424 → 0.0.426
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/app-shell.css +5 -0
- package/chat.css +41 -0
- package/colors_and_type.css +86 -42
- package/dist/247420.css +544 -82
- package/dist/247420.js +34 -28
- package/package.json +1 -1
- package/src/components/calendar/calendar.js +144 -0
- package/src/components/calendar/date-picker.js +106 -0
- package/src/components/calendar/grid.js +79 -0
- package/src/components/calendar.js +15 -0
- package/src/components/carousel.js +53 -0
- package/src/components/collab/cursors.js +68 -0
- package/src/components/collab/presence.js +29 -0
- package/src/components/collab.js +11 -0
- package/src/components/content/otp-input.js +91 -0
- package/src/components/content.js +2 -1
- package/src/components/context-pane/meter.js +42 -0
- package/src/components/context-pane/pane.js +127 -0
- package/src/components/context-pane/treemap.js +81 -0
- package/src/components/context-pane/xray.js +30 -0
- package/src/components/context-pane.js +12 -127
- package/src/components/data-density/progress.js +20 -0
- package/src/components/data-density.js +3 -0
- package/src/components/editor-primitives/layout.js +12 -0
- package/src/components/editor-primitives.js +2 -2
- package/src/components/overlay-primitives/hover-card.js +60 -0
- package/src/components/overlay-primitives/menubar.js +65 -0
- package/src/components/overlay-primitives.js +4 -0
- package/src/components/shell/icons.js +4 -1
- package/src/components/slider.js +66 -0
- package/src/components.js +21 -5
- package/src/css/app-shell/base.css +16 -0
- package/src/css/app-shell/calendar.css +131 -0
- package/src/css/app-shell/carousel.css +44 -0
- package/src/css/app-shell/chat-polish.css +1 -1
- package/src/css/app-shell/collab.css +106 -0
- package/src/css/app-shell/hero-content.css +34 -38
- package/src/css/app-shell/kits-appended.css +1 -1
- package/src/css/app-shell/otp-input.css +31 -0
- package/src/css/app-shell/slider.css +53 -0
- package/src/page-html/page-styles.js +7 -1
- package/types/components.d.ts +299 -1
package/dist/247420.css
CHANGED
|
@@ -16,23 +16,33 @@
|
|
|
16
16
|
--tree-indent: 12px;
|
|
17
17
|
--tree-base-indent: 6px;
|
|
18
18
|
|
|
19
|
-
/* Paper / Ink —
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
--
|
|
29
|
-
--paper-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
--
|
|
35
|
-
--
|
|
19
|
+
/* Paper / Ink — RESTYLED to webjsx-toolkit's shadcn-neutral grayscale
|
|
20
|
+
palette (2026 restyle, replacing the prior "Acid Editorial" warm-paper/
|
|
21
|
+
electric-lime identity). Values below are HSL-equivalent-in-hex readings
|
|
22
|
+
of webjsx-toolkit's :root tokens (--background 0 0% 100%, --foreground
|
|
23
|
+
0 0% 10%, --muted 0 0% 95%, --border 0 0% 90%) so every downstream
|
|
24
|
+
color-mix()/oklch() derivation in this file keeps its formula and only
|
|
25
|
+
the ROOT input changes -- see restyle-tokens-webjsx-toolkit-look and
|
|
26
|
+
restyle-contrast-reverification-all-tokens for the swap rationale and
|
|
27
|
+
the re-verification this requires. */
|
|
28
|
+
--paper: #FFFFFF;
|
|
29
|
+
--paper-2: #F2F2F2;
|
|
30
|
+
--paper-3: #E5E5E5;
|
|
31
|
+
--ink: #1A1A1A;
|
|
32
|
+
--ink-2: #333338;
|
|
33
|
+
--ink-3: #525252; /* WCAG-verified 2026 restyle: npm run a11y caught 4.10:1 at #58585F against --paper-3 (#c6c5c5-equivalent surfaces); #525252 clears 4.54:1 there and 7.81:1 against pure paper */
|
|
34
|
+
--ink-3-dark: #4D4D52; /* dark theme bg-3 (tier-3 surface) */
|
|
35
|
+
--paper-3-dark: #9B9B9B; /* dark theme fg-3 (tier-3 text); WCAG-verified: npm run a11y caught 4.41:1 at #999999 against --ink-2 (#333338); #9B9B9B clears 4.52:1 there */
|
|
36
|
+
|
|
37
|
+
/* Lore palette. --acid was the prior electric-lime lead; RESTYLED to a
|
|
38
|
+
neutral near-black accent matching webjsx-toolkit's grayscale --primary
|
|
39
|
+
(0 0% 15%), since the shadcn-neutral look has no saturated lead color at
|
|
40
|
+
all -- primary/accent are both neutral ink tones with hover-state
|
|
41
|
+
opacity, not a distinct hue. green/purple/mascot below stay as the
|
|
42
|
+
category/status palette (webjsx-toolkit has no opinion on multi-hue
|
|
43
|
+
category tagging, so these are kept rather than flattened). */
|
|
44
|
+
--acid: #262626;
|
|
45
|
+
--acid-deep: #171717; /* re-verify AA text tone under restyle-contrast-reverification-all-tokens */
|
|
36
46
|
--green: #247420;
|
|
37
47
|
--green-2: #3A9A34;
|
|
38
48
|
--green-deep: #133F10;
|
|
@@ -51,6 +61,14 @@
|
|
|
51
61
|
need a tone chosen for ink rather than for the active theme. Same role
|
|
52
62
|
--paper-3-dark plays for the tier-3 text ramp. */
|
|
53
63
|
--mascot-on-ink: #FF5C9E;
|
|
64
|
+
/* Same always-dark-surface pattern, for .ds-cli-ok's success/OK text.
|
|
65
|
+
RESTYLED 2026: .ds-cli-ok previously used --acid directly (the bright
|
|
66
|
+
lime), which cleared contrast on --ink by construction; now that --acid
|
|
67
|
+
is a dark neutral, it fails 1.15:1 on the still-always-dark .cli card
|
|
68
|
+
(npm run a11y caught this on the terminal kit). Reuses the dark-theme
|
|
69
|
+
--green retune value (7.48:1 on --ink) rather than inventing a new hue,
|
|
70
|
+
since --green already carries the "success" semantic elsewhere. */
|
|
71
|
+
--success-on-ink: #5CBF52;
|
|
54
72
|
|
|
55
73
|
/* Signals */
|
|
56
74
|
--sun: #F5C344;
|
|
@@ -97,11 +115,16 @@
|
|
|
97
115
|
--fg-2: var(--ink-2);
|
|
98
116
|
--fg-3: var(--ink-3);
|
|
99
117
|
|
|
100
|
-
/*
|
|
101
|
-
|
|
102
|
-
|
|
118
|
+
/* --accent is the FILL; --accent-ink is the readable TEXT tone for
|
|
119
|
+
links/eyebrows/accents on paper; --accent-fg is what sits ON an --accent
|
|
120
|
+
fill. RESTYLED: --accent (formerly the bright --acid lime, dark text on
|
|
121
|
+
top) is now a dark neutral (webjsx-toolkit's --primary: 0 0% 15%), so
|
|
122
|
+
--accent-fg flips to a LIGHT tone (webjsx-toolkit's --primary-foreground:
|
|
123
|
+
0 0% 100%) -- verified via npm run a11y after the initial restyle caught
|
|
124
|
+
this exact dark-on-dark 1.15:1 failure across every kit's .btn-primary/
|
|
125
|
+
.active nav item, both of which read --accent-fg as their text color. */
|
|
103
126
|
--accent: var(--acid);
|
|
104
|
-
--accent-fg: var(--
|
|
127
|
+
--accent-fg: var(--paper);
|
|
105
128
|
--accent-ink: var(--acid-deep);
|
|
106
129
|
--accent-bright: var(--acid); /* base value so var(--accent-bright) never falls back empty; ink + [data-accent] retune it */
|
|
107
130
|
/* Blends --accent-ink (the readable/darker ink variant), not the raw
|
|
@@ -242,13 +265,19 @@
|
|
|
242
265
|
--rule-strong: color-mix(in oklab, currentColor 28%, transparent);
|
|
243
266
|
|
|
244
267
|
/* Micro rungs below --r-1 — chips, badges, scrollbar thumbs, tick marks
|
|
245
|
-
genuinely want a tighter corner than
|
|
246
|
-
component sheets fell back to raw px literals bypassing the
|
|
268
|
+
genuinely want a tighter corner than the base radius; without these two
|
|
269
|
+
tokens the component sheets fell back to raw px literals bypassing the
|
|
270
|
+
scale. RESTYLED (webjsx-toolkit look): base --radius is 0.5rem (8px),
|
|
271
|
+
with radius-sm/md/lg at radius-4px/radius-2px/radius (4px/6px/8px) --
|
|
272
|
+
--r-1 below is retuned to that 8px base; --r-2/--r-3 keep proportional
|
|
273
|
+
headroom above it for large-surface corners (cards, dialogs) rather than
|
|
274
|
+
collapsing to a single flat rung, since webjsx-toolkit itself has no
|
|
275
|
+
opinion above its one --radius value. */
|
|
247
276
|
--r-hair: 2px;
|
|
248
277
|
--r-0: 4px;
|
|
249
|
-
--r-1:
|
|
250
|
-
--r-2:
|
|
251
|
-
--r-3:
|
|
278
|
+
--r-1: 8px;
|
|
279
|
+
--r-2: 10px;
|
|
280
|
+
--r-3: 14px;
|
|
252
281
|
--r-pill: 999px;
|
|
253
282
|
|
|
254
283
|
--dur-snap: 80ms;
|
|
@@ -257,14 +286,24 @@
|
|
|
257
286
|
--dur-reveal: 560ms;
|
|
258
287
|
--ease: cubic-bezier(0.2, 0, 0, 1);
|
|
259
288
|
/* Physical tier — a slight overshoot that reads as a printed stamp landing,
|
|
260
|
-
used by presses and signature reveals (not by routine UI fades).
|
|
289
|
+
used by presses and signature reveals (not by routine UI fades). Kept
|
|
290
|
+
available post-restyle since some existing consumers still reference it;
|
|
291
|
+
new work should prefer the webjsx-toolkit-equivalent curves below. */
|
|
261
292
|
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
262
293
|
--ease-exit: cubic-bezier(0.4, 0, 1, 1);
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
--
|
|
294
|
+
/* RESTYLED (webjsx-toolkit look): its three named easing curves, ported
|
|
295
|
+
verbatim from webjsx-toolkit/src/styles.css's @theme inline block. */
|
|
296
|
+
--ease-drawer: cubic-bezier(0.32, 0.72, 0, 1);
|
|
297
|
+
--ease-collapse: cubic-bezier(0.2, 0, 0, 1);
|
|
298
|
+
--ease-out-strong: cubic-bezier(0.23, 1, 0.32, 1);
|
|
299
|
+
|
|
300
|
+
/* Print texture — the prior "Acid Editorial" signature surface treatment.
|
|
301
|
+
RESTYLED: opacity zeroed so .ds-grain/.ds-halftone (currently applied by
|
|
302
|
+
no consumer, verified by grep across src/components and ui_kits) render
|
|
303
|
+
inert under the flat-surface webjsx-toolkit look, without deleting the
|
|
304
|
+
machinery in case a future editorial-mode consumer opts back in. --grain
|
|
305
|
+
itself (the data-URI) and --grain-blend are left defined for that reason. */
|
|
306
|
+
--grain-opacity: 0;
|
|
268
307
|
--grain-blend: multiply;
|
|
269
308
|
--grain: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
|
|
270
309
|
/* Offset-ink registration — the small print-mark offset used on editorial
|
|
@@ -434,12 +473,16 @@
|
|
|
434
473
|
--panel-text: var(--fg);
|
|
435
474
|
--panel-text-2: var(--fg-2);
|
|
436
475
|
--panel-text-3: var(--fg-3);
|
|
437
|
-
--
|
|
476
|
+
/* RESTYLED: webjsx-toolkit's dark --primary is a LIGHT neutral (0 0% 75%)
|
|
477
|
+
with a DARK --primary-foreground (0 0% 10%) -- the inverse of light mode,
|
|
478
|
+
matching shadcn's convention that dark-mode primary buttons read as a
|
|
479
|
+
light chip on the dark page, not a same-dark-as-bg chip. --accent no
|
|
480
|
+
longer aliases --acid here (a literal dark-on-dark 1.15:1 failure caught
|
|
481
|
+
by npm run a11y across every dark-rendered kit). */
|
|
482
|
+
--accent: #BFBFBF;
|
|
438
483
|
--accent-fg: var(--ink);
|
|
439
|
-
--accent-ink: var(--
|
|
440
|
-
--accent-bright:
|
|
441
|
-
/* Preserves the prior --accent-based blend for dark; the :root light-theme
|
|
442
|
-
value above was retuned to blend --accent-ink instead. */
|
|
484
|
+
--accent-ink: var(--paper);
|
|
485
|
+
--accent-bright: #BFBFBF;
|
|
443
486
|
--accent-tint: color-mix(in oklab, var(--accent) 30%, var(--bg));
|
|
444
487
|
--danger: oklch(0.68 0.19 25);
|
|
445
488
|
--flame: #FF5A1F;
|
|
@@ -505,10 +548,10 @@
|
|
|
505
548
|
--panel-text: var(--fg);
|
|
506
549
|
--panel-text-2: var(--fg-2);
|
|
507
550
|
--panel-text-3: var(--fg-3);
|
|
508
|
-
--accent:
|
|
551
|
+
--accent: #BFBFBF; /* mirrors [data-theme=ink/dark] retune above */
|
|
509
552
|
--accent-fg: var(--ink);
|
|
510
|
-
--accent-ink: var(--
|
|
511
|
-
--accent-bright:
|
|
553
|
+
--accent-ink: var(--paper);
|
|
554
|
+
--accent-bright: #BFBFBF;
|
|
512
555
|
--accent-tint: color-mix(in oklab, var(--accent) 30%, var(--bg));
|
|
513
556
|
--danger: oklch(0.68 0.19 25);
|
|
514
557
|
--flame: #FF5A1F;
|
|
@@ -571,6 +614,7 @@
|
|
|
571
614
|
--cat-purple-ink: inherit;
|
|
572
615
|
--cat-mascot-ink: inherit;
|
|
573
616
|
--mascot-on-ink: inherit;
|
|
617
|
+
--success-on-ink: inherit;
|
|
574
618
|
--cat-sun: inherit;
|
|
575
619
|
--cat-flame: inherit;
|
|
576
620
|
--cat-sky: inherit;
|
|
@@ -594,7 +638,7 @@
|
|
|
594
638
|
color-scheme: light;
|
|
595
639
|
--bg: var(--paper); --bg-2: var(--paper-2); --bg-3: var(--paper-3);
|
|
596
640
|
--fg: var(--ink); --fg-2: var(--ink-2); --fg-3: var(--ink-3);
|
|
597
|
-
--accent: var(--acid); --accent-fg: var(--
|
|
641
|
+
--accent: var(--acid); --accent-fg: var(--paper); --accent-ink: var(--acid-deep);
|
|
598
642
|
--accent-tint: color-mix(in oklab, var(--accent-ink) 22%, var(--bg));
|
|
599
643
|
/* A paper island under a dark ancestor must not inherit the dark signal pair. */
|
|
600
644
|
--flame: #C53E00; --amber: #7C570F; --warn: #C41C0C; --sky: #3A6EFF;
|
|
@@ -665,7 +709,7 @@
|
|
|
665
709
|
.ds-247420[data-density="comfortable"] { --density: 1; }
|
|
666
710
|
.ds-247420[data-density="spacious"] { --density: 1.35; }
|
|
667
711
|
|
|
668
|
-
.ds-247420[data-accent="acid"] { --accent: var(--acid); --accent-bright: var(--acid); --accent-fg: var(--
|
|
712
|
+
.ds-247420[data-accent="acid"] { --accent: var(--acid); --accent-bright: var(--acid); --accent-fg: var(--paper); --accent-ink: var(--acid-deep); --panel-accent: var(--acid); }
|
|
669
713
|
.ds-247420[data-accent="green"] { --accent: var(--green); --accent-bright: var(--green-2); --accent-fg: var(--paper); --accent-ink: var(--green); --panel-accent: var(--green); }
|
|
670
714
|
.ds-247420[data-accent="purple"] { --accent: var(--purple); --accent-bright: #C277FF; --accent-fg: var(--paper); --accent-ink: var(--purple-2); --panel-accent: var(--purple); }
|
|
671
715
|
.ds-247420[data-accent="mascot"] { --accent: var(--mascot); --accent-bright: var(--mascot-2); --accent-fg: var(--ink); --accent-ink: var(--mascot-deep);--panel-accent: var(--mascot); }
|
|
@@ -835,6 +879,22 @@
|
|
|
835
879
|
white-space: nowrap;
|
|
836
880
|
border: 0;
|
|
837
881
|
}
|
|
882
|
+
|
|
883
|
+
/* .ds-aspect — generic aspect-ratio utility. Native `aspect-ratio` property
|
|
884
|
+
(broadly supported for years) rather than the padding-bottom hack: no
|
|
885
|
+
extra wrapper markup, no absolutely-positioned inner layer needed just to
|
|
886
|
+
fill the box. `--aspect` defaults to 16/9; a caller overrides it inline
|
|
887
|
+
(e.g. style="--aspect:1/1") or via a ratio-named modifier class below. */
|
|
888
|
+
.ds-247420 .ds-aspect {
|
|
889
|
+
aspect-ratio: var(--aspect, 16 / 9);
|
|
890
|
+
width: 100%;
|
|
891
|
+
overflow: hidden;
|
|
892
|
+
}
|
|
893
|
+
.ds-247420 .ds-aspect > * { width: 100%; height: 100%; object-fit: cover; display: block; }
|
|
894
|
+
.ds-247420 .ds-aspect-square { --aspect: 1 / 1; }
|
|
895
|
+
.ds-247420 .ds-aspect-video { --aspect: 16 / 9; }
|
|
896
|
+
.ds-247420 .ds-aspect-portrait { --aspect: 3 / 4; }
|
|
897
|
+
|
|
838
898
|
.ds-247420 body {
|
|
839
899
|
background: var(--bg);
|
|
840
900
|
color: var(--fg);
|
|
@@ -1813,36 +1873,42 @@
|
|
|
1813
1873
|
/* ============================================================
|
|
1814
1874
|
Hero
|
|
1815
1875
|
============================================================ */
|
|
1816
|
-
/*
|
|
1817
|
-
|
|
1818
|
-
|
|
1876
|
+
/* RESTYLED 2026 (webjsx-toolkit look): centered-stack hero, replacing the
|
|
1877
|
+
prior asymmetric two-column editorial grid (title-wide / body+aside-offset)
|
|
1878
|
+
per a deliberate house-rule reversal -- shadcn/webjsx-toolkit itself has no
|
|
1879
|
+
asymmetric-grid opinion, and the prior "no centered stack, ever" rule was
|
|
1880
|
+
specific to the retired Acid Editorial identity. All child classes/markup
|
|
1881
|
+
are UNCHANGED (no JS component edit needed) -- only the grid arrangement
|
|
1882
|
+
and each part's own layout (aside becomes a full-width card below the body
|
|
1883
|
+
instead of a right-column card) changed. Centered text, capped measure. */
|
|
1819
1884
|
.ds-247420 .ds-hero {
|
|
1820
1885
|
padding: var(--space-9) 0 var(--space-8);
|
|
1821
|
-
display:
|
|
1822
|
-
|
|
1823
|
-
grid-template-areas: 'title title' 'body aside';
|
|
1824
|
-
align-items: start;
|
|
1886
|
+
display: flex; flex-direction: column; align-items: center;
|
|
1887
|
+
gap: var(--space-5);
|
|
1825
1888
|
max-width: var(--stage-wide);
|
|
1889
|
+
text-align: center;
|
|
1826
1890
|
position: relative; isolation: isolate;
|
|
1827
1891
|
}
|
|
1828
|
-
.ds-247420 .ds-hero-head {
|
|
1829
|
-
.ds-247420 .ds-hero-body {
|
|
1830
|
-
/* The
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1892
|
+
.ds-247420 .ds-hero-head { display: grid; gap: var(--space-3); justify-items: center; }
|
|
1893
|
+
.ds-247420 .ds-hero-body { margin-inline: auto; }
|
|
1894
|
+
/* The stat/badge/CTA cluster now sits as a full-width card BELOW the body
|
|
1895
|
+
copy, centered, rather than a right-offset column -- still carries its own
|
|
1896
|
+
visual weight via the top accent bar (rotated from the former left spine)
|
|
1897
|
+
so it still reads as a deliberate block, not an afterthought. */
|
|
1834
1898
|
.ds-247420 .ds-hero-aside {
|
|
1835
|
-
|
|
1836
|
-
|
|
1899
|
+
position: relative; isolation: isolate;
|
|
1900
|
+
width: 100%; max-width: 46ch;
|
|
1901
|
+
display: flex; flex-direction: column;
|
|
1837
1902
|
justify-content: space-between; gap: var(--space-5);
|
|
1838
1903
|
background: var(--bg-2);
|
|
1839
|
-
border-radius:
|
|
1840
|
-
padding: var(--space-
|
|
1904
|
+
border-radius: var(--r-2);
|
|
1905
|
+
padding: calc(var(--space-4) + var(--bw-chunk)) var(--space-5) var(--space-5);
|
|
1906
|
+
text-align: left;
|
|
1841
1907
|
}
|
|
1842
1908
|
.ds-247420 .ds-hero-aside::before {
|
|
1843
|
-
content: ''; position: absolute; left: 0;
|
|
1844
|
-
|
|
1845
|
-
border-radius: var(--bw-chunk)
|
|
1909
|
+
content: ''; position: absolute; left: 0; right: 0; top: 0;
|
|
1910
|
+
height: var(--bw-chunk); background: var(--accent);
|
|
1911
|
+
border-radius: var(--bw-chunk) var(--bw-chunk) 0 0;
|
|
1846
1912
|
}
|
|
1847
1913
|
.ds-247420 .ds-hero-stats { display: flex; flex-direction: column; gap: var(--space-2); }
|
|
1848
1914
|
.ds-247420 .ds-hero-stat {
|
|
@@ -1860,35 +1926,25 @@
|
|
|
1860
1926
|
Snapping to either changes the hero's whole optical weight. */
|
|
1861
1927
|
font-size: clamp(40px, 9cqi, 116px);
|
|
1862
1928
|
line-height: 0.96; letter-spacing: var(--tr-tighter);
|
|
1863
|
-
margin: 0; max-width:
|
|
1929
|
+
margin: 0 auto; max-width: 20ch; text-wrap: balance;
|
|
1864
1930
|
}
|
|
1865
1931
|
.ds-247420 .ds-hero-body {
|
|
1866
1932
|
font-family: var(--ff-body); font-size: var(--fs-xl);
|
|
1867
|
-
line-height: 1.45; margin: 0; max-width: 46ch;
|
|
1933
|
+
line-height: 1.45; margin: 0 auto; max-width: 46ch;
|
|
1868
1934
|
color: var(--fg-2);
|
|
1869
1935
|
}
|
|
1870
1936
|
/* The lead phrase in the title — printed in the electric lead, not glowing. */
|
|
1871
1937
|
.ds-247420 .ds-hero-accent { color: var(--accent-ink); font-weight: 700; }
|
|
1872
1938
|
.ds-247420 .ds-hero-actions {
|
|
1873
1939
|
display: flex; gap: var(--space-2, 10px); flex-wrap: wrap;
|
|
1874
|
-
|
|
1940
|
+
justify-content: center; margin-top: var(--space-hair, 4px);
|
|
1875
1941
|
}
|
|
1876
|
-
/*
|
|
1877
|
-
|
|
1878
|
-
no
|
|
1942
|
+
/* Below this width the aside card's own internal rhythm (stat rows still
|
|
1943
|
+
stacked vertically at full width) is already correct for a narrow column —
|
|
1944
|
+
no separate breakpoint override needed now that .ds-hero is always a
|
|
1945
|
+
single-column centered stack at every width. */
|
|
1879
1946
|
@container (max-width: 900px) {
|
|
1880
|
-
.ds-247420 .ds-hero {
|
|
1881
|
-
grid-template-columns: minmax(0, 1fr);
|
|
1882
|
-
grid-template-areas: 'title' 'body' 'aside';
|
|
1883
|
-
align-items: start;
|
|
1884
|
-
padding: var(--space-7) 0 var(--space-6);
|
|
1885
|
-
}
|
|
1886
|
-
.ds-247420 .ds-hero-aside {
|
|
1887
|
-
border-radius: var(--r-2); flex-direction: row; flex-wrap: wrap;
|
|
1888
|
-
justify-content: flex-start; align-items: center;
|
|
1889
|
-
}
|
|
1890
|
-
.ds-247420 .ds-hero-stats { flex-direction: row; flex-wrap: wrap; }
|
|
1891
|
-
.ds-247420 .ds-hero-stat { border-bottom: 0; padding-bottom: 0; }
|
|
1947
|
+
.ds-247420 .ds-hero { padding: var(--space-7) 0 var(--space-6); }
|
|
1892
1948
|
}
|
|
1893
1949
|
.ds-247420 .ds-chat-title { margin: 0; font-size: inherit; }
|
|
1894
1950
|
|
|
@@ -3499,7 +3555,7 @@
|
|
|
3499
3555
|
pointer-events: none;
|
|
3500
3556
|
}
|
|
3501
3557
|
.ds-247420 .chat-empty-title { font-size: var(--fs-sm); margin: 0 0 var(--space-1); }
|
|
3502
|
-
.ds-247420 .chat-empty-sub { font-size: var(--fs-tiny); margin: 0; opacity: .7;
|
|
3558
|
+
.ds-247420 .chat-empty-sub { font-size: var(--fs-tiny); margin: 0; opacity: .82; } /* WCAG-verified 2026 restyle: .7 blended --fg-3 to 3.72:1 on dark --bg (#1a1a1a); .82 clears 4.53:1 */
|
|
3503
3559
|
|
|
3504
3560
|
.ds-247420 .chat-msg { display: flex; gap: var(--space-2-75); align-items: flex-start; padding: var(--space-1-75) 0; position: relative; min-width: 0; }
|
|
3505
3561
|
.ds-247420 .chat-msg.you { flex-direction: row-reverse; }
|
|
@@ -6196,7 +6252,7 @@
|
|
|
6196
6252
|
draws, applied to a surface that never follows the theme. */
|
|
6197
6253
|
.ds-247420 .ds-cli-cmt .cmd { color: var(--paper-3-dark); }
|
|
6198
6254
|
.ds-247420 .ds-cli-out .cmd { color: var(--paper-2); }
|
|
6199
|
-
.ds-247420 .ds-cli-ok .prompt, .ds-247420 .ds-cli-ok .cmd { color: var(--
|
|
6255
|
+
.ds-247420 .ds-cli-ok .prompt, .ds-247420 .ds-cli-ok .cmd { color: var(--success-on-ink); } /* WCAG-verified 2026 restyle: --acid alone is now a dark neutral and fails on this always-dark .cli surface (npm run a11y) */
|
|
6200
6256
|
.ds-247420 .ds-cli-warn .prompt, .ds-247420 .ds-cli-warn .cmd { color: var(--mascot-on-ink); }
|
|
6201
6257
|
.ds-247420 .ds-cli-log .prompt { color: var(--paper-3-dark); }
|
|
6202
6258
|
.ds-247420 .ds-cli-log .cmd { color: var(--paper-2); font-family: var(--ff-mono); }
|
|
@@ -6892,6 +6948,371 @@
|
|
|
6892
6948
|
background: var(--bg-2); border: var(--bw-hair) solid var(--rule); border-radius: var(--r-2);
|
|
6893
6949
|
padding: var(--space-3); overflow: auto; max-height: 260px; white-space: pre-wrap; word-break: break-word;
|
|
6894
6950
|
}
|
|
6951
|
+
/* ============================================================
|
|
6952
|
+
Slider — generic single-value range input
|
|
6953
|
+
Same overlay approach as .vx-vad-range (community.css): a real, fully
|
|
6954
|
+
transparent <input type="range"> sits on top of a custom track/fill/thumb
|
|
6955
|
+
so no browser's native thumb chrome ever paints, while pointer/keyboard/
|
|
6956
|
+
a11y semantics stay on the real input underneath.
|
|
6957
|
+
============================================================ */
|
|
6958
|
+
.ds-247420 .ds-slider { display: flex; flex-direction: column; gap: var(--space-1); width: 100%; }
|
|
6959
|
+
.ds-247420 .ds-slider.is-disabled { opacity: 0.5; pointer-events: none; }
|
|
6960
|
+
.ds-247420 .ds-slider-track {
|
|
6961
|
+
position: relative;
|
|
6962
|
+
height: 12px;
|
|
6963
|
+
margin: var(--space-2) 0;
|
|
6964
|
+
border-radius: var(--r-pill);
|
|
6965
|
+
background: var(--bg-3);
|
|
6966
|
+
overflow: visible;
|
|
6967
|
+
}
|
|
6968
|
+
.ds-247420 .ds-slider-fill {
|
|
6969
|
+
position: absolute; left: 0; top: 0; bottom: 0;
|
|
6970
|
+
width: calc(var(--ds-slider-pct, 0) * 1%);
|
|
6971
|
+
border-radius: var(--r-pill);
|
|
6972
|
+
background: var(--accent);
|
|
6973
|
+
transition: width var(--dur-snap) linear;
|
|
6974
|
+
}
|
|
6975
|
+
.ds-247420 .ds-slider-thumb {
|
|
6976
|
+
position: absolute; top: 50%; left: calc(var(--ds-slider-pct, 0) * 1%);
|
|
6977
|
+
width: 18px; height: 18px;
|
|
6978
|
+
border-radius: var(--r-pill);
|
|
6979
|
+
background: var(--bg-1);
|
|
6980
|
+
border: var(--bw-rule) solid var(--accent);
|
|
6981
|
+
box-shadow: var(--shadow-1);
|
|
6982
|
+
transform: translate(-50%, -50%);
|
|
6983
|
+
pointer-events: none;
|
|
6984
|
+
transition: box-shadow var(--dur-snap) var(--ease);
|
|
6985
|
+
}
|
|
6986
|
+
.ds-247420 .ds-slider-range {
|
|
6987
|
+
position: absolute; inset: 0;
|
|
6988
|
+
width: 100%; height: 100%;
|
|
6989
|
+
margin: 0; opacity: 0;
|
|
6990
|
+
cursor: pointer;
|
|
6991
|
+
}
|
|
6992
|
+
.ds-247420 .ds-slider-range:focus-visible ~ .ds-slider-thumb,
|
|
6993
|
+
.ds-247420 .ds-slider-track:has(.ds-slider-range:focus-visible) .ds-slider-thumb {
|
|
6994
|
+
box-shadow: 0 0 0 3px color-mix(in oklab, var(--accent) 40%, transparent), var(--shadow-1);
|
|
6995
|
+
}
|
|
6996
|
+
.ds-247420 .ds-slider-range:disabled { cursor: default; }
|
|
6997
|
+
|
|
6998
|
+
@media (prefers-reduced-motion: reduce) {
|
|
6999
|
+
.ds-247420 .ds-slider-fill,
|
|
7000
|
+
.ds-247420 .ds-slider-thumb {
|
|
7001
|
+
transition: none !important;
|
|
7002
|
+
}
|
|
7003
|
+
}
|
|
7004
|
+
/* ============================================================
|
|
7005
|
+
InputOTP — segmented PIN / one-time-code entry
|
|
7006
|
+
============================================================ */
|
|
7007
|
+
.ds-247420 .ds-otp { display: inline-flex; gap: var(--space-2); }
|
|
7008
|
+
.ds-247420 .ds-otp-box {
|
|
7009
|
+
width: var(--ctl-md); height: var(--ctl-md);
|
|
7010
|
+
text-align: center;
|
|
7011
|
+
font-family: var(--ff-mono);
|
|
7012
|
+
font-size: var(--fs-lg);
|
|
7013
|
+
font-weight: 600;
|
|
7014
|
+
color: var(--fg);
|
|
7015
|
+
background: var(--bg-2);
|
|
7016
|
+
border: var(--bw-rule) solid var(--rule);
|
|
7017
|
+
border-radius: var(--r-1);
|
|
7018
|
+
transition: border-color var(--dur-snap) var(--ease), background var(--dur-snap) var(--ease), box-shadow var(--dur-snap) var(--ease);
|
|
7019
|
+
}
|
|
7020
|
+
.ds-247420 .ds-otp-box:focus-visible {
|
|
7021
|
+
outline: none;
|
|
7022
|
+
border-color: var(--accent);
|
|
7023
|
+
box-shadow: 0 0 0 3px color-mix(in oklab, var(--accent) 40%, transparent);
|
|
7024
|
+
}
|
|
7025
|
+
.ds-247420 .ds-otp-box-filled { border-color: var(--rule-strong); background: var(--bg-3); }
|
|
7026
|
+
.ds-247420 .ds-otp-box-error { border-color: var(--red); }
|
|
7027
|
+
.ds-247420 .ds-otp-box-error:focus-visible { box-shadow: 0 0 0 3px color-mix(in oklab, var(--red) 40%, transparent); }
|
|
7028
|
+
.ds-247420 .ds-otp-box:disabled { opacity: 0.5; cursor: default; }
|
|
7029
|
+
|
|
7030
|
+
@media (prefers-reduced-motion: reduce) {
|
|
7031
|
+
.ds-247420 .ds-otp-box {
|
|
7032
|
+
transition: none !important;
|
|
7033
|
+
}
|
|
7034
|
+
}
|
|
7035
|
+
/* ============================================================
|
|
7036
|
+
Carousel — horizontal (or vertical) scroll-snap content carousel
|
|
7037
|
+
============================================================ */
|
|
7038
|
+
.ds-247420 .ds-carousel {
|
|
7039
|
+
display: flex;
|
|
7040
|
+
align-items: center;
|
|
7041
|
+
gap: var(--space-2);
|
|
7042
|
+
}
|
|
7043
|
+
.ds-247420 .ds-carousel--vertical { flex-direction: column; }
|
|
7044
|
+
|
|
7045
|
+
.ds-247420 .ds-carousel-track {
|
|
7046
|
+
display: flex;
|
|
7047
|
+
flex: 1 1 auto;
|
|
7048
|
+
gap: var(--space-3);
|
|
7049
|
+
overflow-x: auto;
|
|
7050
|
+
overflow-y: hidden;
|
|
7051
|
+
scroll-snap-type: x mandatory;
|
|
7052
|
+
scroll-behavior: smooth;
|
|
7053
|
+
-webkit-overflow-scrolling: touch;
|
|
7054
|
+
}
|
|
7055
|
+
.ds-247420 .ds-carousel-track--vertical {
|
|
7056
|
+
flex-direction: column;
|
|
7057
|
+
overflow-x: hidden;
|
|
7058
|
+
overflow-y: auto;
|
|
7059
|
+
scroll-snap-type: y mandatory;
|
|
7060
|
+
max-height: 480px;
|
|
7061
|
+
}
|
|
7062
|
+
|
|
7063
|
+
.ds-247420 .ds-carousel-item {
|
|
7064
|
+
flex: 0 0 auto;
|
|
7065
|
+
scroll-snap-align: start;
|
|
7066
|
+
}
|
|
7067
|
+
|
|
7068
|
+
.ds-247420 .ds-carousel-prev,
|
|
7069
|
+
.ds-247420 .ds-carousel-next {
|
|
7070
|
+
flex: 0 0 auto;
|
|
7071
|
+
border-radius: var(--r-pill);
|
|
7072
|
+
}
|
|
7073
|
+
|
|
7074
|
+
@media (prefers-reduced-motion: reduce) {
|
|
7075
|
+
.ds-247420 .ds-carousel-track {
|
|
7076
|
+
scroll-behavior: auto;
|
|
7077
|
+
}
|
|
7078
|
+
}
|
|
7079
|
+
/* ============================================================
|
|
7080
|
+
Calendar / DatePicker / DateRangePicker — month date-grid
|
|
7081
|
+
primitive plus its trigger+popover shells. Tokens only: no raw
|
|
7082
|
+
color/radius/z-index literal anywhere below (lint-tokens /
|
|
7083
|
+
lint-radius / lint-zindex hard gates).
|
|
7084
|
+
============================================================ */
|
|
7085
|
+
.ds-247420 .ds-cal {
|
|
7086
|
+
display: flex;
|
|
7087
|
+
flex-direction: column;
|
|
7088
|
+
gap: var(--space-2);
|
|
7089
|
+
padding: var(--space-2);
|
|
7090
|
+
width: max-content;
|
|
7091
|
+
min-width: 264px;
|
|
7092
|
+
}
|
|
7093
|
+
.ds-247420 .ds-cal-head {
|
|
7094
|
+
display: flex;
|
|
7095
|
+
align-items: center;
|
|
7096
|
+
justify-content: space-between;
|
|
7097
|
+
gap: var(--space-2);
|
|
7098
|
+
}
|
|
7099
|
+
.ds-247420 .ds-cal-title {
|
|
7100
|
+
font-size: var(--fs-sm);
|
|
7101
|
+
font-weight: 600;
|
|
7102
|
+
color: var(--fg);
|
|
7103
|
+
text-align: center;
|
|
7104
|
+
flex: 1;
|
|
7105
|
+
}
|
|
7106
|
+
.ds-247420 .ds-cal-nav {
|
|
7107
|
+
display: inline-flex;
|
|
7108
|
+
align-items: center;
|
|
7109
|
+
justify-content: center;
|
|
7110
|
+
width: 28px;
|
|
7111
|
+
height: 28px;
|
|
7112
|
+
border: 0;
|
|
7113
|
+
border-radius: var(--r-1);
|
|
7114
|
+
background: transparent;
|
|
7115
|
+
color: var(--fg-3);
|
|
7116
|
+
cursor: pointer;
|
|
7117
|
+
transition: background-color var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
7118
|
+
}
|
|
7119
|
+
.ds-247420 .ds-cal-nav:hover { background: var(--bg-2); color: var(--fg); }
|
|
7120
|
+
.ds-247420 .ds-cal-nav:focus-visible { box-shadow: var(--focus-ring-inset); outline: none; }
|
|
7121
|
+
.ds-247420 .ds-cal-nav:active { transform: translateY(1px); }
|
|
7122
|
+
|
|
7123
|
+
.ds-247420 .ds-cal-weekdays {
|
|
7124
|
+
display: grid;
|
|
7125
|
+
grid-template-columns: repeat(7, 1fr);
|
|
7126
|
+
gap: var(--space-1);
|
|
7127
|
+
}
|
|
7128
|
+
.ds-247420 .ds-cal-weekday-label {
|
|
7129
|
+
font-size: var(--fs-micro);
|
|
7130
|
+
font-weight: 600;
|
|
7131
|
+
letter-spacing: var(--tr-caps);
|
|
7132
|
+
text-transform: uppercase;
|
|
7133
|
+
color: var(--fg-3);
|
|
7134
|
+
text-align: center;
|
|
7135
|
+
padding-block: var(--space-1);
|
|
7136
|
+
}
|
|
7137
|
+
|
|
7138
|
+
.ds-247420 .ds-cal-grid {
|
|
7139
|
+
display: grid;
|
|
7140
|
+
grid-template-columns: repeat(7, 1fr);
|
|
7141
|
+
gap: var(--space-1);
|
|
7142
|
+
}
|
|
7143
|
+
.ds-247420 .ds-cal-day {
|
|
7144
|
+
position: relative;
|
|
7145
|
+
display: inline-flex;
|
|
7146
|
+
align-items: center;
|
|
7147
|
+
justify-content: center;
|
|
7148
|
+
width: 32px;
|
|
7149
|
+
height: 32px;
|
|
7150
|
+
border: 0;
|
|
7151
|
+
border-radius: var(--r-1);
|
|
7152
|
+
background: transparent;
|
|
7153
|
+
color: var(--fg);
|
|
7154
|
+
font-size: var(--fs-sm);
|
|
7155
|
+
font-variant-numeric: tabular-nums;
|
|
7156
|
+
cursor: pointer;
|
|
7157
|
+
transition: background-color var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
7158
|
+
}
|
|
7159
|
+
.ds-247420 .ds-cal-day:hover { background: var(--bg-2); }
|
|
7160
|
+
.ds-247420 .ds-cal-day:focus-visible { box-shadow: var(--focus-ring-inset); outline: none; }
|
|
7161
|
+
.ds-247420 .ds-cal-day-outside { color: var(--fg-3); opacity: 0.55; }
|
|
7162
|
+
.ds-247420 .ds-cal-day-today { font-weight: 700; box-shadow: inset 0 0 0 var(--bw-hair) var(--rule-strong); }
|
|
7163
|
+
.ds-247420 .ds-cal-day-selected {
|
|
7164
|
+
background: var(--accent);
|
|
7165
|
+
color: var(--accent-fg);
|
|
7166
|
+
font-weight: 600;
|
|
7167
|
+
}
|
|
7168
|
+
.ds-247420 .ds-cal-day-selected:hover { background: var(--accent); }
|
|
7169
|
+
.ds-247420 .ds-cal-day-in-range {
|
|
7170
|
+
background: var(--accent-tint);
|
|
7171
|
+
border-radius: var(--r-0);
|
|
7172
|
+
}
|
|
7173
|
+
.ds-247420 .ds-cal-day-range-start { border-radius: var(--r-1) var(--r-0) var(--r-0) var(--r-1); }
|
|
7174
|
+
.ds-247420 .ds-cal-day-range-end { border-radius: var(--r-0) var(--r-1) var(--r-1) var(--r-0); }
|
|
7175
|
+
.ds-247420 .ds-cal-day-disabled {
|
|
7176
|
+
color: var(--fg-3);
|
|
7177
|
+
opacity: 0.35;
|
|
7178
|
+
cursor: not-allowed;
|
|
7179
|
+
pointer-events: none;
|
|
7180
|
+
}
|
|
7181
|
+
|
|
7182
|
+
@media (prefers-reduced-motion: reduce) {
|
|
7183
|
+
.ds-247420 .ds-cal-nav, .ds-247420 .ds-cal-day { transition: none; }
|
|
7184
|
+
}
|
|
7185
|
+
|
|
7186
|
+
/* -- DatePicker / DateRangePicker trigger -------------------------------- */
|
|
7187
|
+
.ds-247420 .ds-dp { display: inline-flex; position: relative; }
|
|
7188
|
+
.ds-247420 .ds-dp-trigger {
|
|
7189
|
+
display: inline-flex;
|
|
7190
|
+
align-items: center;
|
|
7191
|
+
gap: var(--space-1-5);
|
|
7192
|
+
min-height: 32px;
|
|
7193
|
+
padding: var(--space-1-5) var(--space-2-5);
|
|
7194
|
+
border: 0;
|
|
7195
|
+
border-radius: var(--r-2);
|
|
7196
|
+
background: var(--bg-2);
|
|
7197
|
+
color: var(--fg);
|
|
7198
|
+
font-family: inherit;
|
|
7199
|
+
font-size: var(--fs-sm);
|
|
7200
|
+
cursor: pointer;
|
|
7201
|
+
transition: background-color var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
7202
|
+
}
|
|
7203
|
+
.ds-247420 .ds-dp-trigger:hover { background: var(--bg-3); }
|
|
7204
|
+
.ds-247420 .ds-dp-trigger:focus-visible { box-shadow: var(--focus-ring-inset); outline: none; }
|
|
7205
|
+
.ds-247420 .ds-dp-trigger-label { white-space: nowrap; }
|
|
7206
|
+
|
|
7207
|
+
@media (prefers-reduced-motion: reduce) {
|
|
7208
|
+
.ds-247420 .ds-dp-trigger { transition: none; }
|
|
7209
|
+
}
|
|
7210
|
+
/* collab.css — LiveCursorOverlay / RemoteSelectionRings /
|
|
7211
|
+
RecentEditHighlightFlash / AgentPresenceChip / PresenceBar. Real-time
|
|
7212
|
+
multiplayer co-editing UI: remote pointers, selection rings, edit flashes,
|
|
7213
|
+
and a generalized collaborator presence chip row. `ds-collab-*` prefix,
|
|
7214
|
+
distinct from community.js's `cm-*` voice/member chips even though the
|
|
7215
|
+
presence chip visual language matches. */
|
|
7216
|
+
|
|
7217
|
+
.ds-247420 .ds-collab-cursor-overlay,
|
|
7218
|
+
.ds-247420 .ds-collab-selection-overlay,
|
|
7219
|
+
.ds-247420 .ds-collab-flash-overlay {
|
|
7220
|
+
position: absolute;
|
|
7221
|
+
inset: 0;
|
|
7222
|
+
pointer-events: none;
|
|
7223
|
+
z-index: var(--z-raised);
|
|
7224
|
+
overflow: hidden;
|
|
7225
|
+
}
|
|
7226
|
+
|
|
7227
|
+
/* ---- LiveCursorOverlay -------------------------------------------------- */
|
|
7228
|
+
.ds-247420 .ds-collab-cursor {
|
|
7229
|
+
position: absolute;
|
|
7230
|
+
display: flex;
|
|
7231
|
+
align-items: flex-start;
|
|
7232
|
+
gap: var(--space-1);
|
|
7233
|
+
transform: translate(-2px, -2px);
|
|
7234
|
+
}
|
|
7235
|
+
.ds-247420 .ds-collab-cursor svg { filter: drop-shadow(0 1px 1px color-mix(in oklab, var(--ink) 30%, transparent)); }
|
|
7236
|
+
.ds-247420 .ds-collab-cursor-label {
|
|
7237
|
+
font-size: var(--fs-pico);
|
|
7238
|
+
font-weight: 600;
|
|
7239
|
+
line-height: 1.6;
|
|
7240
|
+
padding: 0 var(--space-1);
|
|
7241
|
+
border-radius: var(--r-hair);
|
|
7242
|
+
color: var(--on-color);
|
|
7243
|
+
white-space: nowrap;
|
|
7244
|
+
transform: translateY(2px);
|
|
7245
|
+
}
|
|
7246
|
+
|
|
7247
|
+
/* ---- RemoteSelectionRings ------------------------------------------------ */
|
|
7248
|
+
.ds-247420 .ds-collab-selection-ring {
|
|
7249
|
+
position: absolute;
|
|
7250
|
+
border: var(--bw-hair) solid var(--ring-color, var(--accent));
|
|
7251
|
+
background: color-mix(in oklab, var(--ring-color, var(--accent)) 14%, transparent);
|
|
7252
|
+
border-radius: var(--r-hair);
|
|
7253
|
+
}
|
|
7254
|
+
|
|
7255
|
+
/* ---- RecentEditHighlightFlash -------------------------------------------
|
|
7256
|
+
Reduced-motion users get an instant flash with no animation (the fade-out
|
|
7257
|
+
keyframe lives only inside the no-preference query) rather than a fade. */
|
|
7258
|
+
.ds-247420 .ds-collab-flash {
|
|
7259
|
+
position: absolute;
|
|
7260
|
+
background: color-mix(in oklab, var(--flash-color, var(--accent)) 35%, transparent);
|
|
7261
|
+
border-radius: var(--r-hair);
|
|
7262
|
+
}
|
|
7263
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
7264
|
+
.ds-247420 .ds-collab-flash { animation: ds-collab-flash-fade var(--dur-reveal) var(--ease-exit) forwards; }
|
|
7265
|
+
@keyframes ds-collab-flash-fade {
|
|
7266
|
+
from { opacity: 1; }
|
|
7267
|
+
to { opacity: 0; }
|
|
7268
|
+
}
|
|
7269
|
+
}
|
|
7270
|
+
@media (prefers-reduced-motion: reduce) {
|
|
7271
|
+
.ds-247420 .ds-collab-flash { opacity: 1; }
|
|
7272
|
+
}
|
|
7273
|
+
|
|
7274
|
+
/* ---- AgentPresenceChip / PresenceBar -------------------------------------
|
|
7275
|
+
Visual language matches community.js's cm-voice-user/cm-member-item chips
|
|
7276
|
+
(avatar circle + --avatar-bg custom property + initial + name), reused
|
|
7277
|
+
here under a distinct prefix since this is a different feature. */
|
|
7278
|
+
.ds-247420 .ds-collab-bar { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }
|
|
7279
|
+
.ds-247420 .ds-collab-bar-empty { color: var(--fg-3); font-size: var(--fs-sm); padding: var(--space-2) 0; }
|
|
7280
|
+
.ds-247420 .ds-collab-chip {
|
|
7281
|
+
display: inline-flex;
|
|
7282
|
+
align-items: center;
|
|
7283
|
+
gap: var(--space-1-75);
|
|
7284
|
+
padding: var(--space-1) var(--space-2-5) var(--space-1) var(--space-1);
|
|
7285
|
+
border-radius: var(--r-pill);
|
|
7286
|
+
background: var(--bg-2);
|
|
7287
|
+
}
|
|
7288
|
+
.ds-247420 .ds-collab-chip-avatar {
|
|
7289
|
+
position: relative;
|
|
7290
|
+
width: 24px;
|
|
7291
|
+
height: 24px;
|
|
7292
|
+
border-radius: 50%;
|
|
7293
|
+
background: var(--avatar-bg, var(--bg-3));
|
|
7294
|
+
color: var(--fg-2);
|
|
7295
|
+
display: inline-flex;
|
|
7296
|
+
align-items: center;
|
|
7297
|
+
justify-content: center;
|
|
7298
|
+
font-size: var(--fs-pico);
|
|
7299
|
+
font-weight: 600;
|
|
7300
|
+
flex-shrink: 0;
|
|
7301
|
+
}
|
|
7302
|
+
.ds-247420 .ds-collab-chip-status {
|
|
7303
|
+
position: absolute;
|
|
7304
|
+
right: -1px;
|
|
7305
|
+
bottom: -1px;
|
|
7306
|
+
width: 8px;
|
|
7307
|
+
height: 8px;
|
|
7308
|
+
border-radius: 50%;
|
|
7309
|
+
border: var(--bw-hair) solid var(--bg-2);
|
|
7310
|
+
background: var(--fg-3);
|
|
7311
|
+
}
|
|
7312
|
+
.ds-247420 .ds-collab-chip-status-active { background: var(--green-2); }
|
|
7313
|
+
.ds-247420 .ds-collab-chip-status-idle { background: var(--sun); }
|
|
7314
|
+
.ds-247420 .ds-collab-chip-status-offline { background: var(--fg-3); }
|
|
7315
|
+
.ds-247420 .ds-collab-chip-name { font-size: var(--fs-tiny); color: var(--fg-2); white-space: nowrap; }
|
|
6895
7316
|
|
|
6896
7317
|
/* community.css */
|
|
6897
7318
|
/* ============================================================
|
|
@@ -9321,6 +9742,47 @@
|
|
|
9321
9742
|
}
|
|
9322
9743
|
.ds-247420 .ds-context-group .row + .row { margin-top: var(--space-hair); }
|
|
9323
9744
|
|
|
9745
|
+
/* ----------------------------------------------------------------------------
|
|
9746
|
+
ContextMeter / ContextTreemap / ContextXRayPanel — token/cost breakdown
|
|
9747
|
+
surfaces added alongside ContextPane. Tone classes share one small
|
|
9748
|
+
vocabulary (system/user/assistant/other) across all three components so a
|
|
9749
|
+
segment's color pairs up wherever it appears.
|
|
9750
|
+
---------------------------------------------------------------------------- */
|
|
9751
|
+
.ds-247420 .ds-context-meter { display: flex; flex-direction: column; gap: var(--space-1); }
|
|
9752
|
+
.ds-247420 .ds-context-meter-track {
|
|
9753
|
+
display: flex; width: 100%; height: 8px; border-radius: var(--r-hair);
|
|
9754
|
+
overflow: hidden; background: var(--bg-3);
|
|
9755
|
+
}
|
|
9756
|
+
.ds-247420 .ds-context-meter-seg { display: block; height: 100%; }
|
|
9757
|
+
.ds-247420 .ds-context-meter-seg-system { background: var(--sky); }
|
|
9758
|
+
.ds-247420 .ds-context-meter-seg-user { background: var(--green-2); }
|
|
9759
|
+
.ds-247420 .ds-context-meter-seg-assistant { background: var(--purple-2); }
|
|
9760
|
+
.ds-247420 .ds-context-meter-seg-other { background: var(--fg-3); }
|
|
9761
|
+
.ds-247420 .ds-context-meter-foot {
|
|
9762
|
+
display: flex; justify-content: space-between; font-size: var(--fs-tiny); color: var(--fg-3);
|
|
9763
|
+
}
|
|
9764
|
+
|
|
9765
|
+
.ds-247420 .ds-context-treemap { display: block; width: 100%; height: auto; border-radius: var(--r-1); }
|
|
9766
|
+
.ds-247420 .ds-context-treemap-rect { stroke: var(--bg); stroke-width: 1; }
|
|
9767
|
+
.ds-247420 .ds-context-treemap-rect-system { fill: var(--sky); }
|
|
9768
|
+
.ds-247420 .ds-context-treemap-rect-user { fill: var(--green-2); }
|
|
9769
|
+
.ds-247420 .ds-context-treemap-rect-assistant { fill: var(--purple-2); }
|
|
9770
|
+
.ds-247420 .ds-context-treemap-rect-other { fill: var(--fg-3); }
|
|
9771
|
+
.ds-247420 .ds-context-treemap-label { font-size: var(--fs-pico); fill: var(--on-accent); font-family: var(--ff-body); }
|
|
9772
|
+
.ds-247420 .ds-context-treemap-empty { padding: var(--space-3); color: var(--fg-3); font-size: var(--fs-sm); }
|
|
9773
|
+
|
|
9774
|
+
.ds-247420 .ds-context-xray-head { display: flex; align-items: center; gap: var(--space-1-75); width: 100%; }
|
|
9775
|
+
.ds-247420 .ds-context-xray-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
|
|
9776
|
+
.ds-247420 .ds-context-xray-dot-system { background: var(--sky); }
|
|
9777
|
+
.ds-247420 .ds-context-xray-dot-user { background: var(--green-2); }
|
|
9778
|
+
.ds-247420 .ds-context-xray-dot-assistant { background: var(--purple-2); }
|
|
9779
|
+
.ds-247420 .ds-context-xray-dot-other { background: var(--fg-3); }
|
|
9780
|
+
.ds-247420 .ds-context-xray-label { flex: 1; }
|
|
9781
|
+
.ds-247420 .ds-context-xray-value { color: var(--fg-3); font-family: var(--ff-mono); font-size: var(--fs-xs); }
|
|
9782
|
+
.ds-247420 .ds-context-xray-body { display: flex; flex-direction: column; gap: var(--space-1); }
|
|
9783
|
+
.ds-247420 .ds-context-xray-row { display: flex; justify-content: space-between; font-size: var(--fs-tiny); color: var(--fg-2); }
|
|
9784
|
+
.ds-247420 .ds-context-xray-empty { padding: var(--space-3); color: var(--fg-3); font-size: var(--fs-sm); }
|
|
9785
|
+
|
|
9324
9786
|
/* ============================================================================
|
|
9325
9787
|
Cohesion sweep (gui-cohesion.js): one-product polish across surfaces.
|
|
9326
9788
|
============================================================================ */
|