anentrypoint-design 0.0.144 → 0.0.145

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 CHANGED
@@ -183,6 +183,10 @@ pre .n { color: var(--green-2); }
183
183
  transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
184
184
  }
185
185
  .app-topbar nav a:hover { background: var(--bg-2); color: var(--fg); }
186
+ .app-topbar nav a:focus-visible {
187
+ outline: 2px solid var(--accent);
188
+ outline-offset: 2px;
189
+ }
186
190
  .app-topbar nav a.active {
187
191
  color: var(--accent-fg);
188
192
  background: var(--accent);
@@ -209,13 +213,9 @@ pre .n { color: var(--green-2); }
209
213
  font-family: inherit; font-size: inherit; color: var(--fg);
210
214
  width: 100%;
211
215
  }
212
- .app-search input:focus-visible {
216
+ .app-search:focus-within {
213
217
  outline: 2px solid var(--accent);
214
218
  outline-offset: 2px;
215
- background: var(--bg-2);
216
- border-radius: var(--r-pill);
217
- padding-left: 8px;
218
- padding-right: 8px;
219
219
  }
220
220
 
221
221
  .app-crumb {
@@ -252,6 +252,10 @@ pre .n { color: var(--green-2); }
252
252
  margin-bottom: 2px;
253
253
  }
254
254
  .app-side a:hover { background: var(--bg-2); color: var(--fg); }
255
+ .app-side a:focus-visible {
256
+ outline: 2px solid var(--accent);
257
+ outline-offset: 2px;
258
+ }
255
259
  .app-side a.active {
256
260
  color: var(--accent-fg);
257
261
  background: var(--accent);
@@ -309,6 +313,10 @@ pre .n { color: var(--green-2); }
309
313
  .btn-ghost { background: transparent; color: var(--fg); box-shadow: inset 0 0 0 1.5px var(--rule-strong); }
310
314
  .btn-ghost:hover { background: var(--bg-2); }
311
315
  .btn:active, .btn-primary:active, .btn-ghost:active { transform: translateY(1px); }
316
+ .btn:focus-visible, .btn-primary:focus-visible, .btn-ghost:focus-visible {
317
+ outline: 2px solid var(--accent);
318
+ outline-offset: 2px;
319
+ }
312
320
 
313
321
  .chip {
314
322
  display: inline-flex; align-items: center; gap: 6px;
@@ -1204,6 +1212,61 @@ table tr.clickable:hover td { background: var(--bg-2); }
1204
1212
  .ds-file-row[draggable="true"] { cursor: grab; }
1205
1213
  .ds-file-row[draggable="true"]:active { cursor: grabbing; }
1206
1214
 
1215
+ /* Multi-select — per-row checkbox overlay + selected state + bulk bar. */
1216
+ .ds-file-row { position: relative; }
1217
+ .ds-file-check {
1218
+ position: absolute; left: 4px; top: 50%; transform: translateY(-50%);
1219
+ width: 18px; height: 18px; padding: 0; z-index: 1;
1220
+ display: inline-flex; align-items: center; justify-content: center;
1221
+ border: var(--bw-hair) solid var(--rule); border-radius: 5px;
1222
+ background: var(--bg); color: var(--accent-fg);
1223
+ font-size: 11px; line-height: 1; cursor: pointer;
1224
+ opacity: 0; transition: opacity var(--dur-base) var(--ease), background var(--dur-snap) var(--ease);
1225
+ }
1226
+ .ds-file-row:hover .ds-file-check,
1227
+ .ds-file-row:focus-within .ds-file-check,
1228
+ .ds-file-check.on { opacity: 1; }
1229
+ /* Touch / coarse-pointer devices have no hover — keep checkboxes visible so
1230
+ multi-select is reachable without a pointer. */
1231
+ @media (hover: none), (pointer: coarse) {
1232
+ .ds-file-check { opacity: 1; }
1233
+ }
1234
+ .ds-file-check.on { background: var(--accent); border-color: var(--accent); }
1235
+ .ds-file-row.selected {
1236
+ background: var(--accent-tint);
1237
+ border-color: var(--accent);
1238
+ }
1239
+ .ds-file-row.selected:hover { background: color-mix(in oklab, var(--accent) 22%, var(--bg)); }
1240
+
1241
+ .ds-bulk-bar {
1242
+ display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-2);
1243
+ padding: 10px 14px; border-radius: var(--r-2);
1244
+ background: var(--accent-tint);
1245
+ border: var(--bw-hair) solid var(--accent);
1246
+ position: sticky; top: var(--space-2); z-index: 2;
1247
+ }
1248
+ .ds-bulk-count {
1249
+ font-weight: 600; font-size: var(--fs-sm); margin-right: auto;
1250
+ }
1251
+
1252
+ /* Keyboard-shortcuts hint — compact two-column legend. */
1253
+ .ds-shortcuts-hint {
1254
+ display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
1255
+ gap: 4px var(--space-3);
1256
+ padding: var(--space-3) var(--space-4);
1257
+ background: var(--bg-2); border: var(--bw-hair) solid var(--rule);
1258
+ border-radius: var(--r-2); font-size: var(--fs-xs);
1259
+ }
1260
+ .ds-shortcut-row { display: flex; align-items: center; gap: var(--space-2); }
1261
+ .ds-kbd {
1262
+ display: inline-block; min-width: 0;
1263
+ padding: 2px 7px; border-radius: 6px;
1264
+ background: var(--bg); border: var(--bw-hair) solid var(--rule);
1265
+ border-bottom-width: 2px;
1266
+ font-family: var(--ff-mono); font-size: var(--fs-micro); color: var(--fg-2);
1267
+ white-space: nowrap;
1268
+ }
1269
+
1207
1270
  /* ============================================================
1208
1271
  Theme toggle (segmented + compact) — bound to src/theme.js
1209
1272
  ============================================================ */
@@ -1279,7 +1342,7 @@ table tr.clickable:hover td { background: var(--bg-2); }
1279
1342
  .chat-msg { display: flex; gap: 12px; align-items: flex-start; padding: 6px 0; position: relative; min-width: 0; }
1280
1343
  .chat-msg.you { flex-direction: row-reverse; }
1281
1344
  .chat-msg.you .chat-stack { align-items: flex-end; }
1282
- .chat-msg:hover { background: color-mix(in oklab, var(--fg) 1%, transparent); padding: 6px 0; margin: 0; border-radius: 8px; transition: background var(--dur-base) var(--ease); }
1345
+ .chat-msg:hover { background: color-mix(in oklab, var(--fg) 4%, transparent); padding: 6px 0; margin: 0; border-radius: 8px; transition: background var(--dur-base) var(--ease); }
1283
1346
 
1284
1347
  .chat-avatar {
1285
1348
  width: 36px; height: 36px; flex-shrink: 0;
@@ -1607,6 +1670,11 @@ table tr.clickable:hover td { background: var(--bg-2); }
1607
1670
  .chat-composer button:hover { transform: scale(1.04); }
1608
1671
  .chat-composer .send:active,
1609
1672
  .chat-composer button:active { transform: scale(0.96); }
1673
+ .chat-composer .send:focus-visible,
1674
+ .chat-composer button:focus-visible {
1675
+ outline: 2px solid var(--accent);
1676
+ outline-offset: 2px;
1677
+ }
1610
1678
  .chat-composer .send:disabled,
1611
1679
  .chat-composer button:disabled {
1612
1680
  background: var(--bg-3); color: var(--fg-3); cursor: not-allowed; transform: none;
package/community.css CHANGED
@@ -275,9 +275,9 @@
275
275
  display: inline-flex;
276
276
  align-items: center;
277
277
  justify-content: center;
278
- width: 44px;
279
- height: 44px;
280
- padding: 8px;
278
+ width: 28px;
279
+ height: 28px;
280
+ padding: 4px;
281
281
  border: 0;
282
282
  background: transparent;
283
283
  color: var(--fg-3);
@@ -454,9 +454,9 @@
454
454
  .cm-channel-item.active .cm-ch-actions { opacity: 0.6; }
455
455
 
456
456
  .cm-ch-action-btn {
457
- width: 44px;
458
- height: 44px;
459
- padding: 8px;
457
+ width: 28px;
458
+ height: 28px;
459
+ padding: 4px;
460
460
  display: inline-flex;
461
461
  align-items: center;
462
462
  justify-content: center;
@@ -1024,6 +1024,12 @@
1024
1024
  border-radius: var(--r-1);
1025
1025
  }
1026
1026
 
1027
+ .cm-server-header:focus-visible,
1028
+ .cm-category-header:focus-visible {
1029
+ outline: 2px solid var(--accent);
1030
+ outline-offset: -2px;
1031
+ }
1032
+
1027
1033
  .cm-member-item:focus-visible {
1028
1034
  outline: 2px solid var(--accent);
1029
1035
  outline-offset: -2px;
@@ -1037,6 +1043,121 @@
1037
1043
  border-radius: var(--r-1);
1038
1044
  }
1039
1045
 
1046
+ /* ---------- mobile header ---------- */
1047
+ .cm-mobile-header {
1048
+ display: flex;
1049
+ align-items: center;
1050
+ gap: var(--space-2);
1051
+ height: 48px;
1052
+ padding: 0 var(--space-2);
1053
+ background: var(--bg-2);
1054
+ border-bottom: 1px solid var(--panel-3);
1055
+ }
1056
+ .cm-mh-btn {
1057
+ flex: none;
1058
+ display: inline-flex;
1059
+ align-items: center;
1060
+ justify-content: center;
1061
+ width: 36px;
1062
+ height: 36px;
1063
+ border: none;
1064
+ background: transparent;
1065
+ color: var(--fg);
1066
+ font-size: 18px;
1067
+ line-height: 1;
1068
+ cursor: pointer;
1069
+ border-radius: var(--r-1);
1070
+ }
1071
+ .cm-mh-btn:hover { background: var(--panel-3); }
1072
+ .cm-mh-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
1073
+ .cm-mh-title {
1074
+ flex: 1 1 auto;
1075
+ min-width: 0;
1076
+ font-family: var(--font-mono, monospace);
1077
+ font-weight: 600;
1078
+ color: var(--fg);
1079
+ white-space: nowrap;
1080
+ overflow: hidden;
1081
+ text-overflow: ellipsis;
1082
+ }
1083
+
1084
+ /* ---------- reply bar ---------- */
1085
+ .cm-reply-bar {
1086
+ display: flex;
1087
+ align-items: center;
1088
+ gap: var(--space-2);
1089
+ padding: var(--space-1) var(--space-2);
1090
+ background: var(--bg-2);
1091
+ border-left: 3px solid var(--accent);
1092
+ font-size: 0.85rem;
1093
+ }
1094
+ .cm-rb-label { flex: none; color: var(--fg-2); }
1095
+ .cm-rb-author { color: var(--accent); font-weight: 600; }
1096
+ .cm-rb-preview {
1097
+ flex: 1 1 auto;
1098
+ min-width: 0;
1099
+ color: var(--fg-2);
1100
+ white-space: nowrap;
1101
+ overflow: hidden;
1102
+ text-overflow: ellipsis;
1103
+ }
1104
+ .cm-rb-cancel {
1105
+ flex: none;
1106
+ width: 22px;
1107
+ height: 22px;
1108
+ border: none;
1109
+ background: transparent;
1110
+ color: var(--fg-2);
1111
+ font-size: 13px;
1112
+ line-height: 1;
1113
+ cursor: pointer;
1114
+ border-radius: var(--r-1);
1115
+ }
1116
+ .cm-rb-cancel:hover { background: var(--panel-3); color: var(--fg); }
1117
+ .cm-rb-cancel:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
1118
+
1119
+ /* ---------- banner ---------- */
1120
+ .cm-banner {
1121
+ display: flex;
1122
+ align-items: center;
1123
+ gap: var(--space-2);
1124
+ width: 100%;
1125
+ padding: var(--space-2) var(--space-3);
1126
+ font-size: 0.875rem;
1127
+ font-weight: 500;
1128
+ }
1129
+ .cm-banner.clickable { cursor: pointer; }
1130
+ .cm-banner-msg { flex: 1 1 auto; min-width: 0; }
1131
+ .cm-banner-action {
1132
+ flex: none;
1133
+ border: 1px solid currentColor;
1134
+ background: transparent;
1135
+ color: inherit;
1136
+ font: inherit;
1137
+ font-weight: 600;
1138
+ padding: 2px var(--space-2);
1139
+ border-radius: var(--r-1);
1140
+ cursor: pointer;
1141
+ }
1142
+ .cm-banner-action:hover { background: color-mix(in oklab, currentColor 16%, transparent); }
1143
+ .cm-banner-action:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
1144
+ .cm-banner.tone-warning {
1145
+ background: color-mix(in oklab, var(--flame) 18%, var(--bg));
1146
+ color: var(--flame);
1147
+ }
1148
+ .cm-banner.tone-success {
1149
+ background: color-mix(in oklab, var(--success) 18%, var(--bg));
1150
+ color: var(--success);
1151
+ }
1152
+ .cm-banner.tone-error {
1153
+ background: color-mix(in oklab, var(--danger) 18%, var(--bg));
1154
+ color: var(--danger);
1155
+ }
1156
+ .cm-banner.tone-info {
1157
+ background: var(--accent-tint);
1158
+ color: var(--accent);
1159
+ }
1160
+
1040
1161
  /* ---------- prefers-reduced-motion: kill the transitions that were not previously guarded ---------- */
1041
1162
  @media (prefers-reduced-motion: reduce) {
1042
1163
  .cm-server-icon,
@@ -1050,3 +1171,252 @@
1050
1171
  animation: none !important;
1051
1172
  }
1052
1173
  }
1174
+
1175
+ /* ============================================================
1176
+ Voice surfaces (vx-*) — PTT, VAD meter, webcam, settings, queue
1177
+ ============================================================ */
1178
+
1179
+ .vx-ptt {
1180
+ position: relative;
1181
+ display: inline-flex;
1182
+ flex-direction: column;
1183
+ align-items: center;
1184
+ justify-content: center;
1185
+ gap: var(--space-1);
1186
+ min-width: 120px;
1187
+ min-height: 120px;
1188
+ padding: var(--space-3);
1189
+ border: var(--bw-rule) solid var(--rule-strong);
1190
+ border-radius: var(--r-pill);
1191
+ background: var(--bg-2);
1192
+ color: var(--fg);
1193
+ font-family: var(--ff-body);
1194
+ font-size: var(--fs-sm);
1195
+ font-weight: 600;
1196
+ cursor: pointer;
1197
+ user-select: none;
1198
+ -webkit-user-select: none;
1199
+ touch-action: none;
1200
+ transition: background var(--dur-base) var(--ease), border-color var(--dur-base) var(--ease), transform var(--dur-snap) var(--ease);
1201
+ }
1202
+ .vx-ptt:active { transform: scale(0.97); }
1203
+ .vx-ptt-icon { font-size: var(--fs-xl); line-height: 1; }
1204
+ .vx-ptt-label { font-size: var(--fs-tiny); letter-spacing: var(--tr-label); text-transform: uppercase; }
1205
+ .vx-ptt-glow {
1206
+ position: absolute; inset: -4px;
1207
+ border-radius: inherit;
1208
+ pointer-events: none;
1209
+ opacity: 0;
1210
+ }
1211
+ .vx-ptt-recording, .vx-ptt-live {
1212
+ background: var(--accent);
1213
+ color: var(--accent-fg);
1214
+ border-color: var(--accent);
1215
+ }
1216
+ .vx-ptt-recording .vx-ptt-glow, .vx-ptt-live .vx-ptt-glow {
1217
+ opacity: 1;
1218
+ box-shadow: 0 0 0 0 color-mix(in oklab, var(--accent) 60%, transparent);
1219
+ animation: vx-pulse 1.4s var(--ease) infinite;
1220
+ }
1221
+ .vx-ptt-vad {
1222
+ border-color: var(--green-2);
1223
+ background: color-mix(in oklab, var(--green) 16%, var(--bg-2));
1224
+ }
1225
+ @keyframes vx-pulse {
1226
+ 0% { box-shadow: 0 0 0 0 color-mix(in oklab, var(--accent) 55%, transparent); }
1227
+ 70% { box-shadow: 0 0 0 14px color-mix(in oklab, var(--accent) 0%, transparent); }
1228
+ 100% { box-shadow: 0 0 0 0 color-mix(in oklab, var(--accent) 0%, transparent); }
1229
+ }
1230
+
1231
+ .vx-vad { display: flex; flex-direction: column; gap: var(--space-1); width: 100%; }
1232
+ .vx-vad-track {
1233
+ position: relative;
1234
+ height: 12px;
1235
+ border-radius: var(--r-pill);
1236
+ background: var(--bg-3);
1237
+ overflow: visible;
1238
+ }
1239
+ .vx-vad-fill {
1240
+ position: absolute; left: 0; top: 0; bottom: 0;
1241
+ border-radius: var(--r-pill);
1242
+ background: var(--fg-3);
1243
+ transition: width var(--dur-snap) linear;
1244
+ }
1245
+ .vx-vad-fill-over { background: var(--green); }
1246
+ .vx-vad-marker {
1247
+ position: absolute; top: -3px; bottom: -3px;
1248
+ width: var(--bw-rule);
1249
+ background: var(--accent);
1250
+ transform: translateX(-50%);
1251
+ pointer-events: none;
1252
+ }
1253
+ .vx-vad-range {
1254
+ position: absolute; inset: 0;
1255
+ width: 100%; height: 100%;
1256
+ margin: 0; opacity: 0;
1257
+ cursor: pointer;
1258
+ }
1259
+ .vx-vad-readout {
1260
+ display: flex; justify-content: space-between;
1261
+ font-family: var(--ff-mono);
1262
+ font-size: var(--fs-micro);
1263
+ color: var(--fg-3);
1264
+ }
1265
+
1266
+ .vx-cam { display: flex; flex-direction: column; gap: var(--space-2); }
1267
+ .vx-cam-stage {
1268
+ position: relative;
1269
+ aspect-ratio: 4 / 3;
1270
+ width: 100%;
1271
+ border-radius: var(--r-2);
1272
+ overflow: hidden;
1273
+ background: var(--bg-3);
1274
+ }
1275
+ .vx-cam-video { width: 100%; height: 100%; object-fit: cover; display: block; }
1276
+ .vx-cam-placeholder {
1277
+ position: absolute; inset: 0;
1278
+ display: flex; flex-direction: column;
1279
+ align-items: center; justify-content: center;
1280
+ gap: var(--space-2);
1281
+ color: var(--fg-3);
1282
+ font-size: var(--fs-sm);
1283
+ }
1284
+ .vx-cam-placeholder span:first-child { font-size: var(--fs-h3); }
1285
+ .vx-cam-controls { display: flex; gap: var(--space-2); align-items: center; }
1286
+ .vx-cam-controls .vx-select { flex: 1; }
1287
+
1288
+ .vx-select {
1289
+ appearance: none;
1290
+ padding: var(--space-1) var(--space-2);
1291
+ border: var(--bw-hair) solid var(--rule-strong);
1292
+ border-radius: var(--r-1);
1293
+ background: var(--bg-2);
1294
+ color: var(--fg);
1295
+ font-family: var(--ff-body);
1296
+ font-size: var(--fs-sm);
1297
+ cursor: pointer;
1298
+ }
1299
+ .vx-btn {
1300
+ padding: var(--space-1) var(--space-3);
1301
+ border: var(--bw-hair) solid var(--rule-strong);
1302
+ border-radius: var(--r-1);
1303
+ background: var(--bg-2);
1304
+ color: var(--fg);
1305
+ font-family: var(--ff-body);
1306
+ font-size: var(--fs-sm);
1307
+ font-weight: 600;
1308
+ cursor: pointer;
1309
+ transition: background var(--dur-base) var(--ease);
1310
+ }
1311
+ .vx-btn-on, .vx-btn-primary { background: var(--accent); color: var(--accent-fg); border-color: var(--accent); }
1312
+
1313
+ .vx-modal-backdrop {
1314
+ position: fixed; inset: 0;
1315
+ z-index: var(--z-modal);
1316
+ display: flex; align-items: center; justify-content: center;
1317
+ padding: var(--space-3);
1318
+ background: color-mix(in oklab, var(--ink) 55%, transparent);
1319
+ }
1320
+ .vx-modal {
1321
+ width: 100%; max-width: 440px;
1322
+ max-height: 90vh;
1323
+ display: flex; flex-direction: column;
1324
+ border-radius: var(--r-3);
1325
+ background: var(--bg);
1326
+ color: var(--fg);
1327
+ box-shadow: var(--shadow-3);
1328
+ overflow: hidden;
1329
+ }
1330
+ .vx-modal-head {
1331
+ display: flex; align-items: center; justify-content: space-between;
1332
+ padding: var(--space-3);
1333
+ border-bottom: var(--bw-hair) solid var(--rule);
1334
+ }
1335
+ .vx-modal-title { margin: 0; font-size: var(--fs-lg); font-weight: 600; }
1336
+ .vx-modal-x {
1337
+ border: 0; background: transparent; color: var(--fg-3);
1338
+ font-size: var(--fs-xl); line-height: 1; cursor: pointer; padding: 0 var(--space-1);
1339
+ }
1340
+ .vx-modal-body { padding: var(--space-3); overflow-y: auto; display: flex; flex-direction: column; gap: var(--space-3); }
1341
+ .vx-modal-foot {
1342
+ display: flex; justify-content: flex-end; gap: var(--space-2);
1343
+ padding: var(--space-3);
1344
+ border-top: var(--bw-hair) solid var(--rule);
1345
+ }
1346
+ .vx-section { display: flex; flex-direction: column; gap: var(--space-2); }
1347
+ .vx-section-label {
1348
+ font-family: var(--ff-mono);
1349
+ font-size: var(--fs-micro);
1350
+ letter-spacing: var(--tr-label);
1351
+ text-transform: uppercase;
1352
+ color: var(--fg-3);
1353
+ }
1354
+ .vx-segmented { display: flex; gap: var(--space-1); }
1355
+ .vx-seg {
1356
+ flex: 1;
1357
+ padding: var(--space-1) var(--space-2);
1358
+ border: var(--bw-hair) solid var(--rule-strong);
1359
+ border-radius: var(--r-1);
1360
+ background: var(--bg-2);
1361
+ color: var(--fg);
1362
+ font-family: var(--ff-body);
1363
+ font-size: var(--fs-tiny);
1364
+ font-weight: 600;
1365
+ letter-spacing: var(--tr-caps);
1366
+ cursor: pointer;
1367
+ }
1368
+ .vx-seg-on { background: var(--accent); color: var(--accent-fg); border-color: var(--accent); }
1369
+ .vx-range-row { display: flex; align-items: center; gap: var(--space-2); }
1370
+ .vx-range { flex: 1; accent-color: var(--accent); cursor: pointer; }
1371
+ .vx-range-val { font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-2); min-width: 56px; text-align: right; }
1372
+ .vx-toggle-row {
1373
+ display: flex; align-items: center; justify-content: space-between;
1374
+ font-size: var(--fs-sm);
1375
+ }
1376
+ .vx-toggle { accent-color: var(--accent); width: 18px; height: 18px; cursor: pointer; }
1377
+
1378
+ .vx-queue {
1379
+ display: flex; align-items: center; gap: var(--space-2);
1380
+ padding: var(--space-2);
1381
+ border-radius: var(--r-2);
1382
+ background: var(--bg-2);
1383
+ }
1384
+ .vx-queue-empty { justify-content: center; }
1385
+ .vx-queue-empty-text { color: var(--fg-3); font-size: var(--fs-tiny); font-family: var(--ff-mono); }
1386
+ .vx-queue-ctrls { display: flex; gap: var(--space-1); flex-shrink: 0; }
1387
+ .vx-queue-btn {
1388
+ width: 32px; height: 32px;
1389
+ display: inline-flex; align-items: center; justify-content: center;
1390
+ border: var(--bw-hair) solid var(--rule-strong);
1391
+ border-radius: var(--r-1);
1392
+ background: var(--bg-3);
1393
+ color: var(--fg);
1394
+ cursor: pointer;
1395
+ font-size: var(--fs-sm);
1396
+ }
1397
+ .vx-queue-strip {
1398
+ display: flex; gap: var(--space-2);
1399
+ overflow-x: auto;
1400
+ flex: 1;
1401
+ padding-bottom: 2px;
1402
+ }
1403
+ .vx-chip {
1404
+ display: inline-flex; align-items: center; gap: var(--space-1);
1405
+ flex-shrink: 0;
1406
+ padding: var(--space-1) var(--space-2);
1407
+ border: var(--bw-hair) solid var(--rule);
1408
+ border-radius: var(--r-pill);
1409
+ background: var(--bg-3);
1410
+ color: var(--fg);
1411
+ font-size: var(--fs-tiny);
1412
+ cursor: pointer;
1413
+ }
1414
+ .vx-chip-current { border-color: var(--accent); background: color-mix(in oklab, var(--accent) 16%, var(--bg-3)); }
1415
+ .vx-chip-live { border-color: var(--green-2); }
1416
+ .vx-chip-dot { width: 8px; height: 8px; border-radius: var(--r-pill); background: var(--fg-3); flex-shrink: 0; }
1417
+ .vx-chip-name { font-weight: 600; }
1418
+ .vx-chip-dur { font-family: var(--ff-mono); color: var(--fg-3); }
1419
+ .vx-chip-tag {
1420
+ font-family: var(--ff-mono); font-size: var(--fs-micro);
1421
+ color: var(--green); font-weight: 700; letter-spacing: var(--tr-caps);
1422
+ }