/* ============================================
   制造预实报表系统 - 公共样式 (自适应主题)
   设计：卡片化 + CSS 变量 + 移动端优先响应式
   ============================================ */
:root{
  --primary:#409EFF; --primary-dark:#337ecc; --primary-light:#ecf5ff;
  --success:#67C23A; --success-light:#f0f9eb;
  --warning:#E6A23C; --warning-light:#fdf6ec;
  --danger:#F56C6C;  --danger-light:#fef0f0;
  --text-1:#303133; --text-2:#606266; --text-3:#909399; --text-4:#c0c4cc;
  --border:#dcdfe6; --border-light:#ebeef5;
  --bg:#eef1f6; --card-bg:#ffffff;
  --radius:12px; --radius-sm:6px;
  --shadow:0 4px 20px rgba(31,45,61,.08);
  --shadow-hover:0 8px 30px rgba(31,45,61,.14);
  --font:'Microsoft YaHei','PingFang SC','Segoe UI','Helvetica Neue',Arial,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0;}
html{-webkit-text-size-adjust:100%;}
body{
  font-family:var(--font);
  background:linear-gradient(160deg,#f2f5fa 0%,#e9eef6 100%);
  color:var(--text-1);
  font-size:14px;
  line-height:1.6;
  min-height:100vh;
  padding-bottom:40px;
}
a{color:var(--primary);text-decoration:none;}
a:hover{color:var(--primary-dark);}

/* ===== 布局 ===== */
.page{max-width:1320px;margin:0 auto;padding:0 16px;}
.card{
  background:var(--card-bg);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  padding:24px 28px;
  margin-top:20px;
}
@media (max-width:640px){ .card{padding:16px 14px;} }

/* ===== 标题 ===== */
.page-title{
  font-size:22px;font-weight:600;color:var(--text-1);
  border-left:5px solid var(--primary);
  padding-left:14px;margin:6px 0 4px;
}
.page-sub{color:var(--text-3);font-size:13px;margin:4px 0 0 19px;}
.section-title{
  font-size:16px;font-weight:600;color:var(--text-1);
  border-left:4px solid var(--warning);
  padding-left:12px;margin:28px 0 12px;
  display:flex;align-items:center;gap:8px;
}

/* ===== 顶部导航 ===== */
.topbar{
  background:#fff;border-bottom:1px solid var(--border-light);
  box-shadow:0 2px 8px rgba(31,45,61,.05);
  position:sticky;top:0;z-index:100;
}
.topbar-inner{
  max-width:1320px;margin:0 auto;padding:0 16px;
  display:flex;justify-content:space-between;align-items:center;gap:12px;
  min-height:58px;flex-wrap:wrap;
}
.topbar-brand{display:flex;align-items:center;gap:10px;font-size:17px;font-weight:700;color:var(--text-1);}
.topbar-brand .logo{
  width:34px;height:34px;border-radius:9px;flex:none;
  background:linear-gradient(135deg,#409EFF,#7fb8ff);
  display:flex;align-items:center;justify-content:center;color:#fff;font-size:18px;
  box-shadow:0 3px 8px rgba(64,158,255,.35);
}
.topbar-user{font-size:13px;color:var(--text-3);}
.topbar-user strong{color:var(--text-1);}
.topbar-nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.nav-link{
  display:inline-flex;align-items:center;gap:6px;
  padding:8px 14px;border-radius:8px;font-size:14px;color:var(--text-2);
  transition:all .18s;
}
.nav-link:hover{background:var(--primary-light);color:var(--primary);}
.nav-link.active{background:var(--primary);color:#fff;box-shadow:0 3px 8px rgba(64,158,255,.3);}
.nav-link.danger:hover{background:var(--danger-light);color:var(--danger);}
@media (max-width:768px){
  .topbar-inner{flex-direction:column;padding:10px 12px;gap:8px;}
  .topbar-nav{justify-content:center;width:100%;}
  .nav-link{flex:1;justify-content:center;padding:8px 6px;font-size:13px;}
}

/* ===== 工具栏（筛选/操作行） ===== */
.toolbar{
  display:flex;justify-content:space-between;align-items:center;
  gap:12px;flex-wrap:wrap;margin:18px 0;
}
.toolbar-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.input,select.input,textarea.input{
  padding:9px 12px;border:1px solid var(--border);border-radius:8px;
  font-size:14px;font-family:var(--font);background:#fff;color:var(--text-1);
  transition:border-color .18s, box-shadow .18s;outline:none;
}
.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(64,158,255,.15);}
.input-number{width:90px;}

/* ===== 按钮 ===== */
.btn{
  display:inline-flex;align-items:center;gap:6px;justify-content:center;
  padding:9px 20px;border:none;border-radius:8px;font-size:14px;font-family:var(--font);
  cursor:pointer;color:#fff;transition:all .18s;text-decoration:none;line-height:1.4;
  box-shadow:0 2px 6px rgba(31,45,61,.12);
}
.btn:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(31,45,61,.2);filter:brightness(1.05);}
.btn:active{transform:translateY(0);}
.btn-primary{background:linear-gradient(135deg,#409EFF,#2d8cf0);}
.btn-success{background:linear-gradient(135deg,#67C23A,#58b32b);}
.btn-warning{background:linear-gradient(135deg,#E6A23C,#d98f1f);}
.btn-danger{background:linear-gradient(135deg,#F56C6C,#e65353);}
.btn-secondary{background:#f4f4f5;color:var(--text-2);box-shadow:none;}
.btn-secondary:hover{background:#e6e6e8;color:var(--text-1);}
.btn-sm{padding:5px 12px;font-size:13px;border-radius:6px;}
.btn-lg{padding:12px 34px;font-size:16px;}
.btn-block{width:100%;}

/* ===== 表格 ===== */
.table-wrap{
  overflow-x:auto;border-radius:10px;border:1px solid var(--border-light);
  background:#fff;margin:10px 0 4px;
}
table.data-table{width:100%;border-collapse:collapse;font-size:14px;min-width:760px;}
.data-table th,.data-table td{padding:10px 12px;text-align:right;border-bottom:1px solid var(--border-light);white-space:nowrap;}
.data-table th{
  background:linear-gradient(180deg,#f7f9fc,#eef2f8);color:var(--text-1);
  font-weight:600;text-align:center;position:sticky;top:0;
  border-bottom:2px solid #e3e9f2;
}
.data-table td:first-child{text-align:left;}
.data-table tbody tr{transition:background .12s;}
.data-table tbody tr:hover{background:#f7fafd;}
.data-table tbody tr:last-child td{border-bottom:none;}
.data-table .num{font-variant-numeric:tabular-nums;}
/* 科目树缩进 */
.data-table tr.level-1 td:first-child{font-weight:700;background:#f0f4fa;}
.data-table tr.level-2 td:first-child{padding-left:32px;}
.data-table tr.level-3 td:first-child{padding-left:64px;color:var(--text-2);}
/* 达成率配色（样表口径） */
.rate-red{background-color:#fde2e2 !important;color:#c0392b !important;font-weight:600;}
.rate-yellow{background-color:#fff3cd !important;color:#8a6d1d !important;font-weight:600;}
.rate-green{background-color:#d4edda !important;color:#1e7e34 !important;font-weight:600;}
/* 指标行 */
.metric-row td{font-weight:700;background:#ecf5ff !important;}
.metric-row.sub td{font-weight:normal;background:#fafcff !important;}
.finance td:first-child{color:var(--text-2);}

/* ===== 状态徽章 ===== */
.badge{
  display:inline-flex;align-items:center;gap:5px;
  padding:3px 12px;border-radius:20px;font-size:12px;font-weight:600;color:#fff;
}
.b-pending{background:var(--text-4);}
.b-doing{background:linear-gradient(135deg,#E6A23C,#d98f1f);}
.b-done{background:linear-gradient(135deg,#67C23A,#58b32b);}
.b-abandoned{background:linear-gradient(135deg,#F56C6C,#e65353);}
.tag-status{display:inline-block;padding:2px 12px;border-radius:14px;font-size:12px;font-weight:600;}
.tag-on{background:var(--success-light);color:var(--success);}
.tag-off{background:var(--danger-light);color:var(--danger);}

/* ===== 提示消息 ===== */
.msg{
  padding:12px 16px;border-radius:10px;margin:14px 0;
  display:flex;align-items:center;gap:8px;font-size:14px;
}
.msg-success{background:var(--success-light);color:var(--success);border-left:4px solid var(--success);}
.msg-error{background:var(--danger-light);color:var(--danger);border-left:4px solid var(--danger);}
.msg-info{background:var(--primary-light);color:var(--primary);border-left:4px solid var(--primary);}

/* ===== 表单 ===== */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 24px;max-width:760px;}
.form-grid .full{grid-column:1/-1;}
.form-item{display:flex;flex-direction:column;gap:6px;}
.form-item>label{font-weight:600;color:var(--text-2);font-size:13px;}
.form-item .required::after{content:" *";color:var(--danger);}
.form-item .hint{font-size:12px;color:var(--text-3);}
@media (max-width:640px){ .form-grid{grid-template-columns:1fr;} }

/* ===== 登录页 ===== */
.login-page{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  padding:20px;
  background:linear-gradient(135deg,#1c2b4a 0%,#2d4a8f 55%,#409EFF 100%);
}
.login-card{
  width:100%;max-width:400px;background:#fff;border-radius:16px;
  box-shadow:0 20px 60px rgba(0,0,0,.3);padding:38px 36px;
}
.login-card h2{text-align:center;margin-bottom:6px;font-size:22px;color:var(--text-1);}
.login-sub{text-align:center;color:var(--text-3);font-size:13px;margin-bottom:22px;}
.login-card .form-item{margin-bottom:16px;}
.login-card .form-item>label{font-size:14px;}
.login-card input{padding:11px 14px;}
.login-foot{text-align:center;color:var(--text-3);font-size:12px;margin-top:18px;}
@media (max-width:440px){ .login-card{padding:28px 22px;} }

/* ===== 图例/说明 ===== */
.legend{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;color:var(--text-3);margin-top:14px;}
.legend .chip{padding:3px 12px;border-radius:14px;color:#fff;font-size:12px;}
.footnote{font-size:12px;color:var(--text-3);line-height:1.9;margin-top:16px;padding:14px 16px;background:#f8fafc;border-radius:10px;border:1px dashed var(--border-light);}
.footnote b{color:var(--text-2);}

/* ===== 指标卡（月度报表附加指标） ===== */
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;margin-top:12px;}
.kpi-card{
  background:linear-gradient(160deg,#fff,#f6f9fe);border:1px solid var(--border-light);
  border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:6px;
  transition:all .18s;
}
.kpi-card:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px);}
.kpi-card .kpi-label{font-size:12px;color:var(--text-3);}
.kpi-card .kpi-value{font-size:20px;font-weight:700;color:var(--text-1);font-variant-numeric:tabular-nums;}
.kpi-card .kpi-unit{font-size:12px;color:var(--text-3);font-weight:normal;}
.kpi-card.hl{border-left:4px solid var(--primary);background:linear-gradient(160deg,#fff,var(--primary-light));}
.kpi-card.hl .kpi-value{color:var(--primary);}

/* ===== 图表 ===== */
.chart-box{width:100%;height:420px;margin:16px 0;}
@media (max-width:768px){ .chart-box{height:320px;} }

/* ===== 精进表专用 ===== */
.cat-block{margin-bottom:8px;}
.cat-head{
  display:flex;align-items:center;gap:10px;margin:26px 0 10px;
  padding:10px 16px;border-radius:10px;
  background:linear-gradient(135deg,#fdf6ec,#fef9f0);border-left:5px solid var(--warning);
  font-size:15px;font-weight:700;color:#8a6d1d;
}
.cat-head .cat-count{font-size:12px;color:var(--text-3);font-weight:normal;margin-left:auto;}
.improve-box{border:1px solid var(--border-light);border-radius:12px;padding:20px;margin-bottom:18px;background:#fbfdff;}
.empty-tip{padding:26px;text-align:center;color:var(--text-3);background:#fafbfc;border:1px dashed var(--border-light);border-radius:10px;font-size:13px;}

/* ===== 滚动条 ===== */
::-webkit-scrollbar{width:8px;height:8px;}
::-webkit-scrollbar-thumb{background:#c8d2e0;border-radius:4px;}
::-webkit-scrollbar-track{background:transparent;}

/* ===== 月份切换工具条 ===== */
.month-toolbar{display:block;}
.month-nav-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.mn-arrow{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:36px;padding:0 8px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text-2);font-size:13px;text-decoration:none;transition:all .18s;}
.mn-arrow:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-light);}
.mn-select{width:auto;padding:8px 10px;}
.month-quick-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}
.mn-chip{padding:6px 13px;border:1px solid var(--border);border-radius:16px;font-size:13px;color:var(--text-2);background:#fff;text-decoration:none;transition:all .18s;}
.mn-chip:hover{border-color:var(--primary);color:var(--primary);}
.mn-chip.on{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 3px 8px rgba(64,158,255,.3);}
@media (max-width:640px){ .mn-select{max-width:96px;} .mn-chip{padding:5px 10px;font-size:12px;} }

/* ===== 精进表卡片布局 ===== */
.imp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:12px 0 6px;}
@media (max-width:960px){ .imp-grid{grid-template-columns:repeat(2,minmax(0,1fr));} }
@media (max-width:760px){ .imp-grid{grid-template-columns:1fr;} }
.imp-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--border-light);border-radius:12px;overflow:hidden;transition:box-shadow .18s,transform .18s;}
.imp-card:hover{box-shadow:0 6px 18px rgba(31,45,61,.08);transform:translateY(-1px);}
.imp-head{display:flex;align-items:flex-start;gap:10px;padding:14px 16px;background:linear-gradient(160deg,#f7f9fc,#eef3fa);border-bottom:1px solid var(--border-light);}
.imp-no{flex:0 0 auto;min-width:26px;height:26px;border-radius:8px;background:var(--primary);color:#fff;font-size:13px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;}
.imp-title{flex:1;min-width:0;font-size:15px;font-weight:600;color:var(--text-1);line-height:1.5;word-break:break-word;}
.imp-body{padding:4px 16px 8px;display:flex;flex-direction:column;flex:1;}
.imp-field{display:flex;gap:10px;padding:7px 0;border-bottom:1px dashed var(--border-light);font-size:13px;}
.imp-field:last-child{border-bottom:none;}
.imp-label{flex:0 0 96px;color:var(--text-3);font-size:12px;line-height:1.7;padding-top:1px;}
.imp-value{flex:1;min-width:0;color:var(--text-1);line-height:1.7;white-space:pre-wrap;word-break:break-word;}
.imp-meta{display:flex;flex-wrap:wrap;gap:8px;padding:10px 16px 4px;}
.imp-meta-item{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--text-2);background:#f5f7fa;border:1px solid var(--border-light);border-radius:14px;padding:3px 10px;}
.imp-actions{display:flex;gap:8px;align-items:center;padding:10px 16px;border-top:1px dashed var(--border-light);background:#fafbfc;}
@media (max-width:720px){ .imp-grid{grid-template-columns:1fr;} }
