@co0ontty/wand 1.18.1 → 1.20.4

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.
@@ -188,6 +188,10 @@
188
188
  min-height: 100dvh;
189
189
  height: 100vh;
190
190
  height: 100dvh;
191
+ /* 软键盘弹起时由 JS 注入 --app-viewport-height = visualViewport.height,
192
+ 整体 flex column 自动收缩,让底部 input-panel 上移贴键盘上沿;
193
+ 没注入时退回 100dvh 行为。 */
194
+ height: var(--app-viewport-height, 100dvh);
191
195
  line-height: var(--line-height-base);
192
196
  overflow: hidden;
193
197
  }
@@ -236,6 +240,8 @@
236
240
  min-height: 100dvh;
237
241
  height: 100vh;
238
242
  height: 100dvh;
243
+ /* 与 body 同步:键盘弹起时跟随可见视口收缩。 */
244
+ height: var(--app-viewport-height, 100dvh);
239
245
  overflow: hidden;
240
246
  }
241
247
 
@@ -1054,16 +1060,16 @@
1054
1060
  }
1055
1061
  .claude-history-item:hover {
1056
1062
  opacity: 1;
1057
- background: rgba(150, 118, 85, 0.06);
1063
+ background: rgba(255, 253, 250, 0.96);
1058
1064
  }
1059
1065
 
1060
1066
  /* ===== 会话卡片项 ===== */
1061
1067
  .session-item {
1062
1068
  width: 100%;
1063
1069
  text-align: left;
1064
- background: var(--bg-surface);
1065
- border: 1px solid transparent;
1066
- border-radius: var(--radius-md);
1070
+ background: rgba(255, 252, 247, 0.92);
1071
+ border: 1px solid var(--border-subtle);
1072
+ border-radius: 10px;
1067
1073
  color: var(--text-primary);
1068
1074
  padding: 10px 12px;
1069
1075
  cursor: pointer;
@@ -1097,6 +1103,7 @@
1097
1103
  position: relative;
1098
1104
  z-index: 2;
1099
1105
  background: inherit;
1106
+ border-radius: inherit;
1100
1107
  transition: transform 0.3s var(--ease-out-expo);
1101
1108
  will-change: transform;
1102
1109
  }
@@ -1148,7 +1155,7 @@
1148
1155
 
1149
1156
  .session-item.selected {
1150
1157
  border-color: rgba(197, 101, 61, 0.35);
1151
- background: rgba(197, 101, 61, 0.08);
1158
+ background: rgba(255, 245, 238, 0.96);
1152
1159
  }
1153
1160
 
1154
1161
  .session-item.selected::before {
@@ -1803,9 +1810,9 @@
1803
1810
 
1804
1811
  /* ===== 会话卡片交互效果 ===== */
1805
1812
  .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);
1813
+ background: rgba(255, 253, 250, 0.96);
1814
+ border-color: var(--border-default);
1815
+ box-shadow: 0 2px 8px rgba(89, 58, 32, 0.07);
1809
1816
  }
1810
1817
 
1811
1818
  .session-item:hover::before {
@@ -1814,9 +1821,9 @@
1814
1821
  }
1815
1822
 
1816
1823
  .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);
1824
+ background: rgba(255, 247, 240, 0.96);
1825
+ border-color: rgba(197, 101, 61, 0.3);
1826
+ box-shadow: 0 2px 8px rgba(197, 101, 61, 0.1);
1820
1827
  }
1821
1828
 
1822
1829
  .session-item.active::before {
@@ -1884,7 +1891,7 @@
1884
1891
 
1885
1892
  .session-status.running .session-status-dot {
1886
1893
  background: var(--success);
1887
- box-shadow: 0 0 8px var(--success-glow);
1894
+ box-shadow: 0 0 5px var(--success-glow);
1888
1895
  animation: status-pulse 2s ease-in-out infinite;
1889
1896
  }
1890
1897
 
@@ -2219,15 +2226,92 @@
2219
2226
 
2220
2227
  .terminal-info { font-size: 0.625rem; color: var(--text-muted); font-weight: 500; }
2221
2228
 
2222
- /* ===== 主内容区顶部行 ===== */
2229
+ /* ===== 主内容区顶部行(三段式) ===== */
2223
2230
  .main-header-row {
2224
2231
  display: flex;
2225
2232
  align-items: center;
2226
- justify-content: flex-start;
2227
2233
  padding: 6px 10px;
2228
2234
  flex-shrink: 0;
2229
2235
  min-height: 44px;
2230
2236
  gap: 8px;
2237
+ position: relative;
2238
+ }
2239
+ .topbar-left {
2240
+ display: flex;
2241
+ align-items: center;
2242
+ gap: 8px;
2243
+ flex-shrink: 0;
2244
+ }
2245
+ .topbar-center {
2246
+ flex: 1;
2247
+ min-width: 0;
2248
+ display: flex;
2249
+ align-items: center;
2250
+ gap: 8px;
2251
+ overflow: hidden;
2252
+ }
2253
+ .topbar-right {
2254
+ display: flex;
2255
+ align-items: center;
2256
+ gap: 4px;
2257
+ flex-shrink: 0;
2258
+ }
2259
+
2260
+ /* 左段品牌徽标 */
2261
+ .topbar-brand {
2262
+ display: inline-flex;
2263
+ align-items: center;
2264
+ justify-content: center;
2265
+ width: 26px;
2266
+ height: 26px;
2267
+ border-radius: 8px;
2268
+ background: linear-gradient(135deg, var(--accent), var(--accent-active));
2269
+ color: #fff;
2270
+ font-weight: 700;
2271
+ font-size: 0.85rem;
2272
+ letter-spacing: 0.02em;
2273
+ box-shadow: 0 1px 3px rgba(89, 58, 32, 0.18);
2274
+ user-select: none;
2275
+ flex-shrink: 0;
2276
+ }
2277
+
2278
+ /* 中段:会话标题 / cwd / 标语 */
2279
+ .topbar-session-title {
2280
+ font-weight: 600;
2281
+ font-size: 0.85rem;
2282
+ color: var(--text-primary);
2283
+ white-space: nowrap;
2284
+ overflow: hidden;
2285
+ text-overflow: ellipsis;
2286
+ flex-shrink: 0;
2287
+ max-width: 240px;
2288
+ }
2289
+ .topbar-cwd {
2290
+ color: var(--text-muted);
2291
+ font-size: 0.72rem;
2292
+ font-family: var(--font-mono, monospace);
2293
+ white-space: nowrap;
2294
+ overflow: hidden;
2295
+ text-overflow: ellipsis;
2296
+ min-width: 0;
2297
+ flex: 1 1 0;
2298
+ cursor: pointer;
2299
+ padding: 2px 6px;
2300
+ border-radius: 6px;
2301
+ direction: rtl;
2302
+ text-align: left;
2303
+ transition: background var(--transition-fast), color var(--transition-fast);
2304
+ }
2305
+ .topbar-cwd:hover {
2306
+ background: rgba(255, 255, 255, 0.55);
2307
+ color: var(--text-secondary);
2308
+ }
2309
+ .topbar-tagline {
2310
+ color: var(--text-muted);
2311
+ font-size: 0.78rem;
2312
+ white-space: nowrap;
2313
+ overflow: hidden;
2314
+ text-overflow: ellipsis;
2231
2315
  }
2232
2316
 
2233
2317
  /* PWA 模式额外留出顶部缓冲,避免与 iPadOS Stage Manager 等系统浮动控件视觉粘连 */
@@ -2240,7 +2324,65 @@
2240
2324
  padding-top: 10px;
2241
2325
  }
2242
2326
 
2243
- /* Current task indicator */
2327
+ /* 会话状态徽标(静态) */
2328
+ .session-status-pill {
2329
+ display: inline-flex;
2330
+ align-items: center;
2331
+ gap: 5px;
2332
+ font-size: 0.7rem;
2333
+ font-weight: 500;
2334
+ color: var(--text-secondary);
2335
+ background: var(--bg-elevated);
2336
+ border: 1px solid var(--border-subtle);
2337
+ border-radius: 20px;
2338
+ padding: 2px 9px 2px 7px;
2339
+ flex-shrink: 0;
2340
+ max-width: 140px;
2341
+ white-space: nowrap;
2342
+ overflow: hidden;
2343
+ }
2344
+ .session-status-pill .session-status-dot {
2345
+ width: 6px;
2346
+ height: 6px;
2347
+ border-radius: 50%;
2348
+ background: var(--text-muted);
2349
+ flex-shrink: 0;
2350
+ }
2351
+ .session-status-pill .session-status-text {
2352
+ overflow: hidden;
2353
+ text-overflow: ellipsis;
2354
+ }
2355
+ .session-status-pill.running {
2356
+ background: var(--success-muted);
2357
+ border-color: rgba(79, 122, 88, 0.3);
2358
+ color: var(--success);
2359
+ }
2360
+ .session-status-pill.running .session-status-dot {
2361
+ background: var(--success);
2362
+ animation: task-pulse 1.2s ease-in-out infinite;
2363
+ }
2364
+ .session-status-pill.permission-blocked {
2365
+ background: var(--warning-muted);
2366
+ border-color: rgba(169, 106, 47, 0.35);
2367
+ color: var(--warning);
2368
+ }
2369
+ .session-status-pill.permission-blocked .session-status-dot {
2370
+ background: var(--warning);
2371
+ animation: task-pulse 1.2s ease-in-out infinite;
2372
+ }
2373
+ .session-status-pill.exited,
2374
+ .session-status-pill.stopped {
2375
+ color: var(--text-muted);
2376
+ }
2377
+ .session-status-pill.failed {
2378
+ background: var(--danger-muted);
2379
+ border-color: rgba(178, 79, 69, 0.3);
2380
+ color: var(--danger);
2381
+ }
2382
+ .session-status-pill.failed .session-status-dot { background: var(--danger); }
2383
+ .session-status-pill.archived { opacity: 0.7; }
2384
+
2385
+ /* Current task indicator(动态活动徽标,由 updateTaskDisplay 管理) */
2244
2386
  .current-task {
2245
2387
  display: flex;
2246
2388
  align-items: center;
@@ -2252,7 +2394,7 @@
2252
2394
  border-radius: 20px;
2253
2395
  padding: 2px 8px 2px 5px;
2254
2396
  font-weight: 500;
2255
- max-width: 280px;
2397
+ max-width: 240px;
2256
2398
  min-width: 0;
2257
2399
  overflow: hidden;
2258
2400
  flex-shrink: 1;
@@ -2274,6 +2416,50 @@
2274
2416
  50% { opacity: 0.5; transform: scale(0.8); }
2275
2417
  }
2276
2418
 
2419
+ /* 右段更多菜单 */
2420
+ .topbar-more-wrap {
2421
+ position: relative;
2422
+ display: inline-flex;
2423
+ }
2424
+ .topbar-more-menu {
2425
+ position: absolute;
2426
+ top: calc(100% + 6px);
2427
+ right: 0;
2428
+ min-width: 168px;
2429
+ background: var(--bg-elevated);
2430
+ border: 1px solid var(--border-default);
2431
+ border-radius: var(--radius-md);
2432
+ padding: 4px;
2433
+ box-shadow: var(--shadow-lg);
2434
+ z-index: 60;
2435
+ display: flex;
2436
+ flex-direction: column;
2437
+ gap: 1px;
2438
+ }
2439
+ .topbar-more-menu.hidden { display: none; }
2440
+ .topbar-more-item {
2441
+ display: flex;
2442
+ align-items: center;
2443
+ gap: 9px;
2444
+ width: 100%;
2445
+ padding: 8px 12px;
2446
+ border: 0;
2447
+ background: transparent;
2448
+ color: var(--text-primary);
2449
+ font-family: var(--font-sans);
2450
+ font-size: 0.82rem;
2451
+ font-weight: 500;
2452
+ cursor: pointer;
2453
+ border-radius: 8px;
2454
+ text-align: left;
2455
+ transition: background var(--transition-fast), color var(--transition-fast);
2456
+ }
2457
+ .topbar-more-item:hover { background: var(--accent-muted); color: var(--accent); }
2458
+ .topbar-more-item svg { flex-shrink: 0; opacity: 0.85; }
2459
+ .topbar-more-item.topbar-more-item-danger { color: var(--danger); }
2460
+ .topbar-more-item.topbar-more-item-danger:hover { background: var(--danger-muted); color: var(--danger-hover); }
2461
+ .topbar-more-item.hidden { display: none; }
2462
+
2277
2463
  /* 桌面端显示所有按钮 */
2278
2464
  .terminal-scale-toggle { display: flex; }
2279
2465
  .terminal-tool-btn { display: inline-flex; }
@@ -5539,7 +5725,7 @@
5539
5725
  background: transparent;
5540
5726
  border: none;
5541
5727
  color: var(--text-primary);
5542
- padding: 8px 10px 3px;
5728
+ padding: 8px 34px 3px 10px;
5543
5729
  outline: none;
5544
5730
  resize: none;
5545
5731
  min-height: 32px;
@@ -5667,6 +5853,159 @@
5667
5853
  transform: scale(0.95);
5668
5854
  }
5669
5855
 
5856
+ /* Prompt optimize button — top-right of the input composer */
5857
+ .prompt-optimize-btn {
5858
+ position: absolute;
5859
+ top: 5px;
5860
+ right: 6px;
5861
+ width: 28px;
5862
+ height: 28px;
5863
+ border-radius: 50%;
5864
+ border: 1px solid rgba(197, 101, 61, 0.22);
5865
+ padding: 0;
5866
+ cursor: pointer;
5867
+ display: inline-flex;
5868
+ align-items: center;
5869
+ justify-content: center;
5870
+ background: linear-gradient(135deg, rgba(255, 250, 242, 0.95) 0%, rgba(232, 197, 174, 0.35) 100%);
5871
+ color: var(--accent);
5872
+ z-index: 4;
5873
+ box-shadow: 0 1px 4px rgba(197, 101, 61, 0.10);
5874
+ transition: background var(--transition-fast), color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast);
5875
+ }
5876
+ .prompt-optimize-btn:hover {
5877
+ background: linear-gradient(135deg, rgba(255, 250, 242, 1) 0%, rgba(232, 197, 174, 0.55) 100%);
5878
+ color: var(--accent-hover);
5879
+ transform: scale(1.12);
5880
+ border-color: rgba(197, 101, 61, 0.35);
5881
+ box-shadow: 0 2px 10px rgba(197, 101, 61, 0.22), 0 0 0 3px rgba(197, 101, 61, 0.06);
5882
+ }
5883
+ .prompt-optimize-btn:active {
5884
+ transform: scale(0.92);
5885
+ box-shadow: 0 1px 3px rgba(197, 101, 61, 0.15);
5886
+ }
5887
+ .prompt-optimize-btn:disabled {
5888
+ cursor: not-allowed;
5889
+ opacity: 0.6;
5890
+ }
5891
+ .prompt-optimize-btn:disabled:hover {
5892
+ transform: none;
5893
+ background: linear-gradient(135deg, rgba(255, 250, 242, 0.95) 0%, rgba(232, 197, 174, 0.35) 100%);
5894
+ box-shadow: 0 1px 4px rgba(197, 101, 61, 0.10);
5895
+ border-color: rgba(197, 101, 61, 0.22);
5896
+ }
5897
+ .prompt-optimize-icon {
5898
+ transition: transform 0.25s ease, opacity 0.2s ease;
5899
+ transform-origin: center;
5900
+ filter: drop-shadow(0 0 1px rgba(197, 101, 61, 0.3));
5901
+ }
5902
+ .prompt-optimize-btn:hover .prompt-optimize-icon {
5903
+ animation: prompt-optimize-twinkle 1.4s ease-in-out infinite;
5904
+ filter: drop-shadow(0 0 3px rgba(197, 101, 61, 0.4));
5905
+ }
5906
+ @keyframes prompt-optimize-twinkle {
5907
+ 0%, 100% { transform: rotate(0deg) scale(1); }
5908
+ 50% { transform: rotate(12deg) scale(1.12); }
5909
+ }
5910
+ .prompt-optimize-spinner {
5911
+ position: absolute;
5912
+ inset: 0;
5913
+ border-radius: 50%;
5914
+ pointer-events: none;
5915
+ opacity: 0;
5916
+ background: conic-gradient(from 0deg, transparent 0deg, var(--accent) 270deg, transparent 360deg);
5917
+ mask: radial-gradient(circle, transparent 10px, black 11px);
5918
+ -webkit-mask: radial-gradient(circle, transparent 10px, black 11px);
5919
+ transition: opacity 0.15s ease;
5920
+ }
5921
+ .prompt-optimize-btn.is-loading {
5922
+ color: var(--accent);
5923
+ background: linear-gradient(135deg, rgba(255, 250, 242, 1) 0%, rgba(232, 197, 174, 0.5) 100%);
5924
+ border-color: rgba(197, 101, 61, 0.4);
5925
+ box-shadow: 0 2px 12px rgba(197, 101, 61, 0.25), 0 0 0 3px rgba(197, 101, 61, 0.08);
5926
+ }
5927
+ .prompt-optimize-btn.is-loading .prompt-optimize-icon {
5928
+ animation: prompt-optimize-pulse 1.1s ease-in-out infinite;
5929
+ }
5930
+ .prompt-optimize-btn.is-loading .prompt-optimize-spinner {
5931
+ opacity: 1;
5932
+ animation: prompt-optimize-spin 0.9s linear infinite;
5933
+ }
5934
+ @keyframes prompt-optimize-spin {
5935
+ to { transform: rotate(360deg); }
5936
+ }
5937
+ @keyframes prompt-optimize-pulse {
5938
+ 0%, 100% { transform: scale(0.88); opacity: 0.8; }
5939
+ 50% { transform: scale(1.15); opacity: 1; }
5940
+ }
5941
+
5942
+ /* 优化中的"魔法橡皮擦":mirror 元素叠在 textarea 上,
5943
+ 通过 background-clip: text + color: transparent 让渐变只在
5944
+ 字符形状内显示,光斑从左到右滚过文字本身。空白处完全透明,
5945
+ 所以观感是"几个字本身在被光扫过",而不是整个输入框背景在闪。 */
5946
+ .prompt-optimize-shimmer-overlay {
5947
+ position: absolute;
5948
+ pointer-events: none;
5949
+ overflow: hidden;
5950
+ white-space: pre-wrap;
5951
+ word-wrap: break-word;
5952
+ overflow-wrap: break-word;
5953
+ color: transparent;
5954
+ background-image: linear-gradient(
5955
+ 100deg,
5956
+ rgba(140, 90, 55, 0.55) 0%,
5957
+ rgba(214, 123, 82, 0.95) 35%,
5958
+ rgba(255, 240, 210, 1) 50%,
5959
+ rgba(214, 123, 82, 0.95) 65%,
5960
+ rgba(140, 90, 55, 0.55) 100%
5961
+ );
5962
+ background-size: 250% 100%;
5963
+ background-repeat: no-repeat;
5964
+ background-position: 250% 0;
5965
+ -webkit-background-clip: text;
5966
+ background-clip: text;
5967
+ -webkit-text-fill-color: transparent;
5968
+ animation: prompt-optimize-shimmer 1.4s linear infinite;
5969
+ z-index: 2;
5970
+ }
5971
+ @keyframes prompt-optimize-shimmer {
5972
+ from { background-position: 250% 0; }
5973
+ to { background-position: -150% 0; }
5974
+ }
5975
+ /* 优化中保留 textarea 文字原色,让 mirror 在其上扫过;不再整体
5976
+ 灰化输入框,避免"整个书窗一起动"的观感。 */
5977
+ .input-textarea.optimize-flash {
5978
+ animation: prompt-optimize-flash 0.85s ease-out;
5979
+ }
5980
+ @keyframes prompt-optimize-flash {
5981
+ 0% { background: rgba(197, 101, 61, 0.18); }
5982
+ 100% { background: transparent; }
5983
+ }
5984
+ .prompt-optimize-btn.is-shake {
5985
+ animation: prompt-optimize-shake 0.4s ease-out;
5986
+ color: var(--danger);
5987
+ }
5988
+ @keyframes prompt-optimize-shake {
5989
+ 0%, 100% { transform: translateX(0); }
5990
+ 20% { transform: translateX(-3px); }
5991
+ 40% { transform: translateX(3px); }
5992
+ 60% { transform: translateX(-2px); }
5993
+ 80% { transform: translateX(2px); }
5994
+ }
5995
+
5996
+ @media (max-width: 720px) {
5997
+ .prompt-optimize-btn {
5998
+ width: 26px;
5999
+ height: 26px;
6000
+ top: 3px;
6001
+ right: 4px;
6002
+ }
6003
+ .prompt-optimize-icon {
6004
+ width: 14px;
6005
+ height: 14px;
6006
+ }
6007
+ }
6008
+
5670
6009
  .attachment-preview {
5671
6010
  display: flex;
5672
6011
  gap: 6px;
@@ -6565,6 +6904,12 @@
6565
6904
  .current-task { font-size: 0.5625rem; padding: 1px 6px 1px 4px; gap: 3px; }
6566
6905
 
6567
6906
  .main-header-row { padding: 2px 6px; gap: 4px; }
6907
+ .topbar-brand,
6908
+ .topbar-cwd { display: none; }
6909
+ .topbar-session-title { max-width: 140px; font-size: 0.78rem; }
6910
+ .session-status-pill { font-size: 0.625rem; padding: 1px 7px 1px 5px; max-width: 110px; }
6911
+ .session-status-pill .session-status-dot { width: 5px; height: 5px; }
6912
+ .topbar-more-menu { min-width: 156px; }
6568
6913
 
6569
6914
  /* 视图切换按钮 - 紧凑 */
6570
6915
  .view-toggle { height: 28px; padding: 2px; gap: 1px; }
@@ -6744,7 +7089,7 @@
6744
7089
 
6745
7090
  .input-textarea {
6746
7091
  min-height: 32px;
6747
- padding: 6px 8px 3px;
7092
+ padding: 6px 30px 3px 8px;
6748
7093
  font-size: 16px;
6749
7094
  line-height: 1.35;
6750
7095
  }
@@ -7070,7 +7415,7 @@
7070
7415
  }
7071
7416
 
7072
7417
  .input-composer { border-radius: 8px; }
7073
- .input-textarea { min-height: 28px; padding: 5px 6px 2px; font-size: 16px; }
7418
+ .input-textarea { min-height: 28px; padding: 5px 28px 2px 6px; font-size: 16px; }
7074
7419
 
7075
7420
  .btn-circle { width: 28px; height: 28px; min-width: 28px; }
7076
7421
 
@@ -10239,4 +10584,176 @@
10239
10584
  }
10240
10585
  }
10241
10586
 
10587
+ /* ── 顶栏 git 徽章 ── */
10588
+ .topbar-git-slot {
10589
+ display: inline-flex;
10590
+ align-items: center;
10591
+ }
10592
+ .topbar-git-slot:empty {
10593
+ display: none;
10594
+ }
10595
+ .topbar-git-badge {
10596
+ display: inline-flex;
10597
+ align-items: center;
10598
+ gap: 5px;
10599
+ height: 32px;
10600
+ padding: 0 10px;
10601
+ font-family: var(--font-sans);
10602
+ font-size: 0.72rem;
10603
+ font-weight: 500;
10604
+ color: var(--text-secondary);
10605
+ background: transparent;
10606
+ border: 1px solid transparent;
10607
+ border-radius: var(--radius-sm);
10608
+ cursor: pointer;
10609
+ white-space: nowrap;
10610
+ transition: all var(--transition-fast);
10611
+ box-sizing: border-box;
10612
+ line-height: 1;
10613
+ }
10614
+ .topbar-git-badge:hover {
10615
+ background: rgba(255, 255, 255, 0.5);
10616
+ color: var(--text-primary);
10617
+ }
10618
+ .topbar-git-badge:active {
10619
+ transform: scale(0.96);
10620
+ }
10621
+ .topbar-git-icon {
10622
+ flex-shrink: 0;
10623
+ opacity: 0.85;
10624
+ }
10625
+ .topbar-git-branch {
10626
+ font-family: var(--font-mono, monospace);
10627
+ font-weight: 600;
10628
+ max-width: 12em;
10629
+ overflow: hidden;
10630
+ text-overflow: ellipsis;
10631
+ }
10632
+ .topbar-git-count {
10633
+ color: var(--accent);
10634
+ font-weight: 700;
10635
+ font-family: var(--font-mono, monospace);
10636
+ }
10637
+ .topbar-git-clean {
10638
+ color: rgba(60, 160, 90, 0.85);
10639
+ font-weight: 700;
10640
+ font-size: 0.78rem;
10641
+ }
10642
+
10643
+ /* ── 快捷提交模态框 ── */
10644
+ .quick-commit-modal {
10645
+ max-width: 560px;
10646
+ }
10647
+ .quick-commit-modal .modal-body {
10648
+ display: flex;
10649
+ flex-direction: column;
10650
+ gap: 12px;
10651
+ }
10652
+ .qc-files-wrap {
10653
+ max-height: 200px;
10654
+ overflow-y: auto;
10655
+ padding: 8px 10px;
10656
+ border: 1px solid var(--border-color, rgba(0, 0, 0, 0.08));
10657
+ border-radius: 6px;
10658
+ background: rgba(255, 255, 255, 0.45);
10659
+ font-family: var(--font-mono, monospace);
10660
+ font-size: 0.78rem;
10661
+ display: flex;
10662
+ flex-direction: column;
10663
+ gap: 2px;
10664
+ }
10665
+ .qc-empty {
10666
+ color: var(--text-muted);
10667
+ padding: 6px 0;
10668
+ text-align: center;
10669
+ font-style: italic;
10670
+ }
10671
+ .qc-file-row {
10672
+ display: flex;
10673
+ align-items: center;
10674
+ gap: 8px;
10675
+ line-height: 1.5;
10676
+ }
10677
+ .qc-flag {
10678
+ flex-shrink: 0;
10679
+ width: 24px;
10680
+ text-align: center;
10681
+ font-weight: 700;
10682
+ color: var(--text-muted);
10683
+ letter-spacing: 0;
10684
+ }
10685
+ .qc-flag-add { color: rgba(60, 160, 90, 0.95); }
10686
+ .qc-flag-mod { color: rgba(220, 150, 30, 0.95); }
10687
+ .qc-flag-del { color: rgba(200, 70, 70, 0.95); }
10688
+ .qc-flag-ren { color: rgba(110, 130, 200, 0.95); }
10689
+ .qc-flag-untracked { color: rgba(140, 140, 140, 0.95); }
10690
+ .qc-file-path {
10691
+ color: var(--text-secondary);
10692
+ overflow: hidden;
10693
+ text-overflow: ellipsis;
10694
+ white-space: nowrap;
10695
+ flex: 1 1 auto;
10696
+ min-width: 0;
10697
+ }
10698
+ .qc-submodule-badge {
10699
+ flex-shrink: 0;
10700
+ padding: 1px 6px;
10701
+ border-radius: 8px;
10702
+ background: rgba(140, 100, 200, 0.16);
10703
+ color: rgba(110, 70, 180, 0.95);
10704
+ font-size: 0.68rem;
10705
+ font-weight: 600;
10706
+ letter-spacing: 0.02em;
10707
+ white-space: nowrap;
10708
+ }
10709
+ .qc-checkbox-row {
10710
+ display: flex;
10711
+ align-items: center;
10712
+ gap: 8px;
10713
+ font-size: 0.85rem;
10714
+ color: var(--text-primary);
10715
+ cursor: pointer;
10716
+ user-select: none;
10717
+ }
10718
+ .qc-checkbox-row input[type="checkbox"] {
10719
+ width: 16px;
10720
+ height: 16px;
10721
+ cursor: pointer;
10722
+ }
10723
+ .qc-message-row,
10724
+ .qc-tag-row {
10725
+ display: flex;
10726
+ flex-direction: column;
10727
+ gap: 4px;
10728
+ }
10729
+ .qc-message-row.hidden,
10730
+ .qc-tag-row.hidden {
10731
+ display: none;
10732
+ }
10733
+ .qc-message-header {
10734
+ display: flex;
10735
+ align-items: center;
10736
+ justify-content: space-between;
10737
+ gap: 8px;
10738
+ }
10739
+ .qc-message-row textarea {
10740
+ resize: vertical;
10741
+ min-height: 56px;
10742
+ font-family: var(--font-mono, monospace);
10743
+ font-size: 0.85rem;
10744
+ }
10745
+ .quick-commit-modal .worktree-merge-actions {
10746
+ display: flex;
10747
+ justify-content: flex-end;
10748
+ gap: 8px;
10749
+ margin-top: 4px;
10750
+ }
10751
+
10752
+ @media (max-width: 720px) {
10753
+ .topbar-git-branch { max-width: 8em; }
10754
+ .topbar-git-badge { padding: 0 8px; font-size: 0.7rem; }
10755
+ .quick-commit-modal { max-width: 95vw; }
10756
+ .qc-files-wrap { max-height: 160px; }
10757
+ }
10758
+
10242
10759
  /* 结束标记 */