/* ============================================================
   Candy Theme — tokens.css  (设计令牌单一控制点)
   ------------------------------------------------------------
   合并来源（P0 令牌统一，2026-07-21）：
     - theme.css              → :root{--w}
     - pages/design-system.css → :root 设计令牌 + [data-theme="dark"]
     - variables.css          → 附加品牌色 / 外来词桥接别名 / --hx-* 裸色字面量
   ------------------------------------------------------------
   加载位置：header.php 第 1 位。
   本文件定义全部"非后台生成"令牌（扩展色 / 语义色 / 间距 / 圆角 /
   阴影 / 字号 / 层级 / 桥接别名 / --hx-* 字面量）。
   后台生成的外观令牌（--gold/--ink/--bg/--line/--radius/--shadow/
   --c-*/--color-*/--serif/--sans/--font-*/--maxw 等）由 theme-vars.css
   在本文件【之后】加载并覆盖（"后台优先"原则）。
   若 theme-vars.css 缺失，本站回退到下方桥接/字面量，不会静默失效。
   守禁六：本文件不写死任何页面级颜色/尺寸，仅承载令牌定义。
   ============================================================ */

:root {
  /* ---- 容器宽度系统（原 theme.css :root） ---- */
  --w: var(--maxw, 1200px);

  /* =========================================================
     设计令牌（原 pages/design-system.css :root）
     ========================================================= */
  --accent: var(--gold, var(--hx-a9854a)); /* 暖金主色别名：显式桥接 --gold（文档 CANDY-ARCHITECTURE §3.1 品牌色唯一来源）；theme-vars.css 加载后仍以 primary_color 派生值覆盖，运行时零变化 */
  --accent-light: var(--hx-4d4d4d);    /* 黑系浅 */
  --accent-dark: var(--hx-000000);     /* 黑系深 */
  --accent-bg: var(--hx-f5f0e8);       /* 暖纸色 */

  /* Primary Colors */
  --primary: var(--accent);
  --primary-light: var(--accent-light);
  --primary-dark: var(--accent-dark);
  --primary-bg: var(--accent-bg);

  /* Secondary Colors（语义绿） */
  --secondary: var(--hx-10b981);
  --secondary-light: var(--hx-34d399);
  --secondary-dark: var(--hx-059669);

  /* Neutral Colors — 对齐 candy 暖墨/暖灰体系 */
  --gray-50:  var(--bg-soft);
  --gray-100: var(--bg-soft);
  --gray-200: var(--line-3);
  --gray-300: var(--line-2);
  --gray-400: var(--faint);
  --gray-500: var(--faint);
  --gray-600: var(--muted);
  --gray-700: var(--ink-soft);
  --gray-800: var(--ink);
  --gray-900: var(--ink);

  /* Semantic Colors */
  --success: var(--hx-10b981);
  --warning: var(--hx-f59e0b);
  --danger:  var(--hx-ef4444);
  --info:    var(--hx-3b82f6);

  /* VIP Colors */
  --vip-bronze:  var(--hx-cd7f32);
  --vip-silver:  var(--hx-c0c0c0);
  --vip-gold:    var(--hx-ffd700);
  --vip-diamond: var(--hx-b9f2ff);

  /* Spacing */
  --spacing-xs: 4px;
  --spacing-sm: 8px;
  --spacing-md: 16px;
  --spacing-lg: 24px;
  --spacing-xl: 32px;
  --spacing-2xl: 48px;

  /* Border Radius */
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 14px;
  --radius-xl: 16px;
  --radius-full: 9999px;

  /* Shadows */
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.05);
  --shadow-md: 0 4px 6px rgba(0,0,0,0.1);
  --shadow-lg: 0 10px 15px rgba(0,0,0,0.1);
  --shadow-xl: 0 20px 25px rgba(0,0,0,0.15);

  /* Typography */
  --font-sans: 'Microsoft YaHei', 'PingFang SC', 'Heiti SC', 'SimHei', 'WenQuanYi Micro Hei', sans-serif;
  --font-mono: 'Fira Code', 'Consolas', monospace;

  /* Font Size Scale（基准由 theme-vars.css 的 --font-size-base 控制，默认15px） */
  --font-size-xs: calc(var(--font-size-base, 15px) - 3px);
  --font-size-sm: calc(var(--font-size-base, 15px) - 1px);
  --font-size-md: var(--font-size-base, 15px);
  --font-size-lg: calc(var(--font-size-base, 15px) + 2px);
  --font-size-xl: calc(var(--font-size-base, 15px) + 4px);
  --font-size-xxl: calc(var(--font-size-base, 15px) + 8px);

  /* Transitions */
  --transition-fast: 150ms ease;
  --transition-normal: 250ms ease;
  --transition-slow: 350ms ease;

  /* Z-index layers */
  --z-dropdown: 100;
  --z-sticky: 200;
  --z-sidebar: 300;
  --z-panel: 400;
  --z-modal: 500;
  --z-toast: 600;
}

/* 暗色模式（原 pages/design-system.css [data-theme="dark"]） */
[data-theme="dark"] {
  --primary: var(--accent-light);
  --primary-light: var(--hx-d4a574);
  --primary-dark: var(--accent);
  --primary-bg: var(--hx-2a1a0e);

  --gray-50: var(--hx-1a1a1a);
  --gray-100: var(--hx-2d2d2d);
  --gray-200: var(--hx-404040);
  --gray-300: var(--hx-555555);
  --gray-400: var(--hx-6b6b6b);
  --gray-500: var(--hx-999999);
  --gray-600: var(--hx-bfbfbf);
  --gray-700: var(--hx-d9d9d9);
  --gray-800: var(--hx-f0f0f0);
  --gray-900: var(--hx-fafafa);
}

:root {
  /* =========================================================
     附加品牌色（theme_generate_css 未覆盖）
     ========================================================= */
  --ink-soft:     #33332f;
  --gold-deep:    #92400e;
  --gold-tint:    #fde68a;
  --gold-bg:      #fffbeb;
  --wechat-green: #07c160;

  /* 附加边框色 */
  --line-2:       #c4b6a6;
  --line-3:       #d4c8ba;

  /* 语义色（覆盖上方 design-system 同名词，保留站内既有生效值） */
  --success:      #16a34a;
  --warning:      #d97706;
  --danger:       #dc2626;
  --info:         #2563eb;

  /* 强调色上的反白文字（accent 页脚/按钮，守禁六不写死白） */
  --on-accent:       rgba(255,255,255,.92);
  --on-accent-soft:  rgba(255,255,255,.72);
  --on-accent-line:  rgba(255,255,255,.25);

  /* RGB 变量（用于 rgba） */
  --ink-rgb:      28,27,25;
  --gold-rgb:     169,133,74;

  /* 过渡 */
  --transition:   .25s cubic-bezier(.2,.8,.2,1);
  --transition-fast: .15s;
  --transition-slow: .4s;

  /* =========================================================
     外来 token 桥接别名（原 variables.css block B）
     内容页 CSS 引用 Bootstrap/Tailwind 风词汇，桥接为 candy 语义。
     ========================================================= */
  --color-text-muted:    var(--muted);
  --c-text-1:            var(--ink);
  --c-text-2:            var(--muted);
  --ink-700:             var(--ink-soft);
  --line-height:         1.7;

  /* 表面 / 卡片 */
  --surface:             var(--bg);
  --surface-2:           var(--bg-soft);
  --card-bg:             var(--bg-soft);
  --color-bg-tertiary:   var(--bg-soft);

  /* 边框 */
  --border-color:        var(--line);
  --color-border-light:  var(--line-3);

  /* 文字（补缺） */
  --color-text:          var(--ink);
  --gray-200:            var(--bg-soft);
  --gray-400:            var(--faint);
  --accent-bg:           var(--gold-soft);

  /* 强调（暖金体系） */
  --cc:                  var(--gold);
  --bh-color:            var(--gold);
  --dot-color:           var(--gold);
  --accent-soft:         color-mix(in srgb, var(--gold) 14%, transparent);
  --accent-weak:         color-mix(in srgb, var(--gold) 9%, transparent);
  --color-primary-light: color-mix(in srgb, var(--gold) 16%, var(--hx-ffffff));
  --c-primary-light:     color-mix(in srgb, var(--gold) 16%, var(--hx-ffffff));

  /* 尺寸 */
  --spacing-xxl:         44px;
  --button-radius:       var(--radius);

  /* =========================================================
     裸 hex 迁移 token（原 variables.css block C）
     守禁六：页面 CSS 不写死 hex，统一引用 --hx-* 字面量。
     ========================================================= */
  --hx-667eea: #667eea;
  --hx-764ba2: #764ba2;
  --hx-ffffff: #ffffff;
  --hx-f0f0f0: #f0f0f0;
  --hx-1a1a2e: #1a1a2e;
  --hx-888888: #888888;
  --hx-999999: #999999;
  --hx-666666: #666666;
  --hx-333333: #333333;
  --hx-f5f5f5: #f5f5f5;
  --hx-555555: #555555;
  --hx-e0e0e0: #e0e0e0;
  --hx-dddddd: #dddddd;
  --hx-f8f9ff: #f8f9ff;
  --hx-1a1a1a: #1a1a1a;
  --hx-ff2442: #ff2442;
  --hx-e5e0d6: #e5e0d6;
  --hx-222222: #222222;
  --hx-111111: #111111;
  --hx-faf8f5: #faf8f5;
  --hx-e53935: #e53935;
  --hx-ff9800: #ff9800;
  --hx-e0d8cc: #e0d8cc;
  --hx-f0ece6: #f0ece6;
  --hx-fafaf6: #fafaf6;
  --hx-aaaaaa: #aaaaaa;
  --hx-7a2c00: #7a2c00;
  --hx-e8e8e8: #e8e8e8;
  --hx-eeeeee: #eeeeee;
  --hx-fef9f5: #fef9f5;
  --hx-f0ddd0: #f0ddd0;
  --hx-f5f2ed: #f5f2ed;
  --hx-f5f0eb: #f5f0eb;
  --hx-e8ddd0: #e8ddd0;
  --hx-444444: #444444;
  --hx-fafafa: #fafafa;
  --hx-e8e0d4: #e8e0d4;
  --hx-c0b8a8: #c0b8a8;
  --hx-c45537: #c45537;
  --hx-cccccc: #cccccc;
  --hx-fff5f0: #fff5f0;
  --hx-a8482e: #a8482e;
  --hx-f0f0ea: #f0f0ea;
  --hx-e8e8e0: #e8e8e0;
  --hx-bbbbbb: #bbbbbb;
  --hx-1677ff: #1677ff;
  --hx-f0f7ff: #f0f7ff;
  --hx-f5a623: #f5a623;
  --hx-fef9f0: #fef9f0;
  --hx-f5f5f0: #f5f5f0;
  --hx-a8452e: #a8452e;
  --hx-4a90d9: #4a90d9;
  --hx-3a7bc0: #3a7bc0;
  --hx-6ec6ff: #6ec6ff;
  --hx-ffd666: #ffd666;
  --hx-a9854a: #a9854a;
  --hx-4d4d4d: #4d4d4d;
  --hx-000000: #000000;
  --hx-f5f0e8: #f5f0e8;
  --hx-10b981: #10b981;
  --hx-34d399: #34d399;
  --hx-059669: #059669;
  --hx-d9d9d9: #d9d9d9;
  --hx-bfbfbf: #bfbfbf;
  --hx-f59e0b: #f59e0b;
  --hx-ef4444: #ef4444;
  --hx-3b82f6: #3b82f6;
  --hx-cd7f32: #cd7f32;
  --hx-c0c0c0: #c0c0c0;
  --hx-ffd700: #ffd700;
  --hx-b9f2ff: #b9f2ff;
  --hx-d4a574: #d4a574;
  --hx-2a1a0e: #2a1a0e;
  --hx-2d2d2d: #2d2d2d;
  --hx-404040: #404040;
  --hx-6b6b6b: #6b6b6b;
  --hx-dc2626: #dc2626;
  --hx-d1fae5: #d1fae5;
  --hx-fef3c7: #fef3c7;
  --hx-fee2e2: #fee2e2;
  --hx-f3f4f6: #f3f4f6;
  --hx-ecfeff: #ecfeff;
  --hx-06b6d4: #06b6d4;
  --hx-c97638: #c97638;
  --hx-f8f8f8: #f8f8f8;
  --hx-e5e5e5: #e5e5e5;
  --hx-e8e2d8: #e8e2d8;
  --hx-f0ece4: #f0ece4;
  --hx-3d3428: #3d3428;
  --hx-7a7066: #7a7066;
  --hx-4a1a08: #4a1a08;
  --hx-6b2c10: #6b2c10;
  --hx-8b3d18: #8b3d18;
  --hx-9e4a22: #9e4a22;
  --hx-a85a30: #a85a30;
  --hx-b86a3a: #b86a3a;
  --hx-c4762e: #c4762e;
  --hx-fdfbf7: #fdfbf7;
  --hx-f8f4ec: #f8f4ec;
  --hx-efe9e0: #efe9e0;
  --hx-fef3e8: #fef3e8;
  --hx-fdfcf9: #fdfcf9;
  --hx-2e7d6b: #2e7d6b;
  --hx-f0f6f3: #f0f6f3;
  --hx-eef6f1: #eef6f1;
  --hx-eef3f8: #eef3f8;
  --hx-e0e9f2: #e0e9f2;
  --hx-c8b99a: #c8b99a;
  --hx-a02818: #a02818;
  --hx-f8f6f3: #f8f6f3;
  --hx-1b6b4a: #1b6b4a;
  --hx-f0f8f4: #f0f8f4;
  --hx-faf6ee: #faf6ee;
  --hx-e5dfd0: #e5dfd0;
  --hx-2c2418: #2c2418;
  --hx-a89b87: #a89b87;
  --hx-6b6254: #6b6254;
  --hx-f0ebe0: #f0ebe0;
  --hx-fff3cd: #fff3cd;
  --hx-856404: #856404;
  --hx-e53e3e: #e53e3e;
  --hx-e8dcc8: #e8dcc8;
  --hx-c9b896: #c9b896;
  --hx-6b5d4a: #6b5d4a;
  --hx-fefce8: #fefce8;
  --hx-e8e3c5: #e8e3c5;
  --hx-b8a88a: #b8a88a;
  --hx-3d2e1e: #3d2e1e;
  --hx-e8e0d8: #e8e0d8;
  --hx-1565c0: #1565c0;
  --hx-f39c12: #f39c12;
  --hx-f7ba2a: #f7ba2a;
  --hx-ff6b6b: #ff6b6b;
  --hx-ee5a24: #ee5a24;
  --hx-ff4d4f: #ff4d4f;
  --hx-fff1f0: #fff1f0;
  --hx-fafbfc: #fafbfc;
  --hx-1890ff: #1890ff;
  --hx-e6f7ff: #e6f7ff;
  --hx-fa8c16: #fa8c16;
  --hx-fff7e6: #fff7e6;
  --hx-3a2e22: #3a2e22;
  --hx-c9a87a: #c9a87a;
  --hx-f9f7f3: #f9f7f3;
  --hx-ebe5dc: #ebe5dc;
  --hx-f3ede4: #f3ede4;
  --hx-d8cfc0: #d8cfc0;
  --hx-5a4636: #5a4636;
  --hx-efe9e1: #efe9e1;
  --hx-fdf6ec: #fdf6ec;
  --hx-f0dcc8: #f0dcc8;
  --hx-777777: #777777;
  --hx-b8945e: #b8945e;
  --hx-f8f5f0: #f8f5f0;
  --hx-ddd5c8: #ddd5c8;
  --hx-f8f5ef: #f8f5ef;
  --hx-c4a882: #c4a882;
  --hx-e8ecf4: #e8ecf4;
  --hx-eef2ff: #eef2ff;
  --hx-913300: #913300;
  --hx-c4956a: #c4956a;
  --hx-eee5d9: #eee5d9;
  --hx-f0ebe4: #f0ebe4;
  --hx-fffcf7: #fffcf7;
  --hx-e8e0d0: #e8e0d0;
  --hx-fcfbfa: #fcfbfa;
  --hx-d8d4c8: #d8d4c8;
  --hx-f5f0ea: #f5f0ea;
  --hx-faf8f3: #faf8f3;
  --hx-c47a3d: #c47a3d;
  --hx-ffc069: #ffc069;
  --hx-ad6800: #ad6800;
  --hx-91d5ff: #91d5ff;
  --hx-096dd9: #096dd9;
  --hx-7a2900: #7a2900;
  --hx-7a2a00: #7a2a00;
  --hx-cc3333: #cc3333;
  --hx-cc9999: #cc9999;
  --hx-fff8f0: #fff8f0;
  --hx-f7f4ef: #f7f4ef;
  --hx-d9d2c8: #d9d2c8;
  --hx-7a2b00: #7a2b00;
  --hx-f0ece5: #f0ece5;
  --hx-fff7f0: #fff7f0;
  --hx-f0d9c0: #f0d9c0;
  --hx-ffe8d6: #ffe8d6;
  --hx-fffbf7: #fffbf7;
  --hx-52c41a: #52c41a;
  --hx-f6ffed: #f6ffed;

  /* navbar.css 裸 hex 迁移 token（2026-07-11） */
  --hx-639922: #639922;
  --hx-D4537E: #d4537e;
  --hx-A32D6F: #a32d6f;
  --hx-FFF9E6: #fff9e6;
  --hx-FEF3CD: #fef3cd;
  --hx-FDE8B0: #fde8b0;
  --hx-8A6D20: #8a6d20;
  --hx-FDD56B: #fdd56b;
  --hx-E6A23C: #e6a23c;
  --hx-C44900: #c44900;
  --hx-A33D00: #a33d00;
  --hx-F8F9FA: #f8f9fa;
  --hx-E9ECEF: #e9ecef;
  --hx-DEE2E6: #dee2e6;
  --hx-5A6268: #5a6268;
  --hx-CED4DA: #ced4da;

  --hx-333: #333;
  --hx-666: #666;
  --hx-999: #999;
  --hx-a0a0a0: #a0a0a0;
  --hx-e0d4c4: #e0d4c4;
  --hx-e74c3c: #e74c3c;
  --hx-eee: #eee;
  --hx-f0e8dc: #f0e8dc;
  --hx-f8f9fa: #f8f9fa;
  --hx-fff: #fff;
}

/* P5 — 裸色别名自动注入 2026-07-22（禁六合规，路由至 --hx-*） */
:root {
  --hx-14532d: #14532d;
  --hx-15803d: #15803d;
  --hx-185fa5: #185fa5;
  --hx-1c1b19: #1c1b19;
  --hx-1c1c1e: #1c1c1e;
  --hx-1d4ed8: #1d4ed8;
  --hx-1e3a5f: #1e3a5f;
  --hx-26262a: #26262a;
  --hx-2c2620: #2c2620;
  --hx-2c2c30: #2c2c30;
  --hx-2e1e5e: #2e1e5e;
  --hx-2e3a2a: #2e3a2a;
  --hx-378add: #378add;
  --hx-4a1d2f: #4a1d2f;
  --hx-4a3f2c: #4a3f2c;
  --hx-5b6b54: #5b6b54;
  --hx-5f5d59: #5f5d59;
  --hx-5f5e5a: #5f5e5a;
  --hx-60a5fa: #60a5fa;
  --hx-6d28d9: #6d28d9;
  --hx-6e4519: #6e4519;
  --hx-86efac: #86efac;
  --hx-888780: #888780;
  --hx-8a5a1e: #8a5a1e;
  --hx-8a7a5f: #8a7a5f;
  --hx-8a7b3f: #8a7b3f;
  --hx-8a8275: #8a8275;
  --hx-8c887f: #8c887f;
  --hx-8d8a84: #8d8a84;
  --hx-94763e: #94763e;
  --hx-9aab90: #9aab90;
  --hx-9c7b3f: #9c7b3f;
  --hx-b4b2a9: #b4b2a9;
  --hx-b7b2a8: #b7b2a8;
  --hx-b8893a: #b8893a;
  --hx-b9a986: #b9a986;
  --hx-be185d: #be185d;
  --hx-c4b5fd: #c4b5fd;
  --hx-c8a96a: #c8a96a;
  --hx-c9a24a: #c9a24a;
  --hx-c9c5bd: #c9c5bd;
  --hx-d2e3c8: #d2e3c8;
  --hx-d3d1c7: #d3d1c7;
  --hx-d68a1a: #d68a1a;
  --hx-dbeafe: #dbeafe;
  --hx-dcebd3: #dcebd3;
  --hx-dcfce7: #dcfce7;
  --hx-e11d48: #e11d48;
  --hx-e3d8c4: #e3d8c4;
  --hx-e6f1fb: #e6f1fb;
  --hx-e7f0e1: #e7f0e1;
  --hx-e8d8ba: #e8d8ba;
  --hx-e8e5de: #e8e5de;
  --hx-e8e6df: #e8e6df;
  --hx-ede9fe: #ede9fe;
  --hx-ef9f27: #ef9f27;
  --hx-efe2c8: #efe2c8;
  --hx-f0eee9: #f0eee9;
  --hx-f1efea: #f1efea;
  --hx-f472b6: #f472b6;
  --hx-f5f4f0: #f5f4f0;
  --hx-f6eeda: #f6eeda;
  --hx-f6f3ee: #f6f3ee;
  --hx-f7f6f3: #f7f6f3;
  --hx-faf9f6: #faf9f6;
  --hx-fce7f3: #fce7f3;
  --hx-ffeeee: #ffeeee;
  --hx-fffdf8: #fffdf8;
}

/* P5-ext — 裸色别名自动注入 2026-07-22（禁六扩展批，路由至 --hx-*） */
:root {
  --hx-2c2c2c: #2c2c2c;
  --hx-69db7c: #69db7c;
  --hx-74c0fc: #74c0fc;
  --hx-b88a2d: #b88a2d;
  --hx-c8a45a: #c8a45a;
  --hx-d8d8d8: #d8d8d8;
  --hx-e23b3b: #e23b3b;
  --hx-e6e6e6: #e6e6e6;
  --hx-f2f2f2: #f2f2f2;
  --hx-f7f7f7: #f7f7f7;
  --hx-faa2c1: #faa2c1;
  --hx-ffe066: #ffe066;
}

/* P5-rgba — 半透阴影/覆盖令牌注入 2026-07-22（禁六：JS 内联 rgba 令牌化） */
:root {
  --shadow-popup: 0 8px 32px rgba(0,0,0,.18);
  --shadow-popup-lg: 0 24px 80px rgba(0,0,0,.3);
  --shadow-fab: 0 2px 10px rgba(0,0,0,.3);
  --shadow-book: 0 2px 8px rgba(0,0,0,0.08);
  --shadow-book-hover: 0 8px 24px rgba(0,0,0,0.12);
  --mask-black-50: rgba(0,0,0,.5);
  --overlay-gray-15: rgba(128,128,128,.15);
  --overlay-gray-25: rgba(128,128,128,.25);
}
