/* ============================================================
   地枢中台 V4.1.0 · 丹青浅金VI (款多多品牌规范)
   品牌金 #D4AF37 · 背景 #F8F8F8 · 卡片 #FFFFFF · 文字 #333
   8px网格 · 圆角8px · 表格字号≥14px · 三端适配
   ============================================================ */
:root {
  --color-brand: #D4AF37;
  --color-brand-hover: #C4A032;
  --color-brand-light: #F5E7C6;
  --color-bg: #F5F2EA;
  --color-bg-card: #FFFFFF;
  --color-text: #333333;
  --color-text-muted: #8b8b8b;
  --color-border: #E8E4D8;
  --radius-md: 8px;
  --s: #B8860B; --a: #C9A227; --b: #D4A02A; --c: #B8B2A2;
  --green: #7A9E3A; --orange: #D4A02A; --red: #C65F4A;
  --sidebar-w: 220px;
  --sidebar-bg: #1E1A10;
}
* { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
body { font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Noto Sans SC',sans-serif; background:var(--color-bg); color:var(--color-text); min-height:100vh; font-size:14px; }
.muted { color:var(--color-text-muted); }

/* ── 按钮 ── */
.btn { padding:8px 16px; border:none; border-radius:var(--radius-md); cursor:pointer; font-size:14px; font-weight:500; transition:all .2s; }
.btn:hover { opacity:.9; transform:translateY(-1px); }
.btn:active { transform:translateY(0); }
.btn-sm { padding:5px 10px; font-size:13px; }
.btn-block { width:100%; }
.btn-brand { background:linear-gradient(135deg,#D4AF37,#B8860B); color:#fff; box-shadow:0 2px 8px rgba(212,175,55,.35); }
.btn-blue { background:#2B5B84; color:#fff; }
.btn-green { background:var(--green); color:#fff; }
.btn-red { background:var(--red); color:#fff; }
.btn-ghost { background:transparent; border:1px solid var(--color-border); color:var(--color-text); }

/* ── 登录页 ── */
.login-wrap { display:flex; align-items:center; justify-content:center; min-height:100vh;
  background:linear-gradient(135deg,#F5E7C6 0%,#F8F8F8 45%,#EFE3C0 100%); }
.login-card { background:var(--color-bg-card); border-radius:16px; padding:44px 40px; width:380px;
  box-shadow:0 12px 40px rgba(212,175,55,.2); border:1px solid #F0E8D0; }
.login-logo { text-align:center; margin-bottom:14px; }
.logo-badge { width:52px; height:52px; border-radius:14px; display:inline-flex; align-items:center; justify-content:center;
  background:linear-gradient(135deg,#D4AF37,#B8860B); color:#fff; font-size:26px; font-weight:800;
  box-shadow:0 4px 14px rgba(212,175,55,.45); }
.login-card h1 { text-align:center; font-size:22px; color:#8A6D1A; margin-bottom:4px; }
.login-sub { text-align:center; font-size:12px; color:var(--color-text-muted); margin-bottom:28px; }
.login-card label { display:block; font-size:13px; color:#666; margin-bottom:14px; }
.login-card input { width:100%; padding:11px 12px; border:1px solid var(--color-border); border-radius:var(--radius-md);
  font-size:14px; margin-top:6px; background:#FFFDF6; }
.login-card input:focus { outline:2px solid var(--color-brand); border-color:var(--color-brand); }
.login-error { background:#FDF0EF; color:var(--red); padding:8px 12px; border-radius:6px; font-size:13px; margin-bottom:12px; }
.login-hint { margin-top:18px; font-size:11px; color:#aaa; text-align:center; }

/* ── 主布局 ── */
.app-shell { display:flex; min-height:100vh; }
.sidebar { width:var(--sidebar-w); background:var(--sidebar-bg); color:#E8D9A8; display:flex; flex-direction:column;
  position:fixed; top:0; left:0; bottom:0; z-index:100; }
.side-logo { display:flex; align-items:center; gap:10px; padding:18px 16px; border-bottom:1px solid rgba(212,175,55,.2); }
.side-logo .logo-badge { width:36px; height:36px; font-size:18px; }
.side-title { font-size:16px; font-weight:700; color:#D4AF37; }
.side-title span { display:block; font-size:10px; color:#8a7a4a; font-weight:400; }
.side-nav { flex:1; padding:12px 8px; overflow-y:auto; }
.nav-item { display:flex; align-items:center; gap:10px; width:100%; padding:11px 14px; border:none; background:transparent;
  color:#C9B87A; font-size:14px; border-radius:8px; cursor:pointer; margin-bottom:2px; text-align:left; transition:all .2s; }
.nav-item:hover { background:rgba(212,175,55,.12); color:#F5E7C6; }
.nav-item.active { background:linear-gradient(135deg,rgba(212,175,55,.25),rgba(184,134,11,.15)); color:#F5E7C6; font-weight:600; }
.nav-ico { width:20px; text-align:center; color:#D4AF37; }
.side-user { padding:14px 12px; border-top:1px solid rgba(212,175,55,.2); display:flex; align-items:center; justify-content:space-between; }
.user-chip { display:flex; align-items:center; gap:8px; }
.user-avatar { width:34px; height:34px; border-radius:50%; background:linear-gradient(135deg,#D4AF37,#B8860B);
  color:#fff; display:flex; align-items:center; justify-content:center; font-weight:700; }
.user-name { font-size:13px; color:#F5E7C6; }
.user-role { font-size:11px; color:#8a7a4a; }

.main { flex:1; margin-left:var(--sidebar-w); display:flex; flex-direction:column; min-height:100vh; }
.topbar { background:var(--color-bg-card); border-bottom:1px solid var(--color-border); padding:12px 20px;
  display:flex; align-items:center; justify-content:space-between; position:sticky; top:0; z-index:50; }
.page-title { font-size:17px; font-weight:700; color:#8A6D1A; }
.topbar-right { display:flex; align-items:center; gap:10px; }
.global-search { display:flex; gap:8px; }
.global-search input { width:340px; padding:8px 14px; border:1px solid var(--color-border); border-radius:var(--radius-md); font-size:14px; background:#FFFDF6; }
.global-search input:focus { outline:2px solid var(--color-brand); }
.content { padding:20px; flex:1; }

/* ── 统计卡片 ── */
.stat-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:14px; margin-bottom:18px; }
.stat-card { background:var(--color-bg-card); border-radius:12px; padding:18px 16px; text-align:center;
  border:1px solid #F0E8D0; box-shadow:0 2px 10px rgba(212,175,55,.08); }
.stat-card .num { font-size:26px; font-weight:800; color:#8A6D1A; }
.stat-card .num.s { color:var(--s); } .stat-card .num.a { color:var(--a); }
.stat-card .num.b { color:var(--b); } .stat-card .num.c { color:var(--c); }
.stat-card .num.green { color:var(--green); } .stat-card .num.orange { color:var(--orange); }
.stat-card .label { font-size:12px; color:var(--color-text-muted); margin-top:4px; }

/* ── 图表 ── */
.chart-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.chart { height:280px; }
.chart-lg { height:320px; }
.panel { background:var(--color-bg-card); border-radius:12px; padding:16px; border:1px solid #F0E8D0; box-shadow:0 2px 10px rgba(212,175,55,.06); }
.panel h3 { font-size:14px; color:#8A6D1A; margin-bottom:12px; }
.pipeline-wrap { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:16px; }

/* ── 筛选栏 ── */
.filter-bar { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-bottom:14px; background:var(--color-bg-card);
  padding:12px; border-radius:12px; border:1px solid #F0E8D0; }
.filter-bar input[type=text] { padding:8px 12px; border:1px solid var(--color-border); border-radius:var(--radius-md); font-size:14px; background:#FFFDF6; }
.w160 { width:160px; } .w140 { width:140px; } .w120 { width:120px; }

/* ── 可搜索下拉 ── */
.ss-wrap { position:relative; }
.ss-input { padding:8px 14px; border:1px solid var(--color-border); border-radius:var(--radius-md); font-size:14px;
  background:#FFFDF6; cursor:pointer; min-width:110px; text-align:left; }
.ss-menu { position:absolute; top:100%; left:0; margin-top:4px; background:#fff; border:1px solid var(--color-border);
  border-radius:8px; box-shadow:0 8px 24px rgba(0,0,0,.12); min-width:180px; max-height:280px; z-index:200; display:flex; flex-direction:column; }
.ss-search { margin:8px; padding:7px 10px; border:1px solid var(--color-border); border-radius:6px; font-size:13px; }
.ss-list { max-height:220px; overflow-y:auto; }
.ss-item { padding:8px 14px; cursor:pointer; font-size:14px; }
.ss-item:hover { background:var(--color-brand-light); }
.ss-item.selected { background:linear-gradient(135deg,rgba(212,175,55,.2),rgba(212,175,55,.05)); color:#8A6D1A; font-weight:600; }

/* ── AG Grid 整屏表格 ── */
.grid { width:100%; height:calc(100vh - 210px); min-height:400px; background:#fff; border-radius:12px; border:1px solid #F0E8D0; overflow:hidden; }
.ag-theme-alpine { --ag-font-size:14px; --ag-header-height:42px; --ag-row-height:40px;
  --ag-border-color:#EFE9DA; --ag-header-background-color:#FAF6EA; --ag-header-foreground-color:#8A6D1A;
  --ag-odd-row-background-color:#FFFDF6; --ag-foreground-color:#333; --ag-selected-row-background-color:rgba(212,175,55,.15); }
.ag-theme-alpine .ag-header-cell { font-weight:700; font-size:14px; }
.ag-theme-alpine .ag-cell { font-size:14px; line-height:40px; }
.pager { display:flex; align-items:center; justify-content:center; gap:14px; margin-top:12px; color:var(--color-text-muted); font-size:14px; }

/* ── 团队卡片 ── */
.team-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:14px; }
.team-card { background:var(--color-bg-card); border-radius:12px; padding:16px; border:1px solid #F0E8D0; }
.team-card h3 { font-size:15px; color:#8A6D1A; margin-bottom:10px; }
.t-stat { display:grid; grid-template-columns:repeat(4,1fr); gap:6px; }
.t-stat .n { display:block; font-size:20px; font-weight:800; color:#8A6D1A; }
.t-stat .n.o { color:var(--orange); } .t-stat .n.g { color:var(--green); } .t-stat .n.s { color:var(--s); }
.t-stat .l { font-size:11px; color:var(--color-text-muted); }

/* ── 导入导出 ── */
.io-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.io-card { min-height:220px; }
.io-desc { font-size:13px; color:var(--color-text-muted); margin-bottom:14px; line-height:1.6; }
.io-file { display:block; margin-bottom:12px; font-size:14px; }
.io-template { display:inline-block; margin-left:8px; }
.io-result { margin-top:12px; font-size:13px; }
.io-ok { color:var(--green); font-weight:600; margin-bottom:6px; }
.io-err { color:var(--red); font-size:12px; }
.io-note { margin-top:10px; font-size:12px; color:var(--color-text-muted); }

/* ── 用户管理/审计表 ── */
.users-list { background:#fff; border-radius:12px; border:1px solid #F0E8D0; overflow:hidden; }
.user-table, .audit-table { width:100%; border-collapse:collapse; font-size:14px; }
.user-table th, .audit-table th { background:#FAF6EA; color:#8A6D1A; text-align:left; padding:10px 14px; font-size:13px; }
.user-table td, .audit-table td { padding:9px 14px; border-top:1px solid #F5F1E6; }
.user-table tr:hover, .audit-table tr:hover { background:#FFFDF6; }
.ok { color:var(--green); } .no { color:var(--red); }

/* ── 弹窗 ── */
.modal { position:fixed; inset:0; background:rgba(30,26,16,.5); display:flex; align-items:center; justify-content:center; z-index:300; }
.modal-content { background:#fff; border-radius:14px; width:760px; max-width:94vw; max-height:88vh; overflow-y:auto;
  padding:24px; position:relative; border:1px solid #F0E8D0; }
/* V3.0.2 详情编辑表单 */
.fg-3 { grid-template-columns:repeat(3,1fr); }
.sel-gold { width:100%; padding:8px 10px; border:1px solid var(--color-border); border-radius:6px; font-size:14px; margin-top:4px;
  background:#FFFDF6; color:var(--color-text); cursor:pointer; }
.sel-gold:focus { outline:2px solid var(--color-brand); }
.sel-gold:disabled { background:#F5F1E6; color:#888; cursor:not-allowed; }
.readonly-grade { display:flex; align-items:center; gap:8px; padding:8px 0; font-size:14px; color:#666; }
.readonly-grade .grade-badge { position:static; margin:0; }
.span-2 { grid-column:span 2; }
.form textarea:disabled { background:#F5F1E6; color:#888; }
.ro-note { background:var(--color-brand-light); color:#8A6D1A; padding:8px 14px; border-radius:8px; font-size:13px; margin-bottom:14px; }
.fup-add { display:flex; gap:8px; margin-top:8px; }
.fup-add input { flex:1; padding:8px; border:1px solid var(--color-border); border-radius:6px; font-size:14px; background:#FFFDF6; }
.fup-add input:disabled { background:#F5F1E6; }
.modal-close { position:absolute; top:12px; right:14px; border:none; background:none; font-size:22px; cursor:pointer; color:#999; }
.modal-content h2 { font-size:18px; color:#8A6D1A; margin-bottom:14px; }
.grade-badge { display:inline-flex; padding:2px 10px; border-radius:20px; color:#fff; font-size:13px; font-weight:700; margin-left:8px; }
.grade-badge.g-S { background:var(--s); } .grade-badge.g-A { background:var(--a); }
.grade-badge.g-B { background:var(--b); } .grade-badge.g-C { background:var(--c); }
.m-section { margin-bottom:14px; }
.m-section h4 { font-size:14px; color:#8A6D1A; margin-bottom:8px; border-bottom:1px solid #F5F1E6; padding-bottom:6px; }
.m-row { display:flex; justify-content:space-between; padding:4px 0; font-size:14px; }
.m-row .k { color:var(--color-text-muted); }
.fup-item { background:#FFFDF6; border:1px solid #F0E8D0; border-radius:6px; padding:8px; margin-bottom:6px; font-size:13px; }
#fup-content { width:100%; padding:8px; border:1px solid var(--color-border); border-radius:6px; font-size:14px; margin-bottom:6px; }
.m-actions { margin-top:12px; display:flex; gap:8px; }

/* ── 表单 ── */
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:12px; }
.form label { display:block; font-size:13px; color:#666; }
.form input, .form select, .form textarea { width:100%; padding:8px 10px; border:1px solid var(--color-border); border-radius:6px; font-size:14px; margin-top:4px; background:#FFFDF6; }
.score { font-weight:800; color:var(--s); font-size:15px; }

/* ── V3.1.0 仓网/计费/驾驶舱 ── */
.grid-sm { height:340px; }
.mt16 { margin-top:16px; }
.mt8 { margin-top:8px; }
.billing-summary { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:14px; margin-bottom:16px; }
.payment-list { max-height:260px; overflow-y:auto; }
.owner-card { background:#FFFDF6; border:1px solid #F0E8D0; border-radius:8px; padding:10px 14px; }
.tenant-list { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:10px; margin-bottom:10px; }
.tenant-card { background:#FFFDF6; border:1px solid #F0E8D0; border-radius:8px; padding:10px 14px; }
.t-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:6px; }
.tag-biz { background:var(--color-brand-light); color:#8A6D1A; padding:2px 8px; border-radius:12px; font-size:12px; }
.wh-status { margin-left:10px; font-size:12px; }
.wh-meta { color:var(--color-text-muted); font-size:13px; margin-bottom:12px; }

/* ── V3.2.0 账单/状态 ── */
.inv-actions { display:flex; gap:8px; align-items:center; margin-bottom:10px; }
.tag-pending { color:var(--orange); font-weight:600; }
.tag-paid { color:var(--green); font-weight:600; }
.tag-overdue { color:var(--red); font-weight:600; }
.wh-status.warn { color:var(--orange); }

/* ── V4.0.0 角色徽章 / 模式库 / 结算单 / 路由 ── */
.topbar-left { display:flex; align-items:center; gap:12px; }
.menu-btn { display:none; }  /* 默认隐藏, ≤768px 显示 */

/* ── V4.2.2 骨架屏(加载感知优化) ── */
.skeleton { padding:4px 2px; }
.skeleton-hd { display:flex; gap:12px; margin-bottom:16px; }
.skeleton-stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:12px; margin-bottom:16px; }
.skeleton-body { display:flex; flex-direction:column; gap:10px; }
.sk { border-radius:8px; background:linear-gradient(100deg,#F0EDE3 30%,#FAF7EE 50%,#F0EDE3 70%);
  background-size:200% 100%; animation:sk-shine 1.4s infinite; }
.sk-line { height:18px; }
.sk-card { height:72px; }
.sk-row { height:46px; }
.w30 { width:30%; } .w20 { width:20%; }
@keyframes sk-shine { 0%{background-position:120% 0} 100%{background-position:-80% 0} }
.sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }

/* ── V4.4 销售管道看板 (对标Pipedrive Kanban) ── */
.pipeline-board { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:10px; margin:14px 0 22px; overflow-x:auto; }
.pipe-col { background:var(--color-bg); border-radius:10px; border:1px solid #F0E8D0; min-height:200px; display:flex; flex-direction:column; }
.pipe-col-head { display:flex; align-items:center; gap:6px; padding:8px 10px; font-weight:700; font-size:13px; border-bottom:1px solid #F0E8D0; background:#FBF9F2; border-radius:10px 10px 0 0; }
.pipe-label { flex:1; }
.pipe-count { background:var(--color-brand); color:#fff; border-radius:99px; padding:1px 8px; font-size:11px; }
.pipe-prob { font-size:11px; color:var(--color-text-muted); }
.pipe-cards { padding:8px; overflow-y:auto; max-height:420px; display:flex; flex-direction:column; gap:8px; }
.pipe-card { background:#fff; border:1px solid #E8E4D8; border-radius:8px; padding:8px 10px; cursor:pointer; transition:all .15s; }
.pipe-card:hover { border-color:var(--color-brand); box-shadow:0 2px 8px rgba(212,175,55,.15); transform:translateY(-1px); }
.pipe-card-title { font-weight:700; font-size:13px; margin-bottom:3px; }
.pipe-card-sub { font-size:11px; color:var(--color-text-muted); margin-bottom:6px; }
.pipe-card-meta { display:flex; justify-content:space-between; align-items:center; font-size:12px; }
.pipe-amt { font-weight:700; color:var(--color-brand-dark); }
.pipe-amt em { font-style:normal; font-size:10px; color:var(--color-text-muted); }
.pipe-est { color:#7A9E3A; font-size:11px; }
.pipe-actions { display:flex; gap:6px; margin-top:8px; }
.pipe-badge { font-size:11px; padding:2px 8px; border-radius:99px; margin-top:6px; display:inline-block; }
.pipe-badge.ok { background:var(--color-green); color:#fff; }
.pipe-badge.no { background:var(--color-red); color:#fff; }
.pipe-empty { text-align:center; color:var(--color-text-muted); font-size:12px; padding:16px 0; }
.col-won { border-color:#55752a; }
.col-lost { border-color:#C65F4A; }
.pipe-detail .m-row { padding:6px 0; border-bottom:1px dashed #F0E8D0; display:flex; gap:10px; }
.pipe-detail .m-row .k { width:90px; color:var(--color-text-muted); flex-shrink:0; }
.pipeline-analysis { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.pipeline-kpis { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; }
@media (max-width:768px) {
  .pipeline-analysis { grid-template-columns:1fr; }
  .pipeline-board { grid-template-columns:repeat(7,210px); } /* 手机横向滑动 */
  .pipe-cards { max-height:300px; }
}

/* ── V4.3 全栈搜索面板 ── */
.gs-loading { padding:40px; text-align:center; color:var(--color-text-muted); }
.gs-group { margin-bottom:14px; }
.gs-group-title { font-size:13px; font-weight:700; color:var(--color-brand-dark); margin-bottom:6px;
  padding-bottom:4px; border-bottom:1px solid #F0E8D0; }
.gs-row { padding:10px 12px; border:1px solid #F0E8D0; border-radius:8px; margin-bottom:6px; cursor:pointer;
  transition:all .15s; background:#fff; }
.gs-row:hover { border-color:var(--color-brand); background:var(--color-bg-brand); transform:translateX(2px); }
.gs-row b { color:#333; display:block; }
.gs-sub { font-size:12px; color:var(--color-text-muted); }
.gs-empty { padding:30px; text-align:center; color:var(--color-text-muted); }
.gs-intent { padding:10px 14px; border:1px dashed var(--color-brand); background:var(--color-bg-brand);
  border-radius:8px; margin-bottom:12px; cursor:pointer; font-size:13px; }
.gs-intent:hover { background:#F7EFD8; }

/* ── V4.2.2 导航分组 ── */
.nav-group { margin-bottom:6px; }
.nav-group-title { font-size:11px; color:rgba(232,217,168,.5); letter-spacing:1px; padding:10px 16px 4px; text-transform:uppercase; }

/* ── V4.5 专业SVG导航icon + 侧栏收起 ── */
.nav-svg { width:20px; height:20px; flex-shrink:0; }
.nav-item .nav-ico { display:flex; align-items:center; justify-content:center; }
.nav-item:hover .nav-svg { color:#D4AF37; }
.nav-item.active .nav-svg { color:#D4AF37; }
.side-collapse-btn {
  display:flex; align-items:center; justify-content:center; width:28px; height:28px;
  background:transparent; border:1px solid rgba(212,175,55,.3); border-radius:6px;
  color:var(--color-text-muted); cursor:pointer; margin-left:auto; transition:all .2s;
}
.side-collapse-btn:hover { border-color:var(--color-brand); color:var(--color-brand); background:rgba(212,175,55,.1); }
/* 桌面端收起为窄栏(仅icon) */
.sidebar-collapsed .sidebar { width:64px; }
.sidebar-collapsed .main { margin-left:64px; }
.sidebar-collapsed .side-title, .sidebar-collapsed .nav-group-title,
.sidebar-collapsed .nav-item:not(.active) { }
.sidebar-collapsed .side-title { display:none; }
.sidebar-collapsed .nav-group-title { font-size:0; padding:6px 0; }
.sidebar-collapsed .nav-group-title::after { content:"·"; font-size:12px; color:rgba(232,217,168,.4); }
.sidebar-collapsed .nav-item { justify-content:center; padding:12px 0; }
.sidebar-collapsed .nav-item:not(.active) .nav-svg { margin:0; }
.sidebar-collapsed .user-meta { display:none; }
.sidebar-collapsed .side-user .btn { display:none; }
.sidebar-collapsed .user-chip { justify-content:center; }
.sidebar-collapsed .side-logo { justify-content:center; padding:16px 0; }
.sidebar-collapsed .side-logo .logo-badge { margin:0; }
.sidebar-collapsed .side-collapse-btn { display:none; }
@media (max-width:768px) {
  .sidebar-collapsed .sidebar { width:260px; } /* 移动端收起逻辑走抽屉, 不窄化 */
  .sidebar-collapsed .main { margin-left:0; }
}
.role-badge { display:inline-flex; padding:2px 12px; border-radius:99px; font-size:12px; font-weight:600; color:#fff; }
.rb-gold { background:linear-gradient(135deg,#D4AF37,#B8860B); }
.rb-blue { background:linear-gradient(135deg,#2B5B84,#1E3F5C); }
.rb-green { background:linear-gradient(135deg,#7A9E3A,#55752a); }
.rb-default { background:#8a7a4a; }
.view-loading { padding:60px; text-align:center; color:var(--color-text-muted); font-size:14px; }
.w100 { width:100px; }
.warn { color:var(--orange); }

/* 合作模式库 */
.mode-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:14px; margin-bottom:16px; }
.mode-card { background:var(--color-bg-card); border:1px solid #F0E8D0; border-radius:12px; padding:18px 20px;
  box-shadow:0 2px 10px rgba(212,175,55,.06); border-top:4px solid var(--color-brand); }
.mode-card h3 { font-size:16px; color:#8A6D1A; margin-bottom:8px; display:flex; align-items:center; gap:10px; }
.mode-desc { font-size:13px; color:var(--color-text-muted); line-height:1.6; margin-bottom:10px; }
.span-3 { grid-column:span 3; }

@media (max-width:1024px) {
  .mode-grid { grid-template-columns:1fr; }
  .span-3 { grid-column:auto; }
}
/* ── V4.1.0 飞书登录 ── */
.btn-feishu {
  background: linear-gradient(135deg, #3370FF, #1E50E6);
  color: #fff; border: none; display:flex; align-items:center; justify-content:center; gap:8px;
  font-weight:600; box-shadow:0 2px 10px rgba(51,112,255,.25);
}
.btn-feishu:hover { background: linear-gradient(135deg, #4A83FF, #2A5FEF); transform:translateY(-1px); }
.divider { display:flex; align-items:center; gap:10px; color:var(--color-text-muted); font-size:12px; margin:12px 0; }
.divider::before, .divider::after { content:""; flex:1; height:1px; background:#E8E4D8; }
#feishu-hint { font-size:11px; color:var(--color-text-muted); margin-top:8px; word-break:break-all; }
.feishu-qr-box { display:flex; flex-direction:column; align-items:center; gap:6px; }
.feishu-qr-loading { color:var(--color-text-muted); font-size:12px; padding:60px 0; }
.feishu-steps { font-size:12px; color:var(--color-text); line-height:1.7; margin:8px 0 4px; padding:8px 12px;
  background:var(--color-bg); border:1px dashed #E8E4D8; border-radius:8px; }
.feishu-steps .muted { color:var(--color-text-muted); }

/* ── V4.2.0 RBAC 角色权限配置 ── */
.perm-group { border:1px solid #F0E8D0; border-radius:10px; padding:12px 14px; margin-bottom:10px; background:var(--color-bg); }
.perm-group-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; }
.perm-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:6px; }
.perm-item { display:flex; align-items:center; gap:6px; padding:5px 8px; border-radius:6px; cursor:pointer;
  background:#fff; border:1px solid #F0E8D0; font-size:13px; transition:all .15s; }
.perm-item:hover { border-color:var(--color-brand); background:var(--color-bg-brand); }
.perm-item code { margin-left:auto; font-size:10px; color:#B8B2A2; }
.perm-item input[type=checkbox] { accent-color:var(--color-brand); }
.chk { display:flex; align-items:center; gap:6px; cursor:pointer; }
.roles-list .stat-grid { margin-bottom:14px; }

@media (max-width:1024px) {
  .perm-grid { grid-template-columns:1fr 1fr; }
}

/* ── V4.2 统计下钻交互 ── */
.drill { cursor:pointer; transition:all .15s; }
.drill:hover { transform:translateY(-2px); box-shadow:0 4px 14px rgba(212,175,55,.18); border-color:var(--color-brand); }
.drill-arrow { font-size:11px; color:var(--color-brand); margin-left:2px; }
.drill-hint { font-size:11px; color:var(--color-text-muted); font-weight:400; margin-left:6px; }

/* ── V4.2 详情下钻 ── */
.chart-grid .span-2 { grid-column: span 2; }
.row-link { cursor:pointer; }
.row-link:hover { background:var(--color-bg-brand) !important; }
.settle-detail-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:12px; margin:14px 0; }
.detail-card { border:1px solid #F0E8D0; border-radius:10px; padding:12px 14px; background:var(--color-bg); }
.detail-card h4 { color:var(--color-brand-dark); margin-bottom:8px; }

@media (max-width:1024px) {
  .chart-grid .span-2 { grid-column: auto; }
}

/* ═══════════════════════════════════════════════════════════
   V4.2.2 响应式 · 三端适配(手机/平板/桌面)
   学习自国际SaaS后台最佳实践: 抽屉导航/触控目标44px/表格横向滚动/弹窗全屏
   ═══════════════════════════════════════════════════════════ */
/* ── 平板 (769-1024px): 图表单列, 网格适配 ── */
@media (max-width:1024px) {
  .chart-grid, .pipeline-wrap, .io-grid { grid-template-columns:1fr; }
  .global-search input { width:200px; }
  .stat-grid { grid-template-columns:repeat(auto-fit,minmax(110px,1fr)); }
  .filter-bar { flex-wrap:wrap; gap:8px; }
}

/* ── 手机 (≤768px): 抽屉导航 + 触控优化 ── */
@media (max-width:768px) {
  /* 抽屉导航 */
  .sidebar {
    width:260px; transform:translateX(-100%);
    transition:transform .28s cubic-bezier(.4,0,.2,1);
    box-shadow:none;
  }
  .sidebar.open { transform:translateX(0); box-shadow:0 0 40px rgba(0,0,0,.4); }
  .sidebar-mask {
    position:fixed; inset:0; background:rgba(0,0,0,.45); z-index:99;
    opacity:0; pointer-events:none; transition:opacity .25s;
  }
  .sidebar-mask.show { opacity:1; pointer-events:auto; }
  .menu-btn {
    display:flex; width:40px; height:40px; align-items:center; justify-content:center;
    font-size:20px; border:none; background:transparent; color:var(--color-text);
    border-radius:8px; cursor:pointer; margin-right:4px;
  }
  .menu-btn:active { background:var(--color-bg-brand); }
  .main { margin-left:0; }
  .topbar { padding:0 12px; }
  .global-search { display:none; }  /* 手机隐藏顶部搜索, 用客户页内搜索 */
  .role-badge { display:none; }
  .content { padding:12px; }

  /* 触控目标 ≥44px */
  .btn { min-height:44px; }
  .btn-sm { min-height:36px; }
  .nav-item { min-height:48px; padding:12px 16px; }
  .ss-item { padding:12px 14px; min-height:44px; }
  .drill { padding:12px; }

  /* 表格横向滚动(避免挤压) */
  .grid { height:calc(100vh - 250px); min-height:300px; }
  .payment-list, .users-list, .roles-list, .audit-table-wrap,
  #settle-list, #contract-list, #invoice-list, #payment-list, #expiry-list { overflow-x:auto; -webkit-overflow-scrolling:touch; }
  #settle-list .audit-table, #contract-list .audit-table, #invoice-list .audit-table,
  #payment-list .audit-table, #expiry-list .audit-table,
  .users-list .user-table, .roles-list .audit-table { min-width:640px; }  /* 容器内横向可滚 */

  /* 弹窗全屏化 */
  .modal-content {
    width:100%; max-height:92vh; margin:0; border-radius:16px 16px 0 0;
    position:absolute; bottom:0; left:0; padding:20px 16px;
  }
  .modal { align-items:flex-end; }
  .modal-close { top:8px; right:8px; }

  /* 表单单列 + 触控 */
  .form-grid, .fg-3 { grid-template-columns:1fr; gap:10px; }
  .span-2, .span-3 { grid-column:auto; }
  .filter-bar input[type=text], .filter-bar input, .filter-bar select { width:100% !important; min-height:44px; }
  .chart { height:260px; }
  .chart-grid .span-2 { grid-column:auto; }

  /* 页头精简 */
  .page-title { font-size:17px; }
  .stat-grid { grid-template-columns:repeat(2,1fr); gap:10px; }
  .stat-card { padding:14px 12px; }
  .login-card { width:92%; padding:32px 24px; }
}

/* ═══ V5.3.0 可搜索下拉组件 (KhUI) + 全局控件升级 ═══ */
/* 全局控件: 聚焦金边光晕 + placeholder 统一 */
input:focus, select:focus, textarea:focus {
  border-color: var(--color-brand);
  box-shadow: 0 0 0 2px rgba(212,175,55,.15);
  outline: none;
}
::placeholder { color: #b0a98f; opacity: 1; }
select, input[type=text], input[type=number], input[type=date], input[type=month], textarea {
  font-size: 14px;
}

/* 可搜索下拉浮层 */
.khss-panel {
  position: fixed; z-index: 400;
  background: #fff; border: 1px solid var(--color-brand); border-radius: 10px;
  box-shadow: 0 12px 32px rgba(30,26,16,.18);
  padding: 8px; min-width: 200px; max-width: 380px;
}
.khss-search {
  width: 100%; padding: 7px 10px 7px 30px;
  border: 1px solid var(--color-border); border-radius: 8px; font-size: 13px;
  background: #FFFDF6 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b0a98f' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='21' y1='21' x2='16.5' y2='16.5'/%3E%3C/svg%3E") 8px center/14px no-repeat;
  box-sizing: border-box;
}
.khss-search:focus { border-color: var(--color-brand); box-shadow: 0 0 0 2px rgba(212,175,55,.15); outline: none; }
.khss-list { max-height: 280px; overflow-y: auto; margin-top: 6px; }
.khss-opt { padding: 7px 10px; border-radius: 6px; font-size: 13px; color: #333; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.khss-opt:hover, .khss-opt.on { background: linear-gradient(135deg, rgba(212,175,55,.2), rgba(212,175,55,.08)); color: #8A6D1A; font-weight: 600; }
.khss-opt.sel { color: #B8860B; font-weight: 700; }
.khss-empty { padding: 10px; text-align: center; color: #b0a98f; font-size: 12px; }

/* ═══ V5.3.1 原生下拉框控件 VI 美化 (与 KhUI 搜索浮层视觉一致) ═══ */
select {
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  background-color: #FFFDF6;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23B8860B' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 10px center;
  background-size: 13px;
  padding: 8px 30px 8px 12px;
  border: 1px solid var(--color-border);
  border-radius: 8px;
  color: #333;
  font-size: 14px;
  cursor: pointer;
  transition: border-color .15s, box-shadow .15s, background-color .15s;
}
select:hover { border-color: var(--color-brand); background-color: #FFFDF6; }
select:focus { border-color: var(--color-brand); box-shadow: 0 0 0 2px rgba(212,175,55,.15); outline: none; }
select:disabled { opacity: .55; cursor: not-allowed; }
select option { color: #333; background: #fff; }
/* 模态框内 .form select 已 width:100%, 补右距防箭头截断 */
.form select { padding-right: 30px; }

/* ═══ V5.3.2 文本域宽裕 + 弹窗表单控件全局兜底 + 高度统一 ═══ */
textarea { min-height: 84px; resize: vertical; line-height: 1.6; font-family: inherit; }
.form textarea { min-height: 84px; }
/* 弹窗内表单控件全局兜底(无论容器 class), 保证 width:100% */
.modal-content .form-grid label input,
.modal-content .form-grid label select,
.modal-content .form-grid label textarea { width: 100%; box-sizing: border-box; }
.modal-content .form-grid label textarea { display: block; margin-top: 4px; }
/* 单行输入与下拉高度统一 */
.form input[type=text], .form input[type=number], .form input[type=date],
.form input[type=month], .form input[type=datetime-local], .form input[type=password],
.form select { min-height: 38px; box-sizing: border-box; }

/* ═══ V5.3.2 全局加载动画: 顶部金色流动加载条 ═══ */
#kdd-loading {
  position: fixed; top: 0; left: 0; right: 0; height: 3px; z-index: 9999;
  background: linear-gradient(90deg, #D4AF37, #B8860B, #D4AF37);
  background-size: 200% 100%;
  opacity: 0; transition: opacity .2s; pointer-events: none;
}
#kdd-loading.on { opacity: 1; animation: kdd-flow 1.2s linear infinite; }
@keyframes kdd-flow {
  0% { background-position: 0% 0; }
  100% { background-position: -200% 0; }
}

/* ═══ V5.3.3 仓管中心双Tab + 算法数据筛选表格 (丹青浅金VI) ═══ */
.tab-bar {
  display: flex; gap: 4px; margin-bottom: 16px; padding: 4px;
  background: #FFFDF6; border: 1px solid #F0E8D0; border-radius: 12px;
  box-shadow: 0 2px 8px rgba(212,175,55,.06);
}
.tab-btn {
  flex: 1; max-width: 200px; padding: 10px 18px; border: none; border-radius: 9px;
  background: transparent; color: #8a7a4a; font-size: 14px; font-weight: 600;
  cursor: pointer; transition: all .2s; text-align: center;
}
.tab-btn:hover { background: rgba(212,175,55,.1); color: #8A6D1A; }
.tab-btn.active {
  background: linear-gradient(135deg, #D4AF37, #B8860B); color: #fff;
  box-shadow: 0 3px 10px rgba(184,134,11,.35);
}
.tab-panel { display: none; }
.tab-panel.active { display: block; }

/* 汇总卡片 (算法数据) */
.cards-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 12px; }
.card {
  background: var(--color-bg-card); border: 1px solid #F0E8D0; border-radius: 12px;
  padding: 14px 16px; text-align: center; box-shadow: 0 2px 8px rgba(212,175,55,.06);
}
.card-v { font-size: 22px; font-weight: 800; color: #8A6D1A; }
.card-v.good { color: var(--green); }
.card-v.warn { color: var(--orange); }
.card-l { font-size: 12px; color: var(--color-text-muted); margin-top: 4px; }

/* 筛选栏日期分隔与日期输入 */
.filter-sep { color: #b0a98f; font-size: 13px; }
.filter-bar input[type=date] {
  padding: 7px 10px; border: 1px solid var(--color-border); border-radius: 8px;
  font-size: 13px; background: #FFFDF6; color: #333;
}
.filter-bar input[type=date]:focus { border-color: var(--color-brand); box-shadow: 0 0 0 2px rgba(212,175,55,.15); outline: none; }

/* 算法数据表格容器 */
#algo-grid.ag-theme-alpine { height: calc(100vh - 330px); min-height: 380px; }
#algo-summary { margin-bottom: 4px; }

@media (max-width: 768px) {
  .tab-btn { max-width: none; }
  #algo-grid.ag-theme-alpine { height: calc(100vh - 420px); min-height: 300px; }
  .cards-grid { grid-template-columns: repeat(2, 1fr); }
}
