codexmate 0.0.13 → 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
@@ -130,36 +130,106 @@ body {
130
130
  .fab-install {
131
131
  position: fixed;
132
132
  left: 16px;
133
- bottom: 16px;
133
+ bottom: calc(16px + env(safe-area-inset-bottom, 0px));
134
134
  z-index: 90;
135
- 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;
136
142
  border-radius: var(--radius-full);
137
- border: none;
138
- 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%);
139
147
  color: #fff;
148
+ font-size: var(--font-size-secondary);
140
149
  font-weight: var(--font-weight-secondary);
141
- letter-spacing: 0.02em;
150
+ letter-spacing: 0.015em;
142
151
  box-shadow: var(--shadow-float);
143
152
  cursor: pointer;
144
- 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;
145
184
  }
146
185
 
147
186
  .fab-install:hover {
148
187
  transform: translateY(-1px);
149
188
  box-shadow: var(--shadow-raised);
189
+ filter: saturate(1.04);
150
190
  }
151
191
 
152
192
  .fab-install:active {
153
193
  transform: translateY(0);
194
+ filter: saturate(0.98);
154
195
  }
155
196
 
156
197
  @media (max-width: 640px) {
157
198
  .fab-install {
158
199
  left: 12px;
159
- bottom: 12px;
160
- padding: 10px 14px;
200
+ bottom: calc(12px + env(safe-area-inset-bottom, 0px));
201
+ width: 44px;
202
+ height: 44px;
203
+ padding: 0;
161
204
  font-size: var(--font-size-secondary);
162
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
+ }
163
233
  }
164
234
 
165
235
  /* ============================================
@@ -209,7 +279,7 @@ body::after {
209
279
  ============================================ */
210
280
  .app-shell {
211
281
  display: grid;
212
- grid-template-columns: 240px minmax(0, 1fr) 340px;
282
+ grid-template-columns: 260px minmax(0, 1fr) 340px;
213
283
  gap: 16px;
214
284
  align-items: flex-start;
215
285
  }
@@ -355,6 +425,129 @@ body::after {
355
425
  line-height: 1.45;
356
426
  }
357
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
+
358
551
  .main-tabs {
359
552
  display: flex;
360
553
  gap: 10px;
@@ -563,6 +756,11 @@ body::after {
563
756
  line-height: 1.5;
564
757
  }
565
758
 
759
+ .hero-github {
760
+ display: none;
761
+ margin-bottom: var(--spacing-sm);
762
+ }
763
+
566
764
  .top-tabs {
567
765
  margin: 14px 0 18px;
568
766
  background: rgba(255, 255, 255, 0.92);
@@ -1813,6 +2011,7 @@ body::after {
1813
2011
  display: flex;
1814
2012
  flex-direction: column;
1815
2013
  overflow: hidden;
2014
+ position: relative;
1816
2015
  transform: translateX(4px);
1817
2016
  transition: transform var(--transition-normal) var(--ease-spring-soft), box-shadow var(--transition-normal) var(--ease-spring-soft);
1818
2017
  }
@@ -1823,10 +2022,12 @@ body::after {
1823
2022
  }
1824
2023
 
1825
2024
  .session-preview-scroll {
2025
+ position: relative;
1826
2026
  flex: 1;
1827
2027
  min-height: 0;
1828
2028
  overflow-y: auto;
1829
2029
  overflow-x: hidden;
2030
+ padding-right: 68px;
1830
2031
  display: flex;
1831
2032
  flex-direction: column;
1832
2033
  scrollbar-width: thin;
@@ -1917,6 +2118,81 @@ body::after {
1917
2118
  gap: 10px;
1918
2119
  }
1919
2120
 
2121
+ .session-preview-messages {
2122
+ min-width: 0;
2123
+ display: flex;
2124
+ flex-direction: column;
2125
+ gap: 10px;
2126
+ }
2127
+
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
+
1920
2196
  .session-msg {
1921
2197
  border-radius: 10px;
1922
2198
  padding: 10px 12px 10px 18px;
@@ -2044,6 +2320,14 @@ body::after {
2044
2320
  box-shadow: var(--shadow-card);
2045
2321
  }
2046
2322
 
2323
+ .session-preview-scroll {
2324
+ padding-right: 0;
2325
+ }
2326
+
2327
+ .session-timeline {
2328
+ display: none;
2329
+ }
2330
+
2047
2331
  .session-preview-header {
2048
2332
  flex-direction: column;
2049
2333
  align-items: stretch;
@@ -2321,6 +2605,48 @@ body::after {
2321
2605
  opacity: 0.7;
2322
2606
  }
2323
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
+
2324
2650
  .template-editor {
2325
2651
  min-height: min(60vh, 520px);
2326
2652
  max-height: min(65vh, 620px);
@@ -2659,6 +2985,273 @@ body::after {
2659
2985
  color: var(--color-text-secondary);
2660
2986
  }
2661
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
+
2662
3255
  .list-row {
2663
3256
  display: flex;
2664
3257
  flex-wrap: wrap;
@@ -2763,6 +3356,16 @@ body::after {
2763
3356
  filter: brightness(1.05);
2764
3357
  }
2765
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
+
2766
3369
  /* ============================================
2767
3370
  模型列表
2768
3371
  ============================================ */
@@ -2945,7 +3548,7 @@ textarea:focus-visible {
2945
3548
 
2946
3549
  @media (max-width: 1280px) {
2947
3550
  .app-shell {
2948
- grid-template-columns: 220px minmax(0, 1fr) 300px;
3551
+ grid-template-columns: 240px minmax(0, 1fr) 300px;
2949
3552
  gap: 14px;
2950
3553
  }
2951
3554
 
@@ -2975,6 +3578,16 @@ textarea:focus-visible {
2975
3578
  .hero-logo {
2976
3579
  display: block;
2977
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
+ }
2978
3591
  .main-panel {
2979
3592
  padding: var(--spacing-sm) var(--spacing-sm);
2980
3593
  border-radius: 14px;
@@ -2991,6 +3604,19 @@ textarea:focus-visible {
2991
3604
  flex: 1 1 calc(50% - var(--spacing-sm));
2992
3605
  min-width: 0;
2993
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
+ }
2994
3620
  }
2995
3621
 
2996
3622
  @media (max-width: 720px) {
@@ -3210,4 +3836,16 @@ textarea:focus-visible {
3210
3836
  .session-preview {
3211
3837
  border-radius: var(--radius-lg);
3212
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
+ }
3213
3851
  }