/* ==================================================================
   OTA 运营 SOP 工作台 · 全站「驾驶舱」主题层（★ 2026-09-29）
   ------------------------------------------------------------------
   用户口径：「后台优化；把所有界面全部重新设计一版，参照驾驶舱风格样式设计」。

   为什么是**单独一层**而不是改 app.css：
     · app.css 是全站**唯一一份样式真相**（令牌 + 组件），改动它会同时改动 60+ 个页面
       的观感与一批跨套件断言（extcheck 逐字读 app.css 的 `.grid-2-uneven` 与 `--danger`）；
     · 这一层的做法是：**在 :root 上重新定义设计系统令牌**（app.css 的组件全部走 var()，
       于是换肤自动生效），再把**硬编码了浅色字面值**的那几十条组件规则逐一覆盖成驾驶舱皮肤。
     · 加载顺序：本文件在 index.html 里**最后**加载 ⇒ 同优先级时本文件胜出；
       页面专属样式（agent / portal / workflow / mini）里的浅色硬编码也在这里统一收口。

   与 `cockpit.css` 的关系（**刻意分工，互不干扰**）：
     · `cockpit.css` = `#/dashboard?mode=cockpit` 那块**投屏大屏**（.cockpit 作用域内，
       自带 --ck-* 令牌与 5 排栅格，uicheck 逐条钉住它的选择器与数值）—— **一个字都没动**；
     · 本文件 = **整个后台**（外壳 + 全部共享组件 + 全部页面）的驾驶舱皮肤，
       复用与那块大屏**同一套色板与手法**（深空底 / 玻璃面板 / 霓虹强调 / 网格底纹 / 发光数值），
       于是"大屏"与"后台"看起来是同一台设备的两块屏，而不是两套皮肤。
     · .cockpit 在自己的作用域里重新声明了 --ck-* 与设计系统令牌 ⇒ 本文件不会串进大屏。

   设计语言（六条，全文件都遵守）：
     ① 深空底：底 #050A16 + 三层径向辉光 + 46px 网格底纹（与大屏同一纹理）；
     ② 玻璃面板：半透明深蓝 + 1px 冷蓝描边 + 内高光（inset 0 1px 0 rgba(255,255,255,.04)）；
     ③ 霓虹强调：交互主色 = 青蓝 #22D3EE / #4DA6FF，发光用 box-shadow / text-shadow，
        只在"当前项 / 主操作 / 关键数值"三处出现（到处发光等于不发光）；
     ④ 仪表感：小字号 + 字距、全大写英文标签、tabular-nums 数字、3px 竖条标题前缀、
        数值带 text-shadow 辉光；
     ⑤ 层次靠"亮度"而不是"阴影深度"：底 → 面板 → 面板内嵌块 三级亮度递进；
     ⑥ 动效克制：只保留 .14s~.18s 的过渡与两处脉冲（在线指示 / 测试态），
        并整体服从 `prefers-reduced-motion`。

   ⚠️ 改这一层时的**纪律**（踩过才知道贵）：
     · 不许出现 `display:none` / `visibility:hidden` 之类"藏东西"的规则 ——
       uicheck 有多条断言按**计算样式**判"某个输入框/控件是否可见"（见 uicheck.js:918-960），
       这里随手藏一个节点就会让那些断言变红，而它们红得**完全看不出跟皮肤有关**。
     · 不许改任何**类名 / data-role / DOM 结构** —— 皮肤层只碰颜色、边框、阴影、间距、字距。
     · 浅色硬编码要**逐条覆盖**（下面第 10、11 节），漏一条就是白底黑字卡在深色界面上。
   ================================================================== */

/* ==================================================================
   1. 令牌层：重新定义设计系统（app.css 的组件全部从这里取色）
   ================================================================== */
:root {
  /* ---------------- 驾驶舱色板（与 .cockpit 同一套值） ---------------- */
  --ck-bg: #050A16;
  --ck-bg-2: #070D1E;
  --ck-panel: rgba(17, 27, 54, .74);
  --ck-panel-solid: #0C1530;
  --ck-panel-hi: rgba(30, 46, 88, .50);
  --ck-panel-inset: rgba(6, 12, 28, .55);
  --ck-line: rgba(88, 132, 255, .22);
  --ck-line-soft: rgba(88, 132, 255, .12);
  --ck-line-strong: rgba(88, 132, 255, .38);
  --ck-text: #DCE6FF;
  --ck-sub: #A9B8E0;
  --ck-mute: #7E8DB8;
  --ck-cyan: #22D3EE;
  --ck-blue: #4DA6FF;
  --ck-green: #2BD98A;
  --ck-amber: #F5A524;
  --ck-red: #FF5470;
  --ck-purple: #A78BFA;

  /* ---------------- 品牌色阶：改成"深底上的蓝阶" ----------------
     app.css 的 --brand-* 是给**浅底**用的（-#50 / -#100 是很浅的蓝底）。
     深底上这套顺序要反过来：越小的号越"透"，颜色本身统一到霓虹蓝/青。
     ⚠️ 这几个令牌被大量组件当**背景**用（--brand-50/100 是浅底、--brand-500/700 是主色块），
        所以这里刻意用 rgba 半透明 —— 铺在深底上自然就是"深色玻璃上的蓝光"。 */
  --brand-50: rgba(77, 166, 255, .06);
  --brand-100: rgba(77, 166, 255, .11);
  --brand-200: rgba(77, 166, 255, .20);
  --brand-300: rgba(77, 166, 255, .38);
  --brand-400: #4DA6FF;
  --brand-500: #22D3EE;
  --brand-600: #35C7F0;
  --brand-700: #1E8FE8;
  --brand-800: #1668C4;
  --brand-900: #0E4794;

  --primary: var(--ck-blue);
  --primary-dark: #1E6FD9;
  --primary-soft: rgba(77, 166, 255, .13);
  --primary-hover: #6FBCFF;
  --primary-ink: #9CC7FF;
  --info: var(--ck-blue);
  --info-soft: rgba(77, 166, 255, .13);
  --info-ink: #9CC7FF;
  /* 「智能 / AI」强调色：深底上用紫蓝（大屏的 --ck-purple 同色），与人工操作用的青蓝区分开 */
  --purple: var(--ck-purple);
  --purple-soft: rgba(167, 139, 250, .15);
  --purple-ink: #C4B5FD;

  /* ---------------- 语义色（深底版：底色透、字色亮） ----------------
     浅底时代的"柔色底 + 深色字"在深底上会变成"糊成一团"，
     所以 --*-soft 全部改成**半透明同色**（自然叠在玻璃面板上），--*-ink 全部提亮。 */
  --success: var(--ck-green);
  --success-soft: rgba(43, 217, 138, .15);
  --success-ink: #6EE7B7;
  --warning: var(--ck-amber);
  --warning-soft: rgba(245, 165, 36, .15);
  --warning-ink: #FBBF24;
  --danger: var(--ck-red);
  --danger-soft: rgba(255, 84, 112, .15);
  --danger-ink: #FF8FA3;

  /* ---------------- 中性色（底 / 面板 / 描边 / 文字 / 槽） ---------------- */
  --bg: var(--ck-bg);
  --bg-soft: rgba(255, 255, 255, .045);
  --card: var(--ck-panel);
  --border: var(--ck-line);
  --border-strong: var(--ck-line-strong);
  --text: var(--ck-text);
  --text-sub: var(--ck-sub);
  --text-mute: var(--ck-mute);
  --track: rgba(255, 255, 255, .08);

  /* ---------------- 阴影：深底上"投影"几乎不可见，改成"外发光 + 内高光" ---------------- */
  --shadow-sm: 0 1px 2px rgba(2, 6, 16, .5);
  --shadow: 0 10px 26px rgba(2, 6, 16, .55);
  --shadow-lg: 0 24px 60px rgba(2, 6, 16, .7);
  --ring: 0 0 0 3px rgba(34, 211, 238, .18);

  --font-mono: ui-monospace, SFMono-Regular, "JetBrains Mono", Menlo, Consolas, "Courier New", monospace;
}

/* ==================================================================
   2. 画布：深空底 + 辉光 + 网格底纹
   ------------------------------------------------------------------
   底纹只画在 **body 的 background** 上（多层背景），不用 fixed 覆盖层 ——
   覆盖层会盖住没有定位的正文（绘制顺序：定位层在行内内容之上），字会发灰。
   ================================================================== */
body {
  color: var(--text);
  background-color: var(--ck-bg);
  background-image:
    radial-gradient(1200px 620px at 12% -10%, rgba(77, 166, 255, .16), transparent 62%),
    radial-gradient(1000px 560px at 92% 4%, rgba(167, 139, 250, .12), transparent 60%),
    radial-gradient(900px 520px at 50% 108%, rgba(34, 211, 238, .09), transparent 62%),
    linear-gradient(rgba(88, 132, 255, .045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(88, 132, 255, .045) 1px, transparent 1px);
  background-size: auto, auto, auto, 46px 46px, 46px 46px;
  background-attachment: fixed, fixed, fixed, fixed, fixed;
  background-repeat: no-repeat, no-repeat, no-repeat, repeat, repeat;
}
/* 选中文字与焦点环：深底上必须用**亮青**，否则蓝底蓝字看不见 */
::selection { background: rgba(34, 211, 238, .32); color: #F2F8FF; }
:focus-visible { outline: 2px solid var(--ck-cyan); outline-offset: 1px; }

/* 滚动条：深色槽 + 冷蓝滑块（大屏 .ck-body 同款） */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-thumb { background: rgba(88, 132, 255, .30); border-radius: 999px; border: 2px solid transparent; background-clip: content-box; }
::-webkit-scrollbar-thumb:hover { background: rgba(88, 132, 255, .5); background-clip: content-box; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-corner { background: transparent; }

/* 正文缺省链（保持 app.css 的字号令牌，只补字距与数字对齐） */
.page-title, .section-head h2, .card-title, .fold-title { letter-spacing: .2px; }
.stat-value, .pf-tile-value, .price-tag, .donut-center strong, .table td, .kv dd, .desc-value {
  font-variant-numeric: tabular-nums;
}

/* ==================================================================
   3. 侧栏：控制台导轨
   ================================================================== */
.sidebar {
  background:
    linear-gradient(180deg, rgba(11, 20, 44, .97) 0%, rgba(5, 9, 22, .99) 100%);
  color: var(--ck-sub);
  border-right: 1px solid var(--ck-line);
  box-shadow: inset -1px 0 0 rgba(88, 132, 255, .10), 22px 0 60px rgba(2, 6, 16, .45);
}
/* 导轨右沿一条霓虹竖线（上青下透），是"这是一台设备"的第一眼信号 */
.sidebar::after {
  content: ''; position: absolute; top: 0; right: 0; bottom: 0; width: 1px; pointer-events: none;
  background: linear-gradient(180deg, rgba(34, 211, 238, .55), rgba(88, 132, 255, .18) 38%, transparent 82%);
}

/* 品牌区：发光徽标 + 上下渐隐分隔线 */
.sidebar-logo {
  padding: 16px 16px 14px; position: relative;
  border-bottom: 1px solid var(--ck-line-soft);
}
.sidebar-logo .mark {
  background: linear-gradient(135deg, var(--ck-cyan), var(--ck-blue));
  color: #04101F; font-weight: 800; letter-spacing: .5px;
  box-shadow: 0 0 20px rgba(34, 211, 238, .45), inset 0 0 12px rgba(255, 255, 255, .35);
}
.sidebar-logo .txt b { color: #F2F7FF; font-size: var(--fs-md); letter-spacing: .6px; }
.sidebar-logo .txt span { color: var(--ck-mute); letter-spacing: .3px; }

/* 「设备在线」读数条（DOM 由 app.js renderSidebar 里加，见 sidebarClock()） */
.sidebar-clock {
  display: flex; align-items: center; gap: var(--sp-3);
  margin: 10px 12px 0; padding: 7px 10px;
  border: 1px solid var(--ck-line-soft); border-radius: var(--radius-xs);
  background: linear-gradient(90deg, rgba(34, 211, 238, .10), rgba(12, 20, 42, .55));
}
.sidebar-clock .live {
  width: 7px; height: 7px; border-radius: 50%; flex: none;
  background: var(--ck-green); box-shadow: 0 0 9px var(--ck-green);
  animation: ckPulse 2.2s ease-in-out infinite;
}
.sidebar-clock .t {
  margin-left: auto; font-family: var(--font-mono); font-size: var(--fs-xs);
  color: var(--ck-cyan); letter-spacing: 1px; font-variant-numeric: tabular-nums;
}
.sidebar-clock .lbl { font-size: var(--fs-2xs); color: var(--ck-sub); letter-spacing: .6px; }
@keyframes ckPulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: .4; transform: scale(.78); } }

/* 门店切换器：做成"当前工位"读数（虚线冷蓝框 + 状态灯） */
.sidebar-hotels { border-bottom: 1px solid var(--ck-line-soft); padding: 10px 12px 12px; }
.sidebar-hotels-head { color: var(--ck-mute); letter-spacing: .8px; }
.sidebar-hotels-head .sidebar-hotels-hint { color: var(--ck-mute); }
.sidebar-hotel-current {
  background: rgba(6, 12, 28, .6); border: 1px solid var(--ck-line); color: var(--ck-text);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .04);
}
.sidebar-hotel-current:hover { background: rgba(77, 166, 255, .14); border-color: var(--ck-line-strong); }
.sidebar-hotel-current .nm { font-weight: 600; }
.sidebar-hotel-current .st, .sidebar-hotel-current .caret { color: var(--ck-mute); }
.sidebar-hotels-panel .input {
  background: rgba(6, 12, 28, .7); border-color: var(--ck-line); color: var(--ck-text);
}
.sidebar-hotels-panel .input::placeholder { color: var(--ck-mute); }
.sidebar-hotels-panel .input:focus { border-color: rgba(34, 211, 238, .55); box-shadow: var(--ring); }
.sidebar-hotels-empty { color: var(--ck-mute); }
.sidebar-hotel { color: var(--ck-sub); border: 1px solid transparent; }
.sidebar-hotel:hover { background: rgba(77, 166, 255, .12); color: #fff; }
.sidebar-hotel.active {
  background: linear-gradient(90deg, rgba(34, 211, 238, .18), rgba(77, 166, 255, .06));
  border-color: rgba(34, 211, 238, .3); color: #fff;
}
.sidebar-hotel .st { color: var(--ck-mute); }
.sidebar-hotel.active .st { color: var(--ck-sub); }

/* 导航：分组标题像仪表分区标签，当前项像被点亮的指示灯 */
.nav { padding: var(--sp-2) var(--sp-3) var(--sp-6); }
.nav-group {
  display: flex; align-items: center; gap: var(--sp-2);
  margin: 18px 0 6px; padding: 0 var(--sp-3);
  font-size: var(--fs-2xs); font-weight: 600; color: var(--ck-mute);
  letter-spacing: 1.4px;
}
.nav-group::after {
  content: ''; flex: 1; height: 1px;
  background: linear-gradient(90deg, var(--ck-line-soft), transparent);
}
.nav-item {
  margin: 2px var(--sp-1); padding: 8px 10px; border-radius: var(--radius-xs);
  color: var(--ck-sub); border: 1px solid transparent;
  transition: background var(--t-fast), color var(--t-fast), border-color var(--t-fast);
}
.nav-item:hover { background: rgba(77, 166, 255, .12); color: #F2F7FF; border-color: var(--ck-line-soft); }
.nav-item.active {
  background: linear-gradient(90deg, rgba(34, 211, 238, .20), rgba(77, 166, 255, .05));
  border-color: rgba(34, 211, 238, .30);
  color: #fff; font-weight: 600;
  box-shadow: inset 0 0 22px rgba(34, 211, 238, .08);
}
/* 当前项左侧的发光指示灯（大屏 .ck-panel-title 同款手法） */
.nav-item.active::before {
  left: 0; top: 50%; bottom: auto; width: 3px; height: 18px;
  transform: translateY(-50%); border-radius: 0 3px 3px 0;
  background: var(--ck-cyan); box-shadow: 0 0 12px var(--ck-cyan);
}
.nav-item .icon { color: var(--ck-mute); transition: color var(--t-fast); }
.nav-item:hover .icon { color: var(--ck-blue); }
.nav-item.active .icon { color: var(--ck-cyan); }
.nav-item .nav-badge {
  background: linear-gradient(180deg, #FF6B84, var(--ck-red)); color: #1A0209;
  font-weight: 800; box-shadow: 0 0 12px rgba(255, 84, 112, .55);
}
.nav-item .nav-hotkey {
  color: var(--ck-sub); background: rgba(255, 255, 255, .07); border: 1px solid var(--ck-line);
}
.nav-item:hover .nav-hotkey, .nav-item.active .nav-hotkey {
  color: #FFF; background: rgba(34, 211, 238, .18); border-color: rgba(34, 211, 238, .4);
}
.nav-item .nav-external { color: var(--ck-mute); }
.nav-item:hover .nav-external { color: var(--ck-cyan); }

/* 侧栏底部身份区：玻璃条 + 顶部霓虹发丝线 */
.sidebar-foot { border-top: 1px solid var(--ck-line-soft); color: var(--ck-mute); }
.sidebar-foot-user {
  background: linear-gradient(180deg, rgba(20, 32, 62, .7), rgba(8, 14, 32, .8));
  box-shadow: inset 0 1px 0 rgba(88, 132, 255, .18);
}
.sidebar-foot-user:hover { background: linear-gradient(180deg, rgba(30, 46, 88, .8), rgba(10, 18, 40, .9)); }
.sidebar-foot-user .sf-meta b { color: #F2F7FF; letter-spacing: .3px; }
.sidebar-foot-user .sf-meta span { color: var(--ck-mute); }
.sidebar-foot-user .avatar { box-shadow: 0 0 0 2px rgba(34, 211, 238, .35), 0 0 14px rgba(34, 211, 238, .25); }
.sidebar-foot-user .sf-alert {
  background: rgba(245, 165, 36, .18); color: #FFD9A0; border: 1px solid rgba(245, 165, 36, .38);
}
.sidebar-foot-user .sf-alert.zero { background: rgba(255, 255, 255, .07); color: var(--ck-mute); border-color: var(--ck-line-soft); }

/* ==================================================================
   4. 页头：状态栏（左：标题与口径；右：操作）
   ================================================================== */
.page-header {
  position: relative; align-items: center;
  padding: 14px 18px; margin-bottom: var(--sp-6);
  border: 1px solid var(--ck-line); border-radius: var(--radius);
  background:
    linear-gradient(90deg, rgba(77, 166, 255, .13), rgba(17, 27, 54, .55) 46%, rgba(34, 211, 238, .08));
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .05);
  overflow: hidden;
}
/* 顶部一条发光发丝线（大屏标题栏同款） */
.page-header::before {
  content: ''; position: absolute; left: 0; right: 0; top: 0; height: 1px;
  background: linear-gradient(90deg, var(--ck-cyan), rgba(88, 132, 255, .35) 40%, transparent 92%);
}
/* 右下角的"仪表刻度"装饰（纯装饰，不占位、不拦点击） */
.page-header::after {
  content: ''; position: absolute; right: 14px; bottom: 8px; width: 96px; height: 8px; pointer-events: none;
  background-image: repeating-linear-gradient(90deg, rgba(88, 132, 255, .45) 0 1px, transparent 1px 8px);
  opacity: .55;
}
.page-title { display: flex; align-items: center; gap: 10px; color: #F2F7FF; }
.page-title::before {
  content: ''; width: 4px; height: 20px; border-radius: 2px; flex: none;
  background: var(--ck-cyan); box-shadow: 0 0 12px var(--ck-cyan);
}
.page-subtitle { color: var(--ck-mute); }
.page-actions { position: relative; z-index: 1; }

/* 区块标题（.section-head）：左侧竖条 + 字距 */
.section-head h2 { display: flex; align-items: center; gap: 9px; color: #EAF1FF; }
.section-head h2::before {
  content: ''; width: 3px; height: 15px; border-radius: 2px;
  background: var(--ck-blue); box-shadow: 0 0 10px var(--ck-blue);
}

/* ==================================================================
   5. 面板：卡片 / 折叠卡 / 指标卡 / 砖块
   ================================================================== */
.card, .fold-card, .tile, .doc-group, .hot-cal, .pc-cal, .pc-range-pick {
  background: linear-gradient(180deg, var(--ck-panel-hi), var(--ck-panel));
  border: 1px solid var(--ck-line);
  box-shadow: var(--shadow-sm), inset 0 1px 0 rgba(255, 255, 255, .04);
}
.card, .fold-card { backdrop-filter: blur(6px); }
.card-head, .fold-head {
  border-bottom: 1px solid var(--ck-line-soft);
  background: linear-gradient(90deg, rgba(77, 166, 255, .07), transparent 70%);
}
.card-title { color: #EAF1FF; letter-spacing: .3px; }
.card-title::before {
  content: ''; width: 3px; height: 14px; border-radius: 2px; flex: none;
  background: var(--ck-cyan); box-shadow: 0 0 10px var(--ck-cyan);
}
.card-title .icon { color: var(--ck-cyan); }
.card-subtitle { color: var(--ck-mute); }
.fold-head:hover { background: linear-gradient(90deg, rgba(77, 166, 255, .13), rgba(77, 166, 255, .03)); }
.fold-title { color: #EAF1FF; }
.fold-caret { color: var(--ck-cyan); }
.fold-card[open] > .fold-head { border-bottom-color: var(--ck-line-soft); }

/* 指标卡：大屏指标带同款（顶部发光条 + 数值辉光 + 角标刻度） */
.stat {
  background: linear-gradient(180deg, rgba(30, 46, 88, .5), rgba(15, 25, 50, .78));
  border: 1px solid var(--ck-line-soft);
  box-shadow: var(--shadow-sm), inset 0 1px 0 rgba(255, 255, 255, .04);
}
.stat:hover { border-color: var(--ck-line-strong); box-shadow: 0 0 0 1px rgba(88, 132, 255, .18), 0 12px 30px rgba(2, 6, 16, .55); }
/* 把 app.css 的"左侧 4px 条"改成"顶部居中发光条"（与大屏 12 张指标卡一致） */
.stat::before {
  left: 50%; top: 0; bottom: auto; width: 46%; height: 2px;
  transform: translateX(-50%); border-radius: 0 0 3px 3px;
  background: var(--stat-color, var(--ck-blue));
  box-shadow: 0 0 14px var(--stat-color, var(--ck-blue));
}
.stat-label { color: var(--ck-sub); letter-spacing: .4px; }
.stat-icon { opacity: .8; }
.stat-value {
  color: #F4F8FF; letter-spacing: -.5px;
  text-shadow: 0 0 22px rgba(77, 166, 255, .35);
}
.stat-value small { color: var(--ck-mute); }
.stat-hint { color: var(--ck-mute); }

/* 砖块 / 平台指标格 */
.tile { transition: border-color var(--t), transform var(--t), box-shadow var(--t); }
.tile:hover { border-color: var(--ck-line-strong); box-shadow: 0 0 0 1px rgba(88, 132, 255, .16), 0 12px 30px rgba(2, 6, 16, .5); transform: translateY(-1px); }
.tile.selected {
  border-color: rgba(34, 211, 238, .45);
  background: linear-gradient(180deg, rgba(34, 211, 238, .14), rgba(17, 27, 54, .7));
  box-shadow: 0 0 0 1px rgba(34, 211, 238, .22), 0 0 26px rgba(34, 211, 238, .12);
}
.tile-title { color: #EAF1FF; }
.tile-sub { color: var(--ck-mute); }

.pf-tile {
  background: var(--ck-panel-inset); border: 1px solid var(--ck-line-soft);
}
.pf-tile-label { color: var(--ck-sub); }
.pf-tile-value { color: #F4F8FF; text-shadow: 0 0 18px rgba(77, 166, 255, .3); }
.pf-tile-miss { color: var(--ck-mute); }
.pf-block-chip { background: var(--ck-panel-solid); border-color: var(--ck-line); color: var(--ck-sub); }
.pf-block-chip.is-on {
  border-color: rgba(34, 211, 238, .5); color: #CFFAFE; background: rgba(34, 211, 238, .14);
}

/* 风险 / 预警条：左边框用霓虹色 */
.risk-card { border-left: 3px solid var(--ck-line-strong); }
.risk-card.high { border-left-color: var(--ck-red); box-shadow: -6px 0 20px -12px var(--ck-red), var(--shadow-sm); }
.risk-card.medium { border-left-color: var(--ck-amber); box-shadow: -6px 0 20px -12px var(--ck-amber), var(--shadow-sm); }
.risk-card.low { border-left-color: var(--ck-blue); }

.alert-item { border-bottom: 1px solid var(--ck-line-soft); }
.alert-item:hover { background: rgba(77, 166, 255, .07); }
.alert-level { color: #07101F; }
.alert-item-title { color: #EAF1FF; }
.alert-item-desc { color: var(--ck-sub); }
.alert-item-meta { color: var(--ck-mute); }
.lv-1 { background: var(--ck-blue); }
.lv-2 { background: var(--ck-amber); }
.lv-3 { background: var(--ck-red); }

/* ==================================================================
   6. 控件：按钮 / 输入 / 页签 / 徽标 / 小标签
   ================================================================== */
.btn {
  background: rgba(77, 166, 255, .09); border: 1px solid var(--ck-line);
  color: var(--ck-text); border-radius: var(--radius-sm);
}
.btn:hover:not(:disabled) {
  background: rgba(77, 166, 255, .2); border-color: rgba(88, 132, 255, .5); color: #fff;
}
.btn:disabled { opacity: .42; }
.btn-primary {
  background: linear-gradient(120deg, #2A8BFF, var(--ck-cyan));
  border-color: transparent; color: #03121F; font-weight: 650;
  box-shadow: 0 4px 18px rgba(34, 211, 238, .26);
}
.btn-primary:hover:not(:disabled) { filter: brightness(1.08); color: #03121F; background: linear-gradient(120deg, #2A8BFF, var(--ck-cyan)); }
.btn-danger {
  background: linear-gradient(120deg, #FF5F79, #E0334F); border-color: transparent; color: #1A0209; font-weight: 650;
  box-shadow: 0 4px 18px rgba(255, 84, 112, .22);
}
.btn-danger:hover:not(:disabled) { background: linear-gradient(120deg, #FF7189, #EA3F5B); color: #1A0209; }
.btn-success {
  background: linear-gradient(120deg, #2BD98A, #16B374); border-color: transparent; color: #04140D; font-weight: 650;
}
.btn-success:hover:not(:disabled) { background: linear-gradient(120deg, #48E39D, #1BC382); color: #04140D; }
.btn-ai {
  background: linear-gradient(120deg, rgba(167, 139, 250, .95), var(--ck-cyan));
  border-color: transparent; color: #06101F; font-weight: 650;
  box-shadow: 0 4px 20px rgba(167, 139, 250, .3);
}
.btn-ai:hover:not(:disabled) { filter: brightness(1.08); color: #06101F; }
.btn-ghost { background: transparent; border-color: transparent; }
.btn-ghost:hover:not(:disabled) { background: rgba(77, 166, 255, .12); border-color: var(--ck-line); color: #fff; }
.btn-icon {
  background: rgba(77, 166, 255, .08); border: 1px solid var(--ck-line); color: var(--ck-sub);
}
.btn-icon:hover { background: rgba(77, 166, 255, .2); border-color: rgba(88, 132, 255, .5); color: #fff; }

.input {
  /* ⚠️⚠️ 这里**必须**用 `background-color`，**不许**写成 `background:` 简写 —— 这条是实测换来的：
     `.select` 的下拉箭头是一张**背景图**（data-URI 雪佛龙），它靠
     `background-repeat: no-repeat` + `background-position: right 7px center` + `background-size: 18px`
     三条**长手属性**才落在右边（那三条写在 app.css 的 `.select` 里）。
     而 `background:` 简写会把这三条**一起重置**成 `repeat / 0 0 / auto`；
     本文件在 app.css **之后**加载 ⇒ 简写胜出 ⇒ 箭头变成**从左上角开始平铺**，
     整个下拉框上糊着一排小符号（用户 2026-09-29 报的「后台下拉框有符号在上面」就是它）。
     真浏览器探针实测（`logs/_uipreview-shots.js` 的 SELECT_PROBE）：
       `.input select` 计算值 = rep=repeat pos=0% 0% size=auto —— 修好后应为 no-repeat / right 8px center / 18px。 */
  background-color: rgba(6, 12, 28, .72);
  border: 1px solid var(--ck-line); color: var(--ck-text);
  box-shadow: inset 0 1px 2px rgba(2, 6, 16, .5);
}
.input::placeholder { color: rgba(126, 141, 184, .85); }
.input:hover:not(:disabled) { border-color: rgba(88, 132, 255, .42); }
.input:focus { border-color: rgba(34, 211, 238, .6); box-shadow: var(--ring); background-color: rgba(6, 14, 32, .85); }
.input:disabled { background-color: rgba(255, 255, 255, .03); color: var(--ck-mute); }
/* 下拉箭头：原来的 data-uri 是**深灰**（浅底用的），深底上必须换成亮色，否则箭头看不见。
   ★ 四条属性**一起写全**（图片 + repeat + position + size）：这是"箭头一定落在右边"的完整定义，
   即便将来又有人给 `.input` / `select` 加了 `background:` 简写，这里也仍然是权威的（同优先级、本文件在后）。
   ⚠️ padding-right 由 app.css 的 `.select`（30px）提供，别在这里用简写把它连带重置。 */
.select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23A9B8E0'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 8px center;
  background-size: 18px;
}
.form-label { color: var(--ck-sub); }
.form-hint { color: var(--ck-mute); }
.form-divider { color: var(--ck-mute); border-bottom-color: var(--ck-line); }
.checkbox input { accent-color: var(--ck-cyan); }

.tabs { border-bottom: 1px solid var(--ck-line); }
.tab { color: var(--ck-sub); }
.tab:hover { color: var(--ck-blue); }
.tab.active {
  color: var(--ck-cyan); border-bottom-color: var(--ck-cyan);
  text-shadow: 0 0 14px rgba(34, 211, 238, .55);
}
.tab-badge { background: rgba(255, 84, 112, .18); color: #FF8FA3; }
.chips { gap: var(--sp-3); }
.chip {
  background: rgba(77, 166, 255, .07); border: 1px solid var(--ck-line); color: var(--ck-sub);
}
.chip:hover { border-color: rgba(34, 211, 238, .5); color: #CFFAFE; background: rgba(34, 211, 238, .1); }
.chip.active {
  background: linear-gradient(120deg, rgba(42, 139, 255, .9), rgba(34, 211, 238, .9));
  border-color: transparent; color: #03121F; font-weight: 650;
  box-shadow: 0 3px 14px rgba(34, 211, 238, .22);
}
.chip-count { opacity: .9; }

.badge { background: rgba(255, 255, 255, .07); color: var(--ck-sub); border: 1px solid var(--ck-line-soft); }
.badge-success { background: var(--success-soft); color: var(--success-ink); border-color: rgba(43, 217, 138, .3); }
.badge-warning { background: var(--warning-soft); color: var(--warning-ink); border-color: rgba(245, 165, 36, .3); }
.badge-danger { background: var(--danger-soft); color: var(--danger-ink); border-color: rgba(255, 84, 112, .3); }
.badge-info { background: var(--info-soft); color: var(--info-ink); border-color: rgba(77, 166, 255, .3); }
.badge-purple { background: var(--purple-soft); color: var(--purple-ink); border-color: rgba(167, 139, 250, .3); }
.badge-primary { background: var(--primary-soft); color: var(--primary-ink); border-color: rgba(77, 166, 255, .3); }
.tag { background: var(--ck-panel-solid); border-color: var(--ck-line); color: var(--ck-sub); }

/* ==================================================================
   7. 表格 / 进度 / KV / 空态 / 提示条 / 时间线
   ================================================================== */
.table th {
  background: rgba(77, 166, 255, .09); color: var(--ck-sub);
  border-bottom: 1px solid var(--ck-line); letter-spacing: .5px;
  backdrop-filter: blur(6px);
}
.table td { border-bottom: 1px solid var(--ck-line-soft); }
.table tbody tr:hover { background: rgba(77, 166, 255, .06); }
.table tbody tr.clickable:hover { background: rgba(34, 211, 238, .09); }
.cell-sub { color: var(--ck-mute); }
.md-table th, .md-table td { border-color: var(--ck-line); }

.progress { background: var(--track); }
.progress-label { color: var(--ck-mute); }
.hbar-track, .funnel-track { background: rgba(255, 255, 255, .07); }
.hbar-label, .funnel-label { color: var(--ck-sub); }
/* 漏斗条带里的数值：`.funnel-fill` 的底色现在是**亮色系列**（驾驶舱色板），
   app.css 那行"白字"在亮青/亮蓝上只有 ~2.6 的对比度（真浏览器审计实测）⇒ 改成深墨字。 */
.funnel-fill { color: #06121F; font-weight: 700; }
.funnel-rate { color: var(--ck-mute); }
.kv dt { color: var(--ck-mute); }
.kv dd { color: var(--ck-text); }
.desc-label { color: var(--ck-mute); }
.desc-value { color: var(--ck-text); }
.legend { color: var(--ck-sub); }
.chart .grid { stroke: var(--ck-line-soft); }
.chart .axis { fill: var(--ck-mute); }
.donut-center strong { color: #F4F8FF; text-shadow: 0 0 20px rgba(77, 166, 255, .35); }
.donut-center span { color: var(--ck-mute); }
.spark-empty, .cloud-word { color: var(--ck-sub); }

.empty { color: var(--ck-mute); }
.empty-icon { color: rgba(126, 141, 184, .45); }
.empty-text { color: var(--ck-sub); }
.loading { color: var(--ck-mute); }
.spinner { border-color: var(--ck-line-strong); border-top-color: var(--ck-cyan); }

.alert-box { border: 1px solid var(--ck-line); color: var(--info-ink); background: var(--info-soft); }
.alert-error { border-color: rgba(255, 84, 112, .3); }
.alert-success { border-color: rgba(43, 217, 138, .3); }
.alert-warning { border-color: rgba(245, 165, 36, .3); }

.note-details-summary { background: rgba(77, 166, 255, .07); border-color: var(--ck-line); color: var(--ck-mute); }
.note-details-summary:hover, .note-details[open] > .note-details-summary { color: var(--ck-cyan); border-color: rgba(34, 211, 238, .45); }
.note-details-body { color: var(--ck-sub); }

.timeline-item { border-left: 1px solid var(--ck-line); }
.timeline-dot { box-shadow: 0 0 0 3px var(--ck-bg), 0 0 10px rgba(77, 166, 255, .6); }
.timeline-title { color: #EAF1FF; }
.timeline-desc { color: var(--ck-sub); }
.timeline-time { color: var(--ck-mute); }

.code-block { background: var(--ck-panel-inset); border-color: var(--ck-line); color: #C9E4FF; }
.doc-group-sum, .doc-ep-sum { color: var(--ck-text); }
.doc-group-sum::before, .doc-ep-sum::before { color: var(--ck-cyan); }
.doc-group-sum { border-bottom-color: var(--ck-line-soft); }
.doc-ep { background: var(--ck-panel-inset); border-color: var(--ck-line-soft); }
.doc-ep-body { background: rgba(6, 12, 28, .5); border-top-color: var(--ck-line-soft); }
.doc-ep-desc, .doc-sec-title, .doc-notes { color: var(--ck-sub); }
.doc-group-sum:hover, .doc-ep-sum:hover { background: rgba(77, 166, 255, .07); }
.divider { background: var(--ck-line-soft); }

/* 市场热点日历（原来整块是浅底白格） */
.hot-cal { background: var(--ck-panel-solid); }
.hot-cal-head { background: rgba(77, 166, 255, .12); }
.hot-cal-wd { color: var(--primary-ink); }
.hot-cal-cell { border-color: var(--ck-line-soft); }
.hot-cal-cell.blank { background: rgba(255, 255, 255, .025); }
.hot-cal-cell.today { background: rgba(245, 165, 36, .12); box-shadow: inset 0 0 0 2px rgba(245, 165, 36, .55); }
.hot-cal-day { color: var(--ck-text); }
.hot-cal-cell.today .hot-cal-day { color: var(--warning-ink); }
.hot-cal-ev { background: rgba(255, 255, 255, .06); color: var(--ck-text); border-left-color: var(--ck-mute); }
.hot-cal-ev.cat-performance { background: rgba(167, 139, 250, .14); }
.hot-cal-ev.cat-exam { background: rgba(34, 211, 238, .13); }
.hot-cal-more { color: var(--ck-mute); }

/* 甘特图 */
.gantt-group { border-bottom-color: var(--ck-line-soft); }
.gantt-group-name { color: #EAF1FF; }
.gantt-cell { border-right-color: rgba(88, 132, 255, .12); }
.gantt-today span { background: var(--ck-panel-solid); }
.gantt-bar { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .18); }

/* ==================================================================
   8. 弹层：遮罩 / 弹窗 / 抽屉 / 吐司 / 对话 / AI 面板
   ================================================================== */
.overlay { background: rgba(3, 7, 18, .66); backdrop-filter: blur(4px); }
.modal, .drawer {
  background: linear-gradient(180deg, rgba(20, 32, 62, .96), rgba(9, 16, 36, .98));
  border: 1px solid var(--ck-line);
  box-shadow: var(--shadow-lg), inset 0 1px 0 rgba(255, 255, 255, .05);
}
.modal-head, .modal-foot { border-color: var(--ck-line-soft); background: rgba(77, 166, 255, .05); }
.modal-head h3 { color: #F2F7FF; }
.confirm-text { color: var(--ck-text); }

.toast {
  background: linear-gradient(180deg, rgba(20, 32, 62, .97), rgba(9, 16, 36, .98));
  color: var(--ck-text); border: 1px solid var(--ck-line);
  box-shadow: var(--shadow-lg), inset 0 1px 0 rgba(255, 255, 255, .06);
}
.toast-success { border-color: rgba(43, 217, 138, .5); color: #D6FFEE; }
.toast-error { border-color: rgba(255, 84, 112, .5); color: #FFE1E6; }

.search-results {
  background: linear-gradient(180deg, rgba(20, 32, 62, .98), rgba(9, 16, 36, .99));
  border-color: var(--ck-line); box-shadow: var(--shadow-lg);
}
.search-item:hover { background: rgba(77, 166, 255, .14); }
.search-item small, .search-group-title { color: var(--ck-mute); }
.bell-dot { color: #1A0209; border-color: var(--ck-bg); }
/* 同一条纪律：这里碰的是 `<select>`，一律用 background-color（简写会把箭头那三条长手属性重置） */
.hotel-select select { background-color: var(--ck-panel-solid); border-color: var(--ck-line); color: var(--ck-text); }
.topbar-search input { background-color: rgba(6, 12, 28, .72); border-color: var(--ck-line); color: var(--ck-text); }
.topbar-search input:focus { background-color: rgba(6, 14, 32, .9); border-color: rgba(34, 211, 238, .55); }

/* 对话 / AI 面板 */
.ai-panel {
  background: linear-gradient(180deg, rgba(34, 211, 238, .10), rgba(12, 20, 42, .75));
  border: 1px solid rgba(34, 211, 238, .28);
}
.ai-panel-head {
  background: linear-gradient(90deg, rgba(34, 211, 238, .12), rgba(167, 139, 250, .07));
  border-bottom: 1px solid rgba(34, 211, 238, .22);
}
.ai-pill { color: var(--ck-cyan); }
.ai-meta { color: var(--ck-mute); }
.ai-panel-body blockquote { background: rgba(167, 139, 250, .12); color: var(--ck-sub); border-left-color: var(--ck-purple); }
.chat-body { background: rgba(5, 10, 22, .5); }
.chat-bubble {
  background: linear-gradient(180deg, rgba(24, 38, 72, .9), rgba(14, 24, 48, .92));
  border: 1px solid var(--ck-line); color: var(--ck-text);
}
.chat-msg.user .chat-bubble {
  background: linear-gradient(120deg, rgba(42, 139, 255, .9), rgba(34, 211, 238, .85));
  border-color: transparent; color: #03121F;
}
.chat-input { background: rgba(9, 16, 36, .9); border-top-color: var(--ck-line-soft); }
.chat-ref { background: var(--ck-panel-inset); border-color: var(--ck-line); }
.chat-ref b { color: var(--ck-cyan); }
.chat-quick button { background: rgba(77, 166, 255, .07); border-color: var(--ck-line); color: var(--ck-sub); }
.chat-quick button:hover { border-color: rgba(34, 211, 238, .5); color: #CFFAFE; background: rgba(34, 211, 238, .12); }
.advisor-fab {
  background: linear-gradient(135deg, var(--ck-cyan), var(--ck-blue));
  color: #04101F; box-shadow: 0 10px 30px rgba(34, 211, 238, .35);
}
.advisor-fab .pulse { border-color: rgba(34, 211, 238, .4); }

/* ==================================================================
   9. 登录页：整块改成"接入驾驶舱"的第一屏
   ================================================================== */
.login-page {
  background-color: var(--ck-bg);
  background-image:
    radial-gradient(1100px 600px at 14% -6%, rgba(77, 166, 255, .2), transparent 62%),
    radial-gradient(900px 560px at 88% 100%, rgba(34, 211, 238, .14), transparent 60%),
    linear-gradient(rgba(88, 132, 255, .05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(88, 132, 255, .05) 1px, transparent 1px);
  background-size: auto, auto, 46px 46px, 46px 46px;
}
.login-card {
  background: linear-gradient(180deg, rgba(18, 28, 56, .94), rgba(9, 16, 36, .97));
  border: 1px solid var(--ck-line);
  box-shadow: var(--shadow-lg), 0 0 0 1px rgba(88, 132, 255, .1), inset 0 1px 0 rgba(255, 255, 255, .05);
}
.login-hero {
  background:
    radial-gradient(600px 300px at 20% 0%, rgba(34, 211, 238, .22), transparent 60%),
    linear-gradient(150deg, #0B2450 0%, #123A72 55%, #17609E 100%);
}
.login-hero h1 { letter-spacing: .6px; text-shadow: 0 0 30px rgba(34, 211, 238, .3); }
.login-feature i { background: var(--ck-cyan); box-shadow: 0 0 10px var(--ck-cyan); }
.login-form h2 { color: #F2F7FF; letter-spacing: .4px; }
.login-form .sub { color: var(--ck-mute); }
.login-accounts { border-top-color: var(--ck-line); }
.login-accounts .label { color: var(--ck-mute); }
.account-chip { background: rgba(77, 166, 255, .08); border-color: var(--ck-line); color: var(--ck-sub); }
.account-chip:hover { border-color: rgba(34, 211, 238, .5); background: rgba(34, 211, 238, .12); color: #CFFAFE; }

/* ==================================================================
   10. 内嵌页（#/woyizhu）与价格台等页面级浅色硬编码收口
   ================================================================== */
.embed-frame { background: var(--ck-panel-solid); border-color: var(--ck-line); }
.embed-bar { background: rgba(12, 20, 42, .94); border-color: var(--ck-line); }
.embed-notes { background: linear-gradient(180deg, rgba(20, 32, 62, .97), rgba(9, 16, 36, .98)); border-color: var(--ck-line); }
.embed-wrap-full > [data-role="woyizhu-note"] { background: rgba(12, 20, 42, .92); border-color: var(--ck-line); color: var(--ck-sub); }
body.embed-fill::before { background: rgba(34, 211, 238, .5); }

/* 价格台（房型 × 日期） */
.pc-cell { background: rgba(255, 255, 255, .05); }
.pc-cell-empty { border-color: var(--ck-line); color: var(--ck-mute); }
.pc-cell-stop { background: rgba(255, 255, 255, .06); color: var(--ck-mute); }
.pc-range { border-color: var(--ck-line); }
.pc-range-empty { background: rgba(255, 255, 255, .03); }
.pc-range-pick:hover, .pc-cal-day:hover { border-color: rgba(34, 211, 238, .5); }
.pc-range-pick-open { border-color: rgba(34, 211, 238, .6); box-shadow: var(--ring); }
.pc-cal-day { background: rgba(255, 255, 255, .05); }
.pc-cal-in { background: rgba(34, 211, 238, .16); color: #CFFAFE; }
.pc-cal-edge { background: linear-gradient(120deg, #2A8BFF, var(--ck-cyan)); color: #03121F; }
.pc-cal-pad { background: transparent; }
.pc-cal-today { outline-color: var(--ck-line-strong); }
.pc-result { background: var(--ck-panel-inset); border-color: var(--ck-line); }
.pc-result[kind="ok"] { border-color: rgba(43, 217, 138, .45); }
.pc-result[kind="partial"], .pc-result[kind="denied"] { border-color: rgba(245, 165, 36, .45); }
.pc-result[kind="fail"] { border-color: rgba(255, 84, 112, .45); }
.pc-result[kind="running"] { border-color: rgba(34, 211, 238, .45); }
.price-tag { color: var(--ck-cyan); text-shadow: 0 0 20px rgba(34, 211, 238, .3); }
.price-old { color: var(--ck-mute); }

/* ==================================================================
   11. 页面专属样式（agent / portal / workflow / mini）的深底收口
   ------------------------------------------------------------------
   这四个文件是各自页面独立维护的（app.css 注释里明说过"不往 app.css 里塞"），
   它们大部分走令牌、只有少数浅色字面值；本文件最后加载 ⇒ 在这里统一覆盖即可，
   不需要去改那四个文件（它们仍归各自页面的维护者）。
   ================================================================== */
/* 智营通（agent.css:52 工具胶囊 / agent.css:115 工具调用结果 pre 都是白底） */
.ag-tool-chip {
  background: rgba(77, 166, 255, .08); border-color: var(--ck-line); color: var(--ck-sub);
}
.ag-tool-pre {
  background: var(--ck-panel-inset); border-color: var(--ck-line); color: #C9E4FF;
}
.ag-engine.tone-loading { border-left-color: var(--ck-line-strong); }
.ag-mic { background: rgba(77, 166, 255, .08); border-color: var(--ck-line); color: var(--ck-sub); }
.ag-mic:hover:not(:disabled) { border-color: rgba(34, 211, 238, .5); color: var(--ck-cyan); background: rgba(34, 211, 238, .12); }

/* 酒店经营看板（portal.css：.m-head / .m-tabs / .m-card / .m-kpi / .m-diag /
   .m-metric / .m-wf-run / .m-act 共八处白底，与三处浅橙浅红描边） */
.m-head, .m-tabs, .m-card, .m-kpi, .m-diag, .m-metric, .m-wf-run, .m-act {
  background: rgba(17, 27, 54, .72); border-color: var(--ck-line);
}
/* 实心主色块改成"青蓝渐变 + 深色字"（深蓝底白字对比度只有 2.6，读不清） */
.m-tab.active, .m-act.primary {
  background: linear-gradient(120deg, #2A8BFF, var(--ck-cyan));
  border-color: transparent; color: #03121F; font-weight: 650;
}
.m-act.done { border-color: rgba(43, 217, 138, .45); }
.m-alert.warn { border-color: rgba(245, 165, 36, .45); }
.m-alert.err { border-color: rgba(255, 84, 112, .45); }
.m-alert.ok { border-color: rgba(43, 217, 138, .45); }
.m-text, .m-row .vl, .m-diag-block, .m-score-summary { color: var(--ck-sub); }
.m-diag-evidence { background: var(--ck-panel-inset); border-color: var(--ck-line); }
.m-diag-suggest { background: rgba(43, 217, 138, .14); color: var(--success-ink); }

/* 每日工作流稽查（workflow.css:98/112/115 的浅红底与浅红描边） */
.wf-node.st-late { border-color: rgba(255, 84, 112, .4); background: rgba(255, 84, 112, .10); }
.wf-node.st-late .wf-node-band { box-shadow: 0 0 0 3px rgba(255, 84, 112, .18); }
.wf-late-item { border-color: rgba(255, 84, 112, .4); background: rgba(255, 84, 112, .10); }
.wf-late-item.lv-high { background: rgba(255, 84, 112, .16); }
.wf-node-note.is-review { background: var(--purple-soft); color: var(--purple-ink); }

/* 手机版工作台（mini.css:88 KPI 缺值 / :99 环比格 / :150 报表胶囊 三处白底） */
.mini-kpi.missing, .mini-delta, .mini-chip { background: rgba(17, 27, 54, .72); }
.mini-kpi.missing { border-style: dashed; border-color: var(--ck-line-strong); }
.mini-chip.active {
  background: linear-gradient(120deg, #2A8BFF, var(--ck-cyan));
  border-color: transparent; color: #03121F; font-weight: 650;
}
/* 语音大按钮：主色实心 + 深色字（同上，深蓝底白字读不清） */
.mini-voice-btn { color: #03121F; box-shadow: 0 6px 22px rgba(34, 211, 238, .28); }
.mini-voice-btn:hover:not(:disabled) { color: #03121F; }
.mini-miss { border-color: rgba(245, 165, 36, .45); }
.mini-diag-c.high { border-color: rgba(255, 84, 112, .45); }
.mini-diag-c.mid { border-color: rgba(245, 165, 36, .45); }
.mini-diag-item, .mini-datastate { background: var(--ck-panel-inset); }
.mini-topbar, .mini-tabbar { background: rgba(9, 16, 36, .94); border-color: var(--ck-line); }
.mini-node.late { background: rgba(255, 84, 112, .10); }

/* ==================================================================
   12. 自适应与无障碍
   ================================================================== */
@media (max-width: 900px) {
  .page-header { padding: 12px 14px; }
  .page-header::after { display: none; }
}
/* 服从系统"减少动效"：脉冲与渐入一律停掉（深底发光本身不是动效，保留） */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
}
