/* ============================================================
   CDM 慢病健康管理平台 · 全局主题（医疗机构版）
   设计语言：医疗蓝青 / 洁净留白 / 柔和层级 / 专业可信
   ============================================================ */
:root{
  --cdm-primary:#0b72d9;
  --cdm-primary-dark:#0958ac;
  --cdm-primary-soft:#e8f2fd;
  --cdm-teal:#0ca6a6;
  --cdm-teal-soft:#e2f6f5;
  --cdm-navy:#0a2540;
  --cdm-bg:#eef2f8;
  --cdm-card:#ffffff;
  --cdm-text:#1e2d47;
  --cdm-muted:#6c7b95;
  --cdm-border:#e3e9f3;
  --cdm-green:#22a06b;
  --cdm-yellow:#d9a413;
  --cdm-orange:#e67e22;
  --cdm-red:#d95040;
  --cdm-shadow:0 1px 2px rgba(16,42,87,.04),0 8px 24px rgba(16,42,87,.06);
  --cdm-shadow-hover:0 4px 8px rgba(16,42,87,.06),0 16px 36px rgba(11,114,217,.14);
  --cdm-radius:16px;
}
*{box-sizing:border-box}
body{margin:0;background:var(--cdm-bg);color:var(--cdm-text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  font-size:14px;line-height:1.55;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{text-decoration:none;color:inherit}
::selection{background:rgba(11,114,217,.18)}

/* ---------------- 布局骨架 ---------------- */
.layout{display:flex;min-height:100vh}
.sidebar{width:236px;background:linear-gradient(180deg,#08223d 0%,#0b3a63 58%,#0d4a73 100%);color:#fff;
  position:fixed;top:0;left:0;height:100vh;overflow-y:auto;padding:20px 14px 26px;z-index:50;
  box-shadow:4px 0 24px rgba(6,26,48,.28)}
.sidebar::-webkit-scrollbar{width:5px}
.sidebar::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:4px}
.sidebar .brand{display:flex;align-items:center;gap:11px;padding:4px 10px 18px;font-weight:700;font-size:17px;
  letter-spacing:.4px;border-bottom:1px solid rgba(255,255,255,.09);margin-bottom:6px}
.sidebar .brand .logo{width:38px;height:38px;border-radius:11px;flex:none;
  background:linear-gradient(135deg,#39a7ff,#16c7b9);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:20px;
  box-shadow:0 4px 14px rgba(22,199,185,.45),inset 0 1px 0 rgba(255,255,255,.35)}
.sidebar .brand small{display:block;font-size:10.5px;font-weight:500;color:rgba(255,255,255,.55);letter-spacing:1.5px;margin-top:2px}
.nav-group{font-size:11px;color:rgba(255,255,255,.45);margin:16px 10px 7px;
  text-transform:uppercase;letter-spacing:1.2px;display:flex;align-items:center;gap:8px}
.nav-group::after{content:"";flex:1;height:1px;background:rgba(255,255,255,.08)}
.nav-link{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:10px;color:rgba(255,255,255,.82);
  margin-bottom:3px;font-size:13.5px;position:relative;transition:background .15s,color .15s}
.nav-link:hover{background:rgba(255,255,255,.1);color:#fff}
.nav-link.active{background:linear-gradient(90deg,#ffffff,#eef6ff);color:var(--cdm-primary);font-weight:700;
  box-shadow:0 4px 12px rgba(3,20,40,.3)}
.nav-link.active::before{content:"";position:absolute;left:-14px;top:8px;bottom:8px;width:4px;
  border-radius:0 4px 4px 0;background:linear-gradient(180deg,#39a7ff,#16c7b9)}
.nav-link i{width:19px;text-align:center;font-size:15px;opacity:.92}

.main{margin-left:236px;flex:1;padding:22px 28px 48px;min-width:0}

/* ---------------- 顶栏 ---------------- */
.topbar{display:flex;align-items:center;justify-content:space-between;background:var(--cdm-card);
  border:1px solid var(--cdm-border);border-radius:var(--cdm-radius);padding:12px 20px;
  box-shadow:var(--cdm-shadow);margin-bottom:20px;position:sticky;top:12px;z-index:40}
.topbar .title{font-size:17.5px;font-weight:700;letter-spacing:.3px;display:flex;align-items:center;gap:9px}
.topbar .title::before{content:"";width:4px;height:18px;border-radius:3px;
  background:linear-gradient(180deg,var(--cdm-primary),var(--cdm-teal))}
.topbar .actions{display:flex;align-items:center;gap:12px}
.topbar .who{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--cdm-muted);text-align:right}
.topbar .who b{color:var(--cdm-text);font-size:13px}
.topbar .who .avatar{width:34px;height:34px;border-radius:50%;flex:none;
  background:linear-gradient(135deg,var(--cdm-primary),var(--cdm-teal));color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;
  box-shadow:0 2px 8px rgba(11,114,217,.3)}
.topbar-hosp{display:flex;align-items:center;gap:8px;background:linear-gradient(135deg,var(--cdm-primary),var(--cdm-teal));
  color:#fff;border-radius:999px;padding:6px 14px;box-shadow:0 4px 14px rgba(11,114,217,.25);white-space:nowrap}
.topbar-hosp .th-ico{font-size:15px;line-height:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.18))}
.topbar-hosp .th-name{font-weight:700;font-size:13.5px;max-width:200px;overflow:hidden;text-overflow:ellipsis}
.topbar-hosp .th-code{font-size:11.5px;font-weight:600;background:rgba(255,255,255,.22);padding:2px 9px;border-radius:999px;letter-spacing:.3px}
.badge-role{background:var(--cdm-teal);color:#fff;padding:2px 9px;border-radius:20px;font-size:11px}

/* ---------------- 卡片 ---------------- */
.card{background:var(--cdm-card);border:1px solid var(--cdm-border);border-radius:var(--cdm-radius);
  box-shadow:var(--cdm-shadow);padding:20px;margin-bottom:18px}
.card h3,.card h4{margin:0 0 12px;font-size:15px;font-weight:700}
.card .head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.card .head h4{display:flex;align-items:center;gap:8px;margin:0}
.card .head h4 i{color:var(--cdm-primary)}
.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
@media(max-width:1100px){.g4{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.g2,.g3,.g4{grid-template-columns:1fr}}

/* ---------------- KPI 卡 ---------------- */
.kpi{display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:var(--cdm-radius);
  background:var(--cdm-card);border:1px solid var(--cdm-border);box-shadow:var(--cdm-shadow)}
.kpi .ic{width:48px;height:48px;border-radius:13px;display:flex;align-items:center;justify-content:center;
  font-size:22px;color:#fff;flex:none;box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 4px 10px rgba(16,42,87,.16)}
.kpi .n{font-size:26px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.kpi .l{font-size:12px;color:var(--cdm-muted);margin-top:4px}

/* 档案页迷你信息卡（性别年龄/BMI/病种/危险分层） */
.mini-stat{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;
  background:#f8fafd;border:1px solid #e4ebf5;transition:box-shadow .15s}
.mini-stat:hover{box-shadow:0 4px 12px rgba(16,42,87,.08)}
.mini-stat .ms-ic{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;
  justify-content:center;font-size:19px;flex:none}
.mini-stat .ms-l{font-size:12px;color:var(--cdm-muted)}
.mini-stat .ms-v{font-size:15px;font-weight:700;margin-top:3px;line-height:1.4}

/* 可点击 KPI 卡片（仪表盘 / 工作台）：点击进入相应页面 */
a.kpi{color:inherit;text-decoration:none;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}
a.kpi:hover{transform:translateY(-2px);box-shadow:var(--cdm-shadow-hover);border-color:rgba(11,114,217,.45)}
a.kpi:active{transform:translateY(0)}

/* ---------------- 表格 ---------------- */
table.tbl{width:100%;border-collapse:collapse;font-size:13px}
table.tbl th{text-align:left;color:var(--cdm-muted);font-weight:600;padding:11px 12px;
  border-bottom:2px solid var(--cdm-border);background:#f8fafd;font-size:12.5px;letter-spacing:.2px}
table.tbl td{padding:11px 12px;border-bottom:1px solid var(--cdm-border)}
/* 表格内患者姓名等数据链接：主题蓝、无下划线，hover 显示下划线 */
table.tbl td a{color:var(--cdm-primary)}
table.tbl td a:hover{text-decoration:underline}
table.tbl tbody tr{transition:background .12s}
table.tbl tr:hover{background:#f5f9ff}
table.tbl tbody tr:last-child td{border-bottom:none}
.tag{display:inline-block;padding:2px 10px;border-radius:20px;font-size:12px;font-weight:600}
.tag.green{background:#e5f7ee;color:#18875a}
.tag.yellow{background:#fff6dd;color:#a97e06}
.tag.orange{background:#fdeee2;color:#c55a11}
.tag.red{background:#fdecea;color:#c0392b}
.tag.blue{background:#e7f1fd;color:#0b72d9}
.tag.gray{background:#eef1f6;color:#6b7891}
.muted{color:var(--cdm-muted);font-size:13px;line-height:1.6}
.card-sub{background:#f8fbff;border:1px solid var(--cdm-border);border-radius:12px;padding:14px 16px}
.card-sub h5{margin:0 0 10px;font-size:14px;font-weight:700;color:var(--cdm-primary)}
ul.kv{list-style:none;margin:0;padding:0}
ul.kv li{display:flex;gap:10px;padding:5px 0;border-bottom:1px dashed var(--cdm-border);font-size:12.5px}
ul.kv li:last-child{border-bottom:none}
ul.kv li span{flex:0 0 84px;color:var(--cdm-muted);font-weight:600}
ul.kv li b{font-weight:600;color:#2b3a52;flex:1}

/* ---------------- 表单 ---------------- */
label{font-size:13px;font-weight:600;color:#43506b;display:block;margin:10px 0 5px}
input,select,textarea{width:100%;padding:9px 12px;border:1px solid var(--cdm-border);border-radius:9px;
  font-size:14px;background:#fff;color:var(--cdm-text);font-family:inherit;transition:border-color .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--cdm-primary);box-shadow:0 0 0 3px rgba(11,114,217,.13)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:760px){.row2{grid-template-columns:1fr}}
.btn{display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:9px;border:1px solid transparent;cursor:pointer;
  font-size:14px;font-weight:600;background:var(--cdm-primary);color:#fff;transition:.15s;
  box-shadow:0 2px 6px rgba(11,114,217,.22)}
.btn:hover{background:var(--cdm-primary-dark);box-shadow:0 4px 12px rgba(11,114,217,.3)}
.btn.ghost{background:#fff;color:var(--cdm-primary);border:1px solid rgba(11,114,217,.5);box-shadow:none}
.btn.ghost:hover{background:var(--cdm-primary-soft);border-color:var(--cdm-primary)}
.btn.danger{background:var(--cdm-red);box-shadow:0 2px 6px rgba(217,80,64,.25)}
.btn.danger:hover{background:#bc4132}
.btn.sm{padding:5px 11px;font-size:12px}
.btn.lg{padding:12px 22px;font-size:15px}

.alert{padding:11px 15px;border-radius:10px;margin-bottom:14px;font-size:13px}
.alert.success{background:#e5f7ee;color:#18875a;border:1px solid #b6e7cd}
.alert.danger{background:#fdecea;color:#c0392b;border:1px solid #f5c6c0}
.alert.info{background:#e7f1fd;color:#0b72d9;border:1px solid #bcd8fb}

.chart{width:100%;height:300px}
.section-title{font-size:16px;font-weight:700;margin:22px 0 14px;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.section-title::before{content:"";width:4px;height:18px;border-radius:3px;
  background:linear-gradient(180deg,var(--cdm-primary),var(--cdm-teal))}
.section-title .sub{font-size:12px;font-weight:500;color:var(--cdm-muted)}

/* ---------------- 患者档案卡片：序号徽标 + 复选框 ---------------- */
.pt-seq{flex:none;min-width:26px;height:26px;padding:0 6px;border-radius:8px;
  background:var(--cdm-primary-soft);color:var(--cdm-primary);
  display:inline-flex;align-items:center;justify-content:center;
  font-size:12.5px;font-weight:800;font-variant-numeric:tabular-nums}
input.ptChk, input.ptChkAll{width:16px;height:16px;min-width:16px;padding:0;margin:0;
  accent-color:var(--cdm-primary);cursor:pointer;flex:none}

/* ---------------- 移动端侧栏切换 ---------------- */
.menu-toggle{display:none}
@media(max-width:900px){
  .sidebar{transform:translateX(-100%);transition:.2s;width:216px}
  .sidebar.open{transform:translateX(0)}
  .main{margin-left:0}
  .menu-toggle{display:inline-flex}
}

/* ---------------- 数据大屏（深色科技风基础） ---------------- */
.bigscreen{background:#071a30;color:#cfe3ff;min-height:100vh;padding:18px 26px}
.bigscreen .bs-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.bigscreen .bs-title{font-size:26px;font-weight:800;color:#fff;letter-spacing:2px}
.bigscreen .bs-clock{font-size:16px;color:#7fb6ff}
.bigscreen .card{background:rgba(16,46,86,.7);border:1px solid rgba(64,124,214,.4);box-shadow:none;color:#dfeeff}
.bigscreen .card h4{color:#9cc7ff}
.bigscreen .kpi{background:rgba(16,46,86,.7);border:1px solid rgba(64,124,214,.4);color:#dfeeff}
.bigscreen .kpi .n{color:#fff}
.bigscreen .kpi .l{color:#7fb6ff}

/* ===================== 三输出评估 · 对话式向导 ===================== */
.progress{height:14px;background:#eef0f7;border-radius:999px;overflow:hidden;margin:14px 0}
.progress > i{display:block;height:100%;background:linear-gradient(90deg,var(--cdm-primary),var(--cdm-teal));width:0;transition:width .3s}
.qcard{background:var(--cdm-card);border-radius:var(--cdm-radius);padding:18px 20px;box-shadow:var(--cdm-shadow);margin-bottom:14px;border:1px solid var(--cdm-border);border-left:6px solid var(--cdm-primary)}
.qcard .q{font-weight:800;margin-bottom:4px}
.qcard .q .code{color:var(--cdm-muted);font-size:12px;font-weight:700;margin-right:8px}
.qcard .dim{font-size:12px;color:var(--cdm-muted);margin-bottom:10px}
.opts{display:flex;gap:10px;flex-wrap:wrap;margin-top:44px}
.opt{flex:1;min-width:72px;text-align:center;padding:10px 6px;border-radius:14px;border:2px solid var(--cdm-border);background:#fff;cursor:pointer;font-weight:800;transition:.12s;user-select:none}
.opt:hover{border-color:var(--cdm-primary)}
.opt.sel{color:#fff;border-color:transparent}
.opt.s0{background:#e9faf2;border-color:#9fe0bd;color:#1d9e6f}
.opt.s1{background:#f4fadf;border-color:#c6e79a;color:#6f9e3a}
.opt.s2{background:#fff3e4;border-color:#ffcf9e;color:#d97a1f}
.opt.s3{background:#ffecec;border-color:#ffb4b4;color:#d94b4b}
.opt.s4{background:#ffe3e3;border-color:#ff9d9d;color:#c23535}
.opt.s0.sel{background:var(--cdm-green)} .opt.s1.sel{background:#9bd17a}
.opt.s2.sel{background:var(--cdm-orange)} .opt.s3.sel{background:var(--cdm-red)} .opt.s4.sel{background:#d93838}
.opt.y0.sel{background:var(--cdm-green)} .opt.y1.sel{background:var(--cdm-red)}
.opt.big{min-width:96px;padding:16px 10px;font-size:16px;border-radius:16px}
.opt.big:hover{transform:translateY(-2px);box-shadow:0 4px 14px rgba(11,114,217,.12)}
.opt .num{font-size:22px;font-weight:800}
.opt .num input{border:none;background:transparent;width:100%;text-align:center;font-size:22px;font-weight:800;color:inherit;padding:0}
.wz-bar{display:flex;align-items:center;gap:12px;margin:0 0 14px}
.chat-box{background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(244,248,255,.9));border-radius:var(--cdm-radius);border:1px solid var(--cdm-border);padding:24px 18px;box-shadow:var(--cdm-shadow);overflow:visible}
.wb-head{display:flex;align-items:center;justify-content:space-between;gap:12px;background:linear-gradient(135deg,var(--cdm-primary),var(--cdm-teal));color:#fff;border-radius:12px;padding:13px 18px;margin-bottom:20px;box-shadow:0 4px 16px rgba(11,114,217,.18)}
.wb-hosp{display:flex;align-items:center;gap:10px;font-weight:800;font-size:16px;line-height:1}
.wb-ico{font-size:21px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.15))}
.wb-name{max-width:62%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wb-code{font-size:12.5px;font-weight:600;background:rgba(255,255,255,.18);padding:6px 14px;border-radius:999px;white-space:nowrap;letter-spacing:.3px}
.wb-code b{font-weight:800;letter-spacing:1.5px;font-size:14px}
.chat-row{display:flex;gap:12px;align-items:flex-start}
.chat-row.doc{animation:chatIn .32s ease}
.chat-row.user{justify-content:flex-end;animation:chatIn .28s ease}
@keyframes chatIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.chat-avatar{width:38px;height:38px;border-radius:12px;background:linear-gradient(135deg,var(--cdm-primary),var(--cdm-teal));color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px;flex:none}
.chat-row.user .chat-avatar{background:linear-gradient(135deg,var(--cdm-teal),#2aa573)}
.chat-bubble{max-width:82%;background:rgba(255,255,255,.95);border-radius:4px 18px 18px 18px;padding:14px 18px;line-height:1.9;font-size:15px;box-shadow:0 2px 8px rgba(11,114,217,.06)}
.chat-row.doc .chat-bubble{border-left:4px solid var(--cdm-primary)}
.chat-bubble.user{background:linear-gradient(135deg,#e9f3ff,#eafcff);border-radius:18px 4px 18px 18px}
.q-meta{display:flex;gap:8px;align-items:center;margin-bottom:6px;font-size:12px}
.q-dim{background:var(--cdm-teal);color:#fff;padding:2px 9px;border-radius:20px;font-weight:700}
.q-code{color:var(--cdm-muted);font-weight:700}
.chat-q{font-size:16px;font-weight:700;line-height:1.5}
.wz-nav{display:flex;align-items:center;justify-content:space-between;margin-top:18px;gap:10px}
.rev-row{display:flex;align-items:center;gap:12px;background:rgba(255,255,255,.92);border-radius:12px;padding:11px 14px;margin-bottom:8px;border:1px solid var(--cdm-border);opacity:0;pointer-events:none;transition:.2s}
.rev-row.rev-in{opacity:1}
.rev-row.ready{pointer-events:auto}
.rev-row:hover{border-color:var(--cdm-primary);transform:translateX(3px)}
.rev-no{flex:none;width:26px;height:26px;border-radius:50%;background:var(--cdm-primary);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800}
.rev-q{flex:1;font-size:13.5px}
.rev-a{flex:none;font-weight:700;color:var(--cdm-primary)}
.rev-a.none{color:var(--cdm-muted);font-weight:500}
.dim-bar{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}
.dim-chip{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:999px;border:1px solid var(--cdm-border);background:#fff;cursor:pointer;font-size:13px;font-weight:600;transition:.12s}
.dim-chip:hover{border-color:var(--cdm-primary);transform:translateY(-1px)}
.dim-chip.on{background:#e9f3ff;border-color:var(--cdm-primary);color:var(--cdm-primary)}
.dim-chip .dc-cnt{font-size:10px;opacity:.75;font-weight:700}
.dim-chip .dc-cnt.dc-done{color:var(--cdm-teal)}
#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--cdm-primary);color:#fff;padding:10px 20px;border-radius:999px;font-weight:800;box-shadow:var(--cdm-shadow);z-index:200}
#toast.err{background:var(--cdm-red)}
@media(max-width:760px){.chat-bubble{max-width:90%}.opt.big{min-width:72px;padding:13px 6px;font-size:14px}}

/* ---------------- 列表页：批量操作工具栏 + 序号/复选框列 + 分页条 ---------------- */
/* 注意：全局 input{width:100%} 会撑坏复选框，此处必须显式覆盖。 */
table.tbl input[type=checkbox],
.bulk-bar input[type=checkbox]{
  width:16px;height:16px;min-width:16px;padding:0;margin:0;border-radius:4px;
  accent-color:var(--cdm-primary);cursor:pointer;vertical-align:middle;display:inline-block}
table.tbl th.c-chk,table.tbl td.c-chk{width:40px;text-align:center;padding-left:10px;padding-right:0}
table.tbl th.c-seq,table.tbl td.c-seq{width:58px;text-align:center;color:var(--cdm-muted);font-variant-numeric:tabular-nums}
table.tbl td.c-seq{font-weight:600}
table.tbl tbody tr:has(input.cdm-chk:checked){background:#eaf3ff}

.bulk-form{margin:0 0 10px}
.bulk-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  background:#f8fbff;border:1px solid var(--cdm-border);border-radius:10px;padding:9px 14px}
.bulk-bar .bulk-chk{display:inline-flex;align-items:center;gap:7px;margin:0;
  font-size:13px;font-weight:600;color:#43506b;cursor:pointer;white-space:nowrap}
.bulk-bar .btn.danger:disabled{background:#f0b7b1;cursor:not-allowed;box-shadow:none}
.bulk-count{font-size:12.5px;color:var(--cdm-muted);font-weight:600}
.bulk-count.on{color:var(--cdm-red)}
.bulk-hint{font-size:12px;color:var(--cdm-muted);margin-left:auto}

.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;
  flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid var(--cdm-border)}
.pager-info{font-size:13px;color:var(--cdm-muted)}
.pager-info b{color:var(--cdm-primary);font-weight:700}
.pager-btns{display:flex;align-items:center;gap:8px}
.pager-cur{font-size:12.5px;font-weight:600;color:#43506b;padding:0 4px;white-space:nowrap}
.pager .btn.off{background:#f4f6fa;color:#b6c0d0;border-color:var(--cdm-border);cursor:not-allowed;box-shadow:none}
@media(max-width:760px){.pager{justify-content:center}.bulk-hint{margin-left:0;width:100%}}

/* ===================== 区域健康驾驶舱 ===================== */
.p0{padding:0 !important}
.grid.g5{grid-template-columns:repeat(5,1fr)}
.grid.g6{grid-template-columns:repeat(6,1fr)}
@media(max-width:1180px){.grid.g6{grid-template-columns:repeat(3,1fr)}.grid.g5{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.grid.g6,.grid.g5,.grid.g4,.grid.g3{grid-template-columns:repeat(2,1fr)}}

/* 区域选择器 */
.scope-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  background:linear-gradient(90deg,var(--cdm-navy),#0e4f86 60%,var(--cdm-teal));color:#fff;
  border-radius:var(--cdm-radius);padding:12px 18px;margin-bottom:16px;
  box-shadow:0 8px 24px rgba(10,37,64,.24)}
.sb-left{display:flex;align-items:center;gap:10px}
.sb-label{font-weight:700;font-size:14px;display:inline-flex;align-items:center;gap:6px}
.scope-sel{background:rgba(255,255,255,.95);border:none;border-radius:9px;padding:8px 12px;
  font-size:13.5px;font-weight:600;color:#123a68;min-width:240px;cursor:pointer;outline:none;
  box-shadow:0 2px 8px rgba(3,20,40,.22)}
.sb-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sb-chip{background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.14);border-radius:20px;
  padding:5px 13px;font-size:12.5px;display:inline-flex;align-items:center;gap:5px;backdrop-filter:blur(2px)}
.scope-bar .btn.ghost{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.4);color:#fff}
.scope-bar .btn.ghost:hover{background:rgba(255,255,255,.26)}

/* 辖区总览 KPI */
.ov-row{margin-bottom:4px}
.ovkpi{display:block;background:#fff;border:1px solid var(--cdm-border);border-left:4px solid var(--cdm-primary);
  border-radius:14px;padding:15px 17px;text-decoration:none;color:inherit;transition:.15s;overflow:hidden;
  box-shadow:var(--cdm-shadow);position:relative}
.ovkpi::after{content:"";position:absolute;right:-22px;top:-22px;width:74px;height:74px;border-radius:50%;
  background:radial-gradient(circle,rgba(11,114,217,.09),transparent 70%)}
.ovkpi:hover{transform:translateY(-3px);box-shadow:var(--cdm-shadow-hover);border-color:rgba(11,114,217,.4)}
.ov-n{font-size:29px;font-weight:800;line-height:1.1;color:var(--cdm-primary);font-variant-numeric:tabular-nums}
.ov-n small{font-size:15px;font-weight:700}
.ov-l{font-size:13.5px;color:#34405c;margin-top:3px;font-weight:600}
.ov-s{font-size:11.5px;color:var(--cdm-muted);margin-top:3px}
.ov-sep{color:#c2cad8;font-weight:600;margin:0 2px}
.ovkpi.warn{border-left-color:var(--cdm-yellow)}.ovkpi.warn .ov-n{color:#c28f04}
.ovkpi.danger{border-left-color:var(--cdm-red)}.ovkpi.danger .ov-n{color:var(--cdm-red)}
.ovkpi.orange{border-left-color:#f39c12}.ovkpi.orange .ov-n{color:#dd8a0b}
.ovkpi.teal{border-left-color:var(--cdm-teal)}.ovkpi.teal .ov-n{color:#0b908f}
.ovkpi.green{border-left-color:var(--cdm-green)}.ovkpi.green .ov-n{color:#1b8a5a}

/* 重点公卫指标卡 */
.rate-row{margin-bottom:4px}
.rate-card{background:#fff;border:1px solid var(--cdm-border);border-radius:14px;padding:15px 16px;
  box-shadow:var(--cdm-shadow);transition:.15s}
.rate-card:hover{transform:translateY(-2px);box-shadow:var(--cdm-shadow-hover)}
.rc-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.rc-title{font-size:13.5px;font-weight:700;color:#2b3550}
.rc-badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px}
.rc-badge.ok{background:#e5f7ee;color:#18875a}
.rc-badge.no{background:#fdeaea;color:#d0453a}
.rc-mid{display:flex;align-items:center;gap:14px}
.rc-info{flex:1;min-width:0}
.rc-target{font-size:12px;color:var(--cdm-muted)}
.rc-detail{font-size:12.5px;color:#43506b;margin-top:2px;font-weight:600}
.ring{position:relative;width:92px;height:92px;border-radius:50%;flex:0 0 auto;
  display:flex;align-items:center;justify-content:center;
  background:conic-gradient(var(--c,#0b72d9) calc(var(--p,0)*1%), #e9edf3 0)}
.ring::after{content:"";position:absolute;inset:11px;border-radius:50%;background:#fff}
.ring span{position:relative;z-index:1;font-size:17px;font-weight:800;color:#2b3550}
.ring.sm{width:64px;height:64px}
.ring.sm::after{inset:8px}
.ring.sm span{font-size:14px}

/* 机构对比表 */
.cmp-name{font-weight:600;color:#2b3550;white-space:nowrap}
.rate-bar{display:flex;align-items:center;gap:8px}
.rb-track{flex:1;height:8px;background:#eef1f6;border-radius:6px;overflow:hidden;min-width:64px}
.rb-fill{height:100%;background:linear-gradient(90deg,var(--cdm-primary),var(--cdm-teal));border-radius:6px}
.rb-val{font-size:12px;font-weight:700;color:#3a445c;min-width:40px;text-align:right;font-variant-numeric:tabular-nums}

/* 医共体十项功能 */
.cons-head{margin:4px 0 10px}
.cons-rate{display:flex;align-items:center;gap:16px}
.cons-rate-txt{font-size:16px;font-weight:800;color:#2b3550}
.cons-rate-txt .muted{font-size:12px;font-weight:500;margin-top:2px}
.func-grid{margin-bottom:6px}
.func-card{background:#fff;border:1px solid var(--cdm-border);border-radius:12px;padding:12px;min-height:104px;transition:.15s}
.func-card:hover{transform:translateY(-2px);box-shadow:var(--cdm-shadow-hover)}
.func-card.live{border-top:3px solid var(--cdm-green)}
.func-card.building{border-top:3px solid var(--cdm-yellow)}
.func-card.none{border-top:3px solid #d7dde6;opacity:.85}
.fc-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.fc-top i{font-size:18px;color:#43506b}
.fc-badge{font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:20px}
.fc-badge.live{background:#e5f7ee;color:#18875a}
.fc-badge.building{background:#fff6dd;color:#a97e06}
.fc-badge.none{background:#f0f2f6;color:#9aa3b2}
.fc-name{font-size:13px;font-weight:700;color:#2b3550;margin-bottom:4px}
.fc-desc{font-size:11.5px;color:var(--cdm-muted);line-height:1.5}

.foot-note{font-size:11.5px;color:var(--cdm-muted);line-height:1.7;margin:16px 2px 4px;
  padding:11px 15px;background:#f6f9fc;border-left:3px solid var(--cdm-border);border-radius:8px}
.card-body.p0 table.tbl{margin:0}

/* ===================== 新版仪表盘 / 工作台专用 ===================== */
/* 欢迎横幅（Hero） */
.hero{position:relative;overflow:hidden;border-radius:var(--cdm-radius);color:#fff;
  background:linear-gradient(115deg,#08223d 0%,#0b4f86 52%,#0ca6a6 130%);
  padding:24px 28px;margin-bottom:20px;box-shadow:0 12px 32px rgba(10,37,64,.3)}
.hero::before{content:"";position:absolute;right:-70px;top:-90px;width:280px;height:280px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.16),transparent 68%)}
.hero::after{content:"";position:absolute;right:110px;bottom:-110px;width:230px;height:230px;border-radius:50%;
  background:radial-gradient(circle,rgba(22,199,185,.32),transparent 66%)}
.hero-row{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}
.hero h2{margin:0 0 6px;font-size:21px;font-weight:800;letter-spacing:.5px}
.hero .hero-sub{font-size:13px;color:rgba(255,255,255,.78);display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.hero .hero-sub i{opacity:.85}
.hero .hero-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.hero .scope-sel{min-width:220px;box-shadow:0 2px 10px rgba(3,20,40,.28)}
.hero .hero-chip{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.16);border-radius:20px;
  padding:6px 14px;font-size:12.5px;display:inline-flex;align-items:center;gap:6px}
.hero .btn.ghost{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.42);color:#fff}
.hero .btn.ghost:hover{background:rgba(255,255,255,.26)}

/* 工作台快捷操作 */
.qa-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-bottom:20px}
@media(max-width:1180px){.qa-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.qa-grid{grid-template-columns:repeat(2,1fr)}}
.qa{display:flex;flex-direction:column;align-items:center;gap:9px;padding:16px 10px 14px;border-radius:14px;
  background:#fff;border:1px solid var(--cdm-border);box-shadow:var(--cdm-shadow);
  font-size:13px;font-weight:600;color:#34405c;text-align:center;transition:.15s}
.qa:hover{transform:translateY(-3px);box-shadow:var(--cdm-shadow-hover);border-color:rgba(11,114,217,.4);color:var(--cdm-primary)}
.qa i{width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;
  font-size:20px;color:#fff;background:var(--qa-c,var(--cdm-primary));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 4px 10px rgba(16,42,87,.16)}

/* 待办列表（卡片化） */
.todo-list{display:flex;flex-direction:column;gap:10px}
.todo-item{display:flex;align-items:center;gap:13px;padding:12px 16px;border-radius:12px;
  background:#fbfcfe;border:1px solid var(--cdm-border);transition:.14s}
.todo-item:hover{border-color:rgba(11,114,217,.4);background:#f5f9ff;transform:translateX(3px)}
.todo-ico{width:38px;height:38px;border-radius:11px;flex:none;display:flex;align-items:center;justify-content:center;
  font-size:17px;color:#fff}
.todo-ico.red{background:linear-gradient(135deg,#e2675a,#c0392b)}
.todo-ico.blue{background:linear-gradient(135deg,#3a93e8,#0b72d9)}
.todo-main{flex:1;min-width:0}
.todo-t{font-size:13.5px;font-weight:700;color:#2b3550}
.todo-d{font-size:12px;color:var(--cdm-muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.todo-due{flex:none;font-size:12px;font-weight:700;color:#43506b;background:#eef2f8;
  padding:4px 11px;border-radius:999px;font-variant-numeric:tabular-nums}
.todo-empty{padding:30px 0;text-align:center;color:var(--cdm-muted)}
.todo-empty i{font-size:34px;color:var(--cdm-teal);display:block;margin-bottom:8px}

/* ===== A4 打印排版（报告单/处方单/随访单/用药清单共用） ===== */
.a4-only{display:none}
@media print{
  /* 用 display:none 而非 visibility:hidden——后者只是不可见但仍占版面，会产生空白页 */
  .sidebar,.topbar,.no-print,.alert,#pageLoader{display:none !important}
  .layout{display:block !important}
  .main{padding:0 !important;margin:0 !important}
  .main>*{display:none !important}
  .main>.a4-only,.main>#printSheet{display:block !important}
  #printSheet{background:#fff}
  .a4-only{background:#fff;font-size:12px;color:#1f2d3d;line-height:1.6}
  .a4-only h2{font-size:19px;text-align:center;margin:0 0 2px;letter-spacing:6px;color:#123a6b}
  .a4-only .a4-sub{text-align:center;color:#444;font-size:11px;margin-bottom:12px}
  .a4-only .a4-sec{font-size:14px;font-weight:700;border-left:4px solid #185FA5;color:#0f3a75;
    padding-left:8px;margin:14px 0 6px}
  .a4-only table{width:100%;border-collapse:collapse;font-size:11px;margin-bottom:8px}
  .a4-only th,.a4-only td{border:0.5px solid #9fb3cc;padding:4px 7px;text-align:left;vertical-align:top}
  .a4-only th{background:#185FA5;color:#fff;font-weight:500;border-color:#185FA5}
  .a4-only tr.alt td{background:#F3F7FC}
  /* 医疗机构眉栏 */
  .a4-only .a4-mast{width:100%;margin-bottom:2px}
  .a4-only .a4-mast td{border:none;padding:0}
  .a4-only .a4-org{font-size:19px;font-weight:700;color:#0C447C;letter-spacing:1px}
  .a4-only .a4-dept{font-size:11px;color:#4a5a70;margin-top:1px}
  .a4-only .a4-mr{text-align:right;font-size:10.5px;color:#37455c;line-height:1.7}
  .a4-only .a4-no{font-family:'Courier New',monospace;font-weight:700}
  .a4-only .a4-rule{border-top:2.5px solid #185FA5;border-bottom:0.5px solid #185FA5;
    height:2px;margin:4px 0 12px}
  .a4-only .a4-sign{display:flex;justify-content:space-between;margin-top:30px;font-size:12px}
  .a4-only .a4-sign span{display:inline-block;min-width:26%;border-top:1px solid #333;
    padding-top:5px;margin-right:18px;color:#000}
  .a4-only .a4-note{margin-top:14px;font-size:10px;color:#55606f;border-top:0.5px solid #9fb3cc;
    padding-top:6px;line-height:1.7}
}
@page{size:A4;margin:12mm}
