Files
console-dev/app/assets/styles/HostList.B3U15sJm.css
T

337 lines
8.0 KiB
CSS

/* 资源列表:备注编辑、流量进度、批量确认及续费金额区域。 */
/* 导入方:app/components/HostList.vue、app/pages/cloud-servers/index.vue、app/pages/dedicated-servers/index.vue。 */
.traffic-error[data-v-e23fddb0] {
color: var(--p-text-muted-color);
align-items: center;
gap: 7px;
display: flex;
}
.catalog-empty-action[data-v-e23fddb0] {
border: 1px solid var(--p-primary-color);
background: var(--p-primary-color);
min-height: 36px;
color: var(--p-primary-contrast-color);
border-radius: 5px;
justify-content: center;
align-items: center;
gap: 8px;
padding: 8px 14px;
font-size: 0.9375rem;
font-weight: 500;
text-decoration: none;
display: inline-flex;
}
.catalog-empty-action[data-v-e23fddb0]:hover {
background: var(--p-primary-hover-color);
}
/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */
.catalog-empty-action[data-v-e23fddb0]:focus-visible {
outline: 2px solid var(--p-primary-color);
outline-offset: 3px;
}
.host-list-page .list-toolbar[data-v-e23fddb0] {
align-items: flex-start;
}
.host-list-page .list-toolbar-right[data-v-e23fddb0] {
width: 100%;
}
.list-description[data-v-e23fddb0] {
color: var(--p-text-muted-color, #64748b);
margin: 6px 0 0;
font-size: 0.9375rem;
line-height: 1.6;
}
.host-search[data-v-e23fddb0] {
align-items: center;
gap: 8px;
min-width: 0;
display: flex;
}
.host-detail-link[data-v-e23fddb0] {
color: var(--p-text-color);
border-radius: 3px;
text-decoration: none;
}
.host-detail-link[data-v-e23fddb0]:hover {
text-decoration: underline;
}
/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */
.host-detail-link[data-v-e23fddb0]:focus-visible {
outline: 2px solid var(--p-primary-color, #0052d9);
outline-offset: 4px;
}
.host-name[data-v-e23fddb0] {
font-weight: 400;
}
.host-product[data-v-e23fddb0] {
flex-direction: column;
align-items: flex-start;
gap: 4px;
max-width: 280px;
display: flex;
}
/* 备注使用按钮样式而非普通文本,保留键盘焦点和可点击反馈。 */
.host-notes-edit[data-v-e23fddb0] {
max-width: 100%;
min-height: 24px;
color: var(--p-text-muted-color);
font: inherit;
text-align: left;
cursor: pointer;
background: 0 0;
border: 0;
border-radius: 3px;
align-items: center;
gap: 6px;
padding: 0;
font-size: max(12px, 0.8125rem);
line-height: 1.5;
display: inline-flex;
}
.host-notes-edit[data-v-e23fddb0]:hover {
color: var(--p-primary-color);
}
.host-notes-edit[data-v-e23fddb0]:focus-visible {
outline: 2px solid var(--p-primary-color);
outline-offset: 3px;
}
.host-notes-edit > i[data-v-e23fddb0] {
flex-shrink: 0;
font-size: 0.75rem;
}
.host-notes-text[data-v-e23fddb0] {
-webkit-line-clamp: 2;
white-space: pre-wrap;
overflow-wrap: anywhere;
-webkit-box-orient: vertical;
display: -webkit-box;
overflow: hidden;
}
.host-notes-form[data-v-e23fddb0] {
flex-direction: column;
gap: 10px;
display: flex;
}
.host-notes-context[data-v-e23fddb0] {
color: var(--p-text-muted-color);
overflow-wrap: anywhere;
margin: 0 0 4px;
}
.table-scroll-hint[data-v-e23fddb0] {
display: none;
}
/* 流量显示区域:区分进度、周期、异常与无限流量,不用同一根进度条代表所有状态。 */
.host-traffic[data-v-e23fddb0] {
--traffic-accent: var(--p-green-600, #16a34a);
flex-direction: column;
justify-content: center;
gap: 8px;
min-width: 215px;
max-width: 280px;
min-height: 40px;
font-size: 1rem;
display: flex;
}
.traffic-track[data-v-e23fddb0] {
background: var(--p-content-border-color, #e2e8f0);
border-radius: 999px;
height: 6px;
overflow: hidden;
}
.traffic-track-fill[data-v-e23fddb0] {
border-radius: inherit;
background: var(--traffic-accent);
height: 100%;
}
.traffic-usage[data-v-e23fddb0] {
white-space: nowrap;
font-variant-numeric: tabular-nums;
align-items: center;
gap: 8px;
line-height: 1.5;
display: flex;
}
.traffic-usage > i[data-v-e23fddb0] {
color: var(--traffic-accent);
flex-shrink: 0;
font-size: 1.0625rem;
}
.traffic-period[data-v-e23fddb0] {
color: var(--p-text-muted-color);
align-items: center;
gap: 5px;
font-size: 0.8125rem;
line-height: 1;
display: flex;
}
.traffic-period > i[data-v-e23fddb0] {
font-size: 0.625rem;
}
.traffic-note[data-v-e23fddb0] {
color: var(--p-text-muted-color);
font-size: 0.875rem;
}
.traffic-unlimited[data-v-e23fddb0] {
align-items: center;
gap: 10px;
display: flex;
}
.traffic-infinity[data-v-e23fddb0] {
border: 1px solid color-mix(in srgb, var(--traffic-accent) 18%, transparent);
background: color-mix(in srgb, var(--traffic-accent) 7%, transparent);
width: 36px;
height: 36px;
color: var(--traffic-accent);
border-radius: 8px;
flex-shrink: 0;
place-items: center;
font-size: 1.75rem;
line-height: 1;
display: grid;
}
.traffic-unlimited-copy[data-v-e23fddb0] {
flex-direction: column;
gap: 2px;
display: flex;
}
.traffic-unlimited-label[data-v-e23fddb0] {
font-weight: 500;
line-height: 1.4;
}
.traffic-unlimited-copy > small[data-v-e23fddb0] {
font-size: 0.8125rem;
line-height: 1.5;
}
.app-dark .host-traffic {
--traffic-accent: var(--p-green-400, #4ade80);
}
.muted[data-v-e23fddb0] {
color: var(--p-text-muted-color, #94a3b8);
}
.os-cell[data-v-e23fddb0] {
overflow-wrap: anywhere;
align-items: center;
gap: 7px;
display: inline-flex;
}
.bulk-count[data-v-e23fddb0] {
color: var(--p-text-muted-color, #64748b);
margin-right: 4px;
font-size: 0.9375rem;
}
.bulk-hint[data-v-e23fddb0] {
color: var(--p-text-muted-color, #94a3b8);
font-size: 0.9375rem;
}
/* 批量操作与续费弹窗区域;数量/金额由脚本计算,这里仅控制展示。 */
.batch-dlg[data-v-e23fddb0] {
flex-direction: column;
gap: 16px;
display: flex;
}
.confirm-text[data-v-e23fddb0] {
color: var(--p-text-color, #334155);
margin: 0;
font-size: 1rem;
line-height: 1.7;
}
.renew-dlg[data-v-e23fddb0] {
flex-direction: column;
gap: 14px;
display: flex;
}
.renew-hint[data-v-e23fddb0] {
color: var(--p-text-muted-color, #94a3b8);
margin: 0;
font-size: 0.875rem;
line-height: 1.7;
}
.renew-prod[data-v-e23fddb0] {
flex-direction: column;
gap: 2px;
display: flex;
}
.renew-name[data-v-e23fddb0] {
font-weight: 500;
}
.renew-host[data-v-e23fddb0] {
color: var(--p-text-muted-color, #94a3b8);
font-size: 0.875rem;
}
.renew-select[data-v-e23fddb0] {
width: 100%;
}
.renew-promo[data-v-e23fddb0] {
width: 100%;
min-width: 140px;
}
.renew-price[data-v-e23fddb0] {
color: #ef4444;
font-weight: 500;
}
.renew-total[data-v-e23fddb0] {
border-top: 1px solid var(--p-content-border-color, #e2e8f0);
color: var(--p-text-muted-color, #64748b);
justify-content: flex-end;
align-items: baseline;
gap: 8px;
padding-top: 12px;
font-size: 0.9375rem;
display: flex;
}
.renew-total b[data-v-e23fddb0] {
color: #ef4444;
font-size: 1.375rem;
}
.nowrap[data-v-e23fddb0] {
white-space: nowrap;
}
.form-row[data-v-e23fddb0] {
align-items: center;
gap: 14px;
display: flex;
}
.form-row > label[data-v-e23fddb0] {
width: 70px;
color: var(--p-text-muted-color, #64748b);
flex-shrink: 0;
font-size: 0.9375rem;
}
/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */
@media (width<=768px) {
.list-toolbar-right > .host-search[data-v-e23fddb0] {
flex-basis: 100%;
}
.host-search .list-search[data-v-e23fddb0] {
flex: 1;
width: auto;
min-width: 0;
}
.list-foot .list-bulk > .p-button[data-v-e23fddb0] {
flex: 1;
}
.host-search > .p-button[data-v-e23fddb0] {
flex: none;
}
.list-foot .list-bulk[data-v-e23fddb0] {
flex-wrap: wrap;
}
.table-scroll-hint[data-v-e23fddb0] {
color: var(--p-text-muted-color, #64748b);
align-items: center;
gap: 6px;
margin: -8px 0 0;
font-size: 0.875rem;
display: flex;
}
.form-row[data-v-e23fddb0] {
flex-direction: column;
align-items: stretch;
gap: 8px;
}
.form-row[data-v-e23fddb0] .p-password-input {
width: 100%;
min-width: 0;
}
}