anentrypoint-design 0.0.220 → 0.0.222
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 +161 -58
- package/colors_and_type.css +78 -33
- package/dist/247420.css +239 -91
- package/dist/247420.js +17 -15
- 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/app-shell.css
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/* ============================================================
|
|
2
2
|
247420 design system — component sheet
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
"Acid Editorial": Space Grotesk display + Inter body + JetBrains code.
|
|
4
|
+
Confident hierarchy, asymmetric grid tension, print texture over glow,
|
|
5
|
+
one electric lead accent. Indicator rails over hairlines.
|
|
5
6
|
============================================================ */
|
|
6
7
|
|
|
7
8
|
/* ============================================================
|
|
@@ -54,10 +55,10 @@ body {
|
|
|
54
55
|
/* ============================================================
|
|
55
56
|
Typography
|
|
56
57
|
============================================================ */
|
|
57
|
-
h1, .t-h1 { font-family: var(--ff-
|
|
58
|
-
h2, .t-h2 { font-family: var(--ff-
|
|
59
|
-
h3, .t-h3 { font-family: var(--ff-
|
|
60
|
-
h4, .t-h4 { font-family: var(--ff-
|
|
58
|
+
h1, .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; }
|
|
59
|
+
h2, .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; }
|
|
60
|
+
h3, .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; }
|
|
61
|
+
h4, .t-h4 { font-family: var(--ff-display); font-size: var(--fs-h4); line-height: var(--lh-snug); font-weight: 600; margin: 0; }
|
|
61
62
|
|
|
62
63
|
/* App/chrome typescale opt-in: compact heading ceiling for application UIs. */
|
|
63
64
|
[data-typescale="app"] h1, [data-typescale="app"] .t-h1 { font-size: var(--fs-h1-app); line-height: 1.15; }
|
|
@@ -65,10 +66,10 @@ h4, .t-h4 { font-family: var(--ff-body); font-size: var(--fs-h4); line-height: v
|
|
|
65
66
|
[data-typescale="app"] h3, [data-typescale="app"] .t-h3 { font-size: var(--fs-h3-app); }
|
|
66
67
|
[data-typescale="app"] h4, [data-typescale="app"] .t-h4 { font-size: var(--fs-h4-app); }
|
|
67
68
|
|
|
68
|
-
.t-hero { font-family: var(--ff-
|
|
69
|
-
.t-mega { font-family: var(--ff-
|
|
69
|
+
.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; }
|
|
70
|
+
.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; }
|
|
70
71
|
|
|
71
|
-
.t-display { font-family: var(--ff-
|
|
72
|
+
.t-display { font-family: var(--ff-display); font-weight: 600; letter-spacing: var(--tr-tight); }
|
|
72
73
|
.t-mono { font-family: var(--ff-mono); }
|
|
73
74
|
.t-body { font-family: var(--ff-body); }
|
|
74
75
|
|
|
@@ -83,17 +84,18 @@ h4, .t-h4 { font-family: var(--ff-body); font-size: var(--fs-h4); line-height: v
|
|
|
83
84
|
}
|
|
84
85
|
|
|
85
86
|
.eyebrow {
|
|
86
|
-
font-family: var(--ff-
|
|
87
|
+
font-family: var(--ff-mono);
|
|
87
88
|
font-size: var(--fs-tiny);
|
|
88
89
|
font-weight: 600;
|
|
89
|
-
letter-spacing: var(--tr-
|
|
90
|
+
letter-spacing: var(--tr-label);
|
|
90
91
|
text-transform: uppercase;
|
|
91
|
-
color: var(--accent);
|
|
92
|
-
display: inline-flex; align-items: center; gap:
|
|
92
|
+
color: var(--accent-ink);
|
|
93
|
+
display: inline-flex; align-items: center; gap: 12px;
|
|
93
94
|
}
|
|
95
|
+
/* Editorial kicker mark — a short solid ink rule, the print-byline tell. */
|
|
94
96
|
.eyebrow::before {
|
|
95
97
|
content: '';
|
|
96
|
-
width:
|
|
98
|
+
width: 28px; height: 3px; background: currentColor;
|
|
97
99
|
}
|
|
98
100
|
|
|
99
101
|
.ds-prose {
|
|
@@ -113,7 +115,7 @@ h4, .t-h4 { font-family: var(--ff-body); font-size: var(--fs-h4); line-height: v
|
|
|
113
115
|
/* Links */
|
|
114
116
|
a { color: inherit; text-decoration: none; }
|
|
115
117
|
a.ds-link-accent, .ds-prose a {
|
|
116
|
-
color: var(--accent);
|
|
118
|
+
color: var(--accent-ink);
|
|
117
119
|
text-decoration: underline;
|
|
118
120
|
text-underline-offset: 4px;
|
|
119
121
|
text-decoration-thickness: 2px;
|
|
@@ -253,18 +255,19 @@ body.canvas-host { background: transparent !important; }
|
|
|
253
255
|
as misaligned. Same height as the inactive links — only the tint + underline
|
|
254
256
|
change. */
|
|
255
257
|
.app-topbar nav a.active {
|
|
256
|
-
color: var(--accent);
|
|
258
|
+
color: var(--accent-ink);
|
|
257
259
|
background: color-mix(in oklab, var(--accent) 16%, transparent);
|
|
258
260
|
box-shadow: inset 0 -2px 0 0 var(--accent);
|
|
259
261
|
font-weight: 600;
|
|
260
262
|
}
|
|
261
263
|
|
|
262
264
|
.brand {
|
|
263
|
-
font-family: var(--ff-
|
|
264
|
-
font-weight: 700; font-size: var(--fs-
|
|
265
|
-
letter-spacing: -
|
|
265
|
+
font-family: var(--ff-display);
|
|
266
|
+
font-weight: 700; font-size: var(--fs-lg);
|
|
267
|
+
letter-spacing: var(--tr-tight);
|
|
266
268
|
}
|
|
267
|
-
|
|
269
|
+
/* The wordmark separator printed in the electric lead — the brand tell. */
|
|
270
|
+
.brand .slash { color: var(--accent-ink); font-weight: 700; margin: 0 3px; }
|
|
268
271
|
|
|
269
272
|
.app-search {
|
|
270
273
|
display: inline-flex; align-items: center; gap: 10px;
|
|
@@ -393,7 +396,7 @@ body.canvas-host { background: transparent !important; }
|
|
|
393
396
|
border-top: 1px solid var(--rule);
|
|
394
397
|
}
|
|
395
398
|
.app-status .item { color: inherit; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
|
|
396
|
-
.app-status .item:first-of-type { color: var(--accent); }
|
|
399
|
+
.app-status .item:first-of-type { color: var(--accent-ink); }
|
|
397
400
|
.app-status .spread { flex: 1; }
|
|
398
401
|
/* The status bar NEVER wraps: at narrow widths the trailing items (hints,
|
|
399
402
|
agent target) drop in priority order instead of breaking mid-word onto a
|
|
@@ -416,15 +419,20 @@ body.canvas-host { background: transparent !important; }
|
|
|
416
419
|
/* Rounded-rect app chrome, not a marketing-page stadium CTA. */
|
|
417
420
|
border-radius: var(--r-1);
|
|
418
421
|
border: 0;
|
|
419
|
-
transition: transform var(--dur-
|
|
422
|
+
transition: transform var(--dur-base) var(--ease-spring), background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
420
423
|
}
|
|
421
424
|
.btn { background: var(--bg-2); color: var(--fg); }
|
|
422
425
|
.btn:hover { background: var(--bg-3); color: var(--fg); }
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
.btn-
|
|
426
|
-
|
|
427
|
-
|
|
426
|
+
/* Primary CTA — the electric lead as a solid editorial block; hover inverts to
|
|
427
|
+
an ink block with the lead as text, a confident two-tone flip. */
|
|
428
|
+
.btn-primary {
|
|
429
|
+
background: var(--accent); color: var(--accent-fg);
|
|
430
|
+
font-weight: 700; letter-spacing: var(--tr-caps);
|
|
431
|
+
}
|
|
432
|
+
.btn-primary:hover { background: var(--fg); color: var(--accent-ink); }
|
|
433
|
+
.btn-ghost { background: transparent; color: var(--fg); box-shadow: inset 0 0 0 2px var(--fg); }
|
|
434
|
+
.btn-ghost:hover { background: var(--fg); color: var(--bg); }
|
|
435
|
+
.btn:active, .btn-primary:active, .btn-ghost:active { transform: translateY(2px); }
|
|
428
436
|
.btn:focus-visible, .btn-primary:focus-visible, .btn-ghost:focus-visible {
|
|
429
437
|
outline: 2px solid var(--accent);
|
|
430
438
|
outline-offset: 2px;
|
|
@@ -520,6 +528,17 @@ body.canvas-host { background: transparent !important; }
|
|
|
520
528
|
padding: var(--space-3);
|
|
521
529
|
position: relative;
|
|
522
530
|
}
|
|
531
|
+
/* Editorial accent spine — an opt-in printed-ink rule down the left edge that
|
|
532
|
+
reads as a magazine pull-quote bar, not a glow card. */
|
|
533
|
+
.panel.panel-spine {
|
|
534
|
+
border-radius: 0 var(--r-2) var(--r-2) 0;
|
|
535
|
+
padding-left: calc(var(--space-3) + var(--bw-chunk));
|
|
536
|
+
}
|
|
537
|
+
.panel.panel-spine::before {
|
|
538
|
+
content: ''; position: absolute; left: 0; top: 0; bottom: 0;
|
|
539
|
+
width: var(--bw-chunk); background: var(--accent);
|
|
540
|
+
border-radius: var(--bw-chunk) 0 0 var(--bw-chunk);
|
|
541
|
+
}
|
|
523
542
|
.panel.panel-inline { background: var(--bg-2); padding: var(--space-3) var(--space-3); }
|
|
524
543
|
.panel.panel-wide { background: transparent; }
|
|
525
544
|
.panel-head {
|
|
@@ -594,9 +613,13 @@ body.canvas-host { background: transparent !important; }
|
|
|
594
613
|
row should not signal an affordance it does not have. */
|
|
595
614
|
.row[role="button"]:hover, a.row:hover { background: var(--bg-2); }
|
|
596
615
|
.row[role="button"]:hover::before, a.row:hover::before { height: 56%; opacity: 1; }
|
|
616
|
+
/* Editorial hover-reveal — the row's meta (cta) slides toward the lead accent
|
|
617
|
+
and nudges right, the printed-index "open ->" affordance. */
|
|
618
|
+
.row .meta { transition: color var(--dur-base) var(--ease), transform var(--dur-base) var(--ease-spring); }
|
|
619
|
+
a.row:hover .meta, .row[role="button"]:hover .meta { color: var(--accent-ink); transform: translateX(3px); }
|
|
597
620
|
.row.active { background: color-mix(in oklab, var(--accent) 10%, var(--bg-2)); }
|
|
598
621
|
.row.active::before { height: 64%; opacity: 1; background: var(--accent); }
|
|
599
|
-
.row.active .title { color: var(--accent); }
|
|
622
|
+
.row.active .title { color: var(--accent-ink); }
|
|
600
623
|
.row.row-state-disabled { opacity: 0.5; pointer-events: none; }
|
|
601
624
|
.row.row-state-error { background: color-mix(in oklab, var(--flame) 10%, var(--bg-2)); }
|
|
602
625
|
.row.row-state-error::before { height: 64%; opacity: 1; background: var(--flame); }
|
|
@@ -638,24 +661,43 @@ a.row { text-decoration: none; }
|
|
|
638
661
|
/* ============================================================
|
|
639
662
|
Hero
|
|
640
663
|
============================================================ */
|
|
664
|
+
/* Signature hero — asymmetric editorial header. Title spans wide; the body +
|
|
665
|
+
actions sit offset in a narrower right column on desktop, stacked on mobile.
|
|
666
|
+
No centered stack. */
|
|
641
667
|
.ds-hero {
|
|
642
668
|
padding: var(--space-9) 0 var(--space-8);
|
|
643
|
-
display: grid; gap: var(--space-5);
|
|
669
|
+
display: grid; gap: var(--space-5) var(--space-6);
|
|
670
|
+
grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
|
|
671
|
+
grid-template-areas: 'title title' 'body actions';
|
|
672
|
+
align-items: end;
|
|
644
673
|
max-width: var(--measure-wide);
|
|
645
674
|
}
|
|
675
|
+
.ds-hero-head { grid-area: title; display: grid; gap: var(--space-3); }
|
|
676
|
+
.ds-hero-body { grid-area: body; }
|
|
677
|
+
.ds-hero-actions { grid-area: actions; }
|
|
678
|
+
.ds-hero-badge { grid-area: actions; }
|
|
646
679
|
.ds-hero-title {
|
|
647
|
-
font-family: var(--ff-
|
|
648
|
-
font-size: clamp(
|
|
649
|
-
line-height:
|
|
650
|
-
margin: 0; max-width:
|
|
680
|
+
font-family: var(--ff-display); font-weight: 700;
|
|
681
|
+
font-size: clamp(40px, 9cqi, 116px);
|
|
682
|
+
line-height: 0.96; letter-spacing: var(--tr-tighter);
|
|
683
|
+
margin: 0; max-width: 16ch; text-wrap: balance;
|
|
651
684
|
}
|
|
652
685
|
.ds-hero-body {
|
|
653
686
|
font-family: var(--ff-body); font-size: var(--fs-xl);
|
|
654
|
-
line-height: 1.45; margin: 0; max-width:
|
|
687
|
+
line-height: 1.45; margin: 0; max-width: 46ch;
|
|
655
688
|
color: var(--fg-2);
|
|
656
689
|
}
|
|
657
|
-
|
|
658
|
-
.ds-hero-
|
|
690
|
+
/* The lead phrase in the title — printed in the electric lead, not glowing. */
|
|
691
|
+
.ds-hero-accent { color: var(--accent-ink); font-weight: 700; }
|
|
692
|
+
.ds-hero-actions { display: flex; gap: var(--space-2, 10px); flex-wrap: wrap; align-self: end; }
|
|
693
|
+
@media (max-width: 900px) {
|
|
694
|
+
.ds-hero {
|
|
695
|
+
grid-template-columns: minmax(0, 1fr);
|
|
696
|
+
grid-template-areas: 'title' 'body' 'actions';
|
|
697
|
+
align-items: start;
|
|
698
|
+
padding: var(--space-7) 0 var(--space-6);
|
|
699
|
+
}
|
|
700
|
+
}
|
|
659
701
|
.ds-chat-title { margin: 0; font-size: inherit; }
|
|
660
702
|
|
|
661
703
|
/* ============================================================
|
|
@@ -675,6 +717,59 @@ a.row { text-decoration: none; }
|
|
|
675
717
|
.ds-section { margin: var(--space-4) 0; }
|
|
676
718
|
}
|
|
677
719
|
|
|
720
|
+
/* ============================================================
|
|
721
|
+
Print texture — the signature surface treatment. Opt-in overlay that
|
|
722
|
+
reads as risograph/newsprint grain, layered above the surface fill but
|
|
723
|
+
below content. Faint by default so type stays crisp; reduced-data and
|
|
724
|
+
reduced-motion are unaffected (texture is static).
|
|
725
|
+
============================================================ */
|
|
726
|
+
.ds-grain { position: relative; isolation: isolate; }
|
|
727
|
+
.ds-grain::after {
|
|
728
|
+
content: ''; position: absolute; inset: 0; z-index: -1;
|
|
729
|
+
pointer-events: none;
|
|
730
|
+
background-image: var(--grain);
|
|
731
|
+
background-size: 160px 160px;
|
|
732
|
+
opacity: var(--grain-opacity);
|
|
733
|
+
mix-blend-mode: var(--grain-blend);
|
|
734
|
+
}
|
|
735
|
+
/* Halftone dot screen — a heavier print tell for accent panels/hero. */
|
|
736
|
+
.ds-halftone { position: relative; isolation: isolate; }
|
|
737
|
+
.ds-halftone::after {
|
|
738
|
+
content: ''; position: absolute; inset: 0; z-index: -1;
|
|
739
|
+
pointer-events: none;
|
|
740
|
+
background-image: radial-gradient(currentColor 1px, transparent 1.2px);
|
|
741
|
+
background-size: var(--halftone-size) var(--halftone-size);
|
|
742
|
+
opacity: 0.12;
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
/* ============================================================
|
|
746
|
+
Marquee / ticker — brand kinetic device ("always open 24/7"). The track
|
|
747
|
+
holds two identical runs so the loop is seamless; reduced-motion freezes it
|
|
748
|
+
to a single static run. Editorial, not a decorative flourish.
|
|
749
|
+
============================================================ */
|
|
750
|
+
.ds-marquee {
|
|
751
|
+
overflow: hidden; width: 100%;
|
|
752
|
+
border-block: var(--bw-rule) solid var(--fg);
|
|
753
|
+
padding: var(--space-2) 0;
|
|
754
|
+
font-family: var(--ff-display); font-weight: 600;
|
|
755
|
+
text-transform: uppercase; letter-spacing: var(--tr-caps);
|
|
756
|
+
}
|
|
757
|
+
.ds-marquee-track {
|
|
758
|
+
display: inline-flex; gap: var(--space-5);
|
|
759
|
+
white-space: nowrap; will-change: transform;
|
|
760
|
+
animation: ds-marquee-run 28s linear infinite;
|
|
761
|
+
}
|
|
762
|
+
.ds-marquee-item { display: inline-flex; align-items: center; gap: var(--space-5); }
|
|
763
|
+
.ds-marquee-sep { color: var(--accent-ink); }
|
|
764
|
+
.ds-marquee:hover .ds-marquee-track { animation-play-state: paused; }
|
|
765
|
+
@keyframes ds-marquee-run {
|
|
766
|
+
from { transform: translateX(0); }
|
|
767
|
+
to { transform: translateX(-50%); }
|
|
768
|
+
}
|
|
769
|
+
@media (prefers-reduced-motion: reduce) {
|
|
770
|
+
.ds-marquee-track { animation: none; }
|
|
771
|
+
}
|
|
772
|
+
|
|
678
773
|
/* ============================================================
|
|
679
774
|
Install — single CLI command card
|
|
680
775
|
============================================================ */
|
|
@@ -1126,7 +1221,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1126
1221
|
============================================================ */
|
|
1127
1222
|
.ds-chat { display: flex; flex-direction: column; gap: 12px; padding: var(--space-4); }
|
|
1128
1223
|
.ds-chat-msg { padding: 12px 18px; background: var(--bg-2); border-radius: var(--r-3); max-width: min(90vw, 36em); }
|
|
1129
|
-
.ds-chat-msg.user { background: var(--accent); color: var(--
|
|
1224
|
+
.ds-chat-msg.user { background: var(--accent-tint); color: var(--fg); align-self: flex-end; }
|
|
1130
1225
|
.ds-chat-md { font-size: var(--fs-sm); line-height: 1.6; }
|
|
1131
1226
|
.ds-chat-composer { display: flex; gap: 8px; padding: var(--space-4); }
|
|
1132
1227
|
.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); }
|
|
@@ -1165,7 +1260,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1165
1260
|
background: none; border: none; cursor: pointer; padding: 2px 4px; border-radius: var(--r-1);
|
|
1166
1261
|
}
|
|
1167
1262
|
.ds-file-sort-btn:hover { color: var(--fg-2); background: var(--bg-2); }
|
|
1168
|
-
.ds-file-sort-btn.active { color: var(--accent); }
|
|
1263
|
+
.ds-file-sort-btn.active { color: var(--accent-ink); }
|
|
1169
1264
|
.ds-file-sort-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
1170
1265
|
|
|
1171
1266
|
/* Skeleton shimmer rows shown while a directory loads. */
|
|
@@ -1253,7 +1348,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1253
1348
|
width: 26px; height: 26px; font-size: 15px; line-height: 1;
|
|
1254
1349
|
color: var(--fg-2);
|
|
1255
1350
|
}
|
|
1256
|
-
.ds-file-row[data-file-type="dir"] .ds-file-icon { color: var(--accent); }
|
|
1351
|
+
.ds-file-row[data-file-type="dir"] .ds-file-icon { color: var(--accent-ink); }
|
|
1257
1352
|
.ds-file-row[data-file-type="image"] .ds-file-icon { color: var(--mascot); }
|
|
1258
1353
|
.ds-file-row[data-file-type="video"] .ds-file-icon { color: var(--purple-2); }
|
|
1259
1354
|
.ds-file-row[data-file-type="audio"] .ds-file-icon { color: var(--sky); }
|
|
@@ -1311,7 +1406,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1311
1406
|
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
1312
1407
|
}
|
|
1313
1408
|
.ds-file-check:hover { background: var(--bg-3); color: var(--fg); }
|
|
1314
|
-
.ds-file-check.is-marked { color: var(--accent); }
|
|
1409
|
+
.ds-file-check.is-marked { color: var(--accent-ink); }
|
|
1315
1410
|
.ds-file-check:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
1316
1411
|
.ds-file-check[disabled] { opacity: 0.4; cursor: default; }
|
|
1317
1412
|
.ds-file-row.is-marked { background: var(--accent-tint); border-color: var(--accent); }
|
|
@@ -1404,7 +1499,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1404
1499
|
.ds-file-cell-thumb { width: 100%; height: 100%; object-fit: cover; }
|
|
1405
1500
|
/* Per-type icon tints on thumb tiles so the grid keeps the colour-coding the
|
|
1406
1501
|
list rows already carry (mirrors .ds-file-row[data-file-type] .ds-file-icon). */
|
|
1407
|
-
.ds-file-cell[data-file-type="dir"] .ds-file-icon { color: var(--accent); }
|
|
1502
|
+
.ds-file-cell[data-file-type="dir"] .ds-file-icon { color: var(--accent-ink); }
|
|
1408
1503
|
.ds-file-cell[data-file-type="image"] .ds-file-icon { color: var(--mascot); }
|
|
1409
1504
|
.ds-file-cell[data-file-type="video"] .ds-file-icon { color: var(--purple-2); }
|
|
1410
1505
|
.ds-file-cell[data-file-type="audio"] .ds-file-icon { color: var(--sky); }
|
|
@@ -1531,7 +1626,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1531
1626
|
.ds-dropzone.dragover { animation: ds-dropzone-pulse 1.1s var(--ease) infinite; }
|
|
1532
1627
|
}
|
|
1533
1628
|
.ds-dropzone.dragover .ds-dropzone-glyph,
|
|
1534
|
-
.ds-dropzone.dragover .ds-dropzone-label { color: var(--accent); }
|
|
1629
|
+
.ds-dropzone.dragover .ds-dropzone-label { color: var(--accent-ink); }
|
|
1535
1630
|
@keyframes ds-dropzone-pulse {
|
|
1536
1631
|
0%, 100% { border-color: var(--accent); }
|
|
1537
1632
|
50% { border-color: color-mix(in oklab, var(--accent) 45%, transparent); }
|
|
@@ -1894,7 +1989,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1894
1989
|
.chat-msg:hover .chat-avatar { transform: scale(1.03); box-shadow: 0 1px 4px color-mix(in oklab, var(--fg) 6%, transparent); }
|
|
1895
1990
|
.chat-msg.you .chat-avatar {
|
|
1896
1991
|
background: color-mix(in oklab, var(--accent) 26%, var(--bg-3));
|
|
1897
|
-
color: var(--accent);
|
|
1992
|
+
color: var(--accent-ink);
|
|
1898
1993
|
}
|
|
1899
1994
|
.chat-msg.aicat .chat-avatar {
|
|
1900
1995
|
background: color-mix(in oklab, var(--mascot) 26%, var(--bg-2));
|
|
@@ -1917,7 +2012,8 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1917
2012
|
transition: transform 0.12s ease, box-shadow 0.12s ease;
|
|
1918
2013
|
}
|
|
1919
2014
|
.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); }
|
|
1920
|
-
|
|
2015
|
+
/* Own bubble — calm tinted lead, not a full electric fill (chat stays readable). */
|
|
2016
|
+
.chat-msg.you .chat-bubble { background: var(--accent-tint); color: var(--fg); }
|
|
1921
2017
|
.chat-msg.aicat .chat-bubble {
|
|
1922
2018
|
background: color-mix(in oklab, var(--mascot) 14%, var(--bg-2));
|
|
1923
2019
|
border: 1px solid color-mix(in oklab, var(--mascot) 28%, transparent);
|
|
@@ -1927,7 +2023,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
1927
2023
|
background: color-mix(in oklab, var(--fg) 10%, transparent);
|
|
1928
2024
|
padding: 1px 6px; border-radius: 4px;
|
|
1929
2025
|
}
|
|
1930
|
-
.chat-msg.you .chat-bubble code { background: color-mix(in oklab, var(--
|
|
2026
|
+
.chat-msg.you .chat-bubble code { background: color-mix(in oklab, var(--fg) 10%, transparent); }
|
|
1931
2027
|
.chat-bubble a {
|
|
1932
2028
|
color: inherit; text-decoration: underline;
|
|
1933
2029
|
text-underline-offset: 2px; text-decoration-thickness: 1px;
|
|
@@ -2011,7 +2107,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
2011
2107
|
border-bottom: 1px solid color-mix(in oklab, var(--fg) 12%, transparent);
|
|
2012
2108
|
font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3);
|
|
2013
2109
|
}
|
|
2014
|
-
.chat-code-head .lang { text-transform: uppercase; font-weight: 700; color: var(--accent); letter-spacing: 0.06em; }
|
|
2110
|
+
.chat-code-head .lang { text-transform: uppercase; font-weight: 700; color: var(--accent-ink); letter-spacing: 0.06em; }
|
|
2015
2111
|
.chat-code-head .filename,
|
|
2016
2112
|
.chat-code-head .name { color: var(--fg-2); font-weight: 500; }
|
|
2017
2113
|
.chat-code-head .spread { flex: 1; }
|
|
@@ -2023,7 +2119,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
2023
2119
|
.chat-bubble.chat-code code { background: transparent; padding: 0; font-size: inherit; }
|
|
2024
2120
|
.chat-bubble.chat-code .token.keyword,
|
|
2025
2121
|
.chat-bubble.chat-code .token.atrule,
|
|
2026
|
-
.chat-bubble.chat-code .token.selector { color: var(--accent); }
|
|
2122
|
+
.chat-bubble.chat-code .token.selector { color: var(--accent-ink); }
|
|
2027
2123
|
.chat-bubble.chat-code .token.string,
|
|
2028
2124
|
.chat-bubble.chat-code .token.attr-value { color: var(--code-str-alt, var(--mascot)); }
|
|
2029
2125
|
.chat-bubble.chat-code .token.comment { color: var(--fg-3); font-style: italic; }
|
|
@@ -2064,7 +2160,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
2064
2160
|
font-size: 22px; width: 36px; height: 36px;
|
|
2065
2161
|
display: inline-flex; align-items: center; justify-content: center;
|
|
2066
2162
|
background: color-mix(in oklab, var(--accent) 18%, transparent);
|
|
2067
|
-
color: var(--accent); border-radius: 8px; flex-shrink: 0; font-family: var(--ff-mono);
|
|
2163
|
+
color: var(--accent-ink); border-radius: 8px; flex-shrink: 0; font-family: var(--ff-mono);
|
|
2068
2164
|
}
|
|
2069
2165
|
.chat-file > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
|
|
2070
2166
|
.chat-file .name {
|
|
@@ -2074,7 +2170,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
2074
2170
|
.chat-file .meta { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
|
|
2075
2171
|
.chat-file .size { font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3); }
|
|
2076
2172
|
.chat-file .go { font-family: var(--ff-mono); font-size: 16px; color: var(--fg-3); flex-shrink: 0; }
|
|
2077
|
-
.chat-file:hover .go { color: var(--accent); }
|
|
2173
|
+
.chat-file:hover .go { color: var(--accent-ink); }
|
|
2078
2174
|
|
|
2079
2175
|
.chat-msg.you .chat-pdf,
|
|
2080
2176
|
.chat-msg .chat-pdf,
|
|
@@ -2094,7 +2190,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
2094
2190
|
.chat-pdf-head .glyph { font-size: 18px; color: var(--mascot); flex-shrink: 0; }
|
|
2095
2191
|
.chat-pdf-head .name { flex: 1; font-weight: 600; font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
2096
2192
|
.chat-pdf-head .size { font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3); }
|
|
2097
|
-
.chat-pdf-head a { color: var(--accent); font-family: var(--ff-mono); font-size: var(--fs-xs); text-decoration: none; }
|
|
2193
|
+
.chat-pdf-head a { color: var(--accent-ink); font-family: var(--ff-mono); font-size: var(--fs-xs); text-decoration: none; }
|
|
2098
2194
|
.chat-pdf embed,
|
|
2099
2195
|
.chat-pdf iframe,
|
|
2100
2196
|
.chat-pdf object { width: 100%; height: 360px; border: 0; display: block; }
|
|
@@ -2131,7 +2227,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
2131
2227
|
.chat-meta .who::after { content: ' ·'; color: var(--fg-3); font-weight: 400; }
|
|
2132
2228
|
.chat-meta .t { color: var(--fg-3); }
|
|
2133
2229
|
.chat-meta .tick { color: var(--fg-3); margin-left: 2px; letter-spacing: -2px; font-family: var(--ff-mono); }
|
|
2134
|
-
.chat-meta .tick.read { color: var(--accent); }
|
|
2230
|
+
.chat-meta .tick.read { color: var(--accent-ink); }
|
|
2135
2231
|
|
|
2136
2232
|
.chat-reactions {
|
|
2137
2233
|
display: flex; gap: 4px; flex-wrap: wrap; margin-top: 2px;
|
|
@@ -2149,11 +2245,11 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
2149
2245
|
.chat-reactions .rxn.you {
|
|
2150
2246
|
background: color-mix(in oklab, var(--accent) 18%, var(--bg-2));
|
|
2151
2247
|
border-color: color-mix(in oklab, var(--accent) 55%, transparent);
|
|
2152
|
-
color: var(--accent);
|
|
2248
|
+
color: var(--accent-ink);
|
|
2153
2249
|
}
|
|
2154
2250
|
.chat-reactions .rxn .e { font-size: 14px; line-height: 1; }
|
|
2155
2251
|
.chat-reactions .rxn .n { font-family: var(--ff-mono); font-weight: 600; font-size: 11px; color: var(--fg-2); }
|
|
2156
|
-
.chat-reactions .rxn.you .n { color: var(--accent); }
|
|
2252
|
+
.chat-reactions .rxn.you .n { color: var(--accent-ink); }
|
|
2157
2253
|
|
|
2158
2254
|
.chat-typing { display: inline-flex; gap: 4px; align-items: center; }
|
|
2159
2255
|
.chat-typing span {
|
|
@@ -2292,7 +2388,7 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
2292
2388
|
.app-side a:has(> .count:empty) > .count,
|
|
2293
2389
|
.app-side .count:empty { display: none; }
|
|
2294
2390
|
.app-side a .glyph { font-family: var(--ff-mono); font-size: 13px; font-weight: 600; color: var(--fg-3); text-align: center; }
|
|
2295
|
-
.app-side a.active .glyph { color: var(--accent); }
|
|
2391
|
+
.app-side a.active .glyph { color: var(--accent-ink); }
|
|
2296
2392
|
|
|
2297
2393
|
/* -- select primitive --------------------------------------------------- */
|
|
2298
2394
|
.ds-select {
|
|
@@ -2476,7 +2572,7 @@ input[type="checkbox"], input[type="radio"] {
|
|
|
2476
2572
|
.drop-zone.active {
|
|
2477
2573
|
border-color: var(--accent);
|
|
2478
2574
|
background: color-mix(in oklab, var(--accent) 10%, var(--bg));
|
|
2479
|
-
color: var(--accent);
|
|
2575
|
+
color: var(--accent-ink);
|
|
2480
2576
|
}
|
|
2481
2577
|
|
|
2482
2578
|
/* List item reorder indicator */
|
|
@@ -2539,7 +2635,7 @@ input[type="checkbox"], input[type="radio"] {
|
|
|
2539
2635
|
}
|
|
2540
2636
|
.ds-context-menu-item:hover {
|
|
2541
2637
|
background: var(--bg-3);
|
|
2542
|
-
color: var(--accent);
|
|
2638
|
+
color: var(--accent-ink);
|
|
2543
2639
|
}
|
|
2544
2640
|
.ds-context-menu-item:active {
|
|
2545
2641
|
background: color-mix(in oklab, var(--accent) 20%, var(--bg-3));
|
|
@@ -2631,9 +2727,13 @@ textarea::placeholder {
|
|
|
2631
2727
|
color: var(--fg);
|
|
2632
2728
|
background: var(--bg-2);
|
|
2633
2729
|
border: 0;
|
|
2634
|
-
|
|
2730
|
+
/* Editorial field — tonal fill with a printed baseline rule that thickens to
|
|
2731
|
+
the electric lead on focus, instead of a uniform hairline box. */
|
|
2732
|
+
box-shadow: inset 0 0 0 var(--bw-hair, 1px) var(--rule),
|
|
2733
|
+
inset 0 calc(-1 * var(--bw-rule)) 0 var(--rule-strong);
|
|
2635
2734
|
border-radius: var(--r-2, 10px);
|
|
2636
2735
|
padding: 10px 14px;
|
|
2736
|
+
transition: box-shadow var(--dur-snap) var(--ease), background var(--dur-snap) var(--ease);
|
|
2637
2737
|
}
|
|
2638
2738
|
.ds-field textarea { min-height: calc(4 * 1.5em); resize: vertical; }
|
|
2639
2739
|
.ds-search-input::placeholder { color: var(--fg-3); }
|
|
@@ -2643,7 +2743,10 @@ textarea::placeholder {
|
|
|
2643
2743
|
.ds-field .ds-select:focus-visible,
|
|
2644
2744
|
.ds-search-input:focus-visible {
|
|
2645
2745
|
outline: none;
|
|
2646
|
-
|
|
2746
|
+
background: var(--bg);
|
|
2747
|
+
/* Focus thickens the baseline to the lead accent — the printed-rule tell. */
|
|
2748
|
+
box-shadow: inset 0 0 0 var(--bw-hair, 1px) var(--rule),
|
|
2749
|
+
inset 0 calc(-1 * var(--bw-chunk)) 0 var(--accent);
|
|
2647
2750
|
}
|
|
2648
2751
|
.ds-field input:disabled,
|
|
2649
2752
|
.ds-field textarea:disabled,
|