返回 DeepSeek-Reasonix
BrowserPanel.css
根目录 / desktop / frontend / src / components / BrowserPanel.css
1 .workbench-dock__body > .browser-panel {
2 height: 100%;
3 }
4
5 .browser-panel {
6 display: flex;
7 flex-direction: column;
8 min-width: 0;
9 min-height: 0;
10 color: var(--fg);
11 background: var(--bg-elev);
12 }
13
14 .browser-responsive { padding: 4px 8px; border-bottom: 1px solid var(--border-soft); font-size: var(--font-size-small, 12px); }
15 .browser-responsive summary { cursor: pointer; color: var(--fg-dim); }
16 .browser-responsive__controls, .browser-responsive form { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
17 .browser-responsive__controls { padding: 6px 0; }
18 .browser-responsive input { width: 72px; }
19 .browser-responsive input, .browser-responsive select { color: var(--fg); background: var(--bg-elev); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 3px; }
20
21 .browser-panel__tabs {
22 display: flex;
23 align-items: stretch;
24 gap: 2px;
25 min-height: 30px;
26 padding: 4px 6px 0;
27 overflow-x: auto;
28 border-bottom: 1px solid var(--border-soft);
29 scrollbar-width: none;
30 }
31
32 .browser-panel__tabs::-webkit-scrollbar {
33 display: none;
34 }
35
36 .browser-tab {
37 display: flex;
38 flex: 0 1 180px;
39 align-items: center;
40 min-width: 72px;
41 border-radius: var(--radius) var(--radius) 0 0;
42 color: var(--fg-dim);
43 }
44
45 .browser-tab:hover {
46 background: var(--sidebar-hover);
47 }
48
49 .browser-tab--active {
50 color: var(--fg);
51 background: var(--bg-soft);
52 box-shadow: inset 0 -2px 0 var(--accent);
53 }
54
55 .browser-tab__select {
56 display: flex;
57 flex: 1 1 auto;
58 align-items: center;
59 gap: 6px;
60 min-width: 0;
61 padding: 5px 4px 5px 8px;
62 border: 0;
63 background: none;
64 color: inherit;
65 font: inherit;
66 font-size: var(--text-xs);
67 cursor: pointer;
68 }
69
70 .browser-tab__title {
71 flex: 1 1 auto;
72 min-width: 0;
73 overflow: hidden;
74 text-align: left;
75 text-overflow: ellipsis;
76 white-space: nowrap;
77 }
78
79 .browser-tab__badge {
80 flex: 0 0 auto;
81 padding: 0 5px;
82 border-radius: 999px;
83 background: color-mix(in srgb, var(--accent) 18%, transparent);
84 color: var(--accent);
85 font-size: 10px;
86 line-height: 16px;
87 }
88
89 .browser-tab__spinner,
90 .browser-tab__close {
91 flex: 0 0 auto;
92 }
93
94 .browser-tab__spinner {
95 width: 10px;
96 height: 10px;
97 border: 2px solid var(--border);
98 border-top-color: var(--accent);
99 border-radius: 50%;
100 animation: browser-panel-spin 0.8s linear infinite;
101 }
102
103 @keyframes browser-panel-spin {
104 to {
105 transform: rotate(360deg);
106 }
107 }
108
109 .browser-tab__close,
110 .browser-panel__icon-btn,
111 .browser-panel__zoom {
112 display: inline-flex;
113 align-items: center;
114 justify-content: center;
115 border: 0;
116 border-radius: var(--radius);
117 background: none;
118 color: var(--fg-dim);
119 cursor: pointer;
120 }
121
122 .browser-tab__close {
123 width: 20px;
124 height: 20px;
125 margin-right: 4px;
126 }
127
128 .browser-panel__icon-btn {
129 width: 26px;
130 height: 26px;
131 }
132
133 .browser-tab__close:hover,
134 .browser-panel__icon-btn:hover:not(:disabled),
135 .browser-panel__zoom:hover:not(:disabled) {
136 background: var(--sidebar-hover);
137 color: var(--fg);
138 }
139
140 .browser-panel__icon-btn:disabled,
141 .browser-panel__zoom:disabled {
142 opacity: 0.4;
143 cursor: default;
144 }
145
146 .browser-panel__toolbar {
147 display: flex;
148 align-items: center;
149 gap: 2px;
150 padding: 5px 6px;
151 border-bottom: 1px solid var(--border-soft);
152 }
153
154 .browser-panel__zoom {
155 height: 26px;
156 padding: 0 6px;
157 font: inherit;
158 font-size: var(--text-xs);
159 font-variant-numeric: tabular-nums;
160 }
161
162 .browser-panel__address {
163 flex: 1 1 auto;
164 min-width: 0;
165 height: 26px;
166 padding: 0 8px;
167 border: 1px solid var(--border);
168 border-radius: var(--radius);
169 background: var(--bg-soft);
170 color: var(--fg);
171 font: inherit;
172 font-size: var(--text-xs);
173 }
174
175 .browser-panel__address:focus {
176 border-color: var(--accent);
177 outline: none;
178 }
179
180 .browser-panel__takeover {
181 display: flex;
182 align-items: center;
183 gap: 8px;
184 padding: 6px 10px;
185 border-bottom: 1px solid var(--border-soft);
186 background: color-mix(in srgb, var(--accent) 14%, var(--bg-elev));
187 color: var(--fg);
188 font-size: var(--text-xs);
189 }
190
191 .browser-panel__takeover span {
192 flex: 1 1 auto;
193 }
194
195 .browser-panel__content {
196 position: relative;
197 display: flex;
198 flex: 1 1 auto;
199 min-height: 0;
200 }
201
202 .browser-panel__surface {
203 flex: 1 1 auto;
204 min-height: 0;
205 background: var(--bg-soft);
206 }
207
208 .browser-panel__empty,
209 .browser-panel__error {
210 display: flex;
211 flex: 1 1 auto;
212 flex-direction: column;
213 align-items: center;
214 justify-content: center;
215 gap: 8px;
216 padding: 24px;
217 color: var(--fg-dim);
218 text-align: center;
219 }
220
221 .browser-panel__empty .browser-panel__address {
222 width: min(100%, 360px);
223 flex: 0 0 auto;
224 margin-top: 8px;
225 }
226
227 .browser-panel__empty-title,
228 .browser-panel__error-title {
229 margin: 0;
230 color: var(--fg);
231 font-size: var(--text-sm);
232 font-weight: 600;
233 }
234
235 .browser-panel__empty-hint,
236 .browser-panel__error-detail {
237 margin: 0;
238 font-size: var(--text-xs);
239 }
240
241 .browser-panel__error {
242 color: var(--err);
243 }
244
245 .browser-panel__error-url {
246 max-width: 100%;
247 overflow: hidden;
248 color: var(--fg-faint);
249 font-size: var(--text-xs);
250 text-overflow: ellipsis;
251 white-space: nowrap;
252 }
253
254 .browser-panel__downloads {
255 padding: 6px 8px;
256 border-top: 1px solid var(--border-soft);
257 font-size: var(--text-xs);
258 }
259
260 .browser-panel__downloads-head {
261 display: flex;
262 align-items: center;
263 gap: 6px;
264 color: var(--fg-dim);
265 }
266
267 .browser-panel__downloads-head span {
268 flex: 1 1 auto;
269 }
270
271 .browser-panel__downloads-head .browser-panel__icon-btn {
272 width: 20px;
273 height: 20px;
274 }
275
276 .browser-panel__download-list {
277 margin: 4px 0 0;
278 padding: 0;
279 list-style: none;
280 }
281
282 .browser-download {
283 display: grid;
284 grid-template-columns: minmax(0, 1fr) auto;
285 gap: 2px 8px;
286 padding: 2px 0;
287 }
288
289 .browser-download__name {
290 overflow: hidden;
291 color: var(--fg);
292 text-overflow: ellipsis;
293 white-space: nowrap;
294 }
295
296 .browser-download__state {
297 color: var(--fg-faint);
298 font-variant-numeric: tabular-nums;
299 }
300
301 .browser-download--interrupted .browser-download__state {
302 color: var(--err);
303 }
304
305 .browser-download__bar {
306 grid-column: 1 / -1;
307 width: 100%;
308 height: 3px;
309 accent-color: var(--accent);
310 }
311 .browser-evidence { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; padding: 4px 8px; font-size: var(--font-size-sm, 12px); }
312 .browser-evidence details { width: 100%; }
313 .browser-evidence pre { max-height: 180px; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; }
314
314 lines CSS