/* ZNZZ 智能组织管理 — 统一中科国源设计系统 */
:root {
    --primary: #fa8c16;
    --primary-light: #ffa940;
    --primary-dark: #d46b08;
    --primary-gradient: linear-gradient(135deg, #fa8c16, #ff6b00);
    --bg-dark: #0d1117;
    --bg-section: #f0f2f5;
    --bg-card: #ffffff;
    --text-primary: #1a1a2e;
    --text-secondary: #5a5a72;
    --text-muted: #94a3b8;
    --border-card: #e8ecf1;
    --shadow-sm: 0 1px 2px rgba(0,0,0,0.04);
    --shadow-card: 0 2px 12px rgba(0,0,0,0.06);
    --radius-sm: 6px;
    --radius-md: 12px;
    --transition: 0.2s cubic-bezier(0.4,0,0.2,1);
    --font-mono: 'SF Mono','Cascadia Code','Consolas',monospace;
    --sidebar-w: 220px;
    --topbar-h: 48px;
}

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}

body{
    font-family: -apple-system,'PingFang SC','Microsoft YaHei',sans-serif;
    background:#f0f2f5;color:var(--text-primary);line-height:1.5;min-height:100vh;
}

/* ===== 登录 ===== */
.login-wrapper{
    display:flex;align-items:center;justify-content:center;min-height:100vh;
    background:linear-gradient(135deg,#0d1117 0%,#1a2332 50%,#0d1117 100%);
}
.login-card{width:100%;max-width:400px;background:white;border-radius:var(--radius-lg);box-shadow:0 20px 60px rgba(0,0,0,0.3);overflow:hidden;}
.login-header{background:var(--primary-gradient);padding:40px 32px;text-align:center;color:white;}
.login-header h2{font-size:22px;font-weight:700;margin-bottom:4px;}
.login-header p{font-size:13px;opacity:0.9;}
.login-form{padding:32px;}
.form-group{margin-bottom:16px;}
.form-group label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;color:var(--text-primary);}
.form-input{
    width:100%;padding:11px 14px;border:2px solid #e8ecf1;border-radius:var(--radius-sm);
    font-size:14px;outline:none;transition:all var(--transition);background:#fafbfc;
}
.form-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(250,140,22,0.1);background:#fff;}
.form-textarea{width:100%;padding:11px 14px;border:2px solid #e8ecf1;border-radius:var(--radius-sm);font-size:14px;outline:none;font-family:inherit;resize:vertical;min-height:80px;transition:all var(--transition);background:#fafbfc;}
.form-textarea:focus{border-color:var(--primary);background:#fff;}
.select-input{padding:11px 14px;border:2px solid #e8ecf1;border-radius:var(--radius-sm);font-size:14px;outline:none;background:white;cursor:pointer;width:100%;}
.select-input:focus{border-color:var(--primary);}

.btn{
    padding:9px 18px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;
    cursor:pointer;transition:all var(--transition);border:1px solid #d0d5dd;
    background:white;color:var(--text-primary);display:inline-flex;align-items:center;gap:6px;
}
.btn:hover{border-color:var(--primary);color:var(--primary);}
.btn-primary{background:var(--primary-gradient);color:white;border-color:transparent;}
.btn-primary:hover{box-shadow:0 4px 12px rgba(250,140,22,0.3);color:white;transform:translateY(-1px);}
.btn-primary:disabled{opacity:0.5;cursor:not-allowed;transform:none;}
.btn-danger{color:#e74c3c;border-color:#fecaca;background:#fef2f2;}
.btn-danger:hover{background:#e74c3c;color:white;border-color:#e74c3c;}
.btn-sm{padding:5px 12px;font-size:12px;}
.btn-block{width:100%;padding:13px;font-size:15px;}
.login-error{color:#e74c3c;font-size:13px;margin-top:12px;text-align:center;display:none;}

/* ===== 主框架 ===== */
.app-layout{display:none;min-height:100vh;}
.app-layout.show{display:flex;}
.sidebar{
    width:var(--sidebar-w);background:linear-gradient(180deg,#0d1117 0%,#1a2332 100%);
    color:white;display:flex;flex-direction:column;position:fixed;top:0;left:0;
    bottom:0;z-index:100;overflow-y:auto;transition:transform .3s;
}
.sidebar-brand{padding:16px 20px;font-size:15px;font-weight:700;border-bottom:1px solid rgba(255,255,255,0.06);display:flex;align-items:center;gap:8px;}
.sidebar-brand span{font-size:11px;color:#90caf9;font-weight:400;}
.sidebar-nav{flex:1;padding:8px 0;}
.nav-item{
    display:flex;align-items:center;gap:10px;padding:10px 20px;font-size:13px;cursor:pointer;
    transition:all var(--transition);color:rgba(255,255,255,0.7);border-left:3px solid transparent;
}
.nav-item:hover{background:rgba(255,255,255,0.06);color:white;}
.nav-item.active{background:rgba(250,140,22,0.15);color:var(--primary-light);border-left-color:var(--primary);}
.nav-item .nav-badge{
    margin-left:auto;background:var(--up-color);color:white;font-size:10px;
    padding:1px 6px;border-radius:10px;font-weight:600;
}
.nav-item .nav-icon{font-size:16px;width:20px;text-align:center;}
.sidebar-footer{padding:12px 16px;border-top:1px solid rgba(255,255,255,0.06);font-size:12px;color:rgba(255,255,255,0.4);}

.topbar{
    position:fixed;top:0;left:var(--sidebar-w);right:0;height:var(--topbar-h);
    background:white;border-bottom:1px solid var(--border-card);display:flex;
    align-items:center;justify-content:space-between;padding:0 20px;z-index:50;
    box-shadow:0 1px 3px rgba(0,0,0,0.04);
}
.topbar-left{display:flex;align-items:center;gap:12px;font-size:14px;font-weight:600;color:var(--text-secondary);}
.topbar-right{display:flex;align-items:center;gap:12px;}
.topbar-user{font-size:12px;color:var(--text-muted);display:flex;align-items:center;gap:6px;}
.btn-menu{display:none;width:32px;height:32px;font-size:18px;border:none;background:transparent;cursor:pointer;border-radius:4px;color:var(--text-secondary);}
.btn-menu:hover{background:#f0f2f5;}
.main-content{
    margin-left:var(--sidebar-w);margin-top:var(--topbar-h);padding:20px;
    flex:1;min-height:calc(100vh - var(--topbar-h));overflow-y:auto;overflow-x:hidden;
    background:var(--bg-section);
}
.page{display:none;}
.page.active{display:block;animation:pgIn .2s ease;}
@keyframes pgIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}

/* ===== 卡片/表格 ===== */
.card{background:var(--bg-card);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:20px;margin-bottom:16px;}
.card-header{font-size:15px;font-weight:700;margin-bottom:14px;display:flex;align-items:center;justify-content:space-between;}
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:20px;}
.stat-item{
    background:var(--bg-card);border-radius:var(--radius-md);padding:20px;
    box-shadow:var(--shadow-card);text-align:center;border-top:3px solid var(--primary);
}
.stat-value{font-size:28px;font-weight:700;color:var(--primary-dark);}
.stat-label{font-size:12px;color:var(--text-muted);margin-top:4px;}
.stat-item.warn{border-top-color:#f59e0b;}
.stat-item.info{border-top-color:#3b82f6;}
.stat-item.success{border-top-color:#22c55e;}
.stat-item.danger{border-top-color:#e74c3c;}

.data-table{width:100%;border-collapse:collapse;font-size:13px;}
.data-table th{background:#f8f9fb;padding:10px 12px;text-align:left;font-weight:600;color:var(--text-secondary);border-bottom:2px solid var(--border-card);font-size:12px;white-space:nowrap;}
.data-table td{padding:9px 12px;border-bottom:1px solid #f0f2f5;color:var(--text-primary);}
.data-table tbody tr{transition:all .12s;cursor:pointer;}
.data-table tbody tr:hover{background:rgba(250,140,22,0.03);}
.data-table tbody tr.row-warn{background:#fff7ed;}
.data-table .no-data{text-align:center;padding:40px;color:var(--text-muted);}

.pagination{display:flex;align-items:center;justify-content:space-between;padding:14px 0;}
.page-info{font-size:12px;color:var(--text-muted);}
.page-btns{display:flex;gap:4px;}
.page-btn{padding:5px 10px;border:1px solid #e0e3e8;border-radius:4px;font-size:12px;cursor:pointer;background:white;transition:all var(--transition);}
.page-btn:hover{border-color:var(--primary);color:var(--primary);}
.page-btn.active{background:var(--primary);color:white;border-color:var(--primary);}
.page-btn:disabled{opacity:.35;cursor:not-allowed;}

/* ===== 标签 ===== */
.badge{
    display:inline-block;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:500;
}
.badge-urgent{background:#fee2e2;color:#991b1b;}
.badge-high{background:#fff7ed;color:#9a3412;}
.badge-normal{background:#eff6ff;color:#1e40af;}
.badge-low{background:#f0fdf4;color:#166534;}
.badge-done{background:#dcfce7;color:#166534;}
.badge-doing{background:#eff6ff;color:#1e40af;}
.badge-pending{background:#f5f5f5;color:#666;}
.badge-closed{background:#fef2f2;color:#991b1b;}

/* ===== 模态框 ===== */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:999;align-items:center;justify-content:center;}
.modal-overlay.show{display:flex;}
.modal{background:white;border-radius:var(--radius-md);box-shadow:0 20px 60px rgba(0,0,0,0.3);width:100%;max-width:560px;max-height:85vh;overflow-y:auto;animation:modalIn .2s ease;}
@keyframes modalIn{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border-card);background:#fafbfc;border-radius:var(--radius-md) var(--radius-md) 0 0;position:sticky;top:0;z-index:2;}
.modal-header h3{font-size:15px;font-weight:700;}
.modal-close{width:28px;height:28px;border-radius:50%;border:none;background:#eee;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition);}
.modal-close:hover{background:#e74c3c;color:white;}
.modal-body{padding:16px 20px 20px;}

/* ===== Toast ===== */
.toast{position:fixed;top:16px;right:20px;padding:12px 20px;border-radius:var(--radius-sm);font-size:13px;font-weight:500;z-index:3000;transform:translateX(120%);transition:transform .3s ease;box-shadow:0 4px 20px rgba(0,0,0,0.15);}
.toast.show{transform:translateX(0);}
.toast-success{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0;}
.toast-error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca;}
.toast-info{background:#eff6ff;color:#1e40af;border:1px solid #bfdbfe;}

/* ===== 加载 ===== */
.loading-spinner{text-align:center;padding:40px;color:var(--text-muted);font-size:13px;}

/* ===== Tab ===== */
.tab-item{padding:8px 16px;cursor:pointer;font-size:13px;font-weight:500;color:var(--text-muted);border-bottom:2px solid transparent;transition:all var(--transition);}
.tab-item:hover{color:var(--primary);}
.tab-item.active{color:var(--primary);border-bottom-color:var(--primary);}

/* ===== 扩展按钮 ===== */
.btn-warn{color:#f59e0b;border-color:#fde68a;background:#fffbeb;}
.btn-warn:hover{background:#f59e0b;color:white;border-color:#f59e0b;}

/* ===== 可点击行 ===== */
tr.clickable{cursor:pointer;}
tr.clickable:hover{opacity:0.8;}

/* ===== 响应式 ===== */
@media(max-width:768px){
    .sidebar{transform:translateX(-100%);}
    .sidebar.open{transform:translateX(0);}
    .topbar{left:0;}
    .main-content{margin-left:0;}
    .btn-menu{display:flex;}
    .stats-grid{grid-template-columns:repeat(2,1fr);}
}
