/* AI全病历质控系统 UI原型 共享样式 */
* { margin:0; padding:0; box-sizing:border-box; }
body { font-family:-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif; font-size:13px; color:#333; background:#f0f2f5; }
a { color:#1668dc; text-decoration:none; }
ul { list-style:none; }

/* ===== 布局 ===== */
.layout { display:flex; min-height:100vh; }
.sidebar { width:216px; background:#0b1b33; color:#c8d3e6; flex-shrink:0; }
.sidebar .logo { padding:16px 14px; font-size:15px; font-weight:600; color:#fff; border-bottom:1px solid rgba(255,255,255,.08); line-height:1.4; }
.sidebar .logo small { display:block; font-size:11px; font-weight:400; color:#7f93b5; }
.sidebar .group { padding:12px 14px 4px; font-size:11px; color:#7f93b5; }
.sidebar a.nav { display:block; padding:9px 14px 9px 22px; color:#c8d3e6; font-size:13px; border-left:3px solid transparent; }
.sidebar a.nav:hover { background:rgba(255,255,255,.06); color:#fff; }
.sidebar a.nav.active { background:#1668dc; color:#fff; border-left-color:#69b1ff; }
.sidebar .verinfo { margin-top:16px; padding:10px 14px; font-size:10px; color:#5b6b8c; border-top:1px solid rgba(255,255,255,.08); }
.ver-mini { font-size:11px; color:#999; }
.ver-corner { position:fixed; right:10px; bottom:8px; font-size:11px; color:#c9d3e0; }
.main { flex:1; min-width:0; display:flex; flex-direction:column; }
.topbar { height:52px; background:#fff; display:flex; align-items:center; padding:0 20px; box-shadow:0 1px 4px rgba(0,0,0,.08); position:sticky; top:0; z-index:20; }
.topbar h1 { font-size:16px; font-weight:600; }
.topbar .crumb { color:#999; font-size:12px; margin-left:12px; }
.topbar .right { margin-left:auto; display:flex; align-items:center; gap:14px; font-size:12px; color:#666; }
.avatar { width:28px; height:28px; border-radius:50%; background:#1668dc; color:#fff; display:inline-flex; align-items:center; justify-content:center; font-size:12px; }
.content { padding:16px 20px 40px; }

/* ===== 卡片 / 看板 ===== */
.card { background:#fff; border-radius:8px; padding:16px; margin-bottom:16px; box-shadow:0 1px 3px rgba(0,0,0,.06); }
.card h3 { font-size:14px; margin-bottom:12px; display:flex; align-items:center; gap:8px; }
.card h3 .sub { font-size:11px; color:#999; font-weight:400; }
.row { display:flex; gap:16px; }
.row > .card { flex:1; min-width:0; }
.kpi-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:12px; }
.kpi { background:linear-gradient(180deg,#f7faff,#fff); border:1px solid #e6effc; border-radius:8px; padding:12px 14px; }
.kpi .num { font-size:22px; font-weight:700; color:#1668dc; }
.kpi .num.red { color:#e34d59; } .kpi .num.green { color:#2ba471; } .kpi .num.orange { color:#e37318; }
.kpi .lbl { font-size:12px; color:#888; margin-top:2px; }
.kpi .trend { font-size:11px; margin-top:4px; } .up { color:#e34d59; } .down { color:#2ba471; }

/* ===== 筛选栏 ===== */
.filter-bar { display:flex; flex-wrap:wrap; gap:10px; align-items:center; background:#fff; border-radius:8px; padding:12px 16px; margin-bottom:16px; box-shadow:0 1px 3px rgba(0,0,0,.06); }
.filter-bar label { color:#666; font-size:12px; }
select, input[type=text], input[type=date], input[type=number], textarea { border:1px solid #d9d9d9; border-radius:4px; padding:5px 8px; font-size:12px; color:#333; background:#fff; outline:none; }
select:focus, input:focus, textarea:focus { border-color:#1668dc; }
textarea { width:100%; resize:vertical; font-family:inherit; }

/* ===== 按钮 ===== */
.btn { display:inline-block; border:1px solid #d9d9d9; background:#fff; color:#444; border-radius:4px; padding:5px 14px; font-size:12px; cursor:pointer; line-height:1.6; }
.btn:hover { border-color:#1668dc; color:#1668dc; }
.btn.primary { background:#1668dc; border-color:#1668dc; color:#fff; }
.btn.primary:hover { background:#3c86e8; color:#fff; }
.btn.danger { background:#e34d59; border-color:#e34d59; color:#fff; }
.btn.ghost-danger { color:#e34d59; border-color:#f3b6bb; background:#fff; }
.btn.sm { padding:2px 8px; font-size:11px; }
.btn.link { border:none; color:#1668dc; padding:2px 4px; background:none; }
.quick-btns .btn.on { background:#e8f1fd; border-color:#1668dc; color:#1668dc; }

/* ===== 标签 ===== */
.tag { display:inline-block; border-radius:3px; padding:1px 7px; font-size:11px; line-height:1.7; white-space:nowrap; }
.tag.red { background:#fdebec; color:#d54941; }
.tag.orange { background:#fdf1e5; color:#e37318; }
.tag.green { background:#e8f7f0; color:#2ba471; }
.tag.blue { background:#e8f1fd; color:#1668dc; }
.tag.gray { background:#f0f0f0; color:#777; }
.tag.purple { background:#f3ecfd; color:#8250df; }
.tag.dark-red { background:#d54941; color:#fff; }

/* ===== 表格 ===== */
.table { width:100%; border-collapse:collapse; background:#fff; }
.table th { background:#fafafa; color:#555; font-weight:600; font-size:12px; text-align:left; padding:9px 10px; border-bottom:1px solid #eee; white-space:nowrap; }
.table td { padding:9px 10px; border-bottom:1px solid #f2f2f2; font-size:12px; vertical-align:top; }
.table tr:hover td { background:#f7faff; }
.table .num-link { color:#1668dc; cursor:pointer; font-weight:600; }
.table th.sortable { cursor:pointer; user-select:none; }
.table th.sortable:hover { color:#1668dc; }
.fee-sum-tbl { border:1px solid #d6e6fb; border-radius:8px; overflow:hidden; }
.fee-sum-tbl th { background:#eef6ff; color:#1668dc; }
.fee-sum-tbl td { font-weight:600; }
.fee-det-tbl th { background:#fff; border-bottom:2px solid #eee; }
.pager { display:flex; justify-content:flex-end; align-items:center; gap:6px; padding:12px 0 0; color:#888; font-size:12px; }
.pager .pg { border:1px solid #ddd; border-radius:3px; padding:2px 9px; cursor:pointer; background:#fff; }
.pager .pg.cur { background:#1668dc; color:#fff; border-color:#1668dc; }

/* ===== 页签 ===== */
.tabs { display:flex; gap:4px; border-bottom:2px solid #eef0f3; margin-bottom:14px; }
.tabs .tab { padding:8px 18px; cursor:pointer; font-size:13px; color:#666; border-bottom:2px solid transparent; margin-bottom:-2px; background:none; border-top:none; border-left:none; border-right:none; }
.tabs .tab.active { color:#1668dc; border-bottom-color:#1668dc; font-weight:600; }
.tabs .tab .cnt { background:#f0f0f0; border-radius:8px; padding:0 6px; font-size:11px; margin-left:4px; }
.tabs .tab.active .cnt { background:#e8f1fd; color:#1668dc; }
.tab-panel { display:none; } .tab-panel.active { display:block; }

/* ===== 弹窗 ===== */
.modal-mask { display:none; position:fixed; inset:0; background:rgba(0,0,0,.45); z-index:100; align-items:center; justify-content:center; }
.modal { background:#fff; border-radius:8px; width:560px; max-width:94vw; max-height:88vh; display:flex; flex-direction:column; box-shadow:0 8px 30px rgba(0,0,0,.2); }
.modal.lg { width:860px; }
.modal-hd { padding:14px 18px; border-bottom:1px solid #eee; font-size:14px; font-weight:600; display:flex; }
.modal-hd .x { margin-left:auto; cursor:pointer; color:#999; font-weight:400; }
.modal-bd { padding:16px 18px; overflow:auto; }
.modal-ft { padding:12px 18px; border-top:1px solid #eee; text-align:right; display:flex; gap:8px; justify-content:flex-end; }
.form-item { margin-bottom:12px; }
.form-item > label { display:block; font-size:12px; color:#555; margin-bottom:5px; }
.form-item > label .req { color:#e34d59; }
.form-item select, .form-item input[type=text], .form-item input[type=number] { width:100%; }

/* ===== 图表(纯CSS/SVG) ===== */
.bar-row { display:flex; align-items:center; gap:8px; margin-bottom:8px; font-size:12px; }
.bar-row .bl { width:150px; text-align:right; color:#666; flex-shrink:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.bar-row .bar { height:14px; border-radius:2px; background:#1668dc; }
.bar-row .bar.red { background:#e34d59; } .bar-row .bar.orange { background:#f5a623; } .bar-row .bar.green { background:#2ba471; } .bar-row .bar.cyan { background:#12b3c7; }
.bar-row .bv { color:#888; }
.donut { width:120px; height:120px; border-radius:50%; margin:8px auto; position:relative; }
.donut::after { content:attr(data-center); position:absolute; inset:26px; background:#fff; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:12px; color:#555; text-align:center; white-space:pre-line; font-weight:600; }
.legend { display:flex; flex-wrap:wrap; gap:6px 14px; justify-content:center; font-size:12px; color:#666; margin-top:6px; }
.legend i { display:inline-block; width:10px; height:10px; border-radius:2px; margin-right:4px; vertical-align:-1px; }
.chart-svg { width:100%; height:180px; }
.progress { background:#f0f0f0; border-radius:6px; height:8px; overflow:hidden; min-width:60px; }
.progress i { display:block; height:100%; background:#2ba471; border-radius:6px; }

/* ===== 原型标注 ===== */
.note { background:#fffbe6; border:1px dashed #e6c200; border-radius:6px; padding:10px 14px; font-size:12px; color:#8a6d00; margin-bottom:16px; line-height:1.8; }
.note b { color:#6b5400; }
.pill { display:inline-block; background:#fff; border:1px solid #e6c200; border-radius:10px; padding:0 8px; margin:0 3px 3px 0; font-size:11px; }

/* ===== 医生端专属 ===== */
.emr { display:flex; height:calc(100vh - 52px); }
.emr-left { width:230px; background:#fff; border-right:1px solid #e8e8e8; overflow:auto; flex-shrink:0; }
.emr-left .pt { padding:10px 12px; border-bottom:1px solid #f2f2f2; cursor:pointer; }
.emr-left .pt:hover { background:#f7faff; }
.emr-left .pt.cur { background:#e8f1fd; border-left:3px solid #1668dc; }
.emr-left .pt .nm { font-weight:600; font-size:13px; display:flex; align-items:center; gap:6px; }
.emr-left .pt .meta { color:#999; font-size:11px; margin-top:3px; }
.emr-center { flex:1; min-width:0; overflow:auto; padding:14px; }
.emr-right { width:360px; background:#fff; border-left:1px solid #e8e8e8; overflow:auto; flex-shrink:0; }
.doc-paper { background:#fff; border-radius:6px; padding:24px 30px; box-shadow:0 1px 4px rgba(0,0,0,.08); line-height:2; font-size:13px; }
.doc-paper h2 { text-align:center; font-size:17px; margin-bottom:14px; }
.doc-paper .fld { color:#555; }
.doc-paper .fld b { color:#222; }
.hp-sec { margin:16px 0 6px; font-size:14px; font-weight:600; color:#333; }
.hp-tbl { margin:0 0 8px; border:1px solid #eee; }
.hp-tbl td, .hp-tbl th { border-bottom:1px solid #f2f2f2; }
.hp-kv > tbody > tr > th { width:140px; background:#fafafa; color:#555; font-weight:600;
  text-align:left; white-space:nowrap; vertical-align:top; }
.hp-tbl .hp-tbl { margin:0; }  /* 嵌套子表格贴合单元格 */

/* ===== 独立文书：医保结算清单 / 住院病案首页（仿 demo 版式，自包含） ===== */
.doc-form { font-size:12.5px; line-height:1.6; color:#333; }
.doc-form-head { text-align:center; font-size:18px; font-weight:700; color:#1d2b44; padding-bottom:10px;
  border-bottom:2px solid #1d2b44; margin-bottom:16px; }
.doc-form-head .doc-form-sub { display:block; font-size:11px; font-weight:400; color:#9aa4b5; margin-top:4px; }
.doc-sec { border:1px solid #e6e9ef; border-radius:6px; margin-bottom:14px; overflow:hidden; }
.doc-sec-title { background:#f4f5f7; color:#1d2b44; font-weight:600; font-size:13px; padding:8px 12px;
  border-bottom:1px solid #e6e9ef; }
.doc-grid { display:grid; grid-template-columns:repeat(4, 1fr); }
.doc-field { display:flex; border-right:1px solid #f0f2f5; border-bottom:1px solid #f0f2f5; min-height:34px; }
.doc-field.span2 { grid-column:span 2; } .doc-field.span3 { grid-column:span 3; } .doc-field.span4 { grid-column:span 4; }
.doc-label { flex:0 0 96px; background:#fafbfd; color:#666; padding:7px 10px; font-weight:500;
  border-right:1px solid #f0f2f5; display:flex; align-items:center; }
.doc-val { flex:1; padding:7px 10px; color:#1d2b44; word-break:break-all; display:flex; align-items:center; }
.doc-empty { color:#c0c6d0; }
.doc-cn { color:#2ba471; }  /* 编码后翻译名称 */
.doc-empty-block { padding:12px; color:#a0a6b0; text-align:center; font-size:12px; }
.doc-table-wrap { overflow-x:auto; }
.doc-table { width:100%; border-collapse:collapse; font-size:12px; }
.doc-table th { background:#fafbfd; color:#555; font-weight:600; text-align:left; padding:7px 10px;
  border-bottom:1px solid #eef0f4; white-space:nowrap; }
.doc-table td { padding:7px 10px; border-bottom:1px solid #f4f5f8; vertical-align:top; }
.doc-table td.num { text-align:right; font-variant-numeric:tabular-nums; }
.doc-table tr:hover td { background:#f7faff; }
.doc-two-col { display:grid; grid-template-columns:1fr 1fr; gap:14px; padding:12px; }
.doc-tbl-title { font-weight:600; color:#666; margin-bottom:6px; font-size:12px; }
@media (max-width:900px) { .doc-grid { grid-template-columns:repeat(2, 1fr); }
  .doc-field.span3, .doc-field.span4 { grid-column:span 2; } .doc-two-col { grid-template-columns:1fr; } }
.defect { border-bottom:2px wavy; padding:0 1px; cursor:pointer; }
.defect.err { border-bottom:2px solid #e34d59; background:#fdebec; }
.defect.warn { border-bottom:2px dashed #e37318; background:#fdf1e5; }
.qc-item { border:1px solid #eee; border-left:4px solid #ccc; border-radius:6px; padding:10px 12px; margin:0 12px 10px; }
.qc-item.err { border-left-color:#e34d59; } .qc-item.warn { border-left-color:#e37318; } .qc-item.done { border-left-color:#2ba471; opacity:.75; }
.qc-item .t { font-weight:600; font-size:12px; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.qc-item .d { color:#777; font-size:12px; margin:6px 0; line-height:1.7; }
.qc-item .ops { display:flex; gap:6px; }
.grp-hd { padding:8px 12px; font-size:12px; font-weight:600; color:#555; background:#fafafa; margin:0 12px 8px; border-radius:4px; display:flex; }
.grp-hd .cnt { margin-left:auto; color:#e34d59; }
.chat { display:flex; flex-direction:column; gap:10px; }
.chat .msg { max-width:82%; padding:9px 12px; border-radius:8px; font-size:12px; line-height:1.8; }
.chat .msg.ai { background:#f4f6f9; align-self:flex-start; border-top-left-radius:2px; }
.chat .msg.me { background:#1668dc; color:#fff; align-self:flex-end; border-top-right-radius:2px; }
.appeal-log { border-left:2px solid #e6effc; padding-left:12px; margin:8px 0; }
.appeal-log .ln { font-size:12px; margin-bottom:8px; }
.appeal-log .ln b { color:#1668dc; }
.appeal-log .ln.reply b { color:#e37318; }
.appeal-log .tm { color:#aaa; font-size:11px; margin-left:6px; }

/* ===== 病历详情页 ===== */
.detail-wrap { display:flex; gap:14px; align-items:stretch; }
.doc-tree { width:200px; background:#fff; border-radius:8px; padding:12px 0; flex-shrink:0; box-shadow:0 1px 3px rgba(0,0,0,.06); max-height:78vh; overflow:auto; }
.doc-tree .cat { padding:6px 14px; font-weight:600; font-size:12px; color:#444; }
.doc-tree .doc { padding:6px 14px 6px 26px; font-size:12px; color:#666; cursor:pointer; display:flex; align-items:center; }
.doc-tree .doc:hover { background:#f7faff; }
.doc-tree .doc.top { padding-left:14px; font-weight:600; color:#444; }
.doc-tree .doc.cur { background:#e8f1fd; color:#1668dc; }
.doc-tree .doc .dot { margin-left:auto; background:#e34d59; color:#fff; border-radius:8px; font-size:10px; padding:0 5px; }
.detail-mid { flex:1; min-width:0; }
.detail-right { width:350px; flex-shrink:0; }
.panel-scroll { max-height:66vh; overflow:auto; }

/* ===== 规则编排画布 ===== */
.designer { display:flex; gap:0; height:calc(100vh - 150px); background:#fff; border-radius:8px; overflow:hidden; box-shadow:0 1px 3px rgba(0,0,0,.06); }
.palette { width:190px; border-right:1px solid #eee; overflow:auto; padding:10px; flex-shrink:0; }
.palette h4 { font-size:12px; color:#888; margin:10px 4px 6px; }
.pal-node { border:1px solid #d9d9d9; border-radius:5px; padding:6px 9px; font-size:12px; margin-bottom:6px; cursor:grab; background:#fff; display:flex; align-items:center; gap:6px; }
.pal-node:hover { border-color:#1668dc; color:#1668dc; }
.pal-node.biz { border-left:4px solid #1668dc; } .pal-node.tech { border-left:4px solid #e37318; } .pal-node.model { border-left:4px solid #8250df; }
.canvas { flex:1; position:relative; background:#fafbfc; background-image:radial-gradient(#e3e6ea 1px,transparent 1px); background-size:18px 18px; overflow:auto; }
.node { position:absolute; width:172px; background:#fff; border:1.5px solid #d0d5dd; border-radius:8px; box-shadow:0 2px 6px rgba(0,0,0,.08); font-size:12px; }
.node .nh { padding:6px 10px; font-weight:600; border-radius:7px 7px 0 0; color:#fff; font-size:12px; }
.node.biz .nh { background:#1668dc; } .node.tech .nh { background:#e37318; } .node.model .nh { background:#8250df; } .node.io .nh { background:#2ba471; }
.node .nb { padding:7px 10px; color:#666; line-height:1.6; }
.node.sel { border-color:#1668dc; box-shadow:0 0 0 3px rgba(22,104,220,.18); }
.prop { width:250px; border-left:1px solid #eee; padding:12px; overflow:auto; flex-shrink:0; }
.prop h4 { font-size:13px; margin-bottom:10px; }
.wire { stroke:#9db6d8; stroke-width:2; fill:none; marker-end:url(#arr); }

/* ===== 消息 / 抽屉 ===== */
.msg-item { padding:10px 14px; border-bottom:1px solid #f2f2f2; cursor:pointer; }
.msg-item:hover { background:#f7faff; }
.msg-item .mt { font-size:12px; font-weight:600; display:flex; gap:6px; align-items:center; }
.msg-item .mc { color:#777; font-size:12px; margin-top:4px; line-height:1.7; }
.msg-item .tm { color:#aaa; font-size:11px; margin-top:3px; }
.unread-dot { width:7px; height:7px; background:#e34d59; border-radius:50%; display:inline-block; }

/* toast */
#toast { position:fixed; top:70px; left:50%; transform:translateX(-50%); background:rgba(0,0,0,.78); color:#fff; padding:9px 20px; border-radius:6px; font-size:13px; z-index:999; display:none; }

/* 步骤条 */
.steps { display:flex; gap:0; margin:6px 0 14px; }
.step { flex:1; text-align:center; font-size:12px; color:#999; position:relative; padding-top:26px; }
.step::before { content:attr(data-n); position:absolute; top:0; left:50%; transform:translateX(-50%); width:22px; height:22px; border-radius:50%; background:#eee; color:#888; display:flex; align-items:center; justify-content:center; font-size:11px; }
.step::after { content:""; position:absolute; top:11px; left:calc(50% + 14px); width:calc(100% - 28px); height:2px; background:#eee; }
.step:last-child::after { display:none; }
.step.on { color:#1668dc; } .step.on::before { background:#1668dc; color:#fff; }
.step.done { color:#2ba471; } .step.done::before { background:#2ba471; color:#fff; content:"✓"; }

@media print { .sidebar,#toast { display:none; } }

/* DRG 分组结果卡片（质控端/医生端详情页右侧栏顶部） */
.drg-card{background:#f2f8ff;border:1px solid #cfe3ff;border-radius:6px;padding:8px 12px;margin-bottom:12px;font-size:13px}
.drg-muted{color:#888}
/* DRG 分组结果：与编目同表，顶部高亮突出分组结果 */
.drg-result-tbl .drg-hl>td{background:#eaf3ff;border-bottom:2px solid #cfe3ff;padding:10px 12px;font-size:13px;line-height:1.8}
.drg-tag{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;margin-left:4px}
.drg-tag.mcc{background:#fce4e4;color:#e34d59}
.drg-tag.cc{background:#fff3e0;color:#e37318}
.drg-tag.none{background:#e8f8ef;color:#2ba471}
/* 支付标准聚焦卡（重点突出） */
.drg-pay{background:linear-gradient(135deg,#eef5ff,#f6faff);border:1px solid #cfe3ff;border-radius:8px;padding:12px 14px;margin:0 0 12px}
.drg-pay-none{background:#fafafa;border-color:#eee}
.drg-pay-main{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 10px;margin-bottom:10px}
.drg-pay-main .lbl{font-size:13px;color:#555}
.drg-pay-main .amt{font-size:26px;font-weight:800;color:#1668dc;line-height:1.1}
.drg-pay-grid{display:flex;flex-wrap:wrap;gap:8px}
.drg-pay-item{flex:1;min-width:104px;background:#fff;border:1px solid #e6eefb;border-radius:6px;padding:6px 10px}
.drg-pay-item .k{font-size:11px;color:#888;margin-bottom:2px}
.drg-pay-item .v{font-size:15px;font-weight:700}
.drg-pay-item .v.up{color:#2ba471}
.drg-pay-item .v.down{color:#e34d59}
.drg-dist{margin-top:8px;font-size:11px;color:#888}
.drg-ratio{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px}
.drg-ratio.high{background:#fce4e4;color:#e34d59}
.drg-ratio.low{background:#fff3e0;color:#e37318}
.drg-ratio.normal{background:#e8f8ef;color:#2ba471}
.drg-sect{font-size:12px;color:#888;font-weight:600;margin:12px 0 4px}
.drg-los-over{color:#e34d59;font-weight:600}
/* 分组结果卡片内的 DRG/DIP tab：贴合 card 顶部 */
.group-result .group-tabs{margin-bottom:10px}
/* DIP 病种类型 / 费用倍率标签 */
.dip-tag{display:inline-block;padding:1px 8px;border-radius:10px;font-size:12px;margin-left:4px}
.dip-tag.type{background:#eef2ff;color:#4256c7}
.dip-tag.high{background:#fce4e4;color:#e34d59}
.dip-tag.low{background:#fff3e0;color:#e37318}
.dip-tag.normal{background:#e8f8ef;color:#2ba471}
/* DIP 更多可能入组列表 */
.dip-sug-hd{margin:10px 0 4px;font-size:12px;color:#888;font-weight:600}
.dip-sug{display:flex;align-items:center;gap:6px;padding:5px 8px;border:1px solid #eef0f3;border-radius:6px;margin-bottom:5px;font-size:12px}
.dip-sug-pts{margin-left:auto;color:#1668dc;font-weight:600}

/* ===== 侧边栏折叠模块标题（三级导航） ===== */
.sidebar .mod { padding:11px 14px; font-size:13px; font-weight:600; color:#e8eefb; cursor:pointer; border-top:1px solid rgba(255,255,255,.08); user-select:none; }
.sidebar .mod:hover { background:rgba(255,255,255,.05); }
.sidebar .mod .caret { display:inline-block; width:14px; color:#7f93b5; }
.sidebar .mod.collapsed { color:#9fb0cf; }

/* ===== RBAC 配置页菜单勾选树 ===== */
#menuTree { display:grid; grid-template-columns:1fr 1fr; gap:6px 18px; padding:8px 0; }
#menuTree .chk { display:flex; align-items:center; gap:6px; font-size:13px; }
