/* ===== 制度全生命周期管理系统 — 页面扩展样式（在 common.css 之后引入）===== */
.card-title-bar{display:inline-block;width:3px;height:14px;background:var(--primary);border-radius:2px;flex-shrink:0}
.upload-area{border:1px dashed #dde1e7;border-radius:6px;padding:18px;text-align:center;color:#94a3b8;font-size:13px;cursor:pointer;background:#fafbff}
.upload-area:hover{border-color:var(--primary);background:#f0f4ff}
.modal-box.modal-xxl{width:1100px;max-width:94vw}
.modal-box.modal-full{width:1500px;max-width:98vw}
.msg-count{display:none;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:#ef4444;color:#fff;font-size:10px;line-height:16px;text-align:center;margin-left:2px}
.top-role{font-size:11px;color:#64748b;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:3px;padding:1px 6px}
.muted{color:#94a3b8}.small{font-size:12px}.nowrap{white-space:nowrap}
.ellipsis{max-width:260px;overflow:hidden;text-overflow:ellipsis;display:inline-block;vertical-align:middle;white-space:nowrap}
.filter-item input[type=date]{min-width:0}
.hl{background:#fff3bf;color:inherit;padding:0 1px;border-radius:2px}

/* 键值详情 */
.kv-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 24px}
.kv-grid.c4{grid-template-columns:repeat(4,minmax(0,1fr))}
.kv-grid.c2{grid-template-columns:repeat(2,minmax(0,1fr))}
.kv{display:flex;flex-direction:column;gap:3px;min-width:0}
.kv .k{font-size:12px;color:#94a3b8}
.kv .v{font-size:13px;color:#1f2937;word-break:break-all}

/* 指标卡（看板/列表页顶部）*/
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:10px}
.kpi{background:#fff;border:1px solid #e4e8ef;border-radius:5px;padding:12px 14px;cursor:default;position:relative;min-width:0}
.kpi.click{cursor:pointer}.kpi.click:hover{border-color:var(--primary);box-shadow:0 2px 8px rgba(var(--primary-rgb),.12)}
.kpi .kpi-lbl{font-size:12px;color:#64748b;display:flex;align-items:center;gap:4px}
.kpi .kpi-val{font-size:24px;font-weight:700;color:#1a1a1a;margin-top:6px;line-height:1.1}
.kpi .kpi-val small{font-size:12px;font-weight:400;color:#94a3b8;margin-left:2px}
.kpi .kpi-sub{font-size:11px;color:#94a3b8;margin-top:4px}
.kpi.accent{border-top:3px solid var(--primary)}
.kpi.warn .kpi-val{color:#c2410c}.kpi.danger .kpi-val{color:#dc2626}.kpi.ok .kpi-val{color:#16a34a}
.tip-ico{color:#cbd5e1;cursor:help;font-size:12px}

/* 分区标题（看板）*/
.sec-ttl{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:#1a1a1a;margin:14px 2px 10px}
.sec-ttl .sec-note{font-size:12px;font-weight:400;color:#94a3b8}
.chart-box{height:300px;width:100%}
.chart-box.sm{height:240px}.chart-box.lg{height:380px}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.grid-12-8{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:10px}
.grid-8-4{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:10px}
.grid-2>.card,.grid-3>.card,.grid-12-8>.card,.grid-8-4>.card{margin-bottom:0}
.stack>*+*{margin-top:10px}

/* 步骤条 */
.steps{display:flex;align-items:center;gap:0;padding:4px 0}
.step{display:flex;align-items:center;gap:6px;flex:1;min-width:0}
.step .num{width:22px;height:22px;border-radius:50%;background:#e2e8f0;color:#94a3b8;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.step .lbl{font-size:12px;color:#64748b;white-space:nowrap}
.step.done .num{background:var(--primary);color:#fff}.step.done .lbl{color:#374151}
.step.cur .num{background:#fff;color:var(--primary);box-shadow:0 0 0 2px var(--primary)}.step.cur .lbl{color:var(--primary);font-weight:600}
.step-line{flex:0 0 28px;height:1px;background:#d1d5db;margin:0 6px}

/* 校验清单 */
.check-list{display:flex;flex-direction:column;gap:6px}
.check-item{display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.5}
.check-item i{margin-top:2px}
.check-item.ok i{color:#16a34a}.check-item.err i{color:#dc2626}.check-item.warn i{color:#d97706}
.check-item.err{color:#991b1b}

/* 附件清单 */
.att-row{display:grid;grid-template-columns:70px minmax(0,1fr) 120px minmax(0,1.3fr) 90px;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid #f0f2f5;font-size:13px}
.att-row:last-child{border-bottom:none}
.att-row.hd{background:#f5f7fa;color:#475569;font-size:12px;font-weight:600}
.att-file{display:flex;align-items:center;gap:6px;min-width:0}
.att-file span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* 单选卡片 */
.choice-group{display:flex;gap:10px;flex-wrap:wrap}
.choice{border:1px solid #d9d9d9;border-radius:5px;padding:10px 14px;cursor:pointer;min-width:150px;flex:1;background:#fff;transition:all .15s}
.choice:hover{border-color:var(--primary)}
.choice.active{border-color:var(--primary);background:rgba(var(--primary-rgb),.06);box-shadow:0 0 0 1px var(--primary)}
.choice .c-t{font-size:14px;font-weight:600;color:#1f2937;display:flex;align-items:center;gap:6px}
.choice .c-d{font-size:12px;color:#64748b;margin-top:4px;line-height:1.5}
.choice.disabled{opacity:.5;cursor:not-allowed}

/* 文档预览 */
.doc-view{position:relative;background:#fff;border:1px solid #e4e8ef;border-radius:4px;padding:36px 48px;min-height:420px;overflow:hidden;font-family:'SimSun','Songti SC',serif}
.doc-view h1{font-size:20px;text-align:center;margin-bottom:6px;font-weight:700;color:#111}
.doc-view .doc-no{text-align:center;font-size:13px;color:#666;margin-bottom:22px;font-family:'PingFang SC','Microsoft YaHei',sans-serif}
.doc-view p{font-size:14.5px;line-height:2;color:#222;text-indent:2em;margin-bottom:4px}
.doc-view p b{font-weight:700}
.doc-view p.focus{background:#fff7d6;border-radius:3px}
.watermark{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2}
.watermark span{position:absolute;transform:rotate(-24deg);color:rgba(100,116,139,.13);font-size:15px;white-space:nowrap;font-family:'PingFang SC',sans-serif;user-select:none}
.watermark.abolished span{color:rgba(220,38,38,.16);font-size:34px;font-weight:700}

/* 版本链 */
.ver-chain{display:flex;align-items:stretch;gap:0;overflow-x:auto;padding:4px 2px 8px}
.ver-node{border:1px solid #e2e8f0;border-radius:6px;padding:10px 12px;min-width:210px;background:#fff;cursor:pointer;position:relative}
.ver-node.cur{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}
.ver-node .vn-t{font-weight:600;font-size:13px;display:flex;gap:6px;align-items:center}
.ver-node .vn-d{font-size:12px;color:#64748b;margin-top:4px;line-height:1.6}
.ver-arrow{display:flex;align-items:center;padding:0 8px;color:#94a3b8;font-size:12px;white-space:nowrap}

/* 条款差异 */
.diff-col{border:1px solid #e4e8ef;border-radius:4px;padding:10px 14px;font-size:13px;line-height:1.9;max-height:420px;overflow:auto;background:#fff}
.diff-add{background:#dcfce7;color:#166534;border-radius:2px}
.diff-del{background:#fee2e2;color:#991b1b;text-decoration:line-through;border-radius:2px}
.diff-mod{background:#fef9c3;border-radius:2px}

/* 矩阵 */
.matrix{border-collapse:collapse;font-size:12px;width:100%}
.matrix th,.matrix td{border:1px solid #e8ecf2;padding:7px 8px;text-align:center}
.matrix th{background:#f5f7fa;color:#475569;font-weight:600;white-space:nowrap}
.matrix td:first-child{text-align:left;white-space:nowrap}
.m-cell{display:inline-flex;min-width:36px;justify-content:center;padding:2px 6px;border-radius:3px;cursor:pointer;font-weight:600}
.m-cell.R{background:#dbeafe;color:#1d4ed8}.m-cell.A{background:#fde68a;color:#92400e}.m-cell.C{background:#dcfce7;color:#166534}.m-cell.I{background:#f1f5f9;color:#64748b}

/* 智能问答 */
.qa-float{position:fixed;right:22px;bottom:22px;z-index:1500;font-size:13px}
.qa-fab{display:flex;align-items:center;gap:8px;background:var(--primary);color:#fff;border-radius:22px;padding:10px 16px;box-shadow:0 6px 18px rgba(var(--primary-rgb),.4);cursor:pointer;user-select:none}
.qa-fab i{font-size:16px}
.qa-panel{display:none;width:420px;max-width:calc(100vw - 32px);height:560px;max-height:calc(100vh - 110px);background:#fff;border-radius:8px;box-shadow:0 12px 40px rgba(15,23,42,.22);flex-direction:column;overflow:hidden;border:1px solid #e4e8ef}
.qa-float.open .qa-panel{display:flex}.qa-float.open .qa-fab{display:none}
.qa-hd{display:flex;align-items:center;gap:8px;padding:12px 14px;background:linear-gradient(135deg,#1f3997,var(--primary));color:#fff}
.qa-hd .qa-ttl{font-weight:600;font-size:14px;flex:1}
.qa-hd a{color:#fff;cursor:pointer;opacity:.85;font-size:13px}
.qa-body{flex:1;overflow-y:auto;padding:12px;background:#f7f9fc}
.qa-input{display:flex;gap:8px;padding:10px;border-top:1px solid #eef0f4;background:#fff;align-items:flex-end}
.qa-input textarea{flex:1;resize:none;height:38px;max-height:90px;border:1px solid #d9d9d9;border-radius:4px;padding:8px 10px;font-family:inherit;font-size:13px;outline:none}
.qa-input textarea:focus{border-color:var(--primary)}
.qa-msg{margin-bottom:12px;display:flex;flex-direction:column}
.qa-msg.user{align-items:flex-end}
.qa-bubble{max-width:92%;padding:9px 12px;border-radius:8px;line-height:1.7;font-size:13px;color:#1f2937;background:#fff;border:1px solid #e8ecf2;white-space:pre-wrap;word-break:break-word}
.qa-msg.user .qa-bubble{background:var(--primary);color:#fff;border-color:var(--primary)}
.qa-bubble.refuse{background:#fffbeb;border-color:#fde68a;color:#92400e}
.qa-src{margin-top:6px;max-width:92%;display:flex;flex-direction:column;gap:6px}
.qa-src-item{background:#fff;border:1px solid #e2e8f0;border-left:3px solid var(--primary);border-radius:4px;padding:7px 10px;font-size:12px;line-height:1.6}
.qa-src-item.ext{border-left-color:#7c3aed}
.qa-src-item .s-t{font-weight:600;color:#1f2937;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.qa-src-item .s-c{color:#475569;margin-top:2px}
.qa-fb{display:flex;gap:10px;margin-top:4px;font-size:12px;color:#94a3b8}
.qa-fb a{cursor:pointer}.qa-fb a:hover,.qa-fb a.on{color:var(--primary)}
.qa-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}

/* 首页智能问答（内嵌）*/
.qa-inline{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:520px}
.qa-inline .qa-hist{border-right:1px solid #eef0f4;padding:10px;background:#fafbfc}
.qa-inline .qa-hist-item{padding:8px 10px;border-radius:4px;font-size:12.5px;color:#475569;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qa-inline .qa-hist-item:hover{background:#eef2ff;color:var(--primary)}
.qa-inline .qa-main{display:flex;flex-direction:column;min-width:0}
.qa-inline .qa-body{height:440px;flex:1}

/* 搜索栏 */
.search-hero{display:flex;gap:10px;align-items:center}
.search-hero .sh-input{flex:1;display:flex;align-items:center;border:1px solid #d9d9d9;border-radius:4px;height:38px;padding:0 10px;background:#fff}
.search-hero .sh-input:focus-within{border-color:var(--primary);box-shadow:0 0 0 2px rgba(var(--primary-rgb),.1)}
.search-hero .sh-input input{border:none;outline:none;flex:1;font-size:14px;height:100%;font-family:inherit;min-width:0}
.search-hero select{height:38px;border:1px solid #d9d9d9;border-radius:4px;padding:0 10px;font-size:13px;background:#fff;outline:none}
.snippet{font-size:12px;color:#64748b;margin-top:3px;max-width:520px;white-space:normal;line-height:1.6}
.name-cell{white-space:normal!important;min-width:220px}
.expired-hint{display:inline-flex;align-items:center;gap:3px;font-size:11px;color:#c2410c;margin-left:6px}

/* 多选下拉 */
.ms{position:relative;flex:1;min-width:0}
.ms-btn{height:32px;border:1px solid #d9d9d9;border-radius:4px;padding:0 26px 0 10px;font-size:14px;background:#fff;cursor:pointer;display:flex;align-items:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#333;position:relative}
.ms-btn::after{content:'';position:absolute;right:10px;top:13px;border:5px solid transparent;border-top-color:#999}
.ms-btn.ph{color:#999}
.ms-pop{display:none;position:absolute;top:34px;left:0;right:0;min-width:180px;max-height:260px;overflow:auto;background:#fff;border:1px solid #e4e8ef;border-radius:4px;box-shadow:0 6px 16px rgba(0,0,0,.12);z-index:60;padding:4px 0}
.ms.open .ms-pop{display:block}
.ms-pop label{display:flex!important;align-items:center;gap:6px;padding:6px 10px;font-size:13px!important;color:#333!important;cursor:pointer;min-width:0!important;text-align:left!important;white-space:nowrap}
.ms-pop label:hover{background:#f0f6ff}

/* 任务办理 */
.task-head{display:flex;align-items:flex-start;gap:14px}
.task-head .th-ico{width:44px;height:44px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0;background:rgba(var(--primary-rgb),.1);color:var(--primary)}
.task-head .th-t{font-size:16px;font-weight:600;color:#1a1a1a;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.task-head .th-d{font-size:12px;color:#64748b;margin-top:6px;display:flex;gap:16px;flex-wrap:wrap}
.state-line{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 12px;background:#f8fafc;border:1px solid #eef0f4;border-radius:4px;font-size:12.5px;color:#475569;margin-bottom:12px}
.state-line b{color:#1f2937}
.file-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid #e2e8f0;border-radius:4px;background:#f8fafc;font-size:12px;margin:0 6px 6px 0}
.file-chip a{color:#94a3b8;cursor:pointer}.file-chip a:hover{color:#dc2626}
.section-lock{position:relative}
.done-banner{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:5px;background:#f0fdf4;border:1px solid #bbf7d0;color:#166534;font-size:13px}
.done-banner.stop{background:#f8fafc;border-color:#e2e8f0;color:#475569}

/* 时间轴（颜色语义）*/
.tl-item.rej .tl-dot{background:#dc2626;box-shadow:0 0 0 2px #dc2626}
.tl-item.cur .tl-dot{background:#f59e0b;box-shadow:0 0 0 2px #f59e0b}
.tl-item.gray .tl-dot{background:#cbd5e1;box-shadow:0 0 0 2px #cbd5e1}

/* 列表空状态 */
.empty-row td{text-align:center!important;color:#94a3b8!important;padding:36px 0!important}
.empty-row i{font-size:28px;display:block;margin-bottom:6px;color:#cbd5e1}

/* 部门比较条 */
.bar-cell{display:flex;align-items:center;gap:8px;min-width:140px}
.bar-cell .prog-bar{flex:1;height:6px}
.bar-cell span{font-size:12px;color:#475569;width:44px;text-align:right}

.role-card{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid #e4e8ef;border-radius:5px;cursor:pointer;margin-bottom:8px}
.role-card:hover{border-color:var(--primary)}
.role-card.active{border-color:var(--primary);background:rgba(var(--primary-rgb),.06)}
.role-card .rc-ava{width:34px;height:34px;border-radius:50%;background:rgba(var(--primary-rgb),.14);color:var(--primary);display:flex;align-items:center;justify-content:center;font-weight:700}
.msg-item{padding:10px 4px;border-bottom:1px solid #f0f2f5;cursor:pointer}
.msg-item:hover{background:#f8fafc}
.msg-item .mi-t{font-size:13px;font-weight:600;color:#1f2937;display:flex;align-items:center;gap:6px}
.msg-item .mi-t .dot-new{width:6px;height:6px;border-radius:50%;background:#ef4444}
.msg-item .mi-d{font-size:12px;color:#64748b;margin-top:3px;line-height:1.6}

.pill-tabs{display:inline-flex;border:1px solid #d9d9d9;border-radius:4px;overflow:hidden}
.pill-tabs span{padding:5px 12px;font-size:12px;cursor:pointer;color:#475569;background:#fff;border-right:1px solid #d9d9d9}
.pill-tabs span:last-child{border-right:none}
.pill-tabs span.active{background:var(--primary);color:#fff}

@media (max-width:1366px){.top-role{display:none}}
@media (max-width:1280px){
  .filter-grid{grid-template-columns:repeat(2,1fr)!important}
  .kv-grid,.kv-grid.c4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:900px){.filter-grid{grid-template-columns:1fr!important}.kv-grid,.kv-grid.c4{grid-template-columns:1fr}}
@media (max-width:1024px){
  .grid-2,.grid-12-8,.grid-8-4{grid-template-columns:1fr}
  .qa-inline{grid-template-columns:1fr}.qa-inline .qa-hist{display:none}
}
