@co0ontty/wand 1.18.0 → 1.18.12

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.
@@ -1054,16 +1054,16 @@
1054
1054
  }
1055
1055
  .claude-history-item:hover {
1056
1056
  opacity: 1;
1057
- background: rgba(150, 118, 85, 0.06);
1057
+ background: rgba(255, 253, 250, 0.96);
1058
1058
  }
1059
1059
 
1060
1060
  /* ===== 会话卡片项 ===== */
1061
1061
  .session-item {
1062
1062
  width: 100%;
1063
1063
  text-align: left;
1064
- background: var(--bg-surface);
1065
- border: 1px solid transparent;
1066
- border-radius: var(--radius-md);
1064
+ background: rgba(255, 252, 247, 0.92);
1065
+ border: 1px solid var(--border-subtle);
1066
+ border-radius: 10px;
1067
1067
  color: var(--text-primary);
1068
1068
  padding: 10px 12px;
1069
1069
  cursor: pointer;
@@ -1097,6 +1097,7 @@
1097
1097
  position: relative;
1098
1098
  z-index: 2;
1099
1099
  background: inherit;
1100
+ border-radius: inherit;
1100
1101
  transition: transform 0.3s var(--ease-out-expo);
1101
1102
  will-change: transform;
1102
1103
  }
@@ -1148,7 +1149,7 @@
1148
1149
 
1149
1150
  .session-item.selected {
1150
1151
  border-color: rgba(197, 101, 61, 0.35);
1151
- background: rgba(197, 101, 61, 0.08);
1152
+ background: rgba(255, 245, 238, 0.96);
1152
1153
  }
1153
1154
 
1154
1155
  .session-item.selected::before {
@@ -1803,9 +1804,9 @@
1803
1804
 
1804
1805
  /* ===== 会话卡片交互效果 ===== */
1805
1806
  .session-item:hover {
1806
- background: rgba(150, 118, 85, 0.06);
1807
- border-color: var(--border-subtle);
1808
- box-shadow: 0 1px 4px rgba(89, 58, 32, 0.04);
1807
+ background: rgba(255, 253, 250, 0.96);
1808
+ border-color: var(--border-default);
1809
+ box-shadow: 0 2px 8px rgba(89, 58, 32, 0.07);
1809
1810
  }
1810
1811
 
1811
1812
  .session-item:hover::before {
@@ -1814,9 +1815,9 @@
1814
1815
  }
1815
1816
 
1816
1817
  .session-item.active {
1817
- background: rgba(197, 101, 61, 0.08);
1818
- border-color: rgba(197, 101, 61, 0.2);
1819
- box-shadow: 0 1px 6px rgba(197, 101, 61, 0.08);
1818
+ background: rgba(255, 247, 240, 0.96);
1819
+ border-color: rgba(197, 101, 61, 0.3);
1820
+ box-shadow: 0 2px 8px rgba(197, 101, 61, 0.1);
1820
1821
  }
1821
1822
 
1822
1823
  .session-item.active::before {
@@ -1884,7 +1885,7 @@
1884
1885
 
1885
1886
  .session-status.running .session-status-dot {
1886
1887
  background: var(--success);
1887
- box-shadow: 0 0 8px var(--success-glow);
1888
+ box-shadow: 0 0 5px var(--success-glow);
1888
1889
  animation: status-pulse 2s ease-in-out infinite;
1889
1890
  }
1890
1891
 
@@ -2219,15 +2220,92 @@
2219
2220
 
2220
2221
  .terminal-info { font-size: 0.625rem; color: var(--text-muted); font-weight: 500; }
2221
2222
 
2222
- /* ===== 主内容区顶部行 ===== */
2223
+ /* ===== 主内容区顶部行(三段式) ===== */
2223
2224
  .main-header-row {
2224
2225
  display: flex;
2225
2226
  align-items: center;
2226
- justify-content: flex-start;
2227
2227
  padding: 6px 10px;
2228
2228
  flex-shrink: 0;
2229
2229
  min-height: 44px;
2230
2230
  gap: 8px;
2231
+ position: relative;
2232
+ }
2233
+ .topbar-left {
2234
+ display: flex;
2235
+ align-items: center;
2236
+ gap: 8px;
2237
+ flex-shrink: 0;
2238
+ }
2239
+ .topbar-center {
2240
+ flex: 1;
2241
+ min-width: 0;
2242
+ display: flex;
2243
+ align-items: center;
2244
+ gap: 8px;
2245
+ overflow: hidden;
2246
+ }
2247
+ .topbar-right {
2248
+ display: flex;
2249
+ align-items: center;
2250
+ gap: 4px;
2251
+ flex-shrink: 0;
2252
+ }
2253
+
2254
+ /* 左段品牌徽标 */
2255
+ .topbar-brand {
2256
+ display: inline-flex;
2257
+ align-items: center;
2258
+ justify-content: center;
2259
+ width: 26px;
2260
+ height: 26px;
2261
+ border-radius: 8px;
2262
+ background: linear-gradient(135deg, var(--accent), var(--accent-active));
2263
+ color: #fff;
2264
+ font-weight: 700;
2265
+ font-size: 0.85rem;
2266
+ letter-spacing: 0.02em;
2267
+ box-shadow: 0 1px 3px rgba(89, 58, 32, 0.18);
2268
+ user-select: none;
2269
+ flex-shrink: 0;
2270
+ }
2271
+
2272
+ /* 中段:会话标题 / cwd / 标语 */
2273
+ .topbar-session-title {
2274
+ font-weight: 600;
2275
+ font-size: 0.85rem;
2276
+ color: var(--text-primary);
2277
+ white-space: nowrap;
2278
+ overflow: hidden;
2279
+ text-overflow: ellipsis;
2280
+ flex-shrink: 0;
2281
+ max-width: 240px;
2282
+ }
2283
+ .topbar-cwd {
2284
+ color: var(--text-muted);
2285
+ font-size: 0.72rem;
2286
+ font-family: var(--font-mono, monospace);
2287
+ white-space: nowrap;
2288
+ overflow: hidden;
2289
+ text-overflow: ellipsis;
2290
+ min-width: 0;
2291
+ flex: 1 1 0;
2292
+ cursor: pointer;
2293
+ padding: 2px 6px;
2294
+ border-radius: 6px;
2295
+ direction: rtl;
2296
+ text-align: left;
2297
+ transition: background var(--transition-fast), color var(--transition-fast);
2298
+ }
2299
+ .topbar-cwd:hover {
2300
+ background: rgba(255, 255, 255, 0.55);
2301
+ color: var(--text-secondary);
2302
+ }
2303
+ .topbar-tagline {
2304
+ color: var(--text-muted);
2305
+ font-size: 0.78rem;
2306
+ white-space: nowrap;
2307
+ overflow: hidden;
2308
+ text-overflow: ellipsis;
2231
2309
  }
2232
2310
 
2233
2311
  /* PWA 模式额外留出顶部缓冲,避免与 iPadOS Stage Manager 等系统浮动控件视觉粘连 */
@@ -2240,7 +2318,65 @@
2240
2318
  padding-top: 10px;
2241
2319
  }
2242
2320
 
2243
- /* Current task indicator */
2321
+ /* 会话状态徽标(静态) */
2322
+ .session-status-pill {
2323
+ display: inline-flex;
2324
+ align-items: center;
2325
+ gap: 5px;
2326
+ font-size: 0.7rem;
2327
+ font-weight: 500;
2328
+ color: var(--text-secondary);
2329
+ background: var(--bg-elevated);
2330
+ border: 1px solid var(--border-subtle);
2331
+ border-radius: 20px;
2332
+ padding: 2px 9px 2px 7px;
2333
+ flex-shrink: 0;
2334
+ max-width: 140px;
2335
+ white-space: nowrap;
2336
+ overflow: hidden;
2337
+ }
2338
+ .session-status-pill .session-status-dot {
2339
+ width: 6px;
2340
+ height: 6px;
2341
+ border-radius: 50%;
2342
+ background: var(--text-muted);
2343
+ flex-shrink: 0;
2344
+ }
2345
+ .session-status-pill .session-status-text {
2346
+ overflow: hidden;
2347
+ text-overflow: ellipsis;
2348
+ }
2349
+ .session-status-pill.running {
2350
+ background: var(--success-muted);
2351
+ border-color: rgba(79, 122, 88, 0.3);
2352
+ color: var(--success);
2353
+ }
2354
+ .session-status-pill.running .session-status-dot {
2355
+ background: var(--success);
2356
+ animation: task-pulse 1.2s ease-in-out infinite;
2357
+ }
2358
+ .session-status-pill.permission-blocked {
2359
+ background: var(--warning-muted);
2360
+ border-color: rgba(169, 106, 47, 0.35);
2361
+ color: var(--warning);
2362
+ }
2363
+ .session-status-pill.permission-blocked .session-status-dot {
2364
+ background: var(--warning);
2365
+ animation: task-pulse 1.2s ease-in-out infinite;
2366
+ }
2367
+ .session-status-pill.exited,
2368
+ .session-status-pill.stopped {
2369
+ color: var(--text-muted);
2370
+ }
2371
+ .session-status-pill.failed {
2372
+ background: var(--danger-muted);
2373
+ border-color: rgba(178, 79, 69, 0.3);
2374
+ color: var(--danger);
2375
+ }
2376
+ .session-status-pill.failed .session-status-dot { background: var(--danger); }
2377
+ .session-status-pill.archived { opacity: 0.7; }
2378
+
2379
+ /* Current task indicator(动态活动徽标,由 updateTaskDisplay 管理) */
2244
2380
  .current-task {
2245
2381
  display: flex;
2246
2382
  align-items: center;
@@ -2252,7 +2388,7 @@
2252
2388
  border-radius: 20px;
2253
2389
  padding: 2px 8px 2px 5px;
2254
2390
  font-weight: 500;
2255
- max-width: 280px;
2391
+ max-width: 240px;
2256
2392
  min-width: 0;
2257
2393
  overflow: hidden;
2258
2394
  flex-shrink: 1;
@@ -2274,6 +2410,50 @@
2274
2410
  50% { opacity: 0.5; transform: scale(0.8); }
2275
2411
  }
2276
2412
 
2413
+ /* 右段更多菜单 */
2414
+ .topbar-more-wrap {
2415
+ position: relative;
2416
+ display: inline-flex;
2417
+ }
2418
+ .topbar-more-menu {
2419
+ position: absolute;
2420
+ top: calc(100% + 6px);
2421
+ right: 0;
2422
+ min-width: 168px;
2423
+ background: var(--bg-elevated);
2424
+ border: 1px solid var(--border-default);
2425
+ border-radius: var(--radius-md);
2426
+ padding: 4px;
2427
+ box-shadow: var(--shadow-lg);
2428
+ z-index: 60;
2429
+ display: flex;
2430
+ flex-direction: column;
2431
+ gap: 1px;
2432
+ }
2433
+ .topbar-more-menu.hidden { display: none; }
2434
+ .topbar-more-item {
2435
+ display: flex;
2436
+ align-items: center;
2437
+ gap: 9px;
2438
+ width: 100%;
2439
+ padding: 8px 12px;
2440
+ border: 0;
2441
+ background: transparent;
2442
+ color: var(--text-primary);
2443
+ font-family: var(--font-sans);
2444
+ font-size: 0.82rem;
2445
+ font-weight: 500;
2446
+ cursor: pointer;
2447
+ border-radius: 8px;
2448
+ text-align: left;
2449
+ transition: background var(--transition-fast), color var(--transition-fast);
2450
+ }
2451
+ .topbar-more-item:hover { background: var(--accent-muted); color: var(--accent); }
2452
+ .topbar-more-item svg { flex-shrink: 0; opacity: 0.85; }
2453
+ .topbar-more-item.topbar-more-item-danger { color: var(--danger); }
2454
+ .topbar-more-item.topbar-more-item-danger:hover { background: var(--danger-muted); color: var(--danger-hover); }
2455
+ .topbar-more-item.hidden { display: none; }
2456
+
2277
2457
  /* 桌面端显示所有按钮 */
2278
2458
  .terminal-scale-toggle { display: flex; }
2279
2459
  .terminal-tool-btn { display: inline-flex; }
@@ -2961,51 +3141,86 @@
2961
3141
 
2962
3142
  .chat-overlay-controls {
2963
3143
  position: absolute;
2964
- top: 8px;
2965
- right: 8px;
3144
+ top: 10px;
3145
+ right: 10px;
2966
3146
  display: inline-flex;
2967
3147
  align-items: center;
2968
- gap: 6px;
2969
- padding: 2px;
2970
- border-radius: 7px;
2971
- border: 1px solid rgba(125, 91, 57, 0.12);
2972
- background: rgba(255, 250, 242, 0.72);
2973
- backdrop-filter: blur(8px);
2974
- box-shadow: 0 6px 18px rgba(89, 58, 32, 0.12);
2975
- opacity: 0.84;
2976
- transition: opacity 0.18s ease, background 0.18s ease, border-color 0.18s ease;
2977
3148
  z-index: 12;
2978
3149
  pointer-events: auto;
3150
+ opacity: 0;
3151
+ transform: translateY(-4px);
3152
+ transition: opacity 0.22s ease, transform 0.26s var(--ease-out-expo);
2979
3153
  }
2980
3154
 
2981
3155
  .chat-container:hover .chat-overlay-controls,
2982
3156
  .chat-overlay-controls:focus-within {
2983
3157
  opacity: 1;
2984
- background: rgba(255, 250, 242, 0.88);
2985
- border-color: rgba(197, 101, 61, 0.16);
3158
+ transform: translateY(0);
2986
3159
  }
2987
3160
 
2988
3161
  .chat-follow-toggle {
2989
- min-width: 52px;
2990
- padding: 0 10px;
2991
- font-size: 0.6875rem;
2992
- color: var(--text-secondary);
2993
- background: transparent;
2994
- border-color: transparent;
3162
+ display: inline-flex;
3163
+ align-items: center;
3164
+ justify-content: center;
3165
+ min-width: unset;
3166
+ padding: 6px 11px;
3167
+ color: var(--text-tertiary);
3168
+ background: rgba(255, 250, 242, 0.7);
3169
+ backdrop-filter: blur(12px);
3170
+ -webkit-backdrop-filter: blur(12px);
3171
+ border: 1px solid rgba(125, 91, 57, 0.1);
3172
+ border-radius: 999px;
3173
+ box-shadow: 0 1px 4px rgba(89, 58, 32, 0.06);
3174
+ cursor: pointer;
3175
+ transition: all 0.2s ease;
3176
+ }
3177
+
3178
+ .chat-follow-toggle svg {
3179
+ flex-shrink: 0;
3180
+ opacity: 0.7;
3181
+ transition: opacity 0.18s ease, transform 0.2s var(--ease-out-expo);
2995
3182
  }
2996
3183
 
2997
3184
  .chat-follow-toggle.active {
2998
- background: var(--accent-muted);
2999
3185
  color: var(--accent);
3000
- border-color: rgba(197, 101, 61, 0.2);
3186
+ background: rgba(255, 250, 242, 0.88);
3187
+ border-color: rgba(197, 101, 61, 0.18);
3188
+ box-shadow:
3189
+ 0 1px 4px rgba(89, 58, 32, 0.08),
3190
+ 0 0 0 1px rgba(197, 101, 61, 0.06);
3191
+ }
3192
+
3193
+ .chat-follow-toggle.active svg {
3194
+ opacity: 0.85;
3195
+ stroke: var(--accent);
3001
3196
  }
3002
3197
 
3003
3198
  .chat-follow-toggle:hover {
3004
- background: rgba(255, 255, 255, 0.7);
3199
+ color: var(--text-primary);
3200
+ background: rgba(255, 252, 248, 0.92);
3201
+ border-color: rgba(125, 91, 57, 0.16);
3202
+ box-shadow: 0 2px 8px rgba(89, 58, 32, 0.1);
3203
+ }
3204
+
3205
+ .chat-follow-toggle:hover svg {
3206
+ opacity: 0.8;
3005
3207
  }
3006
3208
 
3007
3209
  .chat-follow-toggle.active:hover {
3008
- background: rgba(197, 101, 61, 0.18);
3210
+ color: var(--accent-hover);
3211
+ background: rgba(255, 248, 240, 0.94);
3212
+ border-color: rgba(197, 101, 61, 0.24);
3213
+ box-shadow: 0 2px 8px rgba(184, 92, 55, 0.12);
3214
+ }
3215
+
3216
+ .chat-follow-toggle.active:hover svg {
3217
+ stroke: var(--accent-hover);
3218
+ transform: translateY(1px);
3219
+ }
3220
+
3221
+ .chat-follow-toggle:active {
3222
+ transform: scale(0.94);
3223
+ transition-duration: 0.06s;
3009
3224
  }
3010
3225
 
3011
3226
  .chat-jump-bottom {
@@ -6530,6 +6745,12 @@
6530
6745
  .current-task { font-size: 0.5625rem; padding: 1px 6px 1px 4px; gap: 3px; }
6531
6746
 
6532
6747
  .main-header-row { padding: 2px 6px; gap: 4px; }
6748
+ .topbar-brand,
6749
+ .topbar-cwd { display: none; }
6750
+ .topbar-session-title { max-width: 140px; font-size: 0.78rem; }
6751
+ .session-status-pill { font-size: 0.625rem; padding: 1px 7px 1px 5px; max-width: 110px; }
6752
+ .session-status-pill .session-status-dot { width: 5px; height: 5px; }
6753
+ .topbar-more-menu { min-width: 156px; }
6533
6754
 
6534
6755
  /* 视图切换按钮 - 紧凑 */
6535
6756
  .view-toggle { height: 28px; padding: 2px; gap: 1px; }
@@ -8127,6 +8348,7 @@
8127
8348
  padding-top: 16px;
8128
8349
  background: linear-gradient(180deg, rgba(255, 251, 245, 0), rgba(255, 251, 245, 0.98) 28px);
8129
8350
  z-index: 1;
8351
+ justify-content: flex-end;
8130
8352
  }
8131
8353
 
8132
8354
  .settings-status-message {
@@ -9830,4 +10052,377 @@
9830
10052
  opacity: 1;
9831
10053
  }
9832
10054
 
10055
+ /* ============================================================ */
10056
+ /* Settings v2 — refined sections, file picker, toggle rows */
10057
+ /* ============================================================ */
10058
+
10059
+ /* 卡片头部(修改密码 / SSL 证书等) */
10060
+ .settings-card-head {
10061
+ display: flex;
10062
+ align-items: flex-start;
10063
+ gap: 12px;
10064
+ margin-bottom: 14px;
10065
+ }
10066
+ .settings-card-icon {
10067
+ flex: 0 0 auto;
10068
+ width: 36px;
10069
+ height: 36px;
10070
+ display: inline-flex;
10071
+ align-items: center;
10072
+ justify-content: center;
10073
+ border-radius: 10px;
10074
+ background: linear-gradient(135deg, rgba(197, 101, 61, 0.18), rgba(197, 101, 61, 0.06));
10075
+ color: var(--accent);
10076
+ font-size: 18px;
10077
+ box-shadow: inset 0 0 0 1px rgba(197, 101, 61, 0.18);
10078
+ }
10079
+ .settings-card-head-text {
10080
+ flex: 1;
10081
+ min-width: 0;
10082
+ display: flex;
10083
+ flex-direction: column;
10084
+ gap: 2px;
10085
+ }
10086
+ .settings-card-title {
10087
+ font-size: 0.9375rem;
10088
+ font-weight: 700;
10089
+ color: var(--text-primary);
10090
+ letter-spacing: 0.005em;
10091
+ line-height: 1.3;
10092
+ margin: 0;
10093
+ }
10094
+ .settings-card-desc {
10095
+ font-size: 0.75rem;
10096
+ color: var(--text-muted);
10097
+ line-height: 1.5;
10098
+ margin: 0;
10099
+ }
10100
+ .settings-card-actions {
10101
+ display: flex;
10102
+ justify-content: flex-end;
10103
+ align-items: center;
10104
+ gap: 10px;
10105
+ margin-top: 6px;
10106
+ }
10107
+ .settings-card-actions .btn {
10108
+ min-width: 120px;
10109
+ }
10110
+ .settings-success-message {
10111
+ color: var(--success);
10112
+ }
10113
+
10114
+ /* 区块头(关于 / 通知 tab 内的小段标题) */
10115
+ .settings-section-head {
10116
+ display: flex;
10117
+ align-items: flex-start;
10118
+ gap: 10px;
10119
+ margin-bottom: 12px;
10120
+ }
10121
+ .settings-section-icon {
10122
+ flex: 0 0 auto;
10123
+ width: 28px;
10124
+ height: 28px;
10125
+ display: inline-flex;
10126
+ align-items: center;
10127
+ justify-content: center;
10128
+ border-radius: 8px;
10129
+ background: rgba(197, 101, 61, 0.10);
10130
+ font-size: 14px;
10131
+ }
10132
+ .settings-section-head-text {
10133
+ flex: 1;
10134
+ min-width: 0;
10135
+ display: flex;
10136
+ flex-direction: column;
10137
+ gap: 2px;
10138
+ }
10139
+ .settings-section-heading {
10140
+ font-size: 0.875rem;
10141
+ font-weight: 700;
10142
+ color: var(--text-primary);
10143
+ letter-spacing: 0.005em;
10144
+ line-height: 1.3;
10145
+ margin: 0;
10146
+ }
10147
+ .settings-section-sub {
10148
+ font-size: 0.72rem;
10149
+ color: var(--text-muted);
10150
+ line-height: 1.5;
10151
+ margin: 0;
10152
+ }
10153
+
10154
+ /* Toggle 行(描述在左、开关在右) */
10155
+ .settings-toggle-row {
10156
+ display: flex;
10157
+ align-items: center;
10158
+ justify-content: space-between;
10159
+ gap: 14px;
10160
+ padding: 12px 14px;
10161
+ border-radius: 12px;
10162
+ background: rgba(255, 255, 255, 0.55);
10163
+ border: 1px solid rgba(125, 91, 57, 0.10);
10164
+ margin-top: 10px;
10165
+ }
10166
+ .settings-toggle-row + .settings-toggle-row,
10167
+ .settings-toggle-row + .settings-range-row,
10168
+ .settings-range-row + .settings-toggle-row {
10169
+ margin-top: 8px;
10170
+ }
10171
+ .settings-toggle-text {
10172
+ flex: 1;
10173
+ min-width: 0;
10174
+ display: flex;
10175
+ flex-direction: column;
10176
+ gap: 3px;
10177
+ }
10178
+ .settings-toggle-title {
10179
+ font-size: 0.8125rem;
10180
+ font-weight: 600;
10181
+ color: var(--text-primary);
10182
+ cursor: pointer;
10183
+ }
10184
+ .settings-toggle-desc {
10185
+ font-size: 0.72rem;
10186
+ color: var(--text-muted);
10187
+ line-height: 1.5;
10188
+ }
10189
+ .settings-switch {
10190
+ position: relative;
10191
+ flex: 0 0 auto;
10192
+ cursor: pointer;
10193
+ display: inline-block;
10194
+ }
10195
+
10196
+ /* Range 行(音量等) */
10197
+ .settings-range-row {
10198
+ display: flex;
10199
+ align-items: center;
10200
+ gap: 12px;
10201
+ padding: 12px 14px;
10202
+ border-radius: 12px;
10203
+ background: rgba(255, 255, 255, 0.55);
10204
+ border: 1px solid rgba(125, 91, 57, 0.10);
10205
+ margin-top: 8px;
10206
+ }
10207
+ .settings-range-label {
10208
+ font-size: 0.8125rem;
10209
+ font-weight: 600;
10210
+ color: var(--text-primary);
10211
+ flex: 0 0 auto;
10212
+ margin-bottom: 0;
10213
+ }
10214
+ .settings-range {
10215
+ flex: 1;
10216
+ min-width: 0;
10217
+ accent-color: var(--accent);
10218
+ }
10219
+ .settings-range-value {
10220
+ flex: 0 0 36px;
10221
+ text-align: right;
10222
+ font-size: 0.75rem;
10223
+ color: var(--text-secondary);
10224
+ font-variant-numeric: tabular-nums;
10225
+ }
10226
+
10227
+ /* 行内带操作的字段(select + 刷新等) */
10228
+ .settings-row-with-action {
10229
+ display: flex;
10230
+ gap: 8px;
10231
+ align-items: stretch;
10232
+ }
10233
+ .settings-row-with-action > .field-input,
10234
+ .settings-row-with-action > .field-select,
10235
+ .settings-row-with-action > select {
10236
+ flex: 1;
10237
+ min-width: 0;
10238
+ }
10239
+ .settings-row-with-action > .btn {
10240
+ flex-shrink: 0;
10241
+ }
10242
+
10243
+ /* settings-about-row 加按钮的变体 */
10244
+ .settings-about-row-action {
10245
+ flex-wrap: nowrap;
10246
+ }
10247
+ .settings-value-flex {
10248
+ flex: 1;
10249
+ text-align: right;
10250
+ }
10251
+
10252
+ /* ===== File picker ===== */
10253
+ .file-picker {
10254
+ position: relative;
10255
+ display: flex;
10256
+ align-items: center;
10257
+ gap: 12px;
10258
+ padding: 6px 12px 6px 6px;
10259
+ background: rgba(255, 255, 255, 0.72);
10260
+ border: 1px dashed rgba(125, 91, 57, 0.25);
10261
+ border-radius: 12px;
10262
+ transition: border-color 0.18s, background 0.18s;
10263
+ }
10264
+ .file-picker:hover {
10265
+ border-color: var(--accent-soft, rgba(197, 101, 61, 0.45));
10266
+ background: rgba(255, 255, 255, 0.9);
10267
+ }
10268
+ .file-picker.file-picker-has-file {
10269
+ border-style: solid;
10270
+ border-color: rgba(197, 101, 61, 0.35);
10271
+ background: linear-gradient(135deg, rgba(197, 101, 61, 0.08), rgba(255, 255, 255, 0.85));
10272
+ }
10273
+ .file-picker-input {
10274
+ position: absolute;
10275
+ width: 1px;
10276
+ height: 1px;
10277
+ opacity: 0;
10278
+ pointer-events: none;
10279
+ }
10280
+ .file-picker-trigger {
10281
+ display: inline-flex;
10282
+ align-items: center;
10283
+ gap: 6px;
10284
+ padding: 8px 14px;
10285
+ background: linear-gradient(135deg, var(--accent), color-mix(in srgb, var(--accent) 80%, #000 0%));
10286
+ color: #fff;
10287
+ font-size: 0.8125rem;
10288
+ font-weight: 600;
10289
+ border-radius: 9px;
10290
+ cursor: pointer;
10291
+ flex-shrink: 0;
10292
+ transition: filter 0.15s, transform 0.15s, box-shadow 0.15s;
10293
+ box-shadow: var(--shadow-xs);
10294
+ user-select: none;
10295
+ }
10296
+ .file-picker-trigger:hover {
10297
+ filter: brightness(1.05);
10298
+ transform: translateY(-1px);
10299
+ box-shadow: var(--shadow-sm);
10300
+ }
10301
+ .file-picker-trigger:active {
10302
+ transform: translateY(0);
10303
+ }
10304
+ .file-picker-input:focus-visible + .file-picker-trigger {
10305
+ outline: 2px solid var(--accent);
10306
+ outline-offset: 2px;
10307
+ }
10308
+ .file-picker-icon {
10309
+ width: 16px;
10310
+ height: 16px;
10311
+ flex-shrink: 0;
10312
+ }
10313
+ .file-picker-label {
10314
+ white-space: nowrap;
10315
+ }
10316
+ .file-picker-name {
10317
+ flex: 1;
10318
+ min-width: 0;
10319
+ font-size: 0.8125rem;
10320
+ color: var(--text-muted);
10321
+ overflow: hidden;
10322
+ text-overflow: ellipsis;
10323
+ white-space: nowrap;
10324
+ font-family: var(--font-mono);
10325
+ }
10326
+ .file-picker.file-picker-has-file .file-picker-name {
10327
+ color: var(--text-primary);
10328
+ font-weight: 500;
10329
+ }
10330
+
10331
+ /* ===== App icon picker (general tab) ===== */
10332
+ .settings-app-icon-block {
10333
+ margin-bottom: 18px;
10334
+ }
10335
+ .settings-app-icon-picker {
10336
+ display: flex;
10337
+ gap: 12px;
10338
+ flex-wrap: wrap;
10339
+ }
10340
+ .settings-app-icon-option {
10341
+ display: flex;
10342
+ flex-direction: column;
10343
+ align-items: center;
10344
+ gap: 6px;
10345
+ padding: 10px;
10346
+ border-radius: 14px;
10347
+ background: rgba(255, 255, 255, 0.55);
10348
+ border: 1px solid rgba(125, 91, 57, 0.12);
10349
+ cursor: pointer;
10350
+ transition: border-color 0.18s, background 0.18s, transform 0.18s, box-shadow 0.18s;
10351
+ min-width: 84px;
10352
+ }
10353
+ .settings-app-icon-option:hover {
10354
+ transform: translateY(-1px);
10355
+ border-color: rgba(197, 101, 61, 0.30);
10356
+ background: rgba(255, 255, 255, 0.78);
10357
+ box-shadow: var(--shadow-xs);
10358
+ }
10359
+ .settings-app-icon-option.selected,
10360
+ .settings-app-icon-option[aria-pressed="true"] {
10361
+ border-color: var(--accent);
10362
+ background: linear-gradient(135deg, rgba(197, 101, 61, 0.14), rgba(197, 101, 61, 0.04));
10363
+ box-shadow: inset 0 0 0 1px rgba(197, 101, 61, 0.20);
10364
+ }
10365
+ .settings-app-icon-preview {
10366
+ width: 56px;
10367
+ height: 56px;
10368
+ border-radius: 12px;
10369
+ overflow: hidden;
10370
+ background: var(--bg-tertiary);
10371
+ display: flex;
10372
+ align-items: center;
10373
+ justify-content: center;
10374
+ }
10375
+ .settings-app-icon-label {
10376
+ font-size: 0.72rem;
10377
+ color: var(--text-secondary);
10378
+ font-weight: 500;
10379
+ }
10380
+
10381
+ /* ===== Connect URL box refinements ===== */
10382
+ .settings-connect-url-text {
10383
+ font-family: var(--font-mono, monospace);
10384
+ font-size: 12px;
10385
+ color: var(--text-primary);
10386
+ word-break: break-all;
10387
+ user-select: all;
10388
+ -webkit-user-select: all;
10389
+ }
10390
+
10391
+ /* ===== Mobile tweaks ===== */
10392
+ @media (max-width: 640px) {
10393
+ .settings-toggle-row,
10394
+ .settings-range-row {
10395
+ padding: 10px 12px;
10396
+ }
10397
+ .settings-toggle-row {
10398
+ flex-wrap: wrap;
10399
+ }
10400
+ .settings-card-actions {
10401
+ justify-content: stretch;
10402
+ }
10403
+ .settings-card-actions .btn {
10404
+ flex: 1;
10405
+ min-width: 0;
10406
+ }
10407
+ .file-picker {
10408
+ flex-wrap: wrap;
10409
+ padding: 8px;
10410
+ }
10411
+ .file-picker-trigger {
10412
+ flex: 1 1 auto;
10413
+ justify-content: center;
10414
+ }
10415
+ .file-picker-name {
10416
+ flex: 1 1 100%;
10417
+ text-align: center;
10418
+ padding: 0 4px;
10419
+ }
10420
+ .settings-row-with-action {
10421
+ flex-wrap: wrap;
10422
+ }
10423
+ .settings-row-with-action > .btn {
10424
+ flex: 1;
10425
+ }
10426
+ }
10427
+
9833
10428
  /* 结束标记 */