:root{
  --primary:#1677ff;--primary-hover:#4096ff;--primary-light:#e6f4ff;--primary-lighter:#f0f7ff;
  --success:#52c41a;--success-light:#f6ffed;
  --warning:#faad14;--warning-light:#fffbe6;
  --danger:#ff4d4f;--danger-light:#fff2f0;
  --info:#13c2c2;--info-light:#e6fffb;
  --purple:#722ed1;--purple-light:#f9f0ff;
  --orange:#fa8c16;--orange-light:#fff7e6;
  --text:#1f2329;--text-secondary:#646a73;--text-muted:#8f959e;--text-light:#bbbfc4;
  --border:#e5e6eb;--border-light:#f2f3f5;--border-lighter:#f7f8fa;
  --bg:#f5f7fa;--card:#ffffff;
  --sidebar:#ffffff;--sidebar-text:#4e5969;--sidebar-hover:#f2f3f5;--sidebar-active:#e6f4ff;
  --radius:8px;--radius-sm:6px;--radius-lg:12px;
  --shadow:0 1px 2px rgba(0,0,0,.03),0 1px 6px -1px rgba(0,0,0,.02),0 2px 4px rgba(0,0,0,.02);
  --shadow-md:0 4px 10px rgba(0,0,0,.06);
  --transition:all .2s ease;
}
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-font-smoothing:antialiased}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Microsoft YaHei','Helvetica Neue',Arial,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5715;font-feature-settings:'tnum';-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
a{text-decoration:none;color:inherit}
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#d9d9d9;border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:#bfbfbf}

/* ===== 布局 ===== */
.app-layout{display:flex;min-height:100vh}

/* ===== 侧边栏（图标导航） ===== */
.sidebar{width:206px;background:var(--sidebar);border-right:1px solid var(--border);color:var(--sidebar-text);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;transition:width .22s ease,transform .3s ease,box-shadow .22s ease}
.sidebar.sidebar-collapsed{width:64px}
.sidebar.sidebar-collapsed.sidebar-floating-open{width:206px;background:#fff;box-shadow:0 16px 40px rgba(15,23,42,.18);z-index:1200}
.sidebar-brand{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--border-light)}
.sidebar-collapsed:not(.sidebar-floating-open) .sidebar-brand{justify-content:center;padding:16px 14px}
.sidebar-collapsed.sidebar-floating-open .sidebar-brand{justify-content:flex-start;padding:16px 18px}
.brand-icon{width:34px;height:34px;background:linear-gradient(135deg,#1677ff,#69b1ff);border-radius:9px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:16px;flex-shrink:0}
.brand-name{color:var(--text);font-weight:700;font-size:15px;white-space:nowrap}
.brand-sub{font-size:11px;color:var(--text-muted);margin-top:1px;white-space:nowrap}
.sidebar-collapsed:not(.sidebar-floating-open) .brand-text,.sidebar-collapsed:not(.sidebar-floating-open) .nav-main-text,.sidebar-collapsed:not(.sidebar-floating-open) .nav-chevron{display:none}
.sidebar-nav{flex:1;overflow-x:hidden;overflow-y:auto;padding:10px 8px 16px}
.sidebar-collapsed:not(.sidebar-floating-open) .sidebar-nav{padding-left:0;padding-right:0}
.sidebar-collapsed:not(.sidebar-floating-open) .nav-main{width:48px;margin:0 auto}
.sidebar-collapsed.sidebar-floating-open .nav-main{width:100%;margin:0}
.nav-group{position:relative;margin-bottom:3px}
.nav-main{width:100%;min-height:42px;border:0;background:transparent;display:flex;align-items:center;gap:11px;padding:0 10px;border-radius:10px;color:var(--sidebar-text);font-family:inherit;font-size:14px;text-align:left;cursor:pointer;transition:var(--transition)}
.nav-main:hover{background:#f3f6fb;color:var(--primary)}
.nav-group.active-group>.nav-main,.nav-direct.active{background:var(--primary-light);color:var(--primary);font-weight:650}
.nav-main-icon{width:22px;height:22px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.nav-main-icon .icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.nav-main-icon img{width:20px;height:20px;border-radius:5px;object-fit:cover}
.nav-main-text{flex:1;white-space:nowrap}
.nav-chevron{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .2s ease}
.nav-group.open>.nav-main .nav-chevron{transform:rotate(180deg)}
.nav-submenu{display:none;padding:3px 0 7px 32px}
.nav-group.open>.nav-submenu{display:block}
.sidebar.sidebar-collapsed:not(.sidebar-floating-open) .nav-group .nav-submenu{display:none}
.sidebar.sidebar-collapsed.sidebar-floating-open .nav-group.open>.nav-submenu{display:block;position:static;width:auto;background:transparent;border:0;border-radius:0;box-shadow:none;padding:3px 0 7px 32px}
.nav-sub{display:flex;align-items:center;height:34px;padding:0 10px;border-radius:9px;font-size:13px;color:#5b6472;white-space:nowrap;transition:var(--transition)}
.nav-sub:hover{background:#f3f6fb;color:var(--primary)}
.nav-sub.active{background:var(--primary-light);color:var(--primary);font-weight:650}
.sidebar-footer{padding:10px;border-top:1px solid var(--border-light)}
.sidebar-collapsed:not(.sidebar-floating-open) .sidebar-footer{padding:10px 8px}
.sidebar-collapsed:not(.sidebar-floating-open) .user-info{justify-content:center}
.user-avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#1677ff,#69b1ff);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:14px;flex-shrink:0}
.user-name{color:var(--text);font-size:13px;font-weight:600;white-space:nowrap}
.user-role{font-size:11px;color:var(--text-muted);white-space:nowrap}
.sidebar-collapsed:not(.sidebar-floating-open) .user-detail,.sidebar-collapsed:not(.sidebar-floating-open) .footer-settings{display:none}
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1100}
.sidebar-overlay.show{display:block}

/* ===== 主区域 ===== */
.main-area{flex:1;margin-left:206px;display:flex;flex-direction:column;min-width:0;transition:margin .22s ease}
.sidebar.sidebar-collapsed~.main-area{margin-left:64px}
.topbar{height:56px;background:var(--card);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 24px;gap:16px;position:sticky;top:0;z-index:50}
.menu-btn{display:inline-flex;background:none;border:none;cursor:pointer;color:var(--text);padding:6px;border-radius:8px}
.menu-btn:hover{background:var(--border-light)}
.breadcrumb{font-size:13px;color:var(--text-muted);display:flex;align-items:center;gap:6px}
.breadcrumb span{color:var(--text);font-weight:500}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:8px}
.topbar-avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,#1677ff,#69b1ff);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:13px;cursor:pointer}
.content{padding:22px;flex:1}

/* ===== 欢迎区 ===== */
.welcome-bar{margin-bottom:20px}
.welcome-title{font-size:20px;font-weight:700;color:var(--text);margin-bottom:4px}
.welcome-sub{font-size:13px;color:var(--text-muted)}

/* ===== 卡片 ===== */
.card{background:var(--card);border-radius:var(--radius);border:1px solid var(--border-light);margin-bottom:16px;overflow:hidden;transition:var(--transition)}
.card:hover{border-color:var(--border)}
.card-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-light)}
.card-title{font-size:15px;font-weight:600;color:var(--text)}
.card-body{padding:20px}

/* ===== 统计卡片（AI SaaS风格） ===== */
.stats-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-bottom:16px}
.stat-card{background:var(--card);border-radius:var(--radius);padding:18px;border:1px solid var(--border-light);position:relative;overflow:hidden;transition:var(--transition)}
.stat-card:hover{border-color:var(--border);box-shadow:var(--shadow)}
.stat-top{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.stat-icon{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0}
.stat-icon.blue{background:var(--primary-light);color:var(--primary)}
.stat-icon.green{background:var(--success-light);color:var(--success)}
.stat-icon.purple{background:var(--purple-light);color:var(--purple)}
.stat-icon.orange{background:var(--orange-light);color:var(--orange)}
.stat-icon.cyan{background:var(--info-light);color:var(--info)}
.stat-icon.red{background:var(--danger-light);color:var(--danger)}
.stat-label{font-size:13px;color:var(--text-secondary);font-weight:400}
.stat-value{font-size:24px;font-weight:700;color:var(--text);line-height:1.2;margin-bottom:6px;letter-spacing:-.01em}
.stat-trend{font-size:12px;color:var(--text-muted);display:flex;align-items:center;gap:4px}
.stat-trend .up{color:var(--success);font-weight:600}
.stat-trend .down{color:var(--danger);font-weight:600}
.stat-mini-chart{position:absolute;bottom:12px;right:14px;opacity:.5}

/* ===== 双列/多列网格 ===== */
.two-col{display:grid;grid-template-columns:2fr 1fr;gap:16px;margin-bottom:16px}
.three-col{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;margin-bottom:16px}

/* ===== 表格（企业微信智能表格风格） ===== */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;position:relative;background:#fff}
table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
thead th{padding:10px 12px;text-align:left;font-weight:500;color:#6b7280;font-size:12px;white-space:nowrap;background:#f7f8fa;border-bottom:1px solid #e5e6eb;position:sticky;top:0;z-index:2;user-select:none}
thead th .th-content{display:flex;align-items:center;gap:4px}
thead th .filter-icon{opacity:0;transition:opacity .15s;cursor:pointer;padding:2px;border-radius:3px}
thead th:hover .filter-icon{opacity:.6}
thead th .filter-icon:hover{opacity:1;background:#e5e6eb}
tbody td{padding:9px 12px;border-bottom:1px solid #f0f1f5;color:#1f2329;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
tbody tr{transition:background .12s ease}
tbody tr:hover{background:#f5f7fa}
tbody tr.selected{background:#e8f3ff}
tbody tr:last-child td{border-bottom:none}
.empty-row td{text-align:center;color:#9ca3af;padding:48px;font-size:13px}
/* 行号列 */
.row-num{width:48px;text-align:center;color:#8f959e;font-size:12px;background:#fafbfc;user-select:none}
/* 数字列右对齐 */
.col-number{text-align:right;font-variant-numeric:tabular-nums}
/* 筛选下拉 */
.filter-dropdown{background:#fff;border:1px solid #e5e6eb;border-radius:8px;box-shadow:0 6px 20px rgba(0,0,0,.12);padding:10px;width:220px;z-index:9999;display:none}
.filter-dropdown.show{display:block}
.filter-dropdown input{width:100%;padding:8px 10px;border:1px solid #e5e6eb;border-radius:6px;font-size:13px;margin-bottom:10px;outline:none;box-sizing:border-box}
.filter-dropdown input:focus{border-color:#3370ff}
.filter-dropdown .filter-options{max-height:240px;overflow-y:auto}
.filter-dropdown .filter-option{padding:7px 10px;font-size:13px;color:#1f2329;cursor:pointer;border-radius:5px;display:flex;align-items:center;gap:6px}
.filter-dropdown .filter-option:hover{background:#f2f3f5}
.filter-dropdown .filter-option.active{background:#e8f3ff;color:#3370ff;font-weight:500}
.filter-dropdown .filter-actions{display:flex;justify-content:space-between;margin-top:10px;padding-top:10px;border-top:1px solid #f0f1f5}
.filter-dropdown .filter-actions button{padding:6px 14px;font-size:13px;border:none;border-radius:5px;cursor:pointer}
.filter-dropdown .filter-actions .btn-reset{background:transparent;color:#8f959e}
.filter-dropdown .filter-actions .btn-reset:hover{color:#1f2329}
.filter-dropdown .filter-actions .btn-confirm{background:#3370ff;color:#fff}
.filter-dropdown .filter-actions .btn-confirm:hover{background:#2860e0}
/* 表格工具栏 */
.table-toolbar{display:flex;align-items:center;gap:10px;padding:10px 0;margin-bottom:8px}
.table-toolbar .table-search{position:relative;flex:0 0 240px}
.table-toolbar .table-search input{width:100%;padding:7px 12px 7px 32px;border:1px solid #e5e6eb;border-radius:6px;font-size:13px;background:#fff;color:#1f2329;outline:none;transition:border-color .15s}
.table-toolbar .table-search input:focus{border-color:#3370ff}
.table-toolbar .table-search .search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:#8f959e}
.table-toolbar .table-count{margin-left:auto;font-size:12px;color:#8f959e}
.table-avatar{width:30px;height:30px;border-radius:50%;background:var(--primary-light);color:var(--primary);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;margin-right:10px;vertical-align:middle}
.table-cell-main{font-weight:500;color:var(--text)}
.table-cell-sub{font-size:12px;color:var(--text-muted);margin-top:2px}
.table-link{color:var(--primary);cursor:pointer;font-weight:500}
.table-link:hover{text-decoration:underline}
.table-link.danger{color:var(--danger)}

/* ===== 标签 ===== */
.tag{display:inline-flex;align-items:center;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:500}
.tag-success{background:var(--success-light);color:var(--success)}
.tag-warning{background:var(--warning-light);color:var(--warning)}
.tag-danger{background:var(--danger-light);color:var(--danger)}
.tag-info{background:var(--info-light);color:var(--info)}
.tag-default{background:var(--border-light);color:var(--text-secondary)}
.tag-primary{background:var(--primary-light);color:var(--primary)}
.tag-purple{background:var(--purple-light);color:var(--purple)}

/* ===== 进度条 ===== */
.progress-bar{height:6px;background:var(--border-light);border-radius:3px;overflow:hidden}
.progress-fill{height:100%;background:var(--primary);border-radius:3px;transition:width .4s ease}

/* ===== 筛选栏 ===== */
.filter-bar{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px;align-items:center}
.filter-bar .form-group{margin-bottom:0}
.filter-bar input,.filter-bar select,.filter-bar .form-input,.filter-bar .form-select{padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13.5px;background:var(--card);color:var(--text);outline:none;transition:var(--transition);height:36px;box-sizing:border-box}
.filter-bar input:focus,.filter-bar select:focus,.filter-bar .form-input:focus,.filter-bar .form-select:focus{border-color:var(--primary);box-shadow:0 0 0 2px rgba(22,119,255,.1)}
.filter-bar .btn{height:36px;box-sizing:border-box}
.btn{padding:8px 16px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;font-family:inherit;line-height:1;cursor:pointer;font-weight:500;transition:var(--transition);display:inline-flex;align-items:center;justify-content:center;gap:6px;height:36px;box-sizing:border-box;background:var(--card);color:var(--text);text-align:center;text-decoration:none;white-space:nowrap}
.btn:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-lighter)}
.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:none;border-color:var(--primary);box-shadow:0 0 0 2px rgba(22,119,255,.15)}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}
.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);color:#fff}
.btn-outline{background:var(--card);color:var(--text);border-color:var(--border)}
.btn-outline:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-lighter)}
.btn-success{background:var(--success);border-color:var(--success);color:#fff}
.btn-success:hover{background:#73d13d;border-color:#73d13d;color:#fff}
.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}
.btn-danger:hover{background:#ff7875;border-color:#ff7875;color:#fff}
.btn-danger-outline{background:var(--card);border-color:var(--danger);color:var(--danger)}
.btn-danger-outline:hover{background:var(--danger-light);border-color:var(--danger);color:var(--danger)}
.btn-sm{padding:6px 10px;font-size:12px;height:30px}
.btn-block{width:100%}
.btn-flex{flex:1}

.table-enhance-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 10px}

/* ===== DataTables 统一风格 ===== */
.dataTables_wrapper{font-size:13px;color:var(--text);padding-top:4px}
.dataTables_wrapper .toolbar{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.dataTables_wrapper .dt-buttons{display:flex;gap:6px;flex-wrap:wrap}
.dataTables_wrapper .dt-button,.dataTables_wrapper button.dt-button{height:30px;padding:6px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);color:var(--text);font-size:12px;font-weight:500;line-height:1;display:inline-flex;align-items:center;white-space:nowrap;cursor:pointer;box-sizing:border-box}
.dataTables_wrapper .dt-button:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-lighter)}
.dataTables_wrapper .dataTables_filter input,.dataTables_wrapper .dataTables_length select{height:32px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 8px;font-size:12px;background:var(--card);color:var(--text);outline:none}
.dataTables_wrapper .dataTables_filter input:focus,.dataTables_wrapper .dataTables_length select:focus{border-color:var(--primary);box-shadow:0 0 0 2px rgba(22,119,255,.1)}
.dataTables_wrapper .dataTables_info{font-size:12px;color:var(--text-secondary);padding-top:10px}
.dataTables_wrapper .dataTables_paginate{padding-top:8px}
.dataTables_wrapper .dataTables_paginate .paginate_button{min-width:30px;height:30px;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);color:var(--text-secondary);font-size:12px;line-height:1;box-sizing:border-box;margin-left:4px}
.dataTables_wrapper .dataTables_paginate .paginate_button:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-lighter)}
.dataTables_wrapper .dataTables_paginate .paginate_button.current{background:var(--primary);border-color:var(--primary);color:#fff}

/* ===== 分页 ===== */
.pagination{display:flex;justify-content:flex-end;align-items:center;gap:6px;margin-top:16px}
.pagination a,.pagination span{padding:6px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;color:var(--text-secondary);background:var(--card);transition:var(--transition)}
.pagination a:hover{border-color:var(--primary);color:var(--primary)}
.pagination .current{background:var(--primary);color:#fff;border-color:var(--primary);font-weight:600}

/* ===== 表单 ===== */
.form-group{margin-bottom:16px}
.form-label{display:block;font-size:13px;font-weight:500;color:var(--text);margin-bottom:6px}
.form-input{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13.5px;outline:none;transition:var(--transition);background:var(--card);color:var(--text);height:36px;box-sizing:border-box}
.form-input:focus{border-color:var(--primary);box-shadow:0 0 0 2px rgba(22,119,255,.1)}
.form-select{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13.5px;outline:none;transition:var(--transition);background:var(--card);color:var(--text);height:36px;box-sizing:border-box}
.form-select:focus{border-color:var(--primary);box-shadow:0 0 0 2px rgba(22,119,255,.1)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}

/* ===== 上传区 ===== */
.upload-zone{border:1px dashed var(--border);border-radius:var(--radius);padding:40px 32px;text-align:center;cursor:pointer;transition:var(--transition);background:var(--border-lighter)}
.upload-zone:hover,.upload-zone.dragover{border-color:var(--primary);background:var(--primary-lighter)}
.upload-icon{font-size:44px;margin-bottom:12px}
.upload-text{font-size:14px;color:var(--text);font-weight:500}
.upload-hint{font-size:12px;color:var(--text-muted);margin-top:6px}

/* ===== 待办事项 ===== */
.todo-item{display:flex;align-items:flex-start;gap:12px;padding:12px 0;border-bottom:1px solid var(--border-light)}
.todo-item:last-child{border-bottom:none}
.todo-icon{width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0;margin-top:1px}
.todo-content{flex:1;min-width:0}
.todo-title{font-size:13px;font-weight:500;color:var(--text);margin-bottom:3px}
.todo-desc{font-size:12px;color:var(--text-muted)}
.todo-time{font-size:11px;color:var(--text-muted);flex-shrink:0;margin-top:2px}
.todo-dot{width:6px;height:6px;border-radius:50%;background:var(--primary);flex-shrink:0;margin-top:7px}

/* ===== 通知横向卡片 ===== */
.notice-row{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.notice-card{display:flex;align-items:flex-start;gap:10px;padding:14px;background:var(--card);border:1px solid var(--border-light);border-radius:var(--radius);transition:var(--transition)}
.notice-card:hover{border-color:var(--border)}
.notice-icon{width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0}
.notice-title{font-size:13px;font-weight:600;color:var(--text);margin-bottom:3px}
.notice-desc{font-size:11px;color:var(--text-muted);line-height:1.4}

/* ===== 移动端底部导航 ===== */
.mobile-tabbar{display:none;position:fixed;bottom:0;left:0;right:0;background:var(--card);border-top:1px solid var(--border);z-index:100;padding:6px 0;padding-bottom:calc(6px + env(safe-area-inset-bottom))}
.tab-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10px;color:var(--text-muted);padding:5px 0;font-weight:500;transition:var(--transition)}
.tab-item span:first-child{font-size:20px}
.tab-item.active{color:var(--primary)}

/* ===== 响应式 ===== */
@media(max-width:1200px){
  .stats-grid{grid-template-columns:repeat(3,1fr)}
  .notice-row{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:768px){
  .sidebar,.sidebar.sidebar-collapsed,.sidebar.sidebar-collapsed.sidebar-floating-open{width:min(340px,88vw)!important;transform:translateX(-100%);box-shadow:var(--shadow-md);z-index:1200}
  .sidebar.open{transform:translateX(0)}
  .sidebar.open .brand-text,.sidebar.open .nav-main-text,.sidebar.open .user-detail{display:block}
  .sidebar.open .nav-chevron{display:block}
  .sidebar .nav-submenu{display:none}
  .sidebar .nav-group.open>.nav-submenu,
  .sidebar.sidebar-collapsed:not(.sidebar-floating-open) .nav-group.open>.nav-submenu{display:block;position:static;width:auto;padding:3px 0 7px 32px;background:transparent;border:0;border-radius:0;box-shadow:none}
  .main-area,.sidebar.sidebar-collapsed~.main-area{margin-left:0!important}
  .menu-btn{display:block}
  .content{padding:16px;padding-bottom:80px}
  .topbar{padding:0 16px;height:52px}
  .topbar-search{display:none}
  .two-col{grid-template-columns:1fr}
  .three-col{grid-template-columns:1fr}
  .form-row{grid-template-columns:1fr}
  .mobile-tabbar{display:flex}
  .stat-value{font-size:20px}
  .notice-row{grid-template-columns:1fr}
  /* 手机端保持表格：默认铺满屏幕，列过多时在表格区域内横向滚动 */
  .mobile-card-list table{width:100%;min-width:100%;display:table}
  .mobile-card-list thead{display:table-header-group}
  .mobile-card-list tbody{display:table-row-group}
  .mobile-card-list tr{display:table-row;background:transparent;border:none;margin:0;padding:0}
  .mobile-card-list td{display:table-cell;width:auto;border-bottom:1px solid #f0f1f5;padding:9px 12px;text-align:left}
  .mobile-card-list td::before{content:none}
}
@media(max-width:480px){
  .stats-grid{grid-template-columns:repeat(2,1fr)}
  .stat-card{padding:14px}
  .stat-value{font-size:18px}
}

/* 打印样式 */
@media print {
  /* 隐藏侧边栏、导航、搜索框、筛选等非打印元素 */
  .sidebar, .topbar, .table-toolbar, .filter-dropdown, .btn, .filter-bar,
  .sales-tabs, .pagination, .breadcrumb, .page-header, .mobile-title {
    display: none !important;
  }
  
  /* 打印区域占满宽度 */
  .main-content, .content, .card {
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
    box-shadow: none !important;
    width: 100% !important;
  }
  
  /* 表格打印优化 */
  table {
    width: 100% !important;
    border-collapse: collapse !important;
  }
  
  /* 隐藏筛选图标 */
  .filter-icon {
    display: none !important;
  }
}
/* Tabulator 移动端适配 */
.tabulator-mobile .tabulator-header .tabulator-col {
  font-size: 12px;
}
.tabulator-mobile .tabulator-row {
  font-size: 12px;
  min-height: 36px;
}
.tabulator-mobile .tabulator-footer {
  font-size: 12px;
}
/* DataTables接管分页后，隐藏原来的分页器 */
.dataTables_wrapper ~ .pagination {
  display: none;
}


/* ===== 登录页 ===== */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:#f5f7fa;box-sizing:border-box}
.login-card{width:100%;max-width:400px;background:#fff;border:1px solid #edf0f5;border-radius:12px;padding:32px;box-shadow:0 10px 30px rgba(15,23,42,.08);box-sizing:border-box}
.login-title{font-size:20px;font-weight:700;color:#1f2937}
.login-sub{margin-top:6px;font-size:13px;color:#6b7280}
@media(max-width:480px){
  .login-wrap{padding:16px;align-items:flex-start}
  .login-card{padding:24px 20px;border-radius:10px;margin-top:8vh}
}
