:root {
  /* ===== 默认主题：dark（科技蓝 · 夜间） ===== */
  --bg: #182334;                 /* 深蓝灰主背景 */
  --bg2: #1e2d42;                /* 卡片/侧栏背景 */
  --bg3: #283549;                /* 次级背景/输入框 */
  --text: #f8fafc;               /* 主文本 · 纯白偏冷 */
  --text2: #cbd5e1;              /* 次要文本 · 浅蓝灰 */
  --text3: #94a3b8;              /* 提示文本 · 蓝灰 */
  --text-muted: var(--text3);    /* 兼容：图表注释/ muted 文本（原未定义，回退提示色） */
  --border: rgba(var(--brand-rgb),0.22);     /* 浅蓝边 */
  --border2: rgba(var(--brand-rgb),0.40);    /* 中蓝边 */
  --border-strong: rgba(var(--brand-rgb),0.55);
  /* 品牌色（科技蓝 · 夜间默认） */
  --brand: #3b82f6;
  --brand-rgb: 59,130,246;
  --brand-deep: #2563eb;
  --brand-bright: #22d3ee;
  --brand-soft: rgba(var(--brand-rgb),0.06);
  --brand-glow: rgba(var(--brand-rgb),0.18);
  --accent-grad: linear-gradient(135deg, #3b82f6 0%, #22d3ee 50%, #2563eb 100%);
  --accent-grad-soft: linear-gradient(135deg, #2563eb 0%, #22d3ee 100%);
  /* 兼容旧变量名（组件大量引用，请勿删除） */
  --gold: #3b82f6;
  --gold-deep: #60a5fa;
  --gold-light: #60a5fa;
  --gold-bright: #22d3ee;
  --gold-pale: #1e3a5f;
  --gold-soft: #233449;
  --blue: #3b82f6;
  --teal: #22d3ee;
  --teal-rgb: 34,211,238;
  --accent: var(--brand);
  /* 语义色（暗色 · 高饱和） */
  --coral: #f43f5e;
  --amber: #f59e0b;
  --green: #22c55e;
  --purple: #8b5cf6;
  --red: #ef4444;
  --pink: #ec4899;
  --success: #22c55e;
  --warning: #f59e0b;
  --error: #ef4444;
  --info: #3b82f6;
  /* 渐变：蓝青科技感 */
  --gradient1: linear-gradient(135deg, #3b82f6 0%, #22d3ee 50%, #2563eb 100%);
  --gradient2: linear-gradient(135deg, #2563eb 0%, #22d3ee 100%);
  --gradient3: linear-gradient(135deg, #1d4ed8 0%, #3b82f6 100%);
  /* 阴影：蓝色调 */
  --shadow-sm: 0 2px 8px rgba(var(--brand-rgb),0.10);
  --shadow-md: 0 4px 20px rgba(var(--brand-rgb),0.14);
  --shadow-lg: 0 8px 40px rgba(var(--brand-rgb),0.18);
  --shadow-card: 0 1px 3px rgba(0,0,0,0.28);
  --radius: 14px;
  --radius-sm: 10px;
  --radius-xs: 8px;
  --glass: rgba(30,45,66,0.72);
  --glass-border: rgba(255,255,255,0.06);
  --chart-grid: rgba(148,163,184,0.12);
  --chart-axis: #94a3b8;
}
* { margin:0; padding:0; box-sizing:border-box; }
body { font-family: -apple-system, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif; background:var(--bg); color:var(--text); line-height:1.6; overflow-x:hidden; }

/* ===== Login (premium · theme-driven · no AI decoration) ===== */
.login-wrap {
  display: flex; align-items: center; justify-content: center; min-height: 100vh;
  position: relative; overflow: hidden; padding: 24px;
  background:
    radial-gradient(120% 75% at 50% -8%, var(--brand-soft) 0%, transparent 55%),
    radial-gradient(ellipse at top, var(--bg2) 0%, var(--bg) 66%);
}

/* 登录卡片 */
.login-card {
  position: relative; z-index: 2;
  width: 384px; max-width: 100%;
  background: var(--bg2);
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 44px 40px 36px;
  box-shadow: var(--shadow-lg);
  animation: loginFloat .7s ease both;
}

/* 品牌区 */
.login-brand { text-align: center; }
.login-logo-img {
  width: 62px; height: auto; margin: 0 auto 18px; display: block;
  filter: drop-shadow(0 6px 18px var(--brand-glow));
}
.login-card h1 {
  margin: 0 0 8px; font-size: 22px; text-align: center;
  color: var(--text); font-weight: 700; letter-spacing: 2px;
}
.login-card .login-tagline {
  margin: 0; font-size: 12px; text-align: center; color: var(--text3);
  letter-spacing: 2px; font-weight: 400;
}

/* 分隔线 */
.login-divider { height: 1px; background: var(--border); margin: 26px 0 22px; }

/* 表单 */
.login-card .input-group { position: relative; margin-bottom: 16px; }
.login-card .input-group svg {
  position: absolute; left: 16px; top: 50%; transform: translateY(-50%); z-index: 1;
  color: var(--text3); transition: color .25s; display: block; width: 16px; height: 16px;
}
.login-card .input-group:focus-within svg { color: var(--brand); }
.login-card input {
  width: 100%; padding: 13px 16px 13px 44px;
  background: var(--bg3); border: 1px solid var(--border);
  border-radius: var(--radius-sm); color: var(--text); font-size: 14px;
  outline: none; transition: border-color .25s, box-shadow .25s, background .25s;
}
.login-card input::placeholder { color: var(--text3); opacity: .7; }
.login-card input:focus {
  border-color: var(--brand); background: var(--bg2);
  box-shadow: 0 0 0 3px var(--brand-soft);
}

/* 登录按钮：纯品牌色（与主应用一致，去渐变/流光） */
.btn.login-submit {
  width: 100%; margin-top: 10px; padding: 13px; font-size: 14px;
  border-radius: var(--radius-sm); letter-spacing: 4px; font-weight: 600;
}

/* 底部版权 */
.login-footer {
  position: absolute; bottom: 28px; left: 50%; transform: translateX(-50%);
  font-size: 11px; letter-spacing: 1px; color: var(--text3); opacity: .8;
  z-index: 1; white-space: nowrap; text-align: center;
}

@keyframes loginFloat { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: translateY(0); } }

/* ===== Buttons ===== */
.btn { padding:8px 18px; border-radius:8px; font-size:13px; cursor:pointer; border:1px solid var(--border); background:var(--bg2); color:var(--text); transition:all .25s; font-weight:500; }
.btn:hover { box-shadow:var(--shadow-sm); transform:translateY(-1px); }
.btn-primary { background:var(--brand); border:none; color:#fff; font-weight:600; }
.btn-primary:hover { background:var(--brand-deep); box-shadow:0 2px 10px rgba(var(--brand-rgb),0.22); transform:translateY(-1px); }
.btn-sm { padding:5px 14px; font-size:12px; }

/* ===== Layout ===== */
.app { display:none; min-height:100vh; }
.app.show { display:flex; }
.sidebar { width:230px; background:var(--bg2); border-right:1px solid var(--border); padding:20px 0; flex-shrink:0; display:flex; flex-direction:column; box-shadow:2px 0 12px rgba(0,0,0,0.03); }
.sidebar .logo { padding:0 20px 24px; font-size:16px; font-weight:700; border-bottom:1px solid var(--border); margin-bottom:8px; display:flex; align-items:center; justify-content:center; gap:10px; }
.sidebar .logo .logo-text { font-size:15px; font-weight:700; background:linear-gradient(135deg, #3b82f6, #22d3ee, #60a5fa); -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; letter-spacing:1px; white-space:nowrap; }
.sidebar nav { padding:8px 0; }
.sidebar nav a { display:flex; align-items:center; gap:12px; padding:11px 20px; color:var(--text2); font-size:13px; font-weight:500; transition:all .25s; border-left:3px solid transparent; cursor:pointer; text-decoration:none; position:relative; }
.sidebar nav a:hover { color:var(--text); background:rgba(var(--brand-rgb),0.04); }
.sidebar nav a.active { color:var(--blue); background:rgba(var(--brand-rgb),0.06); border-left-color:var(--blue); }
.sidebar nav a.active .nav-icon { color:var(--blue); }
.sidebar nav a .nav-icon { font-size:10px; width:20px; height:20px; display:flex; align-items:center; justify-content:center; color:var(--text3); transition:color .25s; }
.sidebar nav a .nav-icon svg { display:block; width:100%; height:100%; color:inherit; fill:none; }
/* 仅对显式 fill="currentColor" 的元素保留填充（如计算器屏幕、日期点） */
.sidebar nav a .nav-icon svg [fill="currentColor"] { fill:currentColor; }
/* 兼容旧的内联 fill="white"（如收据底） */
.sidebar nav a .nav-icon svg [fill="white"] { fill:#fff; }
.sidebar .user-info { padding:16px 20px; border-top:1px solid var(--border); margin-top:auto; font-size:12px; color:var(--text2); }

/* 侧边栏一级分组导航 */
.nav-group { margin-top:2px; }
.nav-group-title { display:flex!important; align-items:center; gap:12px; padding:11px 20px!important; color:var(--text2); font-size:13px; font-weight:600; cursor:pointer; text-decoration:none; border-left:3px solid transparent; transition:all .25s; user-select:none; }
.nav-group-title:hover { color:var(--text); background:rgba(var(--brand-rgb),0.04); }
.nav-group-title .nav-arrow { margin-left:auto; transition:transform .3s ease; color:var(--text3); }
.nav-group.open .nav-group-title .nav-arrow { transform:rotate(90deg); }
.nav-group.open .nav-group-title { color:var(--text); }
.nav-group-items { max-height:0; overflow:hidden; transition:max-height .3s ease; }
.nav-group.open .nav-group-items { max-height:1600px; }
.nav-group-items a { padding-left:52px!important; font-size:12.5px!important; font-weight:400!important; }

.main { flex:1; padding:0 32px 32px; overflow-y:auto; background:var(--bg); }
.main.sa-mode, .main.wf-mode { padding-top:0 !important; }
.main.iframe-mode { padding:0 !important; overflow:hidden; }

/* ===== Date bar ===== */
.date-bar { display:flex; justify-content:space-between; align-items:center; padding:14px 0 18px; border-bottom:1px solid var(--border); margin-bottom:24px; position:sticky; top:0; background:var(--bg); z-index:10; backdrop-filter:blur(12px); }
.date-bar { display:flex; justify-content:space-between; align-items:center; padding:14px 0 18px; border-bottom:1px solid var(--border); margin-bottom:24px; position:sticky; top:0; background:var(--bg); z-index:10; backdrop-filter:blur(12px); }
/* 当显示供应商账龄表/仓库收费表时，纯CSS隐藏日期条 */
.main:has(#sec-supplier-aging.active) .date-bar,
.main:has(#sec-warehouse-fee.active) .date-bar,
.main.sa-mode .date-bar,
.main.wf-mode .date-bar { display:none !important; }
/* 账龄表/仓库表内容贴顶 */
.main.sa-mode #sec-supplier-aging,
.main.wf-mode #sec-warehouse-fee { padding-top:0 !important; margin-top:0 !important; }
.date-bar-left { display:flex; align-items:center; gap:12px; }
.date-bar select { padding:7px 14px; background:var(--bg2); border:1px solid var(--border); border-radius:8px; color:var(--text); font-size:13px; outline:none; cursor:pointer; transition:all .2s; }
.date-bar select:focus { border-color:var(--blue); box-shadow:0 0 0 3px rgba(var(--brand-rgb),0.1); }
.date-range { display:flex; align-items:center; gap:8px; }
.date-range input { padding:7px 12px; background:var(--bg2); border:1px solid var(--border); border-radius:8px; color:var(--text); font-size:13px; outline:none; transition:all .2s; }
.date-range input:focus { border-color:var(--blue); }

/* ===== Header ===== */
.page-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:24px; }
.page-header h1 { font-size:22px; font-weight:700; letter-spacing:.5px; display:flex; align-items:center; gap:12px; }
.page-header h1 .title-icon { width:26px; height:26px; color:var(--blue); flex-shrink:0; }

/* 标题图标动画 */
.title-icon.icon-spin { animation:iconSpin 8s linear infinite; }
.title-icon.icon-pulse { animation:iconPulse 2.5s ease-in-out infinite; }
.title-icon.icon-blink { animation:iconBlink 2s ease-in-out infinite; }
.title-icon.icon-float { animation:iconFloat 3s ease-in-out infinite; }
.title-icon.icon-scan { animation:iconScan 3s ease-in-out infinite; transform-origin:center; }
.title-icon.icon-rotate { animation:iconRotate 10s linear infinite; transform-origin:center; }
.title-icon.icon-wave { animation:iconWave 2.5s ease-in-out infinite; transform-origin:center; }
.title-icon.icon-glow { filter:none; animation:none; }
.title-icon.icon-bounce { animation:iconBounce 2s ease-in-out infinite; }

@keyframes iconSpin { to { transform:rotate(360deg); } }
@keyframes iconPulse { 0%,100%{transform:scale(1);opacity:1} 50%{transform:scale(1.15);opacity:.7} }
@keyframes iconBlink { 0%,100%{opacity:1} 50%{opacity:.4} }
@keyframes iconFloat { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-3px)} }
@keyframes iconScan { 0%,100%{transform:translateX(0)} 50%{transform:translateX(2px)} }
@keyframes iconRotate { 0%{transform:rotate(-8deg)} 50%{transform:rotate(8deg)} 100%{transform:rotate(-8deg)} }
@keyframes iconWave { 0%,100%{transform:translateY(0)} 25%{transform:translateY(-2px)} 75%{transform:translateY(2px)} }
@keyframes iconGlow { 0%,100%{filter:drop-shadow(0 0 3px currentColor)} 50%{filter:drop-shadow(0 0 8px currentColor)} }
@keyframes iconBounce { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-4px)} }

.live-dot { display:flex; align-items:center; gap:6px; font-size:12px; color:var(--green); font-weight:500; }
.pulse { width:8px; height:8px; border-radius:50%; background:var(--green); animation:livePulse 2s ease-in-out infinite; }
@keyframes livePulse { 0%,100%{opacity:1;transform:scale(1)} 50%{opacity:.4;transform:scale(1.3)} }

/* ===== Metrics ===== */
.metrics { display:grid; grid-template-columns:repeat(auto-fit, minmax(200px,1fr)); gap:16px; margin-bottom:28px; }
.metric-card { background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); padding:20px 22px; transition:border-color .25s ease, box-shadow .25s ease, transform .25s ease; position:relative; overflow:hidden; display:flex; flex-direction:column; }
.metric-card::before, .metric-card::after, .metric-card .metric-shine, .metric-card .value::after { display:none; }
.metric-card:hover { box-shadow:var(--shadow-card); transform:translateY(-2px); border-color:var(--border2); }
.metric-card .metric-icon { width:22px; height:22px; margin-bottom:10px; color:var(--text2); opacity:.85; }
.metric-card .label { font-size:12px; color:var(--text3); margin-bottom:8px; font-weight:500; letter-spacing:.4px; text-transform:uppercase; display:flex; align-items:center; gap:8px; }
.metric-card .value { position:relative; font-size:28px; font-weight:700; letter-spacing:-.5px; font-variant-numeric:tabular-nums; }
.metric-card .sub { font-size:12px; margin-top:6px; color:var(--text2); }
.metric-card .sub.up { color:var(--red); }
.metric-card .sub.down { color:var(--green); }

/* ===== Charts ===== */
.charts { display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-bottom:28px; }
.chart-card { background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); padding:24px; transition:box-shadow .3s; }
.chart-card:hover { box-shadow:var(--shadow-sm); }
.chart-card h3 { font-size:14px; font-weight:600; margin-bottom:18px; color:var(--text2); display:flex; align-items:center; gap:8px; }
.chart-card h3::before { content:''; width:4px; height:16px; border-radius:2px; background:var(--brand); }
.chart-card canvas { width:100%!important; }
#chart-profit-rank, #chart-margin-dist,
#chart-product-cost { height:360px!important; }
#chart-product-diff { height:420px!important; }
.chart-full { grid-column: 1 / -1; }

/* ===== Tables ===== */
.table-card { background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); padding:24px; margin-bottom:28px; overflow-x:auto; }
.table-card h3 { font-size:14px; font-weight:600; margin-bottom:18px; color:var(--text2); display:flex; align-items:center; gap:8px; }
.table-card h3::before { content:''; width:4px; height:16px; border-radius:2px; background:var(--brand); }
table { width:100%; border-collapse:collapse; font-size:13px; }
th { text-align:left; color:var(--text3); font-weight:600; padding:10px 14px; border-bottom:2px solid var(--border); white-space:nowrap; font-size:12px; letter-spacing:.3px; text-transform:uppercase; }
td { padding:10px 14px; border-bottom:1px solid var(--border); white-space:nowrap; font-variant-numeric:tabular-nums; }
tr:hover td { background:rgba(var(--brand-rgb),0.03); }
.num, .kpi-value, .metric-value { font-variant-numeric:tabular-nums; }
.badge { display:inline-block; padding:3px 10px; border-radius:6px; font-size:11px; font-weight:600; }
.badge-green { background:rgba(34,197,94,0.12); color:#22c55e; }
.badge-red { background:rgba(239,68,68,0.12); color:#f43f5e; }
.badge-blue { background:rgba(var(--brand-rgb),0.15); color:#60a5fa; }
.badge-amber { background:rgba(245,158,11,0.12); color:#f59e0b; }
.badge-purple { background:rgba(139,92,246,0.15); color:#a78bfa; }
.empty-state { text-align:center; padding:56px 20px; color:var(--text3); }
.empty-state .empty-icon { font-size:40px; margin-bottom:16px; opacity:.4; }
.empty-state p { font-size:14px; }

/* ===== Coming Soon (功能开发中占位) ===== */
.coming-soon { text-align:center; padding:80px 20px; color:var(--text3); }
.coming-soon-icon { margin-bottom:24px; display:flex; justify-content:center; }
.coming-soon h2 { font-size:22px; font-weight:600; color:var(--text2); margin:0 0 12px 0; }
.coming-soon p { font-size:14px; color:var(--text3); margin:0; }

/* ===== Flow steps ===== */
.flow-steps { display:flex; gap:8px; align-items:center; margin-bottom:28px; flex-wrap:wrap; }
.flow-step { background:var(--bg2); border:1px solid var(--border); border-radius:12px; padding:18px 22px; font-size:12px; text-align:center; flex:1; min-width:130px; transition:all .3s; position:relative; overflow:hidden; }
.flow-step::after { content:''; position:absolute; bottom:0; left:0; right:0; height:3px; background:var(--brand); opacity:0; transition:opacity .3s; }
.flow-step:hover { box-shadow:var(--shadow-md); transform:translateY(-2px); border-color:rgba(var(--brand-rgb),0.15); }
.flow-step:hover::after { opacity:1; }
.flow-step .step-title { font-weight:600; margin-bottom:6px; color:var(--text2); font-size:12px; letter-spacing:.5px; }
.flow-step .step-amount { font-size:22px; font-weight:700; }
.flow-step .step-sub { color:var(--text3); font-size:11px; margin-top:4px; }
.flow-arrow { color:var(--blue); font-size:20px; flex-shrink:0; opacity:.4; }

/* ===== Section toggle ===== */
.section { display:none; animation:sectionIn .4s ease; }
.section.active { display:block; }
@keyframes sectionIn { from{opacity:0;transform:translateY(12px)} to{opacity:1;transform:translateY(0)} }

/* ===== Tabs ===== */
.tabs { display:flex; gap:4px; margin-bottom:20px; background:var(--bg3); border-radius:10px; padding:4px; width:fit-content; }
.tab { padding:7px 18px; font-size:13px; color:var(--text3); cursor:pointer; border-radius:8px; transition:all .25s; font-weight:500; }
.tab:hover { color:var(--text2); }
.tab.active { color:var(--blue); background:var(--bg2); box-shadow:0 2px 8px rgba(0,0,0,0.06); }

/* ===== Forms ===== */
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.form-group { margin-bottom:14px; }
.form-group label { display:block; font-size:12px; color:var(--text3); margin-bottom:5px; font-weight:600; letter-spacing:.3px; }
.form-group input, .form-group select, .form-group textarea { width:100%; padding:9px 14px; background:var(--bg3); border:1px solid var(--border); border-radius:8px; color:var(--text); font-size:13px; outline:none; transition:all .2s; }
.form-group input:focus, .form-group select:focus { border-color:var(--blue); box-shadow:0 0 0 3px rgba(var(--brand-rgb),0.08); }

/* ===== Modal ===== */
.modal-overlay { position:fixed; inset:0; background:rgba(10,14,39,0.5); backdrop-filter:blur(4px); display:none; align-items:center; justify-content:center; z-index:100; }
.modal-overlay.show { display:flex; animation:modalIn .25s ease; }
@keyframes modalIn { from{opacity:0} to{opacity:1} }
.modal { background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); padding:28px; width:560px; max-width:90vw; max-height:80vh; overflow-y:auto; box-shadow:var(--shadow-lg); animation:modalBoxIn .3s ease; }
@keyframes modalBoxIn { from{opacity:0;transform:scale(.95) translateY(10px)} to{opacity:1;transform:scale(1) translateY(0)} }
.modal h3 { font-size:17px; margin-bottom:18px; font-weight:700; }
.modal .btn-row { display:flex; gap:10px; margin-top:22px; justify-content:flex-end; }

/* ===== Toast ===== */
.toast { position:fixed; top:24px; right:24px; padding:12px 24px; border-radius:10px; font-size:13px; z-index:200; display:none; font-weight:500; box-shadow:0 8px 24px rgba(0,0,0,0.15); }
.toast.show { display:block; animation:toastIn .4s ease; }
.toast-success { background:var(--green); color:#fff; }
.toast-error { background:var(--red); color:#fff; }
@keyframes toastIn { from{opacity:0;transform:translateX(20px)} to{opacity:1;transform:translateX(0)} }

/* ===== Scrollbar ===== */
::-webkit-scrollbar { width:6px; }
::-webkit-scrollbar-track { background:var(--bg); }
::-webkit-scrollbar-thumb { background:var(--border); border-radius:3px; }
::-webkit-scrollbar-thumb:hover { background:var(--text3); }

/* ===== Hide native input clear button (×) ===== */
input::-ms-clear { display: none; }
input::-ms-reveal { display: none; }
input::-webkit-search-cancel-button { display: none; }

/* ===== Glow effect for data cards ===== */
@keyframes glowBlue { 0%,100%{box-shadow:0 0 0 rgba(var(--brand-rgb),0)} 50%{box-shadow:0 4px 20px rgba(var(--brand-rgb),0.1)} }
.metric-card:nth-child(1) { animation:glowBlue 4s ease-in-out infinite; }
.metric-card:nth-child(3) { animation:glowBlue 4s ease-in-out infinite .5s; }
.metric-card:nth-child(5) { animation:glowBlue 4s ease-in-out infinite 1s; }

/* ===== Responsive ===== */
/* 平板适配 */
@media(max-width:1024px) {
  .sidebar { width:200px; }
  .main { padding:0 20px 20px; }
  .metrics { grid-template-columns:repeat(auto-fit, minmax(180px,1fr)); }
}

/* 手机适配 */
@media(max-width:768px) {
  /* 移动端 app 改为纵向布局，header 在上、main 在下 */
  .app.show { flex-direction:column; }

  /* 隐藏侧边栏，使用滑出式菜单 */
  .sidebar {
    position:fixed;
    left:-280px;
    top:0;
    bottom:0;
    width:280px;
    z-index:1001;
    transition:left 0.3s ease;
    box-shadow:none;
  }
  .sidebar.open {
    left:0;
    box-shadow:4px 0 20px rgba(0,0,0,0.15);
  }

  /* 侧边栏关闭按钮 - 移动端显示 */
  .sidebar-close {
    display:flex !important;
    background:none;
    border:none;
    font-size:20px;
    color:var(--text2);
    cursor:pointer;
    padding:4px 8px;
    border-radius:6px;
    align-items:center;
    justify-content:center;
  }
  .sidebar-close:hover {
    background:var(--bg3);
  }

  /* 侧边栏头部 */
  .sidebar-header {
    display:flex;
    justify-content:space-between;
    align-items:center;
    padding:20px 20px 16px;
    border-bottom:1px solid var(--border);
    margin-bottom:8px;
  }
  .sidebar-header .logo {
    font-size:16px;
    font-weight:700;
    display:flex;
    align-items:center;
    gap:10px;
  }

  /* 侧边栏遮罩 */
  .sidebar-overlay {
    display:none;
    position:fixed;
    inset:0;
    background:rgba(0,0,0,0.5);
    z-index:1000;
  }
  .sidebar-overlay.show {
    display:block;
    animation:fadeIn 0.3s ease;
  }

  /* 移动端顶部导航栏 */
  .mobile-header {
    display:flex;
    position:sticky;
    top:0;
    z-index:99;
    background:var(--bg2);
    border-bottom:1px solid var(--border);
    padding:12px 16px;
    align-items:center;
    justify-content:space-between;
    box-shadow:0 2px 8px rgba(0,0,0,0.04);
  }
  .menu-btn {
    background:none;
    border:none;
    color:var(--text);
    cursor:pointer;
    padding:6px;
    border-radius:8px;
    display:flex;
    align-items:center;
    justify-content:center;
  }
  .menu-btn:active {
    background:var(--bg3);
  }
  .mobile-title {
    font-size:15px;
    font-weight:700;
    color:var(--text);
  }
  .mobile-ai-btn {
    background:none;
    border:none;
    color:var(--blue);
    cursor:pointer;
    padding:6px;
    border-radius:8px;
    display:flex;
    align-items:center;
    justify-content:center;
  }
  .mobile-ai-btn:active {
    background:rgba(var(--brand-rgb),0.1);
  }

  /* 主内容区域 - 移动端全宽 */
  .main {
    flex:1;
    width:100%;
    padding:0 16px 16px;
    margin-top:0;
    overflow-y:auto;
  }

  /* 日期筛选栏 */
  .date-bar {
    flex-direction:column;
    gap:10px;
    align-items:stretch;
    padding:12px 0 16px;
  }
  .date-bar-left {
    flex-direction:column;
    gap:8px;
  }
  .date-bar select {
    width:100%;
  }
  .date-range {
    flex-direction:column;
    gap:6px;
  }
  .date-range input {
    width:100%;
  }
  .date-bar-right {
    text-align:center;
  }

  /* 页面标题 */
  .page-header {
    flex-direction:column;
    gap:10px;
    align-items:flex-start;
  }
  .page-header h1 {
    font-size:18px;
  }

  /* 指标卡片 */
  .metrics {
    grid-template-columns:1fr 1fr;
    gap:10px;
  }
  .metric-card {
    padding:14px 16px;
  }
  .metric-card .value {
    font-size:22px;
  }

  /* 图表 */
  .charts {
    grid-template-columns:1fr;
    gap:16px;
  }
  .chart-card {
    padding:16px;
  }
  .chart-card h3 {
    font-size:13px;
  }

  /* 流程步骤 */
  .flow-steps {
    gap:6px;
  }
  .flow-step {
    padding:14px 16px;
    min-width:auto;
    flex:1 1 40%;
  }
  .flow-arrow {
    display:none;
  }

  /* 表格 */
  .table-card {
    padding:16px 12px;
    overflow-x:auto;
  }
  table {
    font-size:12px;
    min-width:600px;
  }
  th, td {
    padding:8px 10px;
  }

  /* 标签页 */
  .tabs {
    width:100%;
    overflow-x:auto;
    flex-wrap:nowrap;
  }
  .tab {
    white-space:nowrap;
    padding:7px 14px;
    font-size:12px;
  }

  /* 表单 */
  .form-row {
    grid-template-columns:1fr;
    gap:0;
  }
  .modal {
    width:95vw;
    padding:20px;
  }

  /* AI面板 - 移动端全屏 */
  .ai-fab {
    bottom:20px;
    right:20px;
    width:50px;
    height:50px;
  }
  .ai-panel {
    position:fixed;
    bottom:0;
    right:0;
    left:0;
    top:0;
    width:auto;
    height:auto;
    border-radius:0;
    z-index:1002;
  }
  .ai-panel:not(.open) {
    display:none;
  }
  .ai-bubble {
    max-width:85%;
  }

  /* 登录页 */
  .login-card {
    padding:38px 26px 30px;
    width:92%;
    max-width:360px;
    border-radius:16px;
  }
  .login-card h1 { font-size:20px; letter-spacing:1.5px; }
  .login-card .login-tagline { font-size:11px; }
  .login-logo-img { width:54px; margin-bottom:14px; }
  .login-divider { margin:22px 0 18px; }
  .login-card .input-group { margin-bottom:14px; }
  .login-card input { padding:13px 14px 13px 42px; font-size:15px; }
  .btn.login-submit { padding:13px; font-size:14px; letter-spacing:3px; }
}

/* 中等手机 (480px 以下) */
@media(max-width:480px) {
  .login-wrap { padding:0; }
  .login-card { padding:32px 22px 26px; width:94%; max-width:none; }
  .login-card h1 { font-size:19px; letter-spacing:1px; }
  .login-card .login-tagline { font-size:10px; }
  .login-logo-img { width:48px; margin-bottom:12px; }
  .login-divider { margin:20px 0 16px; }
  .login-card .input-group { margin-bottom:14px; }
  .login-card .input-group svg { left:14px; width:15px; height:15px; }
  .login-card input { padding:14px 12px 14px 40px; font-size:16px; border-radius:10px; }
  .login-card input::placeholder { font-size:14px; }
  .btn.login-submit { padding:14px; font-size:14px; letter-spacing:2px; border-radius:10px; }
}

/* 超小屏幕手机 */
@media(max-width:375px) {
  .metrics {
    grid-template-columns:1fr;
  }
  .mobile-title {
    font-size:14px;
  }
  .login-card { padding:28px 18px 22px; width:96%; }
  .login-card h1 { font-size:18px; letter-spacing:1px; }
  .login-card .login-tagline { font-size:9px; }
  .login-logo-img { width:44px; margin-bottom:10px; }
  .login-divider { margin:18px 0 14px; }
  .login-card input { padding:13px 10px 13px 38px; font-size:15px; }
  .btn.login-submit { padding:13px; font-size:13px; letter-spacing:2px; }
}

/* 横屏手机 - 登录页紧凑布局 */
@media(max-width:820px) and (orientation:landscape) and (max-height:500px) {
  .login-wrap { align-items:flex-start; padding:20px 0; overflow-y:auto; }
  .login-footer { display:none; }
  .login-card { padding:24px 28px 20px; width:360px; max-width:92%; }
  .login-logo-img { width:44px; margin-bottom:10px; }
  .login-card h1 { font-size:18px; margin-bottom:4px; }
  .login-card .login-tagline { font-size:10px; margin-bottom:18px; }
  .login-divider { margin:14px 0 12px; }
  .login-card .input-group { margin-bottom:12px; }
  .login-card input { padding:11px 12px 11px 38px; }
  .btn.login-submit { padding:11px; margin-top:6px; }
}

/* 尊重 prefers-reduced-motion：关闭卡片入场动画 */
@media (prefers-reduced-motion: reduce) {
  .login-card { animation: none !important; }
}

@keyframes fadeIn {
  from { opacity:0; }
  to { opacity:1; }
}


/* ===== AI Assistant ===== */
.ai-fab {
  position:fixed; bottom:28px; right:28px; width:56px; height:56px;
  background:var(--gradient1); border-radius:50%; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 4px 20px rgba(var(--brand-rgb),0.4);
  transition:all .3s; z-index:999;
}
.ai-fab:hover { transform:scale(1.1); box-shadow:0 6px 28px rgba(var(--brand-rgb),0.5); }

.ai-panel {
  position:fixed; bottom:28px; right:28px; width:400px; height:560px;
  background:var(--bg2); border-radius:16px;
  box-shadow:0 8px 40px rgba(0,0,0,0.15);
  display:none; flex-direction:column; z-index:1000;
  animation:aiSlideUp .3s ease;
  border:1px solid var(--border);
}
.ai-panel.open { display:flex; }

@keyframes aiSlideUp {
  from { opacity:0; transform:translateY(20px); }
  to { opacity:1; transform:translateY(0); }
}

.ai-header {
  display:flex; justify-content:space-between; align-items:center;
  padding:16px 20px; border-bottom:1px solid var(--border);
  background:linear-gradient(135deg, #3b82f6 0%, #22d3ee 100%);
  border-radius:16px 16px 0 0; color:white;
}
.ai-header-left { display:flex; align-items:center; gap:8px; font-weight:600; font-size:14px; }
.ai-model-tag { background:rgba(255,255,255,0.2); padding:2px 8px; border-radius:10px; font-size:11px; font-weight:400; }
.ai-close { background:none; border:none; color:white; font-size:18px; cursor:pointer; opacity:0.8; }
.ai-close:hover { opacity:1; }

.ai-messages {
  flex:1; overflow-y:auto; padding:16px; display:flex; flex-direction:column; gap:12px;
}
.ai-messages::-webkit-scrollbar { width:4px; }
.ai-messages::-webkit-scrollbar-thumb { background:var(--border); border-radius:2px; }

.ai-msg { display:flex; gap:10px; animation:aiMsgIn .3s ease; }
.ai-msg.ai-user { flex-direction:row-reverse; }
@keyframes aiMsgIn { from { opacity:0; transform:translateY(8px); } to { opacity:1; transform:translateY(0); } }

.ai-avatar { width:32px; height:32px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; flex-shrink:0; }
.ai-bot .ai-avatar { background:linear-gradient(135deg, #3b82f6, #22d3ee); color:white; }
.ai-user .ai-avatar { background:var(--gold-deep); color:white; }

.ai-bubble { max-width:280px; padding:10px 14px; border-radius:12px; font-size:13px; line-height:1.6; }
.ai-bot .ai-bubble { background:var(--bg3); color:var(--text); border-bottom-left-radius:4px; }
.ai-user .ai-bubble { background:var(--blue); color:white; border-bottom-right-radius:4px; }

.ai-suggestion { color:var(--blue); cursor:pointer; text-decoration:underline; }
.ai-suggestion:hover { opacity:0.8; }

.ai-sql-block { background:#0f1929; color:#e2e8f0; padding:10px 12px; border-radius:8px; margin-top:8px; font-family:monospace; font-size:12px; overflow-x:auto; white-space:pre-wrap; }

.ai-typing { display:flex; gap:4px; padding:8px 0; }
.ai-typing span { width:6px; height:6px; background:var(--text3); border-radius:50%; animation:aiDot 1.4s ease-in-out infinite; }
.ai-typing span:nth-child(2) { animation-delay:.2s; }
.ai-typing span:nth-child(3) { animation-delay:.4s; }
@keyframes aiDot { 0%,80%,100% { opacity:.3; transform:scale(.8); } 40% { opacity:1; transform:scale(1); } }

.ai-quick-actions {
  display:flex; gap:6px; padding:8px 16px; flex-wrap:wrap; border-top:1px solid var(--border);
}
.ai-quick-actions button {
  background:var(--bg3); border:1px solid var(--border); border-radius:20px;
  padding:4px 12px; font-size:12px; cursor:pointer; transition:all .2s; color:var(--text2);
}
.ai-quick-actions button:hover { background:var(--blue); color:white; border-color:var(--blue); }

.ai-input-area {
  display:flex; gap:8px; padding:12px 16px; border-top:1px solid var(--border);
}
.ai-input-area input {
  flex:1; border:1px solid var(--border); border-radius:10px;
  padding:10px 14px; font-size:13px; outline:none; transition:border .2s;
}
.ai-input-area input:focus { border-color:var(--blue); }
.ai-send {
  width:40px; height:40px; border-radius:10px; border:none;
  background:var(--gradient1); cursor:pointer; display:flex;
  align-items:center; justify-content:center; transition:all .2s;
}
.ai-send:hover { transform:scale(1.05); }
.ai-send:disabled { opacity:0.5; cursor:not-allowed; }

/* AI 模式切换 */
.ai-modes { display:flex; gap:4px; padding:10px 16px 0; }
.ai-mode {
  flex:1; background:var(--bg3); border:1px solid var(--border); border-radius:8px;
  padding:6px 0; font-size:12px; cursor:pointer; transition:all .2s; color:var(--text2);
}
.ai-mode:hover { border-color:var(--blue); color:var(--text); }
.ai-mode.active { background:var(--blue); color:#fff; border-color:var(--blue); font-weight:600; }

/* AI 查真实数据结果表格 */
.ai-table-wrap { max-height:240px; overflow:auto; margin-top:8px; border:1px solid var(--border); border-radius:8px; background:var(--bg2); }
.ai-table { border-collapse:collapse; width:100%; font-size:11px; }
.ai-table th, .ai-table td { border:1px solid var(--border); padding:4px 8px; text-align:left; white-space:nowrap; }
.ai-table th { background:var(--bg3); color:var(--text2); position:sticky; top:0; font-weight:600; }
.ai-table td { color:var(--text); }
.ai-rows { margin-top:6px; font-size:11px; color:var(--text3); }
.ai-err { margin-top:6px; font-size:12px; color:var(--amber); }

/* ===== Customer Profile ===== */
.profile-dim-tabs {
  display:flex; gap:4px; margin-left:auto; flex-wrap:wrap;
}
.profile-dim-tabs .tab {
  font-size:13px; padding:6px 14px; border-radius:8px;
  cursor:pointer; transition:all .2s;
}
.profile-dim-tabs .tab.active {
  background:var(--blue); color:white;
}

.profile-dim-content {
  display:none;
  animation:fadeIn .3s ease;
}
.profile-dim-content.active {
  display:block;
}

/* 评分条 */
.score-bar {
  position:relative; height:20px; background:var(--bg3); border-radius:10px; overflow:hidden; min-width:80px;
}
.score-bar .score-fill {
  height:100%; border-radius:10px; transition:width .6s ease;
}
.score-bar span {
  position:absolute; top:0; left:0; right:0; line-height:20px;
  text-align:center; font-size:11px; font-weight:700; color:var(--text);
  text-shadow:0 0 4px rgba(255,255,255,0.8);
}

/* 雷达图弹窗 */
.profile-radar-overlay {
  display:none; position:fixed; inset:0; background:rgba(0,0,0,0.4);
  backdrop-filter:blur(4px); z-index:1100; align-items:center; justify-content:center;
}
.profile-radar-overlay.show {
  display:flex;
}
.profile-radar-card {
  background:var(--bg2); border-radius:16px; padding:28px;
  max-width:520px; width:90vw; box-shadow:var(--shadow-lg);
  animation:aiSlideUp .3s ease;
}

/* 雷达图维度详情 */
.radar-details {
  margin-top:20px; display:flex; flex-direction:column; gap:10px;
}
.radar-dim-item {
  display:flex; align-items:center; gap:10px; font-size:13px;
}
.radar-dim-name {
  width:70px; font-weight:600; color:var(--text2); flex-shrink:0;
}
.radar-dim-score {
  width:30px; text-align:center; font-weight:700; flex-shrink:0;
}
.radar-dim-detail {
  font-size:12px; color:var(--text3); flex-shrink:0; min-width:100px;
}

/* 移动端客户画像适配 */
@media(max-width:768px) {
  .profile-dim-tabs {
    margin-left:0; margin-bottom:12px; width:100%;
    overflow-x:auto; flex-wrap:nowrap;
    -webkit-overflow-scrolling:touch;
  }
  .profile-dim-tabs .tab {
    white-space:nowrap; font-size:12px; padding:5px 10px;
  }
  .profile-radar-card {
    padding:20px; max-width:95vw;
  }
  .radar-dim-detail {
    display:none;
  }
}

/* 银行凭证模块样式 */
.row-muted { opacity: 0.6; }
.bv-account-item:hover { background: #283549 !important; }
.bv-account-item[style*="e6f7ff"] { background: #283549 !important; }

/* ==================== 供应商账龄表模块 ==================== */
.page-actions { display:flex; gap:10px; align-items:center; }
.btn-outline { background:transparent; border:1px solid var(--border2); color:var(--blue); }
.btn-outline:hover { border-color:var(--brand-bright); color:var(--brand-bright); box-shadow:0 2px 8px rgba(var(--brand-rgb),0.12); background:var(--brand-soft); }

.metric-cards { display:grid; grid-template-columns:repeat(auto-fit, minmax(190px,1fr)); gap:16px; margin-bottom:24px; }
.metric-cards .metric-card { background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); padding:18px 22px; position:relative; overflow:hidden; transition:all .3s; }
.metric-cards .metric-card::before { content:''; position:absolute; top:0; left:0; right:0; height:3px; background:linear-gradient(90deg,#3b82f6,#22d3ee,#2563eb); opacity:.7; }
.metric-cards .metric-card:hover { box-shadow:0 8px 24px rgba(var(--brand-rgb),0.1); transform:translateY(-2px); }
.metric-cards .metric-card .metric-label { font-size:12px; color:var(--text3); margin-bottom:8px; font-weight:500; letter-spacing:.5px; }
.metric-cards .metric-card .metric-value { font-size:24px; font-weight:700; color:var(--text); letter-spacing:-.5px; }
.metric-cards .metric-card .metric-value.pos { color:#3b82f6; }   /* 正数/欠款 - 蓝 */
.metric-cards .metric-card .metric-value.neg { color:#f43f5e; }   /* 负数/预付 - 红 */
.metric-cards .metric-card .metric-value.warn { color:#f59e0b; }  /* 差异预警 - 橙 */

.tab-bar { display:flex; gap:6px; padding:6px; background:var(--bg); border-radius:10px; margin-bottom:16px; border:1px solid var(--border); }
.tab-bar .tab { flex:0 0 auto; }

.filter-bar { display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin:12px 0; }

.data-table { width:100%; border-collapse:collapse; font-size:13px; }
.data-table thead th { background:#233449; color:#60a5fa; font-weight:600; padding:10px 12px; text-align:left; border-bottom:2px solid rgba(var(--brand-rgb),0.2); white-space:nowrap; position:sticky; top:0; }
.data-table tbody td { padding:9px 12px; border-bottom:1px solid var(--border); color:var(--text); white-space:nowrap; }
.data-table tbody tr:hover { background:#283549; }
.data-table tbody tr { cursor:pointer; transition:background .15s; }
.data-table .num { text-align:right; font-variant-numeric:tabular-nums; }
.data-table .num.pos { color:#3b82f6; }
.data-table .num.neg { color:#f43f5e; }
.data-table .badge { display:inline-block; padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600; }
.data-table .badge.warn { background:rgba(245,158,11,0.12); color:#f59e0b; }
.data-table .badge.ok { background:rgba(34,197,94,0.12); color:#22c55e; }


/* 趋势弹窗 */
.aging-trend-card { background:#1e2d42; border:1px solid rgba(var(--brand-rgb),0.18); border-radius:12px; padding:24px; max-width:680px; width:100%; }
.aging-trend-card h3 { font-size:16px; font-weight:700; color:var(--text); margin:0 0 6px 0; }
.aging-trend-card .trend-sub { font-size:12px; color:var(--text3); margin-bottom:16px; }
.aging-trend-card canvas { width:100%!important; }
.aging-trend-meta { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-top:16px; }
.aging-trend-meta .m { background:#233449; border-radius:8px; padding:12px; }
.aging-trend-meta .m .l { font-size:11px; color:var(--text3); margin-bottom:4px; }
.aging-trend-meta .m .v { font-size:18px; font-weight:700; color:#e2e8f0; }

@media (max-width:768px) {
  .metric-cards { grid-template-columns:repeat(2,1fr); }
  .tab-bar { overflow-x:auto; }
  .filter-bar { flex-direction:column; align-items:stretch; }
  .filter-bar input, .filter-bar select { width:100%; }
  .aging-trend-meta { grid-template-columns:1fr; }
  .sa-summary-cards { grid-template-columns:repeat(2,1fr); }
}

/* ===== 供应商账龄表专用样式 ===== */
.sa-summary-cards { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
.sa-summary-cards .summary-card { background:linear-gradient(135deg, #1e2d42 0%, #182334 100%); border:1px solid rgba(var(--brand-rgb),0.15); border-radius:12px; padding:16px; box-shadow:0 2px 8px rgba(0,0,0,0.03); transition:all .2s; }
.sa-summary-cards .summary-card:hover { transform:translateY(-2px); box-shadow:0 6px 16px rgba(var(--brand-rgb),0.08); border-color:rgba(var(--brand-rgb),0.25); }
.sa-summary-cards .summary-label { font-size:12px; color:#cbd5e1; margin-bottom:6px; }
.sa-summary-cards .summary-value { font-size:22px; font-weight:700; color:#e2e8f0; font-variant-numeric:tabular-nums; }
.sa-summary-cards .summary-value.pos { color:#3b82f6; }
.sa-summary-cards .summary-value.neg { color:#f43f5e; }

.sa-table-wrap { overflow:auto; max-height:calc(100vh - 280px); position:relative; border-radius:0 0 var(--radius) var(--radius); }
.sa-table { border-collapse:separate; border-spacing:0; }
.sa-table thead th { position:sticky; top:0; z-index:2; background:#233449; box-shadow:0 1px 0 rgba(var(--brand-rgb),0.2); }
.sa-table tbody tr:nth-child(even) { background:#1a2738; }
.sa-table tbody tr { transition:background .15s; }
.sa-table tbody tr:hover { background:#283549; }
.sa-table tbody td { padding:10px 12px; border-bottom:1px solid rgba(15,23,42,0.06); }
.sa-table tfoot tr.total-row { background:#233449; font-weight:700; color:#e2e8f0; position:sticky; bottom:0; box-shadow:0 -1px 0 rgba(var(--brand-rgb),0.2); }
.sa-table .empty-cell { text-align:center; padding:48px; color:var(--text3); font-size:14px; }
.sa-table .remark { font-size:11px; color:#cbd5e1; max-width:180px; white-space:normal; line-height:1.4; }
.sa-table .bold { font-weight:700; }
.sa-supplier-link { color:#60a5fa; font-weight:600; text-decoration:none; border-bottom:1px dashed rgba(var(--brand-rgb),0.3); }
.sa-supplier-link:hover { color:#22d3ee; border-bottom-style:solid; }

/* ②期初维护批量操作 */
.sa-batch-bar { display:none; align-items:center; justify-content:space-between; padding:10px 14px; margin-bottom:10px; background:linear-gradient(90deg,#1e2d42,#283549); border:1px solid rgba(var(--brand-rgb),0.25); border-radius:8px; }
.sa-batch-bar.show { display:flex; }
.sa-batch-count { font-size:13px; color:#cbd5e1; }
.sa-batch-count strong { color:#22d3ee; font-size:15px; margin:0 2px; }
.sa-batch-actions { display:flex; gap:8px; }
.sa-batch-delete { background:#ef4444; color:#fff; border:none; padding:6px 14px; border-radius:6px; font-size:13px; cursor:pointer; }
.sa-batch-delete:hover { background:#b91c1c; }
.sa-batch-cancel { background:#283549; color:#cbd5e1; border:none; padding:6px 14px; border-radius:6px; font-size:13px; cursor:pointer; }
.sa-batch-cancel:hover { background:#334155; }
.sa-checkbox-cell { width:36px; text-align:center; }
.sa-checkbox-cell input[type="checkbox"] { cursor:pointer; width:15px; height:15px; accent-color:#3b82f6; }
.sa-table tr.sa-row-selected { background:#233449 !important; }
.sa-table tr.sa-row-selected:hover { background:#283549 !important; }

#sec-supplier-aging .page-header h1 { font-size:24px; }
#sec-supplier-aging .btn-primary svg { vertical-align:-2px; margin-right:6px; }

.sa-report-header { display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:16px; gap:16px; flex-wrap:wrap; }
.sa-report-title { font-size:20px; font-weight:700; color:#e2e8f0; margin:0; letter-spacing:.5px; }
.sa-report-filters { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.sa-report-filters select,
.sa-report-filters input { padding:7px 12px; border:1px solid rgba(var(--brand-rgb),0.25); border-radius:8px; font-size:13px; background:#1e2d42; color:var(--text); min-width:120px; }
.sa-report-filters select:focus,
.sa-report-filters input:focus { outline:none; border-color:rgba(var(--brand-rgb),0.5); box-shadow:0 0 0 3px rgba(var(--brand-rgb),0.08); }

.sa-table .seq { text-align:center; color:var(--text3); width:50px; }
.sa-table .month-head { white-space:nowrap; background:#233449 !important; color:#60a5fa !important; }

@media (max-width:768px) {
  .sa-report-header { flex-direction:column; align-items:flex-start; }
  .sa-report-filters { width:100%; }
  .sa-report-filters select,
  .sa-report-filters input { flex:1; min-width:0; }
}



/* ===== Theme: Elegant Gold ===== */
[data-theme="light"] {
  /* ===== 日间主题：白金雅致 ===== */
  --bg: #f5f6f8;                 /* 浅冷灰页面底 */
  --bg2: #ffffff;                /* 卡片/侧栏面 */
  --bg3: #eef0f4;                /* 输入框/次级底 */
  --text: #1f2733;               /* 近黑蓝灰主文本 */
  --text2: #4a5568;              /* 次要文本 */
  --text3: #8a94a6;              /* 提示文本 */
  --text-muted: var(--text3);
  --border: rgba(31,39,51,0.10);
  --border2: rgba(31,39,51,0.16);
  --border-strong: rgba(31,39,51,0.28);
  /* 品牌色：深古铜金 */
  --brand: #9a7838;
  --brand-rgb: 154,120,56;
  --brand-deep: #7a5e26;
  --brand-bright: #c4a258;
  --brand-soft: rgba(154,120,56,0.08);
  --brand-glow: rgba(154,120,56,0.20);
  --accent-grad: linear-gradient(135deg, #b8975a 0%, #9a7838 50%, #7a5e26 100%);
  --accent-grad-soft: linear-gradient(135deg, #c4a258 0%, #9a7838 100%);
  /* 兼容旧变量名 */
  --gold: #9a7838;
  --gold-deep: #7a5e26;
  --gold-light: #c4a258;
  --gold-bright: #c4a258;
  --gold-pale: #efe7d6;
  --gold-soft: #f3ecdc;
  --blue: #9a7838;               /* 主操作/强调（日间用金） */
  --teal: #b8975a;
  --teal-rgb: 154,120,56;
  --accent: var(--brand);
  /* 语义色（日间 · 加深保证对比度） */
  --coral: #c0563a;
  --amber: #b07a1e;
  --green: #1f9d57;
  --purple: #8a6a10;
  --red: #c0392b;
  --pink: #c2417a;
  --success: #1f9d57;
  --warning: #b07a1e;
  --error: #c0392b;
  --info: #9a7838;
  /* 渐变：金 */
  --gradient1: linear-gradient(135deg, #b8975a 0%, #9a7838 50%, #7a5e26 100%);
  --gradient2: linear-gradient(135deg, #c4a258 0%, #9a7838 100%);
  --gradient3: linear-gradient(135deg, #b1914f 0%, #9a7838 100%);
  /* 阴影：浅色柔和 */
  --shadow-sm: 0 1px 3px rgba(31,39,51,0.08);
  --shadow-md: 0 6px 20px rgba(31,39,51,0.10);
  --shadow-lg: 0 12px 40px rgba(31,39,51,0.14);
  --shadow-card: 0 1px 2px rgba(31,39,51,0.06);
  --radius: 14px;
  --radius-sm: 10px;
  --radius-xs: 8px;
  --glass: rgba(255,255,255,0.72);
  --glass-border: rgba(31,39,51,0.06);
  --chart-grid: rgba(31,39,51,0.08);
  --chart-axis: #8a94a6;
}

/* ===== 日间白金 · 主框架组件增强 ===== */
[data-theme="light"] .sidebar { background:linear-gradient(180deg,#ffffff 0%,#fafbfc 100%); box-shadow:2px 0 12px rgba(31,39,51,0.05); }
[data-theme="light"] .sidebar .logo .logo-text { background:linear-gradient(135deg,#b8975a,#9a7838,#7a5e26); -webkit-background-clip:text; -webkit-text-fill-color:transparent; }
[data-theme="light"] .sidebar nav a.active { color:var(--brand); background:var(--brand-soft); border-left-color:var(--brand); font-weight:600; }
[data-theme="light"] .sidebar nav a.active .nav-icon { color:var(--brand); }
[data-theme="light"] .nav-group-title:hover { color:var(--text); }
[data-theme="light"] .page-header h1 .title-icon { color:var(--brand); }
[data-theme="light"] .chart-card, [data-theme="light"] .table-card, [data-theme="light"] .metric-card { border-color:rgba(31,39,51,0.08); }
[data-theme="light"] .metric-card:hover { box-shadow:var(--shadow-md); border-color:var(--brand-soft); }
[data-theme="light"] .chart-card:hover { box-shadow:var(--shadow-sm); }
[data-theme="light"] .tab.active { color:var(--brand); background:var(--bg2); box-shadow:0 2px 8px rgba(31,39,51,0.06); }
[data-theme="light"] .btn-primary { background:#9a7838; color:#fff; font-weight:600; }
[data-theme="light"] .btn-primary:hover { background:#7a5e26; box-shadow:0 2px 10px rgba(154,120,56,0.22); }
[data-theme="light"] .btn:hover { box-shadow:var(--shadow-sm); }
[data-theme="light"] .ai-header { background:linear-gradient(135deg, #b8975a 0%, #9a7838 100%); }
[data-theme="light"] .ai-bot .ai-avatar { background:linear-gradient(135deg, #b8975a, #9a7838); }
[data-theme="light"] .ai-fab { box-shadow:0 6px 22px rgba(154,120,56,0.35); }
[data-theme="light"] .ai-fab:hover { box-shadow:0 8px 28px rgba(154,120,56,0.45); }
[data-theme="light"] .ai-mode.active { background:var(--brand); border-color:var(--brand); }
[data-theme="light"] .ccchain-dept-btn, [data-theme="light"] .ccchip.active { background:var(--brand); border-color:var(--brand); }
[data-theme="light"] ::-webkit-scrollbar-track { background:var(--bg3); }
[data-theme="light"] ::-webkit-scrollbar-thumb { background:rgba(31,39,51,0.18); }
[data-theme="light"] ::-webkit-scrollbar-thumb:hover { background:rgba(31,39,51,0.30); }


/* ==================== 宝石绿主题 ==================== */
[data-theme="emerald"] {
  --bg: #f0f9f6;
  --bg2: #ffffff;
  --bg3: #ecfdf5;
  --text: #052e2b;
  --text2: #4b5563;
  --text3: #6b7280;
  --border: rgba(16,185,129,0.22);
  --border2: rgba(16,185,129,0.4);
  --gold: #0d9488;       /* 主色 · 深 teal */
  --gold-deep: #0f766e;  /* 强调深绿 */
  --gold-light: #14b8a6; /* 中 teal */
  --gold-bright: #10b981;/* 亮翠绿 · 点缀 */
  --gold-pale: #d1fae5;  /* 浅绿背景 */
  --gold-soft: #f0fdf4;  /* 极浅绿 */
  --blue: #0d9488;       /* 主品牌色 */
  --teal: #14b8a6;
  --coral: #b91c1c;      /* 红 · 警示 */
  --amber: #f59e0b;
  --green: #10b981;
  --purple: #6366f1;
  --red: #b91c1c;        /* 红 · 危险 */
  --pink: #ec4899;
  --gradient1: linear-gradient(135deg, #0d9488 0%, #10b981 50%, #14b8a6 100%);
  --gradient2: linear-gradient(135deg, #0f766e 0%, #14b8a6 100%);
  --gradient3: linear-gradient(135deg, #134e4a 0%, #0d9488 100%);
  --shadow-sm: 0 2px 8px rgba(16,185,129,0.10);
  --shadow-md: 0 4px 20px rgba(16,185,129,0.12);
  --shadow-lg: 0 8px 40px rgba(16,185,129,0.16);
  --glass: rgba(255,255,255,0.72);
}

[data-theme="emerald"] .sidebar { background: linear-gradient(180deg, #0f766e 0%, #134e4a 100%); }
[data-theme="emerald"] .sidebar .nav-group-title { color: rgba(255,255,255,0.85); }
[data-theme="emerald"] .sidebar nav a { color: rgba(255,255,255,0.7); }
[data-theme="emerald"] .sidebar nav a:hover { background: rgba(255,255,255,0.06); color: #fff; }
[data-theme="emerald"] .sidebar nav a.active { color: #6ee7b7; background: rgba(16,185,129,0.15); border-left-color: #6ee7b7; }
[data-theme="emerald"] .sidebar nav a.active .nav-icon { color: #6ee7b7; }
[data-theme="emerald"] .btn-primary { background: #0d9488; color:#fff; font-weight:600; }
[data-theme="emerald"] .btn-primary:hover { background: #0f766e; box-shadow:0 2px 10px rgba(13,148,136,0.22); }
[data-theme="emerald"] .page-header { background: linear-gradient(135deg, rgba(13,148,136,0.05), rgba(20,184,166,0.03)); }
[data-theme="emerald"] .metric-card .metric-icon { color: #0d9488; }
[data-theme="emerald"] .metric-card:hover .metric-icon { color: #10b981; }
[data-theme="emerald"] .metric-card .metric-shine { display:none; }
[data-theme="emerald"] .tab.active { color: #0d9488; }
[data-theme="emerald"] .toast-success { background: #10b981; }
[data-theme="emerald"] .toast-error { background: #b91c1c; }
[data-theme="emerald"] .ai-fab { background: linear-gradient(135deg, #0d9488, #10b981); }
[data-theme="emerald"] .ai-user .ai-bubble { background: #0d9488; }

/* ==================== 霓虹紫电主题 ==================== */
[data-theme="violet"] {
  --bg:#0e0a1a; --bg2:#15102a; --bg3:#1e1738;
  --text:#f5f3ff; --text2:#c9c2e8; --text3:#8b82b0;
  --border:rgba(168,85,247,.28); --border2:rgba(168,85,247,.45); --border-strong:rgba(168,85,247,.6);
  --brand:#a855f7; --brand-rgb:168,85,247; --brand-deep:#7c3aed; --brand-bright:#ec4899;
  --brand-soft:rgba(168,85,247,.08); --brand-glow:rgba(168,85,247,.28);
  --accent-grad:linear-gradient(135deg,#7c3aed 0%,#a855f7 58%,#c084fc 100%);
  --accent-grad-soft:linear-gradient(135deg,#a855f7 0%,#ec4899 100%);
  --gold:#a855f7; --gold-deep:#7c3aed; --gold-light:#c084fc; --gold-bright:#ec4899; --gold-soft:#241a3d; --gold-pale:#2d1f4d;
  --blue:#a855f7; --teal:#22d3ee; --teal-rgb:168,85,247;
  --green:#10b981; --amber:#f59e0b; --red:#ef4444; --coral:#f43f5e; --purple:#a855f7; --pink:#ec4899;
  --success:#10b981; --warning:#f59e0b; --error:#ef4444; --info:#a855f7;
  --gradient1:linear-gradient(135deg,#a855f7 0%,#ec4899 100%); --gradient2:linear-gradient(135deg,#7c3aed 0%,#c084fc 100%); --gradient3:linear-gradient(135deg,#a855f7 0%,#8b5cf6 100%);
  --shadow-sm:0 1px 3px rgba(0,0,0,.4); --shadow-md:0 6px 24px rgba(168,85,247,.18); --shadow-lg:0 12px 44px rgba(168,85,247,.24);
  --shadow-card:0 1px 3px rgba(0,0,0,.4);
  --radius:14px; --radius-sm:10px; --radius-xs:8px;
  --glass:rgba(168,85,247,.06); --glass-border:rgba(168,85,247,.12);
  --chart-grid:rgba(168,85,247,.10); --chart-axis:#8b82b0;
}

/* 霓虹紫电 · 侧栏 */
[data-theme="violet"] .sidebar { background: linear-gradient(180deg, #1a1330 0%, #120c24 100%); box-shadow:2px 0 16px rgba(168,85,247,0.10); }
[data-theme="violet"] .sidebar .logo .logo-text { background: linear-gradient(135deg,#c084fc,#a855f7,#ec4899); -webkit-background-clip:text; -webkit-text-fill-color:transparent; }
[data-theme="violet"] .sidebar nav a.active { color:#e9d5ff; background:rgba(168,85,247,0.14); border-left-color:#c084fc; }
[data-theme="violet"] .sidebar nav a.active .nav-icon { color:#c084fc; }
[data-theme="violet"] .sidebar nav a:hover { background:rgba(168,85,247,0.07); color:#fff; }
[data-theme="violet"] .nav-group-title:hover { color:var(--text); }


/* 霓虹紫电 · 主框架组件 */
[data-theme="violet"] .page-header { background: linear-gradient(135deg, rgba(168,85,247,0.06), rgba(236,72,153,0.03)); }
[data-theme="violet"] .chart-card, [data-theme="violet"] .table-card, [data-theme="violet"] .metric-card { border-color:rgba(168,85,247,0.14); }
[data-theme="violet"] .metric-card:hover { box-shadow:var(--shadow-md); border-color:rgba(168,85,247,0.3); }
[data-theme="violet"] .metric-card .metric-icon { color:#a855f7; }
[data-theme="violet"] .metric-card:hover .metric-icon { color:#c084fc; }
[data-theme="violet"] .tab.active { color:#c084fc; background:var(--bg2); box-shadow:0 2px 8px rgba(168,85,247,0.18); }
[data-theme="violet"] .btn-primary { background: #a855f7; color:#fff; font-weight:600; }
[data-theme="violet"] .btn-primary:hover { background: #7c3aed; box-shadow:0 2px 10px rgba(168,85,247,0.22); }
[data-theme="violet"] .ai-header { background: linear-gradient(135deg, #a855f7 0%, #7c3aed 100%); }
[data-theme="violet"] .ai-bot .ai-avatar { background: linear-gradient(135deg, #a855f7, #7c3aed); }
[data-theme="violet"] .ai-fab { background: linear-gradient(135deg, #a855f7, #ec4899); box-shadow:0 6px 22px rgba(168,85,247,0.4); }
[data-theme="violet"] .ai-fab:hover { box-shadow:0 8px 28px rgba(168,85,247,0.55); }
[data-theme="violet"] .ai-user .ai-bubble { background:#7c3aed; }
[data-theme="violet"] .ai-mode.active { background:var(--brand); border-color:var(--brand); }
[data-theme="violet"] .ccchain-dept-btn, [data-theme="violet"] .ccchip.active { background:var(--brand); border-color:var(--brand); }
[data-theme="violet"] .toast-success { background:#a855f7; }
[data-theme="violet"] .toast-error { background:#ef4444; }
[data-theme="violet"] ::-webkit-scrollbar-track { background:var(--bg3); }
[data-theme="violet"] ::-webkit-scrollbar-thumb { background:rgba(168,85,247,0.4); }
[data-theme="violet"] ::-webkit-scrollbar-thumb:hover { background:rgba(168,85,247,0.6); }

/* ===== Theme Selection Panel (refined) ===== */
.theme-panel-mask { position:fixed; inset:0; background:rgba(8,6,16,.5); backdrop-filter:blur(3px); z-index:9998; opacity:0; visibility:hidden; transition:opacity .22s; }
.theme-panel-mask.open { opacity:1; visibility:visible; }
.theme-panel {
  position:fixed; left:50%; top:50%; transform:translate(-50%,-50%) scale(.97);
  z-index:9999; width:420px; max-width:92vw; max-height:88vh; overflow:auto;
  background:var(--bg2); border:1px solid var(--border); border-radius:16px;
  box-shadow:0 24px 70px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.04);
  opacity:0; visibility:hidden; transition:opacity .22s, transform .22s; padding:20px;
}
.theme-panel.open { opacity:1; visibility:visible; transform:translate(-50%,-50%) scale(1); }
.theme-panel-head { display:flex; align-items:baseline; justify-content:space-between; margin-bottom:18px; }
.theme-panel-head h3 { margin:0; font-size:15px; letter-spacing:.04em; color:var(--text); font-weight:600; }
.theme-panel-head .sub { font-size:11px; color:var(--text3); letter-spacing:.06em; }
.theme-panel-close { cursor:pointer; color:var(--text3); background:transparent; border:none; width:28px; height:28px; border-radius:8px; font-size:18px; line-height:1; transition:all .15s; }
.theme-panel-close:hover { color:var(--text); background:var(--bg3); }
.theme-options { display:flex; flex-direction:column; gap:10px; }
.theme-option {
  cursor:pointer; display:flex; gap:14px; align-items:center;
  border:1px solid var(--border); border-radius:12px; padding:12px;
  background:var(--bg3); transition:border-color .18s, background .18s;
  position:relative; text-align:left;
}
.theme-option:hover { border-color:var(--brand); background:rgba(var(--brand-rgb),.10); }
.theme-option.active { border-color:var(--brand); box-shadow:0 0 0 1px var(--brand); background:rgba(var(--brand-rgb),.12); }
/* 每个主题的迷你真实预览（data-theme 作用域，渲染该主题真实效果） */
.theme-mock { width:94px; min-width:94px; height:62px; border-radius:8px; overflow:hidden; display:flex; background:var(--bg); border:1px solid rgba(255,255,255,.10); position:relative; box-shadow:inset 0 1px 0 rgba(255,255,255,.05); }
.theme-mock .tm-side { width:20px; background:var(--bg3); }
.theme-mock .tm-body { flex:1; padding:6px; display:flex; flex-direction:column; gap:4px; }
.theme-mock .tm-bar { height:5px; border-radius:3px; background:var(--brand); opacity:.85; }
.theme-mock .tm-num { height:11px; width:58%; border-radius:3px; background:var(--brand); opacity:.45; }
.theme-mock .tm-rows { display:flex; gap:4px; margin-top:auto; }
.theme-mock .tm-card { flex:1; height:13px; border-radius:3px; background:var(--bg2); border:1px solid var(--border); }
.theme-meta { flex:1; min-width:0; }
.theme-name { font-size:13.5px; color:var(--text); font-weight:600; letter-spacing:.01em; }
.theme-desc { font-size:11px; color:var(--text3); margin-top:3px; letter-spacing:.02em; }
.theme-option .tm-tag { position:absolute; top:10px; right:12px; font-size:10px; color:#fff; background:var(--brand); padding:2px 8px; border-radius:20px; letter-spacing:.04em; opacity:0; transform:scale(.9); transition:opacity .15s, transform .15s; }
.theme-option.active .tm-tag { opacity:1; transform:scale(1); }
@media (max-width:480px){ .theme-panel{ width:92vw; } }

[data-theme="light"] .sidebar .logo .logo-text { background: linear-gradient(135deg, #b8860b, #daa520, #c9952b); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
[data-theme="light"] .ai-header { background: linear-gradient(135deg, #b8860b 0%, #daa520 100%); }
[data-theme="light"] .ai-bot .ai-avatar { background: linear-gradient(135deg, #b8860b, #daa520); }
[data-theme="light"] .metric-cards .metric-card::before { background: linear-gradient(90deg,#b8860b,#daa520,#c9952b); }
[data-theme="light"] .data-table thead th { background: #faf6e8; color: #8a6a10; border-bottom-color: rgba(184,134,11,0.2); }
[data-theme="light"] .data-table tbody tr:hover { background: #fffdf5; }
[data-theme="light"] .sa-table tbody tr:hover { background: #fff8e1; }
[data-theme="light"] .sa-table tbody tr:nth-child(even) { background: #fffdf5; }
[data-theme="light"] .sa-table thead th { background: #faf6e8; box-shadow: 0 1px 0 rgba(184,134,11,0.2); }
[data-theme="light"] .sa-table tfoot tr.total-row { background: #faf6e8; color: #5c4a1f; box-shadow: 0 -1px 0 rgba(184,134,11,0.2); }
[data-theme="light"] .sa-row-selected { background: #fff8e1 !important; }
[data-theme="light"] .sa-row-selected:hover { background: #fff3c4 !important; }
[data-theme="light"] .sa-summary-cards .summary-card { background: linear-gradient(135deg, #fff 0%, #fffdf5 100%); border-color: rgba(184,134,11,0.15); }
[data-theme="light"] .sa-batch-bar { background: linear-gradient(90deg,#fff5e6,#fff); border-color: rgba(184,134,11,0.25); }
[data-theme="light"] .sa-card-header { background: linear-gradient(90deg, #faf6e8, #fff); }
[data-theme="light"] .sa-card-header h3 { color: #8b6914; }
[data-theme="light"] .sa-six-month-table .month-head { background: #faf6e8; }
[data-theme="light"] .sa-table .month-head { background: #f8f4e6 !important; color: #7a5f15 !important; }
[data-theme="light"] .sa-diff-item { background: #fafafa; }

/* ===== Theme Toggle ===== */
.theme-toggle { display:flex; align-items:center; gap:8px; padding:10px 20px; cursor:pointer; color:var(--text2); font-size:13px; font-weight:500; transition:all .2s; border:none; background:transparent; width:100%; text-align:left; }
.theme-toggle:hover { color:var(--blue); background:rgba(var(--brand-rgb),0.04); }
.theme-toggle svg { width:18px; height:18px; }
[data-theme="light"] .theme-toggle:hover { background:rgba(184,134,11,0.04); }

/* ===== Sortable table headers & pagination ===== */
th.sortable { cursor:pointer; user-select:none; position:relative; padding-right:22px; }
th.sortable:hover { color:var(--blue); }
.sort-arrow { display:inline-block; width:14px; font-size:10px; opacity:.4; position:absolute; right:4px; }
.sort-arrow.asc::after { content:'\25B2'; opacity:1; color:var(--blue); }
.sort-arrow.desc::after { content:'\25BC'; opacity:1; color:var(--blue); }
.cc-page-btn { padding:4px 10px;border:1px solid var(--border);border-radius:4px;background:var(--bg3);color:var(--text);cursor:pointer;font-size:12px; }
.cc-page-btn:hover { border-color:var(--blue);color:var(--blue); }
.cc-page-btn.active { background:var(--blue);color:#fff;border-color:var(--blue); }
.cc-page-btn:disabled { opacity:.4;cursor:default; }
.bom-abnormal { background:rgba(239,68,68,0.08) !important; color:var(--red);font-weight:600; }

/* ===== 成本链分析 驾驶舱 ===== */
.ccchain-filters { display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px }
.ccchain-filter-label { font-size:13px;color:var(--text3) }
.ccchip-group { display:flex;gap:6px;flex-wrap:wrap }
.ccchip { display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;cursor:pointer;background:var(--bg3);color:var(--text);user-select:none }
.ccchip.active { background:var(--blue);color:#fff;border-color:var(--blue) }
.ccchain-dept-wrap { position:relative;display:inline-block }
.ccchain-dept-btn { display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:var(--bg3);color:var(--text);cursor:pointer }
.ccchain-dept-dd { display:none;position:absolute;top:100%;left:0;margin-top:4px;background:var(--bg2);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,0.15);padding:8px;min-width:200px;max-height:300px;overflow-y:auto;z-index:100 }
.ccchain-dept-dd-actions { display:flex;gap:8px;margin-bottom:6px;padding-bottom:6px;border-bottom:1px solid var(--border) }
.ccchain-dept-item { display:flex;align-items:center;gap:6px;padding:3px 4px;font-size:13px;cursor:pointer }
.ccchain-dept-dd-foot { margin-top:6px;padding-top:6px;border-top:1px solid var(--border);text-align:right }
.table-card-head { display:flex;justify-content:space-between;align-items:center;margin-bottom:10px }
.table-card-head h3 { margin:0 }

.cost-chain-flow { display:flex;align-items:stretch;gap:0;flex-wrap:wrap;margin:4px 0 20px }
.chain-card { position:relative;flex:1;min-width:200px;background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:18px 18px 14px;overflow:hidden;box-shadow:0 4px 14px rgba(0,0,0,0.06) }
.chain-card-bar { position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--cc) }
.chain-card-title { font-size:15px;font-weight:600;color:var(--text) }
.chain-card-source { font-size:12px;color:var(--text3);margin:2px 0 12px }
.chain-card-amount { font-size:26px;font-weight:700;color:var(--cc);line-height:1.1 }
.chain-card-metric { font-size:12px;color:var(--text2);margin-top:8px;min-height:16px }
.chain-card-link { margin-top:12px;background:none;border:none;color:var(--cc);font-size:13px;cursor:pointer;padding:0;font-weight:600 }
.chain-card-link:hover { text-decoration:underline }
.chain-arrow { display:flex;align-items:center;justify-content:center;color:var(--text3);font-size:22px;padding:0 10px;flex:0 0 auto }
@media (max-width:900px){ .chain-arrow{ transform:rotate(90deg);width:100%;padding:6px 0 } }

/* ===== 单据管理 · 销售明细 ===== */
.sd-toolbar { display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:14px }
.sd-filters { display:flex;gap:8px;align-items:center;flex-wrap:wrap }
.sd-input { padding:7px 11px;border:1px solid var(--border);border-radius:7px;font-size:13px;background:var(--bg3);color:var(--text);min-width:120px }
.sd-input:focus { outline:none;border-color:var(--blue) }
.sd-actions { display:flex;gap:8px;flex-shrink:0 }
#sd-table.data-table { width:100%;border-collapse:collapse;font-size:13px }
#sd-table.data-table th { position:sticky;top:0;background:var(--bg2);color:var(--text2);font-weight:600;text-align:left;padding:9px 10px;border-bottom:1px solid var(--border);white-space:nowrap }
#sd-table.data-table td { padding:8px 10px;border-bottom:1px solid var(--border);color:var(--text);white-space:nowrap }
#sd-table.data-table tbody tr:hover { background:var(--bg3) }
.pager { display:flex;align-items:center;gap:14px;justify-content:center;margin-top:16px }
.pager-info { font-size:13px;color:var(--text2) }

/* ===== 利润分析 精致化 (2026-07-30) ===== */
#sec-profit .metric-cards { gap:18px; margin-bottom:24px; }
#sec-profit .metric-cards .metric-card { padding:18px 20px; border-radius:16px; }
#sec-profit .metric-cards .metric-card::before { background:var(--accent); opacity:.9; height:3px; }
#sec-profit .metric-cards .metric-card .pf-ic { width:36px; height:36px; border-radius:11px; display:flex; align-items:center; justify-content:center; margin-bottom:14px; }
#sec-profit .metric-cards .metric-card .pf-ic svg { width:19px; height:19px; }
#sec-profit .metric-cards .metric-card .metric-label { font-size:12px; letter-spacing:.6px; opacity:.85; }
#sec-profit .metric-cards .metric-card .metric-value { font-size:22px; font-weight:700; letter-spacing:-.3px; }
@keyframes pfFadeUp { from{opacity:0;transform:translateY(12px)} to{opacity:1;transform:none} }
#sec-profit .metric-cards .metric-card { animation:pfFadeUp .55s cubic-bezier(.22,1,.36,1) both; }
#sec-profit .metric-cards .metric-card:nth-child(1){animation-delay:.03s}
#sec-profit .metric-cards .metric-card:nth-child(2){animation-delay:.07s}
#sec-profit .metric-cards .metric-card:nth-child(3){animation-delay:.11s}
#sec-profit .metric-cards .metric-card:nth-child(4){animation-delay:.15s}
#sec-profit .metric-cards .metric-card:nth-child(5){animation-delay:.19s}
#sec-profit .metric-cards .metric-card:nth-child(6){animation-delay:.23s}
#sec-profit .chart-card { border-radius:16px; box-shadow:var(--shadow-sm); }
#sec-profit .chart-card h3 { font-size:13.5px; letter-spacing:.3px; }
#chart-profit-rank, #chart-margin-dist { height:360px!important; }
#profit-table.data-table { font-size:13px; border-radius:12px; overflow:hidden; }
#profit-table.data-table thead th { background:var(--bg3); color:var(--text2); font-weight:600; border-bottom:1px solid var(--border); }
#profit-table.data-table tbody tr:nth-child(even){ background:var(--bg3); }
#profit-table.data-table tbody td { border-bottom:1px solid var(--border); }
#profit-table.data-table tbody tr:hover { background:var(--bg3); filter:brightness(1.04); }
#profit-table.data-table .num { text-align:right; font-variant-numeric:tabular-nums; }

/* ============================================================
   组件库标准化（2026-08-05 框架深度升级）
   目标：补齐缺失组件类、统一控件/按钮/卡片规范，不改动任何配色 Token
   ============================================================ */

/* 统一表单控件：替代散落内联样式，自动跟随双主题 */
.form-control {
  padding:6px 12px; border:1px solid var(--border); border-radius:var(--radius-xs);
  background:var(--bg3); color:var(--text); font-size:13px; font-family:inherit;
  outline:none; transition:border-color .2s, box-shadow .2s; width:100%;
}
.form-control::placeholder { color:var(--text3); }
.form-control:focus { border-color:var(--blue); box-shadow:0 0 0 3px rgba(var(--brand-rgb),0.10); }
/* 内联筛选控件：在 toolbar 内自适应宽度（保留个别显式 width） */
.form-control-inline { width:auto; min-width:120px; }

/* 次级按钮（中性，用于非主操作） */
.btn-secondary { background:var(--bg3); border:1px solid var(--border); color:var(--text); }
.btn-secondary:hover { background:var(--bg2); border-color:var(--border2); box-shadow:var(--shadow-sm); transform:translateY(-1px); }

/* 幽灵按钮（重置/取消类，原 HTML/JS 已用但未定义） */
.btn-ghost { background:transparent; border:1px solid var(--border); color:var(--text2); }
.btn-ghost:hover { border-color:var(--blue); color:var(--blue); background:rgba(var(--brand-rgb),0.04); }

/* 卡片默认层级：静态即带轻阴影，hover 增强（统一质感，消除“平”感） */
.metric-card, .chart-card, .table-card { box-shadow:var(--shadow-card); }

/* 通用工具栏 / 居中面板容器，替代重复内联样式 */
.toolbar-panel {
  display:flex; gap:8px; align-items:center; flex-wrap:wrap;
  padding:10px 14px; background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius-sm);
}
.panel-center {
  display:flex; justify-content:center; align-items:center; gap:6px;
  margin-top:12px; padding:10px 14px; background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius-sm);
}

/* 侧栏激活项：柔化品牌渐变底色，强化层级（日间/夜间通用，light 主题另有覆盖） */
.sidebar nav a.active {
  background:linear-gradient(90deg, rgba(var(--brand-rgb),0.12), rgba(var(--brand-rgb),0.03));
}

/* ===== 侧边栏「星空」微动效（2026-10-30）=====
   设计意图：极淡的呼吸星点 + 缓慢游走的极光晕，只在余光里能感觉到，不抢导航可读性。
   · 星点由 app.js 的 initSidebarStars() 画在 canvas 上（数量按面积自适应，~1 个/3000px²）
   · 光晕是纯 CSS，双层径向渐变 + 26s 缓动位移，透明度上限 0.5
   · 尊重 prefers-reduced-motion：关掉动画与漂移，只留静态星点 */
:root { --sb-star-a: 148,163,184; --sb-star-b: 34,211,238; --sb-star-size: 6.2; --sb-star-alpha: 1; --sb-star-on: 1; }
/* 浅色（白金）底上星点怎么调都像纸面污点——实测棕褐色小点看着就是脏。
   所以浅色主题关掉星点（--sb-star-on:0），只保留一层会缓慢呼吸的冷调珠光，干净且高级。 */
[data-theme="light"] { --sb-star-a: 118,138,162; --sb-star-b: 150,132,96; --sb-star-size: 5; --sb-star-alpha: 0.26; --sb-star-on: 1; }
[data-theme="emerald"] { --sb-star-a: 148,190,175; --sb-star-b: 16,185,129; }
[data-theme="violet"] { --sb-star-a: 170,160,200; --sb-star-b: 139,92,246; }
.sidebar { position:relative; }
.sidebar .sb-fx { position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index:0; }
/* 视差容器：只包光晕，跟着鼠标微微偏移（±9px），星点/光带不跟着动，避免整体晃动 */
.sidebar .sb-aura-wrap {
  position:absolute; inset:0; pointer-events:none;
  transition:transform .55s cubic-bezier(.22,.61,.36,1);
  will-change:transform;
}
.sidebar > *:not(.sb-fx) { position:relative; z-index:1; }
.sidebar .sb-aurora {
  position:absolute; left:-30%; right:-30%; top:-14%; height:78%;
  /* 用多档渐变色标代替 filter:blur —— 模糊层在动画里可能每帧重新光栅化，
     实测会明显拖慢整页（原生月份选择器要等好几秒才弹出来）。渐变是静态绘制的，零每帧成本。 */
  background:
    radial-gradient(closest-side at 32% 26%,
      rgba(var(--brand-rgb),0.14), rgba(var(--brand-rgb),0.09) 32%, rgba(var(--brand-rgb),0.035) 58%, rgba(var(--brand-rgb),0) 100%),
    radial-gradient(closest-side at 74% 58%,
      rgba(var(--sb-star-b),0.075), rgba(var(--sb-star-b),0.04) 40%, rgba(var(--sb-star-b),0) 100%);
  opacity:.5; will-change:transform;
  animation: sbAuroraDrift 26s ease-in-out infinite alternate;
}
/* 浅色底：去掉金调（在白底上发黄＝发脏），换成冷调珠光（顶部偏冷白、下缘透明），
   靠位移+呼吸产生"光在流动"的感觉，没有任何会看成污点的颗粒。 */
[data-theme="light"] .sidebar .sb-aurora {
  background:
    radial-gradient(closest-side at 34% 20%,
      rgba(170,192,222,0.24), rgba(170,192,222,0.12) 34%, rgba(170,192,222,0.035) 62%, rgba(172,194,222,0) 100%),
    radial-gradient(closest-side at 78% 64%,
      rgba(196,210,228,0.10), rgba(196,210,228,0.04) 45%, rgba(196,210,228,0) 100%);
  opacity:.55;
  animation: sbAuroraDrift 34s ease-in-out infinite alternate, sbAuroraBreath 12s ease-in-out infinite;
}
@keyframes sbAuroraBreath {
  0%,100% { filter:brightness(1); }
  50%     { filter:brightness(1.06); }
}
/* 浅色主题的"动"交给一道极淡的冷调光带：22 秒扫过一次，只有 5.5% 灰度差，
   像光线在纸面滑过——看得见在动，但绝不会被当成脏点。深色主题不启用。 */
.sidebar .sb-sheen { display:none; position:absolute; inset:-30% -60%; pointer-events:none; }
[data-theme="light"] .sidebar .sb-sheen {
  display:block;
  background:linear-gradient(112deg,
    rgba(148,168,196,0) 39%, rgba(148,168,196,0.075) 50%, rgba(148,168,196,0) 61%);
  animation: sbSheen 22s cubic-bezier(.45,0,.55,1) infinite;
}
@keyframes sbSheen {
  0%   { transform:translateX(-40%); }
  55%  { transform:translateX(40%); }
  100% { transform:translateX(40%); }
}
@keyframes sbAuroraDrift {
  0%   { transform:translate3d(0,0,0) scale(1); }
  50%  { transform:translate3d(4%,3.5%,0) scale(1.07); }
  100% { transform:translate3d(-3%,-2%,0) scale(1.03); }
}
.sidebar .sb-stars { position:absolute; inset:0; width:100%; height:100%; display:block; }
@media (prefers-reduced-motion: reduce) {
  .sidebar .sb-aurora { animation:none; opacity:.35; }
  .sidebar .sb-stars { opacity:.7; }
}

/* ============================================================================
   iOS 玻璃拟态主题层（Layer）— 4 套皮肤统一升级
   实现要点：桌面用带色调的壁纸（柔和光斑）打底 → 侧栏/卡片/弹窗用半透明
   + backdrop-filter 真正模糊壁纸 → 1px 亮边 + 大扩散软阴影做"悬浮玻璃"。
   每套皮肤只改变量（色温/透明度/阴影），组件规则共用。
   ========================================================================== */

/* ---------- 1. 变量：每套皮肤一组 ---------- */
:root,
[data-theme="dark"] {
  --g-wall-1: rgba(56, 132, 255, .55);
  --g-wall-2: rgba(34, 211, 238, .30);
  --g-wall-3: rgba(37, 99, 235, .42);
  --g-wall-base: #070d18;
  --g-surface: linear-gradient(180deg, rgba(255,255,255,.14) 0%, rgba(255,255,255,.06) 100%), rgba(16, 26, 42, .28);
  --g-surface-2: linear-gradient(180deg, rgba(255,255,255,.075) 0%, rgba(255,255,255,.03) 100%), rgba(16, 26, 42, .30);
  --g-surface-solid: linear-gradient(180deg, rgba(255,255,255,.09) 0%, rgba(255,255,255,.04) 100%), rgba(14, 22, 36, .88);
  --g-border: rgba(255, 255, 255, .14);
  --g-border-strong: rgba(255, 255, 255, .24);
  --g-hi: inset 0 1px 0 rgba(255, 255, 255, .10);
  --g-shadow: 0 12px 34px rgba(3, 8, 18, .42), 0 2px 8px rgba(3, 8, 18, .28);
  --g-shadow-lg: 0 30px 80px rgba(2, 6, 14, .58), 0 6px 20px rgba(2, 6, 14, .36);
  --g-tint: rgba(var(--brand-rgb), .16);
  --g-blur: blur(30px) saturate(180%);
  --g-blur-card: blur(16px) saturate(160%);
  --g-main-veil: rgba(8, 14, 26, .40);
  --g-table-bg: rgba(11, 19, 32, .58);
}

[data-theme="light"] {
  --g-wall-1: rgba(196, 162, 88, .26);
  --g-wall-2: rgba(154, 120, 56, .12);
  --g-wall-3: rgba(255, 236, 200, .55);
  --g-wall-base: #f3f1ec;
  --g-surface: rgba(255, 255, 255, .64);
  --g-surface-2: rgba(255, 255, 255, .52);
  --g-surface-solid: rgba(255, 255, 255, .92);
  --g-border: rgba(255, 255, 255, .92);
  --g-border-strong: rgba(184, 150, 90, .40);
  --g-hi: inset 0 1px 0 rgba(255, 255, 255, .95);
  --g-shadow: 0 12px 32px rgba(120, 96, 48, .14), 0 2px 6px rgba(120, 96, 48, .08), 0 0 0 1px rgba(184, 150, 90, .10);
  --g-shadow-lg: 0 30px 70px rgba(90, 70, 30, .18), 0 6px 18px rgba(90, 70, 30, .08);
  --g-tint: rgba(184, 134, 11, .10);
  --g-blur: blur(30px) saturate(170%);
  --g-blur-card: blur(16px) saturate(150%);
  --g-main-veil: rgba(243, 241, 236, .42);
  --g-table-bg: rgba(255, 255, 255, .58);
}

[data-theme="emerald"] {
  --g-wall-1: rgba(16, 185, 129, .22);
  --g-wall-2: rgba(13, 148, 136, .14);
  --g-wall-3: rgba(209, 250, 229, .60);
  --g-wall-base: #eef5f3;
  --g-surface: rgba(255, 255, 255, .62);
  --g-surface-2: rgba(255, 255, 255, .50);
  --g-surface-solid: rgba(255, 255, 255, .92);
  --g-border: rgba(255, 255, 255, .82);
  --g-border-strong: rgba(13, 148, 136, .26);
  --g-hi: inset 0 1px 0 rgba(255, 255, 255, .95);
  --g-shadow: 0 10px 28px rgba(6, 78, 59, .10), 0 2px 6px rgba(6, 78, 59, .05);
  --g-shadow-lg: 0 30px 70px rgba(6, 78, 59, .18), 0 6px 18px rgba(6, 78, 59, .08);
  --g-tint: rgba(16, 185, 129, .10);
  --g-blur: blur(30px) saturate(175%);
  --g-blur-card: blur(16px) saturate(150%);
  --g-main-veil: rgba(238, 245, 243, .42);
  --g-table-bg: rgba(255, 255, 255, .58);
}

[data-theme="violet"] {
  --g-wall-1: rgba(168, 85, 247, .58);
  --g-wall-2: rgba(236, 72, 153, .34);
  --g-wall-3: rgba(99, 102, 241, .44);
  --g-wall-base: #07040f;
  --g-surface: linear-gradient(180deg, rgba(255,255,255,.10) 0%, rgba(255,255,255,.04) 100%), rgba(24, 16, 38, .34);
  --g-surface-2: linear-gradient(180deg, rgba(255,255,255,.08) 0%, rgba(255,255,255,.03) 100%), rgba(24, 16, 38, .30);
  --g-surface-solid: linear-gradient(180deg, rgba(255,255,255,.09) 0%, rgba(255,255,255,.04) 100%), rgba(20, 13, 32, .90);
  --g-border: rgba(255, 255, 255, .11);
  --g-border-strong: rgba(255, 255, 255, .20);
  --g-hi: inset 0 1px 0 rgba(255, 255, 255, .12);
  --g-shadow: 0 12px 34px rgba(4, 0, 12, .50), 0 2px 8px rgba(4, 0, 12, .32);
  --g-shadow-lg: 0 30px 80px rgba(4, 0, 12, .64), 0 6px 20px rgba(4, 0, 12, .40);
  --g-tint: rgba(168, 85, 247, .18);
  --g-blur: blur(30px) saturate(180%);
  --g-blur-card: blur(16px) saturate(160%);
  --g-main-veil: rgba(7, 4, 15, .42);
  --g-table-bg: rgba(13, 9, 22, .60);
}

/* ---------- 2. 壁纸：让玻璃后面真的有东西可模糊 ---------- */
.app.show {
  background-color: var(--g-wall-base) !important;
  background-image:
    radial-gradient(900px 720px at 16% 6%, var(--g-wall-1), transparent 62%),
    radial-gradient(820px 680px at 74% 34%, var(--g-wall-2), transparent 64%),
    radial-gradient(900px 760px at 40% 92%, var(--g-wall-3), transparent 62%),
    radial-gradient(760px 620px at 96% 78%, var(--g-wall-1), transparent 66%) !important;
  background-attachment: fixed !important;
  background-repeat: no-repeat !important;
}
/* 内容区一层薄纱：壁纸仍在，但密集表格不再被彩色打散 */
.main { background: var(--g-main-veil) !important; }

/* ---------- 3. 侧边栏 ---------- */
.sidebar {
  background: var(--g-surface) !important;
  -webkit-backdrop-filter: var(--g-blur);
  backdrop-filter: var(--g-blur);
  border-right: 1px solid var(--g-border) !important;
  box-shadow: 1px 0 0 rgba(255,255,255,.04), 14px 0 40px rgba(0,0,0,.10) !important;
}
.sidebar .logo { border-bottom: 1px solid var(--g-border) !important; }
.sidebar .user-info { border-top: 1px solid var(--g-border) !important; }
.sidebar nav a { border-radius: 11px; margin: 2px 10px; padding: 10px 12px; border-left: 0 !important; transition: background .2s, color .2s; }
.sidebar nav a:hover { background: rgba(255, 255, 255, .07); }
.sidebar nav a.active {
  background: var(--g-tint) !important;
  color: var(--brand) !important;
  box-shadow: inset 0 0 0 1px var(--g-border-strong), var(--g-hi);
}
.sidebar nav a.active .nav-icon { color: var(--brand) !important; }
.nav-group-title { border-radius: 11px; margin: 2px 10px; padding: 10px 12px !important; border-left: 0 !important; }
.nav-group-title:hover { background: rgba(255, 255, 255, .07); }
.nav-group-items a { margin-left: 6px; }
.nav-search input {
  background: var(--g-surface-2) !important;
  border: 1px solid var(--g-border) !important;
  border-radius: 11px !important;
  color: var(--text) !important;
  box-shadow: var(--g-hi);
}
[data-theme="light"] .sidebar nav a:hover,
[data-theme="light"] .nav-group-title:hover { background: rgba(255, 255, 255, .82); }
/* emerald（云石白）：侧栏也做白色玻璃，文字改深色，整体才"白"得起来 */
[data-theme="emerald"] .sidebar {
  background: var(--g-surface) !important;
}
[data-theme="emerald"] .sidebar nav a,
[data-theme="emerald"] .nav-group-title { color: #44514f !important; }
[data-theme="emerald"] .sidebar nav a:hover,
[data-theme="emerald"] .nav-group-title:hover { background: rgba(13, 148, 136, .10) !important; color: #0f766e !important; }
[data-theme="emerald"] .sidebar nav a.active { color: #0d9488 !important; background: rgba(13, 148, 136, .12) !important; }
[data-theme="emerald"] .sidebar nav a.active .nav-icon { color: #0d9488 !important; }
[data-theme="emerald"] .sidebar .logo { border-bottom-color: rgba(13, 148, 136, .16) !important; }
[data-theme="emerald"] .sidebar .user-info { border-top-color: rgba(13, 148, 136, .16) !important; color: #4b5563 !important; }
[data-theme="emerald"] .brand-tagline,
[data-theme="emerald"] .theme-toggle { color: #5a6866 !important; }
[data-theme="emerald"] .nav-search input {
  background: rgba(255, 255, 255, .72) !important;
  border-color: rgba(13, 148, 136, .18) !important;
  color: #052e2b !important;
}
[data-theme="emerald"] .nav-search input::placeholder { color: #8a9a97 !important; }

/* ---------- 4. 卡片 / 面板 ---------- */
.metric-card, .kpi-card, .chain-card, .chart-card, .table-card, .summary-card,
.sa-summary-cards .summary-card, .card {
  background: var(--g-surface) !important;
  border: 1px solid var(--g-border) !important;
  border-radius: 18px !important;
  box-shadow: var(--g-shadow), var(--g-hi) !important;
  -webkit-backdrop-filter: var(--g-blur-card);
  backdrop-filter: var(--g-blur-card);
}
.metric-card:hover, .kpi-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--g-shadow-lg), var(--g-hi) !important;
  border-color: var(--g-border-strong) !important;
}
.metric-value { letter-spacing: -.4px; }

/* ---------- 5. 顶部日期条（吸顶玻璃） ---------- */
.date-bar {
  background: var(--g-surface-2) !important;
  -webkit-backdrop-filter: var(--g-blur);
  backdrop-filter: var(--g-blur);
  border-bottom: 1px solid var(--g-border) !important;
  border-radius: 0 0 16px 16px;
  padding-left: 14px !important; padding-right: 14px !important;
  box-shadow: 0 8px 24px rgba(0, 0, 0, .06);
}

/* ---------- 6. 弹窗 / 主题面板 ---------- */
.modal-overlay, .theme-panel-mask {
  background: rgba(6, 10, 20, .42) !important;
  -webkit-backdrop-filter: blur(10px) saturate(140%);
  backdrop-filter: blur(10px) saturate(140%);
}
.modal {
  background: var(--g-surface-solid) !important;
  border: 1px solid var(--g-border) !important;
  border-radius: 22px !important;
  box-shadow: var(--g-shadow-lg), var(--g-hi) !important;
  -webkit-backdrop-filter: var(--g-blur);
  backdrop-filter: var(--g-blur);
}
.theme-panel {
  background: var(--g-surface-solid) !important;
  border: 1px solid var(--g-border) !important;
  border-radius: 24px !important;
  box-shadow: var(--g-shadow-lg), var(--g-hi) !important;
  -webkit-backdrop-filter: blur(40px) saturate(180%);
  backdrop-filter: blur(40px) saturate(180%);
  padding: 18px !important;
}
.theme-panel-head h3 { font-size: 15px; font-weight: 650; letter-spacing: .04em; }
.theme-option {
  background: var(--g-surface-2) !important;
  border: 1px solid var(--g-border) !important;
  border-radius: 16px !important;
  box-shadow: var(--g-hi);
  transition: transform .18s ease, border-color .18s, background .18s, box-shadow .18s;
}
.theme-option:hover { background: var(--g-tint) !important; border-color: var(--g-border-strong) !important; transform: translateY(-1px); }
.theme-option.active {
  background: var(--g-tint) !important;
  border-color: var(--brand) !important;
  box-shadow: 0 0 0 1px var(--brand), 0 10px 26px rgba(var(--brand-rgb), .22), var(--g-hi) !important;
}
.theme-mock { border-radius: 11px !important; border: 1px solid var(--g-border) !important; }
.theme-option .tm-tag { border-radius: 999px !important; font-weight: 600; letter-spacing: .06em; }

/* ---------- 7. 按钮 / 输入控件（统一到玻璃语言） ---------- */
.btn { border-radius: 11px !important; }
.btn-primary {
  border-radius: 11px !important;
  box-shadow: 0 8px 22px rgba(var(--brand-rgb), .30), inset 0 1px 0 rgba(255,255,255,.28) !important;
}
.btn-primary:hover { box-shadow: 0 12px 28px rgba(var(--brand-rgb), .38), inset 0 1px 0 rgba(255,255,255,.28) !important; }
.page-header h1 { letter-spacing: .02em; }
select, .date-bar select, .flt-chip {
  border-radius: 10px !important;
}

/* ---------- 8. 表格：玻璃上不再压一块实色 ---------- */
.data-table thead th, .sa-table thead th { background: transparent !important; }
[data-theme="light"] .data-table thead th,
[data-theme="emerald"] .data-table thead th { background: rgba(255,255,255,.55) !important; }
.table-card, .chart-card { overflow: hidden; }

/* KPI 卡（经营总览用 .kpi-card）：保留顶部品牌色细线，其余并入玻璃语言 */
.kpi-card { padding: 15px 16px 13px !important; }
.kpi-card::after { height: 2px !important; opacity: .85; }
.kpi-label { font-size: 12px !important; color: var(--text3) !important; letter-spacing: .3px; }
.kpi-value { font-size: 21px !important; font-weight: 650 !important; letter-spacing: -.3px; }
.kpi-sub { font-size: 11.5px !important; color: var(--text3) !important; margin-top: 4px; }

/* 大表格页（无卡片包裹，直接铺在壁纸上）：给一层地色，行间条纹才读得清 */
.data-table, .sa-table, .sa-six-month-table {
  background: var(--g-table-bg) !important;
  border-radius: 14px !important;
}
/* 下拉/筛选控件统一到玻璃语言 */
select, .flt-chip, .date-bar select {
  background: var(--g-surface-2) !important;
  border: 1px solid var(--g-border) !important;
  color: var(--text) !important;
  border-radius: 10px !important;
  box-shadow: var(--g-hi);
}
select option { background: var(--g-wall-base); color: var(--text); }
