@pheem49/mint 1.5.2 → 1.5.3

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/src/UI/styles.css CHANGED
@@ -1,35 +1,61 @@
1
1
  :root {
2
- --bg-color: #0f172a;
3
- --bg-gradient: linear-gradient(135deg, #090e17 0%, #1e1b4b 100%);
4
- --panel-bg: rgba(20, 28, 43, 0.65);
5
- --text-main: #f8fafc;
6
- --text-muted: #94a3b8;
7
- --accent: #8b5cf6;
8
- --accent-hover: #a78bfa;
9
- --border: rgba(255, 255, 255, 0.08);
10
- --border-light: rgba(255, 255, 255, 0.15);
11
- --shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
12
- --glass-blur: blur(16px);
2
+ --bg-color: #0b0b0c;
3
+ --bg-gradient: #0b0b0c;
4
+ --panel-bg: #1d1d1f;
5
+ --panel-raised: #242426;
6
+ --panel-soft: #151516;
7
+ --chrome-bg: #171718;
8
+ --surface-bg: #1f1f21;
9
+ --surface-strong: #333335;
10
+ --input-bg: #242425;
11
+ --text-main: #e8e8ea;
12
+ --text-muted: #8f8f94;
13
+ --text-soft: #d1d1d4;
14
+ --placeholder: #818187;
15
+ --accent: #8f6cf5;
16
+ --accent-hover: #a98cff;
17
+ --border: rgba(255, 255, 255, 0.075);
18
+ --border-light: rgba(255, 255, 255, 0.11);
19
+ --shadow: none;
20
+ --glass-blur: none;
13
21
  }
14
22
 
15
23
  [data-theme="light"] {
24
+ --bg-color: #f8fafc;
16
25
  --bg-gradient: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
17
26
  --panel-bg: rgba(255, 255, 255, 0.75);
27
+ --panel-raised: #ffffff;
28
+ --panel-soft: #eef2f7;
29
+ --chrome-bg: rgba(255, 255, 255, 0.88);
30
+ --surface-bg: #ffffff;
31
+ --surface-strong: #e2e8f0;
32
+ --input-bg: #f8fafc;
18
33
  --text-main: #0f172a;
19
34
  --text-muted: #64748b;
35
+ --text-soft: #334155;
36
+ --placeholder: #8590a2;
20
37
  --border: rgba(0, 0, 0, 0.06);
21
38
  --border-light: rgba(255, 255, 255, 0.6);
22
39
  --shadow: 0 8px 32px rgba(0, 0, 0, 0.08);
23
40
  }
24
41
 
25
42
  [data-theme="midnight"] {
26
- --bg-gradient: linear-gradient(135deg, #02040a 0%, #08061f 100%);
27
- --panel-bg: rgba(8, 8, 25, 0.7);
43
+ --bg-color: #020617;
44
+ --bg-gradient: linear-gradient(135deg, #020617 0%, #080a22 55%, #120828 100%);
45
+ --panel-bg: rgba(5, 8, 24, 0.94);
46
+ --panel-raised: rgba(99, 102, 241, 0.085);
47
+ --panel-soft: rgba(99, 102, 241, 0.055);
48
+ --chrome-bg: rgba(2, 6, 23, 0.88);
49
+ --surface-bg: rgba(5, 8, 24, 0.88);
50
+ --surface-strong: rgba(99, 102, 241, 0.16);
51
+ --input-bg: rgba(0, 0, 0, 0.46);
28
52
  --text-main: #e2e8f0;
29
- --text-muted: #64748b;
30
- --border: rgba(99, 102, 241, 0.15);
31
- --border-light: rgba(99, 102, 241, 0.3);
32
- --shadow: 0 8px 32px rgba(0, 0, 0, 0.6);
53
+ --text-muted: #74809a;
54
+ --text-soft: #bac4d6;
55
+ --placeholder: #68708a;
56
+ --border: rgba(99, 102, 241, 0.16);
57
+ --border-light: rgba(99, 102, 241, 0.26);
58
+ --shadow: none;
33
59
  }
34
60
 
35
61
  * {
@@ -39,7 +65,7 @@
39
65
  }
40
66
 
41
67
  body {
42
- font-family: 'Outfit', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
68
+ font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
43
69
  background: transparent;
44
70
  color: var(--text-main);
45
71
  height: 100vh;
@@ -52,13 +78,18 @@ body {
52
78
  display: flex;
53
79
  flex-direction: column;
54
80
  background: var(--bg-gradient);
55
- border-radius: 16px;
56
- border: 1px solid rgba(255, 255, 255, 0.15);
81
+ border-radius: 0;
82
+ border: 1px solid rgba(255, 255, 255, 0.045);
57
83
  box-shadow: var(--shadow);
58
84
  overflow: hidden;
59
85
  position: relative;
60
- animation: appEntrance 0.6s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
86
+ opacity: 1;
87
+ }
88
+
89
+ .app-container.is-loading > :not(.drag-region):not(.startup-loading) {
61
90
  opacity: 0;
91
+ visibility: hidden;
92
+ pointer-events: none;
62
93
  }
63
94
 
64
95
  @keyframes appEntrance {
@@ -76,64 +107,65 @@ body {
76
107
 
77
108
  /* Header - Drag Region */
78
109
  .drag-region {
79
- -webkit-app-region: drag;
80
- min-height: 66px;
81
- padding: 10px 14px 10px 18px;
110
+ app-region: no-drag;
111
+ -webkit-app-region: no-drag;
112
+ min-height: 34px;
113
+ padding: 0 8px;
82
114
  display: grid;
83
- grid-template-columns: minmax(150px, 1fr) auto minmax(220px, 1fr) auto;
84
- gap: 14px;
115
+ grid-template-columns: 248px minmax(0, 1fr) auto;
116
+ gap: 8px;
85
117
  align-items: center;
86
- background: rgba(9, 14, 28, 0.76);
118
+ background: var(--chrome-bg);
87
119
  backdrop-filter: var(--glass-blur);
88
120
  -webkit-backdrop-filter: var(--glass-blur);
89
121
  border-bottom: 1px solid var(--border);
90
- box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1);
122
+ box-shadow: none;
91
123
  z-index: 10;
92
124
  }
93
125
 
94
126
  .header-content {
127
+ app-region: drag;
128
+ -webkit-app-region: drag;
95
129
  display: flex;
96
130
  align-items: center;
97
- gap: 12px;
131
+ gap: 8px;
98
132
  min-width: 0;
133
+ height: 100%;
99
134
  }
100
135
 
101
- .status-indicator {
102
- width: 10px;
103
- height: 10px;
104
- border-radius: 50%;
105
- background: #10b981;
106
- box-shadow: 0 0 8px #10b981;
107
- animation: pulse 2s infinite;
136
+ .titlebar-drag-space {
137
+ app-region: drag;
138
+ -webkit-app-region: drag;
139
+ align-self: stretch;
140
+ min-width: 0;
108
141
  }
109
142
 
110
- @keyframes pulse {
111
- 0% {
112
- box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.4);
113
- }
114
-
115
- 70% {
116
- box-shadow: 0 0 0 6px rgba(16, 185, 129, 0);
117
- }
118
-
119
- 100% {
120
- box-shadow: 0 0 0 0 rgba(16, 185, 129, 0);
121
- }
143
+ .app-logo {
144
+ width: 22px;
145
+ height: 22px;
146
+ flex: 0 0 22px;
147
+ object-fit: contain;
148
+ border-radius: 6px;
149
+ user-select: none;
150
+ -webkit-user-drag: none;
151
+ filter: none;
122
152
  }
123
153
 
124
154
  h1 {
125
- font-size: 1.1rem;
155
+ color: var(--text-main);
156
+ font-size: 0.82rem;
126
157
  font-weight: 500;
127
- letter-spacing: 0.5px;
128
- background: linear-gradient(90deg, #e2e8f0, #8b5cf6);
129
- background-clip: text;
130
- -webkit-background-clip: text;
131
- -webkit-text-fill-color: transparent;
158
+ letter-spacing: 0;
159
+ background: none;
160
+ background-clip: initial;
161
+ -webkit-background-clip: initial;
162
+ -webkit-text-fill-color: currentColor;
132
163
  }
133
164
 
134
165
  .header-actions,
135
166
  .header-utility,
136
167
  .window-controls {
168
+ app-region: no-drag;
137
169
  -webkit-app-region: no-drag;
138
170
  display: flex;
139
171
  align-items: center;
@@ -142,10 +174,10 @@ h1 {
142
174
 
143
175
  .header-actions {
144
176
  justify-content: center;
145
- padding: 4px;
146
- border: 1px solid rgba(255, 255, 255, 0.08);
147
- border-radius: 14px;
148
- background: rgba(255, 255, 255, 0.035);
177
+ padding: 0;
178
+ border: 0;
179
+ border-radius: 0;
180
+ background: transparent;
149
181
  }
150
182
 
151
183
  .header-utility {
@@ -165,20 +197,21 @@ h1 {
165
197
  .clear-btn,
166
198
  .settings-btn {
167
199
  -webkit-app-region: no-drag;
200
+ app-region: no-drag;
168
201
  min-width: 0;
169
- height: 36px;
202
+ height: 28px;
170
203
  border: 1px solid transparent;
171
204
  background: transparent;
172
205
  color: var(--text-muted);
173
206
  cursor: pointer;
174
- border-radius: 10px;
207
+ border-radius: 6px;
175
208
  display: inline-flex;
176
209
  align-items: center;
177
210
  justify-content: center;
178
- gap: 7px;
179
- padding: 0 11px;
180
- font-size: 0.78rem;
181
- font-weight: 600;
211
+ gap: 6px;
212
+ padding: 0 8px;
213
+ font-size: 0.72rem;
214
+ font-weight: 500;
182
215
  line-height: 1;
183
216
  white-space: nowrap;
184
217
  transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease;
@@ -198,14 +231,15 @@ h1 {
198
231
  .maximize-btn,
199
232
  .minimize-btn {
200
233
  -webkit-app-region: no-drag;
234
+ app-region: no-drag;
201
235
  background: transparent;
202
236
  border: none;
203
237
  color: var(--text-muted);
204
238
  cursor: pointer;
205
239
  width: 34px;
206
- height: 34px;
240
+ height: 28px;
207
241
  padding: 0;
208
- border-radius: 9px;
242
+ border-radius: 4px;
209
243
  display: flex;
210
244
  align-items: center;
211
245
  justify-content: center;
@@ -222,6 +256,73 @@ h1 {
222
256
  color: #ef4444;
223
257
  }
224
258
 
259
+ .startup-loading {
260
+ position: absolute;
261
+ inset: 34px 0 0;
262
+ z-index: 100;
263
+ display: grid;
264
+ place-items: center;
265
+ background: var(--bg-gradient);
266
+ color: var(--text-muted);
267
+ opacity: 1;
268
+ visibility: visible;
269
+ transition: opacity 0.32s ease, visibility 0.32s ease;
270
+ }
271
+
272
+ .startup-loading.is-hidden {
273
+ opacity: 0;
274
+ visibility: hidden;
275
+ pointer-events: none;
276
+ }
277
+
278
+ .startup-loading-content {
279
+ display: grid;
280
+ justify-items: center;
281
+ gap: 16px;
282
+ transform: translateY(-10px);
283
+ }
284
+
285
+ .startup-loading-dots {
286
+ display: flex;
287
+ align-items: center;
288
+ gap: 9px;
289
+ }
290
+
291
+ .startup-loading-dots span {
292
+ width: 8px;
293
+ height: 8px;
294
+ border-radius: 50%;
295
+ background: var(--accent);
296
+ opacity: 0.35;
297
+ animation: startupDotPulse 1.15s ease-in-out infinite;
298
+ }
299
+
300
+ .startup-loading-dots span:nth-child(2) {
301
+ animation-delay: 0.16s;
302
+ }
303
+
304
+ .startup-loading-dots span:nth-child(3) {
305
+ animation-delay: 0.32s;
306
+ }
307
+
308
+ .startup-loading-text {
309
+ font-size: 0.82rem;
310
+ letter-spacing: 0.02em;
311
+ }
312
+
313
+ @keyframes startupDotPulse {
314
+ 0%,
315
+ 100% {
316
+ opacity: 0.28;
317
+ transform: scale(0.86);
318
+ }
319
+
320
+ 45% {
321
+ opacity: 1;
322
+ transform: scale(1.06);
323
+ }
324
+ }
325
+
225
326
  .toggle-model-btn:hover {
226
327
  background: rgba(139, 92, 246, 0.15);
227
328
  border-color: rgba(139, 92, 246, 0.2);
@@ -410,7 +511,9 @@ h1 {
410
511
  z-index: 3;
411
512
  pointer-events: none;
412
513
  opacity: 0;
413
- transition: opacity 0.2s ease;
514
+ transform: scale(var(--model-zone-scale, 1));
515
+ transform-origin: 50% 58%;
516
+ transition: opacity 0.2s ease, transform 0.16s ease;
414
517
  }
415
518
 
416
519
  .model-shell.show-interaction-guide .interaction-guide {
@@ -443,51 +546,51 @@ h1 {
443
546
 
444
547
  .zone-head {
445
548
  left: 34%;
446
- top: 25.5%;
549
+ top: 20.5%;
447
550
  width: 32%;
448
- height: 15%;
551
+ height: 15.5%;
449
552
  border-radius: 48% 48% 42% 42%;
450
553
  }
451
554
 
452
555
  .zone-face {
453
- left: 38%;
454
- top: 40%;
455
- width: 24%;
456
- height: 11.5%;
556
+ left: 36%;
557
+ top: 37.5%;
558
+ width: 28%;
559
+ height: 12%;
457
560
  border-radius: 50%;
458
561
  background: rgba(244, 114, 182, 0.1);
459
562
  border-color: rgba(244, 114, 182, 0.5);
460
563
  }
461
564
 
462
565
  .zone-left-hand {
463
- left: 22%;
464
- top: 68%;
465
- width: 20%;
566
+ left: 14%;
567
+ top: 70%;
568
+ width: 22%;
466
569
  height: 16%;
467
570
  border-radius: 48% 42% 56% 44%;
468
571
  }
469
572
 
470
573
  .zone-right-hand {
471
- left: 61%;
472
- top: 68%;
473
- width: 19%;
474
- height: 16%;
574
+ left: 65%;
575
+ top: 69%;
576
+ width: 23%;
577
+ height: 17%;
475
578
  border-radius: 42% 54% 44% 56%;
476
579
  }
477
580
 
478
581
  .zone-body {
479
- left: 37%;
480
- top: 55.5%;
582
+ left: 36%;
583
+ top: 53%;
481
584
  width: 29%;
482
- height: 14%;
585
+ height: 14.5%;
483
586
  border-radius: 38% 38% 48% 48%;
484
587
  }
485
588
 
486
589
  .zone-lower {
487
- left: 38%;
488
- top: 77%;
590
+ left: 34%;
591
+ top: 74%;
489
592
  width: 30%;
490
- height: 23%;
593
+ height: 24%;
491
594
  border-radius: 46% 46% 24% 24%;
492
595
  background: rgba(251, 191, 36, 0.08);
493
596
  border-color: rgba(251, 191, 36, 0.45);
@@ -502,6 +605,141 @@ h1 {
502
605
  transition: opacity 0.6s ease-out;
503
606
  }
504
607
 
608
+ .model-activity-badge {
609
+ position: absolute;
610
+ top: 14px;
611
+ right: 14px;
612
+ z-index: 4;
613
+ height: 28px;
614
+ display: inline-flex;
615
+ align-items: center;
616
+ gap: 7px;
617
+ padding: 0 10px;
618
+ border: 1px solid rgba(255, 255, 255, 0.08);
619
+ border-radius: 999px;
620
+ background: rgba(18, 18, 22, 0.72);
621
+ color: var(--text-main);
622
+ font-size: 0.72rem;
623
+ line-height: 1;
624
+ box-shadow: 0 8px 22px rgba(0, 0, 0, 0.18);
625
+ backdrop-filter: blur(12px);
626
+ pointer-events: none;
627
+ }
628
+
629
+ .model-panel-controls {
630
+ position: absolute;
631
+ left: 14px;
632
+ top: 14px;
633
+ z-index: 5;
634
+ display: flex;
635
+ align-items: center;
636
+ gap: 6px;
637
+ padding: 5px;
638
+ border: 1px solid rgba(255, 255, 255, 0.08);
639
+ border-radius: 8px;
640
+ background: rgba(18, 18, 22, 0.68);
641
+ box-shadow: 0 8px 22px rgba(0, 0, 0, 0.16);
642
+ backdrop-filter: blur(12px);
643
+ }
644
+
645
+ .model-panel-control {
646
+ width: 28px;
647
+ height: 28px;
648
+ display: inline-flex;
649
+ align-items: center;
650
+ justify-content: center;
651
+ border: 0;
652
+ border-radius: 6px;
653
+ background: transparent;
654
+ color: var(--text-soft);
655
+ cursor: pointer;
656
+ -webkit-app-region: no-drag;
657
+ transition: background 0.16s ease, color 0.16s ease;
658
+ }
659
+
660
+ .model-panel-control:hover,
661
+ .model-panel-control.is-active {
662
+ background: var(--surface-strong);
663
+ color: var(--text-main);
664
+ }
665
+
666
+ .model-scale-control {
667
+ height: 28px;
668
+ display: inline-flex;
669
+ align-items: center;
670
+ gap: 7px;
671
+ padding: 0 6px;
672
+ color: var(--text-soft);
673
+ border-radius: 6px;
674
+ }
675
+
676
+ .model-scale-control:hover {
677
+ background: rgba(255, 255, 255, 0.045);
678
+ color: var(--text-main);
679
+ }
680
+
681
+ .model-scale-control input {
682
+ width: 84px;
683
+ accent-color: var(--accent);
684
+ }
685
+
686
+ .model-scale-value {
687
+ min-width: 38px;
688
+ color: var(--text-main);
689
+ font-size: 0.68rem;
690
+ line-height: 1;
691
+ text-align: right;
692
+ font-variant-numeric: tabular-nums;
693
+ }
694
+
695
+ .model-scale-reset {
696
+ width: 22px;
697
+ height: 22px;
698
+ display: inline-flex;
699
+ align-items: center;
700
+ justify-content: center;
701
+ border: 0;
702
+ border-radius: 5px;
703
+ background: transparent;
704
+ color: var(--text-soft);
705
+ cursor: pointer;
706
+ }
707
+
708
+ .model-scale-reset:hover {
709
+ background: var(--surface-strong);
710
+ color: var(--text-main);
711
+ }
712
+
713
+ .layout-preset-group {
714
+ display: inline-flex;
715
+ align-items: center;
716
+ gap: 2px;
717
+ margin-left: 2px;
718
+ padding-left: 6px;
719
+ border-left: 1px solid rgba(255, 255, 255, 0.08);
720
+ }
721
+
722
+ .layout-preset-btn {
723
+ width: 26px;
724
+ height: 26px;
725
+ display: inline-flex;
726
+ align-items: center;
727
+ justify-content: center;
728
+ border: 0;
729
+ border-radius: 6px;
730
+ background: transparent;
731
+ color: var(--text-muted);
732
+ cursor: pointer;
733
+ -webkit-app-region: no-drag;
734
+ transition: background 0.16s ease, color 0.16s ease;
735
+ }
736
+
737
+ .layout-preset-btn:hover,
738
+ .layout-preset-btn.is-active {
739
+ background: var(--surface-strong);
740
+ color: var(--text-main);
741
+ }
742
+
505
743
  .model-shell.is-live2d-ready .model-placeholder {
506
744
  opacity: 0 !important;
507
745
  pointer-events: none;
@@ -664,6 +902,7 @@ h1 {
664
902
  align-items: center;
665
903
  gap: 8px;
666
904
  flex-wrap: wrap;
905
+ position: relative;
667
906
  }
668
907
 
669
908
  .provider-badge {
@@ -671,8 +910,79 @@ h1 {
671
910
  overflow: hidden;
672
911
  text-overflow: ellipsis;
673
912
  white-space: nowrap;
913
+ border: 0;
914
+ background: transparent;
674
915
  color: var(--accent);
675
916
  font-weight: 600;
917
+ font: inherit;
918
+ line-height: 1.2;
919
+ padding: 0;
920
+ cursor: pointer;
921
+ }
922
+
923
+ .provider-badge:hover,
924
+ .provider-badge.is-open {
925
+ color: var(--accent-hover);
926
+ text-decoration: underline;
927
+ text-underline-offset: 2px;
928
+ }
929
+
930
+ .provider-popover {
931
+ position: absolute;
932
+ left: 6px;
933
+ top: 20px;
934
+ z-index: 20;
935
+ width: min(280px, calc(100vw - 48px));
936
+ padding: 10px;
937
+ border: 1px solid var(--border);
938
+ border-radius: 8px;
939
+ background: var(--panel-raised);
940
+ color: var(--text-main);
941
+ box-shadow: 0 18px 44px rgba(0, 0, 0, 0.32);
942
+ backdrop-filter: var(--glass-blur);
943
+ -webkit-backdrop-filter: var(--glass-blur);
944
+ opacity: 1;
945
+ }
946
+
947
+ .provider-popover-title {
948
+ color: var(--text-main);
949
+ font-size: 0.78rem;
950
+ font-weight: 700;
951
+ margin-bottom: 8px;
952
+ }
953
+
954
+ .provider-popover-row {
955
+ display: flex;
956
+ justify-content: space-between;
957
+ gap: 14px;
958
+ padding: 5px 0;
959
+ color: var(--text-muted);
960
+ font-size: 0.72rem;
961
+ line-height: 1.25;
962
+ }
963
+
964
+ .provider-popover-row strong {
965
+ color: var(--text-main);
966
+ font-weight: 600;
967
+ text-align: right;
968
+ overflow-wrap: anywhere;
969
+ }
970
+
971
+ .provider-popover-action {
972
+ width: 100%;
973
+ height: 30px;
974
+ margin-top: 8px;
975
+ border: 1px solid color-mix(in srgb, var(--accent) 32%, transparent);
976
+ border-radius: 6px;
977
+ background: color-mix(in srgb, var(--accent) 14%, transparent);
978
+ color: var(--text-main);
979
+ font: inherit;
980
+ font-size: 0.74rem;
981
+ cursor: pointer;
982
+ }
983
+
984
+ .provider-popover-action:hover {
985
+ background: color-mix(in srgb, var(--accent) 24%, transparent);
676
986
  }
677
987
 
678
988
  @keyframes messagePopIn {
@@ -1096,54 +1406,977 @@ input:checked + .slider:before {
1096
1406
  transform: scale(0.97);
1097
1407
  }
1098
1408
 
1099
- @media (max-width: 760px) {
1100
- .drag-region {
1101
- grid-template-columns: auto 1fr auto;
1102
- gap: 8px;
1103
- padding: 9px 10px 9px 12px;
1104
- }
1409
+ /* Antigravity-inspired main shell */
1410
+ .app-body {
1411
+ --sidebar-expanded-width: 264px;
1412
+ --sidebar-collapsed-width: 56px;
1413
+ --sidebar-content-gap: 10px;
1414
+ flex: 1;
1415
+ min-height: 0;
1416
+ display: grid;
1417
+ grid-template-columns: minmax(0, 1fr);
1418
+ background: var(--bg-gradient);
1419
+ position: relative;
1420
+ }
1105
1421
 
1106
- .header-content h1 {
1107
- display: none;
1108
- }
1422
+ .sidebar-toggle {
1423
+ position: absolute;
1424
+ top: 10px;
1425
+ left: 214px;
1426
+ z-index: 12;
1427
+ width: 40px;
1428
+ height: 34px;
1429
+ display: flex;
1430
+ align-items: center;
1431
+ justify-content: center;
1432
+ border: 1px solid var(--border-light);
1433
+ border-radius: 6px;
1434
+ background: var(--panel-raised);
1435
+ color: var(--text-soft);
1436
+ cursor: pointer;
1437
+ -webkit-app-region: no-drag;
1438
+ transition: left 0.22s ease, background 0.16s ease, color 0.16s ease, border-color 0.16s ease;
1439
+ }
1109
1440
 
1110
- .header-actions {
1111
- justify-content: flex-start;
1112
- overflow: hidden;
1113
- }
1441
+ .sidebar-toggle:hover {
1442
+ background: var(--surface-strong);
1443
+ color: var(--text-main);
1444
+ border-color: rgba(255, 255, 255, 0.16);
1445
+ }
1114
1446
 
1115
- .header-utility {
1116
- display: none;
1117
- }
1447
+ .app-body.sidebar-collapsed .sidebar-toggle {
1448
+ left: 8px;
1449
+ }
1118
1450
 
1119
- .toggle-model-btn,
1120
- .change-expression-btn,
1121
- .accessory-cycle-btn,
1122
- .toggle-interaction-btn,
1123
- .interaction-guide-btn {
1124
- width: 34px;
1125
- padding: 0;
1126
- }
1451
+ .app-body.sidebar-collapsed .sidebar-toggle-icon {
1452
+ transform: rotate(180deg);
1453
+ }
1127
1454
 
1128
- .toggle-model-btn span,
1129
- .change-expression-btn span,
1130
- .accessory-cycle-btn span,
1131
- .toggle-interaction-btn span,
1132
- .interaction-guide-btn span {
1133
- display: none;
1134
- }
1455
+ .workspace-sidebar {
1456
+ position: absolute;
1457
+ inset: 0 auto 0 0;
1458
+ z-index: 11;
1459
+ width: 264px;
1460
+ display: flex;
1461
+ flex-direction: column;
1462
+ min-width: 0;
1463
+ padding: 52px 10px 12px 14px;
1464
+ background: var(--chrome-bg);
1465
+ backdrop-filter: var(--glass-blur);
1466
+ -webkit-backdrop-filter: var(--glass-blur);
1467
+ border-right: 1px solid var(--border);
1468
+ color: var(--text-muted);
1469
+ overflow: hidden;
1470
+ transition: width 0.22s ease, padding 0.22s ease, opacity 0.18s ease, transform 0.22s ease;
1471
+ }
1472
+
1473
+ .app-body.sidebar-collapsed .workspace-sidebar {
1474
+ width: 56px;
1475
+ padding: 52px 8px 12px;
1476
+ opacity: 1;
1477
+ pointer-events: auto;
1478
+ transform: translateX(0);
1479
+ }
1480
+
1481
+ .workspace-sidebar button {
1482
+ font: inherit;
1483
+ -webkit-app-region: no-drag;
1484
+ }
1485
+
1486
+ .sidebar-new-chat,
1487
+ .sidebar-top-action,
1488
+ .sidebar-settings,
1489
+ .sidebar-bottom-actions .clear-btn,
1490
+ .sidebar-bottom-actions .settings-btn {
1491
+ width: 100%;
1492
+ min-width: 0;
1493
+ max-width: none;
1494
+ height: 32px;
1495
+ display: flex;
1496
+ align-items: center;
1497
+ justify-content: flex-start;
1498
+ gap: 9px;
1499
+ border: 0;
1500
+ border-radius: 6px;
1501
+ background: transparent;
1502
+ color: var(--text-soft);
1503
+ cursor: pointer;
1504
+ padding: 0 10px;
1505
+ text-align: left;
1506
+ transition: background 0.16s ease, color 0.16s ease;
1507
+ }
1508
+
1509
+ .sidebar-new-chat {
1510
+ background: var(--surface-strong);
1511
+ color: var(--text-main);
1512
+ margin-bottom: 4px;
1513
+ border: 1px solid var(--border);
1514
+ }
1515
+
1516
+ .sidebar-new-chat:hover,
1517
+ .sidebar-chat-btn:hover,
1518
+ .sidebar-chat-btn.is-active,
1519
+ .sidebar-top-action:hover,
1520
+ .sidebar-top-action.is-active,
1521
+ .sidebar-settings:hover,
1522
+ .sidebar-bottom-actions .clear-btn:hover,
1523
+ .sidebar-bottom-actions .settings-btn:hover {
1524
+ background: var(--surface-strong);
1525
+ color: var(--text-main);
1526
+ }
1527
+
1528
+ .sidebar-top-action {
1529
+ margin-bottom: 4px;
1530
+ }
1531
+
1532
+ .sidebar-top-action:last-of-type {
1533
+ margin-bottom: 12px;
1534
+ }
1535
+
1536
+ .sidebar-model-controls {
1537
+ display: grid;
1538
+ width: 100%;
1539
+ align-items: stretch;
1540
+ justify-items: stretch;
1541
+ justify-content: stretch;
1542
+ gap: 2px;
1543
+ padding: 10px 0 18px;
1544
+ border-top: 1px solid rgba(255, 255, 255, 0.035);
1545
+ border-bottom: 1px solid rgba(255, 255, 255, 0.035);
1546
+ margin-bottom: 6px;
1547
+ }
1548
+
1549
+ .workspace-sidebar .toggle-model-btn,
1550
+ .workspace-sidebar .change-expression-btn,
1551
+ .workspace-sidebar .accessory-cycle-btn,
1552
+ .workspace-sidebar .toggle-interaction-btn,
1553
+ .workspace-sidebar .interaction-guide-btn {
1554
+ width: 100%;
1555
+ min-width: 0;
1556
+ max-width: none;
1557
+ height: 32px;
1558
+ justify-content: flex-start;
1559
+ padding: 0 10px;
1560
+ color: var(--text-soft);
1561
+ font-size: 1rem;
1562
+ font-weight: 400;
1563
+ gap: 9px;
1564
+ }
1565
+
1566
+ .workspace-sidebar .toggle-model-btn:hover,
1567
+ .workspace-sidebar .toggle-model-btn.active,
1568
+ .workspace-sidebar .change-expression-btn:hover,
1569
+ .workspace-sidebar .accessory-cycle-btn:hover,
1570
+ .workspace-sidebar .accessory-cycle-btn.active,
1571
+ .workspace-sidebar .toggle-interaction-btn:hover,
1572
+ .workspace-sidebar .toggle-interaction-btn.active,
1573
+ .workspace-sidebar .interaction-guide-btn:hover,
1574
+ .workspace-sidebar .interaction-guide-btn.active {
1575
+ background: var(--surface-strong);
1576
+ border-color: transparent;
1577
+ color: var(--text-main);
1578
+ }
1579
+
1580
+ .sidebar-section {
1581
+ flex: 1;
1582
+ min-height: 0;
1583
+ overflow: hidden;
1584
+ padding-top: 6px;
1585
+ border-top: 1px solid rgba(255, 255, 255, 0.035);
1586
+ }
1587
+
1588
+ .sidebar-section-title {
1589
+ padding: 0 8px 12px;
1590
+ color: var(--text-muted);
1591
+ font-size: 0.72rem;
1592
+ }
1593
+
1594
+ .sidebar-project {
1595
+ height: 32px;
1596
+ display: flex;
1597
+ align-items: center;
1598
+ gap: 8px;
1599
+ padding: 0 8px;
1600
+ color: var(--text-muted);
1601
+ border-radius: 6px;
1602
+ font-size: 0.84rem;
1603
+ white-space: nowrap;
1604
+ overflow: hidden;
1605
+ text-overflow: ellipsis;
1606
+ border: 0;
1607
+ background: transparent;
1608
+ width: 100%;
1609
+ cursor: default;
1610
+ text-align: left;
1611
+ }
1612
+
1613
+ .app-body.sidebar-collapsed .sidebar-new-chat,
1614
+ .app-body.sidebar-collapsed .sidebar-top-action,
1615
+ .app-body.sidebar-collapsed .sidebar-settings,
1616
+ .app-body.sidebar-collapsed .sidebar-bottom-actions .clear-btn,
1617
+ .app-body.sidebar-collapsed .sidebar-bottom-actions .settings-btn,
1618
+ .app-body.sidebar-collapsed .workspace-sidebar .toggle-model-btn,
1619
+ .app-body.sidebar-collapsed .workspace-sidebar .change-expression-btn,
1620
+ .app-body.sidebar-collapsed .workspace-sidebar .accessory-cycle-btn,
1621
+ .app-body.sidebar-collapsed .workspace-sidebar .toggle-interaction-btn,
1622
+ .app-body.sidebar-collapsed .workspace-sidebar .interaction-guide-btn,
1623
+ .app-body.sidebar-collapsed .sidebar-project {
1624
+ width: 40px;
1625
+ height: 34px;
1626
+ justify-content: center;
1627
+ gap: 0;
1628
+ padding: 0;
1629
+ }
1630
+
1631
+ .app-body.sidebar-collapsed .sidebar-model-controls,
1632
+ .app-body.sidebar-collapsed .sidebar-bottom-actions {
1633
+ justify-items: center;
1634
+ }
1635
+
1636
+ .app-body.sidebar-collapsed .sidebar-section-title,
1637
+ .app-body.sidebar-collapsed .workspace-sidebar button > span:not([aria-hidden="true"]),
1638
+ .app-body.sidebar-collapsed .sidebar-project > span:not([aria-hidden="true"]):not(.mint-status-pill),
1639
+ .app-body.sidebar-collapsed .mint-status-label {
1640
+ display: none;
1641
+ }
1642
+
1643
+ .app-body.sidebar-collapsed .mint-status-pill {
1644
+ margin-left: 3px;
1645
+ padding: 0;
1646
+ background: transparent;
1647
+ }
1648
+
1649
+ .app-body.sidebar-collapsed .sidebar-project.active {
1650
+ gap: 4px;
1651
+ }
1652
+
1653
+ .mint-status-pill {
1654
+ margin-left: auto;
1655
+ min-width: 0;
1656
+ display: inline-flex;
1657
+ align-items: center;
1658
+ gap: 6px;
1659
+ padding: 3px 7px;
1660
+ border-radius: 999px;
1661
+ background: rgba(255, 255, 255, 0.055);
1662
+ color: var(--text-muted);
1663
+ font-size: 0.68rem;
1664
+ line-height: 1;
1665
+ flex-shrink: 0;
1666
+ }
1667
+
1668
+ .mint-status-dot {
1669
+ width: 7px;
1670
+ height: 7px;
1671
+ border-radius: 50%;
1672
+ background: #94a3b8;
1673
+ box-shadow: 0 0 0 3px rgba(148, 163, 184, 0.12);
1674
+ flex: 0 0 auto;
1675
+ }
1676
+
1677
+ .mint-status-pill[data-state="listening"],
1678
+ .model-activity-badge[data-state="listening"] {
1679
+ color: #7dd3fc;
1680
+ }
1681
+
1682
+ .mint-status-pill[data-state="listening"] .mint-status-dot,
1683
+ .model-activity-badge[data-state="listening"] .mint-status-dot {
1684
+ background: #38bdf8;
1685
+ box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.16);
1686
+ animation: mintStatusPulse 1.2s ease-in-out infinite;
1687
+ }
1688
+
1689
+ .mint-status-pill[data-state="thinking"],
1690
+ .model-activity-badge[data-state="thinking"] {
1691
+ color: #c4b5fd;
1692
+ }
1693
+
1694
+ .mint-status-pill[data-state="thinking"] .mint-status-dot,
1695
+ .model-activity-badge[data-state="thinking"] .mint-status-dot {
1696
+ background: var(--accent);
1697
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 20%, transparent);
1698
+ animation: mintStatusPulse 1s ease-in-out infinite;
1699
+ }
1700
+
1701
+ .mint-status-pill[data-state="speaking"],
1702
+ .model-activity-badge[data-state="speaking"] {
1703
+ color: #86efac;
1704
+ }
1705
+
1706
+ .mint-status-pill[data-state="speaking"] .mint-status-dot,
1707
+ .model-activity-badge[data-state="speaking"] .mint-status-dot {
1708
+ background: #22c55e;
1709
+ box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.16);
1710
+ animation: mintStatusPulse 0.9s ease-in-out infinite;
1711
+ }
1712
+
1713
+ .mint-status-pill[data-state="error"],
1714
+ .model-activity-badge[data-state="error"] {
1715
+ color: #fca5a5;
1716
+ }
1717
+
1718
+ .mint-status-pill[data-state="error"] .mint-status-dot,
1719
+ .model-activity-badge[data-state="error"] .mint-status-dot {
1720
+ background: #ef4444;
1721
+ box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.16);
1722
+ }
1723
+
1724
+ @keyframes mintStatusPulse {
1725
+ 0%, 100% {
1726
+ transform: scale(1);
1727
+ opacity: 0.8;
1728
+ }
1729
+ 50% {
1730
+ transform: scale(1.35);
1731
+ opacity: 1;
1732
+ }
1733
+ }
1734
+
1735
+ .sidebar-project.active,
1736
+ .sidebar-project.is-active {
1737
+ background: color-mix(in srgb, var(--accent) 13%, transparent);
1738
+ color: var(--text-main);
1739
+ }
1740
+
1741
+ .sidebar-pictures-btn {
1742
+ cursor: pointer;
1743
+ }
1744
+
1745
+ .sidebar-pictures-btn:hover {
1746
+ background: var(--surface-strong);
1747
+ color: var(--text-main);
1748
+ }
1749
+
1750
+ .sidebar-settings {
1751
+ margin-top: auto;
1752
+ }
1753
+
1754
+ .sidebar-bottom-actions {
1755
+ display: grid;
1756
+ width: 100%;
1757
+ align-items: stretch;
1758
+ justify-items: stretch;
1759
+ gap: 2px;
1760
+ margin-top: auto;
1761
+ padding-top: 10px;
1762
+ border-top: 1px solid rgba(255, 255, 255, 0.035);
1763
+ }
1764
+
1765
+ .assistant-workspace {
1766
+ display: grid;
1767
+ grid-template-columns: minmax(320px, 1fr) minmax(360px, 520px);
1768
+ gap: 18px;
1769
+ margin-left: var(--sidebar-expanded-width);
1770
+ padding: 0;
1771
+ background: var(--bg-gradient);
1772
+ position: relative;
1773
+ overflow: hidden;
1774
+ transition: grid-template-columns 0.58s cubic-bezier(0.16, 1, 0.3, 1),
1775
+ gap 0.58s cubic-bezier(0.16, 1, 0.3, 1),
1776
+ margin-left 0.22s ease,
1777
+ opacity 0.22s ease,
1778
+ transform 0.22s ease;
1779
+ }
1780
+
1781
+ .assistant-workspace.layout-chat {
1782
+ grid-template-columns: minmax(280px, 0.72fr) minmax(460px, 1.18fr);
1783
+ }
1784
+
1785
+ .app-body.sidebar-collapsed .assistant-workspace {
1786
+ margin-left: calc(var(--sidebar-collapsed-width) + var(--sidebar-content-gap));
1787
+ }
1788
+
1789
+ .app-body.pictures-open .assistant-workspace {
1790
+ opacity: 0;
1791
+ pointer-events: none;
1792
+ transform: translateY(8px) scale(0.995);
1793
+ }
1794
+
1795
+ .pictures-library {
1796
+ position: absolute;
1797
+ inset: 0;
1798
+ z-index: 5;
1799
+ min-height: 0;
1800
+ padding: 56px clamp(28px, 6vw, 92px) 34px;
1801
+ overflow: auto;
1802
+ background: var(--bg-gradient);
1803
+ color: var(--text-main);
1804
+ opacity: 0;
1805
+ pointer-events: none;
1806
+ transform: translateY(10px);
1807
+ transition: opacity 0.24s ease, transform 0.24s ease;
1808
+ }
1809
+
1810
+ .app-body.pictures-open .pictures-library {
1811
+ opacity: 1;
1812
+ pointer-events: auto;
1813
+ transform: translateY(0);
1814
+ }
1815
+
1816
+ .pictures-library[hidden] {
1817
+ display: block;
1818
+ opacity: 0;
1819
+ pointer-events: none;
1820
+ transform: translateY(10px);
1821
+ }
1822
+
1823
+ .pictures-header {
1824
+ display: flex;
1825
+ align-items: center;
1826
+ justify-content: space-between;
1827
+ gap: 18px;
1828
+ max-width: 1120px;
1829
+ margin: 0 auto 24px;
1830
+ padding-bottom: 18px;
1831
+ border-bottom: 1px solid var(--border);
1832
+ }
1833
+
1834
+ .pictures-kicker {
1835
+ color: var(--accent-hover);
1836
+ font-size: 0.72rem;
1837
+ font-weight: 600;
1838
+ letter-spacing: 0.08em;
1839
+ text-transform: uppercase;
1840
+ }
1841
+
1842
+ .pictures-header h2 {
1843
+ margin-top: 4px;
1844
+ font-size: 1.55rem;
1845
+ font-weight: 600;
1846
+ }
1847
+
1848
+ .pictures-close-btn {
1849
+ height: 34px;
1850
+ padding: 0 14px;
1851
+ border: 1px solid var(--border);
1852
+ border-radius: 8px;
1853
+ background: var(--surface-strong);
1854
+ color: var(--text-main);
1855
+ cursor: pointer;
1856
+ }
1857
+
1858
+ .pictures-grid {
1859
+ max-width: 1120px;
1860
+ margin: 0 auto;
1861
+ display: grid;
1862
+ grid-template-columns: repeat(auto-fill, minmax(174px, 1fr));
1863
+ gap: 14px;
1864
+ animation: picturesGridIn 0.28s ease both;
1865
+ }
1866
+
1867
+ .picture-card {
1868
+ position: relative;
1869
+ min-width: 0;
1870
+ overflow: hidden;
1871
+ border: 1px solid var(--border);
1872
+ border-radius: 10px;
1873
+ background: var(--surface-bg);
1874
+ box-shadow: 0 14px 36px rgba(0, 0, 0, 0.16);
1875
+ transition: transform 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
1876
+ }
1877
+
1878
+ .picture-card:hover {
1879
+ transform: translateY(-2px);
1880
+ border-color: color-mix(in srgb, var(--accent) 42%, var(--border));
1881
+ box-shadow: 0 20px 48px rgba(0, 0, 0, 0.22);
1882
+ }
1883
+
1884
+ .picture-card img {
1885
+ display: block;
1886
+ width: 100%;
1887
+ aspect-ratio: 4 / 3;
1888
+ object-fit: cover;
1889
+ background: var(--panel-soft);
1890
+ }
1891
+
1892
+ .picture-card-meta {
1893
+ min-height: 42px;
1894
+ padding: 9px 10px;
1895
+ color: var(--text-soft);
1896
+ font-size: 0.76rem;
1897
+ line-height: 1.35;
1898
+ white-space: nowrap;
1899
+ overflow: hidden;
1900
+ text-overflow: ellipsis;
1901
+ }
1902
+
1903
+ .pictures-empty {
1904
+ max-width: 360px;
1905
+ margin: 18vh auto 0;
1906
+ display: grid;
1907
+ justify-items: center;
1908
+ gap: 8px;
1909
+ color: var(--text-muted);
1910
+ text-align: center;
1911
+ }
1912
+
1913
+ @keyframes picturesGridIn {
1914
+ from {
1915
+ opacity: 0;
1916
+ transform: translateY(8px);
1917
+ }
1918
+ to {
1919
+ opacity: 1;
1920
+ transform: translateY(0);
1921
+ }
1922
+ }
1923
+
1924
+ .pictures-empty.is-hidden {
1925
+ display: none;
1926
+ }
1927
+
1928
+ .pictures-empty-icon {
1929
+ display: grid;
1930
+ place-items: center;
1931
+ width: 48px;
1932
+ height: 48px;
1933
+ border: 1px solid var(--border);
1934
+ border-radius: 12px;
1935
+ background: var(--surface-bg);
1936
+ color: var(--accent-hover);
1937
+ font-size: 1.2rem;
1938
+ }
1939
+
1940
+ .pictures-empty p {
1941
+ color: var(--text-main);
1942
+ font-weight: 600;
1943
+ }
1944
+
1945
+ .pictures-empty span {
1946
+ font-size: 0.82rem;
1947
+ line-height: 1.45;
1948
+ }
1949
+
1950
+ .assistant-workspace.model-hidden {
1951
+ grid-template-columns: minmax(0, 0fr) minmax(0, 1fr);
1952
+ gap: 0;
1953
+ padding: 0;
1954
+ }
1955
+
1956
+ .model-stage {
1957
+ min-width: 0;
1958
+ flex: 1 1 auto;
1959
+ padding: 44px 0 28px 28px;
1960
+ align-items: center;
1961
+ justify-content: center;
1962
+ overflow: hidden;
1963
+ opacity: 1;
1964
+ transform: translateX(0) scale(1);
1965
+ transition: opacity 0.42s ease,
1966
+ transform 0.58s cubic-bezier(0.16, 1, 0.3, 1),
1967
+ padding 0.58s cubic-bezier(0.16, 1, 0.3, 1);
1968
+ }
1969
+
1970
+ .assistant-workspace.model-hidden .model-stage {
1971
+ opacity: 0;
1972
+ pointer-events: none;
1973
+ transform: translateX(-28px) scale(0.985);
1974
+ padding-left: 0;
1975
+ margin-right: 0;
1976
+ }
1977
+
1978
+ .model-shell {
1979
+ min-height: 0;
1980
+ width: 100%;
1981
+ height: 100%;
1982
+ background: var(--panel-soft);
1983
+ border: 1px solid rgba(255, 255, 255, 0.09);
1984
+ border-radius: 8px;
1985
+ box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.025), 0 18px 52px rgba(0, 0, 0, 0.16);
1986
+ backdrop-filter: var(--glass-blur);
1987
+ -webkit-backdrop-filter: var(--glass-blur);
1988
+ }
1989
+
1990
+ .model-shell.model-bg-clear {
1991
+ background: rgba(0, 0, 0, 0.06);
1992
+ }
1993
+
1994
+ .model-shell.model-bg-grid {
1995
+ background:
1996
+ linear-gradient(rgba(255, 255, 255, 0.035) 1px, transparent 1px),
1997
+ linear-gradient(90deg, rgba(255, 255, 255, 0.035) 1px, transparent 1px),
1998
+ var(--panel-soft);
1999
+ background-size: 28px 28px;
2000
+ }
2001
+
2002
+ .model-shell.model-bg-stage {
2003
+ background:
2004
+ radial-gradient(circle at 50% 38%, color-mix(in srgb, var(--accent) 18%, transparent), transparent 42%),
2005
+ linear-gradient(180deg, rgba(255, 255, 255, 0.055), rgba(0, 0, 0, 0.08)),
2006
+ var(--panel-soft);
2007
+ }
2008
+
2009
+ .model-glow,
2010
+ .model-shadow {
2011
+ display: none;
2012
+ }
2013
+
2014
+ .conversation-panel {
2015
+ position: static;
2016
+ align-self: stretch;
2017
+ width: auto;
2018
+ min-width: 0;
2019
+ max-height: none;
2020
+ transform: none;
2021
+ flex: none;
2022
+ display: flex;
2023
+ flex-direction: column;
2024
+ padding: 44px 28px 24px 0;
2025
+ background: transparent;
2026
+ border: 0;
2027
+ border-radius: 0;
2028
+ box-shadow: none;
2029
+ backdrop-filter: none;
2030
+ -webkit-backdrop-filter: none;
2031
+ pointer-events: auto;
2032
+ transition: width 0.58s cubic-bezier(0.16, 1, 0.3, 1),
2033
+ padding 0.58s cubic-bezier(0.16, 1, 0.3, 1),
2034
+ transform 0.58s cubic-bezier(0.16, 1, 0.3, 1);
2035
+ }
2036
+
2037
+ .assistant-workspace.model-hidden .conversation-panel {
2038
+ position: relative;
2039
+ display: grid;
2040
+ grid-template-rows: minmax(0, 1fr) auto;
2041
+ width: min(640px, calc(100% - 48px));
2042
+ height: 100%;
2043
+ max-width: none;
2044
+ margin: 0 auto;
2045
+ padding: 56px 0 28px;
2046
+ grid-column: 1 / -1;
2047
+ }
2048
+
2049
+ .assistant-workspace.model-hidden .chat-container {
2050
+ padding: 0 8px 18px;
2051
+ overflow-y: auto;
2052
+ }
2053
+
2054
+ .assistant-workspace.model-hidden .message {
2055
+ max-width: 100%;
2056
+ }
2057
+
2058
+ .assistant-workspace.model-hidden .input-area {
2059
+ width: 100%;
2060
+ }
2061
+
2062
+ .chat-container {
2063
+ flex: 1;
2064
+ min-height: 0;
2065
+ max-height: none;
2066
+ padding: 0 4px 16px;
2067
+ gap: 10px;
2068
+ pointer-events: auto;
2069
+ }
2070
+
2071
+ .message {
2072
+ max-width: min(100%, 620px);
2073
+ animation: messagePopIn 0.22s ease forwards;
2074
+ }
2075
+
2076
+ .message-bubble {
2077
+ padding: 10px 12px;
2078
+ border-radius: 8px;
2079
+ font-size: 0.9rem;
2080
+ line-height: 1.48;
2081
+ box-shadow: none;
2082
+ backdrop-filter: var(--glass-blur);
2083
+ -webkit-backdrop-filter: var(--glass-blur);
2084
+ }
2085
+
2086
+ .ai-message .message-bubble,
2087
+ .typing-indicator {
2088
+ background: var(--surface-bg);
2089
+ border: 1px solid var(--border);
2090
+ border-radius: 8px;
2091
+ color: var(--text-main);
2092
+ backdrop-filter: none;
2093
+ -webkit-backdrop-filter: none;
2094
+ box-shadow: none;
2095
+ }
2096
+
2097
+ .user-message .message-bubble {
2098
+ background: linear-gradient(135deg, var(--surface-strong), color-mix(in srgb, var(--accent) 16%, var(--surface-strong)));
2099
+ border: 1px solid rgba(255, 255, 255, 0.08);
2100
+ border-radius: 8px;
2101
+ color: var(--text-main);
2102
+ box-shadow: none;
2103
+ }
2104
+
2105
+ .provider-badge {
2106
+ color: var(--accent-hover);
2107
+ }
2108
+
2109
+ .input-area {
2110
+ flex: 0 0 auto;
2111
+ padding: 0;
2112
+ background: transparent;
2113
+ border: 0;
2114
+ box-shadow: none;
2115
+ pointer-events: auto;
2116
+ }
2117
+
2118
+ .smart-context-bar {
2119
+ height: 24px;
2120
+ padding: 0 10px 0 14px;
2121
+ margin: 0;
2122
+ background: var(--input-bg);
2123
+ border: 1px solid var(--border);
2124
+ border-bottom: 0;
2125
+ border-radius: 14px 14px 0 0;
2126
+ }
2127
+
2128
+ .smart-context-label {
2129
+ color: var(--text-soft);
2130
+ font-size: 0.76rem;
2131
+ font-weight: 400;
2132
+ }
2133
+
2134
+ .smart-context-label span {
2135
+ color: var(--text-muted);
2136
+ font-size: 0.68rem;
2137
+ }
2138
+
2139
+ .toggle-switch {
2140
+ width: 32px;
2141
+ height: 18px;
2142
+ }
2143
+
2144
+ .slider {
2145
+ background-color: var(--surface-strong);
2146
+ }
2147
+
2148
+ .slider:before {
2149
+ height: 14px;
2150
+ width: 14px;
2151
+ left: 2px;
2152
+ bottom: 2px;
2153
+ }
2154
+
2155
+ input:checked + .slider:before {
2156
+ transform: translateX(14px);
2157
+ }
2158
+
2159
+ #chat-form {
2160
+ min-height: 76px;
2161
+ display: grid;
2162
+ grid-template-columns: 36px minmax(0, 1fr) 36px 36px;
2163
+ grid-template-rows: minmax(28px, auto) 36px;
2164
+ align-items: end;
2165
+ gap: 8px;
2166
+ padding: 12px;
2167
+ background: var(--input-bg);
2168
+ border: 1px solid var(--border);
2169
+ border-radius: 14px;
2170
+ box-shadow: none;
2171
+ backdrop-filter: var(--glass-blur);
2172
+ -webkit-backdrop-filter: var(--glass-blur);
2173
+ }
2174
+
2175
+ .smart-context-bar + #chat-form {
2176
+ border-top-left-radius: 0;
2177
+ border-top-right-radius: 0;
2178
+ }
2179
+
2180
+ #chat-form:focus-within {
2181
+ border-color: rgba(255, 255, 255, 0.16);
2182
+ box-shadow: none;
2183
+ transform: none;
2184
+ }
2185
+
2186
+ #chat-input {
2187
+ grid-column: 1 / -1;
2188
+ grid-row: 1;
2189
+ align-self: start;
2190
+ padding: 8px 0;
2191
+ color: var(--text-main);
2192
+ font-size: 0.88rem;
2193
+ }
2194
+
2195
+ #chat-input::placeholder {
2196
+ color: var(--placeholder);
2197
+ opacity: 1;
2198
+ }
2199
+
2200
+ #send-btn,
2201
+ #mic-btn,
2202
+ #vision-btn {
2203
+ width: 36px;
2204
+ height: 36px;
2205
+ border-radius: 18px;
2206
+ background: var(--surface-strong);
2207
+ color: var(--text-soft);
2208
+ }
2209
+
2210
+ #vision-btn {
2211
+ grid-column: 1;
2212
+ grid-row: 2;
2213
+ }
2214
+
2215
+ .chat-provider-select {
2216
+ grid-column: 2;
2217
+ grid-row: 2;
2218
+ min-width: 0;
2219
+ width: fit-content;
2220
+ max-width: 100%;
2221
+ height: 36px;
2222
+ padding: 0 24px 0 6px;
2223
+ background: transparent;
2224
+ border: 0;
2225
+ border-radius: 8px;
2226
+ color: var(--text-soft);
2227
+ cursor: pointer;
2228
+ font-family: inherit;
2229
+ font-size: 0.78rem;
2230
+ outline: none;
2231
+ overflow: hidden;
2232
+ text-overflow: ellipsis;
2233
+ white-space: nowrap;
2234
+ -webkit-app-region: no-drag;
2235
+ }
2236
+
2237
+ .chat-provider-select:hover,
2238
+ .chat-provider-select:focus {
2239
+ background: var(--surface-strong);
2240
+ color: var(--text-main);
2241
+ }
2242
+
2243
+ .chat-provider-select:disabled {
2244
+ cursor: wait;
2245
+ opacity: 0.65;
2246
+ }
2247
+
2248
+ #mic-btn {
2249
+ grid-column: 3;
2250
+ grid-row: 2;
2251
+ }
2252
+
2253
+ #send-btn {
2254
+ grid-column: 4;
2255
+ grid-row: 2;
2256
+ }
2257
+
2258
+ #send-btn {
2259
+ background: linear-gradient(135deg, var(--accent), var(--accent-hover));
2260
+ color: white;
2261
+ box-shadow: 0 8px 18px color-mix(in srgb, var(--accent) 28%, transparent);
2262
+ }
2263
+
2264
+ #send-btn:hover,
2265
+ #mic-btn:hover,
2266
+ #vision-btn:hover {
2267
+ background: var(--panel-raised);
2268
+ transform: none;
2269
+ }
2270
+
2271
+ #send-btn:hover {
2272
+ background: var(--accent-hover);
2273
+ }
2274
+
2275
+ #vision-btn {
2276
+ border: 1px solid rgba(255, 255, 255, 0.08);
2277
+ }
2278
+
2279
+ .toggle-model-btn:hover,
2280
+ .toggle-model-btn.active,
2281
+ .change-expression-btn:hover,
2282
+ .accessory-cycle-btn:hover,
2283
+ .accessory-cycle-btn.active,
2284
+ .toggle-interaction-btn:hover,
2285
+ .toggle-interaction-btn.active,
2286
+ .interaction-guide-btn:hover,
2287
+ .interaction-guide-btn.active,
2288
+ .clear-btn:hover,
2289
+ .settings-btn:hover,
2290
+ .minimize-btn:hover,
2291
+ .maximize-btn:hover {
2292
+ background: var(--surface-strong);
2293
+ border-color: transparent;
2294
+ color: var(--text-main);
2295
+ }
2296
+
2297
+ .toggle-interaction-btn:not(.active) {
2298
+ color: #ff7b7b;
2299
+ }
2300
+
2301
+ .close-btn:hover {
2302
+ background: #3a2020;
2303
+ color: #ff8a8a;
2304
+ }
2305
+
2306
+ @media (max-width: 760px) {
2307
+ .drag-region {
2308
+ grid-template-columns: auto 1fr auto;
2309
+ gap: 8px;
2310
+ padding: 9px 10px 9px 12px;
2311
+ }
2312
+
2313
+ .header-content h1 {
2314
+ display: none;
2315
+ }
2316
+
2317
+ .header-actions {
2318
+ justify-content: flex-start;
2319
+ overflow: hidden;
2320
+ }
2321
+
2322
+ .header-utility {
2323
+ display: none;
2324
+ }
2325
+
2326
+ .toggle-model-btn,
2327
+ .change-expression-btn,
2328
+ .accessory-cycle-btn,
2329
+ .toggle-interaction-btn,
2330
+ .interaction-guide-btn {
2331
+ width: 34px;
2332
+ padding: 0;
2333
+ }
2334
+
2335
+ .toggle-model-btn span,
2336
+ .change-expression-btn span,
2337
+ .accessory-cycle-btn span,
2338
+ .toggle-interaction-btn span,
2339
+ .interaction-guide-btn span {
2340
+ display: none;
2341
+ }
1135
2342
 
1136
2343
  .assistant-workspace {
2344
+ display: flex;
2345
+ margin-left: 0;
1137
2346
  padding: 12px;
1138
2347
  gap: 12px;
1139
2348
  }
1140
2349
 
2350
+ .assistant-workspace.layout-chat {
2351
+ grid-template-columns: none;
2352
+ }
2353
+
2354
+ .app-body {
2355
+ grid-template-columns: 1fr;
2356
+ }
2357
+
2358
+ .sidebar-toggle {
2359
+ display: none;
2360
+ }
2361
+
2362
+ .workspace-sidebar {
2363
+ display: none;
2364
+ }
2365
+
1141
2366
  .model-stage {
1142
2367
  display: none;
1143
2368
  }
1144
2369
 
1145
2370
  .conversation-panel {
2371
+ position: static;
2372
+ width: 100%;
2373
+ max-height: none;
2374
+ transform: none;
1146
2375
  flex: 1;
1147
2376
  min-width: 0;
1148
2377
  }
2378
+
2379
+ .chat-container {
2380
+ max-height: none;
2381
+ }
1149
2382
  }