:root {
  /* 品牌主色与 logo 同源:表圈墨黑 #0B0F14、指针红 #C1121F。
     2026-07 品牌重塑前主色为蓝(#2563eb),现蓝色仅保留为 info 语义色。 */
  --co-primary: #c1121f;
  --co-primary-strong: #99101a;
  /* 品牌主色弱底:tonal 按钮/选中态的红系浅底,与语义 critical-bg 区分语义。 */
  --co-primary-bg: #fdeef0;
  --co-primary-border: #f3b9c0;
  --co-accent: #c1121f;
  --co-info: #2563eb;
  --co-success: #14835b;
  --co-warning: #b7791f;
  --co-critical: #c53030;
  --co-info-bg: #eff6ff;
  --co-success-bg: #f0fdf4;
  --co-warning-bg: #fffbeb;
  --co-critical-bg: #fef2f2;
  /* 语义色第三档:描边/分隔线。缺档时组件各自写死 tint 值(切入点 3 批次 A 补齐)。 */
  --co-info-border: #bfdbfe;
  --co-success-border: #bbf7d0;
  --co-warning-border: #fde68a;
  --co-critical-border: #fecaca;
  /* 状态灯辉光:静态值,不用 color-mix(信创浏览器基线,同 El 桥接的预计算约定)。 */
  --co-info-glow: rgba(37, 99, 235, 0.13);
  --co-success-glow: rgba(20, 131, 91, 0.13);
  --co-warning-glow: rgba(183, 121, 31, 0.13);
  --co-critical-glow: rgba(197, 48, 48, 0.13);
  --co-neutral-glow: rgba(100, 116, 139, 0.12);
  --co-bg: #f4f7fb;
  --co-surface: #ffffff;
  --co-surface-raised: #ffffff;
  --co-surface-muted: #f8fafc;
  --co-surface-sunken: #eef3f8;
  --co-surface-strong: #0b1426;
  --co-border: #dbe3ef;
  --co-border-soft: #e8eef6;
  --co-border-strong: #c7d3e2;
  --co-hairline: rgba(15, 23, 42, 0.055);
  --co-text: #132033;
  --co-text-muted: #64748b;
  /* subtle 仅用于**禁用态与装饰性文字**——WCAG 1.4.3 对失效控件豁免对比度。
     占位符是真实文字、不豁免,单列 --co-text-placeholder(白底 4.72:1 达 AA)。
     辅助说明文字请用 --co-text-muted(4.76:1),不要用 subtle。 */
  --co-text-subtle: #94a3b8;
  --co-text-placeholder: #647589;
  /* 控件圆角 4px:2026-09-01 云控制台质感基线(阿里云 2px/火山引擎 4px 实测),
     方正精密。容器圆角 v2.2 升一档(#1359 简洁大气层):方正控件 + 温润容器
     的对比正是苹果式层级——精确的操作物,舒展的承载面。 */
  --co-radius-sm: 4px;
  --co-radius-md: 10px;
  --co-radius-lg: 12px;
  --co-radius-xl: 16px;
  --co-focus-ring: rgba(193, 18, 31, 0.12);
  --co-shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.06);
  /* v2.2 弥散投影(#1359):半径更大、透明度更低的双层软影,景深来自扩散而非浓度。 */
  --co-shadow-md: 0 18px 44px rgba(15, 23, 42, 0.07);
  --co-shadow-pop: 0 16px 48px rgba(15, 23, 42, 0.1), 0 4px 12px rgba(15, 23, 42, 0.05);
  --co-shadow-modal: 0 28px 80px rgba(15, 23, 42, 0.16), 0 8px 24px rgba(15, 23, 42, 0.06);
  /* 玻璃层材质:仅浅色弹出面使用,配 backdrop-filter;不支持时由 @supports 回退实底。 */
  --co-glass: rgba(255, 255, 255, 0.86);
  --co-overlay-dim: rgba(15, 23, 42, 0.32);
  /* 卡片/面板 hover 抬升档(§5:位移最多 -1px,投影不得制造漂浮感)。
     此前各页自写 0 10px 28px rgba(15,23,42,.07) 之类,夜班下不随主题变化。 */
  --co-shadow-hover: 0 8px 24px rgba(15, 23, 42, 0.08);
  --co-motion-instant: 120ms;
  --co-motion-standard: 180ms;
  /* v2.2 弹层入场:苹果式 spring 缓动,快速起步、柔和落位。 */
  --co-motion-overlay: 240ms;
  --co-ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
  --co-ease-emphasized: cubic-bezier(0.25, 1, 0.35, 1);
  --co-ease-spring: cubic-bezier(0.32, 0.72, 0, 1);
  /* UI v2.0 密度语义:组件消费语义变量,页面通过 data-ui-density 选择使用场景。
     comfortable 是默认操作面;compact 用于盘点、审计和高频值守清单。
     控件高 32px 对齐云控制台基线(阿里云/火山引擎实测均为 32px)。
     --el-component-size 桥接必须在每个密度作用域内重复声明:自定义属性在
     定义处即完成 var() 替换,只写在 :root 会把 32px 固化给所有后代。 */
  --co-density-control-height: 32px;
  --co-density-row-block: 11px;
  --co-density-row-inline: 12px;
  --co-density-panel-padding: 18px;
  --co-density-section-gap: 24px;
  --el-component-size: var(--co-density-control-height);
  /* 图表分类色板(§16,ui-spec v2.0):固定顺序取用、色随实体不随排名、
     第 9 系列并入「其他」。经 CVD/明度带/饱和度/对比度脚本验证
     (浅色于 #ffffff、夜班于 #0e1626)。语义色与品牌红保留给状态,不入系列。 */
  --co-chart-1: #3a5fd0;
  --co-chart-2: #7a8a18;
  --co-chart-3: #c23d85;
  --co-chart-4: #5a4fd8;
  --co-chart-5: #0e96a8;
  --co-chart-6: #a0561a;
  --co-chart-7: #7c3fd6;
  --co-chart-8: #1e9bd6;
  /* 'Inter Variable'/'JetBrains Mono Variable' 是随包交付的 @fontsource 字族
     (#1345);裸名 Inter/JetBrains Mono 保留给已装系统字体的环境作次选。 */
  --co-font-mono:
    'JetBrains Mono Variable', 'JetBrains Mono', 'SFMono-Regular', Consolas,
    'Liberation Mono', Menlo, monospace;
  --co-font-sans:
    'Inter Variable', Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
    'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
  --el-color-primary: var(--co-primary);
  --el-font-family: var(--co-font-sans);
  /* 全局 13px 基准(DESIGN.md body 口径;云控制台基线为 12px,取 13px 兼顾中文可读)。
     El 组件字号必须显式桥接,出厂 --el-font-size-base 是 14px,不随 body 走。 */
  --el-font-size-base: 13px;
  --el-font-size-small: 12px;
  --el-border-radius-base: var(--co-radius-sm);
  --el-border-radius-small: var(--co-radius-sm);
  --el-border-radius-round: 999px;

  /*
   * Element Plus 桥接补全(2026-08-10 全站 UI 盘点,切入点 1)。
   *
   * 此前只桥接 primary / 字体 / 基础圆角 / 表格四项,组件内部的文本灰、
   * 语义色(success/warning/danger)、边框仍是 El 出厂默认——16 个一级页
   * 实测出现"双灰阶并存"(El #303133/#606266/#909399/#a8abb2 与 token
   * slate 系混排)与"语义色三方混战"(El #67c23a 绿、tailwind 硬编码、
   * token 各一套)。以下把 El 语义变量全部指回 --co-* 单一事实来源。
   *
   * light-N / dark-2 派生档为静态预计算值(基色按 N 成与白/黑混合),
   * 不用 color-mix() —— 信创浏览器基线(旧 Chromium 内核)不保证支持。
   * 改动基色时需同步重算派生档。
   */
  --el-text-color-primary: var(--co-text);
  --el-text-color-regular: var(--co-text);
  --el-text-color-secondary: var(--co-text-muted);
  --el-text-color-placeholder: var(--co-text-placeholder);
  --el-text-color-disabled: var(--co-text-subtle);
  --el-border-color: var(--co-border);
  --el-border-color-light: var(--co-border-soft);
  --el-border-color-lighter: var(--co-border-soft);
  --el-border-color-extra-light: var(--co-border-soft);
  --el-fill-color-light: var(--co-surface-muted);
  /* primary 派生档此前缺失,plain/light 主色组件(如 el-tag--primary.is-plain 的
     边框/底)会漏出 El 出厂蓝(#79bbff 系)——红字蓝边混搭(2026-09-01 审计页
     "快捷筛选"chip 实测)。派生规则与下方语义档一致:基色 #c1121f 按 N 成与
     白混合,dark-2 = 基色 ×0.8。 */
  --el-color-primary-light-3: #d45962;
  --el-color-primary-light-5: #e0888f;
  --el-color-primary-light-7: #ecb8bc;
  --el-color-primary-light-8: #f3d0d2;
  --el-color-primary-light-9: #f9e7e9;
  --el-color-primary-dark-2: #9a0e19;
  --el-color-success: var(--co-success);
  --el-color-success-light-3: #5aa88c;
  --el-color-success-light-5: #8ac1ad;
  --el-color-success-light-7: #b9dace;
  --el-color-success-light-8: #d0e6de;
  --el-color-success-light-9: #e8f3ef;
  --el-color-success-dark-2: #106949;
  --el-color-warning: var(--co-warning);
  --el-color-warning-light-3: #cda162;
  --el-color-warning-light-5: #dbbc8f;
  --el-color-warning-light-7: #e9d7bc;
  --el-color-warning-light-8: #f1e4d2;
  --el-color-warning-light-9: #f8f2e9;
  --el-color-warning-dark-2: #926119;
  --el-color-danger: var(--co-critical);
  --el-color-danger-light-3: #d66e6e;
  --el-color-danger-light-5: #e29898;
  --el-color-danger-light-7: #eec1c1;
  --el-color-danger-light-8: #f3d6d6;
  --el-color-danger-light-9: #f9eaea;
  --el-color-danger-dark-2: #9e2626;
  --el-color-error: var(--co-critical);
  /* El "info" 语义上是中性灰(如"已关闭"标签),桥接到 slate 而非品牌蓝 */
  --el-box-shadow: var(--co-shadow-pop);
  --el-box-shadow-light: var(--co-shadow-sm);
  --el-box-shadow-lighter: var(--co-shadow-sm);
  --el-box-shadow-dark: var(--co-shadow-pop);
  --el-color-info: var(--co-text-muted);
  --el-color-info-light-3: #939eae;
  --el-color-info-light-5: #b2b9c5;
  --el-color-info-light-7: #d0d5dc;
  --el-color-info-light-8: #e0e4e8;
  --el-color-info-light-9: #f0f1f3;
  --el-color-info-dark-2: #505d6f;
}

:root[data-ui-density='compact'],
.co-density-compact {
  --co-density-control-height: 30px;
  --co-density-row-block: 7px;
  --co-density-row-inline: 10px;
  --co-density-panel-padding: 12px;
  --co-density-section-gap: 14px;
  --el-component-size: var(--co-density-control-height);
}

:root[data-ui-density='comfortable'],
.co-density-comfortable {
  --co-density-control-height: 32px;
  --co-density-row-block: 11px;
  --co-density-row-inline: 12px;
  /* v2.2 呼吸档(#1359):舒适密度承担「大气」,盘点/审计的 compact 保持紧凑。 */
  --co-density-panel-padding: 18px;
  --co-density-section-gap: 24px;
  --el-component-size: var(--co-density-control-height);
}

/* 任务导航接管一级切换时，保留 el-tabs 的内容挂载与懒加载，只隐藏重复的对象型页签。 */
.console-task-content-tabs > .el-tabs__header {
  display: none;
}

.console-task-content-tabs > .el-tabs__content {
  overflow: visible;
}

/*
 * 夜班模式(预览,2026-08-11)——「精密仪表」深改工作项②。
 * 机制:data-theme="dark" 时覆写同名 --co-* token,切入点 3 清扫后的
 * 268 处 token 化组件零改动切主题。方向与 ds-bundle/tokens/proposal-dark.css
 * 同源:墨黑三层底 + 发丝线分层 + 指针红提亮一档。
 * El light-N/dark-2 派生档同步暗色重算(基色按 N 成与底色混合,静态预
 * 计算,不用 color-mix —— 信创浏览器基线;改基色需重算)。
 */
:root[data-theme='dark'] {
  --co-primary: #e04552;
  --co-primary-strong: #c1121f;
  --co-primary-bg: #33151a;
  --co-primary-border: #68313a;
  --co-accent: #e04552;
  --co-info: #5b8def;
  --co-success: #35b98a;
  --co-warning: #d9a84e;
  --co-critical: #e06565;
  --co-info-bg: #0e1a33;
  --co-success-bg: #0a2419;
  --co-warning-bg: #271d0b;
  --co-critical-bg: #2a1212;
  --co-info-border: #1e3a66;
  --co-success-border: #14503a;
  --co-warning-border: #54401a;
  --co-critical-border: #582020;
  --co-info-glow: rgba(91, 141, 239, 0.18);
  --co-success-glow: rgba(53, 185, 138, 0.18);
  --co-warning-glow: rgba(217, 168, 78, 0.18);
  --co-critical-glow: rgba(224, 101, 101, 0.18);
  --co-neutral-glow: rgba(142, 163, 189, 0.14);
  --co-bg: #070d18;
  --co-surface: #0e1626;
  --co-surface-raised: #121d30;
  --co-surface-muted: #101c30;
  --co-surface-sunken: #09111f;
  --co-surface-strong: #05090f;
  --co-border: #22334f;
  --co-border-soft: #182640;
  --co-border-strong: #304665;
  --co-hairline: rgba(226, 232, 240, 0.07);
  --co-text: #e6edf7;
  --co-text-muted: #8ea3bd;
  --co-text-subtle: #5c6f8a;
  --co-text-placeholder: #7286a2;
  --co-focus-ring: rgba(224, 69, 82, 0.22);
  --co-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
  --co-shadow-md: 0 18px 44px rgba(0, 0, 0, 0.45);
  --co-shadow-pop: 0 16px 48px rgba(0, 0, 0, 0.5), 0 4px 12px rgba(0, 0, 0, 0.3);
  --co-shadow-modal: 0 28px 80px rgba(0, 0, 0, 0.6), 0 8px 24px rgba(0, 0, 0, 0.35);
  --co-shadow-hover: 0 8px 24px rgba(0, 0, 0, 0.45);
  --co-glass: rgba(16, 24, 40, 0.82);
  --co-overlay-dim: rgba(2, 6, 16, 0.5);

  /* 图表色板夜班档:同序对偶,于 #0e1626 表面重新验证 */
  --co-chart-1: #6688e8;
  --co-chart-2: #8e9f26;
  --co-chart-3: #e060a0;
  --co-chart-4: #7f73e8;
  --co-chart-5: #22a0b2;
  --co-chart-6: #c77b2e;
  --co-chart-7: #9a68e8;
  --co-chart-8: #3b9ed2;

  /* El 底/填充在暗色下需要显式覆写(浅色沿用 El 出厂白底) */
  --el-bg-color: var(--co-surface);
  --el-bg-color-page: var(--co-bg);
  --el-bg-color-overlay: var(--co-surface-muted);
  --el-fill-color: var(--co-surface-muted);
  --el-fill-color-light: var(--co-surface-muted);
  --el-fill-color-lighter: var(--co-surface-muted);
  --el-fill-color-extra-light: var(--co-surface-muted);
  --el-fill-color-blank: var(--co-surface);
  --el-mask-color: rgba(0, 0, 0, 0.6);

  /* El 派生档暗色版:光阶反转,与底色 #070d18 混合 */
  --el-color-primary-light-3: #9f3441;
  --el-color-primary-light-5: #742935;
  --el-color-primary-light-7: #481e29;
  --el-color-primary-light-8: #321824;
  --el-color-primary-light-9: #1d131e;
  --el-color-primary-dark-2: #e66a75;
  --el-color-success-light-3: #298568;
  --el-color-success-light-5: #1e6351;
  --el-color-success-light-7: #15413a;
  --el-color-success-light-8: #102f2f;
  --el-color-success-light-9: #0c1e23;
  --el-color-success-dark-2: #5dc7a1;
  --el-color-warning-light-3: #9a7a3e;
  --el-color-warning-light-5: #705b33;
  --el-color-warning-light-7: #463c28;
  --el-color-warning-light-8: #312c23;
  --el-color-warning-light-9: #1c1d1d;
  --el-color-warning-dark-2: #e1b971;
  --el-color-danger-light-3: #9f4b4e;
  --el-color-danger-light-5: #74393f;
  --el-color-danger-light-7: #48272f;
  --el-color-danger-light-8: #321f27;
  --el-color-danger-light-9: #1d1620;
  --el-color-danger-dark-2: #e68484;
  --el-color-info-light-3: #66768c;
  --el-color-info-light-5: #4a586a;
  --el-color-info-light-7: #2f3a49;
  --el-color-info-light-8: #222b39;
  --el-color-info-light-9: #141c28;
  --el-color-info-dark-2: #a5b5ca;
}

html,
body,
#app {
  height: 100%;
  margin: 0;
  background: var(--co-bg);
  color: var(--co-text);
  font-family: var(--co-font-sans);
  /* 13px/1.6(≈20.8px 行高):对齐 DESIGN.md body 口径与云控制台的 12/20 节奏。
     此前 14px 比自家规范松一档,是"不够精密"观感的主要来源。 */
  font-size: 13px;
  line-height: 1.6;
  font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11';
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: geometricPrecision;
}

a {
  color: var(--co-primary);
  text-decoration: none;
  text-underline-offset: 3px;
  transition: color var(--co-motion-instant) ease-out;
}

a:hover {
  color: var(--co-primary-strong);
}

/*
 * 表单控件字体继承修复(2026-08-10 全站 UI 盘点,切入点 2)。
 *
 * button/input/select/textarea 默认**不继承**页面字体,落到浏览器默认
 * (Arial + 13.3333px)。实测资产中心 283 个、系统设置 290 个可见元素
 * 渲染为 Arial。只重置 family/size/line-height 三项(不用 font 简写),
 * Element Plus 组件自身的类选择器优先级更高,其显式设定不受影响——
 * 本规则只兜住"没人管"的原生控件。
 */
button,
input,
select,
textarea,
optgroup {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}

* {
  box-sizing: border-box;
}

code,
pre {
  font-family: var(--co-font-mono);
}

.el-button {
  border-radius: var(--co-radius-sm);
  /* 控件 chrome 用 500 中间字重(云控制台基线;中文栈下 650 会塌成 700 粗体,
     微软雅黑只有 400/700 两档)。标题与结论仍走 760/820。 */
  font-weight: 500;
  transition:
    color var(--co-motion-instant) ease-out,
    border-color var(--co-motion-instant) ease-out,
    background-color var(--co-motion-instant) ease-out,
    box-shadow var(--co-motion-instant) ease-out,
    transform var(--co-motion-instant) ease-out;
}

.el-button:not(.is-disabled):active {
  transform: translateY(1px);
}

/* 默认尺寸按钮跟随密度控件高(El 出厂硬编码 height:32px,不吃 --el-component-size);
   large/small/link 保持 El 自身尺寸语义;circle 宽高必须同源,排除以免 compact 下压成椭圆。 */
.el-button:not(.el-button--large):not(.el-button--small):not(.is-link):not(.is-circle) {
  height: var(--co-density-control-height);
}

/*
 * 主色按钮只覆盖**实心**变体。
 *
 * 原规则无条件命中 .el-button--primary，包括 plain / text / link 这些
 * "浅底 + 主色文字" 的变体：背景被强制成实心主色，而文字色仍是主色，
 * 结果是蓝底蓝字 —— 只有 hover 时（--co-primary-strong 比文字更深）
 * 才勉强看得见。CMDB 主机详情的「合并重复资产」按钮就是这样丢的，
 * 全仓另有 3 处 type="primary" + plain 同样受影响。
 *
 * :not() 把 plain / text / link 排除掉，让它们回落到 Element Plus 自己的
 * 配色（已由 --el-color-primary 指向 --co-primary，视觉仍统一）。
 */
/* :not(.is-disabled):禁用按钮必须保持 Element Plus 的灰色禁用态。
   缺了它的后果在 dev 实测中出现过:MFA 登记进行中的"启用 MFA"按钮
   静止时被强制成可用红色,悬浮才露出禁用灰,用户误以为按钮坏了。 */
.el-button--primary:not(.is-plain):not(.is-text):not(.is-link):not(.is-disabled) {
  background-color: var(--co-primary);
  border-color: var(--co-primary);
}

.el-button--primary:not(.is-plain):not(.is-text):not(.is-link):not(.is-disabled):hover,
.el-button--primary:not(.is-plain):not(.is-text):not(.is-link):not(.is-disabled):focus {
  background-color: var(--co-primary-strong);
  border-color: var(--co-primary-strong);
}

.el-card {
  border-color: var(--co-border-soft);
  border-radius: var(--co-radius-md);
  background: var(--co-surface-raised);
  box-shadow: var(--co-shadow-sm);
}

.el-card__header {
  padding: 14px 18px;
  border-bottom-color: var(--co-border-soft);
  color: var(--co-text);
  font-weight: 760;
}

.el-card__body {
  padding: 18px;
}

.el-table {
  color: var(--co-text);
  --el-table-border-color: var(--co-border-soft);
  /* 走 token 而非字面量:夜班(data-theme=dark)下表头/悬停底随主题翻转。
     表头用沉底面(≈阿里云 #EFF3F8 实测),与筛选区的 muted 面拉开一档。 */
  --el-table-header-bg-color: var(--co-surface-sunken);
  --el-table-row-hover-bg-color: var(--co-bg);
  border-radius: var(--co-radius-sm);
  overflow: hidden;
}

.el-table th.el-table__cell {
  padding: 11px 0;
  color: var(--co-text-muted);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.015em;
}

.el-table td.el-table__cell {
  /* 行高吃密度 token:comfortable 11px、compact 7px,盘点/审计页自动收紧。 */
  padding: var(--co-density-row-block) 0;
  border-bottom-color: var(--co-border-soft);
}

/* v2.2 斑马纹退役(#1359):行分隔由发丝线承担,清单更安静——苹果清单与
   云控制台的共同选择。页面模板可保留 stripe 属性,视觉统一为无纹。
   必须用实底而非 transparent:固定列是 sticky 单元格,靠自身背景遮住底下
   横向滚过的内容,透明会让创建时间透进操作列(2026-09-01 demo 实测回归)。 */
.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell {
  background: var(--co-surface);
}

.el-table--striped .el-table__body tr.el-table__row--striped:hover > td.el-table__cell {
  background: var(--co-bg);
}

.el-table .cell {
  line-height: 1.45;
  overflow-wrap: anywhere;
}

/* IP、ID、哈希等机器事实不得折行断值(实测公网 IP 曾被断成两截);
   列宽不足时溢出交给列级 min-width 与横向滚动。 */
.el-table .cell code {
  white-space: nowrap;
}

.el-table__empty-block {
  min-height: 132px;
}

.el-pagination {
  gap: 6px;
  justify-content: flex-end;
  padding-top: 12px;
}

.el-pagination .el-pager li,
.el-pagination button {
  border-radius: var(--co-radius-sm);
}

.el-tag {
  border-radius: 999px;
  font-weight: 500;
  white-space: normal;
}

.el-tabs__item {
  color: var(--co-text-muted);
  font-weight: 500;
}

.el-tabs__item.is-active {
  color: var(--co-primary);
}

.el-tabs__active-bar {
  height: 2px;
  background: var(--co-primary);
}

.el-input__wrapper,
.el-textarea__inner,
.el-select__wrapper {
  border-radius: var(--co-radius-sm);
  box-shadow: 0 0 0 1px var(--co-border) inset;
}

.el-form-item__label {
  color: var(--co-text-muted);
  font-weight: 400;
}

/* 2026-07 品牌重塑遗留修复:焦点环曾是旧主色蓝晕(rgba(37,99,235,.1)),
   与红色描边同框出现。焦点晕必须与主色同源。 */
.el-input__wrapper.is-focus,
.el-select__wrapper.is-focused,
.el-textarea__inner:focus {
  box-shadow:
    0 0 0 1px var(--co-primary) inset,
    0 0 0 3px var(--co-focus-ring);
}

.el-dialog,
.el-drawer {
  border: 1px solid var(--co-border-soft);
  border-radius: var(--co-radius-lg);
  background: var(--co-surface-raised);
  box-shadow: var(--co-shadow-modal);
}

.el-dialog {
  overflow: hidden;
}

/* v2.2 弹层入场(#1359):快速起步、柔和落位;prefers-reduced-motion 由
   文件末尾的全局豁免统一关闭。 */
.el-overlay .el-dialog {
  animation: co-dialog-in var(--co-motion-overlay) var(--co-ease-spring);
}

@keyframes co-dialog-in {
  from {
    opacity: 0;
    transform: translateY(10px) scale(0.98);
  }
}

/* 遮罩:更轻的调光 + 背景虚化,把注意力交给对话框本身。
   不支持 backdrop-filter 的内核回退为纯调光遮罩。 */
.el-overlay {
  background-color: var(--co-overlay-dim);
}

@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .el-overlay {
    -webkit-backdrop-filter: blur(5px);
    backdrop-filter: blur(5px);
  }
}

.el-dialog__header,
.el-drawer__header {
  margin-bottom: 0;
  padding: 16px 18px;
  border-bottom: 1px solid var(--co-border-soft);
}

.el-dialog__title,
.el-drawer__title {
  color: var(--co-text);
  font-size: 16px;
  font-weight: 760;
}

.el-dialog__body,
.el-drawer__body {
  padding: 18px;
}

.el-dialog__footer {
  padding: 14px 18px 18px;
  border-top: 1px solid var(--co-border-soft);
  background: var(--co-surface-muted);
}

.el-alert {
  border-radius: var(--co-radius-md);
}

/* 系统设置验证页提炼出的连续指标账本。父层负责边界和分隔，指标单元不再各自
 * 伪装成悬浮卡片。用于一级概览、详情事实和治理摘要。 */
.console-metric-ledger {
  gap: 0 !important;
  overflow: hidden;
  border: 1px solid var(--co-border-soft);
  border-radius: var(--co-radius-md);
  background: var(--co-surface-raised);
}

.console-metric-ledger > * {
  min-width: 0;
}

.console-metric-ledger > * + * {
  border-left: 1px solid var(--co-border-soft);
}

.console-metric-ledger .console-metric-card.console-metric-card {
  min-height: 98px;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.console-metric-ledger .console-metric-card.console-metric-card::before {
  display: none;
}

.console-metric-ledger .console-metric-card__value strong {
  font-size: 23px;
}

.el-message-box {
  border-radius: var(--co-radius-md);
  overflow: hidden;
}

.co-page-title {
  margin: 0;
  font-size: 22px;
  line-height: 1.2;
  font-weight: 760;
  color: var(--co-text);
}

.co-page-subtitle {
  margin: 6px 0 0;
  color: var(--co-text-muted);
  font-size: 13px;
  line-height: 1.6;
}

/* ============================================================
 * 生产级全局细节(2026-08 UI 收口)
 * 只做视觉与可访问性,不改任何组件行为。
 * ============================================================ */

/* 文本选区与浅色滚动条:控制台长列表高频滚动,默认滚动条过于粗重。 */
::selection {
  background: rgba(193, 18, 31, 0.14);
}

* {
  scrollbar-width: thin;
  scrollbar-color: var(--co-border-strong) transparent;
}

*::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

*::-webkit-scrollbar-thumb {
  border-radius: 999px;
  background: var(--co-border-strong);
}

*::-webkit-scrollbar-thumb:hover {
  background: var(--co-text-subtle);
}

*::-webkit-scrollbar-track,
*::-webkit-scrollbar-corner {
  background: transparent;
}

/* 键盘可达性:焦点可见环与主色同源,覆盖按钮/链接/分页等可聚焦控件。 */
:focus-visible {
  outline: 2px solid var(--co-primary);
  outline-offset: 2px;
  border-radius: 4px;
}

/* Element Plus 组合控件(输入框/下拉/文本域)的可视焦点由外层 wrapper 的
 * 焦点环承载;内部原生 input 再叠 :focus-visible 描边会形成"框套框"
 * (2026-08-16 Owner 实测于 filterable 下拉)。豁免内层,无障碍焦点指示不丢。 */
.el-input__inner:focus-visible,
.el-select__input:focus-visible,
.el-textarea__inner:focus-visible {
  outline: none;
}

.el-button:focus-visible,
.el-pagination button:focus-visible,
.el-pager li:focus-visible {
  outline: 2px solid var(--co-primary);
  outline-offset: 1px;
}

/* 弹层体系统一:下拉、Tooltip、Popover、级联面板同一圆角与投影。 */
.el-popper.is-light {
  border-color: var(--co-border-soft);
  border-radius: var(--co-radius-md);
  box-shadow: var(--co-shadow-pop);
}

/* v2.2 玻璃层(#1359):浮在真实内容之上的弹出面用毛玻璃承载,
   材质只属于临时浮层,静态工作面保持实底;旧内核回退实底弹层。 */
@supports ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .el-popper.is-light {
    background: var(--co-glass);
    -webkit-backdrop-filter: blur(16px) saturate(1.5);
    backdrop-filter: blur(16px) saturate(1.5);
  }

  .el-popper.is-light .el-dropdown-menu,
  .el-popper.is-light .el-select-dropdown,
  .el-popper.is-light .el-cascader-panel,
  .el-popper.is-light .el-picker-panel {
    background: transparent;
  }

  /* 玻璃面板上的实底小箭头会变成突兀色块;去箭头也更接近苹果浮层语言。 */
  .el-popper.is-light .el-popper__arrow {
    display: none;
  }
}

.el-dropdown-menu,
.el-select-dropdown,
.el-cascader-panel,
.el-picker-panel {
  border-radius: var(--co-radius-md);
}

.el-dropdown-menu__item {
  border-radius: var(--co-radius-sm);
  margin: 0 4px;
  padding: 7px 12px;
  font-weight: 400;
}

.el-dropdown-menu__item:not(.is-disabled):hover,
.el-dropdown-menu__item:not(.is-disabled):focus {
  background: rgba(193, 18, 31, 0.07);
  color: var(--co-primary);
}

.el-select-dropdown__item.is-selected {
  font-weight: 650;
}

/* 消息与通知:与卡片同语言的圆角、边框、投影。 */
.el-message {
  border-radius: var(--co-radius-md);
  border-color: var(--co-border-soft);
  box-shadow: var(--co-shadow-pop);
  font-weight: 500;
}

.el-notification {
  border-radius: var(--co-radius-md);
  border-color: var(--co-border-soft);
  box-shadow: var(--co-shadow-pop);
}

.el-notification__title {
  font-weight: 760;
}

/* 数字可读性:表格、统计位、代码采用等宽数字,列内金额/计数对齐。 */
.el-table .cell,
.el-statistic__number,
.el-pagination {
  font-variant-numeric: tabular-nums;
}

/* 表格行高与斑马纹的克制版:悬浮态已有,补齐加载/空态的观感。 */
.el-table__empty-text {
  color: var(--co-text-subtle);
}

.el-empty__description p {
  color: var(--co-text-muted);
}

.el-loading-mask {
  backdrop-filter: blur(1.5px);
  background-color: var(--co-surface);
  opacity: 0.82;
}

.el-skeleton {
  --el-skeleton-color: var(--co-surface-sunken);
  --el-skeleton-to-color: var(--co-surface-muted);
}

/* 折叠/收起侧栏时,子菜单以深色弹层形式出现,与侧栏同域。 */
.co-dark-menu-popper.el-popper {
  border-color: rgba(148, 163, 184, 0.24);
  background: #0e1420;
  box-shadow: 0 18px 44px rgba(3, 7, 18, 0.5);
}

.co-dark-menu-popper .el-menu--popup {
  padding: 6px;
  background: #0e1420;
}

.co-dark-menu-popper .el-menu-item {
  height: 36px;
  border-radius: 8px;
  color: #c6d2e2;
  font-size: 13px;
  font-weight: 500;
}

.co-dark-menu-popper .el-menu-item:hover {
  background: rgba(255, 255, 255, 0.07);
  color: #fff;
}

.co-dark-menu-popper .el-menu-item.is-active {
  background: rgba(193, 18, 31, 0.2);
  color: #fff;
}

/* 步骤条 / 进度条 / 开关的主色统一由 --el-color-primary 派生,无需覆盖;
   这里只补描述文字的层级。 */
.el-step__description {
  color: var(--co-text-muted);
}

/* 小屏交付基线：弹窗、抽屉、筛选表单和分页不得越出视口。业务表格保持
 * 横向滚动，不把列强行压缩到无法辨认。 */
@media (max-width: 760px) {
  .console-metric-ledger > * + * {
    border-top: 1px solid var(--co-border-soft);
    border-left: 0;
  }

  .el-dialog {
    width: calc(100vw - 24px) !important;
    max-width: calc(100vw - 24px);
    margin: 12px auto !important;
  }

  .el-dialog__body,
  .el-drawer__body {
    padding: 14px;
  }

  .el-drawer.rtl,
  .el-drawer.ltr {
    width: min(92vw, 560px) !important;
  }

  .el-form--inline .el-form-item,
  .el-form--inline .el-input,
  .el-form--inline .el-select,
  .el-form--inline .el-date-editor {
    width: 100%;
    margin-right: 0;
  }

  .el-pagination {
    justify-content: flex-start;
    max-width: 100%;
    overflow-x: auto;
    padding-bottom: 4px;
  }

  .el-message-box {
    width: calc(100vw - 24px);
    max-width: 420px;
  }
}

/* 动效尊重系统偏好:减少动态效果时关闭装饰性过渡。 */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}

.co-top-progress[data-v-6bb5c481] {
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  /* El 弹层 z-index 从 2000 起每次打开单调递增,长会话可累计超过任何固定小值;
     进度条纯装饰(pointer-events:none),取接近上限的固定大值,永远压过弹层。 */
  z-index: 2147480000;
  height: 2px;
  pointer-events: none;
}
.co-top-progress__bar[data-v-6bb5c481] {
  height: 100%;
  background: var(--co-primary);
  box-shadow: 0 0 8px var(--co-focus-ring);
  transform-origin: left;
  transition: transform var(--co-motion-standard) var(--co-ease-standard);
}
.co-top-progress-leave-active[data-v-6bb5c481] {
  transition: opacity var(--co-motion-standard) ease-out;
}
.co-top-progress-leave-to[data-v-6bb5c481] {
  opacity: 0;
}
