anentrypoint-design 0.0.240 → 0.0.242
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 +88 -75
- package/chat.css +25 -22
- package/colors_and_type.css +25 -29
- package/community.css +63 -18
- package/dist/247420.css +227 -166
- package/dist/247420.js +23 -27
- package/package.json +1 -1
- package/src/community-app.js +1 -1
- package/src/components/community.js +46 -12
- package/src/components/content.js +8 -6
- package/src/components/shell.js +1 -1
- package/src/kits/os/freddie-dashboard.css +5 -5
- package/src/kits/os/icons.js +38 -16
- package/src/kits/os/theme.css +35 -35
- package/src/kits/spoint/loading-screen.css +1 -1
- package/src/page-html.js +9 -13
package/dist/247420.css
CHANGED
|
@@ -7,20 +7,9 @@
|
|
|
7
7
|
Source-of-truth tokens. Component sheet lives in app-shell.css.
|
|
8
8
|
============================================================ */
|
|
9
9
|
|
|
10
|
-
@import
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
loads, text falls back to Arial with size-adjust tuned to its cap-height so
|
|
14
|
-
the oversized hero does not reflow on swap. Referenced first in --ff-display
|
|
15
|
-
via the 'Bricolage Grotesque' family; this only kicks in for the fallback
|
|
16
|
-
glyphs. */
|
|
17
|
-
@font-face {
|
|
18
|
-
font-family: 'Bricolage Grotesque Fallback';
|
|
19
|
-
src: local('Arial');
|
|
20
|
-
size-adjust: 99%;
|
|
21
|
-
ascent-override: 94%;
|
|
22
|
-
descent-override: 24%;
|
|
23
|
-
}
|
|
10
|
+
/* System-font stack only — no web-font @import/@font-face. Every --ff-*
|
|
11
|
+
token below is the same fallback chain that used to sit after the custom
|
|
12
|
+
family names; removing the custom names just exposes it directly. */
|
|
24
13
|
|
|
25
14
|
.ds-247420 {
|
|
26
15
|
/* Tree view indentation tokens */
|
|
@@ -132,15 +121,11 @@
|
|
|
132
121
|
--panel-accent-2: var(--accent-bright, var(--accent));
|
|
133
122
|
--panel-shadow: 0 1px 0 color-mix(in oklab, var(--fg) 6%, transparent), 0 4px 14px color-mix(in oklab, var(--fg) 8%, transparent);
|
|
134
123
|
|
|
135
|
-
/* Type —
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
--ff-display: 'Bricolage Grotesque', 'Bricolage Grotesque Fallback', 'Hanken Grotesk', system-ui, sans-serif;
|
|
141
|
-
--ff-narrow: 'Bricolage Grotesque', 'Bricolage Grotesque Fallback', 'Hanken Grotesk', system-ui, sans-serif;
|
|
142
|
-
--ff-body: 'Hanken Grotesk', system-ui, sans-serif;
|
|
143
|
-
--ff-mono: 'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace;
|
|
124
|
+
/* Type — system-font stack, no custom web fonts loaded. */
|
|
125
|
+
--ff-display: system-ui, sans-serif;
|
|
126
|
+
--ff-narrow: system-ui, sans-serif;
|
|
127
|
+
--ff-body: system-ui, sans-serif;
|
|
128
|
+
--ff-mono: ui-monospace, Menlo, Consolas, monospace;
|
|
144
129
|
|
|
145
130
|
--fs-micro: 12px;
|
|
146
131
|
--fs-tiny: 13px;
|
|
@@ -202,10 +187,14 @@
|
|
|
202
187
|
--rule: color-mix(in oklab, currentColor 14%, transparent);
|
|
203
188
|
--rule-strong: color-mix(in oklab, currentColor 28%, transparent);
|
|
204
189
|
|
|
190
|
+
/* Micro rungs below --r-1 — chips, badges, scrollbar thumbs, tick marks
|
|
191
|
+
genuinely want a tighter corner than 10px; without these two tokens the
|
|
192
|
+
component sheets fell back to raw px literals bypassing the scale. */
|
|
193
|
+
--r-hair: 2px;
|
|
194
|
+
--r-0: 4px;
|
|
205
195
|
--r-1: 10px;
|
|
206
196
|
--r-2: 14px;
|
|
207
197
|
--r-3: 22px;
|
|
208
|
-
--r-4: 32px;
|
|
209
198
|
--r-pill: 999px;
|
|
210
199
|
|
|
211
200
|
--dur-snap: 80ms;
|
|
@@ -235,6 +224,10 @@
|
|
|
235
224
|
--measure: 68ch;
|
|
236
225
|
--measure-wide: 940px;
|
|
237
226
|
--measure-narrow: 760px;
|
|
227
|
+
/* Page-stage ceiling — independent of --measure-wide (which stays the
|
|
228
|
+
narrower editorial hero/prose measure). Fluid so ultra-wide viewports
|
|
229
|
+
actually gain real estate instead of flat-lining at a fixed px cap. */
|
|
230
|
+
--stage-wide: min(96vw, 1440px);
|
|
238
231
|
|
|
239
232
|
--sidebar-width: 220px;
|
|
240
233
|
--sidebar-width-collapsed: 64px;
|
|
@@ -249,8 +242,11 @@
|
|
|
249
242
|
/* Unified focus-ring tokens (single source for the design system). Outset
|
|
250
243
|
rings (the default) tokenize colour+width+offset; bordered text fields use
|
|
251
244
|
the inset variant. Deliberate negative offsets on edge-flush/clipping
|
|
252
|
-
containers stay literal.
|
|
253
|
-
|
|
245
|
+
containers stay literal. --focus-color uses --accent-ink (the readable
|
|
246
|
+
text/UI-boundary tone), never bare --accent (the lime FILL token, which
|
|
247
|
+
measures ~1.07:1 against --paper and is nearly invisible as an outline —
|
|
248
|
+
see AGENTS.md token-split rule). */
|
|
249
|
+
--focus-color: var(--accent-ink);
|
|
254
250
|
--focus-w: 2px;
|
|
255
251
|
--focus-offset: 2px;
|
|
256
252
|
--focus-ring-inset: inset 0 0 0 var(--focus-w) var(--focus-color);
|
|
@@ -275,7 +271,7 @@
|
|
|
275
271
|
/* Link focus-visible */
|
|
276
272
|
.ds-247420 a:focus-visible,
|
|
277
273
|
.ds-247420[role="link"]:focus-visible {
|
|
278
|
-
outline: 2px solid var(--accent);
|
|
274
|
+
outline: 2px solid var(--accent-ink);
|
|
279
275
|
outline-offset: 2px;
|
|
280
276
|
}
|
|
281
277
|
|
|
@@ -283,13 +279,13 @@
|
|
|
283
279
|
.ds-247420 input:focus-visible,
|
|
284
280
|
.ds-247420 textarea:focus-visible,
|
|
285
281
|
.ds-247420 select:focus-visible {
|
|
286
|
-
outline: 2px solid var(--accent);
|
|
282
|
+
outline: 2px solid var(--accent-ink);
|
|
287
283
|
outline-offset: 2px;
|
|
288
284
|
}
|
|
289
285
|
|
|
290
286
|
/* Interactive element focus-visible */
|
|
291
287
|
.ds-247420[tabindex]:focus-visible {
|
|
292
|
-
outline: 2px solid var(--accent);
|
|
288
|
+
outline: 2px solid var(--accent-ink);
|
|
293
289
|
outline-offset: 2px;
|
|
294
290
|
}
|
|
295
291
|
|
|
@@ -502,10 +498,9 @@
|
|
|
502
498
|
/* app-shell.css */
|
|
503
499
|
/* ============================================================
|
|
504
500
|
247420 design system — component sheet
|
|
505
|
-
"Acid Editorial":
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
hairlines.
|
|
501
|
+
"Acid Editorial": system-font display + body + mono, no custom web fonts.
|
|
502
|
+
Confident hierarchy, asymmetric grid tension, print texture over glow,
|
|
503
|
+
one electric lead accent. Indicator rails over hairlines.
|
|
509
504
|
============================================================ */
|
|
510
505
|
|
|
511
506
|
/* ============================================================
|
|
@@ -533,7 +528,7 @@
|
|
|
533
528
|
}
|
|
534
529
|
.ds-247420 .skip-link:focus {
|
|
535
530
|
top: 10px;
|
|
536
|
-
outline: 2px solid var(--accent);
|
|
531
|
+
outline: 2px solid var(--accent-ink);
|
|
537
532
|
outline-offset: 2px;
|
|
538
533
|
}
|
|
539
534
|
.ds-247420 body {
|
|
@@ -750,7 +745,7 @@
|
|
|
750
745
|
}
|
|
751
746
|
.ds-247420 .app-topbar nav a:hover { background: var(--bg-2); color: var(--fg); }
|
|
752
747
|
.ds-247420 .app-topbar nav a:focus-visible {
|
|
753
|
-
outline: 2px solid var(--accent);
|
|
748
|
+
outline: 2px solid var(--accent-ink);
|
|
754
749
|
outline-offset: 2px;
|
|
755
750
|
}
|
|
756
751
|
/* Active tab reads as a subtle tinted pill with an accent underline rather than
|
|
@@ -786,7 +781,7 @@
|
|
|
786
781
|
width: 100%;
|
|
787
782
|
}
|
|
788
783
|
.ds-247420 .app-search:focus-within {
|
|
789
|
-
outline: 2px solid var(--accent);
|
|
784
|
+
outline: 2px solid var(--accent-ink);
|
|
790
785
|
outline-offset: 2px;
|
|
791
786
|
}
|
|
792
787
|
|
|
@@ -828,7 +823,7 @@
|
|
|
828
823
|
}
|
|
829
824
|
.ds-247420 .app-side a:hover { background: var(--bg-2); color: var(--fg); }
|
|
830
825
|
.ds-247420 .app-side a:focus-visible {
|
|
831
|
-
outline: 2px solid var(--accent);
|
|
826
|
+
outline: 2px solid var(--accent-ink);
|
|
832
827
|
outline-offset: 2px;
|
|
833
828
|
}
|
|
834
829
|
.ds-247420 .app-side a.active {
|
|
@@ -951,7 +946,7 @@
|
|
|
951
946
|
.ds-247420 .btn-ghost:hover { background: var(--fg); color: var(--bg); }
|
|
952
947
|
.ds-247420 .btn:active, .ds-247420 .btn-primary:active, .ds-247420 .btn-ghost:active { transform: translateY(2px); }
|
|
953
948
|
.ds-247420 .btn:focus-visible, .ds-247420 .btn-primary:focus-visible, .ds-247420 .btn-ghost:focus-visible {
|
|
954
|
-
outline: 2px solid var(--accent);
|
|
949
|
+
outline: 2px solid var(--accent-ink);
|
|
955
950
|
outline-offset: 2px;
|
|
956
951
|
}
|
|
957
952
|
|
|
@@ -978,7 +973,7 @@
|
|
|
978
973
|
.ds-247420 .ds-icon-btn-danger { background: var(--warn); color: var(--on-color); }
|
|
979
974
|
.ds-247420 .ds-icon-btn-danger:hover { filter: brightness(1.1); }
|
|
980
975
|
.ds-247420 .ds-icon-btn:active { transform: translateY(1px); }
|
|
981
|
-
.ds-247420 .ds-icon-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
976
|
+
.ds-247420 .ds-icon-btn:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
|
|
982
977
|
.ds-247420 .ds-icon-btn:disabled, .ds-247420 .ds-icon-btn.is-disabled {
|
|
983
978
|
opacity: 0.5; cursor: not-allowed; pointer-events: none;
|
|
984
979
|
}
|
|
@@ -990,7 +985,7 @@
|
|
|
990
985
|
display: inline-flex; align-items: center; justify-content: center;
|
|
991
986
|
min-width: 18px; height: 18px; padding: 0 6px;
|
|
992
987
|
font-size: var(--fs-micro); font-weight: 600; line-height: 1;
|
|
993
|
-
border-radius:
|
|
988
|
+
border-radius: var(--r-pill);
|
|
994
989
|
background: var(--bg-3); color: var(--fg-2);
|
|
995
990
|
}
|
|
996
991
|
.ds-247420 .ds-badge.tone-green { background: var(--green-tint); color: var(--green-deep); }
|
|
@@ -1202,16 +1197,13 @@
|
|
|
1202
1197
|
padding: var(--space-9) 0 var(--space-8);
|
|
1203
1198
|
display: grid; gap: var(--space-5) var(--space-6);
|
|
1204
1199
|
grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
|
|
1205
|
-
grid-template-areas: 'title title' 'body actions'
|
|
1200
|
+
grid-template-areas: 'title title' 'body actions';
|
|
1206
1201
|
align-items: end;
|
|
1207
1202
|
max-width: var(--measure-wide);
|
|
1208
1203
|
}
|
|
1209
1204
|
.ds-247420 .ds-hero-head { grid-area: title; display: grid; gap: var(--space-3); }
|
|
1210
1205
|
.ds-247420 .ds-hero-body { grid-area: body; }
|
|
1211
1206
|
.ds-247420 .ds-hero-actions { grid-area: actions; }
|
|
1212
|
-
/* Badge gets its own row — sharing 'actions' overlapped it onto the CTAs
|
|
1213
|
-
whenever a caller passes both actions and badge. */
|
|
1214
|
-
.ds-247420 .ds-hero-badge { grid-area: badge; }
|
|
1215
1207
|
.ds-247420 .ds-hero-title {
|
|
1216
1208
|
font-family: var(--ff-display); font-weight: 700;
|
|
1217
1209
|
font-size: clamp(40px, 9cqi, 116px);
|
|
@@ -1232,7 +1224,7 @@
|
|
|
1232
1224
|
@container (max-width: 900px) {
|
|
1233
1225
|
.ds-247420 .ds-hero {
|
|
1234
1226
|
grid-template-columns: minmax(0, 1fr);
|
|
1235
|
-
grid-template-areas: 'title' 'body' 'actions'
|
|
1227
|
+
grid-template-areas: 'title' 'body' 'actions';
|
|
1236
1228
|
align-items: start;
|
|
1237
1229
|
padding: var(--space-7) 0 var(--space-6);
|
|
1238
1230
|
}
|
|
@@ -1406,7 +1398,7 @@
|
|
|
1406
1398
|
.ds-247420 table tr.clickable { cursor: pointer; }
|
|
1407
1399
|
.ds-247420 table tr.clickable:hover td { background: var(--bg-2); }
|
|
1408
1400
|
.ds-247420 table tr.clickable:focus-visible {
|
|
1409
|
-
outline: 2px solid var(--accent);
|
|
1401
|
+
outline: 2px solid var(--accent-ink);
|
|
1410
1402
|
outline-offset: -2px;
|
|
1411
1403
|
}
|
|
1412
1404
|
.ds-247420 table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
@@ -1804,7 +1796,7 @@
|
|
|
1804
1796
|
flex-direction: column;
|
|
1805
1797
|
gap: 4px;
|
|
1806
1798
|
}
|
|
1807
|
-
.ds-247420 .ds-file-grid:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: var(--r-2); }
|
|
1799
|
+
.ds-247420 .ds-file-grid:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; border-radius: var(--r-2); }
|
|
1808
1800
|
|
|
1809
1801
|
/* Listing wrapper holds the optional filter + sort header above the grid. */
|
|
1810
1802
|
.ds-247420 .ds-file-listing { display: flex; flex-direction: column; gap: var(--space-2); min-height: 0; }
|
|
@@ -1826,7 +1818,7 @@
|
|
|
1826
1818
|
}
|
|
1827
1819
|
.ds-247420 .ds-file-sort-btn:hover { color: var(--fg-2); background: var(--bg-2); }
|
|
1828
1820
|
.ds-247420 .ds-file-sort-btn.active { color: var(--accent-ink); }
|
|
1829
|
-
.ds-247420 .ds-file-sort-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
1821
|
+
.ds-247420 .ds-file-sort-btn:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
1830
1822
|
|
|
1831
1823
|
/* Skeleton shimmer rows shown while a directory loads. */
|
|
1832
1824
|
.ds-247420 .ds-file-row-skeleton { cursor: default; pointer-events: none; }
|
|
@@ -1874,7 +1866,7 @@
|
|
|
1874
1866
|
color: inherit; font: inherit; text-align: left; cursor: pointer;
|
|
1875
1867
|
}
|
|
1876
1868
|
.ds-247420 .ds-file-open[disabled] { cursor: default; }
|
|
1877
|
-
.ds-247420 .ds-file-open:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: var(--r-1); }
|
|
1869
|
+
.ds-247420 .ds-file-open:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; border-radius: var(--r-1); }
|
|
1878
1870
|
.ds-247420 .ds-file-row:hover {
|
|
1879
1871
|
background: var(--bg-2);
|
|
1880
1872
|
border-color: var(--rule);
|
|
@@ -1947,7 +1939,7 @@
|
|
|
1947
1939
|
role=checkbox/aria-checked name+state. */
|
|
1948
1940
|
.ds-247420 .ds-check-box {
|
|
1949
1941
|
width: 15px; height: 15px; box-sizing: border-box; flex: 0 0 auto; position: relative;
|
|
1950
|
-
border: 1.5px solid var(--fg-3); border-radius:
|
|
1942
|
+
border: 1.5px solid var(--fg-3); border-radius: var(--r-0);
|
|
1951
1943
|
transition: background var(--dur-snap) var(--ease), border-color var(--dur-snap) var(--ease);
|
|
1952
1944
|
}
|
|
1953
1945
|
.ds-247420 .is-marked > .ds-check-box,
|
|
@@ -1959,7 +1951,7 @@
|
|
|
1959
1951
|
}
|
|
1960
1952
|
.ds-247420[aria-checked="mixed"] > .ds-check-box { background: var(--accent); border-color: var(--accent); }
|
|
1961
1953
|
.ds-247420[aria-checked="mixed"] > .ds-check-box::after {
|
|
1962
|
-
content: ""; position: absolute; left: 3px; right: 3px; top: 6px; height: 2px; background: var(--bg); border-radius:
|
|
1954
|
+
content: ""; position: absolute; left: 3px; right: 3px; top: 6px; height: 2px; background: var(--bg); border-radius: var(--r-hair);
|
|
1963
1955
|
}
|
|
1964
1956
|
|
|
1965
1957
|
.ds-247420 .ds-file-check {
|
|
@@ -1972,7 +1964,7 @@
|
|
|
1972
1964
|
}
|
|
1973
1965
|
.ds-247420 .ds-file-check:hover { background: var(--bg-3); color: var(--fg); }
|
|
1974
1966
|
.ds-247420 .ds-file-check.is-marked { color: var(--accent-ink); }
|
|
1975
|
-
.ds-247420 .ds-file-check:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
1967
|
+
.ds-247420 .ds-file-check:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
1976
1968
|
.ds-247420 .ds-file-check[disabled] { opacity: 0.4; cursor: default; }
|
|
1977
1969
|
.ds-247420 .ds-file-row.is-marked { background: var(--accent-tint); border-color: var(--accent); }
|
|
1978
1970
|
.ds-247420 .ds-file-selectall {
|
|
@@ -1982,7 +1974,7 @@
|
|
|
1982
1974
|
padding: var(--space-1); border-radius: var(--r-1);
|
|
1983
1975
|
}
|
|
1984
1976
|
.ds-247420 .ds-file-selectall:hover { background: var(--bg-2); color: var(--fg); }
|
|
1985
|
-
.ds-247420 .ds-file-selectall:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
1977
|
+
.ds-247420 .ds-file-selectall:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
1986
1978
|
.ds-247420 .ds-file-controls { display: flex; align-items: center; gap: var(--space-2); padding: 0 var(--space-2) var(--space-1); flex-wrap: wrap; }
|
|
1987
1979
|
.ds-247420 .ds-file-controls .spread { flex: 1 1 auto; }
|
|
1988
1980
|
.ds-247420 .ds-file-controls .ds-file-sort { padding: 0; }
|
|
@@ -2020,7 +2012,7 @@
|
|
|
2020
2012
|
}
|
|
2021
2013
|
.ds-247420 .ds-density-btn:hover { color: var(--fg); }
|
|
2022
2014
|
.ds-247420 .ds-density-btn.active { background: var(--accent-tint); color: var(--fg); }
|
|
2023
|
-
.ds-247420 .ds-density-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
2015
|
+
.ds-247420 .ds-density-btn:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
2024
2016
|
|
|
2025
2017
|
/* Compact density — tighter rows for long listings. */
|
|
2026
2018
|
.ds-247420 .ds-file-grid[data-density="compact"] { gap: 2px; }
|
|
@@ -2054,7 +2046,7 @@
|
|
|
2054
2046
|
background: none; border: none; cursor: pointer; color: var(--fg);
|
|
2055
2047
|
}
|
|
2056
2048
|
.ds-247420 .ds-file-cell-open[disabled] { cursor: default; }
|
|
2057
|
-
.ds-247420 .ds-file-cell-open:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; border-radius: var(--r-2); }
|
|
2049
|
+
.ds-247420 .ds-file-cell-open:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: -2px; border-radius: var(--r-2); }
|
|
2058
2050
|
.ds-247420 .ds-file-cell-media {
|
|
2059
2051
|
display: flex; align-items: center; justify-content: center;
|
|
2060
2052
|
width: 100%; aspect-ratio: 4 / 3;
|
|
@@ -2272,7 +2264,7 @@
|
|
|
2272
2264
|
color: var(--fg-2); font-family: var(--ff-body); font-size: var(--fs-micro);
|
|
2273
2265
|
}
|
|
2274
2266
|
.ds-247420 .ds-upload-act:hover { background: var(--bg-3); color: var(--fg); }
|
|
2275
|
-
.ds-247420 .ds-upload-act:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
2267
|
+
.ds-247420 .ds-upload-act:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
2276
2268
|
@media (hover: none), (pointer: coarse) {
|
|
2277
2269
|
.ds-247420 .ds-upload-act { min-height: 44px; min-width: 44px; }
|
|
2278
2270
|
/* 44px floor for file controls on ANY touch device, not only narrow ones
|
|
@@ -2343,7 +2335,7 @@
|
|
|
2343
2335
|
border-radius: var(--r-2); color: var(--fg);
|
|
2344
2336
|
font-family: inherit; font-size: var(--fs-sm);
|
|
2345
2337
|
}
|
|
2346
|
-
.ds-247420 .ds-modal-input:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
2338
|
+
.ds-247420 .ds-modal-input:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
|
|
2347
2339
|
/* iOS auto-zooms inputs under 16px on focus, breaking the modal layout. */
|
|
2348
2340
|
@media (hover: none), (pointer: coarse) {
|
|
2349
2341
|
.ds-247420 .ds-modal-input { font-size: 16px; min-height: 44px; }
|
|
@@ -2507,7 +2499,7 @@
|
|
|
2507
2499
|
.ds-247420 .ds-kbd-sep { color: var(--fg-3); font-size: var(--fs-micro); padding: 0 2px; }
|
|
2508
2500
|
.ds-247420 .ds-kbd {
|
|
2509
2501
|
display: inline-block; min-width: 0;
|
|
2510
|
-
padding: 2px 7px; border-radius:
|
|
2502
|
+
padding: 2px 7px; border-radius: var(--r-0);
|
|
2511
2503
|
background: var(--bg); border: var(--bw-hair) solid var(--rule);
|
|
2512
2504
|
border-bottom-width: 2px;
|
|
2513
2505
|
font-family: var(--ff-mono); font-size: var(--fs-micro); color: var(--fg-2);
|
|
@@ -2529,7 +2521,7 @@
|
|
|
2529
2521
|
transition: color var(--dur-base) var(--ease), background var(--dur-base) var(--ease);
|
|
2530
2522
|
}
|
|
2531
2523
|
.ds-247420 .ds-segmented .ds-seg-btn:hover { color: var(--fg); }
|
|
2532
|
-
.ds-247420 .ds-segmented .ds-seg-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
2524
|
+
.ds-247420 .ds-segmented .ds-seg-btn:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
2533
2525
|
.ds-247420 .ds-segmented .ds-seg-btn.is-on {
|
|
2534
2526
|
background: var(--bg); color: var(--fg);
|
|
2535
2527
|
box-shadow: inset 0 0 0 var(--bw-hair, 1px) var(--rule);
|
|
@@ -2583,7 +2575,7 @@
|
|
|
2583
2575
|
.ds-247420 .chat-thread { scroll-behavior: smooth; }
|
|
2584
2576
|
}
|
|
2585
2577
|
.ds-247420 .chat-thread::-webkit-scrollbar { width: 8px; }
|
|
2586
|
-
.ds-247420 .chat-thread::-webkit-scrollbar-thumb { background: var(--bg-3); border-radius:
|
|
2578
|
+
.ds-247420 .chat-thread::-webkit-scrollbar-thumb { background: var(--bg-3); border-radius: var(--r-0); }
|
|
2587
2579
|
.ds-247420 .chat-empty {
|
|
2588
2580
|
margin: auto;
|
|
2589
2581
|
text-align: center;
|
|
@@ -2597,7 +2589,7 @@
|
|
|
2597
2589
|
.ds-247420 .chat-msg { display: flex; gap: 12px; align-items: flex-start; padding: 6px 0; position: relative; min-width: 0; }
|
|
2598
2590
|
.ds-247420 .chat-msg.you { flex-direction: row-reverse; }
|
|
2599
2591
|
.ds-247420 .chat-msg.you .chat-stack { align-items: flex-end; }
|
|
2600
|
-
.ds-247420 .chat-msg:hover { background: color-mix(in oklab, var(--fg) 4%, transparent); padding: 6px 0; margin: 0; border-radius:
|
|
2592
|
+
.ds-247420 .chat-msg:hover { background: color-mix(in oklab, var(--fg) 4%, transparent); padding: 6px 0; margin: 0; border-radius: var(--r-0); transition: background var(--dur-base) var(--ease); }
|
|
2601
2593
|
|
|
2602
2594
|
.ds-247420 .chat-avatar {
|
|
2603
2595
|
width: 36px; height: 36px; flex-shrink: 0;
|
|
@@ -2643,7 +2635,7 @@
|
|
|
2643
2635
|
.ds-247420 .chat-bubble code {
|
|
2644
2636
|
font-family: var(--ff-mono); font-size: 0.92em;
|
|
2645
2637
|
background: color-mix(in oklab, var(--fg) 10%, transparent);
|
|
2646
|
-
padding: 1px 6px; border-radius:
|
|
2638
|
+
padding: 1px 6px; border-radius: var(--r-0);
|
|
2647
2639
|
}
|
|
2648
2640
|
.ds-247420 .chat-msg.you .chat-bubble code { background: color-mix(in oklab, var(--fg) 10%, transparent); }
|
|
2649
2641
|
.ds-247420 .chat-bubble a {
|
|
@@ -2754,7 +2746,7 @@
|
|
|
2754
2746
|
.ds-247420 .chat-msg.you .chat-image,
|
|
2755
2747
|
.ds-247420 .chat-msg .chat-image,
|
|
2756
2748
|
.ds-247420 .chat-image {
|
|
2757
|
-
display: inline-block; border-radius:
|
|
2749
|
+
display: inline-block; border-radius: var(--r-1); overflow: hidden;
|
|
2758
2750
|
max-width: min(100%, 480px); background: var(--bg-2);
|
|
2759
2751
|
text-decoration: none; color: var(--fg);
|
|
2760
2752
|
border: 1px solid color-mix(in oklab, var(--fg) 10%, transparent);
|
|
@@ -2773,7 +2765,7 @@
|
|
|
2773
2765
|
.ds-247420 .chat-file {
|
|
2774
2766
|
display: flex; align-items: center; gap: 12px; padding: 12px 14px;
|
|
2775
2767
|
background: var(--bg-2); border: 1px solid color-mix(in oklab, var(--fg) 10%, transparent);
|
|
2776
|
-
border-radius:
|
|
2768
|
+
border-radius: var(--r-1); text-decoration: none; color: var(--fg);
|
|
2777
2769
|
max-width: min(100%, 360px);
|
|
2778
2770
|
transition: background var(--dur-snap, .15s) var(--ease, ease), border-color var(--dur-snap, .15s) var(--ease, ease);
|
|
2779
2771
|
}
|
|
@@ -2782,7 +2774,7 @@
|
|
|
2782
2774
|
font-size: 22px; width: 36px; height: 36px;
|
|
2783
2775
|
display: inline-flex; align-items: center; justify-content: center;
|
|
2784
2776
|
background: color-mix(in oklab, var(--accent) 18%, transparent);
|
|
2785
|
-
color: var(--accent-ink); border-radius:
|
|
2777
|
+
color: var(--accent-ink); border-radius: var(--r-0); flex-shrink: 0; font-family: var(--ff-mono);
|
|
2786
2778
|
}
|
|
2787
2779
|
.ds-247420 .chat-file > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
|
|
2788
2780
|
.ds-247420 .chat-file .name {
|
|
@@ -2800,7 +2792,7 @@
|
|
|
2800
2792
|
background: var(--bg-2);
|
|
2801
2793
|
color: var(--fg);
|
|
2802
2794
|
border: 1px solid color-mix(in oklab, var(--fg) 10%, transparent);
|
|
2803
|
-
border-radius:
|
|
2795
|
+
border-radius: var(--r-1); overflow: hidden; max-width: min(100%, 480px);
|
|
2804
2796
|
transition: box-shadow 0.12s ease, border-color 0.12s ease;
|
|
2805
2797
|
}
|
|
2806
2798
|
.ds-247420 .chat-msg:hover .chat-pdf { border-color: color-mix(in oklab, var(--accent) 30%, transparent); }
|
|
@@ -2823,7 +2815,7 @@
|
|
|
2823
2815
|
display: grid; grid-template-columns: 80px 1fr; gap: 12px; padding: 10px;
|
|
2824
2816
|
background: var(--bg-2);
|
|
2825
2817
|
border: 1px solid color-mix(in oklab, var(--fg) 10%, transparent);
|
|
2826
|
-
border-radius:
|
|
2818
|
+
border-radius: var(--r-1); text-decoration: none; color: var(--fg);
|
|
2827
2819
|
max-width: min(100%, 480px);
|
|
2828
2820
|
transition: background var(--dur-snap, .15s) var(--ease, ease), border-color var(--dur-snap, .15s) var(--ease, ease), box-shadow 0.15s ease;
|
|
2829
2821
|
}
|
|
@@ -2834,7 +2826,7 @@
|
|
|
2834
2826
|
}
|
|
2835
2827
|
.ds-247420 .chat-link:not(:has(.thumb)):not(:has(img)) { grid-template-columns: 1fr; }
|
|
2836
2828
|
.ds-247420 .chat-link .thumb,
|
|
2837
|
-
.ds-247420 .chat-link img.thumb { width: 80px; height: 80px; border-radius:
|
|
2829
|
+
.ds-247420 .chat-link img.thumb { width: 80px; height: 80px; border-radius: var(--r-0); object-fit: cover; background: var(--bg-3) center/cover no-repeat; }
|
|
2838
2830
|
.ds-247420 .chat-link .meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
|
|
2839
2831
|
.ds-247420 .chat-link .host { font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3); text-transform: lowercase; }
|
|
2840
2832
|
.ds-247420 .chat-link .title { font-weight: 600; font-size: var(--fs-sm); line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
|
|
@@ -2858,7 +2850,7 @@
|
|
|
2858
2850
|
display: inline-flex; align-items: center; gap: 4px;
|
|
2859
2851
|
padding: 2px 8px; background: var(--bg-2);
|
|
2860
2852
|
border: 1px solid color-mix(in oklab, var(--fg) 10%, transparent);
|
|
2861
|
-
border-radius:
|
|
2853
|
+
border-radius: var(--r-pill); font-size: var(--fs-xs);
|
|
2862
2854
|
cursor: pointer; user-select: none;
|
|
2863
2855
|
transition: background var(--dur-snap, .12s) var(--ease, ease), border-color var(--dur-snap, .12s) var(--ease, ease), transform 0.12s ease;
|
|
2864
2856
|
position: relative;
|
|
@@ -2979,7 +2971,7 @@
|
|
|
2979
2971
|
.ds-247420 .chat-composer .send:active { filter: brightness(0.94); }
|
|
2980
2972
|
.ds-247420 .chat-composer .send:focus-visible,
|
|
2981
2973
|
.ds-247420 .composer-btn:focus-visible {
|
|
2982
|
-
outline: 2px solid var(--accent);
|
|
2974
|
+
outline: 2px solid var(--accent-ink);
|
|
2983
2975
|
outline-offset: 2px;
|
|
2984
2976
|
}
|
|
2985
2977
|
.ds-247420 .chat-composer .send:disabled {
|
|
@@ -3091,8 +3083,12 @@
|
|
|
3091
3083
|
Component States — Disabled, Loading, Error, Success
|
|
3092
3084
|
-------------------------------------------------------------- */
|
|
3093
3085
|
|
|
3094
|
-
/* Disabled state for all interactive elements
|
|
3095
|
-
|
|
3086
|
+
/* Disabled state for all interactive elements. The `.is-disabled` class
|
|
3087
|
+
variants cover Btn()'s anchor-rendered case (shell.js) — an <a> has no
|
|
3088
|
+
:disabled pseudo-class, so a disabled link-styled button relies entirely
|
|
3089
|
+
on this class selector for its visual treatment (aria-disabled + tabindex
|
|
3090
|
+
are set in JS; this is the paired CSS half). */
|
|
3091
|
+
.ds-247420 .btn:disabled, .ds-247420 .btn-primary:disabled, .ds-247420 .btn-ghost:disabled, .ds-247420 .btn.is-disabled, .ds-247420 .btn-primary.is-disabled, .ds-247420 .btn-ghost.is-disabled, .ds-247420 button:disabled, .ds-247420[disabled] {
|
|
3096
3092
|
opacity: 0.6;
|
|
3097
3093
|
cursor: not-allowed;
|
|
3098
3094
|
pointer-events: none;
|
|
@@ -3422,7 +3418,7 @@
|
|
|
3422
3418
|
|
|
3423
3419
|
/* Base focus-visible: 2px ring + 2px offset clears dark bg-3 surfaces (WCAG 1.4.11) */
|
|
3424
3420
|
.ds-247420 :focus-visible {
|
|
3425
|
-
outline: 2px solid var(--accent);
|
|
3421
|
+
outline: 2px solid var(--accent-ink);
|
|
3426
3422
|
outline-offset: 2px;
|
|
3427
3423
|
}
|
|
3428
3424
|
|
|
@@ -3432,7 +3428,7 @@
|
|
|
3432
3428
|
.ds-247420[role="tab"]:focus-visible,
|
|
3433
3429
|
.ds-247420 .row:focus-visible,
|
|
3434
3430
|
.ds-247420 .row[tabindex]:focus-visible {
|
|
3435
|
-
outline: 2px solid var(--accent);
|
|
3431
|
+
outline: 2px solid var(--accent-ink);
|
|
3436
3432
|
outline-offset: 2px;
|
|
3437
3433
|
}
|
|
3438
3434
|
|
|
@@ -3819,7 +3815,7 @@
|
|
|
3819
3815
|
border-radius: var(--r-1, 6px);
|
|
3820
3816
|
cursor: pointer;
|
|
3821
3817
|
}
|
|
3822
|
-
.ds-247420 .app-side-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
3818
|
+
.ds-247420 .app-side-toggle:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
|
|
3823
3819
|
@container (max-width: 900px) {
|
|
3824
3820
|
.ds-247420 .app-side-toggle { display: inline-flex; }
|
|
3825
3821
|
.ds-247420 .app-topbar .brand { margin-left: 44px; }
|
|
@@ -3909,7 +3905,7 @@
|
|
|
3909
3905
|
.ds-247420 .ws-resizer { grid-row: 1 / -1; align-self: stretch; justify-self: end; width: 8px; margin-right: -4px; z-index: 5; cursor: col-resize; background: transparent; border: none; padding: 0; touch-action: none; }
|
|
3910
3906
|
.ds-247420 .ws-resizer::after { content: ""; display: block; width: 2px; height: 100%; margin: 0 auto; background: transparent; transition: background var(--dur-snap) var(--ease); }
|
|
3911
3907
|
.ds-247420 .ws-resizer:hover::after, .ds-247420 .ws-resizer:focus-visible::after { background: var(--accent); }
|
|
3912
|
-
.ds-247420 .ws-resizer:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
|
|
3908
|
+
.ds-247420 .ws-resizer:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: -2px; }
|
|
3913
3909
|
.ds-247420 .ws-resizer.ws-resizer-rail { grid-column: 1; }
|
|
3914
3910
|
.ds-247420 .ws-resizer.ws-resizer-sessions { grid-column: 2; }
|
|
3915
3911
|
.ds-247420 .ws-resizer.ws-resizer-pane { grid-column: 3; justify-self: end; }
|
|
@@ -3961,7 +3957,7 @@
|
|
|
3961
3957
|
border-radius: var(--r-1); cursor: pointer;
|
|
3962
3958
|
}
|
|
3963
3959
|
.ds-247420 .ws-rail-toggle:hover { background: var(--bg-3); color: var(--fg); }
|
|
3964
|
-
.ds-247420 .ws-rail-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
3960
|
+
.ds-247420 .ws-rail-toggle:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
|
|
3965
3961
|
.ds-247420 .ws-rail-inner { display: flex; flex-direction: column; min-height: 0; flex: 1; padding: var(--space-3) var(--space-2); gap: var(--space-2); }
|
|
3966
3962
|
.ds-247420 .ws-rail-head { display: flex; align-items: center; min-height: 36px; padding: 0 var(--space-2); }
|
|
3967
3963
|
.ds-247420 .ws-rail-brand { font-family: var(--ff-body); font-weight: 600; font-size: var(--fs-body); color: var(--fg); white-space: nowrap; overflow: hidden; }
|
|
@@ -3974,7 +3970,7 @@
|
|
|
3974
3970
|
min-height: 40px; white-space: nowrap; overflow: hidden;
|
|
3975
3971
|
}
|
|
3976
3972
|
.ds-247420 .ws-rail-action:hover { filter: brightness(1.08); }
|
|
3977
|
-
.ds-247420 .ws-rail-action:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
3973
|
+
.ds-247420 .ws-rail-action:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
|
|
3978
3974
|
.ds-247420 .ws-rail-nav { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
|
|
3979
3975
|
.ds-247420 .ws-rail-item {
|
|
3980
3976
|
display: flex; align-items: center; gap: var(--space-2);
|
|
@@ -3984,7 +3980,7 @@
|
|
|
3984
3980
|
font-family: var(--ff-body); font-size: var(--fs-sm); white-space: nowrap; overflow: hidden;
|
|
3985
3981
|
}
|
|
3986
3982
|
.ds-247420 .ws-rail-item:hover { background: var(--bg-3); color: var(--fg); }
|
|
3987
|
-
.ds-247420 .ws-rail-item:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
|
|
3983
|
+
.ds-247420 .ws-rail-item:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: -2px; }
|
|
3988
3984
|
.ds-247420 .ws-rail-item.active { background: var(--accent-tint); color: var(--fg); box-shadow: inset 2px 0 0 var(--accent); }
|
|
3989
3985
|
.ds-247420 .ws-rail-item-label { flex: 1; overflow: hidden; text-overflow: ellipsis; }
|
|
3990
3986
|
.ds-247420 .ws-rail-item-count { font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-3); }
|
|
@@ -4057,7 +4053,7 @@
|
|
|
4057
4053
|
/* Desktop-only chrome toggle (sessions collapse): inverse of the mobile drawer-toggle. */
|
|
4058
4054
|
.ds-247420 .ws-desktop-toggle { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border: none; background: none; color: var(--fg-2); cursor: pointer; border-radius: var(--r-1); }
|
|
4059
4055
|
.ds-247420 .ws-desktop-toggle:hover { background: var(--bg-2); color: var(--fg); }
|
|
4060
|
-
.ds-247420 .ws-desktop-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
4056
|
+
.ds-247420 .ws-desktop-toggle:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
|
|
4061
4057
|
@media (max-width: 900px) { .ds-247420 .ws-desktop-toggle { display: none; } }
|
|
4062
4058
|
/* The pane collapse toggle is meaningless once the pane TRACK is dropped (the
|
|
4063
4059
|
pane becomes a mobile overlay drawer at <=1480px, reached via its own
|
|
@@ -4181,7 +4177,7 @@
|
|
|
4181
4177
|
.ds-247420 .ws-crumb .app-crumb .crumb-right { margin-left: 0; flex-wrap: wrap; min-width: 0; display: inline-flex; }
|
|
4182
4178
|
}
|
|
4183
4179
|
.ds-247420 .ws-drawer-toggle:hover { background: var(--bg-2); color: var(--fg); }
|
|
4184
|
-
.ds-247420 .ws-drawer-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
4180
|
+
.ds-247420 .ws-drawer-toggle:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
|
|
4185
4181
|
|
|
4186
4182
|
@media (prefers-reduced-motion: reduce) {
|
|
4187
4183
|
.ds-247420 .ws-shell, .ds-247420 .ws-rail, .ds-247420 .ws-pane, .ds-247420 .ws-sessions, .ds-247420 .ws-scrim { transition: none; }
|
|
@@ -4193,7 +4189,7 @@
|
|
|
4193
4189
|
============================================================ */
|
|
4194
4190
|
|
|
4195
4191
|
/* Highlighted match inside a Row title (Row `highlight` prop). */
|
|
4196
|
-
.ds-247420 .ds-hl { background: color-mix(in oklab, var(--accent) 25%, transparent); color: inherit; border-radius:
|
|
4192
|
+
.ds-247420 .ds-hl { background: color-mix(in oklab, var(--accent) 25%, transparent); color: inherit; border-radius: var(--r-hair); }
|
|
4197
4193
|
|
|
4198
4194
|
/* Action strip rendered inside an EXPANDED Row (Row `actions` prop). The
|
|
4199
4195
|
buttons stop propagation so they never fire the row onClick. */
|
|
@@ -4206,20 +4202,20 @@
|
|
|
4206
4202
|
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
4207
4203
|
}
|
|
4208
4204
|
.ds-247420 .row-act:hover { background: var(--bg-3); color: var(--fg); }
|
|
4209
|
-
.ds-247420 .row-act:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
4205
|
+
.ds-247420 .row-act:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
4210
4206
|
|
|
4211
4207
|
/* FilterPills - a group of pill toggle buttons (aria-pressed). */
|
|
4212
4208
|
.ds-247420 .ds-filter-pills { display: flex; flex-wrap: wrap; gap: var(--space-2); }
|
|
4213
4209
|
.ds-247420 .ds-filter-pill {
|
|
4214
4210
|
display: inline-flex; align-items: center; justify-content: center;
|
|
4215
4211
|
padding: 4px 12px; min-height: 28px;
|
|
4216
|
-
background: var(--bg-2); border: var(--bw-hair) solid var(--bg-3); border-radius:
|
|
4212
|
+
background: var(--bg-2); border: var(--bw-hair) solid var(--bg-3); border-radius: var(--r-pill);
|
|
4217
4213
|
color: var(--fg-2); font-family: var(--ff-body); font-size: var(--fs-tiny); cursor: pointer;
|
|
4218
4214
|
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
4219
4215
|
}
|
|
4220
4216
|
.ds-247420 .ds-filter-pill:hover { background: var(--bg-3); color: var(--fg); }
|
|
4221
4217
|
.ds-247420 .ds-filter-pill.active { background: var(--accent-tint); color: var(--fg); border-color: var(--accent); }
|
|
4222
|
-
.ds-247420 .ds-filter-pill:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
4218
|
+
.ds-247420 .ds-filter-pill:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
4223
4219
|
|
|
4224
4220
|
/* Touch floor for the new small controls. */
|
|
4225
4221
|
@media (pointer: coarse) {
|
|
@@ -4229,7 +4225,7 @@
|
|
|
4229
4225
|
/* Disabled file actions (read-only row / in-flight mutation) stay visible but inert. */
|
|
4230
4226
|
.ds-247420 .ds-file-act:disabled { opacity: .45; cursor: default; }
|
|
4231
4227
|
.ds-247420 .ds-file-act:disabled:hover { background: transparent; color: var(--fg-3); }
|
|
4232
|
-
.ds-247420 .ds-file-act:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
4228
|
+
.ds-247420 .ds-file-act:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
4233
4229
|
|
|
4234
4230
|
/* ============================================================
|
|
4235
4231
|
Print — linearize WorkspaceShell so main content prints in full.
|
|
@@ -4279,7 +4275,7 @@
|
|
|
4279
4275
|
/* PhaseWalk */
|
|
4280
4276
|
.ds-247420 .ds-phasewalk { display: inline-flex; gap: 2px; vertical-align: middle; }
|
|
4281
4277
|
.ds-247420 .ds-phasewalk-seg {
|
|
4282
|
-
width: 18px; height: 10px; border-radius:
|
|
4278
|
+
width: 18px; height: 10px; border-radius: var(--r-hair);
|
|
4283
4279
|
background: var(--bg-3); position: relative;
|
|
4284
4280
|
}
|
|
4285
4281
|
.ds-247420 .ds-phasewalk-seg.is-reached { background: var(--success); }
|
|
@@ -4318,8 +4314,8 @@
|
|
|
4318
4314
|
/* BarRow */
|
|
4319
4315
|
.ds-247420 .ds-bar-row { display: flex; align-items: center; gap: 8px; margin: 3px 0; font-size: var(--fs-tiny); }
|
|
4320
4316
|
.ds-247420 .ds-bar-row-label { width: 100px; flex-shrink: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
4321
|
-
.ds-247420 .ds-bar-bg { flex: 1; min-width: 60px; background: var(--bg-3); border-radius:
|
|
4322
|
-
.ds-247420 .ds-bar-fill { background: var(--accent); height: 100%; border-radius:
|
|
4317
|
+
.ds-247420 .ds-bar-bg { flex: 1; min-width: 60px; background: var(--bg-3); border-radius: var(--r-hair); height: 6px; overflow: hidden; }
|
|
4318
|
+
.ds-247420 .ds-bar-fill { background: var(--accent); height: 100%; border-radius: var(--r-hair); }
|
|
4323
4319
|
.ds-247420 .ds-bar-row-value { flex-shrink: 0; color: var(--fg-2); max-width: 40%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
4324
4320
|
@media (max-width: 400px) {
|
|
4325
4321
|
.ds-247420 .ds-bar-row-label { width: 72px; }
|
|
@@ -4334,7 +4330,7 @@
|
|
|
4334
4330
|
.ds-247420 .ds-stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-1); }
|
|
4335
4331
|
}
|
|
4336
4332
|
.ds-247420 .ds-stats-grid-empty { padding: var(--space-3); color: var(--fg-3); font-size: var(--fs-tiny); }
|
|
4337
|
-
.ds-247420 .ds-stat { min-width: 0; background: var(--bg-3); border-radius:
|
|
4333
|
+
.ds-247420 .ds-stat { min-width: 0; background: var(--bg-3); border-radius: var(--r-0); padding: 10px 12px; }
|
|
4338
4334
|
.ds-247420 .ds-stat-val { font-size: clamp(18px, 5cqi, 22px); font-weight: 700; color: var(--accent-ink); overflow-wrap: anywhere; }
|
|
4339
4335
|
.ds-247420 .ds-stat-val.rate-big { font-size: clamp(24px, 7cqi, 32px); color: var(--success); }
|
|
4340
4336
|
.ds-247420 .ds-stat-val.err-rate { font-size: clamp(24px, 7cqi, 32px); color: var(--warn); }
|
|
@@ -4345,7 +4341,7 @@
|
|
|
4345
4341
|
.ds-247420 .ds-sub-grid-empty { padding: var(--space-3); color: var(--fg-3); font-size: var(--fs-tiny); }
|
|
4346
4342
|
.ds-247420 .ds-sub-btn {
|
|
4347
4343
|
padding: 6px 10px; background: var(--bg-3); border: var(--bw-hair) solid var(--bg-3);
|
|
4348
|
-
border-radius:
|
|
4344
|
+
border-radius: var(--r-0); font-size: var(--fs-tiny); cursor: pointer; color: var(--fg);
|
|
4349
4345
|
text-align: left; font-family: var(--ff-body);
|
|
4350
4346
|
}
|
|
4351
4347
|
.ds-247420 .ds-sub-btn:hover { border-color: var(--accent); color: var(--accent-ink); }
|
|
@@ -4376,7 +4372,7 @@
|
|
|
4376
4372
|
/* DevRow */
|
|
4377
4373
|
.ds-247420 .ds-dev-row {
|
|
4378
4374
|
background: var(--danger-surface); border-left: var(--bw-chunk) solid var(--warn);
|
|
4379
|
-
padding: 8px 12px; margin: 4px 0; border-radius:
|
|
4375
|
+
padding: 8px 12px; margin: 4px 0; border-radius: var(--r-hair); font-size: var(--fs-tiny);
|
|
4380
4376
|
}
|
|
4381
4377
|
.ds-247420 .ds-dev-row strong { color: var(--warn); }
|
|
4382
4378
|
|
|
@@ -4396,7 +4392,7 @@
|
|
|
4396
4392
|
.ds-247420 .ds-live-log-entry { padding: 2px 8px; border-bottom: var(--bw-hair) solid var(--bg-3); overflow-wrap: anywhere; }
|
|
4397
4393
|
.ds-247420 .ds-live-log-entry:hover { background: var(--bg-3); }
|
|
4398
4394
|
.ds-247420 .ds-live-log-ts { margin-right: 6px; color: var(--fg-3); }
|
|
4399
|
-
.ds-247420 .ds-live-log-subtag { margin-right: 6px; padding: 0 5px; border-radius:
|
|
4395
|
+
.ds-247420 .ds-live-log-subtag { margin-right: 6px; padding: 0 5px; border-radius: var(--r-hair); font-size: var(--fs-micro); }
|
|
4400
4396
|
.ds-247420 .ds-live-log-preview { margin-left: 6px; color: var(--fg-3); word-break: break-word; }
|
|
4401
4397
|
|
|
4402
4398
|
/* Touch floors for the dense controls (not covered by the mobile width blocks). */
|
|
@@ -4432,6 +4428,13 @@
|
|
|
4432
4428
|
@media (max-width: 760px) {
|
|
4433
4429
|
.ds-247420 .ds-panel-duo { grid-template-columns: 1fr; }
|
|
4434
4430
|
}
|
|
4431
|
+
/* Wide-viewport density: auto-fit grid so panel COUNT tracks actual children
|
|
4432
|
+
instead of a hardcoded column number — 2 children sit 2-up, 5 wrap to a
|
|
4433
|
+
third row, never an arbitrary 3-card reflex (same auto-fit/minmax pattern
|
|
4434
|
+
as .ds-tile-grid). Panels floor at 280px before wrapping, so ultra-wide
|
|
4435
|
+
screens still get more columns than a fixed repeat(3, ...) ever allowed. */
|
|
4436
|
+
.ds-247420 .ds-panel-trio { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(280px, 100%), 1fr)); gap: var(--space-2); margin: var(--space-2) 0; }
|
|
4437
|
+
.ds-247420 .ds-panel-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: var(--space-2); margin: var(--space-2) 0; }
|
|
4435
4438
|
/* wide dense rows/tables scroll inside their panel, never the page */
|
|
4436
4439
|
.ds-247420 .ds-scroll-x { overflow-x: auto; -webkit-overflow-scrolling: touch; max-width: 100%; }
|
|
4437
4440
|
|
|
@@ -4442,7 +4445,7 @@
|
|
|
4442
4445
|
max-width: min(1100px, 100%);
|
|
4443
4446
|
margin: var(--space-3) auto;
|
|
4444
4447
|
background: var(--bg-2);
|
|
4445
|
-
border-radius:
|
|
4448
|
+
border-radius: var(--r-2);
|
|
4446
4449
|
padding: clamp(16px, 5vw, 64px);
|
|
4447
4450
|
box-sizing: border-box;
|
|
4448
4451
|
display: flex;
|
|
@@ -4504,7 +4507,7 @@
|
|
|
4504
4507
|
.ds-247420 .ds-slide-split { grid-template-columns: 1fr; }
|
|
4505
4508
|
}
|
|
4506
4509
|
.ds-247420 .ds-slide-split-cell {
|
|
4507
|
-
padding: 18px; background: var(--bg-2); border-radius:
|
|
4510
|
+
padding: 18px; background: var(--bg-2); border-radius: var(--r-2);
|
|
4508
4511
|
color: var(--fg-2); font-size: var(--fs-lg); line-height: var(--lh-base); min-width: 0;
|
|
4509
4512
|
}
|
|
4510
4513
|
.ds-247420 .ds-slide-split-cell--accent { border-left: 3px solid var(--slide-accent, var(--accent)); }
|
|
@@ -4521,7 +4524,7 @@
|
|
|
4521
4524
|
.ds-247420 .ds-err-path {
|
|
4522
4525
|
display: inline-flex; gap: 6px; align-items: baseline; flex-wrap: wrap; max-width: 100%;
|
|
4523
4526
|
font-family: var(--ff-mono); font-size: 13px; color: var(--panel-text-2);
|
|
4524
|
-
background: var(--panel-1); padding: 6px 12px; border-radius:
|
|
4527
|
+
background: var(--panel-1); padding: 6px 12px; border-radius: var(--r-0);
|
|
4525
4528
|
overflow-wrap: anywhere; word-break: break-all;
|
|
4526
4529
|
}
|
|
4527
4530
|
|
|
@@ -4537,10 +4540,15 @@
|
|
|
4537
4540
|
}
|
|
4538
4541
|
.ds-247420 .ds-gallery-tile {
|
|
4539
4542
|
cursor: pointer; display: flex; flex-direction: column; gap: 6px;
|
|
4540
|
-
padding: 12px; border-radius:
|
|
4543
|
+
padding: 12px; border-radius: var(--r-1); min-height: clamp(120px, 18vw, 160px);
|
|
4541
4544
|
border: 0; text-align: left; font: inherit; color: inherit;
|
|
4542
4545
|
background: var(--tile-tone, var(--panel-1));
|
|
4546
|
+
transition: transform var(--dur-base) var(--ease), box-shadow var(--dur-base) var(--ease);
|
|
4543
4547
|
}
|
|
4548
|
+
/* Flat tonal fill only (house style: no bespoke tile chrome, no borders — see
|
|
4549
|
+
.ds-feature above), so the hover affordance is a lift, matching the same
|
|
4550
|
+
translateY + shadow idiom .chat-msg:hover .chat-bubble already uses. */
|
|
4551
|
+
.ds-247420 .ds-gallery-tile:hover { transform: translateY(-2px); box-shadow: 0 2px 8px color-mix(in oklab, var(--fg) 10%, transparent); }
|
|
4544
4552
|
.ds-247420 .ds-gallery-tile:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
|
|
4545
4553
|
.ds-247420 .ds-gallery-tile--tight { min-height: clamp(96px, 14vw, 120px); }
|
|
4546
4554
|
.ds-247420 .ds-lightbox {
|
|
@@ -4551,7 +4559,7 @@
|
|
|
4551
4559
|
z-index: 50;
|
|
4552
4560
|
}
|
|
4553
4561
|
.ds-247420 .ds-lightbox-card {
|
|
4554
|
-
background: var(--panel-0); border-radius:
|
|
4562
|
+
background: var(--panel-0); border-radius: var(--r-2); padding: clamp(16px, 4vw, 28px);
|
|
4555
4563
|
width: min(520px, 100%); min-width: 0;
|
|
4556
4564
|
max-height: calc(100vh - 24px);
|
|
4557
4565
|
max-height: calc(100dvh - 24px);
|
|
@@ -4559,7 +4567,7 @@
|
|
|
4559
4567
|
display: flex; flex-direction: column; gap: 14px;
|
|
4560
4568
|
}
|
|
4561
4569
|
.ds-247420 .ds-lightbox-preview {
|
|
4562
|
-
padding: clamp(16px, 6vw, 36px); border-radius:
|
|
4570
|
+
padding: clamp(16px, 6vw, 36px); border-radius: var(--r-1); text-align: center;
|
|
4563
4571
|
font-family: var(--ff-mono); white-space: pre-line; font-size: clamp(16px, 5vw, 24px);
|
|
4564
4572
|
background: var(--tile-tone, var(--panel-1));
|
|
4565
4573
|
}
|
|
@@ -4581,7 +4589,7 @@
|
|
|
4581
4589
|
}
|
|
4582
4590
|
.ds-247420 .ds-swatch-grid-lg { grid-template-columns: repeat(auto-fill, minmax(min(150px, 100%), 1fr)); }
|
|
4583
4591
|
.ds-247420 .ds-swatch-col { display: flex; flex-direction: column; gap: 6px; }
|
|
4584
|
-
.ds-247420 .ds-swatch-chip { height: 48px; border-radius:
|
|
4592
|
+
.ds-247420 .ds-swatch-chip { height: 48px; border-radius: var(--r-1); border: 1px solid var(--rule); background: var(--swatch, var(--panel-1)); }
|
|
4585
4593
|
.ds-247420 .ds-swatch-chip--big { height: 64px; }
|
|
4586
4594
|
.ds-247420 .ds-swatch-name { font-family: var(--ff-mono); font-size: 11px; color: var(--fg-3); }
|
|
4587
4595
|
.ds-247420 .ds-type-panel { padding: clamp(10px, 2.5vw, 14px) clamp(10px, 3vw, 18px); display: flex; flex-direction: column; gap: 14px; }
|
|
@@ -4643,14 +4651,14 @@
|
|
|
4643
4651
|
.ds-247420 .ds-savebar {
|
|
4644
4652
|
position: sticky; bottom: 8px; display: flex; align-items: center;
|
|
4645
4653
|
justify-content: flex-end; gap: 8px; flex-wrap: wrap; padding: 10px;
|
|
4646
|
-
background: var(--panel-2); border-radius:
|
|
4654
|
+
background: var(--panel-2); border-radius: var(--r-1); margin: 8px 0;
|
|
4647
4655
|
}
|
|
4648
4656
|
.ds-247420 .ds-savebar-note { flex: 1 1 160px; min-width: 0; color: var(--panel-text-2); }
|
|
4649
4657
|
.ds-247420 .ds-settings-modal { min-width: min(320px, calc(100vw - 32px)); max-width: 480px; }
|
|
4650
4658
|
.ds-247420 .ds-modal-body-form { padding: 16px; display: flex; flex-direction: column; gap: 12px; }
|
|
4651
4659
|
.ds-247420 .ds-modal-note { margin: 0 0 8px; color: var(--panel-text-2); font-size: 14px; }
|
|
4652
4660
|
.ds-247420 .ds-draft-preview {
|
|
4653
|
-
background: var(--panel-1); padding: 12px; border-radius:
|
|
4661
|
+
background: var(--panel-1); padding: 12px; border-radius: var(--r-0);
|
|
4654
4662
|
font-size: 13px; color: var(--panel-text-2); max-height: 120px;
|
|
4655
4663
|
overflow-y: auto; font-family: var(--ff-mono); overflow-wrap: anywhere;
|
|
4656
4664
|
}
|
|
@@ -4671,7 +4679,7 @@
|
|
|
4671
4679
|
.ds-247420 .ds-auth-remember { display: flex; align-items: center; gap: 6px; cursor: pointer; }
|
|
4672
4680
|
.ds-247420 .ds-auth-remember-text { color: var(--panel-text-2); font-size: 13px; }
|
|
4673
4681
|
.ds-247420 .ds-auth-forgot { font-size: 13px; }
|
|
4674
|
-
.ds-247420 .ds-auth-error { padding: 8px 10px; background: var(--panel-1); border-radius:
|
|
4682
|
+
.ds-247420 .ds-auth-error { padding: 8px 10px; background: var(--panel-1); border-radius: var(--r-0); color: var(--danger); font-size: 13px; overflow-wrap: anywhere; }
|
|
4675
4683
|
.ds-247420 .ds-auth-divider { display: flex; align-items: center; gap: 10px; margin: 6px 0; color: var(--panel-text-3); font-size: 12px; }
|
|
4676
4684
|
.ds-247420 .ds-auth-divider-line { flex: 1; height: 1px; background: var(--panel-2); }
|
|
4677
4685
|
.ds-247420 .ds-auth-providers { display: flex; gap: 8px; flex-wrap: wrap; }
|
|
@@ -4695,7 +4703,7 @@
|
|
|
4695
4703
|
.ds-247420 .ds-tile-meta { display: flex; align-items: center; justify-content: space-between; gap: 6px; font-size: 12px; flex-wrap: wrap; min-width: 0; }
|
|
4696
4704
|
.ds-247420 .ds-tile-glyph { font-family: var(--ff-mono); color: var(--panel-text-3); }
|
|
4697
4705
|
.ds-247420 .ds-tile-label { color: var(--panel-text); overflow-wrap: anywhere; }
|
|
4698
|
-
.ds-247420 .ds-gal-swatch { height: 64px; border-radius:
|
|
4706
|
+
.ds-247420 .ds-gal-swatch { height: 64px; border-radius: var(--r-0); background: var(--swatch, var(--panel-1)); }
|
|
4699
4707
|
.ds-247420 .ds-gal-swatch-meta { display: flex; justify-content: space-between; gap: 6px; flex-wrap: wrap; font-family: var(--ff-mono); font-size: 11px; min-width: 0; }
|
|
4700
4708
|
.ds-247420 .ds-gal-swatch-name { color: var(--panel-text); }
|
|
4701
4709
|
.ds-247420 .ds-gal-swatch-hint { color: var(--panel-text-3); overflow-wrap: anywhere; }
|
|
@@ -4716,7 +4724,7 @@
|
|
|
4716
4724
|
.ds-247420 .ds-cli-warn .prompt, .ds-247420 .ds-cli-warn .cmd { color: var(--mascot); }
|
|
4717
4725
|
.ds-247420 .ds-cli-log .prompt { color: var(--fg-3); }
|
|
4718
4726
|
.ds-247420 .ds-cli-log .cmd { color: var(--fg-2); font-family: var(--ff-mono); }
|
|
4719
|
-
.ds-247420 .ds-term-body { padding: 14px 18px; display: flex; flex-direction: column; gap: 4px; background: var(--bg-2); border-radius:
|
|
4727
|
+
.ds-247420 .ds-term-body { padding: 14px 18px; display: flex; flex-direction: column; gap: 4px; background: var(--bg-2); border-radius: var(--r-1); }
|
|
4720
4728
|
.ds-247420 .ds-term-body--tall { min-height: 280px; }
|
|
4721
4729
|
.ds-247420 .ds-term-input-row { margin-top: 6px; }
|
|
4722
4730
|
.ds-247420 .ds-term-input { flex: 1; min-width: 0; background: transparent; border: 0; outline: 0; font-family: var(--ff-mono); font-size: 13px; color: var(--fg); }
|
|
@@ -4841,7 +4849,7 @@
|
|
|
4841
4849
|
width: 4px;
|
|
4842
4850
|
height: 8px;
|
|
4843
4851
|
background: var(--fg);
|
|
4844
|
-
border-radius: 0
|
|
4852
|
+
border-radius: 0 var(--r-0) var(--r-0) 0;
|
|
4845
4853
|
transition: height var(--dur-base) var(--ease);
|
|
4846
4854
|
}
|
|
4847
4855
|
.ds-247420 .cm-server-icon:hover .cm-server-pill { height: 20px; }
|
|
@@ -4897,7 +4905,7 @@
|
|
|
4897
4905
|
width: 32px;
|
|
4898
4906
|
height: 2px;
|
|
4899
4907
|
background: color-mix(in oklab, var(--fg) 12%, transparent);
|
|
4900
|
-
border-radius:
|
|
4908
|
+
border-radius: var(--r-hair);
|
|
4901
4909
|
margin: 4px 0;
|
|
4902
4910
|
flex-shrink: 0;
|
|
4903
4911
|
}
|
|
@@ -4958,7 +4966,7 @@
|
|
|
4958
4966
|
.ds-247420 .cm-channel-list::-webkit-scrollbar-track { background: transparent; }
|
|
4959
4967
|
.ds-247420 .cm-channel-list::-webkit-scrollbar-thumb {
|
|
4960
4968
|
background: color-mix(in oklab, var(--fg) 18%, transparent);
|
|
4961
|
-
border-radius:
|
|
4969
|
+
border-radius: var(--r-0);
|
|
4962
4970
|
}
|
|
4963
4971
|
|
|
4964
4972
|
/* ============================================================
|
|
@@ -5038,7 +5046,7 @@
|
|
|
5038
5046
|
background: color-mix(in oklab, var(--fg) 8%, transparent);
|
|
5039
5047
|
}
|
|
5040
5048
|
.ds-247420 .cm-cat-add:focus-visible {
|
|
5041
|
-
outline: 2px solid var(--accent);
|
|
5049
|
+
outline: 2px solid var(--accent-ink);
|
|
5042
5050
|
outline-offset: 2px;
|
|
5043
5051
|
}
|
|
5044
5052
|
|
|
@@ -5090,7 +5098,7 @@
|
|
|
5090
5098
|
bottom: 4px;
|
|
5091
5099
|
width: 3px;
|
|
5092
5100
|
background: var(--accent);
|
|
5093
|
-
border-radius: 0
|
|
5101
|
+
border-radius: 0 var(--r-hair) var(--r-hair) 0;
|
|
5094
5102
|
}
|
|
5095
5103
|
|
|
5096
5104
|
.ds-247420 .cm-channel-item.voice-active {
|
|
@@ -5219,7 +5227,7 @@
|
|
|
5219
5227
|
background: color-mix(in oklab, var(--fg) 10%, transparent);
|
|
5220
5228
|
}
|
|
5221
5229
|
.ds-247420 .cm-ch-action-btn:focus-visible {
|
|
5222
|
-
outline: 2px solid var(--accent);
|
|
5230
|
+
outline: 2px solid var(--accent-ink);
|
|
5223
5231
|
outline-offset: 2px;
|
|
5224
5232
|
}
|
|
5225
5233
|
|
|
@@ -5558,7 +5566,7 @@
|
|
|
5558
5566
|
.ds-247420 .cm-member-list::-webkit-scrollbar { width: 8px; }
|
|
5559
5567
|
.ds-247420 .cm-member-list::-webkit-scrollbar-thumb {
|
|
5560
5568
|
background: color-mix(in oklab, var(--fg) 18%, transparent);
|
|
5561
|
-
border-radius:
|
|
5569
|
+
border-radius: var(--r-0);
|
|
5562
5570
|
}
|
|
5563
5571
|
|
|
5564
5572
|
.ds-247420 .cm-member-category {
|
|
@@ -5802,45 +5810,45 @@
|
|
|
5802
5810
|
.ds-247420 .cm-server-icon:focus-visible,
|
|
5803
5811
|
.ds-247420 .cm-server-back:focus-visible,
|
|
5804
5812
|
.ds-247420 .cm-server-add:focus-visible {
|
|
5805
|
-
outline: 2px solid var(--accent);
|
|
5813
|
+
outline: 2px solid var(--accent-ink);
|
|
5806
5814
|
outline-offset: 2px;
|
|
5807
5815
|
border-radius: var(--r-2);
|
|
5808
5816
|
}
|
|
5809
5817
|
|
|
5810
5818
|
.ds-247420 .cm-channel-item:focus-visible {
|
|
5811
|
-
outline: 2px solid var(--accent);
|
|
5819
|
+
outline: 2px solid var(--accent-ink);
|
|
5812
5820
|
outline-offset: -2px;
|
|
5813
5821
|
border-radius: var(--r-1);
|
|
5814
5822
|
}
|
|
5815
5823
|
|
|
5816
5824
|
.ds-247420 .cm-server-header:focus-visible,
|
|
5817
5825
|
.ds-247420 .cm-category-header:focus-visible {
|
|
5818
|
-
outline: 2px solid var(--accent);
|
|
5826
|
+
outline: 2px solid var(--accent-ink);
|
|
5819
5827
|
outline-offset: -2px;
|
|
5820
5828
|
}
|
|
5821
5829
|
|
|
5822
5830
|
.ds-247420 .cm-member-item:focus-visible {
|
|
5823
|
-
outline: 2px solid var(--accent);
|
|
5831
|
+
outline: 2px solid var(--accent-ink);
|
|
5824
5832
|
outline-offset: -2px;
|
|
5825
5833
|
border-radius: var(--r-1);
|
|
5826
5834
|
}
|
|
5827
5835
|
|
|
5828
5836
|
.ds-247420 .cm-vs-btn:focus-visible,
|
|
5829
5837
|
.ds-247420 .cm-user-btn:focus-visible {
|
|
5830
|
-
outline: 2px solid var(--accent);
|
|
5838
|
+
outline: 2px solid var(--accent-ink);
|
|
5831
5839
|
outline-offset: 2px;
|
|
5832
5840
|
border-radius: var(--r-1);
|
|
5833
5841
|
}
|
|
5834
5842
|
|
|
5835
5843
|
/* ThreadPanel / Forum / Page interactive elements */
|
|
5836
5844
|
.ds-247420 .cm-tp-item:focus-visible,
|
|
5837
|
-
.ds-247420 .cm-forum-item:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; border-radius: var(--r-1); }
|
|
5845
|
+
.ds-247420 .cm-forum-item:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: -2px; border-radius: var(--r-1); }
|
|
5838
5846
|
.ds-247420 .cm-tp-new:focus-visible,
|
|
5839
5847
|
.ds-247420 .cm-tp-close:focus-visible,
|
|
5840
5848
|
.ds-247420 .cm-forum-new:focus-visible,
|
|
5841
5849
|
.ds-247420 .cm-forum-sort:focus-visible,
|
|
5842
|
-
.ds-247420 .cm-page-edit:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: var(--r-1); }
|
|
5843
|
-
.ds-247420 .cm-forum-search:focus-visible { outline: none; box-shadow: inset 0 0 0 2px var(--accent); }
|
|
5850
|
+
.ds-247420 .cm-page-edit:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; border-radius: var(--r-1); }
|
|
5851
|
+
.ds-247420 .cm-forum-search:focus-visible { outline: none; box-shadow: inset 0 0 0 2px var(--accent-ink); }
|
|
5844
5852
|
|
|
5845
5853
|
/* ---------- mobile header ---------- */
|
|
5846
5854
|
.ds-247420 .cm-mobile-header {
|
|
@@ -5868,7 +5876,7 @@
|
|
|
5868
5876
|
border-radius: var(--r-1);
|
|
5869
5877
|
}
|
|
5870
5878
|
.ds-247420 .cm-mh-btn:hover { background: var(--panel-3); }
|
|
5871
|
-
.ds-247420 .cm-mh-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
5879
|
+
.ds-247420 .cm-mh-btn:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
|
|
5872
5880
|
.ds-247420 .cm-mh-title {
|
|
5873
5881
|
flex: 1 1 auto;
|
|
5874
5882
|
min-width: 0;
|
|
@@ -5913,7 +5921,7 @@
|
|
|
5913
5921
|
border-radius: var(--r-1);
|
|
5914
5922
|
}
|
|
5915
5923
|
.ds-247420 .cm-rb-cancel:hover { background: var(--panel-3); color: var(--fg); }
|
|
5916
|
-
.ds-247420 .cm-rb-cancel:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
5924
|
+
.ds-247420 .cm-rb-cancel:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
5917
5925
|
|
|
5918
5926
|
/* ---------- banner ---------- */
|
|
5919
5927
|
.ds-247420 .cm-banner {
|
|
@@ -5926,6 +5934,7 @@
|
|
|
5926
5934
|
font-weight: 500;
|
|
5927
5935
|
}
|
|
5928
5936
|
.ds-247420 .cm-banner.clickable { cursor: pointer; }
|
|
5937
|
+
.ds-247420 .cm-banner.clickable:hover { background: color-mix(in oklab, currentColor 10%, transparent); }
|
|
5929
5938
|
.ds-247420 .cm-banner-msg { flex: 1 1 auto; min-width: 0; }
|
|
5930
5939
|
.ds-247420 .cm-banner-action {
|
|
5931
5940
|
flex: none;
|
|
@@ -6002,6 +6011,7 @@
|
|
|
6002
6011
|
touch-action: none;
|
|
6003
6012
|
transition: background var(--dur-base) var(--ease), border-color var(--dur-base) var(--ease), transform var(--dur-snap) var(--ease);
|
|
6004
6013
|
}
|
|
6014
|
+
.ds-247420 .vx-ptt:hover { background: color-mix(in oklab, var(--fg) 8%, var(--bg-2)); }
|
|
6005
6015
|
.ds-247420 .vx-ptt:active { transform: scale(0.97); }
|
|
6006
6016
|
.ds-247420 .vx-ptt-icon { font-size: var(--fs-xl); line-height: 1; }
|
|
6007
6017
|
.ds-247420 .vx-ptt-label { font-size: var(--fs-tiny); letter-spacing: var(--tr-label); text-transform: uppercase; }
|
|
@@ -6111,6 +6121,7 @@
|
|
|
6111
6121
|
cursor: pointer;
|
|
6112
6122
|
transition: background var(--dur-base) var(--ease);
|
|
6113
6123
|
}
|
|
6124
|
+
.ds-247420 .vx-btn:hover { background: var(--bg-4, var(--bg-3)); }
|
|
6114
6125
|
.ds-247420 .vx-btn-on, .ds-247420 .vx-btn-primary { background: var(--accent); color: var(--accent-fg); border-color: var(--accent); }
|
|
6115
6126
|
|
|
6116
6127
|
.ds-247420 .vx-modal-backdrop {
|
|
@@ -6141,6 +6152,7 @@
|
|
|
6141
6152
|
border: 0; background: transparent; color: var(--fg-3);
|
|
6142
6153
|
font-size: var(--fs-xl); line-height: 1; cursor: pointer; padding: 0 var(--space-1);
|
|
6143
6154
|
}
|
|
6155
|
+
.ds-247420 .vx-modal-x:hover { color: var(--fg); }
|
|
6144
6156
|
.ds-247420 .vx-modal-body { padding: var(--space-3); overflow-y: auto; display: flex; flex-direction: column; gap: var(--space-3); }
|
|
6145
6157
|
.ds-247420 .vx-modal-foot {
|
|
6146
6158
|
display: flex; justify-content: flex-end; gap: var(--space-2);
|
|
@@ -6198,6 +6210,7 @@
|
|
|
6198
6210
|
cursor: pointer;
|
|
6199
6211
|
font-size: var(--fs-sm);
|
|
6200
6212
|
}
|
|
6213
|
+
.ds-247420 .vx-queue-btn:hover { background: var(--bg-4, var(--bg-2)); }
|
|
6201
6214
|
.ds-247420 .vx-queue-strip {
|
|
6202
6215
|
display: flex; gap: var(--space-2);
|
|
6203
6216
|
overflow-x: auto;
|
|
@@ -6215,6 +6228,7 @@
|
|
|
6215
6228
|
font-size: var(--fs-tiny);
|
|
6216
6229
|
cursor: pointer;
|
|
6217
6230
|
}
|
|
6231
|
+
.ds-247420 .vx-chip:hover { background: var(--bg-4, var(--bg-2)); border-color: var(--rule-strong); }
|
|
6218
6232
|
.ds-247420 .vx-chip-current { border-color: var(--accent); background: color-mix(in oklab, var(--accent) 16%, var(--bg-3)); }
|
|
6219
6233
|
.ds-247420 .vx-chip-live { border-color: var(--green-2); }
|
|
6220
6234
|
.ds-247420 .vx-chip-dot { width: 8px; height: 8px; border-radius: var(--r-pill); background: var(--fg-3); flex-shrink: 0; }
|
|
@@ -6291,7 +6305,44 @@
|
|
|
6291
6305
|
.ds-247420 .cm-tp-item-title { font-size: var(--fs-1, 14px); }
|
|
6292
6306
|
.ds-247420 .cm-tp-item-snippet { font-size: var(--fs-0, 12px); color: var(--fg-2, var(--fg)); opacity: .8; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
6293
6307
|
.ds-247420 .cm-tp-item-meta { display: flex; gap: var(--space-2); font-size: var(--fs-micro, 11px); color: var(--fg-2, var(--fg)); opacity: .7; }
|
|
6294
|
-
.ds-247420 .cm-tp-empty, .ds-247420 .cm-forum-empty, .ds-247420 .cm-channel-empty, .ds-247420 .cm-member-empty {
|
|
6308
|
+
.ds-247420 .cm-tp-empty, .ds-247420 .cm-forum-empty, .ds-247420 .cm-channel-empty, .ds-247420 .cm-member-empty {
|
|
6309
|
+
display: flex; flex-direction: column; align-items: center; gap: var(--space-2);
|
|
6310
|
+
padding: var(--space-4) var(--space-3); text-align: center;
|
|
6311
|
+
color: var(--fg-2, var(--fg)); opacity: .7; font-size: var(--fs-sm);
|
|
6312
|
+
}
|
|
6313
|
+
.ds-247420 .cm-tp-empty svg, .ds-247420 .cm-forum-empty svg, .ds-247420 .cm-channel-empty svg, .ds-247420 .cm-member-empty svg { opacity: .6; }
|
|
6314
|
+
|
|
6315
|
+
/* Loading skeletons — cold-load placeholders for channel/member/thread/forum
|
|
6316
|
+
lists. Same .ds-skel shimmer primitive as sessions.js/files.js so every
|
|
6317
|
+
list surface in the kit uses one shimmer language, never a bare spinner. */
|
|
6318
|
+
.ds-247420 .cm-channel-item-skeleton, .ds-247420 .cm-member-item-skeleton {
|
|
6319
|
+
display: flex; align-items: center; gap: var(--space-2);
|
|
6320
|
+
padding: var(--space-2); margin: 2px var(--space-1);
|
|
6321
|
+
}
|
|
6322
|
+
.ds-247420 .cm-channel-item-skeleton .ds-skel-icon, .ds-247420 .cm-member-item-skeleton .ds-skel-icon {
|
|
6323
|
+
width: 20px; height: 20px; border-radius: var(--r-round, 50%); flex: none; background: var(--bg-3);
|
|
6324
|
+
}
|
|
6325
|
+
.ds-247420 .cm-channel-item-skeleton .ds-skel-title, .ds-247420 .cm-member-item-skeleton .ds-skel-title {
|
|
6326
|
+
height: 12px; width: 60%; border-radius: var(--r-1); background: var(--bg-3);
|
|
6327
|
+
}
|
|
6328
|
+
.ds-247420 .cm-list-item-skeleton {
|
|
6329
|
+
display: flex; flex-direction: column; gap: 6px;
|
|
6330
|
+
padding: var(--space-2) var(--space-3); border-bottom: var(--bw-hair) solid var(--rule);
|
|
6331
|
+
}
|
|
6332
|
+
.ds-247420 .cm-list-item-skeleton .ds-skel-title { height: 12px; width: 55%; border-radius: var(--r-1); background: var(--bg-3); }
|
|
6333
|
+
.ds-247420 .cm-list-item-skeleton .ds-skel-meta { height: 9px; width: 35%; border-radius: var(--r-1); background: var(--bg-3); }
|
|
6334
|
+
/* Self-contained shimmer keyframe: community.css ships standalone (the
|
|
6335
|
+
community-app kit does not also load chat.css), so this cannot depend on
|
|
6336
|
+
chat.css's ds-skel-shimmer definition even though the visual language and
|
|
6337
|
+
token vocabulary match it exactly. */
|
|
6338
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
6339
|
+
.ds-247420 .cm-channel-item-skeleton .ds-skel-icon, .ds-247420 .cm-channel-item-skeleton .ds-skel-title, .ds-247420 .cm-member-item-skeleton .ds-skel-icon, .ds-247420 .cm-member-item-skeleton .ds-skel-title, .ds-247420 .cm-list-item-skeleton .ds-skel-title, .ds-247420 .cm-list-item-skeleton .ds-skel-meta {
|
|
6340
|
+
animation: cm-skel-shimmer 1.3s ease-in-out infinite;
|
|
6341
|
+
background: linear-gradient(90deg, var(--bg-3) 0%, var(--bg-2) 50%, var(--bg-3) 100%);
|
|
6342
|
+
background-size: 200% 100%;
|
|
6343
|
+
}
|
|
6344
|
+
}
|
|
6345
|
+
@keyframes cm-skel-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
|
|
6295
6346
|
|
|
6296
6347
|
/* ForumView — cm-forum / cm-forum-* */
|
|
6297
6348
|
.ds-247420 .cm-forum { display: flex; flex-direction: column; height: 100%; min-height: 0; background: var(--bg-1, var(--bg-2)); color: var(--fg); }
|
|
@@ -6488,13 +6539,13 @@
|
|
|
6488
6539
|
position: absolute; right: 16px; bottom: 12px; z-index: 3;
|
|
6489
6540
|
display: none; align-items: center; gap: .35em;
|
|
6490
6541
|
padding: .4em .8em; font: inherit; font-size: var(--fs-tiny); cursor: pointer;
|
|
6491
|
-
border-radius:
|
|
6542
|
+
border-radius: var(--r-pill); border: var(--bw-hair) solid var(--rule);
|
|
6492
6543
|
background: var(--bg-2); color: var(--fg-2, var(--fg));
|
|
6493
6544
|
box-shadow: 0 2px 8px color-mix(in srgb, var(--fg) 14%, transparent);
|
|
6494
6545
|
}
|
|
6495
6546
|
.ds-247420 .agentchat-jump.show { display: inline-flex; }
|
|
6496
6547
|
.ds-247420 .agentchat-jump:hover { background: var(--bg-3); }
|
|
6497
|
-
.ds-247420 .agentchat-jump:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
6548
|
+
.ds-247420 .agentchat-jump:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
|
|
6498
6549
|
|
|
6499
6550
|
/* Streaming caret: a thin blinking bar at the live edge of an assistant turn. */
|
|
6500
6551
|
.ds-247420 .chat-stream-caret {
|
|
@@ -6516,7 +6567,7 @@
|
|
|
6516
6567
|
}
|
|
6517
6568
|
.ds-247420 .chat-msg-action-label { font-size: var(--fs-tiny); }
|
|
6518
6569
|
.ds-247420 .chat-msg-action:hover { background: var(--bg-2); color: var(--fg); }
|
|
6519
|
-
.ds-247420 .chat-msg-action:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; opacity: 1; }
|
|
6570
|
+
.ds-247420 .chat-msg-action:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; opacity: 1; }
|
|
6520
6571
|
|
|
6521
6572
|
/* Empty state: a fresh thread is an invitation, not a void. */
|
|
6522
6573
|
.ds-247420 .agentchat-empty {
|
|
@@ -6544,7 +6595,7 @@
|
|
|
6544
6595
|
font: inherit;
|
|
6545
6596
|
font-size: var(--fs-tiny);
|
|
6546
6597
|
padding: .4em .8em;
|
|
6547
|
-
border-radius:
|
|
6598
|
+
border-radius: var(--r-pill);
|
|
6548
6599
|
border: 1px solid color-mix(in srgb, var(--fg) 16%, transparent);
|
|
6549
6600
|
background: color-mix(in srgb, var(--fg) 5%, transparent);
|
|
6550
6601
|
color: var(--fg-2, var(--fg));
|
|
@@ -6583,7 +6634,7 @@
|
|
|
6583
6634
|
font-family: var(--ff-body); font-size: var(--fs-tiny);
|
|
6584
6635
|
}
|
|
6585
6636
|
.ds-247420 .agentchat-install-copy:hover { background: var(--bg-3); color: var(--fg); }
|
|
6586
|
-
.ds-247420 .agentchat-install-copy:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
6637
|
+
.ds-247420 .agentchat-install-copy:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
6587
6638
|
.ds-247420 .agentchat-install-actions { display: flex; justify-content: flex-start; }
|
|
6588
6639
|
|
|
6589
6640
|
/* Host-supplied transcript export actions riding the controls row. */
|
|
@@ -6594,7 +6645,7 @@
|
|
|
6594
6645
|
font-family: var(--ff-body); font-size: var(--fs-tiny);
|
|
6595
6646
|
}
|
|
6596
6647
|
.ds-247420 .agentchat-export-act:hover { background: var(--bg-2); color: var(--fg); }
|
|
6597
|
-
.ds-247420 .agentchat-export-act:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
6648
|
+
.ds-247420 .agentchat-export-act:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
6598
6649
|
|
|
6599
6650
|
/* "working" tail: a long silent tool call shouldn't read as frozen. */
|
|
6600
6651
|
.ds-247420 .agentchat-working {
|
|
@@ -6724,7 +6775,7 @@
|
|
|
6724
6775
|
/* Rail filter uses the shared .ds-search-input primitive (provides bg/border/
|
|
6725
6776
|
radius/focus-ring); only the rail layout + touch floor live here. */
|
|
6726
6777
|
.ds-247420 .ds-session-head .ds-search-input { order: 1; flex: 1 1 auto; min-width: 0; min-height: 36px; padding: 0 10px; }
|
|
6727
|
-
.ds-247420 .ds-session-new:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
6778
|
+
.ds-247420 .ds-session-new:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
|
|
6728
6779
|
/* Touch floor (must FOLLOW the base rules - same specificity, order decides). */
|
|
6729
6780
|
@media (pointer: coarse) {
|
|
6730
6781
|
.ds-247420 .ds-session-new { width: 44px; min-height: 44px; }
|
|
@@ -6743,10 +6794,10 @@
|
|
|
6743
6794
|
cursor: pointer; text-align: left; color: var(--fg);
|
|
6744
6795
|
}
|
|
6745
6796
|
.ds-247420 .ds-session-row:hover { background: var(--bg-2); }
|
|
6746
|
-
.ds-247420 .ds-session-row:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
|
|
6797
|
+
.ds-247420 .ds-session-row:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: -2px; }
|
|
6747
6798
|
.ds-247420 .ds-session-row.active { background: var(--accent-tint); box-shadow: inset 2px 0 0 var(--accent); }
|
|
6748
6799
|
.ds-247420 .ds-session-row.rail-green::before, .ds-247420 .ds-session-row.rail-purple::before, .ds-247420 .ds-session-row.rail-flame::before {
|
|
6749
|
-
content: ''; position: absolute; left: 0; top: 8px; bottom: 8px; width: 3px; border-radius:
|
|
6800
|
+
content: ''; position: absolute; left: 0; top: 8px; bottom: 8px; width: 3px; border-radius: var(--r-hair);
|
|
6750
6801
|
}
|
|
6751
6802
|
/* Rail tones MUST match .row.rail-* in app-shell.css so the same semantic state
|
|
6752
6803
|
reads as one colour across the conversation list and content rows. */
|
|
@@ -6837,7 +6888,7 @@
|
|
|
6837
6888
|
}
|
|
6838
6889
|
.ds-247420 .chat-code-block:hover .chat-code-copy, .ds-247420 .chat-code-block:focus-within .chat-code-copy { opacity: 1; }
|
|
6839
6890
|
.ds-247420 .chat-code-copy.is-copied { color: var(--accent-ink); border-color: var(--accent); }
|
|
6840
|
-
.ds-247420 .chat-code-copy:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; opacity: 1; }
|
|
6891
|
+
.ds-247420 .chat-code-copy:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; opacity: 1; }
|
|
6841
6892
|
/* Head-placed copy (structured CodeNode + FilePreviewCode) is always visible. */
|
|
6842
6893
|
.ds-247420 .chat-code-head .spread { flex: 1; }
|
|
6843
6894
|
.ds-247420 .chat-code-copy-head { position: static; opacity: 1; }
|
|
@@ -6926,7 +6977,7 @@
|
|
|
6926
6977
|
cursor: pointer; font-family: var(--ff-body); font-size: var(--fs-tiny);
|
|
6927
6978
|
}
|
|
6928
6979
|
.ds-247420 .ds-dash-errors-toggle.active { background: var(--accent-tint); color: var(--fg); border-color: var(--accent); }
|
|
6929
|
-
.ds-247420 .ds-dash-errors-toggle:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
6980
|
+
.ds-247420 .ds-dash-errors-toggle:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
6930
6981
|
|
|
6931
6982
|
/* --- C3: per-card select checkbox. --- */
|
|
6932
6983
|
.ds-247420 .ds-dash-select {
|
|
@@ -6936,7 +6987,7 @@
|
|
|
6936
6987
|
font-family: var(--ff-mono); font-size: var(--fs-sm);
|
|
6937
6988
|
}
|
|
6938
6989
|
.ds-247420 .ds-dash-select[aria-checked="true"] { color: var(--accent-ink); }
|
|
6939
|
-
.ds-247420 .ds-dash-select:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
6990
|
+
.ds-247420 .ds-dash-select:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
6940
6991
|
|
|
6941
6992
|
/* --- C5: active dashboard card (current conversation). --- */
|
|
6942
6993
|
.ds-247420 .ds-dash-card.is-active { box-shadow: inset 2px 0 0 var(--accent); }
|
|
@@ -6958,7 +7009,7 @@
|
|
|
6958
7009
|
|
|
6959
7010
|
/* --- E1: inline file preview pane (split view, non-modal). --- */
|
|
6960
7011
|
.ds-247420 .ds-preview-pane { display: flex; flex-direction: column; min-height: 0; height: 100%; overflow: hidden; }
|
|
6961
|
-
.ds-247420 .ds-preview-pane:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
|
|
7012
|
+
.ds-247420 .ds-preview-pane:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: -2px; }
|
|
6962
7013
|
.ds-247420 .ds-preview-pane .ds-preview-body { flex: 1; min-height: 0; overflow: auto; }
|
|
6963
7014
|
.ds-247420 .ds-preview-pane-empty { align-items: center; justify-content: center; color: var(--fg-3); font-size: var(--fs-sm); }
|
|
6964
7015
|
.ds-247420 .ds-preview-code-wrap { display: flex; flex-direction: column; min-height: 0; }
|
|
@@ -6975,7 +7026,7 @@
|
|
|
6975
7026
|
border-radius: var(--r-1); background: var(--bg-2); color: var(--fg-2); cursor: pointer;
|
|
6976
7027
|
font-family: var(--ff-body); font-size: var(--fs-tiny);
|
|
6977
7028
|
}
|
|
6978
|
-
.ds-247420 .ds-file-more-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
7029
|
+
.ds-247420 .ds-file-more-btn:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
6979
7030
|
/* --- D3: locked/no-access file row. --- */
|
|
6980
7031
|
.ds-247420 .ds-file-row.is-locked { opacity: .6; }
|
|
6981
7032
|
|
|
@@ -6986,8 +7037,9 @@
|
|
|
6986
7037
|
background: none; color: var(--fg-3); cursor: pointer;
|
|
6987
7038
|
font-family: var(--ff-body); font-size: var(--fs-tiny);
|
|
6988
7039
|
}
|
|
7040
|
+
.ds-247420 .ds-roots-tab:hover { background: var(--bg-2); color: var(--fg); }
|
|
6989
7041
|
.ds-247420 .ds-roots-tab.active { background: var(--bg); color: var(--fg); }
|
|
6990
|
-
.ds-247420 .ds-roots-tab:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
7042
|
+
.ds-247420 .ds-roots-tab:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
6991
7043
|
|
|
6992
7044
|
/* --- H4: touch targets. On a coarse pointer / narrow screen the hover-revealed
|
|
6993
7045
|
action rows are made permanently visible and small controls floor to 44px so
|
|
@@ -7019,7 +7071,7 @@
|
|
|
7019
7071
|
color: var(--fg-3); font-family: var(--ff-body); font-size: var(--fs-micro);
|
|
7020
7072
|
}
|
|
7021
7073
|
.ds-247420 .ds-session-meta-copy:hover { background: var(--bg-3); color: var(--fg); }
|
|
7022
|
-
.ds-247420 .ds-session-meta-copy:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
7074
|
+
.ds-247420 .ds-session-meta-copy:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
7023
7075
|
@media (pointer: coarse), (max-width: 640px) {
|
|
7024
7076
|
.ds-247420 .ds-session-meta-copy { min-height: 44px; min-width: 44px; }
|
|
7025
7077
|
}
|
|
@@ -7047,7 +7099,7 @@
|
|
|
7047
7099
|
}
|
|
7048
7100
|
|
|
7049
7101
|
/* Drag-over ring: token accent, never a hex. */
|
|
7050
|
-
.ds-247420 .chat-composer.dragover { outline: 2px solid var(--accent); outline-offset: -2px; border-radius: var(--r-2); }
|
|
7102
|
+
.ds-247420 .chat-composer.dragover { outline: 2px solid var(--accent-ink); outline-offset: -2px; border-radius: var(--r-2); }
|
|
7051
7103
|
|
|
7052
7104
|
/* Per-bit composer context: only the bit that owns a control is a button. */
|
|
7053
7105
|
.ds-247420 .chat-composer-context-bit {
|
|
@@ -7087,7 +7139,8 @@
|
|
|
7087
7139
|
border-radius: var(--r-1); background: var(--bg-2); color: var(--fg-2); cursor: pointer;
|
|
7088
7140
|
font-family: var(--ff-body); font-size: var(--fs-tiny);
|
|
7089
7141
|
}
|
|
7090
|
-
.ds-247420 .agentchat-earlier-btn:
|
|
7142
|
+
.ds-247420 .agentchat-earlier-btn:hover { background: var(--bg-2); color: var(--fg); }
|
|
7143
|
+
.ds-247420 .agentchat-earlier-btn:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
7091
7144
|
@media (pointer: coarse) {
|
|
7092
7145
|
.ds-247420 .agentchat-earlier-btn { min-height: 44px; }
|
|
7093
7146
|
}
|
|
@@ -7195,7 +7248,7 @@
|
|
|
7195
7248
|
}
|
|
7196
7249
|
.ds-247420 .chat-msg .chat-tool .chat-tool-head::-webkit-details-marker { display: none; }
|
|
7197
7250
|
.ds-247420 .chat-msg .chat-tool .chat-tool-head:hover { background: var(--bg-2); }
|
|
7198
|
-
.ds-247420 .chat-msg .chat-tool .chat-tool-head:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
|
|
7251
|
+
.ds-247420 .chat-msg .chat-tool .chat-tool-head:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: -2px; }
|
|
7199
7252
|
.ds-247420 .chat-tool-icon { display: inline-flex; color: var(--fg-3); }
|
|
7200
7253
|
.ds-247420 .chat-tool-name { font-family: var(--ff-mono); font-weight: 600; color: var(--fg); }
|
|
7201
7254
|
.ds-247420 .chat-tool-label { color: var(--fg-3); font-size: var(--fs-tiny); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
|
|
@@ -7219,7 +7272,7 @@
|
|
|
7219
7272
|
.ds-247420 .chat-tool-section-label { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); font-size: var(--fs-tiny); font-weight: 600; text-transform: uppercase; letter-spacing: var(--tr-caps); color: var(--fg-3); }
|
|
7220
7273
|
.ds-247420 .chat-tool-copy { position: static; opacity: 0; }
|
|
7221
7274
|
.ds-247420 .chat-tool-section:hover .chat-tool-copy, .ds-247420 .chat-tool-section:focus-within .chat-tool-copy { opacity: 1; }
|
|
7222
|
-
.ds-247420 .chat-tool-copy:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; opacity: 1; }
|
|
7275
|
+
.ds-247420 .chat-tool-copy:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; opacity: 1; }
|
|
7223
7276
|
.ds-247420 .chat-tool-pre { margin: 0; padding: var(--space-2); background: var(--bg-2); border-radius: var(--r-1); font-family: var(--ff-mono); font-size: var(--fs-tiny); line-height: 1.45; overflow-x: auto; max-height: 320px; overflow-y: auto; }
|
|
7224
7277
|
.ds-247420 .chat-tool-pre.is-error { color: var(--flame); }
|
|
7225
7278
|
.ds-247420 .chat-tool-pre.chat-tool-empty { color: var(--fg-3); }
|
|
@@ -7282,10 +7335,11 @@
|
|
|
7282
7335
|
.ds-247420 .ds-dash-breakdown .seg.is-idle::before { background: transparent; box-shadow: inset 0 0 0 1px var(--stale), inset 0 0 0 3px var(--bg); }
|
|
7283
7336
|
.ds-247420 .ds-dash-stream-disc { display: inline-flex; align-items: center; gap: var(--space-1); }
|
|
7284
7337
|
.ds-247420 .ds-dash-selectall { display: inline-flex; align-items: center; gap: var(--space-1); font-size: var(--fs-tiny); color: var(--fg-2); cursor: pointer; background: none; border: none; padding: var(--space-1); }
|
|
7285
|
-
.ds-247420 .ds-dash-selectall:
|
|
7338
|
+
.ds-247420 .ds-dash-selectall:hover { color: var(--fg); }
|
|
7339
|
+
.ds-247420 .ds-dash-selectall:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; }
|
|
7286
7340
|
.ds-247420 .ds-dash-clear { background: none; border: none; color: var(--fg-3); cursor: pointer; font-size: var(--fs-tiny); text-decoration: underline dotted; padding: var(--space-1); }
|
|
7287
7341
|
.ds-247420 .ds-dash-clear:hover { color: var(--fg); }
|
|
7288
|
-
.ds-247420 .ds-dash-clear:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; border-radius: var(--r-1); }
|
|
7342
|
+
.ds-247420 .ds-dash-clear:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; border-radius: var(--r-1); }
|
|
7289
7343
|
|
|
7290
7344
|
/* Conversation-rail loading skeleton (cold ccsniff walk). */
|
|
7291
7345
|
.ds-247420 .ds-session-row-skeleton { display: flex; flex-direction: column; gap: 6px; padding: var(--space-2) var(--space-3); }
|
|
@@ -7503,7 +7557,7 @@
|
|
|
7503
7557
|
overflow: auto;
|
|
7504
7558
|
}
|
|
7505
7559
|
.ds-247420 .ds-ep-tree-item { display: flex; flex-direction: column; }
|
|
7506
|
-
.ds-247420 .ds-ep-tree-item:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
7560
|
+
.ds-247420 .ds-ep-tree-item:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
|
|
7507
7561
|
.ds-247420 .ds-ep-tree-row {
|
|
7508
7562
|
display: flex; align-items: center; gap: 6px;
|
|
7509
7563
|
padding: 4px 8px 4px 0;
|
|
@@ -7859,12 +7913,15 @@
|
|
|
7859
7913
|
background: var(--panel-2, transparent);
|
|
7860
7914
|
color: inherit; font: inherit; cursor: pointer;
|
|
7861
7915
|
}
|
|
7916
|
+
.ds-247420 .ds-ep-dialog-btn:hover { background: var(--panel-3, var(--bg-3)); }
|
|
7862
7917
|
.ds-247420 .ds-ep-dialog-btn.kind-primary {
|
|
7863
7918
|
background: var(--accent); color: var(--accent-fg); border-color: var(--accent);
|
|
7864
7919
|
}
|
|
7920
|
+
.ds-247420 .ds-ep-dialog-btn.kind-primary:hover { filter: brightness(1.08); }
|
|
7865
7921
|
.ds-247420 .ds-ep-dialog-btn.kind-danger {
|
|
7866
7922
|
background: var(--danger); color: var(--on-accent); border-color: var(--danger);
|
|
7867
7923
|
}
|
|
7924
|
+
.ds-247420 .ds-ep-dialog-btn.kind-danger:hover { filter: brightness(1.1); }
|
|
7868
7925
|
|
|
7869
7926
|
/* ---------------------------------------------------------------
|
|
7870
7927
|
Toast
|
|
@@ -7908,7 +7965,7 @@
|
|
|
7908
7965
|
.ds-247420 .ds-ep-ctxmenu-item:focus-visible,
|
|
7909
7966
|
.ds-247420 .ds-ep-resize:focus-visible,
|
|
7910
7967
|
.ds-247420 .ds-ep-dialog-btn:focus-visible {
|
|
7911
|
-
outline: 2px solid var(--accent);
|
|
7968
|
+
outline: 2px solid var(--accent-ink);
|
|
7912
7969
|
outline-offset: 2px;
|
|
7913
7970
|
}
|
|
7914
7971
|
|
|
@@ -7959,7 +8016,7 @@
|
|
|
7959
8016
|
.ds-247420 .ds-ep-iconbtn:focus-visible,
|
|
7960
8017
|
.ds-247420 .ds-ep-iconbtn-group button:focus-visible,
|
|
7961
8018
|
.ds-247420 .ds-ep-resize:focus-visible {
|
|
7962
|
-
outline: 2px solid var(--accent);
|
|
8019
|
+
outline: 2px solid var(--accent-ink);
|
|
7963
8020
|
outline-offset: 2px;
|
|
7964
8021
|
border-radius: var(--r-1);
|
|
7965
8022
|
}
|
|
@@ -7988,7 +8045,7 @@
|
|
|
7988
8045
|
cursor: inherit;
|
|
7989
8046
|
}
|
|
7990
8047
|
.ds-247420 .ds-check:focus-visible, .ds-247420 .ds-radio:focus-visible {
|
|
7991
|
-
outline: 2px solid var(--accent);
|
|
8048
|
+
outline: 2px solid var(--accent-ink);
|
|
7992
8049
|
outline-offset: 2px;
|
|
7993
8050
|
}
|
|
7994
8051
|
|
|
@@ -8015,6 +8072,7 @@
|
|
|
8015
8072
|
padding: 0;
|
|
8016
8073
|
flex-shrink: 0;
|
|
8017
8074
|
}
|
|
8075
|
+
.ds-247420 .ds-toggle:hover { border-color: var(--rule-strong, var(--fg-3)); }
|
|
8018
8076
|
.ds-247420 .ds-toggle-knob {
|
|
8019
8077
|
position: absolute;
|
|
8020
8078
|
top: 1px; left: 1px;
|
|
@@ -8032,7 +8090,7 @@
|
|
|
8032
8090
|
transform: translateX(20px);
|
|
8033
8091
|
}
|
|
8034
8092
|
.ds-247420 .ds-toggle:focus-visible {
|
|
8035
|
-
outline: 2px solid var(--accent);
|
|
8093
|
+
outline: 2px solid var(--accent-ink);
|
|
8036
8094
|
outline-offset: 2px;
|
|
8037
8095
|
}
|
|
8038
8096
|
.ds-247420 .ds-toggle:disabled { cursor: not-allowed; }
|
|
@@ -8147,7 +8205,7 @@
|
|
|
8147
8205
|
outline: none;
|
|
8148
8206
|
}
|
|
8149
8207
|
.ds-247420 .ds-dropdown-item:focus-visible {
|
|
8150
|
-
outline: 2px solid var(--accent);
|
|
8208
|
+
outline: 2px solid var(--accent-ink);
|
|
8151
8209
|
outline-offset: -2px;
|
|
8152
8210
|
}
|
|
8153
8211
|
.ds-247420 .ds-dropdown-item[aria-disabled="true"] {
|
|
@@ -8191,7 +8249,7 @@
|
|
|
8191
8249
|
cursor: grab; font: 14px/1 var(--ff-mono, monospace); letter-spacing: -2px;
|
|
8192
8250
|
touch-action: none; user-select: none;
|
|
8193
8251
|
}
|
|
8194
|
-
.ds-247420 .ds-reorder-handle:focus-visible { outline: 2px solid var(--
|
|
8252
|
+
.ds-247420 .ds-reorder-handle:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
|
|
8195
8253
|
.ds-247420 .ds-reorder-handle:active { cursor: grabbing; }
|
|
8196
8254
|
.ds-247420[data-dragging="true"] { opacity: 0.6; cursor: grabbing; transform: scale(0.98); }
|
|
8197
8255
|
.ds-247420[data-drop-target-active="true"] {
|
|
@@ -8200,7 +8258,7 @@
|
|
|
8200
8258
|
}
|
|
8201
8259
|
.ds-247420 .ds-reorder-insertion-line {
|
|
8202
8260
|
height: 2px; background: var(--focus-ring, var(--accent));
|
|
8203
|
-
border-radius:
|
|
8261
|
+
border-radius: var(--r-hair); animation: ds-insertion-in var(--dur-snap, 120ms) var(--ease, ease);
|
|
8204
8262
|
}
|
|
8205
8263
|
@keyframes ds-insertion-in { from { transform: scaleX(0); opacity: 0; } to { transform: scaleX(1); opacity: 1; } }
|
|
8206
8264
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -8267,6 +8325,7 @@
|
|
|
8267
8325
|
color: var(--fg); font: inherit; text-align: left;
|
|
8268
8326
|
border-radius: var(--r-1, 10px); cursor: pointer;
|
|
8269
8327
|
}
|
|
8328
|
+
.ds-247420 .ov-cmd-item:hover { background: var(--panel-2, var(--rule)); }
|
|
8270
8329
|
.ds-247420 .ov-cmd-item.is-active { background: var(--accent); color: var(--accent-fg); }
|
|
8271
8330
|
.ds-247420 .ov-cmd-glyph { width: 18px; display: inline-flex; justify-content: center; flex-shrink: 0; }
|
|
8272
8331
|
.ds-247420 .ov-cmd-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
@@ -8301,6 +8360,7 @@
|
|
|
8301
8360
|
padding: var(--space-2, 8px); cursor: pointer; font-size: var(--fs-lg, 18px);
|
|
8302
8361
|
border-bottom: 2px solid transparent;
|
|
8303
8362
|
}
|
|
8363
|
+
.ds-247420 .ov-emoji-tab:hover { background: var(--bg-2); }
|
|
8304
8364
|
.ds-247420 .ov-emoji-tab[aria-selected="true"] { border-bottom-color: var(--accent); background: var(--bg-2); }
|
|
8305
8365
|
.ds-247420 .ov-emoji-grid { overflow: auto; max-height: 220px; padding: var(--space-2, 8px); }
|
|
8306
8366
|
.ds-247420 .ov-emoji-grid-inner { display: grid; grid-template-columns: repeat(8, 1fr); gap: var(--space-1, 4px); }
|
|
@@ -8399,7 +8459,7 @@
|
|
|
8399
8459
|
border: 1px solid var(--rule); border-radius: var(--r-1, 10px);
|
|
8400
8460
|
padding: var(--space-1, 4px) var(--space-2, 8px); font: inherit;
|
|
8401
8461
|
}
|
|
8402
|
-
.ds-247420 .ov-set-control:focus-visible { outline:
|
|
8462
|
+
.ds-247420 .ov-set-control:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 1px; border-color: var(--accent-ink); }
|
|
8403
8463
|
.ds-247420 input.ov-set-control[type="range"] { padding: 0; accent-color: var(--accent); }
|
|
8404
8464
|
.ds-247420 .ov-set-toggle { width: 18px; height: 18px; accent-color: var(--accent); flex-shrink: 0; cursor: pointer; }
|
|
8405
8465
|
.ds-247420 .ov-set-btn {
|
|
@@ -8429,6 +8489,7 @@
|
|
|
8429
8489
|
.ds-247420 .ov-auth-x:hover { color: var(--fg); }
|
|
8430
8490
|
.ds-247420 .ov-auth-tabs { display: flex; gap: var(--space-1); padding: var(--space-2) var(--space-3) 0; }
|
|
8431
8491
|
.ds-247420 .ov-auth-tab { flex: 1; padding: var(--space-1) var(--space-2); border: 1px solid var(--rule); border-bottom: none; border-radius: var(--r-1) var(--r-1) 0 0; background: var(--bg-3); color: var(--fg-2, var(--fg)); cursor: pointer; }
|
|
8492
|
+
.ds-247420 .ov-auth-tab:hover { color: var(--fg); }
|
|
8432
8493
|
.ds-247420 .ov-auth-tab.is-active { background: var(--bg-2); color: var(--fg); font-weight: 700; }
|
|
8433
8494
|
.ds-247420 .ov-auth-body { display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-3); }
|
|
8434
8495
|
.ds-247420 .ov-auth-hint { margin: 0; font-size: var(--fs-0, 12px); color: var(--fg-2, var(--fg)); }
|
|
@@ -8494,8 +8555,8 @@
|
|
|
8494
8555
|
background: var(--panel-2); cursor: pointer; flex-shrink: 0;
|
|
8495
8556
|
}
|
|
8496
8557
|
.ds-247420 .ds-input-color::-webkit-color-swatch-wrapper { padding: 2px; }
|
|
8497
|
-
.ds-247420 .ds-input-color::-webkit-color-swatch { border: none; border-radius:
|
|
8498
|
-
.ds-247420 .ds-input-color:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
8558
|
+
.ds-247420 .ds-input-color::-webkit-color-swatch { border: none; border-radius: var(--r-hair); }
|
|
8559
|
+
.ds-247420 .ds-input-color:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
|
|
8499
8560
|
.ds-247420 .ds-input-check {
|
|
8500
8561
|
appearance: none; -webkit-appearance: none;
|
|
8501
8562
|
width: 16px; height: 16px; flex-shrink: 0;
|
|
@@ -8508,7 +8569,7 @@
|
|
|
8508
8569
|
width: 4px; height: 8px; border: solid var(--accent-fg);
|
|
8509
8570
|
border-width: 0 2px 2px 0; transform: rotate(45deg);
|
|
8510
8571
|
}
|
|
8511
|
-
.ds-247420 .ds-input-check:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
8572
|
+
.ds-247420 .ds-input-check:focus-visible { outline: 2px solid var(--accent-ink); outline-offset: 2px; }
|
|
8512
8573
|
|
|
8513
8574
|
/* ---------------------------------------------------------------
|
|
8514
8575
|
Tree drag-reparent affordance — clear drop target + dragging row.
|
|
@@ -8642,7 +8703,7 @@
|
|
|
8642
8703
|
align-items: center;
|
|
8643
8704
|
gap: 8px;
|
|
8644
8705
|
padding: 6px 8px;
|
|
8645
|
-
border-radius:
|
|
8706
|
+
border-radius: var(--r-0);
|
|
8646
8707
|
color: var(--fg-2, color-mix(in oklab, var(--fg) 78%, transparent));
|
|
8647
8708
|
text-decoration: none;
|
|
8648
8709
|
font-size: var(--fs-sm, 14px);
|
|
@@ -8664,7 +8725,7 @@
|
|
|
8664
8725
|
flex-shrink: 0;
|
|
8665
8726
|
min-width: 18px;
|
|
8666
8727
|
padding: 0 5px;
|
|
8667
|
-
border-radius:
|
|
8728
|
+
border-radius: var(--r-1);
|
|
8668
8729
|
background: var(--accent);
|
|
8669
8730
|
color: var(--on-accent);
|
|
8670
8731
|
font-size: 11px;
|
|
@@ -8942,7 +9003,7 @@
|
|
|
8942
9003
|
}
|
|
8943
9004
|
|
|
8944
9005
|
@media (prefers-reduced-motion: reduce) {
|
|
8945
|
-
.ds-247420 .ds-event-list .row.event-flash { animation: none; outline: 2px solid var(--accent); }
|
|
9006
|
+
.ds-247420 .ds-event-list .row.event-flash { animation: none; outline: 2px solid var(--accent-ink); }
|
|
8946
9007
|
}
|
|
8947
9008
|
|
|
8948
9009
|
@media print {
|
|
@@ -9018,7 +9079,7 @@
|
|
|
9018
9079
|
max-width: 100%;
|
|
9019
9080
|
padding: 18px 18px 18px 20px;
|
|
9020
9081
|
background: var(--panel-1);
|
|
9021
|
-
border-radius:
|
|
9082
|
+
border-radius: var(--r-1);
|
|
9022
9083
|
box-shadow: var(--panel-shadow);
|
|
9023
9084
|
scrollbar-width: thin;
|
|
9024
9085
|
scrollbar-color: var(--panel-3) transparent;
|
|
@@ -9027,7 +9088,7 @@
|
|
|
9027
9088
|
.ds-247420 #ds-article-host.has-toc > .toc::-webkit-scrollbar-track { background: transparent; }
|
|
9028
9089
|
.ds-247420 #ds-article-host.has-toc > .toc::-webkit-scrollbar-thumb {
|
|
9029
9090
|
background: var(--panel-3);
|
|
9030
|
-
border-radius:
|
|
9091
|
+
border-radius: var(--r-0);
|
|
9031
9092
|
border: 2px solid transparent;
|
|
9032
9093
|
background-clip: padding-box;
|
|
9033
9094
|
}
|
|
@@ -9063,7 +9124,7 @@
|
|
|
9063
9124
|
.ds-247420 .cli {
|
|
9064
9125
|
display: block;
|
|
9065
9126
|
background: var(--panel-1);
|
|
9066
|
-
border-radius:
|
|
9127
|
+
border-radius: var(--r-0);
|
|
9067
9128
|
padding: 16px 20px;
|
|
9068
9129
|
margin: 16px 0 28px 0;
|
|
9069
9130
|
font-family: var(--ff-mono);
|
|
@@ -9124,7 +9185,7 @@
|
|
|
9124
9185
|
padding: 14px 18px;
|
|
9125
9186
|
margin: 8px 0;
|
|
9126
9187
|
background: var(--panel-1);
|
|
9127
|
-
border-radius:
|
|
9188
|
+
border-radius: var(--r-0);
|
|
9128
9189
|
font-size: 13px;
|
|
9129
9190
|
box-shadow: var(--panel-shadow);
|
|
9130
9191
|
text-decoration: none;
|
|
@@ -9141,7 +9202,7 @@
|
|
|
9141
9202
|
border: 1px solid var(--panel-3);
|
|
9142
9203
|
font-size: 0.7rem;
|
|
9143
9204
|
padding: 0.15rem 0.5rem;
|
|
9144
|
-
border-radius:
|
|
9205
|
+
border-radius: var(--r-hair);
|
|
9145
9206
|
font-family: var(--ff-mono);
|
|
9146
9207
|
}
|
|
9147
9208
|
.ds-247420 .ds-prose .gm-callout {
|
|
@@ -9242,7 +9303,7 @@
|
|
|
9242
9303
|
}
|
|
9243
9304
|
.ds-247420 .sp-loading-bar-track {
|
|
9244
9305
|
height: 6px;
|
|
9245
|
-
border-radius:
|
|
9306
|
+
border-radius: var(--r-hair);
|
|
9246
9307
|
background: var(--bg-3);
|
|
9247
9308
|
overflow: hidden;
|
|
9248
9309
|
}
|