codexmate 0.0.12 → 0.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/web-ui/styles.css CHANGED
@@ -10,26 +10,26 @@
10
10
  --color-brand-light: rgba(208, 88, 58, 0.14);
11
11
  --color-brand-subtle: rgba(201, 94, 75, 0.2);
12
12
 
13
- --color-bg: #F6EFE6;
14
- --color-surface: #FFFDF9;
15
- --color-surface-alt: #FFF7F0;
13
+ --color-bg: #F8F2EA;
14
+ --color-surface: #FFFDFC;
15
+ --color-surface-alt: #FFF8F2;
16
16
  --color-surface-elevated: #FFFFFF;
17
- --color-surface-tint: rgba(255, 255, 255, 0.78);
17
+ --color-surface-tint: rgba(255, 255, 255, 0.84);
18
18
  --color-text-primary: #1B1714;
19
- --color-text-secondary: #4B4038;
20
- --color-text-tertiary: #7A6A5D;
19
+ --color-text-secondary: #473C34;
20
+ --color-text-tertiary: #6F6054;
21
21
  --color-text-muted: #6C5B50;
22
22
  --color-border: #D8C9B8;
23
- --color-border-soft: rgba(216, 201, 184, 0.45);
24
- --color-border-strong: rgba(216, 201, 184, 0.8);
23
+ --color-border-soft: rgba(216, 201, 184, 0.38);
24
+ --color-border-strong: rgba(216, 201, 184, 0.68);
25
25
 
26
26
  --color-success: #4B8B6A;
27
27
  --color-error: #C44536;
28
28
 
29
29
  --bg-warm-gradient:
30
- radial-gradient(circle at 16% 10%, rgba(201, 94, 75, 0.18), transparent 45%),
31
- radial-gradient(circle at 90% 6%, rgba(255, 255, 255, 0.85), transparent 40%),
32
- linear-gradient(135deg, #F6EFE6 0%, #EFE1D4 45%, #F6EFE6 100%);
30
+ radial-gradient(circle at 16% 10%, rgba(201, 94, 75, 0.14), transparent 48%),
31
+ radial-gradient(circle at 90% 6%, rgba(255, 255, 255, 0.9), transparent 42%),
32
+ linear-gradient(135deg, #F8F2EA 0%, #F1E4D8 44%, #F8F2EA 100%);
33
33
 
34
34
  /* 字体系统 */
35
35
  --font-family-body: 'Source Sans 3', 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif;
@@ -66,21 +66,11 @@
66
66
  --radius-full: 50px;
67
67
 
68
68
  /* 阴影系统 - 多层叠加提升真实感 */
69
- --shadow-subtle:
70
- 0 1px 2px rgba(31, 26, 23, 0.04),
71
- 0 1px 3px rgba(31, 26, 23, 0.02);
72
- --shadow-card:
73
- 0 1px 3px rgba(31, 26, 23, 0.04),
74
- 0 4px 12px rgba(31, 26, 23, 0.03);
75
- --shadow-card-hover:
76
- 0 2px 4px rgba(31, 26, 23, 0.04),
77
- 0 8px 20px rgba(31, 26, 23, 0.06);
78
- --shadow-float:
79
- 0 6px 16px rgba(31, 26, 23, 0.08),
80
- 0 18px 36px rgba(31, 26, 23, 0.06);
81
- --shadow-raised:
82
- 0 4px 12px rgba(31, 26, 23, 0.06),
83
- 0 12px 32px rgba(31, 26, 23, 0.04);
69
+ --shadow-subtle: 0 1px 2px rgba(31, 26, 23, 0.03);
70
+ --shadow-card: 0 6px 18px rgba(31, 26, 23, 0.06);
71
+ --shadow-card-hover: 0 10px 24px rgba(31, 26, 23, 0.08);
72
+ --shadow-float: 0 12px 26px rgba(31, 26, 23, 0.12);
73
+ --shadow-raised: 0 10px 20px rgba(31, 26, 23, 0.1);
84
74
  --shadow-modal:
85
75
  0 8px 24px rgba(31, 26, 23, 0.08),
86
76
  0 24px 64px rgba(31, 26, 23, 0.06);
@@ -90,9 +80,9 @@
90
80
 
91
81
  /* 动画 - 更细腻的曲线 */
92
82
  --transition-instant: 100ms;
93
- --transition-fast: 150ms;
94
- --transition-normal: 250ms;
95
- --transition-slow: 350ms;
83
+ --transition-fast: 120ms;
84
+ --transition-normal: 200ms;
85
+ --transition-slow: 300ms;
96
86
  --ease-spring: cubic-bezier(0.16, 1, 0.3, 1);
97
87
  --ease-spring-soft: cubic-bezier(0.25, 1, 0.5, 1);
98
88
  --ease-smooth: cubic-bezier(0.4, 0, 0.2, 1);
@@ -140,36 +130,106 @@ body {
140
130
  .fab-install {
141
131
  position: fixed;
142
132
  left: 16px;
143
- bottom: 16px;
133
+ bottom: calc(16px + env(safe-area-inset-bottom, 0px));
144
134
  z-index: 90;
145
- padding: 12px 16px;
135
+ display: inline-grid;
136
+ place-items: center;
137
+ width: 50px;
138
+ height: 50px;
139
+ min-width: 44px;
140
+ min-height: 44px;
141
+ padding: 0;
146
142
  border-radius: var(--radius-full);
147
- border: none;
148
- background: linear-gradient(135deg, var(--color-brand) 0%, var(--color-brand-dark) 100%);
143
+ border: 1px solid rgba(255, 255, 255, 0.28);
144
+ background:
145
+ linear-gradient(135deg, rgba(255, 255, 255, 0.18) 0%, rgba(255, 255, 255, 0.04) 100%),
146
+ linear-gradient(135deg, var(--color-brand) 0%, var(--color-brand-dark) 100%);
149
147
  color: #fff;
148
+ font-size: var(--font-size-secondary);
150
149
  font-weight: var(--font-weight-secondary);
151
- letter-spacing: 0.02em;
150
+ letter-spacing: 0.015em;
152
151
  box-shadow: var(--shadow-float);
153
152
  cursor: pointer;
154
- transition: transform var(--transition-fast) var(--ease-spring), box-shadow var(--transition-fast) var(--ease-spring);
153
+ overflow: hidden;
154
+ transition:
155
+ transform var(--transition-fast) var(--ease-spring),
156
+ box-shadow var(--transition-fast) var(--ease-spring),
157
+ filter var(--transition-fast) var(--ease-smooth);
158
+ animation: fabPulse 3.2s ease-in-out infinite;
159
+ }
160
+
161
+ .fab-install::after {
162
+ content: "";
163
+ position: absolute;
164
+ inset: 1px;
165
+ border-radius: inherit;
166
+ border: 1px solid rgba(255, 255, 255, 0.12);
167
+ pointer-events: none;
168
+ }
169
+
170
+ .fab-install-icon {
171
+ width: 20px;
172
+ height: 20px;
173
+ display: inline-grid;
174
+ place-items: center;
175
+ color: #fff;
176
+ background: transparent;
177
+ box-shadow: none;
178
+ flex-shrink: 0;
179
+ }
180
+
181
+ .fab-install-icon svg {
182
+ width: 18px;
183
+ height: 18px;
155
184
  }
156
185
 
157
186
  .fab-install:hover {
158
- transform: translateY(-2px);
187
+ transform: translateY(-1px);
159
188
  box-shadow: var(--shadow-raised);
189
+ filter: saturate(1.04);
160
190
  }
161
191
 
162
192
  .fab-install:active {
163
193
  transform: translateY(0);
194
+ filter: saturate(0.98);
164
195
  }
165
196
 
166
197
  @media (max-width: 640px) {
167
198
  .fab-install {
168
199
  left: 12px;
169
- bottom: 12px;
170
- padding: 10px 14px;
200
+ bottom: calc(12px + env(safe-area-inset-bottom, 0px));
201
+ width: 44px;
202
+ height: 44px;
203
+ padding: 0;
171
204
  font-size: var(--font-size-secondary);
172
205
  }
206
+
207
+ .fab-install-icon {
208
+ width: 18px;
209
+ height: 18px;
210
+ }
211
+
212
+ .fab-install-icon svg {
213
+ width: 16px;
214
+ height: 16px;
215
+ }
216
+ }
217
+
218
+ @keyframes fabPulse {
219
+ 0%,
220
+ 100% {
221
+ box-shadow: var(--shadow-float);
222
+ }
223
+ 50% {
224
+ box-shadow: 0 14px 30px rgba(31, 26, 23, 0.14);
225
+ }
226
+ }
227
+
228
+ @media (prefers-reduced-motion: reduce) {
229
+ .fab-install {
230
+ animation: none;
231
+ transition: none;
232
+ }
173
233
  }
174
234
 
175
235
  /* ============================================
@@ -183,7 +243,7 @@ body::before {
183
243
  radial-gradient(circle at 12% 18%, rgba(201, 94, 75, 0.1), transparent 38%),
184
244
  repeating-linear-gradient(90deg, rgba(255, 255, 255, 0.4) 0 1px, transparent 1px 120px),
185
245
  repeating-linear-gradient(0deg, rgba(255, 255, 255, 0.35) 0 1px, transparent 1px 120px);
186
- opacity: 0.45;
246
+ opacity: 0.28;
187
247
  pointer-events: none;
188
248
  z-index: 0;
189
249
  }
@@ -197,7 +257,7 @@ body::after {
197
257
  linear-gradient(90deg, rgba(255, 255, 255, 0.15) 1px, transparent 1px),
198
258
  linear-gradient(0deg, rgba(255, 255, 255, 0.12) 1px, transparent 1px);
199
259
  background-size: 120px 120px;
200
- opacity: 0.5;
260
+ opacity: 0.22;
201
261
  pointer-events: none;
202
262
  z-index: 0;
203
263
  }
@@ -207,7 +267,7 @@ body::after {
207
267
  ============================================ */
208
268
  .container {
209
269
  width: 100%;
210
- max-width: 1280px;
270
+ max-width: 1460px;
211
271
  margin: 0 auto;
212
272
  padding: 16px 12px 28px;
213
273
  position: relative;
@@ -215,12 +275,12 @@ body::after {
215
275
  }
216
276
 
217
277
  /* ============================================
218
- 布局:双列(侧栏 + 主区)
278
+ 布局:三栏(侧栏 + 主区 + 状态检查器)
219
279
  ============================================ */
220
280
  .app-shell {
221
281
  display: grid;
222
- grid-template-columns: 320px minmax(0, 1fr);
223
- gap: var(--spacing-md);
282
+ grid-template-columns: 260px minmax(0, 1fr) 340px;
283
+ gap: 16px;
224
284
  align-items: flex-start;
225
285
  }
226
286
 
@@ -365,6 +425,129 @@ body::after {
365
425
  line-height: 1.45;
366
426
  }
367
427
 
428
+ .github-badge {
429
+ grid-column: 2;
430
+ display: inline-flex;
431
+ align-items: center;
432
+ justify-content: space-between;
433
+ gap: 10px;
434
+ margin-top: 6px;
435
+ padding: 6px 10px;
436
+ border-radius: 999px;
437
+ border: 1px solid var(--color-border-soft);
438
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0.92) 0%, rgba(255, 255, 255, 0.72) 100%);
439
+ color: var(--color-text-secondary);
440
+ font-size: var(--font-size-caption);
441
+ text-decoration: none;
442
+ box-shadow: var(--shadow-subtle);
443
+ transition: all var(--transition-fast) var(--ease-spring);
444
+ min-width: 0;
445
+ }
446
+
447
+ .github-badge-rail {
448
+ width: 100%;
449
+ align-items: center;
450
+ justify-content: flex-start;
451
+ gap: 8px;
452
+ padding: 6px 8px;
453
+ border-radius: 10px;
454
+ background: rgba(255, 255, 255, 0.8);
455
+ border: 1px solid rgba(216, 201, 184, 0.5);
456
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.7);
457
+ }
458
+
459
+ .github-badge:hover {
460
+ border-color: rgba(201, 94, 75, 0.5);
461
+ color: var(--color-text-primary);
462
+ transform: translateY(-1px);
463
+ box-shadow: 0 6px 12px rgba(27, 23, 20, 0.08);
464
+ }
465
+
466
+ .github-badge-icon {
467
+ width: 16px;
468
+ height: 16px;
469
+ flex-shrink: 0;
470
+ }
471
+
472
+ .github-badge-left {
473
+ display: inline-flex;
474
+ align-items: center;
475
+ gap: 6px;
476
+ flex-shrink: 0;
477
+ }
478
+
479
+ .github-badge-label {
480
+ font-size: var(--font-size-caption);
481
+ font-weight: var(--font-weight-secondary);
482
+ color: var(--color-text-secondary);
483
+ }
484
+
485
+ .github-badge-text {
486
+ min-width: 0;
487
+ font-family: var(--font-family-mono);
488
+ font-size: var(--font-size-caption);
489
+ color: var(--color-text-tertiary);
490
+ line-height: 1.3;
491
+ display: inline-block;
492
+ overflow: hidden;
493
+ text-overflow: ellipsis;
494
+ white-space: nowrap;
495
+ }
496
+
497
+ .github-badge-text > span {
498
+ white-space: nowrap;
499
+ }
500
+
501
+ .github-owner {
502
+ font-weight: 600;
503
+ color: var(--color-text-secondary);
504
+ }
505
+
506
+ .github-sep {
507
+ margin: 0 2px;
508
+ color: var(--color-text-tertiary);
509
+ }
510
+
511
+ .github-repo {
512
+ font-weight: 600;
513
+ color: var(--color-text-primary);
514
+ }
515
+
516
+ .github-badge-rail .github-badge-text {
517
+ display: flex;
518
+ flex-direction: column;
519
+ align-items: flex-start;
520
+ gap: 2px;
521
+ white-space: normal;
522
+ overflow: visible;
523
+ text-overflow: clip;
524
+ color: var(--color-text-secondary);
525
+ }
526
+
527
+ .github-badge-rail .github-sep {
528
+ display: none;
529
+ }
530
+
531
+ .github-badge-rail .github-owner,
532
+ .github-badge-rail .github-repo {
533
+ font-weight: 600;
534
+ }
535
+
536
+ .github-badge-rail .github-badge-left {
537
+ padding: 4px;
538
+ border-radius: 999px;
539
+ background: rgba(201, 94, 75, 0.12);
540
+ }
541
+
542
+ .github-badge-rail .github-badge-label {
543
+ display: none;
544
+ }
545
+
546
+ .github-badge-rail:hover {
547
+ transform: translateY(-1px);
548
+ border-color: rgba(201, 94, 75, 0.5);
549
+ }
550
+
368
551
  .main-tabs {
369
552
  display: flex;
370
553
  gap: 10px;
@@ -411,7 +594,7 @@ body::after {
411
594
  padding: 10px 12px;
412
595
  border-radius: var(--radius-lg);
413
596
  border: 1px solid var(--color-border-soft);
414
- background: linear-gradient(180deg, rgba(255, 255, 255, 0.98) 0%, rgba(255, 247, 240, 0.96) 100%);
597
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.99) 0%, rgba(255, 250, 245, 0.97) 100%);
415
598
  box-shadow: var(--shadow-subtle);
416
599
  }
417
600
 
@@ -434,10 +617,10 @@ body::after {
434
617
 
435
618
  .main-panel {
436
619
  min-width: 0;
437
- background: rgba(255, 255, 255, 0.9);
438
- border: 1px solid rgba(255, 255, 255, 0.65);
620
+ background: rgba(255, 255, 255, 0.95);
621
+ border: 1px solid rgba(216, 201, 184, 0.48);
439
622
  border-radius: 18px;
440
- box-shadow: 0 12px 30px rgba(27, 23, 20, 0.08);
623
+ box-shadow: var(--shadow-card);
441
624
  padding: var(--spacing-md) var(--spacing-lg);
442
625
  backdrop-filter: blur(8px);
443
626
  position: relative;
@@ -445,6 +628,91 @@ body::after {
445
628
  overflow-y: visible;
446
629
  }
447
630
 
631
+ .status-inspector {
632
+ position: sticky;
633
+ top: 24px;
634
+ align-self: start;
635
+ height: calc(100vh - 48px);
636
+ overflow: auto;
637
+ padding: 16px;
638
+ border-radius: var(--radius-xl);
639
+ border: 1px solid var(--color-border-soft);
640
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.96) 0%, rgba(255, 248, 241, 0.92) 100%);
641
+ box-shadow: var(--shadow-card);
642
+ display: flex;
643
+ flex-direction: column;
644
+ gap: 12px;
645
+ }
646
+
647
+ .inspector-head {
648
+ padding: 2px 2px 8px;
649
+ border-bottom: 1px solid rgba(216, 201, 184, 0.35);
650
+ }
651
+
652
+ .inspector-title {
653
+ font-size: 16px;
654
+ line-height: 1.25;
655
+ font-weight: 600;
656
+ color: var(--color-text-primary);
657
+ }
658
+
659
+ .inspector-subtitle {
660
+ margin-top: 4px;
661
+ font-size: 12px;
662
+ color: var(--color-text-tertiary);
663
+ }
664
+
665
+ .inspector-group {
666
+ padding: 12px;
667
+ border-radius: var(--radius-lg);
668
+ border: 1px solid rgba(216, 201, 184, 0.34);
669
+ background: rgba(255, 255, 255, 0.88);
670
+ box-shadow: var(--shadow-subtle);
671
+ }
672
+
673
+ .inspector-group-title {
674
+ font-size: 13px;
675
+ font-weight: 600;
676
+ color: var(--color-text-secondary);
677
+ margin-bottom: 10px;
678
+ }
679
+
680
+ .inspector-kv {
681
+ display: grid;
682
+ grid-template-columns: 92px minmax(0, 1fr);
683
+ gap: 8px 10px;
684
+ align-items: start;
685
+ }
686
+
687
+ .inspector-kv .key {
688
+ font-size: 11px;
689
+ line-height: 1.4;
690
+ color: var(--color-text-muted);
691
+ letter-spacing: 0.01em;
692
+ font-family: var(--font-family-mono);
693
+ }
694
+
695
+ .inspector-kv .value {
696
+ font-size: 14px;
697
+ line-height: 1.35;
698
+ font-weight: 500;
699
+ color: var(--color-text-primary);
700
+ overflow-wrap: anywhere;
701
+ word-break: break-word;
702
+ }
703
+
704
+ .inspector-kv .value.tone-ok {
705
+ color: var(--color-success);
706
+ }
707
+
708
+ .inspector-kv .value.tone-warn {
709
+ color: #8d5b31;
710
+ }
711
+
712
+ .inspector-kv .value.tone-error {
713
+ color: var(--color-error);
714
+ }
715
+
448
716
  .panel-header {
449
717
  margin-bottom: 12px;
450
718
  text-align: left;
@@ -488,6 +756,11 @@ body::after {
488
756
  line-height: 1.5;
489
757
  }
490
758
 
759
+ .hero-github {
760
+ display: none;
761
+ margin-bottom: var(--spacing-sm);
762
+ }
763
+
491
764
  .top-tabs {
492
765
  margin: 14px 0 18px;
493
766
  background: rgba(255, 255, 255, 0.92);
@@ -564,18 +837,18 @@ body::after {
564
837
  }
565
838
 
566
839
  .content-wrapper {
567
- background: rgba(255, 255, 255, 0.9);
568
- border: 1px solid rgba(255, 255, 255, 0.7);
840
+ background: rgba(255, 255, 255, 0.94);
841
+ border: 1px solid rgba(216, 201, 184, 0.35);
569
842
  border-radius: var(--radius-lg);
570
- box-shadow: var(--shadow-card);
843
+ box-shadow: var(--shadow-subtle);
571
844
  padding: 0;
572
845
  }
573
846
 
574
847
  .mode-content {
575
848
  border-radius: var(--radius-lg);
576
- background: rgba(255, 255, 255, 0.85);
849
+ background: rgba(255, 255, 255, 0.9);
577
850
  box-shadow: var(--shadow-subtle);
578
- padding: 10px;
851
+ padding: 12px;
579
852
  }
580
853
 
581
854
  /* ============================================
@@ -685,8 +958,8 @@ body::after {
685
958
  }
686
959
 
687
960
  .card:hover {
688
- transform: translateY(-2px) scale(1.005);
689
- box-shadow: 0 16px 32px rgba(27, 23, 20, 0.1);
961
+ transform: translateY(-1px);
962
+ box-shadow: var(--shadow-card-hover);
690
963
  }
691
964
 
692
965
  .card::before,
@@ -715,7 +988,7 @@ body::after {
715
988
  }
716
989
 
717
990
  .card:active {
718
- transform: translateY(0) scale(0.995);
991
+ transform: translateY(0);
719
992
  transition: transform var(--transition-instant) var(--ease-smooth);
720
993
  }
721
994
 
@@ -775,6 +1048,10 @@ body::after {
775
1048
  }
776
1049
 
777
1050
  .card-title {
1051
+ display: flex;
1052
+ align-items: center;
1053
+ gap: 8px;
1054
+ min-width: 0;
778
1055
  font-size: var(--font-size-body);
779
1056
  font-weight: var(--font-weight-secondary);
780
1057
  color: var(--color-text-primary);
@@ -784,6 +1061,27 @@ body::after {
784
1061
  letter-spacing: -0.01em;
785
1062
  }
786
1063
 
1064
+ .card-title > span:first-child {
1065
+ min-width: 0;
1066
+ overflow: hidden;
1067
+ text-overflow: ellipsis;
1068
+ white-space: nowrap;
1069
+ }
1070
+
1071
+ .provider-readonly-badge {
1072
+ display: inline-flex;
1073
+ align-items: center;
1074
+ justify-content: center;
1075
+ padding: 2px 8px;
1076
+ border-radius: var(--radius-full);
1077
+ font-size: 11px;
1078
+ line-height: 1;
1079
+ color: #6f4b00;
1080
+ background: linear-gradient(135deg, rgba(246, 211, 106, 0.32) 0%, rgba(246, 211, 106, 0.2) 100%);
1081
+ border: 1px solid rgba(191, 151, 40, 0.35);
1082
+ flex-shrink: 0;
1083
+ }
1084
+
787
1085
  .card-subtitle {
788
1086
  font-size: var(--font-size-secondary);
789
1087
  color: var(--color-text-tertiary);
@@ -858,6 +1156,20 @@ body::after {
858
1156
  color: var(--color-error);
859
1157
  }
860
1158
 
1159
+ .card-action-btn:disabled,
1160
+ .card-action-btn.disabled {
1161
+ opacity: 0.45;
1162
+ cursor: not-allowed;
1163
+ transform: none;
1164
+ filter: grayscale(0.1);
1165
+ }
1166
+
1167
+ .card-action-btn.delete:disabled:hover,
1168
+ .card-action-btn.delete.disabled:hover {
1169
+ background: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(255, 255, 255, 0.9));
1170
+ color: var(--color-text-secondary);
1171
+ }
1172
+
861
1173
  .card-action-btn svg {
862
1174
  width: 18px;
863
1175
  height: 18px;
@@ -947,6 +1259,9 @@ body::after {
947
1259
  margin-bottom: 16px;
948
1260
  box-shadow: var(--shadow-card);
949
1261
  border: 1px solid var(--color-border-soft);
1262
+ display: flex;
1263
+ flex-direction: column;
1264
+ gap: var(--spacing-xs);
950
1265
  }
951
1266
 
952
1267
  .selector-header {
@@ -1172,6 +1487,13 @@ body::after {
1172
1487
  transition: all var(--transition-fast) var(--ease-spring);
1173
1488
  box-shadow: var(--shadow-subtle);
1174
1489
  letter-spacing: -0.01em;
1490
+ width: 100%;
1491
+ text-align: center;
1492
+ }
1493
+
1494
+ .selector-section .btn-tool + .btn-tool {
1495
+ margin-left: 0;
1496
+ margin-top: var(--spacing-xs);
1175
1497
  }
1176
1498
 
1177
1499
  .btn-tool:hover {
@@ -1644,6 +1966,12 @@ body::after {
1644
1966
  height: 16px;
1645
1967
  }
1646
1968
 
1969
+ .session-item-sub.session-item-snippet,
1970
+ .session-preview-meta,
1971
+ .session-preview-title {
1972
+ display: none !important;
1973
+ }
1974
+
1647
1975
  .session-item-sub {
1648
1976
  font-size: var(--font-size-caption);
1649
1977
  color: var(--color-text-tertiary);
@@ -1683,6 +2011,7 @@ body::after {
1683
2011
  display: flex;
1684
2012
  flex-direction: column;
1685
2013
  overflow: hidden;
2014
+ position: relative;
1686
2015
  transform: translateX(4px);
1687
2016
  transition: transform var(--transition-normal) var(--ease-spring-soft), box-shadow var(--transition-normal) var(--ease-spring-soft);
1688
2017
  }
@@ -1693,10 +2022,12 @@ body::after {
1693
2022
  }
1694
2023
 
1695
2024
  .session-preview-scroll {
2025
+ position: relative;
1696
2026
  flex: 1;
1697
2027
  min-height: 0;
1698
2028
  overflow-y: auto;
1699
2029
  overflow-x: hidden;
2030
+ padding-right: 68px;
1700
2031
  display: flex;
1701
2032
  flex-direction: column;
1702
2033
  scrollbar-width: thin;
@@ -1787,17 +2118,92 @@ body::after {
1787
2118
  gap: 10px;
1788
2119
  }
1789
2120
 
1790
- .session-msg {
1791
- border-radius: 10px;
1792
- padding: 10px 12px 10px 18px;
1793
- border: 1px solid rgba(208, 196, 182, 0.45);
1794
- background: rgba(255, 255, 255, 0.75);
1795
- position: relative;
1796
- box-shadow: 0 2px 6px rgba(31, 26, 23, 0.04);
2121
+ .session-preview-messages {
2122
+ min-width: 0;
2123
+ display: flex;
2124
+ flex-direction: column;
2125
+ gap: 10px;
1797
2126
  }
1798
2127
 
1799
- .session-msg.user {
1800
- border-color: rgba(210, 107, 90, 0.35);
2128
+ .session-timeline {
2129
+ position: absolute;
2130
+ top: var(--session-preview-header-offset, 72px);
2131
+ right: 8px;
2132
+ bottom: 12px;
2133
+ width: 56px;
2134
+ height: auto;
2135
+ border-radius: 12px;
2136
+ border: 1px solid rgba(208, 196, 182, 0.5);
2137
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0.92) 0%, rgba(252, 246, 239, 0.94) 100%);
2138
+ box-shadow: 0 4px 12px rgba(31, 26, 23, 0.06);
2139
+ padding: 6px 4px 28px;
2140
+ z-index: 3;
2141
+ }
2142
+
2143
+ .session-timeline-track {
2144
+ position: absolute;
2145
+ left: 50%;
2146
+ top: 10px;
2147
+ bottom: 32px;
2148
+ width: 2px;
2149
+ transform: translateX(-50%);
2150
+ background: linear-gradient(to bottom, rgba(166, 149, 130, 0.3) 0%, rgba(166, 149, 130, 0.65) 100%);
2151
+ border-radius: 999px;
2152
+ }
2153
+
2154
+ .session-timeline-node {
2155
+ position: absolute;
2156
+ left: 50%;
2157
+ width: 10px;
2158
+ height: 10px;
2159
+ border-radius: 50%;
2160
+ border: 1px solid rgba(139, 118, 104, 0.7);
2161
+ background: rgba(255, 255, 255, 0.94);
2162
+ transform: translate(-50%, -50%);
2163
+ cursor: pointer;
2164
+ padding: 0;
2165
+ transition: transform var(--transition-fast) var(--ease-spring), background-color var(--transition-fast) var(--ease-spring), border-color var(--transition-fast) var(--ease-spring), box-shadow var(--transition-fast) var(--ease-spring);
2166
+ }
2167
+
2168
+ .session-timeline-node:hover {
2169
+ transform: translate(-50%, -50%) scale(1.2);
2170
+ border-color: rgba(201, 94, 75, 0.85);
2171
+ background: rgba(255, 255, 255, 1);
2172
+ box-shadow: 0 0 0 3px rgba(201, 94, 75, 0.15);
2173
+ }
2174
+
2175
+ .session-timeline-node.active {
2176
+ transform: translate(-50%, -50%) scale(1.2);
2177
+ border-color: rgba(201, 94, 75, 0.95);
2178
+ background: rgba(201, 94, 75, 0.95);
2179
+ box-shadow: 0 0 0 3px rgba(201, 94, 75, 0.2);
2180
+ }
2181
+
2182
+ .session-timeline-current {
2183
+ position: absolute;
2184
+ left: 4px;
2185
+ right: 4px;
2186
+ bottom: 4px;
2187
+ font-size: 10px;
2188
+ line-height: 1.2;
2189
+ color: var(--color-text-tertiary);
2190
+ text-align: center;
2191
+ white-space: nowrap;
2192
+ overflow: hidden;
2193
+ text-overflow: ellipsis;
2194
+ }
2195
+
2196
+ .session-msg {
2197
+ border-radius: 10px;
2198
+ padding: 10px 12px 10px 18px;
2199
+ border: 1px solid rgba(208, 196, 182, 0.45);
2200
+ background: rgba(255, 255, 255, 0.75);
2201
+ position: relative;
2202
+ box-shadow: 0 2px 6px rgba(31, 26, 23, 0.04);
2203
+ }
2204
+
2205
+ .session-msg.user {
2206
+ border-color: rgba(210, 107, 90, 0.35);
1801
2207
  background: rgba(210, 107, 90, 0.08);
1802
2208
  }
1803
2209
 
@@ -1914,6 +2320,14 @@ body::after {
1914
2320
  box-shadow: var(--shadow-card);
1915
2321
  }
1916
2322
 
2323
+ .session-preview-scroll {
2324
+ padding-right: 0;
2325
+ }
2326
+
2327
+ .session-timeline {
2328
+ display: none;
2329
+ }
2330
+
1917
2331
  .session-preview-header {
1918
2332
  flex-direction: column;
1919
2333
  align-items: stretch;
@@ -2003,6 +2417,35 @@ body::after {
2003
2417
  max-width: 980px;
2004
2418
  }
2005
2419
 
2420
+ .modal-editor {
2421
+ width: min(96vw, 980px);
2422
+ max-height: calc(100vh - 24px);
2423
+ display: flex;
2424
+ flex-direction: column;
2425
+ overflow: hidden;
2426
+ padding: 0;
2427
+ }
2428
+
2429
+ .modal-editor-header {
2430
+ margin-bottom: 0;
2431
+ padding: var(--spacing-md) var(--spacing-md) 0;
2432
+ }
2433
+
2434
+ .modal-editor-body {
2435
+ flex: 1;
2436
+ min-height: 0;
2437
+ overflow-y: auto;
2438
+ padding: var(--spacing-sm) var(--spacing-md) 0;
2439
+ }
2440
+
2441
+ .modal-editor-footer {
2442
+ margin-top: 0;
2443
+ padding: var(--spacing-sm) var(--spacing-md) var(--spacing-md);
2444
+ border-top: 1px solid var(--color-border-soft);
2445
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0.82) 0%, rgba(255, 255, 255, 0.96) 100%);
2446
+ backdrop-filter: blur(2px);
2447
+ }
2448
+
2006
2449
  .modal-title {
2007
2450
  font-size: var(--font-size-title);
2008
2451
  font-weight: var(--font-weight-title);
@@ -2028,6 +2471,18 @@ body::after {
2028
2471
  background: var(--color-surface-alt);
2029
2472
  }
2030
2473
 
2474
+ .install-row-main {
2475
+ flex: 1;
2476
+ display: flex;
2477
+ flex-direction: column;
2478
+ gap: 6px;
2479
+ }
2480
+
2481
+ .install-row-title {
2482
+ font-size: var(--font-size-secondary);
2483
+ color: var(--color-text-secondary);
2484
+ }
2485
+
2031
2486
  .install-command {
2032
2487
  flex: 1;
2033
2488
  font-family: var(--font-family-mono);
@@ -2044,6 +2499,44 @@ body::after {
2044
2499
  white-space: nowrap;
2045
2500
  }
2046
2501
 
2502
+ .install-action-tabs {
2503
+ display: flex;
2504
+ gap: var(--spacing-xs);
2505
+ flex-wrap: wrap;
2506
+ }
2507
+
2508
+ .install-action-tabs .btn-mini.active {
2509
+ background: rgba(201, 94, 75, 0.16);
2510
+ border-color: rgba(201, 94, 75, 0.32);
2511
+ color: var(--color-text-primary);
2512
+ }
2513
+
2514
+ .install-registry-input {
2515
+ width: 100%;
2516
+ }
2517
+
2518
+ .install-registry-hint {
2519
+ width: 100%;
2520
+ margin-top: 2px;
2521
+ }
2522
+
2523
+ .install-help {
2524
+ margin-top: var(--spacing-sm);
2525
+ border-top: 1px dashed var(--color-border-soft);
2526
+ padding-top: var(--spacing-sm);
2527
+ }
2528
+
2529
+ .install-help-list {
2530
+ margin: 6px 0 0;
2531
+ padding-left: 18px;
2532
+ color: var(--color-text-secondary);
2533
+ font-size: var(--font-size-secondary);
2534
+ }
2535
+
2536
+ .install-help-list li + li {
2537
+ margin-top: 4px;
2538
+ }
2539
+
2047
2540
  .modal-header {
2048
2541
  display: flex;
2049
2542
  align-items: center;
@@ -2057,6 +2550,13 @@ body::after {
2057
2550
  margin-bottom: 0;
2058
2551
  }
2059
2552
 
2553
+ .modal-header-actions {
2554
+ display: inline-flex;
2555
+ align-items: center;
2556
+ gap: 8px;
2557
+ margin-left: auto;
2558
+ }
2559
+
2060
2560
  .btn-modal-copy {
2061
2561
  padding: 6px 12px;
2062
2562
  white-space: nowrap;
@@ -2105,6 +2605,48 @@ body::after {
2105
2605
  opacity: 0.7;
2106
2606
  }
2107
2607
 
2608
+ .form-select {
2609
+ width: 100%;
2610
+ min-height: 44px;
2611
+ padding: 10px 40px 10px 12px;
2612
+ border: 1.5px solid var(--color-border-soft);
2613
+ border-radius: var(--radius-sm);
2614
+ font-size: var(--font-size-secondary);
2615
+ font-weight: var(--font-weight-secondary);
2616
+ background-color: var(--color-surface-alt);
2617
+ color: var(--color-text-primary);
2618
+ outline: none;
2619
+ transition: all var(--transition-fast) var(--ease-spring);
2620
+ font-family: var(--font-family-body);
2621
+ box-shadow: inset 0 1px 2px rgba(31, 26, 23, 0.04);
2622
+ cursor: pointer;
2623
+ appearance: none;
2624
+ -webkit-appearance: none;
2625
+ -moz-appearance: none;
2626
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%23505A66' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round' d='M2 4l4 4 4-4'/%3E%3C/svg%3E");
2627
+ background-repeat: no-repeat;
2628
+ background-position: right 14px center;
2629
+ background-size: 12px;
2630
+ }
2631
+
2632
+ .form-select:hover {
2633
+ border-color: var(--color-border-strong);
2634
+ background-color: var(--color-surface);
2635
+ }
2636
+
2637
+ .form-select:focus {
2638
+ border-color: var(--color-brand);
2639
+ background-color: var(--color-surface);
2640
+ box-shadow: var(--shadow-input-focus);
2641
+ }
2642
+
2643
+ .form-select:disabled {
2644
+ background: linear-gradient(to right, var(--color-bg) 0%, rgba(247, 241, 232, 0.5) 100%);
2645
+ color: var(--color-text-tertiary);
2646
+ cursor: not-allowed;
2647
+ border-color: transparent;
2648
+ }
2649
+
2108
2650
  .template-editor {
2109
2651
  min-height: min(60vh, 520px);
2110
2652
  max-height: min(65vh, 620px);
@@ -2327,6 +2869,83 @@ body::after {
2327
2869
  word-break: break-all;
2328
2870
  }
2329
2871
 
2872
+ .auth-profile-list {
2873
+ display: flex;
2874
+ flex-direction: column;
2875
+ gap: var(--spacing-xs);
2876
+ }
2877
+
2878
+ .auth-profile-item {
2879
+ border: 1px dashed var(--color-border-soft);
2880
+ border-radius: var(--radius-sm);
2881
+ padding: var(--spacing-sm);
2882
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0.82) 0%, rgba(247, 241, 232, 0.4) 100%);
2883
+ }
2884
+
2885
+ .auth-profile-header {
2886
+ display: flex;
2887
+ align-items: flex-start;
2888
+ justify-content: space-between;
2889
+ gap: var(--spacing-sm);
2890
+ }
2891
+
2892
+ .auth-profile-main {
2893
+ min-width: 0;
2894
+ flex: 1;
2895
+ display: flex;
2896
+ flex-direction: column;
2897
+ gap: 6px;
2898
+ }
2899
+
2900
+ .auth-profile-title {
2901
+ font-size: var(--font-size-body);
2902
+ font-weight: var(--font-weight-secondary);
2903
+ color: var(--color-text-secondary);
2904
+ letter-spacing: -0.01em;
2905
+ word-break: break-all;
2906
+ }
2907
+
2908
+ .auth-profile-meta {
2909
+ display: flex;
2910
+ flex-wrap: wrap;
2911
+ gap: 8px;
2912
+ align-items: center;
2913
+ }
2914
+
2915
+ .auth-profile-actions {
2916
+ display: flex;
2917
+ flex-wrap: wrap;
2918
+ gap: 8px;
2919
+ justify-content: flex-end;
2920
+ }
2921
+
2922
+ .auth-profile-grid {
2923
+ margin-top: 10px;
2924
+ display: grid;
2925
+ grid-template-columns: minmax(96px, 130px) minmax(0, 1fr);
2926
+ gap: 8px 12px;
2927
+ align-items: start;
2928
+ }
2929
+
2930
+ .auth-profile-row {
2931
+ display: contents;
2932
+ }
2933
+
2934
+ .auth-profile-key {
2935
+ font-family: var(--font-family-mono);
2936
+ font-size: var(--font-size-caption);
2937
+ color: var(--color-text-muted);
2938
+ line-height: 1.4;
2939
+ }
2940
+
2941
+ .auth-profile-value {
2942
+ font-family: var(--font-family-mono);
2943
+ font-size: var(--font-size-caption);
2944
+ color: var(--color-text-secondary);
2945
+ line-height: 1.4;
2946
+ word-break: break-all;
2947
+ }
2948
+
2330
2949
  .agent-list {
2331
2950
  display: flex;
2332
2951
  flex-direction: column;
@@ -2366,6 +2985,273 @@ body::after {
2366
2985
  color: var(--color-text-secondary);
2367
2986
  }
2368
2987
 
2988
+ .skill-toolbar {
2989
+ display: flex;
2990
+ align-items: center;
2991
+ justify-content: space-between;
2992
+ gap: var(--spacing-xs);
2993
+ margin-bottom: 10px;
2994
+ flex-wrap: wrap;
2995
+ }
2996
+
2997
+ .skill-select-all {
2998
+ display: inline-flex;
2999
+ align-items: center;
3000
+ gap: 8px;
3001
+ font-size: var(--font-size-secondary);
3002
+ color: var(--color-text-secondary);
3003
+ user-select: none;
3004
+ }
3005
+
3006
+ .skill-toolbar-count {
3007
+ font-size: var(--font-size-caption);
3008
+ color: var(--color-text-tertiary);
3009
+ }
3010
+
3011
+ .skills-modal {
3012
+ width: min(96vw, 920px);
3013
+ }
3014
+
3015
+ .skills-modal-header {
3016
+ align-items: flex-start;
3017
+ margin-bottom: var(--spacing-xs);
3018
+ }
3019
+
3020
+ .skills-modal-subtitle {
3021
+ margin-top: 6px;
3022
+ font-size: var(--font-size-caption);
3023
+ color: var(--color-text-tertiary);
3024
+ line-height: 1.45;
3025
+ }
3026
+
3027
+ .skills-modal-actions {
3028
+ display: flex;
3029
+ flex-direction: row;
3030
+ align-items: center;
3031
+ gap: 8px;
3032
+ }
3033
+
3034
+ .skills-root-box {
3035
+ border: 1px solid var(--color-border-soft);
3036
+ border-radius: var(--radius-sm);
3037
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0.86) 0%, rgba(255, 255, 255, 0.66) 100%);
3038
+ padding: 10px 12px;
3039
+ font-family: var(--font-family-mono);
3040
+ font-size: var(--font-size-caption);
3041
+ color: var(--color-text-secondary);
3042
+ word-break: break-all;
3043
+ }
3044
+
3045
+ .skills-root-group {
3046
+ margin-bottom: var(--spacing-xs);
3047
+ }
3048
+
3049
+ .skills-summary-strip {
3050
+ display: grid;
3051
+ grid-template-columns: repeat(4, minmax(0, 1fr));
3052
+ gap: var(--spacing-xs);
3053
+ margin-bottom: var(--spacing-sm);
3054
+ }
3055
+
3056
+ .skills-summary-item {
3057
+ border: 1px solid rgba(160, 145, 130, 0.2);
3058
+ border-radius: var(--radius-sm);
3059
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0.93) 0%, rgba(255, 255, 255, 0.78) 100%);
3060
+ padding: 10px 12px;
3061
+ min-width: 0;
3062
+ box-shadow: var(--shadow-subtle);
3063
+ display: flex;
3064
+ flex-direction: column;
3065
+ gap: 2px;
3066
+ }
3067
+
3068
+ .skills-summary-label {
3069
+ font-size: var(--font-size-caption);
3070
+ color: var(--color-text-tertiary);
3071
+ }
3072
+
3073
+ .skills-summary-value {
3074
+ font-size: var(--font-size-large);
3075
+ color: var(--color-text-secondary);
3076
+ line-height: 1.2;
3077
+ }
3078
+
3079
+ .skills-panel {
3080
+ border: 1px solid rgba(160, 145, 130, 0.24);
3081
+ border-radius: var(--radius-md);
3082
+ padding: 12px;
3083
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0.88) 0%, rgba(255, 255, 255, 0.72) 100%);
3084
+ margin-bottom: var(--spacing-sm);
3085
+ }
3086
+
3087
+ .skills-panel-header {
3088
+ display: flex;
3089
+ justify-content: space-between;
3090
+ align-items: flex-start;
3091
+ gap: var(--spacing-xs);
3092
+ margin-bottom: 10px;
3093
+ }
3094
+
3095
+ .skills-panel-title-wrap {
3096
+ min-width: 0;
3097
+ }
3098
+
3099
+ .skills-panel-title {
3100
+ font-size: var(--font-size-body);
3101
+ font-weight: var(--font-weight-primary);
3102
+ color: var(--color-text-secondary);
3103
+ }
3104
+
3105
+ .skills-panel-note {
3106
+ margin-top: 4px;
3107
+ font-size: var(--font-size-caption);
3108
+ color: var(--color-text-tertiary);
3109
+ line-height: 1.45;
3110
+ }
3111
+
3112
+ .skills-filter-row {
3113
+ display: flex;
3114
+ gap: var(--spacing-xs);
3115
+ margin-bottom: 10px;
3116
+ align-items: center;
3117
+ flex-wrap: wrap;
3118
+ }
3119
+
3120
+ .skills-filter-row .form-input {
3121
+ flex: 1;
3122
+ min-width: 220px;
3123
+ }
3124
+
3125
+ .skills-status-select {
3126
+ width: 210px;
3127
+ flex: 0 0 auto;
3128
+ }
3129
+
3130
+ .skills-hint-line,
3131
+ .hint-single-line {
3132
+ display: block;
3133
+ white-space: nowrap;
3134
+ overflow: hidden;
3135
+ text-overflow: ellipsis;
3136
+ max-width: 100%;
3137
+ }
3138
+
3139
+ .skill-list {
3140
+ display: flex;
3141
+ flex-direction: column;
3142
+ gap: var(--spacing-xs);
3143
+ margin-bottom: var(--spacing-sm);
3144
+ max-height: min(52vh, 440px);
3145
+ overflow-y: auto;
3146
+ padding-right: 2px;
3147
+ scrollbar-width: thin;
3148
+ scrollbar-color: rgba(166, 149, 130, 0.82) transparent;
3149
+ }
3150
+
3151
+ .skill-list::-webkit-scrollbar {
3152
+ width: 6px;
3153
+ height: 6px;
3154
+ }
3155
+
3156
+ .skill-list::-webkit-scrollbar-track {
3157
+ background: transparent;
3158
+ border-radius: 999px;
3159
+ }
3160
+
3161
+ .skill-list::-webkit-scrollbar-thumb {
3162
+ background: linear-gradient(to bottom, rgba(191, 174, 154, 0.95) 0%, rgba(160, 141, 121, 0.9) 100%);
3163
+ border-radius: 999px;
3164
+ border: 1px solid rgba(255, 255, 255, 0.9);
3165
+ }
3166
+
3167
+ .skill-list::-webkit-scrollbar-thumb:hover {
3168
+ background: linear-gradient(to bottom, rgba(176, 157, 137, 0.95) 0%, rgba(145, 126, 107, 0.92) 100%);
3169
+ }
3170
+
3171
+ .skill-item {
3172
+ display: flex;
3173
+ align-items: flex-start;
3174
+ gap: var(--spacing-xs);
3175
+ border: 1px dashed var(--color-border-soft);
3176
+ border-radius: var(--radius-sm);
3177
+ padding: var(--spacing-xs);
3178
+ background: var(--color-surface-alt);
3179
+ transition: border-color var(--transition-fast) var(--ease-spring), background-color var(--transition-fast) var(--ease-spring);
3180
+ }
3181
+
3182
+ .skill-item-main {
3183
+ min-width: 0;
3184
+ display: flex;
3185
+ flex-direction: column;
3186
+ gap: 6px;
3187
+ flex: 1;
3188
+ }
3189
+
3190
+ .skill-item-title {
3191
+ font-size: var(--font-size-secondary);
3192
+ font-weight: var(--font-weight-secondary);
3193
+ color: var(--color-text-secondary);
3194
+ }
3195
+
3196
+ .skill-item-description {
3197
+ font-size: var(--font-size-caption);
3198
+ line-height: 1.45;
3199
+ color: var(--color-text-tertiary);
3200
+ }
3201
+
3202
+ .skill-item-meta {
3203
+ display: flex;
3204
+ flex-wrap: wrap;
3205
+ gap: var(--spacing-xs);
3206
+ align-items: center;
3207
+ min-width: 0;
3208
+ }
3209
+
3210
+ .skill-item-path {
3211
+ font-family: var(--font-family-mono);
3212
+ font-size: var(--font-size-caption);
3213
+ color: var(--color-text-tertiary);
3214
+ word-break: break-all;
3215
+ }
3216
+
3217
+ .skill-item:hover {
3218
+ border-color: rgba(201, 94, 75, 0.35);
3219
+ }
3220
+
3221
+ .skill-item.selected {
3222
+ border-color: rgba(201, 94, 75, 0.55);
3223
+ background: linear-gradient(to bottom, rgba(201, 94, 75, 0.10) 0%, rgba(201, 94, 75, 0.04) 100%);
3224
+ }
3225
+
3226
+ .skills-empty-state {
3227
+ margin-bottom: var(--spacing-sm);
3228
+ border: 1px dashed var(--color-border-soft);
3229
+ border-radius: var(--radius-sm);
3230
+ background: linear-gradient(to bottom, rgba(255, 255, 255, 0.78) 0%, rgba(255, 255, 255, 0.58) 100%);
3231
+ color: var(--color-text-tertiary);
3232
+ font-size: var(--font-size-secondary);
3233
+ text-align: center;
3234
+ padding: 18px 12px;
3235
+ }
3236
+
3237
+ .skills-import-block {
3238
+ margin-bottom: var(--spacing-sm);
3239
+ }
3240
+
3241
+ .skills-import-title {
3242
+ font-size: var(--font-size-body);
3243
+ font-weight: var(--font-weight-secondary);
3244
+ color: var(--color-text-secondary);
3245
+ }
3246
+
3247
+ .skills-import-list {
3248
+ max-height: min(28vh, 260px);
3249
+ }
3250
+
3251
+ .skills-import-empty {
3252
+ margin-bottom: 0;
3253
+ }
3254
+
2369
3255
  .list-row {
2370
3256
  display: flex;
2371
3257
  flex-wrap: wrap;
@@ -2434,7 +3320,7 @@ body::after {
2434
3320
  }
2435
3321
 
2436
3322
  .btn:active {
2437
- transform: scale(0.97);
3323
+ transform: scale(0.985);
2438
3324
  }
2439
3325
 
2440
3326
  .btn-cancel {
@@ -2470,6 +3356,16 @@ body::after {
2470
3356
  filter: brightness(1.05);
2471
3357
  }
2472
3358
 
3359
+ .btn-confirm.btn-danger {
3360
+ background: linear-gradient(135deg, #c75642 0%, #9f392c 100%);
3361
+ box-shadow: 0 2px 4px rgba(163, 51, 38, 0.24);
3362
+ }
3363
+
3364
+ .btn-confirm.btn-danger:hover {
3365
+ box-shadow: 0 4px 10px rgba(163, 51, 38, 0.28);
3366
+ filter: brightness(1.04);
3367
+ }
3368
+
2473
3369
  /* ============================================
2474
3370
  模型列表
2475
3371
  ============================================ */
@@ -2650,6 +3546,22 @@ textarea:focus-visible {
2650
3546
  outline-offset: 2px;
2651
3547
  }
2652
3548
 
3549
+ @media (max-width: 1280px) {
3550
+ .app-shell {
3551
+ grid-template-columns: 240px minmax(0, 1fr) 300px;
3552
+ gap: 14px;
3553
+ }
3554
+
3555
+ .status-inspector {
3556
+ top: 16px;
3557
+ height: calc(100vh - 32px);
3558
+ }
3559
+
3560
+ .main-panel {
3561
+ padding: var(--spacing-sm) var(--spacing-md);
3562
+ }
3563
+ }
3564
+
2653
3565
  @media (max-width: 960px) {
2654
3566
  .container {
2655
3567
  padding: 12px;
@@ -2660,9 +3572,22 @@ textarea:focus-visible {
2660
3572
  .side-rail {
2661
3573
  display: none;
2662
3574
  }
3575
+ .status-inspector {
3576
+ display: none;
3577
+ }
2663
3578
  .hero-logo {
2664
3579
  display: block;
2665
3580
  }
3581
+ .hero-github {
3582
+ display: flex;
3583
+ }
3584
+ .github-badge-mobile {
3585
+ width: 100%;
3586
+ }
3587
+ .github-badge-mobile .github-badge-text,
3588
+ .github-badge-mobile .github-badge-label {
3589
+ font-size: var(--font-size-secondary);
3590
+ }
2666
3591
  .main-panel {
2667
3592
  padding: var(--spacing-sm) var(--spacing-sm);
2668
3593
  border-radius: 14px;
@@ -2679,6 +3604,19 @@ textarea:focus-visible {
2679
3604
  flex: 1 1 calc(50% - var(--spacing-sm));
2680
3605
  min-width: 0;
2681
3606
  }
3607
+
3608
+ .skills-summary-strip {
3609
+ grid-template-columns: repeat(2, minmax(0, 1fr));
3610
+ }
3611
+
3612
+ .skills-panel-header {
3613
+ flex-direction: column;
3614
+ align-items: stretch;
3615
+ }
3616
+
3617
+ .skills-modal-actions {
3618
+ align-items: flex-start;
3619
+ }
2682
3620
  }
2683
3621
 
2684
3622
  @media (max-width: 720px) {
@@ -2862,7 +3800,52 @@ textarea:focus-visible {
2862
3800
  display: none;
2863
3801
  }
2864
3802
 
3803
+ .auth-profile-item {
3804
+ padding: 10px;
3805
+ }
3806
+
3807
+ .auth-profile-header {
3808
+ flex-direction: column;
3809
+ align-items: stretch;
3810
+ gap: 10px;
3811
+ }
3812
+
3813
+ .auth-profile-actions {
3814
+ justify-content: flex-start;
3815
+ }
3816
+
3817
+ .auth-profile-grid {
3818
+ grid-template-columns: 1fr;
3819
+ gap: 6px;
3820
+ margin-top: 8px;
3821
+ }
3822
+
3823
+ .auth-profile-row {
3824
+ display: flex;
3825
+ flex-direction: column;
3826
+ gap: 2px;
3827
+ padding-bottom: 4px;
3828
+ border-bottom: 1px dashed rgba(160, 145, 130, 0.25);
3829
+ }
3830
+
3831
+ .auth-profile-row:last-child {
3832
+ border-bottom: none;
3833
+ padding-bottom: 0;
3834
+ }
3835
+
2865
3836
  .session-preview {
2866
3837
  border-radius: var(--radius-lg);
2867
3838
  }
3839
+
3840
+ .skills-summary-strip {
3841
+ grid-template-columns: 1fr;
3842
+ }
3843
+
3844
+ .skills-panel {
3845
+ padding: 10px;
3846
+ }
3847
+
3848
+ .skills-root-box {
3849
+ font-size: 11px;
3850
+ }
2868
3851
  }