/* ==========================================================================
   theme.css · 全站唯一配色源
   建立 2026-10-30 · 由 tools/_recluster.py 生成。变量名别手改，值可手改。
   说明文档：docs/颜色变量化说明_20261030.md
   --------------------------------------------------------------------------
   ★ 换色不要手改这 18 个品牌变量，用脚本（它按相对明度/饱和度/色相派生）：
       python tools/换色.py D3F4E8        # 给新色号
       python tools/换色.py --dry 2563eb  # 只看不写
       python tools/换色.py --list        # 看当前 18 档
       python tools/换色.py --restore     # 还原到薄荷绿
     输入色对白对比度 <3:1 时会被当作「浅底」，主色自动派生深一档
     （浅薄荷 #D3F4E8 压白字只有 1.3:1，直接当按钮底色字看不见）。
   --------------------------------------------------------------------------
   ⚠️ canvas 不认 var()：promote.html / promote-hub.html 共 24 处
      fillStyle / addColorStop 仍是字面值，换色要单独手改（海报配色本就该单独定）。
   ========================================================================== */

:root {
  /* ===== 品牌族 · 换色只改这一段 ===== */
  --brand:         #0f766e;   /* ×24 */
  --brand-alt1:    #0b7a63;   /* ×21   （并入 #0f6e56） */
  --brand-2:       #12a184;   /* ×34   （并入 #14a184） */
  --brand-2-alt1:  #0f8e73;   /* ×1 */
  --brand-2-alt2:  #2bb597;   /* ×1 */
  --brand-3:       #096253;   /* ×18 */
  --brand-deep:    #285b2c;   /* ×22 */
  --brand-deep-alt1: #14493e;   /* ×12 */
  --brand-deep-alt2: #1b3d1f;   /* ×6 */
  --brand-deep-alt3: #0a5442;   /* ×2 */
  --brand-deep-alt4: #2b5a4e;   /* ×1 */
  --brand-muted:   #5e7f75;   /* ×3 */
  --brand-weak:    #d3f4e8;   /* ×21 */
  --brand-weak-alt1: #eafaf3;   /* ×1 */
  --brand-weak-2:  #f1fbf7;   /* ×15   （并入 #f0faf5 #f2fbf6 #f4faf7 #e4f7ef #e8f7f1 #eef4f1） */
  --brand-line:    #bdead8;   /* ×8 */
  --brand-line-alt1: #dcefe6;   /* ×1 */
  --brand-tint:    #a7dfc8;   /* ×3   （并入 #b8e0c4 #b8e0c8） */
}

:root {
  /* ===== 中性灰阶（不随品牌变） ===== */
  --card:          #ffffff;   /* 卡片底 / 彩底上的白字 */
  --on-brand:      #ffffff;   /* 卡片底 / 彩底上的白字 */
  --ink:           #1e293b;   /* ×13   （并入 #1f2937） */
  --ink-alt1:      #111827;   /* ×4   （并入 #0f172a） */
  --ink-alt2:      #1a1a1a;   /* ×4 */
  --ink-2:         #475569;   /* ×16   （并入 #4b5563） */
  --ink-2-alt1:    #334155;   /* ×9   （并入 #374151） */
  --ink-2-alt2:    #333333;   /* ×3 */
  --ink-3:         #6b7280;   /* ×55   （并入 #64748b） */
  --ink-4:         #9ca3af;   /* ×38   （并入 #94a3b8） */
  --ink-4-alt1:    #c0c4cc;   /* ×7   （并入 #b0b9c6 #bbbbbb） */
  --ink-4-alt2:    #8fa6c8;   /* ×2 */
  --ink-4-alt3:    #999999;   /* ×2 */
  --ink-4-alt4:    #6b7f9e;   /* ×1 */
  --ink-4-alt5:    #888888;   /* ×1 */
  --line:          #e5e7eb;   /* ×27   （并入 #e2e8f0 #eeeeee） */
  --line-2:        #cbd5e1;   /* ×3   （并入 #d1d5db） */
  --bg:            #f8fafc;   /* ×12   （并入 #f9fafb #f5f7fa #eef0f3 #f5f6f8 #eef1f5 #fafcff #f8fbff #fafafa #f6f8fb #f0f2f5 #fafbfc） */
  --bg-2:          #f3f4f6;   /* ×14   （并入 #f1f5f9） */
}

:root {
  /* ===== 语义色（表达状态，不随品牌变） ===== */
  --ok:            #16a34a;   /* ×15 */
  --ok-alt1:       #059669;   /* ×6 */
  --ok-alt2:       #0ea56d;   /* ×1 */
  --ok-2:          #22c55e;   /* ×13 */
  --ok-2-alt1:     #10b981;   /* ×7   （并入 #34c08b） */
  --ok-2-alt2:     #34d399;   /* ×2 */
  --ok-dark:       #166534;   /* ×4 */
  --ok-dark-alt1:  #065f46;   /* ×3 */
  --ok-dark-alt2:  #047857;   /* ×1 */
  --ok-weak:       #f0fdf4;   /* ×9   （并入 #ecfdf5） */
  --ok-weak-alt1:  #d1fae5;   /* ×3   （并入 #dcfce7） */
  --ok-line:       #a7f3d0;   /* ×1   （并入 #bbf7d0） */
  --danger:        #dc2626;   /* ×18 */
  --danger-alt1:   #e24b4a;   /* ×6 */
  --danger-alt2:   #e03e2f;   /* ×5 */
  --danger-2:      #ef4444;   /* ×13 */
  --danger-2-alt1: #ff5e3a;   /* ×1 */
  --danger-dark:   #991b1b;   /* ×6 */
  --danger-weak:   #fef2f2;   /* ×14 */
  --danger-weak-alt1: #ffe4e6;   /* ×1 */
  --danger-line:   #fee2e2;   /* ×5 */
  --danger-line-alt1: #fca5a5;   /* ×1 */
  --danger-line-alt2: #fecaca;   /* ×1 */
  --warn:          #f59e0b;   /* ×16 */
  --warn-2:        #d97706;   /* ×7 */
  --warn-2-alt1:   #fbbf24;   /* ×3   （并入 #eab308） */
  --warn-2-alt2:   #e8813a;   /* ×2 */
  --warn-2-alt3:   #fcd34d;   /* ×1   （并入 #ffd54a） */
  --warn-2-alt4:   #ff8a3d;   /* ×1 */
  --warn-dark:     #b45309;   /* ×10 */
  --warn-deep:     #92400e;   /* ×9 */
  --warn-deep-alt1: #ea580c;   /* ×3 */
  --warn-deep-alt2: #9a3412;   /* ×2 */
  --warn-deep-alt3: #8a6a1f;   /* ×2 */
  --warn-deep-alt4: #7c2d12;   /* ×1 */
  --warn-deep-alt5: #c2410c;   /* ×1 */
  --warn-deep-alt6: #78350f;   /* ×1 */
  --warn-weak:     #fffbeb;   /* ×10   （并入 #fff7e0 #fefce8） */
  --warn-weak-alt1: #f1efe8;   /* ×1 */
  --warn-weak-2:   #fff7ed;   /* ×5 */
  --warn-weak-2-alt1: #ffedd5;   /* ×2   （并入 #fff3dc） */
  --warn-line:     #fef3c7;   /* ×5 */
  --warn-line-alt1: #fed7aa;   /* ×4 */
  --warn-line-alt2: #fde68a;   /* ×3 */
  --warn-line-alt3: #fdba74;   /* ×2 */
  --warn-line-alt4: #f5e3ae;   /* ×1 */
  --violet:        #7c3aed;   /* ×15 */
  --violet-alt1:   #8b5cf6;   /* ×2 */
  --violet-alt2:   #a855f7;   /* ×1 */
  --violet-dark:   #6d28d9;   /* ×3 */
  --violet-dark-alt1: #5b21b6;   /* ×2 */
  --violet-dark-alt2: #4c1d95;   /* ×1 */
  --violet-weak:   #ede9fe;   /* ×3   （并入 #f5f3ff） */
  --violet-weak-alt1: #faf5ff;   /* ×3 */
  --violet-weak-alt2: #ddd6fe;   /* ×2   （并入 #e9d5ff） */
  --info:          #1d4ed8;   /* ×6 */
  --info-alt1:     #1d6ae5;   /* ×5 */
  --info-alt2:     #8b7bc7;   /* ×1 */
  --info-alt3:     #4f46e5;   /* ×1 */
  --info-alt4:     #60a5fa;   /* ×1 */
  --info-dark:     #1e3a8a;   /* ×4 */
  --info-dark-alt1: #1e40af;   /* ×3 */
  --info-weak:     #bfdbfe;   /* ×7   （并入 #bcd6fb） */
  --info-weak-alt1: #e8f1fd;   /* ×3   （并入 #dbe8fa #eff6ff #f2f6fd） */
  --info-weak-alt2: #cffafe;   /* ×1 */
  --steel-dark:    #0a1628;   /* ×11 */
}

:root {
  /* 兼容层：practice.html 早期自建的 --qa-* 名，指回统一变量 */
  --qa-brand-weak: var(--brand-weak);
  --qa-brand:      var(--brand-2);
  --qa-brand-2:    var(--brand-3);
  --qa-danger:     var(--danger);
  --qa-ink:        var(--ink);
  --qa-ink-2:      var(--ink-2);
  --qa-ink-3:      var(--ink-3);
  --qa-line:       var(--line);
  --qa-card:       var(--card);
  --radius:        14px;
}
