/* =============================================================
 * 烽火轮 · 经营驾驶舱 设计令牌 (Design Tokens) — 单一真相源
 * 依据：周星星《烽火轮经营驾驶舱 · UI 视觉规范》v1.0 (2026-07-13)
 * 基调：深色主（深海蓝）+ 浅色辅；数据可读性优先于品牌美观
 * ============================================================= */

:root {
  /* ---------- 深色模式配色（默认主题） ---------- */
  --fh-bg-primary:    #0F1A3C;  /* 深海蓝：主背景、侧边栏 */
  --fh-bg-card:       #162247;  /* 深海蓝+10%：卡片/面板 */
  --fh-bg-hover:      #1E2D55;  /* 深海蓝变体：悬浮/选中态 */
  --fh-border:        #2A3A6B;  /* 深海蓝+15%：边框/分割线（仅用衍生色，金不用于边框） */

  --fh-text-primary:  #E8EAF0;  /* 净白90%：主要文字/数字 */
  --fh-text-secondary:#8A9BBF;  /* 板灰蓝调：次要标签/轴标签/说明 */

  --fh-gold:          #C8A24E;  /* 乾坤金：品牌/主按钮/选中竖条/图表系列第一色 */
  --fh-blue:          #4A90D9;  /* 商务蓝亮：链接/图表第二色/可点击 */
  --fh-success:       #2ECC71;  /* 成功/正向（增长、达标） */
  --fh-warning:       #F39C12;  /* 警告/中性（接近阈值、待处理） */
  --fh-danger:        #C0392B;  /* 点睛红：危险/负向（亏损、预警） */

  /* ---------- 图表六色板（按优先级，单图≤3主色） ---------- */
  --chart-1: #C8A24E;  /* 主数据系列：乾坤金 */
  --chart-2: #4A90D9;  /* 第二系列：商务蓝亮 */
  --chart-3: #2ECC71;  /* 第三系列：成功绿 */
  --chart-4: #9B59B6;  /* 第四系列：薰衣草紫（≤5%） */
  --chart-5: #E67E22;  /* 第五系列：暖橙 */
  --chart-6: #95A5A6;  /* 备用：浅灰 */

  /* ---------- 语义别名（业务代码统一引用） ---------- */
  --accent-gold:    var(--fh-gold);
  --accent-blue:    var(--fh-blue);
  --accent-green:   var(--fh-success);
  --accent-red:     var(--fh-danger);
  --accent-yellow:  var(--fh-warning);
  --accent-purple:  var(--fh-gold);      /* 紫非品牌色，统一收口为金 */
  --accent-cyan:    var(--fh-blue);      /* 青非品牌色，收口为商务蓝 */
  --accent-orange:  var(--chart-5);
  --accent-pink:    var(--fh-gold);      /* 粉非品牌色，收口为金 */
  --gradient-gold:  var(--fh-gold);      /* 原金色渐变→实心金（禁渐变） */

  /* ---------- 间距 / 圆角 ---------- */
  --fh-gap:     16px;   /* 卡片间距 */
  --fh-pad:     20px;   /* 卡片内边距 */
  --fh-content: 24px;   /* 主内容区内边距 */
  --fh-radius:  8px;    /* 卡片/按钮圆角 */
  --fh-radius-sm: 6px;  /* 筛选器/标签圆角 */

  /* ---------- 阴影（卡片立体感，深/浅双模各异，见下方主题覆盖） ---------- */
  --fh-shadow-card: 0 2px 6px rgba(0, 0, 0, 0.25);  /* 深色：对比已有层次，阴影仅补微弱分离 */

  /* ---------- 按钮高度 ---------- */
  --fh-btn-h:   36px;
  --fh-btn-h-sm:32px;
  --fh-btn-h-lg:44px;

  /* ---------- 字号层级（深色模式） ---------- */
  --fh-fs-kpi:    56px;  /* KPI 主数据 48~72，取中值 */
  --fh-fs-title:  30px;  /* 页面标题 28~32 */
  --fh-fs-card:   19px;  /* 卡片标题 18~20 */
  --fh-fs-body:   15px;  /* 正文数据 14~16 */
  --fh-fs-label:  12px;  /* 标签/轴名 12~13（不小于12） */
  --fh-fs-cap:    11px;  /* 辅助说明 11~12 */

  /* ---------- 字体族（UI 用无衬线；思源黑/苹方免费可用，DIN 商用不可用） ---------- */
  --fh-font: "Source Han Sans SC", "PingFang SC", "Microsoft YaHei",
             -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  /* 数字：等宽数字（tabular-nums），避免右对齐参差；不引入商用 DIN */
  --fh-font-num: var(--fh-font);
}

/* 数字统一用等宽数字，财务报表右对齐更整齐（禁用宋体） */
.fh-num, .fh-money {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
  font-family: var(--fh-font-num);
}

/* ---------- 浅色模式（Phase D，2026-07-14 启用） ---------- */
/* 切换方式：<html data-theme="light">；令牌全部继承，业务代码零改动。
   页面若硬编码深色（#0F1A3C/#162247），靠下方 [data-theme="light"] 桥接层
   用 !important 翻转到浅色画布/卡片；逐页改用令牌是后续精细化工作。 */
:root[data-theme="light"] {
  --fh-bg-primary:    #F4F6FA;  /* 浅灰蓝：主背景、侧边栏 */
  --fh-bg-card:       #FFFFFF;  /* 实色白：浅色卡片基底（保持清爽实底，不做半透明） */
  --fh-bg-hover:      #EEF1F7;  /* 浅悬浮 */
  --fh-border:        rgba(15, 26, 60, 0.10);  /* 淡海军蓝边框：有层次、不抢眼 */

  --fh-text-primary:  #1A2238;  /* 深海军字（非纯黑，护眼） */
  --fh-text-secondary:#5A6B8C;  /* 中灰蓝：次要文字 */

  /* 浅底上需更高对比度，金/蓝/语义色整体压深一档 */
  --fh-gold:          #B5872B;  /* 压深金：浅底可读 */
  --fh-blue:          #1F5FA8;  /* 压深商务蓝 */
  --fh-success:       #1E9E54;  /* 压深绿 */
  --fh-warning:       #C77B09;  /* 压深琥珀 */
  --fh-danger:        #B5281B;  /* 压深红 */

  --chart-1: #B5872B;  /* 金→压深 */
  --chart-2: #1F5FA8;  /* 蓝→压深 */
  --chart-3: #1E9E54;  /* 绿→压深 */
  --chart-4: #8E44AD;  /* 紫（浅底可读） */
  --chart-5: #D2691E;  /* 暖橙 */
  --chart-6: #7F8C8D;  /* 灰 */

  /* 阴影：浅色白卡需明显抬升，用柔和海军蓝调（非纯黑，保持在品牌色系内） */
  --fh-shadow-card: 0 2px 4px rgba(15, 26, 60, 0.05), 0 8px 24px rgba(15, 26, 60, 0.12);
}

/* 桥接层：翻转移硬码深色的页面画布与通用卡片（!important 压过页内 <style>） */
html[data-theme="light"], html[data-theme="light"] body {
  background: var(--fh-bg-primary) !important;
  color: var(--fh-text-primary) !important;
}
[data-theme="light"] .card,
[data-theme="light"] .panel,
[data-theme="light"] .card-box {
  background: var(--fh-bg-card) !important;
  border: 1px solid var(--fh-border) !important;
  color: var(--fh-text-primary) !important;
}

/* 卡片立体感：全站卡片阴影统一（深/浅双模自适应，业务页无需逐页改动）。
   ① 显式列出所有导航可达页面中的「占面积卡片」类；
   ② [class*="card"] 兜底覆盖任何遗漏 / 未来新增的 card 类；
   ③ 行内样式卡片（无 class，但带 border:1px solid + 大圆角）用属性选择器兜底；
      —— 仅匹配 border-radius:10~19px（真实卡片），排除 4/6/8/20px 的小标签/徽章；
   ④ 排除：卡片内部元素、.growth-card（分享卡自带大阴影）。
   全站统一加 !important，压过页内 <style> 与行内 style，确保前后卡片阴影一致。 */
.card, .panel, .card-box,
.kpi-card, .stat-card, .eff-card, .age-card, .agency-client-card, .empty-state-card,
.modal, .modal-box, .qr-modal-box, .vip-card,
.tool-card, .feature-card,
.profile-card, .guide-card, .exchange-card, .mini-lb-card,
.vcard, .lead-card, .card-edit,
.adapter-card, .stat-box, .hcard, .trendbox, .doc-card,
.summary-card, .position-card, .prod-card, .team-card,
.start-card, .q-card, .form-card, .cmp-card, .calc-card, .result-card,
.toggle-card, .renewal-block-content, .chart-box, .stat, .source-box, .sched-item,
.data-table-wrap, .alert-bar, .alert-banner, .renewal-notice, .kpi, .dim, .dcell, .cta,
[class*="card"]:not(.card-title):not(.card-header):not(.card-list):not(.card-body):not(.growth-card),
[style*="border:1px solid"][style*="border-radius:1"],
[style*="border: 1px solid"][style*="border-radius:1"],
[style*="border:1px solid"][style*="border-radius: 1"],
[style*="border: 1px solid"][style*="border-radius: 1"] {
  box-shadow: var(--fh-shadow-card) !important;
}
.card-title, .card-header, .card-list, .card-body { box-shadow: none !important; }

/* ---------- 浅色模式文字色兜底（2026-07-15, 泰师兄定调：只动需要的） ----------
   背景被翻浅的容器（.card/.panel/.card-box/.header）内，原本硬码 color:#fff 的白字
   在浅底上不可见。此处一次性翻成跟随主题的深字（var(--fh-text-primary)）。
   通过 :not() 排除：①交互元素（按钮/徽章/气泡）②语义色（涨绿跌红等），
   确保彩色按钮白字、AI 气泡蓝底白字、语义色一律保持原样、不被误伤。
   聚合选择器覆盖无类名白字（含 welfare 等散落 div），无需逐页改动。 */
[data-theme="light"] :is(.card,.panel,.card-box,.header)
  :not(button):not([class*="btn"]):not([class*="badge"]):not(.toast):not(.msg):not(.xiaota-msg)
  :not([class*="up"]):not([class*="down"]):not([class*="profit"]):not([class*="loss"])
  :not([class*="green"]):not([class*="red"]):not([class*="success"]):not([class*="danger"]):not([class*="warning"]):not([class*="text-"])
  :is(h1,h2,h3,h4,h5,h6,p,span,div,li,td,th,label,strong,small) {
  color: var(--fh-text-primary) !important;
}
/* 概览标题（内联 style 白字）、输入框文字（半透明白底）单独兜底 */
[data-theme="light"] #ovTitle,
[data-theme="light"] input {
  color: var(--fh-text-primary) !important;
}
/* 驾驶舱（经营驾驶舱_api.html）自定义卡片类：公司名/统计数字/元信息在浅色下由 #fff 翻深字。
   精准定位 .ac-name/.sc-num/.ac-meta/.sc-label，不波及卡片内蓝色角色徽章(.ac-role)，安全。
   带版本号自动重载，即使驾驶舱页 HTML 被微信缓存也能生效。 */
[data-theme="light"] .agency-client-card .ac-name,
[data-theme="light"] .stat-card .sc-num { color: var(--fh-text-primary) !important; }
[data-theme="light"] .agency-client-card .ac-meta,
[data-theme="light"] .stat-card .sc-label { color: var(--fh-text-secondary) !important; }
/* 管理工作台等页：JS 动态生成的 inline 浅色字（#e0e0e0/#8892b0/#c0c0c0/#5a6488 等），
   在浅底上不可见。全局兜底翻深（浅色模式专属，不影响深色模式）。
   这些浅色值均为文字色，与语义色（金/绿/红/商务蓝）无交集，安全不误伤。
   放全局 CSS（带版本号自动重载），即使 admin.html 内联样式未被重新拉取也能生效。 */
[data-theme="light"] [style*="#e0e0e0"],
[data-theme="light"] [style*="#c0c0c0"],
[data-theme="light"] [style*="#8892b0"],
[data-theme="light"] [style*="#5a6488"] { color: var(--fh-text-primary) !important; }
[data-theme="light"] [style*="#a0aec0"],
[data-theme="light"] [style*="#ccd6f6"],
[data-theme="light"] [style*="#9e9e9e"] { color: var(--fh-text-secondary, #4a5568) !important; }

/* 小塔 AI 助手：浅色模式气泡文字强制翻深（含回复子元素/潜在内联灰字）。
   独立于页内 <style> 放在全局令牌文件，随版本号重载，确保微信缓存下也生效。
   只命中 .msg.assistant/.msg.system 气泡（小塔专属类），不波及他用；
   用户气泡(.msg.user)蓝底白字、文档卡片语义状态色(.doc-status*)均不在此选择器内，保持原样。 */
[data-theme="light"] .msg.assistant,
[data-theme="light"] .msg.assistant * { color: var(--fh-text-primary) !important; }
[data-theme="light"] .msg.system,
[data-theme="light"] .msg.system * { color: var(--fh-text-secondary) !important; }

/* 驾驶舱内嵌「小塔」对话面板（.xiaota-* 类，独立于 /ai-chat 路由）：
   浅色模式下气泡/标题/输入框用写死浅灰(#e0e0e0/#888/#555)，在白底上不可见。
   放全局令牌文件、随版本号重载，确保微信缓存下也生效；只命中 .xiaota-* 专属类，不波及他用；
   用户气泡(.xiaota-msg.user)蓝底白字保持原样。 */
[data-theme="light"] .xiaota-panel { background: var(--fh-bg-card) !important; border-color: var(--fh-border) !important; }
[data-theme="light"] .xiaota-header { background: var(--fh-bg-card) !important; border-bottom-color: var(--fh-border) !important; }
[data-theme="light"] .xiaota-header .name { color: var(--fh-text-primary) !important; }
[data-theme="light"] .xiaota-header .close { color: var(--fh-text-secondary) !important; background: rgba(26,34,56,0.05) !important; }
[data-theme="light"] .xiaota-header .close:hover { color: var(--fh-text-primary) !important; background: rgba(26,34,56,0.1) !important; }
[data-theme="light"] .xiaota-messages { background: var(--fh-bg-primary) !important; }
[data-theme="light"] .xiaota-msg.bot { background: var(--fh-bg-hover) !important; color: var(--fh-text-primary) !important; }
[data-theme="light"] .xiaota-msg.user { color: #fff !important; }
[data-theme="light"] .xiaota-msg.typing { color: var(--fh-text-secondary) !important; }
[data-theme="light"] .xiaota-input { background: var(--fh-bg-card) !important; border-top-color: var(--fh-border) !important; }
[data-theme="light"] .xiaota-input input { background: var(--fh-bg-card) !important; color: var(--fh-text-primary) !important; border-color: var(--fh-border) !important; }
[data-theme="light"] .xiaota-input input::placeholder { color: var(--fh-text-secondary) !important; }
[data-theme="light"] .xiaota-quick button { color: var(--fh-blue) !important; border-color: rgba(31,95,168,0.3) !important; background: rgba(31,95,168,0.08) !important; }

/* 浅底上幽灵按钮/徽章需重新定色，否则近透明看不见 */
[data-theme="light"] .fh-btn--ghost {
  background: rgba(26,34,56,0.05) !important;
  color: var(--fh-text-primary) !important;
  border-color: var(--fh-border) !important;
}
[data-theme="light"] .fh-badge--gold { background: rgba(181,135,43,0.12) !important; color: var(--fh-gold) !important; }
[data-theme="light"] .fh-badge--blue { background: rgba(31,95,168,0.12) !important; color: var(--fh-blue) !important; }

/* =============================================================
 * 周星星规范「两个内部矛盾」的裁决（泰师兄与周星星定调，落地口径）：
 *
 * 矛盾1：KPI 主数字到底用不用金？
 *   → 裁决：KPI 主数据数字用 --fh-text-primary(#E8EAF0) 或语义色
 *          （正向绿/负向红/中性净白）；乾坤金 ONLY 用于品牌 Logo、
 *          主按钮、选中态竖条、图表第一数据系列。禁止金作数据数字。
 *
 * 矛盾2：金算不算「图表数据色」？
 *   → 裁决：金可作「分类数据系列色」（chart-1 第一条线），但
 *          绝不作「正负语义色」。正向用绿、负向用红。
 *          红线12 修正为：品牌金不得用于正负语义编码。
 * ============================================================= */

/* =============================================================
 * 组件层（Phase B 沉淀，2026-07-14）
 * 业务代码优先引用这些类，避免再硬编码渐变 / 紫青品牌色。
 * 主按钮用金（--fh-gold，深字）；次级/链接用商务蓝；幽灵用中性描边。
 * ============================================================= */
.fh-btn {
  display: inline-flex; align-items: center; justify-content: center;
  gap: 6px; border: none; border-radius: var(--fh-radius);
  padding: 8px 16px; font-size: 13px; font-weight: 600; line-height: 1.2;
  cursor: pointer; font-family: var(--fh-font);
  transition: opacity .2s, background .2s;
}
.fh-btn:hover { opacity: .9; }
.fh-btn--gold { background: var(--fh-gold); color: #0F1A3C; }
.fh-btn--blue { background: var(--fh-blue); color: #fff; }
.fh-btn--ghost {
  background: rgba(255,255,255,0.06); color: var(--fh-text-primary);
  border: 1px solid var(--fh-border);
}
.fh-btn--sm { padding: 5px 12px; font-size: 12px; }
.fh-btn--lg { padding: 10px 22px; font-size: 14px; }

/* 胶囊徽章 */
.fh-badge {
  display: inline-block; padding: 2px 10px; border-radius: 12px;
  font-size: 12px; font-weight: 600;
}
.fh-badge--gold { background: rgba(200,162,78,0.12); color: var(--fh-gold); }
.fh-badge--blue { background: rgba(74,144,217,0.12); color: var(--fh-blue); }

/* 进度条 / 数据条 */
.fh-progress {
  height: 8px; border-radius: 4px; background: var(--fh-bg-hover);
  overflow: hidden;
}
.fh-progress > i {
  display: block; height: 100%; background: var(--fh-gold); border-radius: 4px;
}
