/* =============================================================================
   灵络AI · 用户端设计令牌 v1（Phase 1：令牌层 + 兼容桥 + 长尾收敛）
   -----------------------------------------------------------------------------
   目的：在**不改动压缩 JS** 的前提下，把用户端 6 套并存的视觉身份收敛成 1 套。

   本文件只做三件事，全部是"加法 + 覆盖"，不改布局、不改 DOM：
     1. 定义唯一一套设计令牌（--yy-*）
     2. 把 4 个历史令牌命名空间（--theme-* / --sa-* / --msp-* / --primary-color）
        桥接到 --yy-*，让已经写在 34,116 处 var() 里的旧代码自动换肤
     3. 收敛硬编码颜色/圆角/字号的长尾（55 个色值 / 12 个圆角 / 5 个字号）

   接入方式：在 mirror_local/index.html 的 </head> 前、**所有其它 CSS 之后**加一行
       <link rel="stylesheet" href="/css/yyai8-design-tokens.css">
   回滚方式：删掉那一行即可，本文件不改任何既有文件。

   品牌主色只有一个开关：--yy-brand-hue（见 §1）。
   ============================================================================= */


/* =============================================================================
   §1  原始色板（Primitives）——只在这里出现字面色值，别处一律引用令牌
   ============================================================================= */

:root {
  /* ---- 品牌主色：青绿（产品内已在用、且是生图/声音页的既有主色）---- */
  /* 品牌主色阶：取自 logo 的紫（logo 实际是「紫 #7C3AED → 品红 #D946A0」渐变）。
     500 是按钮/选中态的基准，压白字对比度 5.70（旧青绿 #13AB92 只有 2.89）。 */
  --yy-brand-50:  #F5F3FF;
  --yy-brand-100: #EDE9FE;
  --yy-brand-200: #DDD6FE;
  --yy-brand-300: #C4B5FD;
  --yy-brand-400: #A78BFA;
  --yy-brand-500: #7C3AED;   /* ← 品牌主色基准 */
  --yy-brand-600: #6D28D9;
  --yy-brand-700: #5B21B6;
  --yy-brand-800: #4C1D95;
  --yy-brand-900: #3B0F86;
  --yy-brand-950: #2E1065;

  /* ---- 品牌辅色：橙（PWA theme-color / 品牌标识 / 促销与奖励场景）---- */
  --yy-orange-50:  #FEF0EB;
  --yy-orange-100: #FDE0D6;
  --yy-orange-200: #FDD5C4;
  --yy-orange-300: #FBB89C;
  --yy-orange-400: #F98A62;
  --yy-orange-500: #F44725;
  --yy-orange-600: #D83A1C;
  --yy-orange-700: #B32E15;
  --yy-orange-800: #8F2410;
  --yy-orange-900: #6E1B0C;
  --yy-orange-950: #4A1107;

  /* ---- 中性色阶：沿用 Tailwind gray（已是全站最高频，不再另起一套）---- */
  --yy-gray-25:  #FCFCFD;
  --yy-gray-50:  #F9FAFB;
  --yy-gray-100: #F3F4F6;
  --yy-gray-200: #E5E7EB;
  --yy-gray-300: #D1D5DB;
  --yy-gray-400: #9CA3AF;
  --yy-gray-500: #6B7280;
  --yy-gray-600: #4B5563;
  --yy-gray-700: #374151;
  --yy-gray-800: #1F2937;
  --yy-gray-900: #111827;

  /* ---- 深色导航（侧边栏）---- */
  --yy-navy-800: #17182A;
  --yy-navy-900: #11142D;
  --yy-navy-950: #0A0B1A;

  /* ---- 语义色阶 ----
     ⚠️ 必须**整条色阶**齐全，不能只留一个基色。
     `yyai8-color-overrides.css` 是按「Tailwind 族 + 色阶」逐档改写的：
        `.bg-blue-50`  → `var(--yy-brand-50)`
        `.bg-blue-600` → `var(--yy-brand-600)`
     早期只有基色时生成器只能把每一档都写成 `var(--yy-color-primary)`，
     于是 `.from-amber-50`（近白色底）被刷成了饱和橙 —— 图片处理页
     「我的收藏 / 最近使用」两张浅色卡片变成刺眼的橙色渐变就是这个原因。
     基准档 500 沿用原值（改它会动全站语义色），600 起接 Tailwind 原色阶。 */
  --yy-green-50:  #ECFDF5;
  --yy-green-100: #DCFCE7;
  --yy-green-200: #BBF7D0;
  --yy-green-300: #86EFAC;
  --yy-green-400: #4ADE80;
  --yy-green-500: #16A34A;
  --yy-green-600: #16A34A;
  --yy-green-700: #15803D;
  --yy-green-800: #166534;
  --yy-green-900: #14532D;
  --yy-green-950: #052E16;

  --yy-amber-50:  #FFFBEB;
  --yy-amber-100: #FEF3C7;
  --yy-amber-200: #FDE68A;
  --yy-amber-300: #FCD34D;
  --yy-amber-400: #FBBF24;
  --yy-amber-500: #D97706;
  --yy-amber-600: #D97706;
  --yy-amber-700: #B45309;
  --yy-amber-800: #92400E;
  --yy-amber-900: #78350F;
  --yy-amber-950: #451A03;

  --yy-red-50:    #FEF2F2;
  --yy-red-100:   #FEE2E2;
  --yy-red-200:   #FECACA;
  --yy-red-300:   #FCA5A5;
  --yy-red-400:   #F87171;
  --yy-red-500:   #DC2626;
  --yy-red-600:   #DC2626;
  --yy-red-700:   #B91C1C;
  --yy-red-800:   #991B1B;
  --yy-red-900:   #7F1D1D;
  --yy-red-950:   #450A0A;

  --yy-blue-50:   #EFF6FF;
  --yy-blue-100:  #DBEAFE;
  --yy-blue-200:  #BFDBFE;
  --yy-blue-300:  #93C5FD;
  --yy-blue-400:  #60A5FA;
  --yy-blue-500:  #2563EB;
  --yy-blue-600:  #2563EB;
  --yy-blue-700:  #1D4ED8;
  --yy-blue-800:  #1E40AF;
  --yy-blue-900:  #1E3A8A;
  --yy-blue-950:  #172554;

  /* 次强调：logo 渐变的另一端（品红）。主色换成紫之后，原来的靛蓝和紫太近，
     分不清主次，所以把次强调挪到品红这一端。 */
  --yy-magenta-50:  #FDF4FF;
  --yy-magenta-100: #FAE8FF;
  --yy-magenta-200: #F5D0FE;
  --yy-magenta-300: #F0ABFC;
  --yy-magenta-400: #E879F9;
  --yy-magenta-500: #C026D3;   /* ← 次强调基准 */
  --yy-magenta-600: #A21CAF;
  --yy-magenta-700: #86198F;
  --yy-magenta-800: #701A75;
  --yy-magenta-900: #4A044E;
  --yy-magenta-950: #2E0633;

  /* ---- 领域语义：A 股涨跌（红涨绿跌，与品牌色无关，必须独立）---- */
  --yy-stock-up:    #E5342A;
  --yy-stock-up-bg: #FEF2F2;
  --yy-stock-down:    #0FA968;
  --yy-stock-down-bg: #ECFDF5;
}


/* =============================================================================
   §2  语义令牌（Semantic）——组件只允许引用这一层
   ============================================================================= */

:root {
  /* 主色 */
  --yy-color-primary:        var(--yy-brand-500);
  --yy-color-primary-hover:  var(--yy-brand-600);
  --yy-color-primary-active: var(--yy-brand-700);
  --yy-color-primary-subtle: var(--yy-brand-50);
  --yy-color-primary-border: var(--yy-brand-200);
  --yy-color-primary-rgb:    124, 58, 237;   /* 给 rgba(var(--x), .2) 用 */
  --yy-color-on-primary:     #FFFFFF;

  /* 辅色：只用于"奖励/促销/品牌标识"，不用于常规操作 */
  --yy-color-accent:        var(--yy-orange-500);
  --yy-color-accent-hover:  var(--yy-orange-600);
  --yy-color-accent-subtle: var(--yy-orange-50);

  /* 次强调色：历史遗留的紫/粉只保留这一个出口 */
  --yy-color-secondary:        var(--yy-magenta-500);
  --yy-color-secondary-subtle: var(--yy-magenta-50);

  /* 文字 */
  --yy-color-text-primary:    var(--yy-gray-800);
  --yy-color-text-secondary:  var(--yy-gray-500);
  --yy-color-text-tertiary:   var(--yy-gray-400);
  --yy-color-text-quaternary: #C3C8D0;
  --yy-color-text-disabled:   #C9CDD4;
  --yy-color-text-inverse:    #FFFFFF;

  /* 背景 */
  --yy-color-bg-page:           var(--yy-gray-50);
  --yy-color-bg-surface:        #FFFFFF;
  --yy-color-bg-surface-raised: #FFFFFF;
  --yy-color-bg-sunken:         var(--yy-gray-100);
  --yy-color-bg-sunken-strong:  var(--yy-gray-200);
  --yy-color-bg-hover:          var(--yy-gray-100);
  --yy-color-bg-inverse:        var(--yy-navy-900);

  /* 描边 */
  --yy-color-border:        var(--yy-gray-200);
  --yy-color-border-subtle: var(--yy-gray-100);
  --yy-color-border-strong: var(--yy-gray-300);
  --yy-color-border-focus:  var(--yy-color-primary);

  /* 状态 */
  --yy-color-success:        var(--yy-green-500);
  --yy-color-success-subtle: var(--yy-green-50);
  --yy-color-warning:        var(--yy-amber-500);
  --yy-color-warning-subtle: var(--yy-amber-50);
  --yy-color-danger:         var(--yy-red-500);
  --yy-color-danger-subtle:  var(--yy-red-50);
  --yy-color-info:           var(--yy-blue-500);
  --yy-color-info-subtle:    var(--yy-blue-50);

  /* 深色侧边栏 */
  --yy-sidebar-bg:     var(--yy-navy-900);
  --yy-sidebar-text:   rgba(255, 255, 255, 0.80);
  --yy-sidebar-active: rgba(255, 255, 255, 0.10);
}


/* =============================================================================
   §3  几何 / 字体 / 层级令牌
   ============================================================================= */

:root {
  /* 圆角：7 档（原 115 个不同值）*/
  --yy-radius-xs:   4px;
  --yy-radius-sm:   6px;
  --yy-radius-md:   8px;
  --yy-radius-lg:   10px;
  --yy-radius-xl:   12px;
  --yy-radius-2xl:  16px;
  --yy-radius-pill: 999px;
  --yy-radius-circle: 50%;

  /* 间距：4px 基准 8 档（原 674 个不同 padding 值）*/
  --yy-space-1: 4px;
  --yy-space-2: 8px;
  --yy-space-3: 12px;
  --yy-space-4: 16px;
  --yy-space-5: 20px;
  --yy-space-6: 24px;
  --yy-space-8: 32px;
  --yy-space-10: 40px;

  /* 字号：8 档（原 215 个不同值，实际渲染 10~13 档且互相只差 0.5px）*/
  --yy-font-size-xs:   11px;
  --yy-font-size-sm:   12px;
  --yy-font-size-md:   13px;
  --yy-font-size-base: 14px;
  --yy-font-size-lg:   16px;
  --yy-font-size-xl:   18px;
  --yy-font-size-2xl:  20px;
  --yy-font-size-3xl:  24px;
  --yy-font-size-4xl:  30px;

  /* 行高 */
  --yy-line-height-tight:   1.3;
  --yy-line-height-normal:  1.5;
  --yy-line-height-relaxed: 1.7;

  /* 字重：4 档（原 25 个不同值，含 650 / 750 / 850 这类非法档位）*/
  --yy-font-weight-regular:  400;
  --yy-font-weight-medium:   500;
  --yy-font-weight-semibold: 600;
  --yy-font-weight-bold:     700;

  /* 阴影：4 档（原 449 个不同值）*/
  --yy-shadow-xs: 0 1px 2px rgba(16, 24, 40, .05);
  --yy-shadow-sm: 0 1px 3px rgba(16, 24, 40, .08), 0 1px 2px rgba(16, 24, 40, .04);
  --yy-shadow-md: 0 4px 12px rgba(16, 24, 40, .08), 0 1px 3px rgba(16, 24, 40, .04);
  --yy-shadow-lg: 0 10px 25px -5px rgba(16, 24, 40, .10), 0 8px 10px -6px rgba(16, 24, 40, .06);
  --yy-shadow-focus: 0 0 0 3px rgba(var(--yy-color-primary-rgb), .18);

  /* 层级：6 档（原 66 个不同值，含 9999 / 99999）*/
  --yy-z-base:     1;
  --yy-z-dropdown: 1000;
  --yy-z-sticky:   1100;
  --yy-z-modal:    1200;
  --yy-z-popover:  1300;
  --yy-z-toast:    2000;

  /* 字体族：正文统一走系统栈；Inter 在原 CSS 里声明了却几乎没生效，一并去掉 */
  --yy-font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
                         "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
  --yy-font-family-number: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}


/* =============================================================================
   §4  兼容桥 A：历史令牌命名空间 → 语义令牌   ★ 本次改动收益最大的部分
   -----------------------------------------------------------------------------
   --theme-* 在全站被 var() 引用 34,116 次，--sa-* 被引用 1,478 次。
   只改这一节就等于给全站换一次肤，且完全不需要碰压缩 JS。

   ⚠️ 必须用 !important，原因（已实测确认）：
   全站主题并不是由 CSS 决定的，而是 JS 把整套主题写成 <html> 的**行内样式**：

     <html data-theme="white"
           style="--theme-primary:#007AFF; --theme-accent:#5856D6;
                  --theme-info:#5AC8FA; --theme-bg:#FFFFFF; ...">

   行内样式优先级高于任何普通样式表规则，所以不加 !important 的令牌覆盖**无效**
   （实测：注入后 --primary-color 变成了品牌青绿，但 --theme-primary 仍是 #007AFF）。
   !important 的作者样式声明可以压过非 !important 的行内样式。

   ⚠️ 覆盖范围经过刻意取舍：
   · 只强制「身份令牌」（主色/辅色/渐变/状态色）——它们决定"这套 UI 长什么样"。
   · **不强制**「表面令牌」（--theme-bg-* / --theme-text-* / --theme-border-*），
     这样 JS 主题的明暗切换仍然有效，不会把深色主题弄坏。
   · 副作用：JS 那 16 套主题的强调色会被统一成品牌色，"换主题只换强调色"这个
     差异消失。彻底解法在压缩 JS 里改主题表（见方案文档 §4.3），本文件是过渡层。
   ============================================================================= */

:root,
[data-theme] {
  /* ---- 身份令牌：强制统一 ---- */
  --theme-primary:        var(--yy-color-primary) !important;
  --theme-primary-hover:  var(--yy-color-primary-hover) !important;
  --theme-primary-light:  var(--yy-color-primary-subtle) !important;
  --theme-primary-rgb:    var(--yy-color-primary-rgb) !important;
  --theme-border-focus:   var(--yy-color-border-focus) !important;

  --theme-accent:         var(--yy-color-accent) !important;
  --theme-gradient-start: var(--yy-color-primary) !important;
  --theme-gradient-end:   var(--yy-color-primary-hover) !important;

  --theme-success:        var(--yy-color-success) !important;
  --theme-success-light:  var(--yy-color-success-subtle) !important;
  --theme-warning:        var(--yy-color-warning) !important;
  --theme-warning-light:  var(--yy-color-warning-subtle) !important;
  --theme-danger:         var(--yy-color-danger) !important;
  --theme-danger-light:   var(--yy-color-danger-subtle) !important;
  --theme-info:           var(--yy-color-info) !important;
  --theme-info-light:     var(--yy-color-info-subtle) !important;

  /* 历史遗留的"第 5~8 个强调色"全部收口到语义色 */
  --theme-cyan:   var(--yy-color-info) !important;
  --theme-amber:  var(--yy-color-warning) !important;
  --theme-orange: var(--yy-color-accent) !important;
  --theme-pink:   var(--yy-color-secondary) !important;
  --theme-purple: var(--yy-color-secondary) !important;

  /* 领域语义（红涨绿跌，与品牌色无关，必须独立） */
  --theme-stock-up:      var(--yy-stock-up) !important;
  --theme-stock-up-bg:   var(--yy-stock-up-bg) !important;
  --theme-stock-down:    var(--yy-stock-down) !important;
  --theme-stock-down-bg: var(--yy-stock-down-bg) !important;
}

/* ---- 表面令牌：不强制，仅补齐 JS 主题未覆盖的少数名字 ---- */
:root,
[data-theme] {
  --theme-text-quaternary: var(--yy-color-text-quaternary);
  --theme-text-disabled:   var(--yy-color-text-disabled);
  --theme-border-dashed:   var(--theme-border, var(--yy-color-border));
  --theme-panel:           var(--theme-bg-elevated, var(--yy-color-bg-surface));
}


/* =============================================================================
   §5  兼容桥 B：修 --sa-* 未定义（1,478 处声明当前是失效的）
   -----------------------------------------------------------------------------
   现状：11 个 CSS 分块里 1,478 处写了 var(--sa-text) / var(--sa-border) /
   var(--sa-surface) …，但**全站（CSS + JS）没有任何地方定义过 --sa-\***。
   自定义属性未定义时，整条声明在计算值阶段失效 → color 退回继承值、
   background 退回透明、border-color 退回 currentColor。
   这就是股票/智能体那批页面"看起来没上色、边框发灰"的直接原因。
   这里按 --theme-* 的同一套语义把它们补齐。
   ============================================================================= */

:root,
[data-theme],
.aistock-theme {
  --sa-text:           var(--yy-color-text-primary);
  --sa-text-primary:   var(--yy-color-text-primary);
  --sa-text-secondary: var(--yy-color-text-secondary);
  --sa-text-muted:     var(--yy-color-text-tertiary);
  --sa-border:         var(--yy-color-border);
  --sa-bg:             var(--yy-color-bg-page);
  --sa-surface:        var(--yy-color-bg-surface);
  --sa-input-bg:       var(--yy-color-bg-surface);
  --sa-hover:          var(--yy-color-bg-hover);
}


/* =============================================================================
   §6  兼容桥 C：antd 主题变量
   -----------------------------------------------------------------------------
   现状：:root{--primary-color:#1677ff}（antd v5 默认蓝）、
   另有 3 处 ConfigProvider 把 colorPrimary 写成 #3cdbc4 / #9353D3 / #641FA9。
   这里把 CSS 侧的统一到品牌主色；JS 侧那 3 处需要按文档 §4.3 做字符串替换。
   ============================================================================= */

:root,
[data-theme] {
  --primary-color:      var(--yy-color-primary);
  --primary-liner-bg:   var(--yy-color-bg-page);
  --yy-ant-primary:     var(--yy-color-primary);
}


/* =============================================================================
   §7  长尾收敛 A：硬编码颜色 → 令牌
   -----------------------------------------------------------------------------
   覆盖 55 个字面色值 / 3,309 次出现，全部是"同一个语义、不同色号"的重复。
   用 [class~="..."] 属性选择器，避免 Tailwind 转义类名（.bg-\[\#3b82f6\]）的麻烦。
   只收敛 Tailwind 工具类；不改业务 CSS 里带语义的选择器。
   ============================================================================= */

/* ---- 7 套"主色蓝/青" → 品牌主色（这是"整体不统一"最大的来源）---- */
[class~="bg-[#3b82f6]"], [class~="bg-[#2563eb]"], [class~="bg-[#1a93fe]"],
[class~="bg-[#0f62fe]"], [class~="bg-[#007AFF]"], [class~="bg-[#58a6ff]"],
[class~="bg-[#1677ff]"], [class~="bg-[#1890ff]"], [class~="bg-[#14b8a6]"],
[class~="bg-[#109982]"], [class~="bg-[#13AB92]"], [class~="bg-[#0D8B76]"] {
  background-color: var(--yy-color-primary) !important;
}

[class~="text-[#3b82f6]"], [class~="text-[#2563eb]"], [class~="text-[#1a93fe]"],
[class~="text-[#0f62fe]"], [class~="text-[#007AFF]"], [class~="text-[#58a6ff]"],
[class~="text-[#1677ff]"], [class~="text-[#1890ff]"], [class~="text-[#14b8a6]"],
[class~="text-[#109982]"], [class~="text-[#13AB92]"], [class~="text-[#0D8B76]"] {
  color: var(--yy-color-primary) !important;
}

[class~="border-[#3b82f6]"], [class~="border-[#2563eb]"], [class~="border-[#1a93fe]"],
[class~="border-[#0f62fe]"], [class~="border-[#007AFF]"], [class~="border-[#1677ff]"],
[class~="border-[#14b8a6]"], [class~="border-[#13AB92]"], [class~="border-[#109982]"] {
  border-color: var(--yy-color-primary) !important;
}

/* ---- 紫 / 品红 / 粉（4 套身份）→ 唯一一个次强调色 ---- */
[class~="bg-[#8b5cf6]"], [class~="bg-[#7c3aed]"], [class~="bg-[#6366f1]"],
[class~="bg-[#a855f7]"], [class~="bg-[#ec4899]"], [class~="bg-[#ff4b91]"] {
  background-color: var(--yy-color-secondary) !important;
}
[class~="text-[#8b5cf6]"], [class~="text-[#7c3aed]"], [class~="text-[#6366f1]"],
[class~="text-[#a855f7]"], [class~="text-[#ec4899]"], [class~="text-[#ff4b91]"] {
  color: var(--yy-color-secondary) !important;
}

/* ---- 红（5 套）→ 危险色 ---- */
[class~="bg-[#ef4444]"], [class~="bg-[#dc2626]"], [class~="bg-[#ff4d4f]"],
[class~="bg-[#ff3b30]"], [class~="bg-[#f87171]"] {
  background-color: var(--yy-color-danger) !important;
}
[class~="text-[#ef4444]"], [class~="text-[#dc2626]"], [class~="text-[#ff4d4f]"],
[class~="text-[#ff3b30]"], [class~="text-[#f87171]"] {
  color: var(--yy-color-danger) !important;
}

/* ---- 绿（8 套）→ 成功色 ---- */
[class~="bg-[#22c55e]"], [class~="bg-[#16a34a]"], [class~="bg-[#10b981]"],
[class~="bg-[#52c41a]"], [class~="bg-[#059669]"] {
  background-color: var(--yy-color-success) !important;
}
[class~="text-[#22c55e]"], [class~="text-[#16a34a]"], [class~="text-[#10b981]"],
[class~="text-[#52c41a]"], [class~="text-[#059669]"] {
  color: var(--yy-color-success) !important;
}

/* ---- 橙黄（7 套）→ 警告色；品牌橙 #f44725 归辅色 ---- */
[class~="bg-[#f59e0b]"], [class~="bg-[#d97706]"], [class~="bg-[#fbbf24]"],
[class~="bg-[#ff9500]"], [class~="bg-[#ffd700]"] {
  background-color: var(--yy-color-warning) !important;
}
[class~="text-[#f59e0b]"], [class~="text-[#d97706]"], [class~="text-[#fbbf24]"],
[class~="text-[#ff9500]"], [class~="text-[#ffd700]"] {
  color: var(--yy-color-warning) !important;
}
[class~="bg-[#f44725]"], [class~="bg-[#d83a1c]"], [class~="bg-[#ff6463]"] {
  background-color: var(--yy-color-accent) !important;
}
[class~="text-[#f44725]"], [class~="text-[#d83a1c]"], [class~="text-[#ff6463]"] {
  color: var(--yy-color-accent) !important;
}

/* ---- 中性灰长尾：#333/#666/#999/#ccc/#eee 等旧式灰 → gray 色阶 ---- */
[class~="text-[#333333]"], [class~="text-[#333]"] { color: var(--yy-gray-700) !important; }
[class~="text-[#666666]"], [class~="text-[#666]"] { color: var(--yy-gray-500) !important; }
[class~="text-[#999999]"], [class~="text-[#999]"] { color: var(--yy-gray-400) !important; }
[class~="text-[#cccccc]"], [class~="text-[#ccc]"] { color: var(--yy-gray-300) !important; }
[class~="bg-[#f5f5f5]"], [class~="bg-[#f0f0f0]"]  { background-color: var(--yy-gray-100) !important; }
[class~="bg-[#eeeeee]"], [class~="bg-[#e8e8e8]"]  { background-color: var(--yy-gray-200) !important; }


/* =============================================================================
   §8  长尾收敛 B：字号 / 圆角 / 字重 / 阴影
   -----------------------------------------------------------------------------
   只收敛**明显是笔误或历史残留**的值，不动已成体系的 11/12/13/14/16/18/20。
   ============================================================================= */

/* 半像素字号：10.5 / 11.5 / 12.5 / 13.5 → 就近整数档 */
[class~="text-[10.5px]"] { font-size: var(--yy-font-size-xs) !important; }
[class~="text-[11.5px]"] { font-size: var(--yy-font-size-sm) !important; }
[class~="text-[12.5px]"] { font-size: var(--yy-font-size-sm) !important; }
[class~="text-[13.5px]"] { font-size: var(--yy-font-size-base) !important; }
[class~="text-[17px]"]   { font-size: var(--yy-font-size-lg) !important; }

/* 非法字重：650 / 750 / 850 / 760 / 900 → 四档 */
[class~="font-[650]"], [class~="font-[760]"] { font-weight: var(--yy-font-weight-semibold) !important; }
[class~="font-[750]"], [class~="font-[850]"], [class~="font-[900]"] { font-weight: var(--yy-font-weight-bold) !important; }

/* 圆角长尾：2/3/5/7/9/14/18/20/22/24/26/28 → 就近档位 */
[class~="rounded-[2px]"], [class~="rounded-[3px]"] { border-radius: var(--yy-radius-xs) !important; }
[class~="rounded-[5px]"] { border-radius: var(--yy-radius-sm) !important; }
[class~="rounded-[7px]"], [class~="rounded-[9px]"] { border-radius: var(--yy-radius-md) !important; }
[class~="rounded-[14px]"] { border-radius: var(--yy-radius-xl) !important; }
[class~="rounded-[18px]"], [class~="rounded-[20px]"], [class~="rounded-[22px]"],
[class~="rounded-[24px]"], [class~="rounded-[26px]"], [class~="rounded-[28px]"] {
  border-radius: var(--yy-radius-2xl) !important;
}

/* 阴影长尾：把 20 个高频一次性阴影统一到 4 档 */
[class~="shadow-[0_4px_12px_#00000008,0_1px_3px_#00000005]"] { box-shadow: var(--yy-shadow-sm) !important; }
[class~="shadow-[0_10px_25px_-5px_#0000000a,0_8px_10px_-6px_#0000000a]"] { box-shadow: var(--yy-shadow-lg) !important; }
[class~="shadow-[0_1px_3px_#0000000a,0_1px_2px_#00000005]"] { box-shadow: var(--yy-shadow-sm) !important; }
[class~="shadow-[0_1px_2px_#0000000d]"] { box-shadow: var(--yy-shadow-xs) !important; }
[class~="shadow-[0_2px_8px_#0000000a]"] { box-shadow: var(--yy-shadow-sm) !important; }
[class~="shadow-[0_8px_24px_#0000001f]"], [class~="shadow-[0_8px_30px_#0000001f]"] { box-shadow: var(--yy-shadow-lg) !important; }
[class~="shadow-[0_4px_20px_#00000014]"], [class~="shadow-[0_10px_40px_#0000001a]"] { box-shadow: var(--yy-shadow-lg) !important; }


/* =============================================================================
   §9  基线：正文字体族 + 数字等宽
   ============================================================================= */

body {
  font-family: var(--yy-font-family-base);
}

/* 金额/积分/行情数字统一等宽，避免跳动 */
.yyai8-num, [class~="tabular-nums"] {
  font-variant-numeric: tabular-nums;
}


/* =============================================================================
   §10  暂不处理（需要改压缩 JS，见方案文档 §4.3）
   -----------------------------------------------------------------------------
   · 侧边栏每个菜单项各自一个色块的图标底（10+ 种颜色）→ 需改 JS 里的 bg-[#...]
   · /aisound 三张卡片分别用蓝/紫/粉 + 三种"推荐"徽章色 → 需改 JS
   · 登录弹窗的紫→粉渐变、功能大全弹窗的紫→紫渐变 → 需改 JS 渐变类
   · Font Awesome 5 / 7 / RemixIcon / iconfont / KaTeX 五套图标并存 → 需改 JS 引用
   · 首页问候语用 AlibabaPuHuiTi / TaoBaoMaiCaiTi 展示体 → 需改 JS
   ============================================================================= */
