/* backend/app/web/assets/css/tokens.css
   ============================================================
   方向 A「基质与生长灯」设计 token(唯一允许出现颜色字面量的文件)。
   依据:docs 侧 ui_visual.md §5 token 草案 + §4 现有体系映射表。
   四页只经 var(...) 消费本文件;页面与 JS 内不再出现任何颜色字面量
   (hex 与 rgba 均已清出;JS/Canvas 经 AGRI.tok / AGRI.rgba 读 token)。
   兼容策略:本文件末尾「P0 兼容别名段」把旧变量(--bg/--panel/--brand/...)
   逐项映射到新色族,四页类名与结构零改动即可换肤(P1 再逐处退役别名)。
   ============================================================ */
:root {
  /* ---------- 基质与光(§5):暖泥炭黑替代海军蓝黑 ---------- */
  --c-substrate: #16120E;                 /* 页面底:暖黑,非纯黑、非海军蓝 */
  --c-panel: #211A14;                     /* 面板:暖褐黑 */
  --c-glass: #2A221B;                     /* hover/玻璃层:再亮一档 */
  --c-panel-deep: #1A140F;                /* 面板再深一档(§4 由色温推导,图表底/凹槽) */
  --c-line: #3A2F26;                      /* 层理线:暖灰,禁白发丝线 */
  --c-line-soft: rgba(242, 237, 230, .06);/* 结构细线(暗底上的暖白微线,旧 --border) */
  --c-line-hi: rgba(242, 237, 230, .16);  /* 强调结构线(旧 --border-hi) */
  --c-ink-hi: #F2EDE6; --c-ink-mid: #B7AA9C; --c-ink-low: #7E7268;   /* 文字三级:暖墨 */
  --c-off: #4A423B;                       /* 熄灭/未知暗态(旧 #3A4A62 的暖灰替身) */
  --c-scroll: rgba(242, 237, 230, .18);   /* 滚动条滑块 */
  --c-scroll-hi: rgba(242, 237, 230, .32);

  /* ---------- 语义四态(必齐) ---------- */
  --c-ok: #57B84A;                        /* 正常/在线/健康优:叶绿素绿(去青去荧光) */
  --c-ok-soft: rgba(87, 184, 74, .14);
  --c-warn: #E8A33D;                      /* 预警:钠灯琥珀 */
  --c-warn-soft: rgba(232, 163, 61, .14);
  --c-fault: #E2453C;                     /* 故障主体条/线:果实红 */
  --c-fault-ink: #FF9A93;                 /* 故障文本:亮红(暗底 4.5:1) */
  --c-fault-soft: rgba(226, 69, 60, .14);
  --c-offline: #8A7F73;                   /* 离线:干土灰(无信息,不占暖色预算) */
  --c-offline-soft: rgba(138, 127, 115, .14);
  --c-offline-line: #5A5148;              /* 离线虚线框(配 1px dashed) */

  /* ---------- 功能强调:各有唯一语义,不做装饰 ---------- */
  --c-agent: #CF63A6;                     /* 生长灯品红:仅 agent 行为(全站唯一发光色) */
  --c-agent-soft: rgba(207, 99, 166, .16);
  --c-agent-line: rgba(207, 99, 166, .35);/* agent 折叠/描边(不发光,仅归属) */
  --c-ref: #3E8FD0;                       /* 滴灌蓝:仅数据引用/可核对来源 */
  --c-ring: #F2EDE6;                      /* 焦点环(指挥舱=暖白;企业页在 theme-ent 里覆写为锌白) */

  /* ---------- 指标功能色(色相保持:与盒内屏/指挥舱同一映射) ---------- */
  --m-moisture: #38A8F5; --m-temp: #FF8A4C; --m-ec: #A98BFF; --m-ph: #D9E85A;
  --m-air_temp: #FF6699; --m-rh: #35C3DD; --m-level: #5AB8F0;

  /* ---------- 健康四档(与四态色同源:优=叶绿/良=蓝/中=琥珀/差=果实红) ---------- */
  --g-excellent: var(--c-ok);
  --g-good: #38A8F5;
  --g-fair: var(--c-warn);
  --g-poor: var(--c-fault);

  /* ---------- 器官/器械身份色(色相保持;controller 例外改叶绿) ---------- */
  --id-controller: #57B84A;               /* §4:原 #00C896 薄荷绿退役 → 叶绿 */
  --id-soil-sensor: #D2A86C;
  --id-air-sensor: #7FD4E8;
  --id-water-level: #5AB8F0;
  --id-camera: #B9A6F5;
  --id-display: #66D9C0;
  --id-pump: #5AB8F0;
  --id-fan: #57D9A4;
  --id-light: #FFC857;
  --id-buzzer: #FF9F87;

  /* ---------- LVGL 主控板屏复刻色(box.html CONTROLLER 画面保真用,非当前主题语义) ---------- */
  --lvgl-card: #1E2630;      /* 屏上卡底 */
  --lvgl-txt: #9AA5B1;       /* 屏上灰字 */
  --lvgl-txt-hi: #E8EEF4;    /* 屏上高亮字 */
  --lvgl-ok: #2ECC71;        /* 屏上绿(回读 ON/AUTO) */
  --lvgl-ok-ink: #0E2018;    /* 屏上绿底上的字 */
  --lvgl-bad: #E74C3C;       /* 屏上红 */
  --lvgl-manual: #E67E22;    /* 屏上 MANUAL 橙 */
  --lvgl-manual-ink: #1A1208;
  --lvgl-dim: #5D6D7E;       /* 屏上暂无上报弱字 */
  --lvgl-btn: #3A4A5C;       /* 屏上按钮底 */
  --lvgl-btn-txt: #C8D4E0;
  --lvgl-tab: #2A3644;       /* 屏上页签底 */
  --lvgl-na: #232E3C;        /* 屏上禁用底 */
  --lvgl-na-txt: #6C7A8C;
  --lvgl-lock: #2A1E22;      /* 屏上联锁禁点底 */

  /* ---------- RGB 三元组:供 rgba(var(--x-rgb), α) 与 Canvas/JS 颜色字符串组合 ---------- */
  --c-substrate-rgb: 22, 18, 14;       /* --c-substrate */
  --c-panel-rgb: 33, 26, 20;           /* --c-panel */
  --c-panel-deep-rgb: 26, 20, 15;      /* --c-panel-deep */
  --c-glass-rgb: 42, 34, 27;           /* --c-glass */
  --c-ink-hi-rgb: 242, 237, 230;       /* --c-ink-hi(暖白:线/控件微底) */
  --c-ink-low-rgb: 126, 114, 104;      /* --c-ink-low */
  --c-ok-rgb: 87, 184, 74;             /* --c-ok */
  --c-warn-rgb: 232, 163, 61;          /* --c-warn */
  --c-fault-rgb: 226, 69, 60;          /* --c-fault */
  --c-offline-rgb: 138, 127, 115;      /* --c-offline */
  --c-agent-rgb: 207, 99, 166;         /* --c-agent */
  --c-scrim-rgb: 12, 10, 8;            /* 暗底遮罩/浮层底(暖黑) */
  --c-shadow-rgb: 0, 0, 0;             /* 投影(保持纯黑,不与底色混) */
  --id-camera-rgb: 185, 166, 245;      /* --id-camera */
  --lvgl-ok-rgb: 46, 204, 113;         /* --lvgl-ok */

  /* ---------- 氛围底图(过渡期:蓝调底图待 P3 压暗/重出暖调) ---------- */
  --bg-image: url('/static/dashboard-v9-1-suit-fill-1920x1080.png');
  /* 登录页专属底图(2026-09-17,image2 生图+webp q85≈117KB):深炭温室夜景,
     中央与四周大面积暗部便于叠登录卡片;仅 login.html 经 body::before 消费 */
  --bg-image-login: url('/static/assets/img/login-bg.webp');

  /* ---------- 当前指标功能色(dashboard 动态:JS 经 body 覆盖这三项) ---------- */
  --metric-color: var(--m-temp);
  --metric-soft: rgba(255, 138, 76, .14);
  --metric-glow: rgba(255, 138, 76, .35);

  /* ---------- 字体与数字 ---------- */
  --font-cn: system-ui, -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
  --font-num: "IBM Plex Mono", ui-monospace, SFMono-Regular, Consolas, monospace;
  --fs-unit: 11px; --fs-note: 12.5px; --fs-sm: 14px; --fs-body: 16px;
  --fs-lead: 20px; --fs-h3: 26px; --fs-h2: 34px; --fs-read: 44px; --fs-read-lg: 64px;
  --lh-tight: 1.25; --lh-body: 1.75;      /* 中文正文 1.75,行长 ≤34 字 */
  --track-num: .01em;

  /* ---------- 间距:4 的倍数,仅此八档 ---------- */
  --s-1: 4px; --s-2: 8px; --s-3: 12px; --s-4: 16px;
  --s-5: 24px; --s-6: 32px; --s-7: 48px; --s-8: 64px;

  /* ---------- 圆角分级,不搞全站同值 ---------- */
  --r-read: 2px; --r-bubble: 4px; --r-none: 0; --r-tray: 6px;

  /* ---------- 阴影:面板一档 + 浮层一档,都不是"软灰" ---------- */
  --sh-panel: 0 2px 10px rgba(0, 0, 0, .35);                  /* 面板兼容档(P0 别名用) */
  --sh-lift: 0 1px 0 var(--c-line), 0 8px 24px rgba(0, 0, 0, .45);   /* 唯一浮层:待确认槽 */
  --glow-agent: 0 0 14px rgba(207, 99, 166, .45);              /* 全站唯一辉光 */

  /* ---------- 动效 ---------- */
  --t-90: 90ms; --t-160: 160ms; --t-240: 240ms; --t-enter: 420ms;
  --ease: cubic-bezier(.2, .8, .2, 1);

  /* ============================================================
     P0 兼容别名段:旧变量 → 新色族(P1 逐处退役)。
     四页现有类名只消费这些旧名,本段即换肤开关;回滚只需还原本段。
     ============================================================ */
  --bg: var(--c-substrate);
  --panel: var(--c-panel);
  --panel-hover: var(--c-glass);
  --panel-deep: var(--c-panel-deep);
  --border: var(--c-line-soft);
  --border-hi: var(--c-line-hi);
  --text-hi: var(--c-ink-hi);
  --text-mid: var(--c-ink-mid);
  --text-low: var(--c-ink-low);
  --brand: var(--c-ok);                   /* 品牌色兼职退役:绿=正常/在线语义,品牌交字标 */
  --brand-soft: var(--c-ok-soft);
  --danger: var(--c-fault);
  --danger-text: var(--c-fault-ink);
  --danger-soft: var(--c-fault-soft);
  --warning: var(--c-warn);
  --warning-soft: var(--c-warn-soft);
  --offline: var(--c-offline);
  --offline-soft: var(--c-offline-soft);
  --gray: var(--c-offline);
  --radius: var(--r-tray);
  --shadow: var(--sh-panel);
}

@media (prefers-reduced-motion: reduce) {
  :root { --t-90: 0ms; --t-160: 0ms; --t-240: 0ms; --t-enter: 420ms; --glow-agent: none; }
}

/* ============================================================
   theme-ent：企业页深色 shadcn（设计 §4.2），仅 login/manage/my 三页挂 html.theme-ent。
   作用域内覆写同一批消费名——别名层（--panel/--border/--text-*）+ RGB 三元组
   （--c-*-rgb：base.css 的 ag-* 组件消费的是这一层，rgba(var(--c-ink-hi-rgb),.06) 之类，
   不覆写会出现"白字白底"）+ ink 文字色。颜色字面量仍只允许在本文件出现。
   与指挥舱的"同暗不同质"：企业=锌黑中性+细线卡片；四态语义色原值保留（深底天然适配）。
   ============================================================ */
html.theme-ent {
  /* 底/面/线：锌黑中性，比泥炭冷 */
  --c-substrate: #0A0A0B;
  --c-panel: #131316;
  --c-glass: #1C1C1F;
  --c-panel-deep: #101013;
  --c-line: rgba(255, 255, 255, .10);
  --c-line-soft: rgba(255, 255, 255, .08);
  --c-line-hi: rgba(255, 255, 255, .16);
  /* 文字三级：中性锌白/锌灰 */
  --c-ink-hi: #FAFAFA;
  --c-ink-mid: #A1A1AA;
  --c-ink-low: #71717A;
  --c-off: #3F3F46;
  --c-ring: #D4D4D8;
  /* RGB 三元组同步（base.css 组件的 rgba(var(--c-*-rgb),α) 全部走这里） */
  --c-substrate-rgb: 10, 10, 11;
  --c-panel-rgb: 19, 19, 22;
  --c-glass-rgb: 28, 28, 31;
  --c-panel-deep-rgb: 16, 16, 19;
  --c-ink-hi-rgb: 250, 250, 250;
  --c-ink-low-rgb: 113, 113, 122;
  /* 语义四态与品牌：叶绿/琥珀/果实红/干土灰保持色相（家族信号），只按深底调 ink */
  --brand: #57B84A;
  --brand-soft: rgba(87, 184, 74, .14);
  --danger: #E2453C;
  --danger-text: #FF9A93;
  --danger-soft: rgba(226, 69, 60, .14);
  --warning: #E8A33D;
  --warning-soft: rgba(232, 163, 61, .14);
  --offline: #8A7F73;
  --offline-soft: rgba(138, 127, 115, .14);
  /* 别名层（base.css 组件消费名） */
  --bg: var(--c-substrate);
  --panel: var(--c-panel);
  --panel-hover: var(--c-glass);
  --panel-deep: var(--c-panel-deep);
  --border: var(--c-line-soft);
  --border-hi: var(--c-line-hi);
  --text-hi: var(--c-ink-hi);
  --text-mid: var(--c-ink-mid);
  --text-low: var(--c-ink-low);
  /* copilot 会话页背景纱罩（第二波；P2-5 收编 .88/.94 魔法数——页面只引用变量，
     透明度随主题 substrate 走，不在页内写数） */
  --copilot-bg-veil-top: rgba(var(--c-substrate-rgb), .88);
  --copilot-bg-veil-bottom: rgba(var(--c-substrate-rgb), .94);
  /* shadcn 圆角与浮层阴影（尺寸/阴影，非颜色表；颜色经 var 引用） */
  --radius: 8px;
  --sh-lift: 0 1px 0 rgba(255, 255, 255, .06), 0 12px 32px rgba(0, 0, 0, .55);
  --shadow: 0 1px 2px rgba(0, 0, 0, .4);
}
