/* 资源列表:备注编辑、流量进度、批量确认及续费金额区域。 */ /* 导入方: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: var(--radius-md); 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); 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: var(--radius-md); 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; } } @media (width<640px) { .list-table[data-v-e23fddb0] .p-datatable-tbody > tr:not(.p-datatable-empty-message) { grid-template-columns: 20px minmax(0, 1fr) auto; grid-template-areas: "check name status" "check prod os" "check flow flow" "check ip due"; align-items: center; gap: 6px 10px; padding: 14px 16px; display: grid; } .list-table[data-v-e23fddb0] .p-datatable-tbody > tr:not(.p-datatable-empty-message) > td { text-align: left; justify-content: flex-start; gap: 4px; padding: 0 !important; font-size: 0.875rem; display: none; position: static; } .list-table[data-v-e23fddb0] .p-datatable-tbody > tr:not(.p-datatable-empty-message) > td::before { display: none; } .list-table[data-v-e23fddb0] .p-datatable-tbody > tr:not(.p-datatable-empty-message) > td:first-child { grid-area: check; display: flex; align-self: start; margin-top: 2px; } .list-table[data-v-e23fddb0] .p-datatable-tbody > tr:not(.p-datatable-empty-message) > td[data-label="操作系统"] { grid-area: os; display: flex; justify-content: flex-end; } .list-table[data-v-e23fddb0] .p-datatable-tbody > tr:not(.p-datatable-empty-message) > td[data-label="产品编号"] { grid-area: name; display: flex; color: var(--p-text-color); font-size: 1rem; font-weight: 600; } .list-table[data-v-e23fddb0] .p-datatable-tbody > tr:not(.p-datatable-empty-message) > td[data-label="产品状态"] { grid-area: status; display: flex; justify-content: flex-end; } .list-table[data-v-e23fddb0] .p-datatable-tbody > tr:not(.p-datatable-empty-message) > td[data-label="名称"] { grid-area: prod; display: flex; color: var(--p-text-muted-color); } .list-table[data-v-e23fddb0] .p-datatable-tbody > tr:not(.p-datatable-empty-message) > td[data-label="流量"] { grid-area: flow; display: flex; margin: 4px 0; } .list-table[data-v-e23fddb0] .p-datatable-tbody > tr:not(.p-datatable-empty-message) > td[data-label="ID"] { grid-area: id; display: none; color: var(--p-text-muted-color); } .list-table[data-v-e23fddb0] .p-datatable-tbody > tr:not(.p-datatable-empty-message) > td[data-label="IP"] { grid-area: ip; display: flex; color: var(--p-text-muted-color); } .list-table[data-v-e23fddb0] .p-datatable-tbody > tr:not(.p-datatable-empty-message) > td[data-label="到期时间"] { grid-area: due; display: flex; color: var(--p-text-muted-color); justify-content: flex-end; } .list-table[data-v-e23fddb0] .p-datatable-tbody > tr:not(.p-datatable-empty-message) > td[data-label="到期时间"]::before { content: "到期 "; color: var(--p-text-muted-color); font-size: 0.875rem; display: inline; } .list-table[data-v-e23fddb0] td[data-label="流量"] > * { flex: 1; } .list-table[data-v-e23fddb0] td[data-label="名称"] > * { align-items: flex-start; text-align: left; } .list-table[data-v-e23fddb0] .p-datatable-tbody > tr:not(.p-datatable-empty-message) > td[data-label="到期时间"] { white-space: nowrap !important; } .list-table[data-v-e23fddb0] .p-datatable-tbody > tr:not(.p-datatable-empty-message) > td[data-label="ID"] * { color: var(--p-text-muted-color); font-weight: 400; } .list-table[data-v-e23fddb0] .p-datatable-tbody > tr:not(.p-datatable-empty-message) > td[data-label="流量"]:has(> .host-traffic > .traffic-note:only-child) { display: none; } }