@oldsuns/pi-switch 0.3.2 → 0.3.5

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.
@@ -0,0 +1,764 @@
1
+ /* Catppuccin themes share semantic colors across pages, controls, and states. */
2
+ :root {
3
+ color-scheme: dark;
4
+ --crust: #11111b;
5
+ --mantle: #181825;
6
+ --base: #1e1e2e;
7
+ --surface: #242436;
8
+ --surface0: #313244;
9
+ --surface1: #45475a;
10
+ --surface2: #585b70;
11
+ --overlay: #7f849c;
12
+ --muted: #a6adc8;
13
+ --subtext: #bac2de;
14
+ --text: #cdd6f4;
15
+ --mauve: #cba6f7;
16
+ --blue: #89b4fa;
17
+ --green: #a6e3a1;
18
+ --yellow: #f9e2af;
19
+ --red: #f38ba8;
20
+ --peach: #fab387;
21
+ --teal: #94e2d5;
22
+ --pink: #f5c2e7;
23
+ --accent-wash: #cba6f712;
24
+ --accent-border: #cba6f738;
25
+ --accent-foreground: var(--mauve);
26
+ --accent-hover: #dbc1fa;
27
+ --on-accent: var(--base);
28
+ --link: var(--blue);
29
+ --success-foreground: var(--green);
30
+ --success-wash: #a6e3a10c;
31
+ --success-border: #a6e3a126;
32
+ --warning-foreground: var(--yellow);
33
+ --warning-wash: #f9e2af12;
34
+ --warning-border: #f9e2af30;
35
+ --danger-foreground: var(--red);
36
+ --danger-wash: #f38ba812;
37
+ --danger-hover: #f38ba826;
38
+ --danger-border: #f38ba840;
39
+ --info-foreground: var(--blue);
40
+ --info-wash: #89b4fa12;
41
+ --info-border: #89b4fa26;
42
+ --peach-foreground: var(--peach);
43
+ --peach-wash: #fab38714;
44
+ --teal-foreground: var(--teal);
45
+ --teal-wash: #94e2d514;
46
+ --pink-foreground: var(--pink);
47
+ --pink-wash: #f5c2e714;
48
+ --hover: #31324488;
49
+ --inset: #18182566;
50
+ --preview-surface: #18182533;
51
+ --selection: #cba6f738;
52
+ --border: #36364b;
53
+ --control-border: var(--surface1);
54
+ --control-hover-border: var(--surface2);
55
+ --switch-track: var(--surface1);
56
+ --switch-thumb: var(--muted);
57
+ --scrim: #11111ba8;
58
+ --modal-scrim: #11111bbd;
59
+ --shadow-small: 0 1px 3px #00000020;
60
+ --shadow-dialog: 0 24px 100px #00000055;
61
+ --shadow-toast: 0 8px 35px #00000035;
62
+ --font: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "Microsoft YaHei UI", sans-serif;
63
+ --mono: "JetBrains Mono", "Cascadia Code", "SFMono-Regular", Consolas, monospace;
64
+ font-family: var(--font);
65
+ font-size: 14px;
66
+ line-height: 1.5;
67
+ font-synthesis: none;
68
+ }
69
+ :root[data-theme="light"] {
70
+ color-scheme: light;
71
+ --crust: #dce0e8;
72
+ --mantle: #e6e9ef;
73
+ --base: #eff1f5;
74
+ --surface: #f8f9fc;
75
+ --surface0: #dce0e8;
76
+ --surface1: #bcc0cc;
77
+ --surface2: #acb0be;
78
+ --overlay: #6c6f85;
79
+ --muted: #5c5f77;
80
+ --subtext: #5c5f77;
81
+ --text: #4c4f69;
82
+ --mauve: #8839ef;
83
+ --blue: #1e66f5;
84
+ --green: #40a02b;
85
+ --yellow: #df8e1d;
86
+ --red: #d20f39;
87
+ --peach: #fe640b;
88
+ --teal: #179299;
89
+ --pink: #ea76cb;
90
+ --accent-wash: #ece4f8;
91
+ --accent-border: #bea1e6;
92
+ /* Foreground tones retain the palette hue with contrast for small text. */
93
+ --accent-foreground: #7128d2;
94
+ --accent-hover: #7522db;
95
+ --on-accent: #ffffff;
96
+ --link: #1957ce;
97
+ --success-foreground: #246b19;
98
+ --success-wash: #e3eedf;
99
+ --success-border: #a6c69c;
100
+ --warning-foreground: #80500c;
101
+ --warning-wash: #f5ead5;
102
+ --warning-border: #d8bd8c;
103
+ --danger-foreground: #b61035;
104
+ --danger-wash: #f7e2e8;
105
+ --danger-hover: #f0ced8;
106
+ --danger-border: #dba1b0;
107
+ --info-foreground: #1957ce;
108
+ --info-wash: #e1eafa;
109
+ --info-border: #a4bceb;
110
+ --peach-foreground: #a33f03;
111
+ --peach-wash: #f9e6d9;
112
+ --teal-foreground: #0e656a;
113
+ --teal-wash: #ddefef;
114
+ --pink-foreground: #9d3b86;
115
+ --pink-wash: #f4e1ef;
116
+ --hover: #e5e9f1;
117
+ --inset: #e9ecf2;
118
+ --preview-surface: #edf0f6;
119
+ --selection: #d9c5f5;
120
+ --border: #cdd2de;
121
+ --control-border: #7c7f93;
122
+ --control-hover-border: #5c5f77;
123
+ --switch-track: #7c7f93;
124
+ --switch-thumb: #ffffff;
125
+ --scrim: #4c4f6980;
126
+ --modal-scrim: #4c4f6980;
127
+ --shadow-small: 0 1px 3px #4c4f691a;
128
+ --shadow-dialog: 0 24px 80px #4c4f693d;
129
+ --shadow-toast: 0 8px 30px #4c4f6926;
130
+ }
131
+ * { box-sizing: border-box; }
132
+ [hidden] { display: none !important; }
133
+ body { margin: 0; color: var(--text); background: var(--base); }
134
+ button, input, select, textarea { font: inherit; color: inherit; }
135
+ button, a, summary, select, input[type="checkbox"], input[type="radio"] { -webkit-tap-highlight-color: transparent; }
136
+ button, summary, select { cursor: pointer; }
137
+ button { border: 0; }
138
+ button, a, input, select, textarea, summary { transition: background-color 160ms, color 160ms, border-color 160ms, box-shadow 160ms; }
139
+ a { color: var(--link); text-decoration: none; }
140
+ a:hover { color: var(--accent-foreground); }
141
+ button:disabled, input:disabled, select:disabled { opacity: .48; cursor: not-allowed; }
142
+ :focus-visible { outline: 2px solid var(--mauve); outline-offset: 3px; }
143
+ input:focus-visible, select:focus-visible, textarea:focus-visible { outline-offset: 1px; }
144
+ input, select, textarea { min-width: 0; }
145
+ select {
146
+ --select-arrow: var(--muted);
147
+ appearance: none;
148
+ max-width: 100%;
149
+ min-height: 40px;
150
+ padding: 9px 28px 9px 10px;
151
+ border: 1px solid color-mix(in srgb, var(--control-border) 55%, var(--mauve));
152
+ border-radius: 8px;
153
+ background-color: color-mix(in srgb, var(--surface) 97%, var(--mauve));
154
+ background-image: linear-gradient(45deg, transparent 40%, var(--select-arrow) 40% 60%, transparent 60%), linear-gradient(135deg, transparent 40%, var(--select-arrow) 40% 60%, transparent 60%);
155
+ background-position: calc(100% - 16px) center, calc(100% - 12px) center;
156
+ background-size: 5px 5px;
157
+ background-repeat: no-repeat;
158
+ color: var(--text);
159
+ font-size: 12px;
160
+ font-weight: 500;
161
+ text-overflow: ellipsis;
162
+ box-shadow: var(--shadow-small);
163
+ }
164
+ select:not(:disabled):hover { --select-arrow: var(--accent-foreground); border-color: var(--mauve); background-color: var(--accent-wash); }
165
+ select:focus-visible { --select-arrow: var(--accent-foreground); border-color: var(--mauve); outline: 2px solid var(--mauve); outline-offset: 2px; box-shadow: 0 0 0 4px var(--accent-wash); }
166
+ select option, select optgroup { color: var(--text); background: var(--surface); }
167
+ @supports (appearance: base-select) and selector(::picker(select)) {
168
+ select, select::picker(select) { appearance: base-select; }
169
+ select { align-items: center; background-image: none; padding-inline-end: 10px; gap: 10px; }
170
+ select::picker-icon { content: ""; flex-shrink: 0; width: 6px; height: 6px; margin-inline-start: auto; border-right: 1.5px solid var(--select-arrow); border-bottom: 1.5px solid var(--select-arrow); transform: translateY(-2px) rotate(45deg); transition: transform 160ms; }
171
+ select:open { --select-arrow: var(--accent-foreground); border-color: var(--mauve); background-color: var(--accent-wash); }
172
+ select:open::picker-icon { transform: translateY(2px) rotate(225deg); }
173
+ select::picker(select) { min-inline-size: max(anchor-size(self-inline), 140px); max-inline-size: calc(100vw - 24px); max-block-size: min(320px, 60dvh); margin-block: 6px; padding: 5px; border: 1px solid var(--accent-border); border-radius: 10px; background: var(--surface); color: var(--text); box-shadow: var(--shadow-toast); overflow: auto; overscroll-behavior: contain; scrollbar-width: thin; }
174
+ select option { display: flex; align-items: center; gap: 12px; min-block-size: 36px; padding: 8px 10px; border-radius: 6px; background: transparent; font-size: 12px; font-weight: 400; line-height: 1.5; white-space: normal; overflow-wrap: anywhere; }
175
+ select option:not(:disabled):hover, select option:focus-visible { background: var(--hover); }
176
+ select option:focus-visible { outline: 2px solid var(--mauve); outline-offset: -2px; }
177
+ select option:checked { color: var(--accent-foreground); background: var(--accent-wash); font-weight: 550; }
178
+ select option::checkmark { order: 1; flex-shrink: 0; margin-inline-start: auto; color: var(--accent-foreground); }
179
+ select option:disabled { color: var(--muted); opacity: .5; }
180
+ }
181
+ @media (forced-colors: active) {
182
+ select { appearance: auto; background-image: none; box-shadow: none; }
183
+ select::picker(select) { appearance: auto; }
184
+ }
185
+ input[type="checkbox"] { width: 18px; height: 18px; accent-color: var(--mauve); flex-shrink: 0; }
186
+ input[type="search"]::-webkit-search-cancel-button { cursor: pointer; }
187
+ ::selection { background: var(--selection); color: var(--text); }
188
+ ::-webkit-scrollbar { width: 7px; height: 7px; }
189
+ ::-webkit-scrollbar-thumb { border-radius: 8px; background: var(--surface1); }
190
+ ::-webkit-scrollbar-track { background: transparent; }
191
+ h1, h2, h3, p { margin: 0; }
192
+ h1 { font-size: 28px; font-weight: 650; letter-spacing: -.8px; line-height: 1.35; }
193
+ h2 { font-size: 16px; font-weight: 600; letter-spacing: -.2px; }
194
+ h3 { font-size: 14px; font-weight: 600; }
195
+ code, kbd, .mono { font-family: var(--mono); }
196
+ code { font-size: .9em; }
197
+ kbd { display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 22px; padding: 0 5px; border: 1px solid var(--surface1); border-radius: 5px; color: var(--muted); background: var(--mantle); font-size: 11px; line-height: 1; }
198
+ .icon { flex-shrink: 0; vertical-align: middle; }
199
+ .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
200
+ .skip-link { position: fixed; left: 16px; top: -80px; z-index: 100; padding: 12px 20px; border-radius: 8px; background: var(--mauve); color: var(--on-accent); }
201
+ .skip-link:focus { top: 12px; }
202
+ .app-shell { display: grid; grid-template-columns: 224px minmax(0, 1fr); grid-template-rows: 68px minmax(0, 1fr) 30px; height: 100dvh; min-height: 360px; }
203
+ .sidebar { grid-column: 1; grid-row: 1 / 3; display: flex; flex-direction: column; min-width: 0; background: var(--mantle); border-right: 1px solid var(--border); padding: 29px 16px 16px; z-index: 30; }
204
+ .brand { display: flex; align-items: center; gap: 10px; min-width: 0; min-height: 48px; padding: 8px 12px; color: var(--text); border-radius: 10px; margin-bottom: 24px; transition: background 160ms; }
205
+ .brand:hover { background: var(--surface); }
206
+ .brand-mark { display: inline-flex; justify-content: center; align-items: center; flex-shrink: 0; width: 34px; height: 34px; border-radius: 9px; font-family: Georgia, serif; font-size: 27px; font-weight: 700; line-height: 1; color: var(--on-accent); background: var(--mauve); padding-bottom: 2px; }
207
+ .brand .brand-mark { width: 32px; height: 32px; font-size: 25px; }
208
+ .brand-name { display: block; font: 600 20px/1 var(--mono); letter-spacing: -.6px; white-space: nowrap; }
209
+ .nav-label { margin: 0 14px 11px; color: var(--muted); font-family: var(--mono); font-size: 10px; letter-spacing: 1.8px; font-weight: 500; }
210
+ .nav-links { display: grid; gap: 6px; }
211
+ .nav-link { display: flex; align-items: center; gap: 12px; min-height: 46px; padding: 10px 13px; border-radius: 7px; color: var(--muted); border: 1px solid transparent; font-weight: 500; }
212
+ .nav-link .icon { width: 19px; height: 19px; }
213
+ .nav-link:hover { background: var(--surface); color: var(--text); }
214
+ .nav-link.active { color: var(--accent-foreground); background: var(--accent-wash); border-color: var(--accent-border); }
215
+ .nav-link.active::before { position: absolute; left: 0; content: ""; width: 3px; height: 21px; background: var(--mauve); border-radius: 0 3px 3px 0; }
216
+ .nav-link .nav-index { margin-left: auto; font-family: var(--mono); font-size: 10px; color: var(--muted); }
217
+ .sidebar-bottom { margin-top: auto; padding-top: 28px; }
218
+ .local-card { border: 1px solid var(--border); border-radius: 9px; padding: 13px; margin-bottom: 15px; background: var(--base); }
219
+ .local-card-heading { display: flex; align-items: center; gap: 9px; font-size: 12px; font-weight: 550; }
220
+ .local-card-heading .icon { color: var(--mauve); width: 18px; }
221
+ .local-card code { display: block; color: var(--muted); font-size: 10px; margin-top: 8px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
222
+ .sidebar-footer { display: flex; justify-content: space-between; align-items: center; padding: 0 4px 0 10px; }
223
+ .version { color: var(--muted); font: 11px var(--mono); }
224
+ .topbar { grid-column: 2; display: flex; justify-content: space-between; align-items: center; min-width: 0; padding: 0 34px; border-bottom: 1px solid var(--border); background: var(--base); gap: 16px; }
225
+ .breadcrumb { display: flex; align-items: center; gap: 13px; color: var(--muted); font-size: 12px; white-space: nowrap; }
226
+ .breadcrumb .icon { width: 16px; height: 16px; color: var(--overlay); }
227
+ .breadcrumb .separator { color: var(--surface2); }
228
+ .breadcrumb strong { color: var(--text); font-weight: 500; }
229
+ .topbar-actions { display: flex; align-items: center; gap: 11px; }
230
+ .connection { display: flex; align-items: center; gap: 7px; color: var(--muted); font-size: 11px; white-space: nowrap; }
231
+ .status-dot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--success-foreground); flex-shrink: 0; }
232
+ .status-dot.off { background: var(--overlay); }
233
+ .topbar-divider { height: 19px; width: 1px; background: var(--border); margin: 0 4px; }
234
+ .workspace { grid-column: 2; grid-row: 2; overflow: auto; padding: 32px 34px 34px; outline: none; }
235
+ .page { max-width: 1440px; margin: 0 auto; }
236
+ .page-header { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-bottom: 28px; }
237
+ .page-header.compact { gap: 12px; margin-bottom: 16px; }
238
+ .page-header p { font-size: 13px; color: var(--muted); margin-top: 7px; line-height: 1.7; }
239
+ .header-actions, .inline-actions { display: flex; align-items: center; gap: 9px; flex-shrink: 0; }
240
+ .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 40px; padding: 9px 15px; border: 1px solid var(--control-border); border-radius: 7px; background: var(--surface); color: var(--text); font-size: 12px; font-weight: 550; white-space: nowrap; }
241
+ .btn .icon { width: 16px; height: 16px; }
242
+ .btn:hover { background: var(--hover); border-color: var(--control-hover-border); color: var(--text); }
243
+ .btn.primary { color: var(--on-accent); background: var(--mauve); border-color: var(--mauve); }
244
+ .btn.primary:hover { background: var(--accent-hover); border-color: var(--accent-hover); }
245
+ .btn.danger { color: var(--danger-foreground); background: var(--danger-wash); border-color: var(--danger-border); }
246
+ .btn.danger:hover { background: var(--danger-hover); }
247
+ .btn.quiet { border-color: transparent; background: transparent; color: var(--muted); }
248
+ .btn.quiet:hover { color: var(--text); background: var(--surface0); }
249
+ .btn.small { min-height: 34px; font-size: 11px; padding: 6px 10px; }
250
+ .text-button { display: inline-flex; align-items: center; gap: 7px; min-height: 36px; background: none; color: var(--accent-foreground); font-size: 12px; padding: 4px 0; }
251
+ .text-button:hover { color: var(--text); }
252
+ .text-button .icon { width: 15px; height: 15px; }
253
+ .icon-button { display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; padding: 9px; flex-shrink: 0; border-radius: 6px; background: transparent; color: var(--muted); }
254
+ .icon-button:hover { background: var(--surface0); color: var(--text); }
255
+ .icon-button.danger:hover { color: var(--danger-foreground); background: var(--danger-wash); }
256
+ .icon-button .icon { width: 17px; height: 17px; }
257
+ .icon-button.active { color: var(--warning-foreground); }
258
+ .icon-button.active .icon { fill: var(--warning-wash); }
259
+ .mobile-menu { display: none; }
260
+ .statusbar { grid-column: 1 / 3; grid-row: 3; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 0 18px; background: var(--mantle); border-top: 1px solid var(--border); color: var(--muted); font-size: 10px; overflow: hidden; }
261
+ .statusbar-left, .statusbar-right { display: flex; align-items: center; gap: 8px; min-width: 0; white-space: nowrap; }
262
+ .statusbar-left .icon { width: 12px; height: 12px; color: var(--success-foreground); }
263
+ .statusbar-right { flex-shrink: 0; gap: 6px; }
264
+ .statusbar-right .icon { width: 13px; height: 13px; color: var(--accent-foreground); }
265
+ .statusbar code { font-size: 9px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; margin-left: 12px; }
266
+ .stats-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin-bottom: 24px; }
267
+ .stat-card { padding: 19px 20px; border-radius: 9px; border: 1px solid var(--border); background: var(--surface); }
268
+ .stat-heading { display: flex; justify-content: space-between; align-items: center; color: var(--muted); font-size: 12px; }
269
+ .stat-heading .icon { width: 18px; height: 18px; color: var(--overlay); }
270
+ .stat-value { font: 32px/1.3 var(--mono); letter-spacing: -1px; margin: 13px 0 8px; }
271
+ .stat-value span { font-size: 14px; color: var(--muted); letter-spacing: 0; margin-left: 5px; }
272
+ .stat-note { color: var(--muted); font-size: 11px; display: flex; align-items: center; gap: 6px; }
273
+ .stat-note .icon { height: 13px; width: 13px; }
274
+ .green { color: var(--success-foreground); }
275
+ .mauve { color: var(--accent-foreground); }
276
+ .blue { color: var(--info-foreground); }
277
+ .peach { color: var(--peach-foreground); }
278
+ .teal { color: var(--teal-foreground); }
279
+ .pink { color: var(--pink-foreground); }
280
+ .muted { color: var(--muted); }
281
+ .red { color: var(--danger-foreground); }
282
+ .overview-grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(300px, 1fr); gap: 22px; }
283
+ .panel { border: 1px solid var(--border); background: var(--surface); border-radius: 9px; min-width: 0; overflow: hidden; }
284
+ .panel-header { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 17px 20px; border-bottom: 1px solid var(--border); }
285
+ .panel-header h2 { font-size: 13px; display: flex; gap: 9px; align-items: center; }
286
+ .panel-header h2 .icon { width: 16px; height: 16px; color: var(--muted); }
287
+ .panel-header .count { color: var(--muted); font: 11px var(--mono); font-weight: 400; }
288
+ .panel-body { padding: 22px; }
289
+ .default-card { display: flex; flex-direction: column; align-self: start; }
290
+ .default-card .panel-header { border-bottom: none; padding-bottom: 0; }
291
+ .default-content { padding: 16px 20px 18px; }
292
+ .default-provider { color: var(--accent-foreground); font: 11px var(--mono); margin-bottom: 4px; overflow-wrap: anywhere; }
293
+ .default-name { font-size: 25px; font-weight: 550; letter-spacing: -.6px; overflow-wrap: anywhere; }
294
+ .default-id { color: var(--muted); font: 11px/1.6 var(--mono); margin-top: 4px; overflow-wrap: anywhere; }
295
+ .model-facts { display: flex; gap: 10px 18px; flex-wrap: wrap; margin-top: 14px; }
296
+ .model-fact { display: flex; align-items: center; gap: 8px; color: var(--subtext); font-size: 11px; }
297
+ .model-fact .icon { width: 15px; height: 15px; color: var(--muted); }
298
+ .default-bottom { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 10px 16px; border-top: 1px solid var(--border); padding: 12px 20px; }
299
+ .default-selector { display: grid; flex: 1 1 220px; gap: 6px; min-width: 0; }
300
+ .default-selector > span { color: var(--muted); font-size: 11px; font-weight: 500; }
301
+ .default-selector select { width: 100%; min-height: 44px; }
302
+ .default-bottom > .text-button { flex-shrink: 0; min-height: 44px; white-space: nowrap; }
303
+ .default-empty { padding: 16px 20px 18px; }
304
+ .default-empty h3 { font-size: 16px; line-height: 1.5; }
305
+ .default-empty p { color: var(--muted); font-size: 12px; line-height: 1.8; margin-top: 8px; max-width: 42ch; }
306
+ .badge { display: inline-flex; align-items: center; gap: 5px; padding: 3px 8px; border-radius: 5px; color: var(--muted); background: var(--surface0); font-size: 10px; white-space: nowrap; line-height: 1.5; }
307
+ .badge .icon { height: 12px; width: 12px; }
308
+ .badge.success { background: var(--success-wash); color: var(--success-foreground); border: 1px solid var(--success-border); }
309
+ .badge.accent { color: var(--accent-foreground); background: var(--accent-wash); }
310
+ .badge.warning { color: var(--warning-foreground); background: var(--warning-wash); }
311
+ .recent-card { align-self: start; }
312
+ .recent-session { display: grid; grid-template-columns: 34px minmax(0, 1fr) 16px; align-items: center; gap: 11px; min-height: 68px; padding: 10px 20px; color: var(--text); border-bottom: 1px solid var(--border); }
313
+ .recent-session:last-child { border-bottom: none; }
314
+ .recent-session:hover { color: var(--text); background: var(--hover); }
315
+ .recent-session:active { background: var(--accent-wash); }
316
+ .recent-session:focus-visible { outline-offset: -3px; }
317
+ .recent-session-icon { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 8px; color: var(--info-foreground); background: var(--info-wash); }
318
+ .recent-session-icon .icon { width: 17px; height: 17px; }
319
+ .recent-session-content { display: grid; gap: 6px; min-width: 0; }
320
+ .recent-session-content .item-title { display: block; }
321
+ .recent-session-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; min-width: 0; color: var(--muted); font-size: 10px; }
322
+ .recent-session-meta > span { min-width: 0; white-space: nowrap; }
323
+ .recent-workspace { display: inline-block; max-width: min(100%, 160px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle; }
324
+ .recent-workspace .icon { width: 12px; height: 12px; margin-right: 4px; vertical-align: -2px; }
325
+ .recent-session > .icon:last-child { width: 16px; height: 16px; color: var(--overlay); }
326
+ .provider-summary { display: grid; grid-template-columns: 38px minmax(0, 1fr) auto auto; align-items: center; gap: 12px; min-height: 70px; padding: 10px 20px; border-bottom: 1px solid var(--border); }
327
+ .provider-summary:last-child { border-bottom: none; }
328
+ .avatar { display: inline-flex; justify-content: center; align-items: center; width: 35px; height: 35px; border-radius: 8px; background: var(--surface0); color: var(--accent-foreground); font: 12px var(--mono); font-weight: 600; flex-shrink: 0; }
329
+ .avatar.mauve { background: var(--accent-wash); color: var(--accent-foreground); }
330
+ .avatar.blue { background: var(--info-wash); color: var(--info-foreground); }
331
+ .avatar.peach { background: var(--peach-wash); color: var(--peach-foreground); }
332
+ .avatar.teal { background: var(--teal-wash); color: var(--teal-foreground); }
333
+ .avatar.pink { background: var(--pink-wash); color: var(--pink-foreground); }
334
+ .item-title { color: var(--text); font-size: 12px; font-weight: 550; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
335
+ .item-subtitle { margin-top: 3px; color: var(--muted); font: 10px var(--mono); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
336
+ .quick-actions { display: grid; }
337
+ .quick-action { display: flex; width: 100%; align-items: center; gap: 13px; text-align: left; padding: 17px 20px; background: none; border-bottom: 1px solid var(--border); }
338
+ .quick-action:last-child { border-bottom: none; }
339
+ .quick-action:hover { background: var(--surface0); }
340
+ .quick-action > .icon:first-child { color: var(--muted); width: 18px; }
341
+ .quick-action > .icon:last-child { color: var(--overlay); width: 15px; margin-left: auto; }
342
+ .quick-action p { margin-top: 4px; color: var(--muted); font-size: 11px; }
343
+ .section-gap { margin-top: 22px; }
344
+ .profiles-layout { display: grid; grid-template-columns: 276px minmax(0, 1fr); gap: 20px; align-items: start; }
345
+ .provider-panel { padding-bottom: 8px; }
346
+ .provider-panel .panel-header, .session-sidebar .panel-header { padding-block: 10px; }
347
+ .provider-panel .panel-header { padding-inline: 16px; }
348
+ .provider-panel .panel-header h2 { font-size: 11px; font-family: var(--mono); font-weight: 500; letter-spacing: .6px; }
349
+ .provider-filters { padding: 8px 12px; border-bottom: 1px solid var(--border); }
350
+ .search-box { display: flex; align-items: center; gap: 8px; min-width: 0; min-height: 37px; border: 1px solid var(--control-border); border-radius: 6px; padding: 0 10px; background: var(--mantle); }
351
+ .search-box:focus-within { border-color: var(--mauve); }
352
+ .search-box .icon { color: var(--overlay); width: 15px; height: 15px; }
353
+ .search-box input { padding: 9px 0; width: 100%; border: none; background: transparent; color: var(--text); font-size: 11px; outline: none; }
354
+ .search-box input::placeholder { color: var(--muted); opacity: 1; }
355
+ .search-box kbd { min-width: 17px; height: 18px; font-size: 10px; border-color: var(--border); }
356
+ .segments { display: flex; gap: 3px; padding: 3px; background: var(--mantle); border: 1px solid var(--border); border-radius: 7px; width: fit-content; }
357
+ .segments button { flex: 1; min-height: 31px; padding: 6px 12px; border-radius: 4px; background: transparent; color: var(--muted); font-size: 11px; white-space: nowrap; }
358
+ .segments button:hover { color: var(--text); background: var(--surface); }
359
+ .segments button[aria-pressed="true"] { background: var(--surface0); color: var(--text); box-shadow: var(--shadow-small); }
360
+ .segments button .icon { width: 14px; height: 14px; margin-right: 5px; }
361
+ .list-search { padding: 10px 12px; border-bottom: 1px solid var(--border); }
362
+ .models-panel .list-search { padding-inline: 18px; }
363
+ .search-toggle[aria-expanded="true"] { color: var(--accent-foreground); background: var(--accent-wash); }
364
+ .profile-filter-row { display: flex; align-items: center; gap: 8px; }
365
+ .profile-filter { flex: 0 0 100px; min-width: 0; }
366
+ .profile-filter-row .profile-sort { flex: 1; }
367
+ .profile-sort { display: flex; align-items: center; gap: 8px; min-width: 0; color: var(--muted); font-size: 11px; }
368
+ .profile-sort > span { flex-shrink: 0; }
369
+ .profile-sort select, .profile-filter select { min-height: 34px; padding-block: 6px; font-size: 11px; }
370
+ .profile-filter select { width: 100%; }
371
+ .profile-filter select:has(option:checked:not([value="all"])) { --select-arrow: var(--accent-foreground); color: var(--accent-foreground); background-color: var(--accent-wash); }
372
+ .provider-filters .profile-sort select { flex: 1; }
373
+ .provider-row { display: flex; align-items: center; gap: 2px; min-width: 0; border: 1px solid transparent; border-radius: 7px; }
374
+ .provider-row:hover { background: var(--hover); }
375
+ .provider-row:has(> .provider-option[aria-current="true"]) { background: var(--accent-wash); border-color: var(--accent-border); }
376
+ .provider-row > .provider-option { flex: 1; }
377
+ .provider-list { position: relative; padding: 7px; display: grid; gap: 5px; max-height: 610px; overflow: auto; }
378
+ .provider-option { display: flex; width: 100%; align-items: center; gap: 10px; min-width: 0; min-height: 44px; text-align: left; padding: 10px; background: transparent; border-radius: 7px; }
379
+ .provider-option[aria-current="true"] .item-title { color: var(--accent-foreground); }
380
+ .provider-option .item-title { flex: 1; min-width: 0; font-size: 12px; }
381
+ .provider-option .icon { color: var(--warning-foreground); height: 13px; width: 13px; }
382
+ .provider-sync-button { width: 32px; height: 32px; margin-left: 6px; padding: 6px; border: 1px solid var(--control-border); background: var(--surface); }
383
+ .provider-sync-button:not(:disabled):hover { color: var(--accent-foreground); background: var(--accent-wash); border-color: var(--mauve); }
384
+ .provider-sync-button[aria-pressed="true"] { color: var(--success-foreground); background: var(--success-wash); border-color: var(--success-border); }
385
+ .provider-sync-button[aria-pressed="true"]:not(:disabled):hover { color: var(--success-foreground); background: var(--success-wash); border-color: var(--success-foreground); }
386
+ .provider-count { font: 10px var(--mono); color: var(--muted); }
387
+ .provider-detail { min-width: 0; }
388
+ .provider-info { padding: 22px 23px 18px; }
389
+ .provider-title-row { display: flex; align-items: center; gap: 12px; }
390
+ .provider-title-row .avatar { width: 42px; height: 42px; font-size: 15px; border-radius: 10px; }
391
+ .provider-title-row h2 { font-family: var(--mono); font-size: 20px; letter-spacing: -.7px; overflow-wrap: anywhere; }
392
+ .provider-title-row > .inline-actions { margin-left: auto; flex-wrap: wrap; max-width: 100%; }
393
+ .provider-title-label { display: flex; gap: 8px; align-items: center; margin-top: 4px; font-size: 10px; color: var(--muted); }
394
+ .provider-meta { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 14px; margin-top: 23px; padding-top: 18px; border-top: 1px solid var(--border); }
395
+ .meta-label { color: var(--muted); font-size: 10px; margin-bottom: 5px; }
396
+ .meta-value { color: var(--subtext); font: 11px var(--mono); display: flex; gap: 7px; align-items: center; overflow-wrap: anywhere; }
397
+ .meta-value .icon { color: var(--overlay); width: 13px; height: 13px; }
398
+ .meta-value .meta-hint { color: var(--muted); }
399
+ .switch { position: relative; display: inline-flex; align-items: center; justify-content: center; min-width: 44px; height: 44px; cursor: pointer; flex-shrink: 0; }
400
+ .switch input { opacity: 0; position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
401
+ .switch-track { display: block; width: 31px; height: 18px; border-radius: 10px; background: var(--switch-track); transition: background 160ms; pointer-events: none; }
402
+ .switch-track::after { content: ""; display: block; width: 12px; height: 12px; border-radius: 50%; background: var(--switch-thumb); margin: 3px; transition: transform 160ms, background 160ms; }
403
+ .switch input:checked + .switch-track { background: var(--mauve); }
404
+ .switch input:checked + .switch-track::after { background: var(--on-accent); transform: translateX(13px); }
405
+ .switch input:focus-visible + .switch-track { outline: 2px solid var(--mauve); outline-offset: 4px; }
406
+ .switch input:disabled + .switch-track { opacity: .4; }
407
+ .models-panel { margin-top: 20px; }
408
+ .models-panel .panel-header { padding: 15px 19px; flex-wrap: wrap; }
409
+ .models-panel .panel-header > .inline-actions { flex-wrap: wrap; max-width: 100%; }
410
+ .table-wrap { position: relative; overflow-x: auto; }
411
+ table { width: 100%; border-collapse: collapse; text-align: left; }
412
+ th { font-weight: 450; font-size: 10px; color: var(--muted); padding: 9px 16px; background: var(--inset); white-space: nowrap; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
413
+ td { padding: 13px 16px; font-size: 11px; border-bottom: 1px solid var(--border); }
414
+ tbody tr:last-child td { border-bottom: none; }
415
+ .model-row { transition: background 160ms; }
416
+ .model-row:hover, .model-row:focus-within { background: var(--hover); }
417
+ .model-row.selected { background: var(--accent-wash); }
418
+ .model-row .model-title { display: flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 500; }
419
+ .model-row .model-title .icon { width: 12px; height: 12px; color: var(--warning-foreground); }
420
+ .model-row .model-id { color: var(--muted); font: 10px var(--mono); margin-top: 4px; overflow-wrap: anywhere; }
421
+ .model-row td:first-child { min-width: 175px; }
422
+ .capabilities { display: flex; flex-wrap: wrap; gap: 6px; }
423
+ .capability { display: inline-flex; gap: 4px; align-items: center; font-size: 9px; white-space: nowrap; }
424
+ .capability .icon { width: 12px; height: 12px; }
425
+ .number-cell { font: 11px var(--mono); color: var(--subtext); white-space: nowrap; }
426
+ .model-actions { display: flex; justify-content: flex-end; gap: 1px; }
427
+ .model-actions .icon-button { width: 32px; height: 36px; padding: 8px; }
428
+ .model-main-actions { display: inline-flex; align-items: center; justify-content: flex-end; gap: 2px; }
429
+ .icon-button.order-handle { width: 24px; min-width: 24px; height: 32px; min-height: 32px; padding: 3px; cursor: grab; }
430
+ .order-handle:active { cursor: grabbing; }
431
+ .order-dragging { opacity: .5; }
432
+ .order-insertion-line { position: absolute; height: 2px; background: var(--mauve); pointer-events: none; z-index: 2; }
433
+ .models-foot { display: flex; justify-content: space-between; gap: 12px; padding: 12px 19px; border-top: 1px solid var(--border); color: var(--muted); font-size: 10px; }
434
+ .context-help { display: flex; align-items: center; flex-wrap: wrap; gap: 16px; margin-top: 19px; color: var(--muted); font-size: 10px; }
435
+ .context-help span { display: inline-flex; gap: 6px; align-items: center; }
436
+ .context-help kbd { font-size: 9px; height: 18px; min-width: 18px; }
437
+ .empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; min-height: 235px; padding: 32px 24px; }
438
+ .empty-icon { display: flex; align-items: center; justify-content: center; width: 52px; height: 52px; color: var(--accent-foreground); background: var(--accent-wash); border: 1px solid var(--accent-border); border-radius: 13px; margin-bottom: 17px; }
439
+ .empty-icon .icon { width: 24px; height: 24px; }
440
+ .empty-state h3 { font-size: 14px; }
441
+ .empty-state p { color: var(--muted); font-size: 12px; line-height: 1.8; max-width: 360px; margin-top: 7px; }
442
+ .empty-state .btn, .empty-state .inline-actions { margin-top: 19px; }
443
+ .banner { display: flex; align-items: flex-start; gap: 10px; border: 1px solid var(--warning-border); border-radius: 8px; background: var(--warning-wash); color: var(--warning-foreground); padding: 12px 15px; margin-bottom: 21px; font-size: 12px; white-space: pre-wrap; overflow-wrap: anywhere; }
444
+ .banner .icon { height: 17px; width: 17px; margin-top: 1px; }
445
+ .banner.error { color: var(--danger-foreground); background: var(--danger-wash); border-color: var(--danger-border); }
446
+ .banner.info { color: var(--info-foreground); background: var(--info-wash); border-color: var(--info-border); }
447
+ .sessions-layout { display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: 18px; align-items: start; }
448
+ .session-preview { container-type: inline-size; }
449
+ .session-sidebar .list-search { padding-inline: 14px; }
450
+ .session-sidebar .provider-filters { padding: 8px 14px; }
451
+ .checkbox-label { display: flex; align-items: center; gap: 9px; min-height: 38px; color: var(--subtext); cursor: pointer; font-size: 12px; }
452
+ .session-sidebar .checkbox-label { font-size: 11px; }
453
+ .session-list { max-height: 630px; overflow: auto; padding: 5px 8px 10px; }
454
+ .session-group { display: flex; align-items: center; gap: 7px; margin: 15px 6px 8px; font: 10px var(--mono); color: var(--muted); overflow: hidden; }
455
+ .session-group .icon { width: 13px; height: 13px; }
456
+ .session-group span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
457
+ .session-option { display: block; width: 100%; text-align: left; background: transparent; border: 1px solid transparent; border-radius: 6px; padding: 12px 11px; margin-bottom: 3px; }
458
+ .session-option:hover { background: var(--surface0); }
459
+ .session-option[aria-current="true"] { background: var(--accent-wash); border-color: var(--accent-border); }
460
+ .session-option .item-title { font-size: 12px; line-height: 1.6; }
461
+ .session-option.named .item-title { color: var(--warning-foreground); }
462
+ .session-option .session-meta { color: var(--muted); font-size: 10px; margin-top: 8px; display: flex; align-items: center; gap: 10px; }
463
+ .session-meta .icon { width: 12px; height: 12px; margin-right: 3px; }
464
+ .session-preview .panel-header { align-items: start; }
465
+ .session-preview .panel-header h2 { display: block; font-size: 15px; line-height: 1.6; overflow-wrap: anywhere; }
466
+ .session-preview .panel-header .item-subtitle { font-size: 10px; max-width: 460px; }
467
+ .preview-toolbar { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; padding: 12px 16px; border-bottom: 1px solid var(--border); }
468
+ .preview-toolbar .checkbox-label { font-size: 11px; }
469
+ .preview-controls { display: flex; align-items: center; gap: 8px; margin-left: auto; }
470
+ .preview-tree-actions { display: flex; align-items: center; gap: 2px; }
471
+ .preview-tree-actions .icon-button { width: 28px; height: 28px; padding: 6px; }
472
+ .preview-tree-actions .icon { width: 16px; height: 16px; }
473
+ .tree-workspace { display: grid; grid-template-columns: minmax(250px, .86fr) minmax(0, 1.14fr); height: clamp(380px, calc(100dvh - 340px), 760px); min-width: 0; }
474
+ .tree-panel { display: flex; flex-direction: column; min-width: 0; min-height: 0; border-right: 1px solid var(--border); background: var(--base); }
475
+ .tree-panel-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 14px; font-size: 11px; color: var(--muted); }
476
+ .tree-panel-heading strong { color: var(--text); font-weight: 550; }
477
+ .tree-panel-heading > span { font-family: var(--mono); }
478
+ .tree-list { flex: 1; min-height: 0; overflow: auto; padding: 0 6px 8px; overscroll-behavior: contain; }
479
+ .tree-item { display: flex; align-items: center; width: 100%; min-height: 60px; padding: 0 7px 0 2px; text-align: left; background: transparent; border-radius: 6px; cursor: pointer; user-select: none; }
480
+ .tree-item:hover { background: var(--hover); }
481
+ .tree-item[aria-selected="true"] { background: var(--accent-wash); box-shadow: inset 0 0 0 1px var(--accent-border); }
482
+ .tree-item:focus-visible { outline-offset: -2px; }
483
+ .tree-indent { display: flex; flex-shrink: 0; align-self: stretch; pointer-events: none; }
484
+ .tree-indent-guide { position: relative; flex: 0 0 14px; width: 14px; }
485
+ .tree-indent-guide::before { content: ""; position: absolute; inset: 0 auto 0 6px; border-left: 1px solid var(--overlay); opacity: .55; }
486
+ .tree-indent-guide.starts-branch::before { top: 8px; }
487
+ .tree-indent-guide.ends-branch::before { bottom: 8px; }
488
+ .tree-expander, .tree-expander-space { flex: 0 0 24px; width: 24px; height: 32px; }
489
+ .tree-expander { display: inline-flex; align-items: center; justify-content: center; padding: 3px; border-radius: 5px; background: none; color: var(--muted); }
490
+ .tree-expander:hover { color: var(--accent-foreground); background: var(--surface0); }
491
+ .tree-expander .icon { width: 15px; height: 15px; }
492
+ .tree-row-content { flex: 1; min-width: 0; padding: 7px 0 7px 4px; }
493
+ .tree-row-branch { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--muted); font-size: 11px; line-height: 18px; }
494
+ .tree-row-meta { display: flex; align-items: center; gap: 6px; min-height: 18px; white-space: nowrap; overflow: hidden; }
495
+ .tree-role { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 600; }
496
+ .tree-role .icon { width: 12px; height: 12px; }
497
+ .tree-node-number { color: var(--muted); font: 11px var(--mono); }
498
+ .tree-fork-count { color: var(--muted); font-size: 11px; margin-left: auto; }
499
+ .tree-current { flex-shrink: 0; color: var(--subtext); background: var(--surface0); border-radius: 4px; padding: 1px 5px; font-size: 11px; }
500
+ .tree-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); font-size: 12px; line-height: 20px; }
501
+ .tree-row-tags { display: flex; align-items: center; flex-wrap: wrap; gap: 0 6px; color: var(--muted); font-size: 11px; line-height: 16px; white-space: nowrap; }
502
+ .tree-row-tags:empty { display: none; }
503
+ .tree-row-tags > span { overflow: hidden; text-overflow: ellipsis; }
504
+ .tree-fold-count { color: var(--accent-foreground); }
505
+ .tree-message-label { max-width: 100px; }
506
+ .message-reader { display: flex; flex-direction: column; min-width: 0; min-height: 0; }
507
+ .reader-heading { flex-shrink: 0; padding: 12px 18px; border-bottom: 1px solid var(--border); }
508
+ .reader-breadcrumb { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; color: var(--muted); font-size: 11px; }
509
+ .reader-crumb { max-width: 130px; min-height: 28px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 4px 6px; border-radius: 4px; color: var(--accent-foreground); background: none; font-size: 11px; }
510
+ .reader-crumb:hover { background: var(--accent-wash); }
511
+ .reader-body { flex: 1; min-height: 0; overflow: auto; padding: 20px; background: var(--preview-surface); overscroll-behavior: contain; }
512
+ .message-header { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; margin-bottom: 12px; font-size: 11px; font-weight: 550; }
513
+ .message-header .avatar { width: 26px; height: 26px; font-size: 10px; }
514
+ .message-header .avatar .icon { width: 14px; height: 14px; }
515
+ .reader-heading .message-header { margin: 8px 0 0; }
516
+ .message-number { color: var(--muted); font: 11px var(--mono); }
517
+ .message-label { max-width: 150px; overflow: hidden; text-overflow: ellipsis; }
518
+ .message-actions { display: inline-flex; gap: 4px; margin-left: auto; }
519
+ .preview-notice { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; padding: 12px 18px; font-size: 12px; border-bottom: 1px solid var(--border); }
520
+ .preview-notice .banner { flex: 1 1 220px; margin-bottom: 0; }
521
+ .preview-notice p { margin: 5px 0 0; }
522
+ .missing-session-id { overflow-wrap: anywhere; font: 12px var(--mono); margin-bottom: 18px; color: var(--subtext); }
523
+ .message-text { white-space: pre-wrap; overflow-wrap: anywhere; color: var(--subtext); font-size: 12px; line-height: 1.85; margin: 0; font-family: var(--font); }
524
+ .reading-view { padding: 14px 20px 20px; max-height: max(420px, calc(100dvh - 340px)); overflow: auto; overscroll-behavior: contain; }
525
+ .reading-message { padding: 20px; margin-bottom: 12px; border: 1px solid var(--border); border-left: 3px solid var(--overlay); border-radius: 8px; background: var(--surface); scroll-margin-block: 10px; }
526
+ .reading-message.on-active-path { border-left-color: var(--mauve); }
527
+ .reading-message[data-depth="1"] { margin-left: 12px; }
528
+ .reading-message[data-depth="2"] { margin-left: 24px; }
529
+ .reading-message[data-depth="3"] { margin-left: 36px; }
530
+ .reading-message[data-depth="4"] { margin-left: 48px; }
531
+ .reading-message[aria-current="true"] { background: var(--accent-wash); box-shadow: inset 3px 0 var(--accent-border); }
532
+ .reading-message:last-child { margin-bottom: 0; }
533
+ .reading-fold-note { display: flex; align-items: center; gap: 7px; margin-top: 14px; padding-top: 12px; border-top: 1px dashed var(--accent-border); color: var(--accent-foreground); font-size: 12px; }
534
+ .reading-fold-note .icon { width: 15px; height: 15px; }
535
+ .session-preview .markdown { font-size: 14px; line-height: 1.85; }
536
+ .session-preview .markdown pre code { font-size: 12px; }
537
+ @container (max-width: 680px) {
538
+ .tree-workspace { grid-template-columns: minmax(0, 1fr); height: auto; }
539
+ .tree-panel { height: 350px; border-right: none; border-bottom: 1px solid var(--border); }
540
+ .message-reader { min-height: 260px; max-height: 560px; }
541
+ }
542
+ .markdown { font-size: 12px; line-height: 1.85; color: var(--subtext); overflow-wrap: anywhere; }
543
+ .markdown p, .markdown ul, .markdown ol, .markdown blockquote, .markdown pre, .markdown table { margin: 0 0 12px; }
544
+ .markdown h1, .markdown h2, .markdown h3, .markdown h4 { color: var(--text); font-size: 15px; margin: 17px 0 9px; line-height: 1.5; }
545
+ .markdown h1 { font-size: 18px; }
546
+ .markdown code { background: var(--surface0); border-radius: 3px; padding: 2px 5px; color: var(--accent-foreground); }
547
+ .markdown pre { overflow: auto; background: var(--mantle); border: 1px solid var(--border); padding: 13px 15px; border-radius: 7px; }
548
+ .markdown pre code { background: none; padding: 0; color: var(--subtext); font-size: 11px; }
549
+ .markdown blockquote { border-left: 2px solid var(--mauve); padding: 2px 0 2px 14px; color: var(--muted); }
550
+ .markdown blockquote p { margin: 0; }
551
+ .markdown td, .markdown th { padding: 8px 10px; font-size: 11px; }
552
+ .settings-layout { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(260px, 1fr); gap: 22px; align-items: start; }
553
+ .settings-group + .settings-group { margin-top: 22px; }
554
+ .setting-row { display: flex; justify-content: space-between; align-items: center; gap: 24px; padding: 20px 22px; border-bottom: 1px solid var(--border); }
555
+ .setting-row:last-child { border-bottom: none; }
556
+ .setting-row h3 { font-size: 12px; }
557
+ .setting-row p { font-size: 11px; color: var(--muted); margin-top: 5px; max-width: 410px; line-height: 1.7; }
558
+ .setting-row select { max-width: 150px; min-height: 38px; }
559
+ .path-list { padding: 4px 20px; }
560
+ .path-row { padding: 13px 0; border-bottom: 1px solid var(--border); }
561
+ .path-row:last-child { border-bottom: none; }
562
+ .path-row label { font-size: 10px; color: var(--muted); display: block; margin-bottom: 4px; }
563
+ .path-value { display: flex; gap: 8px; align-items: center; }
564
+ .path-value code { font-size: 10px; color: var(--subtext); overflow-wrap: anywhere; flex: 1; min-width: 0; }
565
+ .path-value .icon-button { width: 28px; height: 28px; padding: 6px; }
566
+ .appearance-settings { padding: 20px; }
567
+ .theme-control { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); gap: 10px; min-width: 0; margin: 0; padding: 0; border: 0; }
568
+ .theme-choice { display: flex; align-items: center; gap: 10px; min-width: 0; min-height: 72px; padding: 13px 14px; border: 1px solid var(--control-border); border-radius: 8px; background: var(--mantle); color: var(--text); cursor: pointer; transition: background-color 160ms, border-color 160ms, box-shadow 160ms; }
569
+ .theme-choice:hover { background: var(--hover); border-color: var(--control-hover-border); }
570
+ .theme-choice.selected, .theme-choice:has(input:checked) { background: var(--accent-wash); border-color: var(--mauve); }
571
+ .theme-choice:active { background: var(--accent-wash); }
572
+ .theme-choice:focus-within { outline: 2px solid var(--mauve); outline-offset: 3px; }
573
+ .theme-choice input[type="radio"] { flex-shrink: 0; width: 18px; height: 18px; margin: 0; accent-color: var(--mauve); cursor: pointer; }
574
+ .theme-choice input:focus-visible { outline: none; }
575
+ .theme-choice > .icon { width: 20px; height: 20px; color: var(--muted); }
576
+ .theme-choice.selected > .icon, .theme-choice:has(input:checked) > .icon { color: var(--accent-foreground); }
577
+ .theme-choice > span { display: grid; gap: 3px; min-width: 0; }
578
+ .theme-choice strong { font-size: 12px; font-weight: 600; }
579
+ .theme-choice small { color: var(--muted); font-size: 11px; overflow-wrap: anywhere; }
580
+ dialog { width: min(650px, calc(100vw - 36px)); max-height: calc(100dvh - 48px); padding: 0; border: 1px solid var(--surface1); border-radius: 12px; background: var(--base); color: var(--text); box-shadow: var(--shadow-dialog); }
581
+ dialog::backdrop { background: var(--modal-scrim); backdrop-filter: blur(3px); }
582
+ dialog[open] { animation: dialog-in 180ms ease-out; }
583
+ .dialog-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 15px; padding: 22px 23px 18px; border-bottom: 1px solid var(--border); }
584
+ .dialog-header h2 { font-size: 18px; letter-spacing: -.4px; }
585
+ .dialog-header p { font-size: 11px; color: var(--muted); margin-top: 7px; line-height: 1.7; }
586
+ .dialog-header .icon-button { margin: -4px -6px 0 0; }
587
+ .dialog-body { max-height: calc(100dvh - 245px); overflow: auto; padding: 22px 24px; }
588
+ .dialog-footer { display: flex; justify-content: flex-end; gap: 9px; padding: 16px 23px; border-top: 1px solid var(--border); background: var(--mantle); }
589
+ .dialog-footer .btn { min-height: 40px; }
590
+ .form-extra-actions { display: flex; gap: 4px; margin-right: auto; }
591
+ .ambiguity-field + .ambiguity-field { margin-top: 17px; }
592
+ .form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 17px; }
593
+ .form-field { display: flex; flex-direction: column; gap: 7px; min-width: 0; }
594
+ .form-field.full { grid-column: 1 / -1; }
595
+ .form-field > label { font-size: 11px; color: var(--subtext); font-weight: 550; }
596
+ .form-field > label .required { color: var(--accent-foreground); }
597
+ .form-field input:not([type="checkbox"]), .form-field textarea { width: 100%; border: 1px solid var(--control-border); border-radius: 6px; background: var(--mantle); padding: 10px 12px; min-height: 40px; font-size: 12px; }
598
+ .form-field select { width: 100%; }
599
+ .form-field input::placeholder, .form-field textarea::placeholder { color: var(--muted); opacity: 1; }
600
+ .form-field textarea { min-height: 91px; resize: vertical; font: 11px/1.7 var(--mono); }
601
+ .field-help { color: var(--muted); font-size: 10px; line-height: 1.6; }
602
+ .field-error { color: var(--danger-foreground); font-size: 11px; }
603
+ .field-with-action { display: flex; position: relative; }
604
+ .field-with-action input { padding-right: 42px !important; }
605
+ .field-with-action .icon-button { position: absolute; right: 2px; top: 2px; }
606
+ .form-options { display: flex; gap: 18px; flex-wrap: wrap; }
607
+ .form-divider { height: 1px; background: var(--border); margin: 21px 0; }
608
+ .advanced { margin-top: 19px; border: 1px solid var(--border); border-radius: 7px; }
609
+ .advanced summary { padding: 13px 14px; font-size: 11px; color: var(--subtext); }
610
+ .advanced-content { padding: 4px 16px 17px; }
611
+ .confirm-description { font-size: 13px; line-height: 1.9; color: var(--subtext); white-space: pre-wrap; overflow-wrap: anywhere; }
612
+ .confirm-detail { margin-top: 16px; background: var(--mantle); border: 1px solid var(--border); border-radius: 6px; padding: 12px 14px; font: 11px/1.7 var(--mono); overflow-wrap: anywhere; }
613
+ .dialog-error { margin-bottom: 17px; }
614
+ .dialog-error:empty { display: none; }
615
+ .help-grid { display: grid; gap: 1px; }
616
+ .help-row { display: flex; align-items: center; justify-content: space-between; gap: 15px; min-height: 44px; border-bottom: 1px solid var(--border); font-size: 12px; }
617
+ .help-row:last-child { border: none; }
618
+ .help-row span:last-child { display: inline-flex; gap: 5px; align-items: center; }
619
+ .check-list { display: grid; gap: 10px; }
620
+ .check-row { display: flex; align-items: flex-start; gap: 10px; padding: 12px; background: var(--surface); border-radius: 6px; }
621
+ .check-row .icon { width: 17px; height: 17px; margin-top: 2px; }
622
+ .check-row h3 { font-size: 12px; }
623
+ .check-row p { color: var(--muted); font-size: 11px; margin-top: 5px; overflow-wrap: anywhere; }
624
+ .import-list { max-height: 320px; overflow: auto; border: 1px solid var(--border); border-radius: 6px; margin-top: 15px; }
625
+ .import-row { display: flex; gap: 10px; align-items: center; min-height: 45px; padding: 9px 13px; border-bottom: 1px solid var(--border); font-size: 12px; cursor: pointer; }
626
+ .import-row:last-child { border: none; }
627
+ .import-row .badge { margin-left: auto; }
628
+ .import-row span { overflow-wrap: anywhere; min-width: 0; }
629
+ .import-tools { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 13px; }
630
+ .import-tools .search-box { flex: 1; }
631
+ .import-count { margin: 11px 0; color: var(--muted); font-size: 11px; }
632
+ .backup-row { display: flex; align-items: center; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--border); }
633
+ .backup-row:last-child { border: none; }
634
+ .backup-row code { flex: 1; font-size: 11px; overflow-wrap: anywhere; }
635
+ .toast-region { position: fixed; right: 25px; bottom: 48px; z-index: 80; max-width: min(460px, calc(100vw - 32px)); }
636
+ .toast { display: flex; align-items: flex-start; gap: 10px; padding: 15px 18px; background: var(--surface0); border: 1px solid var(--surface1); border-radius: 9px; box-shadow: var(--shadow-toast); animation: dialog-in 180ms ease-out; }
637
+ .toast > .icon { color: var(--success-foreground); width: 18px; height: 18px; margin-top: 1px; }
638
+ .toast.error > .icon { color: var(--danger-foreground); }
639
+ .toast-content { font-size: 12px; line-height: 1.8; overflow-wrap: anywhere; }
640
+ .toast .icon-button { width: 26px; height: 26px; padding: 5px; margin: -2px -5px -2px 2px; }
641
+ .boot-state { display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 14px; min-height: 100dvh; }
642
+ .boot-state p { font: 22px var(--mono); }
643
+ .boot-state > span:last-child { font-size: 12px; color: var(--muted); }
644
+ .loading-state { display: flex; justify-content: center; align-items: center; gap: 10px; min-height: 200px; font-size: 12px; color: var(--muted); }
645
+ .spinner { display: inline-block; width: 15px; height: 15px; border: 2px solid var(--surface1); border-top-color: var(--mauve); border-radius: 50%; animation: spin 750ms linear infinite; }
646
+ .nav-scrim { display: none; }
647
+ .subtle-divider { color: var(--surface2); padding: 0 4px; }
648
+ @keyframes spin { to { transform: rotate(360deg); } }
649
+ @keyframes dialog-in { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }
650
+ @media (min-width: 1500px) { .workspace { padding: 36px 45px; } .topbar { padding: 0 45px; } .profiles-layout { grid-template-columns: 300px minmax(0, 1fr); } }
651
+ @media (max-width: 1200px) {
652
+ .app-shell { grid-template-columns: 198px minmax(0, 1fr); }
653
+ .workspace { padding: 27px 24px; }
654
+ .topbar { padding: 0 24px; }
655
+ .sidebar { padding-left: 12px; padding-right: 12px; }
656
+ .profiles-layout { grid-template-columns: 237px minmax(0, 1fr); gap: 16px; }
657
+ .model-row td, th { padding-left: 12px; padding-right: 12px; }
658
+ .optional-column { display: none; }
659
+ .sessions-layout { grid-template-columns: 230px minmax(0, 1fr); gap: 16px; }
660
+ .overview-grid { grid-template-columns: minmax(0, 1.2fr) minmax(280px, 1fr); gap: 18px; }
661
+ .stats-grid { gap: 12px; }
662
+ .stat-card { padding: 17px; }
663
+ .settings-layout { grid-template-columns: minmax(0, 1.4fr) minmax(250px, 1fr); gap: 16px; }
664
+ }
665
+ @media (max-width: 1000px) {
666
+ .overview-grid, .settings-layout { grid-template-columns: 1fr; }
667
+ .overview-grid > .panel, .overview-grid > div { min-width: 0; }
668
+ .default-name { font-size: 23px; }
669
+ .provider-meta { grid-template-columns: 1fr; }
670
+ .provider-title-row { flex-wrap: wrap; }
671
+ .provider-title-row > .inline-actions { width: 100%; margin-top: 4px; }
672
+ .sessions-layout { grid-template-columns: 235px minmax(0, 1fr); }
673
+ .preview-toolbar { padding: 10px 12px; }
674
+ .reading-view, .reader-body { padding-left: 16px; padding-right: 16px; }
675
+ .topbar .connection { font-size: 10px; }
676
+ .stats-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
677
+ }
678
+ @media (max-width: 760px) {
679
+ .app-shell { grid-template-columns: minmax(0, 1fr); grid-template-rows: 60px minmax(0, 1fr) 30px; }
680
+ .sidebar { position: fixed; inset: 0 auto 30px 0; width: 235px; transform: translateX(-100%); transition: transform 180ms; padding-top: 24px; }
681
+ .sidebar.open { transform: translateX(0); }
682
+ .nav-scrim.visible { display: block; position: fixed; inset: 0; background: var(--scrim); z-index: 29; }
683
+ .topbar { grid-column: 1; padding: 0 16px 0 10px; gap: 8px; }
684
+ .breadcrumb { gap: 9px; font-size: 11px; }
685
+ .breadcrumb > .icon { display: none; }
686
+ .topbar-actions { gap: 4px; }
687
+ .topbar-divider { margin: 0 5px; }
688
+ .topbar-actions .connection { display: none; }
689
+ .mobile-menu { display: inline-flex; }
690
+ .workspace { grid-column: 1; padding: 24px 18px; }
691
+ .statusbar { grid-column: 1; padding: 0 13px; }
692
+ .statusbar code { display: none; }
693
+ .page-header { margin-bottom: 22px; gap: 12px; }
694
+ h1 { font-size: 24px; }
695
+ .page-header p { font-size: 11px; max-width: 380px; }
696
+ .page-header .header-actions { gap: 6px; }
697
+ .page-header .header-actions .btn { font-size: 11px; padding: 9px 10px; }
698
+ .profiles-layout { grid-template-columns: 220px minmax(0, 1fr); gap: 14px; }
699
+ .provider-info { padding: 17px; }
700
+ .provider-title-row h2 { font-size: 18px; }
701
+ .sessions-layout { grid-template-columns: 230px minmax(0, 1fr); }
702
+ .btn, .icon-button { min-height: 44px; }
703
+ .icon-button { min-width: 44px; }
704
+ .model-actions .icon-button { width: 44px; min-width: 44px; min-height: 44px; }
705
+ .icon-button.order-handle { width: 24px; min-width: 24px; height: 44px; min-height: 44px; }
706
+ .segments button, .checkbox-label { min-height: 44px; }
707
+ .tree-expander, .tree-expander-space { flex-basis: 32px; width: 32px; height: 44px; }
708
+ }
709
+ @media (max-width: 580px) {
710
+ .page-header { align-items: flex-start; flex-direction: column; gap: 16px; }
711
+ .page-header .header-actions { width: 100%; }
712
+ .page-header .header-actions > .btn { flex: 1; }
713
+ .profiles-layout, .sessions-layout { grid-template-columns: minmax(0, 1fr); }
714
+ .provider-list { max-height: 228px; }
715
+ .provider-panel .panel-header { padding-inline: 15px; }
716
+ .provider-filters { padding: 8px 11px; }
717
+ .provider-title-row > .inline-actions .btn { padding: 8px; font-size: 0; gap: 0; }
718
+ .provider-title-row > .inline-actions .btn .icon { width: 17px; height: 17px; }
719
+ .provider-meta { grid-template-columns: 1fr; }
720
+ .models-panel .panel-header { padding: 12px 15px; gap: 8px; }
721
+ .models-panel .panel-header .btn { font-size: 10px; padding: 8px; }
722
+ .model-row td:first-child { min-width: 145px; }
723
+ .model-row .model-title { font-size: 11px; }
724
+ .model-row td { padding: 11px; }
725
+ .model-actions { flex-direction: column; align-items: flex-end; gap: 4px; }
726
+ .model-row .model-id { font-size: 9px; }
727
+ .models-foot { font-size: 9px; padding: 11px 14px; flex-wrap: wrap; }
728
+ .stat-card { padding: 16px; }
729
+ .stat-heading { font-size: 11px; }
730
+ .stat-value { font-size: 28px; }
731
+ .stat-note { font-size: 10px; }
732
+ .default-name { font-size: 22px; }
733
+ .default-content, .default-empty { padding: 16px 18px; }
734
+ .default-bottom { padding: 12px 18px; gap: 8px; }
735
+ .default-bottom > .text-button { margin-left: auto; }
736
+ .recent-session { grid-template-columns: 30px minmax(0, 1fr) 14px; gap: 9px; padding: 10px 16px; }
737
+ .recent-session-icon { width: 30px; height: 30px; }
738
+ .recent-session-meta { column-gap: 8px; }
739
+ .recent-workspace { max-width: min(100%, 135px); }
740
+ .appearance-settings { padding: 18px; }
741
+ .provider-summary { grid-template-columns: 32px minmax(0, 1fr) auto; gap: 10px; padding: 11px 16px; }
742
+ .provider-summary .provider-count { display: none; }
743
+ .provider-summary .avatar { width: 31px; height: 31px; font-size: 10px; }
744
+ .provider-summary .badge { font-size: 9px; }
745
+ .setting-row { padding: 18px; gap: 15px; }
746
+ .setting-row p { font-size: 10px; }
747
+ .setting-row select { max-width: 112px; font-size: 11px; }
748
+ .session-list { max-height: 260px; }
749
+ .reading-view { padding: 12px; max-height: 70dvh; }
750
+ .reading-message { padding: 16px 12px; }
751
+ .form-grid { grid-template-columns: minmax(0, 1fr); }
752
+ .form-field.full { grid-column: 1; }
753
+ .dialog-header, .dialog-body { padding: 18px; }
754
+ .dialog-footer { padding: 14px 18px; }
755
+ .dialog-header h2 { font-size: 17px; }
756
+ .import-tools { flex-wrap: wrap; }
757
+ .import-tools .search-box { flex-basis: 100%; }
758
+ .context-help { gap: 10px; }
759
+ .statusbar-right { font-size: 10px; }
760
+ }
761
+ @media (prefers-reduced-motion: reduce) {
762
+ *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
763
+ select::picker-icon { transition: none; }
764
+ }