anentrypoint-design 0.0.379 → 0.0.381
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 +16 -0
- package/chat.css +102 -62
- package/colors_and_type.css +66 -7
- package/community.css +112 -70
- package/dist/247420.css +908 -308
- package/dist/247420.js +26 -23
- package/package.json +1 -1
- package/src/components/content.js +13 -4
- package/src/components/freddie/helpers.js +7 -0
- package/src/components/freddie.js +21 -21
- package/src/css/app-shell/base.css +11 -1
- package/src/css/app-shell/catalog-theme.css +7 -0
- package/src/css/app-shell/chat-polish.css +6 -1
- package/src/css/app-shell/data-density.css +22 -4
- package/src/css/app-shell/files.css +3 -3
- package/src/css/app-shell/hero-content.css +1 -1
- package/src/css/app-shell/kits-appended.css +387 -33
- package/src/css/app-shell/panel-row.css +6 -1
- package/src/css/app-shell/plugins-config.css +1 -1
- package/src/css/app-shell/responsive2-workspace.css +17 -12
- package/src/css/app-shell/states-interactions.css +9 -4
- package/src/kits/os/launcher.css +1 -1
- package/src/kits/os/theme.css +359 -283
- package/src/kits/os/wm.css +2 -2
- package/src/kits/slides/deck-stage-style.js +5 -2
- package/src/kits/spoint/host-join-lobby.css +1 -1
- package/src/kits/spoint/loading-screen.css +1 -1
package/community.css
CHANGED
|
@@ -4,6 +4,25 @@
|
|
|
4
4
|
All tokens sourced from colors_and_type.css.
|
|
5
5
|
============================================================ */
|
|
6
6
|
|
|
7
|
+
/* ============================================================
|
|
8
|
+
Small-label voice — the local composition of the house `.t-micro`
|
|
9
|
+
recipe (src/css/app-shell/base.css). This sheet is a standalone
|
|
10
|
+
published export consumed via its own <link>, so it cannot join the
|
|
11
|
+
`.t-micro` selector list; it composes by referencing the identical
|
|
12
|
+
token set instead. Every selector below that needs the label voice
|
|
13
|
+
JOINS this rule and declares only what it deliberately differs on —
|
|
14
|
+
never a second copy of these four declarations.
|
|
15
|
+
============================================================ */
|
|
16
|
+
.cm-vs-label,
|
|
17
|
+
.vx-section-label,
|
|
18
|
+
.vx-chip-tag {
|
|
19
|
+
font-family: var(--ff-mono);
|
|
20
|
+
font-size: var(--fs-micro);
|
|
21
|
+
text-transform: uppercase;
|
|
22
|
+
letter-spacing: var(--tr-label);
|
|
23
|
+
color: var(--fg-3);
|
|
24
|
+
}
|
|
25
|
+
|
|
7
26
|
/* ============================================================
|
|
8
27
|
Shell — top-level flex container for the community layout
|
|
9
28
|
============================================================ */
|
|
@@ -42,8 +61,8 @@
|
|
|
42
61
|
display: flex;
|
|
43
62
|
flex-direction: column;
|
|
44
63
|
align-items: center;
|
|
45
|
-
gap:
|
|
46
|
-
padding:
|
|
64
|
+
gap: var(--space-2);
|
|
65
|
+
padding: var(--space-2-75) 0;
|
|
47
66
|
background: color-mix(in oklab, var(--bg) 70%, var(--ink));
|
|
48
67
|
overflow-y: auto;
|
|
49
68
|
overflow-x: hidden;
|
|
@@ -112,7 +131,7 @@
|
|
|
112
131
|
right: -2px;
|
|
113
132
|
min-width: 18px;
|
|
114
133
|
height: 18px;
|
|
115
|
-
padding: 0
|
|
134
|
+
padding: 0 var(--space-1-5);
|
|
116
135
|
background: var(--warn);
|
|
117
136
|
color: var(--paper);
|
|
118
137
|
font-family: var(--ff-mono);
|
|
@@ -157,7 +176,7 @@
|
|
|
157
176
|
height: 2px;
|
|
158
177
|
background: color-mix(in oklab, var(--fg) 12%, transparent);
|
|
159
178
|
border-radius: var(--r-hair);
|
|
160
|
-
margin:
|
|
179
|
+
margin: var(--space-1) 0;
|
|
161
180
|
flex-shrink: 0;
|
|
162
181
|
}
|
|
163
182
|
|
|
@@ -178,8 +197,8 @@
|
|
|
178
197
|
display: flex;
|
|
179
198
|
align-items: center;
|
|
180
199
|
justify-content: space-between;
|
|
181
|
-
gap:
|
|
182
|
-
padding:
|
|
200
|
+
gap: var(--space-2);
|
|
201
|
+
padding: var(--space-2-75) var(--space-3);
|
|
183
202
|
background: var(--bg-2);
|
|
184
203
|
box-shadow: 0 1px 0 color-mix(in oklab, var(--fg) 8%, transparent);
|
|
185
204
|
font-weight: 600;
|
|
@@ -206,10 +225,10 @@
|
|
|
206
225
|
min-height: 0;
|
|
207
226
|
overflow-y: auto;
|
|
208
227
|
overflow-x: hidden;
|
|
209
|
-
padding:
|
|
228
|
+
padding: var(--space-2) 0 var(--space-3);
|
|
210
229
|
display: flex;
|
|
211
230
|
flex-direction: column;
|
|
212
|
-
gap:
|
|
231
|
+
gap: var(--space-hair);
|
|
213
232
|
scrollbar-width: thin;
|
|
214
233
|
scrollbar-color: color-mix(in oklab, var(--fg) 18%, transparent) transparent;
|
|
215
234
|
}
|
|
@@ -226,15 +245,15 @@
|
|
|
226
245
|
.cm-channel-category {
|
|
227
246
|
display: flex;
|
|
228
247
|
flex-direction: column;
|
|
229
|
-
margin-top:
|
|
248
|
+
margin-top: var(--space-2-75);
|
|
230
249
|
}
|
|
231
|
-
.cm-channel-category:first-child { margin-top:
|
|
250
|
+
.cm-channel-category:first-child { margin-top: var(--space-1); }
|
|
232
251
|
|
|
233
252
|
.cm-category-header {
|
|
234
253
|
display: flex;
|
|
235
254
|
align-items: center;
|
|
236
|
-
gap:
|
|
237
|
-
padding:
|
|
255
|
+
gap: var(--space-1);
|
|
256
|
+
padding: var(--space-1) var(--space-2);
|
|
238
257
|
font-family: var(--ff-body);
|
|
239
258
|
font-size: var(--fs-micro);
|
|
240
259
|
font-weight: 600;
|
|
@@ -268,6 +287,10 @@
|
|
|
268
287
|
text-overflow: ellipsis;
|
|
269
288
|
white-space: nowrap;
|
|
270
289
|
}
|
|
290
|
+
/* Deliberately NOT the small-label voice: this is the `+` affordance sitting
|
|
291
|
+
inside .cm-category-header, which IS uppercase + tracked. The zeroed
|
|
292
|
+
letter-spacing and text-transform are resets of that inherited voice, not a
|
|
293
|
+
copy of it — a bare glyph must not be tracked apart or case-folded. */
|
|
271
294
|
.cm-cat-extra {
|
|
272
295
|
font-family: var(--ff-mono);
|
|
273
296
|
font-size: var(--fs-micro);
|
|
@@ -282,7 +305,7 @@
|
|
|
282
305
|
justify-content: center;
|
|
283
306
|
width: 28px;
|
|
284
307
|
height: 28px;
|
|
285
|
-
padding:
|
|
308
|
+
padding: var(--space-1);
|
|
286
309
|
border: 0;
|
|
287
310
|
background: transparent;
|
|
288
311
|
color: var(--fg-3);
|
|
@@ -304,8 +327,11 @@
|
|
|
304
327
|
.cm-cat-channels {
|
|
305
328
|
display: flex;
|
|
306
329
|
flex-direction: column;
|
|
330
|
+
/* gap:1px is OFF-SCALE ON PURPOSE — channel rows are meant to read as one
|
|
331
|
+
near-continuous stack with only a hairline seam between them. --space-hair
|
|
332
|
+
(2px) doubles the seam and breaks the rows into visibly separate pills. */
|
|
307
333
|
gap: 1px;
|
|
308
|
-
padding:
|
|
334
|
+
padding: var(--space-hair) 0;
|
|
309
335
|
}
|
|
310
336
|
|
|
311
337
|
/* ============================================================
|
|
@@ -313,15 +339,15 @@
|
|
|
313
339
|
============================================================ */
|
|
314
340
|
.cm-channel-item-wrap {
|
|
315
341
|
position: relative;
|
|
316
|
-
padding: 0
|
|
342
|
+
padding: 0 var(--space-2);
|
|
317
343
|
}
|
|
318
344
|
|
|
319
345
|
.cm-channel-item {
|
|
320
346
|
position: relative;
|
|
321
347
|
display: flex;
|
|
322
348
|
align-items: center;
|
|
323
|
-
gap:
|
|
324
|
-
padding:
|
|
349
|
+
gap: var(--space-2);
|
|
350
|
+
padding: var(--space-1-75) var(--space-2);
|
|
325
351
|
border-radius: var(--r-1);
|
|
326
352
|
color: var(--fg-3);
|
|
327
353
|
cursor: pointer;
|
|
@@ -437,7 +463,7 @@
|
|
|
437
463
|
flex-shrink: 0;
|
|
438
464
|
min-width: 16px;
|
|
439
465
|
height: 16px;
|
|
440
|
-
padding: 0
|
|
466
|
+
padding: 0 var(--space-1-5);
|
|
441
467
|
background: var(--warn);
|
|
442
468
|
color: var(--paper);
|
|
443
469
|
font-family: var(--ff-mono);
|
|
@@ -453,7 +479,7 @@
|
|
|
453
479
|
.cm-ch-actions {
|
|
454
480
|
display: inline-flex;
|
|
455
481
|
align-items: center;
|
|
456
|
-
gap:
|
|
482
|
+
gap: var(--space-hair);
|
|
457
483
|
opacity: 0;
|
|
458
484
|
transition: opacity var(--dur-snap) var(--ease);
|
|
459
485
|
flex-shrink: 0;
|
|
@@ -463,7 +489,7 @@
|
|
|
463
489
|
.cm-ch-action-btn {
|
|
464
490
|
width: 28px;
|
|
465
491
|
height: 28px;
|
|
466
|
-
padding:
|
|
492
|
+
padding: var(--space-1);
|
|
467
493
|
display: inline-flex;
|
|
468
494
|
align-items: center;
|
|
469
495
|
justify-content: center;
|
|
@@ -488,15 +514,16 @@
|
|
|
488
514
|
.cm-ch-voice-users {
|
|
489
515
|
display: flex;
|
|
490
516
|
flex-direction: column;
|
|
517
|
+
/* gap:1px — same hairline-seam rationale as .cm-cat-channels above. */
|
|
491
518
|
gap: 1px;
|
|
492
|
-
padding:
|
|
519
|
+
padding: var(--space-hair) var(--space-2) var(--space-1) var(--space-5);
|
|
493
520
|
}
|
|
494
521
|
|
|
495
522
|
.cm-ch-voice-user {
|
|
496
523
|
display: flex;
|
|
497
524
|
align-items: center;
|
|
498
|
-
gap:
|
|
499
|
-
padding:
|
|
525
|
+
gap: var(--space-2);
|
|
526
|
+
padding: var(--space-half) var(--space-1-75);
|
|
500
527
|
border-radius: var(--r-1);
|
|
501
528
|
color: var(--fg-2);
|
|
502
529
|
font-size: var(--fs-xs);
|
|
@@ -550,8 +577,8 @@
|
|
|
550
577
|
.cm-voice-strip {
|
|
551
578
|
display: none;
|
|
552
579
|
flex-direction: column;
|
|
553
|
-
gap:
|
|
554
|
-
padding:
|
|
580
|
+
gap: var(--space-2);
|
|
581
|
+
padding: var(--space-2-5) var(--space-2-75);
|
|
555
582
|
background: color-mix(in oklab, var(--green) 18%, var(--bg-2));
|
|
556
583
|
color: var(--fg);
|
|
557
584
|
box-shadow: 0 -1px 0 color-mix(in oklab, var(--fg) 10%, transparent);
|
|
@@ -559,16 +586,15 @@
|
|
|
559
586
|
}
|
|
560
587
|
.cm-voice-strip.open { display: flex; }
|
|
561
588
|
|
|
589
|
+
/* Joins the small-label voice above. Deliberate overrides: --green (this is a
|
|
590
|
+
live-recording indicator, not neutral chrome) and weight 700 (it sits next to
|
|
591
|
+
a pulsing dot and must read as the loudest thing in the strip). */
|
|
562
592
|
.cm-vs-label {
|
|
563
|
-
font-family: var(--ff-mono);
|
|
564
|
-
font-size: var(--fs-micro);
|
|
565
|
-
text-transform: uppercase;
|
|
566
|
-
letter-spacing: var(--tr-caps);
|
|
567
593
|
color: var(--green);
|
|
568
594
|
font-weight: 700;
|
|
569
595
|
display: inline-flex;
|
|
570
596
|
align-items: center;
|
|
571
|
-
gap:
|
|
597
|
+
gap: var(--space-1-75);
|
|
572
598
|
}
|
|
573
599
|
.cm-vs-label::before {
|
|
574
600
|
content: '';
|
|
@@ -602,7 +628,7 @@
|
|
|
602
628
|
color: var(--fg-2);
|
|
603
629
|
display: flex;
|
|
604
630
|
align-items: center;
|
|
605
|
-
gap:
|
|
631
|
+
gap: var(--space-1-75);
|
|
606
632
|
flex-wrap: wrap;
|
|
607
633
|
}
|
|
608
634
|
|
|
@@ -610,9 +636,9 @@
|
|
|
610
636
|
display: inline-flex;
|
|
611
637
|
align-items: center;
|
|
612
638
|
justify-content: center;
|
|
613
|
-
gap:
|
|
639
|
+
gap: var(--space-1-75);
|
|
614
640
|
height: 28px;
|
|
615
|
-
padding: 0
|
|
641
|
+
padding: 0 var(--space-2-5);
|
|
616
642
|
background: color-mix(in oklab, var(--fg) 10%, transparent);
|
|
617
643
|
color: var(--fg);
|
|
618
644
|
border: 0;
|
|
@@ -640,8 +666,8 @@
|
|
|
640
666
|
.cm-user-panel {
|
|
641
667
|
display: flex;
|
|
642
668
|
align-items: center;
|
|
643
|
-
gap:
|
|
644
|
-
padding:
|
|
669
|
+
gap: var(--space-2);
|
|
670
|
+
padding: var(--space-2);
|
|
645
671
|
background: color-mix(in oklab, var(--fg) 5%, var(--bg-2));
|
|
646
672
|
flex-shrink: 0;
|
|
647
673
|
}
|
|
@@ -694,6 +720,8 @@
|
|
|
694
720
|
text-overflow: ellipsis;
|
|
695
721
|
white-space: nowrap;
|
|
696
722
|
}
|
|
723
|
+
/* Deliberately NOT the small-label voice: a user's handle/tag is content, not
|
|
724
|
+
chrome, so it stays sentence-case and untracked. Mono + micro + --fg-3 only. */
|
|
697
725
|
.cm-user-tag {
|
|
698
726
|
font-family: var(--ff-mono);
|
|
699
727
|
font-size: var(--fs-micro);
|
|
@@ -706,7 +734,7 @@
|
|
|
706
734
|
.cm-user-controls {
|
|
707
735
|
display: inline-flex;
|
|
708
736
|
align-items: center;
|
|
709
|
-
gap:
|
|
737
|
+
gap: var(--space-hair);
|
|
710
738
|
}
|
|
711
739
|
|
|
712
740
|
.cm-user-btn {
|
|
@@ -741,8 +769,8 @@
|
|
|
741
769
|
.cm-chat-header {
|
|
742
770
|
display: flex;
|
|
743
771
|
align-items: center;
|
|
744
|
-
gap:
|
|
745
|
-
padding:
|
|
772
|
+
gap: var(--space-2-5);
|
|
773
|
+
padding: var(--space-2-75) var(--space-3);
|
|
746
774
|
background: var(--bg);
|
|
747
775
|
box-shadow: 0 1px 0 color-mix(in oklab, var(--fg) 8%, transparent);
|
|
748
776
|
flex-shrink: 0;
|
|
@@ -772,8 +800,8 @@
|
|
|
772
800
|
.cm-chat-header-topic {
|
|
773
801
|
flex: 1;
|
|
774
802
|
min-width: 0;
|
|
775
|
-
padding-left:
|
|
776
|
-
margin-left:
|
|
803
|
+
padding-left: var(--space-2-75);
|
|
804
|
+
margin-left: var(--space-1);
|
|
777
805
|
border-left: 1px solid color-mix(in oklab, var(--fg) 12%, transparent);
|
|
778
806
|
color: var(--fg-3);
|
|
779
807
|
font-size: var(--fs-xs);
|
|
@@ -785,7 +813,7 @@
|
|
|
785
813
|
.cm-chat-header-toolbar {
|
|
786
814
|
display: inline-flex;
|
|
787
815
|
align-items: center;
|
|
788
|
-
gap:
|
|
816
|
+
gap: var(--space-1);
|
|
789
817
|
flex-shrink: 0;
|
|
790
818
|
}
|
|
791
819
|
|
|
@@ -801,7 +829,7 @@
|
|
|
801
829
|
overflow-y: auto;
|
|
802
830
|
overflow-x: hidden;
|
|
803
831
|
background: var(--bg-2);
|
|
804
|
-
padding:
|
|
832
|
+
padding: var(--space-3) 0;
|
|
805
833
|
scrollbar-width: thin;
|
|
806
834
|
scrollbar-color: color-mix(in oklab, var(--fg) 18%, transparent) transparent;
|
|
807
835
|
transition: width var(--dur-base) var(--ease), flex-basis var(--dur-base) var(--ease);
|
|
@@ -823,7 +851,7 @@
|
|
|
823
851
|
}
|
|
824
852
|
|
|
825
853
|
.cm-member-category {
|
|
826
|
-
padding:
|
|
854
|
+
padding: var(--space-2-75) var(--space-3) var(--space-1-75);
|
|
827
855
|
font-family: var(--ff-body);
|
|
828
856
|
font-size: var(--fs-micro);
|
|
829
857
|
font-weight: 600;
|
|
@@ -835,9 +863,9 @@
|
|
|
835
863
|
.cm-member-item {
|
|
836
864
|
display: flex;
|
|
837
865
|
align-items: center;
|
|
838
|
-
gap:
|
|
839
|
-
padding:
|
|
840
|
-
margin: 0
|
|
866
|
+
gap: var(--space-2-5);
|
|
867
|
+
padding: var(--space-1-75) var(--space-2-75);
|
|
868
|
+
margin: 0 var(--space-2);
|
|
841
869
|
border-radius: var(--r-1);
|
|
842
870
|
color: var(--fg-2);
|
|
843
871
|
cursor: pointer;
|
|
@@ -902,8 +930,8 @@
|
|
|
902
930
|
display: inline-flex;
|
|
903
931
|
flex-direction: column;
|
|
904
932
|
align-items: center;
|
|
905
|
-
gap:
|
|
906
|
-
padding:
|
|
933
|
+
gap: var(--space-1-75);
|
|
934
|
+
padding: var(--space-2-5);
|
|
907
935
|
border-radius: var(--r-2);
|
|
908
936
|
background: var(--bg-2);
|
|
909
937
|
transition: box-shadow var(--dur-snap) var(--ease), background var(--dur-snap) var(--ease);
|
|
@@ -953,7 +981,7 @@
|
|
|
953
981
|
@media (max-width: 900px) {
|
|
954
982
|
.cm-channel-sidebar {
|
|
955
983
|
position: absolute;
|
|
956
|
-
z-index:
|
|
984
|
+
z-index: calc(var(--z-drawer) + 1);
|
|
957
985
|
top: 0;
|
|
958
986
|
left: 72px;
|
|
959
987
|
bottom: 0;
|
|
@@ -966,7 +994,7 @@
|
|
|
966
994
|
.cm-member-list.open {
|
|
967
995
|
display: flex;
|
|
968
996
|
position: absolute;
|
|
969
|
-
z-index:
|
|
997
|
+
z-index: calc(var(--z-drawer) + 1);
|
|
970
998
|
top: 0;
|
|
971
999
|
right: 0;
|
|
972
1000
|
bottom: 0;
|
|
@@ -986,7 +1014,7 @@
|
|
|
986
1014
|
content: '';
|
|
987
1015
|
position: absolute;
|
|
988
1016
|
inset: 0;
|
|
989
|
-
z-index:
|
|
1017
|
+
z-index: var(--z-drawer);
|
|
990
1018
|
background: color-mix(in oklab, var(--ink) 40%, transparent);
|
|
991
1019
|
pointer-events: none;
|
|
992
1020
|
}
|
|
@@ -1002,7 +1030,7 @@
|
|
|
1002
1030
|
.cm-server-back {
|
|
1003
1031
|
width: 44px;
|
|
1004
1032
|
height: 44px;
|
|
1005
|
-
padding:
|
|
1033
|
+
padding: var(--space-1);
|
|
1006
1034
|
}
|
|
1007
1035
|
.cm-channel-sidebar,
|
|
1008
1036
|
.cm-channel-sidebar.open {
|
|
@@ -1148,7 +1176,12 @@
|
|
|
1148
1176
|
gap: var(--space-2);
|
|
1149
1177
|
padding: var(--space-1) var(--space-2);
|
|
1150
1178
|
background: var(--bg-2);
|
|
1151
|
-
|
|
1179
|
+
/* Hairline, not a 3px accent bar. This is a transient status strip pinned
|
|
1180
|
+
above the composer (role=status, "Replying to <author>"), not a card or a
|
|
1181
|
+
callout — the tinted fill already carries the attachment. A chunky left
|
|
1182
|
+
bar here was the generic accent-stripe tell; the real accent still lands
|
|
1183
|
+
on .cm-rb-author. */
|
|
1184
|
+
border-left: var(--bw-hair) solid var(--rule-strong);
|
|
1152
1185
|
font-size: 0.85rem;
|
|
1153
1186
|
}
|
|
1154
1187
|
.cm-rb-label { flex: none; color: var(--fg-2); }
|
|
@@ -1196,7 +1229,7 @@
|
|
|
1196
1229
|
color: inherit;
|
|
1197
1230
|
font: inherit;
|
|
1198
1231
|
font-weight: 600;
|
|
1199
|
-
padding:
|
|
1232
|
+
padding: var(--space-hair) var(--space-2);
|
|
1200
1233
|
border-radius: var(--r-1);
|
|
1201
1234
|
cursor: pointer;
|
|
1202
1235
|
}
|
|
@@ -1279,6 +1312,14 @@
|
|
|
1279
1312
|
the glow's -4px bleed without overflowing the viewport edge. */
|
|
1280
1313
|
.vx-ptt-glow { inset: -4px 0; }
|
|
1281
1314
|
}
|
|
1315
|
+
@media (max-height: 420px) {
|
|
1316
|
+
/* Phone-in-landscape: topbar + chat-head + user-identity bar alone can
|
|
1317
|
+
consume most of a ~320px-tall viewport, leaving no room for the fixed
|
|
1318
|
+
120px .vx-ptt plus the voice grid above it -- shrink the PTT button so
|
|
1319
|
+
both remain visible instead of the label clipping off-screen. */
|
|
1320
|
+
.vx-ptt { min-width: 88px; min-height: 64px; padding: var(--space-2); }
|
|
1321
|
+
.vx-ptt-icon { font-size: var(--fs-lg); }
|
|
1322
|
+
}
|
|
1282
1323
|
.vx-ptt-recording, .vx-ptt-live {
|
|
1283
1324
|
background: var(--accent);
|
|
1284
1325
|
color: var(--accent-fg);
|
|
@@ -1418,13 +1459,7 @@
|
|
|
1418
1459
|
border-top: var(--bw-hair) solid var(--rule);
|
|
1419
1460
|
}
|
|
1420
1461
|
.vx-section { display: flex; flex-direction: column; gap: var(--space-2); }
|
|
1421
|
-
|
|
1422
|
-
font-family: var(--ff-mono);
|
|
1423
|
-
font-size: var(--fs-micro);
|
|
1424
|
-
letter-spacing: var(--tr-label);
|
|
1425
|
-
text-transform: uppercase;
|
|
1426
|
-
color: var(--fg-3);
|
|
1427
|
-
}
|
|
1462
|
+
/* Joins the small-label voice above with no overrides — it IS the plain voice. */
|
|
1428
1463
|
.vx-segmented { display: flex; gap: var(--space-1); }
|
|
1429
1464
|
.vx-seg {
|
|
1430
1465
|
flex: 1;
|
|
@@ -1473,7 +1508,7 @@
|
|
|
1473
1508
|
display: flex; gap: var(--space-2);
|
|
1474
1509
|
overflow-x: auto;
|
|
1475
1510
|
flex: 1;
|
|
1476
|
-
padding-bottom:
|
|
1511
|
+
padding-bottom: var(--space-hair);
|
|
1477
1512
|
}
|
|
1478
1513
|
.vx-chip {
|
|
1479
1514
|
display: inline-flex; align-items: center; gap: var(--space-1);
|
|
@@ -1492,9 +1527,11 @@
|
|
|
1492
1527
|
.vx-chip-dot { width: 8px; height: 8px; border-radius: var(--r-pill); background: var(--fg-3); flex-shrink: 0; }
|
|
1493
1528
|
.vx-chip-name { font-weight: 600; }
|
|
1494
1529
|
.vx-chip-dur { font-family: var(--ff-mono); color: var(--fg-3); }
|
|
1530
|
+
/* Joins the small-label voice above. Deliberate overrides: --green + weight 700
|
|
1531
|
+
because this is the "LIVE" badge on a session chip, same signal role as
|
|
1532
|
+
.cm-vs-label. */
|
|
1495
1533
|
.vx-chip-tag {
|
|
1496
|
-
|
|
1497
|
-
color: var(--green); font-weight: 700; letter-spacing: var(--tr-caps);
|
|
1534
|
+
color: var(--green); font-weight: 700;
|
|
1498
1535
|
}
|
|
1499
1536
|
|
|
1500
1537
|
/* VoiceControls — vx-vc-* */
|
|
@@ -1529,7 +1566,7 @@
|
|
|
1529
1566
|
@media (max-width: 900px) {
|
|
1530
1567
|
.cm-thread-panel {
|
|
1531
1568
|
position: absolute;
|
|
1532
|
-
z-index:
|
|
1569
|
+
z-index: calc(var(--z-drawer) + 1);
|
|
1533
1570
|
top: 0; right: 0; bottom: 0;
|
|
1534
1571
|
height: auto;
|
|
1535
1572
|
width: min(320px, 90vw);
|
|
@@ -1550,7 +1587,7 @@
|
|
|
1550
1587
|
.cm-tp-list { flex: 1; min-height: 0; overflow-y: auto; }
|
|
1551
1588
|
.cm-tp-item {
|
|
1552
1589
|
position: relative; /* anchors .cm-tp-dot to the row, not the panel */
|
|
1553
|
-
display: flex; flex-direction: column; gap:
|
|
1590
|
+
display: flex; flex-direction: column; gap: var(--space-hair);
|
|
1554
1591
|
width: 100%; text-align: left; cursor: pointer;
|
|
1555
1592
|
padding: var(--space-2); border: none; background: transparent;
|
|
1556
1593
|
border-bottom: var(--bw-hair) solid var(--rule);
|
|
@@ -1575,7 +1612,7 @@
|
|
|
1575
1612
|
list surface in the kit uses one shimmer language, never a bare spinner. */
|
|
1576
1613
|
.cm-channel-item-skeleton, .cm-member-item-skeleton {
|
|
1577
1614
|
display: flex; align-items: center; gap: var(--space-2);
|
|
1578
|
-
padding: var(--space-2); margin:
|
|
1615
|
+
padding: var(--space-2); margin: var(--space-hair) var(--space-1);
|
|
1579
1616
|
}
|
|
1580
1617
|
.cm-channel-item-skeleton .ds-skel-icon, .cm-member-item-skeleton .ds-skel-icon {
|
|
1581
1618
|
width: 20px; height: 20px; border-radius: var(--r-round, 50%); flex: none; background: var(--bg-3);
|
|
@@ -1584,7 +1621,7 @@
|
|
|
1584
1621
|
height: 12px; width: 60%; border-radius: var(--r-1); background: var(--bg-3);
|
|
1585
1622
|
}
|
|
1586
1623
|
.cm-list-item-skeleton {
|
|
1587
|
-
display: flex; flex-direction: column; gap:
|
|
1624
|
+
display: flex; flex-direction: column; gap: var(--space-1-75);
|
|
1588
1625
|
padding: var(--space-2) var(--space-3); border-bottom: var(--bw-hair) solid var(--rule);
|
|
1589
1626
|
}
|
|
1590
1627
|
.cm-list-item-skeleton .ds-skel-title { height: 12px; width: 55%; border-radius: var(--r-1); background: var(--bg-3); }
|
|
@@ -1618,8 +1655,10 @@
|
|
|
1618
1655
|
.cm-forum-item-replies { font-size: var(--fs-0, 12px); color: var(--fg-2, var(--fg)); opacity: .8; white-space: nowrap; }
|
|
1619
1656
|
.cm-forum-item-snippet { font-size: var(--fs-0, 12px); color: var(--fg-2, var(--fg)); opacity: .85; }
|
|
1620
1657
|
.cm-forum-item-meta { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; font-size: var(--fs-micro, 11px); color: var(--fg-2, var(--fg)); opacity: .7; }
|
|
1621
|
-
.cm-forum-item-tags { display: inline-flex; gap:
|
|
1622
|
-
|
|
1658
|
+
.cm-forum-item-tags { display: inline-flex; gap: var(--space-1); }
|
|
1659
|
+
/* 1px vertical is OFF-SCALE ON PURPOSE — the tag is an inline chip inside the
|
|
1660
|
+
forum meta row; --space-hair (2px) tips it past the row height. */
|
|
1661
|
+
.cm-forum-tag { padding: 1px var(--space-1-75); border-radius: var(--r-1); background: var(--bg-3); border: var(--bw-hair) solid var(--rule); }
|
|
1623
1662
|
|
|
1624
1663
|
/* PageView — cm-page / cm-page-* */
|
|
1625
1664
|
.cm-page { display: flex; flex-direction: column; height: 100%; min-height: 0; overflow-y: auto; background: var(--bg-1, var(--bg-2)); color: var(--fg); }
|
|
@@ -1646,6 +1685,9 @@
|
|
|
1646
1685
|
.fd-chat-thread { flex: 1 1 auto; min-height: 240px; overflow-y: auto; display: flex; flex-direction: column; gap: var(--space-2, 10px); padding: var(--space-2, 10px); }
|
|
1647
1686
|
.fd-page-error { white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
1648
1687
|
/* Visually-hidden polite live region — announces async busy/done to SR users. */
|
|
1688
|
+
/* margin:-1px is OFF-SCALE ON PURPOSE — the canonical visually-hidden idiom;
|
|
1689
|
+
the negative margin cancels the 1px box so the live region contributes zero
|
|
1690
|
+
layout. A --space-* rung would reintroduce a measurable gap. */
|
|
1649
1691
|
.fd-sr-live { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
|
|
1650
1692
|
/* page-level responsive: tighten padding on narrow viewports */
|
|
1651
1693
|
@media (max-width: 640px) {
|