body, html { margin:0;padding:0;height:100%;font-family:'Microsoft YaHei','微软雅黑',sans-serif; }
.login-page { display:flex;justify-content:center;align-items:center;height:100vh;background:#f0f2f5; }
.login-box { background:#fff;padding:40px;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,0.1);width:320px; }
.login-box h2 { text-align:center;margin-bottom:24px;color:#304156; }
.main-layout { display:flex;height:100vh; }
.sidebar { width:200px;background:#304156;color:#bfcbd9;display:flex;flex-direction:column;flex-shrink:0; }
.logo { padding:20px;text-align:center;font-size:18px;font-weight:bold;border-bottom:1px solid #1f2d3d;color:#fff; }
.nav-item { padding:15px 20px;cursor:pointer;transition:all .3s;display:flex;align-items:center;gap:10px; }
.nav-item:hover,.nav-item.active { background:#1f2d3d;color:#409eff; }
.role-item { padding:8px 12px;cursor:pointer;transition:all .3s;border-radius:4px;margin-bottom:4px; }
.role-item:hover { background:#f5f7fa; }
.role-item.active { background:#409eff;color:#fff; }
.user-info { padding:15px;border-top:1px solid #1f2d3d;display:flex;justify-content:space-between;align-items:center;font-size:13px;color:#bfcbd9; }
.content { flex:1;padding:20px;overflow:auto;background:#f0f2f5; }
.page-header { display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;background:#fff;padding:15px;border-radius:4px; }
.page-header h3 { margin:0;color:#303133; }
.card { background:#fff;padding:20px;border-radius:4px;margin-bottom:15px;box-shadow:0 1px 4px rgba(0,0,0,0.05); }
.proj-name-item { padding:10px 16px;cursor:pointer;transition:all .2s;border-bottom:1px solid #ebeef5;font-size:13px;color:#303133;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.proj-name-item:hover { background:#f5f7fa; }
.proj-name-item.active { background:#ecf5ff;color:#409eff;font-weight:bold;border-left:3px solid #409eff; }
h4 { margin:16px 0 8px;color:#606266;font-size:14px; }

/* ===== 甘特图样式 ===== */
.gantt-row { display:flex;border-bottom:1px solid #ebeef5;padding:10px 0;align-items:flex-start; }
.gantt-info { width:220px;flex-shrink:0;padding-right:12px; }
.gantt-name { font-size:13px;color:#303133;font-weight:500; }
.gantt-time { font-size:11px;color:#909399;margin-top:4px;white-space:nowrap; }
.gantt-time .time-est { color:#909399; }
.gantt-time .time-actual { color:#409eff;margin-left:6px; }
.gantt-bar-area { flex:1;display:flex;align-items:center;gap:10px; }
.gantt-bar-wrap { flex:1;height:28px;background:#f5f7fa;border-radius:4px;position:relative;overflow:visible; }
.gantt-bg { position:absolute;top:6px;height:16px;background:#dcdfe6;border-radius:3px;z-index:1; }
.gantt-actual { position:absolute;top:6px;height:16px;background:#409eff;border-radius:3px;z-index:2;opacity:0.85; }
.gantt-actual.early { background:#67c23a; }
.gantt-actual.delay { background:#f56c6c; }
.gantt-dot { position:absolute;top:3px;width:10px;height:22px;border-radius:5px;z-index:4; }
.gantt-dot.est { background:#909399;border:2px solid #fff;box-sizing:border-box; }
.gantt-dot.actual { background:#409eff;border:2px solid #fff;box-sizing:border-box; }
.gantt-dot.actual.early { background:#67c23a; }
.gantt-dot.actual.delay { background:#f56c6c; }
.gantt-status { width:100px;text-align:center;flex-shrink:0; }
.gantt-tooltip { position:absolute;background:rgba(0,0,0,0.8);color:#fff;padding:8px 12px;border-radius:4px;font-size:12px;line-height:1.6;white-space:nowrap;z-index:10;pointer-events:none;display:none; }
.gantt-bar-wrap:hover .gantt-tooltip { display:block; }

/* ===== 项目列表选中行高亮 ===== */
.el-table .current-row td { background-color:#eef5fe !important; }
.el-table .current-row td:first-child { border-left:3px solid #409eff; }

/* ===== 智能助手浮动窗口 ===== */
.ai-assistant-float { position:fixed;right:24px;bottom:24px;z-index:1000;display:flex;flex-direction:column;align-items:flex-end;gap:10px; }
.ai-assistant-btn { width:52px;height:52px;border-radius:50%;background:#409eff;color:#fff;display:flex;justify-content:center;align-items:center;font-size:22px;cursor:pointer;box-shadow:0 4px 12px rgba(64,158,255,0.4);transition:all .3s; }
.ai-assistant-btn:hover { transform:scale(1.05); }
.ai-assistant-panel { width:400px;height:520px;background:#fff;border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,0.15);display:none;flex-direction:column;overflow:hidden; }
.ai-assistant-float.open .ai-assistant-panel { display:flex; }
.ai-assistant-header { background:#409eff;color:#fff;padding:12px 16px;display:flex;justify-content:space-between;align-items:center;font-weight:500;font-size:14px; }
.ai-assistant-body { flex:1;padding:16px;overflow-y:auto;background:#f5f7fa; }
.ai-assistant-footer { padding:12px 16px;border-top:1px solid #ebeef5;background:#fff; }
.ai-msg { display:flex;margin-bottom:12px; }
.ai-msg.assistant { justify-content:flex-start; }
.ai-msg.user { justify-content:flex-end; }
.ai-msg-bubble { max-width:80%;padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.6;word-break:break-all; }
.ai-msg.assistant .ai-msg-bubble { background:#fff;color:#303133;border:1px solid #ebeef5; }
.ai-msg.user .ai-msg-bubble { background:#409eff;color:#fff; }

/* 销售台账操作列对齐：表头文字与按钮文字左边缘对齐 */
.op-col .cell { padding-left: 0 !important; padding-right: 0 !important; }
.op-col .el-button--text { padding-left: 10px !important; padding-right: 10px !important; margin-left: 0 !important; }
.el-table__header-wrapper .op-col .cell { padding-left: 10px !important; }
