@@ -23,62 +23,20 @@ a:hover{color:var(--accent-glow)}
2323table . data { width : 100% ; border-collapse : separate; border-spacing : 0 ; min-width : 960px }
2424table . 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}
26- /* 防止数值变化导致列抖动:为月流量(7)/当前网络(8)/总流量(9)设置固定宽度并使用等宽数字 */
26+ /* 防止数值变化导致列抖动 */
2727table . data th , table . data td { font-variant-numeric : tabular-nums}
28- /* 月流量(2) 左对齐;当前网络(8)/总流量(9) 居中 */
29- # serversTable thead th : nth-child ( 2 ) , # serversTable tbody td : nth-child ( 2 ) {
30- /* 月流量列:向左贴近协议(减小左 padding),同时加大右 padding 拉开与节点距离 */
31- width : 128px ; min-width : 128px ; max-width : 128px ; font-variant-numeric : tabular-nums; letter-spacing : .3px ; text-align : center; padding : 0 1.05rem 0 .15rem ;
32- }
33- /* 节点列加宽,避免被月流量胶囊视觉挤压 */
34- # serversTable thead th : nth-child ( 3 ) , # serversTable tbody td : nth-child ( 3 ) {
35- width : 160px ; min-width : 160px ; max-width : 160px ;
36- }
37- /* 协议列继续收紧右侧 padding 与固定宽度 */
38- # serversTable thead th : nth-child ( 1 ) , # serversTable tbody td : nth-child ( 1 ) {
39- padding-right : .14rem ; width : 78px ; min-width : 78px ; max-width : 78px ; /* 扩大协议列并恢复适度间距 */
40- }
41- /* 让双色胶囊更靠近协议列 */
42- # serversTable tbody td : nth-child ( 2 ) . caps-traffic . duo { margin-left : -6px ; } /* 向协议方向微移,视觉更靠近;右侧 padding 增大避免靠近节点 */
43- # serversTable thead th : nth-child ( 8 ) , # serversTable tbody td : nth-child ( 8 ) ,
44- # serversTable thead th : nth-child ( 9 ) , # serversTable tbody td : nth-child ( 9 ) {
45- width : 132px ; min-width : 132px ; max-width : 132px ; font-variant-numeric : tabular-nums; letter-spacing : .3px ; text-align : center;
46- /* 进一步拉开与 CPU/内存/硬盘 组的视觉距离 */
47- padding-right : 1.95rem ;
48- }
49- /* CPU / 内存 / 硬盘 列:居中 + 固定宽度 与仪表盘一致 */
50- # serversTable thead th : nth-child ( 10 ) , # serversTable tbody td : nth-child ( 10 ) ,
51- # serversTable thead th : nth-child ( 11 ) , # serversTable tbody td : nth-child ( 11 ) ,
52- # serversTable thead th : nth-child ( 12 ) , # serversTable tbody td : nth-child ( 12 ) {
53- width : 70px ; min-width : 70px ; max-width : 70px ; text-align : center; padding-left : 1.1rem ; padding-right : 0 ; /* 继续右移并贴近右侧列 */
54- }
5528/* 月流量胶囊 */
5629. caps-traffic { display : inline-flex; align-items : center; gap : 6px ; background : linear-gradient ( 145deg , var ( --bg ) , var ( --bg-alt ) ) ; border : 1px solid var ( --border ) ; padding : 3px 12px 3px 10px ; border-radius : 999px ; font-size : 12px ; line-height : 1 ; font-weight : 500 ; position : relative; box-shadow : 0 2px 4px -2px rgba ( 0 , 0 , 0 , .35 ) , 0 0 0 1px rgba ( 255 , 255 , 255 , .03 ) ; }
5730. caps-traffic : before { content : "" ; position : absolute; inset : 0 ; border-radius : inherit; background : radial-gradient ( circle at 20% 20% , rgba ( 255 , 255 , 255 , .06 ) , transparent 70% ) ; pointer-events : none; }
58- . caps-traffic . io { display : inline-flex; align-items : center; gap : 2px ; font-variant-numeric : tabular-nums; letter-spacing : .3px ; }
59- . caps-traffic . io . in { color : var ( --ok ) ; }
60- . caps-traffic . io . out { color : var ( --accent ) ; }
61- . caps-traffic . sep { opacity : .4 ; font-size : 11px ; display : none; }
6231. caps-traffic . sm { padding : 2px 8px 2px 7px ; font-size : 11px ; gap : 5px ; }
63- . caps-traffic . sm . io { font-size : 11px ; }
6432/* 双色胶囊 */
6533. caps-traffic . duo { background : none; border : 0 ; gap : 0 ; padding : 0 ; box-shadow : none; position : relative; border-radius : 999px ; overflow : hidden; font-size : 12px ; }
66- /* 宽度按内容自适应(不再拉伸占满列) ,每半边仅为其文本 + padding,可容纳最大 111.1MB */
34+ /* 宽度按内容自适应,每半边仅为其文本 + padding */
6735. caps-traffic . duo . half { flex : 0 0 auto; display : flex; align-items : center; justify-content : center; padding : 2px 4px ; font-variant-numeric : tabular-nums; font-weight : 600 ; line-height : 1.25 ; /* 与 .pill 保持一致高度 */ letter-spacing : .25px ; color : # fff; font-size : 12px ; white-space : nowrap; }
68- /* 双色胶囊配色:
69- normal (默认): 左绿右蓝
70- heavy (>=1000GB 总量): 黄色提醒,不再使用故障红
71- */
72- /* normal 初始:淡绿色(入) + 淡蓝色(出) */
7336. caps-traffic . duo . normal . half . in { background : # d1fae5; color : # 065f46; } /* emerald-100 / text-emerald-800 */
74- body . light . caps-traffic . duo . normal . half . in { background : # d1fae5; color : # 065f46; }
7537. caps-traffic . duo . normal . half . out { background : # bfdbfe; color : # 1e3a8a; } /* blue-200 / text-blue-900 */
76- body . light . caps-traffic . duo . normal . half . out { background : # bfdbfe; color : # 1e3a8a; }
77-
7838. caps-traffic . duo . heavy . half . in { background : # fde68a; color : # 78350f; }
79- body . light . caps-traffic . duo . heavy . half . in { background : # fde68a; color : # 78350f; }
8039. caps-traffic . duo . heavy . half . out { background : # fbbf24; color : # 111827; }
81- body . light . caps-traffic . duo . heavy . half . out { background : # fbbf24; color : # 111827; }
8240
8341/* 半之间分隔线 */
8442. caps-traffic . duo . half + . half { border-left : 1px solid rgba ( 0 , 0 , 0 , .18 ) ; }
@@ -108,16 +66,6 @@ table.data tbody tr:hover{background:rgba(59,130,246,.045)}
10866. kv { display : flex; justify-content : space-between; gap : 1rem ; padding : .5rem .75rem ; background : linear-gradient ( 145deg , var ( --bg ) , var ( --bg-alt ) ) ; border : 1px solid var ( --border ) ; border-radius : 10px }
10967. kv span { white-space : nowrap}
11068. mono { font-family : ui-monospace, SFMono-Regular, Menlo, monospace; font-size : 12px }
111- /* 资源使用百分比色彩标签 */
112- /* 回退:移除资源使用百分比彩色标签样式 */
113-
114- /* 详情弹窗三列信息行 */
115-
116- /* 旧 spark 样式已移除,现使用半圆仪表盘 */
117- /* 全圆旧样式(保留以便回退) */
118- . gauge { --p : 0 ; --col : var ( --accent ) ; width : 74px ; height : 74px ; position : relative; display : grid; place-items : center; font-size : 11px ; font-family : ui-monospace, monospace; font-weight : 600 ; color : var ( --text ) ; }
119- . gauge : before { content : "" ; position : absolute; inset : 0 ; border-radius : 50% ; background : conic-gradient ( var ( --col ) calc ( var ( --p ) * 1turn ) , rgba ( 255 , 255 , 255 , 0.06 ) 0 ) ; mask : radial-gradient ( circle at 50% 50% , transparent 58% , # 000 59% ) ; -webkit-mask : radial-gradient ( circle at 50% 50% , transparent 58% , # 000 59% ) ; border : 1px solid var ( --border ) ; box-shadow : 0 2px 6px -2px rgba ( 0 , 0 , 0 , .4 ) , 0 0 0 1px rgba ( 255 , 255 , 255 , .05 ) ; }
120- . gauge span { position : relative; z-index : 1 }
12169
12270/* 半圆仪表盘 */
12371. gauge-half { --p : 0 ; width : 60px ; height : 34px ; position : relative; display : flex; flex-direction : column; align-items : center; justify-content : flex-start; font-family : ui-monospace, monospace; font-size : 10px ; font-weight : 600 ; gap : 0 ; color : var ( --text ) ; }
@@ -131,19 +79,25 @@ table.data tbody tr:hover{background:rgba(59,130,246,.045)}
13179/* 阈值颜色:CPU>=75%、内存>=80%、硬盘>=85% 警告黄,>=90% 危险红 */
13280. gauge-half [data-warn ] path . arc { stroke : var ( --warn ) }
13381. gauge-half [data-bad ] path . arc { stroke : var ( --danger ) }
134- /* 指针:以中心(50,50)为原点旋转;半圆角度范围 180deg -> 从 180deg (左) 到 0deg(右) */
13582. gauge-half span { line-height : 1 ; position : relative; top : -6px ; font-size : 12px ; }
13683/* 亮色模式细化对比度 */
13784body . light . gauge-half path . track { stroke : color-mix ( in srgb, var ( --text-dim ) 28% , transparent) }
13885body . light . gauge-half path . arc { filter : none}
139- body . light . gauge-half . needle { background : linear-gradient ( var ( --text ) , var ( --text-dim ) ) }
14086
14187/* status pill */
14288. pill { display : inline-block; padding : 2px 8px ; font-size : 12px ; font-weight : 600 ; border-radius : 999px ; letter-spacing : .45px ; min-width : 48px ; text-align : center; line-height : 1.25 ; border : 0 ; box-shadow : 0 2px 4px -1px rgba ( 0 , 0 , 0 , .4 ) , 0 0 0 1px rgba ( 255 , 255 , 255 , .04 ) ; transition : var ( --trans ) ; color : # fff}
14389. pill . on { background : var ( --ok ) }
14490. pill . off { background : var ( --danger ) }
14591. pill . on : hover { filter : brightness ( 1.1 ) }
14692. pill . off : hover { filter : brightness ( 1.1 ) }
93+ . proto-signal { display : inline-grid; grid-template-columns : 1fr 1fr ; width : 18px ; height : 18px ; border-radius : 50% ; overflow : hidden; vertical-align : middle; border : 1px solid color-mix ( in srgb, var ( --border ) 80% , transparent) ; box-shadow : 0 2px 5px -2px rgba ( 0 , 0 , 0 , .55 ) , 0 0 0 1px rgba ( 255 , 255 , 255 , .04 ) }
94+ . proto-signal i { display : block; min-width : 0 ; background : color-mix ( in srgb, var ( --text-dim ) 42% , var ( --bg-alt ) ) ; }
95+ . proto-signal [data-v4 = "1" ] . v4 , . proto-signal [data-v6 = "1" ] . v6 { background : # 22c55e}
96+ . proto-signal [data-state = "ipv4" ] . v4 { background : # 22c55e}
97+ . proto-signal [data-state = "ipv6" ] . v6 { background : # 22c55e}
98+ . proto-signal [data-state = "offline" ] . v4 , . proto-signal [data-state = "offline" ] . v6 { background : var ( --danger ) }
99+ body . light . proto-signal { border-color : color-mix ( in srgb, var ( --border ) 92% , # 94a3b8) ; box-shadow : 0 1px 3px rgba ( 15 , 23 , 42 , .12 ) }
100+ body . light . proto-signal i { background : # cbd5e1}
147101. virt-pill { --virt : var ( --accent ) ; display : inline-flex; align-items : center; justify-content : center; min-width : 50px ; padding : 2px 9px ; border-radius : 999px ; border : 1px solid color-mix ( in srgb, var ( --virt ) 42% , var ( --border ) ) ; background : color-mix ( in srgb, var ( --virt ) 14% , var ( --bg-alt ) ) ; color : color-mix ( in srgb, var ( --virt ) 72% , # fff) ; font-size : 12px ; font-weight : 650 ; line-height : 1.2 ; letter-spacing : .25px ; white-space : nowrap}
148102body . light . virt-pill { background : color-mix ( in srgb, var ( --virt ) 12% , # fff) ; color : color-mix ( in srgb, var ( --virt ) 68% , # 111827) }
149103. node-name { display : inline-block; max-width : 160px ; overflow : hidden; text-overflow : ellipsis; vertical-align : middle; font-family : ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size : 13px ; font-weight : 750 ; letter-spacing : .15px ; color : var ( --text ) }
@@ -163,12 +117,6 @@ body.light .load-core-bubble{background:color-mix(in srgb,var(--accent) 8%,#fff)
163117. bucket label { position : absolute; left : 0 ; right : 0 ; bottom : 2px ; font-size : 10px ; text-align : center; color : var ( --text-dim ) ; pointer-events : none}
164118. bucket : hover label { color : var ( --text ) }
165119
166- /* 居中联通电信移动列 */
167- # serversTable thead th : last-child , # serversTable tbody td : last-child { text-align : center; }
168- /* 放大第13列宽度以容纳更宽水桶 */
169- # serversTable thead th : nth-child ( 13 ) , # serversTable tbody td : nth-child ( 13 ) {
170- width : 150px ; min-width : 150px ; max-width : 150px ; padding-left : 0 ; padding-right : .55rem ; /* 去除左 padding 进一步贴近 */
171- }
172120/* 调整“总流量”表头(第9列)padding 使标题文字居中,不受正文额外右 padding 影响 */
173121# serversTable thead th : nth-child ( 9 ) { padding-left : .75rem ; padding-right : .75rem ; }
174122. buckets { justify-content : center}
@@ -205,37 +153,38 @@ body.light .load-core-bubble{background:color-mix(in srgb,var(--accent) 8%,#fff)
205153 . modal-content { max-height : 65vh ; overflow : auto; }
206154}
207155
208- /* SSL 表(证书)列宽与换行修正,避免复用服务器列宽导致名称与域名重叠 */
209- # sslTable th , # sslTable td { white-space : nowrap; padding : .55rem .75rem ; }
210- # sslTable th : nth-child ( 1 ) , # sslTable td : nth-child ( 1 ) { width : 140px ; min-width : 120px ; }
211- /* 域名允许换行以防过长挤压 */
212- # sslTable th : nth-child ( 2 ) , # sslTable td : nth-child ( 2 ) { white-space : normal; max-width : 320px ; overflow-wrap : anywhere; }
213-
214- /* === 覆盖:要求三个表 (servers / monitors / ssl) 全部改为自动宽度 === */
215- /* 1. 取消全局 table.data 的 min-width 对这三个表的影响 */
156+ /* 三个数据表使用自动宽度,按关键列单独约束 */
216157# serversTable , # monitorsTable , # sslTable { min-width : 0 ; }
217- /* 2. 统一去除之前为 serversTable 设定的列固定宽度,允许浏览器自动分配 */
218158# serversTable thead th , # serversTable tbody td ,
219159# monitorsTable thead th , # monitorsTable tbody td ,
220160# sslTable thead th , # sslTable tbody td {
221161 width : auto!important ; min-width : 0 !important ; max-width : none!important ;
222162 padding : .55rem .7rem ;
223163}
224- /* 3. 允许证书域名不受 max-width 限制(如仍需换行可保留 overflow-wrap) */
225164# sslTable th : nth-child ( 2 ) , # sslTable td : nth-child ( 2 ) { max-width : none; white-space : normal; overflow-wrap : anywhere; }
226- /* 4. 取消“联通|电信|移动”列固定宽度 */
227- # serversTable thead th : nth-child ( 13 ) , # serversTable tbody td : nth-child ( 13 ) { width : auto!important ; min-width : 0 !important ; }
228- /* 5. 如需稍微限制仪表盘相关列最小可读宽度,可设定一个较小下限 (可选) -- 暂不设置,完全交由自动布局 */
165+ # serversTable thead th : nth-child ( 13 ) , # serversTable tbody td : nth-child ( 13 ) { width : 112px !important ; min-width : 112px !important ; max-width : 112px !important ; padding-left : 0 !important ; padding-right : 0 !important ; text-align : center; }
229166
230- /* === 新增:为“月流量 / 当前网络 / 总流量”三列设置最小宽度,防止内容被压缩换行或挤压 === */
231- /* 目标最小宽度按示例 "111.1GB|111.1GB" 设计(13 个字符左右),取 16ch 留余量 */
232- # serversTable thead th : nth-child ( 2 ) , # serversTable tbody td : nth-child ( 2 ) ,
233167# serversTable thead th : nth-child ( 8 ) , # serversTable tbody td : nth-child ( 8 ) ,
234168# serversTable thead th : nth-child ( 9 ) , # serversTable tbody td : nth-child ( 9 ) {
235- min-width : 22 ch !important ; /* 保留自动宽度,但不小于此值 */
169+ min-width : 20 ch !important ; /* 保留自动宽度,但不小于此值 */
236170 text-align : center;
237171 font-variant-numeric : tabular-nums;
238172}
173+ # serversTable thead th : nth-child ( 2 ) , # serversTable tbody td : nth-child ( 2 ) {
174+ width : 134px !important ; min-width : 134px !important ; max-width : 134px !important ; text-align : center; padding-left : .35rem !important ; padding-right : .35rem !important ; font-variant-numeric : tabular-nums;
175+ }
176+ # serversTable thead th : nth-child ( 1 ) , # serversTable tbody td : nth-child ( 1 ) {
177+ width : 46px !important ; min-width : 46px !important ; max-width : 46px !important ; text-align : center; padding-left : 0 !important ; padding-right : 0 !important ;
178+ }
179+ # serversTable thead th : nth-child ( 3 ) , # serversTable tbody td : nth-child ( 3 ) {
180+ text-align : left; padding-left : 18px !important ;
181+ }
182+ # serversTable tbody td : nth-child ( 13 ) . buckets {
183+ min-width : 112px ;
184+ gap : 6px ;
185+ margin : 0 auto;
186+ justify-content : center;
187+ }
239188. cards . card { border : 1px solid var ( --border ) ; border-radius : 12px ; padding : .75rem .85rem ; background : linear-gradient ( 145deg , var ( --bg ) , var ( --bg-alt ) ) ; display : flex; flex-direction : column; gap : .45rem ; position : relative; }
240189. cards . card . offline { filter : saturate ( .92 ) ; }
241190. cards . card . alert-critical { border-color : rgba ( 239 , 68 , 68 , .6 ) ; background : linear-gradient ( 180deg , rgba ( 239 , 68 , 68 , .22 ) , rgba ( 239 , 68 , 68 , .12 ) ) , var ( --bg-alt ) ; box-shadow : 0 0 0 1px rgba ( 239 , 68 , 68 , .48 ) , 0 6px 18px -6px rgba ( 239 , 68 , 68 , .28 ) ; }
0 commit comments