/* ==========================================================================
   TIEDI v1 · base.css
   职责:重置 + 基础样式 + 全局背景层
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html, body { width: 100%; min-height: 100%; }
body {
  font-family: var(--f-body);
  font-size: var(--fs-body);
  line-height: 1.55;
  color: var(--text-1);
  background: var(--bg-0);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-feature-settings: "kern" 1, "liga" 1, "calt" 1;
}
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; border: none; background: transparent; color: inherit; }
input, textarea, select { font-family: inherit; }
ul, ol { list-style: none; }
img, svg { display: block; max-width: 100%; }

/* ==========================================================================
   背景层 (固定) · 网格 + 扫描线 + 渐变光晕
   ========================================================================== */
.bg-layer {
  position: fixed; inset: 0; z-index: 0; pointer-events: none; overflow: hidden;
  background:
    radial-gradient(ellipse 80% 60% at 30% 0%, rgba(0, 240, 255, 0.06), transparent 60%),
    radial-gradient(ellipse 60% 80% at 100% 100%, rgba(123, 44, 255, 0.06), transparent 60%);
}
.bg-grid {
  position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.022) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, 0.022) 1px, transparent 1px);
  background-size: 48px 48px;
  mask-image: radial-gradient(ellipse 80% 60% at 50% 30%, black 30%, transparent 90%);
  -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 30%, black 30%, transparent 90%);
}
.bg-scan {
  position: absolute; top: 0; left: 0; right: 0; height: 100vh;
  background: linear-gradient(180deg, transparent 0%, rgba(0, 240, 255, 0.022) 50%, transparent 100%);
  animation: bg-scan 8s linear infinite;
}
@keyframes bg-scan {
  0% { transform: translateY(-100%); }
  100% { transform: translateY(100vh); }
}

/* 数据流粒子 (通用,父级 .particles) */
.particles { position: absolute; inset: 0; pointer-events: none; }
.particle {
  position: absolute; width: 2px; height: 2px;
  background: var(--c-cyan); border-radius: 50%;
  box-shadow: 0 0 8px var(--c-cyan);
  animation: particle-float 12s linear infinite;
  opacity: 0;
}
.particle:nth-child(2n) { background: var(--c-violet); box-shadow: 0 0 8px var(--c-violet); }
.particle:nth-child(3n) { background: var(--c-magenta); box-shadow: 0 0 8px var(--c-magenta); }
.particle:nth-child(4n) { background: var(--c-amber); box-shadow: 0 0 8px var(--c-amber); }
@keyframes particle-float {
  0% { transform: translateY(100vh) scale(0); opacity: 0; }
  10% { opacity: 0.8; transform: translateY(90vh) scale(1); }
  90% { opacity: 0.8; }
  100% { transform: translateY(-10vh) scale(0.5); opacity: 0; }
}

/* 主题色变体 (背景层渐变随之变化) */
.theme-gov .bg-layer {
  background:
    radial-gradient(ellipse 80% 60% at 30% 0%, rgba(0, 240, 255, 0.06), transparent 60%),
    radial-gradient(ellipse 60% 80% at 100% 100%, rgba(123, 44, 255, 0.06), transparent 60%);
}
.theme-ent .bg-layer {
  background:
    radial-gradient(ellipse 80% 60% at 30% 0%, rgba(255, 182, 39, 0.06), transparent 60%),
    radial-gradient(ellipse 60% 80% at 100% 100%, rgba(255, 46, 154, 0.05), transparent 60%);
}
.theme-sci .bg-layer {
  background:
    radial-gradient(ellipse 80% 60% at 30% 0%, rgba(123, 44, 255, 0.08), transparent 60%),
    radial-gradient(ellipse 60% 80% at 100% 100%, rgba(0, 240, 255, 0.05), transparent 60%);
}

/* ==========================================================================
   ★ Light theme 背景层适配(把 grid 改成深色细线,把光晕减弱)
   ========================================================================== */
[data-theme="light"] .bg-grid {
  background-image:
    linear-gradient(rgba(10, 15, 28, 0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(10, 15, 28, 0.04) 1px, transparent 1px);
}
[data-theme="light"] .bg-scan { display: none; }
[data-theme="light"] .bg-layer { background: linear-gradient(180deg, #ffffff 0%, #eef2f7 100%) !important; opacity: 1; }
[data-theme="light"] .particle { opacity: 0; animation: none; }

/* ==========================================================================
   ★ Light theme 全局颜色覆写 (亮色模式: 浅色背景 + 深色文字)
   ========================================================================== */
[data-theme="light"] body { background: #f0f4f8 !important; color: #0a0f1c; }
[data-theme="light"] .topbar { background: rgba(255, 255, 255, 0.85) !important; border-bottom-color: rgba(0, 0, 0, 0.08) !important; }
[data-theme="light"] .topbar::before { background: linear-gradient(180deg, rgba(255, 255, 255, 0.7), transparent) !important; }
[data-theme="light"] .logo-en { color: rgba(0, 0, 0, 0.5) !important; }
[data-theme="light"] .logo-cn { color: #0a0f1c !important; }
[data-theme="light"] .ctx-bar { background: rgba(255, 255, 255, 0.6) !important; border-color: rgba(0, 0, 0, 0.08) !important; }
[data-theme="light"] .ctx-k { color: rgba(0, 0, 0, 0.55) !important; }
[data-theme="light"] .ctx-v { color: #0a0f1c !important; }
[data-theme="light"] .ctx-pulse { background: #52c41a !important; box-shadow: 0 0 8px #52c41a; }
[data-theme="light"] .ctx-btn { color: #0a0f1c !important; border-color: rgba(0, 0, 0, 0.15); }
[data-theme="light"] .ctx-btn:hover { background: rgba(0, 0, 0, 0.05) !important; }

[data-theme="light"] .card { background: rgba(255, 255, 255, 0.85) !important; border-color: rgba(0, 0, 0, 0.1) !important; }
[data-theme="light"] .card-head { border-bottom-color: rgba(0, 0, 0, 0.08) !important; }
[data-theme="light"] .card-title-zh { color: #0a0f1c !important; }
[data-theme="light"] .card-en, [data-theme="light"] .en { color: rgba(0, 0, 0, 0.45) !important; }

[data-theme="light"] .kpi { background: rgba(255, 255, 255, 0.85) !important; border-color: rgba(0, 0, 0, 0.1) !important; }
[data-theme="light"] .kpi-label { color: rgba(0, 0, 0, 0.55) !important; }
[data-theme="light"] .kpi-value { color: #0a0f1c !important; }
[data-theme="light"] .kpi-meta .lbl { color: rgba(0, 0, 0, 0.5) !important; }
[data-theme="light"] .kpi-meta .ctx { color: rgba(0, 0, 0, 0.6) !important; }

[data-theme="light"] .alert-row { background: rgba(0, 0, 0, 0.03) !important; border-color: rgba(0, 0, 0, 0.08); }
[data-theme="light"] .alert-body { color: #0a0f1c; }
[data-theme="light"] .alert-body strong { color: #0a0f1c; }
[data-theme="light"] .alert-body .desc { color: rgba(0, 0, 0, 0.55) !important; }

[data-theme="light"] .chip { background: rgba(0, 0, 0, 0.06) !important; color: #0a0f1c; }
[data-theme="light"] .chip.active { background: var(--c-primary) !important; color: #fff !important; }
[data-theme="light"] .tag { color: #0a0f1c; }
[data-theme="light"] .btn { color: #0a0f1c; }
[data-theme="light"] .btn-ghost { border-color: rgba(0, 0, 0, 0.15); color: #0a0f1c; }
[data-theme="light"] .btn-ghost:hover { background: rgba(0, 0, 0, 0.05); }

[data-theme="light"] .field-input { color: #0a0f1c !important; }
[data-theme="light"] .field-input-wrap { background: rgba(255, 255, 255, 0.7) !important; border-color: rgba(0, 0, 0, 0.12); }
[data-theme="light"] .field-label-cn { color: #0a0f1c !important; }
[data-theme="light"] .field-label-en { color: rgba(0, 0, 0, 0.5) !important; }

[data-theme="light"] .tab { color: rgba(0, 0, 0, 0.55) !important; }
[data-theme="light"] .tab.active { color: var(--c-primary) !important; }
[data-theme="light"] .tab .count { background: rgba(0, 0, 0, 0.08) !important; color: rgba(0, 0, 0, 0.6); }

[data-theme="light"] .section-divider { color: rgba(0, 0, 0, 0.4) !important; }
[data-theme="light"] .section-divider .sd-tag { background: rgba(0, 0, 0, 0.06) !important; color: #0a0f1c; }
[data-theme="light"] .section-divider .sd-en { color: rgba(0, 0, 0, 0.5); }

[data-theme="light"] .page-head h1 { color: #0a0f1c !important; }
[data-theme="light"] .page-head .desc { color: rgba(0, 0, 0, 0.55); }

[data-theme="light"] .search-box { background: rgba(255, 255, 255, 0.6) !important; border-color: rgba(0, 0, 0, 0.12); }
[data-theme="light"] .search-box input { color: #0a0f1c; }
[data-theme="light"] .search-box input::placeholder { color: rgba(0, 0, 0, 0.4); }

[data-theme="light"] .icon-btn { color: rgba(0, 0, 0, 0.7); }
[data-theme="light"] .icon-btn:hover { background: rgba(0, 0, 0, 0.05); }
[data-theme="light"] .avatar { background: var(--c-primary) !important; color: #fff; }
[data-theme="light"] .theme-toggle { color: rgba(0, 0, 0, 0.7); }
[data-theme="light"] .theme-toggle:hover { background: rgba(0, 0, 0, 0.05); }

[data-theme="light"] .main-nav { background: rgba(255, 255, 255, 0.7) !important; border-right-color: rgba(0, 0, 0, 0.08) !important; }
[data-theme="light"] .main-nav-item { color: rgba(0, 0, 0, 0.7); }
[data-theme="light"] .main-nav-item:hover { background: rgba(0, 0, 0, 0.04); color: var(--c-primary); }
[data-theme="light"] .main-nav-item.is-active { background: rgba(0, 0, 0, 0.06); color: var(--c-primary); }

[data-theme="light"] .user-menu .user-dropdown { background: #ffffff !important; border-color: rgba(0, 0, 0, 0.12) !important; }
[data-theme="light"] .ud-name { color: #0a0f1c; }
[data-theme="light"] .ud-role, [data-theme="light"] .ud-dept { color: rgba(0, 0, 0, 0.55); }
[data-theme="light"] .ud-item-k { color: rgba(0, 0, 0, 0.5); }
[data-theme="light"] .ud-item-v { color: #0a0f1c; }
[data-theme="light"] .ud-action { color: #0a0f1c; }
[data-theme="light"] .ud-action:hover { background: rgba(0, 0, 0, 0.05); }
[data-theme="light"] .ud-action.danger { color: #ff3366; }
[data-theme="light"] .ud-grid { background: rgba(0, 0, 0, 0.03) !important; }

[data-theme="light"] .login-bg { background: linear-gradient(135deg, #f0f4f8 0%, #e3e8f1 50%, #f0f4f8 100%) !important; }
[data-theme="light"] .login-card { background: rgba(255, 255, 255, 0.9) !important; border-color: rgba(0, 0, 0, 0.1) !important; }
[data-theme="light"] .login-step, [data-theme="light"] .login-hint { color: rgba(0, 0, 0, 0.5) !important; }
[data-theme="light"] .login-step.active { color: var(--c-primary); }
[data-theme="light"] .login-title { color: #0a0f1c !important; }
[data-theme="light"] .login-subtitle { color: rgba(0, 0, 0, 0.6); }
[data-theme="light"] .platform-name, [data-theme="light"] .platform-name-cn { color: #0a0f1c !important; }
[data-theme="light"] .platform-name-en, [data-theme="light"] .platform-name-en * { color: rgba(0, 0, 0, 0.5) !important; }
[data-theme="light"] .role-card { background: rgba(255, 255, 255, 0.7) !important; border-color: rgba(0, 0, 0, 0.1); }
[data-theme="light"] .role-card-num { color: rgba(0, 0, 0, 0.4) !important; }
[data-theme="light"] .role-card-name { color: #0a0f1c; }
[data-theme="light"] .role-card-en { color: rgba(0, 0, 0, 0.5); }
[data-theme="light"] .role-card-desc { color: rgba(0, 0, 0, 0.55); }
[data-theme="light"] .domain-card { background: rgba(255, 255, 255, 0.7) !important; border-color: rgba(0, 0, 0, 0.1); }
[data-theme="light"] .domain-card-num { color: rgba(0, 0, 0, 0.4); }
[data-theme="light"] .domain-card-name { color: #0a0f1c; }
[data-theme="light"] .domain-card-en { color: rgba(0, 0, 0, 0.5); }
[data-theme="light"] .stat-num { color: #0a0f1c; }
[data-theme="light"] .stat-lbl { color: rgba(0, 0, 0, 0.5); }
[data-theme="light"] .footer { color: rgba(0, 0, 0, 0.5) !important; }
[data-theme="light"] .footer-meta { color: rgba(0, 0, 0, 0.5); }
[data-theme="light"] .sd-tag { background: rgba(0, 0, 0, 0.06) !important; color: #0a0f1c; }

[data-theme="light"] .toast { background: rgba(0, 0, 0, 0.85) !important; color: #fff; }

/* ==========================================================================
   ★ Light theme 登录页 (login.html) 自定 class
   ========================================================================== */
[data-theme="light"] .login-shell { background: transparent !important; }
[data-theme="light"] .login-main { background: rgba(255, 255, 255, 0.85) !important; border-color: rgba(0, 0, 0, 0.08) !important; }
[data-theme="light"] .login-left { background: transparent !important; }
[data-theme="light"] .login-right { background: rgba(248, 250, 253, 0.7) !important; border-left-color: rgba(0, 0, 0, 0.08) !important; }
[data-theme="light"] .login-bottom { color: rgba(0, 0, 0, 0.55) !important; }
[data-theme="light"] .login-bottom * { color: rgba(0, 0, 0, 0.55) !important; }
[data-theme="light"] .login-progress { color: rgba(0, 0, 0, 0.6); }
[data-theme="light"] .login-progress .lp-step { color: rgba(0, 0, 0, 0.45) !important; }
[data-theme="light"] .login-progress .lp-step.is-active { color: var(--c-primary) !important; }
[data-theme="light"] .login-progress .lp-step.is-done { color: #52c41a !important; }
[data-theme="light"] .login-progress .lp-step-icon { background: rgba(0, 0, 0, 0.06); color: rgba(0, 0, 0, 0.5); }
[data-theme="light"] .login-progress .lp-step.is-active .lp-step-icon { background: var(--c-primary); color: #fff; }

/* 左侧 4 大区块 (01/02/03/04 编号 + 标题) */
[data-theme="light"] .left-section { color: rgba(0, 0, 0, 0.4); }
[data-theme="light"] .left-section * { color: inherit; }
[data-theme="light"] .left-tag { background: rgba(0, 0, 0, 0.06) !important; color: #0a0f1c !important; }
[data-theme="light"] .left-title-zh { color: #0a0f1c !important; }
[data-theme="light"] .left-title { color: #0a0f1c !important; }
[data-theme="light"] .left-head { color: rgba(0, 0, 0, 0.55) !important; }
[data-theme="light"] .left-num { color: rgba(0, 0, 0, 0.35) !important; }

/* 平台规模 4 个 KPI (ENTERPRISES / POLICIES / RESEARCH / PIPELINE) */
[data-theme="light"] .left-section .left-num { color: var(--c-primary) !important; }
[data-theme="light"] .left-section .lbl { color: rgba(0, 0, 0, 0.55) !important; }

/* 3 个角色卡 (政府/企业/科研) */
[data-theme="light"] .role-card-v2 { background: #ffffff !important; border-color: rgba(0, 0, 0, 0.1) !important; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); }
[data-theme="light"] .role-card-v2.gov { border-left: 3px solid var(--c-cyan) !important; }
[data-theme="light"] .role-card-v2.ent { border-left: 3px solid var(--c-amber) !important; }
[data-theme="light"] .role-card-v2.sci { border-left: 3px solid var(--c-violet) !important; }
[data-theme="light"] .role-card-v2 .left-num { color: var(--c-primary) !important; }
[data-theme="light"] .role-card-v2 .lbl { color: rgba(0, 0, 0, 0.5) !important; }
[data-theme="light"] .role-card-v2 .left-title-zh { color: #0a0f1c !important; }
[data-theme="light"] .role-card-v2 .left-head { color: rgba(0, 0, 0, 0.5) !important; }
[data-theme="light"] .role-card-v2 .sd { color: rgba(0, 0, 0, 0.4) !important; }

/* 6 大业务模块卡 */
[data-theme="light"] .biz-card { background: #ffffff !important; border-color: rgba(0, 0, 0, 0.1) !important; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); }
[data-theme="light"] .biz-card.gov { border-left: 3px solid var(--c-cyan) !important; }
[data-theme="light"] .biz-card.ent { border-left: 3px solid var(--c-amber) !important; }
[data-theme="light"] .biz-card.magenta { border-left: 3px solid var(--c-magenta) !important; }
[data-theme="light"] .biz-card.violet { border-left: 3px solid var(--c-violet) !important; }
[data-theme="light"] .biz-head { color: rgba(0, 0, 0, 0.55) !important; }
[data-theme="light"] .biz-num { color: rgba(0, 0, 0, 0.35) !important; }
[data-theme="light"] .biz-name { color: #0a0f1c !important; }
[data-theme="light"] .biz-en { color: rgba(0, 0, 0, 0.5) !important; }
[data-theme="light"] .biz-tag { background: rgba(0, 0, 0, 0.06) !important; color: #0a0f1c !important; border-color: rgba(0, 0, 0, 0.1) !important; }
[data-theme="light"] .bt-tag.gov { background: rgba(0, 240, 255, 0.15) !important; color: #007a8a !important; }
[data-theme="light"] .bt-tag.ent { background: rgba(255, 182, 39, 0.15) !important; color: #b06a00 !important; }
[data-theme="light"] .bt-tag.sci { background: rgba(123, 44, 255, 0.15) !important; color: #4a1a99 !important; }
[data-theme="light"] .biz-icon { color: rgba(0, 0, 0, 0.4); }

/* 右侧登录表单 (统一身份认证) */
[data-theme="light"] .right-head { color: rgba(0, 0, 0, 0.4); }
[data-theme="light"] .right-title-zh { color: #0a0f1c !important; }
[data-theme="light"] .right-en { color: rgba(0, 0, 0, 0.5) !important; }
[data-theme="light"] .field-label-cn { color: #0a0f1c !important; }
[data-theme="light"] .field-label-en { color: rgba(0, 0, 0, 0.55) !important; }
[data-theme="light"] .field-prompt { color: var(--c-primary) !important; }
[data-theme="light"] .field-input { color: #0a0f1c !important; }
[data-theme="light"] .field-input::placeholder { color: rgba(0, 0, 0, 0.5) !important; }
[data-theme="light"] .field-input-wrap { background: #ffffff !important; border-color: rgba(0, 0, 0, 0.15) !important; }
[data-theme="light"] .field-input-wrap:focus-within { border-color: var(--c-primary) !important; box-shadow: 0 0 0 3px rgba(0, 240, 255, 0.15) !important; }
[data-theme="light"] .field-toggle { color: rgba(0, 0, 0, 0.5) !important; }
[data-theme="light"] .field-toggle:hover { color: var(--c-primary) !important; }
[data-theme="light"] .form-actions .btn-primary { background: var(--c-primary) !important; color: #fff !important; }
[data-theme="light"] .form-actions .btn-ghost { color: #0a0f1c !important; border-color: rgba(0, 0, 0, 0.15); background: #fff; }
[data-theme="light"] .form-actions .btn-ghost:hover { background: rgba(0, 0, 0, 0.05) !important; }
[data-theme="light"] .account-dropdown { background: #ffffff !important; border-color: rgba(0, 0, 0, 0.12) !important; }
[data-theme="light"] .account-opt { color: #0a0f1c !important; }
[data-theme="light"] .account-opt:hover { background: rgba(0, 0, 0, 0.05) !important; }
[data-theme="light"] .account-opt .ao-name { color: #0a0f1c !important; }
[data-theme="light"] .account-opt .ao-meta { color: rgba(0, 0, 0, 0.55) !important; }
[data-theme="light"] .account-opt .ao-id { color: rgba(0, 0, 0, 0.5) !important; }
[data-theme="light"] .ao-avatar { color: #0a0f1c !important; }

/* 顶部状态指示器 (SYS ONLINE / DATA SYNC / UTC+8) */
[data-theme="light"] .status-item { color: rgba(0, 0, 0, 0.65); }
[data-theme="light"] .status-item .lbl { color: rgba(0, 0, 0, 0.5); }
[data-theme="light"] .status-item .val { color: #0a0f1c; }
[data-theme="light"] .status-dot--online { box-shadow: 0 0 6px #52c41a; }
[data-theme="light"] .status-dot--green { box-shadow: 0 0 6px #52c41a; }

/* 角色入口 (gov/ent/sci 快选) */
[data-theme="light"] .role-row { color: rgba(0, 0, 0, 0.6); }
[data-theme="light"] .rq-item { color: rgba(0, 0, 0, 0.6) !important; border-color: rgba(0, 0, 0, 0.15) !important; }
[data-theme="light"] .rq-item.is-active { color: #fff !important; }
[data-theme="light"] .role-quick { color: rgba(0, 0, 0, 0.6); }

/* 底部 footer */
[data-theme="light"] .footer { color: rgba(0, 0, 0, 0.65) !important; }
[data-theme="light"] .footer * { color: rgba(0, 0, 0, 0.65) !important; }
[data-theme="light"] .footer-meta { color: rgba(0, 0, 0, 0.55); }

/* 4 步进度 cover (登录时的加载动画) */
[data-theme="light"] .login-cover { background: rgba(255, 255, 255, 0.95) !important; }
[data-theme="light"] .cover-content { color: #0a0f1c !important; }
[data-theme="light"] .cover-tag { color: rgba(0, 0, 0, 0.5) !important; }
[data-theme="light"] .cover-en { color: rgba(0, 0, 0, 0.5) !important; }
[data-theme="light"] .cover-name { color: #0a0f1c !important; }
[data-theme="light"] .cover-target { color: var(--c-primary) !important; }
[data-theme="light"] .cover-icon { color: rgba(0, 0, 0, 0.4); }
[data-theme="light"] .cover-spinner { border-color: rgba(0, 0, 0, 0.1); border-top-color: var(--c-primary); }

/* 主题切换按钮:浅色=月亮 · 深色=太阳 */
[data-theme="light"] .theme-toggle [data-icon="dark"] { display: inline-flex !important; }
[data-theme="light"] .theme-toggle [data-icon="light"] { display: none !important; }
[data-theme="dark"] .theme-toggle [data-icon="dark"] { display: none !important; }
[data-theme="dark"] .theme-toggle [data-icon="light"] { display: inline-flex !important; }

/* ==========================================================================
   通用工具
   ========================================================================== */

/* 状态点 */
.status-dot {
  display: inline-block; width: 6px; height: 6px; border-radius: 50%;
  background: currentColor; box-shadow: 0 0 8px currentColor;
}
.status-dot--pulse { animation: status-pulse 1.6s ease-in-out infinite; }
.status-dot--online { color: var(--c-primary); box-shadow: 0 0 8px var(--c-primary); }
.status-dot--green { color: var(--status-success); box-shadow: 0 0 6px var(--status-success); }
@keyframes status-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.5; transform: scale(1.4); }
}

/* 文本辅助类 */
.mono { font-family: var(--f-mono); }
.text-num { font-family: var(--f-display-en); }
.text-cyan { color: var(--c-cyan); }
.text-amber { color: var(--c-amber); }
.text-violet { color: var(--c-violet); }
.text-magenta { color: var(--c-magenta); }
.text-success { color: var(--status-success); }
.text-danger { color: var(--status-danger); }
.text-warning { color: var(--status-warning); }

/* 滚动条 */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: var(--bg-1); }
::-webkit-scrollbar-thumb { background: var(--border-2); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--c-primary); }

/* 选中 */
::selection { background: var(--c-primary-soft); color: var(--text-0); }

/* ==========================================================================
   响应式基础
   ========================================================================== */
@media (max-width: 1280px) {
  .hide-1280 { display: none !important; }
}
@media (max-width: 1024px) {
  .hide-1024 { display: none !important; }
}
@media (max-width: 720px) {
  .hide-720 { display: none !important; }
}


/* ==========================================================================
   ★ login.html 浅色饱和度 v4 (反 "发白像盗版")
   核心: 黑底用透明度叠加显得饱和 · 白底必须用实色 + 主色阴影
   ========================================================================== */

/* topbar 分组容器 (login 顶栏) */
.topbar-group { display: inline-flex; align-items: center; gap: 14px; }

/* 主题切换单按钮 · 浅色版 (主色描边 + 主色 icon · 点击切换) */
[data-theme="light"] .theme-toggle {
  background: #ffffff !important;
  border: 1px solid var(--c-primary) !important;
  color: var(--c-primary) !important;
  box-shadow: 0 2px 8px rgba(var(--c-primary-rgb), 0.25);
}
/* 浅色时显示月亮(dark svg),隐藏太阳(light svg) */
[data-theme="light"] .theme-toggle [data-icon="dark"] { display: inline-flex !important; }
[data-theme="light"] .theme-toggle [data-icon="light"] { display: none !important; }
[data-theme="light"] .theme-toggle:hover {
  background: var(--c-primary) !important;
  color: #ffffff !important;
  box-shadow: 0 4px 14px rgba(var(--c-primary-rgb), 0.4);
}

/* 6 大业务卡 · 浅色饱和度大幅提升 */
[data-theme="light"] .biz-card {
  background: #ffffff;
  border: 1px solid rgba(10, 15, 28, 0.08);
  box-shadow: inset 4px 0 0 currentColor, 0 1px 3px rgba(10, 15, 28, 0.04);
  transition: all 0.25s var(--ease-out);
}
[data-theme="light"] .biz-card::before { opacity: 1; height: 3px; background: linear-gradient(90deg, currentColor 0%, currentColor 30%, transparent 100%); }
[data-theme="light"] .biz-card .biz-num {
  color: currentColor !important;
  background: rgba(var(--c-primary-rgb), 0.15) !important;
  border: 1px solid currentColor !important;
  font-weight: 900;
  font-size: 10.5px !important;
  padding: 3px 8px !important;
  border-radius: 2px !important;
  box-shadow: 0 1px 3px rgba(var(--c-primary-rgb), 0.2);
  opacity: 1 !important;
  min-width: 26px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  letter-spacing: 0.5px;
}
[data-theme="light"] .biz-card .biz-icon { color: currentColor; }
[data-theme="light"] .biz-card .biz-icon svg { stroke-width: 1.8; }
[data-theme="light"] .biz-card .biz-name { color: #0a0f1c !important; font-weight: 800; }
[data-theme="light"] .biz-card .biz-en { color: #0a0f1c; opacity: 0.75; font-weight: 700; }
/* biz-tag 浅色: 白底 + 浅边框, 不要灰色背景 */
[data-theme="light"] .biz-card .biz-tag { background: #ffffff; border-color: rgba(10, 15, 28, 0.12); color: #0a0f1c; }
[data-theme="light"] .biz-card .biz-tag .bt-tag.gov { background: var(--c-cyan); color: #001a22; }
[data-theme="light"] .biz-card .biz-tag .bt-tag.ent { background: var(--c-amber); color: #2a1a00; }
[data-theme="light"] .biz-card .biz-tag .bt-tag.sci { background: var(--c-violet); color: #1a0838; }
[data-theme="light"] .biz-card:hover {
  transform: translateY(-2px);
  box-shadow: inset 4px 0 0 currentColor, 0 8px 24px rgba(10, 15, 28, 0.1), 0 0 0 1px currentColor, 0 0 20px rgba(var(--c-primary-rgb), 0.2);
}
[data-theme="light"] .biz-card:hover .biz-name { color: currentColor !important; }

/* 3 角色卡 · 浅色饱和度提升 */
[data-theme="light"] .role-card-v2 {
  background: #ffffff;
  border: 1px solid rgba(10, 15, 28, 0.08);
  box-shadow: inset 4px 0 0 currentColor, 0 1px 3px rgba(10, 15, 28, 0.04);
  transition: all 0.25s var(--ease-out);
}
[data-theme="light"] .role-card-v2 .rc-num { opacity: 0.9; color: currentColor; font-weight: 900; }
[data-theme="light"] .role-card-v2 .rc-zh { color: #0a0f1c !important; }
[data-theme="light"] .role-card-v2 .rc-en { color: currentColor; opacity: 0.9; }
[data-theme="light"] .role-card-v2 .rc-stat { color: #0a0f1c; opacity: 0.8; }
[data-theme="light"] .role-card-v2:hover {
  transform: translateY(-2px);
  box-shadow: inset 4px 0 0 currentColor, 0 8px 24px rgba(10, 15, 28, 0.1), 0 0 0 1px currentColor, 0 0 20px rgba(var(--c-primary-rgb), 0.2);
}
[data-theme="light"] .role-card-v2:hover .rc-zh { color: currentColor !important; }

/* 4 个 KPI · 浅色饱和度 */
[data-theme="light"] .kpi-strip .ks {
  background: #ffffff;
  border: 1px solid rgba(10, 15, 28, 0.08);
  box-shadow: inset 4px 0 0 currentColor, 0 1px 3px rgba(10, 15, 28, 0.04);
  transition: all 0.25s var(--ease-out);
}
[data-theme="light"] .kpi-strip .ks .k { color: #0a0f1c; opacity: 0.7; }
[data-theme="light"] .kpi-strip .ks .v { color: currentColor; font-weight: 900; }
[data-theme="light"] .kpi-strip .ks .u { color: #0a0f1c; opacity: 0.8; }
[data-theme="light"] .kpi-strip .ks:hover { transform: translateY(-1px); box-shadow: inset 4px 0 0 currentColor, 0 6px 18px rgba(10, 15, 28, 0.08), 0 0 0 1px currentColor; }

/* 账户选择器 · 浅色饱和度 */
[data-theme="light"] .account-card {
  background: #ffffff;
  border: 1px solid rgba(10, 15, 28, 0.08);
  box-shadow: inset 4px 0 0 currentColor, 0 1px 4px rgba(10, 15, 28, 0.04);
  transition: all 0.2s var(--ease-out);
}
[data-theme="light"] .account-card .ac-name { color: #0a0f1c !important; }
[data-theme="light"] .account-card .ac-role { color: #0a0f1c; opacity: 0.75; }
[data-theme="light"] .account-card:hover { transform: translateX(2px); box-shadow: inset 4px 0 0 currentColor, 0 2px 12px rgba(10, 15, 28, 0.08), 0 0 0 1px currentColor; }
[data-theme="light"] .account-card.virtual {
  background: linear-gradient(90deg, rgba(0, 255, 157, 0.12) 0%, #ffffff 60%) !important;
  border-color: var(--c-ai) !important;
}

/* 编号 · 01/02/03/04 · 浅色深字 (主色浅底 + 主色深字 + 主色边框) */
[data-theme="light"] .left-section .left-num {
  color: var(--c-primary) !important;
  background: rgba(var(--c-primary-rgb), 0.12) !important;
  border: 1px solid var(--c-primary) !important;
  padding: 3px 9px !important;
  font-weight: 800 !important;
  letter-spacing: 1.5px !important;
  box-shadow: 0 1px 3px rgba(var(--c-primary-rgb), 0.25);
}

/* 4 大区块 left-head · 浅色加主色光条 */
[data-theme="light"] .left-head {
  border-bottom: 1px solid rgba(10, 15, 28, 0.1) !important;
  position: relative;
}
[data-theme="light"] .left-head::after {
  content: ""; position: absolute; left: 0; bottom: -1px;
  width: 32px; height: 2px; background: var(--c-primary);
  box-shadow: 0 0 6px rgba(var(--c-primary-rgb), 0.4);
}

/* 状态点 · 浅色实色不加白圈 */
[data-theme="light"] .status-dot--online { background: var(--c-cyan); box-shadow: 0 0 6px var(--c-cyan); }
[data-theme="light"] .status-dot--green { background: #52c41a; box-shadow: 0 0 6px #52c41a; }

/* 表单"请先选择账户"按钮 · 浅色实色饱和 */
[data-theme="light"] .form-actions .btn-primary {
  background: var(--c-primary) !important;
  color: #ffffff !important;
  box-shadow: 0 4px 14px rgba(var(--c-primary-rgb), 0.4);
  font-weight: 700;
}
[data-theme="light"] .form-actions .btn-primary:hover {
  box-shadow: 0 6px 20px rgba(var(--c-primary-rgb), 0.55);
  transform: translateY(-1px);
}

/* 表单输入框 · 浅色加强 */
[data-theme="light"] .field-input-wrap { background: #ffffff !important; border: 1px solid rgba(10, 15, 28, 0.15) !important; }
[data-theme="light"] .field-input-wrap:focus-within { border-color: var(--c-primary) !important; box-shadow: 0 0 0 3px rgba(var(--c-primary-rgb), 0.18) !important; }
[data-theme="light"] .field-prompt { color: var(--c-primary); }
[data-theme="light"] .field-toggle { color: rgba(0, 0, 0, 0.5); }
[data-theme="light"] .field-toggle:hover { color: var(--c-primary); }

/* 4 步进度 cover · 浅色实色 */
[data-theme="light"] .login-cover { background: rgba(255, 255, 255, 0.96) !important; }
[data-theme="light"] .cover-content { color: #0a0f1c; }
[data-theme="light"] .cover-tag { color: rgba(0, 0, 0, 0.5); }
[data-theme="light"] .cover-en { color: rgba(0, 0, 0, 0.5); }
[data-theme="light"] .cover-name { color: #0a0f1c; }
[data-theme="light"] .cover-target { color: var(--c-primary); }
[data-theme="light"] .cover-icon { color: var(--c-primary); }
[data-theme="light"] .cover-spinner { border-color: rgba(10, 15, 28, 0.1); border-top-color: var(--c-primary); }
[data-theme="light"] .login-progress { background: #ffffff; border: 1px solid rgba(10, 15, 28, 0.12); box-shadow: 0 2px 8px rgba(10, 15, 28, 0.06); }
[data-theme="light"] .login-progress .lp-step { color: rgba(0, 0, 0, 0.5); }
[data-theme="light"] .login-progress .lp-step.is-active { color: var(--c-primary); }
[data-theme="light"] .login-progress .lp-step.is-done { color: #389e0d; }
[data-theme="light"] .login-progress .lp-step-icon { background: rgba(10, 15, 28, 0.08); color: rgba(0, 0, 0, 0.5); }
[data-theme="light"] .login-progress .lp-step.is-active .lp-step-icon { background: var(--c-primary); color: #fff; }
[data-theme="light"] .login-progress .lp-step.is-done .lp-step-icon { background: #389e0d; color: #fff; }

/* 顶栏 topbar 浅色 */
[data-theme="light"] .topbar {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.95) 0%, rgba(255, 255, 255, 0.78) 100%) !important;
  border-bottom-color: rgba(10, 15, 28, 0.08) !important;
}
[data-theme="light"] .topbar::before { background: linear-gradient(180deg, rgba(255, 255, 255, 0.7), transparent) !important; }
[data-theme="light"] .topbar::after { opacity: 0.25; }
[data-theme="light"] .topbar-divider { background: rgba(10, 15, 28, 0.12); }
[data-theme="light"] .topbar-meta-1 { color: var(--c-primary); }
[data-theme="light"] .topbar-meta-2 { color: #0a0f1c; }
[data-theme="light"] .logo-mark { color: #ffffff; }
[data-theme="light"] .logo-mark::after { background: var(--c-primary); box-shadow: 0 0 4px #ffffff, 0 0 8px var(--c-primary); }
[data-theme="light"] .logo-cn { color: #0a0f1c !important; }
[data-theme="light"] .logo-en { color: var(--c-primary) !important; opacity: 0.85; }

/* footer 浅色 · 纯白底(去渐变) */
[data-theme="light"] .footer { background: #ffffff; border-top: 1px solid rgba(10, 15, 28, 0.08); }
[data-theme="light"] .footer * { color: rgba(0, 0, 0, 0.6) !important; }
[data-theme="light"] .footer-meta { color: rgba(0, 0, 0, 0.55) !important; }

/* 4 个 KPI 卡 · 浅色阴影更轻(让卡片感觉白净) */
[data-theme="light"] .kpi-strip .ks { box-shadow: 0 1px 3px rgba(10, 15, 28, 0.04); }
[data-theme="light"] .kpi-strip .ks:hover { box-shadow: 0 6px 18px rgba(10, 15, 28, 0.08), 0 0 0 1px currentColor; }

/* 3 角色卡 · 浅色阴影更轻 */
[data-theme="light"] .role-card-v2 { box-shadow: 0 1px 3px rgba(10, 15, 28, 0.04); }
[data-theme="light"] .role-card-v2:hover { box-shadow: 0 8px 24px rgba(10, 15, 28, 0.1), 0 0 0 1px currentColor, 0 0 20px rgba(var(--c-primary-rgb), 0.2); }

/* 6 大业务卡 · 浅色阴影更轻 */
[data-theme="light"] .biz-card { box-shadow: 0 1px 3px rgba(10, 15, 28, 0.04); }
[data-theme="light"] .biz-card:hover { box-shadow: 0 8px 24px rgba(10, 15, 28, 0.1), 0 0 0 1px currentColor, 0 0 20px rgba(var(--c-primary-rgb), 0.2); }

/* 表单输入框 · 浅色更深边框 */
[data-theme="light"] .form-actions .btn-ghost { background: #ffffff; }
[data-theme="light"] .form-actions .btn-ghost:hover { background: rgba(10, 15, 28, 0.04); }

/* hero 浅色 */
[data-theme="light"] .hero-kicker { color: var(--c-primary); }
[data-theme="light"] .hero-kicker .kl, [data-theme="light"] .hero-kicker .kr { background: linear-gradient(90deg, var(--c-primary), transparent); }
[data-theme="light"] .hero-kicker .kr { background: linear-gradient(90deg, transparent, var(--c-primary)); }
[data-theme="light"] .hero-title-pre { color: var(--c-primary) !important; letter-spacing: 2px; }
[data-theme="light"] .hero-title-main { color: #0a0f1c !important; text-shadow: none; letter-spacing: 1px; }
[data-theme="light"] .hero-sub { color: rgba(0, 0, 0, 0.6) !important; letter-spacing: 2.5px; }
[data-theme="light"] .hero-sub-dot { background: var(--c-primary); box-shadow: 0 0 4px var(--c-primary-soft); }

/* 整体结构 · 浅色 */
[data-theme="light"] .login-shell { background: transparent; }
[data-theme="light"] .login-main { background: #ffffff; border-color: rgba(10, 15, 28, 0.08); }
[data-theme="light"] .login-left { background: #ffffff !important; }
[data-theme="light"] .login-right { background: #ffffff !important; }
[data-theme="light"] .login-right::before { opacity: 0.4; }

/* rq-item · 浅色实色饱和 */
[data-theme="light"] .role-quick { background: #ffffff !important; border-color: rgba(10, 15, 28, 0.12); }
[data-theme="light"] .rq-item { color: rgba(0, 0, 0, 0.5); }
[data-theme="light"] .rq-item:hover { background: rgba(10, 15, 28, 0.05); color: #0a0f1c; }
[data-theme="light"] .rq-item.gov { color: #007a8a; }
[data-theme="light"] .rq-item.ent { color: #b06a00; }
[data-theme="light"] .rq-item.sci { color: #4a1a99; }
[data-theme="light"] .rq-item.is-active.gov { background: var(--c-cyan); color: #ffffff; box-shadow: 0 0 8px rgba(0, 184, 212, 0.5); }
[data-theme="light"] .rq-item.is-active.ent { background: var(--c-amber); color: #1a1206; box-shadow: 0 0 8px rgba(255, 182, 39, 0.5); }
[data-theme="light"] .rq-item.is-active.sci { background: var(--c-violet); color: #ffffff; box-shadow: 0 0 8px rgba(123, 44, 255, 0.5); }

/* form-head · 浅色 */
[data-theme="light"] .form-head { border-bottom-color: rgba(10, 15, 28, 0.1) !important; }
[data-theme="light"] .form-kicker { color: var(--c-primary); }
[data-theme="light"] .form-title { color: #0a0f1c !important; }
[data-theme="light"] .form-status .sd { background: var(--c-primary); box-shadow: 0 0 6px var(--c-primary-soft); }
[data-theme="light"] .form-status .sv { color: var(--c-primary); }
