dsh-remote-plugin 0.6.17 → 0.6.19

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/public/styles.css CHANGED
@@ -1,4 +1,4 @@
1
- /* DSH Remote · 移动优先 · 四皮肤(默认深空/深色落日/亮色易北爱乐厅/中性草原孤塔)
1
+ /* DSH Remote · 移动优先 · 五皮肤(默认深空/深色落日/亮色易北爱乐厅/中性草原孤塔/黑曜白)
2
2
  * 规则样式表; 变量定义已抽取到 theme-vars.css(桌面端共享), 保持单一来源。 */
3
3
 
4
4
  @import 'theme-vars.css';
@@ -166,30 +166,97 @@ a.mini-btn { text-decoration: none; display: inline-flex; align-items: center; }
166
166
  .workspace-path-block { display: grid; gap: 6px; margin-top: 2px; color: var(--dsr-muted); font-size: 12px; }
167
167
 
168
168
  /* ---------- Token 统计(移动端) ---------- */
169
- .stats-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
170
- .scard { background: var(--dsr-panel); border: 1px solid var(--dsr-line); border-radius: var(--dsr-radius); padding: 10px 11px; min-width: 0; }
171
- .scard.span2 { grid-column: span 2; }
172
- .scard .v { font-size: 17px; font-weight: 700; line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
173
- .scard .k { font-size: 10px; color: var(--dsr-muted); margin-top: 2px; line-height: 1.4; }
174
- .bucket-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 3px 10px; margin-top: 6px; }
175
- .bucket-grid .b { display: flex; align-items: baseline; justify-content: space-between; gap: 6px; font-size: 10.5px; min-width: 0; }
176
- .bucket-grid .b .n { color: var(--dsr-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
177
- .bucket-grid .b .t { font-weight: 600; white-space: nowrap; }
178
- .stats-chart { display: flex; align-items: flex-end; gap: 7px; height: 190px; padding: 12px 12px 10px; margin-top: 10px; background: var(--dsr-panel); border: 1px solid var(--dsr-line); border-radius: var(--dsr-radius); overflow-x: auto; overflow-y: hidden; }
179
- .stats-legend { display: flex; gap: 12px; font-size: 10px; color: var(--dsr-muted); margin-top: 6px; }
180
- .stats-legend .lg { display: inline-flex; align-items: center; gap: 4px; }
181
- .stats-legend .sw { width: 8px; height: 8px; border-radius: 2px; display: inline-block; }
169
+ .stats-view { padding-bottom: 16px; }
170
+ .stats-page-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin: 4px 2px 17px; }
171
+ .stats-page-copy { min-width: 0; }
172
+ .stats-eyebrow, .stats-panel-kicker { color: var(--dsr-accent-strong); font-size: 10px; font-weight: 800; letter-spacing: .14em; line-height: 1.2; }
173
+ .stats-page-head h1 { margin: 4px 0 4px; font-size: 26px; line-height: 1.15; letter-spacing: -.04em; text-wrap: balance; }
174
+ .stats-page-subtitle { margin: 0; color: var(--dsr-muted); font-size: 12px; line-height: 1.5; }
175
+ .stats-date-wrap { display: grid; gap: 2px; flex: 0 0 auto; justify-items: end; padding: 7px 10px; background: var(--dsr-panel); border: 1px solid var(--dsr-line); border-radius: 12px; }
176
+ .stats-date-label { color: var(--dsr-muted); font-size: 10px; white-space: nowrap; }
177
+ .stats-date { color: var(--dsr-text); font-size: 12px; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
178
+ .stats-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin: 0 2px 12px; }
179
+ .stats-toolbar-label { color: var(--dsr-muted); font-size: 11px; font-weight: 650; }
180
+ .stats-mode-picker { display: inline-grid; grid-template-columns: 1fr 1fr; gap: 3px; padding: 3px; background: var(--dsr-panel); border: 1px solid var(--dsr-line); border-radius: 11px; }
181
+ .stats-mode-btn { min-height: 30px; padding: 5px 10px; border: 1px solid transparent; border-radius: 8px; color: var(--dsr-muted); font-size: 11px; font-weight: 650; white-space: nowrap; }
182
+ .stats-mode-btn.active { color: var(--dsr-text); background: var(--dsr-accent-soft); border-color: var(--dsr-accent-line); box-shadow: 0 2px 8px var(--dsr-shadow); }
183
+ .stats-mode-btn:active { background: var(--dsr-panel-2); }
184
+ .stats-mode-btn:focus-visible { position: relative; z-index: 1; }
185
+ .stats-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
186
+ .scard { position: relative; min-width: 0; overflow: hidden; padding: 14px; background: var(--dsr-panel); border: 1px solid var(--dsr-line); border-radius: 18px; box-shadow: 0 8px 24px var(--dsr-shadow); }
187
+ .scard::before { content: ''; position: absolute; inset: 0 0 auto; height: 2px; background: var(--dsr-line); }
188
+ .scard-primary { grid-column: 1 / -1; background: linear-gradient(140deg, var(--dsr-panel), var(--dsr-accent-soft)); }
189
+ .scard-primary::before { background: linear-gradient(90deg, var(--dsr-accent), var(--dsr-accent-2)); }
190
+ .scard-cost::before { background: var(--dsr-accent-2); }
191
+ .scard-share::before { background: var(--dsr-info); }
192
+ .scard-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-width: 0; }
193
+ .scard-label { display: inline-flex; align-items: center; gap: 7px; min-width: 0; color: var(--dsr-muted); font-size: 11px; font-weight: 700; }
194
+ .scard-label > span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
195
+ .scard-icon { display: grid; place-items: center; width: 22px; height: 22px; flex: 0 0 auto; border-radius: 7px; color: var(--dsr-accent-strong); background: var(--dsr-accent-soft); font-size: 14px; font-weight: 800; }
196
+ .scard-icon.cost { color: var(--dsr-accent-2); background: var(--dsr-accent-2-soft); font-size: 12px; }
197
+ .scard-icon.share { color: var(--dsr-info); background: var(--dsr-info-soft); font-size: 12px; }
198
+ .scard-badge { max-width: 48%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--dsr-muted); font-size: 10px; font-variant-numeric: tabular-nums; }
199
+ .scard-value { margin-top: 11px; color: var(--dsr-text); font-size: 26px; font-weight: 800; line-height: 1.05; letter-spacing: -.035em; font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
200
+ .scard-primary .scard-value { font-size: clamp(32px, 9vw, 42px); }
201
+ .scard-unit { margin-left: 6px; color: var(--dsr-muted); font-size: 11px; font-weight: 600; letter-spacing: 0; }
202
+ .scard-helper { margin-top: 7px; color: var(--dsr-muted); font-size: 10px; line-height: 1.4; }
203
+ .bucket-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin-top: 14px; padding-top: 11px; border-top: 1px solid var(--dsr-line); }
204
+ .bucket-grid .b { display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-rows: auto auto; gap: 2px 5px; min-width: 0; }
205
+ .bucket-dot { width: 6px; height: 6px; margin-top: 3px; border-radius: 50%; background: var(--dsr-accent); }
206
+ .bucket-dot.input { background: var(--dsr-accent-strong); }
207
+ .bucket-dot.cache-read { background: var(--dsr-info); }
208
+ .bucket-dot.cache-write { background: var(--dsr-accent-2); }
209
+ .bucket-dot.output { background: var(--dsr-warning); }
210
+ .bucket-grid .n { min-width: 0; overflow: hidden; color: var(--dsr-muted); font-size: 10px; line-height: 1.2; text-overflow: ellipsis; white-space: nowrap; }
211
+ .bucket-grid .t { grid-column: 2; min-width: 0; overflow: hidden; color: var(--dsr-text); font-size: 12px; line-height: 1.2; font-weight: 700; font-variant-numeric: tabular-nums; text-overflow: ellipsis; white-space: nowrap; }
212
+ .stats-split { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; margin-top: 14px; }
213
+ .stats-split-item { display: grid; gap: 5px; min-width: 0; padding: 8px; background: var(--dsr-bg-2); border: 1px solid var(--dsr-line); border-radius: 10px; }
214
+ .stats-split-item span { display: flex; align-items: center; gap: 5px; min-width: 0; color: var(--dsr-muted); font-size: 10px; white-space: nowrap; }
215
+ .stats-split-item strong { overflow: hidden; color: var(--dsr-text); font-size: 12px; font-variant-numeric: tabular-nums; text-overflow: ellipsis; white-space: nowrap; }
216
+ .split-dot { width: 6px; height: 6px; flex: 0 0 auto; border-radius: 50%; background: var(--dsr-accent-strong); }
217
+ .split-dot.off { background: var(--dsr-accent-2); }
218
+ .share-layout { display: flex; align-items: center; gap: 10px; margin-top: 13px; }
219
+ .share-ring { position: relative; display: grid; place-items: center; width: 68px; height: 68px; flex: 0 0 auto; border-radius: 50%; background: conic-gradient(var(--dsr-info) var(--share), var(--dsr-bg-2) 0); }
220
+ .share-ring::after { content: ''; position: absolute; inset: 6px; border-radius: 50%; background: var(--dsr-panel); }
221
+ .share-ring span { position: relative; z-index: 1; color: var(--dsr-text); font-size: 15px; font-weight: 800; font-variant-numeric: tabular-nums; }
222
+ .share-copy { display: grid; gap: 2px; min-width: 0; }
223
+ .share-copy strong { font-size: 13px; }
224
+ .share-copy span, .share-copy small { color: var(--dsr-muted); font-size: 10px; line-height: 1.35; }
225
+ .share-copy small { font-variant-numeric: tabular-nums; }
226
+ .stats-panel { margin-top: 14px; padding: 14px; background: var(--dsr-panel); border: 1px solid var(--dsr-line); border-radius: 18px; box-shadow: 0 8px 24px var(--dsr-shadow); }
227
+ .stats-panel-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; min-width: 0; margin-bottom: 12px; }
228
+ .stats-panel-title { margin: 3px 0 0; font-size: 16px; line-height: 1.2; letter-spacing: -.02em; }
229
+ .stats-legend { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 9px; min-width: 0; margin-top: 1px; color: var(--dsr-muted); font-size: 10px; }
230
+ .stats-legend .lg { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }
231
+ .stats-legend .sw { width: 7px; height: 7px; border-radius: 50%; display: inline-block; }
182
232
  .stats-legend .sw.peak { background: var(--dsr-accent-strong); }
183
233
  .stats-legend .sw.off { background: var(--dsr-accent-2); }
184
- .stats-bar { flex: 1; min-width: 36px; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 4px; }
185
- .stats-bar .bars { width: 100%; max-width: 42px; height: 100%; display: flex; flex-direction: column; justify-content: flex-end; border-radius: 6px 6px 0 0; overflow: hidden; background: var(--dsr-accent-soft); }
234
+ .stats-legend .sw.token { background: var(--dsr-accent); }
235
+ .stats-chart { display: flex; align-items: flex-end; gap: 7px; height: 190px; padding: 21px 2px 20px; overflow-x: auto; overflow-y: hidden; background-image: linear-gradient(to top, var(--dsr-line) 1px, transparent 1px); background-size: 100% 25%; border-radius: 10px; }
236
+ .stats-bar { display: flex; flex: 1 0 30px; flex-direction: column; align-items: center; justify-content: flex-end; gap: 4px; height: 100%; min-width: 30px; }
237
+ .stats-bar .bars { display: flex; width: 100%; max-width: 40px; height: 100%; flex-direction: column; justify-content: flex-end; overflow: hidden; border-radius: 7px 7px 3px 3px; background: var(--dsr-accent-soft); box-shadow: 0 4px 12px var(--dsr-shadow); }
186
238
  .stats-bar .seg { width: 100%; }
187
239
  .stats-bar .seg.peak { background: var(--dsr-accent-strong); }
188
240
  .stats-bar .seg.off { background: var(--dsr-accent-2); }
189
- .stats-bar .lbl { font-size: 9px; color: var(--dsr-muted); white-space: nowrap; }
190
- .stats-bar .val { font-size: 9px; color: var(--dsr-text); white-space: nowrap; }
191
- .stats-note { font-size: 11px; color: var(--dsr-muted); line-height: 1.6; margin-top: 8px; }
192
- .stats-empty { color: var(--dsr-muted); text-align: center; padding: 18px 0; font-size: 12px; }
241
+ .stats-bar .bars.token { background: linear-gradient(180deg, var(--dsr-accent-strong), var(--dsr-accent)); }
242
+ .stats-bar .lbl { color: var(--dsr-muted); font-size: 9px; font-variant-numeric: tabular-nums; white-space: nowrap; }
243
+ .stats-bar .val { min-height: 12px; color: var(--dsr-text); font-size: 9px; font-variant-numeric: tabular-nums; white-space: nowrap; }
244
+ .stats-empty { display: grid; flex: 1; place-items: center; min-height: 145px; color: var(--dsr-muted); text-align: center; font-size: 12px; }
245
+ .stats-note { margin: 14px 2px 0; padding: 10px 12px; color: var(--dsr-muted); background: var(--dsr-info-soft); border-left: 3px solid var(--dsr-info); border-radius: 0 10px 10px 0; font-size: 11px; line-height: 1.6; }
246
+
247
+ @media (max-width: 380px) {
248
+ .stats-page-head { gap: 8px; }
249
+ .stats-page-head h1 { font-size: 23px; }
250
+ .stats-date-wrap { padding: 6px 8px; }
251
+ .stats-toolbar { align-items: flex-start; flex-direction: column; gap: 6px; }
252
+ .stats-mode-picker { width: 100%; }
253
+ .stats-mode-btn { width: 100%; }
254
+ .scard { padding: 12px; }
255
+ .bucket-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
256
+ .stats-panel { padding: 12px; }
257
+ .stats-panel-head { display: block; }
258
+ .stats-legend { justify-content: flex-start; margin-top: 8px; }
259
+ }
193
260
 
194
261
  /* ---------- 会话列表 ---------- */
195
262
  .session-list { display: flex; flex-direction: column; gap: 8px; }
@@ -362,7 +429,30 @@ body.in-session .view {
362
429
  .md-table-wrap th, .md-table-wrap td { padding: 6px 9px; border: 1px solid var(--dsr-line); text-align: left; white-space: nowrap; }
363
430
  .md-table-wrap th { background: var(--dsr-bg-2); font-weight: 700; }
364
431
  .md-table-wrap tbody tr:nth-child(even) { background: color-mix(in srgb, var(--dsr-bg-2) 45%, transparent); }
365
- .goal-obj { font-size: 13px; line-height: 1.55; color: var(--dsr-text); }
432
+ .goal-disclosure { width: 100%; min-width: 0; display: flex; justify-content: flex-end; }
433
+ .goal-disclosure .goal-card { width: 100%; min-width: 0; }
434
+ .goal-card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 6px; }
435
+ .goal-card-head .card-title { min-width: 0; margin-bottom: 0; }
436
+ .goal-collapse-btn,
437
+ .goal-side-tab {
438
+ touch-action: manipulation; border: 1px solid var(--dsr-line); background: var(--dsr-bg-2); color: var(--dsr-muted);
439
+ font: inherit; cursor: pointer;
440
+ }
441
+ .goal-collapse-btn { min-height: 34px; display: inline-flex; align-items: center; gap: 4px; padding: 4px 9px; border-radius: 9px; font-size: 12px; }
442
+ .goal-collapse-btn > span { color: var(--dsr-accent-strong); font-size: 18px; line-height: 1; }
443
+ .goal-side-tab {
444
+ min-height: 46px; max-width: min(100%, 210px); display: inline-flex; align-items: center; gap: 7px; padding: 7px 12px 7px 10px;
445
+ border-right: 0; border-radius: 12px 0 0 12px; box-shadow: -5px 6px 18px var(--dsr-shadow); color: var(--dsr-text); font-size: 13px; font-weight: 700;
446
+ }
447
+ .goal-side-tab > span:first-child { color: var(--dsr-accent-strong); font-size: 20px; line-height: 1; }
448
+ .goal-side-tab small { min-width: 0; color: var(--dsr-muted); font-size: 11px; font-weight: 500; white-space: nowrap; }
449
+ .goal-collapse-btn:hover,
450
+ .goal-side-tab:hover { background: var(--dsr-panel-2); color: var(--dsr-text); }
451
+ .goal-collapse-btn:active,
452
+ .goal-side-tab:active { transform: translateY(1px); }
453
+ .goal-collapse-btn:focus-visible,
454
+ .goal-side-tab:focus-visible { outline: 2px solid var(--dsr-accent-strong); outline-offset: 2px; }
455
+ .goal-obj { font-size: 13px; line-height: 1.55; color: var(--dsr-text); overflow-wrap: anywhere; }
366
456
  .goal-phase { font-size: 12px; color: var(--dsr-info); margin-top: 3px; }
367
457
  .goal-actions { display: flex; gap: 8px; margin-top: 9px; flex-wrap: wrap; }
368
458
  .goal-actions .mini-btn { flex: 1; text-align: center; min-width: 64px; }
@@ -801,6 +891,16 @@ button.overview-attention-item, button.overview-session-item { cursor:pointer; }
801
891
  }
802
892
  .setting-row > div:first-child { flex: 1; min-width: 0; }
803
893
  .setting-row + .setting-row { border-top: 1px solid var(--dsr-line); }
894
+ .setting-link {
895
+ width: 100%; color: var(--dsr-text); text-align: left;
896
+ transition: background-color .18s ease, color .18s ease;
897
+ }
898
+ .setting-link::after {
899
+ content: '›'; flex: 0 0 auto; color: var(--dsr-muted); font-size: 20px; font-weight: 400;
900
+ transform: translateX(0); transition: transform .18s ease, color .18s ease;
901
+ }
902
+ .setting-link:hover, .setting-link:focus-visible { background: var(--dsr-bg-2); }
903
+ .setting-link:hover::after, .setting-link:focus-visible::after { color: var(--dsr-accent-strong); transform: translateX(2px); }
804
904
  .setting-name { font-size: 14.5px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
805
905
  .dsh-experimental-badge { display: inline-block; margin-left: 6px; padding: 2px 6px; border: 1px solid var(--dsr-warning-line); border-radius: 999px; color: var(--dsr-warning); background: var(--dsr-warning-soft); font-size: 10px; font-weight: 700; vertical-align: 2px; }
806
906
  .setting-desc { font-size: 12px; color: var(--dsr-muted); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@@ -848,6 +948,7 @@ button.overview-attention-item, button.overview-session-item { cursor:pointer; }
848
948
  .server-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
849
949
  .server-note { font-size: 13px; word-break: break-all; }
850
950
  .server-url { flex: 1; min-width: 0; font-size: 11.5px; color: var(--dsr-muted); word-break: break-all; }
951
+ .server-token-badge { color: var(--dsr-muted); font-size: 10px; }
851
952
  .server-badge {
852
953
  flex-shrink: 0; font-size: 11px; padding: 1px 7px; border-radius: 999px;
853
954
  background: var(--dsr-accent-soft); color: var(--dsr-accent-strong);
@@ -874,11 +975,11 @@ button.overview-attention-item, button.overview-session-item { cursor:pointer; }
874
975
  .switch input { opacity: 0; width: 0; height: 0; }
875
976
  .slider {
876
977
  position: absolute; inset: 0; border-radius: 999px; background: var(--dsr-panel-2);
877
- border: 1px solid var(--dsr-line); transition: .2s;
978
+ border: 1px solid var(--dsr-line); transition: background-color .2s ease, border-color .2s ease;
878
979
  }
879
980
  .slider::before {
880
981
  content: ''; position: absolute; width: 19px; height: 19px; border-radius: 50%;
881
- left: 3px; top: 3px; background: var(--dsr-muted); transition: .2s;
982
+ left: 3px; top: 3px; background: var(--dsr-muted); transition: transform .2s ease, background-color .2s ease;
882
983
  }
883
984
  .switch input:checked + .slider { background: var(--dsr-accent-soft); border-color: var(--dsr-accent); }
884
985
  .switch input:checked + .slider::before { transform: translateX(19px); background: var(--dsr-accent); }
@@ -902,21 +1003,17 @@ button.overview-attention-item, button.overview-session-item { cursor:pointer; }
902
1003
  }
903
1004
  .nav-btn .nav-ico { width: 22px; height: 22px; display: grid; place-items: center; line-height: 1; transition: transform .18s ease, color .18s ease; }
904
1005
  .nav-btn .nav-ico svg { width: 21px; height: 21px; display: block; }
905
- .nav-btn:nth-of-type(1) { --nav-tint: var(--dsr-info); }
906
- .nav-btn:nth-of-type(2) { --nav-tint: var(--dsr-success); }
907
- .nav-btn:nth-of-type(4) { --nav-tint: var(--dsr-warning); }
908
- .nav-btn:nth-of-type(5) { --nav-tint: var(--dsr-accent-2); }
909
- .nav-btn:not(.nav-home) .nav-ico { color: var(--nav-tint, var(--dsr-nav-muted)); opacity: .82; }
1006
+ .nav-btn:not(.nav-home) .nav-ico { color: var(--dsr-nav-muted); opacity: .84; }
910
1007
  .nav-btn:not(.nav-home) > span:last-of-type { color: var(--dsr-nav-muted); }
911
1008
  .nav-btn.active:not(.nav-home) { color: var(--dsr-nav-active); }
912
- .nav-btn.active:not(.nav-home) .nav-ico { transform: translateY(-1px); opacity: 1; }
1009
+ .nav-btn.active:not(.nav-home) .nav-ico { color: var(--dsr-nav-active); transform: translateY(-1px); opacity: 1; }
913
1010
  .nav-btn.active:not(.nav-home)::after { content: ''; position: absolute; bottom: 3px; width: 4px; height: 4px; border-radius: 50%; background: var(--dsr-nav-active); box-shadow: 0 0 10px var(--dsr-glow); }
914
1011
  .nav-home { z-index: 2; transform: translateY(-13px); color: var(--dsr-nav-muted); }
915
1012
  .nav-home-orb { width: 56px; height: 56px; display: grid; place-items: center; border-radius: 50%; background: var(--dsr-bg-2); border: 1px solid var(--dsr-accent-line); box-shadow: 0 5px 18px var(--dsr-shadow); transition: transform .18s ease, background .18s ease, box-shadow .18s ease; }
916
1013
  .nav-home .nav-ico { width: 30px; height: 30px; color: var(--dsr-accent-strong); }
917
1014
  .nav-home .nav-ico svg { width: 29px; height: 29px; }
918
1015
  .nav-home.active { color: var(--dsr-nav-active); }
919
- .nav-home.active .nav-home-orb { background: radial-gradient(circle at 34% 27%, var(--dsr-info), var(--dsr-accent) 42%, var(--dsr-accent-2)); border-color: var(--dsr-accent); color: var(--dsr-on-accent); box-shadow: 0 7px 24px var(--dsr-glow), inset 0 0 0 1px rgba(255,255,255,.32); }
1016
+ .nav-home.active .nav-home-orb { background: linear-gradient(145deg, var(--dsr-accent-2), var(--dsr-accent) 64%); border-color: var(--dsr-accent); color: var(--dsr-on-accent); box-shadow: 0 7px 24px var(--dsr-glow), inset 0 0 0 1px rgba(255,255,255,.28); }
920
1017
  .nav-home.active .nav-ico { color: var(--dsr-on-accent); transform: none; }
921
1018
  .nav-home:active .nav-home-orb { transform: scale(.96); }
922
1019
  .nav-badge {
@@ -929,7 +1026,6 @@ button.overview-attention-item, button.overview-session-item { cursor:pointer; }
929
1026
  .sheet-backdrop {
930
1027
  position: fixed; inset: 0; z-index: 45;
931
1028
  background: var(--dsr-overlay);
932
- animation: sheet-fade .18s ease;
933
1029
  }
934
1030
  .sheet {
935
1031
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 46;
@@ -957,7 +1053,6 @@ button.overview-attention-item, button.overview-session-item { cursor:pointer; }
957
1053
  .sheet-item-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
958
1054
  .sheet-item-name { font-size: 14px; font-weight: 600; }
959
1055
  .sheet-item-desc { font-size: 12px; color: var(--dsr-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
960
- @keyframes sheet-fade { from { opacity: 0 } to { opacity: 1 } }
961
1056
 
962
1057
  /* ---------- 应用内选择抽屉 ---------- */
963
1058
  .custom-select-native {
@@ -1048,7 +1143,7 @@ button.overview-attention-item, button.overview-session-item { cursor:pointer; }
1048
1143
  .modal-card {
1049
1144
  width: 100%; max-width: 460px; max-height: 82vh; overflow-y: auto;
1050
1145
  background: var(--dsr-bg-2); border: 1px solid var(--dsr-line); border-radius: 18px;
1051
- padding: 16px;
1146
+ padding: 16px; box-shadow: 0 22px 60px var(--dsr-shadow); overscroll-behavior: contain;
1052
1147
  }
1053
1148
  .modal-title { font-size: 16px; font-weight: 700; margin-bottom: 10px; }
1054
1149
  .modal-body { font-size: 14px; }
@@ -1123,25 +1218,30 @@ button.overview-attention-item, button.overview-session-item { cursor:pointer; }
1123
1218
  .fs-workspace-nav { grid-template-columns: 1fr; }
1124
1219
  .file-preview-card { height: 88vh; padding: 13px; }
1125
1220
  }
1126
- .theme-panel-list { display: flex; flex-direction: column; gap: 8px; }
1221
+ .theme-panel-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 9px; }
1127
1222
  .theme-option {
1128
- display: flex; align-items: center; gap: 10px; min-width: 0; width: 100%;
1129
- padding: 11px 12px; border-radius: 12px; text-align: left;
1223
+ position: relative; display: flex; flex-direction: column; align-items: stretch; gap: 9px; min-width: 0; width: 100%;
1224
+ min-height: 86px; padding: 10px; border-radius: 13px; text-align: left;
1130
1225
  background: var(--dsr-panel); border: 1px solid var(--dsr-line);
1131
- white-space: nowrap;
1226
+ white-space: nowrap; overflow: hidden;
1227
+ transition: transform .18s ease, background-color .18s ease, border-color .18s ease, box-shadow .18s ease;
1132
1228
  }
1133
- .theme-option:active { background: var(--dsr-panel-2); }
1229
+ .theme-option:hover, .theme-option:focus-visible { background: var(--dsr-panel-2); border-color: var(--dsr-accent-line); transform: translateY(-1px); }
1230
+ .theme-option:active { background: var(--dsr-panel-2); transform: scale(.985); }
1134
1231
  .theme-option.current { border-color: var(--dsr-accent-line); box-shadow: 0 0 0 1px var(--dsr-accent-soft); }
1135
- .theme-swatches { display: inline-flex; gap: 4px; flex-shrink: 0; }
1232
+ .theme-swatches {
1233
+ display: grid; grid-template-columns: 1.35fr 1fr .72fr; height: 30px; flex-shrink: 0;
1234
+ overflow: hidden; border: 1px solid rgba(127, 127, 127, .28); border-radius: 8px;
1235
+ }
1136
1236
  .theme-swatches i {
1137
- width: 14px; height: 14px; border-radius: 50%; display: block;
1138
- border: 1px solid rgba(127, 127, 127, .35);
1237
+ width: auto; height: 100%; display: block;
1139
1238
  }
1140
1239
  .theme-option .theme-name {
1141
- flex: 1; min-width: 0; font-size: 14px; font-weight: 600;
1240
+ min-width: 0; padding-right: 22px; font-size: 13px; font-weight: 650;
1142
1241
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
1143
1242
  }
1144
- .theme-option .theme-check { flex-shrink: 0; color: var(--dsr-accent-strong); font-size: 14px; font-weight: 700; }
1243
+ .theme-option .theme-check { position: absolute; right: 11px; bottom: 9px; color: var(--dsr-accent-strong); font-size: 14px; font-weight: 700; }
1244
+ @media (max-width: 350px) { .theme-panel-list { grid-template-columns: 1fr; } }
1145
1245
 
1146
1246
  /* ---------- toast ---------- */
1147
1247
  .toast {