/* ============================================================
   欧生暖通管理系统 · 现代专业 ERP 视觉层
   在 Bootstrap 5 之上覆盖，直接引入即可，不改业务结构
   ============================================================ */

/* ---------- 设计令牌（覆盖 Bootstrap 默认蓝，全局生效） ---------- */
:root{
  --brand:#2563eb;              /* 主色：商务蓝 */
  --brand-deep:#1d4ed8;
  --brand-soft:#eff4ff;         /* 主色浅底 */
  --brand-rgb:37,99,235;
  --ink:#0f172a;                /* 正文近黑 */
  --ink-2:#475569;              /* 次级文字 */
  --ink-3:#94a3b8;              /* 弱文字 */
  --line:#e4e9f2;               /* 分隔线 */
  --page:#f2f5fa;               /* 页面底色 */
  --sidebar-w:216px;

  /* Bootstrap 同步变量 */
  --bs-primary:#2563eb;
  --bs-primary-rgb:37,99,235;
  --bs-body-bg:var(--page);
  --bs-body-color:#334155;
  --bs-link-color:#2563eb;
  --bs-link-hover-color:#1d4ed8;
  --bs-border-radius:.5rem;
  --bs-focus-ring-color:rgba(37,99,235,.25);
  --bs-btn-focus-box-shadow:0 0 0 .2rem rgba(37,99,235,.2);
}

/* ---------- 基础 ---------- */
body{
  background:var(--page);
  font-size:14px;
  color:#334155;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:8px}
::-webkit-scrollbar-thumb:hover{background:#94a3b8}
::-webkit-scrollbar-track{background:transparent}

h1,h2,h3,h4,h5,h6{color:var(--ink);font-weight:600}
a{text-decoration:none}

/* 数字一律等宽，避免跳动，观感更"财务" */
.text-end,.num,table td,table th,.amount-card{font-variant-numeric:tabular-nums}

/* ---------- 侧边栏 ---------- */
.layout{display:flex;min-height:100vh}
.sidebar{
  width:var(--sidebar-w);flex:none;
  background:linear-gradient(180deg,#0f1c33 0%,#131f38 100%);
  color:#9fb0c8;
  padding:0 0 16px;
  display:flex;flex-direction:column;
  position:sticky;top:0;height:100vh;overflow-y:auto;
}
.sidebar .brand{
  display:flex;align-items:center;gap:10px;
  padding:16px 16px;
  border-bottom:1px solid rgba(255,255,255,.07);
  margin-bottom:10px;
}
.brand-mark{
  width:30px;height:30px;border-radius:9px;flex:none;
  display:inline-flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,#2563eb 0%,#0ea5e9 100%);
  color:#fff;font-weight:700;font-size:16px;
  box-shadow:0 3px 8px rgba(37,99,235,.4);
}
.sidebar .brand-text{font-size:15px;color:#fff;font-weight:600;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar nav{display:flex;flex-direction:column;flex:1}
.sidebar .group{
  padding:14px 20px 5px;color:#55688a;font-size:11px;letter-spacing:1px;
}
.sidebar nav a{
  display:flex;align-items:center;gap:11px;
  margin:1px 10px;padding:8px 12px;
  color:#aebbd0;border-radius:8px;
  font-size:13.5px;
  transition:background .15s,color .15s;
  position:relative;
}
.sidebar nav a svg{flex:none;width:17px;height:17px;opacity:.85}
.sidebar nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.sidebar nav a.on{
  background:linear-gradient(90deg,rgba(37,99,235,.95),rgba(37,99,235,.75));
  color:#fff;font-weight:500;
  box-shadow:0 3px 10px rgba(37,99,235,.35);
}
.sidebar nav a.on svg{opacity:1}

/* ---------- 内容区 / 顶栏 ---------- */
.content{flex:1;min-width:0;padding:16px 22px 30px}
.topbar{
  display:flex;justify-content:space-between;align-items:center;
  margin-bottom:14px;padding:0 0 12px;
  color:var(--ink-2);border-bottom:1px solid var(--line);
}
.topbar .who{font-size:13px}
.topbar .role-chip{
  display:inline-block;padding:1px 10px;margin-right:8px;
  background:var(--brand-soft);color:var(--brand-deep);
  border:1px solid rgba(37,99,235,.18);border-radius:20px;
  font-size:12px;font-weight:500;
}

/* ---------- 卡片 ---------- */
.card{
  border:1px solid var(--line);
  border-radius:12px;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
  margin-bottom:16px;
}
.card-header{
  background:#fff;border-bottom:1px solid #eef1f7;
  font-size:13.5px;font-weight:600;color:var(--ink);
  border-radius:12px 12px 0 0 !important;
}
.card-footer{background:#fafbfd;border-top:1px solid #eef1f7;border-radius:0 0 12px 12px}

/* ---------- 统计小卡（看板 / 列表合计） ---------- */
.amount-card{
  background:#fff;border:1px solid var(--line);border-radius:12px;
  padding:12px 16px;
  box-shadow:0 1px 2px rgba(15,23,42,.05);
  transition:box-shadow .15s,transform .15s;
}
.amount-card:hover{box-shadow:0 6px 16px rgba(15,23,42,.08)}
.amount-card .lbl{font-size:12px;color:var(--ink-3);margin-bottom:4px;letter-spacing:.3px}
.amount-card .num{font-size:24px;font-weight:700;color:var(--ink);line-height:1.25}
/* 金额语义色：仅 正向=绿 / 风险=红，其余一律主文字黑 */
.amount-card .num.text-success{color:#16a34a}
.amount-card .num.text-danger{color:#dc2626}

/* ---------- 按钮 ---------- */
.btn{border-radius:.45rem}
.btn-primary{
  --bs-btn-bg:var(--brand);--bs-btn-border-color:var(--brand);
  --bs-btn-hover-bg:var(--brand-deep);--bs-btn-hover-border-color:var(--brand-deep);
  --bs-btn-active-bg:#1e40af;--bs-btn-active-border-color:#1e40af;
  --bs-btn-disabled-bg:#a3c2f7;--bs-btn-disabled-border-color:#a3c2f7;
}
.btn-outline-primary{
  --bs-btn-color:var(--brand);--bs-btn-border-color:#93b4f5;
  --bs-btn-hover-bg:var(--brand);--bs-btn-hover-border-color:var(--brand);
  --bs-btn-active-bg:var(--brand-deep);--bs-btn-active-border-color:var(--brand-deep);
}
.btn-outline-secondary{--bs-btn-color:#64748b;--bs-btn-border-color:#cbd5e1;--bs-btn-hover-bg:#f1f5f9;--bs-btn-hover-border-color:#cbd5e1;--bs-btn-hover-color:#334155}
.btn-outline-danger{--bs-btn-hover-bg:#dc2626;--bs-btn-hover-border-color:#dc2626}
.btn-outline-success{--bs-btn-hover-bg:#16a34a;--bs-btn-hover-border-color:#16a34a}
.btn-sm{padding:.28rem .55rem;font-size:12.5px}

/* ---------- 表单 ---------- */
.form-label{font-size:12.5px;color:#475569;margin-bottom:3px}
.form-control,.form-select{border-color:#d7deea;border-radius:.45rem;font-size:14px}
.form-control:focus,.form-select:focus{
  border-color:#93b4f5;
  box-shadow:0 0 0 .18rem rgba(37,99,235,.12);
}
.form-check-input:checked{background-color:var(--brand);border-color:var(--brand)}

/* ---------- 表格 ---------- */
.table{--bs-table-hover-bg:#f4f8ff;vertical-align:middle;font-size:13.5px}
.table thead th{
  background:#f8fafc;color:#64748b;font-weight:600;font-size:12.5px;
  white-space:nowrap;border-bottom:1px solid var(--line);
  padding:.55rem .75rem;
}
.table tbody td{border-color:#f0f3f9;padding:.5rem .75rem}
.table-sm > :not(caption) > * > *{padding:.42rem .6rem}
/* 一深一浅斑马纹 + hover 高亮（hover 优先于斑马） */
.table tbody tr:nth-of-type(even){background:#eef2f8}
.table-hover>tbody>tr:hover,
.table-hover>tbody>tr:nth-of-type(even):hover{background:#e0ecff}
/* 表格内辅助小字（录入人/时间）：更浅更小 */
.table tbody td .small,
.table tbody td small{font-size:11.5px;color:#98a2b3}
/* 状态/类型徽章：浅底深字，弱化大面积纯色 */
.badge{border-radius:20px;font-weight:500;padding:.32em .7em;font-size:11.5px}
.badge.text-bg-primary{background:#e8f0fe;color:#1d4ed8}
.badge.text-bg-success{background:#e6f6ec;color:#16a34a}
.badge.text-bg-warning{background:#fff4e0;color:#d97706}
.badge.text-bg-danger{background:#fdeaea;color:#dc2626}
.badge.text-bg-secondary{background:#eef0f3;color:#64748b}
.badge.text-bg-info{background:#e0f2fe;color:#0284c7}
.text-void{color:#adb5bd;text-decoration:line-through}

/* ---------- 分页 ---------- */
.pager{margin:0}
.pager .page-link{
  padding:.3rem .62rem;color:#475569;border-color:var(--line);
  border-radius:.4rem!important;margin:0 2px;
}
.pager .page-item.active .page-link{background:var(--brand);border-color:var(--brand)}
.pager .page-link:hover{color:var(--brand-deep)}

/* ---------- 提示 ---------- */
.alert{border-radius:.6rem;font-size:13.5px}
.alert-info{background:#eef6ff;border-color:#cfe5ff;color:#1e5fae}

/* ---------- 页面标题 ---------- */
.page-title{font-size:20px;font-weight:700;color:var(--ink)}
/* ---------- 顶栏右侧操作 ---------- */
.topbar .op-link{
  display:inline-flex;align-items:center;gap:5px;
  padding:5px 10px;border-radius:7px;
  color:#64748b;text-decoration:none;font-size:13px;
  transition:background .15s,color .15s;
}
.topbar .op-link:hover{background:var(--brand-soft);color:var(--brand-deep)}
.topbar .op-link svg{width:14px;height:14px}
/* ---------- 搜索框与按钮连体圆角 ---------- */
.toolbar-search .form-control{border-top-right-radius:0;border-bottom-right-radius:0}
.toolbar-search .btn{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}

/* ---------- 操作面板分区（详情页右栏） ---------- */
.panel-sec + .panel-sec{border-top:1px solid #eef1f7}
.panel-sec .ps-h{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:10px 16px;background:#fafbfd;
  font-weight:600;font-size:13px;color:var(--ink);
}
.panel-sec .ps-b{padding:14px 16px}
/* ---------- 键值信息（详情页基础信息） ---------- */
.kv{display:flex;align-items:baseline;min-width:0;padding:3px 0}
.kv .k{
  flex:none;width:92px;text-align:right;padding-right:10px;
  color:#64748b;font-weight:600;font-size:13px;
}
.kv .v{color:var(--ink);min-width:0}
/* ---------- 分项增补行（变更增项标记） ---------- */
.extra-row td{background:#fdf7ec}

/* ---------- 登录页 ---------- */
.login-wrap{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  padding:20px;position:relative;overflow:hidden;
  background:radial-gradient(900px 420px at 12% -8%,#dbe7ff 0%,transparent 60%),
             radial-gradient(800px 420px at 108% 115%,#d7eaff 0%,transparent 55%),
             linear-gradient(180deg,#eef3fb 0%,#e6edf8 100%);
}
.login-card{width:370px;max-width:100%;margin:0;border-radius:16px;overflow:hidden;
  box-shadow:0 20px 50px rgba(30,64,175,.16);border:1px solid #e3ebf8}
.login-card .login-top{
  height:6px;background:linear-gradient(90deg,#2563eb,#0ea5e9);
}
.brand-mark-lg{width:52px;height:52px;border-radius:14px;font-size:26px;
  box-shadow:0 8px 18px rgba(37,99,235,.35)}

/* ---------- 窄屏：侧边栏收成图标栏 ---------- */
@media (max-width:991.98px){
  .sidebar{width:58px}
  .sidebar .brand{justify-content:center;padding:14px 0}
  .sidebar nav .group,.sidebar .nt{display:none}
  .sidebar nav a{justify-content:center;padding:10px 0;margin:1px 6px}
  .sidebar nav a svg{width:19px;height:19px}
  .content{padding:12px 14px}
}
