@@ -184,3 +184,168 @@ nav {
184184 height : 100vh ;
185185 overflow : hidden;
186186}
187+
188+ /* Shared component styles */
189+
190+ .page {
191+ display : flex;
192+ flex-direction : column;
193+ height : 100% ;
194+ }
195+
196+ .header {
197+ display : flex;
198+ align-items : center;
199+ justify-content : space-between;
200+ margin-bottom : 20px ;
201+ }
202+
203+ .header h2 {
204+ font-size : 18px ;
205+ font-weight : 600 ;
206+ color : var (--text-primary );
207+ margin : 0 ;
208+ }
209+
210+ .error-banner {
211+ display : flex;
212+ align-items : center;
213+ justify-content : space-between;
214+ padding : 10px 14px ;
215+ background : var (--error-bg );
216+ border : 1px solid var (--error-border );
217+ border-radius : 6px ;
218+ color : var (--error-color );
219+ font-size : 13px ;
220+ margin-bottom : 16px ;
221+ }
222+
223+ .error-banner button {
224+ padding : 4px 10px ;
225+ border-radius : 4px ;
226+ border : none;
227+ background : var (--error-color );
228+ color : white;
229+ font-size : 12px ;
230+ cursor : pointer;
231+ }
232+
233+ .loading ,
234+ .empty {
235+ padding : 24px ;
236+ text-align : center;
237+ color : var (--text-secondary );
238+ }
239+
240+ .empty p {
241+ margin : 0 0 8px ;
242+ }
243+
244+ .empty .hint {
245+ font-size : 13px ;
246+ }
247+
248+ .info-section {
249+ margin-top : 20px ;
250+ padding : 16px ;
251+ background : var (--neutral-bg );
252+ border : 1px solid var (--border-color );
253+ border-radius : 8px ;
254+ }
255+
256+ .info-section p {
257+ margin : 0 0 8px ;
258+ font-size : 13px ;
259+ color : var (--text-secondary );
260+ }
261+
262+ .info-section p : last-child {
263+ margin-bottom : 0 ;
264+ }
265+
266+ .info-section strong {
267+ color : var (--text-primary );
268+ }
269+
270+ .btn-primary ,
271+ .btn-secondary ,
272+ .btn-danger {
273+ padding : 6px 14px ;
274+ border-radius : 6px ;
275+ font-size : 13px ;
276+ font-weight : 500 ;
277+ cursor : pointer;
278+ }
279+
280+ .btn-primary {
281+ border : none;
282+ background : var (--accent-color );
283+ color : white;
284+ }
285+
286+ .btn-primary : hover : not (: disabled ) {
287+ background : var (--accent-hover );
288+ }
289+
290+ .btn-secondary {
291+ border : 1px solid var (--border-color );
292+ background : var (--button-secondary-bg );
293+ color : var (--text-primary );
294+ }
295+
296+ .btn-secondary : hover : not (: disabled ) {
297+ background : var (--button-secondary-hover );
298+ }
299+
300+ .btn-danger {
301+ border : none;
302+ background : var (--danger-color );
303+ color : white;
304+ }
305+
306+ .btn-danger : hover : not (: disabled ) {
307+ background : var (--danger-hover );
308+ }
309+
310+ .btn-primary : disabled ,
311+ .btn-secondary : disabled ,
312+ .btn-danger : disabled {
313+ opacity : 0.5 ;
314+ cursor : not-allowed;
315+ }
316+
317+ .setting-group {
318+ background : var (--card-bg );
319+ border : 1px solid var (--border-color );
320+ border-radius : 8px ;
321+ padding : 20px ;
322+ margin-bottom : 16px ;
323+ }
324+
325+ .setting-group h3 {
326+ font-size : 15px ;
327+ font-weight : 600 ;
328+ color : var (--text-primary );
329+ margin : 0 0 4px ;
330+ }
331+
332+ .setting-group .description {
333+ font-size : 13px ;
334+ color : var (--text-secondary );
335+ margin : 0 0 16px ;
336+ }
337+
338+ .setting {
339+ margin-bottom : 16px ;
340+ }
341+
342+ .setting : last-child {
343+ margin-bottom : 0 ;
344+ }
345+
346+ .setting .hint {
347+ display : block;
348+ font-size : 12px ;
349+ color : var (--text-tertiary );
350+ margin-top : 4px ;
351+ }
0 commit comments