/* ========== 全局 ========== */
:root {
    --sidebar-w: 230px;
    --primary: #4361ee;
    --primary-hover: #3a56d4;
    --primary-light: #eef1ff;
    --danger: #ef4444;
    --danger-light: #fef2f2;
    --success: #10b981;
    --success-light: #ecfdf5;
    --warning: #f59e0b;
    --warning-light: #fffbeb;
    --info: #3b82f6;
    --purple: #8b5cf6;
    --teal: #14b8a6;
    --orange: #f97316;
    --bg: #f5f6fa;
    --card: #ffffff;
    --text: #1f2937;
    --text2: #6b7280;
    --text3: #9ca3af;
    --border: #e5e7eb;
    --shadow: 0 1px 3px rgba(0,0,0,.06);
    --shadow-md: 0 4px 12px rgba(0,0,0,.08);
    --radius: 10px;
    --radius-lg: 14px;
}
* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:'Inter','PingFang SC','Microsoft YaHei',sans-serif; background:var(--bg); color:var(--text); font-size:14px; line-height:1.6; }
.app { display:none; min-height:100vh; }
.app.app-visible { display:flex; }

/* ========== 顶部导航栏 ========== */
.sidebar { width:100%; height:auto; background:#1e293b; color:#fff; position:fixed; top:0;left:0;right:0; z-index:100; display:flex; align-items:center; padding:0 16px; gap:8px; }
.sidebar-brand { padding:8px 12px; display:flex; align-items:center; gap:10px; margin-left:auto; flex-shrink:0; }  /* 品牌靠右 */
.brand-icon { width:30px; height:30px; background:var(--primary); border-radius:6px; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:14px; flex-shrink:0; }
.brand-text { font-size:15px; font-weight:700; letter-spacing:1px; }
.brand-text span { color:var(--primary-light); font-weight:400; }
.sidebar-label { display:none; }  /* 隐藏分组标签，节省空间 */
.nav-list { list-style:none; padding:0; display:flex; flex-wrap:nowrap; gap:2px; overflow-x:auto; flex:1; min-width:0; }  /* 单行不换行 */
.nav-list::-webkit-scrollbar { height:0; }  /* 隐藏滚动条 */
.nav-item { display:flex; align-items:center; gap:5px; padding:8px 12px; cursor:pointer; color:#cbd5e1; border-radius:6px; transition:all .2s; font-size:13px; white-space:nowrap; flex-shrink:0; }
.nav-item:hover { background:rgba(255,255,255,.08); color:#fff; }
.nav-item.active { background:var(--primary); color:#fff; font-weight:500; }
.nav-item.nav-sub { padding-left:12px; font-size:12px; color:#94a3b8; }
.nav-item.nav-sub:hover { color:#fff; }
.nav-item.nav-sub.active { background:rgba(67,97,238,.85); color:#fff; }
.nav-item.nav-indent { padding-left:36px !important; }
.nav-icon { font-size:14px; width:18px; text-align:center; }
.sidebar-footer { display:none; }

/* ========== 主内容 ========== */
.main { margin-top:52px; flex:1; display:flex; flex-direction:column; min-height:calc(100vh - 52px); }
.topbar { background:var(--card); padding:16px 28px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--border); }
.topbar-left { display:flex; align-items:center; gap:12px; }
.page-title { font-size:20px; font-weight:600; }
.page-subtitle { font-size:13px; color:var(--text2); margin-left:4px; }
.back-btn { background:none; border:1px solid var(--border); border-radius:6px; padding:6px 14px; cursor:pointer; font-size:13px; color:var(--text2); transition:all .2s; }
.back-btn:hover { background:var(--primary-light); color:var(--primary); border-color:var(--primary); }
.topbar-right { display:flex; align-items:center; gap:12px; }
.today-date { font-size:13px; color:var(--text2); }
.btn-ai { background:linear-gradient(135deg,var(--primary),var(--purple)); color:#fff; border:none; padding:8px 16px; border-radius:8px; cursor:pointer; font-size:13px; font-weight:500; }

.page { display:none; padding:24px 28px; flex:1; }
.page.active { display:block; }

/* ========== 按钮 ========== */
.btn { border:none; padding:8px 18px; border-radius:8px; cursor:pointer; font-size:14px; font-weight:500; transition:all .2s; }
.btn-primary { background:var(--primary); color:#fff; }
.btn-primary:hover { background:var(--primary-hover); }
.btn-secondary { background:var(--bg); color:var(--text2); border:1px solid var(--border); }
.btn-secondary:hover { background:#e5e7eb; }
.btn-danger { background:var(--danger); color:#fff; }
.btn-danger:hover { background:#dc2626; }
.btn-sm { padding:6px 12px; font-size:12px; }

/* ========== 仪表盘模块卡片 ========== */
.module-cards { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-bottom:24px; }
.module-card { background:var(--card); border-radius:var(--radius-lg); padding:20px; cursor:pointer; transition:all .25s; box-shadow:var(--shadow); border:1px solid var(--border); }
.module-card:hover { transform:translateY(-3px); box-shadow:var(--shadow-md); border-color:transparent; }
.mc-top { display:flex; justify-content:space-between; align-items:center; margin-bottom:12px; }
.mc-icon { font-size:28px; }
.mc-arrow { font-size:18px; color:var(--text3); font-weight:600; }
.mc-value { font-size:26px; font-weight:700; margin-bottom:4px; }
.mc-label { font-size:13px; color:var(--text2); }
.mc-tag { font-size:11px; color:var(--text3); margin-top:6px; }
.mc-tag.mc-warn { color:var(--warning); font-weight:500; }

.mc-blue .mc-value { color:var(--info); }
.mc-blue:hover { border-left:3px solid var(--info); }
.mc-green .mc-value { color:var(--success); }
.mc-green:hover { border-left:3px solid var(--success); }
.mc-purple .mc-value { color:var(--purple); }
.mc-purple:hover { border-left:3px solid var(--purple); }
.mc-orange .mc-value { color:var(--orange); }
.mc-orange:hover { border-left:3px solid var(--orange); }
.mc-teal .mc-value { color:var(--teal); }
.mc-teal:hover { border-left:3px solid var(--teal); }
.mc-red .mc-value { color:var(--danger); }
.mc-red:hover { border-left:3px solid var(--danger); }

/* ========== Dashboard 区域 ========== */
.dash-section { background:var(--card); border-radius:var(--radius-lg); padding:20px; margin-bottom:16px; box-shadow:var(--shadow); border:1px solid var(--border); }
.section-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; }
.section-header h3 { font-size:16px; font-weight:600; }

/* ========== AI 洞察卡片 ========== */
.insights-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.insight-card { border-radius:10px; padding:14px; font-size:13px; }
.insight-card.ic-insight { background:var(--primary-light); border:1px solid #c7d2fe; }
.insight-card.ic-trend { background:var(--success-light); border:1px solid #a7f3d0; }
.insight-card.ic-warning { background:var(--warning-light); border:1px solid #fcd34d; }
.insight-card.ic-alert { background:var(--danger-light); border:1px solid #fca5a5; }
.insight-card.ic-suggest { background:#f3e8ff; border:1px solid #c4b5fd; }
.ic-icon { font-size:20px; margin-bottom:6px; }
.ic-title { font-weight:600; font-size:14px; margin-bottom:4px; }
.ic-text { color:var(--text2); line-height:1.5; }

.insights-full-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:16px; }
.insight-card-full { border-radius:12px; padding:18px; }
.insight-card-full.ic-insight { background:var(--primary-light); border:1px solid #c7d2fe; }
.insight-card-full.ic-trend { background:var(--success-light); border:1px solid #a7f3d0; }
.insight-card-full.ic-warning { background:var(--warning-light); border:1px solid #fcd34d; }
.insight-card-full.ic-alert { background:var(--danger-light); border:1px solid #fca5a5; }
.insight-card-full.ic-suggest { background:#f3e8ff; border:1px solid #c4b5fd; }

.ai-page-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:20px; }
.ai-page-header h3 { font-size:18px; font-weight:600; }

/* ========== 数据表格 ========== */
.data-table { width:100%; border-collapse:collapse; background:var(--card); border-radius:var(--radius); overflow:hidden; }
.data-table th { background:#f8fafc; padding:10px 14px; text-align:left; font-weight:600; font-size:13px; color:var(--text2); border-bottom:2px solid var(--border); }
.data-table td { padding:10px 14px; border-bottom:1px solid var(--border); font-size:14px; }
.data-table tr:hover td { background:#f8fafc; }
.data-table tr { cursor:pointer; transition:background .15s; }
.status-badge { padding:4px 10px; border-radius:6px; font-size:12px; font-weight:500; }
.status-待确认,.status-待发送,.status-待生产,.status-待发货,.status-待结算 { background:#fef3c7; color:#92400e; }
.status-销售已确认 { background:#ffedd5; color:#9a3412; }
.status-已确认,.status-已接受 { background:var(--success-light); color:#065f46; }
.status-已完成,.status-已发货,.status-已签收,.status-已结算,.status-生产中,.status-运输中 { background:#dbeafe; color:#1e40af; }
.status-已取消,.status-已拒绝 { background:#f3f4f6; color:#6b7280; }
.status-已暂停 { background:#fef2f2; color:#991b1b; }
.empty-state { text-align:center; padding:40px; color:var(--text3); }
.empty-icon { font-size:36px; margin-bottom:8px; }

/* ========== 列表页 ========== */
.list-toolbar { display:flex; align-items:center; gap:12px; margin-bottom:16px; flex-wrap:wrap; }
.search-box { padding:8px 14px; border:1px solid var(--border); border-radius:8px; font-size:14px; width:220px; }
.search-box:focus { outline:none; border-color:var(--primary); box-shadow:0 0 0 3px rgba(67,97,238,.15); }
.toolbar-right { flex:1; }
.filter-select { padding:7px 12px; border:1px solid var(--border); border-radius:8px; font-size:13px; background:#fff; min-width:130px; }

/* ========== 快捷筛选按钮栏 ========== */
#listExtraFilter > div { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.quick-filter-bar { display:flex; flex-wrap:wrap; gap:6px; align-items:center; padding:4px 0; }
.qf-btn { padding:5px 12px; border:1px solid var(--border); border-radius:16px; background:#fff; font-size:13px; cursor:pointer; color:#4b5563; transition:all .15s; white-space:nowrap; }
.qf-btn:hover { border-color:var(--primary); color:var(--primary); }
.qf-btn.active { background:var(--primary); color:#fff; border-color:var(--primary); }
.qf-btn.qf-warn { color:#dc2626; border-color:#fecaca; }
.qf-btn.qf-warn:hover, .qf-btn.qf-warn.active { background:#dc2626; color:#fff; border-color:#dc2626; }
.qf-sep { color:#d1d5db; margin:0 2px; font-size:14px; }

/* ========== 详情页 ========== */
.detail-card { background:var(--card); border-radius:var(--radius-lg); padding:24px; box-shadow:var(--shadow); border:1px solid var(--border); }
.detail-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:20px; border-bottom:1px solid var(--border); padding-bottom:16px; }
.detail-header h3 { font-size:18px; font-weight:600; }
.detail-actions { display:flex; gap:8px; }
.detail-body { display:flex; flex-direction:column; gap:16px; }
/* 财务表单紧凑模式 */
.detail-body.compact { gap:10px; }
.detail-body.compact .form-row { gap:10px; }
.detail-body.compact .form-group { gap:2px; }
.detail-body.compact .form-group label { font-size:12px; }
.detail-body.compact .form-group input,
.detail-body.compact .form-group select,
.detail-body.compact .form-group textarea {
    padding:7px 10px; font-size:13px;
}
.detail-body.compact .form-section-title { padding:6px 0 4px; margin:4px 0 2px; font-size:13px; }
.detail-body.compact .form-group textarea { min-height:48px; }
.form-group { display:flex; flex-direction:column; gap:4px; }
.form-group label { font-size:13px; font-weight:500; color:var(--text2); }
.form-group input, .form-group select, .form-group textarea {
    padding:10px 14px; border:1px solid var(--border); border-radius:8px; font-size:14px; transition:all .2s;
}
.form-group input:focus, .form-group select:focus, .form-group textarea:focus {
    outline:none; border-color:var(--primary); box-shadow:0 0 0 3px rgba(67,97,238,.15);
}
.form-group textarea { min-height:60px; resize:vertical; }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.form-section-title { grid-column:1/-1; padding:10px 0 6px; font-size:14px; font-weight:700; color:#0891b2; border-bottom:2px solid #e0f2fe; margin:8px 0 4px; letter-spacing:.5px; }
.form-group input[readonly] { background:#f9fafb; color:var(--primary); font-weight:600; }
.field-hint { font-size:12px; color:var(--text2); margin-top:2px; }
.field-hint::before { content:'🧮 '; }
/* 工艺进度矩阵：顺序化工序表格 */
.process-matrix { display:flex; flex-direction:column; gap:2px; padding:6px 0; }
.proc-head { display:grid; grid-template-columns:56px 1fr 110px 70px 130px 140px 32px; gap:8px; padding:6px 8px; font-size:12px; color:var(--text2); background:#f8fafc; border-radius:8px; font-weight:500; }
.proc-row { display:grid; grid-template-columns:56px 1fr 110px 70px 130px 140px 32px; gap:8px; align-items:center; padding:8px; border:1px solid var(--border); border-radius:10px; background:var(--card); }
.proc-row:hover { background:#f8fafc; }
.proc-head span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.proc-name { font-size:14px; font-weight:500; color:var(--text); }
.proc-seq, .proc-days { width:100%; padding:6px 4px; border:1px solid var(--border); border-radius:6px; font-size:13px; text-align:center; }
.proc-status { width:100%; padding:6px 4px; border:1px solid var(--border); border-radius:6px; font-size:13px; background:#fff; }
.proc-deadline { width:100%; padding:5px; border:1px solid var(--border); border-radius:6px; font-size:13px; }
.proc-operator { width:100%; padding:6px 4px; border:1px solid var(--border); border-radius:6px; font-size:13px; }
.proc-warning { font-size:16px; line-height:1; cursor:help; }
.proc-warn-cell { text-align:center; }
/* 三种状态色 */
.proc-status[data-status="已完成"] { color:#10b981; border-color:#10b981; }
.proc-status[data-status="已安排"] { color:#f59e0b; border-color:#f59e0b; }
.proc-status[data-status="未安排"] { color:var(--text2); }
@media (max-width:640px) {
    .proc-head { display:none; }
    .proc-row { grid-template-columns:1fr; gap:6px; padding:12px; }
}
/* 产品图片上传 */
.img-upload-row { display:flex; align-items:center; gap:10px; margin-top:2px; }
.img-upload-row input[type=file] { font-size:13px; max-width:260px; }
.img-preview { margin-top:8px; border:1px dashed var(--border); border-radius:8px; min-height:90px; display:flex; align-items:center; justify-content:center; background:#fafbfc; overflow:hidden; }
.img-preview-img { max-width:200px; max-height:160px; object-fit:contain; border-radius:6px; }
.img-preview-empty { color:var(--text2); font-size:13px; }
/* 列表缩略图 */
.td-img { text-align:center; width:64px; }
.thumb { width:48px; height:48px; object-fit:cover; border-radius:6px; border:1px solid var(--border); }
.muted { color:var(--text2); }
.detail-related { margin-top:24px; border-top:1px solid var(--border); padding-top:16px; }
.detail-related h4 { font-size:14px; font-weight:600; margin-bottom:12px; color:var(--text2); }
.related-item { background:#f8fafc; border-radius:8px; padding:10px 14px; margin-bottom:6px; font-size:13px; }

/* ========== 财务汇总 ========== */
.finance-bar { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:16px; }
.fb-item { background:var(--card); border-radius:var(--radius); padding:14px; text-align:center; border:1px solid var(--border); }
.fb-label { font-size:12px; color:var(--text2); }
.fb-value { font-size:20px; font-weight:700; }
.fb-income { color:var(--success); }
.fb-expense { color:var(--danger); }
.fb-profit { color:var(--info); }
.fb-pending { color:var(--warning); }

/* 订单统计卡片（模仿阿米巴按类型核算） */
.order-stats-card { display:block !important; grid-column:1/-1; background:var(--card); border:1px solid var(--border); border-radius:var(--radius); padding:14px 16px; margin-bottom:16px; }
.order-stats-card .fb-title { font-size:13px; font-weight:600; color:var(--text2); margin-bottom:10px; }
.stats-table { width:100%; border-collapse:collapse; font-size:13px; }
.stats-table th, .stats-table td { padding:8px 10px; text-align:left; border-bottom:1px solid var(--border); }
.stats-table th { color:var(--text2); font-weight:600; background:rgba(0,0,0,.02); }
.stats-table td:nth-child(n+2), .stats-table th:nth-child(n+2) { text-align:right; }
.stats-table .stats-total td { font-weight:700; border-top:2px solid var(--border); background:rgba(0,0,0,.03); }

/* ========== AI 对话面板 ========== */
.ai-chat-panel { position:fixed; right:20px; bottom:20px; width:380px; background:var(--card); border-radius:var(--radius-lg); box-shadow:var(--shadow-md); z-index:200; display:none; border:1px solid var(--border); }
.ai-chat-panel.active { display:block; }
.ai-chat-header { display:flex; align-items:center; justify-content:space-between; padding:12px 16px; border-bottom:1px solid var(--border); }
.ai-chat-header h4 { font-size:14px; font-weight:600; }
.ai-btn-sm { background:none; border:none; cursor:pointer; font-size:13px; color:var(--text2); padding:4px 8px; }
.ai-chat-messages { padding:16px; max-height:320px; overflow-y:auto; display:flex; flex-direction:column; gap:8px; }
.ai-msg-bot { background:#f0f4ff; border-radius:8px; padding:10px 14px; font-size:13px; line-height:1.6; }
.ai-msg-user { background:var(--primary); color:#fff; border-radius:8px; padding:10px 14px; font-size:13px; align-self:flex-end; max-width:80%; }
.ai-suggestions { display:flex; gap:6px; padding:8px 16px; border-bottom:1px solid var(--border); flex-wrap:wrap; }
.ai-sug-btn { background:var(--primary-light); border:1px solid #c7d2fe; border-radius:6px; padding:4px 10px; font-size:12px; cursor:pointer; color:var(--primary); }
.ai-chat-input { display:flex; gap:8px; padding:12px 16px; }
.ai-chat-input input { flex:1; padding:8px 12px; border:1px solid var(--border); border-radius:8px; font-size:14px; }
.ai-chat-input input:focus { outline:none; border-color:var(--primary); }

/* ========== 确认弹窗 ========== */
.modal-overlay { position:fixed; top:0;left:0;right:0;bottom:0; background:rgba(0,0,0,.4); z-index:300; display:none; align-items:center; justify-content:center; }
.modal-overlay.active { display:flex; }
.modal-sm { background:var(--card); border-radius:var(--radius-lg); padding:24px; max-width:360px; }
.modal-sm h3 { font-size:16px; margin-bottom:12px; }
.modal-sm p { color:var(--text2); margin-bottom:16px; }
.modal-actions { display:flex; gap:8px; justify-content:flex-end; }

/* ========== 响应式 ========== */
@media (max-width:1200px) {
    .module-cards { grid-template-columns:repeat(2,1fr); }
    .insights-grid { grid-template-columns:repeat(2,1fr); }
}
@media (max-width:900px) {
    .sidebar { padding:0 8px; gap:4px; }
    .sidebar-brand { padding:6px 8px; }
    .brand-icon { width:26px; height:26px; font-size:13px; }
    .brand-text { font-size:13px; }
    .nav-item { padding:6px 8px; font-size:12px; }
    .nav-icon { font-size:13px; width:16px; }
    .main { margin-top:46px; min-height:calc(100vh - 46px); }
    .module-cards { grid-template-columns:1fr; }
    .form-row { grid-template-columns:1fr; }
    .finance-bar { grid-template-columns:repeat(2,1fr); }
}

/* ========== 登录/注册门禁 ========== */
.auth-screen { display:flex; align-items:center; justify-content:center; min-height:100vh; background:linear-gradient(135deg,#4361ee 0%,#8b5cf6 100%); }
.auth-card { width:380px; max-width:92vw; background:var(--card); border-radius:var(--radius-lg); padding:32px 28px; box-shadow:var(--shadow-md); }
.auth-brand { font-size:26px; font-weight:800; letter-spacing:1px; text-align:center; }
.auth-brand span { color:var(--primary); font-weight:400; }
.auth-sub { text-align:center; color:var(--text2); font-size:13px; margin:6px 0 18px; }
.auth-tabs { display:flex; background:var(--bg); border-radius:10px; padding:4px; margin-bottom:18px; }
.auth-tab { flex:1; border:none; background:none; padding:10px; border-radius:8px; cursor:pointer; font-size:14px; font-weight:600; color:var(--text2); transition:all .2s; }
.auth-tab.active { background:var(--card); color:var(--primary); box-shadow:var(--shadow); }
.auth-form { display:flex; flex-direction:column; gap:12px; }
.auth-form input { padding:12px 14px; border:1px solid var(--border); border-radius:8px; font-size:14px; outline:none; transition:border .2s; }
.auth-form input:focus { border-color:var(--primary); }
.auth-btn { padding:12px; font-size:15px; margin-top:4px; }
.auth-msg { text-align:center; font-size:13px; margin-top:12px; min-height:18px; }
.auth-msg.err { color:var(--danger); }
.auth-msg.ok { color:var(--success); }
.auth-note { margin:4px 0 10px; font-size:12px; color:var(--text2); line-height:1.5; }
.auth-note b { color:var(--accent); }
.auth-hint { margin-top:14px; font-size:13px; color:var(--text2); background:rgba(148,163,184,.12);
    border:1px solid rgba(148,163,184,.25); border-radius:8px; padding:10px 12px; line-height:1.6; text-align:center; }

/* ========== 顶部用户菜单 ========== */
.user-menu { display:flex; align-items:center; gap:10px; }
.user-name { font-size:13px; color:var(--text2); font-weight:500; }

/* ========== 打卡考勤 ========== */
.attendance-wrap { display:grid; grid-template-columns:1fr 320px; gap:18px; margin-bottom:18px; }
.clock-card { background:linear-gradient(135deg,#4361ee,#3a56d4); border-radius:var(--radius-lg); padding:32px; color:#fff; text-align:center; box-shadow:var(--shadow-md); }
.clock-time { font-size:52px; font-weight:800; letter-spacing:2px; }
.clock-date { font-size:14px; opacity:.85; margin-bottom:24px; }
.clock-btns { display:flex; gap:14px; justify-content:center; }
.clock-btn { border:none; border-radius:12px; padding:16px 22px; font-size:16px; font-weight:700; cursor:pointer; transition:transform .15s, box-shadow .15s; color:#fff; }
.clock-btn:hover { transform:translateY(-2px); }
.clock-morning { background:rgba(255,255,255,.18); }
.clock-evening { background:rgba(255,255,255,.18); }
.clock-status { margin-top:18px; font-size:14px; min-height:20px; }
.att-side { display:flex; flex-direction:column; gap:16px; }
.att-today { background:var(--card); border:1px solid var(--border); border-radius:var(--radius-lg); padding:18px; box-shadow:var(--shadow); }
.att-today h4 { font-size:15px; margin-bottom:12px; }
.att-today-row { display:flex; justify-content:space-between; padding:8px 0; border-bottom:1px dashed var(--border); font-size:14px; }
.att-today-row:last-child { border-bottom:none; }
.att-today-row.total b { color:var(--warning); font-size:16px; }
.att-settings { background:var(--card); border:1px solid var(--border); border-radius:var(--radius-lg); padding:18px; box-shadow:var(--shadow); }
.att-settings h4 { font-size:15px; margin-bottom:12px; }
.att-settings .form-row { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.att-settings .form-group label { font-size:12px; color:var(--text2); }
.att-settings .form-group input { width:100%; padding:8px 10px; border:1px solid var(--border); border-radius:6px; font-size:13px; }

/* 状态徽标扩展 */
.status-late { background:var(--danger-light); color:var(--danger); }
.status-early { background:var(--warning-light); color:var(--warning); }
.status-normal { background:var(--success-light); color:var(--success); }

@media (max-width:900px) {
    .attendance-wrap { grid-template-columns:1fr; }
}

/* ========== 内部活动考勤（增强） ========== */
.clock-btn small { display:block; font-size:11px; font-weight:500; opacity:.9; margin-top:3px; }
.att-page-head { margin-bottom:16px; }
.att-hint { background:var(--primary-light); color:var(--primary); padding:10px 14px; border-radius:10px; font-size:13px; margin:0; }
.activity-checkin { display:flex; gap:12px; flex-wrap:wrap; align-items:center; }
.activity-checkin .filter-select { min-width:200px; padding:10px 12px; border:1px solid var(--border); border-radius:8px; font-size:14px; }
.att-wecom { margin-top:14px; padding-top:12px; border-top:1px dashed var(--border); }
.att-wecom h5 { font-size:13px; margin-bottom:10px; color:var(--text2); }
.att-wecom .form-group { margin-bottom:10px; }
.att-wecom .form-group label { font-size:12px; color:var(--text2); display:block; margin-bottom:4px; }
.att-wecom .form-group input[type=text] { width:100%; padding:8px 10px; border:1px solid var(--border); border-radius:6px; font-size:13px; }
.att-wecom .form-group.chk label { display:flex; align-items:center; gap:6px; font-size:13px; color:var(--text); }

/* 考勤布局：双栏 */
.attendance-wrap { display:grid; grid-template-columns:1fr 1fr; gap:18px; align-items:start; }

/* 企业微信考勤徽标 */
.wecom-badge { display:inline-block; margin-top:14px; padding:4px 12px; background:rgba(255,255,255,.2); border-radius:20px; font-size:12px; }

/* 全员活动打卡卡片 */
.activity-hero { background:linear-gradient(135deg,#10b981,#059669); border-radius:var(--radius-lg); padding:22px; color:#fff; box-shadow:var(--shadow-md); }
.activity-hero-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; }
.activity-hero-head h4 { font-size:18px; margin:0; }
.activity-reward { background:rgba(255,255,255,.22); padding:4px 12px; border-radius:20px; font-weight:700; font-size:14px; }
.activity-deadline { font-size:13px; opacity:.92; margin:0 0 16px; }
.activity-deadline b { font-weight:700; }
.activity-done-tip { margin-top:12px; background:rgba(255,255,255,.18); padding:10px 14px; border-radius:10px; font-size:14px; text-align:center; }
.activity-today-pts { margin-top:12px; font-size:13px; opacity:.95; }
.activity-today-pts b { font-size:16px; }

.btn-block { display:block; width:100%; }

/* 设置分区 */
.settings-block { margin-bottom:16px; padding-bottom:14px; border-bottom:1px dashed var(--border); }
.settings-block:last-of-type { border-bottom:none; }
.settings-block h5 { font-size:13px; margin:0 0 10px; color:var(--text2); }

/* 月度统计 */
.monthly-toolbar { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.monthly-summary { display:flex; flex-wrap:wrap; gap:10px 22px; margin-bottom:14px; padding:12px 16px; background:var(--primary-light); border-radius:10px; font-size:13px; color:var(--primary); }
.monthly-summary span { font-weight:500; }

/* 订单类型徽标 */
.status-domestic { background:#e0f2fe; color:#0369a1; }
.status-foreign { background:#fef3c7; color:#b45309; }
.status-other { background:#f1f5f9; color:#475569; }
.status-stock { background:#dcfce7; color:#15803d; }

/* ========== 生产管理 ========== */
.prod-top { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:16px; flex-wrap:wrap; }
.prod-stats { display:flex; gap:12px; flex-wrap:wrap; }
.ps-item { background:var(--card); border:1px solid var(--border); border-radius:12px; padding:10px 18px; text-align:center; min-width:84px; }
.ps-val { font-size:20px; font-weight:700; color:var(--text); }
.ps-label { font-size:12px; color:var(--text2); margin-top:2px; }
.ps-pts .ps-val { color:#10b981; }

.prod-toolbar { display:flex; gap:10px; margin-bottom:16px; flex-wrap:wrap; }
.prod-toolbar .search-box { flex:1; min-width:200px; }

.prod-cards { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:14px; }
.prod-card { background:var(--card); border:1px solid var(--border); border-radius:14px; padding:16px; display:flex; flex-direction:column; gap:10px; cursor:pointer; transition:box-shadow .2s, transform .1s; }
.prod-card:hover { box-shadow:var(--shadow); transform:translateY(-2px); }
.prod-card-head { display:flex; justify-content:space-between; align-items:flex-start; gap:8px; }
.prod-no { font-size:12px; color:var(--text2); }
.prod-name { font-size:16px; font-weight:600; color:var(--text); }
.prod-meta { display:flex; flex-wrap:wrap; gap:8px; font-size:12px; color:var(--text2); align-items:center; }
.prod-type-tag { background:var(--primary-light); color:var(--primary); padding:2px 10px; border-radius:20px; font-weight:500; }
.prod-progress { height:8px; background:#eef2f7; border-radius:6px; overflow:hidden; }
.prod-progress-bar { height:100%; background:linear-gradient(90deg,#10b981,#34d399); border-radius:6px; transition:width .3s; }
.prod-progress-text { font-size:12px; color:var(--text2); }
.prod-card-actions { display:flex; gap:8px; margin-top:4px; }
.prod-card-body { display:flex; gap:12px; align-items:flex-start; }
.prod-thumb { width:64px; height:64px; object-fit:cover; border-radius:8px; border:1px solid var(--border); flex-shrink:0; background:#f8fafc; }
.prod-info { flex:1; min-width:0; }
.sales-confirmed-card { border-left:4px solid var(--warning); }
.sales-confirmed-card .status-已确认 { background:#fff7ed; color:#c2410c; }

/* 生产单创建时销售订单预览卡片 */
.sales-preview-card { background:#f8fafc; border:1px solid var(--border); border-radius:12px; padding:14px; margin-top:10px; }
.sales-preview-title { font-size:13px; font-weight:600; color:var(--text2); margin-bottom:10px; }
.sales-preview-body { display:flex; gap:12px; align-items:flex-start; }
.sales-preview-thumb { width:80px; height:80px; object-fit:cover; border-radius:8px; border:1px solid var(--border); background:#fff; flex-shrink:0; }
.sales-preview-info { flex:1; display:grid; grid-template-columns:repeat(2, 1fr); gap:6px 16px; }
.sp-row { display:flex; justify-content:space-between; font-size:13px; }
.sp-label { color:var(--text2); }
.sp-value { color:var(--text); font-weight:500; }

/* 生产流程弹窗 */
.modal-lg { width:760px; max-width:94vw; max-height:88vh; overflow:auto; }
.flow-info { background:var(--primary-light); color:var(--primary); padding:10px 14px; border-radius:10px; font-size:13px; margin-bottom:14px; }
.flow-steps { display:flex; flex-direction:column; gap:10px; }
.flow-step { display:flex; gap:12px; align-items:flex-start; padding:12px 14px; border:1px solid var(--border); border-radius:12px; background:var(--card); }
.flow-step.done { background:#f6fef9; border-color:#bbf7d0; }
.flow-step-no { width:26px; height:26px; flex:0 0 26px; border-radius:50%; background:var(--primary); color:#fff; font-size:13px; font-weight:700; display:flex; align-items:center; justify-content:center; margin-top:2px; }
.flow-step-main { flex:1; }
.flow-step-name { font-weight:600; color:var(--text); margin-bottom:8px; }
.flow-step-meta { display:flex; flex-wrap:wrap; gap:6px 8px; align-items:center; font-size:12px; color:var(--text2); }
.flow-step-meta select, .flow-step-meta input { padding:4px 8px; border:1px solid var(--border); border-radius:8px; font-size:13px; }
.flow-step-meta label { font-size:12px; }
.flow-step-side { display:flex; flex-direction:column; gap:8px; align-items:flex-end; min-width:96px; }
.flow-ranking-title { margin:18px 0 8px; font-weight:600; color:var(--text); }

/* 流程状态徽标 */
.status-done { background:#ecfdf5; color:#065f46; }
.status-doing { background:#eff6ff; color:#1d4ed8; }
.status-pending { background:#f1f5f9; color:#475569; }
.status-late { background:#fff7ed; color:#c2410c; }
.status-overdue { background:#fef2f2; color:#991b1b; }

/* 生产管理状态标签页 */
.prod-tabs { display:flex; gap:8px; margin-bottom:12px; border-bottom:1px solid var(--border); padding-bottom:8px; }
.prod-tab { padding:6px 16px; border-radius:6px; border:1px solid transparent; background:transparent; color:var(--text2); font-size:14px; cursor:pointer; }
.prod-tab:hover { background:#f1f5f9; }
.prod-tab.active { background:var(--primary); color:#fff; border-color:var(--primary); }

/* 日期节假日/周末标记 */
.holiday-tag { display:inline-block; margin-left:6px; padding:2px 8px; border-radius:4px; background:#fee2e2; color:#991b1b; font-size:12px; font-weight:500; }
.weekend-tag { display:inline-block; margin-left:6px; padding:2px 8px; border-radius:4px; background:#dbeafe; color:#1e40af; font-size:12px; }

/* 列表操作列按钮 */
.td-actions { white-space:nowrap; min-width:90px; }
.td-actions .btn { margin-right:4px; }
.td-actions .btn:last-child { margin-right:0; }
/* ========== 操作下拉菜单 ========== */
.action-dropdown { position:relative; display:inline-block; vertical-align:middle; }
.action-btn { cursor:pointer; font-size:12px; }
.action-menu { display:none; position:absolute; right:0; top:100%; margin-top:4px; background:#fff; border:1px solid var(--border); border-radius:8px; box-shadow:0 6px 20px rgba(0,0,0,.12); z-index:200; min-width:120px; overflow:hidden; }
.action-menu.open { display:block; }
.action-item { padding:9px 16px; font-size:13px; cursor:pointer; color:var(--text); transition:background .15s; white-space:nowrap; }
.action-item:hover { background:var(--bg); }
.action-del { color:var(--danger); border-top:1px solid var(--border); }
.action-del:hover { background:#fef2f2; }
.td-remark { max-width:240px; white-space:normal; word-break:break-word; color:#374151; }
.filter-sep { color:#6b7280; align-self:center; margin:0 2px; }

/* ========== 人员管理（账号层级） ========== */
.ua-grid { display:grid; grid-template-columns: 1fr 1fr; gap:16px; padding:16px; }
@media (max-width: 900px){ .ua-grid { grid-template-columns:1fr; } }
.ua-card { background:#fff; border:1px solid #e5e7eb; border-radius:12px; padding:16px; }
.ua-card h3 { margin:0 0 8px; font-size:15px; }
.form-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px 12px; }
.form-grid .form-group { margin:0; }
.form-group label { display:block; font-size:12px; color:#6b7280; margin-bottom:4px; }
.form-group input, .form-group select { width:100%; padding:8px 10px; border:1px solid #d1d5db; border-radius:8px; font-size:13px; box-sizing:border-box; }
.perm-box { background:#f9fafb; border:1px solid #eceff3; border-radius:8px; padding:10px; }
.perm-group { margin-bottom:8px; }
.perm-group-title { font-size:12px; color:#374151; font-weight:600; margin-bottom:4px; }
.perm-chk-row { display:flex; flex-wrap:wrap; gap:6px; }
.perm-chk { display:inline-flex; align-items:center; gap:4px; background:#eef2f7; padding:4px 8px; border-radius:6px; font-size:12px; cursor:pointer; }
.perm-chk input { margin:0; }
#uaModal { display:flex; align-items:center; justify-content:center; z-index:1100; }
#uaModalBody { background:#fff; border-radius:14px; padding:20px; width:520px; max-width:92vw; max-height:88vh; overflow:auto; box-shadow:0 16px 50px rgba(0,0,0,.25); }
#uaModalBody h3 { margin-top:0; }

/* ========== AI 自动统计洞察 ========== */
.insight-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(260px,1fr)); gap:12px; margin-top:12px; }
.insight-card { display:flex; gap:12px; background:#fff; border:1px solid #eceff3; border-left:4px solid #6366f1; border-radius:10px; padding:14px; box-shadow:0 1px 3px rgba(0,0,0,.04); }
.insight-card.insight-预警 { border-left-color:#ef4444; }
.insight-card.insight-趋势 { border-left-color:#3b82f6; }
.insight-card.insight-建议 { border-left-color:#10b981; }
.insight-icon { font-size:22px; line-height:1.2; }
.insight-body { flex:1; }
.insight-title { font-weight:600; font-size:14px; margin-bottom:4px; color:#111827; }
.insight-content { font-size:13px; color:#4b5563; line-height:1.5; white-space:pre-wrap; }

/* ========== 导出 Excel 弹窗 ========== */
.check-grid { display:flex; flex-wrap:wrap; gap:8px; }
.exp-check { display:inline-flex; align-items:center; gap:4px; background:#f1f5f9; padding:5px 10px; border-radius:6px; font-size:13px; cursor:pointer; }
.exp-check input { margin:0; }
.exp-radio { display:inline-flex; align-items:center; gap:4px; font-size:13px; cursor:pointer; }
.modal-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.modal-header h3 { margin:0; font-size:16px; }
.modal-body .form-group { margin-bottom:14px; }

/* ========== 现金报表样式 ========== */
.filter-label { font-size:13px; color:#6b7280; margin:0 4px; white-space:nowrap; }
.cash-func-btns { display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-top:8px; padding-top:8px; border-top:1px dashed #e5e7eb; }
.cash-func-btns .btn-outline { background:#fff; border:1px solid #d1d5db; color:#374151; font-size:12px; padding:4px 10px; border-radius:6px; cursor:pointer; }
.cash-func-btns .btn-outline:hover { background:#f3f4f6; border-color:#9ca3af; }
.cash-status-tabs { display:flex; gap:2px; margin-top:8px; background:#e5e7eb; border-radius:8px; padding:3px; }
.cash-tab { flex:1; padding:6px 16px; border:none; background:transparent; border-radius:6px; font-size:13px; cursor:pointer; color:#6b7280; transition:all .2s; text-align:center; }
.cash-tab:hover { color:#374151; }
.cash-tab.active { background:#fff; color:#111827; font-weight:600; box-shadow:0 1px 3px rgba(0,0,0,.1); }

/* ========== 现金报表三大操作按钮 ========== */
.btn-cash { display:inline-flex; align-items:center; gap:4px; padding:7px 16px; border:none; border-radius:8px; font-size:13px; font-weight:600; cursor:pointer; transition:all .2s; letter-spacing:.5px; }
.btn-cash:hover { transform:translateY(-1px); box-shadow:0 4px 12px rgba(0,0,0,.15); }
.btn-cash-receipt { background:linear-gradient(135deg,#10b981,#059669); color:#fff; }
.btn-cash-receipt:hover { background:linear-gradient(135deg,#059669,#047857); }
.btn-cash-payment { background:linear-gradient(135deg,#f97316,#ea580c); color:#fff; }
.btn-cash-payment:hover { background:linear-gradient(135deg,#ea580c,#c2410c); }
.btn-cash-other { background:linear-gradient(135deg,#8b5cf6,#7c3aed); color:#fff; }
.btn-cash-other:hover { background:linear-gradient(135deg,#7c3aed,#6d28d9); }

/* ========== 现金报表三类表单弹窗 ========== */
.cfm-dialog { width:92%; max-width:760px; background:#fff; border-radius:8px; overflow:hidden; box-shadow:0 20px 60px rgba(0,0,0,.2); }
.cfm-header { display:flex; justify-content:space-between; align-items:center; padding:10px 18px; background:#06b6d4; color:#fff; }
.cfm-title { font-size:15px; font-weight:600; letter-spacing:1px; }
.cfm-close { background:none; border:none; color:#fff; font-size:20px; cursor:pointer; line-height:1; opacity:.85; }
.cfm-close:hover { opacity:1; }
.cfm-subtitle { padding:10px 18px 6px; font-size:13px; color:#374151; font-weight:500; border-bottom:1px solid #e5e7eb; }
.cfm-body { display:flex; gap:0; padding:14px 18px 4px; }
.cfm-fields { flex:1; min-width:0; }
.cfm-fields.cfm-single { max-width:480px; }
.cf-img-col { width:130px; flex-shrink:0; margin-left:16px; display:flex; flex-direction:column; align-items:center; }
.cf-row { display:flex; align-items:center; gap:8px; min-height:34px; margin-bottom:6px; }
.cf-row-full { grid-column:1 / -1; }
.cf-row label { width:52px; flex-shrink:0; font-size:13px; color:#374151; text-align:right; font-weight:500; }
.cf-row input, .cf-row select, .cf-row textarea { flex:1; min-width:0; border:1px solid #d1d5db; border-radius:4px; padding:4px 8px; font-size:13px; outline:none; transition:border-color .2s; height:28px; box-sizing:border-box; }
.cf-row input:focus, .cf-row select:focus, .cf-row textarea:focus { border-color:#06b6d4; box-shadow:0 0 0 2px rgba(6,182,212,.15); }
.cf-row textarea { height:auto; resize:vertical; }
.cf-unit { color:#6b7280; font-size:12px; white-space:nowrap; }
.cf-sel-btn { background:#fef08a; color:#854d0e; border:1px solid #fde047; border-radius:3px; font-size:12px; padding:1px 10px; cursor:pointer; white-space:nowrap; line-height:22px; }
.cf-sel-btn:hover { background:#fde047; }
.cfm-footer { padding:12px 18px 18px; text-align:center; border-top:1px solid #f3f4f6; }
.cf-submit-btn { background:#f97316; color:#fff; border:none; border-radius:6px; padding:8px 48px; font-size:14px; font-weight:600; cursor:pointer; transition:background .2s; }
.cf-submit-btn:hover { background:#ea580c; }
.img-upload-box { width:110px;height:82px;border:2px dashed #9ca3af;border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;font-size:18px;color:#9ca3af;flex-shrink:0;transition:all .2s;background:#fafafa; text-align:center; line-height:1.3; }
.img-upload-box:hover { border-color:#06b6d4; color:#06b6d4; background:#ecfeff; }

/* 现金报表列表行操作按钮 */
.btn-cash-op { display:inline-flex; align-items:center; gap:2px; padding:3px 10px; border:none; border-radius:4px; font-size:12px; font-weight:600; cursor:pointer; transition:all .15s; letter-spacing:.5px; }
.btn-cash-view { background:#f3f4f6; color:#6b7280; border:1px solid #d1d5db; }
.btn-cash-view:hover { background:#e5e7eb; color:#374151; }
.btn-cash-edit { background:#3b82f6; color:#fff; }
.btn-cash-edit:hover { background:#2563eb; }
.btn-cash-del { background:#ef4444; color:#fff; }
.btn-cash-del:hover { background:#dc2626; }

/* 支付列表区域 */
.payment-list-section { margin-top:14px; border-top:2px solid #e5e7eb; padding-top:12px; }
.payment-list-header { display:flex; align-items:center; gap:12px; margin-bottom:10px; }
.payment-list-title { font-size:14px; font-weight:700; color:#111827; }
.payment-list-tabs { display:flex; gap:0; background:#f3f4f6; border-radius:8px; padding:3px; }
.payment-list-tab { padding:5px 18px; border:none; background:transparent; border-radius:6px; font-size:12px; cursor:pointer; color:#6b7280; transition:all .2s; }
.payment-list-tab:hover { color:#374151; }
.payment-list-tab.active { background:#fff; color:#dc2626; font-weight:600; box-shadow:0 1px 3px rgba(0,0,0,.08); }

@media (max-width:600px) {
    .cfm-body { flex-direction:column; }
    .cf-img-col { margin-left:0; margin-top:10px; flex-direction:row; justify-content:center; }
}

/* ========== 产品货号管理 ========== */
.pc-tag {
    display:inline-flex; align-items:center; gap:6px;
    background:#eef2ff; color:#3730a3; border:1px solid #c7d2fe;
    border-radius:999px; padding:4px 10px; font-size:12px; line-height:1.4;
}
.pc-tag strong { font-weight:600; }
.pc-del {
    border:none; background:transparent; color:#6366f1; cursor:pointer;
    font-size:15px; line-height:1; padding:0 2px; border-radius:50%;
}
.pc-del:hover { color:#fff; background:#6366f1; }
.pc-tags { display:flex; flex-wrap:wrap; gap:8px; margin-top:4px; }

/* ========== 采购管理 / 工资薪酬 ========== */
.btn-success { background:#059669; color:#fff; }
.btn-success:hover { background:#047857; }
.pp-panel {
    background:var(--card,#fff); border:1px solid var(--border,#e5e7eb);
    border-radius:12px; padding:14px 16px; margin-bottom:14px;
}
.pp-panel-head {
    display:flex; align-items:center; justify-content:space-between;
    font-weight:600; margin-bottom:10px; font-size:14px;
}
.pp-toolbar {
    display:flex; align-items:center; gap:10px; flex-wrap:wrap;
    margin-bottom:12px;
}
.pp-toolbar label { font-size:13px; color:var(--text2); display:inline-flex; align-items:center; gap:6px; }
.pp-payable {
    margin-top:18px; background:var(--card,#fff);
    border:1px solid var(--border,#e5e7eb); border-radius:12px; padding:14px 16px;
}
.pp-form {
    display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:10px;
}
.pp-form .filter-select { width:auto; flex:1 1 130px; }
.modal-box {
    background:var(--card,#fff); border-radius:14px; padding:0;
    max-height:90vh; overflow:auto; box-shadow:0 20px 60px rgba(0,0,0,.25);
}
.modal-head {
    display:flex; align-items:center; justify-content:space-between;
    padding:14px 18px; border-bottom:1px solid var(--border,#e5e7eb);
    font-weight:700; font-size:15px;
}
.modal-close {
    border:none; background:transparent; font-size:22px; line-height:1;
    cursor:pointer; color:var(--text2); padding:0 6px;
}
.modal-close:hover { color:var(--danger); }
.modal-body { padding:16px 18px; }
.modal-foot {
    padding:12px 18px; border-top:1px solid var(--border,#e5e7eb);
    display:flex; justify-content:flex-end; gap:10px;
}

/* ============ 工资薪酬：员工花名册 + 工资核算 ============ */
.pr-tabs { display:flex; gap:6px; margin-bottom:16px; border-bottom:2px solid var(--border); }
.pr-tab {
    padding:10px 18px; border:none; background:none; cursor:pointer;
    font-size:15px; font-weight:600; color:var(--text2); border-bottom:3px solid transparent;
    margin-bottom:-2px;
}
.pr-tab:hover { color:var(--primary); }
.pr-tab.active { color:var(--primary); border-bottom-color:var(--primary); }
.pr-toolbar { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-bottom:14px; }
.pr-toolbar .muted { font-size:12px; }
.pr-empty { text-align:center; padding:30px 16px; }
.pr-empty .pr-toolbar { justify-content:center; margin-top:14px; }
.emp-form .form-row { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:12px; }
.emp-form .form-row label { display:flex; flex-direction:column; gap:4px; font-size:13px; font-weight:500; color:var(--text2); }
.emp-form .form-row .filter-select { width:100%; box-sizing:border-box; }
.emp-form .form-group { margin-bottom:12px; }
.emp-form .form-group label { display:block; font-size:13px; font-weight:500; color:var(--text2); margin-bottom:4px; }
.emp-form .form-group .filter-select { width:100%; box-sizing:border-box; }
.emp-fieldset { border:1px solid var(--border); border-radius:8px; padding:10px 14px 4px; margin-bottom:12px; }
.emp-fieldset legend { font-size:13px; font-weight:600; color:var(--primary); padding:0 6px; }
@media (max-width:640px) {
    .emp-form .form-row { grid-template-columns:1fr; }
}

/* ========== ERP 使用说明与规则（仪表盘） ========== */
.guide-section { margin-top:6px; }
.guide-quick { background:linear-gradient(135deg,#eef1ff,#f5f3ff); border:1px solid #e3e8ff; border-radius:var(--radius); padding:14px 18px; margin-bottom:16px; }
.guide-quick-head { font-weight:700; font-size:14px; color:var(--primary); margin-bottom:8px; }
.guide-steps { margin:0; padding-left:22px; }
.guide-steps li { margin-bottom:5px; line-height:1.6; }
.guide-grid { display:grid; grid-template-columns:repeat(2, 1fr); gap:14px; }
.guide-card { background:var(--card); border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow); }
.guide-card > summary { cursor:pointer; list-style:none; padding:12px 16px; font-weight:600; font-size:14px; color:var(--text); background:#fafbff; border-bottom:1px solid transparent; user-select:none; }
.guide-card > summary::-webkit-details-marker { display:none; }
.guide-card[open] > summary { border-bottom-color:var(--border); color:var(--primary); }
.guide-card > summary:hover { background:#f1f4ff; }
.guide-body { padding:12px 16px 16px; font-size:13px; line-height:1.7; color:var(--text); }
.guide-list { margin:0; padding-left:18px; }
.guide-list li { margin-bottom:6px; }
.guide-list code { background:#f1f5f9; padding:1px 5px; border-radius:4px; font-size:12px; }
.guide-formula { background:#f8fafc; border:1px dashed var(--border); border-radius:8px; padding:10px 12px; margin:0 0 10px; font-size:12.5px; line-height:1.8; color:var(--text2); }
.guide-formula b { color:var(--text); }
@media (max-width:768px) {
    .guide-grid { grid-template-columns:1fr; }
}

/* ========== 员工荣誉榜 / 积分排名（公司信息页） ========== */
.company-hint-text { font-size:12.5px; color:var(--text2); margin:2px 0 12px; line-height:1.6; }
.my-honor-card { background:linear-gradient(135deg,#fff7ed,#fef2f2); border:1px solid #fed7aa; border-radius:var(--radius); padding:14px 16px; margin-bottom:14px; }
.my-honor-title { font-weight:700; font-size:14px; color:#c2410c; margin-bottom:8px; }
.my-honor-icons { display:flex; gap:14px; margin-bottom:8px; }
.my-honor-icons .hb-icon { font-size:18px; font-weight:700; background:#fff; border:1px solid var(--border); border-radius:20px; padding:4px 12px; }
.my-honor-meta { display:flex; flex-wrap:wrap; gap:10px; font-size:12.5px; color:var(--text2); align-items:center; }
.my-honor-meta b { color:var(--text); }
.my-honor-tip { font-size:12.5px; color:var(--text2); background:#f8fafc; border:1px dashed var(--border); border-radius:8px; padding:10px 12px; margin-bottom:14px; }
.hb-badge { display:inline-block; font-size:11px; font-weight:600; padding:2px 8px; border-radius:10px; }
.hb-badge.hb-reward { background:var(--success-light); color:#047857; border:1px solid #a7f3d0; }
.hb-badge.hb-penalty { background:var(--danger-light); color:#b91c1c; border:1px solid #fecaca; }
.hb-badge.hb-full { background:#eff6ff; color:#1d4ed8; border:1px solid #bfdbfe; }
.hb-head, .hb-dept-head { font-size:13px; font-weight:600; color:var(--text); margin-bottom:8px; }
.hb-list { display:flex; flex-direction:column; gap:8px; }
.hb-row { display:grid; grid-template-columns:38px 1.4fr 1.4fr 1.3fr auto; gap:10px; align-items:center; background:var(--card); border:1px solid var(--border); border-radius:var(--radius); padding:10px 12px; }
.hb-rank { width:28px; height:28px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:13px; background:#f1f5f9; color:var(--text2); }
.hb-rank-first { background:linear-gradient(135deg,#fde68a,#f59e0b); color:#fff; box-shadow:0 2px 6px rgba(245,158,11,.35); }
.hb-rank-last { background:#fef2f2; color:#ef4444; border:1px solid #fecaca; }
.hb-name { font-weight:600; font-size:14px; color:var(--text); display:flex; flex-direction:column; }
.hb-dept { font-size:11.5px; font-weight:400; color:var(--text3); }
.hb-icons { display:flex; gap:8px; }
.hb-icon { font-size:13px; font-weight:700; background:#f8fafc; border:1px solid var(--border); border-radius:16px; padding:3px 9px; white-space:nowrap; }
.hb-icon.hb-sun { color:#d97706; }
.hb-icon.hb-moon { color:#7c3aed; }
.hb-icon.hb-star { color:#ca8a04; }
.hb-rate { display:flex; align-items:center; gap:8px; }
.hb-rate-bar { flex:1; height:8px; background:#eef2f7; border-radius:6px; overflow:hidden; min-width:60px; }
.hb-rate-fill { height:100%; border-radius:6px; }
.hb-rate-num { font-size:12px; color:var(--text2); min-width:38px; text-align:right; }
.hb-badges { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
.hb-dept-list { display:flex; flex-direction:column; gap:6px; margin-top:8px; }
.hb-dept-row { display:grid; grid-template-columns:36px 1fr auto; gap:10px; align-items:center; background:var(--card); border:1px solid var(--border); border-radius:8px; padding:8px 12px; font-size:13px; }
.hb-dept-row.hb-dept-first { border-color:#fcd34d; background:#fffbeb; }
.hb-dept-rank { font-weight:700; color:var(--text2); }
.hb-dept-name { font-weight:600; }
.hb-dept-cnt { color:var(--text3); font-size:12px; }
@media (max-width:640px) {
    .hb-row { grid-template-columns:32px 1fr; grid-auto-rows:auto; row-gap:6px; }
    .hb-icons, .hb-rate, .hb-badges { grid-column:1 / -1; }
    .hb-badges { justify-content:flex-start; }
}

/* ========== 考勤打卡 / 管理 ========== */
.att-checkin { display:flex; flex-direction:column; gap:14px; max-width:880px; }
.att-factory { padding:10px 14px; background:var(--primary-light,#eef1ff); border:1px solid #dbe3ff; border-radius:8px; font-size:13px; }
.att-card { background:var(--card,#fff); border:1px solid var(--border,#e5e7eb); border-radius:12px; padding:16px 18px; box-shadow:0 1px 3px rgba(0,0,0,.04); }
.att-card-title { font-size:15px; font-weight:700; margin-bottom:12px; display:flex; align-items:center; gap:10px; }
.att-today-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin-bottom:14px; }
.att-clock { background:#f8fafc; border:1px solid #eef2f7; border-radius:10px; padding:10px; text-align:center; }
.att-clock-label { font-size:12px; color:var(--text3,#9ca3af); }
.att-clock-time { font-size:20px; font-weight:800; margin-top:4px; }
.att-btns { display:flex; gap:12px; flex-wrap:wrap; }
.att-btn { flex:1; min-width:140px; padding:16px; font-size:16px; font-weight:700; border:none; border-radius:12px; cursor:pointer; color:#fff; transition:transform .05s; }
.att-btn:active { transform:scale(.98); }
.att-btn-in { background:linear-gradient(135deg,#f59e0b,#fbbf24); }
.att-btn-out { background:linear-gradient(135deg,#4f46e5,#6366f1); }
.att-msg { margin-top:10px; font-size:13px; min-height:18px; }
.att-tip { font-size:12px; color:var(--text3,#9ca3af); margin:10px 0 0; line-height:1.6; }
.att-sub { font-size:13px; font-weight:600; margin:12px 0 6px; color:var(--text2,#4b5563); }

.honor-row { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
.honor-item { text-align:center; background:#f8fafc; border:1px solid #eef2f7; border-radius:10px; padding:10px; }
.honor-num { font-size:22px; font-weight:800; }
.honor-lbl { font-size:12px; color:var(--text3,#9ca3af); margin-top:2px; }
.honor-meta { display:flex; flex-wrap:wrap; gap:14px; margin-top:12px; font-size:13px; color:var(--text2,#4b5563); }
.honor-meta b { color:var(--text1,#1f2937); }

.att-tabs { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:14px; }
.att-tab { padding:8px 14px; border:1px solid var(--border,#e5e7eb); background:var(--card,#fff); border-radius:8px; cursor:pointer; font-size:13px; font-weight:600; color:var(--text2,#4b5563); }
.att-tab.active { background:var(--primary,#4361ee); color:#fff; border-color:var(--primary,#4361ee); }
.wd-box { white-space:nowrap; }
.wd-chk { display:inline-flex; align-items:center; gap:2px; font-size:12px; margin-right:4px; }
.wd-chk input { width:14px; height:14px; }

@media (max-width:640px) {
    .att-today-grid, .honor-row { grid-template-columns:repeat(2,1fr); }
}

/* ========== 手机端整体优化（≤768px） ========== */
.table-wrap { overflow-x:auto; -webkit-overflow-scrolling:touch; }

@media (max-width:768px) {
    /* 内容区留白收紧，给表格/卡片更多横向空间 */
    .page { padding:14px 12px; }
    .topbar { padding:12px 14px; }
    .page-title { font-size:18px; }
    .page-subtitle { display:block; margin:2px 0 0; }
    .main { margin-top:48px; min-height:calc(100vh - 48px); }

    /* 宽表格横向滚动，不再被挤变形 */
    .table-wrap { margin:0 0 4px; border:1px solid var(--border); border-radius:10px; }
    .data-table { width:100%; }
    .data-table th, .data-table td { white-space:nowrap; padding:10px 12px; font-size:13px; }

    /* 顶部导航点击区域放大，更易戳中 */
    .nav-item { padding:10px 12px; font-size:13px; }
    .sidebar-brand { padding:8px 6px; }

    /* 仪表盘卡片单列，避免拥挤 */
    .module-cards { grid-template-columns:1fr; gap:12px; }
    .insights-grid { grid-template-columns:1fr; }
    .finance-bar { grid-template-columns:repeat(2,1fr); }

    /* 表单/栅格单列（≤900 已设，这里兜底） */
    .form-row, .fields-grid { grid-template-columns:1fr; }

    /* AI 对话改为底部抽屉，不挡内容 */
    .ai-chat-panel {
        right:0; left:0; bottom:0; top:auto;
        width:100%; max-width:100%;
        border-radius:18px 18px 0 0;
        max-height:82vh;
        box-shadow:0 -8px 30px rgba(0,0,0,.18);
    }
    .ai-chat-messages { max-height:46vh; }

    /* 弹窗占满宽度 */
    .modal-lg, .modal-sm, .cfm-dialog, #uaModalBody { width:94vw; max-width:94vw; }

    /* 考勤打卡按钮更贴合手机，上下排列更稳 */
    .att-btns { gap:10px; }
    .att-btn { min-width:0; flex:1 1 100%; padding:18px 12px; font-size:16px; }

    /* 登录卡片留白收紧 */
    .auth-card { padding:26px 20px; }
    .auth-sub { margin:8px 0 16px; }

    /* 让长文本按钮换行而非溢出 */
    .btn { white-space:nowrap; }
    .topbar-right { gap:8px; }
    .btn-ai { padding:8px 12px; }
}

/* 超小屏（≤420px）进一步收紧 */
@media (max-width:420px) {
    .page { padding:12px 10px; }
    .topbar { padding:10px 12px; }
    .finance-bar { grid-template-columns:repeat(2,1fr); gap:8px; }
    .att-clock-time { font-size:18px; }
}

