1- : root {-- bg: # 0f1115 ;--bg-alt : # 171a21 ;--border : # 262a33 ;--text : # e2e8f0 ;--text-dim : # 7a899d ;--accent : # 3b82f6 ;--accent-glow : # 60a5fa ;--danger : # ef4444 ;--warn : # f59e0b ;--ok : # 10b981 ;--radius : 10px ;--radius-sm : 4px ;--shadow : 0 4 px 12 px -2 px rgba (0 , 0 , 0 , .4 );--font : system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, 'Noto Sans SC' , sans-serif;--trans : .25s cubic-bezier (.4 , 0 , .2 , 1 );--logo-start : # 3b82f6 ;--logo-end : # 2563eb ;--logo-accent-grad-start : # 5fa8ff ;--logo-accent-grad-end : # 93c5fd }
2- body .light {-- bg: # f6f7f9 ;--bg-alt : # ffffff ;--border : # e2e8f0 ;--text : # 1e293b ;--text-dim : # 64748b ;--accent : # 2563eb ;--accent-glow : # 3b82f6 ;--shadow : 0 4px 20px -4px rgba (0 , 0 , 0 , .08 );--logo-start : # 2563eb ;--logo-end : # 1d4ed8 ;--logo-accent-grad-start : # 1d4ed8 ;--logo-accent-grad-end : # 60a5fa }
1+ : root {color-scheme : dark; -- bg: # 0d1117 ;--bg-alt : # 171d27 ;--surface : # 1d2530 ; --surface-soft : # 151b24 ; -- border: # 334155 ;--text : # f1f5f9 ;--text-dim : # a7b4c8 ;--accent : # 3b82f6 ;--accent-glow : # 7db5ff ;--danger : # f05252 ;--warn : # fbbf24 ;--ok : # 10b981 ;--radius : 10px ;--radius-sm : 4px ;--shadow : 0 8 px 22 px -10 px rgba (0 , 0 , 0 , .75 );--font : system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, 'Noto Sans SC' , sans-serif;--trans : .25s cubic-bezier (.4 , 0 , .2 , 1 );--logo-start : # 3b82f6 ;--logo-end : # 2563eb ;--logo-accent-grad-start : # 8bc1ff ;--logo-accent-grad-end : # d4e8ff }
2+ body .light {color-scheme : light; -- bg: # f6f7f9 ;--bg-alt : # ffffff; --surface : # ffffff ; --surface-soft : # f8fafc ;--border : # e2e8f0 ;--text : # 1e293b ;--text-dim : # 64748b ;--accent : # 2563eb ;--accent-glow : # 3b82f6 ;--shadow : 0 4px 20px -4px rgba (0 , 0 , 0 , .08 );--logo-start : # 2563eb ;--logo-end : # 1d4ed8 ;--logo-accent-grad-start : # 1d4ed8 ;--logo-accent-grad-end : # 60a5fa }
33* {box-sizing : border-box}
44html , body {height : 100% ;margin : 0 ;padding : 0 ;font-family : var (--font );background : var (--bg );color : var (--text );-webkit-font-smoothing : antialiased}
5- html .light {background : var (--bg )}
5+ html .light {background : var (--bg ); color-scheme : light }
66body , button {font-size : 14px ;line-height : 1.35 }
77a {color : var (--accent );text-decoration : none}
88a : hover {color : var (--accent-glow )}
99.topbar {position : sticky;top : 0 ;z-index : 20 ;display : flex;align-items : center;gap : 1rem ;padding : .75rem 1.25rem ;background : var (--bg-alt );border-bottom : 1px solid var (--border )}
1010.brand {font-weight : 600 ;letter-spacing : .5px ;font-size : 15px }
1111.nav {display : flex;gap : .5rem }
12- .nav button {background : transparent ;border : 1px solid var (--border );color : var (--text-dim );padding : .45rem .9rem ;border-radius : var (--radius-sm );cursor : pointer;display : flex;align-items : center;gap : .35rem ;transition : var (--trans );font-weight : 500 }
13- .nav button .active , .nav button : hover {color : var ( --text ) ;background : var (--accent );border-color : var (--accent );box-shadow : 0 0 0 1px var (--accent-glow ), 0 4px 10px -2px rgba (0 , 0 , 0 , .5 )}
12+ .nav button {background : var ( --surface-soft ) ;border : 1px solid var (--border );color : var (--text-dim );padding : .45rem .9rem ;border-radius : var (--radius-sm );cursor : pointer;display : flex;align-items : center;gap : .35rem ;transition : var (--trans );font-weight : 600 }
13+ .nav button .active , .nav button : hover {color : # fff ;background : var (--accent );border-color : var (--accent );box-shadow : 0 0 0 1px var (--accent-glow ), 0 4px 10px -2px rgba (0 , 0 , 0 , .5 )}
1414.actions {margin-left : auto;display : flex;align-items : center;gap : .75rem }
1515.actions button {background : var (--bg );border : 1px solid var (--border );color : var (--text-dim );height : 32px ;width : 38px ;border-radius : 8px ;cursor : pointer;display : grid;place-items : center;transition : var (--trans )}
16- .actions button : hover {color : var ( --text ) ;border-color : var (--accent );background : var (--accent )}
16+ .actions button : hover {color : # fff ;border-color : var (--accent );background : var (--accent )}
1717.wrapper {max-width : 1680px ;margin : 1.2rem auto;padding : 0 1.2rem ;display : flex;flex-direction : column;gap : 1.25rem }
1818.notice {padding : .9rem 1rem ;border : 1px solid var (--border );background : linear-gradient (145deg , var (--bg-alt ), var (--bg ));border-radius : var (--radius );display : flex;align-items : center;gap : .75rem ;font-size : 13px }
1919.notice .info : before {content : "" ;width : 8px ;height : 8px ;border-radius : 50% ;background : var (--accent );box-shadow : 0 0 0 4px color-mix (in srgb, var (--accent ) 20% , transparent)}
2020.panel {display : none;flex-direction : column;gap : .75rem ;animation : fade .4s ease}
2121.panel .active {display : flex}
2222.table-wrap {overflow : auto;border : 1px solid var (--border );border-radius : var (--radius );background : var (--bg-alt );box-shadow : var (--shadow )}
2323table .data {width : 100% ;border-collapse : separate;border-spacing : 0 ;min-width : 960px }
24- table .data thead th {position : sticky;top : 0 ;background : var (--bg-alt );font-weight : 500 ;text-align : left;font-size : 12px ;text-transform : uppercase;letter-spacing : .5px ;color : var (--text-dim );padding : .7rem .75rem ;border-bottom : 1px solid var (--border );white-space : nowrap}
24+ table .data thead th {position : sticky;top : 0 ;background : var (--surface-soft );font-weight : 700 ;text-align : left;font-size : 12px ;text-transform : uppercase;letter-spacing : .5px ;color : var (--text-dim );padding : .7rem .75rem ;border-bottom : 1px solid var (--border );white-space : nowrap}
2525table .data tbody td {padding : .55rem .75rem ;border-bottom : 1px solid var (--border );font-size : 13px ;vertical-align : middle;white-space : nowrap}
2626/* 防止数值变化导致列抖动:为月流量(7)/当前网络(8)/总流量(9)设置固定宽度并使用等宽数字 */
2727table .data th , table .data td {font-variant-numeric : tabular-nums}
@@ -85,7 +85,7 @@ body.light .caps-traffic.duo.heavy .half.out{background:#fbbf24;color:#111827;}
8585body .light .caps-traffic .duo .half + .half {border-left : 1px solid rgba (0 , 0 , 0 , .08 );}
8686.caps-traffic .duo .sm .half {padding : 1px 4px ;font-size : 10px ;min-width : 0 ;}
8787table .data tbody tr : last-child td {border-bottom : none}
88- table .data tbody tr : hover {background : rgba (255 , 255 , 255 , .04 )}
88+ table .data tbody tr : hover {background : rgba (255 , 255 , 255 , .07 )}
8989.badge {display : inline-block;padding : 2px 6px ;font-size : 11px ;border-radius : 12px ;font-weight : 500 ;line-height : 1.2 ;background : var (--bg );border : 1px solid var (--border );color : var (--text-dim )}
9090.badge .ok {background : rgba (16 , 185 , 129 , .15 );color : var (--ok );border-color : rgba (16 , 185 , 129 , .3 )}
9191.badge .warn {background : rgba (245 , 158 , 11 , .15 );color : var (--warn );border-color : rgba (245 , 158 , 11 , .4 )}
@@ -281,7 +281,7 @@ table.data tbody tr[class*="os-"]:hover{background:linear-gradient(180deg, color
281281/* 旧进度条相关样式已清理 */
282282.cards .card-header {display : flex;align-items : center;justify-content : space-between;gap : .5rem ;}
283283.cards .card-title {font-weight : 600 ;font-size : .95rem ;}
284- .cards .tag {font-size : .65rem ;padding : .15rem .4rem ;border-radius : 4px ;background : var (--border );letter-spacing : .5px ;}
284+ .cards .tag {font-size : .65rem ;padding : .15rem .4rem ;border-radius : 4px ;background : var (--surface ); color : var ( --text );letter-spacing : .5px ;}
285285.cards .status-pill {font-size : .6rem ;padding : .2rem .45rem ;border-radius : 999px ;font-weight : 500 ;}
286286.cards .status-pill .on {background : var (--ok );color : # fff ;}
287287.cards .status-pill .off {background : var (--danger );color : # fff ;}
@@ -325,7 +325,7 @@ table.data tbody tr[class*="os-"]:hover{background:linear-gradient(180deg, color
325325
326326/* 运维控制台增强 */
327327.ops-overview {display : grid;grid-template-columns : repeat (5 , minmax (140px , 1fr ));gap : .75rem }
328- .overview-card {border : 1px solid var (--border );background : var (--bg-alt );border-radius : 8px ;padding : .8rem .9rem ;display : flex;flex-direction : column;gap : .25rem ;min-height : 82px }
328+ .overview-card {border : 1px solid var (--border );background : linear-gradient ( 180 deg , var (--surface-soft ) , var ( -- bg-alt) );border-radius : 8px ;padding : .8rem .9rem ;display : flex;flex-direction : column;gap : .25rem ;min-height : 82px }
329329.overview-card .label {font-size : 12px ;color : var (--text-dim )}
330330.overview-card .value {font-size : 24px ;line-height : 1 ;font-weight : 700 ;font-variant-numeric : tabular-nums}
331331.overview-card .hint {font-size : 12px ;color : var (--text-dim );line-height : 1.3 }
@@ -337,11 +337,12 @@ table.data tbody tr[class*="os-"]:hover{background:linear-gradient(180deg, color
337337.ops-toolbar {display : flex;align-items : end;gap : .75rem ;flex-wrap : wrap;border : 1px solid var (--border );background : var (--bg-alt );border-radius : 8px ;padding : .75rem }
338338.search-field , .select-field {display : flex;flex-direction : column;gap : .3rem ;color : var (--text-dim );font-size : 12px }
339339.search-field input , .select-field select , .config-form input , .config-form textarea {border : 1px solid var (--border );background : var (--bg );color : var (--text );border-radius : 6px ;padding : 0 .65rem ;outline : none;transition : var (--trans )}
340+ .search-field input ::placeholder , .config-form input ::placeholder , .config-form textarea ::placeholder {color : color-mix (in srgb, var (--text-dim ) 78% , transparent);opacity : 1 }
340341.search-field input , .select-field select , .config-form input {height : 36px }
341342.config-form textarea {min-height : 92px ;resize : vertical;padding : .55rem .65rem ;line-height : 1.45 ;font-family : ui-monospace, SFMono-Regular, Menlo, monospace}
342343.search-field input : focus , .select-field select : focus , .config-form input : focus , .config-form textarea : focus {border-color : var (--accent );box-shadow : 0 0 0 3px color-mix (in srgb, var (--accent ) 18% , transparent)}
343344.search-field input {min-width : 280px }
344- .segmented {display : inline-flex;border : 1px solid var (--border );border-radius : 7px ;overflow : hidden;background : var (--bg )}
345+ .segmented {display : inline-flex;border : 1px solid var (--border );border-radius : 7px ;overflow : hidden;background : var (--surface-soft )}
345346.segmented button {height : 36px ;border : 0 ;border-right : 1px solid var (--border );background : transparent;color : var (--text-dim );padding : 0 .8rem ;cursor : pointer}
346347.segmented button : last-child {border-right : 0 }
347348.segmented button .active , .segmented button : hover {background : var (--accent );color : # fff }
0 commit comments