/* situation3d — 视觉编码主题（I09）
 *
 * 为什么单独一个文件
 * ------------------
 * 本项目的视觉编码原本**分散在两处且互相冲突**（实测）：
 *   - `web/src/app.js:432 colorFor()` 里硬编码 `'#d0342c'` / `'#1f5fbf'`（画到 Cesium 画布上）；
 *   - `web/src/style.css:11 :root` 里另有 `--red: #c8352c` / `--blue: #1f5fbf`（用于 DOM）。
 * → **同一个"红方"有两个不同的值**（#d0342c vs #c8352c），改一处不会影响另一处。
 * 本文件把视觉编码参数收敛成**唯一来源**，并做成主题可切换。
 *
 * 主题可切换（Q3 未关闭，故**不锁定**全局底色）
 * ---------------------------------------------
 * 31004 4.2.2.2 倾向深色系，而本项目现状是统一白底；Q3 尚未裁定。
 * 故：`:root` 保持浅色（**默认行为不变**，避免在未裁定前擅自改观感），
 * 深色作为 `[data-theme="dark"]` 的**可选声明**存在，可随时整体回退。
 *
 * 用法
 * ----
 *   document.documentElement.setAttribute('data-theme', 'dark');   // 切深色
 *   document.documentElement.removeAttribute('data-theme');        // 回浅色
 * JS 侧读值请走 `web/src/theme.js`（`Theme.faction()` 等），不要直接读 CSS ——
 * Cesium 画布读取需要一次解析，集中在那里做。
 */

:root {
  /* ── 阵营主色（31004 8.2 阵营主色填充）───────────────────────────── */
  /* 浅色主题下取原 JS 画布用值，保证**默认观感不变** */
  --faction-red: #E74C3C;
  --faction-blue: #2E86C1;
  --faction-green: #2f7d4f;   /* 第三方/中立（画布上用于 GREEN 视角） */
  --faction-neutral: #95A5A6; /* 未知/未归属 */
  --faction-contested: #d8a12a; /* 争夺中（原 OCCUPATION_STATUS_COLORS.contested） */
  /* 未知：31004 表3 要求「未知黄 #F1C40F」—— 此前**缺失**，本轮补上。
     注意与 --faction-contested（争夺中）区分：二者语义不同，不可复用同一色。 */
  --faction-unknown: #F1C40F;

  /* ── 强度分级（31004 8.4.3 强度内环）────────────────────────────── */
  /* 5 档：0=未分级，1 和缓 → 4 高危。原 `app.js:438 levelColor()` 的同序取值。 */
  --strength-0: #7d8a99;
  --strength-1: #4a9c6d;
  --strength-2: #d8a12a;
  --strength-3: #d9772a;
  --strength-4: #c8352c;

  /* ── 状态边框（31004 8.4.2 状态边框）────────────────────────────── */
  --status-border-width: 2px;
  --status-border-normal: #6b7688;
  --status-border-alert: #c8352c;
  --status-border-selected: #1668dc;

  /* ── 时效外圈脉冲（31004 8.4.4 时效外圈）────────────────────────── */
  /* 步骤 4 要求：实时目标 1.5s；速度 >50km/h 改为 0.8s。 */
  --pulse-period-default: 1.5s;
  --pulse-period-fast: 0.8s;
  --pulse-speed-threshold-kmh: 50;
  --pulse-enabled: 1;              /* 0 = 关闭脉冲（性能不足时按 renderGovernor 降级） */

  /* ── 交互反馈（步骤 5）──────────────────────────────────────────── */
  --hover-offset: 8px;
  --hover-transition: 200ms;

  /* ── 强度内环几何（步骤 3）──────────────────────────────────────── */
  --ring-strength-base-radius: 6px;   /* 强度 1 的半径 */
  --ring-strength-step: 2px;          /* 每升一级增加的半径 */
  --ring-max-rings: 4;                /* 最多画几环（= 最高强度） */
}

/* 深色主题：**可选**，Q3 裁定前不启用。只改底色与前景，**不改编码语义** */
[data-theme="dark"] {
  --bg: #10161f;
  --panel: #182130;
  --panel-alt: #141c28;
  --border: #2a3547;
  --text: #e6ecf5;
  --text-dim: #93a1b5;
  --topbar: #0b1119;
  --topbar-text: #dbe4f0;
  /* 深色底上提高明度，保持与浅色**同一语义**（红方仍是红方） */
  --faction-red: #ef6d5e;
  --faction-blue: #4f9fd8;
  --faction-green: #47a86c;
  --faction-neutral: #a7b6c7;
  --faction-contested: #e0b24a;
  --strength-0: #93a1b5;
  --strength-1: #5cb681;
  --strength-2: #e0b24a;
  --strength-3: #e08a4a;
  --strength-4: #e2564c;
  --status-border-normal: #93a1b5;
}
