anentrypoint-design 0.0.219 → 0.0.221
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 +162 -59
- package/colors_and_type.css +78 -33
- package/dist/247420.css +240 -92
- package/dist/247420.js +16 -14
- package/package.json +1 -1
- package/src/components/content.js +20 -3
- package/src/components.js +1 -1
- package/src/kits/os/theme.css +6 -1
- package/src/motion.js +4 -2
package/dist/247420.css
CHANGED
|
@@ -2,39 +2,58 @@
|
|
|
2
2
|
/* colors_and_type.css */
|
|
3
3
|
/* ============================================================
|
|
4
4
|
247420 design system — colors + type
|
|
5
|
-
|
|
5
|
+
"Acid Editorial": confident display type, ink-on-paper with one
|
|
6
|
+
electric lead, print texture over glow. Scope-prefixed at build time.
|
|
6
7
|
Source-of-truth tokens. Component sheet lives in app-shell.css.
|
|
7
8
|
============================================================ */
|
|
8
9
|
|
|
9
|
-
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:ital,wght@0,400;0,500;0,600;0,700;1,400;1,700&display=swap');
|
|
10
|
+
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:ital,wght@0,400;0,500;0,600;0,700;1,400;1,700&display=swap');
|
|
11
|
+
|
|
12
|
+
/* Metric-matched fallback for the display face. While Space Grotesk loads,
|
|
13
|
+
text falls back to Arial with size-adjust tuned to its cap-height so the
|
|
14
|
+
oversized hero does not reflow on swap. Referenced first in --ff-display via
|
|
15
|
+
the 'Space Grotesk' family; this only kicks in for the fallback glyphs. */
|
|
16
|
+
@font-face {
|
|
17
|
+
font-family: 'Space Grotesk Fallback';
|
|
18
|
+
src: local('Arial');
|
|
19
|
+
size-adjust: 96%;
|
|
20
|
+
ascent-override: 95%;
|
|
21
|
+
descent-override: 24%;
|
|
22
|
+
}
|
|
10
23
|
|
|
11
24
|
.ds-247420 {
|
|
12
25
|
/* Tree view indentation tokens */
|
|
13
26
|
--tree-indent: 12px;
|
|
14
27
|
--tree-base-indent: 6px;
|
|
15
28
|
|
|
16
|
-
/* Paper / Ink —
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
--paper
|
|
20
|
-
--
|
|
21
|
-
--
|
|
22
|
-
--ink
|
|
29
|
+
/* Paper / Ink — warm newsprint paper against near-black ink. The warmer
|
|
30
|
+
paper + deeper ink widen the tonal range so the electric lead reads as
|
|
31
|
+
printed, not glowing. */
|
|
32
|
+
--paper: #F4F1E9;
|
|
33
|
+
--paper-2: #EAE6DA;
|
|
34
|
+
--paper-3: #DCD7C7;
|
|
35
|
+
--ink: #0E0E12;
|
|
36
|
+
--ink-2: #1F1F26;
|
|
37
|
+
--ink-3: #52525A; /* WCAG AAA on --paper (~7.1:1) */
|
|
23
38
|
--ink-3-dark: #464650; /* dark theme bg-3 (tier-3 surface) */
|
|
24
39
|
--paper-3-dark: #B4B4BC; /* dark theme fg-3 (tier-3 text) */
|
|
25
40
|
|
|
26
|
-
/* Lore palette
|
|
41
|
+
/* Lore palette. --acid is the electric lead — a printed-ink lime that sits
|
|
42
|
+
forward of the heritage green; green/purple/mascot demote to print-ink
|
|
43
|
+
category roles. */
|
|
44
|
+
--acid: #B6FF1B;
|
|
45
|
+
--acid-deep: #4E7A00; /* AA text tone of the lead on paper */
|
|
27
46
|
--green: #247420;
|
|
28
47
|
--green-2: #3A9A34;
|
|
29
48
|
--green-deep: #133F10;
|
|
30
|
-
--green-tint: #
|
|
31
|
-
--purple: #
|
|
49
|
+
--green-tint: #D7E4C2;
|
|
50
|
+
--purple: #3A0140;
|
|
32
51
|
--purple-2: #7F18A4;
|
|
33
|
-
--purple-deep: #
|
|
34
|
-
--purple-tint: #
|
|
35
|
-
--mascot: #
|
|
52
|
+
--purple-deep: #220026;
|
|
53
|
+
--purple-tint: #E2CFE4;
|
|
54
|
+
--mascot: #FF2E84;
|
|
36
55
|
--mascot-2: #FF3CA7;
|
|
37
|
-
--mascot-tint: #
|
|
56
|
+
--mascot-tint: #F7CEDD;
|
|
38
57
|
--mascot-deep: #B81F63;
|
|
39
58
|
|
|
40
59
|
/* Signals */
|
|
@@ -66,10 +85,14 @@
|
|
|
66
85
|
--fg-2: var(--ink-2);
|
|
67
86
|
--fg-3: var(--ink-3);
|
|
68
87
|
|
|
69
|
-
--accent
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
--accent
|
|
88
|
+
/* The electric lead. --accent is the FILL (sits behind ink text); --accent-ink
|
|
89
|
+
is the readable TEXT tone for links/eyebrows/accents on paper (the lime
|
|
90
|
+
itself is too light for text). --accent-fg is what sits ON an --accent fill. */
|
|
91
|
+
--accent: var(--acid);
|
|
92
|
+
--accent-fg: var(--ink);
|
|
93
|
+
--accent-ink: var(--acid-deep);
|
|
94
|
+
--accent-bright: var(--acid); /* base value so var(--accent-bright) never falls back empty; ink + [data-accent] retune it */
|
|
95
|
+
--accent-tint: color-mix(in oklab, var(--accent) 30%, var(--bg));
|
|
73
96
|
|
|
74
97
|
/* On-color foregrounds — text/icons that sit ON a saturated fill (accent,
|
|
75
98
|
danger, category chips). Theme-driven so white-on-color never hard-codes
|
|
@@ -107,10 +130,12 @@
|
|
|
107
130
|
--panel-accent-2: var(--accent-bright, var(--accent));
|
|
108
131
|
--panel-shadow: 0 1px 0 color-mix(in oklab, var(--fg) 6%, transparent), 0 4px 14px color-mix(in oklab, var(--fg) 8%, transparent);
|
|
109
132
|
|
|
110
|
-
/* Type —
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
133
|
+
/* Type — Space Grotesk carries display/headings (editorial grotesk with real
|
|
134
|
+
character), Inter carries body and UI, JetBrains carries code. The narrow
|
|
135
|
+
alias tracks the display face. size-adjust on the fallback keeps the
|
|
136
|
+
oversized hero from shifting while Space Grotesk loads. */
|
|
137
|
+
--ff-display: 'Space Grotesk', 'Space Grotesk Fallback', 'Inter', system-ui, sans-serif;
|
|
138
|
+
--ff-narrow: 'Space Grotesk', 'Space Grotesk Fallback', 'Inter', system-ui, sans-serif;
|
|
114
139
|
--ff-body: 'Inter', system-ui, sans-serif;
|
|
115
140
|
--ff-mono: 'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace;
|
|
116
141
|
|
|
@@ -183,7 +208,23 @@
|
|
|
183
208
|
--dur-snap: 80ms;
|
|
184
209
|
--dur-base: 160ms;
|
|
185
210
|
--dur-slow: 280ms;
|
|
211
|
+
--dur-reveal: 560ms;
|
|
186
212
|
--ease: cubic-bezier(0.2, 0, 0, 1);
|
|
213
|
+
/* Physical tier — a slight overshoot that reads as a printed stamp landing,
|
|
214
|
+
used by presses and signature reveals (not by routine UI fades). */
|
|
215
|
+
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
216
|
+
--ease-exit: cubic-bezier(0.4, 0, 1, 1);
|
|
217
|
+
|
|
218
|
+
/* Print texture — the signature surface treatment. --grain is a tiled
|
|
219
|
+
fractal-noise data-URI; --halftone is a dot screen. Both are opt-in via
|
|
220
|
+
.ds-grain / .ds-halftone utilities and tuned faint so type stays crisp. */
|
|
221
|
+
--grain-opacity: 0.05;
|
|
222
|
+
--grain-blend: multiply;
|
|
223
|
+
--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");
|
|
224
|
+
--halftone-size: 6px;
|
|
225
|
+
/* Offset-ink registration — the small print-mark offset used on editorial
|
|
226
|
+
edges (panel spine, expo numbering). A literal length, not a color. */
|
|
227
|
+
--ink-offset: 3px;
|
|
187
228
|
|
|
188
229
|
--z-header: 100;
|
|
189
230
|
--z-overlay: 1000;
|
|
@@ -267,9 +308,10 @@
|
|
|
267
308
|
--panel-text: var(--fg);
|
|
268
309
|
--panel-text-2: var(--fg-2);
|
|
269
310
|
--panel-text-3: var(--fg-3);
|
|
270
|
-
--accent: var(--
|
|
311
|
+
--accent: var(--acid);
|
|
271
312
|
--accent-fg: var(--ink);
|
|
272
|
-
--accent-
|
|
313
|
+
--accent-ink: var(--acid); /* on ink, the lime itself reads as bright text */
|
|
314
|
+
--accent-bright: var(--acid);
|
|
273
315
|
--danger: oklch(0.68 0.19 25);
|
|
274
316
|
--flame: #FF5A1F;
|
|
275
317
|
--amber: #D9A93A;
|
|
@@ -307,9 +349,10 @@
|
|
|
307
349
|
--panel-text: var(--fg);
|
|
308
350
|
--panel-text-2: var(--fg-2);
|
|
309
351
|
--panel-text-3: var(--fg-3);
|
|
310
|
-
--accent: var(--
|
|
352
|
+
--accent: var(--acid);
|
|
311
353
|
--accent-fg: var(--ink);
|
|
312
|
-
--accent-
|
|
354
|
+
--accent-ink: var(--acid);
|
|
355
|
+
--accent-bright: var(--acid);
|
|
313
356
|
--danger: oklch(0.68 0.19 25);
|
|
314
357
|
--flame: #FF5A1F;
|
|
315
358
|
--amber: #D9A93A;
|
|
@@ -339,6 +382,7 @@
|
|
|
339
382
|
--panel-bg-2: inherit;
|
|
340
383
|
--accent: inherit;
|
|
341
384
|
--accent-fg: inherit;
|
|
385
|
+
--accent-ink: inherit;
|
|
342
386
|
--panel-1: inherit;
|
|
343
387
|
--panel-2: inherit;
|
|
344
388
|
--panel-3: inherit;
|
|
@@ -378,7 +422,7 @@
|
|
|
378
422
|
color-scheme: light;
|
|
379
423
|
--bg: var(--paper); --bg-2: var(--paper-2); --bg-3: var(--paper-3);
|
|
380
424
|
--fg: var(--ink); --fg-2: var(--ink-2); --fg-3: var(--ink-3);
|
|
381
|
-
--accent: var(--
|
|
425
|
+
--accent: var(--acid); --accent-fg: var(--ink); --accent-ink: var(--acid-deep);
|
|
382
426
|
/* A paper island under a dark ancestor must not inherit the dark signal pair. */
|
|
383
427
|
--flame: #C53E00; --amber: #8A6512; --warn: #E0241A; --sky: #3A6EFF;
|
|
384
428
|
}
|
|
@@ -394,16 +438,17 @@
|
|
|
394
438
|
--paper-3: #E3DAC7;
|
|
395
439
|
--bg: var(--paper); --bg-2: var(--paper-2); --bg-3: var(--paper-3);
|
|
396
440
|
--fg: var(--ink); --fg-2: var(--ink-2); --fg-3: var(--ink-3);
|
|
397
|
-
--accent: var(--green); --accent-fg: var(--paper);
|
|
441
|
+
--accent: var(--green); --accent-fg: var(--paper); --accent-ink: var(--green);
|
|
398
442
|
}
|
|
399
443
|
|
|
400
444
|
.ds-247420[data-density="compact"] { --density: 0.75; }
|
|
401
445
|
.ds-247420[data-density="comfortable"] { --density: 1; }
|
|
402
446
|
.ds-247420[data-density="spacious"] { --density: 1.35; }
|
|
403
447
|
|
|
404
|
-
.ds-247420[data-accent="
|
|
405
|
-
.ds-247420[data-accent="
|
|
406
|
-
.ds-247420[data-accent="
|
|
448
|
+
.ds-247420[data-accent="acid"] { --accent: var(--acid); --accent-bright: var(--acid); --accent-fg: var(--ink); --accent-ink: var(--acid-deep); --panel-accent: var(--acid); }
|
|
449
|
+
.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); }
|
|
450
|
+
.ds-247420[data-accent="purple"] { --accent: var(--purple); --accent-bright: #C277FF; --accent-fg: var(--paper); --accent-ink: var(--purple-2); --panel-accent: var(--purple); }
|
|
451
|
+
.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); }
|
|
407
452
|
|
|
408
453
|
/* Type-scale modifier — opt-in body/lg/xl bump for surfaces that want denser
|
|
409
454
|
or larger reading sizes without a custom override. */
|
|
@@ -454,8 +499,9 @@
|
|
|
454
499
|
/* app-shell.css */
|
|
455
500
|
/* ============================================================
|
|
456
501
|
247420 design system — component sheet
|
|
457
|
-
|
|
458
|
-
|
|
502
|
+
"Acid Editorial": Space Grotesk display + Inter body + JetBrains code.
|
|
503
|
+
Confident hierarchy, asymmetric grid tension, print texture over glow,
|
|
504
|
+
one electric lead accent. Indicator rails over hairlines.
|
|
459
505
|
============================================================ */
|
|
460
506
|
|
|
461
507
|
/* ============================================================
|
|
@@ -508,10 +554,10 @@
|
|
|
508
554
|
/* ============================================================
|
|
509
555
|
Typography
|
|
510
556
|
============================================================ */
|
|
511
|
-
.ds-247420 h1, .ds-247420 .t-h1 { font-family: var(--ff-
|
|
512
|
-
.ds-247420 h2, .ds-247420 .t-h2 { font-family: var(--ff-
|
|
513
|
-
.ds-247420 h3, .ds-247420 .t-h3 { font-family: var(--ff-
|
|
514
|
-
.ds-247420 h4, .ds-247420 .t-h4 { font-family: var(--ff-
|
|
557
|
+
.ds-247420 h1, .ds-247420 .t-h1 { font-family: var(--ff-display); font-size: var(--fs-h1); line-height: var(--lh-snug); letter-spacing: var(--tr-tight); font-weight: 600; margin: 0; }
|
|
558
|
+
.ds-247420 h2, .ds-247420 .t-h2 { font-family: var(--ff-display); font-size: var(--fs-h2); line-height: var(--lh-snug); letter-spacing: var(--tr-tight); font-weight: 600; margin: 0; }
|
|
559
|
+
.ds-247420 h3, .ds-247420 .t-h3 { font-family: var(--ff-display); font-size: var(--fs-h3); line-height: var(--lh-snug); letter-spacing: -0.01em; font-weight: 600; margin: 0; }
|
|
560
|
+
.ds-247420 h4, .ds-247420 .t-h4 { font-family: var(--ff-display); font-size: var(--fs-h4); line-height: var(--lh-snug); font-weight: 600; margin: 0; }
|
|
515
561
|
|
|
516
562
|
/* App/chrome typescale opt-in: compact heading ceiling for application UIs. */
|
|
517
563
|
.ds-247420[data-typescale="app"] h1, .ds-247420[data-typescale="app"] .t-h1 { font-size: var(--fs-h1-app); line-height: 1.15; }
|
|
@@ -519,10 +565,10 @@
|
|
|
519
565
|
.ds-247420[data-typescale="app"] h3, .ds-247420[data-typescale="app"] .t-h3 { font-size: var(--fs-h3-app); }
|
|
520
566
|
.ds-247420[data-typescale="app"] h4, .ds-247420[data-typescale="app"] .t-h4 { font-size: var(--fs-h4-app); }
|
|
521
567
|
|
|
522
|
-
.ds-247420 .t-hero { font-family: var(--ff-
|
|
523
|
-
.ds-247420 .t-mega { font-family: var(--ff-
|
|
568
|
+
.ds-247420 .t-hero { font-family: var(--ff-display); font-size: var(--fs-hero); line-height: var(--lh-tight); letter-spacing: var(--tr-tighter); font-weight: 700; margin: 0; }
|
|
569
|
+
.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; }
|
|
524
570
|
|
|
525
|
-
.ds-247420 .t-display { font-family: var(--ff-
|
|
571
|
+
.ds-247420 .t-display { font-family: var(--ff-display); font-weight: 600; letter-spacing: var(--tr-tight); }
|
|
526
572
|
.ds-247420 .t-mono { font-family: var(--ff-mono); }
|
|
527
573
|
.ds-247420 .t-body { font-family: var(--ff-body); }
|
|
528
574
|
|
|
@@ -537,17 +583,18 @@
|
|
|
537
583
|
}
|
|
538
584
|
|
|
539
585
|
.ds-247420 .eyebrow {
|
|
540
|
-
font-family: var(--ff-
|
|
586
|
+
font-family: var(--ff-mono);
|
|
541
587
|
font-size: var(--fs-tiny);
|
|
542
588
|
font-weight: 600;
|
|
543
|
-
letter-spacing: var(--tr-
|
|
589
|
+
letter-spacing: var(--tr-label);
|
|
544
590
|
text-transform: uppercase;
|
|
545
|
-
color: var(--accent);
|
|
546
|
-
display: inline-flex; align-items: center; gap:
|
|
591
|
+
color: var(--accent-ink);
|
|
592
|
+
display: inline-flex; align-items: center; gap: 12px;
|
|
547
593
|
}
|
|
594
|
+
/* Editorial kicker mark — a short solid ink rule, the print-byline tell. */
|
|
548
595
|
.ds-247420 .eyebrow::before {
|
|
549
596
|
content: '';
|
|
550
|
-
width:
|
|
597
|
+
width: 28px; height: 3px; background: currentColor;
|
|
551
598
|
}
|
|
552
599
|
|
|
553
600
|
.ds-247420 .ds-prose {
|
|
@@ -567,7 +614,7 @@
|
|
|
567
614
|
/* Links */
|
|
568
615
|
.ds-247420 a { color: inherit; text-decoration: none; }
|
|
569
616
|
.ds-247420 a.ds-link-accent, .ds-247420 .ds-prose a {
|
|
570
|
-
color: var(--accent);
|
|
617
|
+
color: var(--accent-ink);
|
|
571
618
|
text-decoration: underline;
|
|
572
619
|
text-underline-offset: 4px;
|
|
573
620
|
text-decoration-thickness: 2px;
|
|
@@ -707,18 +754,19 @@
|
|
|
707
754
|
as misaligned. Same height as the inactive links — only the tint + underline
|
|
708
755
|
change. */
|
|
709
756
|
.ds-247420 .app-topbar nav a.active {
|
|
710
|
-
color: var(--accent);
|
|
757
|
+
color: var(--accent-ink);
|
|
711
758
|
background: color-mix(in oklab, var(--accent) 16%, transparent);
|
|
712
759
|
box-shadow: inset 0 -2px 0 0 var(--accent);
|
|
713
760
|
font-weight: 600;
|
|
714
761
|
}
|
|
715
762
|
|
|
716
763
|
.ds-247420 .brand {
|
|
717
|
-
font-family: var(--ff-
|
|
718
|
-
font-weight: 700; font-size: var(--fs-
|
|
719
|
-
letter-spacing: -
|
|
764
|
+
font-family: var(--ff-display);
|
|
765
|
+
font-weight: 700; font-size: var(--fs-lg);
|
|
766
|
+
letter-spacing: var(--tr-tight);
|
|
720
767
|
}
|
|
721
|
-
|
|
768
|
+
/* The wordmark separator printed in the electric lead — the brand tell. */
|
|
769
|
+
.ds-247420 .brand .slash { color: var(--accent-ink); font-weight: 700; margin: 0 3px; }
|
|
722
770
|
|
|
723
771
|
.ds-247420 .app-search {
|
|
724
772
|
display: inline-flex; align-items: center; gap: 10px;
|
|
@@ -807,7 +855,7 @@
|
|
|
807
855
|
failure mode any long-scroll page (a marketing/landing route) hits. Grow
|
|
808
856
|
children (.chat/.grow/etc.) re-assert flex:1 1 auto below via higher
|
|
809
857
|
specificity, so a single full-height pane still fills the region. */
|
|
810
|
-
.ds-247420 .app-main > * { min-height: 0; flex
|
|
858
|
+
.ds-247420 .app-main > * { min-height: 0; flex: none; }
|
|
811
859
|
/* The main region scrolls its own overflow at every breakpoint (previously
|
|
812
860
|
only ≥901px), so a fixed-height .app never clips route content and inner
|
|
813
861
|
panels don't fight the page scroll. */
|
|
@@ -847,7 +895,7 @@
|
|
|
847
895
|
border-top: 1px solid var(--rule);
|
|
848
896
|
}
|
|
849
897
|
.ds-247420 .app-status .item { color: inherit; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
|
|
850
|
-
.ds-247420 .app-status .item:first-of-type { color: var(--accent); }
|
|
898
|
+
.ds-247420 .app-status .item:first-of-type { color: var(--accent-ink); }
|
|
851
899
|
.ds-247420 .app-status .spread { flex: 1; }
|
|
852
900
|
/* The status bar NEVER wraps: at narrow widths the trailing items (hints,
|
|
853
901
|
agent target) drop in priority order instead of breaking mid-word onto a
|
|
@@ -870,15 +918,20 @@
|
|
|
870
918
|
/* Rounded-rect app chrome, not a marketing-page stadium CTA. */
|
|
871
919
|
border-radius: var(--r-1);
|
|
872
920
|
border: 0;
|
|
873
|
-
transition: transform var(--dur-
|
|
921
|
+
transition: transform var(--dur-base) var(--ease-spring), background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
874
922
|
}
|
|
875
923
|
.ds-247420 .btn { background: var(--bg-2); color: var(--fg); }
|
|
876
924
|
.ds-247420 .btn:hover { background: var(--bg-3); color: var(--fg); }
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
.ds-247420 .btn-
|
|
880
|
-
|
|
881
|
-
|
|
925
|
+
/* Primary CTA — the electric lead as a solid editorial block; hover inverts to
|
|
926
|
+
an ink block with the lead as text, a confident two-tone flip. */
|
|
927
|
+
.ds-247420 .btn-primary {
|
|
928
|
+
background: var(--accent); color: var(--accent-fg);
|
|
929
|
+
font-weight: 700; letter-spacing: var(--tr-caps);
|
|
930
|
+
}
|
|
931
|
+
.ds-247420 .btn-primary:hover { background: var(--fg); color: var(--accent-ink); }
|
|
932
|
+
.ds-247420 .btn-ghost { background: transparent; color: var(--fg); box-shadow: inset 0 0 0 2px var(--fg); }
|
|
933
|
+
.ds-247420 .btn-ghost:hover { background: var(--fg); color: var(--bg); }
|
|
934
|
+
.ds-247420 .btn:active, .ds-247420 .btn-primary:active, .ds-247420 .btn-ghost:active { transform: translateY(2px); }
|
|
882
935
|
.ds-247420 .btn:focus-visible, .ds-247420 .btn-primary:focus-visible, .ds-247420 .btn-ghost:focus-visible {
|
|
883
936
|
outline: 2px solid var(--accent);
|
|
884
937
|
outline-offset: 2px;
|
|
@@ -974,6 +1027,17 @@
|
|
|
974
1027
|
padding: var(--space-3);
|
|
975
1028
|
position: relative;
|
|
976
1029
|
}
|
|
1030
|
+
/* Editorial accent spine — an opt-in printed-ink rule down the left edge that
|
|
1031
|
+
reads as a magazine pull-quote bar, not a glow card. */
|
|
1032
|
+
.ds-247420 .panel.panel-spine {
|
|
1033
|
+
border-radius: 0 var(--r-2) var(--r-2) 0;
|
|
1034
|
+
padding-left: calc(var(--space-3) + var(--bw-chunk));
|
|
1035
|
+
}
|
|
1036
|
+
.ds-247420 .panel.panel-spine::before {
|
|
1037
|
+
content: ''; position: absolute; left: 0; top: 0; bottom: 0;
|
|
1038
|
+
width: var(--bw-chunk); background: var(--accent);
|
|
1039
|
+
border-radius: var(--bw-chunk) 0 0 var(--bw-chunk);
|
|
1040
|
+
}
|
|
977
1041
|
.ds-247420 .panel.panel-inline { background: var(--bg-2); padding: var(--space-3) var(--space-3); }
|
|
978
1042
|
.ds-247420 .panel.panel-wide { background: transparent; }
|
|
979
1043
|
.ds-247420 .panel-head {
|
|
@@ -1048,9 +1112,13 @@
|
|
|
1048
1112
|
row should not signal an affordance it does not have. */
|
|
1049
1113
|
.ds-247420 .row[role="button"]:hover, .ds-247420 a.row:hover { background: var(--bg-2); }
|
|
1050
1114
|
.ds-247420 .row[role="button"]:hover::before, .ds-247420 a.row:hover::before { height: 56%; opacity: 1; }
|
|
1115
|
+
/* Editorial hover-reveal — the row's meta (cta) slides toward the lead accent
|
|
1116
|
+
and nudges right, the printed-index "open ->" affordance. */
|
|
1117
|
+
.ds-247420 .row .meta { transition: color var(--dur-base) var(--ease), transform var(--dur-base) var(--ease-spring); }
|
|
1118
|
+
.ds-247420 a.row:hover .meta, .ds-247420 .row[role="button"]:hover .meta { color: var(--accent-ink); transform: translateX(3px); }
|
|
1051
1119
|
.ds-247420 .row.active { background: color-mix(in oklab, var(--accent) 10%, var(--bg-2)); }
|
|
1052
1120
|
.ds-247420 .row.active::before { height: 64%; opacity: 1; background: var(--accent); }
|
|
1053
|
-
.ds-247420 .row.active .title { color: var(--accent); }
|
|
1121
|
+
.ds-247420 .row.active .title { color: var(--accent-ink); }
|
|
1054
1122
|
.ds-247420 .row.row-state-disabled { opacity: 0.5; pointer-events: none; }
|
|
1055
1123
|
.ds-247420 .row.row-state-error { background: color-mix(in oklab, var(--flame) 10%, var(--bg-2)); }
|
|
1056
1124
|
.ds-247420 .row.row-state-error::before { height: 64%; opacity: 1; background: var(--flame); }
|
|
@@ -1092,24 +1160,43 @@
|
|
|
1092
1160
|
/* ============================================================
|
|
1093
1161
|
Hero
|
|
1094
1162
|
============================================================ */
|
|
1163
|
+
/* Signature hero — asymmetric editorial header. Title spans wide; the body +
|
|
1164
|
+
actions sit offset in a narrower right column on desktop, stacked on mobile.
|
|
1165
|
+
No centered stack. */
|
|
1095
1166
|
.ds-247420 .ds-hero {
|
|
1096
1167
|
padding: var(--space-9) 0 var(--space-8);
|
|
1097
|
-
display: grid; gap: var(--space-5);
|
|
1168
|
+
display: grid; gap: var(--space-5) var(--space-6);
|
|
1169
|
+
grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
|
|
1170
|
+
grid-template-areas: 'title title' 'body actions';
|
|
1171
|
+
align-items: end;
|
|
1098
1172
|
max-width: var(--measure-wide);
|
|
1099
1173
|
}
|
|
1174
|
+
.ds-247420 .ds-hero-head { grid-area: title; display: grid; gap: var(--space-3); }
|
|
1175
|
+
.ds-247420 .ds-hero-body { grid-area: body; }
|
|
1176
|
+
.ds-247420 .ds-hero-actions { grid-area: actions; }
|
|
1177
|
+
.ds-247420 .ds-hero-badge { grid-area: actions; }
|
|
1100
1178
|
.ds-247420 .ds-hero-title {
|
|
1101
|
-
font-family: var(--ff-
|
|
1102
|
-
font-size: clamp(
|
|
1103
|
-
line-height:
|
|
1104
|
-
margin: 0; max-width:
|
|
1179
|
+
font-family: var(--ff-display); font-weight: 700;
|
|
1180
|
+
font-size: clamp(40px, 9cqi, 116px);
|
|
1181
|
+
line-height: 0.96; letter-spacing: var(--tr-tighter);
|
|
1182
|
+
margin: 0; max-width: 16ch; text-wrap: balance;
|
|
1105
1183
|
}
|
|
1106
1184
|
.ds-247420 .ds-hero-body {
|
|
1107
1185
|
font-family: var(--ff-body); font-size: var(--fs-xl);
|
|
1108
|
-
line-height: 1.45; margin: 0; max-width:
|
|
1186
|
+
line-height: 1.45; margin: 0; max-width: 46ch;
|
|
1109
1187
|
color: var(--fg-2);
|
|
1110
1188
|
}
|
|
1111
|
-
|
|
1112
|
-
.ds-247420 .ds-hero-
|
|
1189
|
+
/* The lead phrase in the title — printed in the electric lead, not glowing. */
|
|
1190
|
+
.ds-247420 .ds-hero-accent { color: var(--accent-ink); font-weight: 700; }
|
|
1191
|
+
.ds-247420 .ds-hero-actions { display: flex; gap: var(--space-2, 10px); flex-wrap: wrap; align-self: end; }
|
|
1192
|
+
@media (max-width: 900px) {
|
|
1193
|
+
.ds-247420 .ds-hero {
|
|
1194
|
+
grid-template-columns: minmax(0, 1fr);
|
|
1195
|
+
grid-template-areas: 'title' 'body' 'actions';
|
|
1196
|
+
align-items: start;
|
|
1197
|
+
padding: var(--space-7) 0 var(--space-6);
|
|
1198
|
+
}
|
|
1199
|
+
}
|
|
1113
1200
|
.ds-247420 .ds-chat-title { margin: 0; font-size: inherit; }
|
|
1114
1201
|
|
|
1115
1202
|
/* ============================================================
|
|
@@ -1129,6 +1216,59 @@
|
|
|
1129
1216
|
.ds-247420 .ds-section { margin: var(--space-4) 0; }
|
|
1130
1217
|
}
|
|
1131
1218
|
|
|
1219
|
+
/* ============================================================
|
|
1220
|
+
Print texture — the signature surface treatment. Opt-in overlay that
|
|
1221
|
+
reads as risograph/newsprint grain, layered above the surface fill but
|
|
1222
|
+
below content. Faint by default so type stays crisp; reduced-data and
|
|
1223
|
+
reduced-motion are unaffected (texture is static).
|
|
1224
|
+
============================================================ */
|
|
1225
|
+
.ds-247420 .ds-grain { position: relative; isolation: isolate; }
|
|
1226
|
+
.ds-247420 .ds-grain::after {
|
|
1227
|
+
content: ''; position: absolute; inset: 0; z-index: -1;
|
|
1228
|
+
pointer-events: none;
|
|
1229
|
+
background-image: var(--grain);
|
|
1230
|
+
background-size: 160px 160px;
|
|
1231
|
+
opacity: var(--grain-opacity);
|
|
1232
|
+
mix-blend-mode: var(--grain-blend);
|
|
1233
|
+
}
|
|
1234
|
+
/* Halftone dot screen — a heavier print tell for accent panels/hero. */
|
|
1235
|
+
.ds-247420 .ds-halftone { position: relative; isolation: isolate; }
|
|
1236
|
+
.ds-247420 .ds-halftone::after {
|
|
1237
|
+
content: ''; position: absolute; inset: 0; z-index: -1;
|
|
1238
|
+
pointer-events: none;
|
|
1239
|
+
background-image: radial-gradient(currentColor 1px, transparent 1.2px);
|
|
1240
|
+
background-size: var(--halftone-size) var(--halftone-size);
|
|
1241
|
+
opacity: 0.12;
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1244
|
+
/* ============================================================
|
|
1245
|
+
Marquee / ticker — brand kinetic device ("always open 24/7"). The track
|
|
1246
|
+
holds two identical runs so the loop is seamless; reduced-motion freezes it
|
|
1247
|
+
to a single static run. Editorial, not a decorative flourish.
|
|
1248
|
+
============================================================ */
|
|
1249
|
+
.ds-247420 .ds-marquee {
|
|
1250
|
+
overflow: hidden; width: 100%;
|
|
1251
|
+
border-block: var(--bw-rule) solid var(--fg);
|
|
1252
|
+
padding: var(--space-2) 0;
|
|
1253
|
+
font-family: var(--ff-display); font-weight: 600;
|
|
1254
|
+
text-transform: uppercase; letter-spacing: var(--tr-caps);
|
|
1255
|
+
}
|
|
1256
|
+
.ds-247420 .ds-marquee-track {
|
|
1257
|
+
display: inline-flex; gap: var(--space-5);
|
|
1258
|
+
white-space: nowrap; will-change: transform;
|
|
1259
|
+
animation: ds-marquee-run 28s linear infinite;
|
|
1260
|
+
}
|
|
1261
|
+
.ds-247420 .ds-marquee-item { display: inline-flex; align-items: center; gap: var(--space-5); }
|
|
1262
|
+
.ds-247420 .ds-marquee-sep { color: var(--accent-ink); }
|
|
1263
|
+
.ds-247420 .ds-marquee:hover .ds-marquee-track { animation-play-state: paused; }
|
|
1264
|
+
@keyframes ds-marquee-run {
|
|
1265
|
+
from { transform: translateX(0); }
|
|
1266
|
+
to { transform: translateX(-50%); }
|
|
1267
|
+
}
|
|
1268
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1269
|
+
.ds-247420 .ds-marquee-track { animation: none; }
|
|
1270
|
+
}
|
|
1271
|
+
|
|
1132
1272
|
/* ============================================================
|
|
1133
1273
|
Install — single CLI command card
|
|
1134
1274
|
============================================================ */
|
|
@@ -1580,7 +1720,7 @@
|
|
|
1580
1720
|
============================================================ */
|
|
1581
1721
|
.ds-247420 .ds-chat { display: flex; flex-direction: column; gap: 12px; padding: var(--space-4); }
|
|
1582
1722
|
.ds-247420 .ds-chat-msg { padding: 12px 18px; background: var(--bg-2); border-radius: var(--r-3); max-width: min(90vw, 36em); }
|
|
1583
|
-
.ds-247420 .ds-chat-msg.user { background: var(--accent); color: var(--
|
|
1723
|
+
.ds-247420 .ds-chat-msg.user { background: var(--accent-tint); color: var(--fg); align-self: flex-end; }
|
|
1584
1724
|
.ds-247420 .ds-chat-md { font-size: var(--fs-sm); line-height: 1.6; }
|
|
1585
1725
|
.ds-247420 .ds-chat-composer { display: flex; gap: 8px; padding: var(--space-4); }
|
|
1586
1726
|
.ds-247420 .ds-chat-composer input { flex: 1; padding: 13px 18px; background: var(--bg-2); border: 0; border-radius: var(--r-pill); font-family: inherit; font-size: var(--fs-sm); color: var(--fg); }
|
|
@@ -1619,7 +1759,7 @@
|
|
|
1619
1759
|
background: none; border: none; cursor: pointer; padding: 2px 4px; border-radius: var(--r-1);
|
|
1620
1760
|
}
|
|
1621
1761
|
.ds-247420 .ds-file-sort-btn:hover { color: var(--fg-2); background: var(--bg-2); }
|
|
1622
|
-
.ds-247420 .ds-file-sort-btn.active { color: var(--accent); }
|
|
1762
|
+
.ds-247420 .ds-file-sort-btn.active { color: var(--accent-ink); }
|
|
1623
1763
|
.ds-247420 .ds-file-sort-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
1624
1764
|
|
|
1625
1765
|
/* Skeleton shimmer rows shown while a directory loads. */
|
|
@@ -1707,7 +1847,7 @@
|
|
|
1707
1847
|
width: 26px; height: 26px; font-size: 15px; line-height: 1;
|
|
1708
1848
|
color: var(--fg-2);
|
|
1709
1849
|
}
|
|
1710
|
-
.ds-247420 .ds-file-row[data-file-type="dir"] .ds-file-icon { color: var(--accent); }
|
|
1850
|
+
.ds-247420 .ds-file-row[data-file-type="dir"] .ds-file-icon { color: var(--accent-ink); }
|
|
1711
1851
|
.ds-247420 .ds-file-row[data-file-type="image"] .ds-file-icon { color: var(--mascot); }
|
|
1712
1852
|
.ds-247420 .ds-file-row[data-file-type="video"] .ds-file-icon { color: var(--purple-2); }
|
|
1713
1853
|
.ds-247420 .ds-file-row[data-file-type="audio"] .ds-file-icon { color: var(--sky); }
|
|
@@ -1765,7 +1905,7 @@
|
|
|
1765
1905
|
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
1766
1906
|
}
|
|
1767
1907
|
.ds-247420 .ds-file-check:hover { background: var(--bg-3); color: var(--fg); }
|
|
1768
|
-
.ds-247420 .ds-file-check.is-marked { color: var(--accent); }
|
|
1908
|
+
.ds-247420 .ds-file-check.is-marked { color: var(--accent-ink); }
|
|
1769
1909
|
.ds-247420 .ds-file-check:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
1770
1910
|
.ds-247420 .ds-file-check[disabled] { opacity: 0.4; cursor: default; }
|
|
1771
1911
|
.ds-247420 .ds-file-row.is-marked { background: var(--accent-tint); border-color: var(--accent); }
|
|
@@ -1858,7 +1998,7 @@
|
|
|
1858
1998
|
.ds-247420 .ds-file-cell-thumb { width: 100%; height: 100%; object-fit: cover; }
|
|
1859
1999
|
/* Per-type icon tints on thumb tiles so the grid keeps the colour-coding the
|
|
1860
2000
|
list rows already carry (mirrors .ds-file-row[data-file-type] .ds-file-icon). */
|
|
1861
|
-
.ds-247420 .ds-file-cell[data-file-type="dir"] .ds-file-icon { color: var(--accent); }
|
|
2001
|
+
.ds-247420 .ds-file-cell[data-file-type="dir"] .ds-file-icon { color: var(--accent-ink); }
|
|
1862
2002
|
.ds-247420 .ds-file-cell[data-file-type="image"] .ds-file-icon { color: var(--mascot); }
|
|
1863
2003
|
.ds-247420 .ds-file-cell[data-file-type="video"] .ds-file-icon { color: var(--purple-2); }
|
|
1864
2004
|
.ds-247420 .ds-file-cell[data-file-type="audio"] .ds-file-icon { color: var(--sky); }
|
|
@@ -1985,7 +2125,7 @@
|
|
|
1985
2125
|
.ds-247420 .ds-dropzone.dragover { animation: ds-dropzone-pulse 1.1s var(--ease) infinite; }
|
|
1986
2126
|
}
|
|
1987
2127
|
.ds-247420 .ds-dropzone.dragover .ds-dropzone-glyph,
|
|
1988
|
-
.ds-247420 .ds-dropzone.dragover .ds-dropzone-label { color: var(--accent); }
|
|
2128
|
+
.ds-247420 .ds-dropzone.dragover .ds-dropzone-label { color: var(--accent-ink); }
|
|
1989
2129
|
@keyframes ds-dropzone-pulse {
|
|
1990
2130
|
0%, 100% { border-color: var(--accent); }
|
|
1991
2131
|
50% { border-color: color-mix(in oklab, var(--accent) 45%, transparent); }
|
|
@@ -2348,7 +2488,7 @@
|
|
|
2348
2488
|
.ds-247420 .chat-msg:hover .chat-avatar { transform: scale(1.03); box-shadow: 0 1px 4px color-mix(in oklab, var(--fg) 6%, transparent); }
|
|
2349
2489
|
.ds-247420 .chat-msg.you .chat-avatar {
|
|
2350
2490
|
background: color-mix(in oklab, var(--accent) 26%, var(--bg-3));
|
|
2351
|
-
color: var(--accent);
|
|
2491
|
+
color: var(--accent-ink);
|
|
2352
2492
|
}
|
|
2353
2493
|
.ds-247420 .chat-msg.aicat .chat-avatar {
|
|
2354
2494
|
background: color-mix(in oklab, var(--mascot) 26%, var(--bg-2));
|
|
@@ -2371,7 +2511,8 @@
|
|
|
2371
2511
|
transition: transform 0.12s ease, box-shadow 0.12s ease;
|
|
2372
2512
|
}
|
|
2373
2513
|
.ds-247420 .chat-msg:hover .chat-bubble { transform: translateY(-1px); box-shadow: 0 2px 8px color-mix(in oklab, var(--fg) 6%, transparent); transition: transform var(--dur-base) var(--ease), box-shadow var(--dur-base) var(--ease); }
|
|
2374
|
-
|
|
2514
|
+
/* Own bubble — calm tinted lead, not a full electric fill (chat stays readable). */
|
|
2515
|
+
.ds-247420 .chat-msg.you .chat-bubble { background: var(--accent-tint); color: var(--fg); }
|
|
2375
2516
|
.ds-247420 .chat-msg.aicat .chat-bubble {
|
|
2376
2517
|
background: color-mix(in oklab, var(--mascot) 14%, var(--bg-2));
|
|
2377
2518
|
border: 1px solid color-mix(in oklab, var(--mascot) 28%, transparent);
|
|
@@ -2381,7 +2522,7 @@
|
|
|
2381
2522
|
background: color-mix(in oklab, var(--fg) 10%, transparent);
|
|
2382
2523
|
padding: 1px 6px; border-radius: 4px;
|
|
2383
2524
|
}
|
|
2384
|
-
.ds-247420 .chat-msg.you .chat-bubble code { background: color-mix(in oklab, var(--
|
|
2525
|
+
.ds-247420 .chat-msg.you .chat-bubble code { background: color-mix(in oklab, var(--fg) 10%, transparent); }
|
|
2385
2526
|
.ds-247420 .chat-bubble a {
|
|
2386
2527
|
color: inherit; text-decoration: underline;
|
|
2387
2528
|
text-underline-offset: 2px; text-decoration-thickness: 1px;
|
|
@@ -2465,7 +2606,7 @@
|
|
|
2465
2606
|
border-bottom: 1px solid color-mix(in oklab, var(--fg) 12%, transparent);
|
|
2466
2607
|
font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3);
|
|
2467
2608
|
}
|
|
2468
|
-
.ds-247420 .chat-code-head .lang { text-transform: uppercase; font-weight: 700; color: var(--accent); letter-spacing: 0.06em; }
|
|
2609
|
+
.ds-247420 .chat-code-head .lang { text-transform: uppercase; font-weight: 700; color: var(--accent-ink); letter-spacing: 0.06em; }
|
|
2469
2610
|
.ds-247420 .chat-code-head .filename,
|
|
2470
2611
|
.ds-247420 .chat-code-head .name { color: var(--fg-2); font-weight: 500; }
|
|
2471
2612
|
.ds-247420 .chat-code-head .spread { flex: 1; }
|
|
@@ -2477,7 +2618,7 @@
|
|
|
2477
2618
|
.ds-247420 .chat-bubble.chat-code code { background: transparent; padding: 0; font-size: inherit; }
|
|
2478
2619
|
.ds-247420 .chat-bubble.chat-code .token.keyword,
|
|
2479
2620
|
.ds-247420 .chat-bubble.chat-code .token.atrule,
|
|
2480
|
-
.ds-247420 .chat-bubble.chat-code .token.selector { color: var(--accent); }
|
|
2621
|
+
.ds-247420 .chat-bubble.chat-code .token.selector { color: var(--accent-ink); }
|
|
2481
2622
|
.ds-247420 .chat-bubble.chat-code .token.string,
|
|
2482
2623
|
.ds-247420 .chat-bubble.chat-code .token.attr-value { color: var(--code-str-alt, var(--mascot)); }
|
|
2483
2624
|
.ds-247420 .chat-bubble.chat-code .token.comment { color: var(--fg-3); font-style: italic; }
|
|
@@ -2518,7 +2659,7 @@
|
|
|
2518
2659
|
font-size: 22px; width: 36px; height: 36px;
|
|
2519
2660
|
display: inline-flex; align-items: center; justify-content: center;
|
|
2520
2661
|
background: color-mix(in oklab, var(--accent) 18%, transparent);
|
|
2521
|
-
color: var(--accent); border-radius: 8px; flex-shrink: 0; font-family: var(--ff-mono);
|
|
2662
|
+
color: var(--accent-ink); border-radius: 8px; flex-shrink: 0; font-family: var(--ff-mono);
|
|
2522
2663
|
}
|
|
2523
2664
|
.ds-247420 .chat-file > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
|
|
2524
2665
|
.ds-247420 .chat-file .name {
|
|
@@ -2528,7 +2669,7 @@
|
|
|
2528
2669
|
.ds-247420 .chat-file .meta { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
|
|
2529
2670
|
.ds-247420 .chat-file .size { font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3); }
|
|
2530
2671
|
.ds-247420 .chat-file .go { font-family: var(--ff-mono); font-size: 16px; color: var(--fg-3); flex-shrink: 0; }
|
|
2531
|
-
.ds-247420 .chat-file:hover .go { color: var(--accent); }
|
|
2672
|
+
.ds-247420 .chat-file:hover .go { color: var(--accent-ink); }
|
|
2532
2673
|
|
|
2533
2674
|
.ds-247420 .chat-msg.you .chat-pdf,
|
|
2534
2675
|
.ds-247420 .chat-msg .chat-pdf,
|
|
@@ -2548,7 +2689,7 @@
|
|
|
2548
2689
|
.ds-247420 .chat-pdf-head .glyph { font-size: 18px; color: var(--mascot); flex-shrink: 0; }
|
|
2549
2690
|
.ds-247420 .chat-pdf-head .name { flex: 1; font-weight: 600; font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
2550
2691
|
.ds-247420 .chat-pdf-head .size { font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3); }
|
|
2551
|
-
.ds-247420 .chat-pdf-head a { color: var(--accent); font-family: var(--ff-mono); font-size: var(--fs-xs); text-decoration: none; }
|
|
2692
|
+
.ds-247420 .chat-pdf-head a { color: var(--accent-ink); font-family: var(--ff-mono); font-size: var(--fs-xs); text-decoration: none; }
|
|
2552
2693
|
.ds-247420 .chat-pdf embed,
|
|
2553
2694
|
.ds-247420 .chat-pdf iframe,
|
|
2554
2695
|
.ds-247420 .chat-pdf object { width: 100%; height: 360px; border: 0; display: block; }
|
|
@@ -2585,7 +2726,7 @@
|
|
|
2585
2726
|
.ds-247420 .chat-meta .who::after { content: ' ·'; color: var(--fg-3); font-weight: 400; }
|
|
2586
2727
|
.ds-247420 .chat-meta .t { color: var(--fg-3); }
|
|
2587
2728
|
.ds-247420 .chat-meta .tick { color: var(--fg-3); margin-left: 2px; letter-spacing: -2px; font-family: var(--ff-mono); }
|
|
2588
|
-
.ds-247420 .chat-meta .tick.read { color: var(--accent); }
|
|
2729
|
+
.ds-247420 .chat-meta .tick.read { color: var(--accent-ink); }
|
|
2589
2730
|
|
|
2590
2731
|
.ds-247420 .chat-reactions {
|
|
2591
2732
|
display: flex; gap: 4px; flex-wrap: wrap; margin-top: 2px;
|
|
@@ -2603,11 +2744,11 @@
|
|
|
2603
2744
|
.ds-247420 .chat-reactions .rxn.you {
|
|
2604
2745
|
background: color-mix(in oklab, var(--accent) 18%, var(--bg-2));
|
|
2605
2746
|
border-color: color-mix(in oklab, var(--accent) 55%, transparent);
|
|
2606
|
-
color: var(--accent);
|
|
2747
|
+
color: var(--accent-ink);
|
|
2607
2748
|
}
|
|
2608
2749
|
.ds-247420 .chat-reactions .rxn .e { font-size: 14px; line-height: 1; }
|
|
2609
2750
|
.ds-247420 .chat-reactions .rxn .n { font-family: var(--ff-mono); font-weight: 600; font-size: 11px; color: var(--fg-2); }
|
|
2610
|
-
.ds-247420 .chat-reactions .rxn.you .n { color: var(--accent); }
|
|
2751
|
+
.ds-247420 .chat-reactions .rxn.you .n { color: var(--accent-ink); }
|
|
2611
2752
|
|
|
2612
2753
|
.ds-247420 .chat-typing { display: inline-flex; gap: 4px; align-items: center; }
|
|
2613
2754
|
.ds-247420 .chat-typing span {
|
|
@@ -2746,7 +2887,7 @@
|
|
|
2746
2887
|
.ds-247420 .app-side a:has(> .count:empty) > .count,
|
|
2747
2888
|
.ds-247420 .app-side .count:empty { display: none; }
|
|
2748
2889
|
.ds-247420 .app-side a .glyph { font-family: var(--ff-mono); font-size: 13px; font-weight: 600; color: var(--fg-3); text-align: center; }
|
|
2749
|
-
.ds-247420 .app-side a.active .glyph { color: var(--accent); }
|
|
2890
|
+
.ds-247420 .app-side a.active .glyph { color: var(--accent-ink); }
|
|
2750
2891
|
|
|
2751
2892
|
/* -- select primitive --------------------------------------------------- */
|
|
2752
2893
|
.ds-247420 .ds-select {
|
|
@@ -2923,7 +3064,7 @@
|
|
|
2923
3064
|
.ds-247420 .drop-zone.active {
|
|
2924
3065
|
border-color: var(--accent);
|
|
2925
3066
|
background: color-mix(in oklab, var(--accent) 10%, var(--bg));
|
|
2926
|
-
color: var(--accent);
|
|
3067
|
+
color: var(--accent-ink);
|
|
2927
3068
|
}
|
|
2928
3069
|
|
|
2929
3070
|
/* List item reorder indicator */
|
|
@@ -2986,7 +3127,7 @@
|
|
|
2986
3127
|
}
|
|
2987
3128
|
.ds-247420 .ds-context-menu-item:hover {
|
|
2988
3129
|
background: var(--bg-3);
|
|
2989
|
-
color: var(--accent);
|
|
3130
|
+
color: var(--accent-ink);
|
|
2990
3131
|
}
|
|
2991
3132
|
.ds-247420 .ds-context-menu-item:active {
|
|
2992
3133
|
background: color-mix(in oklab, var(--accent) 20%, var(--bg-3));
|
|
@@ -3078,9 +3219,13 @@
|
|
|
3078
3219
|
color: var(--fg);
|
|
3079
3220
|
background: var(--bg-2);
|
|
3080
3221
|
border: 0;
|
|
3081
|
-
|
|
3222
|
+
/* Editorial field — tonal fill with a printed baseline rule that thickens to
|
|
3223
|
+
the electric lead on focus, instead of a uniform hairline box. */
|
|
3224
|
+
box-shadow: inset 0 0 0 var(--bw-hair, 1px) var(--rule),
|
|
3225
|
+
inset 0 calc(-1 * var(--bw-rule)) 0 var(--rule-strong);
|
|
3082
3226
|
border-radius: var(--r-2, 10px);
|
|
3083
3227
|
padding: 10px 14px;
|
|
3228
|
+
transition: box-shadow var(--dur-snap) var(--ease), background var(--dur-snap) var(--ease);
|
|
3084
3229
|
}
|
|
3085
3230
|
.ds-247420 .ds-field textarea { min-height: calc(4 * 1.5em); resize: vertical; }
|
|
3086
3231
|
.ds-247420 .ds-search-input::placeholder { color: var(--fg-3); }
|
|
@@ -3090,7 +3235,10 @@
|
|
|
3090
3235
|
.ds-247420 .ds-field .ds-select:focus-visible,
|
|
3091
3236
|
.ds-247420 .ds-search-input:focus-visible {
|
|
3092
3237
|
outline: none;
|
|
3093
|
-
|
|
3238
|
+
background: var(--bg);
|
|
3239
|
+
/* Focus thickens the baseline to the lead accent — the printed-rule tell. */
|
|
3240
|
+
box-shadow: inset 0 0 0 var(--bw-hair, 1px) var(--rule),
|
|
3241
|
+
inset 0 calc(-1 * var(--bw-chunk)) 0 var(--accent);
|
|
3094
3242
|
}
|
|
3095
3243
|
.ds-247420 .ds-field input:disabled,
|
|
3096
3244
|
.ds-247420 .ds-field textarea:disabled,
|