From 9eadc36b62f9b59f6fae4fbae1647f9d23073042 Mon Sep 17 00:00:00 2001 From: CieanYau Date: Fri, 6 Nov 2026 00:38:23 +0800 Subject: [PATCH] docs: explain stylesheet ownership, responsive rules and display boundaries --- app/assets/styles/AuthProviders.CgAWouSf.css | 5 ++++ .../styles/BackendNavEntry.Bx6IPica.css | 2 ++ .../styles/BackendNavigation.CEj4LnzI.css | 2 ++ .../styles/BuildUpdateNotice.CuqdqvlF.css | 3 +++ app/assets/styles/CaptchaField.BSN3ZbsD.css | 2 ++ app/assets/styles/ChartBox.CYP_mhat.css | 2 ++ .../styles/ClientLevelDialog.DcYabp-W.css | 3 +++ .../styles/CloudAccessExtras.CnBJlFAZ.css | 4 +++ .../styles/CloudProductPicker.CAm9rmUl.css | 6 +++++ app/assets/styles/CommonConfig.Cfik-oMe.css | 3 +++ app/assets/styles/CommonManage.qcc2l13i.css | 4 +++ app/assets/styles/CommonUpgrade.C8sZ-ExM.css | 2 ++ .../styles/ConfigBandwidth.CWSH1WJZ.css | 5 ++++ app/assets/styles/ConfigDiskAdd.C92e9ZuF.css | 4 +++ app/assets/styles/ConfigDiskCard.Dx9IqqQ_.css | 5 ++++ .../styles/ConfigResourceOption.Dj4VopnA.css | 2 ++ .../styles/ConsoleLegalFooter.DAYWmXIB.css | 6 +++++ app/assets/styles/DcimActions.Da2op5wy.css | 4 +++ app/assets/styles/DcimBilling.QV7PUjnH.css | 4 +++ app/assets/styles/DcimDefence.BYaQccXZ.css | 4 +++ app/assets/styles/DcimDomains.BT2s5hGW.css | 2 ++ app/assets/styles/DcimManage.BlqFeSOi.css | 7 +++++ app/assets/styles/DcimMonitor.CiStTCbZ.css | 2 ++ .../styles/DcimReinstallStatus.CuXeXmZ3.css | 3 +++ app/assets/styles/DcimUpgrade.DaLApYFa.css | 2 ++ app/assets/styles/FinanceConfig.CLwX1CC8.css | 4 +++ .../styles/FlowPacketPanel.-RJSx13z.css | 4 +++ app/assets/styles/GeetestField.DiieTibK.css | 3 +++ .../styles/GenericOAuthProviders.Bv8oNwXP.css | 2 ++ app/assets/styles/GlobalSearch.BQqObidy.css | 3 +++ .../styles/HomeConsumeTrend.DfrmEdD9.css | 2 ++ .../styles/HomeExpiringPanel.Ckflw2Hv.css | 2 ++ .../styles/HomeNoticePanel.e5-qgzAs.css | 4 +++ .../styles/HomeReferralPanel.DsgN33ME.css | 4 +++ .../styles/HomeServerPanel.Do7AgMDx.css | 3 +++ .../styles/HomeTicketPanel.LxPesukM.css | 2 ++ app/assets/styles/HomeTicketStat.C4kzybrY.css | 2 ++ app/assets/styles/HomeWalletCard.C5SHzGlJ.css | 3 +++ app/assets/styles/HostList.B3U15sJm.css | 8 ++++++ app/assets/styles/InstanceAccess.DIZBrksv.css | 5 ++++ .../styles/InstanceBilling.CvIGLT2J.css | 5 ++++ app/assets/styles/InstanceDisks.Ca7NZxYd.css | 3 +++ .../styles/InstanceLoadingShell.CwfiUwdU.css | 6 +++++ app/assets/styles/InstanceManage.apzbBV1c.css | 2 ++ .../styles/InstanceMonitor.B0X15iQt.css | 2 ++ .../InstanceMonitorSkeleton.C0FT51jJ.css | 2 ++ .../styles/InstanceNetwork.CyucZaZp.css | 5 ++++ .../styles/InstanceOnDemand.okGWwgIJ.css | 2 ++ .../styles/InstanceOverview.C9ExpxMB.css | 4 +++ .../styles/InstanceRenewDialog.BHDAL6d3.css | 4 +++ .../styles/InstanceServiceInfo.BftSVIeW.css | 4 +++ .../styles/InstanceSmsCode.CsITfIEU.css | 2 ++ .../styles/InstanceTraffic.CyyEAXl3.css | 5 ++++ app/assets/styles/JyCloudConfig.kGfttaHi.css | 6 +++++ app/assets/styles/KkyEcsConfig.BFaAwQPZ.css | 3 +++ app/assets/styles/KkyUpgrade.CkDmxFBM.css | 2 ++ .../styles/LegacyDcimActions.DcIrQby6.css | 3 +++ .../styles/LegacyDcimManage.5YRq508t.css | 7 +++++ .../styles/LegacyProductUpgrade.dzWGwGgY.css | 2 ++ .../styles/MfCloudBackupPanel.BTlEe-fy.css | 2 ++ app/assets/styles/MfCloudConfig.DbgUu8qr.css | 3 +++ app/assets/styles/MfCloudDefence.B2vl5Yip.css | 2 ++ app/assets/styles/MfCloudIps.jhFnuvcs.css | 3 +++ app/assets/styles/MfCloudLogs.MTqtLGjA.css | 4 +++ app/assets/styles/MfCloudNat.C1uXa4fX.css | 2 ++ .../MfCloudResourceUpgrade.bSwLWjPg.css | 3 +++ app/assets/styles/MfCloudUpgrade.N7TNG8F1.css | 3 +++ app/assets/styles/MfCloudVpc.CpOEbuWs.css | 2 ++ app/assets/styles/MfDcimConfig.BhC_eZ0V.css | 6 +++++ .../NotificationPreferences.DcH8Noxd.css | 3 +++ .../styles/OperationToasts.DfA_b8om.css | 5 ++++ app/assets/styles/OsIcon.CAi4Iz2S.css | 2 ++ app/assets/styles/PageInfoNotice._16xRFrB.css | 3 +++ app/assets/styles/PageSteps.B5K7G9zF.css | 2 ++ app/assets/styles/PaymentDialog.BNFKQF1U.css | 8 ++++++ app/assets/styles/PhoneCodeField.CwyHXfML.css | 2 ++ .../styles/ProductCategoryNotice.CwaR3eXN.css | 5 ++++ .../ProductConfigurationSummary.BqZns1LB.css | 3 +++ .../styles/ProductCustomFields.B2QMnPil.css | 2 ++ .../styles/ProductDescription.Ctb7jDuO.css | 7 +++++ .../styles/ProductGroupLabel.B1kWpFA-.css | 4 +++ app/assets/styles/PromoCodeField.qFEkB6Hm.css | 2 ++ app/assets/styles/RechargeDialog.DpsMly4r.css | 4 +++ app/assets/styles/RemfUpgrade.4stQ5ASH.css | 4 +++ app/assets/styles/RemoteConsole.DLmX5UZu.css | 6 +++++ app/assets/styles/RichTextEditor.NkmgPT5m.css | 4 +++ app/assets/styles/RingProgress.CVwR7il5.css | 2 ++ app/assets/styles/RoxyMascot.CDqPSf2d.css | 7 +++++ .../SecurityVerificationDialog.skYFo4v7.css | 2 ++ app/assets/styles/SensitiveValue.BSZlaRHT.css | 4 +++ .../styles/TicketAttachments.DtbJGLkE.css | 7 +++++ app/assets/styles/UploadField.BbTCTv6C.css | 2 ++ .../styles/WechatConnection.DI5ko1xy.css | 2 ++ app/assets/styles/WithdrawDialog.ks0wdKEK.css | 4 +++ app/assets/styles/_id_.C-0--Lx-.css | 4 +++ app/assets/styles/_id_.CSXsMADH.css | 4 +++ app/assets/styles/_id_.gjoJy9S8.css | 7 +++++ app/assets/styles/account.CTvLXxT_.css | 5 ++++ app/assets/styles/api-keys.Bq3Csr53.css | 4 +++ app/assets/styles/bind.CFZQE2UH.css | 3 +++ app/assets/styles/blank.DOa3C9wi.css | 8 ++++++ app/assets/styles/cart.CSS2vTmS.css | 9 +++++++ app/assets/styles/cloud-server.CcwlOXJ0.css | 2 ++ app/assets/styles/create.gX6gpD00.css | 4 +++ app/assets/styles/customize.Cc123Awf.css | 3 +++ .../styles/dedicated-server.CiJfMYtk.css | 7 +++++ app/assets/styles/default.DFUVVR1i.css | 8 ++++++ app/assets/styles/domains.GiD6NSti.css | 3 +++ app/assets/styles/entry.Cs9kvuGi.css | 27 +++++++++++++++++++ app/assets/styles/error-404.IMo4BvbT.css | 3 +++ app/assets/styles/error-500.CT6S2vcm.css | 3 +++ app/assets/styles/finance.BkxKMno0.css | 3 +++ app/assets/styles/groups.Buw8nwl1.css | 5 ++++ app/assets/styles/help.BSOB30LE.css | 6 +++++ app/assets/styles/home.DWX5YkpJ.css | 1 + app/assets/styles/invoice.B6sYFYlb.css | 4 +++ app/assets/styles/invoices.t1P1GXOx.css | 4 +++ app/assets/styles/logbook.Y7gm684m.css | 3 +++ app/assets/styles/login.Clyo2_3T.css | 5 ++++ app/assets/styles/messages.asRdYcVu.css | 6 +++++ app/assets/styles/news.CbIzdrjt.css | 4 +++ app/assets/styles/notices.BXNGOj-Q.css | 4 +++ app/assets/styles/official-site.pBD-PXD7.css | 10 +++++++ app/assets/styles/orders.BflDlvVz.css | 4 +++ app/assets/styles/pages.DytekQXu.css | 7 +++++ app/assets/styles/products.CrccEo2m.css | 6 +++++ app/assets/styles/public-order.0RThfr7m.css | 4 +++ app/assets/styles/realname.BpRCvfXO.css | 6 +++++ app/assets/styles/recommend.C1KCHBPJ.css | 7 +++++ app/assets/styles/remote-console.zcxaOxxS.css | 3 +++ app/assets/styles/resources._aUrMsvM.css | 2 ++ app/assets/styles/server.DGuhrprb.css | 6 +++++ app/assets/styles/settings.zV3AWuRw.css | 3 +++ app/assets/styles/ssh-keys.WWTOf2zG.css | 4 +++ app/assets/styles/tickets.Dz8JrDhQ.css | 3 +++ app/assets/styles/transfer.CAsJhVUW.css | 4 +++ app/assets/styles/vouchers.5FV4ozrh.css | 7 +++++ public/fonts/harmonyos-sans-sc/Bold.css | 4 ++- public/fonts/harmonyos-sans-sc/Regular.css | 4 ++- public/fonts/harmonyos-sans-sc/Semibold.css | 4 ++- 140 files changed, 568 insertions(+), 3 deletions(-) diff --git a/app/assets/styles/AuthProviders.CgAWouSf.css b/app/assets/styles/AuthProviders.CgAWouSf.css index eed09d3..244da89 100644 --- a/app/assets/styles/AuthProviders.CgAWouSf.css +++ b/app/assets/styles/AuthProviders.CgAWouSf.css @@ -1,3 +1,5 @@ +/* 第三方扫码登录:渠道切换、二维码占位/失效遮罩及客户端入口。 */ +/* 导入方:app/components/AuthProviders.vue、app/pages/login.vue。 */ .auth-providers[data-v-9d0ee2f9] { border-left: 1px solid var(--p-content-border-color); background: var(--p-content-hover-background); @@ -87,6 +89,7 @@ opacity: 0.45; cursor: not-allowed; } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .provider-tabs button[data-v-9d0ee2f9]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: -2px; @@ -98,6 +101,7 @@ min-height: 44px; font-size: 1em; } +/* 视口条件 (width<=760px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=760px) { .auth-providers[data-v-9d0ee2f9] { border-left: 0; @@ -113,6 +117,7 @@ height: 152px; } } +/* 尊重减少动态效果偏好:保留状态信息,降低或取消非必要动画。 */ @media (prefers-reduced-motion: reduce) { .provider-tab-indicator[data-v-9d0ee2f9] { transition: none; diff --git a/app/assets/styles/BackendNavEntry.Bx6IPica.css b/app/assets/styles/BackendNavEntry.Bx6IPica.css index f666974..72d3058 100644 --- a/app/assets/styles/BackendNavEntry.Bx6IPica.css +++ b/app/assets/styles/BackendNavEntry.Bx6IPica.css @@ -1,3 +1,5 @@ +/* 后端配置的单条导航:外链图标与不可用项的视觉区分。 */ +/* 导入方:app/components/BackendNavEntry.vue、app/components/BackendNavigation.vue、app/layouts/default.vue。 */ .configured-external[data-v-b0009398], .nav-unavailable[data-v-b0009398] { align-items: center; diff --git a/app/assets/styles/BackendNavigation.CEj4LnzI.css b/app/assets/styles/BackendNavigation.CEj4LnzI.css index cb33cf9..3cfc1b3 100644 --- a/app/assets/styles/BackendNavigation.CEj4LnzI.css +++ b/app/assets/styles/BackendNavigation.CEj4LnzI.css @@ -1,3 +1,5 @@ +/* 后端导航加载状态:错误提示及占位骨架。 */ +/* 导入方:app/components/BackendNavigation.vue、app/layouts/default.vue。 */ .nav-load-error[data-v-02b58e93] { color: var(--p-text-muted-color); justify-content: space-between; diff --git a/app/assets/styles/BuildUpdateNotice.CuqdqvlF.css b/app/assets/styles/BuildUpdateNotice.CuqdqvlF.css index 3dc7895..28ba33f 100644 --- a/app/assets/styles/BuildUpdateNotice.CuqdqvlF.css +++ b/app/assets/styles/BuildUpdateNotice.CuqdqvlF.css @@ -1,3 +1,5 @@ +/* 构建更新通知:固定提示条及用户确认/刷新操作区。 */ +/* 导入方:app/components/BuildUpdateNotice.vue、nuxt.config.ts。 */ .build-notice[data-v-fc2ba853] { z-index: 1100; border: 1px solid var(--p-content-border-color); @@ -22,6 +24,7 @@ gap: 8px; display: flex; } +/* 视口条件 (width<=500px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=500px) { .build-notice[data-v-fc2ba853] { bottom: 12px; diff --git a/app/assets/styles/CaptchaField.BSN3ZbsD.css b/app/assets/styles/CaptchaField.BSN3ZbsD.css index dffeb76..4803c77 100644 --- a/app/assets/styles/CaptchaField.BSN3ZbsD.css +++ b/app/assets/styles/CaptchaField.BSN3ZbsD.css @@ -1,3 +1,5 @@ +/* 图形验证码字段:输入、图片与换图行布局。 */ +/* 导入方:app/components/CaptchaField.vue、app/components/SecurityVerificationDialog.vue、app/components/instance/DcimActions.vue、app/components/instance/DcimBilling.vue、app/components/instance/DcimManage.vue、app/components/instance/InstanceAccess.vue、app/components/instance/InstanceBilling.vue、app/components/instance/InstanceSmsCode.vue、app/pages/account/index.vue、app/pages/forgot-password.vue、app/pages/login.vue、app/pages/oauth/bind.vue、app/pages/register.vue、app/pages/transfer/index.vue。 */ .field[data-v-5ba6618f] { flex-direction: column; gap: 6px; diff --git a/app/assets/styles/ChartBox.CYP_mhat.css b/app/assets/styles/ChartBox.CYP_mhat.css index 3b938b3..ffa9142 100644 --- a/app/assets/styles/ChartBox.CYP_mhat.css +++ b/app/assets/styles/ChartBox.CYP_mhat.css @@ -1,3 +1,5 @@ +/* 图表容器:限制子图表宽度并裁剪溢出,实际高度由组件传入。 */ +/* 导入方:app/components/ChartBox.vue、app/components/home/HomeConsumeTrend.vue、app/components/instance/CommonManage.vue、app/pages/servers/server.vue。 */ .chart-box[data-v-c86d748f] { width: 100%; min-width: 0; diff --git a/app/assets/styles/ClientLevelDialog.DcYabp-W.css b/app/assets/styles/ClientLevelDialog.DcYabp-W.css index 490a7d9..9484d61 100644 --- a/app/assets/styles/ClientLevelDialog.DcYabp-W.css +++ b/app/assets/styles/ClientLevelDialog.DcYabp-W.css @@ -1,3 +1,5 @@ +/* 会员等级弹窗:等级指标、描述和加载状态。 */ +/* 导入方:app/components/ClientLevelDialog.vue、app/pages/account/index.vue。 */ .lvl-state[data-v-7c5ffb84] { text-align: center; color: var(--p-text-muted-color, #94a3b8); @@ -45,6 +47,7 @@ .lvl-value[data-v-7c5ffb84] { font-size: 1.25rem; } +/* 视口条件 (width<=480px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=480px) { .lvl-grid[data-v-7c5ffb84] { grid-template-columns: minmax(0, 1fr); diff --git a/app/assets/styles/CloudAccessExtras.CnBJlFAZ.css b/app/assets/styles/CloudAccessExtras.CnBJlFAZ.css index 6c6925c..da5f5f6 100644 --- a/app/assets/styles/CloudAccessExtras.CnBJlFAZ.css +++ b/app/assets/styles/CloudAccessExtras.CnBJlFAZ.css @@ -1,3 +1,5 @@ +/* 云实例附加访问信息:键值表格与行内操作。 */ +/* 导入方:app/components/instance/CloudAccessExtras.vue、app/components/instance/InstanceAccess.vue。 */ .cloud-extras[data-v-94e7f654] { flex-direction: column; gap: 14px; @@ -33,6 +35,7 @@ padding: 14px; font-weight: 600; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .kv > div[data-v-94e7f654] { overflow-wrap: anywhere; min-width: 0; @@ -57,6 +60,7 @@ font-size: 0.875rem; line-height: 1.6; } +/* 视口条件 (width<=480px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=480px) { .kv[data-v-94e7f654] { grid-template-columns: 100px minmax(0, 1fr); diff --git a/app/assets/styles/CloudProductPicker.CAm9rmUl.css b/app/assets/styles/CloudProductPicker.CAm9rmUl.css index e31e2c5..c6c6d9a 100644 --- a/app/assets/styles/CloudProductPicker.CAm9rmUl.css +++ b/app/assets/styles/CloudProductPicker.CAm9rmUl.css @@ -1,3 +1,5 @@ +/* 云商品选择器:区域/商品选项、选中状态及空目录提示。 */ +/* 导入方:app/components/config/CloudProductPicker.vue、app/pages/products/cloud-server.vue。 */ .cloud-product-picker[data-v-a438862d] { flex-direction: column; gap: 24px; @@ -32,6 +34,7 @@ gap: 14px; display: grid; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .product-option[data-v-a438862d], .zone-option[data-v-a438862d] { border: 1px solid var(--p-content-border-color); @@ -88,6 +91,7 @@ opacity: 0.55; cursor: not-allowed; } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .product-option[data-v-a438862d]:focus-visible, .zone-option[data-v-a438862d]:focus-visible { outline: 2px solid var(--p-primary-color); @@ -108,6 +112,7 @@ color: var(--p-primary-color); text-decoration: none; } +/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=767px) { .product-options[data-v-a438862d], .zone-options[data-v-a438862d] { @@ -115,6 +120,7 @@ gap: 8px; } } +/* 视口条件 (width<=390px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=390px) { .product-options[data-v-a438862d] { grid-template-columns: minmax(0, 1fr); diff --git a/app/assets/styles/CommonConfig.Cfik-oMe.css b/app/assets/styles/CommonConfig.Cfik-oMe.css index bb4fae6..2326168 100644 --- a/app/assets/styles/CommonConfig.Cfik-oMe.css +++ b/app/assets/styles/CommonConfig.Cfik-oMe.css @@ -1,3 +1,5 @@ +/* 通用商品配置:级联/重复项、磁盘网格和周期异常提示。 */ +/* 导入方:app/components/config/CommonConfig.vue、app/pages/products/[id].vue、app/pages/products/cloud-server.vue。 */ .cycle-warn[data-v-bc59a2b1] { flex-shrink: 0; } @@ -39,6 +41,7 @@ gap: 16px; display: grid; } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .storage-grid[data-v-bc59a2b1] { grid-template-columns: minmax(0, 1fr); diff --git a/app/assets/styles/CommonManage.qcc2l13i.css b/app/assets/styles/CommonManage.qcc2l13i.css index fd207ac..b2c5164 100644 --- a/app/assets/styles/CommonManage.qcc2l13i.css +++ b/app/assets/styles/CommonManage.qcc2l13i.css @@ -1,3 +1,5 @@ +/* 通用实例管理:标签页、表单、操作区及图表容器。 */ +/* 导入方:app/components/instance/CommonManage.vue、app/pages/servers/server.vue。 */ .common-manage[data-v-34fd3c5d] { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); @@ -44,6 +46,7 @@ .muted[data-v-34fd3c5d] { color: var(--p-text-muted-color); } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .common-grid dd[data-v-34fd3c5d] { overflow-wrap: anywhere; margin: 8px 0 0; @@ -74,6 +77,7 @@ .common-body[data-v-34fd3c5d] .p-datatable { max-width: 100%; } +/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=600px) { .common-body[data-v-34fd3c5d] { padding: 16px; diff --git a/app/assets/styles/CommonUpgrade.C8sZ-ExM.css b/app/assets/styles/CommonUpgrade.C8sZ-ExM.css index dd2971e..5395287 100644 --- a/app/assets/styles/CommonUpgrade.C8sZ-ExM.css +++ b/app/assets/styles/CommonUpgrade.C8sZ-ExM.css @@ -1,3 +1,5 @@ +/* 通用商品升级:配置选项和升级工具栏。 */ +/* 导入方:app/components/instance/CommonManage.vue、app/components/instance/CommonUpgrade.vue、app/pages/servers/server.vue。 */ .common-upgrade[data-v-830ee5e4], .upgrade-option[data-v-830ee5e4] { gap: 14px; diff --git a/app/assets/styles/ConfigBandwidth.CWSH1WJZ.css b/app/assets/styles/ConfigBandwidth.CWSH1WJZ.css index 311d711..b27509d 100644 --- a/app/assets/styles/ConfigBandwidth.CWSH1WJZ.css +++ b/app/assets/styles/ConfigBandwidth.CWSH1WJZ.css @@ -1,3 +1,5 @@ +/* 带宽配置:容量单位、滑块和说明文本。 */ +/* 导入方:app/components/config/ConfigBandwidth.vue、app/components/config/JyCloudConfig.vue、app/components/config/KkyEcsConfig.vue、app/components/config/MfCloudConfig.vue、app/components/instance/DcimManage.vue、app/components/instance/DcimUpgrade.vue、app/components/instance/InstanceBilling.vue、app/components/kkyecs/KkyUpgrade.vue、app/components/mfcloud/MfCloudResourceUpgrade.vue、app/pages/products/[id].vue、app/pages/products/cloud-server.vue。 */ .bandwidth-field[data-v-45a9c613] { flex-direction: column; gap: 12px; @@ -30,6 +32,7 @@ .bandwidth-help > i[data-v-45a9c613] { font-size: 1rem; } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .bandwidth-help[data-v-45a9c613]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 3px; @@ -103,6 +106,7 @@ height: 19px; box-shadow: 0 1px 2px #0000002e; } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .bandwidth-slider[data-v-45a9c613]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 9px; @@ -113,6 +117,7 @@ .bandwidth-capacity.is-disabled[data-v-45a9c613] { opacity: 0.6; } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .bandwidth-field[data-v-45a9c613] { max-width: none; diff --git a/app/assets/styles/ConfigDiskAdd.C92e9ZuF.css b/app/assets/styles/ConfigDiskAdd.C92e9ZuF.css index 8530a78..7fdf2f8 100644 --- a/app/assets/styles/ConfigDiskAdd.C92e9ZuF.css +++ b/app/assets/styles/ConfigDiskAdd.C92e9ZuF.css @@ -1,3 +1,5 @@ +/* 新增磁盘入口:与已有磁盘卡片对齐的操作区域。 */ +/* 导入方:app/components/config/ConfigDiskAdd.vue、app/components/config/JyCloudConfig.vue、app/components/config/KkyEcsConfig.vue、app/components/config/MfCloudConfig.vue、app/pages/products/[id].vue、app/pages/products/cloud-server.vue。 */ .storage-add[data-v-68361f8e] { border: 2px dashed var(--p-content-border-color); width: 100%; @@ -30,6 +32,7 @@ color: var(--p-primary-color); background: var(--p-highlight-background); } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .storage-add[data-v-68361f8e]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 3px; @@ -38,6 +41,7 @@ cursor: not-allowed; opacity: 0.55; } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .storage-add[data-v-68361f8e] { min-height: 170px; diff --git a/app/assets/styles/ConfigDiskCard.Dx9IqqQ_.css b/app/assets/styles/ConfigDiskCard.Dx9IqqQ_.css index 4d60d25..ee482e0 100644 --- a/app/assets/styles/ConfigDiskCard.Dx9IqqQ_.css +++ b/app/assets/styles/ConfigDiskCard.Dx9IqqQ_.css @@ -1,3 +1,5 @@ +/* 磁盘配置卡片:容量输入、滑块、说明和移除操作。 */ +/* 导入方:app/components/config/CommonConfig.vue、app/components/config/ConfigDiskCard.vue、app/components/config/FinanceConfig.vue、app/components/config/JyCloudConfig.vue、app/components/config/KkyEcsConfig.vue、app/components/config/MfCloudConfig.vue、app/components/config/MfDcimConfig.vue、app/pages/products/[id].vue、app/pages/products/cloud-server.vue、app/pages/products/dedicated-server/customize.vue。 */ .storage-field[data-v-83c644c5] { min-width: 0; } @@ -27,6 +29,7 @@ min-height: 20px; display: flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .storage-card-header strong[data-v-83c644c5] { color: var(--p-highlight-color); overflow-wrap: anywhere; @@ -103,6 +106,7 @@ height: 19px; box-shadow: 0 1px 2px #0000002e; } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .storage-slider[data-v-83c644c5]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 9px; @@ -144,6 +148,7 @@ opacity: 0.5; cursor: not-allowed; } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .storage-card[data-v-83c644c5] { gap: 20px; diff --git a/app/assets/styles/ConfigResourceOption.Dj4VopnA.css b/app/assets/styles/ConfigResourceOption.Dj4VopnA.css index 2f6b5ad..76d3694 100644 --- a/app/assets/styles/ConfigResourceOption.Dj4VopnA.css +++ b/app/assets/styles/ConfigResourceOption.Dj4VopnA.css @@ -1,3 +1,5 @@ +/* 资源范围选项:范围控件与辅助说明。 */ +/* 导入方:app/components/config/ConfigResourceOption.vue、app/components/config/JyCloudConfig.vue、app/components/config/MfCloudConfig.vue、app/pages/products/[id].vue、app/pages/products/cloud-server.vue。 */ .resource-range[data-v-5a04c843] { flex-wrap: wrap; align-items: center; diff --git a/app/assets/styles/ConsoleLegalFooter.DAYWmXIB.css b/app/assets/styles/ConsoleLegalFooter.DAYWmXIB.css index ce16d69..1d25588 100644 --- a/app/assets/styles/ConsoleLegalFooter.DAYWmXIB.css +++ b/app/assets/styles/ConsoleLegalFooter.DAYWmXIB.css @@ -1,3 +1,5 @@ +/* 控制台法律页脚:备案/协议链接与打印布局。 */ +/* 导入方:app/components/ConsoleLegalFooter.vue、app/layouts/default.vue、app/layouts/public-order.vue。 */ .console-legal-footer[data-v-81b185f4] { border-top: 1px solid var(--console-panel-border, #e2e8f0); color: var(--p-text-muted-color, #64748b); @@ -15,11 +17,13 @@ padding: 18px 14px 22px; display: flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .legal-footer-inner[data-v-81b185f4] > * { overflow-wrap: anywhere; min-width: 0; max-width: 100%; } +/* 打印介质覆盖:独立处理纸张上的显隐和排版,不直接沿用屏幕布局。 */ @media print { .console-legal-footer[data-v-81b185f4] { display: none; @@ -35,11 +39,13 @@ text-underline-offset: 3px; text-decoration: underline; } +/* 视口条件 (width<=1023px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1023px) { .main:has(.config-mobile-total) .console-legal-footer { margin-bottom: calc(84px + env(safe-area-inset-bottom, 0px)); } } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .legal-footer-inner[data-v-81b185f4] { flex-direction: column; diff --git a/app/assets/styles/DcimActions.Da2op5wy.css b/app/assets/styles/DcimActions.Da2op5wy.css index c0bc241..ee284ca 100644 --- a/app/assets/styles/DcimActions.Da2op5wy.css +++ b/app/assets/styles/DcimActions.Da2op5wy.css @@ -1,8 +1,11 @@ +/* 独立服务器操作确认:目标说明、表单与风险确认勾选。 */ +/* 导入方:app/components/instance/DcimActions.vue、app/components/instance/DcimManage.vue。 */ .action-form[data-v-a1044895] { flex-direction: column; gap: 10px; display: flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .target[data-v-a1044895] { overflow-wrap: anywhere; margin: 0 0 4px; @@ -29,6 +32,7 @@ .muted[data-v-a1044895] { color: var(--p-text-muted-color); } +/* 视口条件 (width<=480px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=480px) { .form-grid[data-v-a1044895] { grid-template-columns: 1fr; diff --git a/app/assets/styles/DcimBilling.QV7PUjnH.css b/app/assets/styles/DcimBilling.QV7PUjnH.css index 19ae2da..37c573b 100644 --- a/app/assets/styles/DcimBilling.QV7PUjnH.css +++ b/app/assets/styles/DcimBilling.QV7PUjnH.css @@ -1,3 +1,5 @@ +/* 独立服务器账务:计费键值、关联订单和操作表单。 */ +/* 导入方:app/components/instance/DcimBilling.vue。 */ .billing[data-v-9a8e05c2] { flex-direction: column; gap: 14px; @@ -33,6 +35,7 @@ dt[data-v-9a8e05c2] { color: var(--p-text-muted-color); font-weight: 600; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ dd[data-v-9a8e05c2] { overflow-wrap: anywhere; flex-wrap: wrap; @@ -69,6 +72,7 @@ dd small[data-v-9a8e05c2] { .form p[data-v-9a8e05c2] { margin: 0; } +/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=600px) { .rows > div[data-v-9a8e05c2] { grid-template-columns: 95px minmax(0, 1fr); diff --git a/app/assets/styles/DcimDefence.BYaQccXZ.css b/app/assets/styles/DcimDefence.BYaQccXZ.css index 3677563..1f0977f 100644 --- a/app/assets/styles/DcimDefence.BYaQccXZ.css +++ b/app/assets/styles/DcimDefence.BYaQccXZ.css @@ -1,3 +1,5 @@ +/* 独立服务器防御设置:状态、配置失败与操作表单。 */ +/* 导入方:app/components/instance/DcimDefence.vue。 */ .defence[data-v-2f38c55b], .form[data-v-2f38c55b] { flex-direction: column; @@ -53,6 +55,7 @@ dd[data-v-2f38c55b] { margin: 0; padding: 28px; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .form p[data-v-2f38c55b], .muted[data-v-2f38c55b] { overflow-wrap: anywhere; @@ -65,6 +68,7 @@ dd[data-v-2f38c55b] { gap: 7px; display: flex; } +/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=600px) { .rows > div[data-v-2f38c55b] { grid-template-columns: 100px 1fr; diff --git a/app/assets/styles/DcimDomains.BT2s5hGW.css b/app/assets/styles/DcimDomains.BT2s5hGW.css index a57e275..e09d7e4 100644 --- a/app/assets/styles/DcimDomains.BT2s5hGW.css +++ b/app/assets/styles/DcimDomains.BT2s5hGW.css @@ -1,3 +1,5 @@ +/* 独立服务器域名管理:工具栏和空列表提示。 */ +/* 导入方:app/components/instance/DcimDomains.vue。 */ .domains[data-v-6c2c5ee1] { flex-direction: column; gap: 14px; diff --git a/app/assets/styles/DcimManage.BlqFeSOi.css b/app/assets/styles/DcimManage.BlqFeSOi.css index 14cc2c4..8296712 100644 --- a/app/assets/styles/DcimManage.BlqFeSOi.css +++ b/app/assets/styles/DcimManage.BlqFeSOi.css @@ -1,3 +1,5 @@ +/* 独立服务器综合管理:概览卡片、资源、访问凭据、网络与记录列表。 */ +/* 导入方:app/components/instance/DcimManage.vue。 */ .compact-monitor-slot[data-v-e2d08c68] { min-width: 0; min-height: 154px; @@ -104,6 +106,7 @@ color: var(--p-text-muted-color); flex-shrink: 0; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .compact-rows dd[data-v-e2d08c68] { overflow-wrap: anywhere; text-align: right; @@ -143,6 +146,7 @@ gap: 7px; display: flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .resource-list dd[data-v-e2d08c68] { overflow-wrap: anywhere; text-align: right; @@ -363,6 +367,7 @@ .mono[data-v-e2d08c68] { font-family: var(--font-mono, monospace); } +/* 视口条件 (width<=1199px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1199px) { .overview[data-v-e2d08c68], .stack[data-v-e2d08c68] { @@ -375,6 +380,7 @@ font-size: 0.9375rem; } } +/* 视口条件 (width<=950px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=950px) { .overview[data-v-e2d08c68] { grid-template-columns: repeat(2, minmax(0, 1fr)); @@ -385,6 +391,7 @@ display: grid; } } +/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=600px) { .overview[data-v-e2d08c68] { grid-template-columns: 1fr; diff --git a/app/assets/styles/DcimMonitor.CiStTCbZ.css b/app/assets/styles/DcimMonitor.CiStTCbZ.css index 3339a02..252d38f 100644 --- a/app/assets/styles/DcimMonitor.CiStTCbZ.css +++ b/app/assets/styles/DcimMonitor.CiStTCbZ.css @@ -1,3 +1,5 @@ +/* 独立服务器监控:图表视口、入站/出站图例、空态与失败态。 */ +/* 导入方:app/components/instance/DcimMonitor.vue。 */ .chart-viewport[data-v-eb47944f] { min-width: 0; } diff --git a/app/assets/styles/DcimReinstallStatus.CuXeXmZ3.css b/app/assets/styles/DcimReinstallStatus.CuXeXmZ3.css index d3d89c0..2d04461 100644 --- a/app/assets/styles/DcimReinstallStatus.CuXeXmZ3.css +++ b/app/assets/styles/DcimReinstallStatus.CuXeXmZ3.css @@ -1,3 +1,5 @@ +/* 重装系统任务进度:任务状态与错误反馈。 */ +/* 导入方:app/components/instance/DcimManage.vue、app/components/instance/DcimReinstallStatus.vue。 */ .task-status[data-v-d99d9473] { flex-wrap: wrap; align-items: center; @@ -12,6 +14,7 @@ color: var(--p-red-600); overflow: hidden; } +/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=600px) { .task-status[data-v-d99d9473] { align-content: center; diff --git a/app/assets/styles/DcimUpgrade.DaLApYFa.css b/app/assets/styles/DcimUpgrade.DaLApYFa.css index 949d6e9..68d0687 100644 --- a/app/assets/styles/DcimUpgrade.DaLApYFa.css +++ b/app/assets/styles/DcimUpgrade.DaLApYFa.css @@ -1,3 +1,5 @@ +/* 独立服务器升级面板的基础排列。 */ +/* 导入方:app/components/instance/DcimManage.vue、app/components/instance/DcimUpgrade.vue。 */ .dcim-upgrade[data-v-790898bc] { gap: 14px; display: grid; diff --git a/app/assets/styles/FinanceConfig.CLwX1CC8.css b/app/assets/styles/FinanceConfig.CLwX1CC8.css index 7b7d875..e27ecfc 100644 --- a/app/assets/styles/FinanceConfig.CLwX1CC8.css +++ b/app/assets/styles/FinanceConfig.CLwX1CC8.css @@ -1,3 +1,6 @@ +/* 财务模块商品配置:必填标记、磁盘网格和固定容量展示。 */ +/* 导入方:app/components/config/FinanceConfig.vue、app/pages/products/[id].vue、app/pages/products/cloud-server.vue。 */ +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .hint[data-v-1ac7876b] { color: var(--p-text-muted-color); overflow-wrap: anywhere; @@ -27,6 +30,7 @@ color: var(--p-text-muted-color); font-size: 1rem; } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .storage-grid[data-v-1ac7876b] { grid-template-columns: minmax(0, 1fr); diff --git a/app/assets/styles/FlowPacketPanel.-RJSx13z.css b/app/assets/styles/FlowPacketPanel.-RJSx13z.css index 3431cf7..59800c8 100644 --- a/app/assets/styles/FlowPacketPanel.-RJSx13z.css +++ b/app/assets/styles/FlowPacketPanel.-RJSx13z.css @@ -1,3 +1,5 @@ +/* 流量包面板:剩余包列表、可购卡片与不可用状态。 */ +/* 导入方:app/components/instance/DcimManage.vue、app/components/instance/FlowPacketPanel.vue、app/components/instance/InstanceManage.vue、app/components/instance/InstanceNetwork.vue、app/components/instance/InstanceOverview.vue、app/components/instance/InstanceServiceInfo.vue、app/pages/servers/server.vue。 */ .block[data-v-ca0029df] { flex-direction: column; gap: 14px; @@ -29,6 +31,7 @@ font-size: 1rem; display: grid; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .kv[data-v-ca0029df] > * { overflow-wrap: anywhere; min-width: 0; @@ -62,6 +65,7 @@ padding: 0; font-size: 1rem; } +/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=767px) { .kv[data-v-ca0029df] { grid-template-columns: 100px minmax(0, 1fr); diff --git a/app/assets/styles/GeetestField.DiieTibK.css b/app/assets/styles/GeetestField.DiieTibK.css index 4743c7d..dec2468 100644 --- a/app/assets/styles/GeetestField.DiieTibK.css +++ b/app/assets/styles/GeetestField.DiieTibK.css @@ -1,3 +1,5 @@ +/* 极验入口:验证码触发按钮的可见状态。 */ +/* 导入方:app/components/CaptchaField.vue、app/components/GeetestField.vue、app/components/SecurityVerificationDialog.vue、app/components/instance/DcimActions.vue、app/components/instance/DcimBilling.vue、app/components/instance/DcimManage.vue、app/components/instance/InstanceAccess.vue、app/components/instance/InstanceBilling.vue、app/components/instance/InstanceSmsCode.vue、app/pages/account/index.vue、app/pages/forgot-password.vue、app/pages/login.vue、app/pages/oauth/bind.vue、app/pages/register.vue、app/pages/transfer/index.vue。 */ .geetest-field[data-v-4cd14cdc] { flex-direction: column; gap: 8px; @@ -21,6 +23,7 @@ .geetest-trigger[data-v-4cd14cdc]:hover:not(:disabled) { border-color: var(--p-primary-color); } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .geetest-trigger[data-v-4cd14cdc]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 2px; diff --git a/app/assets/styles/GenericOAuthProviders.Bv8oNwXP.css b/app/assets/styles/GenericOAuthProviders.Bv8oNwXP.css index 55cdc6c..6fad7f3 100644 --- a/app/assets/styles/GenericOAuthProviders.Bv8oNwXP.css +++ b/app/assets/styles/GenericOAuthProviders.Bv8oNwXP.css @@ -1,3 +1,5 @@ +/* 第三方登录入口:多渠道按钮的排列与间距。 */ +/* 导入方:app/components/GenericOAuthProviders.vue、app/pages/login.vue。 */ .oauth-providers[data-v-45e5a5aa] { text-align: center; gap: 12px; diff --git a/app/assets/styles/GlobalSearch.BQqObidy.css b/app/assets/styles/GlobalSearch.BQqObidy.css index 007e5cc..85fa5d5 100644 --- a/app/assets/styles/GlobalSearch.BQqObidy.css +++ b/app/assets/styles/GlobalSearch.BQqObidy.css @@ -1,3 +1,5 @@ +/* 全局搜索浮层:查询框、分组结果、加载/错误/重试状态。 */ +/* 导入方:app/components/GlobalSearch.vue。 */ .gs[data-v-bc4d898a] { margin-right: 4px; position: relative; @@ -64,6 +66,7 @@ padding: 6px; text-decoration: underline; } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .gs-item[data-v-bc4d898a]:focus-visible, .gs-retry[data-v-bc4d898a]:focus-visible { outline: 2px solid var(--p-primary-color); diff --git a/app/assets/styles/HomeConsumeTrend.DfrmEdD9.css b/app/assets/styles/HomeConsumeTrend.DfrmEdD9.css index 2ed52a9..8943673 100644 --- a/app/assets/styles/HomeConsumeTrend.DfrmEdD9.css +++ b/app/assets/styles/HomeConsumeTrend.DfrmEdD9.css @@ -1,3 +1,5 @@ +/* 首页消费趋势:图表占位区域与容器尺寸。 */ +/* 导入方:app/components/home/HomeConsumeTrend.vue。 */ .chart-wrap[data-v-90c11ad2] { padding: 0 10px 10px; } diff --git a/app/assets/styles/HomeExpiringPanel.Ckflw2Hv.css b/app/assets/styles/HomeExpiringPanel.Ckflw2Hv.css index 0cb2904..e9da7e1 100644 --- a/app/assets/styles/HomeExpiringPanel.Ckflw2Hv.css +++ b/app/assets/styles/HomeExpiringPanel.Ckflw2Hv.css @@ -1,3 +1,5 @@ +/* 首页到期资源:资源列表与临近到期徽标。 */ +/* 导入方:app/components/home/HomeExpiringPanel.vue、app/pages/index.vue。 */ .home-list[data-v-9017f053] { padding: 0 18px 14px; } diff --git a/app/assets/styles/HomeNoticePanel.e5-qgzAs.css b/app/assets/styles/HomeNoticePanel.e5-qgzAs.css index dbde49a..6017ad1 100644 --- a/app/assets/styles/HomeNoticePanel.e5-qgzAs.css +++ b/app/assets/styles/HomeNoticePanel.e5-qgzAs.css @@ -1,3 +1,5 @@ +/* 首页公告:骨架、标题列表及公告详情内容。 */ +/* 导入方:app/components/home/HomeNoticePanel.vue、app/pages/index.vue。 */ .home-list[data-v-a93c47c1] { padding: 0 18px; } @@ -30,6 +32,7 @@ .notice-row:hover .notice-title[data-v-a93c47c1] { color: var(--p-primary-color, #0052d9); } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .notice-row[data-v-a93c47c1]:focus-visible { outline: 2px solid var(--p-primary-color, #0052d9); outline-offset: -2px; @@ -40,6 +43,7 @@ margin-bottom: 12px; font-size: 0.9375rem; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .detail-content[data-v-a93c47c1] { overflow-wrap: anywhere; font-size: 1rem; diff --git a/app/assets/styles/HomeReferralPanel.DsgN33ME.css b/app/assets/styles/HomeReferralPanel.DsgN33ME.css index 08e3dfa..014b16a 100644 --- a/app/assets/styles/HomeReferralPanel.DsgN33ME.css +++ b/app/assets/styles/HomeReferralPanel.DsgN33ME.css @@ -1,3 +1,5 @@ +/* 首页推广卡片:余额、邀请统计、空态及窄容器排版。 */ +/* 导入方:app/components/home/HomeReferralPanel.vue、app/pages/index.vue。 */ .home-referral[data-v-8690c3a5] { container-type: inline-size; } @@ -27,6 +29,7 @@ font-size: 0.875rem; line-height: 1.286rem; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .referral-overview dd[data-v-8690c3a5], .referral-stats dd[data-v-8690c3a5] { font-variant-numeric: tabular-nums; @@ -132,6 +135,7 @@ margin-top: 18px; display: grid; } +/* 容器条件 (width<=380px) 下调整内部排列,判断的是容器可用宽度,不是整个视口。 */ @container (width<=380px) { .referral-body[data-v-8690c3a5] { gap: 20px; diff --git a/app/assets/styles/HomeServerPanel.Do7AgMDx.css b/app/assets/styles/HomeServerPanel.Do7AgMDx.css index 53a7b2b..e2b07ef 100644 --- a/app/assets/styles/HomeServerPanel.Do7AgMDx.css +++ b/app/assets/styles/HomeServerPanel.Do7AgMDx.css @@ -1,3 +1,5 @@ +/* 首页服务器卡片:资源分类标签、列表骨架及分页。 */ +/* 导入方:app/components/home/HomeServerPanel.vue、app/pages/index.vue。 */ .home-tabs[data-v-7ce76df7], .server-head[data-v-7ce76df7] { border-bottom: 1px solid var(--p-content-border-color); @@ -76,6 +78,7 @@ .server-pagination[data-v-7ce76df7] .p-paginator { background: 0 0; } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .server-head[data-v-7ce76df7] { flex-wrap: wrap; diff --git a/app/assets/styles/HomeTicketPanel.LxPesukM.css b/app/assets/styles/HomeTicketPanel.LxPesukM.css index 05c94ba..44fca8c 100644 --- a/app/assets/styles/HomeTicketPanel.LxPesukM.css +++ b/app/assets/styles/HomeTicketPanel.LxPesukM.css @@ -1,3 +1,5 @@ +/* 首页工单卡片:列表骨架、工单行及状态标记。 */ +/* 导入方:app/components/home/HomeTicketPanel.vue、app/pages/index.vue。 */ .home-list[data-v-bacdfa58] { padding: 0 18px; } diff --git a/app/assets/styles/HomeTicketStat.C4kzybrY.css b/app/assets/styles/HomeTicketStat.C4kzybrY.css index 31a715e..b945afa 100644 --- a/app/assets/styles/HomeTicketStat.C4kzybrY.css +++ b/app/assets/styles/HomeTicketStat.C4kzybrY.css @@ -1,3 +1,5 @@ +/* 首页工单统计:统计网格、数字和分类名称。 */ +/* 导入方:app/components/home/HomeTicketStat.vue。 */ .stat-grid[data-v-6971a1b9] { grid-template-columns: 1fr 1fr; gap: 8px; diff --git a/app/assets/styles/HomeWalletCard.C5SHzGlJ.css b/app/assets/styles/HomeWalletCard.C5SHzGlJ.css index 846f293..3bc33a1 100644 --- a/app/assets/styles/HomeWalletCard.C5SHzGlJ.css +++ b/app/assets/styles/HomeWalletCard.C5SHzGlJ.css @@ -1,3 +1,5 @@ +/* 首页钱包卡片:余额展示及单/多操作按钮排列。 */ +/* 导入方:app/components/home/HomeWalletCard.vue、app/pages/index.vue。 */ .wallet-body[data-v-0dbd1f86] { flex-direction: column; flex: 1; @@ -28,6 +30,7 @@ .wallet-actions[data-v-0dbd1f86] .p-button { min-height: 36px; } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .wallet-body[data-v-0dbd1f86] { padding-top: 28px; diff --git a/app/assets/styles/HostList.B3U15sJm.css b/app/assets/styles/HostList.B3U15sJm.css index a68ba0c..a50eee5 100644 --- a/app/assets/styles/HostList.B3U15sJm.css +++ b/app/assets/styles/HostList.B3U15sJm.css @@ -1,3 +1,5 @@ +/* 资源列表:备注编辑、流量进度、批量确认及续费金额区域。 */ +/* 导入方: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; @@ -22,6 +24,7 @@ .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; @@ -52,6 +55,7 @@ .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; @@ -66,6 +70,7 @@ max-width: 280px; display: flex; } +/* 备注使用按钮样式而非普通文本,保留键盘焦点和可点击反馈。 */ .host-notes-edit[data-v-e23fddb0] { max-width: 100%; min-height: 24px; @@ -115,6 +120,7 @@ .table-scroll-hint[data-v-e23fddb0] { display: none; } +/* 流量显示区域:区分进度、周期、异常与无限流量,不用同一根进度条代表所有状态。 */ .host-traffic[data-v-e23fddb0] { --traffic-accent: var(--p-green-600, #16a34a); flex-direction: column; @@ -217,6 +223,7 @@ color: var(--p-text-muted-color, #94a3b8); font-size: 0.9375rem; } +/* 批量操作与续费弹窗区域;数量/金额由脚本计算,这里仅控制展示。 */ .batch-dlg[data-v-e23fddb0] { flex-direction: column; gap: 16px; @@ -290,6 +297,7 @@ flex-shrink: 0; font-size: 0.9375rem; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .list-toolbar-right > .host-search[data-v-e23fddb0] { flex-basis: 100%; diff --git a/app/assets/styles/InstanceAccess.DIZBrksv.css b/app/assets/styles/InstanceAccess.DIZBrksv.css index 89ddb48..51bb30e 100644 --- a/app/assets/styles/InstanceAccess.DIZBrksv.css +++ b/app/assets/styles/InstanceAccess.DIZBrksv.css @@ -1,3 +1,5 @@ +/* 实例访问管理:凭据、修复/重装选项、系统选择及风险确认。 */ +/* 导入方:app/components/instance/InstanceAccess.vue。 */ .ac[data-v-cd28d8b4] { gap: 42px; } @@ -45,6 +47,7 @@ padding: 14px; font-weight: 600; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .kv > div[data-v-cd28d8b4] { overflow-wrap: anywhere; min-width: 0; @@ -112,6 +115,7 @@ font-size: 0.875rem; line-height: 1.6; } +/* 重装系统表单按镜像、登录方式、磁盘处理排列;此处的视觉确认不能替代接口安全验证。 */ .re-form[data-v-cd28d8b4] { flex-direction: column; gap: 21px; @@ -262,6 +266,7 @@ font-size: 1rem; line-height: 1.7; } +/* 视口条件 (width<=480px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=480px) { .kv[data-v-cd28d8b4] { grid-template-columns: 100px minmax(0, 1fr); diff --git a/app/assets/styles/InstanceBilling.CvIGLT2J.css b/app/assets/styles/InstanceBilling.CvIGLT2J.css index 4389c8c..d4aa060 100644 --- a/app/assets/styles/InstanceBilling.CvIGLT2J.css +++ b/app/assets/styles/InstanceBilling.CvIGLT2J.css @@ -1,3 +1,5 @@ +/* 实例计费管理:续费/升级信息、自动续费与退款状态。 */ +/* 导入方:app/components/instance/InstanceBilling.vue。 */ .bill[data-v-4e83e0f6] { gap: 28px; } @@ -38,6 +40,7 @@ padding: 14px; font-weight: 600; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .kv[data-v-4e83e0f6] > :last-child { overflow-wrap: anywhere; min-width: 0; @@ -79,11 +82,13 @@ border-radius: 6px; padding: 14px; } +/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=767px) { .kv[data-v-4e83e0f6] { grid-template-columns: 100px minmax(0, 1fr); } } +/* 自动续费状态与操作区域,实际开关结果以接口回读为准。 */ .auto-renew[data-v-4e83e0f6] { align-items: center; gap: 10px; diff --git a/app/assets/styles/InstanceDisks.Ca7NZxYd.css b/app/assets/styles/InstanceDisks.Ca7NZxYd.css index 5dfcdde..3ef954c 100644 --- a/app/assets/styles/InstanceDisks.Ca7NZxYd.css +++ b/app/assets/styles/InstanceDisks.Ca7NZxYd.css @@ -1,3 +1,5 @@ +/* 实例磁盘管理:磁盘分组、行操作、扩容报价及错误状态。 */ +/* 导入方:app/components/instance/InstanceDisks.vue。 */ .disks[data-v-22ec0282] { gap: 42px; } @@ -66,6 +68,7 @@ color: var(--p-text-muted-color, #64748b); font-size: 1rem; } +/* 扩容报价展示;价格有效性和提交条件由组件逻辑核对。 */ .quote[data-v-22ec0282] { border-top: 1px solid var(--p-content-border-color, #e2e8f0); justify-content: space-between; diff --git a/app/assets/styles/InstanceLoadingShell.CwfiUwdU.css b/app/assets/styles/InstanceLoadingShell.CwfiUwdU.css index 8d987b4..b39b7c0 100644 --- a/app/assets/styles/InstanceLoadingShell.CwfiUwdU.css +++ b/app/assets/styles/InstanceLoadingShell.CwfiUwdU.css @@ -1,3 +1,5 @@ +/* 实例页面加载骨架:复现概览栏位以减少加载过程的布局跳动。 */ +/* 导入方:app/components/instance/DcimManage.vue、app/components/instance/InstanceLoadingShell.vue、app/components/instance/InstanceManage.vue、app/components/instance/LegacyDcimManage.vue、app/pages/servers/server.vue。 */ .instance-loading-shell[data-v-f12d9300] { min-width: 0; } @@ -44,17 +46,20 @@ .shell-secondary[data-v-f12d9300] { min-height: 230px; } +/* 视口条件 (width<=1199px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1199px) { .dcim .shell-column[data-v-f12d9300], .dcim .shell-grid[data-v-f12d9300] { gap: 14px; } } +/* 视口条件 (width<=1023px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1023px) { .instance-loading-shell:not(.dcim) .shell-grid[data-v-f12d9300] { grid-template-columns: 1fr; } } +/* 视口条件 (width<=950px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=950px) { .dcim .shell-grid[data-v-f12d9300] { grid-template-columns: repeat(2, minmax(0, 1fr)); @@ -65,6 +70,7 @@ display: grid; } } +/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=600px) { .dcim .shell-grid[data-v-f12d9300] { grid-template-columns: 1fr; diff --git a/app/assets/styles/InstanceManage.apzbBV1c.css b/app/assets/styles/InstanceManage.apzbBV1c.css index aba3d8a..df9592b 100644 --- a/app/assets/styles/InstanceManage.apzbBV1c.css +++ b/app/assets/styles/InstanceManage.apzbBV1c.css @@ -1,3 +1,5 @@ +/* 实例管理容器:备份等子面板的基础间距。 */ +/* 导入方:app/components/instance/InstanceManage.vue。 */ .instance-manage[data-v-627058ac] { min-width: 0; } diff --git a/app/assets/styles/InstanceMonitor.B0X15iQt.css b/app/assets/styles/InstanceMonitor.B0X15iQt.css index 6b24adc..81d858b 100644 --- a/app/assets/styles/InstanceMonitor.B0X15iQt.css +++ b/app/assets/styles/InstanceMonitor.B0X15iQt.css @@ -1,3 +1,5 @@ +/* 实例监控:时间范围、图表标题/单位及错误/无数据提示。 */ +/* 导入方:app/components/instance/InstanceMonitor.vue。 */ .mon[data-v-6a900feb] { flex-direction: column; gap: 21px; diff --git a/app/assets/styles/InstanceMonitorSkeleton.C0FT51jJ.css b/app/assets/styles/InstanceMonitorSkeleton.C0FT51jJ.css index fe190ff..fea7573 100644 --- a/app/assets/styles/InstanceMonitorSkeleton.C0FT51jJ.css +++ b/app/assets/styles/InstanceMonitorSkeleton.C0FT51jJ.css @@ -1,3 +1,5 @@ +/* 监控加载骨架:范围切换、图例、图表和刷新占位。 */ +/* 导入方:app/components/instance/DcimManage.vue、app/components/instance/InstanceManage.vue、app/components/instance/InstanceMonitorSkeleton.vue。 */ .monitor-skeleton[data-v-5a1fd568] { flex-direction: column; gap: 21px; diff --git a/app/assets/styles/InstanceNetwork.CyucZaZp.css b/app/assets/styles/InstanceNetwork.CyucZaZp.css index 1a70072..87bcfb1 100644 --- a/app/assets/styles/InstanceNetwork.CyucZaZp.css +++ b/app/assets/styles/InstanceNetwork.CyucZaZp.css @@ -1,3 +1,5 @@ +/* 实例网络信息:键值项、操作列与网络空态。 */ +/* 导入方:app/components/instance/InstanceNetwork.vue。 */ .nw[data-v-aa906366] { flex-direction: column; gap: 28px; @@ -65,6 +67,7 @@ .nw[data-v-aa906366] .network-table .empty { padding: 0; } +/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=767px) { .nw[data-v-aa906366] .network-head { align-items: flex-start; @@ -104,6 +107,7 @@ .kv > span[data-v-aa906366] { color: var(--p-text-muted-color, #64748b); } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .kv > b[data-v-aa906366] { overflow-wrap: anywhere; min-width: 0; @@ -153,6 +157,7 @@ .info-table .kv > span[data-v-aa906366] { font-weight: 600; } +/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=767px) { .info-table .kv[data-v-aa906366] { grid-template-columns: 100px minmax(0, 1fr); diff --git a/app/assets/styles/InstanceOnDemand.okGWwgIJ.css b/app/assets/styles/InstanceOnDemand.okGWwgIJ.css index ca3a0e6..63e2a15 100644 --- a/app/assets/styles/InstanceOnDemand.okGWwgIJ.css +++ b/app/assets/styles/InstanceOnDemand.okGWwgIJ.css @@ -1,3 +1,5 @@ +/* 按需计费:计费操作按钮和确认说明区域。 */ +/* 导入方:app/components/instance/InstanceOnDemand.vue。 */ .on-demand[data-v-2710106c] { gap: 12px; font-size: 13px; diff --git a/app/assets/styles/InstanceOverview.C9ExpxMB.css b/app/assets/styles/InstanceOverview.C9ExpxMB.css index f783e28..8bebd9e 100644 --- a/app/assets/styles/InstanceOverview.C9ExpxMB.css +++ b/app/assets/styles/InstanceOverview.C9ExpxMB.css @@ -1,3 +1,5 @@ +/* 实例概览:信息卡片、资源图表、网络状态和磁盘摘要。 */ +/* 导入方:app/components/instance/InstanceManage.vue、app/components/instance/InstanceOverview.vue。 */ .ov[data-v-fe24aa37] { flex-direction: column; gap: 12px; @@ -116,6 +118,7 @@ max-width: 100%; overflow: hidden; } +/* 资源概览区:图表、数值和不可用状态分开布局。 */ .res[data-v-fe24aa37] { flex-direction: column; } @@ -234,6 +237,7 @@ margin: 0; font-size: 0.875rem; } +/* 视口条件 (width<=1023px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1023px) { .grid[data-v-fe24aa37] { grid-template-columns: 1fr; diff --git a/app/assets/styles/InstanceRenewDialog.BHDAL6d3.css b/app/assets/styles/InstanceRenewDialog.BHDAL6d3.css index d4925f8..0002d31 100644 --- a/app/assets/styles/InstanceRenewDialog.BHDAL6d3.css +++ b/app/assets/styles/InstanceRenewDialog.BHDAL6d3.css @@ -1,3 +1,5 @@ +/* 实例续费弹窗:周期、优惠码、折扣及最终报价行。 */ +/* 导入方:app/components/instance/DcimBilling.vue、app/components/instance/InstanceBilling.vue、app/components/instance/InstanceRenewDialog.vue。 */ .rd[data-v-01429388] { flex-direction: column; gap: 16px; @@ -54,6 +56,7 @@ white-space: nowrap; flex-shrink: 0; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .rd-code[data-v-01429388] { overflow-wrap: anywhere; background: var(--p-content-hover-background); @@ -68,6 +71,7 @@ margin: 0; font-size: 0.875rem; } +/* 视口条件 (width<=480px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=480px) { .rd-row[data-v-01429388] { flex-direction: column; diff --git a/app/assets/styles/InstanceServiceInfo.BftSVIeW.css b/app/assets/styles/InstanceServiceInfo.BftSVIeW.css index 68a7036..1ee6055 100644 --- a/app/assets/styles/InstanceServiceInfo.BftSVIeW.css +++ b/app/assets/styles/InstanceServiceInfo.BftSVIeW.css @@ -1,3 +1,5 @@ +/* 实例服务信息:键值资料、密码显示按钮及流量恢复说明。 */ +/* 导入方:app/components/instance/DcimManage.vue、app/components/instance/InstanceManage.vue、app/components/instance/InstanceServiceInfo.vue、app/pages/servers/server.vue。 */ .service-info[data-v-0ff5d554] { background: var(--console-panel-bg); border: 1px solid var(--console-panel-border); @@ -30,6 +32,7 @@ dt[data-v-0ff5d554] { color: var(--p-text-muted-color); flex: 0 0 88px; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ dd[data-v-0ff5d554] { overflow-wrap: anywhere; min-width: 0; @@ -53,6 +56,7 @@ dd[data-v-0ff5d554] { margin: 0; line-height: 1.7; } +/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=767px) { .service-rows[data-v-0ff5d554] { grid-template-columns: 1fr; diff --git a/app/assets/styles/InstanceSmsCode.CsITfIEU.css b/app/assets/styles/InstanceSmsCode.CsITfIEU.css index 89febf4..93d1ecd 100644 --- a/app/assets/styles/InstanceSmsCode.CsITfIEU.css +++ b/app/assets/styles/InstanceSmsCode.CsITfIEU.css @@ -1,3 +1,5 @@ +/* 实例操作短信验证:验证码输入与发送按钮排列。 */ +/* 导入方:app/components/instance/DcimActions.vue、app/components/instance/DcimManage.vue、app/components/instance/InstanceAccess.vue、app/components/instance/InstanceSmsCode.vue。 */ .instance-code[data-v-741dd729] { gap: 8px; display: grid; diff --git a/app/assets/styles/InstanceTraffic.CyyEAXl3.css b/app/assets/styles/InstanceTraffic.CyyEAXl3.css index 0bb8218..ee38ec0 100644 --- a/app/assets/styles/InstanceTraffic.CyyEAXl3.css +++ b/app/assets/styles/InstanceTraffic.CyyEAXl3.css @@ -1,3 +1,5 @@ +/* 实例流量详情:汇总数据、恢复操作与流量表格。 */ +/* 导入方:app/components/instance/InstanceManage.vue、app/components/instance/InstanceNetwork.vue、app/components/instance/InstanceOverview.vue、app/components/instance/InstanceTraffic.vue。 */ .traffic-summary[data-v-484c7b21] { flex-direction: column; gap: 12px; @@ -18,6 +20,7 @@ .traffic-row > span[data-v-484c7b21] { flex-shrink: 0; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .traffic-row > b[data-v-484c7b21] { overflow-wrap: anywhere; text-align: right; @@ -62,6 +65,7 @@ min-height: 49px; display: grid; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .traffic-table .traffic-row[data-v-484c7b21] > * { overflow-wrap: anywhere; min-width: 0; @@ -86,6 +90,7 @@ .traffic-table .traffic-error[data-v-484c7b21] { flex-wrap: wrap; } +/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=767px) { .traffic-table .traffic-row[data-v-484c7b21] { grid-template-columns: 100px minmax(0, 1fr); diff --git a/app/assets/styles/JyCloudConfig.kGfttaHi.css b/app/assets/styles/JyCloudConfig.kGfttaHi.css index 03edc5f..1a1d085 100644 --- a/app/assets/styles/JyCloudConfig.kGfttaHi.css +++ b/app/assets/styles/JyCloudConfig.kGfttaHi.css @@ -1,3 +1,5 @@ +/* 对应云产品配置:机型筛选表、资源滑块和防御选项。 */ +/* 导入方:app/components/config/JyCloudConfig.vue、app/pages/products/[id].vue、app/pages/products/cloud-server.vue。 */ .storage-system[data-v-7837d303] { width: calc(50% - 8px); } @@ -105,6 +107,7 @@ cursor: pointer; margin: 0; } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .jy-model-table td input[type="radio"][data-v-7837d303]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 3px; @@ -141,6 +144,7 @@ grid-area: 1/1; margin: 0; } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .jy-resource-slider[data-v-7837d303]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 5px; @@ -200,6 +204,7 @@ .jy-dcim-config .image-groups[data-v-7837d303] { max-width: 960px; } +/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=767px) { .jy-config-row[data-v-7837d303] { grid-template-columns: 1fr; @@ -220,6 +225,7 @@ gap: 5px 12px; } } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .storage-system[data-v-7837d303] { width: 100%; diff --git a/app/assets/styles/KkyEcsConfig.BFaAwQPZ.css b/app/assets/styles/KkyEcsConfig.BFaAwQPZ.css index 1d89a12..30792bb 100644 --- a/app/assets/styles/KkyEcsConfig.BFaAwQPZ.css +++ b/app/assets/styles/KkyEcsConfig.BFaAwQPZ.css @@ -1,3 +1,5 @@ +/* 弹性云产品配置:系统/数据磁盘与流量套餐展示。 */ +/* 导入方:app/components/config/KkyEcsConfig.vue、app/pages/products/[id].vue、app/pages/products/cloud-server.vue。 */ .cycle-warn[data-v-e8ce6418] { flex-shrink: 0; } @@ -29,6 +31,7 @@ font-size: 1rem; font-weight: 500; } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .storage-system[data-v-e8ce6418] { width: 100%; diff --git a/app/assets/styles/KkyUpgrade.CkDmxFBM.css b/app/assets/styles/KkyUpgrade.CkDmxFBM.css index 9ec32e0..a67dc56 100644 --- a/app/assets/styles/KkyUpgrade.CkDmxFBM.css +++ b/app/assets/styles/KkyUpgrade.CkDmxFBM.css @@ -1,3 +1,5 @@ +/* 弹性云升级:当前规格、套餐选择、磁盘变更及报价汇总。 */ +/* 导入方:app/components/instance/InstanceBilling.vue、app/components/kkyecs/KkyUpgrade.vue。 */ .up[data-v-625e699a] { flex-direction: column; gap: 14px; diff --git a/app/assets/styles/LegacyDcimActions.DcIrQby6.css b/app/assets/styles/LegacyDcimActions.DcIrQby6.css index d74abeb..50fa67d 100644 --- a/app/assets/styles/LegacyDcimActions.DcIrQby6.css +++ b/app/assets/styles/LegacyDcimActions.DcIrQby6.css @@ -1,3 +1,5 @@ +/* 旧版独立服务器操作面板:操作按钮、目标说明和确认项。 */ +/* 导入方:app/components/instance/LegacyDcimActions.vue、app/components/instance/LegacyDcimManage.vue。 */ .legacy-actions[data-v-e3236d5c] { flex-direction: column; gap: 14px; @@ -13,6 +15,7 @@ gap: 10px; display: flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .target[data-v-e3236d5c] { overflow-wrap: anywhere; margin: 0 0 4px; diff --git a/app/assets/styles/LegacyDcimManage.5YRq508t.css b/app/assets/styles/LegacyDcimManage.5YRq508t.css index d153431..8a7069f 100644 --- a/app/assets/styles/LegacyDcimManage.5YRq508t.css +++ b/app/assets/styles/LegacyDcimManage.5YRq508t.css @@ -1,3 +1,5 @@ +/* 旧版独立服务器概览:资源卡片、流量、IP和详细资料。 */ +/* 导入方:app/components/instance/LegacyDcimManage.vue。 */ .legacy-dcim-manage[data-v-f40d7201] { min-width: 0; } @@ -71,6 +73,7 @@ color: var(--p-text-muted-color); flex-shrink: 0; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .compact-rows dd[data-v-f40d7201] { overflow-wrap: anywhere; text-align: right; @@ -104,6 +107,7 @@ color: var(--p-text-muted-color); flex-shrink: 0; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .resource-list dd[data-v-f40d7201] { overflow-wrap: anywhere; text-align: right; @@ -192,6 +196,7 @@ .mono[data-v-f40d7201] { font-family: var(--font-mono, monospace); } +/* 视口条件 (width<=1199px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1199px) { .overview[data-v-f40d7201], .stack[data-v-f40d7201] { @@ -204,6 +209,7 @@ padding: 10px; } } +/* 视口条件 (width<=950px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=950px) { .overview[data-v-f40d7201] { grid-template-columns: repeat(2, minmax(0, 1fr)); @@ -214,6 +220,7 @@ display: grid; } } +/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=600px) { .overview[data-v-f40d7201] { grid-template-columns: 1fr; diff --git a/app/assets/styles/LegacyProductUpgrade.dzWGwGgY.css b/app/assets/styles/LegacyProductUpgrade.dzWGwGgY.css index 2d634d0..7c326bd 100644 --- a/app/assets/styles/LegacyProductUpgrade.dzWGwGgY.css +++ b/app/assets/styles/LegacyProductUpgrade.dzWGwGgY.css @@ -1,3 +1,5 @@ +/* 既有产品升级组件的基础布局。 */ +/* 导入方:app/components/instance/CommonManage.vue、app/components/instance/InstanceBilling.vue、app/components/instance/LegacyDcimManage.vue、app/components/instance/LegacyProductUpgrade.vue、app/pages/servers/server.vue。 */ .product-upgrade[data-v-3bd25322] { gap: 12px; display: grid; diff --git a/app/assets/styles/MfCloudBackupPanel.BTlEe-fy.css b/app/assets/styles/MfCloudBackupPanel.BTlEe-fy.css index b4b9cb6..82ed3c1 100644 --- a/app/assets/styles/MfCloudBackupPanel.BTlEe-fy.css +++ b/app/assets/styles/MfCloudBackupPanel.BTlEe-fy.css @@ -1,3 +1,5 @@ +/* 云备份面板:引导、数量、备份操作与报价/确认表单。 */ +/* 导入方:app/components/MfCloudBackupPanel.vue。 */ .info-table[data-v-a7ffe460] { border: 1px solid var(--console-panel-border); box-shadow: var(--console-panel-shadow); diff --git a/app/assets/styles/MfCloudConfig.DbgUu8qr.css b/app/assets/styles/MfCloudConfig.DbgUu8qr.css index beb8501..2ccf356 100644 --- a/app/assets/styles/MfCloudConfig.DbgUu8qr.css +++ b/app/assets/styles/MfCloudConfig.DbgUu8qr.css @@ -1,3 +1,5 @@ +/* 对应云产品配置:周期提示、系统盘与数据盘排列。 */ +/* 导入方:app/components/config/MfCloudConfig.vue、app/pages/products/[id].vue、app/pages/products/cloud-server.vue。 */ .cycle-warn[data-v-8ba1c9ae] { flex-shrink: 0; } @@ -20,6 +22,7 @@ font-size: 0.875rem; line-height: 1.429rem; } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .storage-system[data-v-8ba1c9ae] { width: 100%; diff --git a/app/assets/styles/MfCloudDefence.B2vl5Yip.css b/app/assets/styles/MfCloudDefence.B2vl5Yip.css index de02e56..ee0d748 100644 --- a/app/assets/styles/MfCloudDefence.B2vl5Yip.css +++ b/app/assets/styles/MfCloudDefence.B2vl5Yip.css @@ -1,3 +1,5 @@ +/* 云防御面板:防御状态与IP展示。 */ +/* 导入方:app/components/instance/InstanceNetwork.vue、app/components/mfcloud/MfCloudDefence.vue。 */ .defence[data-v-b0c2bd86], .form[data-v-b0c2bd86] { flex-direction: column; diff --git a/app/assets/styles/MfCloudIps.jhFnuvcs.css b/app/assets/styles/MfCloudIps.jhFnuvcs.css index 243d7d6..baa8ab8 100644 --- a/app/assets/styles/MfCloudIps.jhFnuvcs.css +++ b/app/assets/styles/MfCloudIps.jhFnuvcs.css @@ -1,3 +1,5 @@ +/* 云IP管理:数量、空态、购买表单及报价。 */ +/* 导入方:app/components/instance/InstanceNetwork.vue、app/components/mfcloud/MfCloudIps.vue。 */ .ips[data-v-9ba8a1b3], .ipv6-group[data-v-9ba8a1b3] { flex-direction: column; @@ -13,6 +15,7 @@ table-layout: fixed; min-width: 0; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .ips[data-v-9ba8a1b3] .col-mono { overflow-wrap: anywhere; } diff --git a/app/assets/styles/MfCloudLogs.MTqtLGjA.css b/app/assets/styles/MfCloudLogs.MTqtLGjA.css index 90645ee..b88c856 100644 --- a/app/assets/styles/MfCloudLogs.MTqtLGjA.css +++ b/app/assets/styles/MfCloudLogs.MTqtLGjA.css @@ -1,3 +1,5 @@ +/* 云操作日志:标题、筛选工具栏、日志正文与分页。 */ +/* 导入方:app/components/mfcloud/MfCloudLogs.vue。 */ .logs[data-v-c4521240] { flex-direction: column; gap: 18px; @@ -33,6 +35,7 @@ border-radius: 6px; overflow: hidden; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .log-content[data-v-c4521240] { white-space: pre-wrap; overflow-wrap: anywhere; @@ -49,6 +52,7 @@ font-size: 0.9375rem; display: flex; } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .logs-toolbar > .p-iconfield[data-v-c4521240] { flex: 1; diff --git a/app/assets/styles/MfCloudNat.C1uXa4fX.css b/app/assets/styles/MfCloudNat.C1uXa4fX.css index 1861a84..0d8dd73 100644 --- a/app/assets/styles/MfCloudNat.C1uXa4fX.css +++ b/app/assets/styles/MfCloudNat.C1uXa4fX.css @@ -1,3 +1,5 @@ +/* 云NAT管理:操作表单及辅助说明。 */ +/* 导入方:app/components/mfcloud/MfCloudNat.vue。 */ .form[data-v-1ff078ab], .nat-panel[data-v-1ff078ab] { flex-direction: column; diff --git a/app/assets/styles/MfCloudResourceUpgrade.bSwLWjPg.css b/app/assets/styles/MfCloudResourceUpgrade.bSwLWjPg.css index c2054b8..f73655b 100644 --- a/app/assets/styles/MfCloudResourceUpgrade.bSwLWjPg.css +++ b/app/assets/styles/MfCloudResourceUpgrade.bSwLWjPg.css @@ -1,3 +1,5 @@ +/* 云资源升级:可选配置、资源选项与汇总金额。 */ +/* 导入方:app/components/instance/InstanceBilling.vue、app/components/mfcloud/MfCloudResourceUpgrade.vue。 */ .resource-upgrade[data-v-c9212028] { gap: 24px; } @@ -49,6 +51,7 @@ margin: 0; font-size: 0.875rem; } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .upgrade-total[data-v-c9212028] { flex-direction: column; diff --git a/app/assets/styles/MfCloudUpgrade.N7TNG8F1.css b/app/assets/styles/MfCloudUpgrade.N7TNG8F1.css index 2585df2..c76405d 100644 --- a/app/assets/styles/MfCloudUpgrade.N7TNG8F1.css +++ b/app/assets/styles/MfCloudUpgrade.N7TNG8F1.css @@ -1,3 +1,5 @@ +/* 云套餐升级:当前规格、套餐卡片与底部报价栏。 */ +/* 导入方:app/components/instance/InstanceBilling.vue、app/components/mfcloud/MfCloudUpgrade.vue。 */ .up[data-v-b98b2e63] { flex-direction: column; gap: 14px; @@ -94,6 +96,7 @@ .hint[data-v-b98b2e63] { margin: 0; } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .bar[data-v-b98b2e63], .current[data-v-b98b2e63] { diff --git a/app/assets/styles/MfCloudVpc.CpOEbuWs.css b/app/assets/styles/MfCloudVpc.CpOEbuWs.css index 1a7a450..8fe052f 100644 --- a/app/assets/styles/MfCloudVpc.CpOEbuWs.css +++ b/app/assets/styles/MfCloudVpc.CpOEbuWs.css @@ -1,3 +1,5 @@ +/* 云VPC管理:配置表单及辅助说明。 */ +/* 导入方:app/components/instance/InstanceNetwork.vue、app/components/mfcloud/MfCloudVpc.vue。 */ .form[data-v-1d12fc4b], .vpc-panel[data-v-1d12fc4b] { flex-direction: column; diff --git a/app/assets/styles/MfDcimConfig.BhC_eZ0V.css b/app/assets/styles/MfDcimConfig.BhC_eZ0V.css index 13c4ba4..4f156ed 100644 --- a/app/assets/styles/MfDcimConfig.BhC_eZ0V.css +++ b/app/assets/styles/MfDcimConfig.BhC_eZ0V.css @@ -1,3 +1,5 @@ +/* 独立服务器产品配置:基础规格、可选资源、协议与镜像费用提示。 */ +/* 导入方:app/components/config/MfDcimConfig.vue、app/pages/products/[id].vue、app/pages/products/dedicated-server/customize.vue。 */ .storage-grid[data-v-b5ff32bb] { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; @@ -23,6 +25,7 @@ width: 0; min-width: 0; } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .storage-grid[data-v-b5ff32bb] { grid-template-columns: 1fr; @@ -61,6 +64,7 @@ min-width: 0; font-size: 0.875rem; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .base-specs strong[data-v-b5ff32bb] { color: var(--p-text-color); overflow-wrap: anywhere; @@ -68,6 +72,7 @@ font-weight: 500; display: block; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .base-specs small[data-v-b5ff32bb] { overflow-wrap: anywhere; font-size: 0.8125rem; @@ -148,6 +153,7 @@ .config-change-fields .form-row[data-v-b5ff32bb] { margin-bottom: 0; } +/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=767px) { .config-change-fields[data-v-b5ff32bb] { grid-template-columns: 1fr; diff --git a/app/assets/styles/NotificationPreferences.DcH8Noxd.css b/app/assets/styles/NotificationPreferences.DcH8Noxd.css index 50692a7..331e1f6 100644 --- a/app/assets/styles/NotificationPreferences.DcH8Noxd.css +++ b/app/assets/styles/NotificationPreferences.DcH8Noxd.css @@ -1,3 +1,5 @@ +/* 通知偏好:说明、渠道开关及保存反馈的排列。 */ +/* 导入方:app/components/NotificationPreferences.vue、app/pages/messages/index.vue。 */ .notification-preferences[data-v-f4132ec8] { border: 1px solid var(--console-panel-border); background: var(--console-panel-bg); @@ -61,6 +63,7 @@ font-size: 0.875rem; line-height: 1.4; } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .notification-preferences[data-v-f4132ec8] { padding: 14px 16px; diff --git a/app/assets/styles/OperationToasts.DfA_b8om.css b/app/assets/styles/OperationToasts.DfA_b8om.css index 1fbeaa9..f07e142 100644 --- a/app/assets/styles/OperationToasts.DfA_b8om.css +++ b/app/assets/styles/OperationToasts.DfA_b8om.css @@ -1,3 +1,5 @@ +/* 全站操作提示:图标、结果说明及批量结果明细。 */ +/* 导入方:app/components/OperationToasts.vue、nuxt.config.ts。 */ .operation-toasts.p-toast { width: min(380px, 100% - 24px); top: 76px !important; @@ -34,6 +36,7 @@ .operation-toast-icon.notice-info { color: var(--p-primary-color); } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .operation-toast-copy { overflow-wrap: anywhere; flex: 1; @@ -58,12 +61,14 @@ .operation-toast-results li + li { margin-top: 6px; } +/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=600px) { .operation-toasts.p-toast { top: 68px !important; right: 12px !important; } } +/* 尊重减少动态效果偏好:保留状态信息,降低或取消非必要动画。 */ @media (prefers-reduced-motion: reduce) { .operation-toasts .p-toast-message { transition: none !important; diff --git a/app/assets/styles/OsIcon.CAi4Iz2S.css b/app/assets/styles/OsIcon.CAi4Iz2S.css index c69696d..8ccaa86 100644 --- a/app/assets/styles/OsIcon.CAi4Iz2S.css +++ b/app/assets/styles/OsIcon.CAi4Iz2S.css @@ -1,3 +1,5 @@ +/* 操作系统图标:统一尺寸与未知系统的占位图形。 */ +/* 导入方:app/components/HostList.vue、app/components/OsIcon.vue、app/components/config/CommonConfig.vue、app/components/config/ConfigChoiceGrid.vue、app/components/config/ConfigResourceOption.vue、app/components/config/FinanceConfig.vue、app/components/config/JyCloudConfig.vue、app/components/config/KkyEcsConfig.vue、app/components/config/MfCloudConfig.vue、app/components/config/MfDcimConfig.vue、app/components/instance/DcimManage.vue、app/components/instance/InstanceAccess.vue、app/components/instance/InstanceManage.vue、app/components/instance/InstanceOverview.vue、app/components/instance/LegacyDcimManage.vue、app/pages/cloud-servers/index.vue、app/pages/dedicated-servers/index.vue、app/pages/products/[id].vue、app/pages/products/cloud-server.vue、app/pages/products/dedicated-server/customize.vue。 */ .os-icon[data-v-01907ce4] { -o-object-fit: contain; object-fit: contain; diff --git a/app/assets/styles/PageInfoNotice._16xRFrB.css b/app/assets/styles/PageInfoNotice._16xRFrB.css index 51a2735..8b49e83 100644 --- a/app/assets/styles/PageInfoNotice._16xRFrB.css +++ b/app/assets/styles/PageInfoNotice._16xRFrB.css @@ -1,3 +1,5 @@ +/* 页面说明容器:静态提示的边界、颜色与内容间距。 */ +/* 导入方:app/components/PageInfoNotice.vue、app/pages/invoices/index.vue、app/pages/invoices/request.vue、app/pages/security/groups/index.vue。 */ .page-info-notice[data-v-8f81f268] { min-width: 0; box-shadow: none; @@ -16,6 +18,7 @@ font-size: 14px; display: inline-flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .page-info-notice[data-v-8f81f268] .p-message-text { overflow-wrap: anywhere; min-width: 0; diff --git a/app/assets/styles/PageSteps.B5K7G9zF.css b/app/assets/styles/PageSteps.B5K7G9zF.css index 00dc7a9..bb4cea6 100644 --- a/app/assets/styles/PageSteps.B5K7G9zF.css +++ b/app/assets/styles/PageSteps.B5K7G9zF.css @@ -1,3 +1,5 @@ +/* 步骤条:当前/完成步骤圆点、文案与连接线。 */ +/* 导入方:app/components/PageSteps.vue、app/pages/account/index.vue、app/pages/account/realname/company.vue、app/pages/account/realname/index.vue、app/pages/account/realname/personal.vue。 */ .steps[data-v-a16c5dea] { margin: 0; padding: 4px 0 2px; diff --git a/app/assets/styles/PaymentDialog.BNFKQF1U.css b/app/assets/styles/PaymentDialog.BNFKQF1U.css index 125bad6..f30ac75 100644 --- a/app/assets/styles/PaymentDialog.BNFKQF1U.css +++ b/app/assets/styles/PaymentDialog.BNFKQF1U.css @@ -1,3 +1,5 @@ +/* 订单支付面板:渠道、余额组合、代金券、支付反馈及内嵌操作区。 */ +/* 导入方:app/components/HostList.vue、app/components/PaymentDialog.vue、app/components/RechargeDialog.vue、app/components/home/HomeWalletCard.vue、app/components/instance/DcimActions.vue、app/components/instance/DcimManage.vue、app/components/instance/ImagePurchaseDialog.vue、app/components/instance/InstanceAccess.vue、app/components/instance/LegacyDcimManage.vue、app/pages/account/index.vue、app/pages/account/realname/company.vue、app/pages/account/realname/index.vue、app/pages/account/realname/personal.vue、app/pages/bills/[id].vue、app/pages/cart/index.vue、app/pages/cloud-servers/index.vue、app/pages/dedicated-servers/index.vue、app/pages/finance/index.vue、app/pages/index.vue、app/pages/invoices/index.vue、app/pages/invoices/request.vue、app/pages/orders/[id].vue、app/pages/orders/order/index.vue、app/pages/orders/order/paid.vue、app/pages/orders/order/pay.vue、app/pages/products/[id].vue、app/pages/products/cloud-server.vue、app/pages/products/dedicated-server/customize.vue、app/pages/transfer/index.vue。 */ .order-line[data-v-4931e21e] { color: var(--p-text-muted-color, #64748b); justify-content: space-between; @@ -10,6 +12,7 @@ color: #ef4444; font-weight: 600; } +/* 支付渠道与余额选择区域;选中样式由组件状态驱动,不以CSS决定实际付款渠道。 */ .gateway-list[data-v-4931e21e] { flex-direction: column; gap: 10px; @@ -74,6 +77,7 @@ .msg[data-v-4931e21e] { margin-top: 12px; } +/* 代金券选项及反馈;无可用券和加载状态应与已选中状态清晰区分。 */ .voucher-row[data-v-4931e21e] { border: 1px solid var(--p-content-border-color); border-radius: 6px; @@ -128,6 +132,7 @@ gap: 8px; display: flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .voucher-choice[data-v-4931e21e] { white-space: normal; overflow-wrap: anywhere; @@ -161,6 +166,7 @@ .gateway-item + .gateway-item[data-v-4931e21e] { margin-top: -1px; } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .gateway-item[data-v-4931e21e]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 2px; @@ -251,6 +257,7 @@ .amount[data-v-4931e21e] { color: var(--p-text-color); } +/* 内嵌支付模式的外壳覆盖,与弹窗共用同一套支付逻辑。 */ .inline-payment h3[data-v-4931e21e] { margin: 0 0 14px; font-size: 1rem; @@ -269,6 +276,7 @@ min-height: 56px; padding: 14px 18px; } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .order-line[data-v-4931e21e] { gap: 10px; diff --git a/app/assets/styles/PhoneCodeField.CwyHXfML.css b/app/assets/styles/PhoneCodeField.CwyHXfML.css index ad6e0bd..46b1b97 100644 --- a/app/assets/styles/PhoneCodeField.CwyHXfML.css +++ b/app/assets/styles/PhoneCodeField.CwyHXfML.css @@ -1,3 +1,5 @@ +/* 手机号国家区号字段:区号选择、输入与字段错误说明。 */ +/* 导入方:app/components/PhoneCodeField.vue、app/pages/forgot-password.vue、app/pages/oauth/bind.vue、app/pages/register.vue。 */ .phone-code-field[data-v-24cb0489] { gap: 6px; display: grid; diff --git a/app/assets/styles/ProductCategoryNotice.CwaR3eXN.css b/app/assets/styles/ProductCategoryNotice.CwaR3eXN.css index 5f136f9..cbcec40 100644 --- a/app/assets/styles/ProductCategoryNotice.CwaR3eXN.css +++ b/app/assets/styles/ProductCategoryNotice.CwaR3eXN.css @@ -1,3 +1,5 @@ +/* 商品分类说明:图标、富文本和纯文本内容区域。 */ +/* 导入方:app/components/ProductCategoryNotice.vue、app/pages/products/index.vue。 */ .category-notice[data-v-faa6a7a3] { border: 1px solid color-mix( @@ -24,6 +26,7 @@ margin-top: 4px; font-size: 1.125rem; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .category-notice-content[data-v-faa6a7a3] { overflow-wrap: anywhere; flex: 1; @@ -66,6 +69,7 @@ text-underline-offset: 3px; text-decoration: underline; } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .category-notice-content[data-v-faa6a7a3] a:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 3px; @@ -107,6 +111,7 @@ .category-notice-content[data-v-faa6a7a3] > :last-child { margin-bottom: 0; } +/* 视口条件 (width<=760px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=760px) { .category-notice[data-v-faa6a7a3] { gap: 10px; diff --git a/app/assets/styles/ProductConfigurationSummary.BqZns1LB.css b/app/assets/styles/ProductConfigurationSummary.BqZns1LB.css index 4d0a9c7..3520680 100644 --- a/app/assets/styles/ProductConfigurationSummary.BqZns1LB.css +++ b/app/assets/styles/ProductConfigurationSummary.BqZns1LB.css @@ -1,3 +1,6 @@ +/* 商品配置摘要:配置项换行与分隔符。 */ +/* 导入方:app/components/ProductConfigurationSummary.vue、app/pages/products/index.vue。 */ +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .product-configuration-summary[data-v-cb8d72e4] { color: var(--p-text-muted-color); overflow-wrap: anywhere; diff --git a/app/assets/styles/ProductCustomFields.B2QMnPil.css b/app/assets/styles/ProductCustomFields.B2QMnPil.css index 4ac0b91..1150d95 100644 --- a/app/assets/styles/ProductCustomFields.B2QMnPil.css +++ b/app/assets/styles/ProductCustomFields.B2QMnPil.css @@ -1,3 +1,5 @@ +/* 商品自定义字段:表单区域和字段说明。 */ +/* 导入方:app/components/config/CommonConfig.vue、app/components/config/FinanceConfig.vue、app/components/config/JyCloudConfig.vue、app/components/config/KkyEcsConfig.vue、app/components/config/MfCloudConfig.vue、app/components/config/MfDcimConfig.vue、app/components/config/ProductCustomFields.vue、app/pages/products/[id].vue、app/pages/products/cloud-server.vue、app/pages/products/dedicated-server/customize.vue。 */ .product-custom-fields[data-v-9d2a6f70] { min-width: 0; } diff --git a/app/assets/styles/ProductDescription.Ctb7jDuO.css b/app/assets/styles/ProductDescription.Ctb7jDuO.css index ec4542c..c720ec9 100644 --- a/app/assets/styles/ProductDescription.Ctb7jDuO.css +++ b/app/assets/styles/ProductDescription.Ctb7jDuO.css @@ -1,3 +1,6 @@ +/* 商品详情说明:结构化配置分区、富文本、折叠预览与空态。 */ +/* 导入方:app/components/ProductDescription.vue、app/pages/products/index.vue。 */ +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .product-description[data-v-8a6cfb44] { min-width: 0; max-width: 100%; @@ -115,6 +118,7 @@ .description-compact .description-paragraph[data-v-8a6cfb44] { color: var(--p-text-muted-color); } +/* 折叠预览与展开操作的展示边界,正文内容清理由业务组件负责。 */ .description-preview[data-v-8a6cfb44] { -webkit-line-clamp: 3; -webkit-box-orient: vertical; @@ -143,6 +147,7 @@ text-underline-offset: 3px; text-decoration: underline; } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .description-toggle[data-v-8a6cfb44]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 3px; @@ -151,6 +156,7 @@ .description-toggle i[data-v-8a6cfb44] { font-size: 0.875rem; } +/* 后端富文本的排版规则;这些选择器不提供HTML消毒或授权功能。 */ .description-rich[data-v-8a6cfb44] { min-width: 0; padding-top: 8px; @@ -246,6 +252,7 @@ .description-rich[data-v-8a6cfb44] > :last-child { margin-bottom: 0; } +/* 视口条件 (width<=760px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=760px) { .description-header[data-v-8a6cfb44] { padding: 10px 20px; diff --git a/app/assets/styles/ProductGroupLabel.B1kWpFA-.css b/app/assets/styles/ProductGroupLabel.B1kWpFA-.css index c2d9d65..8bb43c6 100644 --- a/app/assets/styles/ProductGroupLabel.B1kWpFA-.css +++ b/app/assets/styles/ProductGroupLabel.B1kWpFA-.css @@ -1,3 +1,5 @@ +/* 商品分组标题:名称与附加徽标的排列。 */ +/* 导入方:app/components/ProductGroupLabel.vue、app/components/config/CloudProductPicker.vue、app/pages/products/cloud-server.vue、app/pages/products/index.vue。 */ .product-group-label[data-v-6806c62d] { align-items: center; justify-content: inherit; @@ -8,10 +10,12 @@ max-width: 100%; display: inline-flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .product-group-name[data-v-6806c62d] { overflow-wrap: anywhere; min-width: 0; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .product-group-badge[data-v-6806c62d] { border: 1px solid color-mix(in srgb, var(--p-primary-color) 24%, var(--p-content-background)); diff --git a/app/assets/styles/PromoCodeField.qFEkB6Hm.css b/app/assets/styles/PromoCodeField.qFEkB6Hm.css index c1540e8..fa3a009 100644 --- a/app/assets/styles/PromoCodeField.qFEkB6Hm.css +++ b/app/assets/styles/PromoCodeField.qFEkB6Hm.css @@ -1,3 +1,5 @@ +/* 优惠码输入:输入/操作区及校验说明。 */ +/* 导入方:app/components/config/CommonConfig.vue、app/components/config/ConfigCheckout.vue、app/components/config/FinanceConfig.vue、app/components/config/JyCloudConfig.vue、app/components/config/KkyEcsConfig.vue、app/components/config/MfCloudConfig.vue、app/components/config/MfDcimConfig.vue、app/components/config/PromoCodeField.vue、app/pages/products/[id].vue、app/pages/products/cloud-server.vue、app/pages/products/dedicated-server/customize.vue。 */ .promo summary[data-v-a17e621a] { color: var(--p-primary-color); cursor: pointer; diff --git a/app/assets/styles/RechargeDialog.DpsMly4r.css b/app/assets/styles/RechargeDialog.DpsMly4r.css index 9eba0e1..b37de89 100644 --- a/app/assets/styles/RechargeDialog.DpsMly4r.css +++ b/app/assets/styles/RechargeDialog.DpsMly4r.css @@ -1,3 +1,5 @@ +/* 余额充值:预设金额、手工金额与步骤表单。 */ +/* 导入方:app/components/RechargeDialog.vue、app/components/home/HomeWalletCard.vue、app/pages/finance/index.vue、app/pages/index.vue。 */ .step[data-v-c038cb91] { flex-direction: column; gap: 14px; @@ -27,6 +29,7 @@ color: var(--p-primary-color); background: var(--p-highlight-background); } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .recharge-option[data-v-c038cb91]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 2px; @@ -40,6 +43,7 @@ min-width: 0; height: 56px; } +/* 视口条件 (width<=480px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=480px) { .recharge-options[data-v-c038cb91] { grid-template-columns: repeat(2, minmax(0, 1fr)); diff --git a/app/assets/styles/RemfUpgrade.4stQ5ASH.css b/app/assets/styles/RemfUpgrade.4stQ5ASH.css index d9a4ad6..431213b 100644 --- a/app/assets/styles/RemfUpgrade.4stQ5ASH.css +++ b/app/assets/styles/RemfUpgrade.4stQ5ASH.css @@ -1,3 +1,5 @@ +/* 资源升级信息:加载状态、配置字段与价格说明。 */ +/* 导入方:app/components/instance/CommonManage.vue、app/components/instance/InstanceBilling.vue、app/components/instance/LegacyDcimManage.vue、app/components/instance/RemfUpgrade.vue、app/pages/servers/server.vue。 */ .upg[data-v-7efd9d4d] { flex-direction: column; gap: 14px; @@ -28,6 +30,7 @@ .kv[data-v-7efd9d4d]:nth-child(2n) { background: var(--console-page-bg); } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .kv[data-v-7efd9d4d] > * { overflow-wrap: anywhere; min-width: 0; @@ -54,6 +57,7 @@ .action-cell[data-v-7efd9d4d] .p-button { max-width: 100%; } +/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=767px) { .kv[data-v-7efd9d4d] { grid-template-columns: 100px minmax(0, 1fr); diff --git a/app/assets/styles/RemoteConsole.DLmX5UZu.css b/app/assets/styles/RemoteConsole.DLmX5UZu.css index 959a04b..600851e 100644 --- a/app/assets/styles/RemoteConsole.DLmX5UZu.css +++ b/app/assets/styles/RemoteConsole.DLmX5UZu.css @@ -1,3 +1,5 @@ +/* 嵌入式远程控制台:连接状态、工具栏、屏幕容器与凭据表单。 */ +/* 导入方:app/components/instance/RemoteConsole.vue、app/pages/remote-console.vue。 */ .remote-console[data-v-e696489e] { color: #23324d; background: #f8fafc; @@ -111,6 +113,7 @@ padding: 9px 20px; font-size: 0.875rem; } +/* 远控屏幕容器与覆盖层,连接/凭据状态由脚本驱动,不直接由CSS建立连接。 */ .console-display[data-v-e696489e] { background: #141b2b; flex: 1; @@ -160,6 +163,7 @@ font-size: 0.9375rem; line-height: 1.8; } +/* 仅在连接需要凭据时显示表单;输入生命周期和清理由组件负责。 */ .credential-form[data-v-e696489e] { flex-direction: column; gap: 10px; @@ -200,6 +204,7 @@ width: 100vw; height: 100dvh; } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .console-header[data-v-e696489e] { gap: 9px; @@ -226,6 +231,7 @@ font-size: 0.8125rem; } } +/* 尊重减少动态效果偏好:保留状态信息,降低或取消非必要动画。 */ @media (prefers-reduced-motion: reduce) { .pi-spin[data-v-e696489e] { animation: none; diff --git a/app/assets/styles/RichTextEditor.NkmgPT5m.css b/app/assets/styles/RichTextEditor.NkmgPT5m.css index b72f780..eb2e376 100644 --- a/app/assets/styles/RichTextEditor.NkmgPT5m.css +++ b/app/assets/styles/RichTextEditor.NkmgPT5m.css @@ -1,3 +1,5 @@ +/* 富文本编辑器:工具栏、可编辑正文、空内容占位及禁用态。 */ +/* 导入方:app/components/RichTextEditor.vue、app/pages/tickets/[id].vue、app/pages/tickets/create.vue、app/pages/tickets/ticket.vue。 */ .rich-editor[data-v-858a2ddd] { border: 1px solid var(--p-form-field-border-color); background: var(--p-form-field-background); @@ -29,6 +31,8 @@ .editor-toolbar i[data-v-858a2ddd] { font-size: 0.875rem; } +/* 正文区域保留长文本换行;空态伪元素只是提示,不作为实际编辑内容提交。 */ +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .editor-content[data-v-858a2ddd] { overflow-wrap: anywhere; outline: none; diff --git a/app/assets/styles/RingProgress.CVwR7il5.css b/app/assets/styles/RingProgress.CVwR7il5.css index ef8a395..c4599ec 100644 --- a/app/assets/styles/RingProgress.CVwR7il5.css +++ b/app/assets/styles/RingProgress.CVwR7il5.css @@ -1,3 +1,5 @@ +/* 环形进度:SVG进度描边与中央数值/标签。 */ +/* 导入方:app/components/RingProgress.vue、app/components/instance/InstanceManage.vue、app/components/instance/InstanceOverview.vue。 */ .ring[data-v-bff6718d] { flex-shrink: 0; position: relative; diff --git a/app/assets/styles/RoxyMascot.CDqPSf2d.css b/app/assets/styles/RoxyMascot.CDqPSf2d.css index d2d3645..2984182 100644 --- a/app/assets/styles/RoxyMascot.CDqPSf2d.css +++ b/app/assets/styles/RoxyMascot.CDqPSf2d.css @@ -1,3 +1,5 @@ +/* 站点吉祥物:CSS分层造型、头部摇摆和眨眼动画。 */ +/* 导入方:app/components/home/RoxyMascot.vue。 */ .roxy-mascot[data-v-65169a82] { --roxy-ink: #45465f; --roxy-hair: #779aca; @@ -131,6 +133,7 @@ left: 7px; box-shadow: 4px 0 #d7af9b; } +/* 头部、五官与发型使用独立图层;底部关键帧仅改变装饰姿态。 */ .roxy-head[data-v-65169a82] { transform-origin: 59% 94%; width: 151px; @@ -436,6 +439,7 @@ transform: rotate(30deg); box-shadow: inset 3px 2px #f0c5d4; } +/* 动画 roxy-head-sway-65169a82 的关键帧;动画名称与引用该名称的选择器需要同步维护。 */ @keyframes roxy-head-sway-65169a82 { 0%, to { @@ -446,6 +450,7 @@ transform: rotate(4deg); } } +/* 动画 roxy-blink-65169a82 的关键帧;动画名称与引用该名称的选择器需要同步维护。 */ @keyframes roxy-blink-65169a82 { 0%, 43%, @@ -457,12 +462,14 @@ scale: 1 0.08; } } +/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=767px) { .roxy-eye[data-v-65169a82], .roxy-head[data-v-65169a82] { animation: none; } } +/* 尊重减少动态效果偏好:保留状态信息,降低或取消非必要动画。 */ @media (prefers-reduced-motion: reduce) { .roxy-eye[data-v-65169a82], .roxy-head[data-v-65169a82] { diff --git a/app/assets/styles/SecurityVerificationDialog.skYFo4v7.css b/app/assets/styles/SecurityVerificationDialog.skYFo4v7.css index 2a95317..615a6c0 100644 --- a/app/assets/styles/SecurityVerificationDialog.skYFo4v7.css +++ b/app/assets/styles/SecurityVerificationDialog.skYFo4v7.css @@ -1,3 +1,5 @@ +/* 安全验证弹窗:输入、错误提示、操作及二维码区域。 */ +/* 导入方:app/components/SecurityVerificationDialog.vue、app/components/instance/DcimBilling.vue、app/components/instance/InstanceBilling.vue、app/pages/account/index.vue、app/pages/login.vue、app/pages/transfer/index.vue。 */ .security-verify[data-v-ff4061ec] { gap: 8px; font-size: 13px; diff --git a/app/assets/styles/SensitiveValue.BSZlaRHT.css b/app/assets/styles/SensitiveValue.BSZlaRHT.css index a0f66fd..4de5dc6 100644 --- a/app/assets/styles/SensitiveValue.BSZlaRHT.css +++ b/app/assets/styles/SensitiveValue.BSZlaRHT.css @@ -1,3 +1,5 @@ +/* 敏感信息展示:掩码文本和显示/隐藏按钮。 */ +/* 导入方:app/components/SensitiveValue.vue、app/pages/account/index.vue、app/pages/index.vue。 */ .sensitive-value[data-v-07008ebf] { vertical-align: middle; align-items: center; @@ -6,6 +8,7 @@ max-width: 100%; display: inline-flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .sensitive-value-text[data-v-07008ebf] { overflow-wrap: anywhere; min-width: 0; @@ -29,6 +32,7 @@ color: var(--p-primary-color); background: var(--p-content-hover-background); } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .sensitive-value-toggle[data-v-07008ebf]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 2px; diff --git a/app/assets/styles/TicketAttachments.DtbJGLkE.css b/app/assets/styles/TicketAttachments.DtbJGLkE.css index d9b7289..0db6ed3 100644 --- a/app/assets/styles/TicketAttachments.DtbJGLkE.css +++ b/app/assets/styles/TicketAttachments.DtbJGLkE.css @@ -1,3 +1,5 @@ +/* 工单附件:图片缩略图、文件入口、预览错误及下载操作。 */ +/* 导入方:app/components/TicketAttachments.vue、app/pages/tickets/[id].vue、app/pages/tickets/ticket.vue。 */ .message-attachments[data-v-77cd676b] { border-top: 1px solid var(--p-content-border-color); flex-direction: column; @@ -57,6 +59,7 @@ min-width: 0; display: flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .attachment-name[data-v-77cd676b] { color: var(--p-primary-color); overflow-wrap: anywhere; @@ -71,6 +74,7 @@ min-width: 0; display: flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .file-attachment a[data-v-77cd676b] { color: var(--p-primary-color); overflow-wrap: anywhere; @@ -79,6 +83,7 @@ margin-left: 4px; font-size: 0.8125rem; } +/* 附件不可用状态与可下载链接明确区分,实际下载/预览权限由脚本和后端控制。 */ .attachment-unavailable[data-v-77cd676b] { color: var(--p-text-muted-color); overflow-wrap: anywhere; @@ -91,6 +96,7 @@ .preview-error[data-v-77cd676b] { padding: 24px 0; } +/* 图片预览区域与下载操作分开,加载失败时保留可理解的错误反馈。 */ .image-preview[data-v-77cd676b] { background: var(--p-content-hover-background); border-radius: 6px; @@ -137,6 +143,7 @@ .download-image[data-v-77cd676b]:hover { background: var(--p-primary-hover-color); } +/* 视口条件 (width<=480px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=480px) { .thumbnail[data-v-77cd676b] { flex-basis: 80px; diff --git a/app/assets/styles/UploadField.BbTCTv6C.css b/app/assets/styles/UploadField.BbTCTv6C.css index b3c108e..a3ed003 100644 --- a/app/assets/styles/UploadField.BbTCTv6C.css +++ b/app/assets/styles/UploadField.BbTCTv6C.css @@ -1,3 +1,5 @@ +/* 文件上传字段:选择行、进度状态、移除与错误提示。 */ +/* 导入方:app/components/UploadField.vue、app/pages/account/index.vue、app/pages/account/realname/company.vue、app/pages/account/realname/index.vue、app/pages/account/realname/personal.vue。 */ .field[data-v-8267b59f] { flex-direction: column; gap: 6px; diff --git a/app/assets/styles/WechatConnection.DI5ko1xy.css b/app/assets/styles/WechatConnection.DI5ko1xy.css index d82a144..8344ce7 100644 --- a/app/assets/styles/WechatConnection.DI5ko1xy.css +++ b/app/assets/styles/WechatConnection.DI5ko1xy.css @@ -1,3 +1,5 @@ +/* 微信账号绑定:加载状态和绑定帮助说明。 */ +/* 导入方:app/components/WechatConnection.vue、app/pages/account/connections.vue。 */ .wechat-connection[data-v-4c933481] { min-width: 0; } diff --git a/app/assets/styles/WithdrawDialog.ks0wdKEK.css b/app/assets/styles/WithdrawDialog.ks0wdKEK.css index da2a033..fad3aa4 100644 --- a/app/assets/styles/WithdrawDialog.ks0wdKEK.css +++ b/app/assets/styles/WithdrawDialog.ks0wdKEK.css @@ -1,3 +1,5 @@ +/* 提现弹窗:规则提示、金额表单与费用计算摘要。 */ +/* 导入方:app/components/WithdrawDialog.vue、app/components/home/HomeWalletCard.vue、app/pages/finance/index.vue、app/pages/index.vue、app/pages/recommend/index.vue。 */ .sk[data-v-e4be3b52] { padding: 8px 0; } @@ -87,10 +89,12 @@ .calc-row.total > b[data-v-e4be3b52] { color: var(--p-text-color); } +/* 应用深色主题覆盖,保持在基础颜色之后;主题切换只改变外观,不改变业务状态。 */ .app-dark .notice { background: #172554; border-color: #1e3a8a; } +/* 应用深色主题覆盖,保持在基础颜色之后;主题切换只改变外观,不改变业务状态。 */ .app-dark .notice ul, .app-dark .notice-title { color: #bfdbfe; diff --git a/app/assets/styles/_id_.C-0--Lx-.css b/app/assets/styles/_id_.C-0--Lx-.css index f99873a..5713224 100644 --- a/app/assets/styles/_id_.C-0--Lx-.css +++ b/app/assets/styles/_id_.C-0--Lx-.css @@ -1,3 +1,5 @@ +/* 工单详情:消息线程、回复表单、附件和状态资料。 */ +/* 导入方:app/pages/tickets/[id].vue、app/pages/tickets/ticket.vue。 */ .page[data-v-3743a20f] { flex-direction: column; gap: 16px; @@ -178,6 +180,7 @@ .field label[data-v-3743a20f] { font-size: 0.875rem; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .list-search[data-v-3743a20f], .list-select[data-v-3743a20f], @@ -270,6 +273,7 @@ .reply-box[data-v-3743a20f] textarea { min-height: 160px; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .reply-box[data-v-3743a20f], .thread[data-v-3743a20f] { diff --git a/app/assets/styles/_id_.CSXsMADH.css b/app/assets/styles/_id_.CSXsMADH.css index 238e14f..cf60b5b 100644 --- a/app/assets/styles/_id_.CSXsMADH.css +++ b/app/assets/styles/_id_.CSXsMADH.css @@ -1,3 +1,5 @@ +/* 商品详情页:商品标题、相关入口与返回操作。 */ +/* 导入方:app/pages/products/[id].vue。 */ .page[data-v-49461ec8] { flex-direction: column; gap: 32px; @@ -14,6 +16,7 @@ min-height: 36px; display: flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .product-head h1[data-v-49461ec8] { overflow-wrap: anywhere; margin: 0; @@ -45,6 +48,7 @@ .cart-link[data-v-49461ec8]:hover { color: var(--p-primary-color); } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .product-head[data-v-49461ec8] { flex-wrap: wrap; diff --git a/app/assets/styles/_id_.gjoJy9S8.css b/app/assets/styles/_id_.gjoJy9S8.css index ae1dea2..a3378ff 100644 --- a/app/assets/styles/_id_.gjoJy9S8.css +++ b/app/assets/styles/_id_.gjoJy9S8.css @@ -1,3 +1,5 @@ +/* 订单详情/付款凭据:收据明细、流水、转账凭证及打印区域。 */ +/* 导入方:app/pages/bills/[id].vue、app/pages/orders/[id].vue、app/pages/orders/order/index.vue、app/pages/orders/order/paid.vue、app/pages/orders/order/pay.vue。 */ .receipt-page[data-v-b3b3cd9c] { width: 100%; max-width: 560px; @@ -22,6 +24,7 @@ .receipt-nav a[data-v-b3b3cd9c]:hover { color: var(--p-primary-color); } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .receipt-nav > span[data-v-b3b3cd9c] { overflow-wrap: anywhere; text-align: right; @@ -74,6 +77,7 @@ height: 49px; display: grid; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .receipt-heading h2[data-v-b3b3cd9c] { overflow-wrap: anywhere; margin: 0 0 4px; @@ -342,6 +346,7 @@ gap: 14px; display: grid; } +/* 视口条件 (width<=900px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=900px) { .payment-page .receipt-layout[data-v-b3b3cd9c] { grid-template-columns: minmax(0, 1fr); @@ -359,6 +364,7 @@ margin-bottom: 28px; } } +/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=600px) { .receipt[data-v-b3b3cd9c] { gap: 35px; @@ -409,6 +415,7 @@ margin-inline: 0; } } +/* 打印介质覆盖:独立处理纸张上的显隐和排版,不直接沿用屏幕布局。 */ @media print { .receipt-actions[data-v-b3b3cd9c], .receipt-feedback[data-v-b3b3cd9c], diff --git a/app/assets/styles/account.CTvLXxT_.css b/app/assets/styles/account.CTvLXxT_.css index 931165c..d75c2c4 100644 --- a/app/assets/styles/account.CTvLXxT_.css +++ b/app/assets/styles/account.CTvLXxT_.css @@ -1,3 +1,5 @@ +/* 账号设置:等级、选项卡、资料字段和社交账号入口。 */ +/* 导入方:app/pages/account/index.vue。 */ .acct[data-v-8ca4eb3d] { gap: 16px; width: 100%; @@ -150,6 +152,7 @@ padding-top: 18px; display: flex; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .tabs[data-v-8ca4eb3d] { gap: 0; @@ -171,6 +174,7 @@ .tabs[data-v-8ca4eb3d] { scrollbar-width: thin; } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .tab[data-v-8ca4eb3d]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: -3px; @@ -184,6 +188,7 @@ .social-field .sec-desc[data-v-8ca4eb3d] { margin: 7px 0; } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .acct[data-v-8ca4eb3d] { gap: 14px; diff --git a/app/assets/styles/api-keys.Bq3Csr53.css b/app/assets/styles/api-keys.Bq3Csr53.css index 100f85c..a5b67c0 100644 --- a/app/assets/styles/api-keys.Bq3Csr53.css +++ b/app/assets/styles/api-keys.Bq3Csr53.css @@ -1,3 +1,5 @@ +/* API密钥管理:创建表单、密钥文本及IP白名单编辑。 */ +/* 导入方:app/pages/account/api-keys.vue。 */ .create-key[data-v-76e29360] { border-top: 1px solid var(--console-panel-border); flex-wrap: wrap; @@ -26,6 +28,7 @@ gap: 8px; display: flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .token[data-v-76e29360] { overflow-wrap: anywhere; white-space: normal; @@ -39,6 +42,7 @@ gap: 16px; display: grid; } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .create-key-field[data-v-76e29360] { max-width: none; diff --git a/app/assets/styles/bind.CFZQE2UH.css b/app/assets/styles/bind.CFZQE2UH.css index e96ab8d..acc4572 100644 --- a/app/assets/styles/bind.CFZQE2UH.css +++ b/app/assets/styles/bind.CFZQE2UH.css @@ -1,3 +1,5 @@ +/* 第三方账号绑定:账号表单、区号和协议确认。 */ +/* 导入方:app/pages/oauth/bind.vue。 */ .session-status[data-v-146faed1] { justify-content: center; align-items: center; @@ -54,6 +56,7 @@ legend[data-v-146faed1] { flex-shrink: 0; margin-top: 4px; } +/* 视口条件 (width<=360px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=360px) { .input-row[data-v-146faed1]:has(button) { flex-wrap: wrap; diff --git a/app/assets/styles/blank.DOa3C9wi.css b/app/assets/styles/blank.DOa3C9wi.css index 509038c..10b1200 100644 --- a/app/assets/styles/blank.DOa3C9wi.css +++ b/app/assets/styles/blank.DOa3C9wi.css @@ -1,3 +1,5 @@ +/* 公共认证布局:主题、顶部导航及登录/注册卡片。 */ +/* 导入方:app/layouts/blank.vue。 */ .blank-layout { font-size: max(14px, 1rem); line-height: 1.6; @@ -20,6 +22,7 @@ border-radius: 0; align-self: center; } +/* 认证卡片与品牌区域共同构成公共布局;窄屏覆盖将其收敛为可滚动内容。 */ .auth-card { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); @@ -167,6 +170,7 @@ .auth-card .req { color: var(--p-red-600, #dc2626); } +/* 视口条件 (width<=760px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=760px) { .auth-shell { grid-template-columns: minmax(0, 1fr); @@ -176,11 +180,13 @@ font-size: max(16px, 1em); } } +/* 视口条件 (width<=480px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=480px) { .auth-card { padding: 32px 24px; } } +/* 视口条件 (width<=360px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=360px) { .auth-card { padding: 28px 20px; @@ -205,6 +211,7 @@ color: var(--p-text-color); background: #f7fcff; } +/* 应用深色主题覆盖,保持在基础颜色之后;主题切换只改变外观,不改变业务状态。 */ .app-dark .blank-layout { background: #09090b; } @@ -258,6 +265,7 @@ padding: 28px 14px; display: flex; } +/* 视口条件 (width<=600px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=600px) { .auth-logo img[data-v-69ca9392] { width: 144px; diff --git a/app/assets/styles/cart.CSS2vTmS.css b/app/assets/styles/cart.CSS2vTmS.css index 6d44adc..6b12d03 100644 --- a/app/assets/styles/cart.CSS2vTmS.css +++ b/app/assets/styles/cart.CSS2vTmS.css @@ -1,3 +1,5 @@ +/* 购物车:商品行、配置/数量/报价反馈和结算汇总。 */ +/* 导入方:app/pages/cart/index.vue。 */ .page[data-v-11d8a39a] { flex-direction: column; gap: 21px; @@ -24,6 +26,7 @@ margin: 4px 0 0; font-size: 0.9375rem; } +/* 购物车商品区与结算区的布局;下方容器查询针对商品卡片可用宽度,而非整个视口。 */ .cart-layout[data-v-11d8a39a] { grid-template-columns: minmax(0, 3.15fr) minmax(270px, 1fr); align-items: start; @@ -85,6 +88,7 @@ flex: 1; min-width: 0; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .item-name[data-v-11d8a39a] { overflow-wrap: anywhere; font-size: 1rem; @@ -104,6 +108,7 @@ min-width: 0; display: flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .item-configuration dt[data-v-11d8a39a] { color: var(--p-text-muted-color); overflow-wrap: anywhere; @@ -123,6 +128,7 @@ .item-main[data-v-11d8a39a] { container-type: inline-size; } +/* 容器条件 (width>=560px) 下调整内部排列,判断的是容器可用宽度,不是整个视口。 */ @container (width>=560px) { .item-configuration[data-v-11d8a39a] { grid-template-columns: repeat(2, minmax(0, 1fr)); @@ -160,6 +166,7 @@ font-size: 1.125rem; font-weight: 600; } +/* 报价状态与错误提示独立展示,避免价格更新时页面尺寸剧烈变化。 */ .quote-status[data-v-11d8a39a] { color: var(--p-text-muted-color); margin-bottom: 4px; @@ -251,6 +258,7 @@ .empty-panel[data-v-11d8a39a] .p-button { margin-top: 8px; } +/* 视口条件 (width<=1023px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1023px) { .cart-layout[data-v-11d8a39a] { grid-template-columns: 1fr; @@ -259,6 +267,7 @@ position: static; } } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .page[data-v-11d8a39a] { gap: 18px; diff --git a/app/assets/styles/cloud-server.CcwlOXJ0.css b/app/assets/styles/cloud-server.CcwlOXJ0.css index d525acd..8061e86 100644 --- a/app/assets/styles/cloud-server.CcwlOXJ0.css +++ b/app/assets/styles/cloud-server.CcwlOXJ0.css @@ -1,3 +1,5 @@ +/* 云服务器订购页的基础容器和标题间距。 */ +/* 导入方:app/pages/products/cloud-server.vue。 */ .cloud-order-page[data-v-ef3931f0] { flex-direction: column; gap: 32px; diff --git a/app/assets/styles/create.gX6gpD00.css b/app/assets/styles/create.gX6gpD00.css index 9322c0c..23439a4 100644 --- a/app/assets/styles/create.gX6gpD00.css +++ b/app/assets/styles/create.gX6gpD00.css @@ -1,3 +1,5 @@ +/* 新建工单:类型选择、资源关联、正文、附件及提交操作。 */ +/* 导入方:app/pages/tickets/create.vue。 */ .page[data-v-710c7c49] { flex-direction: column; gap: 18px; @@ -185,6 +187,7 @@ .field[data-v-710c7c49] { gap: 7px; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .list-search[data-v-710c7c49], .list-select[data-v-710c7c49], @@ -279,6 +282,7 @@ .field label[data-v-710c7c49] { font-size: 1rem; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .ticket-section[data-v-710c7c49] { grid-template-columns: 1fr; diff --git a/app/assets/styles/customize.Cc123Awf.css b/app/assets/styles/customize.Cc123Awf.css index 771d6e3..6c0ccb0 100644 --- a/app/assets/styles/customize.Cc123Awf.css +++ b/app/assets/styles/customize.Cc123Awf.css @@ -1,3 +1,5 @@ +/* 独立服务器定制页:配置区域与商品关联入口。 */ +/* 导入方:app/pages/products/dedicated-server/customize.vue。 */ .dedicated-customize[data-v-5618b27d] { flex-direction: column; gap: 32px; @@ -34,6 +36,7 @@ .product-links a[data-v-5618b27d]:hover { color: var(--p-primary-color); } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .dedicated-customize header[data-v-5618b27d] { flex-wrap: wrap; diff --git a/app/assets/styles/dedicated-server.CiJfMYtk.css b/app/assets/styles/dedicated-server.CiJfMYtk.css index e7b61c3..549fa4f 100644 --- a/app/assets/styles/dedicated-server.CiJfMYtk.css +++ b/app/assets/styles/dedicated-server.CiJfMYtk.css @@ -1,3 +1,5 @@ +/* 独立服务器目录:筛选面板、硬件规格、线路选择与购买入口。 */ +/* 导入方:app/pages/products/dedicated-server/customize.vue、app/pages/products/dedicated-server/index.vue。 */ .dedicated-catalog[data-v-e16eb167] { width: 100%; max-width: 1280px; @@ -156,6 +158,7 @@ details[open] > summary > i[data-v-e16eb167] { color: var(--p-text-muted-color); font-size: 0.875rem; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .hardware-spec strong[data-v-e16eb167] { overflow-wrap: anywhere; font-size: 1rem; @@ -303,6 +306,7 @@ details[open] > summary > i[data-v-e16eb167] { text-decoration: none; display: inline-flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .line-action > span[data-v-e16eb167] { overflow-wrap: anywhere; min-width: 0; @@ -318,12 +322,14 @@ summary[data-v-e16eb167]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 3px; } +/* 视口条件 (width>=1024px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width>=1024px) { .catalog-lines[data-v-e16eb167] { position: sticky; top: 76px; } } +/* 视口条件 (width<=1199px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1199px) { .catalog-layout[data-v-e16eb167] { grid-template-columns: 240px minmax(0, 1fr); @@ -349,6 +355,7 @@ summary[data-v-e16eb167]:focus-visible { grid-row: 1 / span 2; } } +/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=767px) { .catalog-head[data-v-e16eb167] { margin-bottom: 28px; diff --git a/app/assets/styles/default.DFUVVR1i.css b/app/assets/styles/default.DFUVVR1i.css index aa89c22..e0bbf72 100644 --- a/app/assets/styles/default.DFUVVR1i.css +++ b/app/assets/styles/default.DFUVVR1i.css @@ -1,3 +1,5 @@ +/* 会员控制台主布局:侧栏、顶栏、维护提示及移动端导航。 */ +/* 导入方:app/layouts/default.vue。 */ .console-layout[data-v-1a9c3b51] { background: var(--console-page-bg); min-height: 100dvh; @@ -19,6 +21,7 @@ position: fixed; inset: 0 0 auto; } +/* 桌面侧栏与移动端导航共享的外壳;断点覆盖会改变其宽度/可见性。 */ .sidebar[data-v-1a9c3b51] { z-index: 30; background: var(--console-page-bg); @@ -150,6 +153,7 @@ .has-banner .main[data-v-1a9c3b51] { min-height: calc(100dvh - 94px); } +/* 顶栏与维护提示、主内容定位配合,避免固定元素遮挡可操作内容。 */ .topbar[data-v-1a9c3b51] { z-index: 35; background: var(--console-panel-bg); @@ -195,6 +199,7 @@ width: 35px; height: 35px; } +/* 应用深色主题覆盖,保持在基础颜色之后;主题切换只改变外观,不改变业务状态。 */ .app-dark .brand-icon[data-v-1a9c3b51] { color: #fff; } @@ -436,6 +441,7 @@ .has-banner .sidebar[data-v-1a9c3b51] { top: 94px; } +/* 视口条件 (width<=1535px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1535px) { .main[data-v-1a9c3b51] { margin-left: 0; @@ -464,6 +470,7 @@ top: 0; } } +/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=767px) { .crumbs[data-v-1a9c3b51] { display: none; @@ -496,6 +503,7 @@ flex-basis: auto; } } +/* 视口条件 (width<=359px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=359px) { .brand[data-v-1a9c3b51] { gap: 5px; diff --git a/app/assets/styles/domains.GiD6NSti.css b/app/assets/styles/domains.GiD6NSti.css index aee97ed..6b536d9 100644 --- a/app/assets/styles/domains.GiD6NSti.css +++ b/app/assets/styles/domains.GiD6NSti.css @@ -1,3 +1,5 @@ +/* 域名列表管理:域名输入、行操作和公共列表区域。 */ +/* 导入方:app/pages/security/domains/index.vue。 */ .field[data-v-0a28aca5] { flex-direction: column; gap: 6px; @@ -90,6 +92,7 @@ .field label[data-v-0a28aca5] { font-size: 0.875rem; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .list-search[data-v-0a28aca5], .list-select[data-v-0a28aca5], diff --git a/app/assets/styles/entry.Cs9kvuGi.css b/app/assets/styles/entry.Cs9kvuGi.css index 62fb4f6..ec5cc88 100644 --- a/app/assets/styles/entry.Cs9kvuGi.css +++ b/app/assets/styles/entry.Cs9kvuGi.css @@ -1,3 +1,6 @@ +/* 全局基础样式:本地图标字体、主题变量、表单/弹窗、商品配置、列表及首页卡片。 */ +/* 导入方:nuxt.config.ts。 */ +/* 本地图标字体声明:URL对应public/icons中的字体,后续.pi字符映射依赖同一份字形表。 */ @font-face { font-family: primeicons; font-display: block; @@ -34,6 +37,7 @@ .pi-spin { animation: 2s linear infinite fa-spin; } +/* 尊重减少动态效果偏好:保留状态信息,降低或取消非必要动画。 */ @media (prefers-reduced-motion: reduce) { .pi-spin { transition-duration: 0s; @@ -43,6 +47,7 @@ animation-delay: -1ms; } } +/* 动画 fa-spin 的关键帧;动画名称与引用该名称的选择器需要同步维护。 */ @keyframes fa-spin { 0% { transform: rotate(0); @@ -1128,6 +1133,7 @@ .pi-spinner:before { content: ""; } +/* 全局设计变量在这里定义;业务样式通过变量读取主题,不应逐组件硬编码一套颜色。 */ :root { --console-page-bg: #f8fafc; --console-panel-bg: #fff; @@ -1155,14 +1161,17 @@ :before { box-sizing: border-box; } +/* 基础页面尺寸与滚动规则;后续滚动条能力检测与这里的布局配合。 */ html { scrollbar-gutter: stable; } +/* 按浏览器是否支持 not (scrollbar-gutter: stable) 分支处理滚动条布局,避免同一能力的两套规则同时生效。 */ @supports not (scrollbar-gutter: stable) { html { overflow-y: scroll; } } +/* 按浏览器是否支持 (scrollbar-gutter: stable) 分支处理滚动条布局,避免同一能力的两套规则同时生效。 */ @supports (scrollbar-gutter: stable) { body.p-overflow-hidden { padding-right: 0 !important; @@ -1185,6 +1194,7 @@ select, textarea { -webkit-tap-highlight-color: transparent; } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ [tabindex]:focus-visible, a:focus-visible, button:focus-visible { @@ -1195,9 +1205,11 @@ img, video { max-width: 100%; } +/* 第三方弹窗尺寸/滚动适配,作用于全站,修改前需检查各类业务对话框。 */ .p-dialog { max-width: calc(100vw - 24px); } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .p-dialog-content { overflow-wrap: anywhere; } @@ -1218,6 +1230,7 @@ video { .p-datatable-header-cell { white-space: nowrap; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .p-datatable-table:not(:has(.p-datatable-empty-message)) { min-width: 680px; @@ -1231,6 +1244,7 @@ video { display: none; } } +/* 尊重减少动态效果偏好:保留状态信息,降低或取消非必要动画。 */ @media (prefers-reduced-motion: reduce) { *, :after, @@ -1254,6 +1268,7 @@ video { background: var(--p-yellow-950); color: var(--p-yellow-300); } +/* 以下为商品配置页共享控件和汇总区域,不绑定某一种供应商模块。 */ .config-options, .config-page { flex-direction: column; @@ -1671,18 +1686,21 @@ video { .config-mobile-total { display: none; } +/* 视口条件 (width>=1024px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width>=1024px) { .config-summary-wrap { position: sticky; top: 76px; } } +/* 视口条件 (width<=1199px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1199px) { .config-choices, .config-page .image-groups { grid-template-columns: repeat(3, minmax(0, 1fr)); } } +/* 视口条件 (width<=1023px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1023px) { .config-layout { grid-template-columns: minmax(0, 1fr); @@ -1753,6 +1771,7 @@ video { flex-shrink: 0; } } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .config-choices, .config-page .image-groups { @@ -1781,6 +1800,7 @@ video { margin-bottom: 24px; } } +/* 尊重减少动态效果偏好:保留状态信息,降低或取消非必要动画。 */ @media (prefers-reduced-motion: reduce) { .config-page .pi-spin { animation: none; @@ -1809,6 +1829,7 @@ video { .config-page > .config-loading-shell { padding-bottom: 0; } +/* 以下为业务列表共享外壳;查询、空态、表格与分页需要一起维持窄屏可用性。 */ .list-page { flex-direction: column; gap: 24px; @@ -2005,6 +2026,7 @@ video { gap: 12px; display: flex; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .list-table:has(.p-datatable-mask) .p-datatable-table:has(.p-datatable-empty-message) { @@ -2059,6 +2081,7 @@ video { width: 100%; } } +/* 账号管理/绑定页面的共享布局,避免在多个路由重复维护相同排版。 */ .account-management-page { flex-direction: column; gap: 21px; @@ -2155,6 +2178,7 @@ video { margin: 6px 0 0; font-size: 0.9375rem; } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .account-management-actions { width: 100%; @@ -2169,6 +2193,7 @@ video { margin-left: auto; } } +/* 首页网格与卡片共享样式;各首页子面板在自身样式文件补充细节。 */ .home-page { flex-direction: column; gap: 21px; @@ -2363,6 +2388,7 @@ button.home-row:hover { outline: 2px solid var(--p-primary-color); outline-offset: 2px; } +/* 视口条件 (width<=1023px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1023px) { .home-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); @@ -2383,6 +2409,7 @@ button.home-row:hover { grid-column: span 1; } } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .home-grid { flex-direction: column; diff --git a/app/assets/styles/error-404.IMo4BvbT.css b/app/assets/styles/error-404.IMo4BvbT.css index f432fef..edfc18c 100644 --- a/app/assets/styles/error-404.IMo4BvbT.css +++ b/app/assets/styles/error-404.IMo4BvbT.css @@ -1,3 +1,4 @@ +/* 404错误页的布局、文字与系统深色模式适配。 */ .grid[data-v-ca5ec3aa] { display: grid; } @@ -110,6 +111,7 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } +/* 跟随系统颜色偏好应用错误页的深色样式。 */ @media (prefers-color-scheme: dark) { .dark\:bg-\[\#020420\][data-v-ca5ec3aa] { --un-bg-opacity: 1; @@ -120,6 +122,7 @@ color: rgb(255 255 255 / var(--un-text-opacity)); } } +/* 视口条件 (width>=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width>=640px) { .sm\:text-\[110px\][data-v-ca5ec3aa] { font-size: 110px; diff --git a/app/assets/styles/error-500.CT6S2vcm.css b/app/assets/styles/error-500.CT6S2vcm.css index 92d8cc7..2f7ee19 100644 --- a/app/assets/styles/error-500.CT6S2vcm.css +++ b/app/assets/styles/error-500.CT6S2vcm.css @@ -1,3 +1,4 @@ +/* 500错误页的布局、文字与系统深色模式适配。 */ .grid[data-v-ecba301a] { display: grid; } @@ -81,6 +82,7 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } +/* 跟随系统颜色偏好应用错误页的深色样式。 */ @media (prefers-color-scheme: dark) { .dark\:bg-\[\#020420\][data-v-ecba301a] { --un-bg-opacity: 1; @@ -91,6 +93,7 @@ color: rgb(255 255 255 / var(--un-text-opacity)); } } +/* 视口条件 (width>=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width>=640px) { .sm\:text-\[110px\][data-v-ecba301a] { font-size: 110px; diff --git a/app/assets/styles/finance.BkxKMno0.css b/app/assets/styles/finance.BkxKMno0.css index 8d14e84..0b649d8 100644 --- a/app/assets/styles/finance.BkxKMno0.css +++ b/app/assets/styles/finance.BkxKMno0.css @@ -1,3 +1,5 @@ +/* 财务中心:余额摘要、提现提示、提醒设置与账务筛选。 */ +/* 导入方:app/pages/finance/index.vue。 */ .finance-shortcut[data-v-18fe1f08] { color: var(--p-primary-color); white-space: nowrap; @@ -249,6 +251,7 @@ .withdraw-notice[data-v-18fe1f08] { margin-top: 21px; } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .wallet-card[data-v-18fe1f08] { flex-wrap: wrap; diff --git a/app/assets/styles/groups.Buw8nwl1.css b/app/assets/styles/groups.Buw8nwl1.css index b8304b3..fae5cb9 100644 --- a/app/assets/styles/groups.Buw8nwl1.css +++ b/app/assets/styles/groups.Buw8nwl1.css @@ -1,3 +1,5 @@ +/* 安全组管理:规则表单、批量操作、组详情及快捷规则网格。 */ +/* 导入方:app/pages/security/groups/index.vue。 */ .row-actions[data-v-fe145bae] { align-items: center; gap: 4px; @@ -18,6 +20,7 @@ .req[data-v-fe145bae] { color: #ef4444; } +/* 安全组规则编辑区域;端口/协议/CIDR校验由业务脚本和后端执行。 */ .rules[data-v-fe145bae] { gap: 12px; } @@ -169,6 +172,7 @@ .field label[data-v-fe145bae] { font-size: 0.875rem; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .list-search[data-v-fe145bae], .list-select[data-v-fe145bae], @@ -275,6 +279,7 @@ background: var(--p-content-background); border-radius: 6px; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .group-detail-head[data-v-fe145bae] { flex-direction: column; diff --git a/app/assets/styles/help.BSOB30LE.css b/app/assets/styles/help.BSOB30LE.css index dc2d8ee..a7e272f 100644 --- a/app/assets/styles/help.BSOB30LE.css +++ b/app/assets/styles/help.BSOB30LE.css @@ -1,3 +1,5 @@ +/* 帮助中心:搜索导航、分类文章、附件与支持提示。 */ +/* 导入方:app/pages/help.vue、app/pages/resources.vue。 */ .help-page[data-v-2e1fbf8d] { flex-direction: column; gap: 21px; @@ -34,6 +36,7 @@ border-radius: 8px; min-width: 0; } +/* 滚动时保持此区域可见;定位偏移需与页面固定顶栏及父级滚动容器一起核对。 */ .help-nav[data-v-2e1fbf8d] { flex-direction: column; gap: 18px; @@ -109,6 +112,7 @@ margin-top: 5px; font-size: 0.875rem; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .nav-item > span[data-v-2e1fbf8d] { overflow-wrap: anywhere; } @@ -253,6 +257,7 @@ .help-content[data-v-2e1fbf8d] .list-empty .p-button { margin-top: 8px; } +/* 视口条件 (width<=1024px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1024px) { .help-body[data-v-2e1fbf8d] { grid-template-columns: 240px minmax(0, 1fr); @@ -262,6 +267,7 @@ padding: 24px; } } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .page-head[data-v-2e1fbf8d] { flex-wrap: wrap; diff --git a/app/assets/styles/home.DWX5YkpJ.css b/app/assets/styles/home.DWX5YkpJ.css index 04a2e2a..0068406 100644 --- a/app/assets/styles/home.DWX5YkpJ.css +++ b/app/assets/styles/home.DWX5YkpJ.css @@ -1,3 +1,4 @@ +/* 旧平台临时登录入口:验证反馈和失败后的重试/账号登录入口。 */ .legacy-login[data-v-64cc050c] { text-align: center; } diff --git a/app/assets/styles/invoice.B6sYFYlb.css b/app/assets/styles/invoice.B6sYFYlb.css index a3d76b1..2205a88 100644 --- a/app/assets/styles/invoice.B6sYFYlb.css +++ b/app/assets/styles/invoice.B6sYFYlb.css @@ -1,3 +1,5 @@ +/* 单张发票详情:票面信息、下载操作与文件/错误提示。 */ +/* 导入方:app/pages/invoices/invoice.vue。 */ .invoice-detail-page[data-v-3b8f6704] { flex-direction: column; gap: 14px; @@ -40,6 +42,7 @@ color: var(--p-text-muted-color); font-size: 0.875rem; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .invoice-paper dd[data-v-3b8f6704] { overflow-wrap: anywhere; margin: 0; @@ -72,6 +75,7 @@ gap: 14px; display: flex; } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .invoice-paper[data-v-3b8f6704] { padding: 28px 14px; diff --git a/app/assets/styles/invoices.t1P1GXOx.css b/app/assets/styles/invoices.t1P1GXOx.css index 3d01db1..0657c2f 100644 --- a/app/assets/styles/invoices.t1P1GXOx.css +++ b/app/assets/styles/invoices.t1P1GXOx.css @@ -1,3 +1,5 @@ +/* 发票列表与申请:可开票订单、抬头、金额汇总和申请操作。 */ +/* 导入方:app/pages/invoices/index.vue、app/pages/invoices/request.vue。 */ .list-head-actions[data-v-86fc6dc2] a.p-button { text-decoration: none; } @@ -24,6 +26,7 @@ gap: 2px; display: inline-flex; } +/* 开票申请区域:订单选择、抬头与金额提示按同一表单流排列。 */ .apply[data-v-86fc6dc2] { flex-direction: column; gap: 18px; @@ -156,6 +159,7 @@ .request-actions > span[data-v-86fc6dc2] { margin-right: auto; } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .apply-grid[data-v-86fc6dc2] { grid-template-columns: minmax(0, 1fr); diff --git a/app/assets/styles/logbook.Y7gm684m.css b/app/assets/styles/logbook.Y7gm684m.css index dff810b..195da45 100644 --- a/app/assets/styles/logbook.Y7gm684m.css +++ b/app/assets/styles/logbook.Y7gm684m.css @@ -1,3 +1,5 @@ +/* 操作日志:查询工具栏、表格与空态/分页。 */ +/* 导入方:app/pages/logbook/index.vue。 */ .list-page[data-v-0e32233b] { gap: 21px; } @@ -62,6 +64,7 @@ .field label[data-v-0e32233b] { font-size: 0.875rem; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .list-search[data-v-0e32233b], .list-select[data-v-0e32233b], diff --git a/app/assets/styles/login.Clyo2_3T.css b/app/assets/styles/login.Clyo2_3T.css index e9b416c..131de39 100644 --- a/app/assets/styles/login.Clyo2_3T.css +++ b/app/assets/styles/login.Clyo2_3T.css @@ -1,9 +1,12 @@ +/* 登录页补充样式:验证码占位、错误/禁用态及发送按钮。 */ +/* 导入方:app/pages/login.vue。 */ .login-captcha[data-v-7896f676] { align-items: center; min-width: 0; height: max(78px, 30px + 3.1em); display: grid; } +/* 验证码未就绪/失败时保持占位和重试入口,避免输入区随加载结果跳动。 */ .captcha-placeholder[data-v-7896f676] { border: 1px solid var(--p-form-field-border-color); border-radius: var(--p-inputtext-border-radius, 6px); @@ -23,6 +26,7 @@ cursor: not-allowed; opacity: 0.65; } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .captcha-placeholder[data-v-7896f676]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 2px; @@ -34,6 +38,7 @@ .code-row[data-v-7896f676] .p-button { width: 9em; } +/* 视口条件 (width<=360px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=360px) { .code-row[data-v-7896f676] .p-button { width: 100%; diff --git a/app/assets/styles/messages.asRdYcVu.css b/app/assets/styles/messages.asRdYcVu.css index 3c5dcc5..5a1d694 100644 --- a/app/assets/styles/messages.asRdYcVu.css +++ b/app/assets/styles/messages.asRdYcVu.css @@ -1,3 +1,5 @@ +/* 站内消息:筛选、批量选中、未读标记及消息详情导航。 */ +/* 导入方:app/pages/messages/index.vue。 */ .list-page[data-v-e9dbafec] { gap: 21px; } @@ -38,6 +40,7 @@ .list-select[data-v-e9dbafec] { width: 150px; } +/* 批量消息操作区与普通查询工具栏分开,选中状态来自页面数据。 */ .selection-toolbar[data-v-e9dbafec] { flex-wrap: wrap; justify-content: space-between; @@ -84,6 +87,7 @@ [data-v-e9dbafec] .list-empty { min-height: 300px; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .mail-title[data-v-e9dbafec] { color: var(--p-text-muted-color); cursor: pointer; @@ -143,6 +147,7 @@ font-size: 0.9375rem; display: flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .detail-body[data-v-e9dbafec] { overflow-wrap: anywhere; font-size: 1rem; @@ -166,6 +171,7 @@ font-size: 1rem; line-height: 1.8; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .list-toolbar[data-v-e9dbafec] { padding: 16px; diff --git a/app/assets/styles/news.CbIzdrjt.css b/app/assets/styles/news.CbIzdrjt.css index 8d43c04..69c9231 100644 --- a/app/assets/styles/news.CbIzdrjt.css +++ b/app/assets/styles/news.CbIzdrjt.css @@ -1,3 +1,5 @@ +/* 新闻内容:卡片列表、图片摘要和详情正文。 */ +/* 导入方:app/pages/news.vue、app/pages/resources.vue。 */ .news-list[data-v-0f61b69d] { flex-direction: column; gap: 12px; @@ -86,6 +88,7 @@ border: 1px solid var(--p-content-border-color, #e2e8f0); padding: 6px 10px; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .news-img[data-v-0f61b69d] { display: none; @@ -155,6 +158,7 @@ .field label[data-v-0f61b69d] { font-size: 0.875rem; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .list-search[data-v-0f61b69d], .list-select[data-v-0f61b69d], diff --git a/app/assets/styles/notices.BXNGOj-Q.css b/app/assets/styles/notices.BXNGOj-Q.css index 311beb1..d5ffae3 100644 --- a/app/assets/styles/notices.BXNGOj-Q.css +++ b/app/assets/styles/notices.BXNGOj-Q.css @@ -1,3 +1,5 @@ +/* 公告中心:分类标签、公告列表及文章详情。 */ +/* 导入方:app/pages/notices/index.vue、app/pages/resources.vue。 */ .list[data-v-4ba0157b] { flex-direction: column; display: flex; @@ -107,6 +109,7 @@ .field label[data-v-4ba0157b] { font-size: 0.875rem; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .list-search[data-v-4ba0157b], .list-select[data-v-4ba0157b], @@ -174,6 +177,7 @@ .detail-time[data-v-4ba0157b] { font-size: 0.875rem; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .notice-item[data-v-4ba0157b] { flex-direction: column; diff --git a/app/assets/styles/official-site.pBD-PXD7.css b/app/assets/styles/official-site.pBD-PXD7.css index f6f7a5b..66de8e3 100644 --- a/app/assets/styles/official-site.pBD-PXD7.css +++ b/app/assets/styles/official-site.pBD-PXD7.css @@ -1,3 +1,5 @@ +/* 公开官网布局:导航、首屏、产品卡片、基础设施展示与联系页脚。 */ +/* 导入方:app/layouts/official-site.vue。 */ .official-site { min-height: 100vh; color: var(--p-text-color, #334155); @@ -9,6 +11,7 @@ color: inherit; text-decoration: none; } +/* 滚动时保持此区域可见;定位偏移需与页面固定顶栏及父级滚动容器一起核对。 */ .official-header { z-index: 20; border-bottom: 1px solid var(--console-panel-border, #e2e8f0); @@ -291,6 +294,7 @@ .official-button i { font-size: 0.8rem; } +/* 首屏装饰性网络图由CSS元素组成,与真实资源监控数据无关。 */ .official-hero-visual { border: 1px solid color-mix(in srgb, var(--official-primary) 17%, var(--console-panel-border)); @@ -523,6 +527,7 @@ color: var(--official-primary); font-size: 0.72rem; } +/* 官网产品卡片网格,不改变商品接口或库存判定。 */ .official-product-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; @@ -893,6 +898,7 @@ flex-shrink: 0; justify-content: flex-end; } +/* 官网联系信息和页脚链接区域,与会员控制台页脚分别维护。 */ .official-footer { border-top: 1px solid var(--console-panel-border); background: var(--p-content-background); @@ -988,11 +994,13 @@ .official-footer-bottom a:hover { color: var(--official-primary); } +/* 键盘操作的可见焦点:不要只保留鼠标 hover 效果而移除此反馈。 */ .official-site a:focus-visible, .official-site button:focus-visible { outline: 2px solid var(--official-primary); outline-offset: 3px; } +/* 视口条件 (width<=900px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=900px) { .official-header-inner { gap: 18px; @@ -1024,6 +1032,7 @@ grid-column: 2; } } +/* 视口条件 (width<=680px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=680px) { .official-footer-bottom, .official-footer-main, @@ -1168,6 +1177,7 @@ padding: 12px 0; } } +/* 尊重减少动态效果偏好:保留状态信息,降低或取消非必要动画。 */ @media (prefers-reduced-motion: reduce) { .official-site *, .official-site :after, diff --git a/app/assets/styles/orders.BflDlvVz.css b/app/assets/styles/orders.BflDlvVz.css index 6a1367f..d592ca4 100644 --- a/app/assets/styles/orders.BflDlvVz.css +++ b/app/assets/styles/orders.BflDlvVz.css @@ -1,3 +1,5 @@ +/* 订单列表:说明、金额、关联详情及筛选操作。 */ +/* 导入方:app/pages/finance/index.vue、app/pages/orders/index.vue。 */ .bill-description[data-v-d87be2e3] { color: var(--p-text-muted-color); margin: 0; @@ -15,6 +17,7 @@ white-space: nowrap; font-weight: 500; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .order-description[data-v-d87be2e3] { -webkit-line-clamp: 3; line-clamp: 3; @@ -53,6 +56,7 @@ .list-foot[data-v-d87be2e3] { justify-content: center; } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .list-toolbar-right > .p-iconfield[data-v-d87be2e3] { flex-basis: 100%; diff --git a/app/assets/styles/pages.DytekQXu.css b/app/assets/styles/pages.DytekQXu.css index 97d51b3..60367fc 100644 --- a/app/assets/styles/pages.DytekQXu.css +++ b/app/assets/styles/pages.DytekQXu.css @@ -1,3 +1,5 @@ +/* 会员首页欢迎区:账号信息、操作入口与统计卡片。 */ +/* 导入方:app/pages/index.vue。 */ .welcome-card[data-v-b43b228e] { --welcome-line: #dce7f4; --welcome-tile-bg: #fff; @@ -37,6 +39,7 @@ width: 30px; height: 30px; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .welcome-title[data-v-b43b228e] { overflow-wrap: anywhere; letter-spacing: -0.35px; @@ -82,6 +85,7 @@ width: 17px; height: 17px; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .welcome-login dd[data-v-b43b228e] { min-width: 0; color: var(--p-text-color); @@ -192,6 +196,7 @@ background: #12233b; border-color: #304766; } +/* 视口条件 (width<=1023px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1023px) { .tiles[data-v-b43b228e] { grid-template-columns: repeat(2, minmax(0, 1fr)); @@ -203,6 +208,7 @@ border-top: 1px solid var(--welcome-line); } } +/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=767px) { .welcome-head[data-v-b43b228e] { align-items: flex-start; @@ -227,6 +233,7 @@ gap: 5px; } } +/* 视口条件 (width<=639px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=639px) { .welcome-title[data-v-b43b228e] { font-size: 1.5rem; diff --git a/app/assets/styles/products.CrccEo2m.css b/app/assets/styles/products.CrccEo2m.css index 414461a..6b4ac81 100644 --- a/app/assets/styles/products.CrccEo2m.css +++ b/app/assets/styles/products.CrccEo2m.css @@ -1,3 +1,5 @@ +/* 商品目录:分类、搜索、库存状态、价格及配置入口。 */ +/* 导入方:app/pages/products/index.vue。 */ .catalog-page[data-v-a6c63d86] { flex-direction: column; gap: 24px; @@ -60,6 +62,7 @@ gap: 10px; display: flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .category-options button[data-v-a6c63d86] { border: 1px solid var(--p-content-border-color); background: var(--p-content-background); @@ -157,6 +160,7 @@ font-size: 0.9375rem; display: flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .search-result[data-v-a6c63d86] { overflow-wrap: anywhere; flex-wrap: wrap; @@ -332,6 +336,7 @@ button[data-v-a6c63d86]:focus-visible { outline: 2px solid var(--p-primary-color); outline-offset: 3px; } +/* 视口条件 (width<=1100px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1100px) { .product-columns[data-v-a6c63d86], .product-row[data-v-a6c63d86] { @@ -342,6 +347,7 @@ button[data-v-a6c63d86]:focus-visible { display: none; } } +/* 视口条件 (width<=760px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=760px) { .catalog-categories[data-v-a6c63d86] { padding: 16px; diff --git a/app/assets/styles/public-order.0RThfr7m.css b/app/assets/styles/public-order.0RThfr7m.css index 31d8d55..2e92014 100644 --- a/app/assets/styles/public-order.0RThfr7m.css +++ b/app/assets/styles/public-order.0RThfr7m.css @@ -1,3 +1,5 @@ +/* 访客购买布局:品牌、登录入口、维护通知及跳到正文链接。 */ +/* 导入方:app/layouts/public-order.vue。 */ .public-order-layout[data-v-f882e304] { background: var(--console-page-bg); min-height: 100dvh; @@ -82,11 +84,13 @@ .public-order-layout[data-v-f882e304]:has(.config-mobile-total) { padding-bottom: calc(84px + env(safe-area-inset-bottom, 0px)); } +/* 视口条件 (width>=1024px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width>=1024px) { .public-order-layout[data-v-f882e304]:has(.config-mobile-total) { padding-bottom: 0; } } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .public-order-header[data-v-f882e304] { flex-wrap: wrap; diff --git a/app/assets/styles/realname.BpRCvfXO.css b/app/assets/styles/realname.BpRCvfXO.css index 64fc1ef..382992d 100644 --- a/app/assets/styles/realname.BpRCvfXO.css +++ b/app/assets/styles/realname.BpRCvfXO.css @@ -1,3 +1,5 @@ +/* 实名认证:步骤、渠道选择、身份字段和认证状态/嵌入页面。 */ +/* 导入方:app/pages/account/index.vue、app/pages/account/realname/company.vue、app/pages/account/realname/index.vue、app/pages/account/realname/personal.vue。 */ .auth-template-link[data-v-ed164766] { color: var(--p-primary-color); align-self: flex-start; @@ -65,6 +67,7 @@ font-size: 0.9375rem; display: flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .certify-id[data-v-ed164766] { overflow-wrap: anywhere; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; @@ -131,6 +134,7 @@ gap: 12px; display: grid; } +/* 认证渠道选择与状态反馈,禁用外观不替代认证服务的权限判断。 */ .channel-picker[data-v-ed164766] { flex-direction: column; gap: 14px; @@ -188,6 +192,7 @@ color: var(--p-primary-color); font-size: 24px; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .channel-title[data-v-ed164766] { overflow-wrap: anywhere; flex: 1; @@ -263,6 +268,7 @@ .page[data-v-ed164766] .p-tabpanels { padding: 21px 0 0; } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .panel[data-v-ed164766] { padding: 14px; diff --git a/app/assets/styles/recommend.C1KCHBPJ.css b/app/assets/styles/recommend.C1KCHBPJ.css index 2b675ba..ce52ea1 100644 --- a/app/assets/styles/recommend.C1KCHBPJ.css +++ b/app/assets/styles/recommend.C1KCHBPJ.css @@ -1,3 +1,5 @@ +/* 推广中心:加入说明、奖励统计、推广链接及数据列表。 */ +/* 导入方:app/pages/recommend/index.vue。 */ .recommend-page[data-v-78278278] { --recommend-gap: 14px; --recommend-section-gap: 21px; @@ -112,6 +114,7 @@ color: var(--p-text-muted-color); font-size: 1rem; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .stat-num[data-v-78278278] { font-variant-numeric: tabular-nums; overflow-wrap: anywhere; @@ -156,6 +159,7 @@ width: 100%; min-width: 0; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .link-tip[data-v-78278278] { color: var(--p-text-muted-color); overflow-wrap: anywhere; @@ -164,6 +168,7 @@ font-size: 0.9375rem; line-height: 1.7; } +/* 自定义推广链接管理区域;链接生成和访问校验不是CSS职责。 */ .custom-link-block[data-v-78278278] { gap: var(--recommend-gap); flex-direction: column; @@ -245,6 +250,7 @@ .list-foot[data-v-78278278] { justify-content: center; } +/* 视口条件 (width<=1100px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1100px) { .reward-summary[data-v-78278278] { align-items: stretch; @@ -260,6 +266,7 @@ border-top: 1px solid var(--p-content-border-color); } } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .join-steps[data-v-78278278] { grid-template-columns: minmax(0, 1fr); diff --git a/app/assets/styles/remote-console.zcxaOxxS.css b/app/assets/styles/remote-console.zcxaOxxS.css index 1ecbf97..1f674af 100644 --- a/app/assets/styles/remote-console.zcxaOxxS.css +++ b/app/assets/styles/remote-console.zcxaOxxS.css @@ -1,3 +1,5 @@ +/* 独立远控页面:实例标识、连接说明、操作区域和返回入口。 */ +/* 导入方:app/pages/remote-console.vue。 */ .standalone-console[data-v-5f7e2625] { color: #23324d; background: #f8fafc; @@ -103,6 +105,7 @@ padding: 14px 24px; font-size: 0.875rem; } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .console-page-header[data-v-5f7e2625] { min-height: 64px; diff --git a/app/assets/styles/resources._aUrMsvM.css b/app/assets/styles/resources._aUrMsvM.css index d5e64ef..353e19f 100644 --- a/app/assets/styles/resources._aUrMsvM.css +++ b/app/assets/styles/resources._aUrMsvM.css @@ -1,3 +1,5 @@ +/* 资源总览:资源分类标签和对应内容容器。 */ +/* 导入方:app/pages/resources.vue。 */ .resources-page[data-v-7390ef3e] { flex-direction: column; gap: 21px; diff --git a/app/assets/styles/server.DGuhrprb.css b/app/assets/styles/server.DGuhrprb.css index bff9c91..cb414d2 100644 --- a/app/assets/styles/server.DGuhrprb.css +++ b/app/assets/styles/server.DGuhrprb.css @@ -1,3 +1,5 @@ +/* 服务器详情:实例标识、资料、动作确认及配置区域。 */ +/* 导入方:app/pages/servers/server.vue。 */ .page[data-v-b18590a1] { flex-direction: column; gap: 12px; @@ -147,6 +149,7 @@ .fact label[data-v-b18590a1] { color: var(--p-text-muted-color); } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .fact > span[data-v-b18590a1] { overflow-wrap: anywhere; max-width: 100%; @@ -158,6 +161,7 @@ max-width: 100%; display: inline-flex; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .ip-value .mono[data-v-b18590a1] { overflow-wrap: anywhere; min-width: 0; @@ -228,6 +232,7 @@ margin-bottom: 7px; display: block; } +/* 视口条件 (width<=1199px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1199px) { .host-head[data-v-b18590a1] { flex-wrap: wrap; @@ -239,6 +244,7 @@ grid-template-columns: minmax(160px, 2fr) repeat(3, minmax(90px, 1fr)); } } +/* 视口条件 (width<=767px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=767px) { .host-panel[data-v-b18590a1] { padding-top: 7px; diff --git a/app/assets/styles/settings.zV3AWuRw.css b/app/assets/styles/settings.zV3AWuRw.css index 192e8bf..1c1f694 100644 --- a/app/assets/styles/settings.zV3AWuRw.css +++ b/app/assets/styles/settings.zV3AWuRw.css @@ -1,3 +1,5 @@ +/* 发票设置:抬头卡片、地址资料、表单与默认状态标记。 */ +/* 导入方:app/pages/invoices/settings/index.vue。 */ .page[data-v-4a007273] { flex-direction: column; gap: 16px; @@ -178,6 +180,7 @@ .form[data-v-4a007273] { gap: 21px; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .settings-section[data-v-4a007273] { grid-template-columns: minmax(0, 1fr); diff --git a/app/assets/styles/ssh-keys.WWTOf2zG.css b/app/assets/styles/ssh-keys.WWTOf2zG.css index a5c3f58..09fdba0 100644 --- a/app/assets/styles/ssh-keys.WWTOf2zG.css +++ b/app/assets/styles/ssh-keys.WWTOf2zG.css @@ -1,3 +1,6 @@ +/* SSH密钥列表:公钥/指纹长文本、编辑表单、分页及行操作。 */ +/* 导入方:app/pages/security/ssh-keys/index.vue。 */ +/* 公钥和指纹是不可预测长度的文本,换行规则防止它们撑破表格。 */ .key-text[data-v-31489433] { color: var(--p-text-muted-color, #64748b); text-overflow: ellipsis; @@ -103,6 +106,7 @@ .field label[data-v-31489433] { font-size: 0.875rem; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .list-search[data-v-31489433], .list-select[data-v-31489433], diff --git a/app/assets/styles/tickets.Dz8JrDhQ.css b/app/assets/styles/tickets.Dz8JrDhQ.css index 9c0fd10..8d92b10 100644 --- a/app/assets/styles/tickets.Dz8JrDhQ.css +++ b/app/assets/styles/tickets.Dz8JrDhQ.css @@ -1,3 +1,5 @@ +/* 工单列表:分类统计、状态标记、列表查询和支持说明。 */ +/* 导入方:app/pages/tickets/index.vue。 */ .stat-row[data-v-1ff3e04d] { flex-wrap: wrap; gap: 12px; @@ -104,6 +106,7 @@ .field label[data-v-1ff3e04d] { font-size: 0.875rem; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .list-search[data-v-1ff3e04d], .list-select[data-v-1ff3e04d], diff --git a/app/assets/styles/transfer.CAsJhVUW.css b/app/assets/styles/transfer.CAsJhVUW.css index 710d5c7..c0ba072 100644 --- a/app/assets/styles/transfer.CAsJhVUW.css +++ b/app/assets/styles/transfer.CAsJhVUW.css @@ -1,3 +1,5 @@ +/* 资源转移:接收码、资源信息、验证结果与风险确认。 */ +/* 导入方:app/pages/transfer/index.vue。 */ .code-card[data-v-559a870e] { border: 1px solid var(--p-content-border-color, #e2e8f0); background: var(--p-content-background); @@ -197,6 +199,7 @@ .field label[data-v-559a870e] { font-size: 0.875rem; } +/* 视口条件 (width<=768px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=768px) { .list-search[data-v-559a870e], .list-select[data-v-559a870e], @@ -252,6 +255,7 @@ grid-column: 1/-1; font-weight: 700; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .code-value[data-v-559a870e] { background: var(--p-content-background); border: 1px solid var(--p-content-border-color); diff --git a/app/assets/styles/vouchers.5FV4ozrh.css b/app/assets/styles/vouchers.5FV4ozrh.css index 0a1b69b..b899a43 100644 --- a/app/assets/styles/vouchers.5FV4ozrh.css +++ b/app/assets/styles/vouchers.5FV4ozrh.css @@ -1,3 +1,5 @@ +/* 优惠券中心:券面金额、使用门槛、可用/失效状态及分页。 */ +/* 导入方:app/pages/vouchers/index.vue。 */ .voucher-page[data-v-b08e3df0] { flex-direction: column; gap: 21px; @@ -149,12 +151,14 @@ .face-value small[data-v-b08e3df0] { font-size: 1.125rem; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .face-value strong[data-v-b08e3df0] { overflow-wrap: anywhere; font-size: clamp(24px, 2.6vw, 36px); font-weight: 650; line-height: 1.2; } +/* 允许连续长文本换行,防止IP、密钥或用户输入撑破当前容器;不会修改原始数据。 */ .face-threshold[data-v-b08e3df0] { overflow-wrap: anywhere; font-size: 0.875rem; @@ -236,6 +240,7 @@ .voucher-footer .p-button[data-v-b08e3df0] { flex-shrink: 0; } +/* 不可用券的视觉弱化,实际可用性仍须由后端结算校验。 */ .inactive .voucher-face[data-v-b08e3df0], .use-tip[data-v-b08e3df0] { color: var(--p-text-muted-color); @@ -282,11 +287,13 @@ background: 0 0; padding: 0; } +/* 视口条件 (width<=1000px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=1000px) { .guide-note[data-v-b08e3df0] { display: none; } } +/* 视口条件 (width<=640px) 下的响应式覆盖;保留相对基础规则的层叠顺序。 */ @media (width<=640px) { .page-head[data-v-b08e3df0] { flex-wrap: wrap; diff --git a/public/fonts/harmonyos-sans-sc/Bold.css b/public/fonts/harmonyos-sans-sc/Bold.css index b948702..1637a08 100644 --- a/public/fonts/harmonyos-sans-sc/Bold.css +++ b/public/fonts/harmonyos-sans-sc/Bold.css @@ -22,6 +22,8 @@ preferredFamily: HarmonyOS Sans SC preferredSubfamily: Bold */ +/* 本地 HarmonyOS Sans SC,字重 700:优先命中 local 字体,缺失字形再按 unicode-range 加载相邻 WOFF2 分片。 */ +/* 下列字符分片由工具生成,必须保留字体元数据、授权声明、URL与范围的对应关系;不要逐段手改字符表。 */ @font-face { font-family:"HarmonyOS Sans SC"; src:local("HarmonyOS Sans SC Bold"),local("HarmonyOS Sans SC"),url("./Bold_53d21e.woff2") format("woff2"); @@ -677,4 +679,4 @@ font-style: normal; font-weight: 700; font-display: swap; unicode-range:U+3041-3094,U+309b-309e,U+30a1-30fe; -} \ No newline at end of file +} diff --git a/public/fonts/harmonyos-sans-sc/Regular.css b/public/fonts/harmonyos-sans-sc/Regular.css index 9ac1663..af0e637 100644 --- a/public/fonts/harmonyos-sans-sc/Regular.css +++ b/public/fonts/harmonyos-sans-sc/Regular.css @@ -22,6 +22,8 @@ preferredFamily: HarmonyOS Sans SC preferredSubfamily: Regular */ +/* 本地 HarmonyOS Sans SC,字重 400:优先命中 local 字体,缺失字形再按 unicode-range 加载相邻 WOFF2 分片。 */ +/* 下列字符分片由工具生成,必须保留字体元数据、授权声明、URL与范围的对应关系;不要逐段手改字符表。 */ @font-face { font-family:"HarmonyOS Sans SC"; src:local("HarmonyOS Sans SC Regular"),local("HarmonyOS Sans SC"),url("./Regular_ac4458.woff2") format("woff2"); @@ -677,4 +679,4 @@ font-style: normal; font-weight: 400; font-display: swap; unicode-range:U+3041-3094,U+309b-309e,U+30a1-30fe; -} \ No newline at end of file +} diff --git a/public/fonts/harmonyos-sans-sc/Semibold.css b/public/fonts/harmonyos-sans-sc/Semibold.css index b7eeb37..232029a 100644 --- a/public/fonts/harmonyos-sans-sc/Semibold.css +++ b/public/fonts/harmonyos-sans-sc/Semibold.css @@ -22,6 +22,8 @@ preferredFamily: HarmonyOS Sans SC preferredSubfamily: Semibold */ +/* 本地 HarmonyOS Sans SC,字重 600:优先命中 local 字体,缺失字形再按 unicode-range 加载相邻 WOFF2 分片。 */ +/* 下列字符分片由工具生成,必须保留字体元数据、授权声明、URL与范围的对应关系;不要逐段手改字符表。 */ @font-face { font-family:"HarmonyOS Sans SC"; src:local("HarmonyOS Sans SC Semibold"),local("HarmonyOS Sans SC Semibold"),url("./Semibold_249977.woff2") format("woff2"); @@ -677,4 +679,4 @@ font-style: normal; font-weight: 600; font-display: swap; unicode-range:U+3041-3094,U+309b-309e,U+30a1-30fe; -} \ No newline at end of file +}