/* ==========================================================================
   LongPT · Cyber Design System · tokens.css
   --------------------------------------------------------------------------
   深色科技风主题：近黑深蓝底 + 蓝色光斑 + 网格 + 玻璃拟态 + 收敛蓝。

   与 Nebula / Kawaii 的结构差异：
     - 本主题**默认就是深色**（:root 直接给深色值），浅色仅作为可切换的备用
     - 深底上主色必须「亮」：#2563eb 在近黑底上偏闷，主色取 blue-500 #3b82f6
     - 按钮文字用深字 #04101f 配亮蓝，比白字对比度更高
     - 文字色整体提亮（--nx-text #e8eefc / 链接 #60a5fa）

   维护约定：
     1. 这里是唯一配色来源，其余 CSS 只允许 var(--nx-*)
     2. base.css / components.css / DomTT.css 是与 Nebula、Kawaii 共享的骨架，
        不允许放主题定制；定制一律写 theme.css
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. 基础令牌（与主题无关，浅深共用）
   -------------------------------------------------------------------------- */
:root {
    /* — 间距阶梯（8pt 网格） — */
    --nx-space-0:  0;
    --nx-space-1:  2px;
    --nx-space-2:  4px;
    --nx-space-3:  8px;
    --nx-space-4:  12px;
    --nx-space-5:  16px;
    --nx-space-6:  20px;
    --nx-space-7:  24px;
    --nx-space-8:  32px;
    --nx-space-9:  40px;
    --nx-space-10: 48px;
    --nx-space-11: 64px;
    --nx-space-12: 80px;

    /* — 字号阶梯（1.25 模数，基准 13px） — */
    --nx-font-xs:   11px;
    --nx-font-sm:   12px;
    --nx-font-base: 13px;
    --nx-font-md:   14px;
    --nx-font-lg:   16px;
    --nx-font-xl:   18px;
    --nx-font-2xl:  22px;
    --nx-font-3xl:  28px;
    --nx-font-4xl:  34px;

    /* — 行高 — */
    --nx-leading-tight:  1.25;
    --nx-leading-snug:   1.4;
    --nx-leading-normal: 1.6;
    --nx-leading-loose:  1.8;

    /* — 字重 — */
    --nx-weight-normal:   400;
    --nx-weight-medium:   500;
    --nx-weight-semibold: 600;
    --nx-weight-bold:     700;

    /* — 字族 — */
    --nx-font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
                    "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei",
                    "Source Han Sans SC", "Noto Sans CJK SC", Roboto, Helvetica,
                    Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
    --nx-font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
                    "Liberation Mono", "Courier New", monospace;

    /* — 圆角（科技风：比 Kawaii 收敛，比 Nebula 略大） — */
    --nx-radius-xs:   4px;
    --nx-radius-sm:   6px;
    --nx-radius-md:   10px;
    --nx-radius-lg:   14px;
    --nx-radius-xl:   18px;
    --nx-radius-2xl:  24px;
    --nx-radius-full: 9999px;

    /* — 边框宽度 — */
    --nx-border-thin:   1px;
    --nx-border-thick:  2px;

    /* — 外沿描边（2026-09-20） —
       约定：**浮在 canvas 上的块级外沿**（卡片 / 表格 / 弹层 / 独立区块）用这条线，
       嵌在别的块**内部**的分隔线继续用 --nx-border。
       为什么单开一条：浅色下 --nx-border(#e2e8f0) 摆在 canvas(#f4f7fb) 上只差 6/255，
       边框画了也读不出边界，所以外沿必须提一档；深色同理。
       var() 在 html 上解析，.nx-light / .nx-dark 谁的 --nx-border-strong 赢就取谁的，
       高对比度媒体查询也一并跟上了。 */
    --nx-card-border: var(--nx-border-strong);

    /* — 层级 — */
    --nx-z-base:     1;
    --nx-z-dropdown: 100;
    --nx-z-sticky:   200;
    --nx-z-modal:    1000;
    --nx-z-popover:  1100;
    --nx-z-toast:    1200;

    /* — 版式尺寸 — */
    /* 内容区宽度（2026-09-18 由 1200 放宽到 1680）
       原因：种子列表共 10 列 + 46px 封面 + 长标题，1200px 下标题列只分到 ~700px，
       既拥挤又容易把统计列压到逐字换行。1680 让 1440/1600 屏基本铺满，
       1920 屏两侧各留 ~120px；仍保留上限，避免超宽屏下正文行过长。
       ≤1280 视口由 base.css 的「6. 响应式断点」切回 100%。 */
    --nx-content-width: 1680px;
    --nx-content-max:   1680px;

    /* — 动效 — */
    --nx-dur-fast:   120ms;
    --nx-dur-base:   180ms;
    --nx-dur-slow:   280ms;
    --nx-ease-out:    cubic-bezier(0.16, 1, 0.3, 1);
    --nx-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
    --nx-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* --------------------------------------------------------------------------
   2. 深色科技风（本主题默认）
   -------------------------------------------------------------------------- */
:root,
[data-nx-theme="dark"],
.nx-dark {
    color-scheme: dark;

    /* — 品牌色阶（深底上整体提亮） — */
    --nx-brand-50:  #071426;
    --nx-brand-100: #0a1d38;
    --nx-brand-200: #10294f;
    --nx-brand-300: #16396e;
    --nx-brand-400: #1d4ed8;
    --nx-brand-500: #2563eb;
    --nx-brand-600: #3b82f6;   /* ← 主色：深底上需要够亮才看得见 */
    --nx-brand-700: #60a5fa;   /* hover 变亮 */
    --nx-brand-800: #93c5fd;   /* 文字色 */
    --nx-brand-900: #dbeafe;

    --nx-primary:        var(--nx-brand-600);   /* #3b82f6 */
    --nx-primary-hover:  var(--nx-brand-700);   /* #60a5fa 变亮 */
    --nx-primary-active: var(--nx-brand-500);   /* #2563eb 变暗 */
    --nx-primary-soft:   rgba(59, 130, 246, 0.14);
    --nx-primary-border: rgba(59, 130, 246, 0.35);
    /* 亮蓝按钮配深字，比白字对比度更高（白字仅 3.7:1，深字 8.6:1） */
    --nx-on-primary:     #04101f;
    --nx-primary-strong: var(--nx-brand-800);   /* #93c5fd 文字色 */
    --nx-primary-strong-hover: var(--nx-brand-900);

    /* — 中性面 —
       初版取到近黑（#060a14），实测观感过暗、长时间看压迫感强。
       整体提亮一档到 slate 系：仍是深色，但层次拉得开，不再糊成一片。 */
    --nx-canvas:        #0f172a;   /* 页面最底 */
    --nx-surface:       #1b2537;   /* 卡片 / 表格面 */
    --nx-surface-alt:   #222d42;   /* 斑马纹 / 次级面 */
    --nx-surface-sunken:#141d2f;   /* 下沉区（表头、代码块） */
    --nx-surface-hover: #28344c;   /* 行悬停 */
    --nx-surface-active:#2e3d59;   /* 行选中 */
    --nx-input-bg:      rgba(18, 26, 42, 0.78);   /* 输入框底：保留深色玻璃半透明 */
    /* 不透明版，专供 autofill 的 `box-shadow: inset` 用
       （半透明色做 inset 阴影会透出浏览器 UA 默认底，得到脏灰） */
    --nx-input-bg-solid: #121a2a;
    --nx-overlay:       rgba(0, 0, 0, 0.62);

    /* — 文字（深底上提亮） — */
    --nx-text:          #e8eefc;
    --nx-text-secondary:#a3b4d0;
    --nx-text-tertiary: #7e90ae;
    --nx-text-disabled: #56658a;
    --nx-text-inverse:  #060a14;
    --nx-link:          #60a5fa;
    --nx-link-hover:    #93c5fd;
    --nx-link-visited:  #c4b5fd;

    /* — 边框（随中性面一起提亮，否则线条在亮底上会消失） — */
    --nx-border:        #2d3b54;
    --nx-border-strong: #405270;
    --nx-border-subtle: #1e2839;
    --nx-divider:       #27334a;
    --nx-icon-filter:     invert(1);   /* 雪碧图图标在深色下反色 */

    /* — 状态色（深底上都要提亮） — */
    --nx-success:        #34d399;
    --nx-success-soft:   rgba(52, 211, 153, 0.13);
    --nx-success-border: rgba(52, 211, 153, 0.32);
    --nx-success-text:   #6ee7b7;

    --nx-warning:        #fbbf24;
    --nx-warning-soft:   rgba(251, 191, 36, 0.13);
    --nx-warning-border: rgba(251, 191, 36, 0.32);
    --nx-warning-text:   #fcd34d;

    --nx-danger:         #fb7185;
    --nx-danger-soft:    rgba(251, 113, 133, 0.13);
    --nx-danger-border:  rgba(251, 113, 133, 0.32);
    --nx-danger-text:    #fda4af;

    --nx-info:           #60a5fa;
    --nx-info-soft:      rgba(96, 165, 250, 0.13);
    --nx-info-border:    rgba(96, 165, 250, 0.32);
    --nx-info-text:      #93c5fd;

    /* — 种子促销状态（PT 站特有，务必保留语义） — */
    --nx-promo-free:        #6ee7b7;
    --nx-promo-free-bg:     rgba(52, 211, 153, 0.18);
    --nx-promo-2x:          #c4b5fd;
    --nx-promo-2x-bg:       rgba(167, 139, 250, 0.18);
    --nx-promo-2xfree:      #a5f3fc;
    --nx-promo-2xfree-bg:   rgba(103, 232, 249, 0.18);
    --nx-promo-50:          #fdba74;
    --nx-promo-50-bg:       rgba(251, 146, 60, 0.18);
    --nx-promo-2x50:        #fda4af;
    --nx-promo-2x50-bg:     rgba(251, 113, 133, 0.18);
    --nx-promo-halfdown:    #fcd34d;
    --nx-promo-halfdown-bg: rgba(250, 204, 21, 0.20);
    --nx-promo-2xhalfdown:  #fdba74;
    --nx-promo-2xhalfdown-bg:rgba(251, 146, 60, 0.22);
    --nx-promo-30:          #fda4af;
    --nx-promo-30-bg:       rgba(251, 113, 133, 0.18);

    /* — 用户等级色（深底亮版） — */
    --nx-rank-peasant:   #94a3b8;
    --nx-rank-user:      #5eead4;
    --nx-rank-power:     #86efac;
    --nx-rank-elite:     #d9f99d;
    --nx-rank-crazy:     #fde047;
    --nx-rank-insane:    #fcd34d;
    --nx-rank-veteran:   #fdba74;
    --nx-rank-extreme:   #fda4af;
    --nx-rank-ultimate:  #f0abfc;
    --nx-rank-nexus:     #d8b4fe;
    --nx-rank-vip:       #93c5fd;
    --nx-rank-uploader:  #a5f3fc;
    --nx-rank-moderator: #c4b5fd;
    --nx-rank-admin:     #fb7185;
    --nx-rank-sysop:     #fda4af;
    --nx-rank-retiree:   #a8a29e;

    /* — 阴影（深色下黑投影更实，焦点环带蓝） — */
    --nx-shadow-xs: 0 2px 6px rgba(0, 0, 0, 0.35);
    --nx-shadow-sm: 0 2px 10px rgba(0, 0, 0, 0.4);
    --nx-shadow-md: 0 6px 18px rgba(0, 0, 0, 0.5);
    --nx-shadow-lg: 0 12px 32px rgba(0, 0, 0, 0.6);
    --nx-shadow-xl: 0 20px 48px rgba(0, 0, 0, 0.7);
    --nx-shadow-focus: 0 0 0 3px rgba(59, 130, 246, 0.30);
    --nx-shadow-inset: inset 0 2px 4px rgba(0, 0, 0, 0.35);
    /* 科技风专属：发光（用于品牌块、激活态、主按钮） */
    --nx-glow:        0 0 24px rgba(59, 130, 246, 0.35);
    --nx-glow-strong: 0 0 32px rgba(96, 165, 250, 0.45);

    /* — 渐变 — */
    --nx-gradient-brand:   linear-gradient(135deg, #2563eb 0%, #60a5fa 100%);
    --nx-gradient-surface: linear-gradient(180deg, #121d33 0%, #0d162b 100%);
    --nx-gradient-warm:    linear-gradient(135deg, #1e2a1c 0%, #2a1f3d 100%);
    /* 站名文字：深色模式下 header 是深底，品牌蓝渐变会糊在底上，
       故单独给一条「白 → 浅蓝」的亮色渐变。 */
    --nx-gradient-logo: linear-gradient(135deg, #ffffff 0%, #93c5fd 100%);

    /* ---- 顶部框架与玻璃面（全部必须令牌化） ----
       教训：theme.css 里凡是写死的底色，切到浅色模式后都会「露出来」——
       header、nav_block、玻璃卡片、表头、按钮、下拉抽屉都踩过同一个坑。
       统一在这里按明暗各给一套值。 */
    --nx-header-bg:       rgba(18, 26, 42, 0.78);   /* header / nav / footer */
    --nx-glass-bg:        rgba(27, 37, 55, 0.78);   /* 玻璃拟态卡片 */
    --nx-glass-border:    rgba(148, 163, 184, 0.22);
    --nx-glass-inset:     inset 0 1px 0 rgba(255, 255, 255, 0.05);
    --nx-thead-from:      #263350;                  /* 表头渐变起 */
    --nx-thead-to:        #1e2a40;                  /* 表头渐变止 */
    --nx-btn-bg:          rgba(40, 53, 80, 0.85);   /* 次级按钮底 */
    --nx-drawer-bg:       rgba(27, 37, 55, 0.95);   /* 下拉抽屉 */
    --nx-scrollbar:       #35485f;
    --nx-scrollbar-hover: #465f7d;

    /* — 界面外观面板的色块预览色（深色版） —
       必须按明暗分别给值：同一个方案在浅色/深色下的品牌色不同，
       写死一个会让「面板里看到的颜色」与「切完后的实际颜色」对不上。 */
    --nx-swatch-deep-blue: #3b82f6;
    --nx-swatch-jade:      #10b981;
    --nx-swatch-nebula:    #8b5cf6;
    --nx-swatch-amber:     #f59e0b;
}

/* --------------------------------------------------------------------------
   3. 浅色（备用，可通过切换器的「浅色」模式启用）
   -------------------------------------------------------------------------- */
[data-nx-theme="light"],
.nx-light {
    color-scheme: light;

    --nx-brand-50:  #eff6ff;
    --nx-brand-100: #dbeafe;
    --nx-brand-200: #bfdbfe;
    --nx-brand-300: #93c5fd;
    --nx-brand-400: #60a5fa;
    --nx-brand-500: #3b82f6;
    --nx-brand-600: #2563eb;
    --nx-brand-700: #1d4ed8;
    --nx-brand-800: #1e40af;
    --nx-brand-900: #1e3a8a;

    --nx-primary:        var(--nx-brand-600);
    --nx-primary-hover:  var(--nx-brand-500);
    --nx-primary-active: var(--nx-brand-700);
    --nx-primary-soft:   var(--nx-brand-50);
    --nx-primary-border: var(--nx-brand-200);
    --nx-on-primary:     #ffffff;
    --nx-primary-strong: var(--nx-brand-700);
    --nx-primary-strong-hover: var(--nx-brand-800);

    --nx-canvas:        #f4f7fb;
    --nx-surface:       #ffffff;
    --nx-surface-alt:   #f8fafc;
    --nx-surface-sunken:#eef2f7;
    --nx-surface-hover: #eff6ff;
    --nx-surface-active:#dbeafe;
    --nx-input-bg:      #ffffff;   /* 浅色下输入框回归白底（theme.css 曾写死深色，导致浅色页面出现黑框） */
    --nx-input-bg-solid: #ffffff;   /* autofill inset 专用，同浅色档 */
    --nx-overlay:       rgba(15, 23, 42, 0.45);

    --nx-text:          #0f172a;
    --nx-text-secondary:#475569;
    --nx-text-tertiary: #64748b;
    --nx-text-disabled: #94a3b8;
    --nx-text-inverse:  #ffffff;
    --nx-link:          #1d4ed8;
    --nx-link-hover:    #1e40af;
    --nx-link-visited:  #6d28d9;

    --nx-border:        #e2e8f0;
    --nx-border-strong: #cbd5e1;
    --nx-border-subtle: #f1f5f9;
    --nx-divider:       #e8edf3;
    --nx-icon-filter:     none;   /* 雪碧图图标在深色下反色 */

    --nx-success:        #15803d;
    --nx-success-soft:   #f0fdf4;
    --nx-success-border: #bbf7d0;
    --nx-success-text:   #166534;

    --nx-warning:        #b45309;
    --nx-warning-soft:   #fffbeb;
    --nx-warning-border: #fde68a;
    --nx-warning-text:   #92400e;

    --nx-danger:         #b91c1c;
    --nx-danger-soft:    #fef2f2;
    --nx-danger-border:  #fecaca;
    --nx-danger-text:    #991b1b;

    --nx-info:           #1d4ed8;
    --nx-info-soft:      #eff6ff;
    --nx-info-border:    #bfdbfe;
    --nx-info-text:      #1e40af;

    --nx-promo-free:        #15803d;
    --nx-promo-free-bg:     #dcfce7;
    --nx-promo-2x:          #7e22ce;
    --nx-promo-2x-bg:       #f3e8ff;
    --nx-promo-2xfree:      #0e7490;
    --nx-promo-2xfree-bg:   #cffafe;
    --nx-promo-50:          #ea580c;
    --nx-promo-50-bg:       #ffedd5;
    --nx-promo-2x50:        #be123c;
    --nx-promo-2x50-bg:     #ffe4e6;
    --nx-promo-halfdown:    #b45309;
    --nx-promo-halfdown-bg: #fef3c7;
    --nx-promo-2xhalfdown:  #c2410c;
    --nx-promo-2xhalfdown-bg:#ffedd5;
    --nx-promo-30:          #be123c;
    --nx-promo-30-bg:       #ffe4e6;

    --nx-rank-peasant:   #64748b;
    --nx-rank-user:      #0f766e;
    --nx-rank-power:     #15803d;
    --nx-rank-elite:     #4d7c0f;
    --nx-rank-crazy:     #a16207;
    --nx-rank-insane:    #b45309;
    --nx-rank-veteran:   #c2410c;
    --nx-rank-extreme:   #b91c1c;
    --nx-rank-ultimate:  #a21caf;
    --nx-rank-nexus:     #7e22ce;
    --nx-rank-vip:       #0369a1;
    --nx-rank-uploader:  #0e7490;
    --nx-rank-moderator: #1d4ed8;
    --nx-rank-admin:     #be123c;
    --nx-rank-sysop:     #7f1d1d;
    --nx-rank-retiree:   #78716c;

    --nx-shadow-xs: 0 1px 2px rgba(15, 23, 42, 0.06);
    --nx-shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.08), 0 1px 2px rgba(15, 23, 42, 0.04);
    --nx-shadow-md: 0 4px 12px rgba(15, 23, 42, 0.08), 0 2px 4px rgba(15, 23, 42, 0.04);
    --nx-shadow-lg: 0 12px 32px rgba(15, 23, 42, 0.12), 0 4px 8px rgba(15, 23, 42, 0.05);
    --nx-shadow-xl: 0 24px 56px rgba(15, 23, 42, 0.16), 0 8px 16px rgba(15, 23, 42, 0.06);
    --nx-shadow-focus: 0 0 0 3px rgba(37, 99, 235, 0.22);
    --nx-shadow-inset: inset 0 1px 2px rgba(15, 23, 42, 0.06);
    --nx-glow:        0 0 20px rgba(37, 99, 235, 0.20);
    --nx-glow-strong: 0 0 28px rgba(59, 130, 246, 0.28);

    --nx-gradient-brand:   linear-gradient(135deg, #2563eb 0%, #60a5fa 100%);
    --nx-gradient-surface: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    --nx-gradient-warm:    linear-gradient(135deg, #fef3c7 0%, #fce7f3 100%);
    /* 浅色下 header 也是浅底，品牌蓝渐变就够醒目，无需换亮色 */
    --nx-gradient-logo: var(--nx-gradient-brand);

    /* 浅色模式下的顶部框架与玻璃面 —— 逐项对应深色那组。
       任一漏掉都会在切浅色时露出深色块（用户已发现 header 与 nav_block 两处）。 */
    --nx-header-bg:       rgba(255, 255, 255, 0.88);
    --nx-glass-bg:        rgba(255, 255, 255, 0.85);
    --nx-glass-border:    rgba(15, 23, 42, 0.10);
    --nx-glass-inset:     inset 0 1px 0 rgba(255, 255, 255, 0.60);
    --nx-thead-from:      #f1f5f9;
    --nx-thead-to:        #e8eef6;
    --nx-btn-bg:          rgba(241, 245, 249, 0.90);
    --nx-drawer-bg:       rgba(255, 255, 255, 0.97);
    --nx-scrollbar:       #cbd5e1;
    --nx-scrollbar-hover: #94a3b8;

    /* — 界面外观面板的色块预览色（浅色版） — */
    --nx-swatch-deep-blue: #2563eb;
    --nx-swatch-jade:      #059669;
    --nx-swatch-nebula:    #7c3aed;
    --nx-swatch-amber:     #d97706;
}

/* --------------------------------------------------------------------------
   3b. 配色方案（界面外观里的 4 选一）—— 已迁移到共享层
   --------------------------------------------------------------------------
   方案定义现位于：public/styles/_shared/schemes.css
   （由 stdhead 在「有 tokens.css 的三层主题」下统一加载，位于 tokens.css 之后）。

   迁移原因：配色方案只关心品牌色、与具体主题无关；原先只写在本文件里，
   导致切到 Nebula / Kawaii 时点方案无反应（它们没有对应的覆盖块）。
   共享层改为【直接覆盖 --nx-primary 一族语义令牌】，因为 Nebula/Kawaii 的
   深色块把 --nx-primary 写死成 hex（不走 var(--nx-brand-*)），只覆盖 brand 阶无效。

   本文件不再定义任何 [data-nx-scheme=...] 覆盖块，避免与共享层重复/冲突。
   （deep-blue 为各主题默认，共享层不覆盖，沿用各主题原生品牌色。）
   -------------------------------------------------------------------------- */

/* --------------------------------------------------------------------------
   4. 无障碍偏好适配
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
    :root {
        --nx-dur-fast: 0ms;
        --nx-dur-base: 0ms;
        --nx-dur-slow: 0ms;
    }
}

@media (prefers-contrast: more) {
    :root {
        --nx-text-secondary: #cfdcf5;
        --nx-text-tertiary:  #b3c3de;
        --nx-border:         #3d5480;
        --nx-border-strong:  #5b74a3;
        --nx-divider:        #465f8c;
        --nx-icon-filter:     none;   /* 雪碧图图标在深色下反色 */
    }
}

/* --------------------------------------------------------------------------
   2026-09-18 · 让「跟随系统」真正跟随系统（nx-auto-light-follow）
   --------------------------------------------------------------------------
   Cyber 是【深色默认】主题（:root 即深色），原先没有 auto 的媒体块 →
   选「跟随系统」时恒为深色，与系统偏好无关（用户反馈「跟随系统怎么是暗色」）。
   这里把上面的浅色档在【系统为浅色】时复用（与 Nebula/Kawaii 的 auto 暗色块同一套路）。
   特异性 :root[data-nx-theme="auto"] = (0,2,0) > 明暗块的 (0,1,0)，可稳压；
   且只命中 auto，不影响显式「浅色 / 深色」。
   -------------------------------------------------------------------------- */
@media (prefers-color-scheme: light) {
    :root[data-nx-theme="auto"] {
    
        color-scheme: light;
    
        --nx-brand-50:  #eff6ff;
        --nx-brand-100: #dbeafe;
        --nx-brand-200: #bfdbfe;
        --nx-brand-300: #93c5fd;
        --nx-brand-400: #60a5fa;
        --nx-brand-500: #3b82f6;
        --nx-brand-600: #2563eb;
        --nx-brand-700: #1d4ed8;
        --nx-brand-800: #1e40af;
        --nx-brand-900: #1e3a8a;
    
        --nx-primary:        var(--nx-brand-600);
        --nx-primary-hover:  var(--nx-brand-500);
        --nx-primary-active: var(--nx-brand-700);
        --nx-primary-soft:   var(--nx-brand-50);
        --nx-primary-border: var(--nx-brand-200);
        --nx-on-primary:     #ffffff;
        --nx-primary-strong: var(--nx-brand-700);
        --nx-primary-strong-hover: var(--nx-brand-800);
    
        --nx-canvas:        #f4f7fb;
        --nx-surface:       #ffffff;
        --nx-surface-alt:   #f8fafc;
        --nx-surface-sunken:#eef2f7;
        --nx-surface-hover: #eff6ff;
        --nx-surface-active:#dbeafe;
        --nx-input-bg:      #ffffff;   /* auto+系统浅色 同浅色档 */
        --nx-input-bg-solid: #ffffff;   /* autofill inset 专用，auto+系统浅色 */
        --nx-overlay:       rgba(15, 23, 42, 0.45);
    
        --nx-text:          #0f172a;
        --nx-text-secondary:#475569;
        --nx-text-tertiary: #64748b;
        --nx-text-disabled: #94a3b8;
        --nx-text-inverse:  #ffffff;
        --nx-link:          #1d4ed8;
        --nx-link-hover:    #1e40af;
        --nx-link-visited:  #6d28d9;
    
        --nx-border:        #e2e8f0;
        --nx-border-strong: #cbd5e1;
        --nx-border-subtle: #f1f5f9;
        --nx-divider:       #e8edf3;
        --nx-icon-filter:     none;   /* 雪碧图图标在深色下反色 */
    
        --nx-success:        #15803d;
        --nx-success-soft:   #f0fdf4;
        --nx-success-border: #bbf7d0;
        --nx-success-text:   #166534;
    
        --nx-warning:        #b45309;
        --nx-warning-soft:   #fffbeb;
        --nx-warning-border: #fde68a;
        --nx-warning-text:   #92400e;
    
        --nx-danger:         #b91c1c;
        --nx-danger-soft:    #fef2f2;
        --nx-danger-border:  #fecaca;
        --nx-danger-text:    #991b1b;
    
        --nx-info:           #1d4ed8;
        --nx-info-soft:      #eff6ff;
        --nx-info-border:    #bfdbfe;
        --nx-info-text:      #1e40af;
    
        --nx-promo-free:        #15803d;
        --nx-promo-free-bg:     #dcfce7;
        --nx-promo-2x:          #7e22ce;
        --nx-promo-2x-bg:       #f3e8ff;
        --nx-promo-2xfree:      #0e7490;
        --nx-promo-2xfree-bg:   #cffafe;
        --nx-promo-50:          #ea580c;
        --nx-promo-50-bg:       #ffedd5;
        --nx-promo-2x50:        #be123c;
        --nx-promo-2x50-bg:     #ffe4e6;
        --nx-promo-halfdown:    #b45309;
        --nx-promo-halfdown-bg: #fef3c7;
        --nx-promo-2xhalfdown:  #c2410c;
        --nx-promo-2xhalfdown-bg:#ffedd5;
        --nx-promo-30:          #be123c;
        --nx-promo-30-bg:       #ffe4e6;
    
        --nx-rank-peasant:   #64748b;
        --nx-rank-user:      #0f766e;
        --nx-rank-power:     #15803d;
        --nx-rank-elite:     #4d7c0f;
        --nx-rank-crazy:     #a16207;
        --nx-rank-insane:    #b45309;
        --nx-rank-veteran:   #c2410c;
        --nx-rank-extreme:   #b91c1c;
        --nx-rank-ultimate:  #a21caf;
        --nx-rank-nexus:     #7e22ce;
        --nx-rank-vip:       #0369a1;
        --nx-rank-uploader:  #0e7490;
        --nx-rank-moderator: #1d4ed8;
        --nx-rank-admin:     #be123c;
        --nx-rank-sysop:     #7f1d1d;
        --nx-rank-retiree:   #78716c;
    
        --nx-shadow-xs: 0 1px 2px rgba(15, 23, 42, 0.06);
        --nx-shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.08), 0 1px 2px rgba(15, 23, 42, 0.04);
        --nx-shadow-md: 0 4px 12px rgba(15, 23, 42, 0.08), 0 2px 4px rgba(15, 23, 42, 0.04);
        --nx-shadow-lg: 0 12px 32px rgba(15, 23, 42, 0.12), 0 4px 8px rgba(15, 23, 42, 0.05);
        --nx-shadow-xl: 0 24px 56px rgba(15, 23, 42, 0.16), 0 8px 16px rgba(15, 23, 42, 0.06);
        --nx-shadow-focus: 0 0 0 3px rgba(37, 99, 235, 0.22);
        --nx-shadow-inset: inset 0 1px 2px rgba(15, 23, 42, 0.06);
        --nx-glow:        0 0 20px rgba(37, 99, 235, 0.20);
        --nx-glow-strong: 0 0 28px rgba(59, 130, 246, 0.28);
    
        --nx-gradient-brand:   linear-gradient(135deg, #2563eb 0%, #60a5fa 100%);
        --nx-gradient-surface: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
        --nx-gradient-warm:    linear-gradient(135deg, #fef3c7 0%, #fce7f3 100%);
        /* 浅色下 header 也是浅底，品牌蓝渐变就够醒目，无需换亮色 */
        --nx-gradient-logo: var(--nx-gradient-brand);
    
        /* 浅色模式下的顶部框架与玻璃面 —— 逐项对应深色那组。
           任一漏掉都会在切浅色时露出深色块（用户已发现 header 与 nav_block 两处）。 */
        --nx-header-bg:       rgba(255, 255, 255, 0.88);
        --nx-glass-bg:        rgba(255, 255, 255, 0.85);
        --nx-glass-border:    rgba(15, 23, 42, 0.10);
        --nx-glass-inset:     inset 0 1px 0 rgba(255, 255, 255, 0.60);
        --nx-thead-from:      #f1f5f9;
        --nx-thead-to:        #e8eef6;
        --nx-btn-bg:          rgba(241, 245, 249, 0.90);
        --nx-drawer-bg:       rgba(255, 255, 255, 0.97);
        --nx-scrollbar:       #cbd5e1;
        --nx-scrollbar-hover: #94a3b8;
    
        /* — 界面外观面板的色块预览色（浅色版） — */
        --nx-swatch-deep-blue: #2563eb;
        --nx-swatch-jade:      #059669;
        --nx-swatch-nebula:    #7c3aed;
        --nx-swatch-amber:     #d97706;
    }
}
