* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: "PingFang SC","Microsoft YaHei",sans-serif; background:#f2f4f8; color:#1f2733; font-size:14px; }
button { font-family: inherit; cursor: pointer; }
input, select, textarea { font-family: inherit; font-size: 14px; padding: 8px 10px; border:1px solid #d3dae4; border-radius:6px; background:#fff; outline:none; }
input:focus, select:focus, textarea:focus { border-color:#3b82f6; }
.muted { color:#7b8698; }
.muted-sm { color:#98a2b3; font-size:12px; font-weight:normal; }
.err { color:#e5484d; font-size:13px; min-height:18px; }
.req { color:#e5484d; margin-left:2px; }

.btn { padding:8px 16px; border:1px solid #d3dae4; border-radius:6px; background:#fff; color:#1f2733; font-size:14px; }
.btn:hover { background:#f6f8fb; }
.btn.primary { background:#2f6bff; border-color:#2f6bff; color:#fff; }
.btn.primary:hover { background:#2557d6; }
.btn.danger { color:#e5484d; border-color:#f1b7ba; }
.btn.danger:hover { background:#fdf1f1; }
.btn.sm { padding:5px 10px; font-size:13px; }

/* 侧边栏布局（参考 TodoNow） */
.shell { display:flex; min-height:100vh; }
.sidebar { width:var(--wb-sidebar-width,224px); flex-shrink:0; background:#fff; border-right:1px solid #e8ecf2; display:flex; flex-direction:column; position:sticky; top:0; height:100vh; }
.brand { display:flex; gap:10px; align-items:center; padding:20px 16px 18px; border-bottom:1px solid #f0f3f7; }
.logo { width:38px; height:38px; border-radius:10px; background:linear-gradient(135deg,#2f6bff,#7c5cd6); color:#fff; font-weight:700; font-size:18px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.bn { font-size:15px; font-weight:700; color:#1f2733; }
.bs { font-size:11px; color:#98a2b3; margin-top:1px; }
.side-nav { padding:12px 10px; display:flex; flex-direction:column; gap:4px; flex:1; }
.nav-item { display:flex; align-items:center; gap:10px; width:100%; text-align:left; border:none; background:none; padding:10px 12px; font-size:14px; color:#454f5d; border-radius:8px; }
.nav-item i { font-style:normal; font-size:15px; }
.nav-item:hover { background:#f2f5fa; }
.nav-item.active { background:#eef3ff; color:#2f6bff; font-weight:600; }
.badge { background:#e5484d; color:#fff; font-size:11px; border-radius:9px; padding:1px 6px; margin-left:auto; display:none; }
.side-bottom { padding:12px; border-top:1px solid #f0f3f7; display:flex; flex-direction:column; gap:10px; }
.btn.wide { width:100%; }
.me-card { display:flex; gap:10px; align-items:center; width:100%; border:none; background:#f6f8fb; border-radius:10px; padding:9px 10px; cursor:pointer; text-align:left; }
.me-card:hover { background:#eef3ff; }
.avatar { width:34px; height:34px; border-radius:50%; background:linear-gradient(135deg,#f59e0b,#e5760c); color:#fff; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:15px; flex-shrink:0; }
.me-nm { font-size:13px; font-weight:600; color:#1f2733; }
.me-sub { font-size:11px; color:#98a2b3; }
.main { flex:1; min-width:0; max-width:1200px; margin:0 auto; padding:24px 28px; }
.page-head { margin-bottom:16px; }
.page-head h2 { font-size:22px; }
.page-head p { color:#7b8698; font-size:13px; margin-top:4px; }
.sec-title { font-size:15px; margin:20px 0 10px; color:#374151; }

/* 登录遮罩 */
.login-mask { position:fixed; inset:0; background:rgba(20,28,40,.55); display:flex; align-items:center; justify-content:center; z-index:100; }
.login-box { background:#fff; border-radius:12px; padding:32px; width:420px; max-width:92vw; }
.login-box h2 { color:#2f6bff; margin-bottom:6px; }
.login-box > p { margin-bottom:18px; }
.login-members { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:18px; }
.login-members .btn.on { background:#eef3ff; border-color:#2f6bff; color:#2f6bff; }
.login-new { display:flex; gap:8px; }
.login-new input { flex:1; min-width:0; }

/* 统计卡 */
.stats { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; margin-bottom:18px; }
.stat { background:#fff; border-radius:10px; padding:14px 16px; border:1px solid #e5e9f0; }
.stat .n { font-size:26px; font-weight:700; }
.stat .l { color:#7b8698; font-size:12px; margin-top:2px; }
.stat.warn .n { color:#e5760c; }
.stat.danger .n { color:#e5484d; }
.stat.ok .n { color:#12a150; }

/* 看板分区（折叠式） */
.st-chips { display:flex; gap:6px; flex-wrap:wrap; }
.st-chip { font-size:12px; padding:5px 12px; border-radius:14px; border:1px solid #d3dae4; background:#fff; color:#5b6675; cursor:pointer; user-select:none; }
.st-chip.on.待接收 { background:#fef3e6; color:#e5760c; border-color:#f5c98a; }
.st-chip.on.进行中 { background:#e8f0fe; color:#2f6bff; border-color:#a9c4fb; }
.st-chip.on.已完成 { background:#e6f6ec; color:#12a150; border-color:#9fdcb8; }
.st-chip.on.已延期 { background:#fdecec; color:#e5484d; border-color:#f1b7ba; }
.st-chip.on.已取消 { background:#eef1f5; color:#8a94a5; border-color:#cfd6df; }
.bsec { background:#fff; border:1px solid #e5e9f0; border-radius:10px; margin-bottom:12px; overflow:hidden; }
.bsec-h { display:flex; align-items:center; gap:10px; padding:12px 16px; cursor:pointer; user-select:none; }
.bsec-h:hover { background:#f8fafd; }
.bsec-h .arrow { transition:transform .15s; color:#98a2b3; font-size:12px; }
.bsec.open .bsec-h .arrow { transform:rotate(90deg); }
.bsec-h .cnt { background:#f2f5fa; color:#5b6675; border-radius:9px; font-size:12px; padding:1px 8px; }
.bsec-b { display:none; padding:4px 14px 14px; }
.bsec.open .bsec-b { display:block; }
.bsec-b .bgrid { display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:10px; }
.bsec-h .st { flex-shrink:0; }

/* 看板 */
.kanban { display:grid; grid-template-columns:repeat(5,1fr); gap:12px; align-items:start; }
.kcol { background:#eaeef4; border-radius:10px; padding:10px; min-height:200px; }
.kcol-h { display:flex; justify-content:space-between; align-items:center; padding:2px 4px 10px; font-weight:600; font-size:13px; }
.kcol-h .cnt { background:#fff; border-radius:9px; font-size:12px; padding:1px 8px; color:#5b6675; }
.kcard { background:#fff; border-radius:8px; padding:10px 12px; margin-bottom:8px; cursor:pointer; border:1px solid transparent; }
.kcard:hover { border-color:#2f6bff; }
.kcard .no { color:#98a2b3; font-size:11px; }
.kcard .ti { font-weight:600; margin:2px 0 6px; line-height:1.4; }
.kcard .as { display:flex; flex-wrap:wrap; gap:4px; margin-bottom:6px; }
.chip { font-size:11px; padding:1px 7px; border-radius:9px; background:#eef3ff; color:#2f6bff; }
.chip.dept { background:#f0edfd; color:#7c5cd6; }
.chip.cc { background:#eef3f8; color:#476580; }
.pri { font-size:11px; padding:1px 7px; border-radius:4px; }
.pri.紧急 { background:#fdecec; color:#e5484d; }
.pri.高 { background:#fef3e6; color:#e5760c; }
.pri.普通 { background:#eef1f5; color:#5b6675; }
.cat { font-size:11px; padding:1px 7px; border-radius:4px; background:#e8f4f1; color:#0e8a72; white-space:nowrap; }
.pri.低 { background:#eef7f0; color:#12a150; }
.dl { font-size:12px; color:#5b6675; }
.dl.over { color:#e5484d; font-weight:600; }
.bar { height:5px; background:#e8edf3; border-radius:3px; margin-top:8px; overflow:hidden; }
.bar i { display:block; height:100%; background:#2f6bff; border-radius:3px; }
.bar i.done { background:#12a150; }

/* 筛选 */
.filters { display:flex; gap:10px; margin-bottom:14px; flex-wrap:wrap; }
.filters input { flex:1; min-width:180px; }

/* 任务表 */
.task-table-wrap { background:#fff; border-radius:10px; border:1px solid #e5e9f0; overflow:auto; }
.task-table { width:100%; border-collapse:collapse; min-width:860px; }
.task-table th { text-align:left; font-size:12px; color:#7b8698; padding:10px 12px; border-bottom:1px solid #e5e9f0; white-space:nowrap; }
.task-table td { padding:10px 12px; border-bottom:1px solid #f0f3f7; vertical-align:middle; }
.task-table tr:last-child td { border-bottom:none; }
.task-table tr:hover td { background:#f8fafd; }
.task-table .t-link { color:#1f2733; font-weight:600; cursor:pointer; }
.task-table .t-link:hover { color:#2f6bff; }
.st { font-size:12px; padding:2px 9px; border-radius:10px; white-space:nowrap; }
.st.待接收 { background:#fef3e6; color:#e5760c; }
.st.进行中 { background:#e8f0fe; color:#2f6bff; }
.st.已完成 { background:#e6f6ec; color:#12a150; }
.st.已延期 { background:#fdecec; color:#e5484d; }
.st.已取消 { background:#eef1f5; color:#8a94a5; text-decoration:line-through; }
.mini-bar { width:70px; height:5px; background:#e8edf3; border-radius:3px; display:inline-block; vertical-align:middle; margin-right:6px; overflow:hidden; }
.mini-bar i { display:block; height:100%; background:#2f6bff; }

/* 我的任务卡片 */
.card-list { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:12px; }
.empty { color:#98a2b3; padding:18px; text-align:center; grid-column:1/-1; background:#fff; border:1px dashed #d3dae4; border-radius:10px; }

/* 成员 */
.members-head { display:flex; justify-content:space-between; align-items:flex-start; flex-wrap:wrap; gap:10px; }
.member-add { display:flex; gap:8px; }
.member-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:12px; }
.mcard { background:#fff; border:1px solid #e5e9f0; border-radius:10px; padding:14px; display:flex; justify-content:space-between; align-items:center; }
.mcard .nm { font-weight:600; }
.mcard .dp { color:#7c5cd6; font-size:12px; margin-top:2px; }
.mcard .del { border:none; background:none; color:#c2cad6; font-size:16px; }
.mcard .del:hover { color:#e5484d; }

/* 弹窗 */
.mask { position:fixed; inset:0; background:rgba(20,28,40,.45); display:flex; align-items:flex-start; justify-content:center; z-index:50; padding:40px 16px; overflow:auto; }
.modal { background:#fff; border-radius:12px; width:520px; max-width:96vw; display:flex; flex-direction:column; max-height:calc(100vh - 80px); }
.modal-lg { width:680px; }
.modal-h { display:flex; justify-content:space-between; align-items:center; padding:16px 20px; border-bottom:1px solid #eef1f5; font-weight:600; font-size:15px; }
.close { border:none; background:none; font-size:20px; color:#98a2b3; line-height:1; }
.modal-b { padding:18px 20px; overflow:auto; }
.modal-f { padding:14px 20px; border-top:1px solid #eef1f5; display:flex; justify-content:flex-end; gap:10px; align-items:center; }
.modal-f .err { margin-right:auto; }
.fld { display:block; margin-bottom:14px; font-size:13px; color:#374151; }
.fld input, .fld select, .fld textarea { width:100%; margin-top:5px; }
.fld-row { display:flex; gap:14px; }
.fld-row .fld { flex:1; }
.chips-box { border:1px solid #d3dae4; border-radius:6px; padding:8px; margin-top:5px; display:flex; flex-wrap:wrap; gap:6px; min-height:38px; }
.chips-box .opt { font-size:12px; padding:3px 10px; border-radius:12px; background:#f2f5fa; color:#5b6675; border:1px solid transparent; cursor:pointer; }
.chips-box .opt.on { background:#eef3ff; border-color:#2f6bff; color:#2f6bff; }
.chips-box .opt.deptopt { background:#f7f4ff; }
.chips-box .opt.deptopt.on { background:#f0edfd; border-color:#7c5cd6; color:#7c5cd6; }
/* @ 指派 */
.mention-box { border:1px solid #d3dae4; border-radius:6px; margin-top:5px; padding:5px 8px; display:flex; flex-wrap:wrap; gap:5px; align-items:center; background:#fff; }
.mention-box:focus-within { border-color:#3b82f6; }
.chips-view { display:flex; flex-wrap:wrap; gap:5px; }
.chips-view:empty { display:none; }
.achip { font-size:12px; padding:3px 10px; border-radius:12px; cursor:pointer; }
.achip.member { background:#eef3ff; color:#2f6bff; }
.achip.dept { background:#f0edfd; color:#7c5cd6; }
.achip i { font-style:normal; margin-left:4px; opacity:.7; }
.achip i:hover { opacity:1; }
.mention-box input { border:none !important; flex:1; min-width:120px; padding:4px 2px !important; box-shadow:none !important; }
.suggest { border:1px solid #d3dae4; border-radius:8px; background:#fff; box-shadow:0 8px 24px rgba(20,28,40,.12); margin-top:4px; max-height:220px; overflow:auto; z-index:5; position:relative; }
.suggest .sg { display:flex; justify-content:space-between; align-items:center; padding:8px 12px; cursor:pointer; font-size:13px; }
.suggest .sg:hover, .suggest .sg.on { background:#eef3ff; color:#2f6bff; }
.suggest .sg .tag { font-size:11px; color:#98a2b3; }
.suggest .sg.dept-sg .tag { color:#7c5cd6; }
.file-list { margin-top:6px; display:flex; flex-direction:column; gap:4px; }
.file-item { font-size:12px; color:#5b6675; display:flex; justify-content:space-between; background:#f6f8fb; padding:4px 8px; border-radius:5px; }
.file-item .rm { cursor:pointer; color:#e5484d; }
.link-rows { display:flex; flex-direction:column; gap:6px; margin-bottom:6px; }
.link-row { display:flex; gap:6px; }
.link-row input { flex:1; }
.link-row .rm { border:none; background:none; color:#e5484d; font-size:16px; }

/* 详情 */
.d-meta { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:14px; align-items:center; }
.d-sec { font-size:13px; font-weight:600; color:#374151; margin:14px 0 6px; }
.d-text { background:#f8fafd; border-radius:8px; padding:10px 12px; white-space:pre-wrap; line-height:1.7; color:#374151; }
.d-links a { color:#2f6bff; word-break:break-all; display:block; padding:3px 0; }
.att-grid { display:flex; flex-wrap:wrap; gap:8px; }
.att-grid img { max-width:150px; max-height:110px; border-radius:8px; border:1px solid #e5e9f0; cursor:zoom-in; }
.att-file { font-size:12px; color:#2f6bff; background:#eef3ff; padding:5px 10px; border-radius:6px; text-decoration:none; }
.reply { border-left:3px solid #e5e9f0; padding:8px 0 8px 14px; margin-left:4px; }
.reply.me { border-left-color:#2f6bff; }
.reply-h { font-size:12px; color:#7b8698; margin-bottom:3px; }
.reply-h b { color:#1f2733; }
.reply-p { font-size:12px; color:#12a150; }
.reply-b { line-height:1.6; color:#374151; white-space:pre-wrap; }
.reply-form { margin-top:14px; background:#f8fafd; border-radius:8px; padding:12px; }
.reply-form textarea { width:100%; margin-bottom:8px; }
.reply-ctl { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.reply-ctl input[type=range] { flex:1; }
.reply-ctl .pv { font-weight:700; color:#2f6bff; min-width:42px; }
.d-acts { display:flex; gap:8px; flex-wrap:wrap; }

/* 任务详情按阅读、办理、回复的顺序排布，长内容保持清晰的段落间距。 */
#detailModal .modal { width:min(860px, 96vw); max-height:calc(100vh - 56px); }
#detailModal .modal-h { padding:19px 24px; font-size:17px; }
#detailModal .modal-b { padding:22px 24px 28px; }
#detailModal .modal-f { padding:14px 24px; background:#fff; }
#detailModal .d-meta { gap:8px 10px; margin-bottom:12px; line-height:1.6; }
#detailModal .d-sec { margin:25px 0 10px; padding-top:19px; border-top:1px solid #edf0f5;
  color:#202938; font-size:14px; font-weight:700; }
#detailModal .d-text { padding:16px 18px; background:#f7f9fc; border:1px solid #edf0f5;
  border-radius:10px; font-size:13px; line-height:1.85; }
#detailModal .reply { margin:0 0 9px; padding:12px 16px; border:1px solid #e9edf4;
  border-left:3px solid #9db7f5; border-radius:9px; background:#fff; }
#detailModal .reply.me { border-left-color:#3266ef; }
#detailModal .reply-h { margin-bottom:6px; line-height:1.6; }
#detailModal .reply-b { font-size:13px; line-height:1.75; }
#detailModal .reply-form { margin-top:22px; padding:18px; border:1px solid #dfe7f6;
  border-radius:12px; background:#f8faff; }
#detailModal .reply-form-title { margin-bottom:13px; color:#202938; font-size:14px; font-weight:700; }
#detailModal .reply-form-title span { margin-left:8px; color:#8590a1; font-size:12px; font-weight:400; }
#detailModal .reply-form textarea { display:block; min-height:86px; margin:0 0 15px; padding:11px 13px;
  border-radius:8px; background:#fff; line-height:1.6; }
#detailModal .reply-upload-label { margin-bottom:8px; color:#344054; font-size:12px; font-weight:600; }
#detailModal .reply-ctl { margin-top:16px; padding-top:15px; border-top:1px solid #e6ebf4; }
#detailModal .d-histbox { margin-top:24px; }
@media (max-width:600px) {
  #detailModal .modal { width:100%; max-width:100%; max-height:calc(100dvh - 24px); }
  #detailModal .modal-b { padding:16px; }
  #detailModal .modal-h, #detailModal .modal-f { padding:14px 16px; }
  #detailModal .reply-form-title span { display:block; margin:3px 0 0; }
}

/* 权限弹窗 */
.perm-mode { display:flex; flex-direction:column; gap:8px; margin-bottom:10px; }
.radio-line { display:flex; align-items:center; gap:8px; font-size:13px; color:#374151; cursor:pointer; }
.radio-line input { width:auto; margin:0; }
.perm-hint { background:#f8fafd; border-radius:6px; padding:6px 10px; font-size:12px; color:#5b6675; margin-bottom:8px; }
.role-tag { font-size:11px; padding:1px 7px; border-radius:4px; background:#f0edfd; color:#7c5cd6; margin-left:4px; }
.admin-btns { display:flex; gap:6px; }

.toast { position:fixed; bottom:32px; left:50%; transform:translateX(-50%); background:#1f2733; color:#fff; padding:10px 22px; border-radius:8px; font-size:14px; z-index:200; }

@media (max-width:900px){
  .kanban { grid-template-columns:repeat(2,1fr); }
  .fld-row { flex-direction:column; gap:0; }
  .sidebar { width:64px; }
  .bn,.bs,.nav-item .txt,.me-txt { display:none; }
  .nav-item { justify-content:center; }
  /* 图标栏只留图标（菜单文字不再竖着挤成一列），底部统一侧栏始终可见 */
  .side-nav .nav-item { font-size:0; gap:0; padding:10px 0; position:relative; }
  .side-nav .nav-item i { font-size:16px; }
  .side-nav .nav-item .badge { position:absolute; top:2px; right:4px; font-size:10px; }
  .side-nav { overflow-y:auto; }
  .side-bottom { padding:8px; }
  #btnNew { font-size:0; padding:8px 0; }
  #btnNew::before { content:'＋'; font-size:16px; }
}

/* 任务中心（参考项目中心布局） */
.lc-head { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; flex-wrap:wrap; margin-bottom:16px; }
.lc-title h2 { font-size:22px; }
.lc-title p { color:#7b8698; margin-top:4px; font-size:13px; }
.lc-right { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.lc-chips { display:flex; gap:6px; flex-wrap:wrap; }
.lc-chip { font-size:13px; padding:6px 14px; border-radius:16px; border:1px solid #d3dae4; background:#fff; cursor:pointer; color:#374151; }
.lc-chip b { font-weight:600; margin-left:4px; }
.lc-chip.on { background:#2f6bff; border-color:#2f6bff; color:#fff; }
.lc-chip.on.c-待接收 { background:#e5760c; border-color:#e5760c; }
.lc-chip.on.c-已完成 { background:#12a150; border-color:#12a150; }
.lc-chip.on.c-已延期 { background:#e5484d; border-color:#e5484d; }
.lc-chip.on.c-已取消 { background:#8a94a5; border-color:#8a94a5; }
.lc-filterbar { display:flex; gap:10px; margin-bottom:14px; flex-wrap:wrap; }
.lc-search { flex:1; min-width:220px; }
.lc-card { background:#fff; border:1px solid #e5e9f0; border-radius:12px; overflow:hidden; }
.lc-toolbar { display:flex; justify-content:space-between; align-items:center; padding:12px 16px; border-bottom:1px solid #eef1f5; }
.lc-views { display:flex; background:#eef1f5; border-radius:8px; padding:3px; }
.lc-vbtn { border:none; background:none; padding:6px 20px; border-radius:6px; font-size:13px; color:#5b6675; }
.lc-vbtn.on { background:#2f6bff; color:#fff; font-weight:600; }
.task-table .sq { width:26px; height:26px; border-radius:7px; display:inline-block; flex-shrink:0; }
.sq.待接收 { background:#e5760c; } .sq.进行中 { background:#2f6bff; }
.sq.已完成 { background:#12a150; } .sq.已延期 { background:#e5484d; }
.sq.已取消 { background:#8a94a5; }
.tcell { display:flex; gap:10px; align-items:center; }
.tname { font-weight:600; }
.tname .pri { margin-left:6px; }
.tmeta { font-size:12px; color:#98a2b3; margin-top:2px; }
.lc-card .bsec { margin:10px; border:1px solid #eef1f5; }
.lc-card .bsec:last-child { margin-bottom:14px; }

/* 五级优先级 */
.pri.中 { background:#fdf6dc; color:#b78900; }
/* 反馈 & 回收站 */
.fb-form { background:#fff; border:1px solid #e5e9f0; border-radius:12px; padding:14px 16px; margin-bottom:16px; }
.fb-form textarea { width:100%; }
.fb-tabs { display:flex; gap:6px; margin-bottom:12px; }
.fb-tabs .lc-vbtn { background:#eef1f5; }
.fb-tabs .lc-vbtn.on { background:#2f6bff; }
.fb-item { background:#fff; border:1px solid #e5e9f0; border-radius:10px; padding:12px 14px; margin-bottom:10px; }
.fb-h { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:6px; flex-wrap:wrap; }
.fb-h .who { font-size:12px; color:#7b8698; }
.fb-b { line-height:1.6; white-space:pre-wrap; color:#374151; }
.fb-st { font-size:12px; padding:2px 9px; border-radius:10px; }
.fb-st.待处理 { background:#fef3e6; color:#e5760c; }
.fb-st.已处理 { background:#e6f6ec; color:#12a150; }
.trash-card { background:#fff; border:1px solid #e5e9f0; border-radius:10px; padding:12px 14px; }
.trash-card .ti { font-weight:600; margin-bottom:4px; }
.trash-card .mt { font-size:12px; color:#98a2b3; margin-bottom:8px; }
.trash-acts { display:flex; gap:8px; }

/* 分类/部门选项设置（管理员） */
#optEditor { margin-top:8px; }
.opt-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:10px 0; }
.opt-label { font-size:13px; font-weight:600; min-width:60px; }
.opt-chip { font-size:12px; padding:3px 9px; display:inline-flex; align-items:center; gap:5px; }
.opt-chip i { cursor:pointer; font-style:normal; opacity:.55; }
.opt-chip i:hover { opacity:1; color:#e5484d; }
#cfgCatNew, #cfgDeptNew { border:1px solid #dde3ec; border-radius:7px; padding:5px 9px; font-size:12px; width:130px; }

/* 服务器版补充 */
.login-new a.btn { text-decoration:none; display:inline-block; text-align:center; }
.login-box #loginNeed > p, .login-box #loginDept > p { margin-bottom:18px; line-height:1.6; }
.login-new select { flex:1; }
.file-item.uploading { color:#98a2b3; }
.mcard .dp .lnk { cursor:pointer; text-decoration:underline dotted; }

/* 统一入口：其他系统 */
.suite-nav{margin-top:10px;padding-top:10px;border-top:1px solid rgba(127,127,127,.25)}
.suite-nav .suite-t{font-size:11px;opacity:.6;padding:0 14px 4px;letter-spacing:.5px}
.suite-nav a.nav-item{text-decoration:none;color:inherit}

/* v0.2 优先级两级 / 历史 / 统计 / 后台设置 */
.pri.普通 { background:#eef2f7; color:#5b6b82; }
.kcard.urgent { border-left:3px solid #e5484d; }
.stat-filters { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:12px; }
.stat-filters input[type=date] { border:1px solid #dde3ec; border-radius:7px; padding:5px 8px; font-size:13px; }
.stat-card { background:#fff; border:1px solid #e7ebf2; border-radius:12px; padding:14px 16px; margin:12px 0; }
.trend { display:flex; align-items:flex-end; gap:6px; height:150px; overflow-x:auto; padding-top:8px; }
.trend .tcol { display:flex; flex-direction:column; align-items:center; min-width:34px; flex:1; }
.trend .bars { display:flex; align-items:flex-end; gap:2px; height:110px; }
.trend .bars i { display:block; width:12px; border-radius:3px 3px 0 0; background:#9db7f5; }
.trend .bars i.d { background:#3fb37f; }
.trend .lb { font-size:11px; color:#98a2b3; margin-top:4px; white-space:nowrap; }
.trend-legend { font-size:12px; color:#667085; margin-left:10px; font-weight:400; }
.trend-legend i { display:inline-block; width:10px; height:10px; border-radius:2px; margin:0 4px 0 10px; vertical-align:-1px; }
.tbl-wrap { overflow-x:auto; }
.stbl { width:100%; border-collapse:collapse; font-size:13px; }
.stbl th, .stbl td { padding:8px 10px; border-bottom:1px solid #eef1f6; text-align:right; white-space:nowrap; }
.stbl th:first-child, .stbl td:first-child { text-align:left; }
.stbl th { color:#667085; font-weight:500; background:#f8fafc; cursor:pointer; user-select:none; }
.stbl td.bad { color:#e5484d; font-weight:600; }
.stbl td.good { color:#16a34a; }
.stat-note { line-height:1.8; margin:6px 2px 20px; }
.set-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:14px; margin-bottom:18px; }
.set-card { background:#fff; border:1px solid #e7ebf2; border-radius:12px; padding:14px 16px; }
.opt-list { display:flex; flex-direction:column; gap:4px; margin:8px 0; }
.opt-item { display:flex; align-items:center; gap:6px; padding:5px 8px; border-radius:8px; background:#f8fafc; font-size:13px; }
.opt-item .nm { flex:1; }
.opt-item .use { color:#98a2b3; font-size:12px; }
.opt-item button { border:none; background:none; cursor:pointer; color:#667085; font-size:12px; padding:2px 5px; border-radius:5px; }
.opt-item button:hover { background:#e8edf5; color:#1f2a3c; }
.opt-item button.del:hover { background:#fdecec; color:#e5484d; }
.opt-add { display:flex; gap:6px; }
.opt-add input { flex:1; border:1px solid #dde3ec; border-radius:7px; padding:5px 9px; font-size:13px; }
.hist-head { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.hist-head select { border:1px solid #dde3ec; border-radius:7px; padding:4px 8px; font-size:13px; }
.hist-list, .d-hist { display:flex; flex-direction:column; gap:2px; }
.hrow { display:flex; gap:10px; padding:7px 10px; border-bottom:1px solid #f0f2f6; font-size:13px; line-height:1.6; }
.hrow .ht { color:#98a2b3; white-space:nowrap; width:92px; flex:none; font-size:12px; padding-top:1px; }
.hrow .hb { flex:1; min-width:0; }
.hrow .hb b { font-weight:600; }
.hrow .ha { display:inline-block; font-size:11px; padding:0 6px; border-radius:4px; background:#eef2f7; color:#475467; margin:0 4px; }
.hrow .ha.done { background:#e7f7ef; color:#16a34a; } .hrow .ha.delay, .hrow .ha.purge, .hrow .ha.cancel { background:#fdecec; color:#e5484d; }
.hrow .hc { color:#667085; font-size:12px; word-break:break-all; }
.hrow .hc s { color:#b0b8c4; }
.hrow .bf { font-size:11px; color:#e5760c; margin-left:4px; }
details.d-histbox { margin-top:14px; }
details.d-histbox > summary { cursor:pointer; font-size:13px; font-weight:600; color:#475467; padding:6px 0; }

/* ================= 我的日程（v0.4.0，schedule.js） ================= */
.sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.net-banner { display:flex; flex-wrap:wrap; gap:8px 12px; align-items:center; background:#fff4e5; color:#8a4b00; border:1px solid #f3c98b; border-radius:8px; padding:10px 14px; margin-bottom:14px; font-size:13px; }
.sc-head { display:flex; flex-wrap:wrap; gap:12px; justify-content:space-between; align-items:flex-end; margin-bottom:14px; }
.sc-head h2 { font-size:22px; }
.sc-sub { color:#7b8698; font-size:13px; margin-top:4px; display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.sc-seg { display:inline-flex; background:#fff; border:1px solid #e8ecf2; border-radius:8px; padding:3px; }
.sc-seg button { border:0; background:none; padding:6px 16px; border-radius:6px; color:#454f5d; font-size:14px; }
.sc-seg button.on { background:#2f6bff; color:#fff; }
.sc-bar { display:flex; flex-wrap:wrap; gap:8px 12px; align-items:center; margin-bottom:10px; }
.sc-bar > b { font-size:15px; }
.sc-add { display:flex; gap:8px; flex:1; min-width:260px; }
.sc-add input { flex:1; min-width:0; }
.sc-check { display:inline-flex; gap:6px; align-items:center; font-size:13px; color:#454f5d; cursor:pointer; }
.sc-legend { display:flex; flex-wrap:wrap; gap:6px 14px; font-size:12px; color:#7b8698; margin-bottom:14px; }
.sc-legend i { display:inline-block; width:9px; height:9px; border-radius:2px; margin-right:4px; vertical-align:-1px; background:var(--c); }
.c-off { color:#1f9d6b; } .c-on { color:#d9480f; }
.src-in { --c:#2f6bff; } .src-out { --c:#7c5cd6; } .src-me { --c:#8a94a6; } .src-sys { --c:#d07a1f; }
.sc-tag { display:inline-block; font-size:12px; line-height:18px; padding:0 8px; border-radius:999px; font-weight:600; }
.sc-tag.work { background:#fdece4; color:#d9480f; } .sc-tag.rest { background:#e3f5ec; color:#1f9d6b; }
.sc-note { font-size:13px; background:#f6f8fb; border:1px solid #e8ecf2; border-radius:8px; padding:8px 12px; margin-bottom:10px; color:#454f5d; }
.sc-note.warn { background:#fff4e5; border-color:#f3c98b; color:#8a4b00; }
.sc-hint { font-size:12px; color:#7b8698; margin-top:10px; }
.sc-empty { color:#98a2b3; font-size:12px; padding:10px 0; text-align:center; }
.sc-dhint { display:block; font-size:12px; color:#d9480f; margin-top:4px; min-height:0; }
.sc-dhint a { color:#2f6bff; }
.sc-done-fld { display:flex; align-items:flex-end; padding-bottom:8px; }
.sc-done-fld input { width:auto; margin:0 4px 0 0; }
/* 卡片 */
.sc-card { display:flex; gap:8px; align-items:flex-start; background:#fff; border:1px solid #e8ecf2; border-left:3px solid var(--c); border-radius:7px; padding:8px 10px; font-size:13px; cursor:pointer; }
.sc-card:hover { border-color:#c9d3e2; border-left-color:var(--c); }
.sc-card:focus-visible { outline:2px solid #2f6bff; outline-offset:1px; }
.sc-card.dragging { opacity:.4; }
.sc-card.done { opacity:.55; } .sc-card.done .sc-t { text-decoration:line-through; }
.sc-card.compact { padding:5px 8px; font-size:12px; }
.sc-cb { min-width:0; flex:1; display:flex; flex-direction:column; gap:4px; }
.sc-t { font-weight:600; line-height:1.4; word-break:break-word; }
.sc-no { color:#98a2b3; font-weight:400; }
.sc-m { display:flex; flex-wrap:wrap; gap:4px 8px; color:#7b8698; font-size:12px; align-items:center; }
.sc-pill { font-size:11px; border-radius:4px; padding:0 5px; line-height:18px; }
.sc-pill.src { background:#f2f4f8; color:var(--c); font-weight:600; }
.sc-pill.urg { background:#fdeeee; color:#e5484d; font-weight:600; }
.sc-pill.warn { background:#fdece4; color:#d9480f; }
.sc-pill.st { background:#f2f4f8; color:#454f5d; }
.sc-chk { flex:none; width:18px; height:18px; margin-top:1px; border:1.5px solid #b6bfcc; border-radius:5px; background:#fff; color:#fff; font-size:12px; line-height:15px; padding:0; }
.sc-card.done .sc-chk { background:#1f9d6b; border-color:#1f9d6b; }
.sc-over { outline:2px dashed #2f6bff; outline-offset:-2px; }
/* 今日 */
.sc-today { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }
.sc-col { background:#fff; border:1px solid #e8ecf2; border-radius:10px; padding:12px; display:flex; flex-direction:column; gap:8px; min-width:0; }
.sc-col h3 { font-size:14px; display:flex; justify-content:space-between; }
.sc-col h3 span { color:#98a2b3; font-weight:400; }
.sc-none { margin-top:14px; }
.sc-wrap { display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:8px; }
/* 看板 */
.sc-kanban { display:grid; grid-template-columns:repeat(5,minmax(200px,1fr)); gap:12px; overflow-x:auto; padding-bottom:4px; }
.sc-kcol { background:#eceff4; border-radius:10px; padding:10px; display:flex; flex-direction:column; gap:8px; min-height:260px; }
.sc-kcol h3 { font-size:13px; color:#454f5d; display:flex; justify-content:space-between; gap:6px; }
.sc-kcol h3 small { font-weight:400; color:#7b8698; }
/* 周 / 月 */
.sc-panel { background:#fff; border:1px solid #e8ecf2; border-radius:10px; }
.sc-scroll { overflow-x:auto; }
.sc-wgrid { display:grid; grid-template-columns:repeat(7,minmax(120px,1fr)); min-width:840px; }
.sc-wh { padding:10px; border-bottom:1px solid #e8ecf2; border-right:1px solid #f0f3f7; display:flex; flex-direction:column; gap:3px; }
.sc-wh .d { display:flex; justify-content:space-between; align-items:center; font-weight:600; gap:4px; }
.sc-wh .l { font-size:12px; color:#7b8698; } .sc-wh .l.fest { color:#1f9d6b; font-weight:600; }
.sc-wh.rest { background:#f6f7f9; } .sc-wh.rest .d b { color:#98a2b3; }
.sc-wh.now .d b { background:#2f6bff; color:#fff; border-radius:6px; padding:0 6px; }
.sc-lane { grid-column:1/-1; display:grid; grid-template-columns:repeat(7,minmax(120px,1fr)); gap:4px 0; padding:8px 0; border-bottom:1px solid #e8ecf2; }
.sc-span { margin:0 4px; font-size:12px; border-radius:5px; padding:3px 8px; background:#f2f4f8; border-left:3px solid var(--c); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; cursor:pointer; }
.sc-span.done { opacity:.55; text-decoration:line-through; }
.sc-wcell { padding:8px; border-right:1px solid #f0f3f7; min-height:200px; display:flex; flex-direction:column; gap:6px; }
.sc-wcell.rest { background:#f6f7f9; }
.sc-wfoot { grid-column:1/-1; padding:8px 12px; font-size:12px; color:#7b8698; display:flex; gap:14px; flex-wrap:wrap; border-top:1px solid #e8ecf2; }
.sc-mgrid { display:grid; grid-template-columns:44px repeat(7,minmax(96px,1fr)); min-width:760px; }
.sc-mh { padding:8px; font-size:12px; color:#7b8698; text-align:center; border-bottom:1px solid #e8ecf2; }
.sc-wk { display:flex; align-items:center; justify-content:center; text-align:center; line-height:1.3; font-size:11px; color:#7b8698; border-bottom:1px solid #f0f3f7; border-right:1px solid #f0f3f7; }
.sc-wk.small { color:#d9480f; background:#fdece4; }
.sc-mc { position:relative; min-height:104px; padding:6px 6px 4px; border-bottom:1px solid #f0f3f7; border-right:1px solid #f0f3f7; display:flex; flex-direction:column; gap:3px; cursor:pointer; background:#fff; min-width:0; }
.sc-mc:hover { background:#fafbfd; }
.sc-mc.rest { background:#f6f7f9; } .sc-mc.other { opacity:.42; }
.sc-mc.picked { box-shadow:inset 0 0 0 2px #2f6bff; }
.sc-mc .n b { font-size:16px; font-variant-numeric:tabular-nums; }
.sc-mc.rest .n b { color:#98a2b3; }
.sc-mc.now .n b { background:#2f6bff; color:#fff; border-radius:6px; padding:0 5px; }
.sc-mc .lu { font-size:11px; color:#7b8698; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sc-mc .lu.fest { color:#1f9d6b; font-weight:600; }
.sc-badge { position:absolute; top:6px; right:6px; font-size:11px; font-weight:700; width:18px; height:18px; border-radius:4px; display:flex; align-items:center; justify-content:center; }
.sc-badge.off { background:#e3f5ec; color:#1f9d6b; }
.sc-badge.on { background:#fdece4; color:#d9480f; }
.sc-badge.on.sat { background:none; border:1px solid #d9480f; }
.sc-dot { font-size:11px; line-height:16px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; padding-left:6px; border-left:2px solid var(--c); color:#454f5d; }
.sc-dot.done { text-decoration:line-through; opacity:.6; }
.sc-more { font-size:11px; color:#7b8698; }
.sc-detail { margin-top:12px; padding:14px; display:flex; flex-direction:column; gap:8px; }
.sc-detail h3 { font-size:15px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.sc-detail h3 .btn { margin-left:auto; }
.sc-trow { display:flex; gap:10px; align-items:center; padding:8px 0; border-bottom:1px solid #f0f3f7; font-size:13px; }
.sc-trow span:first-child { flex:1; min-width:0; word-break:break-word; }
@media (max-width:900px){
  .sc-today { grid-template-columns:1fr; }
  .sc-kanban { grid-template-columns:repeat(5,minmax(220px,1fr)); }
}

.storage-item{display:flex;flex-direction:column;gap:5px}.storage-item .btn{font-size:11px;padding:3px 6px}.storage-tag{font-size:11px;border:1px solid #bbb;padding:2px 5px;border-radius:6px;margin-right:5px}.storage-item small{color:#667085}

/* ================= 项目协同层 v0.7.0 =================
 * 继续沿用任务工作台现有卡片、表格、日程颜色；项目层只增加组织与上下文。
 */
.btn.xs { padding:3px 7px; font-size:11px; }
.proj-tag { display:inline-flex; align-items:center; gap:3px; border-radius:5px; padding:2px 6px; background:#eef3ff; color:#2f6bff; border:1px solid #d8e3ff; font-size:11px; line-height:16px; white-space:nowrap; }
.proj-tag.linklike { cursor:pointer; font-family:inherit; }
.sc-pill.project { background:#eef3ff; color:#2f6bff; border:1px solid #d8e3ff; }

.board-workspace { display:grid; grid-template-columns:minmax(0,1.65fr) minmax(300px,.85fr); gap:14px; align-items:start; }
.board-workspace > #board { min-width:0; }
.project-side-panel { background:#fff; border:1px solid #e5e9f0; border-radius:10px; padding:12px; min-width:0; position:sticky; top:16px; }
.project-side-head { display:flex; justify-content:space-between; gap:10px; align-items:flex-start; margin-bottom:10px; }
.project-side-head > div { display:flex; flex-direction:column; gap:2px; }
#boardProjectCards { display:flex; flex-direction:column; gap:8px; }
.pj-mini { border:1px solid #e8ecf2; border-radius:8px; padding:10px; cursor:pointer; background:#fff; }
.pj-mini:hover { border-color:#b7c8ee; background:#fbfcff; }
.pj-mini-top,.pj-mini-foot { display:flex; justify-content:space-between; gap:8px; align-items:center; }
.pj-mini-top b { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pj-mini-sub,.pj-mini-foot { color:#7b8698; font-size:11px; margin-top:5px; }
.pj-mini-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:5px; margin:8px 0 6px; }
.pj-mini-metrics span { display:flex; flex-direction:column; gap:1px; padding:6px; background:#f7f9fc; border-radius:6px; color:#7b8698; font-size:10px; }
.pj-mini-metrics b { color:#1f2733; font-size:13px; }

.pj-health { display:inline-flex; align-items:center; padding:2px 8px; border-radius:10px; font-size:11px; font-weight:600; white-space:nowrap; }
.pj-health.ok { background:#e6f6ec; color:#12834a; }
.pj-health.warn { background:#fff3df; color:#b86700; }
.pj-health.danger { background:#fdecec; color:#d43f44; }
.pj-health.done { background:#eef1f5; color:#657180; }

.pj-list-head,.pj-detail-head { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; }
.pj-list-head > div:first-child,.pj-detail-head > div:first-child { min-width:0; }
.pj-project-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(290px,1fr)); gap:12px; }
.pj-project-card { background:#fff; border:1px solid #e5e9f0; border-radius:10px; padding:14px; cursor:pointer; }
.pj-project-card:hover { border-color:#9eb8f3; }
.pj-card-top { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; }
.pj-card-top h3 { font-size:16px; margin-top:3px; }
.pj-code,.pj-eyebrow { font-size:11px; color:#7b8698; letter-spacing:.02em; }
.pj-card-kpis,.pj-over-kpis,.pj-preview-kpis { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; margin:12px 0; }
.pj-card-kpis > div,.pj-over-kpis > div,.pj-preview-kpis > span { background:#f7f9fc; border:1px solid #eef1f5; border-radius:7px; padding:8px; display:flex; flex-direction:column; gap:3px; }
.pj-card-kpis span,.pj-over-kpis span,.pj-preview-kpis span { color:#7b8698; font-size:11px; }
.pj-card-kpis b,.pj-over-kpis b,.pj-preview-kpis b { color:#1f2733; font-size:14px; }
.pj-card-foot { display:flex; justify-content:space-between; color:#7b8698; font-size:12px; margin-top:8px; }
.pj-breadcrumb { color:#7b8698; font-size:12px; margin:5px 0; }
.pj-detail-head h2 { font-size:22px; }
.pj-detail-head p { color:#7b8698; margin-top:4px; font-size:13px; }
.pj-head-status { display:flex; flex-direction:column; gap:6px; align-items:flex-end; }
.pj-tabs { display:flex; gap:4px; overflow:auto; border-bottom:1px solid #dfe5ed; margin:14px 0; }
.pj-tab { border:0; background:none; color:#5b6675; padding:9px 12px; white-space:nowrap; border-bottom:2px solid transparent; }
.pj-tab:hover { color:#2f6bff; }
.pj-tab.on { color:#2f6bff; border-bottom-color:#2f6bff; font-weight:600; }

.pj-panel { background:#fff; border:1px solid #e5e9f0; border-radius:10px; padding:14px; margin-bottom:12px; min-width:0; }
.pj-panel-h { display:flex; justify-content:space-between; gap:10px; align-items:flex-start; margin-bottom:10px; }
.pj-panel-h > div { display:flex; flex-direction:column; gap:2px; }
.pj-panel-h span { color:#7b8698; font-size:12px; font-weight:normal; }
.pj-two { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.pj-work-hero { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(230px,.65fr); gap:12px; margin-bottom:12px; }
.pj-work-hero > div { background:#fff; border:1px solid #e5e9f0; border-radius:10px; padding:14px; }
.pj-role-strip { display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.pj-role-badge { font-size:11px; padding:2px 7px; border-radius:9px; background:#eef3ff; color:#2f6bff; }
.pj-action { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; padding:10px 0; border-bottom:1px solid #f0f3f7; }
.pj-action:last-child { border-bottom:0; }
.pj-action b { display:block; margin-bottom:3px; }
.pj-action p { color:#5b6675; font-size:12px; line-height:1.5; }
.pj-action small { color:#98a2b3; }
.pj-action.critical b { color:#d43f44; }
.pj-target { display:grid; grid-template-columns:minmax(120px,1fr) auto; gap:6px 10px; padding:8px 0; border-bottom:1px solid #f0f3f7; }
.pj-target .bar { grid-column:1/-1; margin:0; }
.pj-target small { color:#7b8698; }
.pj-dep { padding:9px 10px; border-left:3px solid #d3dae4; background:#f7f9fc; border-radius:0 7px 7px 0; margin-bottom:7px; }
.pj-dep b { display:block; font-size:12px; }
.pj-dep span { display:block; color:#7b8698; font-size:11px; margin-top:2px; }

.pj-timeline-scroll { overflow-x:auto; padding:6px 2px 8px; }
.pj-timeline { display:flex; min-width:1204px; align-items:stretch; position:relative; padding:10px 14px 8px; }
.pj-timeline:before { content:""; position:absolute; top:81px; left:14px; right:14px; height:2px; background:#dfe5ed; }
.pj-node { flex:1 0 168px; min-width:0; position:relative; display:flex; flex-direction:column; align-items:center; text-align:center; padding:0 8px; z-index:1; box-sizing:border-box; }
.pj-node .dot { width:14px; height:14px; flex:0 0 14px; box-sizing:border-box; border-radius:50%; border:3px solid #fff; box-shadow:0 0 0 1px #b8c1ce; background:#c8d0da; margin-bottom:14px; }
.pj-node.past .dot { background:#7b8698; }
.pj-node.current .dot { background:#2f6bff; box-shadow:0 0 0 2px #a9c4fb; }
.pj-node small,.pj-node em { font-style:normal; font-size:10px; color:#7b8698; }
.pj-node.current b { color:#2f6bff; }
.pj-node-meta { height:64px; flex:0 0 64px; display:flex; flex-direction:column; align-items:center; gap:8px; }
.pj-node .pj-node-date { white-space:nowrap; font-size:11px; line-height:18px; color:#596579; font-variant-numeric:tabular-nums; }
.pj-node-status { font-size:11px; line-height:20px; padding:0 8px; border-radius:12px; background:#f0f2f6; color:#687385; white-space:nowrap; }
.pj-node.current .pj-node-status { background:#eaf1ff; color:#2f6bff; }
.pj-node .pj-node-status.complete { background:#e9f7ef; color:#198754; }
.pj-node-event { flex:1; width:100%; padding:12px; box-sizing:border-box; background:#f8fafc; border:1px solid #e8ecf2; border-radius:8px; }
.pj-node-event b { display:block; font-size:13px; line-height:20px; }
.pj-node-event p { margin:8px 0 10px; color:#596579; font-size:12px; font-weight:400; line-height:1.7; text-align:left; overflow-wrap:anywhere; }
.pj-node-event em { display:block; font-size:11px; line-height:18px; }
.pj-node.current .pj-node-event { background:#f5f8ff; border-color:#cddcff; }

.pj-gate { border:1px solid #e8ecf2; border-left:3px solid #c7cfda; border-radius:7px; padding:10px; margin-bottom:8px; }
.pj-gate.risk { border-left-color:#e98a15; }
.pj-gate.blocked { border-left-color:#e5484d; }
.pj-gate.ok { border-left-color:#12a150; }
.pj-gate-top { display:flex; justify-content:space-between; gap:8px; align-items:flex-start; }
.pj-gate-top > div { display:flex; flex-direction:column; gap:2px; }
.pj-gate-top span { color:#7b8698; font-size:11px; }
.pj-reqs { margin-top:8px; display:flex; flex-direction:column; gap:5px; }
.pj-req { display:flex; justify-content:space-between; gap:8px; align-items:center; font-size:12px; color:#5b6675; }
.pj-req.ok { color:#12834a; }
.danger-text { color:#d43f44; }
.pj-approval { display:flex; justify-content:space-between; align-items:center; gap:12px; padding:10px 0; border-bottom:1px solid #f0f3f7; }
.pj-approval p,.pj-approval small { color:#7b8698; font-size:12px; margin-top:2px; }

.pj-ready-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:8px; }
.pj-ready { border:1px solid #e5e9f0; border-radius:8px; padding:10px; display:flex; justify-content:space-between; gap:8px; align-items:center; }
.pj-ready b,.pj-ready small { display:block; }
.pj-ready small { color:#7b8698; margin-top:2px; }
.pj-ready.ready { background:#f2fbf6; border-color:#bce7cd; }
.pj-ready.blocked { background:#fff5f5; border-color:#f3c4c6; }
.pj-task-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(270px,1fr)); gap:10px; }
.pj-queue { display:flex; flex-direction:column; gap:7px; }
.pj-queue > div { display:flex; justify-content:space-between; gap:10px; border:1px solid #e8ecf2; border-radius:7px; padding:9px 10px; }

.pj-role-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:8px; }
.pj-role-list > div { background:#f7f9fc; border-radius:7px; padding:9px; display:flex; flex-direction:column; gap:3px; }
.pj-role-list span { color:#7b8698; font-size:11px; }
.pj-note,.pj-principle { background:#f6f8fb; border:1px solid #e5e9f0; border-radius:8px; padding:9px 11px; color:#5b6675; font-size:12px; line-height:1.55; margin-top:10px; }
.pj-history { display:flex; flex-direction:column; }
.pj-history > div { display:grid; grid-template-columns:132px 90px 130px auto minmax(0,1fr); gap:7px; padding:8px 0; border-bottom:1px solid #f0f3f7; align-items:center; font-size:12px; }
.pj-history time,.pj-history small { color:#7b8698; }
.pj-history .link-btn { justify-self:start; }

.pj-task-context { margin:12px 0; border:1px solid #dbe4f3; border-radius:9px; padding:12px; background:#fbfcff; }
.pj-task-ctx-head { display:flex; align-items:center; flex-wrap:wrap; gap:7px; margin-bottom:10px; }
.pj-task-ctx-head > span { color:#7b8698; font-size:11px; }
.pj-task-context > div:not(.pj-task-ctx-head) { padding:7px 0; border-top:1px solid #eef2f7; }
.pj-task-context strong { font-size:12px; }
.pj-task-context p,.pj-task-context li { color:#5b6675; font-size:12px; line-height:1.55; margin-top:3px; }
.pj-task-context ul { padding-left:18px; }

.project-create-modal { width:min(860px,94vw); }
.project-role-help { padding:8px 10px; background:#f6f8fb; border-radius:7px; color:#5b6675; font-size:12px; margin-bottom:10px; }
.project-role-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
.pj-role-pick { border:1px solid #e5e9f0; border-radius:7px; padding:9px; display:flex; align-items:center; justify-content:space-between; gap:10px; }
.pj-role-pick > span { display:flex; flex-direction:column; }
.pj-role-pick em,.pj-role-pick small { font-style:normal; font-size:10px; color:#7b8698; }
.pj-role-pick em { color:#e5484d; }
.pj-role-pick select { min-width:160px; }
.pj-preview-timeline { display:flex; gap:6px; overflow:auto; padding-bottom:5px; }
.pj-preview-timeline > span { flex:0 0 120px; border:1px solid #e5e9f0; border-radius:7px; padding:8px; display:flex; flex-direction:column; gap:2px; }
.pj-preview-timeline small { color:#7b8698; }
.pj-role-counts { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:7px; }
.pj-role-counts > div { border:1px solid #e5e9f0; border-radius:7px; padding:8px; display:grid; grid-template-columns:1fr auto; gap:2px 8px; }
.pj-role-counts span { color:#7b8698; font-size:11px; }
.pj-role-counts em { font-style:normal; color:#2f6bff; grid-row:1/3; grid-column:2; align-self:center; }
.project-create-ready { padding:18px; background:#f6f8fb; border-radius:8px; }

.pj-cal-day .sc-dot { width:100%; text-align:left; border-top:0; border-right:0; border-bottom:0; background:none; font-family:inherit; cursor:pointer; }
.sc-dot.pj-gatedot { --c:#e98a15; color:#9a5a00; font-weight:600; }
.sc-dot.pj-d0 { --c:#2f6bff; color:#2f6bff; font-weight:700; }
.sc-dot.pj-taskdot { --c:#7c5cd6; }
.pj-launch-day { box-shadow:inset 0 0 0 2px #b7c8ee; }
.pj-calbar { margin-bottom:10px; }
.pj-agenda { margin-top:10px; border-top:1px solid #eef1f5; padding-top:10px; }
.pj-agenda-row { display:grid; grid-template-columns:92px minmax(0,1fr) auto; gap:10px; align-items:start; padding:9px 0; border-bottom:1px solid #f0f3f7; }
.pj-agenda-row time { color:#7b8698; font-size:12px; font-variant-numeric:tabular-nums; }
.pj-agenda-row b { font-size:13px; }
.pj-agenda-row small { display:block; color:#7b8698; margin-top:2px; }
.pj-agenda-row p { color:#5b6675; font-size:12px; margin-top:3px; line-height:1.5; }
.pj-agenda-row.gate b { color:#a25d00; }
.pj-agenda-row.d0 b { color:#2f6bff; }

@media (max-width:1050px) {
  .board-workspace { grid-template-columns:1fr; }
  .project-side-panel { position:static; }
  .pj-card-kpis,.pj-over-kpis { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:760px) {
  .pj-list-head,.pj-detail-head { flex-direction:column; }
  .pj-head-status { align-items:flex-start; }
  .pj-two,.pj-work-hero { grid-template-columns:1fr; }
  .project-role-grid { grid-template-columns:1fr; }
  .pj-role-pick { align-items:flex-start; flex-direction:column; }
  .pj-role-pick select { width:100%; }
  .pj-history > div { grid-template-columns:1fr; gap:2px; }
  .pj-agenda-row { grid-template-columns:76px minmax(0,1fr); }
  .pj-agenda-row .btn { grid-column:2; justify-self:start; }
}
.pj-action.red { border-left:3px solid #e5484d; padding-left:9px; }
.pj-action.orange { border-left:3px solid #e98a15; padding-left:9px; }
.pj-action.blue { border-left:3px solid #87a6ec; padding-left:9px; }

/* 项目协同：达人筛选布尔字段 */
.checkline{display:flex;align-items:center;gap:7px;min-height:34px;font-size:13px;color:var(--text,#1f2937)}
.checkline input{width:16px;height:16px;margin:0}

.pj-budget-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.pj-budget-grid>div{padding:12px;border:1px solid var(--line,#e5e7eb);border-radius:10px;background:#fff}.pj-budget-grid span{display:block;font-size:12px;color:var(--muted,#64748b);margin-bottom:4px}.pj-budget-grid b{font-size:17px}.pj-budget-grid .over{background:#fff5f5;border-color:#fecaca}.pj-budget-grid .over b{color:#dc2626}@media(max-width:900px){.pj-budget-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

.pj-issue{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid var(--line,#e5e7eb)}.pj-issue:last-child{border-bottom:0}.pj-issue>div:first-child{min-width:0;flex:1}.pj-issue p{margin:4px 0;color:var(--text,#334155)}.pj-issue small{color:var(--muted,#64748b)}.pj-issue.high{border-left:3px solid #ef4444;padding-left:10px}.pj-issue-actions{display:flex;gap:6px;flex-wrap:wrap}.btn.danger{color:#b91c1c;border-color:#fecaca;background:#fff5f5}

.pj-head-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;margin-top:6px}.pj-na{font-style:normal;font-size:11px;padding:2px 7px;border-radius:999px;background:#f1f5f9;color:#64748b}.pj-task-admin{display:flex!important;align-items:center;gap:8px;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line,#e5e7eb)}.pj-d0-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:10px 0}.pj-d0-summary span{padding:9px;border:1px solid var(--line,#e5e7eb);border-radius:8px}.pj-d0-summary b{display:block;font-size:18px}.pj-d0-row{display:flex;gap:9px;align-items:flex-start;padding:9px 4px;border-bottom:1px solid var(--line,#e5e7eb)}.pj-d0-row input{margin-top:3px}.pj-d0-row span{min-width:0}.pj-d0-row b,.pj-d0-row small{display:block}.pj-d0-row small{color:var(--muted,#64748b);margin-top:3px}@media(max-width:700px){.pj-d0-summary{grid-template-columns:1fr}}

/* ================= 项目协同层 v0.7.0 · 结构/密度统一 ================= */
/* Task 的左侧色块表达“工作流状态”，而不是只复述数据库 status。 */
.sq.flow-red,.sq.待接收.flow-red,.sq.进行中.flow-red{background:#e5484d!important}
.sq.flow-green,.sq.待接收.flow-green,.sq.进行中.flow-green{background:#22a06b!important}
.sq.flow-blue,.sq.待接收.flow-blue,.sq.进行中.flow-blue{background:#4f7ff0!important}
.sq.flow-gray,.sq.已完成.flow-gray,.sq.已取消.flow-gray{background:#a7b0bc!important}
.kcard.flow-red{border-left:3px solid #e5484d;background:#fffafa}.kcard.flow-green{border-left:3px solid #22a06b}.kcard.flow-blue{border-left:3px solid #4f7ff0}.kcard.flow-gray{border-left:3px solid #a7b0bc;opacity:.82}
.work-kind{display:inline-flex;margin-left:5px;padding:1px 5px;border-radius:5px;background:#eef7f2;color:#237a54;font-size:10px}
.proj-stage{font-size:10px;color:#5f6b7a;margin-left:4px}

/* 项目页面的内容密度：卡片不挤成表格，也不留下大块无意义空白。 */
.pj-panel{padding:16px 18px;margin-bottom:14px}.pj-panel-h{margin-bottom:12px}.pj-panel-h b{font-size:14px}.pj-panel-h span{line-height:1.45}
.pj-over-kpis{gap:10px;margin:0 0 14px}.pj-over-kpis>div{padding:11px 12px;min-height:58px;justify-content:center}.pj-over-kpis b{font-size:15px}
.pj-timeline-panel{padding-bottom:12px}.pj-launch-date{display:inline-flex!important;background:#eef3ff;color:#2f6bff!important;border:1px solid #d5e0ff;border-radius:999px;padding:5px 9px;white-space:nowrap}
.pj-work-hero>div{padding:17px 18px}.pj-work-hero h3{font-size:18px;margin:3px 0 4px}.pj-work-hero p{line-height:1.55;color:#5b6675}
.pj-action{padding:11px 2px 11px 10px}.pj-action p{margin-top:3px}.pj-role-strip{gap:8px}.pj-role-strip>span{display:inline-flex;gap:4px;align-items:baseline;background:#f7f9fc;border:1px solid #e8ecf2;padding:6px 9px;border-radius:7px;color:#687385;font-size:12px}.pj-role-strip b{font-size:15px;color:#1f2733}

/* 创建项目：按“项目定义 / 角色 / 预览 / 创建”分组，不再堆字段。 */
.project-create-modal{width:min(960px,95vw)}
.pc-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 16px}.pc-steps>span{display:flex;align-items:center;gap:8px;padding:9px 10px;border:1px solid #e3e8ef;border-radius:9px;color:#7b8698;background:#fafbfd}.pc-steps b{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:#edf0f5;font-size:11px}.pc-steps em{font-style:normal;font-size:12px}.pc-steps>span.on{border-color:#a9c4fb;background:#f5f8ff;color:#2f6bff}.pc-steps>span.on b{background:#2f6bff;color:#fff}.pc-steps>span.done b{background:#dff4e8;color:#12834a}
.form-section{border:1px solid #e5e9f0;border-radius:10px;padding:14px 15px;margin-bottom:12px;background:#fff}.form-section-h{display:flex;justify-content:space-between;gap:12px;align-items:baseline;margin-bottom:11px}.form-section-h b{font-size:14px}.form-section-h span{color:#7b8698;font-size:11px;line-height:1.45;text-align:right}.fld-row{gap:10px}.fld.wide{flex:1.7}
.project-role-help{padding:12px 14px;line-height:1.6}.project-role-grid{gap:10px}.pj-role-pick{padding:11px 12px}.pj-preview-kpis>span{padding:11px 12px}.pj-preview-timeline>span{flex-basis:142px;padding:10px}

/* 达人协同：预算/SOP/达人事实记录三层。 */
.pj-budget-card{background:#fff;border:1px solid #e5e9f0;border-radius:10px;padding:16px 18px;margin-bottom:14px}.pj-budget-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}.pj-budget-grid>div{background:#f9fafc;border-color:#e8ecf2;padding:11px 12px}.pj-budget-grid b{font-size:18px}.pj-budget-pending{border-top:1px solid #eef1f5;margin-top:12px;padding-top:10px}.pj-budget-pending>b{display:block;margin-bottom:6px}.pj-budget-pending>div{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:7px 0;border-bottom:1px dashed #eef1f5;font-size:12px}.pj-budget-pending em{font-style:normal;color:#b86700}
.pj-sop{background:#fff;border:1px solid #e5e9f0;border-radius:10px;margin-bottom:14px;overflow:hidden}.pj-sop summary{cursor:pointer;padding:13px 16px;display:flex;justify-content:space-between;gap:10px;background:#fbfcfe}.pj-sop summary span{font-size:11px;color:#7b8698}.pj-sop-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;border-top:1px solid #eef1f5}.pj-sop-grid>div{padding:14px 16px;border-right:1px solid #eef1f5;border-bottom:1px solid #eef1f5}.pj-sop-grid h4{margin:0 0 7px;font-size:13px}.pj-sop-grid ul,.pj-sop-grid ol{margin:0;padding-left:18px}.pj-sop-grid li,.pj-sop-grid p{font-size:12px;color:#5b6675;line-height:1.55;margin:3px 0}.pj-cta{background:#f6f8fb;border-radius:7px;padding:8px!important}
.pj-creator-toolbar{display:flex;gap:10px;flex-wrap:wrap;padding:8px 0 12px}.pj-creator-toolbar span{font-size:12px;color:#687385;background:#f7f9fc;border:1px solid #e8ecf2;border-radius:7px;padding:6px 9px}.pj-creator-toolbar b{color:#1f2733}
.pj-creator-list{display:flex;flex-direction:column;gap:8px}.pj-creator-row{border:1px solid #e5e9f0;border-radius:9px;padding:11px 12px;background:#fff}.pj-creator-main{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.pj-creator-main>div{display:flex;flex-direction:column;gap:2px}.pj-creator-main>div span{font-size:11px;color:#7b8698}.pj-cstatus{display:inline-flex;padding:3px 7px;border-radius:999px;background:#eef3ff;color:#2f6bff;font-size:11px}.pj-creator-facts{display:grid;grid-template-columns:minmax(120px,.7fr) minmax(130px,.8fr) minmax(220px,1.6fr);gap:10px;margin:8px 0;color:#5b6675;font-size:12px}.pj-creator-actions{display:flex;gap:6px;flex-wrap:wrap}
.creator-modal{width:min(980px,95vw)}.creator-form{padding-top:10px}.creator-form-head{position:sticky;top:0;z-index:2;background:#fff;border-bottom:1px solid #edf0f4;margin:-2px 0 12px;padding:8px 0;display:flex;justify-content:space-between;gap:10px}.creator-form-head>div{display:flex;flex-direction:column}.creator-form-head span{font-size:11px;color:#7b8698}.check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px}

/* 专业协同：H05 专业事实源，不复制成第二份任务。 */
.pj-module-intro{background:#f7f9fc;border:1px solid #e5e9f0;border-radius:10px;padding:14px 16px;margin-bottom:12px}.pj-module-intro b{font-size:15px}.pj-module-intro p{margin-top:4px;color:#5b6675;line-height:1.55;font-size:12px}
.pj-module-card{background:#fff;border:1px solid #e5e9f0;border-radius:10px;margin-bottom:10px;overflow:hidden}.pj-module-card>summary{cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 15px;background:#fbfcfe}.pj-module-card>summary span{display:flex;flex-direction:column;gap:2px}.pj-module-card>summary small{color:#7b8698;font-size:11px}.pj-module-card>summary em{font-style:normal;color:#7b8698;font-size:11px}.pj-module-row{display:grid;grid-template-columns:70px minmax(0,1fr) 120px;gap:12px;align-items:center;padding:10px 15px;border-top:1px solid #eef1f5}.pj-module-id{font-size:11px;color:#7b8698;font-weight:600}.pj-module-main b{font-size:13px}.pj-module-main p{margin:3px 0;color:#5b6675;font-size:12px;line-height:1.45}.pj-module-main small{color:#98a2b3}.pj-module-state{display:flex;flex-direction:column;align-items:flex-end;gap:5px}.pj-module-state span{font-size:11px;color:#5b6675}

/* 项目正式日程：跨日持续任务放在月历上方，不在每天重复塞卡片。 */
.pj-running{border:1px solid #e5e9f0;background:#fff;border-radius:10px;padding:12px 14px;margin-bottom:10px}.pj-running-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.pj-running-item{border:1px solid #e8ecf2;background:#fbfcfe;border-radius:8px;padding:8px 10px;text-align:left;display:flex;justify-content:space-between;gap:12px;align-items:center;font-family:inherit;cursor:pointer}.pj-running-item:hover{border-color:#b7c8ee;background:#f7f9ff}.pj-running-item>span{display:flex;flex-direction:column;min-width:0}.pj-running-item b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pj-running-item small{font-size:10px;color:#7b8698}.pj-running-item em{font-style:normal;color:#4f7ff0;font-size:11px;white-space:nowrap}.sc-dot.pj-startdot{--c:#4f7ff0;color:#3d69d6}.pj-agenda-row.launch b{color:#2f6bff}

@media(max-width:900px){.pj-sop-grid,.pj-running-grid{grid-template-columns:1fr}.pj-creator-facts{grid-template-columns:1fr}.check-grid{grid-template-columns:1fr}.pc-steps{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.pj-module-row{grid-template-columns:52px minmax(0,1fr)}.pj-module-state{grid-column:2;align-items:flex-start;flex-direction:row}.pj-budget-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-section-h{flex-direction:column;align-items:flex-start}.form-section-h span{text-align:left}}

/* v0.7.0 二期视觉收口：减少过紧/过松区域，强化“现在做什么 → 事实源 → 下一步”。 */
.creator-guidance{margin:0 0 12px;padding:10px 12px;border:1px solid #dce6fb;background:#f6f9ff;border-radius:9px;color:#48627f;font-size:12px;line-height:1.55}.creator-guidance:empty{display:none}.creator-guidance b{color:#234f9d}.creator-guidance ul{margin:5px 0 0;padding-left:18px}
.pj-sop-wide{grid-column:1/-1}.pj-mail-templates{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:8px}.pj-mail-templates details{border:1px solid #e7ebf1;border-radius:8px;background:#fbfcfe;overflow:hidden}.pj-mail-templates summary{padding:8px 10px;background:transparent;border:0;display:flex;flex-direction:column;gap:2px}.pj-mail-templates summary b{font-size:12px}.pj-mail-templates summary span{font-size:10px;color:#7b8698}.pj-mail-template{white-space:pre-wrap;word-break:break-word;margin:0;padding:11px 12px;background:#f7f9fc;border:1px solid #e8ecf2;border-radius:7px;font:11px/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#344054}
.pj-mini-details{margin-top:7px}.pj-mini-details summary{padding:5px 0!important;background:transparent!important;border:0!important;font-size:11px;color:#5f6b7a}
.pj-module-card>div{max-height:520px;overflow:auto}.pj-module-row:nth-child(even){background:#fcfdff}.pj-module-row:hover{background:#f8faff}.pj-module-state span{max-width:115px;text-align:right;line-height:1.35}.pj-module-card[open]>summary{border-bottom:1px solid #eef1f5;background:#f8faff}
.pj-task-grid{gap:10px}.pj-task-grid .kcard{min-height:126px}.pj-task-context{margin-top:12px}.pj-task-context>div{padding:10px 0}.pj-task-context>div+div{border-top:1px solid #eef1f5}.pj-task-context strong{display:block;margin-bottom:4px;color:#344054}.pj-task-context p,.pj-task-context li{line-height:1.55}
.pj-agenda{margin-top:12px}.pj-agenda-row{padding:10px 12px}.pj-agenda-row+.pj-agenda-row{border-top:1px solid #eef1f5}.sc-dot.official{font-weight:600}.sc-dot.official:before{box-shadow:0 0 0 2px #eef3ff}
.pj-running-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.pj-running-item{min-height:58px;padding:9px 11px}.pj-running-item small{line-height:1.35}.pj-running-item em{font-weight:600}
.pj-creator-row{padding:13px 14px}.pj-creator-main b{font-size:14px}.pj-creator-facts{margin:10px 0 9px}.pj-creator-actions{padding-top:1px}
.project-create-modal .modal-b{padding:16px 18px}.project-create-modal .modal-f{padding:12px 18px}.project-create-modal .fld{margin-bottom:8px}.project-create-modal input,.project-create-modal select{min-height:38px}.pj-role-pick select{min-height:36px}.pj-preview-timeline{gap:8px;align-items:stretch}.pj-preview-timeline>span{min-height:64px;display:flex;flex-direction:column;justify-content:center}.pj-preview-timeline small{margin-top:3px;color:#7b8698}
#projectCenter .page-h{margin-bottom:14px}.pj-project-card{padding:15px 16px}.pj-project-card h3{margin-bottom:5px}.pj-project-card .meta{line-height:1.5}
@media(max-width:1100px){.pj-mail-templates,.pj-running-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.pj-mail-templates,.pj-running-grid{grid-template-columns:1fr}.pj-module-card>div{max-height:none}.pj-creator-row{padding:11px}.project-create-modal .modal-b{padding:13px}}


/* v0.7.2 · 业务型项目预设编辑器 */
.preset-manager-modal{width:min(1180px,calc(100vw - 48px));max-width:none;height:min(860px,calc(100vh - 56px));max-height:calc(100vh - 56px);overflow:hidden;display:grid;grid-template-rows:auto minmax(0,1fr) auto}
.preset-manager-shell{min-height:0;display:grid;grid-template-columns:220px minmax(0,1fr);overflow:hidden}
.preset-manager-side{padding:18px 14px;border-right:1px solid var(--line);background:#f8fafc;overflow-y:auto;overflow-x:hidden}.preset-manager-side .fld{margin-bottom:10px}.preset-manager-side .full{width:100%}.preset-edit-note{font-size:12px;line-height:1.55;color:var(--muted);padding:10px 11px;border-radius:9px;background:#fff;border:1px solid var(--line);margin:10px 0 14px}
.preset-tabs{display:grid;gap:5px}.preset-tabs button{border:0;background:transparent;text-align:left;padding:9px 11px;border-radius:8px;color:#4b5563;cursor:pointer;font-size:13px}.preset-tabs button:hover{background:#eef3ff}.preset-tabs button.on{background:#eaf0ff;color:#245ef3;font-weight:650}
.preset-manager-body{min-width:0;padding:18px 22px;overflow-y:auto!important;overflow-x:hidden!important;background:#fff}.preset-manager-footer{background:#fff;position:relative;z-index:2}.preset-pane{display:none;min-width:0}.preset-pane.on{display:block}.preset-pane-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:16px}.preset-pane-head h3{margin:0 0 4px;font-size:17px}.preset-pane-head p{margin:0;color:var(--muted);font-size:12px;line-height:1.55}.preset-version-hint{font-size:11px;color:#6b7280;white-space:nowrap;padding-top:3px}.form-section.flat{padding:0;border:0;background:transparent}.preset-narrow{max-width:320px}.preset-editor-legend{display:grid;grid-template-columns:minmax(130px,.9fr) minmax(240px,1.8fr) 120px;gap:12px;padding:0 12px 7px;color:var(--muted);font-size:11px}
.preset-role-editor{display:grid;gap:8px}.preset-role-row{display:grid;grid-template-columns:92px minmax(150px,.9fr) minmax(260px,1.7fr) 86px;gap:10px;align-items:end;padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:#fff}.preset-role-row .fld{margin:0}.preset-role-row .fld>span{display:block;font-size:11px;color:var(--muted);margin-bottom:4px}.preset-tech-id{align-self:center;font:11px/1.2 ui-monospace,SFMono-Regular,Menlo,monospace;color:#8a94a5;background:#f4f6f9;border-radius:6px;padding:6px 7px;overflow:hidden;text-overflow:ellipsis}.preset-required{display:flex;align-items:center;gap:6px;min-height:38px;font-size:12px;color:#475569}
.preset-stage-editor,.preset-gate-editor{display:grid;gap:10px}.preset-stage-card,.preset-gate-card,.preset-task-card{border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}.preset-stage-card>summary,.preset-gate-card>summary,.preset-task-card>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:11px 13px;background:#fbfcfe}.preset-stage-card>summary::-webkit-details-marker,.preset-gate-card>summary::-webkit-details-marker,.preset-task-card>summary::-webkit-details-marker{display:none}.preset-stage-card>summary>div,.preset-gate-card>summary>div{display:flex;flex-direction:column;gap:3px;min-width:0}.preset-stage-card summary span,.preset-gate-card summary span,.preset-task-card summary>span{font-size:11px;color:var(--muted)}.preset-stage-card summary code,.preset-gate-card summary code,.preset-task-title code{font-size:10px;color:#8a94a5}.preset-stage-fields,.preset-gate-fields,.preset-task-fields{padding:14px;border-top:1px solid var(--line)}
.preset-check-grid{display:flex;flex-wrap:wrap;gap:7px 14px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fafbfc}.preset-check-grid .checkline{margin:0;font-size:12px}.preset-task-toolbar{display:grid;grid-template-columns:minmax(220px,1fr) 180px 150px;gap:8px;margin-bottom:12px;position:sticky;top:-18px;z-index:2;background:#fff;padding:0 0 10px}.preset-task-toolbar input,.preset-task-toolbar select{min-width:0}.preset-task-editor{display:grid;gap:8px}.preset-task-card>summary{padding:10px 12px}.preset-task-title{display:flex;align-items:center;gap:8px;min-width:0}.preset-task-title b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preset-task-title .pill{font-size:10px;flex:none}.preset-task-fields .fld{margin-bottom:10px}
.preset-target-editor{display:grid;gap:8px}.preset-target-row{display:grid;grid-template-columns:80px minmax(160px,1.2fr) 90px 90px minmax(135px,1fr) minmax(130px,.9fr) 105px;gap:8px;align-items:end;padding:10px 11px;border:1px solid var(--line);border-radius:9px}.preset-target-row .fld{margin:0}.preset-target-row .fld>span{display:block;font-size:10px;color:var(--muted);margin-bottom:4px}.preset-target-row code{font-size:10px;color:#8a94a5;align-self:center}.preset-gate-critical{align-self:center;margin-top:17px}.preset-gate-reqs{margin-top:8px}.preset-subhead{font-size:11px;color:var(--muted);margin-bottom:6px}.preset-gate-req{display:grid;grid-template-columns:75px minmax(190px,1.2fr) minmax(170px,1fr) 145px 88px;gap:8px;align-items:center;padding:6px 0;border-top:1px dashed #e7eaf0}.preset-gate-req:first-of-type{border-top:0}.preset-gate-req code{font-size:10px;color:#8a94a5}.preset-gate-req span{font-size:10px;color:#8a94a5}.preset-manager-modal input,.preset-manager-modal select,.preset-manager-modal textarea{min-width:0;max-width:100%}
@media(max-width:980px){.preset-manager-modal{width:calc(100vw - 24px);height:calc(100vh - 28px);max-height:calc(100vh - 28px)}.preset-manager-shell{grid-template-columns:180px minmax(0,1fr)}.preset-role-row{grid-template-columns:80px 1fr}.preset-role-row .fld:nth-of-type(2){grid-column:1/-1}.preset-editor-legend{display:none}.preset-target-row{grid-template-columns:70px repeat(3,minmax(110px,1fr))}.preset-task-toolbar{grid-template-columns:1fr 150px 130px}}
@media(max-width:700px){.mask{padding:10px}.preset-manager-modal{width:100%;height:calc(100vh - 20px);max-height:calc(100vh - 20px)}.preset-manager-shell{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr)}.preset-manager-side{border-right:0;border-bottom:1px solid var(--line);padding:10px 12px}.preset-manager-side>.fld,.preset-manager-side>.full,.preset-edit-note{display:none}.preset-tabs{display:flex;gap:6px;overflow-x:auto}.preset-tabs button{white-space:nowrap}.preset-manager-body{padding:14px}.preset-role-row,.preset-target-row,.preset-gate-req,.preset-task-toolbar{grid-template-columns:1fr}.preset-role-row .fld:nth-of-type(2){grid-column:auto}.preset-stage-fields .fld-row,.preset-task-fields .fld-row{display:grid;grid-template-columns:1fr}.preset-manager-footer{padding:10px 12px}.preset-manager-footer .err{max-width:48%;font-size:11px}}

/* v0.7.3 · 我的任务 ↔ 我的日程正式日期同步 */
.sc-dot.running{--c:#22a06b;color:#267a57;background:#f2fbf6;border-radius:3px;padding-right:3px}.sc-dot.plan{--c:#7c5cd6;color:#6649b5}.sc-dot.official{font-weight:600}

/* v0.7.4 · 达人协同工具箱：规范模块化、默认收起，达人记录优先 */
.pj-kol-toolkit{margin-top:14px}
.pj-kol-count{font-size:11px;color:#667085;background:#f5f7fa;border:1px solid #e6eaf0;border-radius:999px;padding:4px 8px;white-space:nowrap}
.pj-kol-modules{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:10px}
.pj-kol-module{min-width:0;border:1px solid #e3e8ef;border-radius:10px;background:#fff;overflow:hidden}
.pj-kol-module>summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:64px;padding:12px 14px;background:#fbfcfe}
.pj-kol-module>summary::-webkit-details-marker{display:none}
.pj-kol-module>summary>div{min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:8px;row-gap:3px;align-items:center}
.pj-kol-module>summary b{font-size:13px;color:#1f2733;min-width:0}
.pj-kol-module>summary span:not(.pj-kol-kind){grid-column:1/-1;color:#7b8698;font-size:11px;line-height:1.4}
.pj-kol-module>summary em{font-style:normal;font-size:11px;color:#7b8698;white-space:nowrap}
.pj-kol-module[open]{grid-column:1/-1;border-color:#d8e2f3}
.pj-kol-module[open]>summary{background:#f7f9fd;border-bottom:1px solid #e6eaf0}
.pj-kol-module[open]>summary em{color:#2f6bff}
.pj-kol-kind{display:inline-flex;width:max-content;padding:2px 6px;border-radius:999px;background:#eef3ff;color:#2f6bff;font-size:10px;line-height:1.4}
.pj-kol-body{padding:14px 16px 16px}
.pj-kol-cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.pj-kol-cols>div{min-width:0}
.pj-kol-cols h4,.pj-kol-body h4{margin:0 0 7px;font-size:12px;color:#344054}
.pj-kol-cols h4:not(:first-child),.pj-kol-body h4:not(:first-child){margin-top:13px}
.pj-kol-cols ul,.pj-kol-cols ol,.pj-kol-body ul,.pj-kol-body ol{margin:0;padding-left:18px}
.pj-kol-cols li,.pj-kol-body li,.pj-kol-cols p,.pj-kol-body p{font-size:12px;color:#5b6675;line-height:1.58;margin:3px 0}
.pj-kol-callout{margin-top:12px;padding:11px 12px;border:1px solid #e7ebf1;border-radius:8px;background:#f8fafc}
.pj-kol-callout>b{display:block;margin-bottom:5px;font-size:12px;color:#344054}
.pj-kol-spaced{margin-top:12px}
.pj-kol-toolkit .pj-mail-templates{grid-template-columns:repeat(3,minmax(0,1fr))}
.pj-kol-toolkit .pj-mail-templates details{background:#fff}
.pj-kol-toolkit .pj-mail-template{max-height:320px;overflow:auto}
@media(max-width:1000px){.pj-kol-modules{grid-template-columns:1fr}.pj-kol-module[open]{grid-column:auto}.pj-kol-cols{grid-template-columns:1fr}.pj-kol-toolkit .pj-mail-templates{grid-template-columns:1fr}}
/* v0.7.5 · 英文可见文案中文注释；邮件模板保留英文原文并单独显示中文解释 */
.pj-mail-lang-label{margin:9px 0 5px;font-size:10px;font-weight:700;color:#667085;letter-spacing:.02em}.pj-mail-lang-label.zh{color:#475467}
.pj-mail-translation{white-space:pre-wrap;word-break:break-word;margin:0;padding:11px 12px;background:#fffdf5;border:1px solid #efe4bf;border-radius:7px;font:12px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif;color:#4a5568}
.pj-zh-note{margin-top:7px!important;padding-top:7px;border-top:1px dashed #d9dee7;color:#586474!important}

/* v0.7.7 · 达人生命周期：建档一次、按阶段渐进补充 */
.creator-life-modal{width:min(1180px,96vw);height:min(860px,94vh);max-height:94vh;display:flex;flex-direction:column;overflow:hidden}
.creator-life-shell{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:0;flex:1;overflow:hidden}
.creator-life-aside{border-right:1px solid #e6eaf0;background:#f8fafc;padding:14px 10px 16px;overflow-y:auto;min-width:0}
.creator-life-aside-head{padding:4px 8px 10px;display:flex;flex-direction:column;gap:3px}.creator-life-aside-head b{font-size:13px}.creator-life-aside-head span{font-size:11px;color:#7b8698;line-height:1.45}
.creator-life-rail{display:flex;flex-direction:column;gap:3px}.creator-life-phase{margin:10px 8px 4px;padding-top:8px;border-top:1px solid #e5eaf1;color:#8a94a6;font-size:10px;font-weight:700;letter-spacing:.04em}.creator-life-phase:first-child{margin-top:0;border-top:0;padding-top:2px}.creator-life-step{border:0;background:transparent;text-align:left;display:grid;grid-template-columns:24px minmax(0,1fr);gap:8px;align-items:center;padding:7px 8px;border-radius:8px;color:#667085;cursor:pointer;font:inherit}.creator-life-step span{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#e9edf3;color:#667085;font-size:10px}.creator-life-step b{font-size:12px;font-weight:500;line-height:1.25}.creator-life-step.done span{background:#e8f7ef;color:#15803d}.creator-life-step.current{background:#eef4ff;color:#245fd8}.creator-life-step.current span{background:#2f6bff;color:#fff}.creator-life-step.view{box-shadow:inset 0 0 0 1px #9dbbf9}.creator-life-step.future{opacity:.72}.creator-life-step:hover{background:#f0f4f9}
.creator-life-main{min-width:0;overflow-y:auto!important;overflow-x:hidden!important;padding:14px 18px 18px}.creator-life-main .creator-form-head{top:-14px;margin:-2px -2px 12px;padding:10px 2px 11px}.creator-life-controls{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap}.creator-life-controls label{display:flex;flex-direction:column;gap:4px;font-size:10px;color:#7b8698}.creator-life-controls select{min-width:150px;padding:7px 9px;border:1px solid #d7dde6;border-radius:7px;background:#fff;color:#273142}
.creator-life-main [data-life-panel]{margin-bottom:12px}.creator-life-main .fld-row{display:flex;flex-wrap:wrap}.creator-life-main .fld{min-width:150px;flex:1}.creator-life-main .fld.wide{flex:2 1 300px}.creator-life-main textarea{resize:vertical}
.pj-creator-table-wrap{overflow-x:auto;border:1px solid #e5e9f0;border-radius:9px;background:#fff}.pj-creator-table{width:100%;border-collapse:collapse;min-width:980px}.pj-creator-table th,.pj-creator-table td{padding:10px 11px;border-bottom:1px solid #eef1f5;text-align:left;vertical-align:middle;font-size:12px}.pj-creator-table th{background:#f8fafc;color:#667085;font-weight:600;white-space:nowrap}.pj-creator-table tbody tr:last-child td{border-bottom:0}.pj-creator-table td:first-child b{display:block;color:#1f2733}.pj-creator-table td:first-child small,.pj-creator-table td:nth-child(5) small{display:block;color:#98a2b3;margin-top:2px;max-width:240px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pj-creator-table td:last-child{white-space:nowrap}.pj-creator-table .btn+.btn{margin-left:5px}
@media(max-width:900px){.creator-life-shell{grid-template-columns:1fr}.creator-life-aside{border-right:0;border-bottom:1px solid #e6eaf0;max-height:180px}.creator-life-rail{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.creator-life-step b{font-size:11px}.creator-life-modal{height:95vh}}
@media(max-width:650px){.creator-life-rail{grid-template-columns:repeat(2,minmax(0,1fr))}.creator-life-controls{width:100%}.creator-life-controls label{flex:1}.creator-life-controls select{min-width:0;width:100%}}

/* 品牌合作只读嵌入：预算留在项目，合作事实由品牌模块维护。 */
.pj-brand-frame{display:block;width:100%;height:900px;min-height:640px;border:0;background:#f3f4f2;border-radius:4px}
.pj-brand-workspace{padding:16px}.pj-brand-warning{border-left:3px solid #a36825;margin-bottom:12px;color:#634820;background:#fff9ec}
.pj-legacy-readonly summary{cursor:pointer;font-weight:600}.pj-legacy-readonly p{font-size:13px;color:#52605a;margin:12px 0}
.preset-followup-days{margin:18px 0}.preset-creator-row{display:grid;grid-template-columns:24px minmax(120px,1fr) minmax(200px,3fr);gap:12px;align-items:center;border-bottom:1px solid #dde3dd;padding:12px 0}
.preset-creator-row>span{font-size:12px;color:#5b6a60}.preset-creator-row .fld{margin:0}
@media(max-width:700px){.preset-creator-row{grid-template-columns:20px 1fr}.preset-creator-row .fld:last-child{grid-column:2}.pj-brand-workspace{padding:8px}}

/* v0.7.9：项目节点由任务产出自动闭环；任务完成改为提交产出 */
.pj-gate-task{margin-top:9px;padding:9px 10px;border:1px solid #dce5f2;border-radius:8px;background:#f8fbff;display:flex;align-items:center;justify-content:space-between;gap:12px}
.pj-gate-task.ok{background:#f3fbf6;border-color:#cfe8d8}.pj-gate-task>div{display:flex;flex-direction:column;gap:3px;min-width:0}.pj-gate-task small{color:#7b8698}.pj-gate-task b{font-size:12px}.pj-gate-task span{font-size:11px;color:#6d7889}
.pj-req>div{display:flex;flex:1;min-width:0;flex-direction:column;gap:4px}.pj-req>b{font-size:11px;white-space:nowrap}.pj-task-source{appearance:none;border:0;background:none;padding:0;text-align:left;font:inherit;font-size:11px;color:#627086;cursor:pointer;white-space:normal}.pj-task-source:hover{color:#246bfe;text-decoration:underline}.pj-task-source.ok{color:#12834a}.pj-system-check{color:#7b8698}.ok-text{display:block;color:#12834a;margin-top:8px}
.task-output-expect{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}.task-output-expect>div{border:1px solid #dfe6ef;border-radius:9px;padding:11px 12px;background:#f8fafc;display:flex;flex-direction:column;gap:4px}.task-output-expect span{font-size:11px;color:#7b8698}.task-output-expect b{font-size:13px;line-height:1.55}.task-output-view{border:1px solid #cfe8d8;background:#f5fbf7;border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:7px}.task-output-view>b{font-size:13px;white-space:pre-wrap}.task-output-view small{color:#6d7889}.task-deliverable{background:#f8fafc;border:1px solid #e3e8ef;border-radius:7px;padding:9px 10px}.task-output-modal .modal-b{max-height:min(68vh,680px);overflow-y:auto}.task-output-modal .modal-f{position:sticky;bottom:0;background:#fff}
@media(max-width:760px){.task-output-expect{grid-template-columns:1fr}.pj-gate-task{align-items:flex-start;flex-direction:column}}

/* 《工作台界面规范》：按钮必须放在按钮组里，不能贴在一起 */
.pj-list-actions, .pj-detail-actions { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }

/* ===== 项目中心 2.0（0.12.1） ===== */
.pj2-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;background:#fff;border:1px solid #e5e9f0;border-radius:12px;padding:16px 18px;margin-bottom:4px}
.pj2-head-main{min-width:0;display:flex;flex-direction:column;gap:4px}
.pj2-back{align-self:flex-start;margin-bottom:6px}
.pj2-code{font-size:12px;color:#7b8698}
.pj2-status{font-weight:600}.pj2-status.on{color:#12834a}.pj2-status.off{color:#657180}
.pj2-head h2{font-size:20px;line-height:1.35;word-break:break-word}
.pj2-facts{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:13px;color:#7b8698;align-items:center}
.pj2-fact b{color:#1f2733;font-weight:600}
.pj2-product{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap}
.pj2-head-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}
.pj2-head-btns{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.pj2-ended{background:#f1f3f6;border:1px solid #e1e5eb;color:#4b5563;border-radius:8px;padding:9px 12px;margin:10px 0 0;font-size:13px}
.pj2-alert{display:flex;justify-content:space-between;gap:12px;align-items:center;background:#fff8ec;border:1px solid #f6d9a8;border-radius:10px;padding:12px 14px;margin-bottom:14px}
.pj2-alert>div{display:flex;flex-direction:column;gap:3px}.pj2-alert span{font-size:13px;color:#7a5a1f}
.pj2-kpis small{color:#98a2b3;font-size:11px}
.pj2-rows{display:flex;flex-direction:column}
.pj2-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:8px 6px;border-bottom:1px solid #f0f2f6;cursor:pointer;color:inherit;text-decoration:none;font-size:13px}
.pj2-row:last-child{border-bottom:0}.pj2-row:hover{background:#f7f9fc}
.pj2-row-t{min-width:0;overflow:hidden;text-overflow:ellipsis;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.pj2-row-who{color:#5b6675;font-size:12px;white-space:nowrap;max-width:140px;overflow:hidden;text-overflow:ellipsis}
.pj2-row-due{color:#5b6675;font-size:12px;white-space:nowrap}.pj2-row-due.over{color:#d43f44;font-weight:600}
.pj2-task{grid-template-columns:auto minmax(0,1fr) auto auto}.pj2-task.done{opacity:.6}
.pj2-st{font-size:11px;padding:2px 7px;border-radius:999px;white-space:nowrap}
.pj2-tag{font-style:normal;font-size:11px;padding:1px 7px;border-radius:999px;background:#eef1f5;color:#5b6675;white-space:nowrap;font-weight:normal}
.pj2-tag.warn{background:#fff3df;color:#b86700}.pj2-tag.on{background:#eaf1ff;color:#2f6bff}
.work-kind.pending{background:#fff3df;color:#b86700}
.pj2-gate-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px}
.pj2-gate-chip{text-align:left;border:1px solid #e1e6ee;background:#f7f9fc;border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:2px}
.pj2-gate-chip b{font-size:12px;line-height:1.35}.pj2-gate-chip small{font-size:11px;color:#7b8698}
.pj2-gate-chip.ok{background:#eefaf2;border-color:#bfe6cc}.pj2-gate-chip.bad{background:#fdf0f0;border-color:#f3c2c4}
.pj2-gate-chip.warn{background:#fff8ec;border-color:#f6d9a8}.pj2-gate-chip.idle,.pj2-gate-chip.skip{opacity:.7}
.pj2-gate-chip.on{outline:2px solid #2f6bff;outline-offset:1px}
.pj2-gate-detail{margin-top:12px}
.pj2-more{margin-bottom:14px}.pj2-more>summary{cursor:pointer;padding:10px 4px;color:#2f6bff;font-size:13px}
.pj2-toolbar{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.pj2-seg{margin-left:auto;display:inline-flex;border:1px solid #d3dae4;border-radius:7px;overflow:hidden}
.pj2-seg button{border:0;background:#fff;padding:6px 12px;font-size:13px;color:#5b6675}.pj2-seg button.on{background:#2f6bff;color:#fff}
.pj2-stage{background:#fff;border:1px solid #e5e9f0;border-radius:10px;margin-bottom:10px;padding:0 14px}
.pj2-stage.current{border-color:#9db8ff}
.pj2-stage>summary{display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap;padding:12px 0;cursor:pointer;list-style:none}
.pj2-stage>summary::-webkit-details-marker{display:none}
.pj2-stage>summary::before{content:'▸';color:#98a2b3;margin-right:-4px}.pj2-stage[open]>summary::before{content:'▾'}
.pj2-stage-name{display:flex;gap:8px;align-items:center;flex:1;min-width:0}
.pj2-stage-meta{color:#7b8698;font-size:12px}
.pj2-stage[open]{padding-bottom:12px}
.pj2-stage-note{background:#f7f9fc;border-radius:8px;padding:10px 12px;font-size:13px;color:#4b5563;line-height:1.6}
.pj2-stage-btns{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.pj2-stage-gates{margin-top:12px}.pj2-sub{font-size:12px;color:#7b8698;margin:4px 0 8px;font-weight:600}
.pj2-set{border-bottom:1px solid #eef1f5;padding:12px 0}.pj2-set:last-child{border-bottom:0}
.pj2-set-h{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px}
.pj2-set p{font-size:13px;color:#5b6675;line-height:1.6}.pj2-warn-text{color:#b86700!important}
.pj2-history .pj-panel{border:0;padding:0;margin:0}
.pj2-end-when{border-radius:8px;padding:9px 12px;font-size:13px;margin-bottom:12px}
.pj2-end-when.ok{background:#eefaf2;color:#12834a}.pj2-end-when.bad{background:#fdf0f0;color:#d43f44}
.pj2-checks{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}
.pj2-check{display:flex;gap:10px;align-items:flex-start;border:1px solid #e5e9f0;border-radius:8px;padding:9px 12px;cursor:pointer}
.pj2-check span{display:flex;flex-direction:column;gap:2px}.pj2-check small{font-size:12px;color:#7b8698}
.pj2-check.ok{border-color:#bfe6cc;background:#f5fcf7}.pj2-check.bad{border-color:#f3c2c4;background:#fdf6f6}.pj2-check.warn{border-color:#f6d9a8;background:#fffbf3}
.pj2-check-ico{width:16px;text-align:center;font-weight:700}
.pj2-end-open{font-size:13px;margin-bottom:10px}.pj2-anyway{margin-bottom:10px}
.pj2-prev-stages{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.pj2-prev-stage{display:flex;gap:8px;align-items:center;flex-wrap:wrap;border:1px solid #eef1f5;border-radius:8px;padding:8px 10px}
.pj2-prev-stage small{color:#7b8698;margin-left:auto}
.pj-node.pj2-node-off{opacity:.55}
.pt-end-list{display:flex;flex-direction:column;gap:8px;margin:8px 0}
.pt-end-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.pt-end-row input{flex:2 1 220px;min-width:0}.pt-end-row select{flex:1 1 150px;min-width:0}.pt-end-row select[data-pt-end-level]{flex:0 0 90px}.pt-end-row .btn{flex:0 0 auto}
@media(max-width:760px){
  .pj2-head{flex-direction:column;padding:14px}
  .pj2-head-side{align-items:flex-start;width:100%}.pj2-head-btns{justify-content:flex-start}
  .pj2-alert{flex-direction:column;align-items:flex-start}
  .pj2-row{grid-template-columns:minmax(0,1fr) auto}.pj2-row-who{display:none}
  .pj2-task{grid-template-columns:auto minmax(0,1fr) auto}
  .pj2-seg{margin-left:0}
  .pj2-prev-stage small{margin-left:0;width:100%}
}
.pj2-product>[data-product-pick],.pj2-product>.product-pick,.pj2-product>div{display:inline-flex!important;width:auto!important;margin:0!important}
.pj2-stage-name b{white-space:nowrap}
@media(max-width:760px){.pj2-stage-name{flex:1 1 100%}.pj2-stage>summary::before{display:none}}

/* 手机下四个操作分两行，避免中文按钮被压成竖排。 */
@media (max-width: 480px) {
  #taskModal .modal-f { flex-wrap: wrap; gap: 8px; }
  #taskModal .modal-f button { flex: 1 1 calc(50% - 8px); white-space: nowrap; min-width: 90px; }
}

/* 所属部门多选：沿用表单控件尺寸，窄屏菜单随弹窗宽度收缩。 */
#taskDepts {position:relative;margin:0 0 16px;min-width:0;font-size:13px;}
#taskDepts .task-dept-label {display:block;margin-bottom:7px;font-weight:500;color:#344054;}
#taskDepts summary {display:flex;align-items:center;justify-content:space-between;gap:12px;
  list-style:none;cursor:pointer;border:1px solid #dce1e8;border-radius:8px;background:#fff;padding:10px 12px;}
#taskDepts summary::-webkit-details-marker {display:none;}
#taskDepts .task-dept-summary {overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#475467;}
#taskDepts[open] summary {border-color:#3266ef;box-shadow:0 0 0 3px #3266ef12;}
#taskDepts .task-dept-menu {margin-top:6px;border:1px solid #e4e8ef;border-radius:8px;padding:6px;
  background:#fff;box-shadow:0 8px 24px #20293812;max-height:220px;overflow:auto;}
#taskDepts .task-dept-menu label {display:flex!important;align-items:center;gap:10px;padding:9px 10px;
  border-radius:6px;cursor:pointer;color:#344054;}
#taskDepts .task-dept-menu label:hover {background:#f5f7fb;}
#taskDepts .task-dept-menu input {width:16px;height:16px;margin:0;accent-color:#3266ef;flex:none;}

.task-dept-field-label {margin:0 0 7px;font-size:13px;font-weight:500;color:#344054;}
