@co0ontty/wand 1.29.1 → 1.29.6

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.
@@ -99,6 +99,7 @@
99
99
 
100
100
  /* ===== 布局尺寸 ===== */
101
101
  --sidebar-width: 300px;
102
+ --sidebar-collapsed-width: 56px;
102
103
  --file-panel-width: 320px;
103
104
  --safe-bottom: 0px;
104
105
 
@@ -447,10 +448,14 @@
447
448
  /* ===== 侧边栏常驻 ===== */
448
449
  .main-layout.sidebar-pinned {
449
450
  padding-left: var(--sidebar-width);
451
+ transition: padding-left 0.3s var(--ease-out-expo);
450
452
  }
451
453
  .main-layout.sidebar-pinned .floating-sidebar-toggle {
452
454
  display: none;
453
455
  }
456
+ .main-layout.sidebar-pinned.sidebar-collapsed {
457
+ padding-left: var(--sidebar-collapsed-width);
458
+ }
454
459
 
455
460
  /* ===== 抽屉背景遮罩 ===== */
456
461
  .drawer-backdrop {
@@ -507,12 +512,115 @@
507
512
  pointer-events: auto;
508
513
  opacity: 1;
509
514
  box-shadow: none;
515
+ transition: width 0.3s var(--ease-out-expo), transform 0.35s var(--ease-out-expo), box-shadow 0.35s ease, opacity 0.25s ease;
510
516
  }
511
517
 
512
518
  .sidebar.pinned .sidebar-close {
513
519
  display: none;
514
520
  }
515
521
 
522
+ /* ===== 侧栏窄条模式(仅 desktop pin 模式生效)===== */
523
+ .sidebar.pinned.collapsed {
524
+ width: var(--sidebar-collapsed-width);
525
+ }
526
+ .sidebar.pinned.collapsed .sidebar-header {
527
+ padding: 14px 8px;
528
+ justify-content: center;
529
+ gap: 0;
530
+ }
531
+ .sidebar.pinned.collapsed .sidebar-header-main,
532
+ .sidebar.pinned.collapsed .sidebar-header-more,
533
+ .sidebar.pinned.collapsed .sidebar-pin-toggle,
534
+ .sidebar.pinned.collapsed .sidebar-footer {
535
+ display: none;
536
+ }
537
+ .sidebar.pinned.collapsed .sidebar-header-actions {
538
+ gap: 0;
539
+ width: 100%;
540
+ justify-content: center;
541
+ }
542
+ .sidebar.pinned.collapsed .sidebar-body {
543
+ padding: 8px 4px;
544
+ overflow-y: auto;
545
+ overflow-x: hidden;
546
+ }
547
+ .sidebar.pinned.collapsed .sidebar-body::-webkit-scrollbar {
548
+ width: 0;
549
+ }
550
+ .sidebar-collapsed-tiles {
551
+ display: flex;
552
+ flex-direction: column;
553
+ gap: 8px;
554
+ align-items: center;
555
+ }
556
+ .sidebar-collapsed-tile {
557
+ width: 36px;
558
+ height: 36px;
559
+ border-radius: 11px;
560
+ border: 0.5px solid rgba(255, 255, 255, 0.32);
561
+ background: linear-gradient(145deg, #d4785a 0%, #b8573a 50%, #a04a2e 100%);
562
+ color: #fff;
563
+ font-size: 14px;
564
+ font-weight: 700;
565
+ font-variant-numeric: tabular-nums;
566
+ letter-spacing: -0.01em;
567
+ cursor: pointer;
568
+ display: inline-flex;
569
+ align-items: center;
570
+ justify-content: center;
571
+ padding: 0;
572
+ box-shadow:
573
+ 0 1px 3px rgba(184, 92, 55, 0.28),
574
+ inset 0 1px 0 rgba(255, 255, 255, 0.28),
575
+ inset 0 -1px 0 rgba(0, 0, 0, 0.08);
576
+ transition:
577
+ filter var(--transition-fast),
578
+ box-shadow 0.22s ease,
579
+ transform 0.22s var(--ease-out-expo);
580
+ }
581
+ .sidebar-collapsed-tile:hover {
582
+ filter: brightness(1.06);
583
+ transform: translateY(-1px);
584
+ box-shadow:
585
+ 0 4px 12px -2px rgba(184, 92, 55, 0.42),
586
+ inset 0 1px 0 rgba(255, 255, 255, 0.35),
587
+ inset 0 -1px 0 rgba(0, 0, 0, 0.08);
588
+ }
589
+ /* Active — liquid glass crown: outer ring + warm halo + crisp top sheen */
590
+ .sidebar-collapsed-tile.active {
591
+ background: linear-gradient(145deg, #d27358 0%, #b35434 50%, #934128 100%);
592
+ transform: translateY(-1px);
593
+ box-shadow:
594
+ /* outer glow halo */
595
+ 0 0 0 1px rgba(255, 255, 255, 0.7),
596
+ 0 0 0 3px rgba(197, 101, 61, 0.32),
597
+ 0 8px 22px -4px rgba(160, 74, 46, 0.55),
598
+ 0 3px 8px -2px rgba(160, 74, 46, 0.32),
599
+ /* top sheen */
600
+ inset 0 1px 0 rgba(255, 255, 255, 0.45),
601
+ inset 1px 0 0 rgba(255, 255, 255, 0.18),
602
+ /* bottom depth */
603
+ inset 0 -1px 0 rgba(0, 0, 0, 0.16);
604
+ }
605
+ .sidebar-collapsed-tile:active {
606
+ transform: translateY(0) scale(0.94);
607
+ transition-duration: 0.08s;
608
+ }
609
+ .sidebar-collapsed-empty {
610
+ color: var(--text-muted, rgba(89, 58, 32, 0.45));
611
+ text-align: center;
612
+ font-size: 16px;
613
+ padding: 12px 0;
614
+ user-select: none;
615
+ }
616
+ .sidebar-collapse-toggle {
617
+ flex-shrink: 0;
618
+ transition: color var(--transition-fast);
619
+ }
620
+ .sidebar-collapse-toggle.collapsed {
621
+ color: var(--primary);
622
+ }
623
+
516
624
  /* ===== 图钉按钮 ===== */
517
625
  .sidebar-pin-toggle {
518
626
  flex-shrink: 0;
@@ -686,8 +794,19 @@
686
794
  text-overflow: ellipsis;
687
795
  }
688
796
 
689
- .tree-item:hover { background: var(--bg-tertiary); }
690
- .tree-item.active { background: var(--accent-muted); color: var(--accent); }
797
+ .tree-item:hover {
798
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.7) 0%, rgba(255, 252, 247, 0.4) 100%);
799
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
800
+ }
801
+ .tree-item.active {
802
+ background:
803
+ linear-gradient(180deg, rgba(255, 252, 247, 0.92) 0%, rgba(255, 244, 232, 0.75) 100%);
804
+ color: var(--accent);
805
+ box-shadow:
806
+ 0 0 0 1px rgba(197, 101, 61, 0.22),
807
+ 0 3px 10px -3px rgba(197, 101, 61, 0.25),
808
+ inset 0 1px 0 rgba(255, 255, 255, 0.85);
809
+ }
691
810
 
692
811
  .tree-toggle {
693
812
  flex-shrink: 0;
@@ -3403,6 +3522,10 @@
3403
3522
  color: var(--accent);
3404
3523
  font-weight: 600;
3405
3524
  }
3525
+ .shortcut-key[data-key="shift_tab"] {
3526
+ color: #6a6bb0;
3527
+ font-weight: 600;
3528
+ }
3406
3529
 
3407
3530
  /* Mobile keyboard overlap compensation */
3408
3531
  @media (max-width: 640px) {
@@ -4054,81 +4177,96 @@
4054
4177
  overflow-y: auto;
4055
4178
  }
4056
4179
 
4057
- /* Tool Use Card */
4180
+ /* ──────────────────────────────────────────────────────────────
4181
+ Tool Use Card — generic write/exec tool wrapper
4182
+ Soft cream surface, brand-tinted status states, polished hover.
4183
+ ────────────────────────────────────────────────────────────── */
4058
4184
  .tool-use-card {
4059
- margin: 3px 0;
4185
+ margin: 4px 0;
4060
4186
  border: 1px solid var(--border-subtle);
4061
- border-radius: 8px;
4187
+ border-radius: var(--radius-sm);
4062
4188
  overflow: hidden;
4063
4189
  width: 100%;
4064
4190
  box-sizing: border-box;
4065
- background: var(--bg-secondary);
4066
- transition: all 0.3s var(--ease-out-expo);
4191
+ background: linear-gradient(180deg, rgba(255, 251, 245, 0.88) 0%, rgba(255, 246, 234, 0.72) 100%);
4192
+ box-shadow: 0 1px 2px rgba(89, 58, 32, 0.04);
4193
+ transition: border-color 0.22s ease, box-shadow 0.22s ease, transform 0.22s ease;
4067
4194
  }
4068
4195
  .tool-use-card:hover {
4069
- border-color: rgba(79, 122, 88, 0.25);
4070
- box-shadow: 0 2px 8px rgba(79, 122, 88, 0.06);
4196
+ border-color: rgba(79, 122, 88, 0.3);
4197
+ box-shadow: 0 3px 12px rgba(79, 122, 88, 0.08);
4071
4198
  }
4072
4199
  .tool-use-card.loading {
4073
- border-color: rgba(79, 122, 88, 0.4);
4200
+ border-color: rgba(169, 106, 47, 0.3);
4201
+ background: linear-gradient(180deg, rgba(255, 244, 226, 0.88) 0%, rgba(255, 241, 218, 0.72) 100%);
4074
4202
  }
4075
4203
  .tool-use-card.success {
4076
- border-color: rgba(79, 122, 88, 0.5);
4204
+ border-color: rgba(79, 122, 88, 0.32);
4077
4205
  }
4078
4206
  .tool-use-card.error {
4079
- border-color: rgba(178, 79, 69, 0.5);
4207
+ border-color: rgba(178, 79, 69, 0.32);
4208
+ background: linear-gradient(180deg, rgba(252, 240, 238, 0.88) 0%, rgba(252, 235, 233, 0.72) 100%);
4080
4209
  }
4081
4210
  .tool-use-header {
4082
4211
  display: flex;
4083
4212
  align-items: center;
4084
- gap: 8px;
4085
- padding: 8px 12px;
4086
- background: rgba(79, 122, 88, 0.04);
4213
+ gap: 10px;
4214
+ padding: 9px 14px;
4215
+ background: transparent;
4087
4216
  cursor: pointer;
4088
4217
  font-size: 0.8125rem;
4089
4218
  user-select: none;
4090
4219
  -webkit-user-select: none;
4091
4220
  -webkit-tap-highlight-color: transparent;
4092
4221
  touch-action: manipulation;
4093
- transition: all 0.2s var(--ease-out-expo);
4094
- min-height: 36px;
4222
+ transition: background 0.18s ease;
4223
+ min-height: 38px;
4095
4224
  flex-wrap: nowrap;
4096
4225
  }
4097
4226
  .tool-use-header:hover {
4098
- background: rgba(79, 122, 88, 0.1);
4227
+ background: rgba(197, 101, 61, 0.04);
4099
4228
  }
4100
4229
  .tool-use-header:active {
4101
- transform: scale(0.99);
4230
+ background: rgba(197, 101, 61, 0.07);
4102
4231
  }
4103
- .tool-use-card.loading .tool-use-header {
4104
- background: rgba(79, 122, 88, 0.08);
4232
+ .tool-use-card.loading .tool-use-header:hover {
4233
+ background: rgba(169, 106, 47, 0.06);
4105
4234
  }
4106
- .tool-use-card.success .tool-use-header {
4107
- background: rgba(79, 122, 88, 0.12);
4235
+ .tool-use-card.success .tool-use-header:hover {
4236
+ background: rgba(79, 122, 88, 0.06);
4108
4237
  }
4109
- .tool-use-card.error .tool-use-header {
4110
- background: rgba(178, 79, 69, 0.1);
4238
+ .tool-use-card.error .tool-use-header:hover {
4239
+ background: rgba(178, 79, 69, 0.06);
4111
4240
  }
4112
4241
  .tool-use-icon {
4113
4242
  font-size: 0.6875rem;
4114
4243
  font-family: var(--font-mono);
4115
- font-weight: 600;
4244
+ font-weight: 700;
4116
4245
  flex-shrink: 0;
4117
- display: flex;
4246
+ display: inline-flex;
4118
4247
  align-items: center;
4119
4248
  justify-content: center;
4120
- min-width: 18px;
4121
- height: 18px;
4122
- border-radius: 4px;
4123
- background: rgba(79, 122, 88, 0.1);
4249
+ min-width: 22px;
4250
+ height: 22px;
4251
+ border-radius: 6px;
4252
+ background: var(--success-muted);
4124
4253
  color: var(--success);
4254
+ letter-spacing: -0.02em;
4255
+ }
4256
+ .tool-use-card.loading .tool-use-icon {
4257
+ background: var(--warning-muted);
4258
+ color: var(--warning);
4259
+ }
4260
+ .tool-use-card.error .tool-use-icon {
4261
+ background: var(--danger-muted);
4262
+ color: var(--danger);
4125
4263
  }
4126
4264
  .tool-use-spinner {
4127
4265
  display: inline-block;
4128
- width: 16px;
4129
- height: 16px;
4130
- border: 2px solid rgba(79, 122, 88, 0.2);
4131
- border-top-color: var(--success);
4266
+ width: 14px;
4267
+ height: 14px;
4268
+ border: 2px solid var(--warning-muted);
4269
+ border-top-color: var(--warning);
4132
4270
  border-radius: 50%;
4133
4271
  animation: tool-spin 0.8s linear infinite;
4134
4272
  }
@@ -4145,12 +4283,13 @@
4145
4283
  overflow: hidden;
4146
4284
  text-overflow: ellipsis;
4147
4285
  white-space: nowrap;
4286
+ letter-spacing: -0.005em;
4148
4287
  }
4149
4288
  .tool-use-file {
4150
4289
  font-size: 0.75rem;
4151
4290
  font-family: var(--font-mono);
4152
- color: var(--text-muted);
4153
- max-width: 300px;
4291
+ color: var(--text-tertiary);
4292
+ max-width: 320px;
4154
4293
  overflow: hidden;
4155
4294
  text-overflow: ellipsis;
4156
4295
  white-space: nowrap;
@@ -4165,38 +4304,49 @@
4165
4304
  overflow: hidden;
4166
4305
  text-overflow: ellipsis;
4167
4306
  white-space: nowrap;
4168
- margin-left: 4px;
4307
+ margin-left: 2px;
4169
4308
  }
4170
4309
  .tool-use-status {
4171
- font-size: 0.75rem;
4172
- padding: 2px 8px;
4173
- border-radius: 4px;
4310
+ font-size: 0.6875rem;
4311
+ font-weight: 600;
4312
+ padding: 3px 10px;
4313
+ border-radius: var(--radius-full);
4174
4314
  flex-shrink: 0;
4175
- margin-left: 4px;
4315
+ margin-left: 2px;
4316
+ letter-spacing: 0.01em;
4176
4317
  }
4177
4318
  .tool-use-card.success .tool-use-status {
4178
- background: rgba(79, 122, 88, 0.15);
4319
+ background: var(--success-muted);
4179
4320
  color: var(--success);
4180
4321
  }
4181
4322
  .tool-use-card.error .tool-use-status {
4182
- background: rgba(178, 79, 69, 0.15);
4323
+ background: var(--danger-muted);
4183
4324
  color: var(--danger);
4184
4325
  }
4326
+ .tool-use-card.loading .tool-use-status {
4327
+ background: var(--warning-muted);
4328
+ color: var(--warning);
4329
+ }
4185
4330
  .tool-use-toggle {
4186
4331
  font-size: 0.75rem;
4187
4332
  color: var(--text-muted);
4188
- transition: transform 0.3s var(--ease-spring);
4333
+ transition: transform 0.3s var(--ease-spring), color 0.18s ease;
4189
4334
  flex-shrink: 0;
4190
4335
  display: flex;
4191
4336
  align-items: center;
4337
+ opacity: 0.6;
4338
+ }
4339
+ .tool-use-card:hover .tool-use-toggle {
4340
+ color: var(--text-secondary);
4341
+ opacity: 1;
4192
4342
  }
4193
4343
  .tool-use-card.collapsed .tool-use-toggle {
4194
4344
  transform: rotate(-90deg);
4195
4345
  }
4196
4346
  .tool-use-body {
4197
- padding: 10px 12px;
4198
- background: var(--bg-elevated);
4199
- border-top: 1px solid var(--border-subtle);
4347
+ padding: 12px 14px;
4348
+ background: rgba(255, 253, 248, 0.65);
4349
+ border-top: 1px solid rgba(125, 91, 57, 0.08);
4200
4350
  max-height: 600px;
4201
4351
  overflow: hidden;
4202
4352
  transition: max-height 0.35s var(--ease-out-expo), padding 0.35s var(--ease-out-expo), opacity 0.25s ease, transform 0.35s var(--ease-out-expo);
@@ -4219,12 +4369,12 @@
4219
4369
  overflow-wrap: break-word;
4220
4370
  max-height: 400px;
4221
4371
  overflow-y: auto;
4222
- line-height: 1.5;
4372
+ line-height: 1.55;
4223
4373
  }
4224
4374
  .tool-use-result {
4225
- margin-top: 8px;
4226
- padding-top: 8px;
4227
- border-top: 1px dashed var(--border-subtle);
4375
+ margin-top: 10px;
4376
+ padding-top: 10px;
4377
+ border-top: 1px dashed rgba(125, 91, 57, 0.14);
4228
4378
  }
4229
4379
  .tool-use-result-content {
4230
4380
  margin: 0;
@@ -4233,9 +4383,12 @@
4233
4383
  color: var(--text-secondary);
4234
4384
  white-space: pre-wrap;
4235
4385
  overflow-wrap: break-word;
4236
- max-height: 300px;
4386
+ max-height: 320px;
4237
4387
  overflow-y: auto;
4238
- line-height: 1.5;
4388
+ line-height: 1.55;
4389
+ background: rgba(125, 91, 57, 0.035);
4390
+ border-radius: var(--radius-xs);
4391
+ padding: 8px 10px;
4239
4392
  }
4240
4393
  .tool-use-result-empty {
4241
4394
  font-size: 0.75rem;
@@ -4246,12 +4399,13 @@
4246
4399
  font-size: 0.75rem;
4247
4400
  color: var(--text-muted);
4248
4401
  font-family: var(--font-mono);
4249
- margin-bottom: 6px;
4250
- padding-bottom: 6px;
4251
- border-bottom: 1px dashed var(--border-subtle);
4402
+ margin-bottom: 8px;
4403
+ padding-bottom: 8px;
4404
+ border-bottom: 1px dashed rgba(125, 91, 57, 0.14);
4252
4405
  }
4253
4406
  .tool-use-meta-label {
4254
4407
  color: var(--text-secondary);
4408
+ font-weight: 600;
4255
4409
  }
4256
4410
  /* AskUserQuestion - simplified */
4257
4411
  .tool-use-card.ask-user {
@@ -4531,100 +4685,176 @@
4531
4685
  }
4532
4686
 
4533
4687
  /* ── Tool Group (连续同类调用折叠) ── */
4688
+ /* ──────────────────────────────────────────────────────────────
4689
+ Tool Group — collapsible cluster of consecutive read-only tools
4690
+ Cream card with brand-tinted status chip, count pill, smooth body.
4691
+ ────────────────────────────────────────────────────────────── */
4534
4692
  .tool-group {
4535
- margin: 2px 0;
4536
- border-radius: 6px;
4537
- border: 1px solid var(--border-subtle, rgba(127,127,127,0.1));
4693
+ margin: 4px 0;
4694
+ border-radius: var(--radius-sm);
4695
+ border: 1px solid var(--border-subtle);
4696
+ background: linear-gradient(180deg, rgba(255, 251, 245, 0.85) 0%, rgba(255, 248, 238, 0.7) 100%);
4697
+ box-shadow: 0 1px 2px rgba(89, 58, 32, 0.03);
4538
4698
  overflow: hidden;
4699
+ transition: border-color 0.18s ease, box-shadow 0.22s ease, transform 0.22s ease;
4700
+ }
4701
+ .tool-group:hover {
4702
+ border-color: rgba(125, 91, 57, 0.18);
4703
+ box-shadow: 0 2px 8px rgba(89, 58, 32, 0.06);
4704
+ }
4705
+ .tool-group[data-status="pending"] {
4706
+ border-color: rgba(169, 106, 47, 0.22);
4707
+ background: linear-gradient(180deg, rgba(255, 244, 226, 0.85) 0%, rgba(255, 241, 218, 0.7) 100%);
4708
+ }
4709
+ .tool-group[data-status="error"] {
4710
+ border-color: rgba(178, 79, 69, 0.28);
4711
+ background: linear-gradient(180deg, rgba(252, 240, 238, 0.85) 0%, rgba(252, 236, 234, 0.7) 100%);
4539
4712
  }
4540
4713
  .tool-group-summary {
4541
4714
  display: flex;
4542
4715
  align-items: center;
4543
- gap: 6px;
4544
- padding: 5px 10px;
4716
+ gap: 9px;
4717
+ padding: 8px 12px;
4545
4718
  cursor: pointer;
4546
4719
  font-size: 0.75rem;
4547
4720
  color: var(--text-secondary);
4548
4721
  user-select: none;
4549
- transition: background var(--transition-fast);
4722
+ transition: background 0.18s ease;
4550
4723
  }
4551
4724
  .tool-group-summary:hover {
4552
- background: var(--bg-hover, rgba(127,127,127,0.06));
4725
+ background: rgba(197, 101, 61, 0.04);
4553
4726
  }
4554
4727
  .tool-group-status {
4728
+ display: inline-flex;
4729
+ align-items: center;
4730
+ justify-content: center;
4731
+ width: 18px;
4732
+ height: 18px;
4733
+ border-radius: 50%;
4555
4734
  font-size: 0.6875rem;
4735
+ font-weight: 700;
4736
+ line-height: 1;
4556
4737
  flex-shrink: 0;
4557
- width: 14px;
4558
- text-align: center;
4738
+ letter-spacing: 0;
4739
+ }
4740
+ .tool-group[data-status="done"] .tool-group-status {
4741
+ background: var(--success-muted);
4742
+ color: var(--success);
4743
+ }
4744
+ .tool-group[data-status="error"] .tool-group-status {
4745
+ background: var(--danger-muted);
4746
+ color: var(--danger);
4747
+ }
4748
+ .tool-group[data-status="pending"] .tool-group-status {
4749
+ background: var(--warning-muted);
4750
+ color: var(--warning);
4751
+ animation: tool-group-pulse 1.6s ease-in-out infinite;
4752
+ }
4753
+ @keyframes tool-group-pulse {
4754
+ 0%, 100% { opacity: 1; }
4755
+ 50% { opacity: 0.55; }
4559
4756
  }
4560
- .tool-group[data-status="done"] .tool-group-status { color: var(--success, #22c55e); }
4561
- .tool-group[data-status="error"] .tool-group-status { color: var(--error, #ef4444); }
4562
- .tool-group[data-status="pending"] .tool-group-status { color: var(--text-muted); }
4563
4757
  .tool-group-text {
4564
4758
  flex: 1;
4565
4759
  min-width: 0;
4566
4760
  overflow: hidden;
4567
4761
  text-overflow: ellipsis;
4568
4762
  white-space: nowrap;
4763
+ font-weight: 500;
4764
+ color: var(--text-primary);
4765
+ letter-spacing: -0.005em;
4569
4766
  }
4570
4767
  .tool-group-count {
4571
4768
  flex-shrink: 0;
4572
- font-size: 0.625rem;
4573
- color: var(--text-muted);
4769
+ font-size: 0.6875rem;
4770
+ color: var(--text-tertiary);
4771
+ padding: 2px 8px;
4772
+ border-radius: var(--radius-full);
4773
+ background: rgba(125, 91, 57, 0.07);
4774
+ font-variant-numeric: tabular-nums;
4574
4775
  }
4575
4776
  .tool-group-chevron {
4576
4777
  flex-shrink: 0;
4577
- transition: transform 0.2s ease;
4778
+ transition: transform 0.25s var(--ease-out-expo);
4578
4779
  color: var(--text-muted);
4780
+ opacity: 0.6;
4781
+ }
4782
+ .tool-group:hover .tool-group-chevron {
4783
+ opacity: 1;
4579
4784
  }
4580
4785
  .tool-group[data-expanded="true"] .tool-group-chevron {
4581
4786
  transform: rotate(180deg);
4582
4787
  }
4583
4788
  .tool-group-body {
4584
4789
  display: none;
4585
- padding: 2px 6px 4px;
4586
- border-top: 1px solid var(--border-subtle, rgba(127,127,127,0.08));
4790
+ padding: 4px 8px 8px;
4791
+ border-top: 1px solid rgba(125, 91, 57, 0.06);
4792
+ background: rgba(255, 253, 248, 0.55);
4587
4793
  }
4588
4794
  .tool-group[data-expanded="true"] .tool-group-body {
4589
4795
  display: block;
4796
+ animation: tool-group-reveal 0.22s var(--ease-out-expo);
4797
+ }
4798
+ @keyframes tool-group-reveal {
4799
+ from { opacity: 0; transform: translateY(-2px); }
4800
+ to { opacity: 1; transform: translateY(0); }
4590
4801
  }
4591
4802
 
4592
- /* ── Inline Tool Display (Read, Glob, Grep, WebFetch, WebSearch, TodoRead) ── */
4803
+ /* ──────────────────────────────────────────────────────────────
4804
+ Inline Tool — single read-only row (Read / Glob / Grep / Web*)
4805
+ Clean two-column layout: icon + title | meta. Hover lifts subtly.
4806
+ ────────────────────────────────────────────────────────────── */
4593
4807
  .inline-tool {
4594
4808
  display: flex;
4595
4809
  flex-direction: column;
4596
4810
  margin: 1px 0;
4597
- border-radius: 6px;
4811
+ border-radius: var(--radius-xs);
4598
4812
  cursor: pointer;
4599
- transition: background var(--transition-fast);
4813
+ transition: background 0.16s ease;
4600
4814
  }
4601
4815
  .inline-tool-row {
4602
4816
  display: flex;
4603
4817
  align-items: center;
4604
- gap: 5px;
4605
- padding: 2px 6px;
4606
- font-size: 0.6875rem;
4607
- color: var(--text-muted);
4818
+ gap: 8px;
4819
+ padding: 5px 10px;
4820
+ font-size: 0.75rem;
4821
+ color: var(--text-secondary);
4608
4822
  font-family: var(--font-mono);
4609
- line-height: 1.4;
4610
- opacity: 0.7;
4823
+ line-height: 1.45;
4824
+ border-radius: var(--radius-xs);
4825
+ transition: background 0.16s ease, color 0.16s ease;
4611
4826
  }
4612
4827
  .inline-tool:hover .inline-tool-row {
4613
- opacity: 1;
4614
- background: rgba(0, 0, 0, 0.02);
4615
- border-radius: 6px;
4828
+ background: rgba(197, 101, 61, 0.06);
4829
+ color: var(--text-primary);
4616
4830
  }
4617
4831
  .inline-tool-status {
4618
- font-size: 0.625rem;
4832
+ display: inline-flex;
4833
+ align-items: center;
4834
+ justify-content: center;
4835
+ width: 14px;
4836
+ height: 14px;
4619
4837
  flex-shrink: 0;
4838
+ font-size: 0.6875rem;
4839
+ font-weight: 700;
4840
+ color: var(--success);
4841
+ line-height: 1;
4842
+ }
4843
+ .inline-tool[data-status="pending"] .inline-tool-status {
4844
+ color: var(--warning);
4845
+ }
4846
+ .inline-tool[data-status="error"] .inline-tool-status,
4847
+ .inline-tool-error-inline .inline-tool-status {
4848
+ color: var(--danger);
4620
4849
  }
4621
4850
  .inline-tool-icon {
4622
4851
  flex-shrink: 0;
4623
- color: var(--text-muted);
4624
- margin: 0 1px;
4625
- opacity: 0.6;
4626
- width: 12px;
4627
- height: 12px;
4852
+ color: var(--text-tertiary);
4853
+ opacity: 0.85;
4854
+ }
4855
+ .inline-tool:hover .inline-tool-icon {
4856
+ color: var(--accent);
4857
+ opacity: 1;
4628
4858
  }
4629
4859
  .inline-tool-title {
4630
4860
  flex: 1;
@@ -4632,70 +4862,94 @@
4632
4862
  overflow: hidden;
4633
4863
  text-overflow: ellipsis;
4634
4864
  white-space: nowrap;
4635
- color: var(--text-muted);
4865
+ color: var(--text-secondary);
4866
+ font-size: 0.75rem;
4867
+ }
4868
+ .inline-tool:hover .inline-tool-title {
4869
+ color: var(--text-primary);
4636
4870
  }
4637
4871
  .inline-tool-meta {
4638
4872
  flex-shrink: 0;
4639
- font-size: 0.625rem;
4873
+ font-size: 0.6875rem;
4640
4874
  color: var(--text-muted);
4641
- opacity: 0.5;
4642
- max-width: 200px;
4875
+ max-width: 220px;
4643
4876
  overflow: hidden;
4644
4877
  text-overflow: ellipsis;
4645
4878
  white-space: nowrap;
4879
+ font-variant-numeric: tabular-nums;
4880
+ letter-spacing: -0.01em;
4646
4881
  }
4647
4882
  .inline-tool-expanded {
4648
4883
  display: none;
4649
- padding: 0 8px 6px 8px;
4884
+ padding: 0 10px 8px 10px;
4650
4885
  }
4651
4886
  .inline-tool-open .inline-tool-expanded {
4652
4887
  display: block;
4888
+ animation: tool-group-reveal 0.2s var(--ease-out-expo);
4653
4889
  }
4654
4890
  .inline-tool-result {
4655
- background: rgba(0, 0, 0, 0.03);
4656
- border-radius: var(--radius-sm);
4657
- padding: 8px;
4658
- margin-top: 4px;
4659
- max-height: 300px;
4891
+ background: rgba(125, 91, 57, 0.04);
4892
+ border: 1px solid rgba(125, 91, 57, 0.07);
4893
+ border-radius: var(--radius-xs);
4894
+ padding: 10px 12px;
4895
+ margin-top: 6px;
4896
+ max-height: 320px;
4660
4897
  overflow-y: auto;
4661
4898
  scrollbar-width: thin;
4662
- scrollbar-color: rgba(0, 0, 0, 0.15) transparent;
4899
+ scrollbar-color: rgba(125, 91, 57, 0.2) transparent;
4663
4900
  }
4664
4901
  .inline-tool-result::-webkit-scrollbar {
4665
- width: 4px;
4902
+ width: 6px;
4666
4903
  }
4667
4904
  .inline-tool-result::-webkit-scrollbar-thumb {
4668
- background: rgba(0, 0, 0, 0.15);
4669
- border-radius: 2px;
4905
+ background: rgba(125, 91, 57, 0.2);
4906
+ border-radius: 3px;
4907
+ }
4908
+ .inline-tool-result::-webkit-scrollbar-thumb:hover {
4909
+ background: rgba(125, 91, 57, 0.32);
4670
4910
  }
4671
4911
  .inline-tool-result-text {
4672
4912
  font-family: var(--font-mono);
4673
4913
  font-size: 0.75rem;
4674
- line-height: 1.5;
4914
+ line-height: 1.55;
4675
4915
  color: var(--text-secondary);
4676
4916
  white-space: pre-wrap;
4677
4917
  word-break: break-all;
4678
4918
  margin: 0;
4679
- max-height: 300px;
4680
- overflow-y: auto;
4681
4919
  }
4682
4920
  .inline-tool-error-inline {
4683
- border-left: 2px solid rgba(178, 79, 69, 0.4);
4921
+ border-left: 2px solid var(--danger);
4922
+ padding-left: 2px;
4923
+ margin-left: -2px;
4684
4924
  }
4685
4925
  .inline-tool-error-inline .inline-tool-row {
4686
- color: rgba(178, 79, 69, 0.7);
4926
+ color: var(--danger);
4687
4927
  }
4688
4928
  .inline-tool-result.inline-tool-error {
4689
- color: rgba(178, 79, 69, 0.8);
4929
+ color: var(--danger);
4690
4930
  font-family: var(--font-mono);
4691
4931
  font-size: 0.75rem;
4692
- background: rgba(178, 79, 69, 0.05);
4932
+ background: var(--danger-muted);
4933
+ border-color: rgba(178, 79, 69, 0.18);
4693
4934
  }
4694
4935
  .inline-tool-loading {
4695
4936
  font-size: 0.75rem;
4696
- color: var(--text-muted);
4937
+ color: var(--warning);
4697
4938
  font-style: italic;
4698
- padding: 4px 0;
4939
+ padding: 6px 0;
4940
+ display: inline-flex;
4941
+ align-items: center;
4942
+ gap: 6px;
4943
+ }
4944
+ .inline-tool-loading::before {
4945
+ content: "";
4946
+ display: inline-block;
4947
+ width: 10px;
4948
+ height: 10px;
4949
+ border: 1.5px solid var(--warning-muted);
4950
+ border-top-color: var(--warning);
4951
+ border-radius: 50%;
4952
+ animation: tool-content-spin 0.7s linear infinite;
4699
4953
  }
4700
4954
  .inline-tool-empty {
4701
4955
  font-size: 0.75rem;
@@ -4735,133 +4989,207 @@
4735
4989
  text-decoration: underline;
4736
4990
  }
4737
4991
 
4738
- /* ── Inline Terminal Display (Bash) ── */
4992
+ /* ──────────────────────────────────────────────────────────────
4993
+ Inline Terminal — Bash card with a real terminal-window look.
4994
+ macOS-style traffic lights, gradient titlebar, monospaced body.
4995
+ ────────────────────────────────────────────────────────────── */
4739
4996
  .inline-terminal {
4740
- margin: 3px 0;
4741
- border: 1px solid rgba(255, 255, 255, 0.06);
4742
- border-radius: 8px;
4743
- background: #1a1714;
4997
+ margin: 4px 0;
4998
+ border: 1px solid rgba(15, 12, 9, 0.6);
4999
+ border-radius: var(--radius-sm);
5000
+ background: #1f1b17;
5001
+ box-shadow:
5002
+ 0 1px 0 rgba(255, 255, 255, 0.04) inset,
5003
+ 0 2px 12px rgba(15, 12, 9, 0.18);
4744
5004
  overflow: hidden;
5005
+ transition: box-shadow 0.22s ease, transform 0.22s ease, border-color 0.22s ease;
5006
+ }
5007
+ .inline-terminal:hover {
5008
+ box-shadow:
5009
+ 0 1px 0 rgba(255, 255, 255, 0.05) inset,
5010
+ 0 4px 18px rgba(15, 12, 9, 0.24);
5011
+ border-color: rgba(255, 255, 255, 0.1);
4745
5012
  }
4746
5013
  .term-header {
4747
5014
  display: flex;
4748
5015
  align-items: center;
4749
- gap: 6px;
4750
- padding: 5px 10px;
4751
- background: rgba(255, 255, 255, 0.03);
5016
+ gap: 10px;
5017
+ padding: 8px 14px;
5018
+ background:
5019
+ linear-gradient(180deg, rgba(255, 255, 255, 0.04) 0%, rgba(255, 255, 255, 0.015) 100%),
5020
+ rgba(0, 0, 0, 0.18);
5021
+ border-bottom: 1px solid rgba(255, 255, 255, 0.04);
4752
5022
  font-size: 0.75rem;
4753
5023
  cursor: pointer;
4754
5024
  user-select: none;
5025
+ position: relative;
4755
5026
  }
4756
5027
  .term-header:hover {
4757
- background: rgba(255, 255, 255, 0.05);
5028
+ background:
5029
+ linear-gradient(180deg, rgba(255, 255, 255, 0.06) 0%, rgba(255, 255, 255, 0.025) 100%),
5030
+ rgba(0, 0, 0, 0.18);
4758
5031
  }
4759
5032
  .term-status-dot {
4760
- width: 6px;
4761
- height: 6px;
5033
+ width: 9px;
5034
+ height: 9px;
4762
5035
  border-radius: 50%;
4763
5036
  flex-shrink: 0;
5037
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25) inset;
5038
+ }
5039
+ .term-status-dot.term-success {
5040
+ background: radial-gradient(circle at 35% 30%, #b6f0c4 0%, #6ee09a 50%, #3aa765 100%);
5041
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25) inset, 0 0 6px rgba(110, 224, 154, 0.35);
5042
+ }
5043
+ .term-status-dot.term-error {
5044
+ background: radial-gradient(circle at 35% 30%, #ffb5b9 0%, #f07178 50%, #b53b41 100%);
5045
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25) inset, 0 0 6px rgba(240, 113, 120, 0.35);
5046
+ }
5047
+ .term-status-dot.term-warn {
5048
+ background: radial-gradient(circle at 35% 30%, #ffd07a 0%, #f0a500 50%, #ad7400 100%);
5049
+ box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25) inset, 0 0 6px rgba(240, 165, 0, 0.35);
5050
+ }
5051
+ .term-status-dot.term-running {
5052
+ background: radial-gradient(circle at 35% 30%, #d1d5db 0%, #9ca3af 50%, #4b5563 100%);
5053
+ animation: term-pulse 1s ease-in-out infinite;
4764
5054
  }
4765
- .term-status-dot.term-success { background: #6ee09a; }
4766
- .term-status-dot.term-error { background: #f07178; }
4767
- .term-status-dot.term-warn { background: #f0a500; }
4768
- .term-status-dot.term-running { background: #6b7280; animation: term-pulse 1s ease-in-out infinite; }
4769
5055
  @keyframes term-pulse {
4770
- 0%, 100% { opacity: 1; }
4771
- 50% { opacity: 0.4; }
5056
+ 0%, 100% { opacity: 1; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25) inset, 0 0 0 rgba(156, 163, 175, 0); }
5057
+ 50% { opacity: 0.55; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.25) inset, 0 0 8px rgba(156, 163, 175, 0.35); }
4772
5058
  }
4773
5059
  .term-cmd-preview {
4774
5060
  flex: 1;
4775
5061
  min-width: 0;
4776
5062
  font-family: var(--font-mono);
4777
- font-size: 0.6875rem;
4778
- color: rgba(255, 255, 255, 0.45);
5063
+ font-size: 0.75rem;
5064
+ color: rgba(232, 220, 200, 0.78);
4779
5065
  overflow: hidden;
4780
5066
  text-overflow: ellipsis;
4781
5067
  white-space: nowrap;
5068
+ letter-spacing: -0.005em;
4782
5069
  }
4783
5070
  .term-cmd-preview .term-prompt {
4784
- color: rgba(110, 224, 154, 0.6);
4785
- font-weight: 500;
4786
- margin-right: 4px;
4787
- font-size: 0.6875rem;
5071
+ color: #6ee09a;
5072
+ font-weight: 600;
5073
+ margin-right: 6px;
5074
+ font-size: 0.75rem;
5075
+ opacity: 0.9;
4788
5076
  }
4789
5077
  .term-title {
4790
5078
  flex: 1;
4791
5079
  font-family: var(--font-mono);
4792
5080
  font-size: 0.75rem;
4793
- color: rgba(255, 255, 255, 0.3);
5081
+ color: rgba(255, 255, 255, 0.4);
4794
5082
  }
4795
5083
  .term-toggle-icon {
4796
- font-size: 0.5rem;
4797
- color: rgba(255, 255, 255, 0.25);
4798
- transition: transform var(--transition-fast);
5084
+ font-size: 0.625rem;
5085
+ color: rgba(255, 255, 255, 0.35);
5086
+ transition: color 0.18s ease;
5087
+ flex-shrink: 0;
5088
+ }
5089
+ .term-header:hover .term-toggle-icon {
5090
+ color: rgba(255, 255, 255, 0.65);
4799
5091
  }
4800
5092
  .term-body {
4801
- padding: 8px 10px;
5093
+ padding: 12px 14px 14px;
5094
+ background:
5095
+ linear-gradient(180deg, rgba(0, 0, 0, 0.18) 0%, rgba(0, 0, 0, 0) 24px),
5096
+ #1f1b17;
4802
5097
  }
4803
5098
  .term-command {
4804
5099
  font-family: var(--font-mono);
4805
5100
  font-size: 0.8125rem;
4806
- color: #e8dcc8;
4807
- line-height: 1.5;
4808
- margin-bottom: 4px;
5101
+ color: #f4e9d4;
5102
+ line-height: 1.55;
5103
+ margin-bottom: 6px;
5104
+ white-space: pre-wrap;
5105
+ word-break: break-all;
4809
5106
  }
4810
5107
  .term-prompt {
4811
5108
  color: #6ee09a;
4812
5109
  font-weight: 600;
4813
- margin-right: 4px;
5110
+ margin-right: 6px;
5111
+ text-shadow: 0 0 6px rgba(110, 224, 154, 0.25);
4814
5112
  }
4815
5113
  .term-output {
4816
- margin-top: 4px;
4817
- padding-top: 4px;
4818
- border-top: 1px solid rgba(255, 255, 255, 0.05);
5114
+ margin-top: 8px;
5115
+ padding-top: 8px;
5116
+ border-top: 1px dashed rgba(255, 255, 255, 0.06);
5117
+ max-height: 360px;
5118
+ overflow-y: auto;
5119
+ scrollbar-width: thin;
5120
+ scrollbar-color: rgba(255, 255, 255, 0.15) transparent;
5121
+ }
5122
+ .term-output::-webkit-scrollbar {
5123
+ width: 6px;
5124
+ }
5125
+ .term-output::-webkit-scrollbar-thumb {
5126
+ background: rgba(255, 255, 255, 0.15);
5127
+ border-radius: 3px;
5128
+ }
5129
+ .term-output::-webkit-scrollbar-thumb:hover {
5130
+ background: rgba(255, 255, 255, 0.25);
4819
5131
  }
4820
5132
  .term-line {
4821
5133
  font-family: var(--font-mono);
4822
5134
  font-size: 0.8125rem;
4823
- color: #c8b89a;
4824
- line-height: 1.6;
5135
+ color: #d4c2a3;
5136
+ line-height: 1.55;
4825
5137
  white-space: pre-wrap;
4826
5138
  word-break: break-all;
4827
5139
  }
4828
5140
  .term-exit {
4829
- margin-top: 6px;
4830
- padding-top: 4px;
4831
- border-top: 1px solid rgba(255, 255, 255, 0.05);
5141
+ margin-top: 10px;
5142
+ padding-top: 8px;
5143
+ border-top: 1px dashed rgba(255, 255, 255, 0.06);
4832
5144
  font-family: var(--font-mono);
4833
- font-size: 0.7rem;
5145
+ font-size: 0.6875rem;
4834
5146
  line-height: 1.5;
5147
+ letter-spacing: 0.04em;
4835
5148
  }
4836
- .term-exit-success { color: rgba(110, 224, 154, 0.7); }
4837
- .term-exit-error { color: rgba(240, 113, 120, 0.7); }
5149
+ .term-exit-success { color: rgba(110, 224, 154, 0.75); }
5150
+ .term-exit-error { color: rgba(240, 113, 120, 0.78); }
4838
5151
 
4839
- /* ── Inline Diff Display (Edit, Write, MultiEdit) ── */
5152
+ /* ──────────────────────────────────────────────────────────────
5153
+ Inline Diff — Edit / Write / MultiEdit
5154
+ Card with clearly-labelled "旧 | 新" columns and status pill.
5155
+ ────────────────────────────────────────────────────────────── */
4840
5156
  .inline-diff {
4841
- margin: 3px 0;
4842
- border: 1px solid rgba(0, 0, 0, 0.06);
4843
- border-radius: 8px;
5157
+ margin: 4px 0;
5158
+ border: 1px solid var(--border-subtle);
5159
+ border-radius: var(--radius-sm);
4844
5160
  overflow: hidden;
4845
- background: var(--bg-secondary);
5161
+ background: linear-gradient(180deg, rgba(255, 251, 245, 0.88) 0%, rgba(255, 246, 234, 0.72) 100%);
5162
+ box-shadow: 0 1px 2px rgba(89, 58, 32, 0.04);
5163
+ transition: border-color 0.22s ease, box-shadow 0.22s ease;
5164
+ }
5165
+ .inline-diff:hover {
5166
+ border-color: rgba(125, 91, 57, 0.22);
5167
+ box-shadow: 0 3px 12px rgba(89, 58, 32, 0.06);
4846
5168
  }
4847
5169
  .diff-header {
4848
5170
  display: flex;
4849
5171
  align-items: center;
4850
- gap: 6px;
4851
- padding: 6px 10px;
4852
- background: rgba(0, 0, 0, 0.03);
4853
- font-size: 0.75rem;
5172
+ gap: 10px;
5173
+ padding: 8px 14px;
5174
+ background: transparent;
5175
+ font-size: 0.8125rem;
4854
5176
  cursor: pointer;
5177
+ transition: background 0.18s ease;
4855
5178
  }
4856
5179
  .diff-header:hover {
4857
- background: rgba(0, 0, 0, 0.05);
5180
+ background: rgba(197, 101, 61, 0.04);
4858
5181
  }
4859
5182
  .diff-toggle {
4860
5183
  font-size: 0.625rem;
4861
5184
  color: var(--text-muted);
4862
- transition: transform 0.3s var(--ease-spring);
5185
+ transition: transform 0.3s var(--ease-spring), color 0.18s ease;
4863
5186
  flex-shrink: 0;
4864
5187
  margin-left: auto;
5188
+ opacity: 0.6;
5189
+ }
5190
+ .inline-diff:hover .diff-toggle {
5191
+ color: var(--text-secondary);
5192
+ opacity: 1;
4865
5193
  }
4866
5194
  .inline-diff.collapsed .diff-toggle {
4867
5195
  transform: rotate(-90deg);
@@ -4877,49 +5205,56 @@
4877
5205
  }
4878
5206
  .diff-file-name {
4879
5207
  font-family: var(--font-mono);
4880
- font-weight: 600;
5208
+ font-weight: 700;
4881
5209
  color: var(--text-primary);
4882
5210
  flex-shrink: 0;
5211
+ font-size: 0.8125rem;
5212
+ letter-spacing: -0.005em;
4883
5213
  }
4884
5214
  .diff-path {
4885
5215
  font-family: var(--font-mono);
4886
- color: var(--text-muted);
5216
+ color: var(--text-tertiary);
4887
5217
  flex: 1;
4888
5218
  min-width: 0;
4889
5219
  overflow: hidden;
4890
5220
  text-overflow: ellipsis;
4891
5221
  white-space: nowrap;
4892
- font-size: 0.7rem;
5222
+ font-size: 0.6875rem;
4893
5223
  }
4894
5224
  .diff-status {
4895
5225
  flex-shrink: 0;
4896
- font-size: 0.7rem;
4897
- padding: 2px 8px;
4898
- border-radius: 3px;
5226
+ font-size: 0.6875rem;
5227
+ font-weight: 600;
5228
+ padding: 3px 10px;
5229
+ border-radius: var(--radius-full);
5230
+ letter-spacing: 0.01em;
4899
5231
  }
4900
5232
  .diff-status.diff-success {
4901
- background: rgba(79, 122, 88, 0.12);
5233
+ background: var(--success-muted);
4902
5234
  color: var(--success);
4903
5235
  }
4904
5236
  .diff-status.diff-error {
4905
- background: rgba(178, 79, 69, 0.12);
5237
+ background: var(--danger-muted);
4906
5238
  color: var(--danger);
4907
5239
  }
4908
5240
  .diff-status.diff-pending {
4909
- background: rgba(0, 0, 0, 0.06);
4910
- color: var(--text-muted);
5241
+ background: var(--warning-muted);
5242
+ color: var(--warning);
4911
5243
  }
4912
5244
  .diff-body {
4913
5245
  overflow: hidden;
5246
+ border-top: 1px solid rgba(125, 91, 57, 0.08);
5247
+ background: rgba(255, 253, 248, 0.65);
4914
5248
  }
4915
5249
  .diff-columns {
4916
5250
  display: flex;
4917
5251
  gap: 1px;
4918
- background: rgba(0, 0, 0, 0.04);
5252
+ background: rgba(125, 91, 57, 0.08);
4919
5253
  }
4920
5254
  .diff-col {
4921
5255
  flex: 1;
4922
5256
  min-width: 0;
5257
+ background: rgba(255, 253, 248, 0.85);
4923
5258
  }
4924
5259
  .diff-col-half {
4925
5260
  flex: 1;
@@ -4930,30 +5265,32 @@
4930
5265
  }
4931
5266
  .diff-col-label {
4932
5267
  font-family: var(--font-mono);
4933
- font-size: 0.65rem;
5268
+ font-size: 0.625rem;
4934
5269
  font-weight: 700;
4935
- padding: 2px 10px;
4936
- color: var(--text-muted);
5270
+ padding: 4px 12px;
5271
+ color: var(--text-tertiary);
4937
5272
  text-transform: uppercase;
4938
- letter-spacing: 0.05em;
4939
- background: rgba(0, 0, 0, 0.02);
4940
- border-bottom: 1px solid rgba(0, 0, 0, 0.05);
5273
+ letter-spacing: 0.08em;
5274
+ background: rgba(125, 91, 57, 0.05);
5275
+ border-bottom: 1px solid rgba(125, 91, 57, 0.08);
4941
5276
  }
4942
5277
  .diff-line {
4943
- padding: 2px 10px;
5278
+ padding: 3px 12px;
4944
5279
  font-family: var(--font-mono);
4945
5280
  font-size: 0.75rem;
4946
- line-height: 1.5;
5281
+ line-height: 1.55;
4947
5282
  white-space: pre-wrap;
4948
5283
  word-break: break-all;
4949
5284
  }
4950
5285
  .diff-add {
4951
- background: rgba(40, 167, 69, 0.08);
4952
- color: #155724;
5286
+ background: rgba(79, 122, 88, 0.08);
5287
+ color: #2c5535;
5288
+ border-left: 2px solid rgba(79, 122, 88, 0.5);
4953
5289
  }
4954
5290
  .diff-remove {
4955
5291
  background: rgba(178, 79, 69, 0.06);
4956
- color: #792620;
5292
+ color: #7c2a23;
5293
+ border-left: 2px solid rgba(178, 79, 69, 0.45);
4957
5294
  }
4958
5295
 
4959
5296
  /* 旧版卡片式思考(保留作为 fallback) */
@@ -7103,11 +7440,17 @@
7103
7440
  box-shadow: 0 4px 12px rgba(125, 91, 57, 0.08);
7104
7441
  }
7105
7442
  .session-modal .mode-card.active {
7106
- background: linear-gradient(180deg, #fff7ef 0%, #ffeed8 100%);
7107
- border-color: var(--accent);
7443
+ background:
7444
+ linear-gradient(180deg, rgba(255, 252, 247, 0.95) 0%, rgba(255, 240, 224, 0.82) 100%);
7445
+ border: 0.5px solid rgba(255, 255, 255, 0.8);
7446
+ backdrop-filter: blur(16px) saturate(180%);
7447
+ -webkit-backdrop-filter: blur(16px) saturate(180%);
7108
7448
  box-shadow:
7109
- 0 0 0 3px var(--accent-muted),
7110
- 0 4px 12px rgba(197, 101, 61, 0.12);
7449
+ 0 0 0 1px rgba(197, 101, 61, 0.32),
7450
+ 0 0 0 4px rgba(197, 101, 61, 0.14),
7451
+ 0 8px 22px -4px rgba(197, 101, 61, 0.3),
7452
+ inset 0 1px 0 rgba(255, 255, 255, 0.95),
7453
+ inset 0 -1px 0 rgba(197, 101, 61, 0.08);
7111
7454
  transform: none;
7112
7455
  }
7113
7456
  .session-modal .mode-card.active .mode-card-label {
@@ -7132,11 +7475,17 @@
7132
7475
  box-shadow: 0 8px 20px rgba(125, 91, 57, 0.1);
7133
7476
  }
7134
7477
  .session-modal .tool-card.active {
7135
- background: linear-gradient(180deg, #fff8f1 0%, #fff1de 100%);
7136
- border-color: var(--accent);
7478
+ background:
7479
+ linear-gradient(180deg, rgba(255, 252, 247, 0.95) 0%, rgba(255, 240, 224, 0.82) 100%);
7480
+ border: 0.5px solid rgba(255, 255, 255, 0.8);
7481
+ backdrop-filter: blur(16px) saturate(180%);
7482
+ -webkit-backdrop-filter: blur(16px) saturate(180%);
7137
7483
  box-shadow:
7138
- 0 0 0 3px var(--accent-muted),
7139
- 0 6px 16px rgba(197, 101, 61, 0.12);
7484
+ 0 0 0 1px rgba(197, 101, 61, 0.3),
7485
+ 0 0 0 4px rgba(197, 101, 61, 0.14),
7486
+ 0 10px 28px -6px rgba(197, 101, 61, 0.3),
7487
+ inset 0 1px 0 rgba(255, 255, 255, 0.95),
7488
+ inset 0 -1px 0 rgba(197, 101, 61, 0.08);
7140
7489
  transform: none;
7141
7490
  }
7142
7491
 
@@ -7376,12 +7725,19 @@
7376
7725
  transform: none;
7377
7726
  border-color: transparent;
7378
7727
  }
7728
+ /* Settings tab active — liquid glass row with warm halo */
7379
7729
  .settings-modal .settings-tab.active {
7380
- background: linear-gradient(180deg, #fff7ef 0%, #ffeed8 100%);
7730
+ background:
7731
+ linear-gradient(180deg, rgba(255, 252, 247, 0.95) 0%, rgba(255, 244, 232, 0.78) 100%);
7381
7732
  color: var(--accent);
7733
+ backdrop-filter: blur(14px) saturate(180%);
7734
+ -webkit-backdrop-filter: blur(14px) saturate(180%);
7382
7735
  box-shadow:
7383
- inset 0 0 0 1px rgba(197, 101, 61, 0.22),
7384
- 0 1px 3px rgba(197, 101, 61, 0.08);
7736
+ inset 0 0 0 1px rgba(197, 101, 61, 0.25),
7737
+ inset 0 1px 0 rgba(255, 255, 255, 0.9),
7738
+ inset 0 -1px 0 rgba(197, 101, 61, 0.08),
7739
+ 0 4px 14px -4px rgba(197, 101, 61, 0.22),
7740
+ 0 1px 3px rgba(125, 91, 57, 0.06);
7385
7741
  }
7386
7742
  .settings-modal .settings-tab.active .settings-tab-meta {
7387
7743
  color: var(--text-secondary);
@@ -7654,6 +8010,7 @@
7654
8010
  .sidebar-pin-toggle.pinned {
7655
8011
  background: rgba(197, 101, 61, 0.12);
7656
8012
  color: var(--accent);
8013
+ transform: rotate(45deg);
7657
8014
  }
7658
8015
 
7659
8016
  /* Drawer close — same pattern as modal-close (rotate + danger tint) */
@@ -7689,17 +8046,27 @@
7689
8046
  padding: 6px;
7690
8047
  }
7691
8048
  .sidebar-header-overflow .overflow-item {
7692
- border-radius: 8px;
8049
+ border-radius: 9px;
7693
8050
  padding: 9px 10px;
7694
8051
  font-size: 0.8125rem;
7695
8052
  font-weight: 500;
8053
+ transition:
8054
+ background 0.16s ease,
8055
+ color 0.16s ease,
8056
+ box-shadow 0.18s ease,
8057
+ transform 0.18s var(--ease-out-expo);
7696
8058
  }
7697
8059
  .sidebar-header-overflow .overflow-item:hover {
7698
- background: rgba(125, 91, 57, 0.08);
8060
+ background:
8061
+ linear-gradient(180deg, rgba(255, 255, 255, 0.9) 0%, rgba(255, 252, 247, 0.6) 100%);
7699
8062
  color: var(--text-primary);
8063
+ box-shadow:
8064
+ 0 0 0 0.5px rgba(125, 91, 57, 0.08),
8065
+ inset 0 1px 0 rgba(255, 255, 255, 0.85);
7700
8066
  }
7701
8067
  .sidebar-header-overflow .overflow-item:active {
7702
- background: rgba(125, 91, 57, 0.14);
8068
+ background: rgba(197, 101, 61, 0.12);
8069
+ color: var(--accent);
7703
8070
  transform: scale(0.98);
7704
8071
  }
7705
8072
 
@@ -7806,17 +8173,20 @@
7806
8173
 
7807
8174
  /* ── Session item — clean card on glass ── */
7808
8175
  .session-item {
7809
- background: rgba(255, 255, 255, 0.55);
7810
- border: 1px solid rgba(125, 91, 57, 0.08);
7811
- border-radius: 12px;
8176
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.62) 0%, rgba(255, 252, 247, 0.42) 100%);
8177
+ border: 0.5px solid rgba(255, 255, 255, 0.55);
8178
+ border-radius: 13px;
7812
8179
  padding: 11px 14px;
7813
8180
  margin-bottom: 6px;
7814
- box-shadow: 0 1px 2px rgba(125, 91, 57, 0.03);
8181
+ box-shadow:
8182
+ 0 0 0 0.5px rgba(125, 91, 57, 0.05),
8183
+ 0 1px 2px rgba(125, 91, 57, 0.03),
8184
+ inset 0 1px 0 rgba(255, 255, 255, 0.6);
7815
8185
  transition:
7816
- background 0.18s ease,
7817
- border-color 0.18s ease,
7818
- box-shadow 0.18s ease,
7819
- transform 0.18s ease;
8186
+ background 0.2s ease,
8187
+ border-color 0.2s ease,
8188
+ box-shadow 0.22s ease,
8189
+ transform 0.22s var(--ease-out-expo);
7820
8190
  }
7821
8191
  .session-item::before {
7822
8192
  left: 4px;
@@ -7824,32 +8194,57 @@
7824
8194
  bottom: 10px;
7825
8195
  width: 3px;
7826
8196
  border-radius: 2px;
7827
- background: var(--accent);
8197
+ background: linear-gradient(180deg, var(--accent), rgba(197, 101, 61, 0.5));
7828
8198
  }
7829
8199
  .session-item:hover {
7830
- background: rgba(255, 255, 255, 0.85);
7831
- border-color: rgba(125, 91, 57, 0.16);
8200
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.85) 0%, rgba(255, 253, 248, 0.62) 100%);
8201
+ border-color: rgba(255, 255, 255, 0.7);
7832
8202
  transform: translateY(-1px);
7833
- box-shadow: 0 4px 12px rgba(125, 91, 57, 0.08);
8203
+ box-shadow:
8204
+ 0 0 0 0.5px rgba(125, 91, 57, 0.08),
8205
+ 0 6px 16px -6px rgba(125, 91, 57, 0.18),
8206
+ inset 0 1px 0 rgba(255, 255, 255, 0.8);
7834
8207
  }
7835
8208
  .session-item:hover::before {
7836
- opacity: 0.45;
8209
+ opacity: 0.5;
7837
8210
  transform: scaleY(1);
7838
8211
  }
8212
+ /* Selected (active) — true liquid glass pill with depth + accent glow */
7839
8213
  .session-item.active {
7840
- background: linear-gradient(180deg, #fff7ef 0%, #fff1de 100%);
7841
- border-color: var(--accent);
8214
+ background:
8215
+ linear-gradient(180deg, rgba(255, 252, 247, 0.92) 0%, rgba(255, 244, 232, 0.78) 100%);
8216
+ border: 0.5px solid rgba(255, 255, 255, 0.85);
8217
+ transform: translateY(-1px);
8218
+ backdrop-filter: blur(20px) saturate(180%);
8219
+ -webkit-backdrop-filter: blur(20px) saturate(180%);
7842
8220
  box-shadow:
7843
- 0 0 0 1px var(--accent-muted),
7844
- 0 4px 14px rgba(197, 101, 61, 0.14);
8221
+ /* outer accent ring (soft) */
8222
+ 0 0 0 1px rgba(197, 101, 61, 0.28),
8223
+ /* warm glow halo */
8224
+ 0 8px 28px -6px rgba(197, 101, 61, 0.32),
8225
+ /* base elevation */
8226
+ 0 2px 6px -1px rgba(125, 91, 57, 0.1),
8227
+ /* top inner highlight — light from above */
8228
+ inset 0 1px 0 rgba(255, 255, 255, 0.95),
8229
+ /* bottom inner shadow — depth at base */
8230
+ inset 0 -1px 0 rgba(197, 101, 61, 0.08),
8231
+ /* left inner glint */
8232
+ inset 1px 0 0 rgba(255, 255, 255, 0.4);
7845
8233
  }
7846
8234
  .session-item.active::before {
7847
8235
  opacity: 1;
7848
8236
  transform: scaleY(1);
8237
+ box-shadow: 0 0 8px rgba(197, 101, 61, 0.5);
7849
8238
  }
8239
+ /* Multi-select state — quieter glass tint, no accent halo */
7850
8240
  .session-item.selected {
7851
- background: linear-gradient(180deg, #fff7ef 0%, #fff3e3 100%);
7852
- border-color: rgba(197, 101, 61, 0.4);
8241
+ background:
8242
+ linear-gradient(180deg, rgba(255, 250, 244, 0.85) 0%, rgba(255, 246, 236, 0.65) 100%);
8243
+ border: 0.5px solid rgba(255, 255, 255, 0.7);
8244
+ box-shadow:
8245
+ 0 0 0 1px rgba(197, 101, 61, 0.18),
8246
+ 0 4px 14px -4px rgba(125, 91, 57, 0.14),
8247
+ inset 0 1px 0 rgba(255, 255, 255, 0.85);
7853
8248
  }
7854
8249
  .session-item.selected::before {
7855
8250
  opacity: 0.7;
@@ -7994,11 +8389,21 @@
7994
8389
  transform: scale(0.96);
7995
8390
  transition-duration: 0.06s;
7996
8391
  }
8392
+ /* Footer tab active — same liquid glass language as .session-item.active */
7997
8393
  .sidebar-footer-actions .btn.active {
7998
- background: linear-gradient(180deg, #fff7ef 0%, #fff1de 100%);
7999
- border-color: rgba(197, 101, 61, 0.32);
8394
+ background:
8395
+ linear-gradient(180deg, rgba(255, 252, 247, 0.95) 0%, rgba(255, 242, 228, 0.78) 100%);
8396
+ border: 0.5px solid rgba(255, 255, 255, 0.85);
8000
8397
  color: var(--accent);
8001
- box-shadow: 0 0 0 1px var(--accent-muted);
8398
+ transform: translateY(-1px);
8399
+ backdrop-filter: blur(16px) saturate(180%);
8400
+ -webkit-backdrop-filter: blur(16px) saturate(180%);
8401
+ box-shadow:
8402
+ 0 0 0 1px rgba(197, 101, 61, 0.28),
8403
+ 0 6px 18px -4px rgba(197, 101, 61, 0.32),
8404
+ 0 2px 4px -1px rgba(125, 91, 57, 0.08),
8405
+ inset 0 1px 0 rgba(255, 255, 255, 0.95),
8406
+ inset 0 -1px 0 rgba(197, 101, 61, 0.08);
8002
8407
  }
8003
8408
  .sidebar-footer-actions .btn.sidebar-logout:hover {
8004
8409
  background: rgba(178, 79, 69, 0.08);
@@ -8338,6 +8743,7 @@
8338
8743
  /* 平板适配 */
8339
8744
  @media (max-width: 768px) {
8340
8745
  .sidebar-pin-toggle { display: none; }
8746
+ .sidebar-collapse-toggle { display: none; }
8341
8747
  .sidebar.pinned:not(.open) {
8342
8748
  transform: translateX(-100%);
8343
8749
  pointer-events: none;
@@ -10000,9 +10406,17 @@
10000
10406
 
10001
10407
  .settings-tab.active {
10002
10408
  color: var(--accent);
10003
- border-color: rgba(197, 101, 61, 0.16);
10004
- background: linear-gradient(135deg, rgba(197, 101, 61, 0.12), rgba(197, 101, 61, 0.05));
10005
- box-shadow: inset 0 0 0 1px rgba(197, 101, 61, 0.08), var(--shadow-xs);
10409
+ border-color: rgba(255, 255, 255, 0.7);
10410
+ background:
10411
+ linear-gradient(180deg, rgba(255, 252, 247, 0.92) 0%, rgba(255, 244, 232, 0.72) 100%);
10412
+ backdrop-filter: blur(14px) saturate(180%);
10413
+ -webkit-backdrop-filter: blur(14px) saturate(180%);
10414
+ box-shadow:
10415
+ inset 0 0 0 1px rgba(197, 101, 61, 0.22),
10416
+ inset 0 1px 0 rgba(255, 255, 255, 0.9),
10417
+ inset 0 -1px 0 rgba(197, 101, 61, 0.06),
10418
+ 0 4px 14px -4px rgba(197, 101, 61, 0.22),
10419
+ 0 1px 3px rgba(125, 91, 57, 0.04);
10006
10420
  }
10007
10421
 
10008
10422
  .settings-tab.active::before {