/*
 * 三套界面风格,全站只认这一份变量。
 *   pixel   像素(默认):夜间研究所配色,2px 方角描边、硬阴影、等宽粗字的标题
 *   minimal 简约深色:中性石墨,1px 细线、圆角、无阴影,标题用正文字体
 *   paper   纸白:简约的浅色版
 * <html data-theme="…"> 由 lib/theme.ts 设置(index.html 里有一段启动脚本,首帧前就设好,不闪)。
 * 组件只用这里的变量和 index.css 映射出来的 Tailwind 名字(bg-card、text-muted-foreground、rounded-lg…),
 * 不写死颜色。新风格 = 在这里加一个 [data-theme] 块。
 */

/* ---------- 像素(默认) ---------- */
:root,
[data-theme='pixel'] {
  color-scheme: dark;
  /* 面 */
  --background: #120d0a;
  --card: #1b1410;
  --surface-2: #241a14;
  --popover: #241a14;
  --sidebar: #0d0907;
  /* 字 */
  --foreground: #f3e9d8;
  --card-foreground: var(--foreground);
  --popover-foreground: var(--foreground);
  --muted-foreground: #a8987f;
  --faint: #7a6b56;
  /* 线 */
  --border: #3b2b1f;
  --line: #3b2b1f;
  --line-strong: #5a4330;
  /* 可点的东西(选项、输入框、小胶囊)的描边,要比结构线显眼一点 */
  --line-ctl: #4a3626;
  --input: #3b2b1f;
  /* 强调 */
  --primary: #9be15d;
  --primary-foreground: #120d0a;
  --brand: #ffb454;
  --brand-foreground: #120d0a;
  --ring: #ffb454;
  --secondary: #2a1f17;
  --secondary-foreground: var(--foreground);
  --muted: #241a14;
  --accent: #2c2018;
  --accent-foreground: var(--foreground);
  --destructive: #ff6b6b;
  /* 语义 */
  --up: #9be15d;
  --down: #ff6b6b;
  --warn: #ffd166;
  --live: #ff4d4d;
  --info: #5ad1e6;
  /* 图表 */
  --chart-1: #ffb454;
  --chart-2: #5ad1e6;
  --chart-3: #c9a2ff;
  --chart-4: #9be15d;
  --chart-5: #a8987f;
  --chart-main: #9be15d;
  --chart-grid: rgba(243, 233, 216, 0.06);
  --chart-text: #a8987f;
  --chart-ema-fast: #5ad1e6;
  --chart-ema-slow: #ffb454;
  --chart-vwap: #c9a2ff;
  /* 信号来源(Radar 家族色) */
  --f-trader: #ffb454;
  --f-whale: #5ad1e6;
  --f-news: #c9a2ff;
  --f-market: #9be15d;
  --f-employee: #ff8fb1;
  --f-analyst: #b4bfcf;
  --f-other: #a8987f;
  /* 九个 agent 的颜色(楼层像素场景另有自己的一份) */
  --role-helm: #ff7a5c;
  --role-radar: #9be15d;
  --role-thread: #5ec8ff;
  --role-lab: #c98bff;
  --role-book: #f4a261;
  --role-sentinel: #ff5d8f;
  --role-exec: #4fd1c5;
  --role-market: #7fd1ff;
  --role-audit: #ffd166;
  /* 侧栏 */
  --sidebar-foreground: #d9ccb6;
  --sidebar-primary: var(--brand);
  --sidebar-primary-foreground: var(--brand-foreground);
  --sidebar-accent: #241a14;
  --sidebar-accent-foreground: var(--foreground);
  --sidebar-border: #2a1f17;
  --sidebar-ring: var(--ring);

  /* 形状 */
  --bw: 2px;
  --r-panel: 0px;
  --r-ctl: 0px;
  --r-chip: 0px;
  --r-pill: 0px;
  --r-dot: 0px;
  --radius: 0px;
  --shadow-panel: 3px 3px 0 rgba(0, 0, 0, 0.45);
  --shadow-ctl: 2px 2px 0 rgba(0, 0, 0, 0.35);
  --shadow-pop: 4px 4px 0 rgba(0, 0, 0, 0.55);
  --divider: dashed;
  /* 分段开关选中、输入框底 */
  --seg-on-bg: var(--brand);
  --seg-on-fg: var(--brand-foreground);
  --seg-on-shadow: none;
  --field-bg: var(--background);

  /* 字 */
  --font-ui: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Hiragino Sans GB', 'Noto Sans SC', 'Segoe UI', sans-serif;
  --font-mono: 'SF Mono', 'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace;
  --font-display: var(--font-mono);
  --fw-display: 800;
  --track-display: 0.12em;
  --case-display: uppercase;
  --display-color: var(--primary);
  --font-kicker: var(--font-mono);
  --fw-kicker: 800;
  --track-kicker: 0.08em;
  --case-kicker: uppercase;
  --kicker-color: var(--brand);
  --fw-strong: 700;
  --font-btn: var(--font-mono);
  --fw-btn: 700;
  /* 副信息(数字下面那行、面板头的数量 / 时间):像素用等宽,简约用正文字体 + 等宽数字,中文才好看 */
  --font-meta: var(--font-mono);
  /* 名字(币、卡、交易员)和大数字:像素用等宽粗体,简约用正文字体 */
  --font-name: var(--font-mono);
  --font-figure: var(--font-mono);
  --fw-heavy: 800;

  /* 字号(统一八档,别再写 text-[11.5px] 这种) */
  --fs-micro: 10px;
  --fs-caption: 11px;
  --fs-small: 12px;
  --fs-body: 13px;
  --fs-title: 14px;
  --fs-h3: 16px;
  --fs-h2: 20px;
  --fs-h1: 24px;

  /* 疏密 */
  --pad-x: 12px;
  --pad-y: 10px;
  --hd-h: 34px;
  --gap: 10px;
  --ctl-h: 28px;
  --sidebar-w: 11.25rem;
  --page-pad: 12px;

  /* 动效:像素用跳帧 */
  --ease: steps(4, end);
  --blink-ease: steps(2, end);
  --dur: 0.35s;
}

/* ---------- 简约深色 ---------- */
[data-theme='minimal'] {
  color-scheme: dark;
  --background: #0b0b0d;
  --card: #111114;
  --surface-2: #16161a;
  --popover: #17171b;
  --sidebar: #0e0e11;
  --foreground: #ececef;
  --muted-foreground: #9b9ba5;
  --faint: #6a6a74;
  --border: rgba(255, 255, 255, 0.085);
  --line: rgba(255, 255, 255, 0.085);
  --line-strong: rgba(255, 255, 255, 0.16);
  --line-ctl: rgba(255, 255, 255, 0.13);
  --input: rgba(255, 255, 255, 0.13);
  --primary: #ededf0;
  --primary-foreground: #0b0b0d;
  --brand: #8e9bff;
  --brand-foreground: #0b0b0d;
  --ring: #8e9bff;
  --secondary: #1b1b20;
  --secondary-foreground: var(--foreground);
  --muted: rgba(255, 255, 255, 0.045);
  --accent: rgba(255, 255, 255, 0.06);
  --accent-foreground: var(--foreground);
  --destructive: #f2555a;
  --up: #3ecf8e;
  --down: #f2555a;
  --warn: #e9b949;
  --live: #ff5a5f;
  --info: #5ec3e8;
  --chart-1: #8e9bff;
  --chart-2: #4fd1c5;
  --chart-3: #e9b949;
  --chart-4: #f78fb3;
  --chart-5: #8b8b95;
  --chart-main: #8e9bff;
  --chart-grid: rgba(255, 255, 255, 0.05);
  --chart-text: #8b8b95;
  --chart-ema-fast: #8e9bff;
  --chart-ema-slow: #e9b949;
  --chart-vwap: #f78fb3;
  --f-trader: #e9b949;
  --f-whale: #5ec3e8;
  --f-news: #b69cff;
  --f-market: #3ecf8e;
  --f-employee: #f78fb3;
  --f-analyst: #a9b1c2;
  --f-other: #8b8b95;
  --role-helm: #f08a6c;
  --role-radar: #6fd08c;
  --role-thread: #6cb8f0;
  --role-lab: #b69cff;
  --role-book: #e9a86a;
  --role-sentinel: #f07aa0;
  --role-exec: #4fd1c5;
  --role-market: #7cc6f0;
  --role-audit: #e9c45a;
  --sidebar-foreground: #c9c9d1;
  --sidebar-primary: var(--foreground);
  --sidebar-primary-foreground: var(--background);
  --sidebar-accent: rgba(255, 255, 255, 0.06);
  --sidebar-accent-foreground: var(--foreground);
  --sidebar-border: rgba(255, 255, 255, 0.06);
  --sidebar-ring: var(--ring);

  --bw: 1px;
  --r-panel: 14px;
  --r-ctl: 8px;
  --r-chip: 6px;
  --r-pill: 999px;
  --r-dot: 999px;
  --radius: 10px;
  --shadow-panel: none;
  --shadow-ctl: none;
  --shadow-pop: 0 24px 48px -12px rgba(0, 0, 0, 0.6), 0 0 0 1px rgba(255, 255, 255, 0.07);
  --divider: solid;
  --seg-on-bg: #24242a;
  --seg-on-fg: var(--foreground);
  --seg-on-shadow: 0 1px 2px rgba(0, 0, 0, 0.45), inset 0 0 0 1px rgba(255, 255, 255, 0.06);
  --field-bg: rgba(255, 255, 255, 0.025);

  --font-display: var(--font-ui);
  --fw-display: 600;
  --track-display: -0.01em;
  --case-display: none;
  --display-color: var(--foreground);
  --font-kicker: var(--font-ui);
  --fw-kicker: 500;
  --track-kicker: 0;
  --case-kicker: none;
  --kicker-color: var(--muted-foreground);
  --fw-strong: 600;
  --font-btn: var(--font-ui);
  --fw-btn: 500;
  --font-meta: var(--font-ui);
  --font-name: var(--font-ui);
  --font-figure: var(--font-ui);
  --fw-heavy: 600;

  --fs-micro: 10.5px;
  --fs-caption: 11.5px;
  --fs-small: 12.5px;
  --fs-body: 13.5px;
  --fs-title: 14.5px;
  --fs-h3: 16px;
  --fs-h2: 20px;
  --fs-h1: 26px;

  --pad-x: 16px;
  --pad-y: 12px;
  --hd-h: 40px;
  --gap: 12px;
  --ctl-h: 30px;
  --sidebar-w: 13rem;
  --page-pad: 18px;

  --ease: cubic-bezier(0.16, 1, 0.3, 1);
  --blink-ease: ease-in-out;
  --dur: 0.22s;
}

/* ---------- 纸白(简约浅色) ---------- */
[data-theme='paper'] {
  color-scheme: light;
  --background: #f5f5f6;
  --card: #ffffff;
  --surface-2: #fafafb;
  --popover: #ffffff;
  --sidebar: #efeff1;
  --foreground: #131316;
  --muted-foreground: #5e5e68;
  --faint: #9898a2;
  --border: #e5e5e9;
  --line: #e5e5e9;
  --line-strong: #d3d3d9;
  --line-ctl: #d9d9df;
  --input: #dcdce1;
  --primary: #131316;
  --primary-foreground: #ffffff;
  --brand: #4a5bdc;
  --brand-foreground: #ffffff;
  --ring: #4a5bdc;
  --secondary: #f0f0f2;
  --secondary-foreground: var(--foreground);
  --muted: #f1f1f3;
  --accent: #ececef;
  --accent-foreground: var(--foreground);
  --destructive: #dc3b40;
  --up: #0f9a66;
  --down: #dc3b40;
  --warn: #b97c10;
  --live: #dc3b40;
  --info: #1f86b8;
  --chart-1: #4a5bdc;
  --chart-2: #0e9c8f;
  --chart-3: #c08415;
  --chart-4: #d4487e;
  --chart-5: #77777f;
  --chart-main: #4a5bdc;
  --chart-grid: rgba(19, 19, 22, 0.06);
  --chart-text: #6b6b75;
  --chart-ema-fast: #4a5bdc;
  --chart-ema-slow: #c08415;
  --chart-vwap: #d4487e;
  --f-trader: #c08415;
  --f-whale: #1f86b8;
  --f-news: #7b5cd6;
  --f-market: #0f9a66;
  --f-employee: #d4487e;
  --f-analyst: #5d6b82;
  --f-other: #77777f;
  --role-helm: #d9583a;
  --role-radar: #2f9a4f;
  --role-thread: #2a7fc4;
  --role-lab: #7b5cd6;
  --role-book: #c4741f;
  --role-sentinel: #d43f70;
  --role-exec: #12968a;
  --role-market: #2a8fc4;
  --role-audit: #b08a12;
  --sidebar-foreground: #3b3b43;
  --sidebar-primary: var(--foreground);
  --sidebar-primary-foreground: var(--background);
  --sidebar-accent: #e4e4e8;
  --sidebar-accent-foreground: var(--foreground);
  --sidebar-border: #e2e2e6;
  --sidebar-ring: var(--ring);

  --bw: 1px;
  --r-panel: 14px;
  --r-ctl: 8px;
  --r-chip: 6px;
  --r-pill: 999px;
  --r-dot: 999px;
  --radius: 10px;
  --shadow-panel: 0 1px 2px rgba(16, 24, 40, 0.04), 0 1px 3px rgba(16, 24, 40, 0.04);
  --shadow-ctl: 0 1px 2px rgba(16, 24, 40, 0.05);
  --shadow-pop: 0 18px 40px -12px rgba(16, 24, 40, 0.22), 0 0 0 1px rgba(16, 24, 40, 0.06);
  --divider: solid;
  --seg-on-bg: #ffffff;
  --seg-on-fg: var(--foreground);
  --seg-on-shadow: 0 1px 2px rgba(16, 24, 40, 0.08), 0 0 0 1px rgba(16, 24, 40, 0.06);
  --field-bg: #ffffff;

  --font-display: var(--font-ui);
  --fw-display: 600;
  --track-display: -0.01em;
  --case-display: none;
  --display-color: var(--foreground);
  --font-kicker: var(--font-ui);
  --fw-kicker: 500;
  --track-kicker: 0;
  --case-kicker: none;
  --kicker-color: var(--muted-foreground);
  --fw-strong: 600;
  --font-btn: var(--font-ui);
  --fw-btn: 500;
  --font-meta: var(--font-ui);
  --font-name: var(--font-ui);
  --font-figure: var(--font-ui);
  --fw-heavy: 600;

  --fs-micro: 10.5px;
  --fs-caption: 11.5px;
  --fs-small: 12.5px;
  --fs-body: 13.5px;
  --fs-title: 14.5px;
  --fs-h3: 16px;
  --fs-h2: 20px;
  --fs-h1: 26px;

  --pad-x: 16px;
  --pad-y: 12px;
  --hd-h: 40px;
  --gap: 12px;
  --ctl-h: 30px;
  --sidebar-w: 13rem;
  --page-pad: 18px;

  --ease: cubic-bezier(0.16, 1, 0.3, 1);
  --blink-ease: ease-in-out;
  --dur: 0.22s;
}
